From 080a2707b92282f68052de8b0cb09543e047ad79 Mon Sep 17 00:00:00 2001 From: wheresmyhair Date: Wed, 8 Jan 2025 01:19:48 +0000 Subject: [PATCH] deploy: 9a9957dc19845b0dcba0ac33f0cc6d49758f646f --- .buildinfo | 4 + .doctrees/about/authors.doctree | Bin 0 -> 3096 bytes .doctrees/about/changelog.doctree | Bin 0 -> 3984 bytes .doctrees/about/index.doctree | Bin 0 -> 3320 bytes .doctrees/autoapi/index.doctree | Bin 0 -> 4132 bytes .doctrees/autoapi/lmflow/args/index.doctree | Bin 0 -> 583437 bytes .../lmflow/datasets/dataset/index.doctree | Bin 0 -> 104845 bytes .../autoapi/lmflow/datasets/index.doctree | Bin 0 -> 95210 bytes .../multi_modal_dataset/index.doctree | Bin 0 -> 45539 bytes .doctrees/autoapi/lmflow/index.doctree | Bin 0 -> 8960 bytes .../lmflow/models/auto_model/index.doctree | Bin 0 -> 9093 bytes .../lmflow/models/base_model/index.doctree | Bin 0 -> 8682 bytes .../lmflow/models/decoder_model/index.doctree | Bin 0 -> 9995 bytes .../encoder_decoder_model/index.doctree | Bin 0 -> 10231 bytes .../models/hf_decoder_model/index.doctree | Bin 0 -> 101597 bytes .../hf_encoder_decoder_model/index.doctree | Bin 0 -> 63023 bytes .../models/hf_model_mixin/index.doctree | Bin 0 -> 81018 bytes .../hf_text_regression_model/index.doctree | Bin 0 -> 73060 bytes .doctrees/autoapi/lmflow/models/index.doctree | Bin 0 -> 3949 bytes .../lmflow/models/interfaces/index.doctree | Bin 0 -> 3409 bytes .../models/interfaces/tunable/index.doctree | Bin 0 -> 8013 bytes .../models/regression_model/index.doctree | Bin 0 -> 8992 bytes .../text_regression_model/index.doctree | Bin 0 -> 18043 bytes .../models/vision2seq_model/index.doctree | Bin 0 -> 79434 bytes .../vision_encoder/clip_encoder/index.doctree | Bin 0 -> 33970 bytes .../models/vision_encoder/index.doctree | Bin 0 -> 7944 bytes .../lmflow/optim/adabelief/index.doctree | Bin 0 -> 23759 bytes .../lmflow/optim/adabound/index.doctree | Bin 0 -> 22071 bytes .../lmflow/optim/adadelta/index.doctree | Bin 0 -> 10182 bytes .../lmflow/optim/adagrad/index.doctree | Bin 0 -> 10143 bytes .../autoapi/lmflow/optim/adam/index.doctree | Bin 0 -> 10086 bytes .../autoapi/lmflow/optim/adamax/index.doctree | Bin 0 -> 11854 bytes .../autoapi/lmflow/optim/adamp/index.doctree | Bin 0 -> 26361 bytes .../optim/adamw_schedule_free/index.doctree | Bin 0 -> 17928 bytes .../autoapi/lmflow/optim/adan/index.doctree | Bin 0 -> 50960 bytes .../autoapi/lmflow/optim/dummy/index.doctree | Bin 0 -> 19815 bytes .doctrees/autoapi/lmflow/optim/index.doctree | Bin 0 -> 4106 bytes .../autoapi/lmflow/optim/lamb/index.doctree | Bin 0 -> 22973 bytes .../autoapi/lmflow/optim/lars/index.doctree | Bin 0 -> 23708 bytes .../autoapi/lmflow/optim/nadam/index.doctree | Bin 0 -> 12268 bytes .../lmflow/optim/novograd/index.doctree | Bin 0 -> 12870 bytes .../lmflow/optim/optimizers/index.doctree | Bin 0 -> 3094 bytes .../autoapi/lmflow/optim/radam/index.doctree | Bin 0 -> 18078 bytes .../optim/sgd_schedule_free/index.doctree | Bin 0 -> 17307 bytes .../autoapi/lmflow/optim/sgdp/index.doctree | Bin 0 -> 28091 bytes .../autoapi/lmflow/optim/sophia/index.doctree | Bin 0 -> 16883 bytes .../autoapi/lmflow/optim/yogi/index.doctree | Bin 0 -> 17001 bytes .../pipeline/auto_pipeline/index.doctree | Bin 0 -> 15937 bytes .../pipeline/base_aligner/index.doctree | Bin 0 -> 12504 bytes .../pipeline/base_pipeline/index.doctree | Bin 0 -> 8011 bytes .../lmflow/pipeline/base_tuner/index.doctree | Bin 0 -> 11914 bytes .../lmflow/pipeline/dpo_aligner/index.doctree | Bin 0 -> 29332 bytes .../pipeline/dpov2_aligner/index.doctree | Bin 0 -> 74023 bytes .../lmflow/pipeline/evaluator/index.doctree | Bin 0 -> 41337 bytes .../lmflow/pipeline/finetuner/index.doctree | Bin 0 -> 29804 bytes .../autoapi/lmflow/pipeline/index.doctree | Bin 0 -> 4032 bytes .../lmflow/pipeline/inferencer/index.doctree | Bin 0 -> 112250 bytes .../iterative_dpo_aligner/index.doctree | Bin 0 -> 52740 bytes .../pipeline/raft_aligner/index.doctree | Bin 0 -> 53167 bytes .../pipeline/rm_inferencer/index.doctree | Bin 0 -> 61288 bytes .../lmflow/pipeline/rm_tuner/index.doctree | Bin 0 -> 22665 bytes .../utils/dpov2_dataprocessor/index.doctree | Bin 0 -> 47038 bytes .../utils/dpov2_trainer/index.doctree | Bin 0 -> 89960 bytes .../lmflow/pipeline/utils/index.doctree | Bin 0 -> 3819 bytes .../memory_safe_dpov2_align/index.doctree | Bin 0 -> 12414 bytes .../memory_safe_vllm_inference/index.doctree | Bin 0 -> 9704 bytes .../pipeline/utils/peft_trainer/index.doctree | Bin 0 -> 28064 bytes .../pipeline/utils/raft_trainer/index.doctree | Bin 0 -> 481422 bytes .../utils/rm_dataprocessor/index.doctree | Bin 0 -> 25674 bytes .../pipeline/utils/rm_trainer/index.doctree | Bin 0 -> 20525 bytes .../pipeline/vllm_inferencer/index.doctree | Bin 0 -> 92863 bytes .../hf_decoder_model/index.doctree | Bin 0 -> 30901 bytes .../hf_text_regression_model/index.doctree | Bin 0 -> 60876 bytes .../autoapi/lmflow/tokenization/index.doctree | Bin 0 -> 3441 bytes .../autoapi/lmflow/utils/common/index.doctree | Bin 0 -> 47565 bytes .../lmflow/utils/constants/index.doctree | Bin 0 -> 75458 bytes .../conversation_template/base/index.doctree | Bin 0 -> 199913 bytes .../chatglm/index.doctree | Bin 0 -> 6705 bytes .../chatml/index.doctree | Bin 0 -> 6664 bytes .../deepseek/index.doctree | Bin 0 -> 6724 bytes .../conversation_template/gemma/index.doctree | Bin 0 -> 14508 bytes .../conversation_template/hymba/index.doctree | Bin 0 -> 28551 bytes .../utils/conversation_template/index.doctree | Bin 0 -> 171730 bytes .../internlm/index.doctree | Bin 0 -> 6735 bytes .../conversation_template/llama/index.doctree | Bin 0 -> 42119 bytes .../conversation_template/phi/index.doctree | Bin 0 -> 6585 bytes .../conversation_template/qwen/index.doctree | Bin 0 -> 8759 bytes .../conversation_template/yi/index.doctree | Bin 0 -> 6577 bytes .../zephyr/index.doctree | Bin 0 -> 22686 bytes .../lmflow/utils/data_utils/index.doctree | Bin 0 -> 50455 bytes .../bloom_flash_attention/index.doctree | Bin 0 -> 25636 bytes .../gpt2_flash_attention/index.doctree | Bin 0 -> 30168 bytes .../gpt_neo_flash_attention/index.doctree | Bin 0 -> 16719 bytes .../utils/flash_attention/index.doctree | Bin 0 -> 3751 bytes .../llama_flash_attention/index.doctree | Bin 0 -> 25552 bytes .../triton_flash_attention/index.doctree | Bin 0 -> 123188 bytes .doctrees/autoapi/lmflow/utils/index.doctree | Bin 0 -> 3744 bytes .../llava_conversation_lib/index.doctree | Bin 0 -> 64596 bytes .../autoapi/lmflow/utils/model/index.doctree | Bin 0 -> 10686 bytes .../lmflow/utils/multimodal/index.doctree | Bin 0 -> 12325 bytes .../position_interpolation/index.doctree | Bin 0 -> 3531 bytes .../index.doctree | Bin 0 -> 19420 bytes .../lmflow/utils/versioning/index.doctree | Bin 0 -> 36060 bytes .../autoapi/lmflow/version/index.doctree | Bin 0 -> 6597 bytes .doctrees/blogs/benchmark.doctree | Bin 0 -> 169635 bytes .doctrees/blogs/index.doctree | Bin 0 -> 3332 bytes .doctrees/environment.pickle | Bin 0 -> 4282851 bytes .doctrees/examples/DATASETS.doctree | Bin 0 -> 99117 bytes .doctrees/examples/TASK_GUIDE.doctree | Bin 0 -> 20428 bytes .doctrees/examples/checkpoints.doctree | Bin 0 -> 8439 bytes .../customize_conversation_template.doctree | Bin 0 -> 18349 bytes .doctrees/examples/finetuning.doctree | Bin 0 -> 12319 bytes .doctrees/examples/index.doctree | Bin 0 -> 6059 bytes .doctrees/examples/medical_finetune.doctree | Bin 0 -> 6312 bytes .doctrees/examples/raft.doctree | Bin 0 -> 101107 bytes .doctrees/examples/reward_modeling.doctree | Bin 0 -> 33651 bytes .../supported_conversation_template.doctree | Bin 0 -> 100788 bytes .doctrees/index.doctree | Bin 0 -> 58437 bytes .nojekyll | 0 _images/IT_sample1.png | Bin 0 -> 523440 bytes _images/IT_sample2.png | Bin 0 -> 282807 bytes _images/IT_sample3.png | Bin 0 -> 396642 bytes _images/IT_sample4.png | Bin 0 -> 334618 bytes _images/IT_sample5.png | Bin 0 -> 632293 bytes _images/IT_sample6.png | Bin 0 -> 365253 bytes _images/IT_sample7.png | Bin 0 -> 578291 bytes _images/benchmark-1.png | Bin 0 -> 62190 bytes _images/benchmark-2.png | Bin 0 -> 142903 bytes _images/nll.png | Bin 0 -> 55999 bytes _images/ppl.png | Bin 0 -> 25483 bytes _images/raft_idea.PNG | Bin 0 -> 121926 bytes _images/raft_reward.PNG | Bin 0 -> 221269 bytes _modules/index.html | 522 ++ _modules/lmflow.html | 454 ++ _modules/lmflow/args.html | 2622 ++++++++++ _modules/lmflow/datasets/dataset.html | 1127 ++++ .../lmflow/datasets/multi_modal_dataset.html | 783 +++ _modules/lmflow/models/auto_model.html | 472 ++ _modules/lmflow/models/base_model.html | 456 ++ _modules/lmflow/models/decoder_model.html | 466 ++ .../lmflow/models/encoder_decoder_model.html | 466 ++ _modules/lmflow/models/hf_decoder_model.html | 1157 +++++ .../models/hf_encoder_decoder_model.html | 999 ++++ _modules/lmflow/models/hf_model_mixin.html | 1110 ++++ .../models/hf_text_regression_model.html | 958 ++++ .../lmflow/models/interfaces/tunable.html | 454 ++ _modules/lmflow/models/regression_model.html | 455 ++ .../lmflow/models/text_regression_model.html | 510 ++ _modules/lmflow/models/vision2seq_model.html | 987 ++++ .../models/vision_encoder/clip_encoder.html | 719 +++ _modules/lmflow/optim/adabelief.html | 649 +++ _modules/lmflow/optim/adabound.html | 611 +++ _modules/lmflow/optim/adadelta.html | 490 ++ _modules/lmflow/optim/adagrad.html | 482 ++ _modules/lmflow/optim/adam.html | 493 ++ _modules/lmflow/optim/adamax.html | 518 ++ _modules/lmflow/optim/adamp.html | 632 +++ .../lmflow/optim/adamw_schedule_free.html | 632 +++ _modules/lmflow/optim/adan.html | 739 +++ _modules/lmflow/optim/dummy.html | 527 ++ _modules/lmflow/optim/lamb.html | 588 +++ _modules/lmflow/optim/lars.html | 593 +++ _modules/lmflow/optim/nadam.html | 523 ++ _modules/lmflow/optim/novograd.html | 534 ++ _modules/lmflow/optim/radam.html | 623 +++ _modules/lmflow/optim/sgd_schedule_free.html | 611 +++ _modules/lmflow/optim/sgdp.html | 620 +++ _modules/lmflow/optim/sophia.html | 571 ++ _modules/lmflow/optim/yogi.html | 573 +++ _modules/lmflow/pipeline/auto_pipeline.html | 537 ++ _modules/lmflow/pipeline/base_aligner.html | 471 ++ _modules/lmflow/pipeline/base_pipeline.html | 453 ++ _modules/lmflow/pipeline/base_tuner.html | 470 ++ _modules/lmflow/pipeline/dpo_aligner.html | 645 +++ _modules/lmflow/pipeline/dpov2_aligner.html | 856 +++ _modules/lmflow/pipeline/evaluator.html | 979 ++++ _modules/lmflow/pipeline/finetuner.html | 1101 ++++ _modules/lmflow/pipeline/inferencer.html | 1181 +++++ .../pipeline/iterative_dpo_aligner.html | 746 +++ _modules/lmflow/pipeline/raft_aligner.html | 1176 +++++ _modules/lmflow/pipeline/rm_inferencer.html | 845 +++ _modules/lmflow/pipeline/rm_tuner.html | 683 +++ .../pipeline/utils/dpov2_dataprocessor.html | 684 +++ .../lmflow/pipeline/utils/dpov2_trainer.html | 714 +++ .../utils/memory_safe_dpov2_align.html | 520 ++ .../utils/memory_safe_vllm_inference.html | 515 ++ .../lmflow/pipeline/utils/peft_trainer.html | 540 ++ .../lmflow/pipeline/utils/raft_trainer.html | 4580 +++++++++++++++++ .../pipeline/utils/rm_dataprocessor.html | 515 ++ .../lmflow/pipeline/utils/rm_trainer.html | 501 ++ _modules/lmflow/pipeline/vllm_inferencer.html | 866 ++++ .../lmflow/tokenization/hf_decoder_model.html | 673 +++ .../hf_text_regression_model.html | 914 ++++ _modules/lmflow/utils/common.html | 650 +++ _modules/lmflow/utils/constants.html | 981 ++++ .../lmflow/utils/conversation_template.html | 481 ++ .../utils/conversation_template/base.html | 1173 +++++ .../utils/conversation_template/chatglm.html | 472 ++ .../utils/conversation_template/chatml.html | 471 ++ .../utils/conversation_template/deepseek.html | 473 ++ .../utils/conversation_template/gemma.html | 501 ++ .../utils/conversation_template/hymba.html | 576 +++ .../utils/conversation_template/internlm.html | 472 ++ .../utils/conversation_template/llama.html | 664 +++ .../utils/conversation_template/phi.html | 473 ++ .../utils/conversation_template/qwen.html | 505 ++ .../utils/conversation_template/yi.html | 471 ++ .../utils/conversation_template/zephyr.html | 529 ++ _modules/lmflow/utils/data_utils.html | 711 +++ .../bloom_flash_attention.html | 552 ++ .../flash_attention/gpt2_flash_attention.html | 586 +++ .../gpt_neo_flash_attention.html | 550 ++ .../llama_flash_attention.html | 574 +++ .../triton_flash_attention.html | 1333 +++++ .../lmflow/utils/llava_conversation_lib.html | 927 ++++ _modules/lmflow/utils/model.html | 472 ++ _modules/lmflow/utils/multimodal.html | 500 ++ .../llama_rope_scaled_monkey_patch.html | 508 ++ _modules/lmflow/utils/versioning.html | 555 ++ _modules/lmflow/version.html | 445 ++ _sources/about/authors.md.txt | 4 + _sources/about/changelog.md.txt | 15 + _sources/about/index.md.txt | 15 + _sources/autoapi/index.rst.txt | 11 + _sources/autoapi/lmflow/args/index.rst.txt | 1982 +++++++ .../lmflow/datasets/dataset/index.rst.txt | 646 +++ .../autoapi/lmflow/datasets/index.rst.txt | 651 +++ .../multi_modal_dataset/index.rst.txt | 177 + _sources/autoapi/lmflow/index.rst.txt | 40 + .../lmflow/models/auto_model/index.rst.txt | 31 + .../lmflow/models/base_model/index.rst.txt | 51 + .../lmflow/models/decoder_model/index.rst.txt | 61 + .../encoder_decoder_model/index.rst.txt | 61 + .../models/hf_decoder_model/index.rst.txt | 427 ++ .../hf_encoder_decoder_model/index.rst.txt | 363 ++ .../models/hf_model_mixin/index.rst.txt | 301 ++ .../hf_text_regression_model/index.rst.txt | 268 + _sources/autoapi/lmflow/models/index.rst.txt | 27 + .../lmflow/models/interfaces/index.rst.txt | 15 + .../models/interfaces/tunable/index.rst.txt | 51 + .../models/regression_model/index.rst.txt | 51 + .../text_regression_model/index.rst.txt | 114 + .../models/vision2seq_model/index.rst.txt | 205 + .../vision_encoder/clip_encoder/index.rst.txt | 101 + .../models/vision_encoder/index.rst.txt | 28 + .../lmflow/optim/adabelief/index.rst.txt | 97 + .../lmflow/optim/adabound/index.rst.txt | 80 + .../lmflow/optim/adadelta/index.rst.txt | 25 + .../lmflow/optim/adagrad/index.rst.txt | 25 + .../autoapi/lmflow/optim/adam/index.rst.txt | 25 + .../autoapi/lmflow/optim/adamax/index.rst.txt | 28 + .../autoapi/lmflow/optim/adamp/index.rst.txt | 93 + .../optim/adamw_schedule_free/index.rst.txt | 82 + .../autoapi/lmflow/optim/adan/index.rst.txt | 89 + .../autoapi/lmflow/optim/dummy/index.rst.txt | 81 + _sources/autoapi/lmflow/optim/index.rst.txt | 34 + .../autoapi/lmflow/optim/lamb/index.rst.txt | 90 + .../autoapi/lmflow/optim/lars/index.rst.txt | 98 + .../autoapi/lmflow/optim/nadam/index.rst.txt | 28 + .../lmflow/optim/novograd/index.rst.txt | 28 + .../lmflow/optim/optimizers/index.rst.txt | 13 + .../autoapi/lmflow/optim/radam/index.rst.txt | 81 + .../optim/sgd_schedule_free/index.rst.txt | 82 + .../autoapi/lmflow/optim/sgdp/index.rst.txt | 93 + .../autoapi/lmflow/optim/sophia/index.rst.txt | 53 + .../autoapi/lmflow/optim/yogi/index.rst.txt | 74 + .../pipeline/auto_pipeline/index.rst.txt | 67 + .../pipeline/base_aligner/index.rst.txt | 58 + .../pipeline/base_pipeline/index.rst.txt | 51 + .../lmflow/pipeline/base_tuner/index.rst.txt | 58 + .../lmflow/pipeline/dpo_aligner/index.rst.txt | 92 + .../pipeline/dpov2_aligner/index.rst.txt | 161 + .../lmflow/pipeline/evaluator/index.rst.txt | 162 + .../lmflow/pipeline/finetuner/index.rst.txt | 149 + .../autoapi/lmflow/pipeline/index.rst.txt | 29 + .../lmflow/pipeline/inferencer/index.rst.txt | 468 ++ .../iterative_dpo_aligner/index.rst.txt | 74 + .../pipeline/raft_aligner/index.rst.txt | 259 + .../pipeline/rm_inferencer/index.rst.txt | 104 + .../lmflow/pipeline/rm_tuner/index.rst.txt | 100 + .../utils/dpov2_dataprocessor/index.rst.txt | 130 + .../utils/dpov2_trainer/index.rst.txt | 105 + .../lmflow/pipeline/utils/index.rst.txt | 22 + .../memory_safe_dpov2_align/index.rst.txt | 33 + .../memory_safe_vllm_inference/index.rst.txt | 29 + .../pipeline/utils/peft_trainer/index.rst.txt | 135 + .../pipeline/utils/raft_trainer/index.rst.txt | 1560 ++++++ .../utils/rm_dataprocessor/index.rst.txt | 60 + .../pipeline/utils/rm_trainer/index.rst.txt | 47 + .../pipeline/vllm_inferencer/index.rst.txt | 268 + .../hf_decoder_model/index.rst.txt | 80 + .../hf_text_regression_model/index.rst.txt | 114 + .../autoapi/lmflow/tokenization/index.rst.txt | 16 + .../autoapi/lmflow/utils/common/index.rst.txt | 179 + .../lmflow/utils/constants/index.rst.txt | 160 + .../conversation_template/base/index.rst.txt | 580 +++ .../chatglm/index.rst.txt | 19 + .../chatml/index.rst.txt | 19 + .../deepseek/index.rst.txt | 19 + .../conversation_template/gemma/index.rst.txt | 38 + .../conversation_template/hymba/index.rst.txt | 74 + .../utils/conversation_template/index.rst.txt | 370 ++ .../internlm/index.rst.txt | 19 + .../conversation_template/llama/index.rst.txt | 56 + .../conversation_template/phi/index.rst.txt | 19 + .../conversation_template/qwen/index.rst.txt | 22 + .../conversation_template/yi/index.rst.txt | 19 + .../zephyr/index.rst.txt | 38 + .../lmflow/utils/data_utils/index.rst.txt | 241 + .../bloom_flash_attention/index.rst.txt | 25 + .../gpt2_flash_attention/index.rst.txt | 25 + .../gpt_neo_flash_attention/index.rst.txt | 25 + .../utils/flash_attention/index.rst.txt | 19 + .../llama_flash_attention/index.rst.txt | 25 + .../triton_flash_attention/index.rst.txt | 229 + _sources/autoapi/lmflow/utils/index.rst.txt | 24 + .../llava_conversation_lib/index.rst.txt | 187 + .../autoapi/lmflow/utils/model/index.rst.txt | 29 + .../lmflow/utils/multimodal/index.rst.txt | 25 + .../position_interpolation/index.rst.txt | 15 + .../index.rst.txt | 44 + .../lmflow/utils/versioning/index.rst.txt | 59 + _sources/autoapi/lmflow/version/index.rst.txt | 21 + _sources/blogs/benchmark.md.txt | 253 + _sources/blogs/index.md.txt | 13 + _sources/examples/DATASETS.md.txt | 385 ++ _sources/examples/TASK_GUIDE.md.txt | 132 + _sources/examples/checkpoints.md.txt | 31 + .../customize_conversation_template.md.txt | 115 + _sources/examples/finetuning.md.txt | 101 + _sources/examples/index.md.txt | 57 + _sources/examples/medical_finetune.md.txt | 55 + _sources/examples/raft.md.txt | 342 ++ _sources/examples/reward_modeling.md.txt | 132 + .../supported_conversation_template.md.txt | 504 ++ _sources/index.md.txt | 207 + _sphinx_design_static/design-tabs.js | 101 + _sphinx_design_static/sphinx-design.min.css | 1 + _static/IT_sample1.png | Bin 0 -> 523440 bytes _static/IT_sample2.png | Bin 0 -> 282807 bytes _static/IT_sample3.png | Bin 0 -> 396642 bytes _static/IT_sample4.png | Bin 0 -> 334618 bytes _static/IT_sample5.png | Bin 0 -> 632293 bytes _static/IT_sample6.png | Bin 0 -> 365253 bytes _static/IT_sample7.png | Bin 0 -> 578291 bytes _static/basic.css | 914 ++++ _static/benchmark-1.png | Bin 0 -> 62190 bytes _static/benchmark-2.png | Bin 0 -> 142903 bytes _static/check_before_after_lora_tuning.jsonl | 252 + _static/design-tabs.js | 101 + _static/doctools.js | 149 + _static/documentation_options.js | 13 + _static/eq.png | Bin 0 -> 79072 bytes _static/file.png | Bin 0 -> 286 bytes _static/graphviz.css | 12 + _static/language_data.js | 192 + _static/logo.png | Bin 0 -> 139180 bytes _static/logo.svg | 1 + _static/logo2.svg | 1 + _static/logo3.svg | 1 + _static/logo4.svg | 1 + _static/logo5.svg | 1 + _static/logo6.svg | 1 + _static/minus.png | Bin 0 -> 90 bytes _static/nll.png | Bin 0 -> 55999 bytes _static/plot_directive.css | 16 + _static/plus.png | Bin 0 -> 90 bytes _static/ppl.png | Bin 0 -> 25483 bytes _static/pygments.css | 152 + _static/raft-demo-examples.png | Bin 0 -> 324598 bytes _static/raft.png | Bin 0 -> 181749 bytes _static/raft_idea.PNG | Bin 0 -> 121926 bytes _static/raft_reward.PNG | Bin 0 -> 221269 bytes _static/scripts/bootstrap.js | 3 + _static/scripts/bootstrap.js.LICENSE.txt | 5 + _static/scripts/bootstrap.js.map | 1 + _static/scripts/fontawesome.js | 3 + _static/scripts/fontawesome.js.LICENSE.txt | 5 + _static/scripts/fontawesome.js.map | 1 + _static/scripts/pydata-sphinx-theme.js | 2 + _static/scripts/pydata-sphinx-theme.js.map | 1 + _static/searchtools.js | 632 +++ _static/sphinx-design.min.css | 1 + _static/sphinx_highlight.js | 154 + _static/styles/pydata-sphinx-theme.css | 32 + _static/styles/pydata-sphinx-theme.css.map | 1 + _static/styles/theme.css | 2 + .../fontawesome/webfonts/fa-brands-400.ttf | Bin 0 -> 209128 bytes .../fontawesome/webfonts/fa-brands-400.woff2 | Bin 0 -> 117852 bytes .../fontawesome/webfonts/fa-regular-400.ttf | Bin 0 -> 67860 bytes .../fontawesome/webfonts/fa-regular-400.woff2 | Bin 0 -> 25392 bytes .../fontawesome/webfonts/fa-solid-900.ttf | Bin 0 -> 420332 bytes .../fontawesome/webfonts/fa-solid-900.woff2 | Bin 0 -> 156400 bytes _static/webpack-macros.html | 24 + about/authors.html | 484 ++ about/changelog.html | 513 ++ about/index.html | 503 ++ autoapi/index.html | 747 +++ autoapi/lmflow/args/index.html | 2447 +++++++++ autoapi/lmflow/datasets/dataset/index.html | 1053 ++++ autoapi/lmflow/datasets/index.html | 1024 ++++ .../datasets/multi_modal_dataset/index.html | 790 +++ autoapi/lmflow/index.html | 674 +++ autoapi/lmflow/models/auto_model/index.html | 664 +++ autoapi/lmflow/models/base_model/index.html | 659 +++ .../lmflow/models/decoder_model/index.html | 668 +++ .../models/encoder_decoder_model/index.html | 668 +++ .../lmflow/models/hf_decoder_model/index.html | 945 ++++ .../hf_encoder_decoder_model/index.html | 864 ++++ .../lmflow/models/hf_model_mixin/index.html | 901 ++++ .../hf_text_regression_model/index.html | 825 +++ autoapi/lmflow/models/index.html | 649 +++ autoapi/lmflow/models/interfaces/index.html | 640 +++ .../models/interfaces/tunable/index.html | 662 +++ .../lmflow/models/regression_model/index.html | 659 +++ .../models/text_regression_model/index.html | 697 +++ .../lmflow/models/vision2seq_model/index.html | 798 +++ .../vision_encoder/clip_encoder/index.html | 771 +++ .../lmflow/models/vision_encoder/index.html | 664 +++ autoapi/lmflow/optim/adabelief/index.html | 710 +++ autoapi/lmflow/optim/adabound/index.html | 689 +++ autoapi/lmflow/optim/adadelta/index.html | 664 +++ autoapi/lmflow/optim/adagrad/index.html | 664 +++ autoapi/lmflow/optim/adam/index.html | 664 +++ autoapi/lmflow/optim/adamax/index.html | 670 +++ autoapi/lmflow/optim/adamp/index.html | 701 +++ .../optim/adamw_schedule_free/index.html | 691 +++ autoapi/lmflow/optim/adan/index.html | 708 +++ autoapi/lmflow/optim/dummy/index.html | 680 +++ autoapi/lmflow/optim/index.html | 656 +++ autoapi/lmflow/optim/lamb/index.html | 695 +++ autoapi/lmflow/optim/lars/index.html | 705 +++ autoapi/lmflow/optim/nadam/index.html | 670 +++ autoapi/lmflow/optim/novograd/index.html | 670 +++ autoapi/lmflow/optim/optimizers/index.html | 621 +++ autoapi/lmflow/optim/radam/index.html | 687 +++ .../lmflow/optim/sgd_schedule_free/index.html | 691 +++ autoapi/lmflow/optim/sgdp/index.html | 701 +++ autoapi/lmflow/optim/sophia/index.html | 678 +++ autoapi/lmflow/optim/yogi/index.html | 676 +++ .../lmflow/pipeline/auto_pipeline/index.html | 692 +++ .../lmflow/pipeline/base_aligner/index.html | 672 +++ .../lmflow/pipeline/base_pipeline/index.html | 659 +++ autoapi/lmflow/pipeline/base_tuner/index.html | 672 +++ .../lmflow/pipeline/dpo_aligner/index.html | 740 +++ .../lmflow/pipeline/dpov2_aligner/index.html | 813 +++ autoapi/lmflow/pipeline/evaluator/index.html | 777 +++ autoapi/lmflow/pipeline/finetuner/index.html | 749 +++ autoapi/lmflow/pipeline/index.html | 651 +++ autoapi/lmflow/pipeline/inferencer/index.html | 971 ++++ .../pipeline/iterative_dpo_aligner/index.html | 765 +++ .../lmflow/pipeline/raft_aligner/index.html | 806 +++ .../lmflow/pipeline/rm_inferencer/index.html | 767 +++ autoapi/lmflow/pipeline/rm_tuner/index.html | 710 +++ .../utils/dpov2_dataprocessor/index.html | 771 +++ .../pipeline/utils/dpov2_trainer/index.html | 724 +++ autoapi/lmflow/pipeline/utils/index.html | 647 +++ .../utils/memory_safe_dpov2_align/index.html | 685 +++ .../memory_safe_vllm_inference/index.html | 676 +++ .../pipeline/utils/peft_trainer/index.html | 709 +++ .../pipeline/utils/raft_trainer/index.html | 1796 +++++++ .../utils/rm_dataprocessor/index.html | 714 +++ .../pipeline/utils/rm_trainer/index.html | 712 +++ .../pipeline/vllm_inferencer/index.html | 864 ++++ .../tokenization/hf_decoder_model/index.html | 702 +++ .../hf_text_regression_model/index.html | 740 +++ autoapi/lmflow/tokenization/index.html | 638 +++ autoapi/lmflow/utils/common/index.html | 777 +++ autoapi/lmflow/utils/constants/index.html | 908 ++++ .../conversation_template/base/index.html | 1153 +++++ .../conversation_template/chatglm/index.html | 658 +++ .../conversation_template/chatml/index.html | 658 +++ .../conversation_template/deepseek/index.html | 658 +++ .../conversation_template/gemma/index.html | 694 +++ .../conversation_template/hymba/index.html | 713 +++ .../utils/conversation_template/index.html | 1086 ++++ .../conversation_template/internlm/index.html | 658 +++ .../conversation_template/llama/index.html | 739 +++ .../conversation_template/phi/index.html | 658 +++ .../conversation_template/qwen/index.html | 667 +++ .../utils/conversation_template/yi/index.html | 658 +++ .../conversation_template/zephyr/index.html | 694 +++ autoapi/lmflow/utils/data_utils/index.html | 813 +++ .../bloom_flash_attention/index.html | 676 +++ .../gpt2_flash_attention/index.html | 676 +++ .../gpt_neo_flash_attention/index.html | 676 +++ .../lmflow/utils/flash_attention/index.html | 644 +++ .../llama_flash_attention/index.html | 676 +++ .../triton_flash_attention/index.html | 892 ++++ autoapi/lmflow/utils/index.html | 646 +++ .../utils/llava_conversation_lib/index.html | 908 ++++ autoapi/lmflow/utils/model/index.html | 673 +++ autoapi/lmflow/utils/multimodal/index.html | 673 +++ .../utils/position_interpolation/index.html | 640 +++ .../llama_rope_scaled_monkey_patch/index.html | 703 +++ autoapi/lmflow/utils/versioning/index.html | 763 +++ autoapi/lmflow/version/index.html | 652 +++ blogs/benchmark.html | 1061 ++++ blogs/index.html | 507 ++ examples/DATASETS.html | 972 ++++ examples/TASK_GUIDE.html | 639 +++ examples/checkpoints.html | 546 ++ examples/customize_conversation_template.html | 592 +++ examples/finetuning.html | 615 +++ examples/index.html | 618 +++ examples/medical_finetune.html | 510 ++ examples/raft.html | 864 ++++ examples/reward_modeling.html | 674 +++ examples/supported_conversation_template.html | 915 ++++ genindex.html | 4001 ++++++++++++++ index.html | 794 +++ objects.inv | Bin 0 -> 12128 bytes py-modindex.html | 921 ++++ search.html | 439 ++ searchindex.js | 1 + 515 files changed, 174494 insertions(+) create mode 100644 .buildinfo create mode 100644 .doctrees/about/authors.doctree create mode 100644 .doctrees/about/changelog.doctree create mode 100644 .doctrees/about/index.doctree create mode 100644 .doctrees/autoapi/index.doctree create mode 100644 .doctrees/autoapi/lmflow/args/index.doctree create mode 100644 .doctrees/autoapi/lmflow/datasets/dataset/index.doctree create mode 100644 .doctrees/autoapi/lmflow/datasets/index.doctree create mode 100644 .doctrees/autoapi/lmflow/datasets/multi_modal_dataset/index.doctree create mode 100644 .doctrees/autoapi/lmflow/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/auto_model/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/base_model/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/decoder_model/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/encoder_decoder_model/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/hf_decoder_model/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/hf_encoder_decoder_model/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/hf_model_mixin/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/hf_text_regression_model/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/interfaces/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/interfaces/tunable/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/regression_model/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/text_regression_model/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/vision2seq_model/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/vision_encoder/clip_encoder/index.doctree create mode 100644 .doctrees/autoapi/lmflow/models/vision_encoder/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/adabelief/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/adabound/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/adadelta/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/adagrad/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/adam/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/adamax/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/adamp/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/adamw_schedule_free/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/adan/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/dummy/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/lamb/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/lars/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/nadam/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/novograd/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/optimizers/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/radam/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/sgd_schedule_free/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/sgdp/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/sophia/index.doctree create mode 100644 .doctrees/autoapi/lmflow/optim/yogi/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/auto_pipeline/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/base_aligner/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/base_pipeline/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/base_tuner/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/dpo_aligner/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/dpov2_aligner/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/evaluator/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/finetuner/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/inferencer/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/iterative_dpo_aligner/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/raft_aligner/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/rm_inferencer/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/rm_tuner/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/utils/dpov2_trainer/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/utils/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/utils/peft_trainer/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/utils/raft_trainer/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/utils/rm_trainer/index.doctree create mode 100644 .doctrees/autoapi/lmflow/pipeline/vllm_inferencer/index.doctree create mode 100644 .doctrees/autoapi/lmflow/tokenization/hf_decoder_model/index.doctree create mode 100644 .doctrees/autoapi/lmflow/tokenization/hf_text_regression_model/index.doctree create mode 100644 .doctrees/autoapi/lmflow/tokenization/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/common/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/constants/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/conversation_template/base/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/conversation_template/chatglm/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/conversation_template/chatml/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/conversation_template/deepseek/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/conversation_template/gemma/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/conversation_template/hymba/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/conversation_template/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/conversation_template/internlm/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/conversation_template/llama/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/conversation_template/phi/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/conversation_template/qwen/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/conversation_template/yi/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/conversation_template/zephyr/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/data_utils/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/flash_attention/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/llava_conversation_lib/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/model/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/multimodal/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/position_interpolation/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.doctree create mode 100644 .doctrees/autoapi/lmflow/utils/versioning/index.doctree create mode 100644 .doctrees/autoapi/lmflow/version/index.doctree create mode 100644 .doctrees/blogs/benchmark.doctree create mode 100644 .doctrees/blogs/index.doctree create mode 100644 .doctrees/environment.pickle create mode 100644 .doctrees/examples/DATASETS.doctree create mode 100644 .doctrees/examples/TASK_GUIDE.doctree create mode 100644 .doctrees/examples/checkpoints.doctree create mode 100644 .doctrees/examples/customize_conversation_template.doctree create mode 100644 .doctrees/examples/finetuning.doctree create mode 100644 .doctrees/examples/index.doctree create mode 100644 .doctrees/examples/medical_finetune.doctree create mode 100644 .doctrees/examples/raft.doctree create mode 100644 .doctrees/examples/reward_modeling.doctree create mode 100644 .doctrees/examples/supported_conversation_template.doctree create mode 100644 .doctrees/index.doctree create mode 100644 .nojekyll create mode 100644 _images/IT_sample1.png create mode 100644 _images/IT_sample2.png create mode 100644 _images/IT_sample3.png create mode 100644 _images/IT_sample4.png create mode 100644 _images/IT_sample5.png create mode 100644 _images/IT_sample6.png create mode 100644 _images/IT_sample7.png create mode 100644 _images/benchmark-1.png create mode 100644 _images/benchmark-2.png create mode 100644 _images/nll.png create mode 100644 _images/ppl.png create mode 100644 _images/raft_idea.PNG create mode 100644 _images/raft_reward.PNG create mode 100644 _modules/index.html create mode 100644 _modules/lmflow.html create mode 100644 _modules/lmflow/args.html create mode 100644 _modules/lmflow/datasets/dataset.html create mode 100644 _modules/lmflow/datasets/multi_modal_dataset.html create mode 100644 _modules/lmflow/models/auto_model.html create mode 100644 _modules/lmflow/models/base_model.html create mode 100644 _modules/lmflow/models/decoder_model.html create mode 100644 _modules/lmflow/models/encoder_decoder_model.html create mode 100644 _modules/lmflow/models/hf_decoder_model.html create mode 100644 _modules/lmflow/models/hf_encoder_decoder_model.html create mode 100644 _modules/lmflow/models/hf_model_mixin.html create mode 100644 _modules/lmflow/models/hf_text_regression_model.html create mode 100644 _modules/lmflow/models/interfaces/tunable.html create mode 100644 _modules/lmflow/models/regression_model.html create mode 100644 _modules/lmflow/models/text_regression_model.html create mode 100644 _modules/lmflow/models/vision2seq_model.html create mode 100644 _modules/lmflow/models/vision_encoder/clip_encoder.html create mode 100644 _modules/lmflow/optim/adabelief.html create mode 100644 _modules/lmflow/optim/adabound.html create mode 100644 _modules/lmflow/optim/adadelta.html create mode 100644 _modules/lmflow/optim/adagrad.html create mode 100644 _modules/lmflow/optim/adam.html create mode 100644 _modules/lmflow/optim/adamax.html create mode 100644 _modules/lmflow/optim/adamp.html create mode 100644 _modules/lmflow/optim/adamw_schedule_free.html create mode 100644 _modules/lmflow/optim/adan.html create mode 100644 _modules/lmflow/optim/dummy.html create mode 100644 _modules/lmflow/optim/lamb.html create mode 100644 _modules/lmflow/optim/lars.html create mode 100644 _modules/lmflow/optim/nadam.html create mode 100644 _modules/lmflow/optim/novograd.html create mode 100644 _modules/lmflow/optim/radam.html create mode 100644 _modules/lmflow/optim/sgd_schedule_free.html create mode 100644 _modules/lmflow/optim/sgdp.html create mode 100644 _modules/lmflow/optim/sophia.html create mode 100644 _modules/lmflow/optim/yogi.html create mode 100644 _modules/lmflow/pipeline/auto_pipeline.html create mode 100644 _modules/lmflow/pipeline/base_aligner.html create mode 100644 _modules/lmflow/pipeline/base_pipeline.html create mode 100644 _modules/lmflow/pipeline/base_tuner.html create mode 100644 _modules/lmflow/pipeline/dpo_aligner.html create mode 100644 _modules/lmflow/pipeline/dpov2_aligner.html create mode 100644 _modules/lmflow/pipeline/evaluator.html create mode 100644 _modules/lmflow/pipeline/finetuner.html create mode 100644 _modules/lmflow/pipeline/inferencer.html create mode 100644 _modules/lmflow/pipeline/iterative_dpo_aligner.html create mode 100644 _modules/lmflow/pipeline/raft_aligner.html create mode 100644 _modules/lmflow/pipeline/rm_inferencer.html create mode 100644 _modules/lmflow/pipeline/rm_tuner.html create mode 100644 _modules/lmflow/pipeline/utils/dpov2_dataprocessor.html create mode 100644 _modules/lmflow/pipeline/utils/dpov2_trainer.html create mode 100644 _modules/lmflow/pipeline/utils/memory_safe_dpov2_align.html create mode 100644 _modules/lmflow/pipeline/utils/memory_safe_vllm_inference.html create mode 100644 _modules/lmflow/pipeline/utils/peft_trainer.html create mode 100644 _modules/lmflow/pipeline/utils/raft_trainer.html create mode 100644 _modules/lmflow/pipeline/utils/rm_dataprocessor.html create mode 100644 _modules/lmflow/pipeline/utils/rm_trainer.html create mode 100644 _modules/lmflow/pipeline/vllm_inferencer.html create mode 100644 _modules/lmflow/tokenization/hf_decoder_model.html create mode 100644 _modules/lmflow/tokenization/hf_text_regression_model.html create mode 100644 _modules/lmflow/utils/common.html create mode 100644 _modules/lmflow/utils/constants.html create mode 100644 _modules/lmflow/utils/conversation_template.html create mode 100644 _modules/lmflow/utils/conversation_template/base.html create mode 100644 _modules/lmflow/utils/conversation_template/chatglm.html create mode 100644 _modules/lmflow/utils/conversation_template/chatml.html create mode 100644 _modules/lmflow/utils/conversation_template/deepseek.html create mode 100644 _modules/lmflow/utils/conversation_template/gemma.html create mode 100644 _modules/lmflow/utils/conversation_template/hymba.html create mode 100644 _modules/lmflow/utils/conversation_template/internlm.html create mode 100644 _modules/lmflow/utils/conversation_template/llama.html create mode 100644 _modules/lmflow/utils/conversation_template/phi.html create mode 100644 _modules/lmflow/utils/conversation_template/qwen.html create mode 100644 _modules/lmflow/utils/conversation_template/yi.html create mode 100644 _modules/lmflow/utils/conversation_template/zephyr.html create mode 100644 _modules/lmflow/utils/data_utils.html create mode 100644 _modules/lmflow/utils/flash_attention/bloom_flash_attention.html create mode 100644 _modules/lmflow/utils/flash_attention/gpt2_flash_attention.html create mode 100644 _modules/lmflow/utils/flash_attention/gpt_neo_flash_attention.html create mode 100644 _modules/lmflow/utils/flash_attention/llama_flash_attention.html create mode 100644 _modules/lmflow/utils/flash_attention/triton_flash_attention.html create mode 100644 _modules/lmflow/utils/llava_conversation_lib.html create mode 100644 _modules/lmflow/utils/model.html create mode 100644 _modules/lmflow/utils/multimodal.html create mode 100644 _modules/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch.html create mode 100644 _modules/lmflow/utils/versioning.html create mode 100644 _modules/lmflow/version.html create mode 100644 _sources/about/authors.md.txt create mode 100644 _sources/about/changelog.md.txt create mode 100644 _sources/about/index.md.txt create mode 100644 _sources/autoapi/index.rst.txt create mode 100644 _sources/autoapi/lmflow/args/index.rst.txt create mode 100644 _sources/autoapi/lmflow/datasets/dataset/index.rst.txt create mode 100644 _sources/autoapi/lmflow/datasets/index.rst.txt create mode 100644 _sources/autoapi/lmflow/datasets/multi_modal_dataset/index.rst.txt create mode 100644 _sources/autoapi/lmflow/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/auto_model/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/base_model/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/decoder_model/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/encoder_decoder_model/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/hf_decoder_model/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/hf_encoder_decoder_model/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/hf_model_mixin/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/hf_text_regression_model/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/interfaces/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/interfaces/tunable/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/regression_model/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/text_regression_model/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/vision2seq_model/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/vision_encoder/clip_encoder/index.rst.txt create mode 100644 _sources/autoapi/lmflow/models/vision_encoder/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/adabelief/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/adabound/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/adadelta/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/adagrad/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/adam/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/adamax/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/adamp/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/adamw_schedule_free/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/adan/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/dummy/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/lamb/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/lars/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/nadam/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/novograd/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/optimizers/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/radam/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/sgd_schedule_free/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/sgdp/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/sophia/index.rst.txt create mode 100644 _sources/autoapi/lmflow/optim/yogi/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/auto_pipeline/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/base_aligner/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/base_pipeline/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/base_tuner/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/dpo_aligner/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/dpov2_aligner/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/evaluator/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/finetuner/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/inferencer/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/iterative_dpo_aligner/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/raft_aligner/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/rm_inferencer/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/rm_tuner/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/utils/dpov2_trainer/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/utils/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/utils/peft_trainer/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/utils/raft_trainer/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/utils/rm_trainer/index.rst.txt create mode 100644 _sources/autoapi/lmflow/pipeline/vllm_inferencer/index.rst.txt create mode 100644 _sources/autoapi/lmflow/tokenization/hf_decoder_model/index.rst.txt create mode 100644 _sources/autoapi/lmflow/tokenization/hf_text_regression_model/index.rst.txt create mode 100644 _sources/autoapi/lmflow/tokenization/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/common/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/constants/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/conversation_template/base/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/conversation_template/chatglm/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/conversation_template/chatml/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/conversation_template/deepseek/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/conversation_template/gemma/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/conversation_template/hymba/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/conversation_template/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/conversation_template/internlm/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/conversation_template/llama/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/conversation_template/phi/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/conversation_template/qwen/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/conversation_template/yi/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/conversation_template/zephyr/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/data_utils/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/flash_attention/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/llava_conversation_lib/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/model/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/multimodal/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/position_interpolation/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.rst.txt create mode 100644 _sources/autoapi/lmflow/utils/versioning/index.rst.txt create mode 100644 _sources/autoapi/lmflow/version/index.rst.txt create mode 100644 _sources/blogs/benchmark.md.txt create mode 100644 _sources/blogs/index.md.txt create mode 100644 _sources/examples/DATASETS.md.txt create mode 100644 _sources/examples/TASK_GUIDE.md.txt create mode 100644 _sources/examples/checkpoints.md.txt create mode 100644 _sources/examples/customize_conversation_template.md.txt create mode 100644 _sources/examples/finetuning.md.txt create mode 100644 _sources/examples/index.md.txt create mode 100644 _sources/examples/medical_finetune.md.txt create mode 100644 _sources/examples/raft.md.txt create mode 100644 _sources/examples/reward_modeling.md.txt create mode 100644 _sources/examples/supported_conversation_template.md.txt create mode 100644 _sources/index.md.txt create mode 100644 _sphinx_design_static/design-tabs.js create mode 100644 _sphinx_design_static/sphinx-design.min.css create mode 100644 _static/IT_sample1.png create mode 100644 _static/IT_sample2.png create mode 100644 _static/IT_sample3.png create mode 100644 _static/IT_sample4.png create mode 100644 _static/IT_sample5.png create mode 100644 _static/IT_sample6.png create mode 100644 _static/IT_sample7.png create mode 100644 _static/basic.css create mode 100644 _static/benchmark-1.png create mode 100644 _static/benchmark-2.png create mode 100644 _static/check_before_after_lora_tuning.jsonl create mode 100644 _static/design-tabs.js create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/eq.png create mode 100644 _static/file.png create mode 100644 _static/graphviz.css create mode 100644 _static/language_data.js create mode 100644 _static/logo.png create mode 100644 _static/logo.svg create mode 100644 _static/logo2.svg create mode 100644 _static/logo3.svg create mode 100644 _static/logo4.svg create mode 100644 _static/logo5.svg create mode 100644 _static/logo6.svg create mode 100644 _static/minus.png create mode 100644 _static/nll.png create mode 100644 _static/plot_directive.css create mode 100644 _static/plus.png create mode 100644 _static/ppl.png create mode 100644 _static/pygments.css create mode 100644 _static/raft-demo-examples.png create mode 100644 _static/raft.png create mode 100644 _static/raft_idea.PNG create mode 100644 _static/raft_reward.PNG create mode 100644 _static/scripts/bootstrap.js create mode 100644 _static/scripts/bootstrap.js.LICENSE.txt create mode 100644 _static/scripts/bootstrap.js.map create mode 100644 _static/scripts/fontawesome.js create mode 100644 _static/scripts/fontawesome.js.LICENSE.txt create mode 100644 _static/scripts/fontawesome.js.map create mode 100644 _static/scripts/pydata-sphinx-theme.js create mode 100644 _static/scripts/pydata-sphinx-theme.js.map create mode 100644 _static/searchtools.js create mode 100644 _static/sphinx-design.min.css create mode 100644 _static/sphinx_highlight.js create mode 100644 _static/styles/pydata-sphinx-theme.css create mode 100644 _static/styles/pydata-sphinx-theme.css.map create mode 100644 _static/styles/theme.css create mode 100644 _static/vendor/fontawesome/webfonts/fa-brands-400.ttf create mode 100644 _static/vendor/fontawesome/webfonts/fa-brands-400.woff2 create mode 100644 _static/vendor/fontawesome/webfonts/fa-regular-400.ttf create mode 100644 _static/vendor/fontawesome/webfonts/fa-regular-400.woff2 create mode 100644 _static/vendor/fontawesome/webfonts/fa-solid-900.ttf create mode 100644 _static/vendor/fontawesome/webfonts/fa-solid-900.woff2 create mode 100644 _static/webpack-macros.html create mode 100644 about/authors.html create mode 100644 about/changelog.html create mode 100644 about/index.html create mode 100644 autoapi/index.html create mode 100644 autoapi/lmflow/args/index.html create mode 100644 autoapi/lmflow/datasets/dataset/index.html create mode 100644 autoapi/lmflow/datasets/index.html create mode 100644 autoapi/lmflow/datasets/multi_modal_dataset/index.html create mode 100644 autoapi/lmflow/index.html create mode 100644 autoapi/lmflow/models/auto_model/index.html create mode 100644 autoapi/lmflow/models/base_model/index.html create mode 100644 autoapi/lmflow/models/decoder_model/index.html create mode 100644 autoapi/lmflow/models/encoder_decoder_model/index.html create mode 100644 autoapi/lmflow/models/hf_decoder_model/index.html create mode 100644 autoapi/lmflow/models/hf_encoder_decoder_model/index.html create mode 100644 autoapi/lmflow/models/hf_model_mixin/index.html create mode 100644 autoapi/lmflow/models/hf_text_regression_model/index.html create mode 100644 autoapi/lmflow/models/index.html create mode 100644 autoapi/lmflow/models/interfaces/index.html create mode 100644 autoapi/lmflow/models/interfaces/tunable/index.html create mode 100644 autoapi/lmflow/models/regression_model/index.html create mode 100644 autoapi/lmflow/models/text_regression_model/index.html create mode 100644 autoapi/lmflow/models/vision2seq_model/index.html create mode 100644 autoapi/lmflow/models/vision_encoder/clip_encoder/index.html create mode 100644 autoapi/lmflow/models/vision_encoder/index.html create mode 100644 autoapi/lmflow/optim/adabelief/index.html create mode 100644 autoapi/lmflow/optim/adabound/index.html create mode 100644 autoapi/lmflow/optim/adadelta/index.html create mode 100644 autoapi/lmflow/optim/adagrad/index.html create mode 100644 autoapi/lmflow/optim/adam/index.html create mode 100644 autoapi/lmflow/optim/adamax/index.html create mode 100644 autoapi/lmflow/optim/adamp/index.html create mode 100644 autoapi/lmflow/optim/adamw_schedule_free/index.html create mode 100644 autoapi/lmflow/optim/adan/index.html create mode 100644 autoapi/lmflow/optim/dummy/index.html create mode 100644 autoapi/lmflow/optim/index.html create mode 100644 autoapi/lmflow/optim/lamb/index.html create mode 100644 autoapi/lmflow/optim/lars/index.html create mode 100644 autoapi/lmflow/optim/nadam/index.html create mode 100644 autoapi/lmflow/optim/novograd/index.html create mode 100644 autoapi/lmflow/optim/optimizers/index.html create mode 100644 autoapi/lmflow/optim/radam/index.html create mode 100644 autoapi/lmflow/optim/sgd_schedule_free/index.html create mode 100644 autoapi/lmflow/optim/sgdp/index.html create mode 100644 autoapi/lmflow/optim/sophia/index.html create mode 100644 autoapi/lmflow/optim/yogi/index.html create mode 100644 autoapi/lmflow/pipeline/auto_pipeline/index.html create mode 100644 autoapi/lmflow/pipeline/base_aligner/index.html create mode 100644 autoapi/lmflow/pipeline/base_pipeline/index.html create mode 100644 autoapi/lmflow/pipeline/base_tuner/index.html create mode 100644 autoapi/lmflow/pipeline/dpo_aligner/index.html create mode 100644 autoapi/lmflow/pipeline/dpov2_aligner/index.html create mode 100644 autoapi/lmflow/pipeline/evaluator/index.html create mode 100644 autoapi/lmflow/pipeline/finetuner/index.html create mode 100644 autoapi/lmflow/pipeline/index.html create mode 100644 autoapi/lmflow/pipeline/inferencer/index.html create mode 100644 autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html create mode 100644 autoapi/lmflow/pipeline/raft_aligner/index.html create mode 100644 autoapi/lmflow/pipeline/rm_inferencer/index.html create mode 100644 autoapi/lmflow/pipeline/rm_tuner/index.html create mode 100644 autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html create mode 100644 autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html create mode 100644 autoapi/lmflow/pipeline/utils/index.html create mode 100644 autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.html create mode 100644 autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.html create mode 100644 autoapi/lmflow/pipeline/utils/peft_trainer/index.html create mode 100644 autoapi/lmflow/pipeline/utils/raft_trainer/index.html create mode 100644 autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html create mode 100644 autoapi/lmflow/pipeline/utils/rm_trainer/index.html create mode 100644 autoapi/lmflow/pipeline/vllm_inferencer/index.html create mode 100644 autoapi/lmflow/tokenization/hf_decoder_model/index.html create mode 100644 autoapi/lmflow/tokenization/hf_text_regression_model/index.html create mode 100644 autoapi/lmflow/tokenization/index.html create mode 100644 autoapi/lmflow/utils/common/index.html create mode 100644 autoapi/lmflow/utils/constants/index.html create mode 100644 autoapi/lmflow/utils/conversation_template/base/index.html create mode 100644 autoapi/lmflow/utils/conversation_template/chatglm/index.html create mode 100644 autoapi/lmflow/utils/conversation_template/chatml/index.html create mode 100644 autoapi/lmflow/utils/conversation_template/deepseek/index.html create mode 100644 autoapi/lmflow/utils/conversation_template/gemma/index.html create mode 100644 autoapi/lmflow/utils/conversation_template/hymba/index.html create mode 100644 autoapi/lmflow/utils/conversation_template/index.html create mode 100644 autoapi/lmflow/utils/conversation_template/internlm/index.html create mode 100644 autoapi/lmflow/utils/conversation_template/llama/index.html create mode 100644 autoapi/lmflow/utils/conversation_template/phi/index.html create mode 100644 autoapi/lmflow/utils/conversation_template/qwen/index.html create mode 100644 autoapi/lmflow/utils/conversation_template/yi/index.html create mode 100644 autoapi/lmflow/utils/conversation_template/zephyr/index.html create mode 100644 autoapi/lmflow/utils/data_utils/index.html create mode 100644 autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.html create mode 100644 autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.html create mode 100644 autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html create mode 100644 autoapi/lmflow/utils/flash_attention/index.html create mode 100644 autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.html create mode 100644 autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html create mode 100644 autoapi/lmflow/utils/index.html create mode 100644 autoapi/lmflow/utils/llava_conversation_lib/index.html create mode 100644 autoapi/lmflow/utils/model/index.html create mode 100644 autoapi/lmflow/utils/multimodal/index.html create mode 100644 autoapi/lmflow/utils/position_interpolation/index.html create mode 100644 autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html create mode 100644 autoapi/lmflow/utils/versioning/index.html create mode 100644 autoapi/lmflow/version/index.html create mode 100644 blogs/benchmark.html create mode 100644 blogs/index.html create mode 100644 examples/DATASETS.html create mode 100644 examples/TASK_GUIDE.html create mode 100644 examples/checkpoints.html create mode 100644 examples/customize_conversation_template.html create mode 100644 examples/finetuning.html create mode 100644 examples/index.html create mode 100644 examples/medical_finetune.html create mode 100644 examples/raft.html create mode 100644 examples/reward_modeling.html create mode 100644 examples/supported_conversation_template.html create mode 100644 genindex.html create mode 100644 index.html create mode 100644 objects.inv create mode 100644 py-modindex.html create mode 100644 search.html create mode 100644 searchindex.js diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 000000000..43100cccc --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. +config: fc6a77cd4e4d3169013d2c3d17d1fdcd +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/about/authors.doctree b/.doctrees/about/authors.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9497cde932eb08dff970735c03ed5d69d7dea4b0 GIT binary patch literal 3096 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 literal 0 HcmV?d00001 diff --git a/.doctrees/about/index.doctree b/.doctrees/about/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f729d2cde2beebbf6be8711f303f973e72a2df5a GIT binary patch literal 3320 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 N3?)`<_~Lfw{{eNGiG2V7 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/datasets/dataset/index.doctree b/.doctrees/autoapi/lmflow/datasets/dataset/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..72b03c4c2b070374968bb669aa4d7fde2f37613e GIT binary patch literal 104845 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 Inxn)2AJ$==UjP6A literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/datasets/index.doctree b/.doctrees/autoapi/lmflow/datasets/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f6d53011fa1f3f18e08df4c76c99b5154b86c815 GIT binary patch literal 95210 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/index.doctree b/.doctrees/autoapi/lmflow/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1473c10d7ec261596ad2f9f616d851f7d5764613 GIT binary patch literal 8960 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 WQshmtMRf{M;D&J!{IX0C8~*_Y47lI` literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/models/hf_decoder_model/index.doctree b/.doctrees/autoapi/lmflow/models/hf_decoder_model/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..47a10dc74db122610bb3511c6efe97a3d04b61e6 GIT binary patch literal 101597 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/models/hf_encoder_decoder_model/index.doctree b/.doctrees/autoapi/lmflow/models/hf_encoder_decoder_model/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..eb843889fe3756bebc293a720a860a1d846b28f1 GIT binary patch literal 63023 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/models/hf_model_mixin/index.doctree b/.doctrees/autoapi/lmflow/models/hf_model_mixin/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..02cf080000664c9822725f6b781dcdd5ea574d18 GIT binary patch literal 81018 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/models/index.doctree b/.doctrees/autoapi/lmflow/models/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a5051e4b824802c77a588e05ee1ce965f385bbea GIT binary patch literal 3949 zcmai1U2hz>6_qXRYIh~AB*zX4*h(7|N#xejwm}|>)(B7(=!=^z+6H+G2HY9Wk`ZS( zAvxBnK!D^Sg$3{-fLS0w{!o8b56PL?4|!t&3(efQykETc9P-=Ve`m)#;m;oHit%!B zNwTbz8P(1XGMUx|EscBao_^=Pap!iZ$hDTWN~yCu&`22~-> zNP4Ac?saOrZ^+z#a_pErW{2zv+hu3=#e~U%PE=i%R86j>x|;m$v%ey#_8$V&lNi{9 z)JBquPh#4WnD&I18C_f|jf~!Valf9i9oq}Cl~TnjvR@(t_CBigYy3XI?<4%4`fN}T z#X}C~cCR8_Ir|9qYeE0?tMw||hf#j9E@u6yainIyWf#lzrtCcwksZWdSZ?M?E3l(~ z)w5`?*}r$!M9rST;-6!|qD8Vb6CZ%D@263nJwr_f2w{lMlSL)#GP_%r9c+$FjiRgF z^_G&c$M*5h?8kaZr}o1)>w0Mt_Azdw`;XhIJ0qIj(S7=6yBSR}6Y7ro@87IW%c#C> z*|Rq6l2St@X}C~la%Te zFIy_`GuF41`fWjNarBb=6h7AU>pN*|DOg;QH0AD6q4toMsi-rWa}fug%~-~A#@JU( zu##0wF~eT61^YL(gMutFS{deE+ymy3D!?-kaxUb|-P%6mSq3z}wMUKFPB19zVn!9s z+>0GM3gE3}DQ=)U0x2vJ$ItBN>@3Xc2($YS;O^Rh+v8?DFRm4-Dyke=MK8bp@9Q%U z)S;aTJJL&#AuaZ8NE;;dwtNf?KDYR>Gm* zhL>|t_i4w)xssRw;H2$;K}3xn>BzhahdcHMooPChPOeqar`S{8n`7;7q zD_P`H74DTCYfx8}0N(w{L&M_LMF-s%VI*b*t2~y^PN4Ioyq}i7HV=XedewNQT(5l=_r>e7r=>;vhoH*RHU5OWKL1;4Da_b`t}_Kwow_lphDZgjXy|CZ9kP|jvP@A zp0(Y;`gZIAK3R(FeU4r`%Icy@x_(4egCKx$NpQNG+T$Pz)8My$DXKKBGnp(3-%TfU zQAsf6>dMd}sYyI0#(q6cGOo!?_(Ym0_uDza%pD>bjmZc@2ct)gTGE21eb+z1iKZ$H zCM~_S4EucmaKk>uSD@ypA2zg2IY$=?UU1_+JNd|tD_Vh_av)?0u7Q(7F9|H~=feJi z8B^&$P9_lR%j(83Szbyt$2dLmnjrvaCWaQ+9)s-|Kz{MT?><32$0|=Z%zMew{D-Z1 zOfK>LdPUVGrzQ_RfCdw03IS(BLuMGE%yYoNo}nR&q?^nxfkaonLvHPfz9|h^B#h6Q zzz@y4C#3KDLtPL|+1E8jTBA_!g!lNG2$_<|NA@gb1o41{G~o4-p~i)8>wXUKM!+v|GDN%a{JXU6(R*k3E`gEeWqK|l;^dH2%yc#6vhG(>__&R{ZQMXmztXjVfu6aPq*y# zZOz{I&p(3Dp5qYQkCAkU-X6(2u4K@-xp*U}`8*FUgN zYkRcX6(P=}l%uzNqKG|8{P4GWu^_9GsE0D4i;9^PU84onha199d$?wC*m@0%9<131 zh%4jIGLJTGHD7R40W_t!D4_p9T&WZSTZkOMO#6Rn!A5ofRE+ j2(>0Y=)|Ep4w~ZIaXU?3+KM z?|PX`ZB7g0-};BY`Ct99>nn1mrBx~QZUY)A<04bE@IQOE7t{?GdQ_j^)-*L-7VUA? zVO_TUvp;5i*D>4(y7I~07Wqubvr&%QVT2cksu@Y)NjQTeTR+l8@a11LU;F51w+bluwfiQ5vqpnhVf#0`isichV6PE@PV6`v``8h}?aI-#z>u;P)^D zhTJG#g>&q-O2U*2ITf~vdCy@n16N! za3y8cZvgjP$f>_@UBhU6t)c9fI`t^!{R@2-r!+lekDxc3wagZkAf zfwv)Qo&@p>U*Sq80Os7gYcrTBq@gPx-?(8I1pr*Km`RoUH*QaZfXW2z7zT`n!8=hx z1+65>88<9x2pIR(2Wm#1xLrj{sZ1j1bBc6cbpu93``U4bbit8DLyXmpQpa^NI<<3L zw|7QVfhtsVruQ5$WJrg9g@hdx5Z$rN~|7z}hggd6~3$ zL{=+7)o}$8!Qg%+sk$MQekm$7wV6y7c|g+vU6fMOWc6ePk<=v5x#khC`$@)iU_}H{ zd%4~833_f9!Dw_w)pRgAtksf+G2N~3giAD4Rb$eMV>8ry2b7081>+#ZEAB8f8(>q+ zfkMG^Zu~a~58Pf!%LFX~-Ymjq0vHC#l)(4U7w$GQrqrL0#}MmLd2X02MpDhuPB(*Q z}IeRE;<_v+548!I+s`;Ih6U zQ?yVPCPU910g!ppc4iwuqRW7g3wNN;3quwO<8vnP19-QD47lIbIYF2GV$sqXiMn3B z$Ja#2l*D1=j#5V84|cZLY{+tzLYzLeC9VkTVKrrH4!}r)gcmblpeBWDfh8~uE~)W6 zU{^>IJ25P7ryh{O_{z|}=kS10YH-KR6k4YV%?TF?7TG|$mDh*$DhjNMStPUzw@HiV zVF7f#NG0f9AQ8J1M{k(K5H+WuChSXxa0jr(UX?Zn-!{^pzLuw zHk;vvols-``8Q#z{8dlyt!8p!7h13<)(ux7Q8_tGIe-&=w z%BNDaD63R&ToSh0{WXjI=GN-awKe--aAiVE-n?w9{(|iVyp&?A1NbntQYi%LhZr!H zw!f<7Z;{^D{(JNo{xm?hVwu-~RlKmJr#10TE3S~SQ*Tf};yi$2kOc;<$tLUwb~^eS D`xibw literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/models/interfaces/tunable/index.doctree b/.doctrees/autoapi/lmflow/models/interfaces/tunable/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0b99c4ec197e8e39887d682bbb034ebd33781a48 GIT binary patch literal 8013 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©^7*q`#05(V;2iv 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/models/vision2seq_model/index.doctree b/.doctrees/autoapi/lmflow/models/vision2seq_model/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f56c09808bfd9c3393b6dd21cbc2510d7f254add GIT binary patch literal 79434 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 YP6bjxbCw{$NQI|C{o$1N{5Bb);dH?_b literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/models/vision_encoder/clip_encoder/index.doctree b/.doctrees/autoapi/lmflow/models/vision_encoder/clip_encoder/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..36aa1d931087dcca414a33a2c1ecad1e609ac90d GIT binary patch literal 33970 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/models/vision_encoder/index.doctree b/.doctrees/autoapi/lmflow/models/vision_encoder/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0ebf1b999ce4913f57b6539eca936dcf99abb583 GIT binary patch literal 7944 zcmcgxTZklA8J=7Bbobo%G8kuPGa<&zjyu!31|s9SAi)LMWTG*Mgb9`Es?&X{r*5e_ zwbSFe!8|1Fz(IwSZxZql1Dc?ZJ_}wDAqpBnM8tQWd^h<0=Tuc!chB@pL>=hqKDYn; z_uKh)<@^7-I-&mLQXF!}@9mhj?FTlCQ(3bEEAf~w(l^p;ucr6YO<9l3!#GGHi=}b` zJ1p+FcEtSj#Z)fRcHy}3PIi7aW|nXQzc|h-yvk=^OgDL5R)iy5R$7u*T(9j0hdUl_ z2avl?jI##wEsUd-&f(b1^Q=esoU!}0RO4F>O<*Tdz9Q>JK@Ojm)r^WgIpaD$OZSqN zDI2B`k<&^9s3&Tt9XlqrRn%K z>+M7_2)ue{DrxZvSy6K(zG{~9hd~g31U!5cpU3cd9G`1M9QYGCilj|B6Piwx%1_|B z#ATn~7%LL_sNS|cb{DViiPTK^r}%cC7km6FIL_y^TJ`l}IiHY?uO%%FKGw2d9hk}l z42WOU+|>}xQ|TlGNEo;Dc77cks{w^NlsNFhAo1-{rcFSSfh8hVR@5^X%Gc!9`Gq&Y z|2_HSxlUTH6Xu4Ybs&8`HRZhHTW(^rw&N;sa;S98GkZ1*1yAoxLXXW*86>p6;|8tt zSXQ}X+pynbxsaVMCTf1-wOGXL^v;BAD07Vi-#x-%p6U20|A(B#NF0SosHO?D zoWq#)Lf5ezkv>q%(0=mJbqG_3#Iw>LS;JP9w4{6LIsyA(B9&P>adM7zg3OhF`7?5t z|Fd7YGYN)%06SZiSH^jSk`O;A3$Y(O@^F#oJ7j}@;OpI~$%zT10Cdmq>Et-!(V6$L z@wY(ecSDB%$D#3QE?nQc*1d>(&w1B)B7Oseesvb4Utkm5)#;Gr4Ee+q$s=g|5q7^b z3{qY$x$zA*@H^V~j)d^Har&*{(*rh8?|JTS9GX-;)WV3xEV|2-ioJ=mdBpsI3M+k- zWxZVl=zjDcm>d)QDfW&D{>xuM-fni-##4bW;9ZLxV05AI7v1MbcT`S)&aAWhY;i(m zBo6_popUPAV1iza;ZYGtERE@Euze(gW-1Os_|iJ&Z%pO7;s8b@;) ziUf`cE*}wG6iBL7sm#jjQ(lqlW20JLN}RE)FY0dYZRNU6Kl`-&n(jE&SINm>l$Kv=w0^G9dbf;LRcGS) zRr#=g-Jix@*ZmomhXY5>JAGf@?+-`rF}yp^A^DJ(xWX~0-D4E$g&|b*m`w6bLj5F@ zlov}C&RvHcQb#J4OZiX3^esLhj};xs+NG z8UGw6LtA~HMO{w`0ev8JxS&rdDrtBCB%f&44W_oTn&q4PLs`-JB(KU^J8@lQX!`yJ ziUEsQO40K}HTQaoejCkdzjEoMU`2tyD+pWNI#>hqU#6kT#;AZ$8gJ>qTvGNkxJzJ{ zr<5#naD08338Y+`I;jUay8a)gJ1Ufy% ze0p0~ZpU&yTg=BR*pZPK7n_#+AfL;mUhhA~2>Tt>D<`Au;L z%suM>7Hb>%U055FNg-+JE72yunYUoKp(AM6ZfoZZ8g#>!759v9?2gBQ7x?mdcr5=qLoC{A~uSK z@O(a_8^f}eu^b)om7>Mnj+9#3s0qJrx(WJid6<*cAQ53A(mlR};;X~Z>{Z?x1KUJv zS(sjkvTQC20s&NE$h}lfHc|O$6v#szU_&DtCXtKL0$CF^nQ0Yv_P)H(1^_=0tTg>V zE>P1Qojaq~4k8Z)1vIAMqdr!_sEDR!H zxa=+iBd278n{F|z$Q9Oez(0ZHF3vYqWW{E!q=V}gseGkA0N^sy!%Q8*vKSFV_&Gkf zrQ4aL*s`98_V(wtm1nv#xM;8_3L=A>zU`umh%P>8gVT~rn&%}b6$K@g>q9F;Ai8a` z=0y!xsjk8yKYe9zVd$`2CK{l1F$arWRo5)Irr$|mao{*bi77N!<;93uL1Y`~#G)sH zYpCD8C#x{LHXJZG;@G(=z`-t3#bxxT

~8lAOc~jY1j0ST*6GZi##oMckfTQZvdF zNc#P$FlLDz7^uInYZ>i@AZAASq|y>gs8$@M7Jy~gPE1WZ5Rzdzn;QuXZXU$M@I=bu zuzexhX5`&xxk|rq393A0mB^6+&4$S5&_0H!^bmdN6%~_RhSHKl`#m&1o>_ieE`}^L zs2c+Nv=qb8QVOB%z@3ajevAtd#=FfXrsJLPNbtbl38D^c=`!t92w{_y0e&tzmWkJVe8>ey#)0PTI?>-cTxK;{=NkfT6jeQ2BGk?y*INv%6V zjGPfv22TMtEcgf*aE4aWvAk?y*MY&%$Z`!-V&riZ)+^b&A9U4iYj1Wer>!EYAPHjk`$po}LiY5cOz*60pZ_DFpc| z3Og0sRo15J#Y8TYl}nMkfM%hNePDr}As>?O(|j$@km9RZD5KZHgT%nrOGA^z?)t#C zdVZ^dbYTEK!a*eH(dqIqtZW5uO7L(N9^RnF2!7~8xzGg29D#QBscilYh~u^NIan+5 qOV~Zc9z#L(g@vOVn4T-9m5$A2?^@954n5#DZ1TmK+tRt_&c6Y)527;w literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/adabelief/index.doctree b/.doctrees/autoapi/lmflow/optim/adabelief/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f694905001cdecd0e62ca8a8ec0d5af677437894 GIT binary patch literal 23759 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/adadelta/index.doctree b/.doctrees/autoapi/lmflow/optim/adadelta/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ff8f7b323a10188703d4663bf899843425e51127 GIT binary patch literal 10182 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 UEE4HWvP$C?nc~c9saSaVKL#)#+5i9m literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/adagrad/index.doctree b/.doctrees/autoapi/lmflow/optim/adagrad/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..65a1e9fa79f7b11bf3facf8d3da7de371eba0ed7 GIT binary patch literal 10143 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 JYMG6g{V(aTG9~~3 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/adamp/index.doctree b/.doctrees/autoapi/lmflow/optim/adamp/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..41e0e8394651b94463d894a78250916bfcfc0c26 GIT binary patch literal 26361 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 I1h;4Y4@GZK6951J literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/adamw_schedule_free/index.doctree b/.doctrees/autoapi/lmflow/optim/adamw_schedule_free/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5a7dd8f3455d002493813390a903d1d54406c86e GIT binary patch literal 17928 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 NSy?jjK9Y^a{{|@5D!Tvx literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/adan/index.doctree b/.doctrees/autoapi/lmflow/optim/adan/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6e8c622cc3b9e0dc973c06c8085de38b9ebf4077 GIT binary patch literal 50960 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/dummy/index.doctree b/.doctrees/autoapi/lmflow/optim/dummy/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..144b1910fe2e5fa4e55a7a9a00ba8a8946945ed0 GIT binary patch literal 19815 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/index.doctree b/.doctrees/autoapi/lmflow/optim/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..39608258eb580ff4c8ca8b2e9e779df19f5c6264 GIT binary patch literal 4106 zcmb7HTW{pH751(@;~C$*m!RmblWdbs9CSUChddPRB0y1~58Y;pHbLJ4fg^F|Fs4M6 zr0j8!6lu`}Yk+T2UjyVNK>kqwPWw@mG@7Z6ZVe199UUH?%Xhv*e%1TuzYjO6KX+(y z64_$Jk|a|JH>DdSDlSr<+49@+y}y-TmZxs0*`-m1j(O=epb?XhiRM}PY3UBUx)sul z>h;@($5yDUT~0mf)Apz3DGgoE3M+Z%liQQ&OsdO~%B@ICuLrfQPx!*`zxMU(GWgTa z8FsfN9lK%Fx=Wj`Uwb)mTT*1aoD@^$c9^wVObd(Xd^DRPG2Zj-STbWE#B(oWX?PkW zMZSEQviMx{nb#@YwqRZstm9E5 za62Ct(_qeo+P$_SstX2-zYf_77TK+Fcn5rPKMd;h3>g`~g&{zv(p(i;^503>KxI^H zHSYrJeE`W|B2BM4S~r`L zESpnPCuMdVs>`QccTi*C&xA7&g~#zuu%346-7fa?O+S#fICd zW{Xjoyn^lyX4aAuJ+FL1Cl#OUfM5QI!LUL??y#nivrEnLoa>Tx`PHxg!zwR<8F_2M z?U*GIvWA`4q%~K2Ti%CyfHWMpGeO1`Ju;qjfCvG_B7^%!E4KxfBh5>F_n&V|xD`nv- z;I=5;opI@Qg9{P%J%_?h{aR>=w|&$$@}t~;g)2P|jH}Y!o54(`Ebn}L>Gu5r2Ed9I zGo{n=r8_Vft$Bn2ui94D|}y`Vl{Ox&L4xzaY0{DLE$cij## z*}nGNF<%H|(K1_@Mycm|37-~oY>2?U_1GbX*k!%9+hgD?G3lp9_oDq5r-O-Fo@ zE5oDi$_gT}jV^={0k4NqA`F{i0=8amH+_Ph+e0u0ol!L%jPBQJQA42aHUET74A)g- z^2}RHQ14w(8|oBZ!I{Ut*#Mht4irj}3R`}3^sYO|c^;ufz>is6C2Y@2rVPIOzHmPw zYjg9<@fcz=%C9V`Y^3xY?ex%VRt`WjvOGn3EXpx}{OsxbA0VFxdKRyl_mZXgcN+8P zT;}n5&hr5<#E4fQid-3OM#X)NYwr6J-kLz#VpJwcM=nWKPY@?He|Uxb@2?Ab z;-7!OID3v`dOvv5GJ11qXeT8-Z^vUZyl~qwxI~mMF;zZ$d}m{$9@JaSki-SxJNmG2 z`(0F2e(uKt*z$qG_aO1j-{^&ebR|I#X#$GUsgf%n|E89Iiwu8V{t0b{yDl0Qw^IXTg$-MV fS`qKI;tCwQ^MOa literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/lamb/index.doctree b/.doctrees/autoapi/lmflow/optim/lamb/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9004d181ef9d055445ad7e5b967bf698442a56d8 GIT binary patch literal 22973 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/lars/index.doctree b/.doctrees/autoapi/lmflow/optim/lars/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5516d2f1795254279a1929eb46b3457d63d585a7 GIT binary patch literal 23708 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 i4&FO^l4L#z_t&0XBzL#~ literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/nadam/index.doctree b/.doctrees/autoapi/lmflow/optim/nadam/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..18acbef1d525a8e551bd5a9121c4311c2bcec87b GIT binary patch literal 12268 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/novograd/index.doctree b/.doctrees/autoapi/lmflow/optim/novograd/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2ef1ec691628ab077d308b178a6f06183f508b96 GIT binary patch literal 12870 zcmcgy*^ebv8SkF%dwZGQVH#y-;F1C6PUvL@(LmcXiDDpOpovS23s_X&d%926)U7IO zneGOOmo|`S_HD2dqk0(t&A!?BoIjk@wPB@({ z$J<%){K)EHkE`BxV73!lfcc{zVY`ILplQ!03d6c@0-q@1^J2ot2;d{4p5nbBMjgv# z$ws_sib*qy0&6plKrhiZVzon}Wvu0xVTewA*IcuszQ)_JpEowm)|G&5(VSR}MdmgQ zC482j4?pq%h}3_8V7RIfTQ%dzGkt4Sv0+uR zVO6tX)pFZxcO?ix*)5lk#hZLc)MQ_Qg^IiUR#3uk1J};r{~h>$7XQx?RbWhDNm`m> z)Hkgl5vMy|J9gN68~wR2PO0(b{=>Y!5hZ5K@8Zij*&F;8Fqa=!I+F{1PIrj0`&0Hx z;V$OwREpT^eTs!@FLNMG1e!R0NloWV;Lf<@&Rk?}#*P^nEzdDRpS7-oQKNFcn0xGF zPhEKWsk@)ne-i@tXbw)a-v$A%UASj$os=PrI~_CFy99}YpJFjJP}sprVK@=YTXl4<(UxmXgly?zlU99wPRrBb@Fl?OLnYw#FNXD#6B17 zy8;P$S{n}1+QJ5(C~iPLWYcT!^&kp7M*?rBr(e1qGJ(EJCg37K(e;{Jk}A z(_VW*v#_z=*A!Ot_@yTvlRR$1LZ^J@wk>zt*oC7gZu_nyY^xcqOjONhLcoY;-~p<;qGXkFVV6p z3DJTVF!2ij_+ppkrNLc0>H~nD#)Cm^vaCyVBrH_)lV&^yrWUvWh4=`-lwPjr%<}f?ErfgIE+j{h4~%3&TT0MGYHl z(u5BJt38{okSNVTe^$Em=WyqZdI(2|&?L@jAJu3|J8f8Q|HH?*gN?Ry{wUy@9zll0 zC{D7yk)M3?42>9}g=1S32c?r}M`PHen9vEA8cuNW{L1+YON~tync>Ce`IY;Y8u+>I zzH>_r=7$$Au;ugjE;V+Twap`=&06N(#q&!II>8#|Rk-VIP=E0O(+Sy916$I7YM#rY z#jM20bX_kpyUxwx?oY0ti4ghM8fPWb&R$w-tZNEzyn#-xHL@v!J34E1J+ciwE>okks zWv{74@1Z~PR4w&z0eXn|syK!l3mv`nErr*_Vt;3^2^ln;Q}=iVuHOl?DUL&Nmf->< zU@=X2NG{8EDS(!#`D6t(6Ox*4Qu2^KIL6!F0qBksx(e5Ef^ra=oeDG;B%0DP7!D$i zg*!=s^{xMd&15E{)HcJVhzDH+VQ5O^LrO$s?nXC*OA{Ay3R3HGUHD=pbH%XRtLa}* z{CggMsv=5RH=b3CJ|`F1&*6`Dv|=oEK#Fi%6vvJ^f!1sK%<=v%?I%s9pAOq!#&C~` zrigzBW75LrrLc)@o)0e;c|noK!xuGVeC2?DUI|zXd%X;Mjh39WQ@FT6R)d6rZke$Y8COjwW@Yf=hA{ShFNll~*RAN&u}9f}eeylOFJhHPbREX^ z#rn`R4Ba#BAm#geLu;KU{n()zjK-vj~&?>7qIk@QoFqx zN|n@7C?%=YF5=A>S(Cbi0$K6rTX zeY_eGC>KnL!z`g^s8nFs|HT9kH<)a-6Z_M^ zFUwH!U(mts-z0=0%Ibuiv%_ANXAHcc;86(2-$YE(6$<%DylIs)q@tdtB>5Zqs?Fqu4vA3Nn@=O$?jd%bR<~T>c!8QSyO&*fTPopGIEgF1 zHF=iG6L-Gf#QW7+BTF>n=-%S#Fv2A#YKf=!-}J?5QrW<-|gh|KQ+kwfzq4QFZYus6#OsZQqG?)%ocC zLOz=RlE1-!C1uHfJ%})flq0V!<#{9INnEYUe$aeM?b1sY&7V%$an!_{eHW?!dkiCF zQHaD6GmPfBMzeo{L?^x)9Tst~jSSpf)e~2W`zGadoW@-1k9{7PXq8Ac)_!-PPux)4 zttqih(_^+R6~EboDD z3+1PpLwa^`LhEZ;4GY#?aP~QZJT{hMI)57VB~>DyEIJR}ooqvNzP-#{yU9@!{) z(M(;avhwb5mcGo{-y^KY5c1^Xoc(=j%IsmW?Rv|q3;~YO_4MbA?p{{!t@~ms9n|f4 z%t+%{m`$2>J>940(M|*p-YY^1U7a{qApx1$O5LLlP)B;1P!4h>jF^8tj`7R^j*<5J zpB>_Y#H!_>79e03H$0d1^@pPhmyZzr(5z{_y zuy?#!&Sj$RMv|(1de+X#`Dcd1b-ToWVCf z2sZ+SLfPhvFPVLP|KBBd%F(g^q8{JhM=#!X-#?wXQ>py@eSVHukI(-N$UTbBzkRf? z&sSEbef?|+xn3WCGhFoVQn5oLkLKg`2G{T7?NqptwkMXr{|3v=2 zDt~_}e}5)_Uz5MD(=P>_0ls*!@)e?#zS~q%kUn3Q*p^Sjb83FR^s07SXTuFmT zPJozI7rZQ9;r$>jt&p8`GO2U zN*APcjT>SrVDe4LVOJR#c}z@l6Yo!HvnJ-*t_A+#LKcU4Z>`NX<8ACWLlsX{Ifi|i z*+I_)1kqwd4B=Bqri$Yx&+~nW;Ec9yC}Gc!9x9x9u=geAWq7Br(LS z;(1}0n%o6NpX{H_1-Hy#|298sP z=ol)B#SH;#c|jY+6jVhAFjTp^A?h%-EhJ>X5v#3L0ST8GD)TY&E^!RGA3XcU9iOhg zbarPPuZ9u=+7qL)$Z zWwfo3DlkDvishI#5*XYRhzWs-D(`^Sq|=No%K>pH(Osl306}RHm4HAtv|Ae@KaSGt zta*7@%*%Y7!%)w}q5U1y$~`i7R?PU!H>iLP_SupQLlL46Z3pgT6yhB`iu`bGbrs#= ziob_@zPsWD+pwh*G*cpgnMTAq5Kkm)otVFT$N77}&zWGW)wMnK_VZn-IVd%Ix4V~;5nQ>+Wq~$34VlLcsBXif_D6ny;$RK7KsQH1ek*EFj`y6bqRGDa#ezmh;@I-9Hw3*G|;oH3+J#R(j6%_{~& z?W1F$)Sf&pq;yTpr^WKnRcA|ivwbnb+^bZmF20{KXzMJ-A6jDDfE7qv{%J&i(B6$HTx z)kDri&r=L8_K*e0UT9@!6ZPe#sW*0YX0svf5e3#N?_$Dy7x*)5SZcW zT3$?!3{enOkPcJ=!bij%yFcxJ39@-M`4G$&iDx(f$UlUpDu9{CD|H{wx}~xmx7?N! Yw@JCT$v;h^w9P|k1|Y<0nW0$uFRCtos{jB1 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/optimizers/index.doctree b/.doctrees/autoapi/lmflow/optim/optimizers/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f91a1b42fa5adc85f3a218eef4842e425deb8eb1 GIT binary patch literal 3094 zcmaJ@TWcIQ6n1RyuGe?x)#JI$B9pV{ef@lpP-g_k};@e7YtBXZSvSUT3 zLC3m*A+zwwvn}?3t+R)0iS4@I#!MD;tZZ3QH9nQL3=9}#H#4-V>abZktlk)-0| zn2K?oiuhZnV$92&&PPfkwns;cHf0O0SIaIXGUk{)Ml5U}nfnaS6Fg7xJPUClHHz2K z9Ju9*aOK_OLgrS`Z}x7gfqN7+4sTLm{fY6!vM<=-Meq~$2q{MGhNuXcDN?aZj=HVy zh1jcOtfL#nO5gub-V_#wzl&LohRKaV20y-KyX-mAw9@)hdosvmaRt+?=N|0u?^Q}> z6y?tM(zCtN7S$Q*vbVqA`t(tq=pWAcS*JHU<%aV@ywDX1>{+Q4)l{8OAAFs(J~lqD z*_3v{9k7=z<`3&^#otH{+Sa#K`H(-PEqyp?6(=plB-Yshh(6+ROBnXt-8G7oT9Cl# z1lgLw|45jgk%kC=wBS}-9hzfl!+E#dW@c5OW73gty_G}~x)n{0;pGfHXQyi-Qzc77 z%iO#E??hPOwd+ECX-#E~pRlco8_p<*MT}G)i=2SQh7=VRYf4H3SLu|`y}LE`ZY{cy z;M`*J6gso=b3L(^p@Ze7tzDw7C$LXplzx5|jAaGfCYN{C5Xnq(!ZnY0 z-AZz2n9va0CC8Akfa2@2VS^OnK6}qF&;y#N7b2O zvK&b@1D);#&DsHICWaO$kEwebtqz}j`4#fHsixUA^FeZ9{`1y6m`eg)kEt4QYNquW z=mukE3W39hhNPfSZkRt>ak~Iyk#x-L0!U(eJ$KvstTbevFg{}f55T)DWWfEpE(lom zhXtiI5_P9u$7Ld9Mw-;_W(=2BhQdd(AM5q_0p~!E%y>Bk2AZaD zJ9G(c(`#zH2-p>pL?(t|Gh6|y zVj3ITxm%*;Nf>I}N^B+IE|7=;frA?+F+|O%sRx=JI0a-G3~XrUc^F~dpw(TG#xVzC zSetf>e(0x|kRTrfVSHzlrP>XHz?@a^@Qr8mT(kW!g`^mUUSbO9M+dq_-p+&FO~+o6 z_Bw0tEX+3=qlbSNE|dS7>v6fgE^TVv#$^=Ler;qNSPFr`*C+{OZ}nmVE=!^wW+R}c zNTuk2Rjb~;ChW9_S1bV^R>p&c_paM&zToaeE6St|jRqH0CWS!B5Cd+a z!4Hl6J<|Ht{{mWJo&rHJlWHI-9@urHE8?|IT!Ueamzl760N*SOwySw)noWNRV}VUa F{{!+v#UlU! literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/radam/index.doctree b/.doctrees/autoapi/lmflow/optim/radam/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b23d4300ed3426f8fc68b4b9d98be2f2c746dab0 GIT binary patch literal 18078 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 D9Kt@w literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/sgd_schedule_free/index.doctree b/.doctrees/autoapi/lmflow/optim/sgd_schedule_free/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e1af0d62f257fd638765257ae3a09f30f6f9f360 GIT binary patch literal 17307 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/sgdp/index.doctree b/.doctrees/autoapi/lmflow/optim/sgdp/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..18906de22f4a6c1d0a70cac297a61d6271494612 GIT binary patch literal 28091 zcmdU2du$xXc^4(V^&myb^h1`ta%_vT`I79~E-fjRt=Lsm(?%R5MPv80yjya2wRd~n z-4n?gZW1(h%y{BQyhh*#ft#jnnx<}(K7b}ct+qjfG);k~Df&hW1O-ww`J->7MH=+? z&CEV;Z@71)71V&K+u51<9`nub`*!!6nfDF6^4a8rlm@~TG2cA!Spw49n}G{PrBwvVa@mgCRL_Cvl=4J@}2 zH#Y~&L38MdaLOEE1A!GdM(P&Z@6?wacXifn23CF6U#T@is*Jk*?=;qkiJ~e`hk~=g zrVc)W(A>{PDly~cE;cCnU1a@^)iA=v){@Rf^&s%9rB(nrNv>U1%_kX#s*djaD8%o9 zhF%xHhHI^6ax@vF=u7V?3y~%*pBB~4 zX=r7bYh^spms*bQRjRI2@ta1q3kCJ_`fU91AA9onQ%|0FD*87ha*rhB*oAE#)P>`B zE}W#n_gnS4?yaB3C_|TQQcgtJ{A}trtUq;CfyCMAbMq+vd+edJkB*L>t2Z5kCa$kh zfu=hvu4e^ieKwj=1Nr9Cj7HdCu;RI`W}56?wv}_xp~+C#WCZY`uXuXXOf_Uv3(fTfcgbG3 z!1Z{tZBooq`RNOfbG=Sse(q@+jhfY1sjLAa(p?=b*;O<`Lyi>~p6;ajFh4G*P(M)( zllk+B&hrOzo^!%>HrGQo*j%51IH8e-2-50n7?zI#7(32AHVAouS|Ph}6TAxHB&cd# zw;G}Ot855Y!Fm%8V;7NTyK!x-H65#J1>v*&_NwkR!VNY8WefBvM0z%i`y8LcMNT8o zy%i$}*<|ss@Cp1X(D+JB-1B|V;43ifNpmn6m{-yRV{}w5jlj$1Ve?A>H0tL?YNi?u zYVbTNJ_mv?b zS~~Z{`U$^6cv7g(Lha>zm+Yz(#A=S)SP?j>=jTfetuN$Trz^3MwYsz5H+71XhMS(@ z8{Q>@o8(WRZREnBDnNe1auR^(kta_VNvBTykD?bDZp4mI;f2Q@<}P1*z-y_I@ma4~jrM@$Sm)`V ziC0p*$&h6S>qnH^9w`ut@1r{v-$G~?w7g7|`UT=>io8YLpVl02K||202ihrZes+HT z__S6>Jfn{+?-V)v#8~pi(oc`g(G69$gqtpr=Y^ zL2I>E@pOdPx#EW5!*{rs7PKYTb->z#y5k$iVkb4m#nT%NH=x$(0G*w9&&jt02t5|G zqg?ApPfu$nBXuCQfC*@_c}zda1_U}MCUhn?h*;^dYDHfu_s06P$SUzG z>EwK_lPmzSzSS^4J?(SUJ{1&_nj`)2HU3ic*AdwgmcuwTc*gHKA;zxDrd(#3O5*nKQq zS}=Na1)2!E*&)W7z^9TQsZ7O5M028DVpJbdjuz`{v`>{6#egvUqw;52Bm0nO^bBug zKZk!Jn8zb}9ukEL?3dEDb~;`(P3UJL!DpyvKKqKMh5d2dZkz2=giqlfpR5PD9gzZ? ztwuFywP9S}LPQ+D653x>(q?_lcI|zhnjEqPY5VQCiWSiT&AzH6V!sQw+XR$wCaGi; zIl#S-5a(wj+VYtSfGqANBL1C{dNzPbqImJ}kOcA)=QBaLB*nvfdPcOCt!g%=H!r6n zc#2_Oh3fta9OVtK#4wlA^>>xhme4hje}8ODZWGUAf$OEGZr`ccl1`;8X?Ul~idmoA zZb^gGq$^9hT1ljgba>jg8vLbL3T6j*921EpuM!J7s-#NbwXC$eT^y|<*LPr_lf!&acsfr2QEi!_zRq2Z`rByUoXh`B*+gv}NvGJjJo zvkGGV9!*O^%)h9qs31mCDFZRzS5r}0i=?s@h#Bu!`R*$YF?+yHS1(<1^5YvS$52~q@Fq#a+;BiO3X3sqMyi-l32WSx@ZUeO7m3;oIQxU2R@M@88 z@+!fRx>`ULj#y|~5=Wj?Q&HiFq*4Y)Hq=y9CLyV81xG%nq<+P5Ol z7**ne1XX@UEvgDt-ixLsQRO8y6&0#TDrHdRH8mBLfk-MDROzQ=BB8tXFU{g+qQ}oE zY4?mNf=t&RnP2Ba(?y)pg_i$VDX9`tB$YCd^4DrADoE) ztHehBQ%$W0SP`Q31S@44Vc`TmZCe%kWL}9=d2oqDCH@)v1NbtDkNE8=WcXGkR@YEc z|0T;?nI(1>TEVu=hAYC<+j`CiE5#>$>-7C9S~soUmd{(;sUWW&oX$Kg3l zg7|19aI2&@NAEEU|^y`A~8Yb4L$d;+ElXsA=Qi(}sjDhS} zcLdCzi@xgGr>Ij}<21=`+=RIlD{sxQlEt+t^D~<#``h=Tk9?4oLFL3!()s-MIkZbY z#TTXYZ=_QC%{R=;=I`;5Hh+I}5k*dr825u1chb2kf0OD{-aIV?qWbevF~|Z-tYEvc z;B8&@ZXPa5O-m~;&DS-Z`1E4=kY1Z{t=JX|h z?!^53U9*42@c zWIZQIcJAZ`(O#w6hinobHZ{q1&W@(~D$oj{a=SjXQiFm1H?Np@&kvWDgrk1TvqJj? z5(N1ATw1OK?(^wZX*<3yYsWAEWO`W*i}J^X2TTk=`mPa%Ow3H33f45$)0XnKMdW}j zjJ_k%nnr$cAy&f*7Ol0GW~**}uIjj#blsXegA5BSam)NCZ5azikv5#^e}MNNnUcIp zbolF~bx2x!ooWlTxdGbvG%0flQ(-ibG9{Z-LIOnd-AWlx(eZrClo9?xP6V5wAaXE? zL3Pq(q?%1to+A0x9LdgeD6zb+k+KrYBd*IL`;E}`WnRBCA?o^fi7hca)IHNEy=OxDSW)EQZ=z`#BeGUxK16@rrMW3@D)2g zEi9>Obt5p{8rJCCTwHH9(_fffu@k8_^0)R6frZGjWwd86q{`TMrn{*%x#GpXFJ0-5 zWPyv|vYQnygQ7`lGE5FZ&#AbuRATZCxkg#TRz5QlJ=M&~T7g{CG7;0`vC;{=rts4` z*_%;ZWR|(o1U65^-4#VbQ}%n&xBWi+QLIyu3qcAvdpgZo-x}v8yT%|Y%)FkEh47;I zmGJr_N?w)Oo@cqLvtyHv5VETN5ZK0qyRUR3dmK|V{n%Kbivy^VHTjNEknEZQhN0nzK)6Z}$4k9&f<^PXULN^OxJ$do0>`sKK*Eqj3i zuF_t>zMn|pJxT9w;BS@8D&4?eqN(atNue9~^U{sl+(3ac-c&a*F7P!q_lliB!dIIU z_ynZw#R>Ecw>g1~u|+OGda8uQb_Z}bVC|D~kYUulIe@5xXbP8i0QPgBZC^|BF#2^J z{rYhH>v{azuwUSRU*vyZ;(tHF|Gv!shV+-b(VGC&_hM%ptf@D!th8=nqZ}((?;?6X z)(NlMI^8mCPZcn_Hm$8sYsiG2*66XLvW!)oS0c2(17p~AXn$|6Q5S$t^tuN0xtJaY z^pkl&pJ-QTgzH7O5_o?k?s&`aUch4--r2#T5$0S@^^W+4l7A)Q>wF-xBe!Yb{{(N8 z<9A&=y<{I$L?Jz>tfwASp6Z?7_3h#}UT%cRj?XUMP$ESOjBkNy^O{^_GD40!eYJ70DeE!Ni5Ns!fx81ZSROV}9!d_dLa2qt$ zOPKHtw97p!7GYNuEnM4y;r5{6B!Y%%Ir2RR4N(WZ1`XdP>3Goa9s0$C2L9^@9W=~T z@Zyrb^x_r2B3g)F@^yTyOS;)|d~ipar{=VVE!%3-8dm0GpPnVTNlvma4v!k5P$Bci zYj>)j$RB3P5@;A0$%X-0ztGj&uD-Y{?yS$i<}!}()^ZXRx<;{EW)`@yWkr;5-b}fg zLopjgu3hOGuSV0ZABGO_Mp@U`Pa{`=*GV~`T3jSUaYyfr&utguL(!0FAQJihRwI$9gI*(%uai7H68SUw#Ul~^>jxc)+=~6|nq@+eLml2! zQ2Q;%9uu4kBqI3O6Y$ic+laQ*%YIDj7sNzbm$*pa=i5+h`klfSf{Aa%UGZSzY(ALS zljc--tISSa?e}w=<6tvvE@~7*#Mg;9eWNOIl##^$f_<=DCi!(tO+}UbDyd}BQu}G> zBB8`ZBGF+rtsat61q)@clwSVH&xrrcwUf1ulFx?)cJZbH@Cbk0;znPLya_{X$oox* z*$eWX#VF;FSIo2sa(Bl}wPWpBVC_H3$y4~$mrf$R`BB4LM&g~X>6+M;RFkQrd|Nq< z957hH1p9jt_zVM`cU!|H-y*o%S!Mir5opycNEUzrQdlXY_)0 zMw360V2IsIJ;R_4yL4>G#WN0(%WF8A-l*XYo~#<86ma0rW-_lvNBKOOvVSd2aWtVA zO|x`SBEQ*<{OSCwb5KDIjUoOUDavg*R}XB1z>x^s(pMt;dN;DiWB+yteu)d-85;;j zQpr%%MChtB22qn#G8Cy-FF_@h3`I>+M)_~4QQ5{Es8_*M*EvuTTQUdgJ*s!?qzIV} z5J5z*(bQ+btB9sPN56P9#eZ!_G^HL&DM6GsuarP;=9tad;9s-ehy}PD3&4N%DgfUf zTBaQ&0?W?vtI>e+BA6c>|DiKGQuwj|efzw&`OIx&>MaFN1Z*&YXKuI=`M~E!4J)XgLkaUbo1{ArIjhZ@ko0OLWY`?K) zL4Qa;Z23tkUS%w`R?y!*I%)tJF{pto`Z`KRFc4LPgdzT{2DDW{KD$eYIAC!~D_EYn zXNE6*xjuWdVtAhGRge!^a||4+g496I!m1cHCUli|787BcPh_!HVq=72d4Yvl>NT+0IJz0*CEUz; z{1g{8eWO)#E7%_&MdLUM0t+81>6Y9|s@Ou*@-5nL6@67|mQM$sKoH60P&7#};r2in zABj$4qhDB!tX5gJ90-R~a3<*&h+r3fp0JK>wb5G*L%tg)8eyo!<@r8927M-X3~c>x z!usntq~hW6qikQ(XeNstNIsnO(S)^wcbXLJnkdH~#r|w_9f_|EzU(4oS5ZyQ0BTl{ z0gvGc_^|*+bLN)$JE6~g-f}h9J(VQg-x_s~X{(dTUc|~J%LtY^4M4%18Ppw2+!35u zfLX*(Tp4DEVUzVrJUKDJ#p(pP`T7PM_tzVNzE&}@>%2od&xbfB3FjV!Y!Bb0wIX+E zeHJU&l1*DHj$75GY7ZkN82n)1#e9R7xe8JHBF>T7;O9b##UcU*Hefw&)oLum1|%*_ z5K#E7rCc?uPPU8f^~GeQ^P4V)Fq!(2QNs*g2M4Bs6F@fDRfzNSixmThjyM&ZU`2?F zk$;x$muFDHR-I*mW*d09*0@CHK(S$gCYZjkM5N(am>U6()}eDnxZUgrQ?RT6K#OG# z$nz&0XA_xHTDr!I(c5x-LEpycP$^U&qC)X|%KlSwrGG+y_9Gw9-ba7FLYIGtKP@&w zb$RL@olC`QZ}6HMycY69j!-#ufa4!dV)enG+y%95`9*xx!pYd5M$Qw*NcnKO;j3nzO|ZPvC0-`O-#vFEUkZ$_ce8@yDjbAe+AJ+4SwtrnhM} zy=}AU>CUF7zZTn@wn46yy*U3xxJYP9ln~TJ^@RG;e|QZq2!R1t<@=I%;I;vTRkuYj2Oo*!L>w3lOauOS=mA;&GDhy{@Ew@c vSn3FPfOYt=V?i*+!%Xq+xR{&bZmUssS~W8L6+$m8Facysbfbs_YhwNnfEafU literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/sophia/index.doctree b/.doctrees/autoapi/lmflow/optim/sophia/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..56ffd4b485d9fcec95ec004bbd9cfee1eeddfacb GIT binary patch literal 16883 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 HRBrq)J36kT literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/optim/yogi/index.doctree b/.doctrees/autoapi/lmflow/optim/yogi/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6a77bbc11ba021b59e55af229012012bf3e42342 GIT binary patch literal 17001 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/pipeline/base_aligner/index.doctree b/.doctrees/autoapi/lmflow/pipeline/base_aligner/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..872ffa0a663fc7d70fca2ab719de1a250e3e82cb GIT binary patch literal 12504 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/pipeline/evaluator/index.doctree b/.doctrees/autoapi/lmflow/pipeline/evaluator/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..26a76def692c2735391296a46af5c17df6ab13b0 GIT binary patch literal 41337 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 E7fa?2Pyhe` literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/pipeline/finetuner/index.doctree b/.doctrees/autoapi/lmflow/pipeline/finetuner/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b2d6079e2b6d5ede1a9ecbfc2b55105ccf180a2c GIT binary patch literal 29804 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 An*aa+ literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/pipeline/inferencer/index.doctree b/.doctrees/autoapi/lmflow/pipeline/inferencer/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..54357cdb33768e59cb9b0fb06105d485b5696b14 GIT binary patch literal 112250 zcmd^o36xw%b*N=YBh6^HC3%sT7G5+Oq>&}dV2@=Hui$SaZz4E&Y4!BHneL~a?xq(l zfQ^^$Mex|0PfWu40kgyjn1jLKu!g_~&Pjk^2lI{D4E&ft0J9{JQ&WyuW#3T zt(hVJ`y994yjN9szg2bXR@JQw-+0tf^Nzy*f)&krsa!ocT9}xq)+W4WCs;gDE4HV- zYOC{x&c@q1H+P1E!A9Xgv(|1Dy-sixlqiB&m%z-YZ(_bTP8H(IVvdeC;!Yjm&{R9djd zJBZk@W$)|=TnFj}sNL$6Rt1Ckkd)H=U_er^J6M2lI=kEBg$a3?)83XwyIS=cTMpD3`?frP*JVJi`UenfZV`xWDYRR)LcP32Fl38j$QI2Ic%1MK zjy9S=-YHic-5xI;6)dE821f<6OQ!-krS-tS)8PLz;QtNq|3)MYxYH;TLBqjGgGECu)EbMv`fz{ZPr}aT{;DL4RRa=(G;c{g?hR+Px#Tr~to+*1A+qP|N2O4m*Jw07$9NGy63Q8ZWmF^WB*r@Tj6Ra}+$^+@P zQ#^AB{%f}D^;)ClP2?vEtwPglU61h+ zeK9C#B_*R5LzM&NiB_p|#Sm)KYk{|~0`a|0DNHX(84bM1Yyf+P@!G_pL`3H|Y6lWO zEJRlpuTy%CLMM2^SpCpgZQLK*o6ODJj_%%UG`Y&oy*Ciwhr#(St$Wo8a6$Ql&=D9Y z276`#t`hg6O1b4V3Kauj>93`Au1!X|qb>C_-7OXR10p0ix_+n=4Ac*82G(^vv-?1y zeF~)h3Ftk$I>lfB*a2Rx6AZg{Y8@D4V4dkgx!NgxC0GQ1p}Kd1`G`ZX1pf98LYGi1 zw>tOG=L3aCwR0GHl|y5qXW|D4;0OV5|kVEQ{RVv3fp-At8p^K3Lk`m_XEHWDSMLU9okn9a~D9@ zm44|6h)4eefX#aWo4>HJ8Sai=a8783!ez4NE{bUL{7RffY0Q{3;217_xwlFBYoHB|(V^b7Cj{Dq@CZD)i1|GOuo6E&e$u7BU!rIX=4CjK4$x@6&AjOR1UeZdRJ81jkb& zjfXGv917T}nn15*zW>?@)4JyC@V)))huT%}f>5@VA>v=g}tYTq8MZ5Ars zRLUcmTcMyDF5W_;Dvh5te=De|PUNke_+VQ@(3YH=g+otf^tjsW4ldV zEUD|<(NA;HF7yj%Iv5jzS*QkUbff<(w5=p-bn8YxPjcw)b-Q(=Ux#{Gy3sS3Zqy(W z?S5vv(gb72p`!m8Vu;<9;=6QR>62JPbfuq^l{xQ^a5klwA`P@lNv7HaTOXqyvhc$%rxm{M~IIWz|%LVZ6&Syt-(6!fQT>nG2ha

Cl1vd5-ZINw6qAh9G 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 SrqFW_O<;E=J-Zm;kN#hPkQPt? literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/pipeline/iterative_dpo_aligner/index.doctree b/.doctrees/autoapi/lmflow/pipeline/iterative_dpo_aligner/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6ec03ce4e8d61a401552c58bcb0718746eb96f62 GIT binary patch literal 52740 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 z z=h#oNJCmbl6zP5N)J$9s9tssz-lv$>xOGM4j#v(^Q1!Cs;Od76cSuy!iFYJMCh>kd z_{<`S_w%4mI`Qt9EXZtI{SaZbVA&M=Rghx;u80*1r`U3UqAB*bPzx-@{uexADKAr`RI7mlzpB4xn-yhDPO!pB;5E$N;oop8HTRuXs+{O z`Z#~e>1x&~nL3P%2VKK_sYFSA3vcU;cZfu}u(&8&i;Ggodn@c<*&LZ@^e7cD77)@d9Dr}19`h=rYo9H6MvxECd6PD8^Z<}}z* zKb%Hqo5ZkY7f0f4_$Rh!o9rasFFI7MYp$z$y=XHOzzzjqM@0pAW&rrvk~S%SJ^WI> zUDv0pcGF`wJ~I2lbw++Q75i!jywP{(J@`IWW8BzmOmG3&VtY<|E)ub1?DMyCPd42$ zTYBAW>eHf(dQ6{&+V3=bA+7F!>=(hHNKbSq%MRtRLnT%$4m2ah#hMrwtEm;!A9n4w zQ`G}ww||!BXic}SdHDRmmSeML2?qBCC4b1XJ*^%bSq1B$XrtHQw2e{^_>s5A;eU^R#ykwrv^_m``9Xi3t5>~dyHQ!3x1C1tpg#$(Ry13cs@>ps z!p{1e`4zpcvn!S3re{=`<$@SMNpwI{W)~(Ly=6P_vU~lQ4vJjuj~g1?T`o?C{Ehme z3HtLiukA)xhidvysLbgcnb#$Y0PzJC%*8mmOL8ic8SJ#>gZEZmZjo09OwcZT;GaY!zf>VQcFSPV#4ak^G zvBLnxc@PscV%DT77{mUg*7od5bje?Bf}yRewHvKUXpEp(cEJRoJ53FOfmwe&yTZ&I zXFs~sa`iSmqGhpxrnEs{Y}xS3i+E3FB~`C-%ydm|tn1;`4z4x_uN)4!9FZUaz)gTK zF2I5z4hCH(nxRJo;Q;@e@Cb;wy2DVZH*vHYO!-In4zy#Jbrq zz2L?TJN(I(-h#)1iWhmHFcWxXP6OT%6#hAe=e69KJ$vA?TW+2347*vjodv+s+1QdX z04*z?-hk=xU^+(O`tbI`h@k@OUK}{t`JnK8OWP_NeZZP2HPkG+-&%V|a}^ z5F7KfIY3d(GlCm<+Jr!Mcs6KjAhs z0NNYdfNB>MbtXIKrtGxbsX8^v{=plVCk| z6`nu~HXzo8GjO4B+jFUAW&>@vZfhKjgKRMZlWELBzTkQ%fCEFEtw8pNF;6;91vfhR+_dfiX0Iz9{;m4=( z<7xa@#4p|Z@qvY z-^GvDLS$myfgg{++v}}I@#97OcnLpt4#7tmKV1A+#E;M7$Mg6x0EvLK>>0JJ?<{(pAmCzSvI literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/pipeline/raft_aligner/index.doctree b/.doctrees/autoapi/lmflow/pipeline/raft_aligner/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..24aae3a182992e4627da135c37e9ed373c29c886 GIT binary patch literal 53167 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 YYP(EEwnTn%yiCDC_)*Gz+6%M)A9E@sE&u=k literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/pipeline/rm_inferencer/index.doctree b/.doctrees/autoapi/lmflow/pipeline/rm_inferencer/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a255bfb44d57ed227081f232a01cc19600306219 GIT binary patch literal 61288 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 TqUKLlahVVv6{Dc;^5Xvkml3NH literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/pipeline/rm_tuner/index.doctree b/.doctrees/autoapi/lmflow/pipeline/rm_tuner/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..564a3ae66742673e810e6fa58ab6007f65c8a2ad GIT binary patch literal 22665 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 VH1Jj_cVf#Q07K+fev5DZ{{gg%oFxDN literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/pipeline/utils/dpov2_trainer/index.doctree b/.doctrees/autoapi/lmflow/pipeline/utils/dpov2_trainer/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c54b2d2e5e1172fedb592f68d9e47d2d5feeaa61 GIT binary patch literal 89960 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/pipeline/utils/index.doctree b/.doctrees/autoapi/lmflow/pipeline/utils/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3e53dab839bc222b2fca14dbc7b8fed52caf9e5f GIT binary patch literal 3819 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.doctree b/.doctrees/autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4d1a43cadca23abe3c54795deca677ad7ea5449c GIT binary patch literal 9704 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 Fe*r2g;X42T literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/pipeline/utils/peft_trainer/index.doctree b/.doctrees/autoapi/lmflow/pipeline/utils/peft_trainer/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a1d870b5c594252d3d4aad0161353752bb15e11a GIT binary patch literal 28064 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±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%0AANy17^iPGIYYFuZpbO~ z&IO1;zX}`Q8+Y|s7n1Cjl;eCIY_vI_5PtgXa zgw9kzj2}sV;zX{!U+3$Xf|#^EHGNx&uFJ50i`)-&1G;4g<7Y2Y+L+ok_Qa_S4sJs+=Dc!AIF(uqOl-RwQd&s>T8Hl`T?6p?y zdzdYrxKlp3kn<`3@?!irhfpt+lDrL@Vt@;IzMp^ud4^G)LEZ;^D z{8r{M)=)-n{*TmO;H;F32^j#u*a<9u9gl^*+vB8;DuwOzwrPbWgd!Rw1FN&JO54l_ zuU#)42_ELY_w3|z?WIw3&NI=fUlGuM25!4TSf3S|H_vKL9Ob`fp*Sktc~50O;QHpo zXutKQ%YDF3G4;w;5km9=#BwC329v;-t)^{r!6^RJR}YiR1s6r;I}?u%U6R#oUPZ1? z14uM{-mkXa=GsVpmqLa%EOS4tu!hDW!tfCEWd&NHZpLoktHYif>b6g30d}#49z+Y5 zDSL*(9Sj=w%6Gncvhk#^bb|zyIh(J5_Wxt=y#uN4`~UGsMH)KEkwj#aaioxul8lhe zv7OB9y%I@Lc9}=ABJ0>PGn2itx0F3AM0UUDyX)%u+@Je%b$##8_uudDzwT~V$9cbA z@7L@3e5|L#x;(L%?~0*@tmQN$I2A%M^oA=PI{C&|4>+qs{cRbKTIroH z5zm_FjWgT$iXUm*7od2=LnC^4S&5TA(@DGG>?M;%Z_3PvJu%89;c?s3j13dj@7`R< zJTkngWA_Qy-3XI0Lc*MTyywJd!7!0O!S(qp&gy)wo(krJG)DgxCOSY+A$EE7jYMDR znY`u#Oich!*!M4P(?X5nUIlg&%M+R8ns2n@gjK%yW8Rq95#6?XscHB2x)Pn;3!9f} zcJqOXZQA&a!7|n7BV)K_^zJM&aF$a>lfELXf-?veWRav=I!(rRfKCR z^zjIxwQa83>D_zBEsu7*sB60Gpm?W6&&rpt#6-YUm#uVI9%#{Q(sZZsh%vLbJoJRP zGsylX%JDru3;K03ouZHz^7N zJY4CtRy`L6ed?wqvbug=60|+Ba5c0wq@H!MB%USGe*-`b81(k+Ph>5gZwNO#Tajrq;pawa{3%)eN zAxdimOSFbzFh8qeqOKhtW*pdY6!z;c>EpQGmD(?o5;fbdNf^G$BMe)4o+DA3ym-#4 zCs@nPKacM?v9t|yT+tGDL{lWNGs-v%%$pR#XuVJHr%x^5|2o$5Iw2o2rz2Vzj}+YuA7(RDisKM0x<#X} z6L>sOTXiRq*4cV9)vE(#K=AN!FL_F^lxAY*?h`vMODWoK=PH<$@N~*$D_wTt+txky zw-H?BbSqD%&iMK;2RX7wara7jRlpDtul{^RU7^$2-7MXg-3EFzzs)^4aN0pZ5I}D8 z`-2_*>1#Sxmup2(w(M71_n`!3KBn6W3AGYMRoYd)-wiBWY|+~hUc1aDDRe(3?8a=G zPDxK?>bvFg;JNplGv28yaC51?TW}oAqLCPUoH7{Q)L{~&aw?=s&LG??!$_^irEj)B z+s$-at+E()b@RZ&noE3GVwXS$!Onp^V9#G0<=>9csvPDA6gK@>;eAh#z2o^(RD{Z# z$t-wAdMpDghrQ`0(22Qj=-GmwKfEM^58Zdvx7tuO$0AT(v`$eB~O~J4=CYle`k>4Y`rdeXaDbE#N zYLC*A5;!q3!2xp_9Iu`=h>xk@Lijd1 z16mVEKRxA&p|wm1Zg@HCZLlPkvXdCC>RVyxu1r9SGFJ3nnsgTqd4CnqT`ZgtilZtJ~Q0GBJrP7jOS=1zI| z?Ph$rY(>D`?G4l$J#l%e8%DXUc*P^!uC|!QyIJ~WoyCN2%wDaZVc-_&+pLUIs;x9G z>sX%Y0y_=Tndamt>uKR8IjUC#``T!G;|x5UCudtXoSK8X6iP!1%JL|LtbFNFYvy&HISmgPZ+-%(zcUbew2vn0!$Y4#UQ*PkF;zeJqizAJ{;55~z7Q7xG zx__TmF8(+goe;@IW`a@4Lxvcb(h!t$9h%)`-|-0ALQNRO)ny9($(ytzS^|?R3I3Ri zxQfonx4G#yJp7)c6L8(E-!Ty`q@9^x@%@N z*{glXgm9oh2mQdg(d@){IHT$|=3D_dQO|d(-<=GXwPlwLtcCw+8UQYn>==hmsVNx} z=SG<|8@=a?P`^*fyseKOI5#R_;XLFtm9tB`Rmv`J-BzR(6#aNGyzb%;ABKB9mO3JL zFnf4$gx=viyO9#YpsLO*OS+j4t==0>FplYk$GV=CEZ?U0;21J3$t=C1#rEAjUqW4} zT>bqMBlulj^hT5xNj~82m1;cur3D0I-VxX&vp*iA{!OPsL5(G$AU={lmz?wS)VV-O zX81N-%ms7<7TNymaOFPNWs$MSfz#gU-i{x87PWqL!c4X_L%f$2>Vd;FQ}n>?M~7SR z)K(|+PahK(sQ%y+z|=$wH2(bt}`DAb3sOI9Q71k6nk{KNX67jylsC1 zMGll2n7qL(u~HKE@w!I(r4%c&#WdtmAK)cJ_sQ;& z8&0sC(0l1kl?MVZhTUP&)DlNoEwi+wHxtbF3>o6J!qd$!Z@5__m&4-08G`=6i{*lY zLskNI(J`b%2WZG~7l(#v;!SCPfG?VMQHB1v2}fw8;+S0#ZNK=icC8C*><;ID9T_Eo zuf6{)5dO!BaYljV0Y%O&uRlA`sxxQ5LSTS*yf{@T->}U)-DzDa+vI4wrW`A#>sV(i zkT@JR*N4nOTTYX3Q4yRVhD6UbccewiE71+gM*#*tb1J!ACl;IEbK25{kUvLifn-aFr4^O@gv32gT$nD~no5wDKm{(o<0%iR%yKf|vKMw>^oG^RdQhrGXuE}LQ!1jZ z0OXgm3e0JfKLALZ{2(|A=eBhkBDRy6Hae>ucLi<8bsF&sw-8ZRX>>E)n-Ag)$DVLK zeNq0x3V5(@r0jBwf;h~@l7dn?o%=A8N5Z|BI!E$TvnRX_9!y17B8CMG>}2jub`=;* z)_Xe_j7tb1Xk-)!l}^Q&&89eAKy-;{B9Q^{Jy z6y?_Vm3B40|4jqehTX*B6+-Sk2u+ruX4l_e9&R>v+rhwV+UL?ncb_aFH<`P zoBZRg8d2Zf$a*JaNSzyR47}Sna|~ZsB&Q=}ukI1F6BAM7;$Ax0V4H8Ib}+Fp@r|SH zor+h5nFO64Mhp9T&L7G2+aC`!?t5_9;A_&;P=BJt^398Hb*dc%KTMJeo!&a})MMsY z82}8lmQRcJCeg;U>8XY%)_)`={as~$NQjtkLHd>_!=9f%aUTV0tFBi^Vu`Q#;s6eRKGC~3luKLjJc$kV$kc$jEStVE{r7XR=mkc3X2fUaZ~cNql(@91;<9IL#%oawbs*C zxad-2-5Wnzc|SmcO+u40}9dpe9#WFyy|_|jVtqIK{V()8iy z^PcDuWV8tvi%`UyAuo?feER0x!0;qrH7nZ6x-e$#shuX2ZcR&0&e7hqcx^kWckzJz zJ4Qje&C=4U?+#sJ!i{lD!u#AxA--~fQ7M5iIp;+}IE6x=T1OV8JZoF#T-{F0 zRF$!ur8Brdk8qG%j*9GVq_RfI(Lk^9$&{RDb&CrOCzm>P3=736)dd8<;;{&pG zA!eLwk&`B49vpB&nV^?!#HY%l$WL(Q?o4udNI{;2Q%Fz#a05Z?!I>d4DlwTk8N916$w>j#*9Hw>@KVm~s~e4Qi?^rb5fze`a6#>SAFh3)- zN!1}w-37qNq;Ra}d6+1rTC1GP<*)y9s2rJ5pbXbne>tP?%tANR3ESIa=*n}kLGBtq zoL2~DOIX2;~o2=@P+@@sP zqxDI?^D;qsVb7ng6l%O^v2}P8E`FZuG4q3FeYVwlxa7E@n4-{_P#IE+Z6a2hlxI}w z@f^gSO}9Vz8Vui(rRJ1yB;7b9xR^+D++AZaXZXBKGCXvH5L}08OBm_RURGYr2_04U z{5d{`m+d6SZ&9o!x_0v`(Wd(wQJ>q&b4qr~gWPe6((a0>FbTQwU2zK_*>&FKY?4e-@o^dX1JBFS{KpM z%-3ixO4DC3sl0+qZ#7v^)-iAEjZ~*wA(*L^b2@XEO=(OjM%W|3D`rvBz66F???S$z zY8lU((CIIfQYQ>5$2$7YA6tWn8ua&h?RyL7c;%$5vQkgSY$dceWAn zc*8q-j`6>6xf+t~$%2v|Ui*2oDShr2;16r5RpSFr^hG5TU(u^ORvS&)H}7CNxzUx8 z{xoya3tUZ$2>1-$#;|s@5vK4W`f%OqE~|pn5cr&Rhx`_X?gGxNUF8T`K8ie}MO!AOemeo|(e#lu_1fKB{uKMDbDt{4;A?5SX(}7%5(|IHD*p<4d`h(PoWH+KOKtL$3=KNbZ(duS z`o4bp*V@et^5Fvq7Qa1>4utHK=j2xt7n|i5r4~iq<7c{AbY}DjDHV2BrWfmc1*Rg; zb|Q%|t=^7P#HuTkwXL<(9Zo$s?Nn2QN--37Z^w)Ct{z)84diaBTuv7ZSH5STZrX7* z{~C-)>8U;Dxs7ApNhDk)xZH;{p&^*%N4J5!yG;GEaCU64A;sUiMf~Ow_1A7<17q@jj1t$4{kiuAJ6zypCFLA5QghX*N(Nff5G-x^|{VR zEZ_ysf=?!WHt#LG-(ASLI{C5SL1=YH(Q&|wRbov%vA$p8(HIy&_#=rc_e5Q z%j{%vjkh0{P%T%mI#rugLp}^Z^S*gQk7=gU-^}+slST8`4c{|ixN_2n9QnRRBZl~~ zunSTiD3%>)LwLw)zNO$-QHs2FuE9uS@2#HLv5^qBoDVTB643*=u|2*An7ZeD?VHUC zK{$2!&|E~;t?KB}?WxNQ50yU*cScEZ0Jkd>rKNtT!(VH4-mbi9A%bMwyF_<;UR_kQ z=aCn7P&zV1oE1eZ?Uk_JEJw`e8{wug<1&!7sZ7UYs95^!qqt}-hs$~0xFIjCx;%)v zIVVO+kS`!B*yr1bWEB?cIu10!;=}&zS8glie$E;wL#I7{UIXflQG3kc#^qwSco*rbAXgQuCfl ztFtI3l6cO^qex6SmM8UYn4HC+4$8QM)@NxymfJGH<&y#TRgU79(dNu;MI!QFUpZ3* z^tW}3+GItaKJi+7Q7@khnp$8dbE>lF{RMU z3SW(Gs5esvEJzB?pmSo8Ev2IkYY_PPY_}E9cPZ^`rvz>l`hzBJcIhn)#J%?~0UM>Z z+Mm58fwL0+e43dUTM=eWhG&jeJuO9{P1Q7QcR0*0U+9UWW{{h(*6**8Ru~OnA+i6@ z5~}J9^BKihUD~Z>BL<()ef+)zrbDJoYiwv`F832pbPJ_jm^-wFiC&KNHLpe&xmhZbM(*UR_Dh(e-%Z$PgsERuyNa1UABVooJ>wgC zAvZYnB98q&>XKj57$v&LlX^B=^?8jfS5!FtqKwb0Z#9a;lyPm1=XGoQTFxIGV_Y(7 zd$j!0siTYUr7Ko|@<~(1_Kdu3KAU8lGL<9S5uNPqIZd)3HBy$?EXDGMrU__A>89N^ zTndumoWmSV}?m%5NyU35<_gITQEF>N<9X2{F zVfUfQ*3iRpXpvrZO|eIc?n{`n!0PMaQO(t-a+@Z&0muI*k`0QCU%=_+J1e7aP3+uvh=jp`$J)X#4 z<<{hJ>@}Me`K#0a{cnzxP~FExNY&pzI{WKQsk`VI7NTSGb|0VXHfDhA%g=XN>39gL0SunE3Q+ z9z=;1%ZLKb5F1F%o#20s?w^09}53p{L1n0sBGF*PoDhOEg~{a zq6;G~?g0^M36Ng_v~(paq(cFpAa=MQECg}dTGmw={U=KzDl+)jcXXHg2y)L{WH>qk zE{SQPwk^P@ovY(<@2rSGR96(BVr%`ujAqb{3yT5SAf>{2_lGkaNlLJJ> zPAe!%Pw$w6Es?taIg9f@ug4*NWM^xKKV$e~n^d)*jW@c+929C)g~UsObb?a|AjBuy z*O^_yp4|{lgL!kch&T1z{4@4*`)E)khMo)YkB<0NB3PI39LdexUs(W{&}smtLg5$v zzKVRG=_qr|76|&0#6{~90rs+_Wl*!MK^$jK8wM2qg@~9FgeB@L26t{BUx!G{#V;N| zN)epD5O&9ljAjDvld zI$;H#q)(D*LCZ(j^~PY}_qWVzWXV-ogv+7JyBRPdb4Z7?QlFp^uzQ6V9$2`mb(}{| zP*vtDpaUEPrM0R4CWssdkjU5mf7dYfdS}mlM9v^!a$fKytaWaJ6(H}dw?2Pdqlv$oV(gm!RxoNtaCI<2~Jt;uuFzEq^lsmbM zB;a*it<}vU*rk>c9wlgj-W?H8vb#DCsBIyGwvTNn|4_OQWXF5VrwL@jbU&?qOUKvf zD?ODM@Iq>8OaiVnJ^)|+^lHMmaaMmHFE&lqZwTx-mLLnyJ!u^I7Q~!VL+~bB_?=HS zp^{zqfaApJ-QmkME-B_ckI`Bd+z7>F0cTSo0O;Mw;40Fg)T8+UWoXtO`p+OjQMcNF zwevIT=Cy*xaiQZ2PlW$~>wIQkqWaJ=Vkf~~hl|G8p2B@8p?0ZRl7Td;2HFc~0=mGX z)!d9cN*VCmRn2~alb>i6az69iPd$AVP`%_eHksFEqfyg55hr3I(7TYOs(WhQ;q%bw zu2X<{tQdKU{otA9{PJNiyk z(t+yT3#qLbzCH&tzo^d&5XO>M9o&$FWH3Kz0ilBA{Q7hAHtPB#1>?!Z%Pf8FbVo9>)lpJ?(*%IZ?G-}L}YY5eBsx6JnMLRh9Jp7AJm=M7H~mZ zQ|b)e*NoLLH4RW5o|~7JF;WufzSjMvz~Qx6i?D6^iJzNT5ZS~+oKL2LVU<}Z(s4H_ z-GCjbQwK%}{kXC&8_}_DzD1Ot1`6_XuTu2#C=?vs!GIAS*@~{%&?Z6VdjJ=y~cekvye?~fajn1G?qItRycu84Vu263MMbXJr_F2RWt`Uf0z$OfMzI$xqPP+{-bz z)P{XqP0O-if-%YD4rYcxKAw;}k&rV{U6~K`ENjsq^|rkLl0H4r+ZRHP4e^(s&r;Pk zGbdc?nFrqr&iRA4hpjH{NQkywu-?dq+sB95n*3--acvA%*6R7i5+4?1YIui4t*T}J zzJkU~$*E?c4{!QeN*XXF4ctgY7u*Xcc?a_c?O4dMW3PU*FK42+)$9|2?Mc7C#%@<} z4(!dIPSe71#&K#bhY{zBm6!>}Pnxs>S!Isg2Cq%3uk~3T;krsNC`kJpz4^u;b+$~) zSf-id^{qEhQ<@pX)}2Q8v7j}RkqTGO!3>XC_Jj6(yn3)$cRaZ+0NOCYH0!i%Hk@E~ zq59{&htGcTP8qC203q#(@L^5USDD<(<5^8hkm{C%j5sV2;Vx0gt>-pB^hGL$t(vVa zO0K?zZP4k&WP9}Up;vW0XnoeA4<}dZe`+{0POT6UW{_~(Y} zwh6^EBci{~_!|!%cnOLtieN&-Btea>{gG-T&l#Uda`fQYW3n2g%%5723}F5*%{ERY zy_rSc585-kyw~MF`O9sDoax|f_Fj)SV~FpxGgk<{M%L%I;hZk@DLbhbzXkC;3Taw6sn$^#>sx^^OKQM+)5iq^I=xif;Fv zB~r!Te6#fIoXkU%Z`d#+?p-^o_2$HM#F$b^o1^ETpOzN+CqFTHBcf<8Ra91Sc-;im z(NHb>`HEWb^5&>a#z1#CPS$wI>MT^ds=FLiu7gBD*(n9~^>kT5!5*EQr$_NKcC z$vqlOLQNp)IgOmQJ=^(-_s>yP95RXVSc-45`zFB?vGS2h>_-2Kr$QqjPn4JUdLYgI zoy#|gsWWsBVP?2V*XLDDZgA)x)kUR*W{Cvxg74!&LYU=OZmJ`6cCkz$j^>%O&_l?W z-7`wDOA{s>T??nkA><}^abLohj}+>t3fNs`a>e({c|;v&Mzt)8xGV4Uajr~$47Yqu zp)e-j+E-h`!OHluu&yU5m>4KCXpzJ*a#Kl35>3}lUK;OJKs8Jp2@`_8FDr|eb{+bna`J4{+j8S<;aA;2k z7=E)~_7kXeA4-zpfHBBOa9;TCO`-5mwcrU>zZ7$Fw(17)WsR8-7uHh5$0a6_cSUW% z9`ZSFRg~R1(rfdgR!KF?-~u@jV&=k(bsk!PGFlE=S-qZ?Vy;60u~ftb0dc^Twxt#tuAlC2!L* zPjc1U{#v6$cEsTNh%ed4uwvxantADY<;TltwE?i%nNh$QufzhY$#Pu$<$04(pVwxkFBZ8m5A2QwWi}jyNB=yV>psLqsUsZV3{6o8DnpL zw-BsDFUXTyI4Pq1CC!$K+q+?4CCG+iN(yRIe+){E+6L=N?8jQ@(E-43tt!flU-jwe@C3Y) zl@EWrPjgDfPU6rQ;SH9~O~VlBEL!n10lN&bR+(9*(y9^f_Q@+gu@cTOb)7s;P%ip< z(lWs7JTf8M0WJ9%SMjZIqw~$-M@44G3FHMvIJq(-k8eqOt(ls=b)ApN z3T9`qnwH=yxLoiZe5T1p9GDFME5+gM5ucVDV|z`*4P;XcjN9%BS(Y~0O}G^+bi0v( zr6j-0wVP$dF~*AbYO%?%Hl-!>5i-p)!zlBXS?{D~pVlu$zhF2v&|B26CufiYTDJr~Ub-fK4^6>(i>KhJB zp5Zn6C`&1dJ~dGh-z}yr+xdH(=3--FMNa5yyeBBB9vV@xN$pA9L`H1LCNScNdxoVo zWF+*9;k|s~(#83>;86M(0b~xn&ppIcbh2EkoER&h=h z6NWy6Ov@o(Ukeoht^T-Q>S02{JUQs;DCQZX&nFL{xAdJMYSjA-w1PY7B?SUQP--qh zkza&NNEi+=+AcX!OA&|x^Q!FYVC1z-Pv2JwAx)!iA?cK$f`E;m=&Dzu< zrcsl{9sJn?fF2oIjqrH2)>gHO4O^A-)}0CzCR}#sc<_I?MoEuR->W+yMfMAwsyG9Y zNJnc>MHqe=WEiz8RNDqpw>j^mGSiHV>1;w7NhzcKh9bw5Dxc>oxbk|xmB|G_Q#vbo zZBr3{L3*f`Lub30&MKTM;=y8blIIBHZJj(sjuWP1iXJ%%(pQYkUbWhbT!$BWBSWMaJq{j9udQ-?n)x$>Jlr zl{$~h@+dyV^TZfMXoUDHzoAUzirC+)lwdHFcG_&iph)|qjKkJ@-w7(7P_1dd!X>Cp z_OWy3a!zGx>s~GJv-{?7azOt+l0C}MEVqP#I5-mfr%ORFT;!%bU$4m+kJFI-|FHHnSev9+_!yd>bTrWD*m#L7(yl_z7__{CG(y3fJC?0|(i^O^^ zhKr+hc#txmvpJpAO<<0~GR-{X*20m4bFqdPM*mAVmQhP!({MP z^>}`{3JZr#K;XKd#-!P0E9F8*59b*dHL7R?#roCxJ*Qa!o#$s>vDS((*IaeSEvqzc zgjGa9l6kZy$c3pDd4S691zazf;y8>*P{K|38^$2W~VJZp!mXCP7V)RYwG(l zi?$DDxDx`;2WVNyg3A56oy;pK%XfH5YuD^{Hrcj+=3p*-MNXV`N3kP+o;aLjZeQ+= z$|&FB7T<&>i{|l45{#6fr+yewfg)~V3>CYCUBpLoO~*j57)x=0KreG)5EOVEJsfSwBkn^CKpp#$tic55p)G?U#&`}BOkM+{ zB0Y>Fx5T?` zAZT?HCF}Tojsx(J^zkWNu2+LXU7M z2?s*5+AjCJxP8nZ#&Pzc1mdjLs!Opv1K<_Y8lPhf5}bKd>4?Zvd0te@}^ zGFUpM*j719#okXULB?ZoY)uT!VI^gE*@==PGTQ3zrt|f-NW~Mlr;!%k@AV84jRE?9 z*4pB(RF1h7fxt3LESDyxWMKlogU&5qFbX$01*5Rs zVobCryQ9AX#?Fi+d87^GRS8_vsL8yyM%M& zf%*SP)dQ6>-|NxcwW6tr_@5z+=pkfenHeVM0xqgYo6?|S!6e!_-C(MB*a9lWAXI7i znNp|)TlXEYjUjJt!87xqSGs+QZ`QQ|MP#q%S7OtkU91mJ=t+rs0@V~mVe%F&7+KwI z&|Ww4tFJvURek1XdJ2$Vf&8HEa#U7F7e=nV2SiGFG}__57TH_07X;t72vOTt@~~QQ2u%!eNmK2OkNqF@GY51&$aIQmladABVJX_ zTjysmgJ17 z=(oMDo6mr&>vI~mm9#$=Q9_+D^h#UAK>sswtBD8OlR4c<=bm zzgVDLUB&Xq464-CQO z&0K%^v&D7C0u9*wH#d<6es&acMuKCB&s$e~v-@^@G2H_{k^y@U%(oEZLm;lFkrd3r*-DQ9Q||uxAVmayvgF zkT91Ynk#X4!EjemPtbDcZojvXfF0k}qO#RVjuL zV}8}1!7|`Slw?m_x3Rmxn#m9ZJ(%U|#LTzp071h2-PFw;oX7gGLulH5Z(K%*+zb53 zWfr|Ek@e?g=19VHD0JqQD35PCxR=Tna7aE3Bv~K&)B~vXanZ9nGrf;R177XGdp1mW ze_d~}H(Cq#8X-@dI266KR?~f%m~=y3-f@!jR-4pk4tZBKaykvr?|ywkak>>c)8us~ z{6+wkNFQ_V8- z<#(f*9z9-SF*#vhl_ogz3K0 z29satM@4;6GLibn_T(xIK_QWbFdJ-6F{Ff+kcedGFg;c&Q90skI{eTuOj1AJSWf?J z&&!$^vr!aEnx9qg#o)8SJ6X;8Ls&N}$9CX2M>yu9D!ERWTY2X?4WornorE~T=U#P# zKur|thAuRL3^k7aI*0c~#6;XkxRk_+6}Fw^j&}Tr-A2s=yHmnkZt{i3naN3I zs71fttz1jzH5iey_^6D2NNDK*a6J^Ir5MnK;@?7b6znp;x1;u5W9nAA)|NHQl2xtSrRTft<$E#<~eG!Gn6`yEk{$s1!BvPy{F=DP=ci)BkBcQAU1QquPaQ?km7 z??#38y#`vUF;iCuKdW~&My5S<7%aRLCfD?`WFE93KAR0oyn}>tOORHxFgSX6dJ@Ba=lODOY?{YvO`5Ef4_8NiO^NU^o9|4z)qj7C{`%Vs zUl9?7i=$}JpJb}#v1gIu9;oIS@yeP@d3(b4k>|xm#B9Izkr$;TJLD&aP4Oe9Ba?IU zeXIG5BQotSr4wabr&2U(@*JnHc^JKhUg$@OUAsw#gB{<@)E<&)csI*Ee9l3~7R#Q@ zDuOUE5vqtguTbg?Pxm^1QmsPBVS%CXdYWv47dS= zmawfE+K8@pH;JFdyV0FFMbYZ`KxJvB*mKmHw9jCl+^z09RY{s_JaoQ^b#2BR;VEqM z$N{m@7dJN3y505S;Lia%MgqWz$TYMl!sy_W^^pq2K<0s^6%45k7i; zF6HZAze)T(Vt}8mIBH8FqIdwzaZe*(-81x}ennz<*RnfR(FsO|)a7MphPZ;xg6>rk z!_d2!2OLCAjPVi1eRgyI;ATQT;xQjUe>Y0+pFjQABbed!1pP!eGOSCTfJK|n_MvrM z-XgTs3nb4hz%EGUg;a`+a|MJHR`N%7xxhiG) z*8+&tlR(*JBs3myX#pxcpJFBH0)FOan%3p3$cdb>kqbi&rA3-|kyzw{1^EkaN%+8V zSd&);Ek!BP92M9vh}=GNyq!OD(jyLfWlg@7{!H6@K+NWV$ELr#?k@!H?|->NvLMxX zVqC7o_LrikozD~S#o-T7>_v%J*@=b938o=*kCAl{18Aih{E!K%>doJQ1vy2vhj~x; z)g#1@d>>?Jz+~h4!>=>euJouV^Imzv`qx_gt)A${BiN2F6`zI?|07@Zcl+$|d06gu z`D5q#{`n*R+I|0}$~try`MwguN(cY?zW=gB|M*AhWMo%&`K9##&A05Z}AqtQS znJ#{Z|84>P@mu^qwy*)J3?Cs~!USop+s{b;?^k#au`ttxT1w^q!1(AAPtos<0{?}Xo zL6r#e1t2GfARMrRb>LLGXcclqC`r33Q851A@%uM>@{etQNQD@Vydd{k8QfgxLZB+c z?YOW9H~%l>m+vCs5Yf}#pgjG*K1B9kgG1y|<&pD5|NBG4069c#CzT!k*H4mq8#zRF z1z(Z;=d1bW>2)ChDdg+IHfU@^FZJ%)TN0AAj0k|JeV(u>a9B`+ss_4~UcfROGI-Uj7+v2yuoM3KP$7 z{gP)QPwuwGF&9wXErML75YcKH$KIXF4dE30Qs{%ES=S+x#6SxWZsm}%M(1EE z02&wt7-&0c6cj$zh(={G^7PLmBQ>@PM2J=pZ7nT!<^7eFe(3QO+!<^BFllp=MT0rn zshW(nAJYErAW2otInfLEhz&}wKCaeou`a2w#=mNJCPAdI)E++&g)<|2c3B=GQgp|k z;r@N8Fte9<2Sefp(!2$b02UxQmwHPPxchgvAk(VntM=N@j8+KVX?fx}1k7Dc#rN_r z13t&j&TXe(aaqW%UjRTjL%amEHbcbZ91231FUV*XBx=&@JFvMl8!up%>{zje21~4q zKEm5JDXumy!IQ9tSv^U}Yy@7SQBVaM0&f_)Gr@Xo);6l1?p{U=U^NW8S`Zq!2%6Z( zv!6Ei9=&qgV|$!l_Gm9x<+dHr6-#Eee$B@uY4woIJBx2K9cz#vF#!5SMWOdcey*qk zvkmy>29T+$S*)7t2x7(uT1QDApd1G2?oI^z+*s*D^weY0a)GkM(B%YW0``ieRtB{i zN|6&&%p4$w(8Fj%N1e>Q0V0>hC$!HDgRA?-VV)@u(> z%ia-T`U)wRNIJPWqG+9cRQF4?O%#0jBGG@po&T#E6^TzF+0-Fj2LbE{B;j?duX6Xq zUAjxg0a9g`LAG6=TcZyK3%llJT9}`_2I4oCYDC}6!Y~9TWK=!sIl@b`kW0ExGDY&k z6vA5x5+x96ID`Rz$m7Oe!dj+?#&E|nL@9{@=s$`&QJqTs3>}P5sep%m2MKxXhd7(T z3m@2oxk?u<4uOu(vhL&^9x`qo=9>5-F{71CdVNweul?T+K-BT5` z6Ht=ax1`}Vn$+^}v&_>VGe&o*R{~(^{R14f$5*~$wJePgShg=@1cVz-i(icu@Y{gnZ_KB?ZQ7bCqrs_@*&>!plYS{4w7SfFK z8OOwIZ5xczJSEc>4FOiUhpa#eDJetr9$?*ErjJ0%ok+M|-o61lc7O}(N#iSZaA0xu zGj#JNuEiCgV;BUHM%UzK0tBov!hY^eeE}ykM}$;F(pzS{b|*qG2)@*pDxO?lyUZW<9fAgQ;6aT<#lzo7T#yA?35Eb&lYce-8k!9^q@V9ZrxpsP#} zA}Nwh3zU!e?f@;Ijrb=R%OT&nnkS{PDd98cH^m1T3v7!gu<9@M1}oQVxfWn*8?VL; zLMF)CntWgv()g@;#VEaW(q>0B$nL6P!7>uOW8MIxQ41ScVm6-?e2*j?D&|g#2t3; z*`8+Tvm@85CGag_mJot)ct~ zaet|UWq>>iQ>u1hzmN-LgnH5U{OC(7R}%zsd) z8uhbE@MSreK9`q@Nf~8DxuZvboVV7Lt0*=sYn%U|ZMhCw_khCWE9OTufKpE=mxVjK z*2HX!X0$tQk_S6`HXcB$ejeul@Fd-rH2u*3rzap)N3BPW+kFSqFkUejH#A68X3@RlKiFTnyP8dHz~eFVh$67k{ZkXzh4uIbO%gFuY2|5O*yHS4 zL5|vF3uxaEglUXxSP_#ZaTsw&oaXU@%bjY6zu)Lb(R}QxVq*YB(e%( z{6{qpy3W3$Cp(yqf0*g@0N&&~Wo2)`q^0jW3>vyK9Q>ScyX)xA^q^+m#YpIfIE8i@ zvitkGdS>851L@kQ@sh53&Y&Up=2zxA6Ml53p>ywjU(RnKDiP>YJyN9`yUDbFJ>AGR=5*onoOqnM$8grBb8$hxxclj@3r&G z6=PSSsv8r}$O?9`1P&@_NpsAlHJd#%KO_dKR(D3y#*OyvGuM5@E;fa7tg+F%+Gd?{ z^HpRz)DfMv9j3!N`RoLa>>_hmNW2G>XXJDQ@)51n*l%w=3y~|e<;mnXkQ$6cP9wVX zbx*cj{jCU&1pwAA56Alo**$b+zWX85(t^NjmBCQ>N6A2ZR~H z^OD@LPTzZUjWRW>d3>Y4dHOV60=S_!VSCZqXQj*dwozmSB($Z2QjnduS z%}@gazh}PhdC&Q+BY){yx|TD0Kl|SIbzPr}A8{1O?pXBtRV%vO$FaU_3QYDnL~LQw z>L#|pA+cxj5UaP)>j!in90wh_PiMTqI|zM717BRCD&3<~)>F>0d}*_X9txJT-3l*Q zRm%Oz9#*=8I35}U+fltu@-Xa`8C`Vz8Mt4USZq|(rWUN|5)@DCfk2cTAEoX!kyz*v zj`ax(OeI>g8%29&1jCb=4Xh0y7xt`OWJ=jee)%Pe!+h-p>5p*MMrRgJ?%~9!j;c>2 z+h33(Ii5^Ih1=VvVpmBX0HR$iQ|1~|r@oTo|NY@3^G3}k`OU)00;1Tf?{sfO6ovC` z&%Ln-gFLEj?%~D7FGq>XVJdiV<+*EY8B6G5%I1|d{ve=GZr8C=N4-X=E@z=T2HS%L z^FeA~&uMR5E+RjKcW7US{dYVvYMm@NOdVcfwmRCWHr{NfejUGa;HfvJ!``_UfvWc$ z4SYGi`NU^`?!~;>wL0a*fuV@k8~udV>Lfg&uCbYtP7063%%k@x&GY9JrVNOuf+EkO z?*Nx<_zndhL-x~%mq2VoiFipDR45NTA{0Js-5hA}iXx#b;m`E^43^G;;`NEjdr%Nn zbOMK6`($B-f>GS^i17CnMUMLRcrf9iO=T`(Z~95P&}$cDig)Kfq5Zl)AhLOrsQ&^S zc5lyXUDu0Dr_~3zQM&6sQO*08r&sdufoBe4Xv8J(7K=;_*CkyYv<@6C4rHz8gZx&D z24rq$2g@97Gxte{3?8_c^Hx!;(YWmn#V9uTFL~DEfAc)utP(9UBT>gf6Z)tJuIw9K z1IjkM`0=V`o@;o2=~j-=~d3(F}LN) zH+in0S_|z^WA++Ky@t6y3u`G>;5e4I-pg9&t8u!PaXjv+*jv4pF|q3->1ioaF0E6( zc?hfTX1G*b46wb~)@-?-egk1>D|%h$%~fAcccaE^SRkkc?7Ds~e}WGE!M+Bpr4UZL zTjTuUyT16#qGo9&XQ zWR;WT8>d35&h;o)1e02y_TSt=*A6-uH&aStZ5p6 zT1i!JfX;dV+%@n*0Cw1TC=wFt9=YawYsS|QIgA3J@V60mI(t;Vyx9r~dNcO1)J-`) zm4x=*A`_t!fSO3LpR9+#P zWX&5O4DVQ58f?fk$&A}kSuMs&)+nxe#`-$43I1HSPh{fbGGhx?l1VCJ8XgUCL%9_U zw@wh;+eyaDF1Dco-ND4!`xc{-_^aE!S$>9d!NHT}#k>9Wi_e!w>q;tQjjB4a$CRC{ z*EqMkp%mDrR_dn51Mo|JZTbE54IU+!IAR{musQWIF^M{o>Q=I;3!2+*! zFi&sB%vaA^Kxbs_(P#RC(9VuGFqhj}0CP}ub10cnqxuywJ{diZGD`0=z6&>Vy*NvK zxghc_YZ1R?t*C>oI{NuO*-@|3@<}e)RM%aPlI-{*s+ME?liGFfb{due3jH>h3}^}cX2VHy)=b|PHvRWbu*4-p2|xdJVECIx#cl>+i|9m}}wWD4p|k!)Ls%={fcCMtW1`dPhX; z!@!VBw)9BPzPR%N*;GDIB*n~WoR%Eyj!fp()aQssWqQ$zVIN++&Dv^Dp$lB5XSawH zTCoJ{xUhZb%dSmK6;df z4Gi0ydi$TkID~4+$uU`KogZgsR*Jvo3}+OMI+V+Pd=HN7HE-4sK(y8EzUWdk$QRy( zy`555CtQ;_Nn6ja3{r48EOT3KU9f*KUv%`+Qe3~V;2`uiL8yYr~11*e7q&|?x!1bFbTtG)SYT~&O&HD5+nbLcJB6t zD=hy?>{R65_fcgEfzu%nq%?e|y8x0Pd3k~{o7KCc1B|V2evP5Dzrdl3EXC77+D#D_ zp_Z``{*E%~Sb4AOWOg7YudeeJATs$#4Yxr#3APOF3bu6Xdd{QIAWkFj4Fod@_$hKn}O`nl3Qj0+T0={F1@vjm8&VJAo~E(tb4yUi=mg3#bS41Ezs&y>x1_FDzo5+dYrMa{#L#|Pobd4-X7 zOn@|81v-nE^#w)NMei-2e)y_qwxd_>?lr;AaqT82J|NHVYNAVd4%NS-`_~@;BSNqd z)^MnsS|Psl{X2K?LlmSX)YcGLRh>Gslk}Mj2xLi)fMUyQ#L~IJ7q&>xiMo!{-+GUZ zZ}l5`QX@JN9 z{jnyZV|R-&M~`j?=5=}3yKPINwt0F~aXbBHD|8^eZazez*Y?xlaHvkxqp>?BJQtNh z3Zw)S_1DK{X^!KCM>db(oG(s4E5<8*{!bhF-y5hhUbAZPZI}vC;c59AAc3>EcHKnF z(LCWKLbPSZjntLketf8Y8W&@rcT&KqOmPBt=^qW%Yg+7Xi!u}ixj{Yut8ax0n2EA* zbH!qoP`Q6P%*%d0Zwa;d-v}@gTC5qv-o&@7t!IN&Z3q9%TmnP`%JM(qrLUYSV)bl48W#VDXpq}wTkS-smdUSL;COP|@Dut)h9?J#0 zyp-$N_8fx`@V#q(v&dB%$!5<%W4|g42af<;oVTLG@19y*)m13dw(wEimu!W5 zT10pp=T4HKFI*9Y7%ma|%#Dd*=FLk-p@^$Br-IYDm+GT(;Enm4RzV!7rF?(3%W#3=^veOP! zM>3kovOXTT3-AlI;B}w3pBikY*FPDZ;392xuJaFXhWq=$a>oAoN{8w?(X55-KcwPZAvb$C99j`-+(DUSAXo&A|75pS>n;*t|PjzRk6_Cb-knbK3Q9q%S*-T zCa?6eGG~3cF)_grx|AKyp#Yvax7-iy)3mquzR8{qQh8l01*ULr#Wro%+!zea`j*zq zv?luPz@6;5-T;H0&bd6&qFspWk3L6|m-hz_mI8cDka-kLv()|k*s9CRyTc=STHT4m z|M@M~@0uBFA^RO8U8HyD{l8)?!A=K#`RjcY){bTQH)}-L|4P`#zHR}r;WMDZaBw6EqTnn=dLeX&Mh!LpEI5%4c-SVhAc{l-t9^nove9V+_3qDzM;G!{Baj~09W40>E#{L6|;FswsCD! zJ*Kf9|Ie_v*VD*;X3M7DXK>(o8GL;iu;9sTq-WGUkQ1!}iVtdCow97zJX*!rEy=%= zDA!JZ;s^`hpbn86V1E%{Haq@27VNZNtlQ36nA12Y;#IFAv#HQksFx2XkKEfjJgTeS z?_J2TaBJ3ol^S`T{;^-o;6>b@uij2TvU9pO-h&cP=srZRG2amTq|g6+@yZ%(F+(>h z8xsDU68YSA%~P*PS7Lp*xcZVXJVD4UlyWACk~E<~u_onCI9f3`anVKsg2^6>SL;*r))r8yTD!Vpqsnc1k$e4)6>1;VG5xsKVMdU$qo9b9BsaKaFsw5 zwwqe<^I`t=3wq~5Q#~#P*7LFqs+-!{T2?v+o1^3HODw`NAD}uj4y)*O<+X`Fx zF4xAj*(m?ue?Ny%-1WFQkIoJAMXXlA%!F>8nLbZKH8*vgq4@Z_ixHMMJ?Y5f<8O3Q z+Bm*v*a`G4TNEc|H`j_j}W@wWXciD@0YYtLFb zu8@+F@`MW0Uvi_m^G-Ro`Kb4YgNZy$?A)1tHhj;v)S#!uC-qA!EA%qoORW={-8+d| z2TZUqd@@!jCWX(jY2pN!E_$@EX%m`t{Hic;i3kaKoJq`FDT1l(nFIv{E=kMByuDe& z1(=cJmsL%5VM|5f1EJ|_o^67hjXLcDKMQtEbISAYlw#(cs^~mTJbh}gSE1m&^6%g4 z@qFyp6gl7*Ha4Y}f~xWA-&?wq1->W*4-x~fo8^;Odfef|%;?<|S%=Z?_~e}oY-}~B z0#UA#xwG0%AM}q5KNly2i>GMazLK{`&~-Ui+>+PXN7U${Zs)uP=HXb=uU{$WG1fw7 z)Nb-H9-VUW*9bLJ77Pd9iz!N8US2y0ZKf-=PM+{!Eh=+W&LCqS=ii{)QQqX_5wrDq zVG7M&{g2zZg@uiq#+H^1T7m1@jiYBu^k;-O4>6LjDZdd-4j>ku#CtTQk~EwO3k$E> zTb_TphOJ9s%wWwB7R9x{$ha z`HbN!zp(IM35c)BW$s_H-^mVErc244=`)Tfsr0)ty88P06B83uRZFv7)~3SPwjQ3I z>)srWDV(OJrokdse^0qPQ(LuxU3#uDM4R`RTp;q~RO_}gFXiITId(BQpUKhk^0FZv z<&|-ofDF^)q^yUYF9na;o2!QljzQ;wNm^OhV;;^a4?68Pbj%F1@AUNtc-k8Fa7xxO z$GoJRwbUyPR|a1eE!mATBwS$jaP_EQ8=iz$`a~tTH+dLI!S6e}ySeq937#2ZtYV7Z z)f(r0v=>?7m6)&{{W-vDI??qY8M``V!UI*%cPjG5Bu$!oHQArtQpkN|V`F2g6LE2o zxK_WYYq7Vzz1^42#--$K3A@5biN4ed3Li{=Gfqeo^L+JRA_9SkMG@rnr=_LsuAH+6 zJsCLtBQ#BNw|(5Wg(o3BBje{^KIIa!oluV%w~^XU6sqF|ZUjkMEh|wQupKF(hZsr9 zG6T=OI5{~_gwObXudHScSl%lq^x*A*9h8ODYzF9V_lNHvFnd@dj|YYmy2vAC*4q=^ zxCNBNND8(a=>-CSHI3E!U++C~3drZ-BFmPP1T3#RckbNYnlgq`{4b$vHx0Lu@#W>Y zAB#FMySKM@_KPiFdHtdw&~nN_+jI|)1+NZ22tkLhk^4+hE~<#*wZCqBX{EQky5^(b zAx#M`83!lHCj&icN%s8=rU&)sqL=RbX#%P|J)Fwv49cD^%OM!}{q@VBnXg!BjQY#0 z%Hdxk&qKdqQ_+*8fk*i4<>Ff+Ubeu!%P9(q2(B_*X8}S!WTJ8XWe3^-j-G5e&>Ud0 zmaDmg5Oi6AD_X56L{Psiwx=DTDET_&R zq&E;383Ek}Qxo`PI)2TcmKr9R#H&m#S7(6cwds7cts{gj>ATk}7qs_e_aYBit=0O{ z1Rn*$9b-W)oH~^$XG@_NLLdEpv5RqvH)& z@iim@eIyhZpYu`vn-^4qevM#r2rY51G54a4h-&_HLAFr45a10nz;g%{uk|2>E&zCzYB9i4A^Cuw zy+hu1OBjimun$CEu7c^Uo&C^-KQuIfKn_$qIQk0&Q@vfV@;;*PK=)%BqGh&n4|WjO zzl&n&EJxR3H~$=d_4KjocO?}{kBehqA%9m4)YuLnzT}(N0Tlh8nGO5 z4(=nKNA17noszZ%IUdFkpdbHCSCkKG_doIttDqVD+(|XbhuIM4g9*HFo zM3co11%PV*YC#Nap&pqcyPAbT04{AA-9fhFvd)SQ`Yi*s=9j2cvIYRIEu#@$J5S)` zWQY5}s!}AkuI~hb?Y<7)ur=a==qj10CAs^gz(^JL{pz)it17qkEdQRx8ycXiSXY2n z(8u8a7~1=!hI8G0IZCx=r7q=K7D(lp&~B^~eZU@WiXiEpP?4in*8%9|_umop00Q)K zZ)dF-Dq!r(y$MVxc_$ybNlpALKiEr^&Y#uPn$sjH;{T~KA9-;*YGmmh7A}P%P5(0N zh$ha3z8rs-b1LfUBX|M~Juk0~_gqvxWO9LXKWsfl&=pu~9)TsahJ*;98;TVOeg-1a zgq`txjHipb8R&a)e_fhCs?xmCl{}d*ipU~*+|A>hd0sA&ZJH>A1{a1-{WR5NB1V1H zlL{ErHt6AxJs-l@T&z5|A0=w`yB@;fE`1LGQ`(h}dl}cJA_WFaGdybYcFdp`O#J9E zmu+HFq+-i9lGg-S(#8a(T_vxmT_GNuGh1ky&?ou_5?%mOrB>_BIzX%+7tZEhHgN)a zU~0a?9AgBGI{(sWj7XeN_R64s8Al^dn{Sc8=~d21mWw;p3Lmj5 zzd1HIO|XxZ3sGAA6k73ocz;kVr}W}1wE3muI)FxTUSC5z6!8PZ?_+YTt$8*ocI8Ll zIRhr%r;SZ;w0Lf9{DNWf9A;shV^l8q;&T)P%nRC4$Jo7iZ}MANyu(jxIlvu4biX&q z8{7gdp};L5A(VOxo(j_hZCSP#z}}|z2LUc*)%e(EogDkv6ub-2BWt1Mxo4qI`R(IE zmg(pB|Dol!{e`K!i+au*&iB&69Z8Ov^TbEb@yq?oJ2^bq3=UVHaR?YPF4~y`s(y*S zuF9|KBfrnR-wx9heS6O#_vu%6E|$wy2$sNqWCQ|7%@+H$oF9>nmk<;w-hallW^UVM zX-0`Rdg?wmFppVyJ2z?c;Q4Ryuf?4{f*}~CY=a5@mg;g`C9bt8JFy#}OL({mN(frD>7lZm7_`+B| zxPE+<6EDb#%Lf%Ub$FtONw0XQ9?=<$RLs(j+DDqa(oU5+f1ZS?;)4WB^`e|x&W6qG zhAxT)wA-l&8TQpxDP%BGk_^c$vXJM24zRpxi57w?O`g8O7TzuYqo&NmtwPp~-|#B} zulwpX5^L!TY|v=)G{yt%)x)2*#sBYEdm)jjNk?mB7nuBi^^593$8fJ=B}b zKU=Z0F&Lz$zws>hf{=V>ZUrzqD3bLa3K2~DXocPVjr)yuRb=`p=~J|=ko6sdueC|r zB|s?N*H?GLuxixjf5`EDNn%=e-|sgtU(VOweI}}cxTPH#$v`s~b5~4{e?u?0^zUrp zV!qb8quQxIIf9PVU=}CxyWd=HgaR{+($$qxjnrl&mcQ7s0>wM;)^qZfz!jBs#UQd_ zTq_1S&%hHF1GpPekM9kp$?i$3$olim5pmvnKv`HZHoi*pz3V}Fd;^|PniZLPX|CIa z$z`$rka=Ixt<=m)(iJ(hSilMh%`yUSx) z$+;rqay(bR1p_JY^&SL57X4v0xl+6{N^>3A{Rizk#G!6~cr5LiWNdm9bW+&@Z|FB# zUJ%ifmvw)xcV{Htdr>Z=nU2DN;c_JfqD4Cdl7uC}28kLmttb(u#=ja9b;RRJ{2v;g|If==-Rs`cz{KRZK6-(;WU zt1F2)@pu4vgg;Y7)FzZ1$~PmqMGf|o>TLO?DEplKJDMls0BVxQ>SWLh*vzVzgWb6g z`kkMTEL3hQsEO9T@Q8L%))%jHSk7u^T{e^5)wRLi+E&2SE3XrR)>>pk*=t;w_+Eh$7@$_ zx*xdifCr%lCF7a3vLqIp{Ls@; zYD!97y0y}@UPBh!c|kt-P`etfCOj78y^F;<1bBfm<*3ktqms^!Wy z*!{gp5~y?8ErE^AjAS=OP z?<)*xA~BTiEWT{u@M0(Uz$n_z9yYG-Gp2{|p#2$tcQqugz$Et>P7ZL#{-8KQ%7Fg? zRp)3?BM-5^3PJrI8S&>g#=bqzkQL;QRwM*)*zuT)w{b!RB(RMQF?OS&LCH#Ii$~s~ zj=Ho~jVEB(%G>8=^juyl54$jvZoMVaq4px|_M-7YT8>f)_12rShXS?Q3qBn2sZ_QbHQ|KwG<|!2x5CsMu|%6f&^2 zcyG*+5QE%nuvr2ggk{7`+Gb!B_?L9&O*dYY(4k%DWC=T=@Z&5$BRYeN5>MBfvxTf% zxdmz>+6qmoY4&p8VwH*7jV7Kp{JKG$Z_0Qy>KF&}?m5;}=iterA8ceoQ)H$O>*or5 z%lpw==MuQ9b`r@Cn7Qk}v+06oyy5RU%0^m^j#cbVU1#}KQJ#0CZ%ux&_v@8OeDo*q zJFny!{s$(f;uF?YzZPeuzVo*`avVvS!Ua$h^ITzC)giHxpU>CzSnj&q1u(1?Dr9fu zuPryD(EB|Nv1CS=@^hQNilVUkit60z)8ERW-o@N)*sQ9H_(q8LY15jt@@?dwJJ#&m z{;>p0g+-p3kxv5EU5FG*pt<)dAK8r>GbeH>zaG$%e?^H;oY){O{{1Kj7b6XEd8g-F zRc8&o7?WXhL$TGO2j08MZP*F&;KKRJ*0{KPGFGe?I=9rKn9@rQr6$MiteJd?`nlw> z>W}o(t>wtwOx6+n$>EWx%cA{(dx}-i3ct@1O5FUCuhuBijbx-LMLlH2T6m;U~fELEZZ>DHEgnY z_pD`wKJ8=rJrT^|p3{L3&L0gHy%MOkw#Z$vb8Y>C;mpauqYtDh9vNsC>FMmEm5#AG7dYU<6Q_bzS9F(iR_mFX>?|eF> zc{VCGo*+1|zBruZD#SR*Q0*lU5lp_L#uZ4hnm|Ldc~SlLBb|0!y%vay-R*>&f!?E4%BB zBre{f_#Rg4_XbC7y&JpV)sIL@Ba0xi{lH(rA7Y$65`{;p=Zzp^R=*|ABa97MEA=+10Q(=(0@yHHNMb_fRh`BzfneP6kX0BeD-a{9;rVhi6 zSGVPBnzx`nb<(ey$SYO9yQ_xSJ5r;->Es^O7v>%dPaEu-lz3+h?V~!%8zss}m!QS0 z%oH0ZncUMtP^?oH7fln3F%{X3x7BqG{J3g7Kfxo0EW>!S*+k~It_(0Qqc7b#O%Zam zjT2wLH!$V*7c1)LyVY+8-bOHE@+kW@PK*iM!o?!T^-E>HFd!2CjBZf0AlOJ)t+;1t zkfsRJqIHpOdi>Pu@goz|PYA9MAGRQjYgbyFV8VG-qM*sZ$l(;6QMovRR50SGV3S*_ z1G|M=4k5!v!eDQ22at>?u=PRJZc(*0=jY)4$*^$vmSmY9BcBQ(zm_Irz$d76Pe9m0 zHCJqzvCex%%N*RfVo$DAGmx<~Pq^&E&+GfKUy+j=AM5U)h%Oja3;sCR2^;x9HJ7Sy z*TaZ>(7bX>o;l)j+#(P_-hMP}=KN(qIP@)!Diac>o2>)8H#|h-cU!}0s*}265@`3e zAXpA2xVWh3%C)Fz6$+{=MztV`&G@*Ee|lhCcCr<3kEorjY*YUPQPYy3na+Nv{6|Y>$JCE^oi&@=|*-i^;VKwRdg-%IrTTWMe z{+2OEyy=!TpkSdc--CffAAs1T-N?Yfd38}04dq%PI#67aPVwrD`0r8ztE{q^cOM$-nTFf=e~Fy0Vvw@7 z`!o}ymMd$%dUB$YDmy%Eg{!n60+UQ!gaScSwyCc@pVy$Frfm8q@YY%~b)tW%0;*l# z!{o>_h608-3=^^z2DdzxPZ>md83`c*poH^twt953ZHDkj)$d*x9_wf5JYyj?n?Tic9W8Vp{4E&MQ6Ufz_u*@inkrc~55E3&ZL z{@Z|XY)JUwd2!%OM?3SBsLgo-+1G3wKqDvVC7|S3dZbu}e!Cy>%#qufw#|@3im0QW z--b~?@Uey@h6YL}20W8z{u_)7W0u`XAEu2_h2vZ!BkDMumXW{m&+{<8@EDji(PMpL zCV{~lb@;cu1w8wVt7C8$dKf}zOuVemL1b=A$S~-0t^|{ITKVdn$NAhuNGQp^V$MOX z>QnFUvfW`hSRmvdcMKohij||nJ>QN;GX7xV#cph6!IgAFO8frm3(nV?{VZ~I8HB| zY4o%~DR;Zx`S`Qp^_S(+nI7X168feXF#H9${`1miIQ#S8%*7odUMyuq?!UR=57}rp zm~sl`l^5=>)+NcwCpqvgu`rZ(;NhM|zD}XH?G^+0el=&H$?~&gslDMlI|Q+Rakf`(yKQq9rR>&~oa`YtSMVtZN@Dc7!`uMox@!a3Q~-a>*^5FZ`2`Q9UY zT<+!z56fjH5pAc|GfE_P>^%>bq$pcS0!JR=gYH13?Jljsh1Vx46k6XyM;VchV549s z8Nbb@kwFA&6MVuiXzYW;BV4}sX3bv|uAV`dL`)?zZc&91nn z={Uwsh6EbFERMnWK|&vQcIxl&-9zw*W~u#0!8SHbQ(z%7H{)q;w1#CRp1etxW7e|2 zppsY_n=^Z$;>3kRG$A+X_M{JzEyjpYHFLoBwlX4z zi3=sojx?U6lDnokn>u!f6ICc(?7WVs(yjU+8l?y8-c~;TJsC_ZP0cJzCql&i@VF@E z-rKkdowXq~CcByrV>Kr8G{{?ZnoTHe$|ePOztHy6({DU^f9<~3LB9#cQ^vZc|9A!; zLXE1drZqn>vh-AytI)*jQQcuPnH><%h;VJ=_XK-JYmbnMUs2-Jf)Y$&)0VU)fvfF1 z$xN3~_ZXSA(=Dz@JD+6G4=guHI@-7o+%j<>yxH{}Bn=%VbKCujqz1B?;~xt_P#mjC zv@!oaksKd%bupnZkfVs;-w`&drBySe{|P~6A$N>)lep|E|5*>HaB1Wz(}u3PdGej! zoqng~pY5T1#6L0o6=AelmN{agEmqCyztFbs-5h`KBQt(bn|9ttnCfN%(zDVFPy6|0 zLW$2)$0qhwd&&1ZlQ@_BDOBc~PyP(?#@$6qSDKC7vz?{3>xN0uVB`#V?AybcY#l9M z-^P0iS^ad*nBc}eJ1aW(@UM!lQZ&G4^3(|l&uGqJZx}ja;!Wool-ZC@cinUt)h+E#m0Ugufhc?}0t!9rG`_e!4eWc&%UM%B%bICBZD;Ca z#xttSp$zX=S`MdTkr?LrYTcTEMw{5>IE5ICve4@*@(#l$Y$yTG_&2ftQLpFId!%)-ta(0KDvbPoNSJs>pZ+BSE)EuJO{ndru&DB;! z_AKkB9h{yNOG50!`pOkusWl(tI&s3xg{GGN^wjiOMS@WgN_?iWUTES|7_oJID&W{& z8d<_*O&R@sz5T1@)T{dqlyjWY0&%GE@Y}TRer7>sT0M-ksNdSP6@j{7-~RsAOnY70 zpwyR}!hDPOjk3v5L%)ZCb_Y!`iuxC*4?mWq4ELas5Qz&V|cKBt42jhI6z z9REIxAiQ4tAoSj=o(3s#z!_LL@X~Wjo$2kg;qJ$7spHcN$vstEatpZk~8C-0%=wfBECz+v?SQW#V#gVe2&Y09iFgEk#h&EHPEyAS?K) z!7z&c>C@h0S*qgut$Q`MrJSb6|7u)@VI$5glrT3nkMYv~SyeF+2RRl@B~OCa5D#kp@@xk)xfBGY5_m$Ss9%J7Dh{Imn!2d|G+ z#+id#aW6qHIVyyML)S@Wn^RGQJf~x!-Q%dkb zuL6$4uLH7*IVnXC23A~2I+q4gx@){@p>o3{IOW8Djv-}1H%ZnNcSsx*`CwED?OR(2 z(ZnmkZN~>FCkHikog;FlSeaW9b#KQ;te3vC z1kTjvaEbW3g_BWfx@_am|By&9;TX|?!wIo%ToPj4$nDsnZB8>{mrHH`T1puq`n3zo z<&{;as)N{8=4?TXrSj?y%bFH5mMBUfVjd0|e-7nr$Sl6Ox>~AG5H*}Sc4QEBO2Kg` z>Uvn8?IqtbWb|a(YI|F8X0eO&c#j zL%QCdP?B`5um1BuE*&JTSRwkg>p*gd*~c4b8}*fZ+e%8_=BQ-+08Uf$o`@+m*BQJ0 zC+R%#kzJp)^!ypT#n0tI=ch&a6hGW)IL5)0^Wc4MV&6j7LBqb*%2vnat`ok6?e$0} z{x98MWe6j^S4)B|H(IgF7Gk>qOK_T7&}n*E%ksIcd?6GSbq~4H{Sw8C{L}r!Btp}< zae1QWiz=rsH`C1*P8tmRtsjp#rA6m%5`FU`b9%Vts84Ay@_S49)7p-fT^?P2{JZKG zrH?P{$`i5qs6eVQvbY15=Xp^l8!9J${O97H@>XAvspB>)1|{}h3}jNf2BT?c!%K3P zb+WTIp_TAHLdd`F`&xLqgmpK*+-{90b9jSu%678n=HCVfjk!K`G52fF*%|ZwKVl09 zIj0Fb#59N-yF{eUN`jsVUEZ^gfoju_U+K zA94Tx(fGMQ?92y1wG^1sCw)78VQ;d7_68j2OG>(>C6d*VlJ!y#$`7FFfJcG%55jW6J3=P?jC)JJ2|c^oKyP@ zoAs*H+3{&Rr3WlMD`56a8niNhB&gruB^kp{*h zmsTiVON$?`_6%5ZDkk#VX4gDewTB1j1$#%K2EQ(UsB^NV41I*Ge)*XrEh)sl6uC6= zL0UXg8d+hUK__<=Bejr6KS(2m9)XPtVrvpR1T6VDX}-=pCqeo0_r$6|Jab|0U-q<*pFEg3b1OO>h9;O|w34edR zpzXw)Ow5%;{x8qMg|ZJX7lF&QEy>26eeo`yw(l1#ip)okxuUIX1+(Hv75Fo zKStp$urB-v$1#NJr5ze*K2Dqkc;eG)eK=Hv(39r?R6>Q?Y#msXHPxVXcAR9qpf1Ri zUh}Z3$h@72#oy9kZ^%bynzz`il2fH`nlL1r3-Qqui{}5`yss){h&HYC<5fqi&Hnu= z!$C*eV@Wsjcxq?s7!XoQPgkU%$TzT=NJ1CQnuKS@SITjrMZxQ%$Y?31!(_i&v2Ip% zjIyyx>Y8sDKhn_{VEk^0`78S|`#HUXIJ`tveHAD5tbRXp4)!0-bN^1M97jnohEysa zIIWqQXumtP?&T(^!tWNvHf=1{yxWLz{2-{n1Xk?{VW!b3^s1b*o?=FNK4?3~p|s>$ z6?$6MXlL7sfm@}Uzwhws2Q%A}`Yym(4+#d6HGO6dsFA-y!B z8iIX!Y^9->0uCP&*O@lZ%bFTu43UQ}5wDSt1ZFapz&@E}9js{t1CAS76ttC~Zf*Ye zrfrBsYyvNrsfLBmvcYY8-H77F-bR1_)Pha}|JS#VA!VRM-%9%hm{&)}5XA-hz$M`L zOH;$=_zDd{9=QlR{rg;?rjx>=Y8A`x810sb2}j45wn%x5sDBQnd&L9~>9xhTRD_84 z-?Wz0&c7Gu_-zz<_rGh*RmS_CW6evV+jriTV2N3)Yoz_F=n(iTs?*W1*HGXDDn6a* z>O0%8XLCMo1>#ld44$O;rZkm-wp~;~FnOx$+%pyuS@Z=W? zBTv5j-J3_dX<8Mn>YAR;x6mptd64S3-1?Ki2M@j;1TGwJSUyusbvE&5XsfI3rBCq+ zbg%}-j#tCG0Gj7f?fJA9jfPiBBqYq+oqnI^EZU>;OwHA_GxUQ7WrfH$cCV%cu)V^y-0Nv1%buOXm>HN*DjG+h{g4n6{eKLls*{Q zplxQG%gDB{+x)9m3@jki&`6iK(pArvt~P|9hv0QZam(MPx`Q=apsU=<(FHc2Bz~t- z?W0#`va9NFme12C{D1_$3Y(Lf*Vl*%TITHYq57%^jz$fSg!kqud|GvkRsDN>|8qF} zx32*YA+!TY8ZSs?G7aeC@GzJw^R8fDZd6Q(WUA7vw9V8&g|9ccRH_mMf0CI+Pawf& zno_&~cYz=`jnHa)+oVLRvEgoP^_qhvEb6D&A?ON|x_ZomAy6Y;HA{gRAWn+yFTU1} zucxiEyw@L0Cc;c2SF%%i8cSkB647i!ITn&S zc9MwCJQcw|ahT_Et1XQyk~+J{)w&&%6VTTqJm?vmsbUU5(U+ViKj3=EHlFiqd9V66 zW|DiSKoVX+d7c~?UxCE}Z7q;%wmpt$Cb^-DOf%O-*MlElrwdQrV=XtL`Hcd1t`oYh zFAc&?wI-47Z@eD$92RMo6s33Mo_o1PZcap$Yv@B2NIU`-5bjq zah%ESFTCupmV0?R(B8#VN!>NH%4ejOB<|ErBIwH_u8hY$c<-qDo{DUrGw4Pf<}uu* z2n5GI8_6b@ae^yt%tq0G@lu+$fzRC+|CR+tdoEyy{w|HzC{aAC%mn8}75c){gkttOn)53HEno9s2t8 zF%pA--1PpEmKDJ!CQSBIa&XGERn?Ge$h{4NM>{`s-W@l6hvh|t1d1}}(sf`c87qEa zZhu|!v&ud;1Ja-d9~7vvUkB`)t_hGj$KB$yef_Y`S=8aMzRO+7fIdS9mrs-KDu z#BJR?(v?bn>-aIXjHyL+r>peW{x%DVB)ErZjsx5g^t6G?#M47W_pvI8&lBofK+l6Y zHC{&bja^WHy#PYjEvyOk>RF^(Qui3?NG-7UU8S)z4I%euIE~}ZTuGRTRKuU1ydsd-uANCFIfM-83%1Z<-%rz7%YB0dd6@kAkt9WK>Xu}UAo2a zpEMX#*-9pcz;kz+u*=^G0V9slUF#`o61;a_21<{9nhZn8iSfimKkx(vZ#A@HH#tka zmDInW!p`3*YtiemUOK&?`bI#qqvSLY+`3BUkB>(bWqaY7-%9>Kn3n2qs=$cLTZlgs z5Fz@wlLit?*tirt`kvLYxZq-vOB2YyRiX{8m1cZ23(!=^2Iq~>5C*%ifbT6nLeq(R z^v&k#Gw6pAI+9=YV%svizBsb-XU5Zm+&AfSVXO#FkYeNw*|5{Cl1)b&I7lylrnn0O z7O>5F}CBlE#xRI%qegL-z3kG%w8d)%dvzNyJ9Y@ zJt5|*_RQ_YmYzjZ2TH2P-@orl5)P!j+e2JQNV2*7TcyX1drP46{zD97=qg3_V^<8! zN5;(C_Z=yx9v%2vl^r*Mf{`qBuW4&pF(B9g-)1$j3%l!>W^9)8cMZ(cTb*laWFaIq z$_u*enogp48_v}A-7%Jj#Kyj)hRBz1ZxLYXilsLJcuj4M>X@4c!{r52UEo$8T)a4y z*DBeM_SIZxyq}Wz{p@)XO?d>t!iF#y&u~{CIS?@zJKWupjEB*UFb&fLO|-&tdFQPt zE|?Zh7+CS_mRYOvur`e{Nur*2+s@bAHOH@HL~7U6su>z+QEa+FaC1F_x=@6Z`o@%Q zueIlDy9dDMT#DrMj6lNXKgT8B0|_)p)0U!mKvKC@ai&0yqoAg4*a*ZKpXe|@5kEz|95}9 z@5G!dkxtxYI_qmZJtQQVO$+iD##Q+qf&Ke=eH$o5-aM@7T>X+%o8EB1C4kGMq!Yv0 zP325#oZXy)@WYkH#3Q`XEni8kJBpB^?H6p*)TQX#|7v@61>vB5dhzB=Nvl4}>&BVp zA!F#6d|Aee_K`TExm7Hx-(TOHi9j`{qF;y$<_HUaU+s$-Y+#M4bpF*e{s@2gRq`K5 z0xn6<>c7AS*YymAXe+2(1ic`ACynou+%z^i+J%2AVsDLok#Yi2gq$nQ>8hHv&Hsn7 z^Ny#2|NnkA5eHeB2N~JQ-iM5`C5dc_jO@L4#1XP7BT?2#M`p&sLD?BuImjMIws3#W zb$#c3-@nIw|8+es*LB5pe8&6pe!pJNSB&>tN`W;zcm1(6)@`hYLfLbIX}{8(OD&@r z4VUOq;|VRWUvLHX-j;>+oY1!)@|RJ=p`|@3e}031QpnQURu{bTq!%u);{5xNPs1xz zirgojJnNDi2G3+x<86a~LDTX(cJ$4~`@_mIBL{HG#r&YIeI(g0tXz$@zq~)CJT#-r zLp>{;$tBUv4C4oNMyL{70GG^8d!^=?J4^F?<9w8g1b9_D>x z!Eoto^8lC7_S(fkU+bXe{L)t%<=Uu#kJ_bPBlM?1MZ9R*ZH~|tYcB!Y7uD<*2dwO| zU<#s33N(`B#@#ln}uc)-4`KfYY(jka)b@MDUJr-XaW8wi>i= zWahM@n*5}31-u>-xt;;p{W|iMpUl@)72m`Tr%5TotKll!Mi0c8z@z>r)JmQ-6~Hr)yFR2P3CAUq`sSIKbU!cU^t`WVEB-;vykD@9$7z(uzD zRy*tE_sFfC<$gmeQVJ#f$k|fHkSIYS@W(*7z&B;2K6UwjY=M7l4^wI@Ghz9QGvG&X z>BPaeWJw7HDnA$EvYw|woc8MMQI`~QYbqWpN&{i!M+Bpxv7bTHfv?y(^0=K`|p+NksS7PtCc$ zf``x+PRy8d%kd>Hf%M_wCJMqxMw)navIVg8W`MT)>Tvaz!7`6-?g~8s_M}{@D;WaI zB8DlP{cJ^J3lP4%FV40@C9Yc(>_i>}fh))tMBMd=mJTbrktS*rs^2NFu`7I9CP~;u ziLXw`B4_U+Bk{lWg8s3N{`)U6SHhKmwPOo_vjSHSEwRr{K94tVd6yh+6ygxOE)Kg4m1466tGaLqSU?>!zrH7A_0IBW8d< zX7t2`H%6HbA0z;02LiFyl&c#E0CL4u5aS!MP|;!P2S72;Vz%`MNQ#+OO|xuQL73fw znIFyuy|q%5oNqgaqyjq__ageg?9~7GVn=)!HC`-j@G0`&|Eisa6{uAyhi5@9vdN26 z;DD(=ou>+2!TFOKaiKNK+bYu8V13E~v&1y$5>EX-?Ko}+WW|NY-?Eo@v@=C>d*1yy z0Qkp+e)-?phoEV|UzUI{16UVoD&e2QFBdc3iX@K?eRERY9=~o5 z0p5UV@Wo)@$$ek%IP%u}R4cG@fV7&=7C4|h0TIrx;EUbR|MPMcm81qsa6-_x@6$g& z5U_5JfMH@OWdFToJx-mU-Hpp|046W@Es@aUyIh<<)A)_1QSr3<+q6JhAJ_h3PZ1Py zu3d>t1X){O&Nkh)q`n-#Xau$w1tc0W&V=3Eo5{rQ z`3%^n8u29+2|nUGq(K|D>_#-a-t56Uuj-mg(jR+CH~gWi@{2YDsaWZW%>W5lyOo?y z8wbY`X=iZQJMUNj{7jC3QRRIC9)RIUNdeewT}n*j8B!sGJsg)ffh+d5Kt{E@-?LBu zu^RrT1p{ZtGH_Iw|M1Tm+8(o zT%hyj0~SaC)#jc~)HpZ+KR^*JP3B1cU z6Wn+A4T;U9#j#4hoe>E5a;%P~z`Dk2#=TWLqI->Zz=t*)f>%}l>)P34#tU_3 zmqp3xXB|6+-M`s^4*b5Wr321%u1$D+6vlzK zh7q{z7*_YxO0XTjZ9Uo!$e04Kh-q-~gEc#=sw)h1{+$>csm=`av!_9L^n1U`FXtz& z#Spx}3U;U{dKbK>M;os8(t6YBJsG8v*W;uGx$MU4lcTgeBvmaZP7)`y;~I*))IzH4 zBKCiP!o2egoS#E?ojU`-2XZ=9v49KsO}7=^0DrnGfHS%~H|wzGDFh;Wd6oh|d-?M? zps7|Img^d>X|OmLadI@!IJf3EM2zcsG0m1|a^NMD57s7~9K{&%1YILunuxC^8UsDu zkEi{uvVb9D)(c$M7~pB)7QfFDq!0i^Nm}_iR0w}BvL{+BqLg7^vr&B!%N6P5mw&- zf@$eO_vrkF59Z_P^S<-nN_nsAeh^S_P$0?5gwG}KI4n}A_X&K`PrqEjEP@itoXOiL zIHUa3aqda%1i~L2{XasQ7Ff3#U-nBiuj<@6FWwrBp6}JjeLE`o!BG+8HR1NxqHozN z5vd29-40fO$ld}99tq{YZeG6Im&~r(o)>`IujFvE5S-J}hq!Ltl#x#?)QaJUk&h@C zS?$q=<5hUUpE{JpW%=uHi)V`h}2UX`agM&kK|~ z?2%NY_V5{wL{K~UB&mqxJ#8U~r#7UfMe8Y@)w)vE&xM?pS-%~z6U%aj5#j(!UWl1U z!Z*8cRZ4e?uZ>rvX1r1{L|QZ~e6&1UP_35?yMXJhS6^mS+5j%mGu6T+v+2lt_||y4 ztoDTQ^S)nB^IoRoFu$vpgo2n1`+zC2gm{+0GRQ!SH|V_}oOkyjou&Y>2+vLmFFMDH zGHV-*M%>-}I+$yn`-Zm{P;x|sY;iV=co=-OY+NSW+Uk0yZPJi9>t028&L~wfUN`X4 z_5;GEcL14x1mRwpUho}kQ7+l2j9sp*JE(!4&I~ihUvO~1`a3>eL;MC#-4SpU1ynqM z-qcU-;aap@-22O>*`g$KFkzeiRZSt9kFV+8vdjstAjW?{58pMM}BX4z#3N4RVy|#hnb%A5lC}S`b@gB-kthjZlZ{PA=22yDx!pCVQu6pk zkcHO`ki6zv*^ClHA4mN)Pih^~ls5H@pWHAp#!A#DSroDcgX^{StT;L9141+6fQfY< z7!7BKc$M8cp~iD1Yau7zqmPh|Z_i=(12ugpY{NtMbX+c@nV8Myi3x4xA66;Yjqp3 zDdNf5M?ukt+{UDF)Wd(jEdKi06Q2=A)fzQz2X6~Rwdx0Lc@_xR6@EGb{&R~sk|LOV z_f_%vM>yWT*$LOeKUo0L5XfcdDn(BPB>6Hlnhy3y;9xHF0@gIX8VKVSh?>?%-*|%o zWtlHDG7J`Xv*IvXx_FL;DkK_yaLbiR@G9&9AF9s`8r2R%(?n}`G1#aLNh<-H|H?k_ z>^@pZ!Hcm71q6F?=)#k0s18GD)N@#q(x+i)>P$3*QG#9E)I4svnsCo5$+ouS2oA7$$r#Iav4gE+@1fukSyNHyxa0cxgO_n6^y#{ zfYhJ@(ypR%tx217=sg5*&-5%`oj(fY9>8F$;5{WUiq&f*{t(O)C^s60eirR_=|)uA z+XtkpV9)4xzuo8hO6dRlGuIbbwIFK!LAdiKxU-|-iTB3%w{f(CP6oiY-q|nqgwoK# zngmffX&6C)^B)*m%*$EcV2ro+y2BK~#VNG-3rth?8i{urB2UaV<`wU;>Ub`wd!s*a z3!<2{Os@tAX`IDzX$pDyXszK3Y-2&_ui%gNnUG6^zX3tiMZkmbPy% zwboCBF}Tr9xp)cn=h)%qI=RjU$v>3&v1QTpXB zyup`uRT{MwQSaaMlAhEH7Oyqlo1scV|HkFEt)@k@RU8cV$!PSJ-kEz@HQyiGE&1un z-EXmapzVXJ{dP#>e9vG!JGJavRo=40%S)_KE8l?8EoOXM%J89wN-L)}p*6VD^*gB* zxz(S@U~=Y0!OW_Vi7iHaYW#@=Nx(W-aat~zSWc1IQ1eFC^ovc>#waV`Pw;o9Xh7{+ zVLqXTay*jE8)7gY0hECTG-~BUQ+;RVt@qU&kuz1(tK~iwey-PvXx0l#UOR02z{2R3 z{#FD2)uXqH;<^-{+_Q!21Y6N4P4VC)x%cyK6c%lSQ8FHmg zW234Ex&f-Vf>?WZlppx&y4(+7;+$2BX7Uhzl^gv8?ndeutj_O;zz!IO*MnMMdP`PF z$}LXH_hV_V&qBqW7?pOkb(OpYIm_##U5lbQ0}h~ zCUKs8Y}zxTHoUAbMu|8e20;1S3}4~o4TUVD>qHzDi6$AS^s!HSzCcSNJZG%-(~NY> zxba_J!rHxckJBiJ-5v}@4%h)wxn3Q%CBtj zluaXL4o#i|Gu~w1&vxyhp`Vi>NV|1!m(VAX9Mq~wbRya1>l|-vwL3*0(i`s6iL1=O zT};e|jHv8CIk(O>@Y9wLp<@Cz2SFmZekViihUq_FKUSBhTX(3+h=%DFKQx3f&`c(I zp}G7xQa1zA|A;R>euihrXhCG_7DT~`BQ`(@NHt^qrZ1CFYq#8_HvfgC;N-9%#L}BE zWbSnl%!8S%!C~g?Q&?df*JiXG_Y}oilmaTb;b-%bwcXZL#!QvhsGR&mXFfAyK7*>Q znYWS5aiM;y9dayorRB<|u$OPX+HewaGoZ^5*Il4yH}BtmL!dV)YieJZxTp_=8%-&o zyeNj9w4d^@wR7};D;xY~^~vn7Ho=cI?@W@(><^H-gZYv%f2B2<V)eJ?VMEM`!5g z-3=U5eDB@WkcyRo+S?KpMT(gDmt+@b^NO&Emo9GPlU?Q)cI1!t3uC)4%OiUvd+(@I zP0mzkcc8ypatA*LNB*2<5I`r+; z6FJQJ)e%Zi-)?51t#)__{WHw|=EDM9wGtzpbDod0Klwk=g9f1X!z5p&PumB#nxFL3 z;^nM`?B-M}D zra>~tz8=Yr6NQVfN7#it_-L-S+UebZw2F`!+?z8>dZIyhTooOq8yBXFjB$CitcEP~ zhRJ&Z{X{11wv@|ZJG(p=TVbwq)tX(-%+46x6Kc2O8?`bYl_|LxBE=9@ynypv_~Mvt zK|#3g63lK?35qsW6rnxVMF;C@@>FifU`dzlm>=^J%5~Cjkp1LTyUJ^ZFAKdPgZ-m_ ze5LoQV5g_$(oK7*w|WIzsGXn4A5H=qOk+gD{vhyOda`9Wp5)V55#n1KV6&h8lKQfW z>abl8nCzJi+^*Q=R#WC>tLYh9ECj_+8^89!`G1U6& z_LFir*~zOC$W*UuBaR+qUs!3rjzJqMVNm;q8r?6Lmj`nI@w95KP`Yxb&X2+qA(Tk# zW}}OKF)x%+lypKGdza_WVeBd2RQG%5XqO0Q|20%!1+Dn&A{O`~Xc(226D2^1phTh! z4*`})^-B%V49H@B<*Z=HXnEfCzj6tg0o!rOPA(qmh-HX+@XIde3NM>f?Ki=@b)m?S z8ZBnY+=eekAp!Msx7g2_(R2;k^kPSMT{NJBGSD#D$?~yyhb3fS{bIS$aE#JQBbnG7 zZt|^5A0mzAdB2ZuYVKH)&Vslh&~W#Zrhe~H`4;awqIZ(4XFOg*xvqm!ZZE3q^&;1& zD}Cw7`K=#gaZ`_boX)fv2G7t6tY$_ zr&7f?#ggyU;U;~-k+c;@chNiBsJ@mToT$KB z+i5{LsI=+V1zdE}C-2eb0R`;zhF#5@KoBN74SF-VewDtkOYR8G+b)y{KjqVKP&EeI z-)jm4eU_&edh}}B#m9xV5;XqHvkEavQKV1H+xdgiB59>OR{wpR zT+3<|o~#PHGPUmFRVk=DzB>(IR}W>)<4kpZYRj}?NxM%TDtXvsy-YUW2aBNyZn$e; zie_~ke9Toh3NRlhmq0w)gH^MYM$iFk*<)i+W$ps6uMhi)Ez}J;hna_OLPz-*SD3v| z)Jsog_E_h@9~X2I;F4e;X#S~rM-kZ+Nhzy2^>jmQh3}Us-_swSUNMlqn2Ch5x-<9B zeX1k~cCJ-Lxsm-9Q<`&O=*by8Z$tBw9QN8*+mb6#K0 z4m=TO9`?hACl1!dKt0G3tIvdW1aXW;Gx0A-XpW_;jEIQ*~_-U~_ zE21qoPx=!F_{@(y{<*X3X#=Of- z@PzcTw~D;6ES7VbIE6H`2$V`1K4P;$05$Q#ZGYca`a$Q!L;5w%Ao+qj#61Q|y~Cgs zy3N+f{Q8=6FXnQU^E9VdWP@<1+6SCYAw40*O8`Vg*MXBkEu@&~A z2^Kv_S;cxdVp|A4-kZ^5;Rmpq9t|hvR|4!m9ouj8BGPXV zL5|*{45m8q{zPEq+o13+{&lZDOsTGKhFx{?U z6JhdNy+l>0)UaMuP=rGGA=BND=*Z3>LH+laF~_D1q$)esDQwumZC-_9>y+E{L(*+_ zzrJRv76L;&;F{Aq7IQT(zSvWNhkf9&$QRIhA>Vg2rzZ@;`+BdD5Hj!n(h3qx zf>t70kIdx9%U@jLoCS&s!E`+P@upf|OFV7zE zlcwx-tTL#u-Ojgky#n&3ZcbIKMqLm<`AMUM=umb z!aY=Y_!v%-y`d(oOU#Kyb{gawXI8_x0WrB8%!1C*&-&~n6LJae>Rq9Nb|8T+A$?HQEV6}5VMRW~ z5**%6wpE5F9iqqB5bYwtoE) zI;&dgP$R#OcLqY)k-5m0erm!7?*UYc0Z>df=a+B)@ikl{alhr5kTuYzsF~A)f0;ff z7sS;4&0)n#*?)8);KNG4u_bHT?8&U%m+%X#1^+z+ zY$a7!zTZeUY|oEc8RcWJ2@{C2y59g0?@>19^G?j)>xUM0_!(bylDD-BX({*jjoS6Hey0ZrQu<@9dz}3vqF6^B<`clJYz$A{h zrC*Sa=QX)GCXv-TxLJBu<6V@@iz{*Dp%rw_oARZqQd{edGuIx-Vd@f zGgJ!V+w4Ee5UQP8+-u#I886FgcoQ=zp05P8xQgI=&&3BTA6kxX9daTFW|=q8j3_y) zOk!Wz#XB(;=Pz}HROxjBF12MGZv#woi^vw%bqdHxKG<@T=5p!1LDjpq*F_LT%1~4@ z49)dJID$NMnsz{_6X2RGNLSy%JFl0xlfKce)39~ksUHZg*28Zkw$!HF zrg4YtotMA%M!*j*LoeuH>Nohz3aEya>xb*;c9o%OeTeb>YiATEGzcygs9pYjQ#d`8 zj~>COzNF0~eRl!k0Y~l!>5)oiTWm-aYoQII{fhYQBJTCYoL4~RFK1b~1?M!qRD`~B z%uh*?=3qxWdk67I!SrtDLQT#f9uJ_!-LN>0Xg}D!NwrE%kt5QcO64sa+p%!uGw1ct ziSH|+#|=VutU?*CEm=iLFAsqJ#C-kr291GLvU2`A%b(%7J(TPZLswGCCv7x+j23$} zUKJ(vwzo!zvDp$X5-KeGR&E%=!{DJq5qp`qbEfE)wSqZHm{X0KH4uj^EMFKLx7fD1 zpiRz*hWmT7SkgXv}b&bI^&O|>nj`qWloIP>@;TKpRLrGH@2%RH=0x2ddl2wqS95iIr+M^b zs8)#Hf#hL6Y;Rc7C@$1Vm0sg&#Q{sO$|Tw*6+f_2ka6@lo3T`dpK5sBUY}m}>D(9q zHX83vUhRVby;`AGxo3aTOq03DKt<@}Y_nrZm$}mR}uLjGGHQ6hJd)j!k$t z1N5E&T_&^kO_E9UJ#kH^vv+q)M7&3-dc_JQ$Yj>vU4#f{wTg<&>OIfQT>oJQhVhZOB9y10`=Pkb^B-+2)CfZpz@ z@pYs4(m#dHSR$8WF!HKYyM-Myyz@C?usy2LFMmwy(~(>;8HPr!O`MZMO{Hsb&y=yR zYr&{%I5C0Aw&v(%$YawmLIQ&-XL;=lHV^jgo0AXdIar2E-wbfD^~K1yN4@cTIMPX= z>PpPumvrvNf{wN1hFTynQ>r1SEuyK#dwKp+<{Le}tr8Z_otXR1q}sqvLr)D0ie8+k zf*UHqnI>=O_qb{2#vUK6(&=dt5fa2zqPuc0H~;7YhFED%0?gzcEx7v`#~eDsFUaUv zhzmbv0*n>Sy|2PJ59%L0)?&BUW{uf<$Y8kUUl}x7Qk4^k*#9j2kY2BnNNsJxBJR9R zS6~)?&)2uSbV7y0V3*{WnRP`>-GW2ez|wssp?3N6b=hY({vREhRJY8Qu@lJzK_iw6&?|>&0gXc#+#Zdbg@^Ls0wQ z!R<^N(YJ0yZ&HX->^*ONH6E-hQg9H{U?DD%Z}$=_!0&080*I?4Go3wS7LAd)GTi2= z_9K#cF$Hn#0yHR_GJ!f(I;hGKds{&N)**i?thMgN>RhztO%dK7%aw1)`pK#DjxlWrV?3a z|M9QNbG)$d+pxDG;*wH7X`s76eG9XgKBf}uvOThS&F{L@!CjkY)UU1X#fguAWwaSP z=RQsNfQkL=Yy#sHm|eps$X^{PrOFDLKZzov9es@x_})`*E0#sw+%=cP&Rg0oDGeMc zO@@>iv;+k;vly*w{1NK4la|L1P!0LMc!h0fCv!-T)5_^Au4eB`U|A8QMRW~e^U>*3 zQ8Gh^r~Le@k4Y!nivS0yk9ZNMtE^0FQ)pKlr5h#0!<5;2d)xX$vTAt?r($AxUz|o3 zm}wh&e?BaaG{_-yLWgVXi?;pXKhi2kXszmQcOB-`T6dJ4F6@>5(d{9b+vGO!R#ToG zfSRCEX?Dt0E|MgxZ*VmF<%Ux*#@-8FUiiJK@mxcBkKe_Qwuu9J>2+(KCSjKgL4~b#2GrlM}IzwTyL5GYK8+?%?`Lf5WOA1>o6YS76g1GM1O_bt? zY@-D8EnR697uuR&?vNxc75Xp6{)-*7O0=hl{mKC6`0nkA+to{hzWn49T00L^E$<_z z1+N#V^q1}aGNI=^f{V~IhI3{5P9=d|rp9dd;;@lS@De`P$sa3v5_&UWEf-|fYw8+! z`v>?N_vkp>&B5gE({YS`m`jpJLZ96AP4Ddk*-Fi_qGEzTh6iCzm1PD;Gn?0egeMg)}MCHaS3?B0$Q4J7_{>Bje0pJ=o_CMz>RN>)6-Q)NqH z{UNeje{Uj}RPcVxrKBJeqCIj8n<0ODptD;_X$-m5Ca$4qLyEZ*Jdv zNi9jybSWdHUz0#mdlBKB;+)iCPR7iA^RZ=P8POE6Y9r4ob z6Vc%eBF!L13!F^!o5>M{`rgNW+4qb<7Uyb0JG+o8KJ~2Qiubb^DPf+S4&_;fPzwK_UaZO#~Fj;}{yoL)6U!{7Y#ZLUF_tNC$ z^-p@t1J##l>ID+GK85V$jmkdPMNM7Gmzx~^1AH}X;we%6QG`*;RC|Vu9^Z$i#qkW{ z(#zARmg3mRyuCAHRb(6@sAMM9ki@FOGF3k?0w_D|+5kwGtZ2H84|jkO^q+ zqRBranoUew(HbYm@11-Z+c9g0ao&X1khAKj`SyT!gDTdiK1d2dnPwJL?li``x) z=Y?*fw}o)M(@WorBq>EzHmjWS2O&@T%4kP}ku^!+bm3}Y0k`g89=tkBzPOocpLU6$ z=NZs*d{@L9h_%+=#a#+$jktur8D>AJ8GF=PdANTAPlnm4y>=6f_`|8~l-7^a1$(nm z(dvoVmKhL9Ok*LeP&)7s85Y+Nj9Gtzozm8ZZCdnxEQM~$SFrchM_dSjW(gUX<^9u;tdYN_)lFnR912>9mq{Wt$fk~FwC zl8_TqHnRTjuQz{fw7Tm+{gDcs0*X2;|JP$+J=fx=M4eFqhjwVy*~fc%Od(VK8cO({ zDYsV#AN*I<8Rm5<&r3Pa&%_f(4;pGQsX|`UKy|lm_j01=4mEF#CU0Ia@IUb`GVm71 zAX)m<>QjXt2KQYKW`C9ZPiWW)5|Ki^=E- zg6?<*Ue7}HyLiT#_2 zk@D=X9Hu&gkA{jvj_lB5T)M>BH%`q}^Wo%c%8YO=Xn=HYnWc)nPI*2&p7kt=aXJsO zo(s8`_rb#p)}=pL(t<{%rfLc3T=v#S-u51)Ub`h5vzKbon-8+EM zR;JzrYKgdTY=X9!B6YAxmeu$6h$ml!&efi`^p%}zF$Bwz3Hr$@LSCtjam`l>ZIf z&Q1jhlBdDjftHSG;x*-G-q6>zGhaX$`gh8`xrYS{CnyJx|sb{IRA zB3ivbCwA<3pp5u^D`#HvSlO1CbBF1>p+i$j?HSc{Xig&D1Uyz-y&qQ2B&g&^8a^z~ zFxDC_{PTh5=5bQ8x?CaEB?YaYUmP-p-jsY@#m~)nac3%}MIzW5LrwDrIaE82(7)Y% z7sbV`z$(!Ds@G+^OR1Wyhm!JS1_5fK*e`AIEmW%+6?xxz+Ji++ZC^-C;~ZWKm%94T zF7xlJYU)r<7P^f%vhZ-@@g`V)f2C^qX%6r7s?SyEBS%Zb$f4mHpF7u6nCtgH-Y55^ z4s+1PNwRko+J8m6ybMtLlB+0#6!0RqfAPpDPQ*#|UEkf2fP7Fqt*-rIleQXHONwF{ z$I?L^%KBBi?-O+q;B?O&x)P=M{&1l_)=kYv%9gfuT*25Qg@2usxY0z(mA;f@S<{sz zHcuW5M0u*pV)pkyuP}R(B9&~3pcO-rUf3gf*935S_O?v!Jv0jL#?g0^kPqn1HP{u#>j<%QZh@Uei0F3&5 zRzMPKjk_FvC6a$p32otpv}gVajkDs2Wg)KDyB|@3a39R+J#(+DKC_G*2TKgh$x;> z*kvwmU)7{d#Y3$UY>QEcr!?lYwx;!mnzoXXiY)`CnLZ7RW9oNnN<{GoMdJn8Vg`yL zca8x@%1luQOu-!Edp;6kCKl*hzhN>pWlcU5I|;=v_$$#Cu}R(I6yi8RG*J`-aajHi zP0O}DOy0I0j6?NCFeIPQ__QJzA?3MJ!9M)d6F70(KIr8e4-<)Z+L58|4Trghof7UU z*DHJM;6(~>vtS}P;(}f-%P`5)Hv_z2Vy4}R%HoN>@7wZ_m4v8_03s0+~vSvBIhErWRuy%&U z4AH{c7ync@@2xEH+ja9dOyOU&$pu#d0nn=iiB$KiXkJoRlflJx*nT2 zmc6^}v^FDAAwF^r(*NLAZynPqhlsV+pKg4ZGXWg$>?pQICKx*0$*KHfO?+2{kzrYf z)XbU%)24rFkD=3NSbdgER3W(5sv99xSOASCNo=Q79~X3Etm%uA}s$@J@v>`(8VM^TIhByF;OR?lv4b*uDL zq7WadFzb&Rm##YTneh-rn03V-441y#@s8miFdW4{OFxR03MjeN6)nlQn|dXXs=K znyFqI(;Wm$FWnMN%;(CC5)(~<3IunuJBxLY&bmgw?43!tF0{z$?CNkzK39R20cb!y z`C=E*q~AR>m)7|@R)4l#c7ESHH>C1(xgE(9lq8+ACcqxb;6uPh^t|0oP--TKr*rYL_0;V|A zQ|+xBXE9;Bej8wA`(%*nv*s~5)+*DB+c^>TPKqAiaa~pk_D>Om3*SavG>nkM{eSJC zlH}4gIZmCwdVF6bs-+F}1Kk}TFBJ-^3rBH3BCYwdnWDma`S(U5 zH6tip`}%fbGLVZF@4ojxfm9 z{L^jrFBcNUCH!U@JgBwmvoID(b7;Dq*R*>#zlw&u#P`SHom?0lJ%*ZSDj4cyCsxT^ zuyzm@?dMMBc14CE*+1Hu+$3&!1sN#FNt0|4y>az*@c}Yth)R^9>hsX|LWrJic8n}1 zdxG&Si189&dZtO}p#lI)s0A+}e#0gY$E=(FjIp@*8%T0|#qC&ZFsVKm#TT?F@y3M( zS;|Y$W85nsRMB@x!;X%D-Lz9{9l&W$@Wj;R1?Vvf1`I0qufuo4tcc0HbfaZ-2%}h_ za?h?}Cd&+wXt{(CTs9f3Dd0P7D2g=mp@u0uq4H`~Zn~ptXq@l*L(nf&(EFxgj|ptT zlcC)GU8;1p+ACE?fLSt&7ZZF{M&6-9tRigx^gB$x?SAj|ReGxOhX?=BgOXscU&GDp zvy)|+Huv-WVg&fePZ)Jzm#N{~B?m9Ei)BK1jpwK>ozBoh^nsilvTg}NNIn#odoK7B zVGM{o{S=s>n4m_=xO5en{JYRTn0(6R$_|&4t4w9Yyv&>mQrTEP5 zRZhu|ziMcpRb))Zed!+kQ;)azA6OGT(h)SfcD>u4`rq@{fBm9G4XIn11yg6|+4D6I zKywKBbXw%Mhjt5AnK;}9wBPu5rmqIr{$eF{0~Lu|4RGBY67k4)s^*7V5u{ML{dWJ! zG)alf1gIMcOKh?1wsMHAI5v(eNnZqQ&9WG&WlkCd_o{4IE8jups|wog(hqnR0B_yY zPJ}X_8M3_ec2gT#^6_(HMzR64&+D~)XOQm2ha>kx+1BGC<9`B?WKHWVHHi{PVmSm@ zqZ>`URu?R@qnWk2z?OV@^5ux7s~nBUAvUx7uw6N5+%mM8W&~$QHWYaP4{T+sx&x65 zYJE>dc$&~3qyNvdfj(}mKGKhIZ~Tu~f5FB5pgjw`<1L^@J;8(#P(Dc= zIXce$Vzfr$ahVLiaOm384+dz-ZkN@roE;D}@K=D{1ekMsjYs7=9=gwC=WMr%69pN~83US@)9$BM<{N2~&;^yM{5Sqc#acg^(ope-f%njM$g1w#@zZ~BGxrwMT+ z#MAPYhqO)c?2~_(?BSv;+n1MMcMr%ukEtcIPHlowc6HQIq0fOW#n`zC+qLGt4P?kJ zslgX4YGxv-eg?&^r=U^BlX`wO%H>T^U!1g6-9cGi8kGApvEK{_$pVOdlb$?CmsZBy z?MMeOa7a2ydHx^APs<-qmerBLd|($YTWeNIOg%71HjPW}10NEZTbYT~qI0T_qyeYU zvO9ZH$iT+|#rK;6;)!+BA$u==(2V`mC~sLvE!*e9MF6OVNV-wADd_Qju{j0ncnzM zL-jv8IGLWLXi2QDypRmEyEgb<6T@nzsXPJl5kp~$958Q9RUWg$5gz#ezYR|&HSNVw zeRO#y_JTlP%~QPW7p2ml9po)^af2M-lI6j%xsW@#kn?GpyMk}FdkE`Od!)W~gLs0C zsKnAaGA?+J4sIeMJsHtYR;Dqs3mm$gWGX1?IzJV6L~t|hHovZBye{co)vlt&NbDN6 zo4v~Mx)SC}KaO?g3T~z6CEA2?&=VPK;Zjs4Bag}#DmIvt7vg#aEhdNS3y6#i`$fP^ z=J-a>8??YWDANqT}G z4k7G~*soPA_?X0bin%=;FQvpgRU-?Xm4%M+69a|@>~6-Jgs2B^4?EPB;b0R6;7nM! z;J+n{xNb_;`F(-_Lu9r$=xe9p6u!S+oB&tLcP&Mcm8{W#{A{X%SEEG`=4s$2TeUlV z`kiFuksXV6RBNg1;mv|$FbJrdsojd1Q`I1yr(M1kkcA|#e|?3NKwK+_gYfH)2hww` zq>2mXG>RmcxyuF*U0VW9Z5EezRUPhu*+uf8D}1W4OS)j?H2#<0tYa^ST{ zHm*#u{$aky>LL@6c|LZ$T(Aw&_CAd{M6YbyQOESM??<*I`n~a7&hyPzR1J*|!S_z| z$&=+GbmEP=JPlXvxaTm;YMgdTl}?3H;HTtV@sKU7;n^O@D!smQBY; z@Ko1Rhx0rZ*^zGh?xAF0`_~9%GNb&b!8klzJq%AcvWz$1uh5>N{fTaCTvA&e-t*|1 zgi8dv#2>WL|Iu6hmnqpwkh3*2F5U)BJ449BlT|E8uASX?|I?kq$XpaRuNtW)tG2m{ zwB1Vqo+oLY-}@xcP9Pp3OZUg=VW#{H$Y9Cyqa3*_NFPPmZdXEu$*Yza`c-9p*UIJ* z67C6n$^|s598@+MVIM$_4w(**obAivEfP#p&0 zXIs2Cu8e-JDqO$2G*p}PTuPNh<|;zi+s71o6Sfl$TI>Pa@zsFWC;C!@-DA`fbEhX( z@9x^r`lCHc*}l~DAqgwINyalX?wL!BIH$?o;do)&ViRFcn;|b8tsNVmyRW~xG*lge3@KrZZzN+ z2_=~U_^TUAqeOeGx>Qe$98*^_qEKR!uA||qj4NLT8Gg?nOu3oRWMAl;wzBet0a|hjE zPyF!0Qp^n7D?Y-eDAKFB{HR92BkXm9jb9-xswB#a_Q;`kA|k2WFXF}G{W^?cO`$Od z&%g<>uk?v(v^Mk?S5L{!;2-`1;t z&l3Kz-otAmE+rIaj;`~FYMI`)SO{)16{}fgu)qqYK7@a#2lLmKlr+1kamfgp)JZW% z!c%2U`ta8K5<{2SP^)uL_Qh}|`E_qqWIInAVO4honZYbk>@!5mWnZ3v=0_bu;Nildm%!l>F>S$ThM=zs*2M>{peeul?F>5{_1k_c53MGx5l6Ui?p|Z zit_#Tz9|6}7!Z(V2oaD5X&4$55k#aU1rd<$7*bM@5+p<#0g+}zxM}oDE1+Hi$^FGvUMA?5BfkqjL2p(tcw*j1 zfM)h?^%JTwzs|3zV#%4`z{R-xhCy95giel7S}l{@oeLubBkQ%ZZObc2Qx@F-?))uczV6(m*;ey!(^#TZ$*{+B`bh$%(T=O}QI931>!b9%6l-vUef}RmUAM4ybKkgd zX1z!hvNL)_w8|c(Z6b{&EBX7!P>U!>2UjSMH@g|UQ zM`$WOu2?V6__8!K{`qBJ3OR6b6mri;h|r116)|pM5HRVra9}Xd{l9*=ebCg7=1zA2 z-N(Ur2Cy$g;lPy^wssP$Wpup?RNJ>WY}_6h*J=ED?cf`vT4QMH+65%J&cEfMxd6Br zW5D3CRKoAMpTE!+@x9o%?WgC%7G~5Z%gBSvqL=v^EceGZ{~!O%#m$T{I-6+&O{%`MT>`DiEGN`6BkuvvkhK!G5B>@ao z6WmJX-Vfa`_S&of51IZoLl$WHJc^3lt{8^L7`SDzdVt+Nrx4K%k`%VV1-!0^426g? zO#{#2WUsTe2FOn$Ox#b70}lnP#t~Utz$5S_j7GG~Jkbl!00XdYzbAQLorYn79k0D? z)F_nSD}&N0oj<2uJS)}}pl(g9 zz>valKnU0b*632O5V!XTExb#3ADdRas-_}N`lb!VO`&z2MXv&b&Jr{^m2rCrCY(62 zq@)1Y9Yq1hX)7lqd|fCR6|Elw>ctp9_>AlcZxMU~vAzuM39u+5M3v5;6AEo11~6 zB44{qw2AN{kB!bZYJa^`vRC}}-+y5rTm%>>h86Bc{b*A@k zPk@6M6V_(rh^@#beC9ma6VQri`lai;)Q}BI>271-JA|A3JQ@DuJ6J?M#+k(a*F*o;zEDbqn$6#DX?p#!NWap?09YLx zqud@8nT3a+V-T+gpk0qq;)vF88Y;En9-cO8%zY4;_D%p=Rukh0!1tJ=ykYe6<)9aF z(*oJx+5DH#h7l)V;;lbj!UqtULg30bIc_Fa83j}n2)ISlrYORJCEz3B7aGgZW8JAy z%T^A{v;?Lp=cNytblnyBLg}3BdkN-2KQ8x`)M< z8rGC_5vjXLpN;i;-KNDj;9(yD@f7(ai#1!pFMv)e1%mNO!!wYZ8o%24b=8YXmrj7> z(^dX-Whez$l)yTUFFIuw38*0}AI1H7TcErr6YNfq=3yjzS}Jcv@z9>H+#;Sape2LB(`tC`U`z~>u{=)MSDII0L0ABchHW$ zNnpmqp$f2pw?G{?*!b(XryGo1 zF}<-#F#X6a9F=vn1dG}CT(~O_;J>{Ekhw9C$|3IGr7i|vq0MPjUay|IDknFJ641mX zd1);N=VB3ptg+|9^WeDU6z?lSbC1(bgPv@Dju7eE$% z$f%VoiXw#&3BG&4Hh&LG?Gbyi?84JsSxdRoD=yt2!;gieufc4=Ea)t2d4~<7hp-C4jTRd!Qu$!bx6G+>_B~po7&PXsaw@WICbY!JLy*at+^O` zc1arO#rpseZ-N_#Ta;Fy%IW8JQ6EU3o0iXb@$wRot&D?>i`|-ipWwj#%y5>~ecekz z(|4?!9Um9IVB#w0BxVB6OBPWZ)$}g*`L;`)g$;aSA~$`*jcU-}p2L#eZt!QtZ8rue z0x~W>&n(-OTV#CGi7_Y0g{F@U~__ z{hWYm=wX7RyV7lpr$0?U*~t&x#G09mAWDA0_vIYd1tm$<0R?L+RW(!C-dmOXvU@{1 zSPP3^$#amnHN|nGE?EpPFj_)`hDwy(=yVsSzk?-M?$gvHPWw)j0xboGQWgO-=f3RK zTdEgg81mbi`LcC2Ki^JRS8@2akKTnbNJjRi3P7oM8?cbl18sb_k5bNC<7y9?bUpfso8>YQ*vHsP7}>J}G}a zS#G!Ig%dOb7W894G2}hNTaA7iUyK#_$c+wbDakko_A;sXnQ6~3P^=(Mv=Wh2)A*uW zRPn-JhSmQak_28u->Ls6o+6+7eF)43u?=6v6Q+tMbQL*Vr?ZasMB4Vf{A&x)U#|92 z5BIs=;4BWc2(5wBwbHgQOAT1nRXDvs=N(t0ee~_cX_xn*UhiFAX9Ik#a7FzcH-&8< zq0w2tz4jKX_8JW)=;mY2oQKnUiPZ-@6~XMMXm0iqZ`uQ3?Ex=7*d12(Un2xAd~3xk z+Yh?;iPu&t7dvZK?O+oA(0y{-+^%0{I!5z^?n`c-k;`oFtj__nZ_0eSvr`FW3j4xKdUo0MH z1*3(<@Ho9LlGJfgeL%gFJT`!8IJB57O(_7WT9_YSl$vYCO_RGzaDrq^S#R=Gg5I)T#gN<9Twx#_aV+s6*{&h|S=cE3ges_;ETUZKL)dm-5! z9FUxJ?EP1XXrl>JYBfj#u#nBd{^0UDT>qKdoF+!+b-RH$lb5s z;p?hvOYR)#-nf&7dpV6WwIR1id^{>Mj%BiFG*ccI=}fj4C~j}#f?3k1l2m`(IDYND zDlO+lsPp>#rlFGP5(F+qv1hrM91$J*6DQLTzh-<&B)K;*w8l@Su&l1<9J2Q0kJJMB z71o7uPMIg9i36v)segp03THabwQR8>Ok(=0h-Yu&)EK_pRgjF^?q*MEi8r1wiS{R} z`NN2`^vC_)v!&!+0;d}C|DI>=%=K}bAoug<-c|~PXo{ifKA)Im6>!N`eVigZ+zx!0 z-r$5w$*SF!=85zGh~YM`lt732itQQ>EdT8!PV6?}TJi^EZ)B0|Wb=NN0Y18&b??Fs z>2=w%W@_%XIL8L(<8s?^>6!z-_1l>x@5>VQn{b)vdS=V z2m2k{7QJF+7%c!35|&nc_YcQMI|X?_AAKgAWNMN&VnsH={_XzhYoKTW7*_R!^4$5{Ekj%?49P^x4;= z^5CrxK6_>v@@@lyn`TYAvhk`PWpL+1t$wG248pjCc_}#6z zhWJXE+ZYU2i(Y!waZ48TL#@m7?95h6yGc79%*`3NL(c=iiJl899Ip#s{m0h*oAXr_ z5FM`l&QRi{4a4IaWns?7Fo^&dS*TENz@cLo^y5 ziX@vYG4lR21UR2F$=+8--=mm5Cj1eDIsJ_g!M!_kk1oA_gLI8tk)CcEClp=9L$`FZ zy)T;_zgTZ?H1|kf>lHdyQW9*-D)^4)y%_Q?meAOak<2_o*10cuD%$xNOCjGG#OCNV z$U`EpF~OEzm>kB4>eHQ$*WH`tw+JBB$RW`ojZoMP-dzGm8h1N~JP07xHQYN&W9Ou> z-TNp&m)k5uHlIY@BfRp7kYdiQV077IynS&HzT9*#PMcj_0ai(x8JSv%Q&~w9`D1GX z#9L50&hGlw2x!VOh=VRl&EIm9a>d}jdwy-aMg^0qjPYjubDD`x=Xr%y1bA$MSRMKE z4a;XF-}0RyqtoUI1RwI(T3#(H9X|aY!~n%bClX%ZL5#v2M1o!?1ek&?Lr%w6&`4c& z)-{|Xs6lqpwOD5MM~ykly0fy1b#~1p4q)qy9<~bB@+2GEd#FDW>Qg4lCzH{0Vu%Y; znV8n7?>$0s$`%K^$fEo0YX${AGOmJ$FEm>9DPq4wXQKDiX~w(5e8A?y6Jb2X5wOmvn0`7;aEP}|qA;gS0%SZSQ9}?FL_Q7GW z_M$1fgaDhfq$}}W9A|AQCV^1BM@L)vw4sSA#lr}ycE3=GuI$BkZ4%jx&IRT<9ZRMq3L=ve+_$m513N*^zh8+}^s6*r1Q7M2*AZUrJjE2<=T zN+`VY=G7LyjjPOHarE8CB_PX8xpf9OsOIBAR&%w!k6q^M25UvU7oEpDJ#9fB6~6Ic z_%@BL4QqB3yjsPVx>ua@Ds0MW_^mE22*KTU*$t{rCazT-2XJ{bOzLFzV^0JqPnd;g zq^y+A8SdD_Iy$YbBvwW|f3apitV8W#hC;-EbY1%bhy`@-*nt#9*<-<}q2DP$z&zaq zeVYW32wJ2w@{Sef?P8SdhF4U~;UKR;l-w8Tl1!#m65)l3d`Y_j@?VN#+2=UyAMAMY z>WeuqA~p`Leux%&8dI>}manMrHkoG0N@e2ka%ayi4KS$sP_YDsD$^;d+;he2i0ZeWyY>$u7XEKm02o$({a??LE%^RV689L#4t--fPzWnF?dYfQhG8d>40s*!P>u1o5XciXhi^ zr4TKKr%$e<6Crs{u9P15IfZ|E^^ z2Mg-pmoGZ3k!SF|F9*P`IKh$1t~a-kH_Wy_7ZH7jM~8%~W4(y+7CwoIE>7xs<)7jg z08~eU&B}PQBu!6n(Wl^pXmd(?A7zROsvdDx+`$g^I-i*N2rn)HNu3syAl=xfTU@&} z1+I$MzY6qL{k#-^Zz4IB0pwEz4;GJyzY<0^sEV9^nb^WeHy^jWt^QrKY{C;|E#S#{ z=xJb)|E*HIW@|4g)?BYFiy$$9Z|Kof0UJ~ppPdN9KBaNH`$uGe=_DU{swEjY0#z~Y zuCeqls&KVrBNFtBAEmN{ED4O#z2@n$9&r%eT7m_8E>KlX#c>gHwe=MtL|} z|Kmvox9r)eFt{L;vRre9(0}(+y$IBMub>g`!PAGVhtu|QY=4GL+e~KId&manyaJGB z?rDmOm2YQgH={`BD{>)~tDUoch7-~;Of%Lk;-HgzGECaIZCjI0 zo;!GWaGP|HIM{3vL7>{ZY3NYx_mKI;sSB`Io6Gv;T+@%ihho@DWKic~?2rPJmG^K# zLS=rByZVPH>z$)Ro85j^23{;(58ZYLVW;GhEalw>+#R!)2$Il|W$kyh*I?nFVGN2( zTK*-?4W+Em$rC)HmcfrdE0W>Xkp5fd>G@Fv^Qi?yP^V~^zjN~=_Tr5A+j-9z_MvNO)Y=E^%dVEt#a0gwOuJUf(?yO#CHd(lH zpxMV-1xs|hqUM6Vv{zsIzHUiumoKD4qRt7n-dd;~<6efKzo>%0grIXFnKy+l+dR1Q z{|X0CaY5fTbZ;Kjzbl)dDpk!Vl2z{1puJC!znIj=!^AyE!7G>HU6Wkh^j?KE8bX5T zGG|s(a>aRkHcwV3L`P7tWfY4((MfgD*%Oc9%#w}m9O3gg?x^s9aYwg`90*-~zW8n! zC1lGUN(C*_SheE_8hw=cb)69{&kKy(io7m^ZH&)Ybz*30@InU}9jYE{6 zTGyRnsr~k^A7;HjM$ZY)zJDZ@xHumJR2d;(d~5jZ>YW1JF^~Fi2H(RA-mzAiM{G;+ zRk#%7P{I00@~Vj|w_;K=2Ss-?!iSyz#Aha{tlz^(qSv&kVS33UCJr3odq5RN zO*z^NRjI7EWtvUTS$uP~XcWFE9lMB;?Fw~}GO&-hDvt0%BV%Ps?wyqJviE9ELb zS!4)rc1&ts(qCF|n+M%gg3sf8$Yx3!qA2esIblE3Ia z8+0rP4WTr5Q5o3tQdRP{OM)fLk+0`zs-JEg>+jIUMu%>u8_7PQ}aaV0P0=p42Y;#f6F7%5%N>Dd=QtB%u@pQU;jiiylY9{7Y(bntmQe$IVwPAu*<}In)J&7DV4{V3gSI zFL8Z7FDNE3_A+`kn{fvgDm`SrNpmz2(EEbVjcl1#mGrFma#Uyf1uF#kiV8_#`9!!c z?#Iy@+k%#*uQ!?=OzHQb=daonHoZ@%$+bU^?S#HWO7(Rw!<7|9JVG$%TG;8ADM1h= zE!cbwj~sDxyMbkZM>oL7skjRx7-&~HZBK@z*HZlm6t7II?IW&PwfH!?pN@3&OX&@> z{tVxFveo(KR?55}=iK0DSxOxzf@Mc;?xxwBZm$8qJfrEunJR%B+K=pG)}7ZEJv3!u z_#7JUL=@kGb2qvj*$1&HGWS`-qgDKFB^Be{DN3q7cWh`Ew;-T&0nxNZr1bpyZ6ilf zx~K`wLTSmAZGQUKuh3G}QxCjBN$hQjxrwGu(nPznWeFVT@zrNIbC8RZQntzSp!_eL zua@zSpMKx?p-}6k-(yKnH=pm^ATHrANhM|R^(;Yd5^t67Nq4G%Q&YBrjhk|ng>x0x z_d)$_KOkW6K&WmSbEOrCLwD&sVB-^XBDU$^Y+ zi7|+ej6^~=P;)CE%q^vepTEzWnS{0x6?^YOeDL?=wPpQSXy)F-JrrSEukyZk=y)C5 z+m!9mHi~!G@beR_P`oMc=%s>L8CU;;0_*s7JB8Dl52mEDYN(X`ydPJy;1o72W?uZu z2SQs=;=Rt3sbZCo3yYk0s~2YptnaU()bO$lh>wC4qgoib>fg)eDP6=2C;_>Q%{*K0 z+){lLfvL$2B0UEE0H($o`gr78-TF*rMUU5-&L4ZJtW@FDxGKBYxZsPn!fy%miZAeA zpC$}@uYrV(IOc==nVP@n1xqa%-IGbPj47+y9=d?45RSIqFkiY-ExYy@XD#SoB^Jp?pp;rBn?dtu8j712 zck}y<*WR$>*B+wUPt9uhNgOguM3FtuWceH;zbWD*J@d#{5efWCSi~8tjiyR+uiqTi zeaxS{FT2cw(vWoo0WzltcDfaqB_7l?PSMON1=J@j(23q1c9t~ao@_0};Flh+Gh$7W z3IodV?J%avbgqeMg0vy@U61zq1L2pk`6BCkh@iM2jp>j@jgBern3(`J;1#g~i}n``1)3QS0h0?}!+cVXRu zFwjwp>+V|H`DTqwjPSUu{xl{nDZ2nmQd92n`K+Q%E&VihOZv9m!W?%0T?PlSjIQ7( zAgf*jVfb{sRxyAB+w~>iwTjcn4$sAYv5`Zpjr+qB&qmTUiWNt8UE9nzE=pNi&?@F6 z1k)>j-i8T_n&7xV{bSX)%Vss?Ww!eG9|g5QKJ;W`H)O-0YgIiT$8-#;J9BK%k||e; zh#(eE{`68O(X4uRb|3X2tlNQe`Y>0FICg>kmo+oiqGvdS2m+`%&F9a)N_r8-)rX$D z^U%GKa$Q!dCpepZZ|AV>R6ENG0vOcWMi>sriKhh*Sgq`@yX7sgYEb&RYnA-h;2 z=IF2%lhQZ8QN7^edrHz7d!|}Ilu0ok?iuM1JBCM zR!eA$XP#O%QG?Mzu5?{lO0C>k_*!B69N;~?g;|{)twOteBZ^n~{y7hUgVAaj5H-}; z4Ql^2el2n7%F;8iAtD~aNtiU5sNOq9AA>=MjQb*p)tHw)HKSv43XqA_i)@(>NBd}K zG)b1(#^mT~r=6;`Cr}A5564w*aiZz#4wAAmA}2ReSf8z0X7dG|2o;9clg;4q_L;Xm zlW!py6XWNmF=_FjSI)r9T}?_gh_z*^{S;ebi$jFvhviB$`XY#?@sV@_lh|q|sDgcy zu?%n}Oq1b>l)&bVU&h+O+RDwC)v)MU$`gU(V8#tSUUC2*wqKZSe+$qT~xy3y7(E z<5rcv%3r4OeG0dhRY&wP#cDBRbxFlM)W#1WjJ!|xWB$z5vdKa-N_eC>^u}>4fo+z0 zlfx_FL!GSOHM+Z}Uoybdf(-a3bvwO3C&BbSbQfmDd0Nv6$+krk{ zims&W-(|*ej3lu4$g$XhMAl_Np|5wZ_Qy~icp92Uwyr>gW!^^P@(#|u70pWcHQD^k zJYy7VT@D=YY$?EeG?+-~{GM{I5-#%ywbPTYVU_RfQHzd>CxNq0489)hPQ5_YxprM zYp5^edT_?Qt9iS;gRYh;kFVTcanUz&H51eX8%t5KuD{RFR}GVd?}IpvLpAx+a|yJG z5id@){7lRHGZeB-Vzuv{Wug=)M`=?EB{717c>@s*2T)J#!5I~dYgteiJH?UOgU z6v9gjmj0ZRp6S#lyAduKM)lZ6Y#|K&U|-pzyet@Wk@BYIQ|g=XWtN;i6~WhjFuHxB z0VN+cIZqHsMkZ4454Dai0I3zbzya*x)qdWcQ!S2vS29FEHZtf8v*68NJ4-z-)2xBg zNADJEFrp*6YP#ZG96v(JKdQ_ba~5%@d>qy#F@|lKZMqZ!Gg$m`QcjdH^43e(to3w1 z?TTA=?kU25*(e#Ch^&1S*c5DFyVji4ykrIO5ckATCdxK3Fh`bYLYI?+xGifx~@G~PHJpu6Aj5Xh@F0Dww>SVQO`IqFD-e%nn*dekAC|=x$s9_ zD0;V?q`X^P41x>m6@al%c0l=?2zmDK=R|8}7|x_IsR_7|@GAw=;q6oF3`mjEe> zhlle*tAp9f1tAU*l*=@|QG#S%_~rI>r>Pf{2S%g*MvL1t4U>d+dALVTWpY(3dpBYBYGhRby#>S|**Q>f}B_TexA{kDFFgbzTu0 z24D)=i4!nb!H(<^#6QhvmP8utrr%mEPT@#&%QY4&yG4>&X2C1@$g)4)+yi%3{`opV z46r`T&^S$qTgiJ(ZoEQZjw>v`>8=kvM+>YlL`1!->_9+uWGK%oenlpDZ8&2OsKAPd zU_PA+_Cz#JP1iawH}4(!oXLxS;X5IDWG9iX^krqTSN8$camqQ%)?1McOmo%mQ=)o9 zddK*;?>_!Wf`n~u$UwwNoE?iC&c+NzJPB{Z_&?YcW^oKoyM@;~OMvE3%M9)g#VMx% zo?!I)pkWNXeLGv3Fu}Xokn@#bibkJD>X>ehIj6MXINMSKU!2N{HSCEcr-sew;ipKi z2{XMv0>PE0u0WGAy9(Wd+LEo_3GHKtU#zVee<)$wu{89YhFy=BDV&Sy;Ul1p-_*W% zkjoy(LeotX>FV-oIToj^*q&j!hC8eL@=IQ5%yCV2hP?Kp)e)=DrVc-^yLr?l;lr}c zOBNdMtwq+$-vWD^<#%=Nw<0=CrAJ8Kdwd!XycP|*?~F1-S2n#cc1pH|g_0@G-kQEj z)-kQ=I86=rSXWEoCA&v)3Ejfzbrkcf>iahJqBz2oeY)Q@kZVNe?1}46mP)IH$h#G@ zrXqeG0O_d{ywL_MZ<)B%iOEW~lg?I!?O?r>v|;cy1amLxb>KRr1)N9K=7{ z!V^?!#UiTAx+jV2P8FIwGi$%A>77tqnwp%;q~Kj*Z|5V30Jvb~2^ofbjfnyX*6n;L zHC87wug(;HszNXQv>XZxm!Y>@NJLi-IOXc}ze?8O?iec2y1g8vcN+6LOMl2`6;k_n z{2kmBp<`XqqM>c_!F6UiX`%))4)H!|T9vU<4EFk`66S;JC<~OV;oNI^*k`ajp2 z)BRX*n(w0uNEfm~c3|aityF;yuF5hbRq)vY>!UgD+p`yMci&(1^E{ShS0{1mrwC)g z+><8A*J`Bf{|FD~LoN>z`p^Z^c?ZuEiZR^HG=|G#VH*-E(BHM=Qlio0UGd}H=Q_aW zxpT?@4K`oJyDJgg|NL4rMhyMD^19#=#T<1bNOv6Z#hHMWBLz-#|Cdpn`cT*wo{;0X z+qlq|PEvmaLaoCZ2nxeWiDY=|TW0;eKj^a-Z3;qzd&&j!M6R1qJ%I%^L|PP7+$|qW zW|cr56CKf1$+U?$@rBYHoNhaHqhg~#j*f}1v7b6o+Ol_3yL+tZR9m58OUC4c>4Wjk zpJXbO7q^BUk27q=3Ove|z)MCHA40mBH)r;V%n09)6grOplPhA13sj7~O?=uS_JX=bUa{6#Ek) z7DIe%;D9pGG2{Lc%;yQY)JxSniGx2?lIX(Ou@=Yi3@csY36rB0=352m$y@YeQi6o) zW(1zE98jz!B^(z(Cm@|ht4CLA?_@SmXHV|;*Xc$(pg4%L$dC&=$P$H*7nZZNO(X5CW~dzUA*z-Pwdrf7>WZ8DnQkuAgoPQH{BeSJo{s;do1~ z(|G+B#{Oo#0f88DSCCOU>F8eecd9uGsKIVmCk{^%cJlR5k5%GSNT7>qv(G6-)XM$j z0N2`OKgIP$Lutu@`n~GJJ=zZFrEvB6Zrc1}dvteAF+L&j&!`CHgPAQmzDltNGY`lx ze!j4%4GUodF``(UEc>8+M_%Sgn z2K@_X9Sq^L2>BDqAY~rzRDF`&K8kM5N#VY+=U4k8JB+Xbxlh6N<+t13(~6z;MRhn! zpNa^FTgN%}&69HCh%}bC=9Cw@)=Wlq3Ul8JVRScnsB7Digj{kRGw712n<#!Mv35t< zwK29j3UU=(w>cK>5XjJn9+X2|_=uQU*>Zlk{pbgdF3?v>!*ZzbemK6z=^!gseigYv zx<}GkqV@eDS<=xal$~Uw)v)cjGR0lxlx)K^Je2p9ZTbhgl5h`4N*wd_%g7#QUuWfn zr+0^pEwR0aI@2#%TBT@(v!f+zSPodqxaM<2?tcH^5oVwCV**Eqp+j~wl+Y;$6EuH| zAv(r{V<}jgvc+b8>EYdK`x)tV6`YZHt|I8RiU>P?4_P;{_S@>H%&q+y=w}PCvShsZh0)EsL$3bZn(2u9Q+M4BO{y>2bE@TEu;K8t8Ga_!U!_G4p#I zKLz7hx;aqu1oWjT2#4~9U`nf)#qHk0u61tt`4mk0=(V`7N6D4#INz(e z4$v)mhN2>jJe&%8SNG|*81- zj{bM9@3*qT>`{HTsxs_HbhTf>mfbijMkxmR&L`zYfr56HBvl!bsZQI&> zr;`1aifKqoZ(ss2DOg>kMTbYc#QMYv7sR;n@F59Gn~s5wG>X$*jhtjN*f)O?9m;eA zuC^bcH2`X;$rpYf7YDD(Jh5$GJel0M@C(lp!akpq4qIf%IRv%Zw57DnCh>9wkrdz% ziEaBfK9@YpXoYeLu|e$mHSMJ|&&Ee;H7X=*4kL=+!)+cdiB-nKDp>BGTHa`{u~=$i zi`zEmJjJnV7thn&o&oIj_cw`&?T(3c-;ud3pEilVVFvjp6-T`!)KP*Aq@YU~C9a|# zOb^+w(RvSpzI4gDSn(d%zOik^P2%{>WC;X9uYhL#(N({aeetx9r{yl>`T*cS(3pda z{t^#p?5Q(!{TE#(P#(OU2?%T#mxl;tg?r!yBeL*OYm$J8oagbHvqguTOMhSMROgjX z^abXZMQG!FtL#gS&)*Dm1_2_;+YjfRg}Y<_*tnquID zS2lGmU%l!nO9@-ui7wm{UY+_z4u+?+G8G zFehtG&?{T}Uc2j2y})ZzfdEaj{ev58hM17L0(4ZP-pz^^d&OjpaX_BUU$*3F;`@S! zAw{46lqAO-7}OvyNYnSJ2?uxax(^OP8ZfQ^^vj5C%=1tlw&$j&+sUygtZ~NOB@kYW zB%~%?u(O$X3m3+y{SLZ#uc3O!*}3FN>@^ebC5HwtzvJt9@F^M-qY>4#^?FnYyzs`0 zX&~2KsID@9OWrST&y-x#!9aqX{(wpqAVBT>Gpd>STJ=0c)_Z$RsKbw!o^yaZL%Qy$ zL!29uBa^>QW}-u|I9yZAjP#;z%m+DeYso8Ch^+SZ7vZRBd&x{$VOu>U!Ozi4&{p@3 zzh?|O6y7jWV=nLBIp2M85mdAag#0vgh|gj~UQab(;?4_{ZlA+FP~|s*pnbYa++jl3 zf}+M7Z;#bT%m=0kN4CF>=wCOK)-Y{=IAkfBj1$vje zmbwHWCq=DU_{e{F^wqu^3C1nxJ0diOD|tf&n&nZWsX!oeuk3a&W)H?m>~&5Nzq^?X zA2W7P%jrC3>|2yE9#4l0TIyoj2@9YV!$sj^LJgYbD?||QU~(MdAhO=!%DAz*(Yv0deAFjqhwLl zeCts&$s?tV?7n0lh)4pYHW5NerKZVIwOR54C;ruIfLj%C-W)w9!W*n9acM#r#;~K# z%B%0u)XI6cSO+~S%eztCt6epX-CNvNk_5AKC#|ctEI0DM3y_K92Pc`|*#X4Z(e3$L z4m%bCuZMEb2U&Ty3U1!R{*)qEZg?l_g~^RJAVwe6wKUys;mpc+Ow&}NL3Mf|A6)JM zV&YRoc-&SNc25+yTozpJK3QbT{kqIKD;v0u646?th(o_(rZFJ&M0|n z%?xPKONvLP{gTL-(q!P#WCG9zZK8T8BiS`ht?Lhd0+EM#1nexw4xfyoE)pf%}^86J9=JO@$$ z08ba;QjJnLcSNnJjqOZhT7e?hcVH?hCxUFfz2xNmW^lD1*B>Y!K}%y5`b9xcjMAjz z8~D?y)^6Wh^Q>DzxK`f_614wgtyQ_gl{em)(d;H?JpZ&hiyB#G%g~%so35s9f7%u} zLch2foZ>>CCEZp)6l>sh>e^!(GLAZ~4=noC^CaEh3Kv*~;=4Bo1 z%oo1@%Oq>)%mfUXo6q+ zK(FM1nvQ#4{ZAl!v>11h0_vo4mNL|SsXwxb2%?Br7-7;sq{VO}2v-sAw`I6dZS!Px zgY8feXY2@N2n`sjvU(^{YX&4ukMczkIGD@naX?q}+oe+j=pt91BQeP5*^!Q~aQ6wX z)6->Im#-A& zz#l`Hx95us9Rf>o$L%*g_tLDwvu8XOUETEv;=p2yU{2`}_BTUtjn)(JP)e($NQ=RQ z^3_f{_=}@F78N8tLJaXHByCkb)8ESEM6DlTmHsCbi9R)wPrBXwLB3ITXhC9~9`E`n z(f(7s;7B6Q+cL%04xDx*n4Yv?^u98VR++Qj7B21o)ppL&l@6Uysme++ z$~cYZz>!TH^=J<9@Ytk<9TdcN20^`q{P(uUexmGIGKZ_vuXSh(|Eg!9Vv;IUOybOH zzNGe-SW*&8I2N zz;om&(jd+01&z=RhdHg-h|F9dvd>icS9L>-w60=msA5~vWl`ot$q}rOH~I7J)m0{Q z?sjmuq;qtJ&;|@-l}7rv`HJQbDN=-Xbg>KCltiG%2y3gluEJzcFhpt;INNk5`3;lq z)A=t7;}Sv4=`Jtkn2MtvBXML6cjx?suvk8w2MSiFF%sMfLEf0B#}|V)L`ck=x4k!o z$g1Mr(gcMX!o$ORsnlrMP55A#tV7*)?mVI0+K*dE7dt5BxP-(ocRI6Iz}99X+@*x= z37p>B(~->l8r8ooqKZ>~`-r|RdP87DUROwqvRt|DlrCIfrq-Ex1>)ouiG4z!)wLBW za6?9DuvNr7BWdxoE1m$o_hg52LG;WX(T#!a4!7*;7jYBbJg}cYmbN4$dK&h)-74*# z)nb4cDR{nQy}fPqwOSD`u9Z?7UMtl|gHEIjJ`!g^a=gdxNKFc3$$DEEpsBHb+p1bw z%6w1cIoTf)X4IK03gw!Q(lAmi{AcO-_b&S9>v~It)DMOh8kh~wssYODRq(>Dtq>cI zm<7)z_dJ=Hy%q3C@`+WIKC1aRXXqsLXI|*<<6Zo9AfEnoz0c|4fBwtgzw*b6)xi2Z z&QYV+BjDgTdRHmla3ilYTn|;@ndiu(T9)x-SBtj>N8mCb>1&SpYy#1i@${Te8QvIv zXP9I0pBG+lOOJA@vtIxFN4)%(!r&_7<^z>1fTTC)QU1+`I5Y$K6w0A=S5*LwZs z^JYmW=Y}g~i!_4I^C&%(vjhkWImG6o$i?P)E|~_!fH|$w8FZW1=~+=y*(AI>3kt%e z52Npn0f(1aCwplZq5c=)b?tBZ{3}oE{_~R!j~P)*x8`z3@&A1Pap`;{w}FnO2rQ%m zvJMViJPMf}z;?is)sJdpsvxQSG5Q1;uf~DE+ZdSNyp3>9b^@0^p1&;H6LOUMN;X9KKR-{N8fYOE zbfZ`s{>gQKrR9JBvx~amtB8P~|9OA^`zQW?{ib0v5m>~UNfU1U?ON``_eFsVp2+~Y zw3lG^n%3`q&h9r2LIrl38Ai$95eulRL~&kBTL1Zl{;xOx;~G+3z$G5{D4T}-#Zq{O zhVgF%0a4_0CLUr}(2I4ei?0`thO%QRSd}xF{Q=z>7vKD$v7$#&y=0 zRN>;+!D+bmL{lU9mzyKZ}z6 z?gKxh+6C~ep)8w~Swp?R>{%8`(Q$~R&+_)EZp7%IO zgnxV#%ugMm^r~T$;1{(vv_1rVSBgrWVcF-pygYY%`iv{r45M_+02PRkRbKt&s zjq+*A>(48gh1itOVV`fBN?4$H1D0=@Vv9y0Yd4!o+A*@Yz?_sRe~Vw^Sm)4-^}*MgyL`%H&3WZf^C zvU5~CWc4R)VFL6%75M)*3TA;Z`okr7(_)v}gCs_-J;wVjxNlI+rOziBIG9PSCd8FA4e;9@S*ob`U!Cmq^2X;gw;QO!{jHy*3 zJKgW(Y9px!J~0E#pCEr^9gGg-@G}$C4qg4Dob-m60UENY&KNRG`iV4h@-i(Y$I>ZM zM2fgVev(Mngt6kV<6y zq2LIy+OH^3Bs-&fKT!E7p5fQ(O01uEXPtqCi6Z$h*yhXU*pRj7sN{0+*L5*0LKN^o z55-NW*>)-{wej50Io@r8On^CI;`&C%^Jp05e)uK`XbkGA_pLUVp^H0U&hqTP#~d7> z_1JAV{y0*7*M`#Zt*OZVZm7WpLl$W=Afi}-aYo?0h;HMYXj$^G(-oLw>&8$z0qJr; z=Nviq{)O~D27fmN#4h|3K(%4nFGptOww+hxXHK8+`Vizt%B;Yg4P)n#yK@d0RLr8w z@y3)BFZNOR22^6CRX`&|x*ine6~q=c0A_$#e`O?HUjbSfKnj3!`3|wR>SU{*M`xKMAg5m^c13EM;L_p8^gT z3y{;9PmS}Zz<3tV?Rg@0&_#S~9mfB&2z88-bck-zY*5kH<$E9RZ zs)bgFPuU4aRRpoYnRUQ7+;;iKqy7TeS>7_8vshH;mGm5Trko9BKX>=q%uaHsOQ%&z z;APsRMyjuiAon32vzRz<|;zE#0Vew+PY=f}}JI(n^CM-6H+JJvT)v4prXffZ{@byPymZ&)fLmH z35Uamqk7iOJjsY!d&4BJ`U<7=wJiPFn1u8BGER(5T%^|c{P`7FTDg$xZ{o|Z_1NnF z7JmN6W5gub?@RghA8P+T&jOiIZfG6>B#gMqYkYj_4r&8W-7M}QDC*g7gb`^P_&^CL z1!}-jdShW84D2{hunpnB;my@Afnhbf=4FuZIow|`xmUGB_DFMoR7yhnu9GU{Hu1U8 zdTEQ{yEQ5|an2*KtxJ$XSJ)62!=DJ{;983*uv-?E&`1XFqBc7*%2(7S17cU9ym;TQnNl8RVf18dVhlf_SsL zCjdBEAfI}_vgxk<)Faw=x1D@tmExc($|LI9=2_4O3*E&ZhqasB1~MPHsxWnKvFBiw_PUQIkNI zK(Y~K2_F^94QLEFJ`QU~gHIrL3MmISIdN*#rzhvj!nW0+P*Q4%=A?PBVHpzXyF4Su zq8-DMl@~f$fGXUXUon1HHRFB!M&Q9a=8awCDaqY`ltgC_>^gkK7pEhir=W;%G9H$A zH9Z29SyLcEDvcWILb9huFLvWT18?QIIX%bg0ld(MVw(!8H4ukb)Q=&66>z3c{!EOl^R4o zQDwXuGdmgMSbKSw3E3!sUZx2MB@8w7)g{1++cLmD9U)J^3tq# z6wI#!l-jVF*fXj*?p3FPN>P%?rQM-Mq$l!5&04XNga@0q$Q{v(IAC%GXXM_*6{t0M ziGQ`@f&O$LsJ_wJjspH!?Px(iCCrQm@uk|<;6pVLm4hFK*u#M)&+D~F%~D|F8&jfI z?@v>11v~4&H0Dzq2F?%~`mBd0+p}i>(mhB@nMO3%VW2ys)9jO{r^?c(W(F_ErOxs+ z1R~&tm$P_Y#Eac~_bT^}=OZGfqcOx}H?wq?KbCk}kFsqh{2wz+@78v>`k$R0AAI>4 zFe>CW&6!UOJRbt1o58mVLJ3G&5zP^AEWmvn6nM>BaCu}|U@|OU$Rc%!e%vDpzjyTJ z?IHNR1>bbu-Ztru0L%`I%(w3Ck69cZZSGh$p0J!gVR`-Jk{EafL{I2wfeTmr2G5t4 z;(d6P$9v(E8JmY-&%gkX>3$O4+>Yqpf>_D|YVon7sCZ^qoA=2B>o_6JRNZrAgUG{e z{KgX^BMA@S^`^e-a{*idI$dTK^=;m`E6cJl$q31$&ctigKp#}cB`p~GBdrWnzpyh} z0Xq|iCL@O^WorJRyQ}TAz|dlWDl(VIH7A600Q5nky|`mp$PtdZ$8i%z`VM$@_An>1 zVU~Lcw*zF4$zI+*YkJoXMSKW_sNfz^oMZ~p?3_*mMB>)G%m%omy2K=-zHmwHd!}kO zrVVh|?Wl)I!OX~p7{`*Zhu?&_4ty0lEL#w3@X&U^f2=!wowKQ_zFSi8MVZDtvF6~n zyge3+M=TS;PDB}8;m@*0IB!$Kd#bIgb9t+0xT=rp7n;M{lduD*n8Dk?X7iO`BP(37 zJ0rxrS^b&i#9Ko@T4T`^y`ejY;rrD@`JG*F<%v|UvmTY-Sq$!JHHi`?;t67QWR1v+ z+3==47`?9D5g=i2Js^_w($=Cw@TX+LGqM7}H>LU7!R44xn#q)_@XjAt|J6oG5wQn) zzI>)U#KXJ2?3=wXx0zczA#R5E4t?xZj`_-`Fy}WZB=)j*nasCNE*D`c8CER7D65L1 zdWA&~c!zYfH9b4i{mnEiV6taFVd*L~r|;|8XtP{bb>2D4BVN)g z^~0uCdU%0CzSS`f`&!Es(z&KXxDw&s5zlVqOMjTOYvTTj#SSl_tXFcoDa!p`ugfN1 z$+MDnj9&K&olW7*BKB&<56NMj(~}iSR4Y09&ptofqA-`xFTKCOhrw&~X>$I#1OD?N z#}vlDbjJQ(J=V}R5{>+O!ciw*1O6xsZ;>1k|Ef&#i4Z-U<_8Gf`{?`hcH;j2V8@2} zRkqFO`xwsr5G=WWWJBclqwS(_S=0;t{^kLTeUG7?f*1VT?74c{w1;Y2h^DXTrMh9t zE+3+t7p6pd!h&&JGxB}`*3nrz_sP8;6D3OFZqh{3ptsS)o}5F834GlSPv~xrrHBNz zfuDjN3F`M`)g$ld2?Awb+|Wrf?R7C-|7&xMPfs2TRg`s$iTKAsopl#B=rfbcgm^A&Px(a>ig2kSm*GJrZ|#D-$VYWTRbm6*mzVNhwg7&KdcZ4d zIkjY~HL01mZI*~ue7cx5?w#t9iWk5p&)+-5Ve{ULw}CZdX0$&^JB?ONf}waxeh@d{ z&yAy`UsmkEnr^eqEj_hb%GK%zoPD&}Z7K<5(3~jBJZd9TG0UNm?(AZ$V=3-#8=9(P zo1`0u_Mg2cfxs1-K3x88Mwhr|WMBr|#`U8gkbeGV-J=&H1|1(DKOK7Wts1KI~f7758Ah#mUCPJ(n@Pa$)$7oW5AQ0K=2IE6<< zhM6e**kn*UIC0)?c?`xyukh75idZvw+wso4cy6>8Q5?_%5D><5A@e)`U?IZvb8t}V5c>2aI-?^e^=5YU zw{n6M2qm;U78pk;-!b;F5W4dWWs0FI?c1)%aXHd!VO3g9q|ci!lw18Kz!|I{6x)U0 zStu|!ccb% zapoOXz^H&z>YsL=Ec)TpwcN43vDoEVx-Q8z!szd~A>c3&i*!WTexdzM`umprINkEF zR>`)>6VJxIr-zXta?7uLT}e>*VZK@R zWkN;6Uc+cIM-_zm3XORv)|D}r>?cK#D*!l{+wPa?f=IG%!JGu_u*3&jDH+}M z&wc;~tu@7IUr^%VA_a@hM-cRo=+4rWWT<88TJ^rgWQVsjb1B zBy1&L$NoD@7j273cy}{zNcZ0J&7O)X#?_A@uX=LMxQPq`i|p|HmsF|}L!^3uB}39| zdRzA1Zp14qx$q2&pT4Bypjz$8!7dt`tk`e|u94NeUAhx@xl7DVe+Ideen8q!jU|M* zJa$j=at2W^<7SRnCg&wJTFOT^d1tOU+M3%>Gk^M-Pd@zpTea|s>gEzvMQQ&8HfF^q zFl`2O>#SLB-ZgLxG4Jd}7rOqbnwQVYAG@|k@^JW({%iY#a`}4aGQ0DS7JjX3h60Xh zMicWPU%&5Iae^lK%(CxHHq&+?Fd%Y{Lp$^~#Ueue!trD(Wi7^?iF3}9NEc!A^thR* zTQG~%x>OIaxNb@70eVxAJ6CVgdDKlJ-Y*>Yxd-cWms%>2l%IcotoQ&7Pf%o#{`Z=Y zEg3QaLU5O0exW`lsShjGG6na#IpDgYY|B$)Hw3-FDFK)LnX3Um-suqoI$&=W-I^)_ zbSGe~a(##NWH(QE{*(I)j-whQp|mNkV}4gk!#ys9MUZ+498MM2p?1 z@um|JF7aUU771~`v+<=K?Ijbsg!gBFff74e@enOKY%zr-7wisfaSKJpBRzL3$DicR z|HzexQ*w6+MpyPceg)JTZ8;P+?p8V0(K4&K8jG!w6hc@tS_so@qk zpQ;b0U0|V{^+>B2VhQgyy5zu6uyaV$nT}_gpb;|XQpEl%SS3<`*x>lqZlei<0w=;5 z;^pzU$xxMf1ix)o&Pp9eYhmw0>IL}PLSa^H;vNBtuWJ?tc>X4cH1_0Q2QdVYJ0u14O>x>3;ZfsCq-DVy}0&0A&`8z z`!?!a8eSQ;VXZm}9M7pc=h{s?*Aw2OrUNj4s9bhpLy}ZiFwWBM+meu+&SFt&dvl#fNwrywnk4v6|YkMnujr(SWYxd z)paiGZ7ofy0HPPp_i%MOJzaAJKf{|ncROgULAq?)bEi7}uOF1&iHWSs{1~_5;{dEU z1q3Jlh{hzw>#r}zr1)~e-PG#1o$-~}og+-|uU;2>p2CQ+H=rFV{To&I4@my+xDO%v zIkwd=o0@Fnb(@ZQFzJsbJ}m221r;p}zRm`aBZc++wz<+DK;Jv-AIY3ptJ>Rvq=}9*rdHxPPwUfL0ea2$iCO-YikY`lH6W02QpS;H> z6-6Bwm2a_W5)Ti~TH1Iza`*}br(O+y-#iB`586?cr@0wO$_iOftqa4+KBA*u?*36< z?8LmH(Np`joHwDo9u_lmOW6l4H~E>W(ksXDOHqth^ zvRATbn_ovxg?3p(TJmfiN`)@iVA9l16GG`QU;GR&i+8c z61%CzULDVQayy>61d}!u#X<&4nYRQbFbt`>PG?fRrw`}@eRBcrem&OgwC%;M! z)7_7sP}%cd`@Af;^$2-n8+2aBbq-z*0Vn6qoageJP8C%J=I_pYyoRDCo>&eZstZ4~ z&PblNt!K!d1r(=8Ecx;*1M-_%50zNY=Ytngs0XFUtfO^j^aOPOj}fMKs}U{a7nv4K z;|#lB&!#o=$qP?w$L9A13d}qrg+YqgY0CW1a8Z4bhJNgQ>r)dqbZLLvV+yG$&~7b~ z)exe-I&Pu3X;1pooDdqzW)KmXLoNi`x`Gl#jxvP1KpjTA6y5?Ci10Y!{VZu-C`)pa!CMWb~H!yK? z6V=uJ##6ZpmM1)=O%x1rHj&n^uOxCIO1T+Ds2k+{w|qZ4*hQE>a~uy2q)$TX=~}%P z_f95Dit=8+wf=1nL3ro`&SZrZ6~2y^U2*OK>z8d;5b#>H@f zhv#~hdu`Y^{)DRr&8{pr?=t zY^-TdZu|TMZCP@*+)E??ErEbQpp7Rle8Tqju)dN5f8CCpSGXnIYGSpo_IySdZWM-i zxs=285Ph%5A1SDbL?70S)U&`T8QgD)+r0n{p#X1)I+sF@vPaWiSJ2z#@_HJ9j( z9+;a7wb`>{&WiTr^y9z@r_#0~)eiHe^u(b7v>dAjwT%Zr7k{=e_&Df@ZWZ0I-`QvF zd(@3p4%bDz2m_aoouBv0)y6I28f*@mOo7M;(!wg(oId$50G+DS(`>nfL11(Q@Oc7nnnNo8w} z9!2C0ZX^JVW~-gxu1^&?0qFTRta4bEMRXR90W*nmj0n|e6AoJJ4sUrw4*l->aio0N z_Sd{wpAG*yXiL_!Q`(A6eMpwnOEHDgWnJXrad*wBT!J{ItL%Gy$i?Dm>|VbuKP{_( z^i0{e9An#2E30q?o+LBViBF|Y6KIc~{Fv%*a0wJ)lOees;GIdpJ_B52Z^LFhI%leS zW9QpXewub%1UZKiLnGphQSQRK5b=kjzZD$o!F=zWt8*5H^uI>7oh_ODo$^v?ETaQ zh$CEfp(Vh0DTS{mApK;hGt2#PsI%;(z3qEs+cyc@i7}#w>`bl&6osZNv9sdohyg*r zFI-&*ag~y1FUy`ZyeN7?H0*C}A7Q>EHdg96DmcdMO!>kKL?w7kX;FJgS+hKCUZk$zm2^irE>ozfC@qqT7>`_X$ui*sSh;CES<<<&Zgx zFV`4xFFFf)1<;BWM#+!e=%uRQ9}B@&oY!vSCB-h0ML$i>~i++_R@tcG7`JTK${Y3G~PPnq9qW8z_SVyIM~PgMYl zQ7aS91Qo=-M1#G3RRs}986Z0BU;rg8qeL482HXnb?Y;(>qIl^%tpTkXIEV~nVs4fC zRJfuI7z!LmtporSmWB91n-*taxum|ubz#QBCkD_HkVC+Y9^eAbjVdUHrG)s4>|&sC?o8!;lN8pwN} zLj3L|*xYw}H4jx_LUJW?2@kU9g<9`GSRF)M0yO>BpwKUrEA}N?Cy|;|&LZbNlu$Ts zv#39XkeVUFNJH~k05qGbk^$Q(iE5Xkg5RGI$(d71g~~bKI(>v@*oM^VkD1k4D#-)B z{}Y7A*xiw}22jtv54MXCK5`~vD&;$ex0A~fCumh^ui9eUD;m2%qTZ1)s*IRLq z-9)uTe>N_v-I^6V_9woa^ ze*|p7n~CzPcZ~-a7HTF#iqdRqkLpT$5V|K}F5%19&@Y(Eo@$k9R=z~6nI(`fz=p3?vNh8t65jL}zWjJ`6#IlR5Q{%%lT-FHE*ksh0ruy%f&@;)ek z#QRj!Yp6%e=(eMeCE|WeQEzt73AJ`7#|3z^NmI(aq9d520VxhvcPZ{hZ}I6C6mvh; ztsiFe9|O&OY$ZCMQ?dchS?!hP~S?1tvU*JG!KXOOwYbPz;KCKBV5!I2;@Z+FzhSC zhO|0Mi0M8X>ZEVJ9VUme^-blA6=$?2%-^qX?I<-w4^8eMDxf7O`7Rj(5b=nfA&!DPi7BBL#?U ztWq5k$Cx`5Y>XDmGaHm`gCn>Tx)Sz{&c@4DxNz0XH?qQ(TuM1075J?sm17pON<~(z zyJb!+rZ>9Eaq~Ozes&)1+E@ek#bl+*Len#Jg%o-^+C%*Ob-hZt_2m?`!{nq5p)*W1 z`|~TogY%rCMQ8c3YM4`!Tklg^XTQA%y%XQY1<43WB10y=X!f44j(2(pclBD6>)b{? z9on&4eK_<($~{kG2)?U}BkA6Hn9r#^{g6J%u@~3g0-EC1V9Jl@K31Y{F3O4G9zrA`9JsIgz;_u6F zH#w3?OTJl?|JUk4BnUlT+W~NPDuF6+I0eL;#pk~Of`rfyaoQI2U{&e5Axk#-Z0MoY z9r!k|5&QvyjIBWZQUNL{lRF(Td>1yV@pb!dS15 zmVIC(UDWxn-~2r;_=4k&{VadQOnnj*ynpJ0ph{E_uWBKC@%S~g6?zA#g7^VMW(^#q zL#I!9+;6=PuRGuE;s!i}e3tGMHG|mB17!SH;fHVK8v3qTQ6*M;NIq8!NB*A$@h^MQ zua_zsQwE|*lm44P_80V~CA<;9D9=Hpl`uvo5HI}3FZOD5wnienK2eXavF5Ti92<%s z>vn$y%on05l#ua?KcYvj11)ql7M zzh034_&n4A45jdyW|e`zOoPAuk^k=L{r^7_6Z!u4>Gi+80=zLnW?WN1PUe4Sg#X9C z{I?hVz4Ot2y*eDBjX*cgob?d=S%(Zibi0Ut+_7 z;9%79lMk@rycT=(Ul4w%4-L3V+_Qanzl>?0w0mrB`({XH-v&^k!8*I>HsSZ|1|HG= z0D<3$#ifAQH#S;klvLT1O9AF%B}mk10&u-41^`4tYYGKHz?!|De^HwqKpK94*{C;> z2@FVlv?3cpm1_m!X|LAaXMnzk zmNHbJc8Q?g``059UTQZhmcV11vcLX=!!eAO5f25DNr|poY4roE=yt0X#@!c@LnTi^ zNbyVK^HD%3r0*5jlg+jOjovyOQcfA9S6cVSa(S^z40M*3K-{+>EHyH~c|m_T$8Yj! zg;`WEXw1!GbnSso-y6VC*JwDN!v-8oCtuGXl9*HxnOcS`jgy7^#|B?QNgjZ^4Q{%E zEO{7vn$2X5+AV2>J->EYC+W)qZIbjw`lV#cNkg+8ty`2R|M2iJgeXEZahQdk{P7hP zXVGuq!I&JEzs39<%+WahbnHW@@Ln?H&MxTkbs!n#%|e%e!`lhic61<1kiezb=&|$+ z7>u!7pRa`8K1$-Ye%|PfLWAhgWwN_fBWP29pic7eMeaq*aasBR7_$r@f2f-2X~Tq& zDlj3PECR>&XkfzolxWt#4iiPNal1q&yp-Bci+r8{yxI~9BRKjX}bl+p{Ain${&OCy%?sQV};mG z@tXt{O4YI+{lfRpjji#pP#A~5b#{6he=I0p?Kz84Fi^XVsxEY}s)t(aRPgewZ2uqs z5ycoxFb-mLf{dyEHB@}4FzY~0w(oYd?dOZi0R1ABoN!K?3C$X(H5xLjQXjBy@RWo8 z*mBPSAUUQYGmalv4l|tqi}M9w-5v$>6k-5hH2wL#AP!6j;hjm)4NzU`O|?BjcHXoA zX|;&Fq~SE5NxMRZl+%n7Y~3N`UgtaN;Vv}C!=MGy%0~+dsR)o8N$UVOgI_27%dU=qnBwl6OHg<+(uTpB<>hw=DA`7nQfgCFm{0WL^9CF zXh)don_E*QYS1r3M)*MZqovN(B{1NI=cK->DFk$&OXWHCBE6>UJFNOlPdyJ}biqfW zj$3`tSNrw}DFtcD_Rw1N@sxk}@VfwZ^M_eH;d4qLWqAXb$5L*G>-0#tUw+D*Rf2>Z z1eFX6D+ZEsS+u`8+n`0tOAgiwN*c6Hz9rLtwD|r8G$pzP_5o00ap=kx55i}&al-+Q zu{P3RRr&$gCW(Sy?6t z8IZ+xyBp`ozia(u)UXv;bvdXYY;1)+&n}kYE50^dl;w4GX|lIM9j~&RrMz19yyI5& z$x>3!6S{^VA*>`XKqu&CWI83UbDbOC82_Yj{z9g<8H1q!w$qvQPWW-2bOjFFiYoCb z{c^l8G6~jkr8xkb8OL^G?4xyI+r*D*M^iHFdDo!Q0<)C%Ex;hJI5`JdbtP7S%3Yb= zdQ3EycB-T`??DE~?_d`#9P=V$%p(dFs~CkEE%Kp4@9)RxcRUcY^D z-Ez`-W30m)1?|>|Q`$%kox<3w&9zqQKj!?uX8y1LZR`~H7Hf>jVb&t}ZHe?zOKz;P zpI-o)|7fsQX;WHR{3y=~$ki=1@Hq$Li^jnhvIf`o_rM z4)6i&7^zU=XLGvy%==Ferw0562wQPBe)mJG1P;@1D}ZUx)V0-v^jfXl$I)mX8TxLdswtZSKdzHcHoeAut~%A`_mwv4hlEXa6) z*_lR--UH#knL>y6r2|;DrVg9TyxzgOAedhQ@}~QMt5lfmx|Cr2T4JZnFu)sHja1Ro z`06)!R0pfFbEjLaTtSmwtdA-I;>wr=ij(~HCw1OiqR(GPuG103zbA)EHc!2(pI`H0{9B>_0HwsYP1V9uc2$T{sx4hKp>(= zrqUn8uCDsrYzDf9@|41hX{%}@^=nzQJx?onY$eX+MTI3+D&7)F;Ut@sQL?X|!KHsZ zxuqSXnq7Ym&pw@gL7PWHI3hM|`5%{X5mZKelnV-k?4R%Wp6qQC%};p6H|g<$LDiwg zenaSVg*pdSAct(uW`Ct$UeZ%u@a+EZK9E1W1lenERnnpcd*pJ+Hsr6n9^xIT)-4aY z$EvU=A(fpDyNdm(gShfJPwsu%`9j8j5IH{-5}{%rG}z;jqpvujrlGfJFoI8RoH(6yX&SY?f`uGb_>nu7?I%(w0(dSHc z>@KNv;%&yy&iZI*dn%$xql7a}ZyK)ek#{j!KV1$vYYRUT=irPpK$Xe5CzS zusK;<3&PXr2eVg7R`vRkX>9V6>GFavW3_k$-uu=&jB}@a1~qHpMmXP6eD@K%zTre* zSenr4MfWpVrst{cjB;XpLm>q!Y423*%fmEgLR>}a_4y8#EDoB9Q=NC+I;kFy`M&+oN=Sg4;xR zx1G9DXnPHFUxBcw1_Ye8ei0tE5(p?|T)-r2b-Q7-3b?x6EM=8qTHAVr*<)i*0=^GR z_j!ruK-YXSAH=+z2yf8otRgeK`9$Z&)vGbCfL`gg1Nney`K!LBB`!N3Jp<1muDio8 z8K{mTOvBTLYuec)gnMs?(*8L<|NexL5apbUpWu(>T7--CT0aC`$PWY0c{S}`4)>^s zYKfz~AnoEr%XQrQ7N|nFUsr}KHNSB{vGRzR2}n1A{{+jU)-3(DLY!5(&O8j!Ah~n1 zQ;^#%rhCcUD@W$qWP>o0bkys=2 zK*o|_aaOOBqwRH;*eKx``o%n0(O9$EppX>%F@%=!!(gdtT7mMh+$~h8)Y^qNPZ(q&E1%z1 z3VI0j8XoMmXGBOaL44xPW-D!#LoaTo3; z1o$6vlo&qFlJ{|ati*Qi;S)%dLI=b$bKudAuc7%cIy5T+-<{mBc|W?AXnK`(p;N<# z=r6_jj|CNjIQOL6-9%h;U&}36rYaX375nG1rt}F@Hv9INX-*w)bZ=ESXQf0CZ0Ig;~Q`0(x3i{2&} z8+RLl|4}Lb`7`;nXp>s9CE#e>Lz#aG89GUlRT(|VV zx$>sd(02clF+OUJnJ?6GxKN9v%zR%z*G+^sBkk$kFGZQ?X^j5n+rBZZSwEM-*Dzm> zP&|+^A~+eN-Ee|P%-&THf0<-=$MJsa%Waor)~qr{gclrD;Qh@W@+nZ9W8tF) zYU3T3OGU)M(PjCAB)hhHLyDvkTme_y;n1)a@p}TOr^0XeK$z35<(U=ttYW7q>D*T^ zX1w12Qbei4P`MNdFDO=i*<|9cW$%F_uJVf(?IHdIGtCG6Y+31P9+Hyx(qV_s!O8S3 z=y>a>=0>Xx0%Ao6*m#-sYF^;u#w9qhUK(}0x&Odsf|rEPAu~58zi^yEz5Iy6eVtv2 zRY&XS91r)zY-{yP-sfn?bx^CBjS4H_`STrN>E$vUD3*kz&rzM_h-K7Cs+WbWER}s! z+OPiYI=N!soe2yaB*4v~t9i!4P)^7373!Ro=4A|S?yUm|9qEnAZd)k|MU+A_O&K4( zOQ5?(Om*@}PpgO`%w)8b@ND>wp44A+S5`<$ha;G6Q+t7El2OoYA4(XbO>*J1uVAMh z;c)rpu4!)yGikFjCugbI%1ojArL^m5uGcUH*Ykq?wGjoN%w1$96v#G@@E{@5xq%zN z!r)O^CUxE9r2L~PTkPS+xCUqD%c*6%4C3+4(XxzOP0b;9qi^x#SCBC+aqZV`(gcLc zUu|3i2$&STf5B@|7bh_M~&&GRuNnztHcbV<}1sUIqsSai3}6Sq(o`m0;{i z;)w&+3&DXNM7WbF#{rzqT&}y%l@vOa&E)2V$3A;`k?nn_exEBX?ZtP%KIBH3N7)vh zV7?3C3d*AQ^WteuM75m7B%ncDDuw1=>l>bIr*M1(@D0hUZ7J1OW(Mtp)E>Urnqf() zv{P64G#8&gO4+{_=}7R!Ad6B2KJ&Ogv=IIGeE@-}&Ur7dJAp&Gv_BZv{9GOHVYaP)~Fs6E$QT{2V4!#Ez! zQ~4^PqvhRsLai#e%?Ek+xGdP=&d1EJukoMEqQTc0!bBkFlnAkE1;F}yur>isc|Mxg zQDYV9qY=Jhjl$aKVj>7`kaON9%(BGi2i*oHPcfiigZC0#c~ujS2a1pxeQ={;il?>7 z57PKRAG(3G6-(%i+x2$idJBjeItJ7f9@{>_PvELjBydV$a6po*Z(T&(5&updX3#al zBPU$Ka3I6)<)4ocA8SF-AUFWylC97M?P2bSkG9kLiCmU6s~0^I8c@R~ZupxbIymL! z3JU7-b?iIw&`L$mA(gD$uSPmA18$=R>f*I_DZmZPy()aUd;&vb1F(t4YTQ6H8YjFV zP~p=-Szsd3!A;#XvBt;?0UM%oxj!(VU$BSY_h`inBtCF49?A7Pl;p#N3Jo(O=Jy#9 zbfIh60`0QbfuKeRBkce?4mw$*P|rJl4a(O(?c(C^PrI&1Z1WNm;RZsjW;3#|PzoLk zX2mNh{pke|??Y*Pd46)8WT}=UAJ%^!@-cX&Hmx@V+?4Tu-4sux#4Q>a706K@(lK(G z546^8OoA%eSWtWO>^5p_SiYtb_7?%%`3x97oS;pyva1_RH3~z5XE#=nVeyR|KY+$QdES*-RgggkqN%nT z<$MWI!?S&yHR|uh(}ORz3ZS-xxMv8I*%-npw%M3lUXk7oP2x1CCX$#aWj4N_7OH56 zGu__37Y!7X*`lldY%KdjTYg@-6FpgeVUuTf1vCx+4ID((-e+-JH0-t^^r5 zuO3*3w-Sa_8kp0~i$&a=AzxPwF>)78FMN<)U7}ClBhSfcS6z0GV=A832^4x>f;W06UfDN)&R^Iumsij1qoR+Pt-gj4>kdWVKl0nf~GaHJrC5lrORp_v5vh@`y!`}50$P8h4bTBa$sT?y$>SH$Ekm!wZ)1G z?o%yrdk@yD)& zpb|oRh+DM5DQowQBW>0Gcs8iE(i%V`6!q8i8Kgq>J0B_-Y5Z%q{q6Xt6{b9gXV<6L zCtttAcTk!bkG%vfZJ4zhu~SAng>gy{t-u#l3Sg`%s<>EuHz$Hih#M zCUa_2W@M5mAlCEDymMw+?nCx5xFYY|jGb0N2!q}`)@MRP!m%AM$BW}?hTFQ}r>;%S zJ2ZbBeE)hzLIRc|A8EWl=bBRe0p#W`p$}Px4Q@Zb9^kQ>*3F#{hlb?fQ%j95Wd}Bd zPIsP$;kq8+7?VwF@$5?{_Ix+f|E(axW4*q1%TvfrpKx^tFy(l0@t21_yj3ZY?4L7! zSHMI463C|?9<0A{x+^R;L|r7eaGRkoz_3;M_&KC@K+)6W4B8U=hH~8xk{4-)gX#l@ z=w#lJNDiFw$%*XLOR-=&fiB>cK)s^_y<-D#96}a!*>TvT09N&(xd3l7R$S55p*XF7%tpRYWZTAYyeN_5EqTsuvdrBdm1y zzVc>2(~`p>zET7m8NSuYgRDO`HiTQ|N6cxMc{m95PFLw|aa~qKl!k*8R4hVN!}`Gw zrV5N-LrFMx)iKf~&!etO1g8afADbZ#M3iSk?s5z+;9J~$qH^P^I2Gf`Nd{pB>zG!3 z=IOdaIO&~HYak^z#zGk^1P)$%$-aB2|9poUAOD6VWz%cn|BfUjT$5nlPC;vWJmE-) z&a&;F4d2&&_t0qq?9&d4U`5xUx#xe)wmlMl)AzNRuSO!^w6r>HjD6?krIn3`f+Y2` zb&jAO1*=FgS;YAqW^Xd!INE?;dpX+Lz3d6ynoj_2z9CP*N7ee#*fj+Tj@gIK>np%z zKH3RSIA2VVGdY`#+bTX7g{vYBSV4`HcVeQnfacL8%zgb?I=f3ia8AX6$SZ)0>Srsz zvP1}2T2_3z!cgEYC2(=u9kKKGYy|*_F9JKgV7N$!-(@2Ni}Tqy6di}0x6f&Ff=?g) z47Z;KJ!wT4nrc=x+U;065Aerfuun~yBSbLR^*FD({qCpCj5pXeC7BK}rX4{bB@X?z zVx_sWHXk~Jdt27XB%VT3o4UwubzXt_QJW?nRD(?HtXmKr^5uTCnz8b>-?@da^~J^6 zQExSjxxjP%=ql4X0%|OBHR^SB(L)BSqZQ-Dz5(4svPErx@f{aRWFW&!&|`3|ICf4M zu7p1r=!;qsylvFff+w6je}ZGgCn3VDT~T_Otb({k#8#Xk+???PSn@|xBUWN_kvz+5iHT- zVy;u>woLfE@;|xXV6)R3=Y~@TgRq;#CQ7&S6%IXcIW!-+O>9KUW3#SZY4y{jH{~5Z z!l+xj$}X)34n;96Y<5GLS8v#1=t1H`N3t&W{#YRX-ty5rfeeYn?0ac*{8^8w8lf^6 z;^X2m)I4G)-Bjib%~)Cbn7b{lDoe$%PC)2@aAS`G7)FRq>GF{Jb&B+qGKn_&ba;;h z4~JyEU$9Mc$m>7}9!E(Y{zc$saGNj(@!FIL&*Kv?O*v#HlzCL|cCeoE`msd4%nyzy zu}o0_lIz-Sb{))?ljP}J+#givrN`JT@RlF43|Y(|D^{NZsJh~iV{C2?OP2=EqA~E( z?Q;FhFeJ{iDcM5U33f1AhMNS0n!z@(5Ukhe2YrgZ>NbR<2&}I4S9Mfb!!64M%`_hR zSui!#`$$8=;WabiiVQ539`y@3+$K7Pz+1S&7I9+ZF|ReQ*Qr&&0RYQIrmW<1fIFGX zGY(@j@HRWPc$!(5VYAYetCS(p<`Ro>im@xopI6m5HBwrW-psCquRmOC{)$oL zXC;DE=sPdG7sz-tK+-Q9bOg$&JA*g@mZ^jicECY6of!55_X6+BwF86u;E+wUU(^;t zgw2~PqNeCY*cZQ%?m6dqdp_7ruzR$mS4EKWbs!NB%OzR1dzh;%vDX@R`D9<@y1RUoE zzEPO3qTGaAp`K(uil;3dRxFDNV+~x6td#=H#?yrhaI%Nzy95rfMcLkXKogqHAqsYvDD*2ExaGFE`K( z0<~2Hz{xosKHsynA7LsXnQlT>s#O>TxZ0{nhn44m#bJV1+LO7%u%XRkE!_Kn?eg#Q z;m=nz^FR}{N|}q6QT(?PaB2Q6MOM!Av?p?!P5`^blz0NYnk8+$51@rx2WBQzAs$rs z&#kYaYm+7_BAZVH0U{9Jqq6?sFc(B5rA5n^T7}W%5ycFe^z9MKhwI~?N({uwF_RXc zH^dZI-n#XbIh;)QQ+G!63~PNbNsz&$%0S{Bt$fyF6=g??H$7-m08}&N7}cFB{4~X5 z_tE%0Dfiqs;)1U%wd+)?qVhve-sO(OyAZCw%sbdl2q?u&)yR_`IsrWgD1yH8v3(Mz zwZLtk(4`p|?G%w}pt31zg1yNi!yU0s7Ce-aDw7+8-?>pW-@% zKQsze#tSwXfeNPC5Pzn0XnOfwCpEa(K7}<#8*l%S2S?(ZGg^`=tKIf<+Xzuj#~~%@ zA1?~NBexnPA)2b?2!BA3Ok$CBimA*8;Fg;K+ zbab=!?=WQQiB2qb?E*TcHbq-igpeOQ(V|Z~g|TF_K*RxFYem|dRIk^1sk3MBFWsET zGyOm`3b|MjeV_2q;0Mfhc8vL#Mi=6Eg=pItth|OysT`&^g)DuWJm%FBKeFt~5BBZ| z{Rwma{j}HE`3TvS`k<%9`1@HR^cr{mEGG1da=(Aumt@NuswsLNB)7kN&ni|7#}8Ku z*U!XI45GM=M>c*eB{1u1HE`;0I_FE5n(B4KxH-_Z0sYy{y3O}E&@b;{$3YKfG}ZI5 z4n%6-!*cmM=hwWMuPcym5hc zh?T};7KeOl2WRz@Q6C8cM^Pj@_1?F7AIRmf}a-aJ^Q9&j4+za>u&+?jpUPsqe$+Pq0$atHKhMp;&udPeLOf z1!C!EB`3;x&Wn2mj}K%xyrPxydMTsjj?W(pHpA-W49Ug48mks0ooD7%Uex77YMVdx zNgI?9j~IYllwtP%GG23*J!4sSCMQ9tVK)<31RdFsa1Xh<1&P3sq9xY3eaO=%GZPWt zHIJI*Gxp51<_Xuaxb;`HLCJok`(O9nYUJ|b@R8Q?U(3s%)wSXc9}ls{2m15Yf7EXO zym^DgDz_Y+4!y8kuEqDy{rg{3232$v(E9gf*!wS=|DTIpt}GI8rSW`~^j8SRAOI=? z`3l$%y}Q7TvJ3cJ8qJb})1%q6%}{QXY%(u9ZRQCUJ+ZLZKcfVHelrnN6!4viuTg#Y z^WXi~liV@%WJd?!sMB$NvUh!1hRb58)Cims76AM0&3AR3o>zOqe{T!?hgTFQk;Iir z?a;;hf4yjQ!Hqyt!zz5Sukx+dval?0C{KlU`627?tdGCXwO?NmaYC|0oXqKC-~RRL z{2iwHhgWWaKP&!PK-|A+ME~%{|NMscHAv1;O~vi5NB`4h{`-}|1cOA@yZOoAfAT-Q zqNsjC}&}Ab9nRXo%!FNgRzH& zLhye3)<2YLB5hElZ5r=#COD-M?x8F_{%=>hfD(L~Mw66j%&)MxItwbW%8UYy0TTu; zz>w4Ox;WtY?5ezjj%02iEv}vee%3DF%suW&&Rba}jY4P7KWv({zdTDPo4g6(< zi}a&Y3XySHL?ih#tQ}2Eh3!dwN=;4G?3IiK3ZKSR_Vx#u}7kxaj%wL#r?Be;P~es>7^CFTF)?5v}rUfZ?}2r_`cAdDb6 zgouE&APobE(nu@a3J8cO-5r98N+TiN-5pAUG)m{tF?4+Q>}T)&#QVIyYkmK)_S!QJ ztohw>#c`e&M$z5&D&T~69uaz{7qAnT(G^1gGh&tDaQpb%0}U<*;tdwU#1H?v&m`_K zgVS&|JW!?n`~+13?P^;p22Or*poXyk%tF}?G{oqFF#Nr|C3vW=f0Kd(x~0W%YC3;eY6_0MR%=TspClPv0G-fnNXU4=_H?9ohvo#G5kb{7E4SyY?{7TRFxGqrJG#n8Pr8ZI!!vOR~hqx@LzX#lXWdj#G{ z8zbbH4SYXwefsleCaWE-R;L>p;C^h;2$3kxuRZgi2vG|4Fhp~t1T;@U$#?u^*WJ9$ z1mQQmYhSGa2#NIo@+`zJG7j=JgmF_bmhU?Q(r(k?PraV}2F%-adk!s(=F; zy!@Q6S7YvRO1h6zdV7K>F>FR7AMiUjcFVwyZ66k=5=W2K;j!qA?=~BwZ#8)cu%!>6 z!xLTSOA53*pE+VIQg5#m0DIbuao|>ZYA|kH(vxdTUw|%KcQRtTfjlhN6A+SJJ_7QAV-ccP(o3ew1AgB zuO@xFW)o0Pp*Y_WK|U6&4C(=BwrAk7n_9kT1G=Z2j)AF^f@lO@`(r1pOK?AvtDb%~ z?IP+dA9>8%J1CRHPfP-dXwH=5EE>RW@3xI!pt9n6V`420vFfIy2%L?137-BZ{W=#j z|AO95u6|;-El~ZB0uH-VwGG|`)b;M6IW`xM$Gc|Z3e?`gXj))cYbKC#By9}O!|(A_&V_(X*(qMS>qf~A%@?$>!3fP zjr*G7L*!@Wl_bC(y2R*fo$uXGp$n%H=p6}xu!WUfK@@BOKfae>R_~%7V}Nc>x?YmZ zT8qQ)ZUG27Ux?(3A^-Ez%QeJ;-jH$Zk1p_s4PbWAkvyutW)BmGBLI1qZE+gZ>w@#%tdC(D_<8(jg+hyT zLH!X2$DdeqKQbN^>X=`EVH3u8hG?AKKtXdbSBJML;0Tc9i;Y)^yIJLfc)rwvYG|5& zzm&(_r{$$C5+YZ3u0>0TU|~La&w`617l+%Ni10%r$#~L{V@w@yRIl2h39Rnd{jVS4 zF^EDqn+Sab#wf65oXB5eO!`QW&E1aQ0(1!0rhaQ6Kj!yo?qyI} zvoQmcpE4m#ti2I*KE8MM?ydh=LQ% zpq3~G3GVy?$NO+A#mbuq@e8N@A33egMTkc4E4Z<6QoH_w&v&1i8_(a*1qYgrlF(|} z(V}_-cm2W203%~#do;c`#X5T|TqpoeJ}+i{`o)*%ecX%cJ10S?y2sYSt!E!JBBR9N z*nanMu`Gh32bKpixIRme5s~m()A=-}sUxFDiemk66aBxW$f>lJ+=;X@{ zZI%n8fi9VZ`FY(>9L&Fin0Q@l{q-y$A@!~*NA7K|&rRuEv?ik7s2|{yZ%4~=br=)1 zQm%j_U9nDVZ;{Z5^y}O6XacTf6G8}8hnx33^~bDMxh-_J41Y?C%QR159XFNJFR>~6 zWYQv}OL5nUt?>76cl&B<8T~?Avfi37&n$aBfzokCez*9yfaBkEFlYbhQO?kRGNa$t1K_Y6X4bjl(`xRmq4^NCJ~o}h9Vr3Rgcp{=DCR|V=>>Ju z84lq0pW(xuk!TSA;!FqzI!d|=>XnAaZM*}7IvH_onpa^G_fdWephdZJRyU(f-r9rl0q^Sq4;?>@WqCCxfKWwAVEh+w%~^jn zFR-V-FI{(VA9f*#8k|?hm{(UYLLIH7M#STn{{#-w;nARkmd1f^Z=I`^ku9pKhm0@J#n8FTm83?AQ9 z-+xz>0BFwXPFIl83BtVY|8jeSB<#t;XwNe2&synQU8?z^c%-1o8fj-qU?+AkW^$Jk z_R(~6UK$7EwL2)SIUR%7d|UxvsUo;SMqmP@^5UXo({bY^Pk|gl!Eb5 z(k*yj_`jTuW4-?p>BxS8WZj`Mp=*!cWiH&a$xb}_3GT!X#~TInnNvBPab{IXQkU&c zKIM-w!$Gk#a31dd5sl(A^oAn6D?hP^PO6n~dd=r4KJ;G>$nFr&=Z9b= zgjD8o-g3_w;{FkF4@uH{k{H6-L!`bPcN~V_k?Yw)t1i8$u4~cP+Cdq1`wuu1^NX5y zVOdeZmCdZksU_oXdu5RwY39rR+pHcANc%w}k!ElTiU%4`wTgt>i{AMP?yKUBv|^Ym z;e2t(N?y;9d{K|H$4{B3*+&!Yrm$3<$sAmnINK(;`X$7O^jW({ZD<)OGPLY-h2GiQ zOE#AKm2ywNL*p z!Gwlj)CO_=UARzpz=GD^!oy4*t_CdJb$_pmn?dg*aj{+Po5)%j&|?TrDR)O3-aD!n z*u6HWn-)YpStyL5Q$*5q`0*frvA7624jm-y>_?{83sHcKA~dr(BwNf|+V+cSUi8RJeg+=G6}u8_}29Hu^!A;o?RHOtas z!95Kq%vbUGasxqmCgtgya8%u5PG7AWA*G{}DZouCC@GRn&rq_NECQvGY`toaHNpD* z0G{4f*W`;^Q^`VlGlgcjD_X6je~|!=$NZa{DU?32>h5^jiy_u%5uQC82osuj-@ByIZwu090N1fOSr-&nq~o zk@`y04rnF5b24a&jg4Fd5Y40RD{~hhiui>+j`Y8$x*ip6|BjsgMeF_fj;||g6sO$c zk}A3^V7;Z4Z6M6pwnWdovHd2Ib^KPnds`;)7r==B#r*SndjT8tLQ8J<$n6^n{aWCG zWW=tS(WIq^k3=Ewj$QO$@o8M4Y$eCu@VP;gGe4C)mEEafICWS$=s0?y<(YU&eAXq- z-N6JMaEcfJ>tFfdc1N0apq75q&w}0w>C18z0kdxG5bcwh-dWa%K;BVA-@;=*FWE^Y zcaUIz7d7)eA0!t`ciC1wCagg4nHYRj3%`za--*lzvIXLgUQ=RBxKksqp@`(nFi_j@ zh}KBfUQzuNa4X#69f}I@M|86q+ycZF3+cbPAa2E|HskPJOyt0is4F?k!3=9!ILA@ zsKFM%)jsizi+g}b%!8_l#*^8t_(=sxch{O^1Z;07)N#mcb8Pl?4n32 z7VER&?2ndC(gTIHf`|6WDmOv@oTYkz?Fudt8SF7r{T63-r2=1TT;?IO>XzI^aprAa zRgw?qYVV|%T+XBg0%iOOQ)XeePIQBKW}dQMgTfqw0_@3P?m_tW(k9V^ttSJ--Dqa#B>JhI!5DVTj=KBL&q0rIchz znKsH@5Tb{;;E|1axfGD0qD)bOU{37Y#x6k5hH7UE&uz5#6XX zQrJyOIzkdQla9BFF0J{`AVvew&=jL=8GmNyq&)#<h^R=y5)oUsO~y$8L4{cwo4yD=Qa+^dUGPHZQXL8><5BEE!9&LA2ryGT}>1H>7RnXyTK+mo55eq3|5__u@$FFz*Mvj0SI<)6& z3^}RN&|XX#+tMqP+ox^mYWZ&lE%BlFgfci@{Q7X&A>7w#K1Qml^_hhtTY(_>jI_@x zPpD9l`PrzQHTT$CF*BpX$2R-3M%4*2=hm~Iia*2=LR0upUt#0I6?Guwr*X^5&#=Xu9=|<%C72~(j{q}~81f>*A zBc6YBd_cLM9qSo?tb5Fl7ZVx3bp4@t&0K`%OQBJR5c`|bHV#YO??8quu%`?1Q|Y>{ z??B@4u}ZW1Q4r73R#wODfx-%(a#?&((=3^nltgwT#G1GKH>Vvb=#{K?#9U%FDl^OPsKIP~2S>EK99(uzgJ^!fgV z;sehcid7xl_|GJx2QLjzbUEiOmj}dFizO?gG}kVBz{0)q9tuKH7w?$g%tl}l?YMJD z=Lw90;zJ^-5g$GsCWT;@6hDseQmVUduE(|{8^j~s5NPKE`F;q>8rs@2Lsp>iOSC9$ zsSTTzp;H#&yhZGG#fVA+V`Zr~VeQrYPXtyfJH#Xi8p9IG!O^90m5!3a2w(n@SSur9 zFy-1qR{kQM?E9SDrqAw7KXSq4$BI)i3iTh>*m^@mFHM4c?0L{K(&B{#f)&jo$(yp2~9ym!dac~8` zM75@9wRg!ivjJ4Oit1r;6xF4M0c=e@ND9g^lSBGSjqW8*L0FJZrp`VpjjXd=s$2Zg zBHIDwNtw$~*C{13&bFIC(41kNv)us3Y~JZ(uPpkY8t^@Qw$VC%Vlv0j*QK=%@Dsb0 zp*q($B~*SY4+Ob9LAKKVhW z|JLsC4uQjA@9zAwYo}d=efD4vctPxWP{d_YUKQ9nFO55RCZNSxy}~fLFbvIi?$RD1 zL{%=pS6o27pwoqK$0LYGf+g7qE5U_F?(8c6+j~PPlh1SV;sfxM+?Z`>XTBK4EB=I$ z%bySsN83Wn_=9U z5iX7FETx1-lk`hT(1Z66AQUgVhYIJFq*{bgXGr)0q8bR#@`$Z6M{70Oj(oUxz$hO3 zZ>c=ju|tt&qgjV)fje*mpKt1QH@VHMDZgVcNh;HU>S^Ol0ra>V5#rl~(iZ1FeU4{>9HS^+~ThXxQrev4mM*2gKKs z`d6V&)UNAACDj5aTivv8^XgbcsPgaa&s}O};FBY|lV(umh&V?1U75;l&DULh1UyP#kst2 zO`YO#O5EmOOk9vOGb6&!(U@zGL9$;qWx!OWk-Lg!Gd00Tv@MWz#~<2v8$r$Ih zw~csQryO^#~ZXVgNKhtRR(2j+@nNX zAIVg0kw!pkWCZMI?XQl`&=5|w+R>6*H1QJUOPOLTOF%JXND(*)YOioR2*rDB4X3L{ z+Vr&{pD~>!$LzoZh?8vqylRW+*>;OyVlH%vFm4XiR_!1Ll*(X4Kna@S#N(PFxte^Q zf`?TJ<|_&>5I5bZos?D!;sJi@jP020bim(|dKR}9X3R@NdkS0-OIMb8m!IuA&J&-6+lL%=737b$2~Ag@1Zp@M4?~lDA29H974BNaLj0(TKhdza0ZWr3RTz# zdpG5_r^qHQodW4v-|z%d9p-%BWe&)-{)#yDh##_TSEqNh#YytUr2#TJjw5VhudegO^RVBl)DLj%v z-q?N%!#CU4$%$ivUe|&)pQ5R^3&)dEmXqgmg4TG)P5fN-jaSqj{~|TWUkGK%Sl*1F zAU!$UN^%tK<$AIXB2lKjbt2()L!)Qz`WHc5MQp6jMR(V+lb;!xn3c&wCY5+E{S1A# zeBXe6fI?X4Uge=u_ah2h!<=YFF69$@3^PDoK3K!rgvb&}^4D4;9$r(`(ZO5v(^&nqdJ%q$t|Pa%E0PDijrfh7UV>pD-OklteBTut{`%_r&KW$SFUEQJjh#NZpaK$ zdL<XN6H@UQo5*sJ*t+2-+OSfP-lRu%0U#2dB)Bk|{ zf!p8&mPytHchCwQp{Zzr=Q=%@;n>jKu5zQh>4z zQqUxfaZ>uLsqioC)ZbYmOcHeULcVm0{JC?#T!$E5IRHKp6+LPYfWL((J}1;-Mdo$# z7h3ehn%z<>FiN5AU)Pmdk8NamVv1sCp={@Jz>Awkp0hC?HMNUlt3#_K)YIsL6(yDp zyrMI0r|YrkuU~I{1ifl}ASNu zay0jcy9N0-=^wiQtVFR9!<)3T8kmAiG8ehnlA;zEkpnDyO8ZQTH{q47Z-%c#bjJ(+ z7@Ip~A(e))RJa(FD(+TRe)~)>O>0PK-wnttMT{%-_|hrJN3uh{@5VcT z#zpeBG#yk*;y!NEHEf0*Y)rO#VoBp+XvhB>Nr7wDLyW`OiPP1Hvwkk z!dC}a-w@j1y<>{LA(u&ReSekcCyk&gVl@AyVdYda%Ot(8gU$#X zz$!y=3E_2=4<@Hso%T19lQ$Q^J;EzlMILPw)^z{viR3GM)t4)N$Fg;+_^rjz5Jfio2P%SNq#B5zx^l+WEak&)YEyj?Ejnnd4DpOs?(e0z?Izr| zr#vY>I3fKFlsK-orbG*HXBhXkOk^9i1n}b;(R$k$i-j_G-y;Ts2=gA2I&$%d0{Ya$ z^Am+S;W#+Snp(FJi?0h-X%%(zcqN?1hQc_H(%Ah*-f#8958-_1_=?obnf%}W)^&?S0_U3!m zjqNz9M-S8?u)DtCYb#nMRJL&H_)M6Bh$85)96uA@VZ;{OzV3Ud`X=h;R`Smy@@b~G z4N2+OX2Ob7L{*60=oTe~0Uf*eQ6muQJTrN53dQ!OsdP1>I65M;MZe6!)@Jjye-BF7 zC`=s9%2y}J*5LucOH_BMtnu8jI}mrW zrkO+|Ui;cKl^dxQT9n>7;p_BseYkUGM?AVs+)Osz4!Wn(qK0v8Oi?(_$(~KFG31vw zKFFGhhQ4OcQJgc;E6ts`mTva7vgaepE%p>JSILdOY|^GsYuE?5q7BQ78P)YOQul@- zhbXFYYQ>$4_PD?Jzhv(B4R=wvG7jGiXS=%?KX<b0 zpO0IaGz_R>>IAQ!MN{6Tnu_RkHp{z{vURe@SH7_av2Tqgu^{%=p{Iw}Q>A!DJts}> z@CZ9yVY9SqC`X(&bEIxiFA~0R$`HYGGqO6qzKgioFJPGJLDX`lVM(-mKCm3OPcuDz z#=BESl0P2@`fqoTey=g-jYpisJZXO)mHhki_~Vca#^wOA6M+Figz6Nd*_?0fLo6m0 zK1?Te-~Jnk%kWZ^@m31&908L`8${i4k|P3I7(#Dm|DOTRzqfcb9|P_zKaH^K`QI(7 zNC^#wLSTACpi#F~f7%HI{c`UfYdoj^WcC$~q3pFC8^HAilH4ne#YW(r{bCaQbM{Z| zF8>DM{VPm`hTBlLL7M_)D>d>jzdW1T8=WnIxwat+D;j=KT_EkT1|H>uUnH;GbO`CMZ7*w;7+BHUP$f27nluGyPCikk&V%0(B|uji2C`c=9p7T1zb_;v z6&R!zn4-M|lDw|n#jd>jy;TZD&xbPUe^onvAfgd6&EN3@_}>|Je-iZK5PWBywF{>d zC!@g08IHEQ1MO$tfBuPRlOeO+h3^4;6NmlF0Yo&cj$o3>|My>Z1}Mc{Af+%B!D{a+ z1+Ea^fnyM?p&OmUFEVYTSr}#U^QfbJP#|GOj~bp6)o1d~R{A0|#(zTFc~coW*SvT4 z1pa$O5d$yR61`X~=gw$<*OU6qO2B3U>p&v9JLI>h+`lZ6|5&`5=u=aR&)y^A|MLT| zfTJ82T)|xCchSc`pZfoZP1w+d54PC*4YL2AAAkwu+L;Vd&Ag+BtB(wt0GHCE9D1W{MA`d=SHSdudP>iF2zfRx}mj*hP!_^$@XP2ZDB2IipoZ)ef(gM%kz%(taf>ztDevxC9NpvHo#pX zoXc9{)u&nob8FL%sQ<66A`uUsfIY+C{u6&O_XQ6$(xHWv_cY(h`~qesUqRn|7feNj z9W&DvK(N?cU2`qz4e!`UgC9djME}=s!2rUBhr)lJGr%+fqZyCk6%tH~XFzv8 zMnB!H`1yEdF$PF5`M3c$O17%qPPWC&)VIYiEkx7A(eR&lVQ#KV>onV%07Y+- z_%y9l&=25zCyVYhbstXJiVK4Kei5|j-l3f)XU=m0Kh>TJHl&UMD5fx@0mdbV?b4A7 zTLZNDChzFfU&wH6qZ9CJ^*JE=_=!W06+HG-e{-3{nR}++pu%%gz&|_J{?!i0F%4E>Ghdz02X5|3Y;JMOYv&s4iue~)uM>7niVw=c$E4FCV}z@FpnW0 zDF8k$<_?VQ>ULWIoz0H?fQZ7J4@mmK?Fk>^TQ38;x1`l^qImv!6LSqOvJRR+`ZoMaThtZl}Di;N&k&p9&^;w07 z2P$TIlM4@Sast!W_`@PeLi&ERW($C=WzM+1+wB=(5w>76pex^aHidW*c4-5zfP1Bm zAduN;dCT6iE>0!d@!S3i2AOhH8qs-Xh&0FocS;1WoevaZOb3C%XAq}eUF+i|HoP7n z;{5bvQ(lIH_PwSZ;g;kXZqrZD7GyG9CEdm3gfKKND0`lKz`FzF8M2oTk&LYY zki2UnP~$H)@Gu`y&_~hn;rEunW#IS&B-ZS$q_AK3_KxTEx;Cl4WG?OwP3IX}F8Wm9 z*`V|$IB2QkyeMGP$Ka_c@L|%<#6-c1ML=`${fqH?Q8$g{O7SMH&S^uaROy1un~1wX zUfl@HVJcOhUp7`qmB|LVc-?EY6>B0IxN5n!n}!B_RS5c06yf{<7=nqN&qt5;7LUV= zvScG@Zw>%Q8b?J)$OV-m^iU!))c)!@biNDtD3H0gt{?f4DsjEL-l`Ae+hySmD_a!2 zB*>#M-d<>syA_c3ISaHpeg4kg_$cUrWtbTr;b)}uP0G@YQlg2lhj9kv)fTI3O&0X1ukC#pd>xs0iGeY%S? ze|1EQqM#k2R z4XilDPJ?$S&sPA90NA`e-s>lHoxb(2!BsmMOE4<+Hs)JI@Nc8#FFtrHm)+)nN2I`E zX&@GaDSDn~RNuc%@AV%la7a~7I;Mc_Cx5S5(#k&N)tbVkKw&LuPYQs^I2~w(? z6ht8xUR@DcbBD>_hgsc6RhleS^9ob z>caO5IncQ)2w2>_DI_7w+Rg1N1;D&{Gz+77g5sJKGi=Q)8klDsYbFBueNUEM-@O+< z$Fj(|bLc8_oCdPK{mANQiD$@M`JRQ#pMiDLDivVpW9wM_UujRe(^dMM9;@bz(@boE zn(S*<{LW|c)8$AK)(e*CURBawIWw(g`<_4jXnMdT`Ssny4r5~D+}1Hav8-nH zj44){lNTaJKh?ZT)i9HW2^&%$wecwVhbZ}vZi0zj4oJeGld_7Oj6|2tEOK=!<>5)q zeGPKs+OAHn#R%wzYPO;wM^kieVt;(detgJFn{{cbEOM2#4B%)amYpbNqac^fk*E>j z$)EoACNHzqMN@4?^X&{Q_6#fssxB^ZP3c{mwGC|?-GjQL_|N+rorx_f>EIeO{;5Hd zFAQ8x<3ofJTn6t6d*`L(aR+9P%2Eldhi!tO@|`cA^v%euiya>|?m{*C?7ZZ{e4o0O z2izW+6{c1uu${#yOmaZMA8@@fcE@s+6;-ExK0mWEkV-Rhjp74vWnNZIqFetp$ux3} zHS7%#!BmF->Y#QAYdOPCkIpF4myU76zh{1O_B(Yl2#7MZv5s!467q!aU_ejM)!Fu2&5Y7Ug;H8jP>STt>4F{d{NynN51Sckli z%KXCy7S1j&hxG2^ADTxru9UDyy@&RTU-70!W+w}se}w^u0I35T$Yjd3;m{Pl4w94y zOr@bNLN8IEM{-SxiH39Ncsu?F}9HYBOv zsS`oQ`1nlbL>Dl*v9PcEzjwLjfHsXtmffBDVK>AqF|3lRROhoO5_sSQDi(Ryki%TE zX|a0$e?C3v4;Qvu_`0~ee0B+qFwm(A$byiHsof$&hIZ^9%1crb3O6KR!mY8+WZBEZ) zdC4X$>1R;+rj{psk`w{qFP)587i@^J!hz0Ah|nR9F<#Px-jDm^os?~a1mPl8+dQ*U zyycl{x#h0@_0-X`s_9pNo4(xSG^3fFm207kBTveuf^D}D^uaYHXz2If0Z&)nm0fcmcCODd ztHal~8~^!Mx&J5!#LO^BpNX`Ge69`H8r2ln-avTaH_ZYyABFob^y3taNw0-wi-wfp z1?2%3E2@lSLsBb@CXOWvCyUVAK}~RqA9kz3#!itOX<+gCf4o_3*}sP>&s4iW2jl&ZkOad?O;; zayhfkCDQvBR8Yd@y|HzG>443BDdy*O#E9jD>KUCrD;Y4E;O31b|D8W4s1vcil^`_D zYsUEJc7CoTA&??dcN`p`N`~TMWYs5uefb7>=i8K;8hpA1mX*4yoWg?lhN00ZQM4D#9uKQ@YNPuYO4%D zJ7fB?GL_N3Ih2DceAISJLdfJ44pnZ|rC4!QTjxQb+*fT1$?OnPRej%Zi*=U_W{Pg~ zN!ML_B5d(Ovk`B?`VUmrO~#)uW%hB`ISj?lL`kWkZg`s&gA5g9x|N;zhe-~r7Zeta zzkbI6iFOeUvYLY%`jZbSfMqKpdAjj77TGjnQRfi_m2HQip=hyJm+Gbzsp|91zKuqF3OAc-h5Xq z0xs#4WYdz(HqZU7>FEi~`D~Z_;nPGHRP!|<*3^)zHg%+Wu6``OmlV5N+*Oto&Z_n)J#7>vAgW?#{Z#4tpKCI%AF$UWGd-j^T?163whzYBjG|6KK zgx2GS9)MM$n4^*K>RQm2RHVk`M#zBSp=zA+H+L+Y>$B)JWJHC&gFyr`EdrguyXP4e zD`6@Nl4fvSMl@X`8mc17EeD2-C_o4>Ws|Xsu67QAe0hMY!k_l;iGJqAthnxT*P}xz zx=@(AOaq;q(~X{z+U4WcaPOB4n4`-`$<^jtH^B|-TKI6~g0zz8mT-H{}x(;-mOu?8Aqo;wNv;xQ9TZ=nI9;$>p+zD1Ln#)8-M__iuvl|L9j>;HAMa zBE0^^>-TdbaACb$nvIX~3%CFzgzT_0aUtsIYiSW$4D0b6iQ< z+19&@h&D_b@{P^WDM?pT_PcmIH4hS^7h9p_RAOTMZ7`P@`(##XfZ?Yx_ajlBCzkrK z{1`$HkXIAE_N|`Dq-FXAh9{WP!wD9jKDRXVTkyXNFJ)ZM6S;&c3BST07I&+Xvmw6p zSTQLwGEAK&hK2CQT5vCmVOQW^@DyZ0ht~O@g*8h-G_s9H;_cF6t{LA(9uH+@a=pH% zz_K5&pr#M`ty37IrPN~IB%KO2+bfbf% zU@#B4)y=S9D@k9|pk_gy*qe!9~FV`Ha(6mA?A1t-JHq`~xtF1XA9JM5j=Nb)9m_CxM)vcQ$6H z^MZgCdV%Fl1YTc?^9_g1wsMLOaMOTBT-1Qdn2w3ANMFM1iSIT5`Dextn-0AgQK{h9 z&$>OlVkS(?J+){WyNmdHU%l2U2v?HYzL6{H*G(Dn5z*)qb#ZC_$1#~=Fp{m&MM%N* zh5BocI}-@O*|69C@R-NrJY;miS)&NM`P8QD;}5Q;;Jz?A@hKysZ=bou-_nXsvzrS1dMrNprZ1$!IZ8FVV z`SrU=0XVNIuNNuM&!9DxC=Qu!0pnIkiJ+4nYZN>s0rWZ8M%IjyMb7I~&RdqXB3v>l0MD7Elty=8mJ=1e_b`=yF`D>=ZG@A-A4XqlmjUruF zh!Eq1H+fo{M^URkI%*fB*#gcAjp~6jLk)0ps03dSr+j8P=q(Fak8uHMg6Qa1d2#|g zD);H6mNg>&Uz6Yx*MDtC;|x~%BvInFN;xQ7Mn_*+JV0%4%?AnHv+Qpyd+}?ciAqbI z3zt(8N`Q9cOwOk#tqqne#CV5SdouG>?6|)X4H;@W!x_L#$J4t}XX(NsM3N8jXkiKP zperV4zBbAF5R;XH<9T#jRGX~yN^NeL_4puY+z8KOUf;l!WSk&nkbpRVrmV>^LzLrV zpCDp>4^UuuqTRm2i&m`HfD&JK?+5AJLcJg^xQ7>^lqspAQiHir+_J9-t(v`z9NX@NhG3GWu;gQ^HpO#UbQ{57 z+$kwRnL*JQGOwBn15T!v-JYHoD3MlMnY);KIOsp(UM$SxR-k}@~SL0zYY{(=^NwM1Lx+y4otUour3$jeBH9YYZ41m+Yy9Wi~pPleu`jZZC<#7I}lUz<% zO6d!mv^~?#-5L^vJ*7m_rtdw<5gS~218W}^H8^~SUN~!s+1nZEOB${#0F4@|cRy9h zc=Us>SMu;`8F@GpTFvvI>QMNXCz<+aW;Xzxb$91^`|d3kOpUUnR{aQHa{?r>!I3N( zQa)WF=KZ*`@?doYvYx!+QFvpH7>5UqxaKf(iBhLQ)S$%@t?wuV?uCK%-+nkUazzlW zc~$2>6_b$+#0Yr0jWD%?N%yoYy^u1 zdYaHN3*V9?&YnbwGexVLocE@$t z4QM^j?DteZcl&xSiFXH{yGtYX0PE%}S`M@z6X5FVktOQ>CAv2u8%fZiA}At#qjT1q z@Q1xyti;|IA3cD{&QjP5@(5pU1qW7jd&UzlhWANzY}2*$NHHx*ey~Gx_=}rQcGuAS z){!&(o7)fq`~|3W(4WBX*n=k>uRIt5y~gePrr#n9Jpjkq20M_FrjQfWSyjZPa?}%g?`QMxw6>T(qqW;CCR*g z4)qJLdl}+Czs)E|V#1$-o=wTYFoFBh*U$Qt6J>8Vyc<+xpZ^fcOLfjq?2KF zdoU&0sjIq)diTIRO2@BX`3UkR+29dvmuw9$oeZb0?ROOI3E`;g%Y;BBg!r6MRpFBh zvAi7TncGz{&MRGRuX62Z%<5ESIYnxz^A(AgCVinN4D%0vpasB6rLn`Oh`dd7jDcgZplQgJr4wd0V$=$@ow>HCy$rQ+0JePct{? zL1TA79D~pz?PB6er}Lp;*&|}%fK#g%H}UH@zV@-dq8_3DU$z${jZFf|rKkKh;E(Mk z;R|6=m}mSo4w~z9STM0{eMs@qirYwuMc?-PJ{XV4PBeX#`EW_?IJVgyKkH7^R~c`Z z=;6CHM4=s!*(@=R`1MCcjFEX<>myueBFMFY`B90wyn@)Q;#wq${rCi?Y^t$jf>Az~JaW99a$0m{EK(4x?>pM}xFVK4apbgjz6&=XA9MKns&LlZuG zG-`d5rkBRiavN%_rE7MGP>UPIUk#@b<}V3F*n$p@yi*?hYiF7n=tx1Da6~;pO37n3 z4%(lHXvH;xyJFW(AbBilKx}o0h)b*PmE|h|HbUyI3UnJRrJ)Ea*3x4TLPR6(^7OAQ zif(6kErW>W1}zLb>`Ea1HP-EPsP<+`<9jTUY}c}g>-l$?A zyx*ZsX3&xvg~EG8pIBaH&!it{MVIG)dYK==hfMwXGV4-BJk_d@IW%JZX8!R)IeyC# zL_3-2!05#4|;oa{HRWGI8^6icl%Z=UUI_@lly{Do^j0 zrwvTQgkLL;e11x|SdNGKfxmt0^Uv3*2TQ4w<~|B-CwRYV=3J9E_3(AFIEG~Ju%~+< zykC_W-36o8#g1m6NI4IWtUlOEHBdM39*$?fP4$pV%HuLl{z|`TBox87##k@bx%vi0 zOtK$AwjXhA3Y@o4WK?+mo#BjTPkhfcSD$*T1&+l;-%TAf-fSsV-9D_T(I+m0| z>R(T_O1)p(pK>9&oW3QB-?yrtZep1*k+G>KR&9CY@tB26chg<{^2lf?Q+1ZkkxZz; zDPdv(R2jAB*OH^ecrVy#NhB~Zv7!Iv2U5ukZuo2brRhIjMQTVe(yfZ)2$LDBHcE)I zS}joCrBvnAFV&}qoIl)Dt2M*AA+}*nkszP?d9~xrvM0X(N{5S0PGQKwu(M?= zoF*rm%eXiB`TpaijJ>zy?)th@3$7<_34xzXb<~yHnq~3ppAE5w3jzP-Zz+>)NeS(# zKVNwa-~GNzHlfLA*M|DCJfY8l|1z`o(UtIrY1MbiGxf5UBo+7wV)J4~XzUjS6Sc%Pip-Pn%AvE9| z53<(ucgti?9tRchhfaK)0H(8@UwLwDA1CR2*i%kz$muy=dhzsyd(;o+S2Ue>s}>IK zAR8QiwaY7>;C+15p`n+lJOFZE{bEkdU+S>IF!6%)i0blTqUXg!3nh;E_R~6ahg=D7 z^oC?9&+~OPGM-x%_t!}|W>@E})f*&b@n`joI%kUPIOg|_yot;1m7L73MMEj?sexobk#5F%X$>2u=!LeDMo~-?|*&ZgD^NGI{&t;)L#qYG5LMqY}Hcw zi8Aj|DsBL@`{_%)tm8cd8P+1QsDu;>v9L1F zb7Uwg^E^)>V`QE}_?>s{=Xu_}pWXf*?{WP8eE%y8Yq{_1zOM89oS(sc9!)}K&KYAS z#J@NQZcQ(G#(+n`OK$!4-kf#axwmOZ+DHL-mE8F}u@`=G^G))}i;)%$s@8w|ywI4Y zk&=-dvuLpU{6~S+e3BgDDILRL-)w=wYAjY6ZBh%E!BRIg5O+XcT%R@qzqtLTSXUe9 zfvmt1FFfjtg(;V}_W9f#8_(e9-aXR~8DY|Ts9gb&=^TT^883J`+6)I44e=&^83&0199vc)2 zpIpoV9n)kPn6D82n|qm!f_s_9U*-DupXBfBOG=g@xH@Kg{;u}?{nz+z!JQ3wvnc5F z_m}){wymEFjFPl<&mSx8UyJ$w@n6#q$j!4Gvzz+;r}?|unTG5&)!%*n_g`y%NKQ#A z@TGR7{nzz1ogxKfGarE155>+i=5R}}s^`y*{rf58)W1J>m)1b)70bU?_n#L4pDJ9V zhP*Ev0>54l5I5}3GIDN_qVK6WL$HM5pq#OwN#jAUJqKMN)X@@-g7Bs?;2Na^)hWD7 zM4ZLS3m9*8Ku1RT$FVcI0W+uoUQXP)z)0=&4nAh6_W4(|zdmL@9inb4g>JW?3A5Sm zHYhuQl#L0tHPAEMz5B{eIzIaJ1YYdHz7klQ0>Dh#gbBn9;-!dq-EXeW9Q#os==F(} z2XKsO!1$d&=lJPNnzM7SSz-@hmX)Owh-(`#q+fs9%w;9bKj;E_*cq_g%mkffa zDK)XYWWHjbd_oM^=HMtJ*e&B0kuB563r6cbNNhAzlA9Iz2wPbT1c@k{dL6Puqzooj zkkXS6mTWc7V0ZQ5vbrcZtL_|=(6%XCPXOk&bpp>6g7>T_l=zG7B?ZQyUpla)jL`3( zb`;G60-LTcOU&m@;1{Mrdt1=1awF7sxppxAP^NMjLEYo+@c!RC$F9h89KE8D{PXpQ zn0F);jD~Y1OM#_;R>&tfA`EiMh)Ig=kMss5H6i}qEJ~WB2snQnm^sokSs6Z&pY23p zgVTjBO!A>4bfTF~B>XD6K}=UDNjr4{kDGJy7*+Vtkd=U^**CEH%fr*@uv=)#D_((3 z@OHX|?0L=wSTx$I=0+jpf4^=bp6wEUm!KB;>-8AzeS9BT40AJ-P(g4p$VhI8S&Y9` zyH%YOuDSPP(?J*D(OLq_G8?fj0@t6?SN9^fZ)CJ27*vJO{QVoyT)P2vj?Od2U#E-L z9-8m4G-d#TrED7+fO>2dPNzO--*o5YU^qh!xq-Ux*S>@@s87J2PR%BXLt=9wM_C)_ zfL5XE8rk6KTLtr_LpC~hgJ6>O;%n}6|AfeX$2R%rsf*D~5&U)1fsAIrw@3u)d(G;g zr>Fa9u*^3gOHmO|rdTqp$a>YlA`!9K>8Is{d}ZiX!;t4h01QBswnH^^YLMEJhblE; zx-H~ojmd0(ku%tyzD#In=Y`wX`{+#c5vG;s+B3#iy43u@VAZju<-iV*TDl?h!3=Sc zOU`hrhkT|+fo{Xy(C=-f0dKV?sL?%RsZFgVqSygqr-xsGJo0#LHaz)#8oE~MGwiYv z_R3Z_Cej?5(Rqt{Ap4#HFn6z&R006v4Vyn)q>9EK2B|h03t3%m5av$Y->W(E18zY+ za3y;XZ6^fRulsUR&ipG)(avod8xK{y2G6RoMEE20jk-Raw)80mO#=w%PSDo|&; ztqKS3*pw_tPo8hrG|hVl8%95!_U&Maw|6_$B}8MNhl3V#0Q3{9K#}bM%^~eZ0X#dH zLd>C@qnpVr&MQMwvy~=0mt!Tf? z`6FIw@X!q|BT3)=*|3C#igd?|rqaQ)c6B63)Ynbzr79~Op3CVQ&|iBH-ZFA{+#&Rz zK}8{p#i-T{&!GXt6$`L{5%g_5d*CC$##ah}k~=!fr2j%U(3>KCtk%BIS;tAIuC1}} zCQ%|818CZz-h7EGDKCKRB$$^A5BLC}6xxpFhE}Ooj(Y4osm(8@R9Dj6RGQUR1TDL> zlnPzX%$L(r;c%~&17+V}TG?f?g;Q!az;wy4Yzu+_FXnUOUH9SrJDLKRt`wVgUphbv zizD9|a!v8>!5c%sBKIjsF&v1n$T+$oME(WE9onooS>m`2ODY4mv$e)*n}AVV>j1x- z=F!&}t*(IC(vNg26UCZS465H1*JuW))ui#~oPxq0d0XK(=2SM$4h*6Xc*4G1xsq1g zQDlIiWgh8GYM$v$n%eD(?5|uw(n-I+SzQA61Q4x$;%KaJbE)E*!+`(u8|pK;=(^GD zW5sisuPxNh#e0bQ%eQ@3ILPcT^Sffq>jdfcZuGuC>J&Z|5^7f|rdEFuGWr=H^afLW zu5c)A+?sv3#$qJt>30faELi&;=fg@S$BF zCQaJ4x=2Fva*ujIib*4BwHZ?@H)<4CEo1&zWR%8L>0B}Rxt*XclftOnVuy~Oe*N0@ z;Ghb$t4qqzg}e1H4}#m2LNLXFIH>Bm7?+^L+F$kbQP2lEE3m;0rdU70tj#fZgh_<5 zO5G%Y7v^+VUp*QP<7S!Uh)`@4F!Yj7TA9ndmmDqWTO_9VjA)X6gg@#({sz> zq%QUA4{t}W9AFX=)G_oTKS8bFJCm2$D4qbse4SCY7W|?s`)M14^lL;$a_XD@p=NnA zd{cRJi8pOk^NpAn&M(Gj@ZI|GP>I6)MT%xeEQKx`a}oDqOP54cQicP4N1~rs9DF36 zMGk>V{)`zB!^0V_dUu(wQQ>N!;E8_g?xMH1ONL=A$!D4^z#g6UnjxcoCE24^218{f zy(N`17eGig;O=BvR))iYYSVrG{Nlk=Y|Qv`dEEKhxKHqB&^G{Ew?+GIl=^%F;-=& z^1*Vrd-7~7Z`&4^^@|1L>{aa)lS8j#Ve>4KHa?sm+pQPG4}0jG!R)=q-vvcZ{JCEK zPi2m#Z)QKi^+%1@Oh$&~E2&Q0IGcPD17zl1QTDYQ!QL1Y?MZrO4lc4FtXg8VOv1kR z4@Wnh)^B>1MUatU-r@zOvo*oxb{BzQe*gisN0%P|(KS z(ig|RwO&BeX}G96rR*|~jgJNFqc%2&e{?1Iju5It)vA*Noi5-26z+~Yh4lq?G)g2w z$IljuF14&kJnfe;YxwpYtFm{?r%{H)MF!(CrVX3Ojpfp*$8EMLsgtt6Pe@qdF5y0g4fYuDwDE( z>iMQS;I)>YA|EFx7&HISqq>ReHo8~)y=XwKbH&~>R~Z75y5o%3)m{ZFjxb7J=Pb}G z(Kl(El)&)c7No`nN}OjHOX=oyoNP9Qgn>s`)G!Z9$y!W}wGx8jlVjBNLW$i)bh-q% zXYmUDQM&S7XOoDwDO0gZSr;*Z5+xW~v!t$mmLZ{uSBJTCs!zmHedwciQ!}kgbmA7A z(mr*Q*(`*pR5ZQ0k(6qW=G1kXZbcm(fP6An*2V9+{I}wzLmKor;|a~KU!$`jdfqo! zOFiti>1B*ffUk}vTAiRG*sqJu$uNH;vlik$`%Kz1o&}!EkBt|%<;aUV$_K%Uc_D>H zB-4LWaeTKdRz;SEhpKM$tH9MkW={`Eed2-;+AVEnE!VzG6}^G|JqSL!ub!yB&BpWZ z6T;pL#xn1)d5lZJU(D4HQHO*pUNZ09L45B+H#gX?kBhS{CEGQ~>`%4t%lo`+hE0bO z1$x1!496F3JU1id!+Aeqr`qEBHj~T*Y=^`yZ!Ndw7A)-YLtOh~Eh&yWDs{RSofi?j zjadv`uf`SGnCMe8WBNB%rte}--L_q7mKra;rHF)C^g&9W88AuH*U>>A1@=uN?h2Pc zg9GQuXjoyo-*UaokBfvuJ=l{ewq;DCeAGVSifmR$eZTG)GfpfSn@OeRBvKq|NIW4x zeJw)qtOdq9WF1{KZggYGOsqlDcs%xb$yOVe%;)zOZ{p7NI&(PbRJL&!_W-xIq4M=A zm^DWPEvh?SF14#>_48Ss78hG;sp0LjhB(TERUFi$;k{z&bx4XTl1gE9=RG-ny`|32 zJ^bOm_NQGk5n~VQRHulF>E>rM-o&jxyg#m5)49QuS+a$oS6#VALS0(L9J!WcrB?QU8qE){X7&OUD)&0-9o*jjhU&r#Y^9BKN>=dNeT>18CC9 z_FDWxaZE!<tT8Wj=PQqcZ8KfLCC6@&40NJDWc0&!S=d-{0()PiZ#ZQs&DnD5&=Y zb2{DrHf>7S`KdUo7b=PQA~Piow5w`IR-q8s@AbNb>d;y2YuRIvJ21(LpEp%0`PjzBwNysDMV7P0G2Yv1d$+Et+!z*IIcB~I+%xev zfy+8wfg5&&L!W)Aj?s~h)NC!^WL<=O+g>PEqc$}H^b>}1Azmz5 zT#R7e4n|2AAPsgzjx}y73|PRv$^^*o7@rc5AKU8PZoa8Nqr^7B!5)9VADDRBtLrZg zF}lF;NKX6!ej00D$q@BGIz!fX5AE%KXyYm#dZTume~=0Ime7)jW@I?J)I2^XdBbifjnBMAEH>?nZ#Sb&)FKu}L%Yo* z`tkU>= ze{NLWS0=!y9@6l2I)~~o=Tng;n1tt9JS-F4{^469J>tN=tkpMncj1EUy28P^I<~(@ z`2b1cC*3yw&(=xeg~4rH#W)#VKeaFqN(j<%|uq8b_25xoiY)6G0fsF zIeVw^B8uB5sCP?a;!Q`}$nJJlDMBlRO|xfevqtWR&_pHtpdN`r^9$s3B#@XRkv)e~V1%*@nVo0dBB zoNwbSbuJXVILA)yyR=&_1G?Cd79|^qbuqj1RyHN5{`&f1YJFdam1M8ysj1j#Uz5e% z3~_ToqUEfaE#DbYS31WxwTlKhP&mx=UmuWvL(_}oe4P9Led3XLfmU%YIH*xY#YOHt z2Je%CIsguE)GdGqFs@H}1uH(+vbmMN9;FBE} zN}421@T4eCGa|#2U_}E4Z+y+j1ZD>+sW=ervE6f;)MbF3ipcou!6`v;+To{kt)y8C zRl@AO?{AdIPM&dO0^>-NJfKTyxKghK+dc@Dcu-UaK*UjCAMq{*llZTe_EyOl2QH8;`S!9js9R)mUQ5I|kZYWq3Up!{0w?5GOIO0Y2f_ewA`U_7%t4EXz@M5&?W@0ORUD2g zB;~EyLEjM^eJYvL`4ty%Gvwy7&h$?T5obj7#GYaF!)7;pJYVe)jAx$vQ8t}XjArD{ zZ&zu7rifV&=Gxi>qF9);Vrv;BFFo!pw1E=u!)Tmx&+^d?MWP3XAu)LUi_?O!wIG}8 z6Tp?vk*T1+i7b3L%!c3f%)fR6?zbPy7l;|6AAsdjQz-fJs+Bl_u;0h*Diir;`vGk6 zkgfH^D+dL^!u}QtCv4PPX>hf9Pq9>S(p(iqFdr2sXb4X)jnI#Uv0)U1f_^ohuXs%j z0x08!r(5H1I6}CzG)Br{{3(1fvjc4SM=0)}Fv$UOA6Pkg4UR_t@&bTWgr7oGb=5p5HcCk4;LZ za`!p}x$Lt#yY?MmET>84cFpf0Q`%br1s&P#6Un#@zWm{$jGED3U5J(bR(OS7jq>7h z^oB*i%SqL*zMG>V9IAQ377HA0MDRTI;fYafU>Xb5PuvALDMU6s&*Dro^k6>_TV%(e z)H+`AFk_}Se;-K|2-vtm8?5Endi{(PVjx0E%M95+E#QA(ugIDbve9gsx3IMc`zqB| zMDMMVa~>h?v8Sl&WG6S(3w+C@oeqp)MccN`u!+rfTEE>RQs`dF*lbc?`gb#0O%5i_ zCQO(t5XlbysPfcx>QHZ}Jhuu^{7Xe{a}4U~`lQu3>j{J-v?Mz%n$ich+VzPdeAMW0 ziu(Eo*5h91mtullV=4j9uw0tI?;68qvtzIMJ!pHJ?LfrNe6$lgGp-q%(r>F!bE#m! zSr?|1E_XtMeD5$hq9&$TlWn&b=Xc${6A2LneSm=5FfH;>-+Jk{RWFl#fsn(S8$j`; zUPkZYaT@@OJ7Xm&mgd#jbGb&@6{%IVcDA<~B#)1`iQfTqduI#O%XY&~CFy=L^@-;7 zmc%oCmbn40E*CBI7V(%m83&X}>v}RKOyA9H$&j!fQZml!r*sBp5SgwnXWLy%$}yVL zV1Uyx1jzfP=QV%KCQ^(o-A}A&rB*%tzmfz{|Jf5@3 zSyk4q+$^eMFDzf=u#?>S%BYrEOaRJAPV&ww&D(WKVgb~LK8s@>W%`;DxTH)~-PSna z=JnK>lXHb`nNVI2mt{;8-6#qRZC^B#H2rZ3go;xG2ofG%E3k8~OH2?FfjGTw=an57sHhcFi}8 zSn()YtP+btRhqvP2^;fF75YbN%@@^IIxuPCjoeU6U}X>09#*t3Y{|x56$yCAD4@Da zL3DYO(yL~mUS@D_>;ssD_x~i<4Jp;^OY9x_I#S3(Y%j2 zpTp-Hsx;Bb4)@*h`6_J2emv0<_w9I;hs%IaaGvZsy1!lzO&2nO5VtCVF$39V%u(gu zhlSS=Puu?d@7L_Z=L7XOuNkf)9aW?1j5sSFxe-=Pd?^?udH;iq!TtlNcv{_BZkg*4s1Db!#TvV`hp*u8qnA~yMfCH66oZcy1ay7<94C-SlR`J3ik4RI3!op6fo1pN zyNSz_%odf+w`mVTze{XA*l@t_0tT>t+m;$Gy7Q~B>YEmsMyk{5_~8zjDW;fhRWIS= zl3j7L9}#Qe^~vJ*tujO0E(zIE$y@4-WNLaF>^{SyD--aUsaE2Om1*?FKi;~5JwT<+ zjCp3w!{r>f;MU4}5EQ@8?ApaBPn|&yN3Ne_kpDi+e-cET3mv0^sEa2hT{trvg^Jj#L%4E1>NSp>&>zi(?x5=Y64O`=bEcDiuO=H;t@7r{ zpveC01e5A3g`*dqH322@Zm7J8T6liuc3Y8}`Wa!*twiI=ev^dab`PC)jW1Hu4!eUn z{V_6o7VN$V#4et_sa4O4vHqc@AoRsJWK+w$PvNaX9k<_}t$vlCb(#vd3~X zU4DSXdp*3d8lhLT>`uFYT9;dzS=7`KDpy>H?tv)J{)}Ub8|;OQV+DyWp83b|-Cwp9 ztZrC|&q!Et6=t@$rrNX`m!QoZconRPBPmg|It)1krFExmC?e=Tb(QMZiQ`^xltgd| zhh?bh8E~p%&xaYa)=5-x<(JFuA$eY?L7B2d31~^WAW0A}s2B)0Pt@P=6^i>F8S|TNcfC=SKtE3XDV! zEHJ9-1=RO082@-XLHU}2@f}Iv;<5X3_3dPwKiA{9G`6547b@sL%#!9*lH~4%)OKJY z@Nz}GxBy~Q=8&&qy>9C{gO@Zi2dfn|Yy2H;;#Yqg(+JO8=TUBof3eQ^$f1=!j-VOkk8bo5LjB_-Cq_iWGsd18@ch@cj9K4{-Cmzqg&*#P3uFToho{tT zB-^7%;)f2; z&Avf7Hk(6aTnC>H{B?i&H&y{Jc%420gOf*UCqMr2Rj=BEER$*_=O{_(3e6tggPq97 zt(b8Af3VsAbfy1uANVwoYo0$YX!Glu-yDKYIv4Ko9)C!=JS!);37AJW%)RbH)N3K= zk=liwrf!2~ybvyDT_;2~ds{~&tiU)tduMyCe0U3Hj$MdDLmTn)TjI~RZFR)Z@GhA01(?OONVz>lIRTHvqC$qGtVJdyb9X4;dF&7vK zKX7<)PR}wvR3it$yVVrr?TP_;GFg2K&!Hvgr&htot*1Fw(hAl|Aq3rXFM0g9og5#Q z^HYlQX_|9v0Wje_DEe7mAux_H!qiB*nEt#HK9#XD8ZX?jTm_PYY;yXWS)URO%xRQX zc+A_`BSlEtwMd4l2F6ivj|8YZxE~)vgh8No z?wuYO7F6gkL&%|j{l4m_2oYw-}jE|`mo7sM|hrxy2b@ZS+*jH6L#f?;7vvON%xYYDb^V@Z+ z&22Ci@LT!;n?VJulZ}#R+%)e!FdTCK2487R3!J+bPAek*yOH0|14R`z5{9cS!$&Nd9foSz6SnyLdjabL@X2e3c4CH5gaJz z*_)FV;ysW6X;th`>AynNa#TvsjRGBAGIgAkd>MO;(_# zQK?=A{B5t*Fbsw=cwdHdNmxC&zmbLzUC<{sVYiXY%7Liq*oM@Mj?)F*xAs9Ig_h}D zP19onHAoMwOBOz5Sru9jNU*E5$(`le1V6S&2_qB(_gtF-y{=;b!o3M+d7Z%@<;U3G z>6l(~qpD?n^qg4;+uBRBk_;=FtXKAY%PX-Ksz#T{T{_Ni!DRC%p+_Lza0GQWjmFy) z2tOBqFLccv7Kr4Ld7yLhu8`E63Mf16TB1Uj*hAtZ53&}f*qzo39R^?fX(u(r z2yxL#wu!i4?8}|?j@n*|8keqeqiS<2z8oLoGqPjD=3_3)$S=K8R2vU94 zZ-)0=Mp*ZV$zBfv3X}T6xXF~#Py}E!?e}K`(1{0k&=Tz)3}*6dAHRywo+|+=-#0*G z55yh|coWJP&gsg_;HAV?W>(%W#Wu47IlxZ@UBF9itn4_cHtL<}ZO%~f_mbo+`AJVu z3udL#%4$585a!x&+4u8wU!e`9mbuyoSj(pvC0VbL{}_F3818)@RVVjK@PfmB@``1l zMX=dTmt=QA83ZK^W&~*7m76b9J(8EaHvcI(L|AnAVDI5fl7(Z z#9XZw=pc9&<^FTD%PK;&39anrAL*hVOl^VD)4mzW8O^Rp#`e#S)+3(+asj}oNBDas zl|aHOd61A5S0Mh*zP6>g%P&KIB|PQqia4q~x%{~oX*ENKvXz$C8(1j3c`I+2)od^I z7$k9xt@3lI83lOq!&8bTSH63Fzz#)}h43vqzF?vMO8| zYSg75s`c<^B#wK?9{^(oI{v)-t9a`gjjI5(CoJ*zzEP^fm|$TTB%xujY~yRH}Wxmrfe zKLd{1>PppMzlARy`EJWfvVw&`MNS^_V7mH5WRiBhJuH}_cd=mMAT=Aa_=UxTLno+1 zt}+SN_kEI-2=*(912Lqiinhax?p8_u;Gm4qO=p)Gwww5+<(QlA*N#=z!p@ zu%9R!fs}tP@5;-=t}(pr$w5cL);wZqG4=+6)~uWTGX`)~t7R0QVB2%5D<8Se^gc)p z_M4Y*Uwn60@I}AzWIjc7#X10oB~iTvijl{Aua;yq6AKoe8VLsVuQ}Z$NDH?LxeW2F z&9JB2j~*Aq(_$p!Z}7w-6(~T)gL7eNZCayxvLQ-hTmPApg+&VxPPWY zvVI|D{-w0RbEkK_`asaM>H0!^E6t?!q&Ls(uq(@D5cCYhZ8`0{S#G_-rq@;@g+XF? zT?Qo!YYHot_%^l?_2*)Ks7DJBpWF5DmZnpBCD$ zZt{B~zPkO5_a0UQMO>!Rc%nD&uw4mE&93O|-Z2e0}2m05n6I z`2t5E5uvmUou)eO$mybzfAc5>3H6ob=4zSJv&Dt|xYzGYKhkP)70WLM^pcU_&~?=^ z9Q%e7MlaYCHkZp--{pg!!Dw0Nn$G)E__x@Td2%$%ub(TRNLot*4xa^EZ-$KH%vXSX zroPmh`9vQMFYlRza{#>N=R|j&rhKU(1i-%%O|wj_e>>eXfA3PLf($hVQp%OCHOf%d zTSma$5Yj>^eqo6T!X72ces5`;doahUlikI&JOCbeBkPQ$9aRjDpl|FL4YM#;mUwG;8-m-1Q6nErd6!S=0) zab;CLx(EjTbA$pjV2-|=T7W7%Nb~NM1Ah=mz>4xfo0z#y_f#103hPDWXcL0l+f&uK zh07AgmwBE-B2RpZ{L<%0aP@o1&?!Tf*PragPnD41*RdRh*u;J=tD(gR8@<$biBVih zN%kI*YWrXwAq&9+bKe&P7KjPS;2c|_mb*~=eF4JVFHnENC!0eBx8~wRbi=}cGwt5o zXQXQNO%_ZQcBQ5a_j9dSj*YmJpAs*iy4wa}jtC2V%c_)9y{MUwkX~cA*4YEK+X&{& z9fb+^S8R=6qSRHNnYZL4zDt|SZHf(&stL)7{@f`x@{t?B*njCKRhid~DZcZPu18X> z6Dm!fjGXyNJTw*#$2|ssk!l^Z7(#pJLAkd}AzvN++Q}lpK;EPdjLtE%r{}vnk2^x7> zLMzh4R3he2P{9U$FE(kuYDkG}u(y?AdO$gn#g zo;BtDph5E6gKx8XtVWu0+m^>)G9V{sFtAF?9yjMxs$U3%AjE3CscH8tj_4#=E7hXV`55aX?m5P5M4NAHxdf!lN(2@6p2~! zLMMiR%3xxzL^F-BX@A(MV>a5KYsbEap8c{+dv{vT>x>n%^0UZ-jH-@3boCSYCrV=$|IghinP%Cn2T;DDhu!z_rsvh zl7T}(pJ9Qw2uhLBg;uP7B+zZft}Sh_e~jyAF=W8Wb4=)2GLx@^yGwvA73a&|L`4G6 zt!Tw~3n-GXga&21pCXD$iJsASj*OCy8yblR~&eVk}#={#dcydLk2Y7gm z#z$TMW!><%coECIC+QIzMv015&&MPb^S`Qk0en;3S$nh%vU0IOue z6l8{vM97YOb&%D@h7_AZnfv4boGU8MP2Wah>usZ9Om1*TFBx2XhrE-(hdg`-Aqc5Z ztEX;Z83vU05QHx+w#+@AomO3w2Fa$@s474G!0Gi*;F48gXQDS?4-9H447uqjo1R9Y z+50t5uxPKA$$x^CZK;;I&-EriVh+GV^X2_?3dz^UJ=%~XFbL*i zVE=N+LPsNkWx=x~IwG$a)Y*w@YCftn&#mTR7RzoP}*pldN4OR;^Q;9TQWp zuH+qay>@BwAPF16?aJao9X9GGGN68vOQK+=;+bQ7oZjqo+3w4SXLA%E1MA#=HLibO zFT|*jr>Q7DS^Bk!?edD)_d#5YJm*~La_c0BY-)P7z1RtNE|863dp~kYy2O)_IQ>9i z2Qo!443Ajpsi8+@bG(dKQs=mV5ZUJHFE;J3S~Cku6)7P-jd9ZrIp(Z3DZ?5IP488V zo@Hp2Qun9C`T!>IFE5$F7Wb6QD}9#czd1}~^fl&qGRk%f|4y6g9=AoVAaKl{Dh@Lu zBY)SbrQi*T`=)?%JjRCPm8|VcPm%}1@CTDH?bAB2ZxBImRM0%kJAHeW7-ynC{V3?^ z(Qnwivb2>N`joo_-Z!-@F%{R%52LQo>SCb^0el5z^se6uCT6qn5b6EtA&SA|_Ln7u zES)P*w0^4iz8x-u5Lw0ujb1h`A9HU3!eurkADQH~bg z1h&S-=`U;cyL}ffpkq|EY7b*4zCxdQq0PX5fr*wIL*4OUN|~*+6c`@iyV9mA6E7U-df4kldJRx0stIBD z)o(6q^~RR5hAjZCy`;}uNw#JqFbTDH0GZ`Q&v_3O7;KJ&Y$oxj-K1V1R#f^i+F$#; zarrzLdt0JB^Dt%{7N|{bOeNwmArx-bC4bIyyc~wRB%g@C@Nu z2dJBFVJe;@ay$X-_j%iIF6F%>;TzD;aN-j|}R*%cNC*nVdSV7s46B z@-eG*RtA{kNv_RJSo49j8Jw{G(pNDn@brn*OU8V`b!6QB8q2lB@_fC$dz`f?ZHpPq zdTaxkPV-Vf^euietvoXXSrhyOOgn&E(o4-TW|yf2dgsUkg*j zAE+y=H`Gt2lAqYLI&YdZ=Q8*`yWjpp6~~G)p&TNMBmF#b4=e!47w-2_0(W|F{+;z3 zjpx(LBCtH|aHG+>PMKHoEZ_(=nB1qf2JM3-J8^@bn~5*itSte*tuiBxOW96(U6AY{ z(G?TKVundE>n`grJI(m|$<8|8Br>cC_cLvHkd?4_>IE@SxE5*TmG)3y^25kYD+mtz zWQA`Ct~~D@lzbbTxt!eh(+Yv{4hXEr+m<6JtQ#bW!wfa0U`Dmsk(fm2ES1@cp1SV; z!^snD$3k2U`Cr`_A5C%jLS&4fXuYWWgi)wfr23U>!{L8Cpg0gk@#B2i@Sg`*M3fjz z{gWi$U*4J^Ug-ghvq44+wZrkD1;#?&0ua6a3hMaSA@`b4SQ?a)r@BrN&hjL%Gyo%O z2GGPy_$OGt1e!O>S=ZiQz+ZvgvBp?!<)#-c`O#DqDW_l@PYu*bW|%8?D6KitXelD1!7rn@QSt0olMRX9wy0MeyW-!41i2ik@U+M%x=Po39F80IJ60j`m@+_rn-kC{pJ#*5$McFX zjE>g(HkHW*;JseLpH0<8pA`8%^q|ttp)jB?l+;U@8UGC3xES0h=Ox1IdV!2`Eb>@w zyVFn`gP&o71lBG69U*8Nnxq14m-Y)IENR~NQB0@mUgM(OrZ`kLnJ?aXf+#Cln>h~S z_pKCRI3ttgCtb7SU)iHC-;wW1J%Bw~Yb)P*n;C!EsgzC!*tHB@GO-S+=1~|`+-*i* zwPPxVa<~U!0Ki`MA?u){wGHTdR?%elUERxkCJ}*88IwNjBp*)+YKhyHGr4|l>H+Od zxpNql8KsDM)N03tXE&@%Q>ir#Vsgwm9C4<&{?oNzH)&T@wRE9E#2L!P1`j^l8iSuR^&cGOKg4t?c4PS=EP%URfZI z&!}xsXCh~HVnQvjXC*Fmc`}^JK79_gpMxyHp8Xm>=%Iaa{3o=W4hRbc2q$D|m6SJ% zZ+>NTe3H`mKJnfDSaI@0m%0rf&`c`RWS52ArcojWgytl1e~3+;T74m*8T*3G7Fduk&fiv$5Yq*CG-~_+8BM@*-l)`C-gq3eT`Eqw~I=_X*wNP z$gbs(!9G!8R`-p#IU!so=a0X+;=wS+KC#g(6q1vqcx{iWdY4_6qPTc|P=7(vhKB3N zG=%lFOiS|4+gy~)#i?rFQk`H|&0pkM642|CbG%OW&VtIfjpj{W&cwN( zEhoLxo1eamI5cr%5+#Dnbs54nfB}h{tSvKA<_f)K-IDPi^F{_au{MmkTR$?vg(9djFCMtGsEIc4Z9K+r zt`@4AF3|l*bLl-|X+U*cnD2>CqCEeJ=!Eiiz92AX$wNS$FZLP^Nzz-Z;3qKydu~3A z6nZsu%;Me7)^r#^9?WVa=dq%sN}h9CTW9segV%KS7; zTkj}X;(z@GANR7e+=C9h+h^}#-dG`gejcdCK&oa9qf5@&lGMwwh);+wHM2D|TX(zF z#w@!sqL4A3QA$68J+HUyQnw9thY>aSou;~_S0$?^_Cku68RWvdC!~CF2A^mG50%q6 zRrG%bwZHwBnhy|K9w+TlApM1+w33b2haZ-%s~d3t7uzJm8lB1CI*ho?3`>}3BKK26&5 zL;u?!kI07o<<8A@^zr}Ag@{=|&XgZc*Y^JD^8CMk#s9t8pRdsWUBi#(l9z9XnO)lp;zSwcjzB|uh%m9o&$`g z1l+2&;CxDIhI!&Ed)W=u&vc|Y>{#Xj$R+Y^QvP7CE9DGD|*cG!}|4v zv8gh>#l62TgVatn4~f5nCI=y0&A@nq%Ox6m#Bfl;I+G9jYkmef7h+oU@q8{5#DN=a zR*7yKA?8augmHhw@QTT8GPa&|XSJ}r2S{__u2Gwa)n^u1rCvp*Gy(qa42Amo)PS2_3G)e{Nxam{i@neCpn_bZVr}jh^PTw&6@bF;g+j}UA@BwUO80~xj5(KCgVstOy*ATUx{#jcAsJuD-U8a%~dtp*e zTY!jMtyaJFbjII!F|Q;3)3ObHH8oYr>k&eKLz}nfz#q{E9fHpM2=MFf>H_LqsrHt^ z$OZtTEVz6^hd*5llcIQ91;TL~D9GO;6UEgR#Vwd8x?Bt~9t3JYK3bGXWPO2T83r?3pq*QT>t2xb~&koSTvU&zsDD%AJ^VWDFvd zNy_7B5!Grre{Va8;-wxIE42m@S3Yq_j(`~$Z;VQ9n0b6QgOaU>!|=%YI<8!~fQ0OT z!pxZwh(P%Ujm};+dQRJVOWr!(`;i(;fC*-*F9=T|P94;ifWhSTY zoYC#4{^!fOL4|Dk7PuWtf#Itt{8iA3yTSmV!@HE!y~YHBOA~?_E(0?aa8#GY^t1_v znK{Uf%32ty(gnfz#W{|4nBQIM4VGa#nm~mCG4I8>kBUHX4CWy{B>qmz2eC_vdGik1 zN2}twEAYDZF)MJW9{!A|j!il(P(z@btmPA)0is8kcIFvivEnFEhsf%0nPt(V8ZEAV zhC9*Z40HcIm#HyFNXVvS#Mtgys9E9*LHD(=v95%PPZE>tkYQN6MZP%*JD)oY+5E#Y z&kdT&dWMbY-+aN1H~uY+?KL;D?evp2Tx=3SY!)v=sI0?aO3O4tRQtwEvD+d~6?Kdw zD}iPRLf{T1%&VI!Ha+*R2m~whY>sP*Py4}>>!@`34eRGv44H|AB(eAF`5Gh$dw{jp z!(eR=!4pHo*;Z2e8ETxtOY;(bn!h%BHWkhw?hWnu5J{t*U^bavge{M;L8d~(&H*_| zb95UrBn)GUgi;{)(f{}c_7IgYkYq@(WD<5v`g){zZtUC*?tC>th1u%TqCS2#A^Rpt zqDI+|#X2LtQSc4diWIP_xYo>I;u3Uam6Awi;aGQTFkhBKW>zRR(a(c->eqt%&Uzp~QQHlghUdofG61zavT z)2n9r#@q}ht}x{Gr>1A>pqO-7h?_Irs5;}6KY2MPfe{DS$qF$=+)S(Oh1?F+#pIjgX6Fyzx0*YGw`WpY{j2DGs`KtWB;%w)=7E59b7g^(FHkz2S0Gqts>7 zvsmU281DjK^!W*2#LBKcG-LQpTErLk^!!fQS*F@l4iwe_S!$*80`hxlvxAhx&aTeXjax8iy;_JcgumNa(f+O*7>HDa&WIGuyao)QGof zB}%U=mu^M9_#84}x1D>*Ya;vIA!PO#a^NAAK=@Xx+p{0ots<7$wT^8^#mx!P9W$_? zF976=>&FNYc;`Gf?*a#y+a*1DD^!KKW-+Aiv}`GTYEbi*;QuhM z!r|Ko8?h-;D}KF9EE~KBpx1KHo0W->TZ3~qw&YeXg5=ilyWeU~^RC@cb)jHf)=WvZ z>>j!yzokcWV~cWf+Yu=7cQM~8_MPY3DrHCB01TV?MiTaPv_3hlv-~#FBljoC4zU!@ z_7R<;9^7D66vck^JGk{dK2VL765oNor9`9XN%HJ14A!?Mv%7EkXd$QwCz zUVhm)r=TOq8`wVt*YWWAkq($sFeg-ZP`WX^M{;>xMJG)#F-*~>SIGjLlbAhMD!+h* ztM0t&%I-|>(-$EzRe(JxeHY_y
hu{!gIdzie5W#Pj8s)=& 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 literal 0 HcmV?d00001 diff --git a/_images/IT_sample2.png b/_images/IT_sample2.png new file mode 100644 index 0000000000000000000000000000000000000000..27b0bda7f9bfefed7dec5d4df4460ac977a67420 GIT binary patch literal 282807 zcmeFYWn3J=wl4|TY z`<%VcdtdI&eIIZCx~FTZx~f)Jty*jSSFH|K{0PE8B|(LQgTs*iAfXHghl&XYhp_bO zB`n8H%1s59QDh-5t|%=oPNnEzYieO-0tfdYI6e_sQALZ;=hy>~`ZWPNB<^=IRVtja zn0clwGAT6*woH(3h9QVR!;Up5$cJXbm=p z=jZeEB(80b?NpDWder36HS09Mn>fB*cAGg9q9WU9qO4J(sT#DVne>puAv`|Jv$0M z)f$_A$lqdrAD{9TB}la7ZG+kMSe4%fiwr78vLUrMjhCNFF8rv<;D9NE97p;-?itxpO{DlPyv(SO9;|zOSB40Ur5wQJc~h9-goAtG>sn=tk?Odd}j~fLZu3o6y`9L z)U|_)-i%!$=mH>Gs&}6-=%G1(`!cpni0i)b5|#g~g1=A+{;b9^A6BF}&R?~@QFDqU z+%nEFdgf*yQ43+Sm#PEmMXds^&9_7e1-iw|koUv`D0 z4&KH;Q1sB{i^Abn&-m0U^oPCDC*PMEZ_*n#er9W^Hock&xSzP9S_pdWhR? zNGDQtWTgREZSp7J8xjaJ8kNftiLxM9g8N^l-T0s|ExH>V`a@-?AgK%YSznl$QgT5}jknwtX>Ttti#R zWl&zU15|QY+e|ZNh~l5Qzk?kKDbM`7iDC8®}2fZ&S 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࿓(XtA;p&{(5{)7v^rn;GZI{j|A6IIk9-r60L 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%0DyCh{g>dgp}9(oVIVh&l5TD{kZi$BH3!r0yZ2 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

vM^4#1765-x8v8 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 A{{R30 literal 0 HcmV?d00001 diff --git a/_images/IT_sample3.png b/_images/IT_sample3.png new file mode 100644 index 0000000000000000000000000000000000000000..b8c7b8dbaa0f51df0beff2e18510530baae14aa8 GIT binary patch literal 396642 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

BM@ekaK7{POb${!Hl&RAYb3g*UBH`;kP$ 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 z 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%0DJuq0uv5M)6Y`hdLshz+rBohdFi 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⋙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%0Df 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

ozKZ-?*e8WG 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

Cmx?8TE^w8|! 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%0DJG2e`;yhO{d0$?gd@2`8R7 z4!8-MF)Dm+>RGx|UKAlMltR8{4H~ubHPG(g*^4OGvja|@4)I_za$ty9XFZ27c#fhg-YTl`hkYyNi2K%}(WzT52$(Cw2mK3F6u4M*MdlXQCpV+5&wNtT5(^t_W5%JSo2LX8oUM9ZP% zk0k&$(jsyDqK(1SmcZ~12dnWCDqWE5f0D}cL-XmGGh|?2ec=AAEUm5kLZ^L^BXESo4MnJCIQrB*xTB zm|=1T`85#g23-p#>CLwTCZupXq43@?JDRu;v#V%jYShmDR+|4GD`Z=gK6!yezl zqX9C~`NNmwPw|F1K%@?NoVEqyG9V7n2lEr&X%$Jx`DcU*BhEs+tQH=GdHm7UkCSM-|e zN!Oc$IQ2AK7vt)#V9ls$|8NrS{Cls-F?F-rx4)W3CB^f*=xciz}!W!A+_+y4ccnAk(y~jP>>N58y(BZUg5rOya0ok9im91NeXG@ zHLl~tQMEh=mYEs$v*)1pm@_Et&qN=e0_7fZlV?1Qn79if{^Jk5ukImS$=U2Oi{6UArDbMOVPPSvt@J z^5Vk$CMajVEzq}zXhALd(U&=S+AhN~t3$hUp6^UGx9=7h72~cU?%RMJS5bEeTyqUT z+9o?E@w3?*F(5Xv}UWsTlBsCV}5VoN!| z)Hu{*<>9weF|t%u&3##d_qb%v95+mW=y$x`YzTFpZU!DjKO^%;zy>Kz&x2spG&8(5 z#T(e8MsEAu^iUL5N^ES=U!O@HuM3_yrva1x=*}YBeKAU%iU> zmgRrzW4y9$Qh6tU-)GmD0^iH<(%ZeG7V4$XQvAHS>YU~cw6&ldZ2~lbP0!q^Q`U8% zijl*r1@VHTCBYtb4$r!S?RoAghk=x6A^ZC0JumOFC(ankE+uTz45q-tZXlf+LbRfq zU3e+4snF_#!8>0W_B#3!9Iewds^mSEyeG2WZmQmEtG$CN5^2K71j;aJqi7>nyj+gn zc0EirRb15m-JaR|YRAe_?s!HZINRW0vZ&jCxsLB&BZ#s=hV{V%B&q!`Q&z~0J)T?k zLN0+WzP?YH>;YS<2osOQqP4$MosUH{3L_fHkTLKJLkl_lm>+|x9@wK^i!;o}Kf2?6 zH;Q`L8kggy&Mo+h9qb}hA~tA9NgM+b4XuAUmXAHQSd-{2l2+%JT2P++z>Vy9Exw?7 zor(Cqo<3qP$CTz10ok4_KLu_eU1J)`O%C+9=v8Wo+X1T)*LQT?Hz->? zms%TFPL%O@-oV!8Mnhq0ZZ_@f_u*oivJoDn!sK>eX{?YUYhy#6Es3(`&cFF?iV}tX zZ9p2cio)o&S?FV0@h=W8z~k{d$EcW>LQ)v$$2ty^?w*PcT(bmonT7~%AY5cnN>6Z! z=^V0t&YCcsrZ^j;}c_6Bl$Te6A%BNKU{1Edq{B%{OD&=4}J#T^Pph?f{TSOXW{44 zsme-~-#Ro(KfT)g#D5Pu@IN^{-yE3CCI%VOwquNEl%lMmH1z>wME2_Xe0X()7kZoa zT2JF~hkDfqTR#lz(uX-6iv}c!{ao}%GbU`#ApP)jom#A3%PzGd>%YT7hm^>RV!p^0?l5STo}RuGX2c#BI%><&}=Bu641}CCg0g>eA$5 zBrosa2khe!#LgCs4W>j?r!P+qA8{sH@q7hZ%Ys?Io5TfpJrl9I@F=7v6o!$ zM{LMXuB_x5kSlz}%TwZ>zeV6I4$RxtNJEeRQ8K3``#64(+{m&J9yN-rokAVyV`*}% z`g|ILv6j)@8)E$6p61=x&tD|d^tCA10>Voew|$*sCI*9GQQfrV z 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 tY7CtLC5o>`1Q5?n^}zfw;+z_!OV`(bN+ab+ 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 z»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 IRkjHJ9|;1VB>(^b literal 0 HcmV?d00001 diff --git a/_images/IT_sample5.png b/_images/IT_sample5.png new file mode 100644 index 0000000000000000000000000000000000000000..b27c3eb11eb560f49d90f17baaeae9baf320949e GIT binary patch literal 632293 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%0D&TxeMP*q9K< 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

21~pn!WFl>?zlYw&ARL? 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 z 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%0A!HsDA;9N?(UODCQfw~Og5JuPgsTY?0@tIp7 z)}|Msp18zOugtz{rVWo{AXho=jkEkouJZDrH-OmDmTAz(T}hKy{Dw4V9ys#J(<~gM z1@qEE5$I0z$mm_|Ab-Q0Ci?w}jBYpf

P4X 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%0D0_1>5nAE2$9gOwd-Ig>OS`?>N|tt`}l&H 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 AdjJ3c literal 0 HcmV?d00001 diff --git a/_images/IT_sample7.png b/_images/IT_sample7.png new file mode 100644 index 0000000000000000000000000000000000000000..6cafa761ddb478f1e70a584c3fb9f1c3c01f8bb5 GIT binary patch literal 578291 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 KYJsv<(EkG>Upu4# literal 0 HcmV?d00001 diff --git a/_images/benchmark-1.png b/_images/benchmark-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c4ab31f1b11535e865fedfd474399d59a16d1c0 GIT binary patch literal 62190 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 BPwoH! literal 0 HcmV?d00001 diff --git a/_images/benchmark-2.png b/_images/benchmark-2.png new file mode 100644 index 0000000000000000000000000000000000000000..30f537cd0fcdc49b0bd832e0fcd0ba169d37ac58 GIT binary patch literal 142903 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 JPvEV~{|A#%FK++< literal 0 HcmV?d00001 diff --git a/_images/nll.png b/_images/nll.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f7d0b7d234666c443eb19fce5b4ac5a9bbc2b3 GIT binary patch literal 55999 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 literal 0 HcmV?d00001 diff --git a/_images/ppl.png b/_images/ppl.png new file mode 100644 index 0000000000000000000000000000000000000000..a40a8289b62a8d3179964306a598c405424f1ba3 GIT binary patch literal 25483 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 C;<HEq literal 0 HcmV?d00001 diff --git a/_images/raft_idea.PNG b/_images/raft_idea.PNG new file mode 100644 index 0000000000000000000000000000000000000000..b3fe93c864ef87e848557fbba7c0f42943a39b6d GIT binary patch literal 121926 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%0DN~jjt?WW7Q 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 literal 0 HcmV?d00001 diff --git a/_images/raft_reward.PNG b/_images/raft_reward.PNG new file mode 100644 index 0000000000000000000000000000000000000000..f69f56e81df52f35a72644eb8f2ed194297747b8 GIT binary patch literal 221269 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 literal 0 HcmV?d00001 diff --git a/_modules/index.html b/_modules/index.html new file mode 100644 index 000000000..f7d09cc7f --- /dev/null +++ b/_modules/index.html @@ -0,0 +1,522 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Overview: module code &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/index';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Overview: module code</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>All modules for which code is available</h1> +<ul><li><a href="lmflow.html">lmflow</a></li> +<ul><li><a href="lmflow/args.html">lmflow.args</a></li> +<li><a href="lmflow/datasets/dataset.html">lmflow.datasets.dataset</a></li> +<li><a href="lmflow/datasets/multi_modal_dataset.html">lmflow.datasets.multi_modal_dataset</a></li> +<li><a href="lmflow/models/auto_model.html">lmflow.models.auto_model</a></li> +<li><a href="lmflow/models/base_model.html">lmflow.models.base_model</a></li> +<li><a href="lmflow/models/decoder_model.html">lmflow.models.decoder_model</a></li> +<li><a href="lmflow/models/encoder_decoder_model.html">lmflow.models.encoder_decoder_model</a></li> +<li><a href="lmflow/models/hf_decoder_model.html">lmflow.models.hf_decoder_model</a></li> +<li><a href="lmflow/models/hf_encoder_decoder_model.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li><a href="lmflow/models/hf_model_mixin.html">lmflow.models.hf_model_mixin</a></li> +<li><a href="lmflow/models/hf_text_regression_model.html">lmflow.models.hf_text_regression_model</a></li> +<li><a href="lmflow/models/interfaces/tunable.html">lmflow.models.interfaces.tunable</a></li> +<li><a href="lmflow/models/regression_model.html">lmflow.models.regression_model</a></li> +<li><a href="lmflow/models/text_regression_model.html">lmflow.models.text_regression_model</a></li> +<li><a href="lmflow/models/vision2seq_model.html">lmflow.models.vision2seq_model</a></li> +<li><a href="lmflow/models/vision_encoder/clip_encoder.html">lmflow.models.vision_encoder.clip_encoder</a></li> +<li><a href="lmflow/optim/adabelief.html">lmflow.optim.adabelief</a></li> +<li><a href="lmflow/optim/adabound.html">lmflow.optim.adabound</a></li> +<li><a href="lmflow/optim/adadelta.html">lmflow.optim.adadelta</a></li> +<li><a href="lmflow/optim/adagrad.html">lmflow.optim.adagrad</a></li> +<li><a href="lmflow/optim/adam.html">lmflow.optim.adam</a></li> +<li><a href="lmflow/optim/adamax.html">lmflow.optim.adamax</a></li> +<li><a href="lmflow/optim/adamp.html">lmflow.optim.adamp</a></li> +<li><a href="lmflow/optim/adamw_schedule_free.html">lmflow.optim.adamw_schedule_free</a></li> +<li><a href="lmflow/optim/adan.html">lmflow.optim.adan</a></li> +<li><a href="lmflow/optim/dummy.html">lmflow.optim.dummy</a></li> +<li><a href="lmflow/optim/lamb.html">lmflow.optim.lamb</a></li> +<li><a href="lmflow/optim/lars.html">lmflow.optim.lars</a></li> +<li><a href="lmflow/optim/nadam.html">lmflow.optim.nadam</a></li> +<li><a href="lmflow/optim/novograd.html">lmflow.optim.novograd</a></li> +<li><a href="lmflow/optim/radam.html">lmflow.optim.radam</a></li> +<li><a href="lmflow/optim/sgd_schedule_free.html">lmflow.optim.sgd_schedule_free</a></li> +<li><a href="lmflow/optim/sgdp.html">lmflow.optim.sgdp</a></li> +<li><a href="lmflow/optim/sophia.html">lmflow.optim.sophia</a></li> +<li><a href="lmflow/optim/yogi.html">lmflow.optim.yogi</a></li> +<li><a href="lmflow/pipeline/auto_pipeline.html">lmflow.pipeline.auto_pipeline</a></li> +<li><a href="lmflow/pipeline/base_aligner.html">lmflow.pipeline.base_aligner</a></li> +<li><a href="lmflow/pipeline/base_pipeline.html">lmflow.pipeline.base_pipeline</a></li> +<li><a href="lmflow/pipeline/base_tuner.html">lmflow.pipeline.base_tuner</a></li> +<li><a href="lmflow/pipeline/dpo_aligner.html">lmflow.pipeline.dpo_aligner</a></li> +<li><a href="lmflow/pipeline/dpov2_aligner.html">lmflow.pipeline.dpov2_aligner</a></li> +<li><a href="lmflow/pipeline/evaluator.html">lmflow.pipeline.evaluator</a></li> +<li><a href="lmflow/pipeline/finetuner.html">lmflow.pipeline.finetuner</a></li> +<li><a href="lmflow/pipeline/inferencer.html">lmflow.pipeline.inferencer</a></li> +<li><a href="lmflow/pipeline/iterative_dpo_aligner.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li><a href="lmflow/pipeline/raft_aligner.html">lmflow.pipeline.raft_aligner</a></li> +<li><a href="lmflow/pipeline/rm_inferencer.html">lmflow.pipeline.rm_inferencer</a></li> +<li><a href="lmflow/pipeline/rm_tuner.html">lmflow.pipeline.rm_tuner</a></li> +<li><a href="lmflow/pipeline/utils/dpov2_dataprocessor.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li><a href="lmflow/pipeline/utils/dpov2_trainer.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li><a href="lmflow/pipeline/utils/memory_safe_dpov2_align.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li><a href="lmflow/pipeline/utils/memory_safe_vllm_inference.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li><a href="lmflow/pipeline/utils/peft_trainer.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li><a href="lmflow/pipeline/utils/raft_trainer.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li><a href="lmflow/pipeline/utils/rm_dataprocessor.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li><a href="lmflow/pipeline/utils/rm_trainer.html">lmflow.pipeline.utils.rm_trainer</a></li> +<li><a href="lmflow/pipeline/vllm_inferencer.html">lmflow.pipeline.vllm_inferencer</a></li> +<li><a href="lmflow/tokenization/hf_decoder_model.html">lmflow.tokenization.hf_decoder_model</a></li> +<li><a href="lmflow/tokenization/hf_text_regression_model.html">lmflow.tokenization.hf_text_regression_model</a></li> +<li><a href="lmflow/utils/common.html">lmflow.utils.common</a></li> +<li><a href="lmflow/utils/constants.html">lmflow.utils.constants</a></li> +<li><a href="lmflow/utils/conversation_template.html">lmflow.utils.conversation_template</a></li> +<ul><li><a href="lmflow/utils/conversation_template/base.html">lmflow.utils.conversation_template.base</a></li> +<li><a href="lmflow/utils/conversation_template/chatglm.html">lmflow.utils.conversation_template.chatglm</a></li> +<li><a href="lmflow/utils/conversation_template/chatml.html">lmflow.utils.conversation_template.chatml</a></li> +<li><a href="lmflow/utils/conversation_template/deepseek.html">lmflow.utils.conversation_template.deepseek</a></li> +<li><a href="lmflow/utils/conversation_template/gemma.html">lmflow.utils.conversation_template.gemma</a></li> +<li><a href="lmflow/utils/conversation_template/hymba.html">lmflow.utils.conversation_template.hymba</a></li> +<li><a href="lmflow/utils/conversation_template/internlm.html">lmflow.utils.conversation_template.internlm</a></li> +<li><a href="lmflow/utils/conversation_template/llama.html">lmflow.utils.conversation_template.llama</a></li> +<li><a href="lmflow/utils/conversation_template/phi.html">lmflow.utils.conversation_template.phi</a></li> +<li><a href="lmflow/utils/conversation_template/qwen.html">lmflow.utils.conversation_template.qwen</a></li> +<li><a href="lmflow/utils/conversation_template/yi.html">lmflow.utils.conversation_template.yi</a></li> +<li><a href="lmflow/utils/conversation_template/zephyr.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul><li><a href="lmflow/utils/data_utils.html">lmflow.utils.data_utils</a></li> +<li><a href="lmflow/utils/flash_attention/bloom_flash_attention.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li><a href="lmflow/utils/flash_attention/gpt2_flash_attention.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li><a href="lmflow/utils/flash_attention/gpt_neo_flash_attention.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li><a href="lmflow/utils/flash_attention/llama_flash_attention.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li><a href="lmflow/utils/flash_attention/triton_flash_attention.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +<li><a href="lmflow/utils/llava_conversation_lib.html">lmflow.utils.llava_conversation_lib</a></li> +<li><a href="lmflow/utils/model.html">lmflow.utils.model</a></li> +<li><a href="lmflow/utils/multimodal.html">lmflow.utils.multimodal</a></li> +<li><a href="lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +<li><a href="lmflow/utils/versioning.html">lmflow.utils.versioning</a></li> +<li><a href="lmflow/version.html">lmflow.version</a></li> +</ul></ul> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow.html b/_modules/lmflow.html new file mode 100644 index 000000000..a73459070 --- /dev/null +++ b/_modules/lmflow.html @@ -0,0 +1,454 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">Module code</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow</h1><div class="highlight"><pre> +<span></span><span class="kn">from</span><span class="w"> </span><span class="nn">.version</span><span class="w"> </span><span class="kn">import</span> <span class="n">__version__</span> <span class="k">as</span> <span class="n">internal_version</span> + +<div class="viewcode-block" id="__version__"> +<a class="viewcode-back" href="../autoapi/lmflow/index.html#lmflow.__version__">[docs]</a> +<span class="n">__version__</span> <span class="o">=</span> <span class="n">internal_version</span></div> + + +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">check_min_version</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.utils.versions</span><span class="w"> </span><span class="kn">import</span> <span class="n">require_version</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow</span><span class="w"> </span><span class="kn">import</span> <span class="n">args</span><span class="p">,</span> <span class="n">datasets</span><span class="p">,</span> <span class="n">models</span><span class="p">,</span> <span class="n">pipeline</span><span class="p">,</span> <span class="n">utils</span> + +<span class="c1"># Will error if the minimal version of Transformers is not installed. Remove at your own risks.</span> +<span class="n">check_min_version</span><span class="p">(</span><span class="s2">&quot;4.27.0.dev0&quot;</span><span class="p">)</span> + +<span class="n">require_version</span><span class="p">(</span><span class="s2">&quot;datasets&gt;=1.8.0&quot;</span><span class="p">,</span> <span class="s2">&quot;To fix: pip install -r examples/pytorch/language-modeling/requirements.txt&quot;</span><span class="p">)</span> +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/args.html b/_modules/lmflow/args.html new file mode 100644 index 000000000..5086fe1da --- /dev/null +++ b/_modules/lmflow/args.html @@ -0,0 +1,2622 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.args &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/args';</script> + <link rel="index" title="Index" href="../../genindex.html" /> + <link rel="search" title="Search" href="../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.args</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.args</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;This script defines dataclasses: ModelArguments and DatasetArguments,</span> +<span class="sd">that contain the arguments for the model and dataset used in training.</span> + +<span class="sd">It imports several modules, including dataclasses, field from typing, Optional from typing,</span> +<span class="sd">require_version from transformers.utils.versions, MODEL_FOR_CAUSAL_LM_MAPPING,</span> +<span class="sd">and TrainingArguments from transformers.</span> + +<span class="sd">MODEL_CONFIG_CLASSES is assigned a list of the model config classes from</span> +<span class="sd">MODEL_FOR_CAUSAL_LM_MAPPING. MODEL_TYPES is assigned a tuple of the model types</span> +<span class="sd">extracted from the MODEL_CONFIG_CLASSES.</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">dataclasses</span><span class="w"> </span><span class="kn">import</span> <span class="n">dataclass</span><span class="p">,</span> <span class="n">field</span><span class="p">,</span> <span class="n">fields</span><span class="p">,</span> <span class="n">Field</span><span class="p">,</span> <span class="n">make_dataclass</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Dict</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">MODEL_FOR_CAUSAL_LM_MAPPING</span><span class="p">,</span> + <span class="n">TrainingArguments</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.utils.versions</span><span class="w"> </span><span class="kn">import</span> <span class="n">require_version</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.versioning</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_flash_attn_available</span> + +<div class="viewcode-block" id="MODEL_CONFIG_CLASSES"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.MODEL_CONFIG_CLASSES">[docs]</a> +<span class="n">MODEL_CONFIG_CLASSES</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">MODEL_FOR_CAUSAL_LM_MAPPING</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span></div> + +<div class="viewcode-block" id="MODEL_TYPES"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.MODEL_TYPES">[docs]</a> +<span class="n">MODEL_TYPES</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">conf</span><span class="o">.</span><span class="n">model_type</span> <span class="k">for</span> <span class="n">conf</span> <span class="ow">in</span> <span class="n">MODEL_CONFIG_CLASSES</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="OptimizerNames"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">OptimizerNames</span><span class="p">():</span> +<div class="viewcode-block" id="OptimizerNames.DUMMY"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.DUMMY">[docs]</a> + <span class="n">DUMMY</span> <span class="o">=</span> <span class="s2">&quot;dummy&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.ADABELIEF"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADABELIEF">[docs]</a> + <span class="n">ADABELIEF</span> <span class="o">=</span> <span class="s2">&quot;adabelief&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.ADABOUND"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADABOUND">[docs]</a> + <span class="n">ADABOUND</span> <span class="o">=</span> <span class="s2">&quot;adabound&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.LARS"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.LARS">[docs]</a> + <span class="n">LARS</span> <span class="o">=</span> <span class="s2">&quot;lars&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.LAMB"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.LAMB">[docs]</a> + <span class="n">LAMB</span> <span class="o">=</span> <span class="s2">&quot;lamb&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.ADAMAX"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADAMAX">[docs]</a> + <span class="n">ADAMAX</span> <span class="o">=</span> <span class="s2">&quot;adamax&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.NADAM"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.NADAM">[docs]</a> + <span class="n">NADAM</span> <span class="o">=</span> <span class="s2">&quot;nadam&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.RADAM"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.RADAM">[docs]</a> + <span class="n">RADAM</span> <span class="o">=</span> <span class="s2">&quot;radam&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.ADAMP"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADAMP">[docs]</a> + <span class="n">ADAMP</span> <span class="o">=</span> <span class="s2">&quot;adamp&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.SGDP"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.SGDP">[docs]</a> + <span class="n">SGDP</span> <span class="o">=</span> <span class="s2">&quot;sgdp&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.YOGI"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.YOGI">[docs]</a> + <span class="n">YOGI</span> <span class="o">=</span> <span class="s2">&quot;yogi&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.SOPHIA"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.SOPHIA">[docs]</a> + <span class="n">SOPHIA</span> <span class="o">=</span> <span class="s2">&quot;sophia&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.ADAN"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADAN">[docs]</a> + <span class="n">ADAN</span> <span class="o">=</span> <span class="s2">&quot;adan&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.ADAM"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADAM">[docs]</a> + <span class="n">ADAM</span> <span class="o">=</span> <span class="s2">&quot;adam&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.NOVOGRAD"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.NOVOGRAD">[docs]</a> + <span class="n">NOVOGRAD</span> <span class="o">=</span> <span class="s2">&quot;novograd&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.ADADELTA"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADADELTA">[docs]</a> + <span class="n">ADADELTA</span> <span class="o">=</span> <span class="s2">&quot;adadelta&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.ADAGRAD"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADAGRAD">[docs]</a> + <span class="n">ADAGRAD</span> <span class="o">=</span> <span class="s2">&quot;adagrad&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.ADAMW_SCHEDULE_FREE"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADAMW_SCHEDULE_FREE">[docs]</a> + <span class="n">ADAMW_SCHEDULE_FREE</span> <span class="o">=</span> <span class="s2">&quot;adamw_schedule_free&quot;</span></div> + +<div class="viewcode-block" id="OptimizerNames.SGD_SCHEDULE_FREE"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.SGD_SCHEDULE_FREE">[docs]</a> + <span class="n">SGD_SCHEDULE_FREE</span> <span class="o">=</span> <span class="s2">&quot;sgd_schedule_free&quot;</span></div> +</div> + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="ModelArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">ModelArguments</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Define a class ModelArguments using the dataclass decorator. </span> +<span class="sd"> The class contains several optional parameters that can be used to configure a model. </span> +<span class="sd"> </span> +<span class="sd"> model_name_or_path : str</span> +<span class="sd"> a string representing the path or name of a pretrained</span> +<span class="sd"> model checkpoint for weights initialization. If None, a model will be trained from scratch.</span> + +<span class="sd"> model_type : str</span> +<span class="sd"> a string representing the type of model to use if training from</span> +<span class="sd"> scratch. If not provided, a pretrained model will be used.</span> +<span class="sd"> </span> +<span class="sd"> config_overrides : str</span> +<span class="sd"> a string representing the default config settings to override</span> +<span class="sd"> when training a model from scratch.</span> +<span class="sd"> </span> +<span class="sd"> config_name : str</span> +<span class="sd"> a string representing the name or path of the pretrained config to</span> +<span class="sd"> use, if different from the model_name_or_path.</span> +<span class="sd"> </span> +<span class="sd"> tokenizer_name : str</span> +<span class="sd"> a string representing the name or path of the pretrained tokenizer</span> +<span class="sd"> to use, if different from the model_name_or_path.</span> + +<span class="sd"> cache_dir : str</span> +<span class="sd"> a string representing the path to the directory where pretrained models</span> +<span class="sd"> downloaded from huggingface.co will be stored.</span> + +<span class="sd"> use_fast_tokenizer : bool</span> +<span class="sd"> a boolean indicating whether to use a fast tokenizer (backed by the</span> +<span class="sd"> tokenizers library) or not.</span> + +<span class="sd"> model_revision : str</span> +<span class="sd"> a string representing the specific model version to use (can be a</span> +<span class="sd"> branch name, tag name, or commit id).</span> + +<span class="sd"> token : Optional[str]</span> +<span class="sd"> Necessary when accessing a private model/dataset.</span> + +<span class="sd"> torch_dtype : str</span> +<span class="sd"> a string representing the dtype to load the model under. If auto is</span> +<span class="sd"> passed, the dtype will be automatically derived from the model&#39;s weights.</span> + +<span class="sd"> use_ram_optimized_load : bool</span> +<span class="sd"> a boolean indicating whether to use disk mapping when memory is not</span> +<span class="sd"> enough.</span> +<span class="sd"> </span> +<span class="sd"> use_int8 : bool</span> +<span class="sd"> a boolean indicating whether to load int8 quantization for inference.</span> +<span class="sd"> </span> +<span class="sd"> load_in_4bit : bool</span> +<span class="sd"> whether to load the model in 4bit</span> +<span class="sd"> </span> +<span class="sd"> model_max_length : int</span> +<span class="sd"> The maximum length of the model.</span> +<span class="sd"> </span> +<span class="sd"> truncation_side : str</span> +<span class="sd"> The side on which the model should have truncation applied.</span> +<span class="sd"> </span> +<span class="sd"> arch_type : str</span> +<span class="sd"> Model architecture type.</span> +<span class="sd"> padding_side : str</span> +<span class="sd"> The side on which the tokenizer should have padding applied.</span> +<span class="sd"> eos_padding : bool</span> +<span class="sd"> whether to pad with eos token instead of pad token.</span> +<span class="sd"> ignore_bias_buffers : bool</span> +<span class="sd"> fix for DDP issues with LM bias/mask buffers - invalid scalar type,`inplace operation.</span> +<span class="sd"> &quot;&quot;&quot;</span> + +<div class="viewcode-block" id="ModelArguments.model_name_or_path"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.model_name_or_path">[docs]</a> + <span class="n">model_name_or_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;The model checkpoint for weights initialization.Don&#39;t set if you want to train a model from scratch.&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.lora_model_path"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.lora_model_path">[docs]</a> + <span class="n">lora_model_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;The incremental model diff introduced by LoRA finetuning.&quot;</span> + <span class="s2">&quot; Along with the original non-finetuned model forms the whole&quot;</span> + <span class="s2">&quot; finetuned model.&quot;</span> + <span class="p">)</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.model_type"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.model_type">[docs]</a> + <span class="n">model_type</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;If training from scratch, pass a model type from the list: &quot;</span> <span class="o">+</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">MODEL_TYPES</span><span class="p">)},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.config_overrides"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.config_overrides">[docs]</a> + <span class="n">config_overrides</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;Override some existing default config settings when a model is trained from scratch. Example: &quot;</span> + <span class="s2">&quot;n_embd=10,resid_pdrop=0.2,scale_attn_weights=false,summary_type=cls_index&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.arch_type"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.arch_type">[docs]</a> + <span class="n">arch_type</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;decoder_only&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span><span class="s2">&quot;Model architecture type.&quot;</span><span class="p">),</span> + <span class="s2">&quot;choices&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;decoder_only&quot;</span><span class="p">,</span> <span class="s2">&quot;encoder_decoder&quot;</span><span class="p">,</span> <span class="s2">&quot;text_regression&quot;</span><span class="p">,</span> <span class="s2">&quot;vision_encoder_decoder&quot;</span><span class="p">],</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.config_name"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.config_name">[docs]</a> + <span class="n">config_name</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Pretrained config name or path if not the same as model_name&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.tokenizer_name"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.tokenizer_name">[docs]</a> + <span class="n">tokenizer_name</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Pretrained tokenizer name or path if not the same as model_name&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.cache_dir"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.cache_dir">[docs]</a> + <span class="n">cache_dir</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Where do you want to store the pretrained models downloaded from huggingface.co&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.use_fast_tokenizer"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.use_fast_tokenizer">[docs]</a> + <span class="n">use_fast_tokenizer</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to use one of the fast tokenizer (backed by the tokenizers library) or not.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.model_revision"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.model_revision">[docs]</a> + <span class="n">model_revision</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;main&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The specific model version to use (can be a branch name, tag name or commit id).&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.token"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.token">[docs]</a> + <span class="n">token</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span><span class="s2">&quot;Necessary to specify when accessing a private model/dataset.&quot;</span><span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.trust_remote_code"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.trust_remote_code">[docs]</a> + <span class="n">trust_remote_code</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;Whether to trust remote code when loading model.&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.torch_dtype"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.torch_dtype">[docs]</a> + <span class="n">torch_dtype</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;Override the default `torch.dtype` and load the model under this dtype. If `auto` is passed, the &quot;</span> + <span class="s2">&quot;dtype will be automatically derived from the model&#39;s weights.&quot;</span> + <span class="p">),</span> + <span class="s2">&quot;choices&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;auto&quot;</span><span class="p">,</span> <span class="s2">&quot;bfloat16&quot;</span><span class="p">,</span> <span class="s2">&quot;float16&quot;</span><span class="p">,</span> <span class="s2">&quot;float32&quot;</span><span class="p">],</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.use_dora"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.use_dora">[docs]</a> + <span class="n">use_dora</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to dora, https://github.com/NVlabs/DoRA.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.use_lora"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.use_lora">[docs]</a> + <span class="n">use_lora</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to lora.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.use_qlora"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.use_qlora">[docs]</a> + <span class="n">use_qlora</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to use qlora.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.bits"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.bits">[docs]</a> + <span class="n">bits</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The number of bits for quantization.&quot;</span><span class="p">,</span> + <span class="s2">&quot;choices&quot;</span><span class="p">:</span> <span class="p">[</span><span class="mi">4</span><span class="p">,</span> <span class="mi">8</span><span class="p">],</span> <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.quant_type"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.quant_type">[docs]</a> + <span class="n">quant_type</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s1">&#39;nf4&#39;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The quantization type for quantization.&quot;</span><span class="p">,</span> + <span class="s2">&quot;choices&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;nf4&quot;</span><span class="p">,</span> <span class="s2">&quot;fp4&quot;</span><span class="p">],</span> <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.double_quant"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.double_quant">[docs]</a> + <span class="n">double_quant</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to use double quantization.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.lora_r"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.lora_r">[docs]</a> + <span class="n">lora_r</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the rank of the lora parameters. The smaller lora_r is , the fewer parameters lora has.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.lora_alpha"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.lora_alpha">[docs]</a> + <span class="n">lora_alpha</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">32</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Merging ratio between the fine-tuned model and the original. This is controlled by a parameter called alpha in the paper.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.lora_target_modules"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.lora_target_modules">[docs]</a> + <span class="n">lora_target_modules</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Model modules to apply LoRA to. Use comma to separate multiple modules.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.lora_dropout"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.lora_dropout">[docs]</a> + <span class="n">lora_dropout</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The dropout rate in lora.linear.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.save_aggregated_lora"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.save_aggregated_lora">[docs]</a> + <span class="n">save_aggregated_lora</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to save aggregated lora.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.use_ram_optimized_load"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.use_ram_optimized_load">[docs]</a> + <span class="n">use_ram_optimized_load</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether use disk mapping when memory is not enough.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.use_flash_attention"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.use_flash_attention">[docs]</a> + <span class="n">use_flash_attention</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;whether use flash attention layer to reduce GPU memory with&quot;</span> + <span class="s2">&quot; higher time cost.&quot;</span> + <span class="p">)</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.truncate_to_model_max_length"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.truncate_to_model_max_length">[docs]</a> + <span class="n">truncate_to_model_max_length</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;whether truncate the dataset to model max length.&quot;</span> + <span class="p">)</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.do_rope_scaling"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.do_rope_scaling">[docs]</a> + <span class="n">do_rope_scaling</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;whether do ROPE scaling for llama model.&quot;</span> + <span class="s2">&quot;Linear_scaling credits to the Reddit user /u/kaiokendev.&quot;</span> + <span class="s2">&quot;https://arxiv.org/abs/2306.15595&quot;</span> + <span class="s2">&quot;NTK_scaling credits to the Reddit users /u/bloc97 and /u/emozilla.&quot;</span> + <span class="s2">&quot;https://www.reddit.com/r/LocalLLaMA/comments/14lz7j5/ntkaware_scaled_rope_allows_llama_models_to_have/&quot;</span> + <span class="p">)</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.rope_pi_ratio"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.rope_pi_ratio">[docs]</a> + <span class="n">rope_pi_ratio</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;the ratio of pi in RoPE scaling.&quot;</span> + <span class="p">)</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.rope_ntk_ratio"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.rope_ntk_ratio">[docs]</a> + <span class="n">rope_ntk_ratio</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;the ratio of NTK in RoPE scaling.&quot;</span> + <span class="p">)</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.use_int8"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.use_int8">[docs]</a> + <span class="n">use_int8</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;whether to load int8 quantization for inference&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.load_in_4bit"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.load_in_4bit">[docs]</a> + <span class="n">load_in_4bit</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;whether to load the model in 4bit&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.model_max_length"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.model_max_length">[docs]</a> + <span class="n">model_max_length</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;The maximum length of the model. When not specified, &quot;</span> + <span class="s2">&quot;will follow the model&#39;s default max length. (i.e., tokenizer.model_max_length)&quot;</span><span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.truncation_side"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.truncation_side">[docs]</a> + <span class="n">truncation_side</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;The side on which the tokenizer should have truncation applied. &quot;</span> + <span class="s2">&quot;When not specified, will follow the tokenizer&#39;s default truncation strategy. &quot;</span> + <span class="s2">&quot;(i.e., tokenizer.truncation_side)&quot;</span><span class="p">),</span> + <span class="s2">&quot;choices&quot;</span><span class="p">:</span> <span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="s2">&quot;left&quot;</span><span class="p">,</span> <span class="s2">&quot;right&quot;</span><span class="p">],</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.padding_side"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.padding_side">[docs]</a> + <span class="n">padding_side</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s1">&#39;right&#39;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;The side on which the tokenizer should have padding applied. &quot;</span> + <span class="s2">&quot;LMFlow uses right padding by default. When set to `auto`, will &quot;</span> + <span class="s2">&quot;use padding_side from tokenizer.padding_side.&quot;</span><span class="p">),</span> + <span class="s2">&quot;choices&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;right&quot;</span><span class="p">,</span> <span class="s2">&quot;left&quot;</span><span class="p">,</span> <span class="s2">&quot;auto&quot;</span><span class="p">],</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.eos_padding"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.eos_padding">[docs]</a> + <span class="n">eos_padding</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;whether to pad with eos token&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="ModelArguments.ignore_bias_buffers"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.ignore_bias_buffers">[docs]</a> + <span class="n">ignore_bias_buffers</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="c1"># debug argument for distributed training</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;fix for DDP issues with LM bias/mask buffers - invalid scalar type,`inplace operation. See&quot;</span> + <span class="s2">&quot;https://github.com/huggingface/transformers/issues/22482#issuecomment-1595790992&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="ModelArguments.__post_init__"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.__post_init__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__post_init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">config_overrides</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_name_or_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;--config_overrides can&#39;t be used in combination with --config_name or --model_name_or_path&quot;</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_qlora</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_lora</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;use_qlora is set to True, but use_lora is not set to True. Setting use_lora to True.&quot;</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">use_lora</span> <span class="o">=</span> <span class="kc">True</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_flash_attention</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_flash_attn_available</span><span class="p">():</span> + <span class="bp">self</span><span class="o">.</span><span class="n">use_flash_attention</span> <span class="o">=</span> <span class="kc">False</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Flash attention is not available in the current environment. Disabling flash attention.&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">lora_target_modules</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">lora_target_modules</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">split_args</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lora_target_modules</span><span class="p">)</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="VisModelArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">VisModelArguments</span><span class="p">(</span><span class="n">ModelArguments</span><span class="p">):</span> +<div class="viewcode-block" id="VisModelArguments.low_resource"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.low_resource">[docs]</a> + <span class="n">low_resource</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Use 8 bit and float16 when loading llm&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="VisModelArguments.custom_model"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.custom_model">[docs]</a> + <span class="n">custom_model</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;flag for the model from huggingface or not&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="VisModelArguments.pretrained_language_projection_path"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.pretrained_language_projection_path">[docs]</a> + <span class="n">pretrained_language_projection_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;path for model pretrained_language_projection_path&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="VisModelArguments.custom_vision_model"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.custom_vision_model">[docs]</a> + <span class="n">custom_vision_model</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;flag for the model from huggingface or not&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="VisModelArguments.image_encoder_name_or_path"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.image_encoder_name_or_path">[docs]</a> + <span class="n">image_encoder_name_or_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;The name or path of the image encoder to use.&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="VisModelArguments.qformer_name_or_path"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.qformer_name_or_path">[docs]</a> + <span class="n">qformer_name_or_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;llm model in multi-modality model&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="VisModelArguments.llm_model_name_or_path"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.llm_model_name_or_path">[docs]</a> + <span class="n">llm_model_name_or_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;llm model in multi-modality model&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="VisModelArguments.use_prompt_cache"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.use_prompt_cache">[docs]</a> + <span class="n">use_prompt_cache</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to use prompt cache.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="VisModelArguments.prompt_cache_path"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.prompt_cache_path">[docs]</a> + <span class="n">prompt_cache_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Path to prompt cache.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="VisModelArguments.llava_loading"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.llava_loading">[docs]</a> + <span class="n">llava_loading</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to load module by module from pretrained model.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="VisModelArguments.with_qformer"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.with_qformer">[docs]</a> + <span class="n">with_qformer</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to use qformer.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="VisModelArguments.vision_select_layer"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.vision_select_layer">[docs]</a> + <span class="n">vision_select_layer</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=-</span><span class="mi">2</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Which layer to select in vision model.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="VisModelArguments.llava_pretrain_model_path"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.llava_pretrain_model_path">[docs]</a> + <span class="n">llava_pretrain_model_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Path to llava pretrained model.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="VisModelArguments.save_pretrain_model_path"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.save_pretrain_model_path">[docs]</a> + <span class="n">save_pretrain_model_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Path to pretrained model.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="DatasetArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">DatasetArguments</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Define a class DatasetArguments using the dataclass decorator.</span> +<span class="sd"> The class contains several optional parameters that can be used to configure a dataset for a language model.</span> + + +<span class="sd"> dataset_path : str</span> +<span class="sd"> a string representing the path of the dataset to use.</span> + +<span class="sd"> dataset_name : str</span> +<span class="sd"> a string representing the name of the dataset to use. The default value is &quot;customized&quot;.</span> + +<span class="sd"> is_custom_dataset : bool</span> +<span class="sd"> a boolean indicating whether to use custom data. The default value is False.</span> + +<span class="sd"> customized_cache_dir : str</span> +<span class="sd"> a string representing the path to the directory where customized dataset caches will be stored.</span> + +<span class="sd"> dataset_config_name : str</span> +<span class="sd"> a string representing the configuration name of the dataset to use (via the datasets library).</span> + +<span class="sd"> train_file : str</span> +<span class="sd"> a string representing the path to the input training data file (a text file).</span> + +<span class="sd"> validation_file : str</span> +<span class="sd"> a string representing the path to the input evaluation data file to evaluate the perplexity on (a text file).</span> + +<span class="sd"> max_train_samples : int</span> +<span class="sd"> an integer indicating the maximum number of training examples to use for debugging or quicker training.</span> +<span class="sd"> If set, the training dataset will be truncated to this number.</span> + +<span class="sd"> max_eval_samples: int</span> +<span class="sd"> an integer indicating the maximum number of evaluation examples to use for debugging or quicker training.</span> +<span class="sd"> If set, the evaluation dataset will be truncated to this number.</span> + +<span class="sd"> streaming : bool</span> +<span class="sd"> a boolean indicating whether to enable streaming mode.</span> + +<span class="sd"> block_size: int</span> +<span class="sd"> an integer indicating the optional input sequence length after tokenization. The training dataset will be</span> +<span class="sd"> truncated in blocks of this size for training.</span> + +<span class="sd"> train_on_prompt: bool</span> +<span class="sd"> a boolean indicating whether to train on prompt for conversation datasets such as ShareGPT.</span> + +<span class="sd"> conversation_template: str</span> +<span class="sd"> a string representing the template for conversation datasets.</span> + +<span class="sd"> The class also includes some additional parameters that can be used to configure the dataset further, such as `overwrite_cache`,</span> +<span class="sd"> `validation_split_percentage`, `preprocessing_num_workers`, `disable_group_texts`, `demo_example_in_prompt`, `explanation_in_prompt`,</span> +<span class="sd"> `keep_linebreaks`, and `prompt_structure`.</span> + +<span class="sd"> The field function is used to set default values and provide help messages for each parameter. The Optional type hint is</span> +<span class="sd"> used to indicate that a parameter is optional. The metadata argument is used to provide additional information about</span> +<span class="sd"> each parameter, such as a help message.</span> +<span class="sd"> &quot;&quot;&quot;</span> + +<div class="viewcode-block" id="DatasetArguments.dataset_path"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.dataset_path">[docs]</a> + <span class="n">dataset_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The path of the dataset to use.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.dataset_name"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.dataset_name">[docs]</a> + <span class="n">dataset_name</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;customized&quot;</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Should be </span><span class="se">\&quot;</span><span class="s2">customized</span><span class="se">\&quot;</span><span class="s2">&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.is_custom_dataset"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.is_custom_dataset">[docs]</a> + <span class="n">is_custom_dataset</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;whether to use custom data&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.customized_cache_dir"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.customized_cache_dir">[docs]</a> + <span class="n">customized_cache_dir</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;.cache/llm-ft/datasets&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Where do you want to store the customized dataset caches&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.dataset_config_name"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.dataset_config_name">[docs]</a> + <span class="n">dataset_config_name</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The configuration name of the dataset to use (via the datasets library).&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.train_file"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.train_file">[docs]</a> + <span class="n">train_file</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The input training data file (a text file).&quot;</span><span class="p">})</span></div> + +<div class="viewcode-block" id="DatasetArguments.validation_file"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.validation_file">[docs]</a> + <span class="n">validation_file</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;An optional input evaluation data file to evaluate the perplexity on (a text file).&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.max_train_samples"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.max_train_samples">[docs]</a> + <span class="n">max_train_samples</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;For debugging purposes or quicker training, truncate the number of training examples to this &quot;</span> + <span class="s2">&quot;value if set.&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.max_eval_samples"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.max_eval_samples">[docs]</a> + <span class="n">max_eval_samples</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">1e10</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;For debugging purposes or quicker training, truncate the number of evaluation examples to this &quot;</span> + <span class="s2">&quot;value if set.&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.streaming"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.streaming">[docs]</a> + <span class="n">streaming</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Enable streaming mode&quot;</span><span class="p">})</span></div> + +<div class="viewcode-block" id="DatasetArguments.block_size"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.block_size">[docs]</a> + <span class="n">block_size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;Optional input sequence length after tokenization. &quot;</span> + <span class="s2">&quot;The training dataset will be truncated in block of this size for training. &quot;</span> + <span class="s2">&quot;Default to the model max input length for single sentence inputs (take into account special tokens).&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.overwrite_cache"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.overwrite_cache">[docs]</a> + <span class="n">overwrite_cache</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Overwrite the cached training and evaluation sets&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.validation_split_percentage"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.validation_split_percentage">[docs]</a> + <span class="n">validation_split_percentage</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The percentage of the train set used as validation set in case there&#39;s no validation split&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.preprocessing_num_workers"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.preprocessing_num_workers">[docs]</a> + <span class="n">preprocessing_num_workers</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The number of processes to use for the preprocessing.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.group_texts_batch_size"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.group_texts_batch_size">[docs]</a> + <span class="n">group_texts_batch_size</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;Number of samples that will be grouped together to go though&quot;</span> + <span class="s2">&quot; `group_texts` operation. See `--disable_group_texts` for&quot;</span> + <span class="s2">&quot; detailed explanation of this operation.&quot;</span> + <span class="p">)</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.disable_group_texts"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.disable_group_texts">[docs]</a> + <span class="n">disable_group_texts</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;Whether we disable group of original samples together to&quot;</span> + <span class="s2">&quot; generate sample sequences of length `block_size`&quot;</span> + <span class="s2">&quot; By Default, it is True, which means the long samples&quot;</span> + <span class="s2">&quot; are truncated to `block_size` tokens&quot;</span> + <span class="s2">&quot; and short samples are padded to `block_size` tokens.&quot;</span> + <span class="s2">&quot; If set to False, we group every 1000 tokenized&quot;</span> + <span class="s2">&quot; sequences together, divide them into&quot;</span> + <span class="s2">&quot; [</span><span class="si">{total_num_tokens}</span><span class="s2"> / </span><span class="si">{block_size}</span><span class="s2">] sequences,&quot;</span> + <span class="s2">&quot; each with `block_size` tokens&quot;</span> + <span class="s2">&quot; (the remaining tokens are ommited.&quot;</span> + <span class="s2">&quot; This group text behavior is useful&quot;</span> + <span class="s2">&quot; for continual pretrain or pretrain.&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.keep_linebreaks"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.keep_linebreaks">[docs]</a> + <span class="n">keep_linebreaks</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to keep line breaks when using TXT files or not.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.test_file"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.test_file">[docs]</a> + <span class="n">test_file</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Evaluation File Path&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.train_on_prompt"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.train_on_prompt">[docs]</a> + <span class="n">train_on_prompt</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to train on prompt for conversation datasets such as ShareGPT.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DatasetArguments.conversation_template"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.conversation_template">[docs]</a> + <span class="n">conversation_template</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The template for conversation datasets.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="DatasetArguments.__post_init__"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.__post_init__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__post_init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">streaming</span><span class="p">:</span> + <span class="n">require_version</span><span class="p">(</span><span class="s2">&quot;datasets&gt;=2.0.0&quot;</span><span class="p">,</span> <span class="s2">&quot;The streaming feature requires `datasets&gt;=2.0.0`&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dataset_name</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">train_file</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">validation_file</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Need either a dataset name or a training/validation file.&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">train_file</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">extension</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">train_file</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + <span class="k">assert</span> <span class="n">extension</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;csv&quot;</span><span class="p">,</span> <span class="s2">&quot;json&quot;</span><span class="p">,</span> <span class="s2">&quot;txt&quot;</span><span class="p">],</span> <span class="s2">&quot;`train_file` should be a csv, a json or a txt file.&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">validation_file</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">extension</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">validation_file</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + <span class="k">assert</span> <span class="n">extension</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;csv&quot;</span><span class="p">,</span> <span class="s2">&quot;json&quot;</span><span class="p">,</span> <span class="s2">&quot;txt&quot;</span><span class="p">],</span> <span class="s2">&quot;`validation_file` should be a csv, a json or a txt file.&quot;</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="MultiModalDatasetArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.MultiModalDatasetArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">MultiModalDatasetArguments</span><span class="p">(</span><span class="n">DatasetArguments</span><span class="p">):</span> +<div class="viewcode-block" id="MultiModalDatasetArguments.image_folder"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.MultiModalDatasetArguments.image_folder">[docs]</a> + <span class="n">image_folder</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The folder of the image file.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="MultiModalDatasetArguments.image_aspect_ratio"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.MultiModalDatasetArguments.image_aspect_ratio">[docs]</a> + <span class="n">image_aspect_ratio</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;pad&quot;</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The ratio type&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="MultiModalDatasetArguments.is_multimodal"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.MultiModalDatasetArguments.is_multimodal">[docs]</a> + <span class="n">is_multimodal</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Flag for the modality type.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="MultiModalDatasetArguments.use_image_start_end"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.MultiModalDatasetArguments.use_image_start_end">[docs]</a> + <span class="n">use_image_start_end</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Flag for the modality type.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="MultiModalDatasetArguments.sep_style"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.MultiModalDatasetArguments.sep_style">[docs]</a> + <span class="n">sep_style</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;plain&quot;</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Sep style in multi_modality dataset.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="FinetunerArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">FinetunerArguments</span><span class="p">(</span><span class="n">TrainingArguments</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Adapt transformers.TrainingArguments</span> +<span class="sd"> &quot;&quot;&quot;</span> +<div class="viewcode-block" id="FinetunerArguments.eval_dataset_path"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.eval_dataset_path">[docs]</a> + <span class="n">eval_dataset_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The path of the eval dataset to use.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.remove_unused_columns"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.remove_unused_columns">[docs]</a> + <span class="n">remove_unused_columns</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;whether to remove the unused columns in collate fn&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.finetune_part"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.finetune_part">[docs]</a> + <span class="n">finetune_part</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;language_projection&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the module to finetune.&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.save_language_projection"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.save_language_projection">[docs]</a> + <span class="n">save_language_projection</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;whether to save language projection layer in multi-modal models.&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.use_lisa"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.use_lisa">[docs]</a> + <span class="n">use_lisa</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;whether to use LISA training strategy.&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.lisa_activated_layers"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.lisa_activated_layers">[docs]</a> + <span class="n">lisa_activated_layers</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the number of activated layers in LISA.&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.lisa_interval_steps"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.lisa_interval_steps">[docs]</a> + <span class="n">lisa_interval_steps</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the number of steps in each freezing interval of LISA, i.e. the selected unfreezed layers are randomly switched every </span><span class="si">{lisa_interval_steps}</span><span class="s2"> steps.&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.lisa_layers_attribute"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.lisa_layers_attribute">[docs]</a> + <span class="n">lisa_layers_attribute</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;model.model.layers&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;where the layer attribute stores, e.g. model.model.layers&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.use_customized_optim"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.use_customized_optim">[docs]</a> + <span class="n">use_customized_optim</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;whether to use customized optimizers.&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.customized_optim"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.customized_optim">[docs]</a> + <span class="n">customized_optim</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;sign_sgd&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;name of the customized optimizer.&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.customized_optim_args"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.customized_optim_args">[docs]</a> + <span class="n">customized_optim_args</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;optional arguments that are supplied.&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.optim_dummy_beta1"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_dummy_beta1">[docs]</a> + <span class="n">optim_dummy_beta1</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">0.9</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;A useless argument for dummy optimizer, just for tutorial&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.optim_dummy_beta2"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_dummy_beta2">[docs]</a> + <span class="n">optim_dummy_beta2</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">0.999</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;A useless argument for dummy optimizer, just for tutorial&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.optim_adam_beta1"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_adam_beta1">[docs]</a> + <span class="n">optim_adam_beta1</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">0.9</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Coefficient used for computing running averages of gradient&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.optim_adam_beta2"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_adam_beta2">[docs]</a> + <span class="n">optim_adam_beta2</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">0.999</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Coefficient used for computing running averages of squared gradient&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.optim_beta1"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_beta1">[docs]</a> + <span class="n">optim_beta1</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">0.9</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Coefficient used for computing running averages of gradient&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.optim_beta2"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_beta2">[docs]</a> + <span class="n">optim_beta2</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">0.999</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Coefficient used for computing running averages of squared gradient&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.optim_beta3"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_beta3">[docs]</a> + <span class="n">optim_beta3</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">0.9</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Coefficient used for computing running averages of gradient&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.optim_momentum"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_momentum">[docs]</a> + <span class="n">optim_momentum</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">0.999</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Coefficient used for the momentum term in optimizers like SGD with momentum&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="FinetunerArguments.optim_weight_decay"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_weight_decay">[docs]</a> + <span class="n">optim_weight_decay</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Weight decay (L2 penalty) added to the loss to prevent overfitting&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> +</div> + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="RewardModelTunerArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.RewardModelTunerArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">RewardModelTunerArguments</span><span class="p">(</span><span class="n">FinetunerArguments</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Arguments for reward modeling.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">pass</span></div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="EvaluatorArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">EvaluatorArguments</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Define a class EvaluatorArguments using the dataclass decorator. The class contains several optional</span> +<span class="sd"> parameters that can be used to configure a evaluator.</span> + +<span class="sd"> local_rank : str</span> +<span class="sd"> For distributed training: local_rank</span> + +<span class="sd"> random_shuffle : bool</span> + +<span class="sd"> use_wandb : bool</span> + +<span class="sd"> random_seed : int, default = 1</span> + +<span class="sd"> output_dir : str, default = &#39;./output_dir&#39;,</span> + +<span class="sd"> mixed_precision : str, choice from [&quot;bf16&quot;,&quot;fp16&quot;].</span> +<span class="sd"> mixed precision mode, whether to use bf16 or fp16</span> + +<span class="sd"> deepspeed :</span> +<span class="sd"> Enable deepspeed and pass the path to deepspeed json config file (e.g. ds_config.json) or an already</span> +<span class="sd"> loaded json file as a dict</span> + +<span class="sd"> temperature : float</span> +<span class="sd"> An argument of model.generate in huggingface to control the diversity of generation.</span> + +<span class="sd"> repetition_penalty : float</span> +<span class="sd"> An argument of model.generate in huggingface to penalize repetitions.</span> +<span class="sd"> &quot;&quot;&quot;</span> +<div class="viewcode-block" id="EvaluatorArguments.local_rank"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.local_rank">[docs]</a> + <span class="n">local_rank</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;For distributed training: local_rank&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="EvaluatorArguments.random_shuffle"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.random_shuffle">[docs]</a> + <span class="n">random_shuffle</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="EvaluatorArguments.use_wandb"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.use_wandb">[docs]</a> + <span class="n">use_wandb</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;When this flag is True, wandb will be enabled&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="EvaluatorArguments.random_seed"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.random_seed">[docs]</a> + <span class="n">random_seed</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;used to set random seed&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="EvaluatorArguments.output_dir"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.output_dir">[docs]</a> + <span class="n">output_dir</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;./output_dir&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Output path for the inferenced results&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="EvaluatorArguments.mixed_precision"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.mixed_precision">[docs]</a> + <span class="n">mixed_precision</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;bf16&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;mixed precision mode, whether to use bf16 or fp16&quot;</span> + <span class="p">),</span> + <span class="s2">&quot;choices&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;bf16&quot;</span><span class="p">,</span> <span class="s2">&quot;fp16&quot;</span><span class="p">],</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="EvaluatorArguments.deepspeed"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.deepspeed">[docs]</a> + <span class="n">deepspeed</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;Enable deepspeed and pass the path to deepspeed json config file (e.g. ds_config.json) or an already&quot;</span> + <span class="s2">&quot; loaded json file as a dict&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="EvaluatorArguments.answer_type"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.answer_type">[docs]</a> + <span class="n">answer_type</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;text&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s1">&#39;Question type for answer extraction from the decoder output.&#39;</span> + <span class="s1">&#39; Supported types: </span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; 1) &quot;multiple_choice&quot;, e.g. A, B, C, D, ...</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; 2) &quot;binary_choice&quot;, e.g. yes, no, maybe</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; 3) &quot;math&quot;, e.g. 1.0, -3.52</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; 4) &quot;text&quot;, e.g. &quot;I think that it is okay&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; 5) Special treatment for several datasets</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; - &quot;gsm8k&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; - &quot;svamp&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; - &quot;asdiv&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; - &quot;addsub&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; - &quot;singleeq&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; - &quot;multiarith&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; - &quot;aqua&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; - &quot;csqa&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; - &quot;strategyqa&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; - &quot;pubmedqa&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; - &quot;medmcqa&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; - &quot;usmle&quot;</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="EvaluatorArguments.prompt_structure"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.prompt_structure">[docs]</a> + <span class="n">prompt_structure</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;</span><span class="si">{input}</span><span class="s2">&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s1">&#39;Prompt structure to facilitate prompt engineering during&#39;</span> + <span class="s1">&#39; inference. The model will receive&#39;</span> + <span class="s1">&#39; `prompt_structure.format(input=input)` as its input.&#39;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="EvaluatorArguments.evaluate_block_size"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.evaluate_block_size">[docs]</a> + <span class="n">evaluate_block_size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">512</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;the model will have at least block_size tokens for context when calculating the conditional likelihood of any one token&quot;</span> + <span class="s2">&quot; (provided there are block_size preceding tokens available to condition on)&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="EvaluatorArguments.metric"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.metric">[docs]</a> + <span class="n">metric</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;accuracy&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the metric the model will be evaluated on&quot;</span><span class="p">,</span> + <span class="s2">&quot;choices&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;ppl&quot;</span><span class="p">,</span> <span class="s2">&quot;perplexity&quot;</span><span class="p">,</span> <span class="s2">&quot;acc&quot;</span><span class="p">,</span> <span class="s2">&quot;accuracy&quot;</span><span class="p">,</span> <span class="s2">&quot;nll&quot;</span><span class="p">,</span> <span class="s2">&quot;neg_log_likelihood&quot;</span><span class="p">],</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="EvaluatorArguments.inference_batch_size_per_device"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.inference_batch_size_per_device">[docs]</a> + <span class="n">inference_batch_size_per_device</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;every device will infer </span><span class="si">{inference_batch_size_per_device}</span><span class="s2">&quot;</span> + <span class="s2">&quot; samples in parallel. The inferred results will be concatenaed&quot;</span> + <span class="s2">&quot; with inputs and attach a reward.&quot;</span> + <span class="p">),</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="EvaluatorArguments.use_accelerator_for_evaluator"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.use_accelerator_for_evaluator">[docs]</a> + <span class="n">use_accelerator_for_evaluator</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to use Huggingface Accelerator instead of Deepspeed&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="EvaluatorArguments.temperature"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.temperature">[docs]</a> + <span class="n">temperature</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Temperature during inference.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="EvaluatorArguments.repetition_penalty"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.repetition_penalty">[docs]</a> + <span class="n">repetition_penalty</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Repetition_penalty during inference.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="EvaluatorArguments.max_new_tokens"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.max_new_tokens">[docs]</a> + <span class="n">max_new_tokens</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Maximum length during inference.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="InferencerArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">InferencerArguments</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Define a class InferencerArguments using the dataclass decorator. The class contains several optional</span> +<span class="sd"> parameters that can be used to configure a inferencer.</span> + +<span class="sd"> local_rank : str</span> +<span class="sd"> For distributed training: local_rank</span> +<span class="sd"> random_seed : int, default = 1</span> +<span class="sd"> inference_batch_size : int, default = 1</span> +<span class="sd"> deepspeed :</span> +<span class="sd"> Enable deepspeed and pass the path to deepspeed json config file (e.g. ds_config.json) or an already</span> +<span class="sd"> loaded json file as a dict</span> +<span class="sd"> mixed_precision : str, choice from [&quot;bf16&quot;,&quot;fp16&quot;].</span> +<span class="sd"> mixed precision mode, whether to use bf16 or fp16</span> +<span class="sd"> temperature : float</span> +<span class="sd"> An argument of model.generate in huggingface to control the diversity of generation.</span> +<span class="sd"> repetition_penalty : float</span> +<span class="sd"> An argument of model.generate in huggingface to penalize repetitions.</span> +<span class="sd"> use_beam_search : Optional[bool]</span> +<span class="sd"> Whether to use beam search during inference, By default False.</span> +<span class="sd"> num_output_sequences : Optional[int]</span> +<span class="sd"> Number of output sequences to return for the given prompt, </span> +<span class="sd"> currently only used in vllm inference, By default 8.</span> +<span class="sd"> top_p : Optional[float]</span> +<span class="sd"> top_p for sampling, By default 1.0.</span> +<span class="sd"> top_k : Optional[int]</span> +<span class="sd"> top_k for sampling, By default -1 (no top_k).</span> +<span class="sd"> additional_stop_token_ids : Optional[List[int]]</span> +<span class="sd"> the ids of the end of sentence tokens, By default [].</span> +<span class="sd"> apply_chat_template : Optional[bool]</span> +<span class="sd"> Whether to apply chat template, By default True.</span> +<span class="sd"> save_results : Optional[bool]</span> +<span class="sd"> Whether to save inference results, By default False.</span> +<span class="sd"> results_path : Optional[str]</span> +<span class="sd"> The **json file** path of inference results, By default None.</span> +<span class="sd"> enable_decode_inference_result : Optional[bool]</span> +<span class="sd"> Whether to detokenize the inference results. </span> + +<span class="sd"> NOTE: For iterative align pipelines, whether to detokenize depends on </span> +<span class="sd"> the homogeneity of the policy model and the reward model </span> +<span class="sd"> (i.e., if they have the same tokenizer).</span> +<span class="sd"> use_vllm: bool, optional</span> +<span class="sd"> Whether to use VLLM for inference, By default False.</span> +<span class="sd"> vllm_tensor_parallel_size: int, optional</span> +<span class="sd"> The tensor parallel size for VLLM inference.</span> +<span class="sd"> vllm_gpu_memory_utilization: float, optional</span> +<span class="sd"> The GPU memory utilization for VLLM inference. The proportion of GPU</span> +<span class="sd"> memory (per GPU) to use for VLLM inference.</span> +<span class="sd"> &quot;&quot;&quot;</span> +<div class="viewcode-block" id="InferencerArguments.device"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.device">[docs]</a> + <span class="n">device</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;gpu&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;device of chatbot&quot;</span><span class="p">,</span> + <span class="s2">&quot;choices&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;gpu&quot;</span><span class="p">,</span> <span class="s2">&quot;cpu&quot;</span><span class="p">],</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.local_rank"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.local_rank">[docs]</a> + <span class="n">local_rank</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;For distributed training: local_rank&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.inference_batch_size"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.inference_batch_size">[docs]</a> + <span class="n">inference_batch_size</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;batch size for inference&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.vllm_inference_batch_size"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.vllm_inference_batch_size">[docs]</a> + <span class="n">vllm_inference_batch_size</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The batch size for VLLM inference.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.temperature"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.temperature">[docs]</a> + <span class="n">temperature</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Temperature during inference.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="InferencerArguments.repetition_penalty"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.repetition_penalty">[docs]</a> + <span class="n">repetition_penalty</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Repetition_penalty during inference.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="InferencerArguments.max_new_tokens"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.max_new_tokens">[docs]</a> + <span class="n">max_new_tokens</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Maximum length during inference.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="InferencerArguments.random_seed"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.random_seed">[docs]</a> + <span class="n">random_seed</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;used to set random seed&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.deepspeed"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.deepspeed">[docs]</a> + <span class="n">deepspeed</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;Enable deepspeed and pass the path to deepspeed json config file (e.g. ds_config.json) or an already&quot;</span> + <span class="s2">&quot; loaded json file as a dict&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.mixed_precision"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.mixed_precision">[docs]</a> + <span class="n">mixed_precision</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;bf16&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;mixed precision mode, whether to use bf16 or fp16&quot;</span> + <span class="p">),</span> + <span class="s2">&quot;choices&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;bf16&quot;</span><span class="p">,</span> <span class="s2">&quot;fp16&quot;</span><span class="p">],</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.do_sample"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.do_sample">[docs]</a> + <span class="n">do_sample</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;whether turn on true random sampling during inference.&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.use_accelerator"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.use_accelerator">[docs]</a> + <span class="n">use_accelerator</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to use Huggingface Accelerator instead of Deepspeed&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.use_beam_search"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.use_beam_search">[docs]</a> + <span class="n">use_beam_search</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;whether to use beam search during inference.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.num_output_sequences"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.num_output_sequences">[docs]</a> + <span class="n">num_output_sequences</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;number of output sequences to return for the given prompt, &quot;</span> + <span class="s2">&quot;currently only used in vllm inference.&quot;</span> + <span class="p">)},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.top_p"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.top_p">[docs]</a> + <span class="n">top_p</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;top_p for sampling.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.top_k"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.top_k">[docs]</a> + <span class="n">top_k</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;top_k for sampling.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.additional_stop_token_ids"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.additional_stop_token_ids">[docs]</a> + <span class="n">additional_stop_token_ids</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default_factory</span><span class="o">=</span><span class="k">lambda</span><span class="p">:</span> <span class="p">[],</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the ids of the end of sentence tokens&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.apply_chat_template"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.apply_chat_template">[docs]</a> + <span class="n">apply_chat_template</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;whether to apply chat template&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.enable_decode_inference_result"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.enable_decode_inference_result">[docs]</a> + <span class="n">enable_decode_inference_result</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to decode the inference results.&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.tensor_parallel_size"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.tensor_parallel_size">[docs]</a> + <span class="n">tensor_parallel_size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The tp size for distributed (multi-instance) inference.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.enable_distributed_inference"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.enable_distributed_inference">[docs]</a> + <span class="n">enable_distributed_inference</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to use multi-instance VLLM inference.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.distributed_inference_num_instances"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.distributed_inference_num_instances">[docs]</a> + <span class="n">distributed_inference_num_instances</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The number of instances for multi-instance VLLM inference.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + + + <span class="c1"># vllm inference args</span> +<div class="viewcode-block" id="InferencerArguments.use_vllm"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.use_vllm">[docs]</a> + <span class="n">use_vllm</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to use VLLM for inference, By default False.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.vllm_tensor_parallel_size"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.vllm_tensor_parallel_size">[docs]</a> + <span class="n">vllm_tensor_parallel_size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The tensor parallel size for VLLM inference.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.vllm_gpu_memory_utilization"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.vllm_gpu_memory_utilization">[docs]</a> + <span class="n">vllm_gpu_memory_utilization</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">0.95</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The GPU memory utilization for VLLM inference.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + + + <span class="c1"># Args for result saving</span> +<div class="viewcode-block" id="InferencerArguments.save_results"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.save_results">[docs]</a> + <span class="n">save_results</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to save inference results.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="InferencerArguments.results_path"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.results_path">[docs]</a> + <span class="n">results_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The path of inference results.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="InferencerArguments.__post_init__"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.__post_init__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__post_init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_results</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">results_path</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Need to specify results_path when save_results is True.&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">results_path</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;.json&quot;</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;The results_path must be a json file.&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">Path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">results_path</span><span class="p">)</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="RaftAlignerArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">RaftAlignerArguments</span><span class="p">(</span><span class="n">TrainingArguments</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Define a class RaftAlignerArguments to configure raft aligner.</span> +<span class="sd"> &quot;&quot;&quot;</span> +<div class="viewcode-block" id="RaftAlignerArguments.output_reward_path"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.output_reward_path">[docs]</a> + <span class="n">output_reward_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;tmp/raft_aligner/&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The path of output rewards.&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="RaftAlignerArguments.output_min_length"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.output_min_length">[docs]</a> + <span class="n">output_min_length</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">64</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;minimum length of the output token sequence generated from&quot;</span> + <span class="s2">&quot; model given an input.&quot;</span> + <span class="p">),</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="RaftAlignerArguments.output_max_length"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.output_max_length">[docs]</a> + <span class="n">output_max_length</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">128</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;maximum length of the output token sequence generated from&quot;</span> + <span class="s2">&quot; model given an output.&quot;</span> + <span class="p">),</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="RaftAlignerArguments.num_raft_iteration"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.num_raft_iteration">[docs]</a> + <span class="n">num_raft_iteration</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;number of iterations of the raft aligner.&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="RaftAlignerArguments.raft_batch_size"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.raft_batch_size">[docs]</a> + <span class="n">raft_batch_size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1024</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;only select </span><span class="si">{raft_batch_size}</span><span class="s2"> samples each time for STF training.&quot;</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="RaftAlignerArguments.top_reward_percentage"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.top_reward_percentage">[docs]</a> + <span class="n">top_reward_percentage</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;only top </span><span class="si">{top_reward_percentage}</span><span class="s2"> samples in the raft batch,&quot;</span> + <span class="s2">&quot; (in terms of rewards), will be used for SFT the model.&quot;</span> + <span class="p">),</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="RaftAlignerArguments.inference_batch_size_per_device"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.inference_batch_size_per_device">[docs]</a> + <span class="n">inference_batch_size_per_device</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;every device will infer </span><span class="si">{inference_batch_size_per_device}</span><span class="s2">&quot;</span> + <span class="s2">&quot; samples in parallel. The inferred results will be concatenaed&quot;</span> + <span class="s2">&quot; with inputs and attach a reward.&quot;</span> + <span class="p">),</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="RaftAlignerArguments.collection_strategy"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.collection_strategy">[docs]</a> + <span class="n">collection_strategy</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;top&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;</span><span class="si">{collection_strategy}</span><span class="s2"> is either top or local&quot;</span> + <span class="s2">&quot; top means that we rank the samples globally regardless of the prompts&quot;</span> + <span class="s2">&quot; local means that we only rank the samples with the same prompt&quot;</span> + <span class="p">),</span> + <span class="p">},</span> + <span class="p">)</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="BenchmarkingArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.BenchmarkingArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">BenchmarkingArguments</span><span class="p">:</span> +<div class="viewcode-block" id="BenchmarkingArguments.dataset_name"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.BenchmarkingArguments.dataset_name">[docs]</a> + <span class="n">dataset_name</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;benchmark dataset name provided by lmflow&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="BenchmarkingArguments.lm_evaluation_metric"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.BenchmarkingArguments.lm_evaluation_metric">[docs]</a> + <span class="n">lm_evaluation_metric</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;accuracy&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the metric the model will be evaluated on&quot;</span><span class="p">,</span> + <span class="s2">&quot;choices&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;acc&quot;</span><span class="p">,</span> <span class="s2">&quot;acc_norm&quot;</span><span class="p">,</span> <span class="s2">&quot;bleu&quot;</span><span class="p">,</span> <span class="s2">&quot;chrf&quot;</span><span class="p">,</span> <span class="s2">&quot;em&quot;</span><span class="p">,</span> <span class="s2">&quot;f1&quot;</span><span class="p">,</span> <span class="s2">&quot;ppl&quot;</span><span class="p">,</span> \ + <span class="s2">&quot;ter&quot;</span><span class="p">,</span> <span class="s2">&quot;r@1&quot;</span><span class="p">,</span> <span class="s2">&quot;r@2&quot;</span><span class="p">,</span> <span class="s2">&quot;mrr&quot;</span><span class="p">,</span> <span class="s2">&quot;mc1&quot;</span><span class="p">,</span> <span class="s2">&quot;mc2&quot;</span><span class="p">,</span> <span class="s2">&quot;word_perplexity&quot;</span><span class="p">,</span> \ + <span class="s2">&quot;byte_perplexity&quot;</span><span class="p">,</span> <span class="s2">&quot;bits_per_byte&quot;</span><span class="p">],</span> + <span class="p">},</span> + <span class="p">)</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="DPOAlignerArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">DPOAlignerArguments</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> The arguments for the DPO training script.</span> +<span class="sd"> &quot;&quot;&quot;</span> +<div class="viewcode-block" id="DPOAlignerArguments.local_rank"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.local_rank">[docs]</a> + <span class="n">local_rank</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;For distributed training: local_rank&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + + <span class="c1"># data parameters</span> +<div class="viewcode-block" id="DPOAlignerArguments.beta"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.beta">[docs]</a> + <span class="n">beta</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the beta parameter for DPO loss&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + + <span class="c1"># # training parameters</span> +<div class="viewcode-block" id="DPOAlignerArguments.learning_rate"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.learning_rate">[docs]</a> + <span class="n">learning_rate</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">5e-4</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;optimizer learning rate&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.lr_scheduler_type"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.lr_scheduler_type">[docs]</a> + <span class="n">lr_scheduler_type</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;cosine&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the lr scheduler type&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.warmup_steps"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.warmup_steps">[docs]</a> + <span class="n">warmup_steps</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the number of warmup steps&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.weight_decay"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.weight_decay">[docs]</a> + <span class="n">weight_decay</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mf">0.05</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the weight decay&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.optimizer_type"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.optimizer_type">[docs]</a> + <span class="n">optimizer_type</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;paged_adamw_32bit&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the optimizer type&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="DPOAlignerArguments.per_device_train_batch_size"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.per_device_train_batch_size">[docs]</a> + <span class="n">per_device_train_batch_size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;train batch size per device&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.per_device_eval_batch_size"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.per_device_eval_batch_size">[docs]</a> + <span class="n">per_device_eval_batch_size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;eval batch size per device&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.gradient_accumulation_steps"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.gradient_accumulation_steps">[docs]</a> + <span class="n">gradient_accumulation_steps</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the number of gradient accumulation steps&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.gradient_checkpointing"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.gradient_checkpointing">[docs]</a> + <span class="n">gradient_checkpointing</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;whether to use gradient checkpointing&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="DPOAlignerArguments.gradient_checkpointing_use_reentrant"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.gradient_checkpointing_use_reentrant">[docs]</a> + <span class="n">gradient_checkpointing_use_reentrant</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;whether to use reentrant for gradient checkpointing&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.max_prompt_length"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.max_prompt_length">[docs]</a> + <span class="n">max_prompt_length</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">512</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the maximum prompt length&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.max_length"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.max_length">[docs]</a> + <span class="n">max_length</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1024</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the maximum sequence length&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.max_steps"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.max_steps">[docs]</a> + <span class="n">max_steps</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;max number of training steps&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.logging_steps"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.logging_steps">[docs]</a> + <span class="n">logging_steps</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the logging frequency&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.save_steps"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.save_steps">[docs]</a> + <span class="n">save_steps</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the saving frequency&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.eval_steps"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.eval_steps">[docs]</a> + <span class="n">eval_steps</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the evaluation frequency&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.output_dir"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.output_dir">[docs]</a> + <span class="n">output_dir</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;./results&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the output directory&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.log_freq"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.log_freq">[docs]</a> + <span class="n">log_freq</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the logging frequency&quot;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.sanity_check"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.sanity_check">[docs]</a> + <span class="n">sanity_check</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;only train on 1000 samples&quot;</span> + <span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.report_to"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.report_to">[docs]</a> + <span class="n">report_to</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;wandb&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s1">&#39;The list of integrations to report the results and logs to. Supported platforms are `&quot;azure_ml&quot;`,&#39;</span> + <span class="s1">&#39;`&quot;comet_ml&quot;`, `&quot;mlflow&quot;`, `&quot;neptune&quot;`, `&quot;tensorboard&quot;`,`&quot;clearml&quot;` and `&quot;wandb&quot;`. &#39;</span> + <span class="s1">&#39;Use `&quot;all&quot;` to report to all integrations installed, `&quot;none&quot;` for no integrations.&#39;</span> + <span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.seed"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.seed">[docs]</a> + <span class="n">seed</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Random seed that will be set at the beginning of training.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.run_name"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.run_name">[docs]</a> + <span class="n">run_name</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;dpo&quot;</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The name of the run.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="DPOAlignerArguments.eval_dataset_path"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.eval_dataset_path">[docs]</a> + <span class="n">eval_dataset_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The path of the eval dataset.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="DPOv2AlignerArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">DPOv2AlignerArguments</span><span class="p">(</span><span class="n">FinetunerArguments</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> The arguments for the DPOv2 training script.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># general args</span> +<div class="viewcode-block" id="DPOv2AlignerArguments.random_seed"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.random_seed">[docs]</a> + <span class="n">random_seed</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">42</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the random seed&quot;</span><span class="p">})</span></div> + +<div class="viewcode-block" id="DPOv2AlignerArguments.accelerate_config_file"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.accelerate_config_file">[docs]</a> + <span class="n">accelerate_config_file</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;file path for accelerate config file, only used in memory safe dpov2 align.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + + <span class="c1"># pair sampling args</span> +<div class="viewcode-block" id="DPOv2AlignerArguments.margin_scale"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.margin_scale">[docs]</a> + <span class="n">margin_scale</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the margin scale&quot;</span><span class="p">})</span></div> + +<div class="viewcode-block" id="DPOv2AlignerArguments.sampling_paired_method"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.sampling_paired_method">[docs]</a> + <span class="n">sampling_paired_method</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="s2">&quot;max_random&quot;</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the choose type&quot;</span><span class="p">})</span></div> + +<div class="viewcode-block" id="DPOv2AlignerArguments.length_penalty"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.length_penalty">[docs]</a> + <span class="n">length_penalty</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the length penalty&quot;</span><span class="p">})</span></div> + + <span class="c1"># data collator args</span> +<div class="viewcode-block" id="DPOv2AlignerArguments.max_length"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.max_length">[docs]</a> + <span class="n">max_length</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">2048</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the maximum sequence length, prompt + output&quot;</span><span class="p">})</span></div> + +<div class="viewcode-block" id="DPOv2AlignerArguments.max_prompt_length"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.max_prompt_length">[docs]</a> + <span class="n">max_prompt_length</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the maximum prompt length&quot;</span><span class="p">})</span></div> + +<div class="viewcode-block" id="DPOv2AlignerArguments.mask_prompt"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.mask_prompt">[docs]</a> + <span class="n">mask_prompt</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;mask prompt&quot;</span><span class="p">})</span></div> + + <span class="c1"># dpov2 aligner args</span> +<div class="viewcode-block" id="DPOv2AlignerArguments.beta"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.beta">[docs]</a> + <span class="n">beta</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the beta parameter for DPO loss&quot;</span><span class="p">})</span></div> + +<div class="viewcode-block" id="DPOv2AlignerArguments.loss_type"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.loss_type">[docs]</a> + <span class="n">loss_type</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="s2">&quot;sigmoid&quot;</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;the loss type&quot;</span><span class="p">})</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="IterativeAlignerArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.IterativeAlignerArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">IterativeAlignerArguments</span><span class="p">(</span><span class="n">InferencerArguments</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Arguments for iterative aligners.</span> +<span class="sd"> &quot;&quot;&quot;</span> +<div class="viewcode-block" id="IterativeAlignerArguments.dataset_path_list"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.IterativeAlignerArguments.dataset_path_list">[docs]</a> + <span class="n">dataset_path_list</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default_factory</span><span class="o">=</span><span class="nb">list</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The list of dataset paths for iterative aligners.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="IterativeAlignerArguments.initial_iter_idx"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.IterativeAlignerArguments.initial_iter_idx">[docs]</a> + <span class="n">initial_iter_idx</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The initial iteration index, 0 refers to the first dataset in dataset_path_list.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> +</div> + + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="IterativeDPOAlignerArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.IterativeDPOAlignerArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">IterativeDPOAlignerArguments</span><span class="p">(</span><span class="n">IterativeAlignerArguments</span><span class="p">,</span> <span class="n">DPOv2AlignerArguments</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Arguments for iterative DPO aligners.</span> +<span class="sd"> &quot;&quot;&quot;</span> +<div class="viewcode-block" id="IterativeDPOAlignerArguments.output_dir"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.IterativeDPOAlignerArguments.output_dir">[docs]</a> + <span class="n">output_dir</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;./runs&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Output path for the inferenced results&quot;</span><span class="p">},</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="IterativeDPOAlignerArguments.reward_model_inference_batch_size"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.IterativeDPOAlignerArguments.reward_model_inference_batch_size">[docs]</a> + <span class="n">reward_model_inference_batch_size</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The batch size for reward model inference.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="IterativeDPOAlignerArguments.reward_model_inference_block_size"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.IterativeDPOAlignerArguments.reward_model_inference_block_size">[docs]</a> + <span class="n">reward_model_inference_block_size</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="mi">2048</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;The block size for reward model inference.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="IterativeDPOAlignerArguments.do_response_generation"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.IterativeDPOAlignerArguments.do_response_generation">[docs]</a> + <span class="n">do_response_generation</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to generate responses using the model.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="IterativeDPOAlignerArguments.do_scoring"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.IterativeDPOAlignerArguments.do_scoring">[docs]</a> + <span class="n">do_scoring</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to score the responses using the reward model.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> + +<div class="viewcode-block" id="IterativeDPOAlignerArguments.do_dpo_align"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.IterativeDPOAlignerArguments.do_dpo_align">[docs]</a> + <span class="n">do_dpo_align</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="s2">&quot;Whether to perform DPO alignment.&quot;</span><span class="p">}</span> + <span class="p">)</span></div> +</div> + + + +<div class="viewcode-block" id="PIPELINE_ARGUMENT_MAPPING"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.PIPELINE_ARGUMENT_MAPPING">[docs]</a> +<span class="n">PIPELINE_ARGUMENT_MAPPING</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;finetuner&quot;</span><span class="p">:</span> <span class="n">FinetunerArguments</span><span class="p">,</span> + <span class="s2">&quot;evaluator&quot;</span><span class="p">:</span> <span class="n">EvaluatorArguments</span><span class="p">,</span> + <span class="s2">&quot;inferencer&quot;</span><span class="p">:</span> <span class="n">InferencerArguments</span><span class="p">,</span> + <span class="s2">&quot;vllm_inferencer&quot;</span><span class="p">:</span> <span class="n">InferencerArguments</span><span class="p">,</span> + <span class="s2">&quot;rm_inferencer&quot;</span><span class="p">:</span> <span class="n">InferencerArguments</span><span class="p">,</span> + <span class="s2">&quot;raft_aligner&quot;</span><span class="p">:</span> <span class="n">RaftAlignerArguments</span><span class="p">,</span> + <span class="s2">&quot;dpo_aligner&quot;</span><span class="p">:</span> <span class="n">DPOAlignerArguments</span><span class="p">,</span> + <span class="s2">&quot;rm_tuner&quot;</span><span class="p">:</span> <span class="n">RewardModelTunerArguments</span><span class="p">,</span> + <span class="s2">&quot;dpov2_aligner&quot;</span><span class="p">:</span> <span class="n">DPOv2AlignerArguments</span><span class="p">,</span> + <span class="s2">&quot;iterative_dpo_aligner&quot;</span><span class="p">:</span> <span class="n">IterativeDPOAlignerArguments</span><span class="p">,</span> +<span class="p">}</span></div> + + + +<div class="viewcode-block" id="AutoArguments"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.AutoArguments">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">AutoArguments</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Automatically choose arguments from FinetunerArguments or EvaluatorArguments.</span> +<span class="sd"> &quot;&quot;&quot;</span> + +<div class="viewcode-block" id="AutoArguments.get_pipeline_args_class"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.AutoArguments.get_pipeline_args_class">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_pipeline_args_class</span><span class="p">(</span><span class="n">pipeline_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span> + <span class="k">return</span> <span class="n">PIPELINE_ARGUMENT_MAPPING</span><span class="p">[</span><span class="n">pipeline_name</span><span class="p">]</span></div> +</div> + + + +<div class="viewcode-block" id="split_args"> +<a class="viewcode-back" href="../../autoapi/lmflow/args/index.html#lmflow.args.split_args">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">split_args</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> + <span class="k">return</span> <span class="p">[</span><span class="n">elem</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="p">)]</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">args</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/datasets/dataset.html b/_modules/lmflow/datasets/dataset.html new file mode 100644 index 000000000..7fd9d1403 --- /dev/null +++ b/_modules/lmflow/datasets/dataset.html @@ -0,0 +1,1127 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.datasets.dataset &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/datasets/dataset';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.datasets.dataset</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.datasets.dataset</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;This Python code defines a class Dataset with methods for initializing, loading,</span> +<span class="sd">and manipulating datasets from different backends such as Hugging Face and JSON.</span> +<span class="sd"> </span> +<span class="sd">The `Dataset` class includes methods for loading datasets from a dictionary and a Hugging</span> +<span class="sd">Face dataset, mapping datasets, and retrieving the backend dataset and arguments.</span> +<span class="sd">&quot;&quot;&quot;</span> + + + +<span class="c1"># Importing necessary libraries and modules</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">copy</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">json</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">cmath</span><span class="w"> </span><span class="kn">import</span> <span class="n">e</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optional</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">datasets</span><span class="w"> </span><span class="kn">import</span> <span class="n">load_dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">datasets</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> <span class="k">as</span> <span class="n">HFDataset</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="n">DatasetArguments</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">DATASET_DESCRIPTION_MAP</span><span class="p">,</span> + <span class="n">TEXT_ONLY_DATASET_DESCRIPTION</span><span class="p">,</span> + <span class="n">TEXT2TEXT_DATASET_DESCRIPTION</span><span class="p">,</span> + <span class="n">FLOAT_ONLY_DATASET_DESCRIPTION</span><span class="p">,</span> + <span class="n">INSTANCE_FIELDS_MAP</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.versioning</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_multimodal_available</span> + +<span class="k">if</span> <span class="n">is_multimodal_available</span><span class="p">():</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">.multi_modal_dataset</span><span class="w"> </span><span class="kn">import</span> <span class="n">CustomMultiModalDataset</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="DATASET_TYPES"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.DATASET_TYPES">[docs]</a> +<span class="n">DATASET_TYPES</span> <span class="o">=</span> <span class="p">[</span> + <span class="s2">&quot;text_only&quot;</span><span class="p">,</span> + <span class="s2">&quot;text2text&quot;</span><span class="p">,</span> + <span class="s2">&quot;float_only&quot;</span><span class="p">,</span> + <span class="s2">&quot;image_text&quot;</span><span class="p">,</span> + <span class="s2">&quot;conversation&quot;</span><span class="p">,</span> + <span class="s2">&quot;paired_conversation&quot;</span><span class="p">,</span> + <span class="s2">&quot;paired_text_to_text&quot;</span><span class="p">,</span> + <span class="s2">&quot;text_to_textlist&quot;</span><span class="p">,</span> + <span class="s2">&quot;text_to_scored_textlist&quot;</span> +<span class="p">]</span></div> + + +<div class="viewcode-block" id="KEY_TYPE"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.KEY_TYPE">[docs]</a> +<span class="n">KEY_TYPE</span> <span class="o">=</span> <span class="s2">&quot;type&quot;</span></div> + +<div class="viewcode-block" id="KEY_INSTANCES"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.KEY_INSTANCES">[docs]</a> +<span class="n">KEY_INSTANCES</span> <span class="o">=</span> <span class="s2">&quot;instances&quot;</span></div> + +<div class="viewcode-block" id="KEY_SCORE"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.KEY_SCORE">[docs]</a> +<span class="n">KEY_SCORE</span> <span class="o">=</span> <span class="s2">&quot;score&quot;</span></div> + + +<div class="viewcode-block" id="Dataset"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Dataset</span><span class="p">:</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes the Dataset object with the given parameters.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> data_args : DatasetArguments object.</span> +<span class="sd"> Contains the arguments required to load the dataset.</span> + +<span class="sd"> backend : str, default=&quot;huggingface&quot;</span> +<span class="sd"> A string representing the dataset backend. Defaults to &quot;huggingface&quot;.</span> +<span class="sd"> </span> +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> +<span class="sd"> </span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">backend</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s2">&quot;huggingface&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +<div class="viewcode-block" id="Dataset.data_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.data_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> <span class="o">=</span> <span class="n">data_args</span></div> + +<div class="viewcode-block" id="Dataset.backend"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.backend">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">backend</span> <span class="o">=</span> <span class="n">backend</span></div> + +<div class="viewcode-block" id="Dataset.backend_dataset"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.backend_dataset">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="Dataset.type"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.type">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># Original type of the dataset</span></div> + +<div class="viewcode-block" id="Dataset.dataset_path"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.dataset_path">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">dataset_path</span> <span class="o">=</span> <span class="n">data_args</span><span class="o">.</span><span class="n">dataset_path</span></div> + + + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">dataset_path</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">return</span> + + <span class="k">if</span> <span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;huggingface&quot;</span><span class="p">:</span> + <span class="n">data_files</span> <span class="o">=</span> <span class="p">[</span> + <span class="n">x</span><span class="o">.</span><span class="n">absolute</span><span class="p">()</span><span class="o">.</span><span class="n">as_posix</span><span class="p">()</span> + <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">Path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dataset_path</span><span class="p">)</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="s2">&quot;*.json&quot;</span><span class="p">)</span> + <span class="p">]</span> + + <span class="c1"># Iterate through all the files and ensure they have the same data type</span> + <span class="k">for</span> <span class="n">single_file</span> <span class="ow">in</span> <span class="n">data_files</span><span class="p">:</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">single_file</span><span class="p">)</span> <span class="k">as</span> <span class="n">fin</span><span class="p">:</span> + <span class="n">json_data</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">fin</span><span class="p">)</span> + <span class="k">if</span> <span class="n">KEY_TYPE</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">json_data</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;&quot;</span><span class="si">{</span><span class="n">KEY_TYPE</span><span class="si">}</span><span class="s1">&quot; field must be specified for data, e.g.&#39;</span> + <span class="s1">&#39;{</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="sa">f</span><span class="s1">&#39; &quot;</span><span class="si">{</span><span class="n">KEY_TYPE</span><span class="si">}</span><span class="s1">: &quot;text_only&quot;,</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="sa">f</span><span class="s1">&#39; &quot;</span><span class="si">{</span><span class="n">KEY_INSTANCES</span><span class="si">}</span><span class="s1">&quot;: [</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; { &quot;text&quot;: &quot;Sentence 1: This is a sentence.&quot; }</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39; { &quot;text&quot;: &quot;Sentence 2: This is another sentence.&quot; }</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="sa">f</span><span class="s1">&#39; ]</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="s1">&#39;}&#39;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">json_data</span><span class="p">[</span><span class="n">KEY_TYPE</span><span class="p">]</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">!=</span> <span class="n">json_data</span><span class="p">[</span><span class="n">KEY_TYPE</span><span class="p">]:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s1">&#39;All task files must have same data types. Previous&#39;</span> + <span class="sa">f</span><span class="s1">&#39; files have type &quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="s1">&quot;, but in file&#39;</span> + <span class="sa">f</span><span class="s1">&#39; </span><span class="si">{</span><span class="n">single_file</span><span class="si">}</span><span class="s1">, it has type &quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="s1">&quot;.&#39;</span> + <span class="p">)</span> + + <span class="c1"># Load the dataset using the HuggingFace dataset library</span> + <span class="n">extensions</span> <span class="o">=</span> <span class="s2">&quot;json&quot;</span> + <span class="n">raw_dataset</span> <span class="o">=</span> <span class="n">load_dataset</span><span class="p">(</span> + <span class="n">extensions</span><span class="p">,</span> + <span class="n">data_files</span><span class="o">=</span><span class="n">data_files</span><span class="p">,</span> + <span class="n">field</span><span class="o">=</span><span class="n">KEY_INSTANCES</span><span class="p">,</span> + <span class="n">split</span><span class="o">=</span><span class="s2">&quot;train&quot;</span><span class="p">,</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span> <span class="o">=</span> <span class="n">raw_dataset</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_check_data_format</span><span class="p">()</span> + <span class="k">elif</span> <span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;json&quot;</span><span class="p">:</span> + <span class="c1"># TODO (@Jiachun)</span> + <span class="k">pass</span> + <span class="k">elif</span> <span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;custom_multi_modal&quot;</span><span class="p">:</span> + <span class="c1"># FIXME refactor the backend name</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_multimodal_available</span><span class="p">():</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s1">&#39;Multimodal not available. Please install via `pip install -e &quot;.[multimodal]&quot;`&#39;</span> + <span class="p">)</span> + <span class="n">raw_dataset</span> <span class="o">=</span> <span class="n">CustomMultiModalDataset</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dataset_path</span><span class="p">,</span> <span class="n">data_args</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span> <span class="o">=</span> <span class="n">raw_dataset</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;Unsupported dataset backend &quot;</span><span class="si">{</span><span class="n">backend</span><span class="si">}</span><span class="s1">&quot;&#39;</span><span class="p">)</span> + +<div class="viewcode-block" id="Dataset.__len__"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.__len__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="fm">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="Dataset._check_data_format"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset._check_data_format">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_check_data_format</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Checks if data type and data structure matches</span> + +<span class="sd"> Raise messages with hints if not matched.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">data_dict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()</span> + <span class="k">if</span> <span class="n">KEY_TYPE</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;&quot;</span><span class="si">{</span><span class="n">KEY_TYPE</span><span class="si">}</span><span class="s1">&quot; must be provided to initialize a dataset,&#39;</span> + <span class="sa">f</span><span class="s1">&#39; e.g.</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="sa">f</span><span class="s1">&#39; </span><span class="si">{</span><span class="n">TEXT_ONLY_DATASET_DESCRIPTION</span><span class="si">}</span><span class="s1">&#39;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">KEY_INSTANCES</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;&quot;</span><span class="si">{</span><span class="n">KEY_INSTANCES</span><span class="si">}</span><span class="s1">&quot; must be provided to initialize a&#39;</span> + <span class="sa">f</span><span class="s1">&#39; dataset, e.g.</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="sa">f</span><span class="s1">&#39; </span><span class="si">{</span><span class="n">TEXT_ONLY_DATASET_DESCRIPTION</span><span class="si">}</span><span class="s1">&#39;</span> + <span class="p">)</span> + + <span class="n">data_type</span> <span class="o">=</span> <span class="n">data_dict</span><span class="p">[</span><span class="n">KEY_TYPE</span><span class="p">]</span> + <span class="n">fields</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()</span><span class="o">.</span><span class="n">features</span> + <span class="n">correct_fields</span> <span class="o">=</span> <span class="n">INSTANCE_FIELDS_MAP</span><span class="p">[</span><span class="n">data_type</span><span class="p">]</span> + <span class="k">if</span> <span class="ow">not</span> <span class="nb">set</span><span class="p">(</span><span class="n">correct_fields</span><span class="p">)</span><span class="o">.</span><span class="n">issubset</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">fields</span><span class="p">)):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;data instance fields incorrect&#39;</span> + <span class="sa">f</span><span class="s1">&#39; </span><span class="si">{</span><span class="nb">list</span><span class="p">(</span><span class="n">correct_fields</span><span class="p">)</span><span class="si">}</span><span class="s1"> are required.&#39;</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="Dataset.from_dict"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.from_dict">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">from_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dict_obj</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Create a Dataset object from a dictionary.</span> + +<span class="sd"> Return a Dataset given a dict with format:</span> +<span class="sd"> {</span> +<span class="sd"> &quot;type&quot;: TYPE,</span> +<span class="sd"> &quot;instances&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;key_1&quot;: VALUE_1.1,</span> +<span class="sd"> &quot;key_2&quot;: VALUE_1.2,</span> +<span class="sd"> ...</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;key_1&quot;: VALUE_2.1,</span> +<span class="sd"> &quot;key_2&quot;: VALUE_2.2,</span> +<span class="sd"> ...</span> +<span class="sd"> },</span> +<span class="sd"> ...</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> + +<span class="sd"> Parameters</span> +<span class="sd"> -----------</span> + +<span class="sd"> dict_obj : dict.</span> +<span class="sd"> A dictionary containing the dataset information.</span> +<span class="sd"> </span> +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> +<span class="sd"> </span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments.</span> + +<span class="sd"> Returns</span> +<span class="sd"> ---------</span> + +<span class="sd"> self : Dataset object.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;huggingface&quot;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">KEY_TYPE</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">dict_obj</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;&quot;</span><span class="si">{</span><span class="n">KEY_TYPE</span><span class="si">}</span><span class="s1">&quot; must be provided to initialize a dataset,&#39;</span> + <span class="sa">f</span><span class="s1">&#39; e.g.</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="sa">f</span><span class="s1">&#39; </span><span class="si">{</span><span class="n">TEXT_ONLY_DATASET_DESCRIPTION</span><span class="si">}</span><span class="s1">&#39;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">KEY_INSTANCES</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">dict_obj</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;&quot;</span><span class="si">{</span><span class="n">KEY_INSTANCES</span><span class="si">}</span><span class="s1">&quot; must be provided to initialize a&#39;</span> + <span class="sa">f</span><span class="s1">&#39; dataset, e.g.</span><span class="se">\n</span><span class="s1">&#39;</span> + <span class="sa">f</span><span class="s1">&#39; </span><span class="si">{</span><span class="n">TEXT_ONLY_DATASET_DESCRIPTION</span><span class="si">}</span><span class="s1">&#39;</span> + <span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">dict_obj</span><span class="p">[</span><span class="n">KEY_TYPE</span><span class="p">]</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="ow">in</span> <span class="n">INSTANCE_FIELDS_MAP</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;type &quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="s1">&quot; is not supported&#39;</span><span class="p">)</span> + + <span class="n">correct_fields</span> <span class="o">=</span> <span class="n">INSTANCE_FIELDS_MAP</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">]</span> + + <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">instance</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">dict_obj</span><span class="p">[</span><span class="n">KEY_INSTANCES</span><span class="p">]):</span> + <span class="n">fields</span> <span class="o">=</span> <span class="n">instance</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> + <span class="k">if</span> <span class="ow">not</span> <span class="nb">set</span><span class="p">(</span><span class="n">correct_fields</span><span class="p">)</span><span class="o">.</span><span class="n">issubset</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">fields</span><span class="p">)):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;data instance fields incorrect&#39;</span> + <span class="sa">f</span><span class="s1">&#39; </span><span class="si">{</span><span class="nb">list</span><span class="p">(</span><span class="n">correct_fields</span><span class="p">)</span><span class="si">}</span><span class="s1"> are required.&#39;</span> + <span class="p">)</span> + + <span class="k">try</span><span class="p">:</span> + <span class="n">hf_dict</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">dict_obj</span><span class="p">[</span><span class="n">KEY_INSTANCES</span><span class="p">])</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">dict_obj</span><span class="p">[</span><span class="n">KEY_INSTANCES</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> + <span class="n">hf_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span> + <span class="n">instance</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="k">for</span> <span class="n">instance</span> <span class="ow">in</span> <span class="n">dict_obj</span><span class="p">[</span><span class="n">KEY_INSTANCES</span><span class="p">]</span> + <span class="p">]</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span> <span class="o">=</span> <span class="n">HFDataset</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">hf_dict</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">except</span> <span class="ne">AttributeError</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Error occurs: </span><span class="si">{</span><span class="n">ex</span><span class="si">}</span><span class="s2">. Failed to convert dict to&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="se">\&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2"> dataset,&quot;</span> <span class="sa">f</span><span class="s2">&quot; the standard format is as&quot;</span> + <span class="sa">f</span><span class="s2">&quot; follows:</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">DATASET_DESCRIPTION_MAP</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">]</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_check_data_format</span><span class="p">()</span> + + <span class="k">return</span> <span class="bp">self</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;dict&quot;</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span> <span class="o">=</span> <span class="n">dict_obj</span> + <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">dict_obj</span><span class="p">[</span><span class="n">KEY_TYPE</span><span class="p">]</span> + <span class="k">return</span> <span class="bp">self</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;Currently .from_dict is not supported for backend &quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">backend</span><span class="si">}</span><span class="s1">&quot;&#39;</span> + <span class="p">)</span></div> + + + + <span class="nd">@classmethod</span> +<div class="viewcode-block" id="Dataset.create_from_dict"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.create_from_dict">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">create_from_dict</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">dict_obj</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Returns</span> +<span class="sd"> --------</span> + +<span class="sd"> Returns a Dataset object given a dict.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">empty_data_args</span> <span class="o">=</span> <span class="n">DatasetArguments</span><span class="p">(</span><span class="n">dataset_path</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> + <span class="n">dataset</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="n">empty_data_args</span><span class="p">)</span> + <span class="k">return</span> <span class="n">dataset</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">dict_obj</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="Dataset.to_dict"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.to_dict">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">to_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Returns</span> +<span class="sd"> ---------</span> + +<span class="sd"> Return a dict represents the dataset:</span> +<span class="sd"> {</span> +<span class="sd"> &quot;type&quot;: TYPE,</span> +<span class="sd"> &quot;instances&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;key_1&quot;: VALUE_1.1,</span> +<span class="sd"> &quot;key_2&quot;: VALUE_1.2,</span> +<span class="sd"> ...</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;key_1&quot;: VALUE_2.1,</span> +<span class="sd"> &quot;key_2&quot;: VALUE_2.2,</span> +<span class="sd"> ...</span> +<span class="sd"> },</span> +<span class="sd"> ...</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> + +<span class="sd"> A python dict object represents the content of this dataset.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;huggingface&quot;</span><span class="p">:</span> + <span class="n">dict_obj</span> <span class="o">=</span> <span class="p">{}</span> + <span class="n">dict_obj</span><span class="p">[</span><span class="n">KEY_TYPE</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> + <span class="n">hf_dict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()</span> + <span class="n">dict_obj</span><span class="p">[</span><span class="n">KEY_INSTANCES</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="n">first_key</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">hf_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> + <span class="n">first_key</span> <span class="o">=</span> <span class="n">key</span> + <span class="k">break</span> + + <span class="k">if</span> <span class="n">first_key</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">num_instances</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">hf_dict</span><span class="p">[</span><span class="n">first_key</span><span class="p">])</span> + <span class="n">dict_obj</span><span class="p">[</span><span class="n">KEY_INSTANCES</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span> + <span class="p">{</span> + <span class="n">key</span><span class="p">:</span> <span class="n">hf_dict</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">hf_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> + <span class="p">}</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_instances</span><span class="p">)</span> + <span class="p">]</span> + + <span class="k">return</span> <span class="n">dict_obj</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;dict&quot;</span><span class="p">:</span> + <span class="n">dict_obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span> + <span class="k">return</span> <span class="n">dict_obj</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;Current .to_dict is not supported for backend &quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">backend</span><span class="si">}</span><span class="s1">&quot;&#39;</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="Dataset.to_list"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.to_list">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">to_list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Returns a list of instances.&quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;huggingface&quot;</span><span class="p">:</span> + <span class="n">instance_list</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="o">.</span><span class="fm">__getitem__</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span> + <span class="k">for</span> <span class="n">idx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="p">))]</span> + <span class="k">return</span> <span class="n">instance_list</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;dict&quot;</span><span class="p">:</span> + <span class="n">instance_list</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="p">[</span><span class="n">KEY_INSTANCES</span><span class="p">])</span> + <span class="c1"># TODO: should be a list of instances, instance should be huggingface datasets row format</span> + <span class="k">return</span> <span class="n">instance_list</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;Current .to_list is not supported for backend &quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">backend</span><span class="si">}</span><span class="s1">&quot;&#39;</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="Dataset.map"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.map">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> +<span class="sd"> </span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments.</span> + +<span class="sd"> Returns</span> +<span class="sd"> ---------</span> + +<span class="sd"> self : Dataset object.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># If the dataset uses Hugging Face as the backend, </span> + <span class="c1"># call the `map()` function of the Hugging Face backend dataset</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;huggingface&quot;</span><span class="p">:</span> + <span class="c1"># Set the mapped dataset as the backend dataset of the current dataset</span> + <span class="n">mapped_backend_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span> <span class="o">=</span> <span class="n">mapped_backend_dataset</span> + <span class="k">return</span> <span class="bp">self</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># If the backend is not Hugging Face, raise a NotImplementedError</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;Currently .map is not supported for backend &quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">backend</span><span class="si">}</span><span class="s1">&quot;&#39;</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="Dataset.get_backend"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.get_backend">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_backend</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Returns</span> +<span class="sd"> ---------</span> + +<span class="sd"> self.backend</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend</span></div> + + + +<div class="viewcode-block" id="Dataset.get_backend_dataset"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.get_backend_dataset">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_backend_dataset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Returns</span> +<span class="sd"> ---------</span> + +<span class="sd"> self.backend_dataset</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span></div> + + + +<div class="viewcode-block" id="Dataset.get_fingerprint"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.get_fingerprint">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_fingerprint</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Returns</span> +<span class="sd"> ---------</span> + +<span class="sd"> Fingerprint of the backend_dataset which controls the cache</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="o">.</span><span class="n">_fingerprint</span></div> + + + +<div class="viewcode-block" id="Dataset.get_data_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.get_data_args">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_data_args</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Returns</span> +<span class="sd"> ---------</span> + +<span class="sd"> self.data_args</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span></div> + + + +<div class="viewcode-block" id="Dataset.get_type"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.get_type">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Returns</span> +<span class="sd"> ---------</span> + +<span class="sd"> self.type</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span></div> + + + +<div class="viewcode-block" id="Dataset.save"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.save">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">save</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">file_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="nb">format</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s2">&quot;json&quot;</span> + <span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Save the dataset to a json file.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> file_path : str.</span> +<span class="sd"> The path to the file where the dataset will be saved.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="nb">format</span> <span class="o">==</span> <span class="s2">&quot;json&quot;</span><span class="p">:</span> + <span class="k">assert</span> <span class="n">Path</span><span class="p">(</span><span class="n">file_path</span><span class="p">)</span><span class="o">.</span><span class="n">suffix</span> <span class="o">==</span> <span class="s2">&quot;.json&quot;</span><span class="p">,</span> <span class="s2">&quot;The file path must have a .json extension.&quot;</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">&#39;utf-8&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fout</span><span class="p">:</span> + <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">to_dict</span><span class="p">(),</span> <span class="n">fout</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">ensure_ascii</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Unsupported format when saving the dataset: </span><span class="si">{</span><span class="nb">format</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="Dataset.sample"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.sample">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">sample</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">seed</span><span class="p">:</span> <span class="nb">int</span><span class="o">=</span><span class="mi">42</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Sample n instances from the dataset.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> n : int.</span> +<span class="sd"> The number of instances to sample from the dataset.</span> + +<span class="sd"> Returns</span> +<span class="sd"> ---------</span> + +<span class="sd"> sample_dataset : Dataset object.</span> +<span class="sd"> A new dataset object containing the sampled instances.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;huggingface&quot;</span><span class="p">:</span> + <span class="n">sampled_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="o">.</span><span class="n">shuffle</span><span class="p">(</span><span class="n">seed</span><span class="o">=</span><span class="n">seed</span><span class="p">)</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">))</span> + <span class="n">output_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create_from_dict</span><span class="p">(</span> + <span class="p">{</span> + <span class="s2">&quot;type&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_type</span><span class="p">(),</span> + <span class="s2">&quot;instances&quot;</span><span class="p">:</span> <span class="p">[</span> + <span class="p">{</span> + <span class="n">col_name</span><span class="p">:</span> <span class="n">sampled_dataset</span><span class="p">[</span><span class="n">col_name</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="k">for</span> <span class="n">col_name</span> <span class="ow">in</span> <span class="n">sampled_dataset</span><span class="o">.</span><span class="n">column_names</span> + <span class="p">}</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">}</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">output_dataset</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;Currently .sample is not supported for backend &quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">backend</span><span class="si">}</span><span class="s1">&quot;&#39;</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="Dataset.train_test_split"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.train_test_split">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">train_test_split</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">test_size</span><span class="p">:</span> <span class="nb">float</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="n">shuffle</span><span class="p">:</span> <span class="nb">bool</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">seed</span><span class="p">:</span> <span class="nb">int</span><span class="o">=</span><span class="mi">42</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Split the dataset into training and testing sets.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> test_size : float, default=0.2.</span> +<span class="sd"> The proportion of the dataset that will be used for testing.</span> + +<span class="sd"> Returns</span> +<span class="sd"> ---------</span> + +<span class="sd"> train_dataset : Dataset object.</span> +<span class="sd"> A new dataset object containing the training instances.</span> +<span class="sd"> </span> +<span class="sd"> test_dataset : Dataset object.</span> +<span class="sd"> A new dataset object containing the testing instances.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;huggingface&quot;</span><span class="p">:</span> + <span class="n">splited</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="o">.</span><span class="n">train_test_split</span><span class="p">(</span> + <span class="n">test_size</span><span class="o">=</span><span class="n">test_size</span><span class="p">,</span> <span class="n">shuffle</span><span class="o">=</span><span class="n">shuffle</span><span class="p">,</span> <span class="n">seed</span><span class="o">=</span><span class="n">seed</span> + <span class="p">)</span> + <span class="n">train_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create_from_dict</span><span class="p">(</span> + <span class="p">{</span> + <span class="s2">&quot;type&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_type</span><span class="p">(),</span> + <span class="s2">&quot;instances&quot;</span><span class="p">:</span> <span class="p">[</span> + <span class="p">{</span> + <span class="n">col_name</span><span class="p">:</span> <span class="n">splited</span><span class="p">[</span><span class="s2">&quot;train&quot;</span><span class="p">][</span><span class="n">col_name</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="k">for</span> <span class="n">col_name</span> <span class="ow">in</span> <span class="n">splited</span><span class="p">[</span><span class="s2">&quot;train&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">column_names</span> + <span class="p">}</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">splited</span><span class="p">[</span><span class="s2">&quot;train&quot;</span><span class="p">]))</span> + <span class="p">]</span> + <span class="p">}</span> + <span class="p">)</span> + <span class="n">test_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create_from_dict</span><span class="p">(</span> + <span class="p">{</span> + <span class="s2">&quot;type&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_type</span><span class="p">(),</span> + <span class="s2">&quot;instances&quot;</span><span class="p">:</span> <span class="p">[</span> + <span class="p">{</span> + <span class="n">col_name</span><span class="p">:</span> <span class="n">splited</span><span class="p">[</span><span class="s2">&quot;test&quot;</span><span class="p">][</span><span class="n">col_name</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="k">for</span> <span class="n">col_name</span> <span class="ow">in</span> <span class="n">splited</span><span class="p">[</span><span class="s2">&quot;test&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">column_names</span> + <span class="p">}</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">splited</span><span class="p">[</span><span class="s2">&quot;test&quot;</span><span class="p">]))</span> + <span class="p">]</span> + <span class="p">}</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">train_dataset</span><span class="p">,</span> <span class="n">test_dataset</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;Currently .train_test_split is not supported for backend &quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">backend</span><span class="si">}</span><span class="s1">&quot;&#39;</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="Dataset.drop_instances"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.drop_instances">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">drop_instances</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">indices</span><span class="p">:</span> <span class="nb">list</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Drop instances from the dataset.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> indices : list.</span> +<span class="sd"> A list of indices of the instances to drop from the dataset.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;huggingface&quot;</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="o">.</span><span class="n">remove_indices</span><span class="p">(</span><span class="n">indices</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;Currently .drop_instances is not supported for backend &quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">backend</span><span class="si">}</span><span class="s1">&quot;&#39;</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="Dataset.sanity_check"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.sanity_check">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">sanity_check</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">drop_invalid</span><span class="p">:</span> <span class="nb">bool</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform a sanity check on the dataset.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;huggingface&quot;</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">hf_dataset_sanity_check</span><span class="p">(</span><span class="n">drop_invalid</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;Currently .sanity_check is not supported for backend &quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">backend</span><span class="si">}</span><span class="s1">&quot;&#39;</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="Dataset.hf_dataset_sanity_check"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/index.html#lmflow.datasets.dataset.Dataset.hf_dataset_sanity_check">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">hf_dataset_sanity_check</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">drop_invalid</span><span class="p">:</span> <span class="nb">bool</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform a sanity check on the HuggingFace dataset.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Dataset is empty.&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;text_to_textlist&#39;</span><span class="p">:</span> + <span class="n">num_output_per_instance</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="p">[</span><span class="s1">&#39;output&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> + <span class="n">dataset_cache</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">])</span><span class="o">!=</span><span class="mi">0</span><span class="p">)</span> + <span class="n">dataset_cache</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s1">&#39;output&#39;</span><span class="p">])</span> <span class="o">==</span> <span class="n">num_output_per_instance</span><span class="p">)</span> + <span class="n">dataset_cache</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">([</span><span class="nb">len</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">for</span> <span class="n">output</span> <span class="ow">in</span> <span class="n">x</span><span class="p">[</span><span class="s1">&#39;output&#39;</span><span class="p">]]))</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">dataset_cache</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="p">):</span> + <span class="n">warning_info</span> <span class="o">=</span> <span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Found </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nb">len</span><span class="p">(</span><span class="n">dataset_cache</span><span class="p">)</span><span class="si">}</span><span class="s2"> invalid instances &quot;</span> + <span class="s2">&quot;during hf_dataset_sanity_check, please check:</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="s2">&quot; 1. length of input strings should not be empty</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="s2">&quot; 2. length of output strings should not be all empty</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="s2">&quot; 3. number of output strings should be consistent</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="c1"># since we will use tensor reshape later</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">drop_invalid</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_dataset</span> <span class="o">=</span> <span class="n">dataset_cache</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="n">warning_info</span><span class="o">+</span><span class="s2">&quot;Invalid instances are dropped.&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">warning_info</span><span class="p">)</span> + + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No sanity check for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="s2"> dataset.&quot;</span><span class="p">)</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/datasets/multi_modal_dataset.html b/_modules/lmflow/datasets/multi_modal_dataset.html new file mode 100644 index 000000000..22fadbc41 --- /dev/null +++ b/_modules/lmflow/datasets/multi_modal_dataset.html @@ -0,0 +1,783 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.datasets.multi_modal_dataset &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/datasets/multi_modal_dataset';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.datasets.multi_modal_dataset</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.datasets.multi_modal_dataset</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># FIXME update the doc string.</span> +<span class="sd">&quot;&quot;&quot;This Python code defines a class Multi Modal Dataset.</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">copy</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">dataclasses</span><span class="w"> </span><span class="kn">import</span> <span class="n">dataclass</span><span class="p">,</span> <span class="n">field</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">json</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">PIL</span><span class="w"> </span><span class="kn">import</span> <span class="n">Image</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os.path</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">osp</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">transformers</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.utils.data</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="n">DatasetArguments</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">llava_conversation_lib</span> <span class="k">as</span> <span class="n">conversation_lib</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="n">IGNORE_INDEX</span><span class="p">,</span> <span class="n">IMAGE_TOKEN_INDEX</span><span class="p">,</span> <span class="n">DEFAULT_IMAGE_TOKEN</span><span class="p">,</span> <span class="n">DEFAULT_IM_START_TOKEN</span><span class="p">,</span> <span class="n">DEFAULT_IM_END_TOKEN</span> + +<div class="viewcode-block" id="CustomMultiModalDataset"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">CustomMultiModalDataset</span><span class="p">(</span><span class="n">Dataset</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Dataset for Multi Modal data&quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dataset_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">):</span> + <span class="nb">super</span><span class="p">(</span><span class="n">CustomMultiModalDataset</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span> + <span class="n">data_dict</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="n">dataset_path</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">))</span> +<div class="viewcode-block" id="CustomMultiModalDataset.data_dict"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.data_dict">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">data_dict</span> <span class="o">=</span> <span class="n">data_dict</span></div> + + <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Finish loading json file in dataset.&quot;</span><span class="p">)</span> +<div class="viewcode-block" id="CustomMultiModalDataset.data_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.data_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> <span class="o">=</span> <span class="n">data_args</span></div> + +<div class="viewcode-block" id="CustomMultiModalDataset.image_folder"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.image_folder">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">image_folder</span> <span class="o">=</span> <span class="n">data_args</span><span class="o">.</span><span class="n">image_folder</span></div> + + +<div class="viewcode-block" id="CustomMultiModalDataset.__len__"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.__len__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="fm">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data_dict</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="CustomMultiModalDataset.register_tokenizer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.register_tokenizer">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">register_tokenizer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">,</span> <span class="n">image_processor</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span> <span class="o">=</span> <span class="n">tokenizer</span> + <span class="bp">self</span><span class="o">.</span><span class="n">image_processor</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span> + <span class="n">tokenizer</span><span class="p">,</span> <span class="s2">&quot;image_processor&quot;</span><span class="p">,</span> <span class="n">image_processor</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="CustomMultiModalDataset.__getitem__"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.__getitem__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span> + <span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_dict</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span> + <span class="n">data</span> <span class="o">=</span> <span class="p">[</span><span class="n">data</span><span class="p">]</span> + <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> + <span class="n">processor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">image_processor</span> + <span class="k">if</span> <span class="s1">&#39;image&#39;</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> + <span class="n">image_file</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;image&#39;</span><span class="p">]</span> + <span class="n">image</span> <span class="o">=</span> <span class="n">Image</span><span class="o">.</span><span class="n">open</span><span class="p">(</span> + <span class="n">osp</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">image_folder</span><span class="p">,</span> <span class="n">image_file</span><span class="p">))</span><span class="o">.</span><span class="n">convert</span><span class="p">(</span><span class="s2">&quot;RGB&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">image_aspect_ratio</span> <span class="o">==</span> <span class="s1">&#39;pad&#39;</span><span class="p">:</span> + <span class="k">def</span><span class="w"> </span><span class="nf">expand2square</span><span class="p">(</span><span class="n">pil_img</span><span class="p">,</span> <span class="n">background_color</span><span class="p">):</span> + <span class="n">width</span><span class="p">,</span> <span class="n">height</span> <span class="o">=</span> <span class="n">pil_img</span><span class="o">.</span><span class="n">size</span> + <span class="k">if</span> <span class="n">width</span> <span class="o">==</span> <span class="n">height</span><span class="p">:</span> + <span class="k">return</span> <span class="n">pil_img</span> + <span class="k">elif</span> <span class="n">width</span> <span class="o">&gt;</span> <span class="n">height</span><span class="p">:</span> + <span class="n">result</span> <span class="o">=</span> <span class="n">Image</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">pil_img</span><span class="o">.</span><span class="n">mode</span><span class="p">,</span> <span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">width</span><span class="p">),</span> <span class="n">background_color</span><span class="p">)</span> + <span class="n">result</span><span class="o">.</span><span class="n">paste</span><span class="p">(</span><span class="n">pil_img</span><span class="p">,</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="p">(</span><span class="n">width</span> <span class="o">-</span> <span class="n">height</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span><span class="p">))</span> + <span class="k">return</span> <span class="n">result</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">result</span> <span class="o">=</span> <span class="n">Image</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">pil_img</span><span class="o">.</span><span class="n">mode</span><span class="p">,</span> <span class="p">(</span><span class="n">height</span><span class="p">,</span> <span class="n">height</span><span class="p">),</span> <span class="n">background_color</span><span class="p">)</span> + <span class="n">result</span><span class="o">.</span><span class="n">paste</span><span class="p">(</span><span class="n">pil_img</span><span class="p">,</span> <span class="p">((</span><span class="n">height</span> <span class="o">-</span> <span class="n">width</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> + <span class="k">return</span> <span class="n">result</span> + <span class="n">image</span> <span class="o">=</span> <span class="n">expand2square</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="o">*</span><span class="mi">255</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">processor</span><span class="o">.</span><span class="n">image_mean</span><span class="p">))</span> + <span class="n">image</span> <span class="o">=</span> <span class="n">processor</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s1">&#39;pt&#39;</span><span class="p">)[</span><span class="s1">&#39;pixel_values&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">image</span> <span class="o">=</span> <span class="n">processor</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s1">&#39;pt&#39;</span><span class="p">)[</span><span class="s1">&#39;pixel_values&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> + <span class="n">data</span> <span class="o">=</span> <span class="n">preprocess_multimodal_llava</span><span class="p">(</span> + <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">([</span><span class="n">e</span><span class="p">[</span><span class="s2">&quot;conversations&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">data</span><span class="p">]),</span> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">data</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">([</span><span class="n">e</span><span class="p">[</span><span class="s2">&quot;conversations&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">data</span><span class="p">])</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">sep_style</span> <span class="o">==</span> <span class="s2">&quot;plain&quot;</span><span class="p">:</span> + <span class="n">data_dict</span> <span class="o">=</span> <span class="n">preprocess_llama_from_llava_plain</span><span class="p">(</span> + <span class="n">data</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">,</span> + <span class="n">has_image</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;image&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_dict</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">data_dict</span> <span class="o">=</span> <span class="n">preprocess_llama_from_llava_v1</span><span class="p">(</span> + <span class="n">data</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">,</span> + <span class="n">has_image</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;image&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_dict</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> + <span class="p">)</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span> + <span class="n">data_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">input_ids</span><span class="o">=</span><span class="n">data_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> + <span class="n">labels</span><span class="o">=</span><span class="n">data_dict</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> + + <span class="c1"># image exist in the data</span> + <span class="k">if</span> <span class="s1">&#39;image&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_dict</span><span class="p">[</span><span class="n">i</span><span class="p">]:</span> + <span class="n">data_dict</span><span class="p">[</span><span class="s1">&#39;image&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">image</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># image does not exist in the data, but the model is multimodal</span> + <span class="n">crop_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">image_processor</span><span class="o">.</span><span class="n">crop_size</span> + <span class="n">data_dict</span><span class="p">[</span><span class="s1">&#39;image&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span> + <span class="mi">3</span><span class="p">,</span> <span class="n">crop_size</span><span class="p">[</span><span class="s1">&#39;height&#39;</span><span class="p">],</span> <span class="n">crop_size</span><span class="p">[</span><span class="s1">&#39;width&#39;</span><span class="p">])</span> + <span class="k">return</span> <span class="n">data_dict</span></div> +</div> + + + + +<div class="viewcode-block" id="preprocess_multimodal_llava"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.preprocess_multimodal_llava">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">preprocess_multimodal_llava</span><span class="p">(</span><span class="n">sources</span><span class="p">,</span> <span class="n">data_args</span><span class="p">):</span> + <span class="n">is_multimodal</span> <span class="o">=</span> <span class="n">data_args</span><span class="o">.</span><span class="n">is_multimodal</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_multimodal</span><span class="p">:</span> + <span class="k">return</span> <span class="n">sources</span> + + <span class="k">for</span> <span class="n">source</span> <span class="ow">in</span> <span class="n">sources</span><span class="p">:</span> + <span class="k">for</span> <span class="n">sentence</span> <span class="ow">in</span> <span class="n">source</span><span class="p">:</span> + <span class="k">if</span> <span class="n">DEFAULT_IMAGE_TOKEN</span> <span class="ow">in</span> <span class="n">sentence</span><span class="p">[</span><span class="s1">&#39;value&#39;</span><span class="p">]:</span> + <span class="n">sentence</span><span class="p">[</span><span class="s1">&#39;value&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">sentence</span><span class="p">[</span><span class="s1">&#39;value&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span> + <span class="n">DEFAULT_IMAGE_TOKEN</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> + <span class="n">sentence</span><span class="p">[</span><span class="s1">&#39;value&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">DEFAULT_IMAGE_TOKEN</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">sentence</span><span class="p">[</span><span class="s1">&#39;value&#39;</span><span class="p">]</span> + <span class="n">sentence</span><span class="p">[</span><span class="s1">&#39;value&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">sentence</span><span class="p">[</span><span class="s1">&#39;value&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> + <span class="k">if</span> <span class="s2">&quot;mmtag&quot;</span> <span class="ow">in</span> <span class="n">conversation_lib</span><span class="o">.</span><span class="n">default_conversation</span><span class="o">.</span><span class="n">version</span><span class="p">:</span> + <span class="n">sentence</span><span class="p">[</span><span class="s1">&#39;value&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">sentence</span><span class="p">[</span><span class="s1">&#39;value&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span> + <span class="n">DEFAULT_IMAGE_TOKEN</span><span class="p">,</span> <span class="s1">&#39;&lt;Image&gt;&#39;</span> <span class="o">+</span> <span class="n">DEFAULT_IMAGE_TOKEN</span> <span class="o">+</span> <span class="s1">&#39;&lt;/Image&gt;&#39;</span><span class="p">)</span> + <span class="n">replace_token</span> <span class="o">=</span> <span class="n">DEFAULT_IMAGE_TOKEN</span> + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">use_image_start_end</span><span class="p">:</span> + <span class="n">replace_token</span> <span class="o">=</span> <span class="n">DEFAULT_IM_START_TOKEN</span> <span class="o">+</span> \ + <span class="n">replace_token</span> <span class="o">+</span> <span class="n">DEFAULT_IM_END_TOKEN</span> + <span class="n">sentence</span><span class="p">[</span><span class="s2">&quot;value&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">sentence</span><span class="p">[</span><span class="s2">&quot;value&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span> + <span class="n">DEFAULT_IMAGE_TOKEN</span><span class="p">,</span> <span class="n">replace_token</span><span class="p">)</span> + <span class="k">return</span> <span class="n">sources</span></div> + + + +<div class="viewcode-block" id="tokenizer_image_token"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.tokenizer_image_token">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">tokenizer_image_token</span><span class="p">(</span><span class="n">prompt</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">,</span> + <span class="n">image_token_index</span><span class="o">=</span><span class="n">IMAGE_TOKEN_INDEX</span><span class="p">,</span> + <span class="n">return_tensors</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="n">prompt_chunks</span> <span class="o">=</span> <span class="p">[</span><span class="n">tokenizer</span><span class="p">(</span><span class="n">chunk</span><span class="p">)</span><span class="o">.</span><span class="n">input_ids</span> <span class="k">for</span> <span class="n">chunk</span> <span class="ow">in</span> <span class="n">prompt</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;&lt;image&gt;&#39;</span><span class="p">)]</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">insert_separator</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">sep</span><span class="p">):</span> + <span class="k">return</span> <span class="p">[</span><span class="n">ele</span> <span class="k">for</span> <span class="n">sublist</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="p">[</span><span class="n">sep</span><span class="p">]</span><span class="o">*</span><span class="nb">len</span><span class="p">(</span><span class="n">X</span><span class="p">))</span> <span class="k">for</span> <span class="n">ele</span> <span class="ow">in</span> <span class="n">sublist</span><span class="p">][:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + + <span class="n">input_ids</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">offset</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">prompt_chunks</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">prompt_chunks</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">prompt_chunks</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">bos_token_id</span><span class="p">:</span> + <span class="n">offset</span> <span class="o">=</span> <span class="mi">1</span> + <span class="n">input_ids</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">prompt_chunks</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> + + <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">insert_separator</span><span class="p">(</span><span class="n">prompt_chunks</span><span class="p">,</span> <span class="p">[</span><span class="n">image_token_index</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="n">offset</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)):</span> + <span class="n">input_ids</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">offset</span><span class="p">:])</span> + + <span class="k">if</span> <span class="n">return_tensors</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="n">return_tensors</span> <span class="o">==</span> <span class="s1">&#39;pt&#39;</span><span class="p">:</span> + <span class="k">return</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span><span class="n">input_ids</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">long</span><span class="p">)</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;Unsupported tensor type: </span><span class="si">{</span><span class="n">return_tensors</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="k">return</span> <span class="n">input_ids</span></div> + + + +<div class="viewcode-block" id="preprocess_llama_from_llava_plain"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_plain">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">preprocess_llama_from_llava_plain</span><span class="p">(</span> + <span class="n">sources</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">transformers</span><span class="o">.</span><span class="n">PreTrainedTokenizer</span><span class="p">,</span> + <span class="n">has_image</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> This function just add the image in the front of text.</span> +<span class="sd"> And don&#39;t add any prompt.</span> +<span class="sd"> Args:</span> +<span class="sd"> sources: The input data with text and image.</span> +<span class="sd"> tokenizer: The tokenizer to process text.</span> +<span class="sd"> has_image: Whether the input data has image.</span> +<span class="sd"> Returns:</span> +<span class="sd"> The input_ids and labels for the model.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">conversations</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">source</span> <span class="ow">in</span> <span class="n">sources</span><span class="p">:</span> + <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">source</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span> + <span class="k">assert</span> <span class="n">DEFAULT_IMAGE_TOKEN</span> <span class="ow">in</span> <span class="n">source</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;value&#39;</span><span class="p">]</span> + <span class="n">source</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;value&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">DEFAULT_IMAGE_TOKEN</span> + <span class="n">conversation</span> <span class="o">=</span> <span class="n">source</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;value&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="n">source</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="s1">&#39;value&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="n">conversation_lib</span><span class="o">.</span><span class="n">default_conversation</span><span class="o">.</span><span class="n">sep</span> + <span class="n">conversations</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">conversation</span><span class="p">)</span> + <span class="c1"># tokenize conversations</span> + <span class="n">input_ids</span> <span class="o">=</span> <span class="p">[</span><span class="n">tokenizer_image_token</span><span class="p">(</span><span class="n">prompt</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s1">&#39;pt&#39;</span><span class="p">)</span> <span class="k">for</span> <span class="n">prompt</span> <span class="ow">in</span> <span class="n">conversations</span><span class="p">]</span> + <span class="n">targets</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">input_ids</span><span class="p">)</span> + <span class="k">for</span> <span class="n">target</span><span class="p">,</span> <span class="n">source</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">targets</span><span class="p">,</span> <span class="n">sources</span><span class="p">):</span> + <span class="n">tokenized_len</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tokenizer_image_token</span><span class="p">(</span><span class="n">source</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;value&#39;</span><span class="p">],</span> <span class="n">tokenizer</span><span class="p">))</span> + <span class="n">target</span><span class="p">[:</span><span class="n">tokenized_len</span><span class="p">]</span> <span class="o">=</span> <span class="n">IGNORE_INDEX</span> + + <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span><span class="n">input_ids</span><span class="o">=</span><span class="n">input_ids</span><span class="p">,</span> <span class="n">labels</span><span class="o">=</span><span class="n">targets</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="preprocess_llama_from_llava_v1"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_v1">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">preprocess_llama_from_llava_v1</span><span class="p">(</span> + <span class="n">sources</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">transformers</span><span class="o">.</span><span class="n">PreTrainedTokenizer</span><span class="p">,</span> + <span class="n">has_image</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> This function add the prompt and then put the image after the prompt.</span> +<span class="sd"> So it needs additional code to generate the target label.</span> +<span class="sd"> Args:</span> +<span class="sd"> sources: The input data with text and image.</span> +<span class="sd"> tokenizer: The tokenizer to process text.</span> +<span class="sd"> has_image: Whether the input data has image.</span> +<span class="sd"> Returns:</span> +<span class="sd"> The input_ids and labels for the model.</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="n">conv</span> <span class="o">=</span> <span class="n">conversation_lib</span><span class="o">.</span><span class="n">default_conversation</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> + <span class="n">roles</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;human&quot;</span><span class="p">:</span> <span class="n">conv</span><span class="o">.</span><span class="n">roles</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s2">&quot;gpt&quot;</span><span class="p">:</span> <span class="n">conv</span><span class="o">.</span><span class="n">roles</span><span class="p">[</span><span class="mi">1</span><span class="p">]}</span> + + <span class="c1"># Apply prompt templates</span> + <span class="n">conversations</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">source</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sources</span><span class="p">):</span> + <span class="k">if</span> <span class="n">roles</span><span class="p">[</span><span class="n">source</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">&quot;from&quot;</span><span class="p">]]</span> <span class="o">!=</span> <span class="n">conv</span><span class="o">.</span><span class="n">roles</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> + <span class="c1"># Skip the first one if it is not from human</span> + <span class="n">source</span> <span class="o">=</span> <span class="n">source</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> + + <span class="n">conv</span><span class="o">.</span><span class="n">messages</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">j</span><span class="p">,</span> <span class="n">sentence</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">source</span><span class="p">):</span> + <span class="n">role</span> <span class="o">=</span> <span class="n">roles</span><span class="p">[</span><span class="n">sentence</span><span class="p">[</span><span class="s2">&quot;from&quot;</span><span class="p">]]</span> + <span class="k">assert</span> <span class="n">role</span> <span class="o">==</span> <span class="n">conv</span><span class="o">.</span><span class="n">roles</span><span class="p">[</span><span class="n">j</span> <span class="o">%</span> <span class="mi">2</span><span class="p">],</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="n">conv</span><span class="o">.</span><span class="n">append_message</span><span class="p">(</span><span class="n">role</span><span class="p">,</span> <span class="n">sentence</span><span class="p">[</span><span class="s2">&quot;value&quot;</span><span class="p">])</span> + <span class="n">conversations</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">conv</span><span class="o">.</span><span class="n">get_prompt</span><span class="p">())</span> + + <span class="c1"># Tokenize conversations</span> + + <span class="k">if</span> <span class="n">has_image</span><span class="p">:</span> + <span class="n">input_ids</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">([</span><span class="n">tokenizer_image_token</span><span class="p">(</span><span class="n">prompt</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s1">&#39;pt&#39;</span><span class="p">)</span> <span class="k">for</span> <span class="n">prompt</span> <span class="ow">in</span> <span class="n">conversations</span><span class="p">],</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">input_ids</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="p">(</span> + <span class="n">conversations</span><span class="p">,</span> + <span class="n">return_tensors</span><span class="o">=</span><span class="s2">&quot;pt&quot;</span><span class="p">,</span> + <span class="n">padding</span><span class="o">=</span><span class="s2">&quot;longest&quot;</span><span class="p">,</span> + <span class="n">max_length</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span><span class="p">,</span> + <span class="n">truncation</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="p">)</span><span class="o">.</span><span class="n">input_ids</span> + + <span class="n">targets</span> <span class="o">=</span> <span class="n">input_ids</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span> + <span class="k">assert</span> <span class="n">conv</span><span class="o">.</span><span class="n">sep_style</span> <span class="o">==</span> <span class="n">conversation_lib</span><span class="o">.</span><span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">TWO</span> + + <span class="c1"># Mask targets</span> + <span class="n">sep</span> <span class="o">=</span> <span class="n">conv</span><span class="o">.</span><span class="n">sep</span> <span class="o">+</span> <span class="n">conv</span><span class="o">.</span><span class="n">roles</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;: &quot;</span> + <span class="k">for</span> <span class="n">conversation</span><span class="p">,</span> <span class="n">target</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">conversations</span><span class="p">,</span> <span class="n">targets</span><span class="p">):</span> + <span class="n">total_len</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">target</span><span class="o">.</span><span class="n">ne</span><span class="p">(</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">())</span> + + <span class="n">rounds</span> <span class="o">=</span> <span class="n">conversation</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">conv</span><span class="o">.</span><span class="n">sep2</span><span class="p">)</span> + <span class="n">cur_len</span> <span class="o">=</span> <span class="mi">1</span> + <span class="n">target</span><span class="p">[:</span><span class="n">cur_len</span><span class="p">]</span> <span class="o">=</span> <span class="n">IGNORE_INDEX</span> + <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">rou</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">rounds</span><span class="p">):</span> + <span class="k">if</span> <span class="n">rou</span> <span class="o">==</span> <span class="s2">&quot;&quot;</span><span class="p">:</span> + <span class="k">break</span> + + <span class="n">parts</span> <span class="o">=</span> <span class="n">rou</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">sep</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">parts</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">:</span> + <span class="k">break</span> + <span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="n">sep</span> + + <span class="k">if</span> <span class="n">has_image</span><span class="p">:</span> + <span class="n">round_len</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tokenizer_image_token</span><span class="p">(</span><span class="n">rou</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">))</span> + <span class="n">instruction_len</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tokenizer_image_token</span><span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">tokenizer</span><span class="p">))</span> <span class="o">-</span> <span class="mi">2</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">round_len</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tokenizer</span><span class="p">(</span><span class="n">rou</span><span class="p">)</span><span class="o">.</span><span class="n">input_ids</span><span class="p">)</span> + <span class="n">instruction_len</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tokenizer</span><span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="o">.</span><span class="n">input_ids</span><span class="p">)</span> <span class="o">-</span> <span class="mi">2</span> + + <span class="n">target</span><span class="p">[</span><span class="n">cur_len</span> <span class="p">:</span> <span class="n">cur_len</span> <span class="o">+</span> <span class="n">instruction_len</span><span class="p">]</span> <span class="o">=</span> <span class="n">IGNORE_INDEX</span> + + <span class="n">cur_len</span> <span class="o">+=</span> <span class="n">round_len</span> + <span class="n">target</span><span class="p">[</span><span class="n">cur_len</span><span class="p">:]</span> <span class="o">=</span> <span class="n">IGNORE_INDEX</span> + + <span class="k">if</span> <span class="n">cur_len</span> <span class="o">&lt;</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span><span class="p">:</span> + <span class="k">if</span> <span class="n">cur_len</span> <span class="o">!=</span> <span class="n">total_len</span><span class="p">:</span> + <span class="n">target</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">IGNORE_INDEX</span> + <span class="nb">print</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;WARNING: tokenization mismatch: </span><span class="si">{</span><span class="n">cur_len</span><span class="si">}</span><span class="s2"> vs. </span><span class="si">{</span><span class="n">total_len</span><span class="si">}</span><span class="s2">.&quot;</span> + <span class="sa">f</span><span class="s2">&quot; (ignored)&quot;</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">input_ids</span><span class="o">=</span><span class="n">input_ids</span><span class="p">,</span> + <span class="n">labels</span><span class="o">=</span><span class="n">targets</span><span class="p">,</span> + <span class="p">)</span></div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="DataCollatorForSupervisedDataset"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">DataCollatorForSupervisedDataset</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Collate examples for supervised fine-tuning.&quot;&quot;&quot;</span> + +<div class="viewcode-block" id="DataCollatorForSupervisedDataset.tokenizer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset.tokenizer">[docs]</a> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">transformers</span><span class="o">.</span><span class="n">PreTrainedTokenizer</span></div> + + +<div class="viewcode-block" id="DataCollatorForSupervisedDataset.__call__"> +<a class="viewcode-back" href="../../../autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset.__call__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instances</span><span class="p">):</span> + <span class="n">input_ids</span><span class="p">,</span> <span class="n">labels</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">([</span><span class="n">instance</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="k">for</span> <span class="n">instance</span> <span class="ow">in</span> <span class="n">instances</span><span class="p">]</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;input_ids&quot;</span><span class="p">,</span> <span class="s2">&quot;labels&quot;</span><span class="p">))</span> + <span class="n">input_ids</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">rnn</span><span class="o">.</span><span class="n">pad_sequence</span><span class="p">(</span> + <span class="n">input_ids</span><span class="p">,</span> + <span class="n">batch_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">padding_value</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span><span class="p">)</span> + <span class="n">labels</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">rnn</span><span class="o">.</span><span class="n">pad_sequence</span><span class="p">(</span><span class="n">labels</span><span class="p">,</span> + <span class="n">batch_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">padding_value</span><span class="o">=</span><span class="n">IGNORE_INDEX</span><span class="p">)</span> + <span class="n">input_ids</span> <span class="o">=</span> <span class="n">input_ids</span><span class="p">[:,</span> <span class="p">:</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span><span class="p">]</span> + <span class="n">labels</span> <span class="o">=</span> <span class="n">labels</span><span class="p">[:,</span> <span class="p">:</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span><span class="p">]</span> + <span class="n">batch</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">input_ids</span><span class="o">=</span><span class="n">input_ids</span><span class="p">,</span> + <span class="n">labels</span><span class="o">=</span><span class="n">labels</span><span class="p">,</span> + <span class="n">attention_mask</span><span class="o">=</span><span class="n">input_ids</span><span class="o">.</span><span class="n">ne</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span><span class="p">),</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="s1">&#39;image&#39;</span> <span class="ow">in</span> <span class="n">instances</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> + <span class="n">images</span> <span class="o">=</span> <span class="p">[</span><span class="n">instance</span><span class="p">[</span><span class="s1">&#39;image&#39;</span><span class="p">]</span> <span class="k">for</span> <span class="n">instance</span> <span class="ow">in</span> <span class="n">instances</span><span class="p">]</span> + <span class="k">if</span> <span class="nb">all</span><span class="p">(</span><span class="n">x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">x</span><span class="o">.</span><span class="n">shape</span> <span class="o">==</span> <span class="n">images</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">images</span><span class="p">):</span> + <span class="n">batch</span><span class="p">[</span><span class="s1">&#39;images&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">images</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">batch</span><span class="p">[</span><span class="s1">&#39;images&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">images</span> + <span class="k">return</span> <span class="n">batch</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/models/auto_model.html b/_modules/lmflow/models/auto_model.html new file mode 100644 index 000000000..32bbfb043 --- /dev/null +++ b/_modules/lmflow/models/auto_model.html @@ -0,0 +1,472 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.models.auto_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/models/auto_model';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.auto_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.models.auto_model</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;Automatically get correct model type.</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.hf_decoder_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">HFDecoderModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.hf_text_regression_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">HFTextRegressionModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.hf_encoder_decoder_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">HFEncoderDecoderModel</span> + +<div class="viewcode-block" id="AutoModel"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/auto_model/index.html#lmflow.models.auto_model.AutoModel">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">AutoModel</span><span class="p">:</span> + + <span class="nd">@classmethod</span> +<div class="viewcode-block" id="AutoModel.get_model"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/auto_model/index.html#lmflow.models.auto_model.AutoModel.get_model">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_model</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model_args</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="n">arch_type</span> <span class="o">=</span> <span class="n">model_args</span><span class="o">.</span><span class="n">arch_type</span> + <span class="k">if</span> <span class="n">arch_type</span> <span class="o">==</span> <span class="s2">&quot;decoder_only&quot;</span><span class="p">:</span> + <span class="k">return</span> <span class="n">HFDecoderModel</span><span class="p">(</span><span class="n">model_args</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">arch_type</span> <span class="o">==</span> <span class="s2">&quot;text_regression&quot;</span><span class="p">:</span> + <span class="k">return</span> <span class="n">HFTextRegressionModel</span><span class="p">(</span><span class="n">model_args</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">arch_type</span> <span class="o">==</span> <span class="s2">&quot;encoder_decoder&quot;</span> <span class="ow">or</span> \ + <span class="n">arch_type</span> <span class="o">==</span> <span class="s2">&quot;vision_encoder_decoder&quot;</span><span class="p">:</span> + <span class="k">return</span> <span class="n">HFEncoderDecoderModel</span><span class="p">(</span><span class="n">model_args</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;model architecture type </span><span class="se">\&quot;</span><span class="si">{</span><span class="n">arch_type</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2"> is not supported&quot;</span> + <span class="p">)</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/models/base_model.html b/_modules/lmflow/models/base_model.html new file mode 100644 index 000000000..8087f38e0 --- /dev/null +++ b/_modules/lmflow/models/base_model.html @@ -0,0 +1,456 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.models.base_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/models/base_model';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.base_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.models.base_model</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;Base model class.</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">abc</span><span class="w"> </span><span class="kn">import</span> <span class="n">ABC</span> + + +<div class="viewcode-block" id="BaseModel"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/base_model/index.html#lmflow.models.base_model.BaseModel">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">BaseModel</span><span class="p">(</span><span class="n">ABC</span><span class="p">):</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="k">pass</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/models/decoder_model.html b/_modules/lmflow/models/decoder_model.html new file mode 100644 index 000000000..711d6ae0f --- /dev/null +++ b/_modules/lmflow/models/decoder_model.html @@ -0,0 +1,466 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.models.decoder_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/models/decoder_model';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.decoder_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.models.decoder_model</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;A one-line summary of the module or program, terminated by a period.</span> + +<span class="sd">Leave one blank line. The rest of this docstring should contain an</span> +<span class="sd">overall description of the module or program. Optionally, it may also</span> +<span class="sd">contain a brief description of exported classes and functions and/or usage</span> +<span class="sd">examples.</span> + +<span class="sd">Typical usage example:</span> + +<span class="sd"> foo = ClassFoo()</span> +<span class="sd"> bar = foo.FunctionBar()</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.base_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseModel</span> + + +<div class="viewcode-block" id="DecoderModel"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/decoder_model/index.html#lmflow.models.decoder_model.DecoderModel">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">DecoderModel</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="k">pass</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/models/encoder_decoder_model.html b/_modules/lmflow/models/encoder_decoder_model.html new file mode 100644 index 000000000..fe8a38b85 --- /dev/null +++ b/_modules/lmflow/models/encoder_decoder_model.html @@ -0,0 +1,466 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.models.encoder_decoder_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/models/encoder_decoder_model';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.encoder_decoder_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.models.encoder_decoder_model</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;A one-line summary of the module or program, terminated by a period.</span> + +<span class="sd">Leave one blank line. The rest of this docstring should contain an</span> +<span class="sd">overall description of the module or program. Optionally, it may also</span> +<span class="sd">contain a brief description of exported classes and functions and/or usage</span> +<span class="sd">examples.</span> + +<span class="sd">Typical usage example:</span> + +<span class="sd"> foo = ClassFoo()</span> +<span class="sd"> bar = foo.FunctionBar()</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.base_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseModel</span> + + +<div class="viewcode-block" id="EncoderDecoderModel"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/encoder_decoder_model/index.html#lmflow.models.encoder_decoder_model.EncoderDecoderModel">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">EncoderDecoderModel</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="k">pass</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/models/hf_decoder_model.html b/_modules/lmflow/models/hf_decoder_model.html new file mode 100644 index 000000000..eab6c6b97 --- /dev/null +++ b/_modules/lmflow/models/hf_decoder_model.html @@ -0,0 +1,1157 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.models.hf_decoder_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/models/hf_decoder_model';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.hf_decoder_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.models.hf_decoder_model</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;This is a class called HFDecoderModel which is a wrapper around transformers model and</span> +<span class="sd">tokenizer classes. It has several methods such as __init__, tokenize, and train that are </span> +<span class="sd">used for training and fine-tuning the model. The __init__ method takes in several arguments</span> +<span class="sd">such as model_args, tune_strategy, and ds_config, which are used to load the pretrained </span> +<span class="sd">model and tokenizer, and initialize the training settings.</span> + +<span class="sd">The tokenize method is used to tokenize the input text and return the input IDs and attention</span> +<span class="sd">masks that can be fed to the model for training or inference.</span> + +<span class="sd">This class supports different tune_strategy options such as &#39;normal&#39;, &#39;none&#39;, &#39;lora&#39;, and</span> +<span class="sd">&#39;adapter&#39;, which allow for different fine-tuning settings of the model. However, the &#39;lora&#39;</span> +<span class="sd">and &#39;adapter&#39; strategies are not yet implemented.</span> + +<span class="sd">Overall, this class provides a convenient interface for loading and fine-tuning transformer</span> +<span class="sd">models and can be used for various NLP tasks such as language modeling, text classification,</span> +<span class="sd">and question answering.</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">hashlib</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span><span class="o">,</span><span class="w"> </span><span class="nn">shutil</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Dict</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">AutoConfig</span><span class="p">,</span> + <span class="n">AutoModelForCausalLM</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">peft</span><span class="w"> </span><span class="kn">import</span> <span class="n">PeftModel</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets.dataset</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.hf_model_mixin</span><span class="w"> </span><span class="kn">import</span> <span class="n">HFModelMixin</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.decoder_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">DecoderModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.interfaces.tunable</span><span class="w"> </span><span class="kn">import</span> <span class="n">Tunable</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">TEXT_ONLY_DATASET_DESCRIPTION</span><span class="p">,</span> + <span class="n">TEXT2TEXT_DATASET_DESCRIPTION</span><span class="p">,</span> + <span class="n">CONVERSATION_DATASET_DESCRIPTION</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.conversation_template</span><span class="w"> </span><span class="kn">import</span> <span class="n">PRESET_TEMPLATES</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.data_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">VLLMInferenceResultWithInput</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.tokenization.hf_decoder_model</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">tokenize_function</span><span class="p">,</span> + <span class="n">conversation_tokenize_function</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.versioning</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_ray_available</span><span class="p">,</span> <span class="n">is_vllm_available</span><span class="p">,</span> <span class="n">is_flash_attn_available</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<span class="k">if</span> <span class="n">is_flash_attn_available</span><span class="p">():</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">flash_attn</span> +<span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Consider install flash_attn for better performance.&quot;</span><span class="p">)</span> + +<span class="k">if</span> <span class="n">is_vllm_available</span><span class="p">():</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">vllm</span><span class="w"> </span><span class="kn">import</span> <span class="n">SamplingParams</span> + +<span class="k">if</span> <span class="n">is_ray_available</span><span class="p">():</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">ray</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">ray.data</span> + + +<div class="viewcode-block" id="HFDecoderModel"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">HFDecoderModel</span><span class="p">(</span><span class="n">DecoderModel</span><span class="p">,</span> <span class="n">HFModelMixin</span><span class="p">,</span> <span class="n">Tunable</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes a HFDecoderModel instance.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> + +<span class="sd"> model_args : </span> +<span class="sd"> Model arguments such as model name, path, revision, etc.</span> + +<span class="sd"> tune_strategy : str or none, default=&quot;normal&quot;.</span> +<span class="sd"> A string representing the dataset backend. Defaults to &quot;huggingface&quot;.</span> +<span class="sd"> </span> +<span class="sd"> ds_config : </span> +<span class="sd"> Deepspeed configuations.</span> +<span class="sd"> </span> +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> +<span class="sd"> </span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments. </span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">,</span> + <span class="n">tune_strategy</span><span class="o">=</span><span class="s1">&#39;normal&#39;</span><span class="p">,</span> + <span class="n">ds_config</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">device</span><span class="o">=</span><span class="s2">&quot;gpu&quot;</span><span class="p">,</span> + <span class="n">use_accelerator</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes a HFDecoderModel instance.</span> +<span class="sd"> :param model_args: dictionary with model arguments such as model name, path, revision, etc.</span> +<span class="sd"> :param tune_strategy: tuning strategy: normal, none, lora or adapter</span> +<span class="sd"> :param ds_config: deepspeed configuration for distributed training</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">HFModelMixin</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="o">=</span><span class="n">model_args</span><span class="p">,</span> + <span class="n">do_train</span><span class="o">=</span><span class="kc">True</span> <span class="k">if</span> <span class="n">tune_strategy</span> <span class="o">==</span> <span class="s2">&quot;normal&quot;</span> <span class="k">else</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">ds_config</span><span class="o">=</span><span class="n">ds_config</span><span class="p">,</span> + <span class="n">device</span><span class="o">=</span><span class="n">device</span><span class="p">,</span> + <span class="n">use_accelerator</span><span class="o">=</span><span class="n">use_accelerator</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> + + +<div class="viewcode-block" id="HFDecoderModel.tokenize"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.tokenize">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">tokenize</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">,</span> + <span class="n">add_special_tokens</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dataset</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Tokenize the full dataset.</span> +<span class="sd"> </span> +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> dataset : lmflow.datasets.Dataset.</span> + +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> +<span class="sd"> </span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments. </span> +<span class="sd"> </span> +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> tokenized_datasets :</span> +<span class="sd"> The tokenized dataset, without any leading or trailing special</span> +<span class="sd"> tokens (normally they are Begin-Of-Sentence or End-Of-Sentence</span> +<span class="sd"> tokens).</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># Preprocessing the datasets.</span> + <span class="c1"># First we tokenize all the texts.</span> + <span class="k">if</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_backend</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">&quot;huggingface&quot;</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="s2">&quot;tokenization of datasets with non-huggingface backend are&quot;</span> + <span class="s2">&quot;not supported yet&quot;</span> + <span class="p">)</span> + + <span class="n">dataset_type</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> + <span class="n">model_args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> + <span class="n">raw_datasets</span> <span class="o">=</span> <span class="n">dataset</span> + <span class="n">hf_raw_datasets</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()</span> + <span class="n">column_names</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">hf_raw_datasets</span><span class="o">.</span><span class="n">features</span><span class="p">)</span> + <span class="n">data_args</span> <span class="o">=</span> <span class="n">raw_datasets</span><span class="o">.</span><span class="n">get_data_args</span><span class="p">()</span> + + <span class="c1"># Requires three types of information for tokenizing different datasets</span> + <span class="c1"># 1) Which fields require tokenization, e.g.</span> + <span class="c1"># &quot;text2float&quot;: &quot;text&quot;, but not &quot;float&quot;</span> + <span class="c1"># &quot;text2text&quot;: both &quot;input&quot; and &quot;output&quot;</span> + <span class="c1"># 2) How will there tokenized sequence concatenated together, e.g.</span> + <span class="c1"># &quot;text_only&quot;: &quot;text&quot; -&gt; &quot;text&quot;</span> + <span class="c1"># &quot;text2text&quot;: &quot;input&quot;, &quot;output&quot; -&gt; &quot;input&quot; + &quot;output&quot;</span> + <span class="c1"># 3) Which fields require loss in final computation, e.g.</span> + <span class="c1"># &quot;text_only&quot;: &quot;text&quot;</span> + <span class="c1"># &quot;text2text&quot;: &quot;output&quot; only</span> + <span class="n">tokenized_column_order</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># Handles 1) and 2)</span> + <span class="n">label_columns</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># Handles 3)</span> + <span class="k">if</span> <span class="n">dataset_type</span> <span class="o">==</span> <span class="s2">&quot;text_only&quot;</span><span class="p">:</span> + <span class="n">tokenized_column_order</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;text&quot;</span><span class="p">]</span> + <span class="n">label_columns</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;text&quot;</span><span class="p">]</span> + <span class="k">elif</span> <span class="n">dataset_type</span> <span class="o">==</span> <span class="s2">&quot;text2text&quot;</span><span class="p">:</span> + <span class="n">tokenized_column_order</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">,</span> <span class="s2">&quot;output&quot;</span><span class="p">]</span> + <span class="n">label_columns</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">]</span> + <span class="n">add_special_tokens</span> <span class="o">=</span> <span class="kc">False</span> + <span class="k">elif</span> <span class="n">dataset_type</span> <span class="o">==</span> <span class="s2">&quot;conversation&quot;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">conversation_template</span><span class="p">:</span> + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">conversation_template</span> <span class="ow">in</span> <span class="n">PRESET_TEMPLATES</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> + <span class="n">conversation_template</span> <span class="o">=</span> <span class="n">PRESET_TEMPLATES</span><span class="p">[</span><span class="n">data_args</span><span class="o">.</span><span class="n">conversation_template</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Conversation template </span><span class="si">{</span><span class="n">data_args</span><span class="o">.</span><span class="n">conversation_template</span><span class="si">}</span><span class="s2"> is not supported yet.&quot;</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;No conversation template provided. Using default template.&quot;</span><span class="p">)</span> + <span class="n">conversation_template</span> <span class="o">=</span> <span class="n">PRESET_TEMPLATES</span><span class="p">[</span><span class="s1">&#39;empty&#39;</span><span class="p">]</span> + + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Conversation template: </span><span class="si">{</span><span class="n">conversation_template</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;dataset type </span><span class="se">\&quot;</span><span class="si">{</span><span class="n">dataset_type</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2"> is not supported, currently&quot;</span> + <span class="s2">&quot; only support following data types:</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="sa">f</span><span class="s2">&quot; 1) </span><span class="si">{</span><span class="n">TEXT_ONLY_DATASET_DESCRIPTION</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="sa">f</span><span class="s2">&quot; 2) </span><span class="si">{</span><span class="n">TEXT2TEXT_DATASET_DESCRIPTION</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="sa">f</span><span class="s2">&quot; 3) </span><span class="si">{</span><span class="n">CONVERSATION_DATASET_DESCRIPTION</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="p">)</span> + + <span class="c1"># Whether to truncate long sequences to fit into max_length</span> + <span class="n">use_truncation</span> <span class="o">=</span> <span class="kc">False</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_lora</span> <span class="ow">or</span> <span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="p">:</span> + <span class="n">use_truncation</span> <span class="o">=</span> <span class="kc">True</span> + + <span class="n">tokenize_fn</span> <span class="o">=</span> <span class="n">conversation_tokenize_function</span> <span class="k">if</span> <span class="s2">&quot;conversation&quot;</span> <span class="ow">in</span> <span class="n">dataset_type</span> <span class="k">else</span> <span class="n">tokenize_function</span> + <span class="n">tokenize_fn_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;data_args&quot;</span><span class="p">:</span> <span class="n">data_args</span><span class="p">,</span> + <span class="s2">&quot;tokenizer&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">,</span> + <span class="s2">&quot;column_names&quot;</span><span class="p">:</span> <span class="n">column_names</span><span class="p">,</span> + <span class="p">}</span> + <span class="k">if</span> <span class="s2">&quot;conversation&quot;</span> <span class="ow">in</span> <span class="n">dataset_type</span><span class="p">:</span> + <span class="n">tokenize_fn_kwargs</span><span class="p">[</span><span class="s2">&quot;conversation_template&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">conversation_template</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">tokenize_fn_kwargs</span><span class="p">[</span><span class="s2">&quot;label_columns&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">label_columns</span> + <span class="n">tokenize_fn_kwargs</span><span class="p">[</span><span class="s2">&quot;tokenized_column_order&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">tokenized_column_order</span> + <span class="n">tokenize_fn_kwargs</span><span class="p">[</span><span class="s2">&quot;add_special_tokens&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">add_special_tokens</span> + <span class="n">tokenize_fn_kwargs</span><span class="p">[</span><span class="s2">&quot;use_truncation&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">use_truncation</span> + + <span class="n">tokenize_kwargs</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">data_args</span><span class="o">.</span><span class="n">streaming</span><span class="p">:</span> + <span class="n">fingerprint</span> <span class="o">=</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">md5</span><span class="p">(</span> + <span class="p">(</span> + <span class="n">raw_datasets</span><span class="o">.</span><span class="n">get_fingerprint</span><span class="p">()</span> + <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">)</span> + <span class="o">+</span> <span class="sa">f</span><span class="s1">&#39;###padding_side=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">padding_side</span><span class="si">}</span><span class="s1">&#39;</span> + <span class="o">+</span> <span class="p">(</span><span class="s1">&#39;###conversation_template=&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">conversation_template</span><span class="p">)</span> <span class="k">if</span> <span class="s2">&quot;conversation&quot;</span> <span class="ow">in</span> <span class="n">dataset_type</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span><span class="p">)</span> + <span class="o">+</span> <span class="sa">f</span><span class="s1">&#39;###disable_group_texts=</span><span class="si">{</span><span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="si">}</span><span class="s1">&#39;</span> + <span class="o">+</span> <span class="sa">f</span><span class="s1">&#39;###block_size=</span><span class="si">{</span><span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span><span class="si">}</span><span class="s1">&#39;</span> + <span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s2">&quot;utf-8&quot;</span><span class="p">)</span> + <span class="p">)</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span> + <span class="n">tokenize_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;num_proc&quot;</span><span class="p">:</span> <span class="n">data_args</span><span class="o">.</span><span class="n">preprocessing_num_workers</span><span class="p">,</span> + <span class="s2">&quot;load_from_cache_file&quot;</span><span class="p">:</span> <span class="ow">not</span> <span class="n">data_args</span><span class="o">.</span><span class="n">overwrite_cache</span><span class="p">,</span> + <span class="s2">&quot;desc&quot;</span><span class="p">:</span> <span class="s2">&quot;Running tokenizer on dataset&quot;</span><span class="p">,</span> + <span class="s2">&quot;new_fingerprint&quot;</span><span class="p">:</span> <span class="n">fingerprint</span><span class="p">,</span> + <span class="p">}</span> + + <span class="n">tokenized_datasets</span> <span class="o">=</span> <span class="n">raw_datasets</span><span class="o">.</span><span class="n">map</span><span class="p">(</span> + <span class="n">tokenize_fn</span><span class="p">,</span> + <span class="n">batched</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">remove_columns</span><span class="o">=</span><span class="n">column_names</span><span class="p">,</span> + <span class="n">fn_kwargs</span><span class="o">=</span><span class="n">tokenize_fn_kwargs</span><span class="p">,</span> + <span class="o">**</span><span class="n">tokenize_kwargs</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">tokenized_datasets</span></div> + + + +<div class="viewcode-block" id="HFDecoderModel.encode"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.encode">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">encode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">input</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]],</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform encoding process of the tokenizer.</span> +<span class="sd"> </span> +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> inputs : str or list.</span> +<span class="sd"> The text sequence.</span> +<span class="sd"> </span> +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> +<span class="sd"> </span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments. </span> +<span class="sd"> </span> +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> outputs :</span> +<span class="sd"> if string input,return the tokenized inputs.</span> +<span class="sd"> &quot;Hello,world!&quot;-&gt; [101, 7592, 1010, 2088, 102]</span> +<span class="sd"> if batch input,return {input_ids,attention_mask,token_type_ids}</span> +<span class="sd"> [&quot;Hello,world!&quot;,&quot;Hello!&quot;]-&gt; {&#39;input_ids&#39;: tensor([[ 101, 7592, 1010, 2088, 102],...),&#39;attention_mask&#39;: tensor([[1, 1, 1, 1, 1],[0,0,1,1,1]])}</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="nb">input</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span><span class="c1">#batch encode,will automatically do left padding</span> + <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="nb">input</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;type &quot;</span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="nb">input</span><span class="p">)</span><span class="si">}</span><span class="s1">&quot; cannot be encoded&#39;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="HFDecoderModel.decode"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.decode">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">decode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">input</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform decoding process of the tokenizer.</span> +<span class="sd"> </span> +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> inputs : list or tensor.</span> +<span class="sd"> The token sequence.</span> +<span class="sd"> </span> +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> +<span class="sd"> </span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments. </span> +<span class="sd"> </span> +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> outputs :</span> +<span class="sd"> The text decoded from the token inputs.</span> +<span class="sd"> if batch input,return the list of text</span> +<span class="sd"> [[101, 7592, 1010, 2088, 102],[101, 7592, 1010, 2088, 102]]-&gt; [&quot;Hello,world!&quot;,&quot;Hello,world!&quot;</span> +<span class="sd"> if single input,return the text</span> +<span class="sd"> [101, 7592, 1010, 2088, 102]-&gt; &quot;Hello,world!&quot;</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">List</span><span class="p">):</span> + <span class="nb">input</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span><span class="nb">input</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">input</span><span class="o">.</span><span class="n">dim</span><span class="p">()</span><span class="o">==</span><span class="mi">2</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">batch_decode</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span><span class="c1">#batch_decode</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># Can be list of ints or a Tensor</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="HFDecoderModel.inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">inputs</span><span class="p">,</span> + <span class="n">release_gpu</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">use_vllm</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform generation process of the model.</span> +<span class="sd"> </span> +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> inputs :</span> +<span class="sd"> The sequence used as a prompt for the generation or as model inputs to the model.</span> +<span class="sd"> When using vllm inference, this should be a string or a list of strings.</span> +<span class="sd"> When using normal inference, this should be a tensor.</span> +<span class="sd"> release_gpu : bool, optional</span> +<span class="sd"> Whether to release the GPU resource after inference, by default False.</span> +<span class="sd"> use_vllm : bool, optional</span> +<span class="sd"> Whether to use VLLM for inference, by default False.</span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments. </span> +<span class="sd"> </span> +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> outputs :</span> +<span class="sd"> The generated sequence output </span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_activated</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">activate_model_for_inference</span><span class="p">(</span> + <span class="n">use_vllm</span><span class="o">=</span><span class="n">use_vllm</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">use_vllm</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_vllm_available</span><span class="p">():</span> + <span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="s2">&quot;vllm is not installed. Please install vllm to use VLLM inference.&quot;</span><span class="p">)</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__vllm_inference</span><span class="p">(</span><span class="n">inputs</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__inference</span><span class="p">(</span><span class="n">inputs</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">release_gpu</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">deactivate_model_for_inference</span><span class="p">(</span><span class="n">use_vllm</span><span class="o">=</span><span class="n">use_vllm</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">res</span></div> + + + +<div class="viewcode-block" id="HFDecoderModel.__inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.__inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__inference</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform generation process of the model.</span> +<span class="sd"> </span> +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> inputs :</span> +<span class="sd"> The **tokenized** sequence used as a prompt for the generation or as model inputs to the model.</span> +<span class="sd"> </span> +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> +<span class="sd"> </span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments. </span> +<span class="sd"> </span> +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> outputs :</span> +<span class="sd"> The generated sequence output </span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_accelerator</span><span class="p">:</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span> + <span class="n">input_ids</span><span class="o">=</span><span class="n">inputs</span><span class="p">,</span> + <span class="n">pad_token_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;gpu&quot;</span><span class="p">:</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ds_engine</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span> + <span class="n">input_ids</span><span class="o">=</span><span class="n">inputs</span><span class="p">,</span> + <span class="n">synced_gpus</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">pad_token_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;cpu&quot;</span><span class="p">:</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span> + <span class="n">input_ids</span><span class="o">=</span><span class="n">inputs</span><span class="p">,</span> + <span class="n">synced_gpus</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">pad_token_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;device </span><span class="se">\&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2"> is not supported&quot;</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">outputs</span></div> + + + +<div class="viewcode-block" id="HFDecoderModel.__vllm_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.__vllm_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__vllm_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">inputs</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]],</span> + <span class="n">sampling_params</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="s1">&#39;SamplingParams&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">VLLMInferenceResultWithInput</span><span class="p">]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Perform VLLM inference process of the model.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> inputs : Union[str, List[str]]</span> +<span class="sd"> Prompt(s), string or a list of strings.</span> +<span class="sd"> sampling_params : Optional[SamplingParams], optional</span> +<span class="sd"> vllm SamplingParams object, by default None.</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> List[VLLMInferenceResultWithInput]</span> +<span class="sd"> Return a list of VLLMInferenceResultWithInput, where each</span> +<span class="sd"> element contains the input prompt and the corresponding output.</span> +<span class="sd"> </span> +<span class="sd"> When `sampling_params.detokenize = True`, the output would be a list of strings,</span> +<span class="sd"> contains sampling_params.n samples for the corresponding prompt.</span> +<span class="sd"> </span> +<span class="sd"> When `sampling_params.detokenize = False`, return a list of list of ints </span> +<span class="sd"> (token ids, no decoding after generation).</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">vllm_outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model_for_inference</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span> + <span class="n">inputs</span><span class="p">,</span> + <span class="n">sampling_params</span><span class="o">=</span><span class="n">sampling_params</span><span class="p">,</span> + <span class="n">use_tqdm</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">final_output</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">output</span> <span class="ow">in</span> <span class="n">vllm_outputs</span><span class="p">:</span> + <span class="k">if</span> <span class="n">sampling_params</span><span class="o">.</span><span class="n">detokenize</span><span class="p">:</span> + <span class="n">output_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">sentence</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">sentence</span> <span class="ow">in</span> <span class="n">output</span><span class="o">.</span><span class="n">outputs</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">output_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">sentence</span><span class="o">.</span><span class="n">token_ids</span> <span class="k">for</span> <span class="n">sentence</span> <span class="ow">in</span> <span class="n">output</span><span class="o">.</span><span class="n">outputs</span><span class="p">]</span> + + <span class="n">final_output</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s2">&quot;input&quot;</span><span class="p">:</span> <span class="n">output</span><span class="o">.</span><span class="n">prompt</span><span class="p">,</span> <span class="s2">&quot;output&quot;</span><span class="p">:</span> <span class="n">output_list</span><span class="p">})</span> + + <span class="k">return</span> <span class="n">final_output</span></div> + + + +<div class="viewcode-block" id="HFDecoderModel.prepare_inputs_for_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.prepare_inputs_for_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">prepare_inputs_for_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">apply_chat_template</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> + <span class="n">enable_distributed_inference</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">use_vllm</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="s2">&quot;ray.data.Dataset&quot;</span><span class="p">,</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Prepare inputs for inference.</span> +<span class="sd"> </span> +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> dataset : lmflow.datasets.Dataset.</span> +<span class="sd"> The dataset used for inference.</span> +<span class="sd"> </span> +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> +<span class="sd"> </span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments. </span> +<span class="sd"> </span> +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> outputs :</span> +<span class="sd"> The prepared inputs for inference.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="n">use_vllm</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_ray_available</span><span class="p">()</span> <span class="ow">and</span> <span class="n">enable_distributed_inference</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="s2">&quot;ray is not installed. Please install ray to use distributed vllm inference.&quot;</span><span class="p">)</span> + <span class="n">inference_inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__prepare_inputs_for_vllm_inference</span><span class="p">(</span> + <span class="n">dataset</span><span class="o">=</span><span class="n">dataset</span><span class="p">,</span> + <span class="n">apply_chat_template</span><span class="o">=</span><span class="n">apply_chat_template</span><span class="p">,</span> + <span class="n">enable_distributed_inference</span><span class="o">=</span><span class="n">enable_distributed_inference</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">inference_inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__prepare_inputs_for_inference</span><span class="p">(</span> + <span class="n">dataset</span><span class="p">,</span> + <span class="n">apply_chat_template</span><span class="o">=</span><span class="n">apply_chat_template</span><span class="p">,</span> + <span class="n">enable_distributed_inference</span><span class="o">=</span><span class="n">enable_distributed_inference</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">inference_inputs</span></div> + + + +<div class="viewcode-block" id="HFDecoderModel.__prepare_inputs_for_vllm_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.__prepare_inputs_for_vllm_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__prepare_inputs_for_vllm_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">apply_chat_template</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> + <span class="n">enable_distributed_inference</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="s2">&quot;ray.data.Dataset&quot;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="o">==</span> <span class="s1">&#39;text_only&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">apply_chat_template</span><span class="p">:</span> + <span class="n">dataset</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">map</span><span class="p">(</span> + <span class="k">lambda</span> <span class="n">sample</span><span class="p">:</span> <span class="p">{</span> + <span class="s2">&quot;templated&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">apply_chat_template</span><span class="p">(</span> + <span class="p">[{</span><span class="s2">&quot;role&quot;</span><span class="p">:</span><span class="s2">&quot;user&quot;</span><span class="p">,</span> <span class="s2">&quot;content&quot;</span><span class="p">:</span> <span class="n">sample</span><span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">]}],</span> + <span class="n">tokenize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">add_generation_prompt</span><span class="o">=</span><span class="kc">True</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="n">num_proc</span><span class="o">=</span><span class="n">dataset</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">preprocessing_num_workers</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">inference_inputs</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()[</span><span class="s1">&#39;templated&#39;</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">inference_inputs</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()[</span><span class="s1">&#39;text&#39;</span><span class="p">]</span> + + <span class="k">elif</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;text2text&quot;</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;For a text2text dataset, only `input` will be used as the model input.&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="n">apply_chat_template</span><span class="p">:</span> + <span class="n">dataset</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">map</span><span class="p">(</span> + <span class="k">lambda</span> <span class="n">sample</span><span class="p">:</span> <span class="p">{</span> + <span class="s2">&quot;templated&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">apply_chat_template</span><span class="p">(</span> + <span class="n">conversation</span><span class="o">=</span><span class="p">[{</span><span class="s2">&quot;role&quot;</span><span class="p">:</span><span class="s2">&quot;user&quot;</span><span class="p">,</span> <span class="s2">&quot;content&quot;</span><span class="p">:</span> <span class="n">sample</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">]}],</span> + <span class="n">tokenize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">add_generation_prompt</span><span class="o">=</span><span class="kc">True</span> + <span class="p">)</span> + <span class="p">},</span> + <span class="n">num_proc</span><span class="o">=</span><span class="n">dataset</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">preprocessing_num_workers</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">inference_inputs</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()[</span><span class="s1">&#39;templated&#39;</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">inference_inputs</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()[</span><span class="s1">&#39;input&#39;</span><span class="p">]</span> + + <span class="k">elif</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="o">==</span> <span class="s1">&#39;conversation&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">apply_chat_template</span><span class="p">:</span> + <span class="k">def</span><span class="w"> </span><span class="nf">preprocess_conversation</span><span class="p">(</span><span class="n">sample</span><span class="p">):</span> + <span class="n">conversation</span> <span class="o">=</span> <span class="n">sample</span><span class="p">[</span><span class="s1">&#39;messages&#39;</span><span class="p">][:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sample</span><span class="p">[</span><span class="s1">&#39;messages&#39;</span><span class="p">])</span><span class="o">%</span><span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">else</span> <span class="n">sample</span><span class="p">[</span><span class="s1">&#39;messages&#39;</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">sample</span><span class="p">[</span><span class="s1">&#39;messages&#39;</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">&#39;user&#39;</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;Not a valid conversation for generation, since the conversation &quot;</span> + <span class="s2">&quot;doesn&#39;t end up with an user message. Skip.&quot;</span> + <span class="p">)</span> + <span class="n">sample_out</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;templated&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">}</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">sample_out</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;templated&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">apply_chat_template</span><span class="p">(</span> + <span class="n">conversation</span><span class="o">=</span><span class="n">conversation</span><span class="p">,</span> + <span class="n">tokenize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">add_generation_prompt</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="p">)}</span> + + <span class="k">return</span> <span class="n">sample_out</span> + <span class="n">dataset</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">map</span><span class="p">(</span> + <span class="n">preprocess_conversation</span><span class="p">,</span> + <span class="n">num_proc</span><span class="o">=</span><span class="n">dataset</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">preprocessing_num_workers</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">inference_inputs</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()[</span><span class="s1">&#39;templated&#39;</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;Your dataset is `conversation` type but `apply_chat_template` is set to False. &quot;</span> + <span class="s2">&quot;Will use the first user input in conversation as model input.&quot;</span> + <span class="p">)</span> + <span class="n">inference_inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">conversation</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="k">for</span> <span class="n">conversation</span> <span class="ow">in</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()[</span><span class="s1">&#39;messages&#39;</span><span class="p">]]</span> + + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Currently `</span><span class="si">{</span><span class="n">dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span><span class="si">}</span><span class="s2">` data are not supported for vllm inference.&quot;</span> + <span class="p">)</span> + + <span class="n">inference_inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">sentence</span> <span class="k">for</span> <span class="n">sentence</span> <span class="ow">in</span> <span class="n">inference_inputs</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sentence</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">enable_distributed_inference</span><span class="p">:</span> + <span class="n">inference_inputs</span> <span class="o">=</span> <span class="n">ray</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">from_items</span><span class="p">(</span><span class="n">inference_inputs</span><span class="p">)</span> <span class="c1"># -&gt; Dict[str, np.ndarray], {&quot;item&quot;: array([&#39;...&#39;, &#39;...&#39;, &#39;...&#39;])}</span> + + <span class="k">return</span> <span class="n">inference_inputs</span></div> + + + +<div class="viewcode-block" id="HFDecoderModel.__prepare_inputs_for_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.__prepare_inputs_for_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__prepare_inputs_for_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">):</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">&quot;prepare_inputs_for_inference is not implemented&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="HFDecoderModel.merge_lora_weights"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.merge_lora_weights">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">merge_lora_weights</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">use_lora</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">use_qlora</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span><span class="o">.</span><span class="n">merge_and_unload</span><span class="p">()</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">use_qlora</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Reloading base model in 16-bit precision to merge adapter weights. NOTE: Your device must have&quot;</span> + <span class="s2">&quot;sufficient memory to reload the model in half-precision without quantization.&quot;</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">get_peft_without_qlora</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span><span class="o">.</span><span class="n">merge_and_unload</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;LoRA training is NOT enabled. Merging LoRA weights is not applicable.&quot;</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="HFDecoderModel.get_peft_without_qlora"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.get_peft_without_qlora">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_peft_without_qlora</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">tempfile</span> + + <span class="k">with</span> <span class="n">tempfile</span><span class="o">.</span><span class="n">TemporaryDirectory</span><span class="p">()</span> <span class="k">as</span> <span class="n">tmpdirname</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;created temporary directory&#39;</span><span class="p">,</span> <span class="n">tmpdirname</span><span class="p">)</span> + + + <span class="bp">self</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="n">tmpdirname</span><span class="p">)</span> + + <span class="n">torch_dtype</span> <span class="o">=</span> <span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">torch_dtype</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">torch_dtype</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;auto&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">]</span> + <span class="k">else</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">torch</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">torch_dtype</span><span class="p">)</span> + <span class="p">)</span> + <span class="n">config_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;cache_dir&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">cache_dir</span><span class="p">,</span> + <span class="s2">&quot;revision&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_revision</span><span class="p">,</span> + <span class="s2">&quot;token&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">token</span><span class="p">,</span> + <span class="p">}</span> + <span class="n">config</span> <span class="o">=</span> <span class="n">AutoConfig</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> <span class="o">**</span><span class="n">config_kwargs</span><span class="p">)</span> + <span class="n">device_map</span> <span class="o">=</span> <span class="s2">&quot;auto&quot;</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;LOCAL_RANK&#39;</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">local_rank</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;LOCAL_RANK&#39;</span><span class="p">,</span><span class="s1">&#39;0&#39;</span><span class="p">))</span> + <span class="n">device_map</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;&#39;</span><span class="p">:</span> <span class="n">local_rank</span><span class="p">}</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model_full</span> <span class="o">=</span> <span class="n">AutoModelForCausalLM</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> + <span class="n">from_tf</span><span class="o">=</span><span class="nb">bool</span><span class="p">(</span><span class="s2">&quot;.ckpt&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">),</span> + <span class="n">config</span><span class="o">=</span><span class="n">config</span><span class="p">,</span> + <span class="n">cache_dir</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">cache_dir</span><span class="p">,</span> + <span class="n">revision</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_revision</span><span class="p">,</span> + <span class="n">token</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">token</span><span class="p">,</span> + <span class="n">torch_dtype</span><span class="o">=</span><span class="n">torch_dtype</span><span class="p">,</span> + <span class="n">device_map</span><span class="o">=</span><span class="n">device_map</span><span class="p">,</span> + <span class="n">trust_remote_code</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">trust_remote_code</span><span class="p">,</span> + <span class="n">attn_implementation</span><span class="o">=</span><span class="s2">&quot;flash_attention_2&quot;</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">use_flash_attention</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> + <span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span> <span class="o">=</span> <span class="n">PeftModel</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">backend_model_full</span><span class="p">,</span> <span class="n">tmpdirname</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="HFDecoderModel.save"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.save">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">dir</span><span class="p">,</span> <span class="n">save_full_model</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform generation process of the model.</span> +<span class="sd"> </span> +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> dir :</span> +<span class="sd"> The directory to save model and tokenizer</span> +<span class="sd"> </span> +<span class="sd"> save_full_model : Optional.</span> +<span class="sd"> Whether to save full model.</span> +<span class="sd"> </span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments. </span> +<span class="sd"> </span> +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> outputs :</span> +<span class="sd"> The generated sequence output </span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="bp">self</span><span class="o">.</span><span class="n">get_tokenizer</span><span class="p">()</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="nb">dir</span><span class="p">)</span> + <span class="k">if</span> <span class="n">save_full_model</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">use_lora</span><span class="p">:</span> + <span class="n">save_dtype</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">torch</span><span class="o">.</span><span class="n">float16</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">torch_dtype</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;auto&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">]</span> + <span class="k">else</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">torch</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">torch_dtype</span><span class="p">)</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model_full</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">dtype</span><span class="o">=</span><span class="n">save_dtype</span><span class="p">)</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="nb">dir</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Save full model with dtype: </span><span class="si">{</span><span class="n">save_dtype</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="nb">dir</span><span class="p">)</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/models/hf_encoder_decoder_model.html b/_modules/lmflow/models/hf_encoder_decoder_model.html new file mode 100644 index 000000000..b3b3cb827 --- /dev/null +++ b/_modules/lmflow/models/hf_encoder_decoder_model.html @@ -0,0 +1,999 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.models.hf_encoder_decoder_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/models/hf_encoder_decoder_model';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.hf_encoder_decoder_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.models.hf_encoder_decoder_model</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;This is a class called HFDecoderModel which is a wrapper around transformers model and</span> +<span class="sd">tokenizer classes. It has several methods such as __init__, tokenize, and train that are</span> +<span class="sd">used for training and fine-tuning the model. The __init__ method takes in several arguments</span> +<span class="sd">such as model_args, tune_strategy, and ds_config, which are used to load the pretrained</span> +<span class="sd">model and tokenizer, and initialize the training settings.</span> + +<span class="sd">The tokenize method is used to tokenize the input text and return the input IDs and attention</span> +<span class="sd">masks that can be fed to the model for training or inference.</span> + +<span class="sd">This class supports different tune_strategy options such as &#39;normal&#39;, &#39;none&#39;, &#39;lora&#39;, and</span> +<span class="sd">&#39;adapter&#39;, which allow for different fine-tuning settings of the model. However, the &#39;lora&#39;</span> +<span class="sd">and &#39;adapter&#39; strategies are not yet implemented.</span> + +<span class="sd">Overall, this class provides a convenient interface for loading and fine-tuning transformer</span> +<span class="sd">models and can be used for various NLP tasks such as language modeling, text classification,</span> +<span class="sd">and question answering.</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">copy</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">time</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Union</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">deepspeed</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">peft</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">LoraConfig</span><span class="p">,</span> + <span class="n">PeftModel</span><span class="p">,</span> + <span class="n">TaskType</span><span class="p">,</span> + <span class="n">get_peft_config</span><span class="p">,</span> + <span class="n">get_peft_model</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">CONFIG_MAPPING</span><span class="p">,</span> + <span class="n">AutoConfig</span><span class="p">,</span> + <span class="n">AutoTokenizer</span><span class="p">,</span> + <span class="n">AutoModelForSeq2SeqLM</span><span class="p">,</span> + <span class="n">AutoModelForVision2Seq</span><span class="p">,</span> + <span class="n">AutoModel</span><span class="p">,</span> + <span class="n">AutoProcessor</span><span class="p">,</span> + <span class="n">LlamaConfig</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.testing_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">CaptureLogger</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets.dataset</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.encoder_decoder_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">EncoderDecoderModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.interfaces.tunable</span><span class="w"> </span><span class="kn">import</span> <span class="n">Tunable</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.vision2seq_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">CustomAutoVision2SeqModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.multimodal</span><span class="w"> </span><span class="kn">import</span> <span class="n">update_custom_config</span><span class="p">,</span> <span class="n">load_llava_pretrain_model</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.versioning</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_package_version_at_least</span> + +<span class="k">if</span> <span class="n">is_package_version_at_least</span><span class="p">(</span><span class="s2">&quot;transformers&quot;</span><span class="p">,</span> <span class="s2">&quot;4.46.0&quot;</span><span class="p">):</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">transformers.integrations.deepspeed</span><span class="w"> </span><span class="kn">import</span> <span class="n">HfDeepSpeedConfig</span><span class="p">,</span> <span class="n">HfTrainerDeepSpeedConfig</span> +<span class="k">else</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">transformers.deepspeed</span><span class="w"> </span><span class="kn">import</span> <span class="n">HfDeepSpeedConfig</span><span class="p">,</span> <span class="n">HfTrainerDeepSpeedConfig</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="HFEncoderDecoderModel"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">HFEncoderDecoderModel</span><span class="p">(</span><span class="n">EncoderDecoderModel</span><span class="p">,</span> <span class="n">Tunable</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes a HFEncoderDecoderModel instance.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> + +<span class="sd"> model_args :</span> +<span class="sd"> Model arguments such as model name, path, revision, etc.</span> + +<span class="sd"> tune_strategy : str or none, default=&quot;normal&quot;.</span> +<span class="sd"> A string representing the dataset backend. Defaults to &quot;huggingface&quot;.</span> + +<span class="sd"> ds_config :</span> +<span class="sd"> Deepspeed configuations.</span> + +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> + +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments.</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">,</span> + <span class="n">tune_strategy</span><span class="o">=</span><span class="s1">&#39;normal&#39;</span><span class="p">,</span> + <span class="n">ds_config</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">device</span><span class="o">=</span><span class="s2">&quot;gpu&quot;</span><span class="p">,</span> + <span class="n">use_accelerator</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">custom_model</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">with_deepspeed</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">pipeline_args</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes a HFDecoderModel instance.</span> +<span class="sd"> :param model_args: dictionary with model arguments such as model name, path, revision, etc.</span> +<span class="sd"> :param tune_strategy: tuning strategy: normal, none, lora or adapter</span> +<span class="sd"> :param ds_config: deepspeed configuration for distributed training</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="c1"># See more about loading any type of standard or custom dataset (from</span> + <span class="c1"># files, python dict, pandas DataFrame, etc) at</span> + <span class="c1"># https://huggingface.co/docs/datasets/loading_datasets.html.</span> + + <span class="c1"># Load pretrained model and tokenizer</span> + <span class="c1">#</span> + <span class="c1"># Distributed training: The .from_pretrained methods guarantee that</span> + <span class="c1"># only one local process can concurrently download model &amp; vocab.</span> + +<div class="viewcode-block" id="HFEncoderDecoderModel.device"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.device">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">device</span> <span class="o">=</span> <span class="n">device</span></div> + + + <span class="k">if</span> <span class="n">tune_strategy</span> <span class="o">==</span> <span class="s1">&#39;normal&#39;</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;tune_strategy </span><span class="se">\&quot;</span><span class="si">{</span><span class="n">tune_strategy</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2"> is not supported&quot;</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="n">tune_strategy</span> <span class="o">==</span> <span class="s1">&#39;none&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">use_accelerator</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Currently encoder2decoder model is not supported with accelerator&quot;</span> + <span class="p">)</span> + <span class="c1"># dschf = HfDeepSpeedConfig(ds_config)</span> + <span class="n">dschf</span> <span class="o">=</span> <span class="n">HfTrainerDeepSpeedConfig</span><span class="p">(</span><span class="n">ds_config</span><span class="p">)</span> + <span class="k">if</span> <span class="n">pipeline_args</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">dschf</span><span class="o">.</span><span class="n">trainer_config_process</span><span class="p">(</span><span class="n">pipeline_args</span><span class="p">)</span> + <span class="n">peft_model_id</span> <span class="o">=</span> <span class="n">model_args</span><span class="o">.</span><span class="n">lora_model_path</span> + <span class="c1"># NOTE: Currently offload is not supported by llama</span> + <span class="k">if</span> <span class="s2">&quot;llama&quot;</span> <span class="ow">in</span> <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span> <span class="ow">and</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_ram_optimized_load</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;llama does not support RAM optimized load. Automatically&quot;</span> + <span class="s2">&quot; use original load instead.&quot;</span> + <span class="p">)</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">use_ram_optimized_load</span> <span class="o">=</span> <span class="kc">False</span> + + <span class="c1"># get model register</span> + <span class="bp">self</span><span class="o">.</span><span class="n">arch_type</span> <span class="o">=</span> <span class="n">model_args</span><span class="o">.</span><span class="n">arch_type</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch_type</span> <span class="o">==</span> <span class="s2">&quot;encoder_decoder&quot;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span> <span class="o">==</span> <span class="s1">&#39;THUDM/chatglm-6b&#39;</span><span class="p">:</span> + <span class="n">model_register</span> <span class="o">=</span> <span class="n">AutoModel</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">model_register</span> <span class="o">=</span> <span class="n">AutoModelForSeq2SeqLM</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch_type</span> <span class="o">==</span> <span class="s2">&quot;vision_encoder_decoder&quot;</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">custom_model</span><span class="p">:</span> + <span class="n">model_register</span> <span class="o">=</span> <span class="n">AutoModelForVision2Seq</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">model_register</span> <span class="o">=</span> <span class="n">CustomAutoVision2SeqModel</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">custom_model</span><span class="p">:</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span> <span class="o">==</span> <span class="s1">&#39;THUDM/chatglm-6b&#39;</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span> <span class="o">=</span> <span class="n">model_register</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> <span class="n">trust_remote_code</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="k">elif</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_ram_optimized_load</span> <span class="ow">and</span> <span class="n">peft_model_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">try</span><span class="p">:</span> + <span class="c1"># RAM-optimized load</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span> <span class="o">=</span> <span class="n">model_register</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> + <span class="n">device_map</span><span class="o">=</span><span class="s2">&quot;auto&quot;</span><span class="p">,</span> + <span class="n">offload_folder</span><span class="o">=</span><span class="s2">&quot;offload&quot;</span><span class="p">,</span> + <span class="n">offload_state_dict</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">except</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;Failed to use RAM optimized load. Automatically&quot;</span> + <span class="s2">&quot; use original load instead.&quot;</span> + <span class="p">)</span> + <span class="c1"># Normal load</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span> <span class="o">=</span> <span class="n">model_register</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">peft_model_id</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;LoRA does not support RAM optimized load currently.&quot;</span> + <span class="s2">&quot; Automatically use original load instead.&quot;</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span> <span class="o">=</span> <span class="n">model_register</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> + <span class="p">)</span> + <span class="c1"># else:</span> + <span class="c1"># self.backend_model = model_register.from_pretrained(</span> + <span class="c1"># model_args.model_name_or_path)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">llava_loading</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span> + <span class="c1"># FIXME remove the following from_pretrained code by</span> + <span class="c1"># creating a unified pretrained model.</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">CustomAutoVision2SeqModel</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">)</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">llm_model_name_or_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">text_config</span> <span class="o">=</span> <span class="n">LlamaConfig</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="n">model_args</span><span class="o">.</span><span class="n">llm_model_name_or_path</span><span class="p">)</span> + <span class="n">model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">text_config</span> <span class="o">=</span> <span class="n">text_config</span> + <span class="n">model</span><span class="o">.</span><span class="n">language_model_from_pretrained</span><span class="p">(</span><span class="n">model_args</span><span class="o">.</span><span class="n">llm_model_name_or_path</span><span class="p">,</span> + <span class="n">low_resource</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">low_resource</span><span class="p">)</span> + <span class="n">state_dict</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">pretrained_language_projection_path</span><span class="p">,</span> + <span class="n">map_location</span><span class="o">=</span><span class="s2">&quot;cpu&quot;</span><span class="p">)</span> + <span class="n">model</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">state_dict</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">config</span> <span class="o">=</span> <span class="n">AutoConfig</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">)</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">low_resource</span><span class="p">:</span> + <span class="n">kwargs</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">torch_dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float16</span><span class="p">,</span> + <span class="n">load_in_8bit</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">device_map</span><span class="o">=</span><span class="s2">&quot;auto&quot;</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># kwargs = dict(torch_dtype=torch.float16)</span> + <span class="n">kwargs</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">device_map</span><span class="o">=</span><span class="s2">&quot;auto&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="p">(</span><span class="n">model_args</span><span class="o">.</span><span class="n">image_encoder_name_or_path</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">qformer_name_or_path</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">llm_model_name_or_path</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">):</span> + <span class="n">config</span> <span class="o">=</span> <span class="n">AutoConfig</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">)</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">CustomAutoVision2SeqModel</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">config</span> <span class="o">=</span> <span class="n">update_custom_config</span><span class="p">(</span><span class="n">config</span><span class="p">,</span> <span class="n">model_args</span><span class="p">)</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">CustomAutoVision2SeqModel</span><span class="p">(</span> + <span class="n">config</span><span class="p">,</span> + <span class="n">image_encoder_name_or_path</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">image_encoder_name_or_path</span><span class="p">,</span> + <span class="n">qformer_name_or_path</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">qformer_name_or_path</span><span class="p">,</span> + <span class="n">language_model_name_or_path</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">llm_model_name_or_path</span><span class="p">,</span> + <span class="n">low_resource</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">low_resource</span><span class="p">)</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">pretrained_language_projection_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">state_dict</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">pretrained_language_projection_path</span><span class="p">,</span> <span class="n">map_location</span><span class="o">=</span><span class="s2">&quot;cpu&quot;</span><span class="p">)</span> + <span class="n">new_state_dict</span> <span class="o">=</span> <span class="p">{}</span> + <span class="n">new_state_dict</span><span class="p">[</span><span class="s1">&#39;model.language_projection.weight&#39;</span><span class="p">]</span> <span class="o">=</span> \ + <span class="n">state_dict</span><span class="p">[</span><span class="s1">&#39;model.mm_projector.weight&#39;</span><span class="p">]</span> + <span class="n">new_state_dict</span><span class="p">[</span><span class="s1">&#39;model.language_projection.bias&#39;</span><span class="p">]</span> <span class="o">=</span> \ + <span class="n">state_dict</span><span class="p">[</span><span class="s1">&#39;model.mm_projector.bias&#39;</span><span class="p">]</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">llava_pretrain_model_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="c1"># used for inference that directly load the preatrain model</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">load_llava_pretrain_model</span><span class="p">(</span> + <span class="n">model</span><span class="p">,</span> <span class="n">model_args</span><span class="o">.</span><span class="n">llava_pretrain_model_path</span><span class="p">)</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">save_pretrain_model_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">model</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">save_pretrain_model_path</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span> <span class="o">=</span> <span class="n">model</span> + <span class="c1"># init tokenizer</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch_type</span> <span class="o">==</span> <span class="s2">&quot;encoder_decoder&quot;</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span> <span class="o">=</span> <span class="n">AutoTokenizer</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> <span class="n">trust_remote_code</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch_type</span> <span class="o">==</span> <span class="s2">&quot;vision_encoder_decoder&quot;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">llava_loading</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span> + <span class="c1"># blip2 image and token processor</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span> <span class="o">=</span> <span class="n">AutoProcessor</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> <span class="n">trust_remote_code</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">llm_model_name_or_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="c1"># update the tokenizer from the custom llm.</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">tokenizer</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">AutoTokenizer</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">llm_model_name_or_path</span><span class="p">)</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">image_processor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">image_processor</span> + + <span class="k">else</span><span class="p">:</span> + <span class="c1"># image processor is stored in the vision encoder</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">llm_model_name_or_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span> <span class="o">=</span> <span class="n">AutoTokenizer</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">llm_model_name_or_path</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span> <span class="o">=</span> <span class="n">AutoTokenizer</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">config</span><span class="o">.</span><span class="n">text_config</span><span class="o">.</span><span class="n">_name_or_path</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">image_processor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">image_processor</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model_full</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span> + <span class="k">if</span> <span class="n">peft_model_id</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span> <span class="o">=</span> <span class="n">PeftModel</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="p">,</span> <span class="n">peft_model_id</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">tune_strategy</span> <span class="o">==</span> <span class="s2">&quot;none&quot;</span> <span class="ow">and</span> <span class="n">with_deepspeed</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> + <span class="c1"># when load the model with 4bit / 8bit.</span> + <span class="c1"># fail to use deepspeed.</span> + <span class="k">if</span> <span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;gpu&quot;</span><span class="p">:</span> + <span class="n">deepspeed</span><span class="o">.</span><span class="n">init_distributed</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">ds_engine</span> <span class="o">=</span> <span class="n">deepspeed</span><span class="o">.</span><span class="n">initialize</span><span class="p">(</span><span class="n">model</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="p">,</span> <span class="n">config_params</span><span class="o">=</span><span class="n">ds_config</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">ds_engine</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">padding_side</span> <span class="o">=</span> <span class="s2">&quot;left&quot;</span> <span class="c1"># necessary for auto-gressive inference</span> + + <span class="k">elif</span> <span class="n">tune_strategy</span> <span class="o">==</span> <span class="s1">&#39;adapter&#39;</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s1">&#39;adapter tune strategy not implemented&#39;</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch_type</span> <span class="o">==</span> <span class="s2">&quot;encoder_decoder&quot;</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">eos_token_id</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span> + +<div class="viewcode-block" id="HFEncoderDecoderModel.tokenize"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.tokenize">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Tokenize the full dataset.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> dataset :</span> +<span class="sd"> Text dataset.</span> + +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> + +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments.</span> + +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> tokenized_datasets :</span> +<span class="sd"> The tokenized dataset.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s1">&#39;tokenize not implemented&#39;</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="HFEncoderDecoderModel.encode"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.encode">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">encode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">input</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]],</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform encoding process of the tokenizer.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> inputs : str or list.</span> +<span class="sd"> The text sequence.</span> + +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> + +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments.</span> + +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> outputs :</span> +<span class="sd"> The tokenized inputs.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># check how to handle the image processor</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> + <span class="c1"># TODO refactor the input type to make it elegant.</span> + <span class="n">kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="nb">input</span><span class="p">)</span> + <span class="k">if</span> <span class="s2">&quot;images&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="nb">input</span><span class="p">:</span> + <span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">,</span> <span class="s2">&quot;image_processor&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;image_processor&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">images</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;images&quot;</span><span class="p">)</span> + <span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="n">images</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">image_processor</span><span class="o">.</span><span class="n">preprocess</span><span class="p">(</span> + <span class="n">images</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s1">&#39;pt&#39;</span><span class="p">)[</span><span class="s1">&#39;pixel_values&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> + <span class="n">tokens</span><span class="p">[</span><span class="s1">&#39;pixel_values&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">images</span> + <span class="k">else</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Can not find the image processor&quot;</span><span class="p">)</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span> + <span class="k">return</span> <span class="n">tokens</span> + <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="nb">input</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span><span class="c1">#batch encode,will automatically do left padding</span> + <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="nb">input</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;type &quot;</span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="nb">input</span><span class="p">)</span><span class="si">}</span><span class="s1">&quot; cannot be encoded&#39;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="HFEncoderDecoderModel.decode"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.decode">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">decode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">input</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform decoding process of the tokenizer.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> inputs : list.</span> +<span class="sd"> The token sequence.</span> + +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> + +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments.</span> + +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> outputs :</span> +<span class="sd"> The text decoded from the token inputs.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">List</span><span class="p">):</span> + <span class="nb">input</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span><span class="nb">input</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">input</span><span class="o">.</span><span class="n">dim</span><span class="p">()</span><span class="o">==</span><span class="mi">2</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">batch_decode</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span><span class="c1">#batch_decode</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># Can be list of ints or a Tensor</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="HFEncoderDecoderModel.inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">inference</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform generation process of the model.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> inputs :</span> +<span class="sd"> The sequence used as a prompt for the generation or as model inputs to the model.</span> + +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> + +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments.</span> + +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> outputs :</span> +<span class="sd"> The generated sequence output</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># current_time = time.strftime(&quot;%H:%M:%S&quot;, time.localtime())</span> + <span class="c1"># print(f&quot;{current_time}: model.inference: start&quot;, flush=True)</span> + + <span class="c1"># TODO need to discuss how to handle pad_token_id</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch_type</span> <span class="o">==</span> <span class="s2">&quot;encoder_decoder&quot;</span><span class="p">:</span> + <span class="n">kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">pad_token_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch_type</span> <span class="o">==</span> <span class="s2">&quot;vision_encoder_decoder&quot;</span><span class="p">:</span> + <span class="c1"># TODO disucss how to modify the interface to remove this part.</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span> + <span class="n">input_ids</span> <span class="o">=</span> <span class="n">inputs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s1">&#39;input_ids&#39;</span><span class="p">)</span> + <span class="n">kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="o">**</span><span class="n">inputs</span><span class="p">)</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="n">input_ids</span> + + <span class="c1"># current_time = time.strftime(&quot;%H:%M:%S&quot;, time.localtime())</span> + <span class="c1"># print(f&quot;{current_time}: model.inference: kwargs update end&quot;, flush=True)</span> + + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;gpu&quot;</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;ds_engine&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ds_engine</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span> + <span class="n">input_ids</span><span class="o">=</span><span class="n">inputs</span><span class="p">,</span> + <span class="n">synced_gpus</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span> + <span class="n">input_ids</span><span class="o">=</span><span class="n">inputs</span><span class="p">,</span> + <span class="n">synced_gpus</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;cpu&quot;</span><span class="p">:</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span> + <span class="n">input_ids</span><span class="o">=</span><span class="n">inputs</span><span class="p">,</span> + <span class="n">synced_gpus</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;device </span><span class="se">\&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2"> is not supported&quot;</span> + <span class="p">)</span> + + <span class="c1"># current_time = time.strftime(&quot;%H:%M:%S&quot;, time.localtime())</span> + <span class="c1"># print(f&quot;{current_time}: model.inference: end&quot;, flush=True)</span> + + <span class="k">return</span> <span class="n">outputs</span></div> + + + +<div class="viewcode-block" id="HFEncoderDecoderModel.merge_lora_weights"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.merge_lora_weights">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">merge_lora_weights</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">use_lora</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span><span class="o">.</span><span class="n">merge_and_unload</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;LoRA training is NOT enabled. Merging LoRA weights is not applicable.&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="HFEncoderDecoderModel.save"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.save">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">dir</span><span class="p">,</span> <span class="n">save_full_model</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform generation process of the model.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> dir :</span> +<span class="sd"> The directory to save model and tokenizer</span> + +<span class="sd"> save_full_model : Optional.</span> +<span class="sd"> Whether to save full model.</span> + +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments.</span> + +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> outputs :</span> +<span class="sd"> The generated sequence output</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="bp">self</span><span class="o">.</span><span class="n">get_tokenizer</span><span class="p">()</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="nb">dir</span><span class="p">)</span> + <span class="k">if</span> <span class="n">save_full_model</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">use_lora</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model_full</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="nb">dir</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="nb">dir</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="HFEncoderDecoderModel.get_max_length"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_max_length">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_max_length</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Return max acceptable input length in terms of tokens.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="s2">&quot;tokenizer&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># for the multi-modality processor,</span> + <span class="c1"># the max length is stored in the inner text tokenizer</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span></div> + + + +<div class="viewcode-block" id="HFEncoderDecoderModel.get_tokenizer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_tokenizer">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_tokenizer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Return the tokenizer of the model.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span></div> + + + +<div class="viewcode-block" id="HFEncoderDecoderModel.get_backend_model"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_backend_model">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_backend_model</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Return the backend model.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/models/hf_model_mixin.html b/_modules/lmflow/models/hf_model_mixin.html new file mode 100644 index 000000000..0282e7912 --- /dev/null +++ b/_modules/lmflow/models/hf_model_mixin.html @@ -0,0 +1,1110 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.models.hf_model_mixin &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/models/hf_model_mixin';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.hf_model_mixin</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.models.hf_model_mixin</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">gc</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">copy</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">deepspeed</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">CONFIG_MAPPING</span><span class="p">,</span> + <span class="n">AutoConfig</span><span class="p">,</span> + <span class="n">BitsAndBytesConfig</span><span class="p">,</span> + <span class="n">AutoTokenizer</span><span class="p">,</span> + <span class="n">PreTrainedTokenizer</span><span class="p">,</span> + <span class="n">PreTrainedTokenizerFast</span><span class="p">,</span> + <span class="n">AutoModelForCausalLM</span><span class="p">,</span> + <span class="n">AutoModelForSequenceClassification</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">peft</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">LoraConfig</span><span class="p">,</span> + <span class="n">PeftModel</span><span class="p">,</span> + <span class="n">TaskType</span><span class="p">,</span> + <span class="n">get_peft_model</span><span class="p">,</span> + <span class="n">prepare_model_for_kbit_training</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">peft.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="n">TRANSFORMERS_MODELS_TO_LORA_TARGET_MODULES_MAPPING</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.base_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">LMFLOW_LORA_TARGET_MODULES_MAPPING</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModelArguments</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.versioning</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_vllm_available</span> + +<span class="k">if</span> <span class="n">is_vllm_available</span><span class="p">():</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">vllm</span><span class="w"> </span><span class="kn">import</span> <span class="n">LLM</span><span class="p">,</span> <span class="n">SamplingParams</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">vllm.distributed.parallel_state</span><span class="w"> </span><span class="kn">import</span> <span class="n">destroy_model_parallel</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="HF_AUTOMODEL_MAPPING"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HF_AUTOMODEL_MAPPING">[docs]</a> +<span class="n">HF_AUTOMODEL_MAPPING</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;decoder_only&quot;</span><span class="p">:</span> <span class="n">AutoModelForCausalLM</span><span class="p">,</span> + <span class="s2">&quot;text_regression&quot;</span><span class="p">:</span> <span class="n">AutoModelForSequenceClassification</span> +<span class="p">}</span></div> + + +<div class="viewcode-block" id="HF_AUTOMODEL_TYPE"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HF_AUTOMODEL_TYPE">[docs]</a> +<span class="n">HF_AUTOMODEL_TYPE</span> <span class="o">=</span> <span class="n">Union</span><span class="p">[</span><span class="n">AutoModelForCausalLM</span><span class="p">,</span> <span class="n">AutoModelForSequenceClassification</span><span class="p">]</span></div> + + +<div class="viewcode-block" id="LORA_TARGET_MODULES_MAPPING"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.LORA_TARGET_MODULES_MAPPING">[docs]</a> +<span class="n">LORA_TARGET_MODULES_MAPPING</span> <span class="o">=</span> <span class="p">{</span> + <span class="n">k</span><span class="p">:</span> <span class="n">TRANSFORMERS_MODELS_TO_LORA_TARGET_MODULES_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">LMFLOW_LORA_TARGET_MODULES_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">k</span><span class="p">))</span> + <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">TRANSFORMERS_MODELS_TO_LORA_TARGET_MODULES_MAPPING</span><span class="p">)</span> <span class="o">|</span> <span class="nb">set</span><span class="p">(</span><span class="n">LMFLOW_LORA_TARGET_MODULES_MAPPING</span><span class="p">)</span> +<span class="p">}</span></div> + + + +<div class="viewcode-block" id="HFModelMixin"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">HFModelMixin</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">do_train</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> + <span class="n">ds_config</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">device</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span><span class="o">=</span><span class="s2">&quot;gpu&quot;</span><span class="p">,</span> + <span class="n">use_accelerator</span><span class="p">:</span> <span class="nb">bool</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">hf_auto_model_additional_args</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">]</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Initializes a HFModel instance.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> model_args : </span> +<span class="sd"> Dictionary with model arguments such as model name, path, revision, etc.</span> +<span class="sd"> do_train : bool</span> +<span class="sd"> To prepare the model for training or inference.</span> +<span class="sd"> ds_config : optional</span> +<span class="sd"> Deepspeed configuration for distributed training, by default None</span> +<span class="sd"> device : str, optional</span> +<span class="sd"> By default &quot;gpu&quot;</span> +<span class="sd"> use_accelerator : bool, optional</span> +<span class="sd"> By default False</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="c1"># See more about loading any type of standard or custom dataset (from</span> + <span class="c1"># files, python dict, pandas DataFrame, etc) at</span> + <span class="c1"># https://huggingface.co/docs/datasets/loading_datasets.html.</span> + + <span class="c1"># Load pretrained model and tokenizer</span> + <span class="c1">#</span> + <span class="c1"># Distributed training: The .from_pretrained methods guarantee that</span> + <span class="c1"># only one local process can concurrently download model &amp; vocab.</span> + +<div class="viewcode-block" id="HFModelMixin.device"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.device">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">device</span> <span class="o">=</span> <span class="n">device</span></div> + +<div class="viewcode-block" id="HFModelMixin.model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> <span class="o">=</span> <span class="n">model_args</span></div> + +<div class="viewcode-block" id="HFModelMixin.hf_auto_model"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.hf_auto_model">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">hf_auto_model</span> <span class="o">=</span> <span class="n">HF_AUTOMODEL_MAPPING</span><span class="p">[</span><span class="n">model_args</span><span class="o">.</span><span class="n">arch_type</span><span class="p">]</span></div> + +<div class="viewcode-block" id="HFModelMixin.use_accelerator"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.use_accelerator">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">use_accelerator</span> <span class="o">=</span> <span class="n">use_accelerator</span></div> + +<div class="viewcode-block" id="HFModelMixin.ds_config"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.ds_config">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">ds_config</span> <span class="o">=</span> <span class="n">ds_config</span></div> + +<div class="viewcode-block" id="HFModelMixin.do_train"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.do_train">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">do_train</span> <span class="o">=</span> <span class="n">do_train</span></div> + + +<div class="viewcode-block" id="HFModelMixin.tokenizer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.tokenizer">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__prepare_tokenizer</span><span class="p">(</span><span class="n">model_args</span><span class="p">)</span></div> + +<div class="viewcode-block" id="HFModelMixin.torch_dtype"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.torch_dtype">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">torch_dtype</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__prepare_dtype</span><span class="p">(</span><span class="n">model_args</span><span class="p">)</span></div> + +<div class="viewcode-block" id="HFModelMixin.hf_model_config"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.hf_model_config">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">hf_model_config</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__prepare_model_config</span><span class="p">(</span><span class="n">model_args</span><span class="p">,</span> <span class="n">hf_auto_model_additional_args</span><span class="p">)</span></div> + +<div class="viewcode-block" id="HFModelMixin.quant_config"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.quant_config">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">quant_config</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__prepare_quant_config</span><span class="p">(</span><span class="n">model_args</span><span class="p">)</span></div> + +<div class="viewcode-block" id="HFModelMixin.peft_config"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.peft_config">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">peft_config</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__prepare_peft_config</span><span class="p">(</span><span class="n">model_args</span><span class="p">)</span></div> + +<div class="viewcode-block" id="HFModelMixin._activated"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin._activated">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">_activated</span> <span class="o">=</span> <span class="kc">False</span> <span class="c1"># for inference load and offload</span></div> + + + <span class="c1"># Some implementations require custom modules to be injected into the model.</span> + <span class="bp">self</span><span class="o">.</span><span class="n">__model_module_inject</span><span class="p">(</span><span class="n">model_args</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_train</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">__prepare_model_for_training</span><span class="p">(</span><span class="n">model_args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">hf_auto_model</span><span class="p">)</span> + + +<div class="viewcode-block" id="HFModelMixin.__prepare_tokenizer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_tokenizer">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__prepare_tokenizer</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="n">PreTrainedTokenizer</span><span class="p">,</span> <span class="n">PreTrainedTokenizerFast</span><span class="p">]:</span> + <span class="n">tokenizer_name</span> <span class="o">=</span> <span class="n">model_args</span><span class="o">.</span><span class="n">tokenizer_name</span> <span class="ow">or</span> <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">tokenizer_name</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;You are instantiating a new tokenizer from scratch. This is&quot;</span> + <span class="s2">&quot; not supported by this script. You can do it from another&quot;</span> + <span class="s2">&quot; script, save it, and load it from here, using&quot;</span> + <span class="s2">&quot; --tokenizer_name.&quot;</span> + <span class="p">)</span> + + <span class="n">tokenizer_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;cache_dir&quot;</span><span class="p">:</span> <span class="n">model_args</span><span class="o">.</span><span class="n">cache_dir</span><span class="p">,</span> + <span class="s2">&quot;use_fast&quot;</span><span class="p">:</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_fast_tokenizer</span><span class="p">,</span> + <span class="s2">&quot;revision&quot;</span><span class="p">:</span> <span class="n">model_args</span><span class="o">.</span><span class="n">model_revision</span><span class="p">,</span> + <span class="s2">&quot;token&quot;</span><span class="p">:</span> <span class="n">model_args</span><span class="o">.</span><span class="n">token</span><span class="p">,</span> + <span class="s2">&quot;trust_remote_code&quot;</span><span class="p">:</span> <span class="n">model_args</span><span class="o">.</span><span class="n">trust_remote_code</span><span class="p">,</span> + <span class="p">}</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">padding_side</span> <span class="o">!=</span> <span class="s1">&#39;auto&#39;</span><span class="p">:</span> + <span class="n">tokenizer_kwargs</span><span class="p">[</span><span class="s2">&quot;padding_side&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">model_args</span><span class="o">.</span><span class="n">padding_side</span> + + <span class="k">try</span><span class="p">:</span> + <span class="n">tokenizer</span> <span class="o">=</span> <span class="n">AutoTokenizer</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="n">tokenizer_name</span><span class="p">,</span> <span class="o">**</span><span class="n">tokenizer_kwargs</span><span class="p">)</span> + <span class="k">except</span> <span class="ne">RecursionError</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;The tokenizer_config.json file doesn&#39;t set the special tokens. Using default values: &quot;</span> + <span class="s2">&quot;&lt;unk&gt;, &lt;s&gt;, &lt;/s&gt; for unknown token, bos token and eos token respectively.&quot;</span><span class="p">)</span> + <span class="n">tokenizer</span> <span class="o">=</span> <span class="n">AutoTokenizer</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="n">tokenizer_name</span><span class="p">,</span> <span class="n">unk_token</span><span class="o">=</span><span class="s2">&quot;&lt;unk&gt;&quot;</span><span class="p">,</span> + <span class="n">bos_token</span><span class="o">=</span><span class="s2">&quot;&lt;s&gt;&quot;</span><span class="p">,</span> + <span class="n">eos_token</span><span class="o">=</span><span class="s2">&quot;&lt;/s&gt;&quot;</span><span class="p">,</span> + <span class="o">**</span><span class="n">tokenizer_kwargs</span><span class="p">)</span> + + <span class="n">tokenizer</span><span class="o">.</span><span class="n">truncation_side</span> <span class="o">=</span> <span class="n">model_args</span><span class="o">.</span><span class="n">truncation_side</span> <span class="ow">or</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">truncation_side</span> + <span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span> <span class="o">=</span> <span class="n">model_args</span><span class="o">.</span><span class="n">model_max_length</span> <span class="ow">or</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span> + + <span class="k">return</span> <span class="n">tokenizer</span></div> + + + +<div class="viewcode-block" id="HFModelMixin.__prepare_dtype"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_dtype">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__prepare_dtype</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">torch</span><span class="o">.</span><span class="n">dtype</span><span class="p">:</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">arch_type</span> <span class="o">==</span> <span class="s1">&#39;text_regression&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">torch_dtype</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;auto&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="s2">&quot;bf16&quot;</span><span class="p">,</span> <span class="s2">&quot;bfloat16&quot;</span><span class="p">]:</span> + <span class="n">torch_dtype</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">bfloat16</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">torch_dtype</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">torch</span><span class="p">,</span> <span class="n">model_args</span><span class="o">.</span><span class="n">torch_dtype</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;If you are doing reward modeling,&quot;</span> + <span class="sa">f</span><span class="s2">&quot; InstructGPT uses torch.bfloat16 for reward model, but you&quot;</span> + <span class="sa">f</span><span class="s2">&quot; are using </span><span class="si">{</span><span class="n">torch_dtype</span><span class="si">}</span><span class="s2"> for your reward model init. Ignore&quot;</span> + <span class="sa">f</span><span class="s2">&quot; this warning if it is intended.&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">torch_dtype</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">torch_dtype</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">torch_dtype</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;auto&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">]</span> + <span class="k">else</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">torch</span><span class="p">,</span> <span class="n">model_args</span><span class="o">.</span><span class="n">torch_dtype</span><span class="p">)</span> + <span class="p">)</span> + + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;torch_dtype on init: </span><span class="si">{</span><span class="n">torch_dtype</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">torch_dtype</span></div> + + + +<div class="viewcode-block" id="HFModelMixin.__prepare_model_config"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_config">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__prepare_model_config</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">hf_auto_model_additional_args</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">]</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Prepare model configuration for hf auto register,</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> model_args : ModelArguments</span> +<span class="sd"> LMFlow model arguments.</span> +<span class="sd"> hf_auto_model_additional_args : Optional[Dict], optional</span> +<span class="sd"> Special configurations such as `num_labels` in `AutoModelForSequenceClassification` </span> +<span class="sd"> (commonly used in reward modeling) will not preset in __prepare_model_config, </span> +<span class="sd"> so it should be passed in hf_auto_model_additional_args.</span> +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> config : ModelConfig</span> +<span class="sd"> hf model config.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">config_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;attn_implementation&quot;</span><span class="p">:</span> <span class="s2">&quot;flash_attention_2&quot;</span> <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_flash_attention</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> + <span class="s2">&quot;cache_dir&quot;</span><span class="p">:</span> <span class="n">model_args</span><span class="o">.</span><span class="n">cache_dir</span><span class="p">,</span> + <span class="s2">&quot;revision&quot;</span><span class="p">:</span> <span class="n">model_args</span><span class="o">.</span><span class="n">model_revision</span><span class="p">,</span> + <span class="s2">&quot;token&quot;</span><span class="p">:</span> <span class="n">model_args</span><span class="o">.</span><span class="n">token</span><span class="p">,</span> + <span class="s2">&quot;trust_remote_code&quot;</span><span class="p">:</span> <span class="n">model_args</span><span class="o">.</span><span class="n">trust_remote_code</span><span class="p">,</span> + <span class="s2">&quot;from_tf&quot;</span><span class="p">:</span> <span class="nb">bool</span><span class="p">(</span><span class="s2">&quot;.ckpt&quot;</span> <span class="ow">in</span> <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">),</span> + <span class="p">}</span> + <span class="k">if</span> <span class="n">hf_auto_model_additional_args</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">config_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">hf_auto_model_additional_args</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">config_name</span><span class="p">:</span> + <span class="n">config</span> <span class="o">=</span> <span class="n">AutoConfig</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="n">model_args</span><span class="o">.</span><span class="n">config_name</span><span class="p">,</span> <span class="o">**</span><span class="n">config_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">:</span> + <span class="n">config</span> <span class="o">=</span> <span class="n">AutoConfig</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> <span class="o">**</span><span class="n">config_kwargs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">config</span> <span class="o">=</span> <span class="n">CONFIG_MAPPING</span><span class="p">[</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_type</span><span class="p">]()</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;You are instantiating a new config instance from scratch.&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">config_overrides</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Overriding config: </span><span class="si">{</span><span class="n">model_args</span><span class="o">.</span><span class="n">config_overrides</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">config</span><span class="o">.</span><span class="n">update_from_string</span><span class="p">(</span><span class="n">model_args</span><span class="o">.</span><span class="n">config_overrides</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;New config: </span><span class="si">{</span><span class="n">config</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">config</span></div> + + + +<div class="viewcode-block" id="HFModelMixin.__prepare_quant_config"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_quant_config">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__prepare_quant_config</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="p">):</span> + <span class="n">quant_config</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_train</span><span class="p">:</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_qlora</span><span class="p">:</span> + <span class="n">quant_config</span> <span class="o">=</span> <span class="n">BitsAndBytesConfig</span><span class="p">(</span> + <span class="n">load_in_4bit</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">bits</span> <span class="o">==</span> <span class="mi">4</span><span class="p">,</span> + <span class="n">load_in_8bit</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">bits</span> <span class="o">==</span> <span class="mi">8</span><span class="p">,</span> + <span class="n">llm_int8_threshold</span><span class="o">=</span><span class="mf">6.0</span><span class="p">,</span> + <span class="n">llm_int8_has_fp16_weight</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">bnb_4bit_compute_dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">torch_dtype</span><span class="p">,</span> + <span class="n">bnb_4bit_use_double_quant</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">double_quant</span><span class="p">,</span> + <span class="n">bnb_4bit_quant_type</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">quant_type</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> <span class="c1"># inference</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_int8</span><span class="p">:</span> + <span class="n">quant_config</span> <span class="o">=</span> <span class="n">BitsAndBytesConfig</span><span class="p">(</span> + <span class="n">load_in_8bit</span> <span class="o">=</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_int8</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">quant_config</span></div> + + + +<div class="viewcode-block" id="HFModelMixin.__prepare_peft_config"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_peft_config">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__prepare_peft_config</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="p">):</span> + <span class="n">peft_config</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_lora</span><span class="p">:</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">lora_target_modules</span><span class="p">:</span> + <span class="n">lora_target_modules</span> <span class="o">=</span> <span class="n">model_args</span><span class="o">.</span><span class="n">lora_target_modules</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">model_config</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">hf_model_config</span> + <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">model_config</span><span class="p">,</span> <span class="s2">&quot;to_dict&quot;</span><span class="p">):</span> + <span class="n">model_config</span> <span class="o">=</span> <span class="n">model_config</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()</span> + <span class="k">if</span> <span class="s2">&quot;model_type&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">model_config</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">model_config</span><span class="p">[</span><span class="s2">&quot;model_type&quot;</span><span class="p">]:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;It seems that your base model is a custom model, since &quot;</span> + <span class="s2">&quot;model_type is not found in model_config when preparing peft config. &quot;</span> + <span class="s2">&quot;Setting model_type to &#39;custom&#39; as a fallback.&quot;</span><span class="p">)</span> + <span class="n">model_config</span><span class="p">[</span><span class="s2">&quot;model_type&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;custom&quot;</span> + <span class="n">lora_target_modules</span> <span class="o">=</span> <span class="n">LORA_TARGET_MODULES_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">model_config</span><span class="p">[</span><span class="s2">&quot;model_type&quot;</span><span class="p">],</span> <span class="kc">None</span><span class="p">)</span> + + <span class="n">peft_config</span> <span class="o">=</span> <span class="n">LoraConfig</span><span class="p">(</span> + <span class="n">task_type</span><span class="o">=</span><span class="n">TaskType</span><span class="o">.</span><span class="n">CAUSAL_LM</span><span class="p">,</span> + <span class="n">inference_mode</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">r</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">lora_r</span><span class="p">,</span> + <span class="n">lora_alpha</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">lora_alpha</span><span class="p">,</span> + <span class="n">lora_dropout</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">lora_dropout</span><span class="p">,</span> + <span class="n">target_modules</span><span class="o">=</span><span class="n">lora_target_modules</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_dora</span><span class="p">:</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">lora_target_modules</span><span class="p">:</span> + <span class="n">lora_target_modules</span> <span class="o">=</span> <span class="n">model_args</span><span class="o">.</span><span class="n">lora_target_modules</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">model_config</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">hf_model_config</span> + <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">model_config</span><span class="p">,</span> <span class="s2">&quot;to_dict&quot;</span><span class="p">):</span> + <span class="n">model_config</span> <span class="o">=</span> <span class="n">model_config</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()</span> + <span class="k">if</span> <span class="s2">&quot;model_type&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">model_config</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">model_config</span><span class="p">[</span><span class="s2">&quot;model_type&quot;</span><span class="p">]:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;It seems that your base model is a custom model, since &quot;</span> + <span class="s2">&quot;model_type is not found in model_config when preparing peft config. &quot;</span> + <span class="s2">&quot;Setting model_type to &#39;custom&#39; as a fallback.&quot;</span><span class="p">)</span> + <span class="n">model_config</span><span class="p">[</span><span class="s2">&quot;model_type&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;custom&quot;</span> + <span class="n">lora_target_modules</span> <span class="o">=</span> <span class="n">LORA_TARGET_MODULES_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">model_config</span><span class="p">[</span><span class="s2">&quot;model_type&quot;</span><span class="p">],</span> <span class="kc">None</span><span class="p">)</span> + + <span class="n">peft_config</span> <span class="o">=</span> <span class="n">LoraConfig</span><span class="p">(</span> + <span class="n">use_dora</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">task_type</span><span class="o">=</span><span class="n">TaskType</span><span class="o">.</span><span class="n">CAUSAL_LM</span><span class="p">,</span> + <span class="n">inference_mode</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">r</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">lora_r</span><span class="p">,</span> + <span class="n">lora_alpha</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">lora_alpha</span><span class="p">,</span> + <span class="n">lora_dropout</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">lora_dropout</span><span class="p">,</span> + <span class="n">target_modules</span><span class="o">=</span><span class="n">lora_target_modules</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">peft_config</span></div> + + + +<div class="viewcode-block" id="HFModelMixin.__model_module_inject"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__model_module_inject">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__model_module_inject</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Override some model modules with custom implementations.</span> +<span class="sd"> </span> +<span class="sd"> Current implementations:</span> +<span class="sd"> - Position interpolation (model_args.do_rope_scaling): </span> +<span class="sd"> replace llama embeddings with condense embeddings.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># position interpolation</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">do_rope_scaling</span><span class="p">:</span> + <span class="k">if</span> <span class="s2">&quot;LlamaForCausalLM&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_config</span><span class="o">.</span><span class="n">architectures</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">replace_llama_with_condense</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">replace_llama_with_condense</span><span class="p">(</span><span class="n">model_args</span><span class="o">.</span><span class="n">rope_pi_ratio</span><span class="p">,</span> <span class="n">model_args</span><span class="o">.</span><span class="n">rope_ntk_ratio</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="HFModelMixin.__prepare_model_for_training"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_training">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__prepare_model_for_training</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">hf_auto_model</span><span class="p">:</span> <span class="n">HF_AUTOMODEL_TYPE</span><span class="p">,</span> + <span class="p">):</span> + <span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_train</span><span class="p">,</span> <span class="s2">&quot;To prepare the model for training, please set do_train=True.&quot;</span> + <span class="c1"># TODO: change to accelerate</span> + + <span class="k">if</span> <span class="s1">&#39;hymba&#39;</span> <span class="ow">in</span> <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">:</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">torch._dynamo</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_dynamo</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">suppress_errors</span> <span class="o">=</span> <span class="kc">True</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_dynamo</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">disable</span> <span class="o">=</span> <span class="kc">True</span> + + + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Preparing model for training&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">:</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">hf_auto_model</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> + <span class="n">torch_dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">torch_dtype</span><span class="p">,</span> + <span class="n">config</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">hf_model_config</span><span class="p">,</span> + <span class="n">quantization_config</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">quant_config</span><span class="p">,</span> + <span class="n">trust_remote_code</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">trust_remote_code</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_qlora</span><span class="p">:</span> + <span class="n">model</span><span class="o">.</span><span class="n">gradient_checkpointing_enable</span><span class="p">()</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">prepare_model_for_kbit_training</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">hf_auto_model</span><span class="o">.</span><span class="n">from_config</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">hf_model_config</span><span class="p">)</span> + <span class="n">n_params</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span><span class="nb">dict</span><span class="p">((</span><span class="n">p</span><span class="o">.</span><span class="n">data_ptr</span><span class="p">(),</span> <span class="n">p</span><span class="o">.</span><span class="n">numel</span><span class="p">())</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">model</span><span class="o">.</span><span class="n">parameters</span><span class="p">())</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Training new model from scratch - Total size=</span><span class="si">{</span><span class="n">n_params</span><span class="o">/</span><span class="mi">2</span><span class="o">**</span><span class="mi">20</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">M params&quot;</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model_full</span> <span class="o">=</span> <span class="n">model</span> + + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">ignore_bias_buffers</span><span class="p">:</span> + <span class="c1"># torch distributed hack</span> + <span class="c1"># fix for DDP issues with LM bias/mask buffers - invalid scalar type, inplace operation. </span> + <span class="c1"># See: https://github.com/huggingface/transformers/issues/22482#issuecomment-1595790992</span> + <span class="n">model</span><span class="o">.</span><span class="n">_ddp_params_and_buffers_to_ignore</span> <span class="o">=</span> <span class="p">[</span> + <span class="n">name</span> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">buffer</span> <span class="ow">in</span> <span class="n">model</span><span class="o">.</span><span class="n">named_buffers</span><span class="p">()</span> <span class="k">if</span> <span class="n">buffer</span><span class="o">.</span><span class="n">dtype</span> <span class="o">==</span> <span class="n">torch</span><span class="o">.</span><span class="n">bool</span> + <span class="p">]</span> + + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_lora</span> <span class="ow">or</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_dora</span><span class="p">:</span> + <span class="n">model</span><span class="o">.</span><span class="n">enable_input_require_grads</span><span class="p">()</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">lora_model_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="c1"># Load model from LoRA weights</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">PeftModel</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">lora_model_path</span><span class="p">,</span> + <span class="n">is_trainable</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># New LoRA Finetuning</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">get_peft_model</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">peft_config</span><span class="p">)</span> + <span class="n">model</span><span class="o">.</span><span class="n">print_trainable_parameters</span><span class="p">()</span> + + <span class="c1"># We resize the embeddings only when necessary to avoid index errors.</span> + <span class="c1"># If you are creating a model from scratch on a small vocab and want a</span> + <span class="c1"># smaller embedding size, remove this test.</span> + <span class="k">with</span> <span class="n">deepspeed</span><span class="o">.</span><span class="n">zero</span><span class="o">.</span><span class="n">GatheredParameters</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">get_input_embeddings</span><span class="p">()</span><span class="o">.</span><span class="n">weight</span><span class="p">,</span> <span class="n">modifier_rank</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="n">weights</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">get_input_embeddings</span><span class="p">()</span><span class="o">.</span><span class="n">weight</span> + <span class="n">embedding_size</span> <span class="o">=</span> <span class="n">weights</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">embedding_size</span><span class="p">:</span> + <span class="n">model</span><span class="o">.</span><span class="n">resize_token_embeddings</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">))</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span> <span class="o">=</span> <span class="n">model</span> + <span class="bp">self</span><span class="o">.</span><span class="n">__prepare_model_post_process</span><span class="p">()</span></div> + + + +<div class="viewcode-block" id="HFModelMixin.__prepare_model_for_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__prepare_model_for_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">hf_auto_model</span><span class="p">:</span> <span class="n">HF_AUTOMODEL_TYPE</span><span class="p">,</span> + <span class="n">use_accelerator</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> + <span class="n">ds_config</span> + <span class="p">):</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Backend model already initialized, moving to device: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;backend_model&quot;</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="n">torch</span><span class="o">.</span><span class="n">device</span><span class="p">(</span><span class="s2">&quot;cpu&quot;</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="k">return</span> + + <span class="c1"># TODO: change to accelerate</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Preparing model for inference&quot;</span><span class="p">)</span> + <span class="n">inference_load_kwargs</span> <span class="o">=</span> <span class="p">{}</span> + <span class="n">inference_load_kwargs_bak</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">inference_load_kwargs</span><span class="p">)</span> + <span class="n">ram_optimized_load_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;device_map&quot;</span><span class="p">:</span> <span class="s2">&quot;auto&quot;</span><span class="p">,</span> + <span class="s2">&quot;offload_folder&quot;</span><span class="p">:</span> <span class="s2">&quot;offload&quot;</span><span class="p">,</span> + <span class="s2">&quot;offload_state_dict&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> + <span class="p">}</span> + + <span class="k">if</span> <span class="n">use_accelerator</span> <span class="ow">or</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_ram_optimized_load</span><span class="p">:</span> + <span class="n">inference_load_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">ram_optimized_load_kwargs</span><span class="p">)</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">use_accelerator</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">transformers.integrations</span><span class="w"> </span><span class="kn">import</span> <span class="n">HfDeepSpeedConfig</span> + <span class="n">dschf</span> <span class="o">=</span> <span class="n">HfDeepSpeedConfig</span><span class="p">(</span><span class="n">ds_config</span><span class="p">)</span> + + <span class="k">try</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span> <span class="o">=</span> <span class="n">hf_auto_model</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> + <span class="n">torch_dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">torch_dtype</span><span class="p">,</span> + <span class="n">config</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">hf_model_config</span><span class="p">,</span> + <span class="n">quantization_config</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">quant_config</span><span class="p">,</span> + <span class="o">**</span><span class="n">inference_load_kwargs</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">except</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;Failed to use RAM optimized load. Using original load instead.&quot;</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span> <span class="o">=</span> <span class="n">hf_auto_model</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> + <span class="n">torch_dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">torch_dtype</span><span class="p">,</span> + <span class="n">config</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">hf_model_config</span><span class="p">,</span> + <span class="n">quantization_config</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">quant_config</span><span class="p">,</span> + <span class="o">**</span><span class="n">inference_load_kwargs_bak</span><span class="p">,</span> + <span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model_full</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span> + + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">lora_model_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span> <span class="o">=</span> <span class="n">PeftModel</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="p">,</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">lora_model_path</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="p">(</span><span class="ow">not</span> <span class="n">use_accelerator</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;gpu&quot;</span><span class="p">:</span> + <span class="n">deepspeed</span><span class="o">.</span><span class="n">init_distributed</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">ds_engine</span> <span class="o">=</span> <span class="n">deepspeed</span><span class="o">.</span><span class="n">initialize</span><span class="p">(</span><span class="n">model</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="p">,</span> <span class="n">config_params</span><span class="o">=</span><span class="n">ds_config</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">ds_engine</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">__prepare_model_post_process</span><span class="p">()</span></div> + + + +<div class="viewcode-block" id="HFModelMixin.__prepare_model_for_vllm_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_vllm_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__prepare_model_for_vllm_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">vllm_gpu_memory_utilization</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">vllm_tensor_parallel_size</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_vllm_available</span><span class="p">():</span> + <span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="s1">&#39;VLLM is not available. Please install via `pip install -e &quot;.[vllm]&quot;`.&#39;</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model_for_inference</span> <span class="o">=</span> <span class="n">LLM</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> + <span class="n">dtype</span><span class="o">=</span><span class="n">model_args</span><span class="o">.</span><span class="n">torch_dtype</span> <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">torch_dtype</span> <span class="k">else</span> <span class="s2">&quot;auto&quot;</span><span class="p">,</span> + <span class="n">load_format</span><span class="o">=</span><span class="s2">&quot;auto&quot;</span><span class="p">,</span> + <span class="n">gpu_memory_utilization</span><span class="o">=</span><span class="n">vllm_gpu_memory_utilization</span><span class="p">,</span> + <span class="n">tensor_parallel_size</span><span class="o">=</span><span class="n">vllm_tensor_parallel_size</span><span class="p">,</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="HFModelMixin.__prepare_model_post_process"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_post_process">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__prepare_model_post_process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="c1"># old models/tokenizers may not have these attributes, fixing </span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">eos_token</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">eos_token_id</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">eos_padding</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">config</span><span class="p">,</span> <span class="s2">&quot;pad_token_id&quot;</span><span class="p">):</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;pad_token_id not found in model config. Setting pad_token_id to eos_token_id.&quot;</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">pad_token_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">eos_token_id</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">pad_token_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;pad_token_id is None in model config. Setting pad_token_id to eos_token_id.&quot;</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">pad_token_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">eos_token_id</span></div> + + + +<div class="viewcode-block" id="HFModelMixin.activate_model_for_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.activate_model_for_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">activate_model_for_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">use_vllm</span><span class="p">:</span> <span class="nb">bool</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_activated</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;You are trying to activate the model for inference, but it is already activated.&quot;</span><span class="p">)</span> + <span class="k">return</span> + + <span class="k">if</span> <span class="n">use_vllm</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">__prepare_model_for_vllm_inference</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="p">,</span> + <span class="n">vllm_gpu_memory_utilization</span><span class="o">=</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;vllm_gpu_memory_utilization&quot;</span><span class="p">),</span> + <span class="n">vllm_tensor_parallel_size</span><span class="o">=</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;vllm_tensor_parallel_size&quot;</span><span class="p">),</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">__prepare_model_for_inference</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="p">,</span> + <span class="n">hf_auto_model</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">hf_auto_model</span><span class="p">,</span> + <span class="n">use_accelerator</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">use_accelerator</span><span class="p">,</span> + <span class="n">ds_config</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ds_config</span><span class="p">,</span> + <span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">_activated</span> <span class="o">=</span> <span class="kc">True</span></div> + + + +<div class="viewcode-block" id="HFModelMixin.deactivate_model_for_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.deactivate_model_for_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">deactivate_model_for_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">use_vllm</span><span class="p">:</span> <span class="nb">bool</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Deactivate the model and release the resources.</span> +<span class="sd"> </span> +<span class="sd"> NOTE: Currently, VLLM doesn&#39;t have an official way to do this, and the</span> +<span class="sd"> implementation below cannot release all gpu resources by our observation.</span> +<span class="sd"> Thus this method is just a placeholder for future implementation. See: </span> +<span class="sd"> [Github issue](https://github.com/vllm-project/vllm/issues/1908)</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_activated</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;You are trying to deactivate the model for inference, but it is already deactivated.&quot;</span><span class="p">)</span> + <span class="k">return</span> + + <span class="k">if</span> <span class="n">use_vllm</span><span class="p">:</span> + <span class="n">destroy_model_parallel</span><span class="p">()</span> + <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model_for_inference</span><span class="o">.</span><span class="n">llm_engine</span><span class="o">.</span><span class="n">model_executor</span><span class="o">.</span><span class="n">driver_worker</span> + <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model_for_inference</span> + <span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span> + <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">empty_cache</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="s2">&quot;cpu&quot;</span><span class="p">)</span> + <span class="k">pass</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">_activated</span> <span class="o">=</span> <span class="kc">False</span></div> + + + +<div class="viewcode-block" id="HFModelMixin.get_max_length"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.get_max_length">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_max_length</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Return max acceptable input length in terms of tokens.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span></div> + + + +<div class="viewcode-block" id="HFModelMixin.get_tokenizer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.get_tokenizer">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_tokenizer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Return the tokenizer of the model.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span></div> + + + +<div class="viewcode-block" id="HFModelMixin.get_backend_model"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.get_backend_model">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_backend_model</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Return the backend model.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/models/hf_text_regression_model.html b/_modules/lmflow/models/hf_text_regression_model.html new file mode 100644 index 000000000..07e1025c0 --- /dev/null +++ b/_modules/lmflow/models/hf_text_regression_model.html @@ -0,0 +1,958 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.models.hf_text_regression_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/models/hf_text_regression_model';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.hf_text_regression_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.models.hf_text_regression_model</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">copy</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">hashlib</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Optional</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">peft</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">LoraConfig</span><span class="p">,</span> + <span class="n">PeftModel</span><span class="p">,</span> + <span class="n">TaskType</span><span class="p">,</span> + <span class="n">get_peft_config</span><span class="p">,</span> + <span class="n">get_peft_model</span><span class="p">,</span> + <span class="n">prepare_model_for_kbit_training</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.modeling_outputs</span><span class="w"> </span><span class="kn">import</span> <span class="n">SequenceClassifierOutputWithPast</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModelArguments</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets.dataset</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span><span class="p">,</span> <span class="n">KEY_SCORE</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.interfaces.tunable</span><span class="w"> </span><span class="kn">import</span> <span class="n">Tunable</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.hf_model_mixin</span><span class="w"> </span><span class="kn">import</span> <span class="n">HFModelMixin</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.text_regression_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">TextRegressionModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.tokenization.hf_text_regression_model</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">paired_conversation_tokenize_function</span><span class="p">,</span> + <span class="n">conversation_tokenize_function</span><span class="p">,</span> + <span class="n">tokenize_function</span><span class="p">,</span> + <span class="n">text_to_textlist_tokenize_function</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.conversation_template</span><span class="w"> </span><span class="kn">import</span> <span class="n">PRESET_TEMPLATES</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">PAIRED_CONVERSATION_DATASET_DESCRIPTION</span><span class="p">,</span> + <span class="n">TEXT2TEXT_DATASET_DESCRIPTION</span><span class="p">,</span> + <span class="n">TEXT_ONLY_DATASET_DESCRIPTION</span><span class="p">,</span> + <span class="n">TEXT_TO_TEXTLIST_DATASET_DESCRIPTION</span><span class="p">,</span> + <span class="n">CONVERSATION_DATASET_DESCRIPTION</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.data_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">RewardModelInferenceResultWithInput</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.versioning</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_ray_available</span><span class="p">,</span> <span class="n">is_vllm_available</span> + +<span class="k">if</span> <span class="n">is_ray_available</span><span class="p">():</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">ray</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">ray.data</span> + +<span class="k">if</span> <span class="n">is_vllm_available</span><span class="p">():</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">vllm</span><span class="w"> </span><span class="kn">import</span> <span class="n">SamplingParams</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="HFTextRegressionModel"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">HFTextRegressionModel</span><span class="p">(</span><span class="n">TextRegressionModel</span><span class="p">,</span> <span class="n">HFModelMixin</span><span class="p">,</span> <span class="n">Tunable</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes a HFTextRegressionModel instance.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> + +<span class="sd"> model_args : </span> +<span class="sd"> Model arguments such as model name, path, revision, etc.</span> + +<span class="sd"> tune_strategy : str or none, default=&quot;normal&quot;.</span> +<span class="sd"> A string representing the dataset backend. Defaults to &quot;huggingface&quot;.</span> +<span class="sd"> </span> +<span class="sd"> ds_config : </span> +<span class="sd"> Deepspeed configuations.</span> +<span class="sd"> </span> +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> +<span class="sd"> </span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments. </span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">tune_strategy</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s1">&#39;normal&#39;</span><span class="p">,</span> + <span class="n">ds_config</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">device</span><span class="o">=</span><span class="s2">&quot;gpu&quot;</span><span class="p">,</span> + <span class="n">use_accelerator</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes a HFTextRegressionModel instance.</span> +<span class="sd"> :param model_args: dictionary with model arguments such as model name, path, revision, etc.</span> +<span class="sd"> :param tune_strategy: tuning strategy: normal, none, lora or adapter</span> +<span class="sd"> :param ds_config: deepspeed configuration for distributed training</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">assert</span> <span class="n">model_args</span><span class="o">.</span><span class="n">arch_type</span> <span class="o">==</span> <span class="s2">&quot;text_regression&quot;</span><span class="p">,</span> <span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Invalid model architecture type: </span><span class="si">{</span><span class="n">model_args</span><span class="o">.</span><span class="n">arch_type</span><span class="si">}</span><span class="s2">. &quot;</span> + <span class="sa">f</span><span class="s2">&quot;Expected: text_regression&quot;</span> + <span class="p">)</span> + <span class="n">config_additional_args</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;num_labels&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">}</span> + <span class="n">HFModelMixin</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="o">=</span><span class="n">model_args</span><span class="p">,</span> + <span class="n">do_train</span><span class="o">=</span><span class="kc">True</span> <span class="k">if</span> <span class="n">tune_strategy</span> <span class="o">==</span> <span class="s2">&quot;normal&quot;</span> <span class="k">else</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">ds_config</span><span class="o">=</span><span class="n">ds_config</span><span class="p">,</span> + <span class="n">device</span><span class="o">=</span><span class="n">device</span><span class="p">,</span> + <span class="n">use_accelerator</span><span class="o">=</span><span class="n">use_accelerator</span><span class="p">,</span> + <span class="n">hf_auto_model_additional_args</span><span class="o">=</span><span class="n">config_additional_args</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> + + +<div class="viewcode-block" id="HFTextRegressionModel.tokenize"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.tokenize">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">tokenize</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">add_special_tokens</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Tokenize the full dataset.</span> +<span class="sd"> </span> +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> dataset : lmflow.datasets.Dataset.</span> + +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> +<span class="sd"> </span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments. </span> +<span class="sd"> </span> +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> tokenized_datasets :</span> +<span class="sd"> The tokenized dataset, without any leading or trailing special</span> +<span class="sd"> tokens (normally they are Begin-Of-Sentence or End-Of-Sentence</span> +<span class="sd"> tokens).</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># Preprocessing the datasets.</span> + <span class="c1"># First we tokenize all the texts.</span> + <span class="k">if</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_backend</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">&quot;huggingface&quot;</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="s2">&quot;tokenization of datasets with non-huggingface backend are&quot;</span> + <span class="s2">&quot;not supported yet&quot;</span> + <span class="p">)</span> + + <span class="n">dataset_type</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> + <span class="n">model_args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> + <span class="n">raw_datasets</span> <span class="o">=</span> <span class="n">dataset</span> + <span class="n">hf_raw_datasets</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()</span> + <span class="n">column_names</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">hf_raw_datasets</span><span class="o">.</span><span class="n">features</span><span class="p">)</span> <span class="c1"># in paired conversation, for example, would be &#39;chosen&#39; and &#39;rejected&#39;</span> + <span class="n">data_args</span> <span class="o">=</span> <span class="n">raw_datasets</span><span class="o">.</span><span class="n">get_data_args</span><span class="p">()</span> + + <span class="c1"># Whether to truncate long sequences to fit into max_length</span> + <span class="n">use_truncation</span> <span class="o">=</span> <span class="kc">False</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_lora</span> <span class="ow">or</span> <span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="p">:</span> + <span class="n">use_truncation</span> <span class="o">=</span> <span class="kc">True</span> + + <span class="c1"># Requires three types of information for tokenizing different datasets</span> + <span class="c1"># 1) Which fields require tokenization, e.g.</span> + <span class="c1"># &quot;text2float&quot;: &quot;text&quot;, but not &quot;float&quot;</span> + <span class="c1"># &quot;text2text&quot;: both &quot;input&quot; and &quot;output&quot;</span> + <span class="c1"># 2) How will there tokenized sequence concatenated together, e.g.</span> + <span class="c1"># &quot;text_only&quot;: &quot;text&quot; -&gt; &quot;text&quot;</span> + <span class="c1"># &quot;text2text&quot;: &quot;input&quot;, &quot;output&quot; -&gt; &quot;input&quot; + &quot;output&quot;</span> + <span class="c1"># 3) Which fields require loss in final computation, e.g.</span> + <span class="c1"># &quot;text_only&quot;: &quot;text&quot;</span> + <span class="c1"># &quot;text2text&quot;: &quot;output&quot; only</span> + <span class="n">tokenize_fn</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">tokenize_fn_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;data_args&quot;</span><span class="p">:</span> <span class="n">data_args</span><span class="p">,</span> + <span class="s2">&quot;tokenizer&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">,</span> + <span class="s2">&quot;column_names&quot;</span><span class="p">:</span> <span class="n">column_names</span><span class="p">,</span> + <span class="p">}</span> + <span class="k">if</span> <span class="n">dataset_type</span> <span class="o">==</span> <span class="s2">&quot;text_only&quot;</span><span class="p">:</span> + <span class="n">tokenize_fn</span> <span class="o">=</span> <span class="n">tokenize_function</span> + <span class="n">text_only_tokenize_fn_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;tokenized_column_order&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;text&quot;</span><span class="p">],</span> + <span class="s2">&quot;label_columns&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;text&quot;</span><span class="p">],</span> + <span class="s2">&quot;add_special_tokens&quot;</span><span class="p">:</span> <span class="n">add_special_tokens</span><span class="p">,</span> + <span class="s2">&quot;use_truncation&quot;</span><span class="p">:</span> <span class="n">use_truncation</span><span class="p">,</span> + <span class="p">}</span> + <span class="n">tokenize_fn_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">text_only_tokenize_fn_kwargs</span><span class="p">)</span> + + <span class="k">elif</span> <span class="n">dataset_type</span> <span class="o">==</span> <span class="s2">&quot;text2text&quot;</span><span class="p">:</span> + <span class="n">tokenize_fn</span> <span class="o">=</span> <span class="n">tokenize_function</span> + <span class="n">text2text_tokenize_fn_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;tokenized_column_order&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">,</span> <span class="s2">&quot;output&quot;</span><span class="p">],</span> + <span class="s2">&quot;label_columns&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">],</span> + <span class="s2">&quot;add_special_tokens&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> + <span class="s2">&quot;use_truncation&quot;</span><span class="p">:</span> <span class="n">use_truncation</span><span class="p">,</span> + <span class="p">}</span> + <span class="n">tokenize_fn_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">text2text_tokenize_fn_kwargs</span><span class="p">)</span> + + <span class="k">elif</span> <span class="n">dataset_type</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;conversation&quot;</span><span class="p">,</span> <span class="s2">&quot;paired_conversation&quot;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">dataset_type</span> <span class="o">==</span> <span class="s2">&quot;conversation&quot;</span><span class="p">:</span> + <span class="n">tokenize_fn</span> <span class="o">=</span> <span class="n">conversation_tokenize_function</span> + <span class="k">elif</span> <span class="n">dataset_type</span> <span class="o">==</span> <span class="s2">&quot;paired_conversation&quot;</span><span class="p">:</span> + <span class="n">tokenize_fn</span> <span class="o">=</span> <span class="n">paired_conversation_tokenize_function</span> + + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">conversation_template</span><span class="p">:</span> + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">conversation_template</span> <span class="ow">in</span> <span class="n">PRESET_TEMPLATES</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> + <span class="n">conversation_template</span> <span class="o">=</span> <span class="n">PRESET_TEMPLATES</span><span class="p">[</span><span class="n">data_args</span><span class="o">.</span><span class="n">conversation_template</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Conversation template </span><span class="si">{</span><span class="n">data_args</span><span class="o">.</span><span class="n">conversation_template</span><span class="si">}</span><span class="s2"> is not supported yet.&quot;</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;No conversation template provided. Using default template.&quot;</span><span class="p">)</span> + <span class="n">conversation_template</span> <span class="o">=</span> <span class="n">PRESET_TEMPLATES</span><span class="p">[</span><span class="s1">&#39;empty&#39;</span><span class="p">]</span> + <span class="n">tokenize_fn_kwargs</span><span class="p">[</span><span class="s2">&quot;conversation_template&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">conversation_template</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Conversation template: </span><span class="si">{</span><span class="n">conversation_template</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">elif</span> <span class="n">dataset_type</span> <span class="o">==</span> <span class="s2">&quot;text_to_textlist&quot;</span><span class="p">:</span> + <span class="n">tokenize_fn</span> <span class="o">=</span> <span class="n">text_to_textlist_tokenize_function</span> + <span class="n">text_to_textlist_tokenize_fn_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;add_special_tokens&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> + <span class="s2">&quot;use_truncation&quot;</span><span class="p">:</span> <span class="n">use_truncation</span><span class="p">,</span> + <span class="p">}</span> + <span class="n">tokenize_fn_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">text_to_textlist_tokenize_fn_kwargs</span><span class="p">)</span> + + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Dataset type </span><span class="se">\&quot;</span><span class="si">{</span><span class="n">dataset_type</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2"> is not supported, currently&quot;</span> + <span class="s2">&quot; only support following data types for HFTextRegressionModel:</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="sa">f</span><span class="s2">&quot; 1) [Inference]</span><span class="si">{</span><span class="n">TEXT_ONLY_DATASET_DESCRIPTION</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="sa">f</span><span class="s2">&quot; 2) [Inference]</span><span class="si">{</span><span class="n">TEXT2TEXT_DATASET_DESCRIPTION</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="sa">f</span><span class="s2">&quot; 3) [Training]</span><span class="si">{</span><span class="n">PAIRED_CONVERSATION_DATASET_DESCRIPTION</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="sa">f</span><span class="s2">&quot; 4) [Inference]</span><span class="si">{</span><span class="n">CONVERSATION_DATASET_DESCRIPTION</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="sa">f</span><span class="s2">&quot; 5) [Inference]</span><span class="si">{</span><span class="n">TEXT_TO_TEXTLIST_DATASET_DESCRIPTION</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="p">)</span> + + <span class="n">tokenize_kwargs</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">data_args</span><span class="o">.</span><span class="n">streaming</span><span class="p">:</span> + <span class="n">fingerprint</span> <span class="o">=</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">md5</span><span class="p">(</span> + <span class="p">(</span> + <span class="n">raw_datasets</span><span class="o">.</span><span class="n">get_fingerprint</span><span class="p">()</span> + <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">)</span> + <span class="o">+</span> <span class="sa">f</span><span class="s1">&#39;###padding_side=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">padding_side</span><span class="si">}</span><span class="s1">&#39;</span> + <span class="o">+</span> <span class="p">(</span><span class="s1">&#39;###conversation_template=&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">conversation_template</span><span class="p">)</span> <span class="k">if</span> <span class="s2">&quot;conversation&quot;</span> <span class="ow">in</span> <span class="n">dataset_type</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span><span class="p">)</span> + <span class="o">+</span> <span class="sa">f</span><span class="s1">&#39;###disable_group_texts=</span><span class="si">{</span><span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="si">}</span><span class="s1">&#39;</span> + <span class="o">+</span> <span class="sa">f</span><span class="s1">&#39;###block_size=</span><span class="si">{</span><span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span><span class="si">}</span><span class="s1">&#39;</span> + <span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s2">&quot;utf-8&quot;</span><span class="p">)</span> + <span class="p">)</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span> + <span class="n">tokenize_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;num_proc&quot;</span><span class="p">:</span> <span class="n">data_args</span><span class="o">.</span><span class="n">preprocessing_num_workers</span><span class="p">,</span> + <span class="s2">&quot;load_from_cache_file&quot;</span><span class="p">:</span> <span class="ow">not</span> <span class="n">data_args</span><span class="o">.</span><span class="n">overwrite_cache</span><span class="p">,</span> + <span class="s2">&quot;desc&quot;</span><span class="p">:</span> <span class="s2">&quot;Running tokenizer on dataset&quot;</span><span class="p">,</span> + <span class="s2">&quot;new_fingerprint&quot;</span><span class="p">:</span> <span class="n">fingerprint</span><span class="p">,</span> + <span class="p">}</span> + + <span class="n">tokenized_datasets</span> <span class="o">=</span> <span class="n">raw_datasets</span><span class="o">.</span><span class="n">map</span><span class="p">(</span> + <span class="n">tokenize_fn</span><span class="p">,</span> + <span class="n">batched</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">remove_columns</span><span class="o">=</span><span class="n">column_names</span><span class="p">,</span> + <span class="n">fn_kwargs</span><span class="o">=</span><span class="n">tokenize_fn_kwargs</span><span class="p">,</span> + <span class="o">**</span><span class="n">tokenize_kwargs</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">tokenized_datasets</span></div> + + + +<div class="viewcode-block" id="HFTextRegressionModel.inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">inputs</span><span class="p">,</span> + <span class="n">release_gpu</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">use_vllm</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> <span class="n">SequenceClassifierOutputWithPast</span><span class="p">]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform generation process of the model.</span> +<span class="sd"> </span> +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> inputs :</span> +<span class="sd"> The sequence used as a prompt for the generation or as model inputs to the model.</span> +<span class="sd"> When using vllm inference, this should be a string or a list of strings.</span> +<span class="sd"> When using normal inference, this should be a tensor.</span> +<span class="sd"> release_gpu : bool, optional</span> +<span class="sd"> Whether to release the GPU resource after inference, by default False.</span> +<span class="sd"> use_vllm : bool, optional</span> +<span class="sd"> Whether to use VLLM for inference, by default False.</span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments. </span> +<span class="sd"> </span> +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> outputs :</span> +<span class="sd"> The generated sequence output </span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="n">use_vllm</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;VLLM inference is not supported for text regression model, using normal inference instead.&quot;</span> + <span class="p">)</span> + <span class="n">use_vllm</span> <span class="o">=</span> <span class="kc">False</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_activated</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">activate_model_for_inference</span><span class="p">(</span> + <span class="n">use_vllm</span><span class="o">=</span><span class="n">use_vllm</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">use_vllm</span><span class="p">:</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__vllm_inference</span><span class="p">(</span><span class="n">inputs</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__inference</span><span class="p">(</span><span class="n">inputs</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">release_gpu</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">deactivate_model_for_inference</span><span class="p">(</span><span class="n">use_vllm</span><span class="o">=</span><span class="n">use_vllm</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">res</span></div> + + + +<div class="viewcode-block" id="HFTextRegressionModel.__inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.__inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">inputs</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform generation process of the model.</span> +<span class="sd"> </span> +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> inputs :</span> +<span class="sd"> The **tokenized** sequence used as a prompt for the generation or as model inputs to the model.</span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments. </span> +<span class="sd"> </span> +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> outputs :</span> +<span class="sd"> The generated sequence output </span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_accelerator</span><span class="p">:</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="p">(</span> + <span class="n">input_ids</span><span class="o">=</span><span class="n">inputs</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;gpu&quot;</span><span class="p">:</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ds_engine</span><span class="o">.</span><span class="n">module</span><span class="p">(</span> + <span class="n">input_ids</span><span class="o">=</span><span class="n">inputs</span><span class="p">,</span> + <span class="n">synced_gpus</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;cpu&quot;</span><span class="p">:</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">backend_model</span><span class="p">(</span> + <span class="n">input_ids</span><span class="o">=</span><span class="n">inputs</span><span class="p">,</span> + <span class="n">synced_gpus</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;device </span><span class="se">\&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2"> is not supported&quot;</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;return_input&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;input&quot;</span><span class="p">:</span> <span class="n">inputs</span><span class="p">,</span> <span class="s2">&quot;output&quot;</span><span class="p">:</span> <span class="n">outputs</span><span class="p">}</span> + + <span class="k">return</span> <span class="n">outputs</span></div> + + + +<div class="viewcode-block" id="HFTextRegressionModel.__vllm_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.__vllm_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__vllm_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">inputs</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]],</span> + <span class="n">sampling_params</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="s1">&#39;SamplingParams&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]],</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Perform VLLM inference process of the model.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> inputs : Union[str, List[str]]</span> +<span class="sd"> Prompt(s), string or a list of strings.</span> +<span class="sd"> sampling_params : Optional[SamplingParams], optional</span> +<span class="sd"> vllm SamplingParams object, by default None.</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="s2">&quot;VLLM inference is not supported for text regression model.&quot;</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="HFTextRegressionModel.prepare_inputs_for_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.prepare_inputs_for_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">prepare_inputs_for_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">enable_distributed_inference</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">use_vllm</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="n">Dataset</span><span class="p">,</span> <span class="s1">&#39;ray.data.Dataset&#39;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">use_vllm</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="s2">&quot;VLLM inference is not supported for text regression model.&quot;</span> + <span class="p">)</span> + + <span class="n">inference_inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">dataset</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">enable_distributed_inference</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_ray_available</span><span class="p">():</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s1">&#39;Ray is not available. Please install ray via `pip install -e &quot;.[ray]&quot;`.&#39;</span> + <span class="p">)</span> + + <span class="n">inference_inputs</span><span class="o">.</span><span class="n">sanity_check</span><span class="p">(</span><span class="n">drop_invalid</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">inference_inputs</span> <span class="o">=</span> <span class="n">inference_inputs</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()</span> + <span class="n">inference_inputs</span> <span class="o">=</span> <span class="n">ray</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">from_items</span><span class="p">(</span><span class="n">inference_inputs</span><span class="p">)</span> + <span class="c1"># -&gt; Dict[str, np.ndarray]</span> + <span class="c1"># Example (batch size=2):</span> + <span class="c1"># {&#39;input&#39;: array([&#39;...&#39;,&#39;...&#39;], dtype=object),</span> + <span class="c1"># &#39;output&#39;: array([array([&quot;...&quot;, &quot;...&quot;], dtype=object), array([&#39;...&#39;,&#39;...&#39;], dtype=object)], dtype=object),</span> + <span class="c1"># &#39;input_ids&#39;: array(</span> + <span class="c1"># [</span> + <span class="c1"># array([array([ 27, 91, 882, ..., 128256, 128256, 128256]),</span> + <span class="c1"># array([ 27, 91, 882, ..., 128256, 128256, 128256])],</span> + <span class="c1"># dtype=object),</span> + <span class="c1"># array([array([ 27, 91, 882, ..., 128256, 128256, 128256]),</span> + <span class="c1"># array([ 27, 91, 882, ..., 128256, 128256, 128256])],</span> + <span class="c1"># dtype=object)</span> + <span class="c1"># ], dtype=object)}</span> + + <span class="k">return</span> <span class="n">inference_inputs</span></div> + + + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="HFTextRegressionModel.postprocess_inference_outputs"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.postprocess_inference_outputs">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">postprocess_inference_outputs</span><span class="p">(</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">scores</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">]]],</span> + <span class="p">):</span> + <span class="n">output_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;instances&quot;</span><span class="p">:</span> <span class="p">[]}</span> + <span class="k">if</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;text_to_textlist&quot;</span><span class="p">:</span> + <span class="n">output_dict</span><span class="p">[</span><span class="s2">&quot;type&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;text_to_scored_textlist&quot;</span> + <span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">instance</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()):</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">instance</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Instance </span><span class="si">{</span><span class="n">idx</span><span class="si">}</span><span class="s2"> has less than 2 outputs, skipping.&quot;</span><span class="p">)</span> + <span class="n">output_dict</span><span class="p">[</span><span class="s2">&quot;instances&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> + <span class="p">{</span> + <span class="s2">&quot;input&quot;</span><span class="p">:</span> <span class="n">instance</span><span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">],</span> + <span class="s2">&quot;output&quot;</span><span class="p">:</span> <span class="p">[{</span><span class="s2">&quot;text&quot;</span><span class="p">:</span> <span class="n">text</span><span class="p">}</span> <span class="k">for</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">instance</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">]],</span> + <span class="p">}</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Dataset type </span><span class="si">{</span><span class="n">dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span><span class="si">}</span><span class="s2"> is not supported for reward model inference.&quot;</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">instance_scores</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">scores</span><span class="p">):</span> + <span class="k">for</span> <span class="n">j</span><span class="p">,</span> <span class="n">score</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">instance_scores</span><span class="p">):</span> + <span class="n">output_dict</span><span class="p">[</span><span class="s2">&quot;instances&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">][</span><span class="s2">&quot;output&quot;</span><span class="p">][</span><span class="n">j</span><span class="p">][</span><span class="n">KEY_SCORE</span><span class="p">]</span> <span class="o">=</span> <span class="n">score</span> + + <span class="n">output_dataset_args</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">dataset</span><span class="o">.</span><span class="n">data_args</span><span class="p">)</span> + <span class="n">output_dataset_args</span><span class="o">.</span><span class="n">dataset_path</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">output_dataset_args</span><span class="o">.</span><span class="n">dataset_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">output_dataset_args</span><span class="o">.</span><span class="n">dataset_name</span><span class="si">}</span><span class="s2">_scored&quot;</span> + <span class="n">output_dataset</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="n">output_dataset_args</span><span class="p">)</span> + <span class="n">output_dataset</span> <span class="o">=</span> <span class="n">output_dataset</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">output_dict</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">output_dataset</span></div> + + + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="HFTextRegressionModel.postprocess_distributed_inference_outputs"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.postprocess_distributed_inference_outputs">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">postprocess_distributed_inference_outputs</span><span class="p">(</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">inference_result</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">RewardModelInferenceResultWithInput</span><span class="p">],</span> + <span class="p">):</span> + <span class="n">output_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;text_to_scored_textlist&quot;</span><span class="p">,</span> <span class="s2">&quot;instances&quot;</span><span class="p">:</span> <span class="n">inference_result</span><span class="p">}</span> + <span class="n">output_dataset_args</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">dataset</span><span class="o">.</span><span class="n">data_args</span><span class="p">)</span> + <span class="n">output_dataset_args</span><span class="o">.</span><span class="n">dataset_path</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">output_dataset_args</span><span class="o">.</span><span class="n">dataset_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">output_dataset_args</span><span class="o">.</span><span class="n">dataset_name</span><span class="si">}</span><span class="s2">_scored&quot;</span> + <span class="n">output_dataset</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="n">output_dataset_args</span><span class="p">)</span> + <span class="n">output_dataset</span> <span class="o">=</span> <span class="n">output_dataset</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">output_dict</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">output_dataset</span></div> + + + +<div class="viewcode-block" id="HFTextRegressionModel.save"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.save">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">dir</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform generation process of the model.</span> +<span class="sd"> </span> +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> dir :</span> +<span class="sd"> The directory to save model and tokenizer</span> +<span class="sd"> </span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments. </span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="bp">self</span><span class="o">.</span><span class="n">get_tokenizer</span><span class="p">()</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="nb">dir</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="nb">dir</span><span class="p">)</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/models/interfaces/tunable.html b/_modules/lmflow/models/interfaces/tunable.html new file mode 100644 index 000000000..525fd1a24 --- /dev/null +++ b/_modules/lmflow/models/interfaces/tunable.html @@ -0,0 +1,454 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.models.interfaces.tunable &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/models/interfaces/tunable';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.interfaces.tunable</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.models.interfaces.tunable</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;Tunable class</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">abc</span><span class="w"> </span><span class="kn">import</span> <span class="n">ABC</span> + + +<div class="viewcode-block" id="Tunable"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/interfaces/tunable/index.html#lmflow.models.interfaces.tunable.Tunable">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Tunable</span><span class="p">(</span><span class="n">ABC</span><span class="p">):</span> + <span class="k">pass</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/models/regression_model.html b/_modules/lmflow/models/regression_model.html new file mode 100644 index 000000000..8da269f8f --- /dev/null +++ b/_modules/lmflow/models/regression_model.html @@ -0,0 +1,455 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.models.regression_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/models/regression_model';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.regression_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.models.regression_model</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;General regression model.&quot;&quot;&quot;</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.base_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseModel</span> + + +<div class="viewcode-block" id="RegressionModel"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/regression_model/index.html#lmflow.models.regression_model.RegressionModel">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">RegressionModel</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="k">pass</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/models/text_regression_model.html b/_modules/lmflow/models/text_regression_model.html new file mode 100644 index 000000000..4eb18b844 --- /dev/null +++ b/_modules/lmflow/models/text_regression_model.html @@ -0,0 +1,510 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.models.text_regression_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/models/text_regression_model';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.text_regression_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.models.text_regression_model</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="sd">A model maps &quot;text_only&quot; data to float.</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.regression_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">RegressionModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets.dataset</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> + + +<div class="viewcode-block" id="TextRegressionModel"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/text_regression_model/index.html#lmflow.models.text_regression_model.TextRegressionModel">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">TextRegressionModel</span><span class="p">(</span><span class="n">RegressionModel</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes a TextRegressionModel instance.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> + +<span class="sd"> model_args : </span> +<span class="sd"> Model arguments such as model name, path, revision, etc.</span> + +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> + +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments. </span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes a TextRegressionModel instance.</span> +<span class="sd"> :param model_args: dictionary with model arguments such as model name, path, revision, etc.</span> +<span class="sd"> &quot;&quot;&quot;</span> +<div class="viewcode-block" id="TextRegressionModel.inference_func"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/text_regression_model/index.html#lmflow.models.text_regression_model.TextRegressionModel.inference_func">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">inference_func</span> <span class="o">=</span> <span class="kc">None</span></div> + + + +<div class="viewcode-block" id="TextRegressionModel.register_inference_function"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/text_regression_model/index.html#lmflow.models.text_regression_model.TextRegressionModel.register_inference_function">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">register_inference_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inference_func</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Registers a regression function.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="bp">self</span><span class="o">.</span><span class="n">inference_func</span> <span class="o">=</span> <span class="n">inference_func</span></div> + + + +<div class="viewcode-block" id="TextRegressionModel.inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/text_regression_model/index.html#lmflow.models.text_regression_model.TextRegressionModel.inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">inference</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inputs</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Gets regression results of a given dataset.</span> + +<span class="sd"> :inputs: Dataset object, only accept type &quot;text_only&quot;.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">inference_func</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">inference_func</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">pass</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/models/vision2seq_model.html b/_modules/lmflow/models/vision2seq_model.html new file mode 100644 index 000000000..ccad5e5ae --- /dev/null +++ b/_modules/lmflow/models/vision2seq_model.html @@ -0,0 +1,987 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.models.vision2seq_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/models/vision2seq_model';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.vision2seq_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.models.vision2seq_model</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># TODO update the doc</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">copy</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">time</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.nn</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">nn</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Union</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.nn</span><span class="w"> </span><span class="kn">import</span> <span class="n">CrossEntropyLoss</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">AutoModelForCausalLM</span><span class="p">,</span> + <span class="n">AutoModelForSeq2SeqLM</span><span class="p">,</span> + <span class="n">AutoModel</span><span class="p">,</span> + <span class="n">Blip2ForConditionalGeneration</span><span class="p">,</span> + <span class="n">Blip2Config</span><span class="p">,</span> + <span class="n">Blip2QFormerModel</span><span class="p">,</span> + <span class="n">Blip2VisionModel</span><span class="p">,</span> + <span class="n">Blip2PreTrainedModel</span><span class="p">,</span> + <span class="n">PreTrainedModel</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.modeling_outputs</span><span class="w"> </span><span class="kn">import</span> <span class="n">CausalLMOutputWithPast</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.base_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.vision_encoder</span><span class="w"> </span><span class="kn">import</span> <span class="n">build_vision_tower</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.versioning</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_package_version_at_least</span> + +<span class="k">if</span> <span class="n">is_package_version_at_least</span><span class="p">(</span><span class="s1">&#39;transformers&#39;</span><span class="p">,</span> <span class="s1">&#39;4.46.0&#39;</span><span class="p">):</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">transformers.integrations.deepspeed</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_deepspeed_zero3_enabled</span> +<span class="k">else</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">transformers.deepspeed</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_deepspeed_zero3_enabled</span> + + +<div class="viewcode-block" id="CustomAutoVision2SeqModel"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">CustomAutoVision2SeqModel</span><span class="p">(</span><span class="n">Blip2ForConditionalGeneration</span><span class="p">,</span> <span class="n">BaseModel</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> + <span class="n">config</span><span class="p">:</span> <span class="n">Blip2Config</span><span class="p">,</span> + <span class="n">image_encoder_name_or_path</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">qformer_name_or_path</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">language_model_name_or_path</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">low_resource</span><span class="o">=</span><span class="kc">False</span><span class="p">,):</span> +<span class="w"> </span><span class="sd">&#39;&#39;&#39;</span> +<span class="sd"> TODO update the docs</span> +<span class="sd"> Args:</span> +<span class="sd"> config:</span> +<span class="sd"> # the below varaible are used to overwrite the model in config</span> +<span class="sd"> image_encoder_name_or_path:</span> +<span class="sd"> qformer_name_or_path:</span> +<span class="sd"> language_model_name_or_path:</span> +<span class="sd"> Returns:</span> +<span class="sd"> &#39;&#39;&#39;</span> + <span class="nb">super</span><span class="p">(</span><span class="n">Blip2PreTrainedModel</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">config</span><span class="p">)</span> +<div class="viewcode-block" id="CustomAutoVision2SeqModel.custom_vision_model"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.custom_vision_model">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">custom_vision_model</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span> + <span class="n">config</span><span class="p">,</span> <span class="s2">&quot;custom_vision_model&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span></div> + +<div class="viewcode-block" id="CustomAutoVision2SeqModel.with_qformer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.with_qformer">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">with_qformer</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">config</span><span class="p">,</span> <span class="s2">&quot;with_qformer&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span></div> + + <span class="c1"># vision model</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">custom_vision_model</span><span class="p">:</span> + <span class="c1"># custom vision model means the vit model customized from llava.</span> + <span class="c1"># vision_model_args = getattr(config, &quot;vision_model_args&quot;, dict())</span> + <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span> <span class="o">=</span> <span class="n">build_vision_tower</span><span class="p">(</span><span class="n">config</span><span class="p">)</span> + <span class="n">config</span><span class="o">.</span><span class="n">vision_config</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span><span class="o">.</span><span class="n">config</span> + <span class="bp">self</span><span class="o">.</span><span class="n">image_processor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span><span class="o">.</span><span class="n">image_processor</span> + <span class="k">elif</span> <span class="n">image_encoder_name_or_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="c1"># use the model from transformers</span> + <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span> <span class="o">=</span> <span class="n">AutoModel</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">image_encoder_name_or_path</span><span class="p">)</span> + <span class="n">config</span><span class="o">.</span><span class="n">vision_config</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span><span class="o">.</span><span class="n">config</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># the default vit in Blip2</span> + <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span> <span class="o">=</span> <span class="n">Blip2VisionModel</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">vision_config</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">with_qformer</span><span class="p">:</span> + <span class="c1"># check if with qformer, the blip series model use qformer</span> + <span class="c1"># and the llava based models don&#39;t use qformer.</span> + <span class="k">if</span> <span class="n">qformer_name_or_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">query_tokens</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Parameter</span><span class="p">(</span> + <span class="n">torch</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">config</span><span class="o">.</span><span class="n">num_query_tokens</span><span class="p">,</span> + <span class="n">config</span><span class="o">.</span><span class="n">qformer_config</span><span class="o">.</span><span class="n">hidden_size</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">qformer</span> <span class="o">=</span> <span class="n">AutoModel</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">qformer_name_or_path</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">query_tokens</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Parameter</span><span class="p">(</span> + <span class="n">torch</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">config</span><span class="o">.</span><span class="n">num_query_tokens</span><span class="p">,</span> + <span class="n">config</span><span class="o">.</span><span class="n">qformer_config</span><span class="o">.</span><span class="n">hidden_size</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">qformer</span> <span class="o">=</span> <span class="n">Blip2QFormerModel</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">qformer_config</span><span class="p">)</span> + <span class="n">kwargs</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">()</span> + <span class="k">if</span> <span class="n">language_model_name_or_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="n">low_resource</span><span class="p">:</span> + <span class="n">kwargs</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">torch_dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float16</span><span class="p">,</span> + <span class="n">load_in_8bit</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">device_map</span><span class="o">=</span><span class="s2">&quot;auto&quot;</span><span class="p">,</span> + <span class="n">low_cpu_mem_usage</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_deepspeed_zero3_enabled</span><span class="p">:</span> + <span class="n">kwargs</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">device_map</span><span class="o">=</span><span class="s2">&quot;auto&quot;</span><span class="p">,</span> + <span class="n">torch_dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float16</span><span class="p">)</span> + <span class="n">language_model</span> <span class="o">=</span> <span class="n">AutoModelForCausalLM</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">language_model_name_or_path</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="n">config</span><span class="o">.</span><span class="n">text_config</span> <span class="o">=</span> <span class="n">language_model</span><span class="o">.</span><span class="n">config</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">config</span><span class="o">.</span><span class="n">use_decoder_only_language_model</span><span class="p">:</span> + <span class="n">language_model</span> <span class="o">=</span> <span class="n">AutoModelForCausalLM</span><span class="o">.</span><span class="n">from_config</span><span class="p">(</span> + <span class="n">config</span><span class="o">.</span><span class="n">text_config</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">language_model</span> <span class="o">=</span> <span class="n">AutoModelForSeq2SeqLM</span><span class="o">.</span><span class="n">from_config</span><span class="p">(</span> + <span class="n">config</span><span class="o">.</span><span class="n">text_config</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="c1"># Update _tied_weights_keys using the base model used.</span> + <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">language_model</span><span class="p">,</span> <span class="s2">&quot;_tied_weights_keys&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_tied_weights_keys</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">&quot;language_model.</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">language_model</span><span class="o">.</span><span class="n">_tied_weights_keys</span><span class="p">]</span> + +<div class="viewcode-block" id="CustomAutoVision2SeqModel.language_model"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.language_model">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span> <span class="o">=</span> <span class="n">language_model</span></div> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">with_qformer</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">language_projection</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">qformer</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">hidden_size</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">hidden_size</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">language_projection</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span><span class="o">.</span><span class="n">hidden_size</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">hidden_size</span><span class="p">)</span> + <span class="k">if</span> <span class="n">image_encoder_name_or_path</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> \ + <span class="n">language_model_name_or_path</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">post_init</span><span class="p">()</span> + <span class="c1"># for deepspeed</span> +<div class="viewcode-block" id="CustomAutoVision2SeqModel.hidden_size"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.hidden_size">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">hidden_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">hidden_size</span></div> + + <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">hidden_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">hidden_size</span> + +<div class="viewcode-block" id="CustomAutoVision2SeqModel.get_backend_model"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.get_backend_model">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_backend_model</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span></div> + + +<div class="viewcode-block" id="CustomAutoVision2SeqModel.vision_model_from_pretrained"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.vision_model_from_pretrained">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">vision_model_from_pretrained</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pretrained_path</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">pretrained_path</span><span class="p">,</span> + <span class="n">config</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">vision_config</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="CustomAutoVision2SeqModel.qformer_from_pretrained"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.qformer_from_pretrained">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">qformer_from_pretrained</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pretrained_path</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">qformer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">qformer</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">pretrained_path</span><span class="p">,</span> + <span class="n">config</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">qformer_config</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="CustomAutoVision2SeqModel.language_model_from_pretrained"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.language_model_from_pretrained">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">language_model_from_pretrained</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> + <span class="n">pretrained_path</span><span class="p">,</span> + <span class="n">low_resource</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">use_prompt_cache</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> + <span class="c1"># TODO remove the low resource related loading in the future</span> + <span class="bp">self</span><span class="o">.</span><span class="n">use_prompt_cache</span> <span class="o">=</span> <span class="n">use_prompt_cache</span> + <span class="k">if</span> <span class="n">low_resource</span><span class="p">:</span> + <span class="n">kwargs</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">torch_dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float16</span><span class="p">,</span> + <span class="n">load_in_8bit</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">device_map</span><span class="o">=</span><span class="s2">&quot;auto&quot;</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{}</span> + <span class="n">past_model_dim</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span><span class="o">.</span><span class="n">model_dim</span> + <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span> <span class="o">=</span> <span class="n">AutoModelForCausalLM</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">pretrained_path</span><span class="p">,</span> + <span class="n">config</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">text_config</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">text_config</span><span class="o">.</span><span class="n">hidden_size</span> <span class="o">!=</span> <span class="n">past_model_dim</span><span class="p">:</span> + <span class="c1"># should update the language projection layer</span> + <span class="n">in_channels</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">language_projection</span><span class="o">.</span><span class="n">in_features</span> + <span class="bp">self</span><span class="o">.</span><span class="n">language_projection</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="n">in_channels</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">text_config</span><span class="o">.</span><span class="n">hidden_size</span><span class="p">,</span> + <span class="n">bias</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="CustomAutoVision2SeqModel.vision_feature_select"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.vision_feature_select">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">vision_feature_select</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">image_forward_outs</span><span class="p">):</span> + <span class="n">image_features</span> <span class="o">=</span> <span class="n">image_forward_outs</span><span class="o">.</span><span class="n">hidden_states</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">vision_feature_select_layer</span><span class="p">]</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">select_vision_feature_type</span> <span class="o">==</span> <span class="s2">&quot;patch&quot;</span><span class="p">:</span> + <span class="n">image_features</span> <span class="o">=</span> <span class="n">image_features</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">:]</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">select_vision_feature_type</span> <span class="o">==</span> <span class="s2">&quot;cls_patch&quot;</span><span class="p">:</span> + <span class="n">image_features</span> <span class="o">=</span> <span class="n">image_features</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;Unexpected select feature: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">select_feature</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="k">return</span> <span class="n">image_features</span></div> + + +<div class="viewcode-block" id="CustomAutoVision2SeqModel.register_prompt_cache"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.register_prompt_cache">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">register_prompt_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prompt_ids</span><span class="p">,</span> <span class="n">prompt_keys_values</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Udpate the prompt id and embedding for reuse in the future</span> + +<span class="sd"> Args:</span> +<span class="sd"> prompt_ids (torch.LongTensor): The id of the prompt.</span> +<span class="sd"> prompt_keys_values (torch.FloatTensor): The embedding of the prompt.</span> + +<span class="sd"> Returns:</span> +<span class="sd"> None</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="bp">self</span><span class="o">.</span><span class="n">prompt_ids</span> <span class="o">=</span> <span class="n">prompt_ids</span> + <span class="bp">self</span><span class="o">.</span><span class="n">prompt_keys_values</span> <span class="o">=</span> <span class="n">prompt_keys_values</span> + <span class="bp">self</span><span class="o">.</span><span class="n">with_prompt_cache</span> <span class="o">=</span> <span class="kc">True</span></div> + + +<div class="viewcode-block" id="CustomAutoVision2SeqModel.save_prompt_cache"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.save_prompt_cache">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">save_prompt_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Save prompt embedding and id.</span> + +<span class="sd"> Args:</span> +<span class="sd"> path: The path to save the prompt embedding and id.</span> + +<span class="sd"> Returns:</span> +<span class="sd"> None</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span> + <span class="nb">dict</span><span class="p">(</span> + <span class="n">prompt_ids</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">prompt_ids</span><span class="p">,</span> + <span class="n">prompt_keys_values</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">prompt_keys_values</span> + <span class="p">),</span> + <span class="n">path</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="CustomAutoVision2SeqModel.load_prompt_cache"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.load_prompt_cache">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">load_prompt_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Load prompt embedding and id.</span> +<span class="sd"> Args:</span> +<span class="sd"> path: The path to load the prompt embedding and id.</span> + +<span class="sd"> Returns:</span> +<span class="sd"> None</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">prompt_cache</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">register_prompt_cache</span><span class="p">(</span><span class="n">prompt_cache</span><span class="p">[</span><span class="s2">&quot;prompt_ids&quot;</span><span class="p">],</span> + <span class="n">prompt_cache</span><span class="p">[</span><span class="s2">&quot;prompt_keys_values&quot;</span><span class="p">])</span></div> + + +<div class="viewcode-block" id="CustomAutoVision2SeqModel.get_tokenizer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.get_tokenizer">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_tokenizer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span></div> + + +<div class="viewcode-block" id="CustomAutoVision2SeqModel.forward"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.forward">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">input_ids</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">pixel_values</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">images</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">attention_mask</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">past_key_values</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">inputs_embeds</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">labels</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">use_cache</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">output_attentions</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">output_hidden_states</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">return_dict</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">image_token_indexes</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">],</span> + <span class="n">one_sample_multiple_images</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">CausalLMOutputWithPast</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">pixel_values</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">images</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">pixel_values</span> <span class="o">=</span> <span class="n">images</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">one_sample_multiple_images</span><span class="p">:</span> + <span class="n">batch_size</span> <span class="o">=</span> <span class="n">pixel_values</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">batch_size</span> <span class="o">=</span> <span class="mi">1</span> + <span class="n">output_attentions</span> <span class="o">=</span> <span class="n">output_attentions</span> <span class="k">if</span> <span class="n">output_attentions</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">output_attentions</span> + <span class="n">output_hidden_states</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">output_hidden_states</span> <span class="k">if</span> <span class="n">output_hidden_states</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">output_hidden_states</span> + <span class="p">)</span> + <span class="n">return_dict</span> <span class="o">=</span> <span class="n">return_dict</span> <span class="k">if</span> <span class="n">return_dict</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">use_return_dict</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">custom_vision_model</span><span class="p">:</span> + <span class="c1"># do the processing as blip2 and mini gpt-4;</span> + <span class="k">if</span> <span class="n">past_key_values</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">input_ids</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> + <span class="c1"># no need to recompute the key values</span> + <span class="n">attention_mask</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span> + <span class="n">attention_mask</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> + <span class="n">past_key_values</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">),</span> + <span class="n">dtype</span><span class="o">=</span><span class="n">attention_mask</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span> + <span class="n">device</span><span class="o">=</span><span class="n">attention_mask</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">image_embeds</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span><span class="p">(</span> + <span class="n">pixel_values</span><span class="p">,</span> <span class="n">return_dict</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">last_hidden_state</span> + <span class="n">image_attention_mask</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span> + <span class="n">image_embeds</span><span class="o">.</span><span class="n">size</span><span class="p">()[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> + <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">long</span><span class="p">,</span> + <span class="n">device</span><span class="o">=</span><span class="n">image_embeds</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">with_qformer</span><span class="p">:</span> + <span class="n">query_tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_tokens</span><span class="o">.</span><span class="n">expand</span><span class="p">(</span> + <span class="n">image_embeds</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> + <span class="n">query_outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">qformer</span><span class="p">(</span> + <span class="n">query_embeds</span><span class="o">=</span><span class="n">query_tokens</span><span class="p">,</span> + <span class="n">encoder_hidden_states</span><span class="o">=</span><span class="n">image_embeds</span><span class="p">,</span> + <span class="n">encoder_attention_mask</span><span class="o">=</span><span class="n">image_attention_mask</span><span class="p">,</span> + <span class="n">return_dict</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">query_outputs</span> <span class="o">=</span> <span class="n">image_embeds</span> + <span class="n">query_output</span> <span class="o">=</span> <span class="n">query_outputs</span><span class="o">.</span><span class="n">last_hidden_state</span> + <span class="n">language_model_inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">language_projection</span><span class="p">(</span><span class="n">query_output</span><span class="p">)</span> + <span class="n">inputs_embeds</span><span class="p">,</span> <span class="n">attention_mask</span> <span class="o">=</span> \ + <span class="bp">self</span><span class="o">.</span><span class="n">processor_image_token_in_minigpt4</span><span class="p">(</span> + <span class="n">input_ids</span><span class="p">,</span> + <span class="n">language_model_inputs</span><span class="p">,</span> + <span class="n">attention_mask</span><span class="p">,</span> + <span class="n">image_token_indexes</span><span class="p">,</span> + <span class="n">pixel_values</span><span class="p">,</span> + <span class="n">batch_size</span><span class="p">)</span> + <span class="n">input_ids</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># do the processing in the vision model</span> + <span class="c1"># language is the causallm model.</span> + <span class="c1"># so use language model.model to do the embed_tokens</span> + <span class="n">input_ids</span><span class="p">,</span> <span class="n">attention_mask</span><span class="p">,</span> <span class="n">past_key_values</span><span class="p">,</span> <span class="n">inputs_embeds</span><span class="p">,</span> <span class="n">labels</span> <span class="o">=</span> \ + <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span><span class="o">.</span><span class="n">prepare_inputs_labels_for_multimodal</span><span class="p">(</span> + <span class="n">input_ids</span><span class="p">,</span> <span class="n">attention_mask</span><span class="p">,</span> + <span class="n">past_key_values</span><span class="p">,</span> <span class="n">labels</span><span class="p">,</span> + <span class="n">pixel_values</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">language_projection</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span><span class="o">.</span><span class="n">model</span><span class="p">)</span> + <span class="c1"># decoder outputs consists of (dec_features, layer_state, dec_hidden, dec_attn)</span> + <span class="c1"># TODO check how to generate the labels with image embeddings</span> + <span class="c1"># print(input_ids, attention_mask)</span> + <span class="c1"># if inputs_embeds is not None:</span> + <span class="c1"># print(&quot;input_embeds&quot;, inputs_embeds.shape)</span> + <span class="c1"># attention_mask.shape, inputs_embeds.shape)</span> + <span class="c1"># TODO remove this code by fixing the ddp training issue</span> + <span class="n">inputs_embeds</span> <span class="o">=</span> <span class="n">inputs_embeds</span><span class="o">.</span><span class="n">to</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span><span class="o">.</span><span class="n">lm_head</span><span class="o">.</span><span class="n">weight</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span><span class="p">(</span> + <span class="n">input_ids</span><span class="o">=</span><span class="n">input_ids</span><span class="p">,</span> + <span class="n">attention_mask</span><span class="o">=</span><span class="n">attention_mask</span><span class="p">,</span> + <span class="n">past_key_values</span><span class="o">=</span><span class="n">past_key_values</span><span class="p">,</span> + <span class="n">inputs_embeds</span><span class="o">=</span><span class="n">inputs_embeds</span><span class="p">,</span> + <span class="n">use_cache</span><span class="o">=</span><span class="n">use_cache</span><span class="p">,</span> + <span class="n">output_attentions</span><span class="o">=</span><span class="n">output_attentions</span><span class="p">,</span> + <span class="n">output_hidden_states</span><span class="o">=</span><span class="n">output_hidden_states</span><span class="p">,</span> + <span class="n">return_dict</span><span class="o">=</span><span class="n">return_dict</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">outputs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">shift_logits</span> <span class="o">=</span> <span class="n">logits</span><span class="p">[</span><span class="o">...</span><span class="p">,</span> <span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="p">:]</span><span class="o">.</span><span class="n">contiguous</span><span class="p">()</span> + <span class="n">shift_labels</span> <span class="o">=</span> <span class="n">labels</span><span class="p">[</span><span class="o">...</span><span class="p">,</span> <span class="mi">1</span><span class="p">:]</span><span class="o">.</span><span class="n">contiguous</span><span class="p">()</span> + <span class="c1"># Flatten the tokens</span> + <span class="n">loss_fct</span> <span class="o">=</span> <span class="n">CrossEntropyLoss</span><span class="p">()</span> + <span class="n">shift_logits</span> <span class="o">=</span> <span class="n">shift_logits</span><span class="o">.</span><span class="n">view</span><span class="p">(</span> + <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">text_config</span><span class="o">.</span><span class="n">vocab_size</span><span class="p">)</span> + <span class="n">shift_labels</span> <span class="o">=</span> <span class="n">shift_labels</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> + <span class="c1"># Enable model/pipeline parallelism</span> + <span class="n">shift_labels</span> <span class="o">=</span> <span class="n">shift_labels</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">shift_logits</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">loss_fct</span><span class="p">(</span><span class="n">shift_logits</span><span class="p">,</span> <span class="n">shift_labels</span><span class="p">)</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">return_dict</span><span class="p">:</span> + <span class="n">output</span> <span class="o">=</span> <span class="p">(</span><span class="n">shift_logits</span><span class="p">,)</span> <span class="o">+</span> <span class="n">outputs</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> + <span class="k">return</span> <span class="p">((</span><span class="n">loss</span><span class="p">,)</span> <span class="o">+</span> <span class="n">output</span><span class="p">)</span> <span class="k">if</span> <span class="n">loss</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">output</span> + + <span class="k">return</span> <span class="n">CausalLMOutputWithPast</span><span class="p">(</span> + <span class="n">loss</span><span class="o">=</span><span class="n">loss</span><span class="p">,</span> + <span class="n">logits</span><span class="o">=</span><span class="n">logits</span><span class="p">,</span> + <span class="n">past_key_values</span><span class="o">=</span><span class="n">outputs</span><span class="o">.</span><span class="n">past_key_values</span><span class="p">,</span> + <span class="n">hidden_states</span><span class="o">=</span><span class="n">outputs</span><span class="o">.</span><span class="n">hidden_states</span><span class="p">,</span> + <span class="n">attentions</span><span class="o">=</span><span class="n">outputs</span><span class="o">.</span><span class="n">attentions</span><span class="p">,</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="CustomAutoVision2SeqModel.processor_image_token_in_minigpt4"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.processor_image_token_in_minigpt4">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">processor_image_token_in_minigpt4</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> + <span class="n">input_ids</span><span class="p">,</span> + <span class="n">language_model_inputs</span><span class="p">,</span> + <span class="n">attention_mask</span><span class="p">,</span> + <span class="n">image_token_indexes</span><span class="p">,</span> + <span class="n">pixel_values</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span> + <span class="n">language_attention_mask</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span> + <span class="n">language_model_inputs</span><span class="o">.</span><span class="n">size</span><span class="p">()[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> + <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">long</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">language_model_inputs</span><span class="o">.</span><span class="n">device</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">input_ids</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">input_ids</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span><span class="p">([[</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">text_config</span><span class="o">.</span><span class="n">bos_token_id</span><span class="p">]])</span> + <span class="o">.</span><span class="n">repeat</span><span class="p">(</span><span class="n">batch_size</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> + <span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">language_model_inputs</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">attention_mask</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">attention_mask</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">input_ids</span><span class="p">)</span> + <span class="n">attention_mask</span> <span class="o">=</span> <span class="n">attention_mask</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">language_attention_mask</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + + <span class="c1"># concatenate query embeddings with prompt embeddings</span> + <span class="n">inputs_embeds</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_input_embeddings</span><span class="p">()(</span><span class="n">input_ids</span><span class="p">)</span> + <span class="n">inputs_embeds</span> <span class="o">=</span> <span class="n">inputs_embeds</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="n">language_model_inputs</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="c1"># concatenate the text embeddings with image embeddings</span> + <span class="n">inputs_embeds_with_images</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">attention_mask_with_images</span> <span class="o">=</span> <span class="p">[]</span> + <span class="c1"># currently we only support with one image</span> + <span class="n">start_index</span><span class="p">,</span> <span class="n">end_index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> + <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">image_token_indexes</span><span class="p">)</span> <span class="o">==</span> <span class="n">pixel_values</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="c1"># token format: (# text, # image)xN, # text</span> + + <span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">image_token_index</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">image_token_indexes</span><span class="p">):</span> + <span class="n">end_index</span> <span class="o">+=</span> <span class="n">image_token_index</span> + <span class="n">inputs_embeds_with_images</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> + <span class="n">inputs_embeds</span><span class="p">[:,</span> <span class="n">start_index</span><span class="p">:</span><span class="n">end_index</span><span class="p">])</span> + <span class="n">inputs_embeds_with_images</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">language_model_inputs</span><span class="p">[</span><span class="n">idx</span><span class="p">][</span><span class="kc">None</span><span class="p">])</span> + <span class="n">attention_mask_with_images</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> + <span class="n">attention_mask</span><span class="p">[:,</span> <span class="n">start_index</span><span class="p">:</span><span class="n">end_index</span><span class="p">])</span> + <span class="n">attention_mask_with_images</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> + <span class="n">language_attention_mask</span><span class="p">[</span><span class="n">idx</span><span class="p">][</span><span class="kc">None</span><span class="p">])</span> + <span class="n">start_index</span> <span class="o">=</span> <span class="n">end_index</span> + + <span class="n">inputs_embeds_with_images</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> + <span class="n">inputs_embeds</span><span class="p">[:,</span> <span class="n">image_token_indexes</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]:])</span> + <span class="n">inputs_embeds</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">(</span> + <span class="n">inputs_embeds_with_images</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + <span class="n">attention_mask_with_images</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> + <span class="n">attention_mask</span><span class="p">[:,</span> <span class="n">image_token_indexes</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]:])</span> + <span class="n">attention_mask</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">(</span><span class="n">attention_mask_with_images</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + <span class="c1"># comebine the embeds</span> + <span class="n">inputs_embeds</span> <span class="o">=</span> <span class="n">inputs_embeds</span><span class="o">.</span><span class="n">to</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span><span class="o">.</span><span class="n">lm_head</span><span class="o">.</span><span class="n">weight</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span> + <span class="n">attention_mask</span> <span class="o">=</span> <span class="n">attention_mask</span><span class="o">.</span><span class="n">to</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span><span class="o">.</span><span class="n">lm_head</span><span class="o">.</span><span class="n">weight</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span> + <span class="k">return</span> <span class="n">inputs_embeds</span><span class="p">,</span> <span class="n">attention_mask</span></div> + + + <span class="nd">@torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">()</span> +<div class="viewcode-block" id="CustomAutoVision2SeqModel.generate"> +<a class="viewcode-back" href="../../../autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.generate">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">generate</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">pixel_values</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">,</span> + <span class="n">input_ids</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">attention_mask</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">image_token_indexes</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">],</span> + <span class="n">one_sample_multiple_images</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">images</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">generate_kwargs</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Overrides `generate` function to be able to use the model as a conditional generator.</span> + +<span class="sd"> Args:</span> +<span class="sd"> pixel_values (`torch.FloatTensor` of shape (batch_size, num_channels, height, width)):</span> +<span class="sd"> Input images to be processed.</span> +<span class="sd"> input_ids (`torch.LongTensor` of shape (batch_size, sequence_length), *optional*):</span> +<span class="sd"> The sequence used as a prompt for the generation.</span> +<span class="sd"> attention_mask (`torch.LongTensor` of shape (batch_size, sequence_length), *optional*):</span> +<span class="sd"> Mask to avoid performing attention on padding token indices</span> +<span class="sd"> image_token_indexes (bool, *optional*):</span> +<span class="sd"> The index for inserting the image tokens.</span> +<span class="sd"> one_sample_multiple_images: (bool, *optional*):</span> +<span class="sd"> The flag for inference that the input batch size is 1 and contain multiple images.</span> + +<span class="sd"> Returns:</span> +<span class="sd"> captions (list): A list of strings of length batch_size * num_captions.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="n">pixel_values</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">images</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">pixel_values</span> <span class="o">=</span> <span class="n">images</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">one_sample_multiple_images</span><span class="p">:</span> + <span class="n">batch_size</span> <span class="o">=</span> <span class="n">pixel_values</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">batch_size</span> <span class="o">=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">custom_vision_model</span><span class="p">:</span> + <span class="c1"># do the processing as blip2 and mini gpt-4;</span> + <span class="n">image_embeds</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span><span class="p">(</span> + <span class="n">pixel_values</span><span class="p">,</span> <span class="n">return_dict</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">last_hidden_state</span> + <span class="n">image_attention_mask</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span> + <span class="n">image_embeds</span><span class="o">.</span><span class="n">size</span><span class="p">()[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> + <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">long</span><span class="p">,</span> + <span class="n">device</span><span class="o">=</span><span class="n">image_embeds</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">with_qformer</span><span class="p">:</span> + <span class="n">query_tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_tokens</span><span class="o">.</span><span class="n">expand</span><span class="p">(</span> + <span class="n">image_embeds</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> + <span class="n">query_outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">qformer</span><span class="p">(</span> + <span class="n">query_embeds</span><span class="o">=</span><span class="n">query_tokens</span><span class="p">,</span> + <span class="n">encoder_hidden_states</span><span class="o">=</span><span class="n">image_embeds</span><span class="p">,</span> + <span class="n">encoder_attention_mask</span><span class="o">=</span><span class="n">image_attention_mask</span><span class="p">,</span> + <span class="n">return_dict</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">query_outputs</span> <span class="o">=</span> <span class="n">image_embeds</span> + <span class="n">query_output</span> <span class="o">=</span> <span class="n">query_outputs</span><span class="o">.</span><span class="n">last_hidden_state</span> + <span class="n">language_model_inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">language_projection</span><span class="p">(</span><span class="n">query_output</span><span class="p">)</span> + <span class="n">inputs_embeds</span><span class="p">,</span> <span class="n">attention_mask</span> <span class="o">=</span> \ + <span class="bp">self</span><span class="o">.</span><span class="n">processor_image_token_in_minigpt4</span><span class="p">(</span> + <span class="n">input_ids</span><span class="p">,</span> + <span class="n">language_model_inputs</span><span class="p">,</span> + <span class="n">attention_mask</span><span class="p">,</span> + <span class="n">image_token_indexes</span><span class="p">,</span> + <span class="n">pixel_values</span><span class="p">,</span> + <span class="n">batch_size</span><span class="p">)</span> + <span class="n">input_ids</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># do the processing in the vision model</span> + <span class="c1"># language is the causallm model.</span> + <span class="c1"># so use language model.model to do the embed_tokens</span> + <span class="k">if</span> <span class="n">pixel_values</span><span class="o">.</span><span class="n">dim</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span> + <span class="c1"># the batch dim is missing;</span> + <span class="n">pixel_values</span> <span class="o">=</span> <span class="n">pixel_values</span><span class="p">[</span><span class="kc">None</span><span class="p">]</span> + <span class="n">input_ids</span><span class="p">,</span> <span class="n">attention_mask</span><span class="p">,</span> <span class="n">past_key_values</span><span class="p">,</span> <span class="n">inputs_embeds</span><span class="p">,</span> <span class="n">labels</span> <span class="o">=</span> \ + <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span><span class="o">.</span><span class="n">prepare_inputs_labels_for_multimodal</span><span class="p">(</span> + <span class="n">input_ids</span><span class="p">,</span> <span class="n">attention_mask</span><span class="p">,</span> + <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">pixel_values</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">language_projection</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span><span class="o">.</span><span class="n">model</span><span class="p">)</span> + <span class="c1"># convert the dtype.</span> + <span class="c1"># FIXME check when need to do this</span> + <span class="n">inputs_embeds</span> <span class="o">=</span> <span class="n">inputs_embeds</span><span class="o">.</span><span class="n">to</span><span class="p">(</span> + <span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">language_model</span><span class="o">.</span><span class="n">lm_head</span><span class="o">.</span><span class="n">weight</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="n">inputs_embeds</span> <span class="o">=</span> <span class="n">inputs_embeds</span><span class="o">.</span><span class="n">to</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span><span class="o">.</span><span class="n">lm_head</span><span class="o">.</span><span class="n">weight</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">language_model</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span> + <span class="n">inputs_embeds</span><span class="o">=</span><span class="n">inputs_embeds</span><span class="p">,</span> + <span class="n">attention_mask</span><span class="o">=</span><span class="n">attention_mask</span><span class="p">,</span> + <span class="o">**</span><span class="n">generate_kwargs</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">outputs</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/models/vision_encoder/clip_encoder.html b/_modules/lmflow/models/vision_encoder/clip_encoder.html new file mode 100644 index 000000000..13ba142df --- /dev/null +++ b/_modules/lmflow/models/vision_encoder/clip_encoder.html @@ -0,0 +1,719 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.models.vision_encoder.clip_encoder &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/models/vision_encoder/clip_encoder';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.vision_encoder.clip_encoder</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.models.vision_encoder.clip_encoder</h1><div class="highlight"><pre> +<span></span><span class="kn">from</span><span class="w"> </span><span class="nn">webbrowser</span><span class="w"> </span><span class="kn">import</span> <span class="n">get</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.nn</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">nn</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">CLIPVisionModel</span><span class="p">,</span> <span class="n">CLIPImageProcessor</span><span class="p">,</span> <span class="n">CLIPVisionConfig</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span><span class="n">IGNORE_INDEX</span><span class="p">,</span> + <span class="n">IMAGE_TOKEN_INDEX</span><span class="p">,</span> + <span class="n">DEFAULT_IMAGE_PATCH_TOKEN</span><span class="p">,</span> + <span class="n">DEFAULT_IM_START_TOKEN</span><span class="p">,</span> + <span class="n">DEFAULT_IM_END_TOKEN</span><span class="p">)</span> + +<div class="viewcode-block" id="build_vision_tower"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.build_vision_tower">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">build_vision_tower</span><span class="p">(</span><span class="n">vision_tower_cfg</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="n">vision_tower</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">vision_tower_cfg</span><span class="p">,</span> <span class="s1">&#39;image_encoder_name_or_path&#39;</span><span class="p">,</span> <span class="s2">&quot;openai/clip-vit-large-patch14&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="n">vision_tower</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;openai&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">vision_tower</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;laion&quot;</span><span class="p">):</span> + <span class="k">return</span> <span class="n">CLIPVisionTower</span><span class="p">(</span><span class="n">vision_tower</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="n">vision_tower_cfg</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;Unknown vision tower: </span><span class="si">{</span><span class="n">vision_tower</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">)</span></div> + + +<span class="c1"># FIXME check if can directly use the BlipVisionEncoder</span> +<div class="viewcode-block" id="CLIPVisionTower"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">CLIPVisionTower</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">vision_tower</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">delay_load</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span> + +<div class="viewcode-block" id="CLIPVisionTower.is_loaded"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.is_loaded">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">is_loaded</span> <span class="o">=</span> <span class="kc">False</span></div> + + +<div class="viewcode-block" id="CLIPVisionTower.vision_tower_name"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.vision_tower_name">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">vision_tower_name</span> <span class="o">=</span> <span class="n">vision_tower</span></div> + +<div class="viewcode-block" id="CLIPVisionTower.select_layer"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.select_layer">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">select_layer</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">vision_select_layer</span></div> + +<div class="viewcode-block" id="CLIPVisionTower.select_feature"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.select_feature">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">select_feature</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="s1">&#39;vision_select_feature&#39;</span><span class="p">,</span> <span class="s1">&#39;patch&#39;</span><span class="p">)</span></div> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">delay_load</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">load_model</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">cfg_only</span> <span class="o">=</span> <span class="n">CLIPVisionConfig</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">vision_tower_name</span><span class="p">)</span> + +<div class="viewcode-block" id="CLIPVisionTower.load_model"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.load_model">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">load_model</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">image_processor</span> <span class="o">=</span> <span class="n">CLIPImageProcessor</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">vision_tower_name</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">vision_tower</span> <span class="o">=</span> <span class="n">CLIPVisionModel</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">vision_tower_name</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">vision_tower</span><span class="o">.</span><span class="n">requires_grad_</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">is_loaded</span> <span class="o">=</span> <span class="kc">True</span></div> + + +<div class="viewcode-block" id="CLIPVisionTower.encode_images"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.encode_images">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">encode_images</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">images</span><span class="p">,</span> <span class="n">language_projection</span><span class="p">):</span> + <span class="n">image_features</span> <span class="o">=</span> <span class="bp">self</span><span class="p">(</span><span class="n">images</span><span class="p">)</span> + <span class="c1"># FIXME the language projection is register in the CustomAutoVision2SeqModel</span> + <span class="c1"># check how to move this code to improve the readability</span> + <span class="k">if</span> <span class="n">language_projection</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">image_features</span> <span class="o">=</span> <span class="n">language_projection</span><span class="p">(</span><span class="n">image_features</span><span class="p">)</span> + <span class="k">return</span> <span class="n">image_features</span></div> + + +<div class="viewcode-block" id="CLIPVisionTower.feature_select"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.feature_select">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">feature_select</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">image_forward_outs</span><span class="p">):</span> + <span class="n">image_features</span> <span class="o">=</span> <span class="n">image_forward_outs</span><span class="o">.</span><span class="n">hidden_states</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">select_layer</span><span class="p">]</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">select_feature</span> <span class="o">==</span> <span class="s1">&#39;patch&#39;</span><span class="p">:</span> + <span class="n">image_features</span> <span class="o">=</span> <span class="n">image_features</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">:]</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">select_feature</span> <span class="o">==</span> <span class="s1">&#39;cls_patch&#39;</span><span class="p">:</span> + <span class="n">image_features</span> <span class="o">=</span> <span class="n">image_features</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;Unexpected select feature: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">select_feature</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="k">return</span> <span class="n">image_features</span></div> + + + <span class="nd">@torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">()</span> +<div class="viewcode-block" id="CLIPVisionTower.forward"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.forward">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">images</span><span class="p">):</span> + <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">images</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">list</span><span class="p">:</span> + <span class="n">image_features</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">image</span> <span class="ow">in</span> <span class="n">images</span><span class="p">:</span> + <span class="n">image_forward_out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_tower</span><span class="p">(</span><span class="n">image</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">output_hidden_states</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">image_feature</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">feature_select</span><span class="p">(</span><span class="n">image_forward_out</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">image</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span> + <span class="n">image_features</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">image_feature</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">image_forward_outs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_tower</span><span class="p">(</span><span class="n">images</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dtype</span><span class="p">),</span> <span class="n">output_hidden_states</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">image_features</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">feature_select</span><span class="p">(</span><span class="n">image_forward_outs</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">images</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">image_features</span></div> + + + <span class="nd">@property</span> +<div class="viewcode-block" id="CLIPVisionTower.dummy_feature"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.dummy_feature">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">dummy_feature</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">hidden_size</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span></div> + + + <span class="nd">@property</span> +<div class="viewcode-block" id="CLIPVisionTower.dtype"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.dtype">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">dtype</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_tower</span><span class="o">.</span><span class="n">dtype</span></div> + + + <span class="nd">@property</span> +<div class="viewcode-block" id="CLIPVisionTower.device"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.device">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_tower</span><span class="o">.</span><span class="n">device</span></div> + + + <span class="nd">@property</span> +<div class="viewcode-block" id="CLIPVisionTower.config"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.config">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">config</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_loaded</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_tower</span><span class="o">.</span><span class="n">config</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cfg_only</span></div> + + + <span class="nd">@property</span> +<div class="viewcode-block" id="CLIPVisionTower.hidden_size"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.hidden_size">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">hidden_size</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">hidden_size</span></div> + + + <span class="nd">@property</span> +<div class="viewcode-block" id="CLIPVisionTower.num_patches"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.num_patches">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">num_patches</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">image_size</span> <span class="o">//</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">patch_size</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span></div> + + +<div class="viewcode-block" id="CLIPVisionTower.prepare_inputs_labels_for_multimodal"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.prepare_inputs_labels_for_multimodal">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">prepare_inputs_labels_for_multimodal</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> <span class="n">input_ids</span><span class="p">,</span> <span class="n">attention_mask</span><span class="p">,</span> <span class="n">past_key_values</span><span class="p">,</span> <span class="n">labels</span><span class="p">,</span> <span class="n">images</span><span class="p">,</span> + <span class="n">language_projection</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">language_model</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&#39;&#39;&#39;</span> +<span class="sd"> Copy from the LLAVA code base.</span> +<span class="sd"> Should be polished.</span> +<span class="sd"> &#39;&#39;&#39;</span> + <span class="n">vision_tower</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_tower</span> + <span class="c1"># commonly used in model.generate (past_key_values is not None)</span> + <span class="c1"># to avoid forward the image multiple time</span> + <span class="k">if</span> <span class="n">vision_tower</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">images</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">input_ids</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> + <span class="k">if</span> <span class="p">(</span><span class="n">past_key_values</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> + <span class="n">vision_tower</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> + <span class="n">images</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> + <span class="n">input_ids</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="mi">1</span><span class="p">):</span> + <span class="n">attention_mask</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span> + <span class="n">attention_mask</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> + <span class="n">past_key_values</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">),</span> + <span class="n">dtype</span><span class="o">=</span><span class="n">attention_mask</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">attention_mask</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="k">return</span> <span class="n">input_ids</span><span class="p">,</span> <span class="n">attention_mask</span><span class="p">,</span> <span class="n">past_key_values</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">labels</span> + <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">images</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">list</span> <span class="ow">or</span> <span class="n">images</span><span class="o">.</span><span class="n">ndim</span> <span class="o">==</span> <span class="mi">5</span><span class="p">:</span> + <span class="n">concat_images</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">([</span><span class="n">image</span> <span class="k">for</span> <span class="n">image</span> <span class="ow">in</span> <span class="n">images</span><span class="p">],</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="n">image_features</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">encode_images</span><span class="p">(</span><span class="n">concat_images</span><span class="p">,</span> <span class="n">language_projection</span><span class="p">)</span> + <span class="n">split_sizes</span> <span class="o">=</span> <span class="p">[</span><span class="n">image</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">image</span> <span class="ow">in</span> <span class="n">images</span><span class="p">]</span> + <span class="n">image_features</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">image_features</span><span class="p">,</span> <span class="n">split_sizes</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="n">image_features</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">flatten</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">image_features</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">image_features</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">encode_images</span><span class="p">(</span><span class="n">images</span><span class="p">,</span> <span class="n">language_projection</span><span class="p">)</span> + <span class="n">new_input_embeds</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">new_labels</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">if</span> <span class="n">labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="kc">None</span> + <span class="n">cur_image_idx</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">batch_idx</span><span class="p">,</span> <span class="n">cur_input_ids</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">input_ids</span><span class="p">):</span> + <span class="k">if</span> <span class="p">(</span><span class="n">cur_input_ids</span> <span class="o">==</span> <span class="n">IMAGE_TOKEN_INDEX</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="c1"># multimodal LLM, but the current sample is not multimodal</span> + <span class="n">cur_input_embeds</span> <span class="o">=</span> <span class="n">language_model</span><span class="o">.</span><span class="n">embed_tokens</span><span class="p">(</span><span class="n">cur_input_ids</span><span class="p">)</span> + <span class="n">cur_input_embeds</span> <span class="o">=</span> <span class="n">cur_input_embeds</span> <span class="o">+</span> <span class="p">(</span><span class="mf">0.</span> <span class="o">*</span> <span class="n">language_projection</span><span class="p">(</span><span class="n">vision_tower</span><span class="o">.</span><span class="n">dummy_feature</span><span class="p">))</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span> + <span class="n">new_input_embeds</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cur_input_embeds</span><span class="p">)</span> + <span class="k">if</span> <span class="n">labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">new_labels</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">labels</span><span class="p">[</span><span class="n">batch_idx</span><span class="p">])</span> + <span class="n">cur_image_idx</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="k">continue</span> + <span class="n">image_token_indices</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">cur_input_ids</span> <span class="o">==</span> <span class="n">IMAGE_TOKEN_INDEX</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">cur_new_input_embeds</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">if</span> <span class="n">labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">cur_labels</span> <span class="o">=</span> <span class="n">labels</span><span class="p">[</span><span class="n">batch_idx</span><span class="p">]</span> + <span class="n">cur_new_labels</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">assert</span> <span class="n">cur_labels</span><span class="o">.</span><span class="n">shape</span> <span class="o">==</span> <span class="n">cur_input_ids</span><span class="o">.</span><span class="n">shape</span> + <span class="k">while</span> <span class="n">image_token_indices</span><span class="o">.</span><span class="n">numel</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">cur_image_features</span> <span class="o">=</span> <span class="n">image_features</span><span class="p">[</span><span class="n">cur_image_idx</span><span class="p">]</span> + <span class="n">image_token_start</span> <span class="o">=</span> <span class="n">image_token_indices</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="c1"># print(&quot;image token_start&quot;, image_token_start,</span> + <span class="c1"># &quot;curr_input_ids&quot;, cur_input_ids.shape)</span> + <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">,</span> <span class="s1">&#39;tune_mm_mlp_adapter&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">,</span> <span class="s1">&#39;mm_use_im_start_end&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> + <span class="n">cur_new_input_embeds</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">language_model</span><span class="o">.</span><span class="n">embed_tokens</span><span class="p">(</span><span class="n">cur_input_ids</span><span class="p">[:</span><span class="n">image_token_start</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span><span class="o">.</span><span class="n">detach</span><span class="p">())</span> + <span class="n">cur_new_input_embeds</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">language_model</span><span class="o">.</span><span class="n">embed_tokens</span><span class="p">(</span><span class="n">cur_input_ids</span><span class="p">[</span><span class="n">image_token_start</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="n">image_token_start</span><span class="p">]))</span> + <span class="n">cur_new_input_embeds</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cur_image_features</span><span class="p">)</span> + <span class="n">cur_new_input_embeds</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">language_model</span><span class="o">.</span><span class="n">embed_tokens</span><span class="p">(</span><span class="n">cur_input_ids</span><span class="p">[</span><span class="n">image_token_start</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">image_token_start</span><span class="o">+</span><span class="mi">2</span><span class="p">]))</span> + <span class="k">if</span> <span class="n">labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">cur_new_labels</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cur_labels</span><span class="p">[:</span><span class="n">image_token_start</span><span class="p">])</span> + <span class="n">cur_new_labels</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">full</span><span class="p">((</span><span class="n">cur_image_features</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],),</span> <span class="n">IGNORE_INDEX</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">labels</span><span class="o">.</span><span class="n">device</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">labels</span><span class="o">.</span><span class="n">dtype</span><span class="p">))</span> + <span class="n">cur_new_labels</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cur_labels</span><span class="p">[</span><span class="n">image_token_start</span><span class="p">:</span><span class="n">image_token_start</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span> + <span class="n">cur_labels</span> <span class="o">=</span> <span class="n">cur_labels</span><span class="p">[</span><span class="n">image_token_start</span><span class="o">+</span><span class="mi">2</span><span class="p">:]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">cur_input_ids</span> <span class="o">=</span> <span class="n">cur_input_ids</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="n">language_model</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="n">cur_new_input_embeds</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">language_model</span><span class="o">.</span><span class="n">embed_tokens</span><span class="p">(</span><span class="n">cur_input_ids</span><span class="p">[:</span><span class="n">image_token_start</span><span class="p">]))</span> + <span class="n">cur_new_input_embeds</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cur_image_features</span><span class="p">)</span> + <span class="k">if</span> <span class="n">labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">cur_new_labels</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cur_labels</span><span class="p">[:</span><span class="n">image_token_start</span><span class="p">])</span> + <span class="n">cur_new_labels</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">full</span><span class="p">((</span><span class="n">cur_image_features</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],),</span> <span class="n">IGNORE_INDEX</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">labels</span><span class="o">.</span><span class="n">device</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">labels</span><span class="o">.</span><span class="n">dtype</span><span class="p">))</span> + <span class="n">cur_labels</span> <span class="o">=</span> <span class="n">cur_labels</span><span class="p">[</span><span class="n">image_token_start</span><span class="o">+</span><span class="mi">1</span><span class="p">:]</span> + <span class="n">cur_image_idx</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">,</span> <span class="s1">&#39;tune_mm_mlp_adapter&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">,</span> <span class="s1">&#39;mm_use_im_start_end&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> + <span class="n">cur_input_ids</span> <span class="o">=</span> <span class="n">cur_input_ids</span><span class="p">[</span><span class="n">image_token_start</span><span class="o">+</span><span class="mi">2</span><span class="p">:]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">cur_input_ids</span> <span class="o">=</span> <span class="n">cur_input_ids</span><span class="p">[</span><span class="n">image_token_start</span><span class="o">+</span><span class="mi">1</span><span class="p">:]</span> + <span class="n">image_token_indices</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">cur_input_ids</span> <span class="o">==</span> <span class="n">IMAGE_TOKEN_INDEX</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="k">if</span> <span class="n">cur_input_ids</span><span class="o">.</span><span class="n">numel</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">,</span> <span class="s1">&#39;tune_mm_mlp_adapter&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">,</span> <span class="s1">&#39;mm_use_im_start_end&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> + <span class="n">cur_new_input_embeds</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">language_model</span><span class="o">.</span><span class="n">embed_tokens</span><span class="p">(</span><span class="n">cur_input_ids</span><span class="p">)</span><span class="o">.</span><span class="n">detach</span><span class="p">())</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">cur_new_input_embeds</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">language_model</span><span class="o">.</span><span class="n">embed_tokens</span><span class="p">(</span><span class="n">cur_input_ids</span><span class="p">))</span> + <span class="k">if</span> <span class="n">labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">cur_new_labels</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cur_labels</span><span class="p">)</span> + <span class="n">cur_new_input_embeds</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">cur_new_input_embeds</span><span class="p">]</span> + <span class="n">cur_new_input_embeds</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">(</span><span class="n">cur_new_input_embeds</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="n">new_input_embeds</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cur_new_input_embeds</span><span class="p">)</span> + <span class="k">if</span> <span class="n">labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">cur_new_labels</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">(</span><span class="n">cur_new_labels</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="n">new_labels</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cur_new_labels</span><span class="p">)</span> + + <span class="k">if</span> <span class="nb">any</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">shape</span> <span class="o">!=</span> <span class="n">new_input_embeds</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">new_input_embeds</span><span class="p">):</span> + <span class="n">max_len</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">new_input_embeds</span><span class="p">)</span> + + <span class="n">new_input_embeds_align</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">cur_new_embed</span> <span class="ow">in</span> <span class="n">new_input_embeds</span><span class="p">:</span> + <span class="n">cur_new_embed</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">cur_new_embed</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">max_len</span> <span class="o">-</span> <span class="n">cur_new_embed</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">cur_new_embed</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">cur_new_embed</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">cur_new_embed</span><span class="o">.</span><span class="n">device</span><span class="p">)),</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="n">new_input_embeds_align</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cur_new_embed</span><span class="p">)</span> + <span class="n">new_input_embeds</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">new_input_embeds_align</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">new_labels_align</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">_new_labels</span> <span class="o">=</span> <span class="n">new_labels</span> + <span class="k">for</span> <span class="n">cur_new_label</span> <span class="ow">in</span> <span class="n">new_labels</span><span class="p">:</span> + <span class="n">cur_new_label</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">cur_new_label</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">full</span><span class="p">((</span><span class="n">max_len</span> <span class="o">-</span> <span class="n">cur_new_label</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],),</span> <span class="n">IGNORE_INDEX</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">cur_new_label</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">cur_new_label</span><span class="o">.</span><span class="n">device</span><span class="p">)),</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="n">new_labels_align</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cur_new_label</span><span class="p">)</span> + <span class="n">new_labels</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">new_labels_align</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="k">if</span> <span class="n">attention_mask</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">new_attention_mask</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">cur_attention_mask</span><span class="p">,</span> <span class="n">cur_new_labels</span><span class="p">,</span> <span class="n">cur_new_labels_align</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">attention_mask</span><span class="p">,</span> <span class="n">_new_labels</span><span class="p">,</span> <span class="n">new_labels</span><span class="p">):</span> + <span class="n">new_attn_mask_pad_left</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">full</span><span class="p">((</span><span class="n">cur_new_labels</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">labels</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">],),</span> <span class="kc">True</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">attention_mask</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">attention_mask</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="n">new_attn_mask_pad_right</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">full</span><span class="p">((</span><span class="n">cur_new_labels_align</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">cur_new_labels</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],),</span> <span class="kc">False</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">attention_mask</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">attention_mask</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="n">cur_new_attention_mask</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">new_attn_mask_pad_left</span><span class="p">,</span> <span class="n">cur_attention_mask</span><span class="p">,</span> <span class="n">new_attn_mask_pad_right</span><span class="p">),</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="n">new_attention_mask</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cur_new_attention_mask</span><span class="p">)</span> + <span class="n">attention_mask</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">new_attention_mask</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="k">assert</span> <span class="n">attention_mask</span><span class="o">.</span><span class="n">shape</span> <span class="o">==</span> <span class="n">new_labels</span><span class="o">.</span><span class="n">shape</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">new_input_embeds</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">new_input_embeds</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="k">if</span> <span class="n">labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">new_labels</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">new_labels</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="k">if</span> <span class="n">attention_mask</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">new_attn_mask_pad_left</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">full</span><span class="p">((</span><span class="n">attention_mask</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">new_input_embeds</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">input_ids</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span> <span class="kc">True</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">attention_mask</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">attention_mask</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="n">attention_mask</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">new_attn_mask_pad_left</span><span class="p">,</span> <span class="n">attention_mask</span><span class="p">),</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + <span class="k">assert</span> <span class="n">attention_mask</span><span class="o">.</span><span class="n">shape</span> <span class="o">==</span> <span class="n">new_input_embeds</span><span class="o">.</span><span class="n">shape</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> + <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="n">attention_mask</span><span class="p">,</span> <span class="n">past_key_values</span><span class="p">,</span> \ + <span class="n">new_input_embeds</span><span class="p">,</span> <span class="n">new_labels</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/adabelief.html b/_modules/lmflow/optim/adabelief.html new file mode 100644 index 000000000..3ad18b5e4 --- /dev/null +++ b/_modules/lmflow/optim/adabelief.html @@ -0,0 +1,649 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.adabelief &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/adabelief';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adabelief</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.adabelief</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">math</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim.optimizer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + +<div class="viewcode-block" id="AdaBelief"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">AdaBelief</span><span class="p">(</span><span class="n">Optimizer</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Implements AdaBelief algorithm. Modified from Adam in PyTorch</span> +<span class="sd"> reference: AdaBelief Optimizer, adapting stepsizes by the belief in observed gradients, NeurIPS 2020</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">1e-3</span><span class="p">,</span> <span class="n">betas</span><span class="o">=</span><span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.999</span><span class="p">),</span> <span class="n">eps</span><span class="o">=</span><span class="mf">1e-16</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">amsgrad</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">weight_decouple</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">fixed_decay</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">rectify</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">degenerated_to_sgd</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">print_change_log</span> <span class="o">=</span> <span class="kc">True</span><span class="p">):</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">lr</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid learning rate: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">lr</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">eps</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid epsilon value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">eps</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid beta parameter at index 0: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid beta parameter at index 1: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> + +<div class="viewcode-block" id="AdaBelief.degenerated_to_sgd"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief.degenerated_to_sgd">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">degenerated_to_sgd</span> <span class="o">=</span> <span class="n">degenerated_to_sgd</span></div> + + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="p">(</span><span class="nb">list</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">))</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">params</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">params</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="nb">dict</span><span class="p">):</span> + <span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">params</span><span class="p">:</span> + <span class="k">if</span> <span class="s1">&#39;betas&#39;</span> <span class="ow">in</span> <span class="n">param</span> <span class="ow">and</span> <span class="p">(</span><span class="n">param</span><span class="p">[</span><span class="s1">&#39;betas&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">or</span> <span class="n">param</span><span class="p">[</span><span class="s1">&#39;betas&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span> + <span class="n">param</span><span class="p">[</span><span class="s1">&#39;buffer&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[[</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">)]</span> + + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> <span class="n">betas</span><span class="o">=</span><span class="n">betas</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">,</span> <span class="n">amsgrad</span><span class="o">=</span><span class="n">amsgrad</span><span class="p">,</span> <span class="n">buffer</span><span class="o">=</span><span class="p">[[</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">)])</span> + <span class="nb">super</span><span class="p">(</span><span class="n">AdaBelief</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">degenerated_to_sgd</span> <span class="o">=</span> <span class="n">degenerated_to_sgd</span> +<div class="viewcode-block" id="AdaBelief.weight_decouple"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief.weight_decouple">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">weight_decouple</span> <span class="o">=</span> <span class="n">weight_decouple</span></div> + +<div class="viewcode-block" id="AdaBelief.rectify"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief.rectify">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">rectify</span> <span class="o">=</span> <span class="n">rectify</span></div> + +<div class="viewcode-block" id="AdaBelief.fixed_decay"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief.fixed_decay">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">fixed_decay</span> <span class="o">=</span> <span class="n">fixed_decay</span></div> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">weight_decouple</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Weight decoupling enabled in AdaBelief&#39;</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fixed_decay</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Weight decay fixed&#39;</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rectify</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Rectification enabled in AdaBelief&#39;</span><span class="p">)</span> + <span class="k">if</span> <span class="n">amsgrad</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;AMSGrad enabled in AdaBelief&#39;</span><span class="p">)</span> + +<div class="viewcode-block" id="AdaBelief.__setstate__"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief.__setstate__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__setstate__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span> + <span class="nb">super</span><span class="p">(</span><span class="n">AdaBelief</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__setstate__</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">group</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s1">&#39;amsgrad&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="AdaBelief.reset"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief.reset">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + <span class="n">amsgrad</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;amsgrad&#39;</span><span class="p">]</span> + + <span class="c1"># State initialization</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="c1"># Exponential moving average of gradient values</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + <span class="c1"># Exponential moving average of squared gradient values</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg_var&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">amsgrad</span><span class="p">:</span> + <span class="c1"># Maintains max of all exp. moving avg. of sq. grad. values</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;max_exp_avg_var&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="AdaBelief.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Performs a single optimization step.</span> +<span class="sd"> Arguments:</span> +<span class="sd"> closure (callable, optional): A closure that reevaluates the model</span> +<span class="sd"> and returns the loss.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + + <span class="c1"># cast data type</span> + <span class="n">half_precision</span> <span class="o">=</span> <span class="kc">False</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">dtype</span> <span class="o">==</span> <span class="n">torch</span><span class="o">.</span><span class="n">float16</span><span class="p">:</span> + <span class="n">half_precision</span> <span class="o">=</span> <span class="kc">True</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">float</span><span class="p">()</span> + <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">float</span><span class="p">()</span> + + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span> + <span class="k">if</span> <span class="n">grad</span><span class="o">.</span><span class="n">is_sparse</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> + <span class="s1">&#39;AdaBelief does not support sparse gradients, please consider SparseAdam instead&#39;</span><span class="p">)</span> + <span class="n">amsgrad</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;amsgrad&#39;</span><span class="p">]</span> + + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;betas&#39;</span><span class="p">]</span> + + <span class="c1"># State initialization</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="c1"># Exponential moving average of gradient values</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + <span class="c1"># Exponential moving average of squared gradient values</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg_var&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + <span class="k">if</span> <span class="n">amsgrad</span><span class="p">:</span> + <span class="c1"># Maintains max of all exp. moving avg. of sq. grad. values</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;max_exp_avg_var&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + + <span class="c1"># perform weight decay, check if decoupled weight decay</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">weight_decouple</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">fixed_decay</span><span class="p">:</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="mf">1.0</span> <span class="o">-</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr&#39;</span><span class="p">]</span> <span class="o">*</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="mf">1.0</span> <span class="o">-</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">grad</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">])</span> + + <span class="c1"># get current state variable</span> + <span class="n">exp_avg</span><span class="p">,</span> <span class="n">exp_avg_var</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg_var&#39;</span><span class="p">]</span> + + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="n">bias_correction1</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> + <span class="n">bias_correction2</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> + + <span class="c1"># Update first and second moment running average</span> + <span class="n">exp_avg</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">)</span> + <span class="n">grad_residual</span> <span class="o">=</span> <span class="n">grad</span> <span class="o">-</span> <span class="n">exp_avg</span> + <span class="n">exp_avg_var</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta2</span><span class="p">)</span><span class="o">.</span><span class="n">addcmul_</span><span class="p">(</span> <span class="n">grad_residual</span><span class="p">,</span> <span class="n">grad_residual</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">amsgrad</span><span class="p">:</span> + <span class="n">max_exp_avg_var</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;max_exp_avg_var&#39;</span><span class="p">]</span> + <span class="c1"># Maintains the maximum of all 2nd moment running avg. till now</span> + <span class="n">torch</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">max_exp_avg_var</span><span class="p">,</span> <span class="n">exp_avg_var</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">]),</span> <span class="n">out</span><span class="o">=</span><span class="n">max_exp_avg_var</span><span class="p">)</span> + + <span class="c1"># Use the max. for normalizing running avg. of gradient</span> + <span class="n">denom</span> <span class="o">=</span> <span class="p">(</span><span class="n">max_exp_avg_var</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span> <span class="o">/</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">bias_correction2</span><span class="p">))</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">denom</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp_avg_var</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">])</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span> <span class="o">/</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">bias_correction2</span><span class="p">))</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">])</span> + + <span class="c1"># update</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">rectify</span><span class="p">:</span> + <span class="c1"># Default update</span> + <span class="n">step_size</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr&#39;</span><span class="p">]</span> <span class="o">/</span> <span class="n">bias_correction1</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">addcdiv_</span><span class="p">(</span> <span class="n">exp_avg</span><span class="p">,</span> <span class="n">denom</span><span class="p">,</span> <span class="n">value</span><span class="o">=-</span><span class="n">step_size</span><span class="p">)</span> + + <span class="k">else</span><span class="p">:</span> <span class="c1"># Rectified update, forked from RAdam</span> + <span class="n">buffered</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;buffer&#39;</span><span class="p">][</span><span class="nb">int</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">%</span> <span class="mi">10</span><span class="p">)]</span> + <span class="k">if</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">buffered</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> + <span class="n">N_sma</span><span class="p">,</span> <span class="n">step_size</span> <span class="o">=</span> <span class="n">buffered</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">buffered</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">buffered</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> + <span class="n">beta2_t</span> <span class="o">=</span> <span class="n">beta2</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> + <span class="n">N_sma_max</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> + <span class="n">N_sma</span> <span class="o">=</span> <span class="n">N_sma_max</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">*</span> <span class="n">beta2_t</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2_t</span><span class="p">)</span> + <span class="n">buffered</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">N_sma</span> + + <span class="c1"># more conservative since it&#39;s an approximated value</span> + <span class="k">if</span> <span class="n">N_sma</span> <span class="o">&gt;=</span> <span class="mi">5</span><span class="p">:</span> + <span class="n">step_size</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span> + <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2_t</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">N_sma</span> <span class="o">-</span> <span class="mi">4</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">N_sma_max</span> <span class="o">-</span> <span class="mi">4</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">N_sma</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> <span class="o">/</span> <span class="n">N_sma</span> <span class="o">*</span> <span class="n">N_sma_max</span> <span class="o">/</span> <span class="p">(</span> + <span class="n">N_sma_max</span> <span class="o">-</span> <span class="mi">2</span><span class="p">))</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">])</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">degenerated_to_sgd</span><span class="p">:</span> + <span class="n">step_size</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">step_size</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> + <span class="n">buffered</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">step_size</span> + + <span class="k">if</span> <span class="n">N_sma</span> <span class="o">&gt;=</span> <span class="mi">5</span><span class="p">:</span> + <span class="n">denom</span> <span class="o">=</span> <span class="n">exp_avg_var</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">])</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">addcdiv_</span><span class="p">(</span><span class="n">exp_avg</span><span class="p">,</span> <span class="n">denom</span><span class="p">,</span> <span class="n">value</span><span class="o">=-</span><span class="n">step_size</span> <span class="o">*</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr&#39;</span><span class="p">])</span> + <span class="k">elif</span> <span class="n">step_size</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span> <span class="n">exp_avg</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=-</span><span class="n">step_size</span> <span class="o">*</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr&#39;</span><span class="p">])</span> + + <span class="k">if</span> <span class="n">half_precision</span><span class="p">:</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">half</span><span class="p">()</span> + <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">half</span><span class="p">()</span> + + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/adabound.html b/_modules/lmflow/optim/adabound.html new file mode 100644 index 000000000..f2b15683c --- /dev/null +++ b/_modules/lmflow/optim/adabound.html @@ -0,0 +1,611 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.adabound &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/adabound';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adabound</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.adabound</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">math</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim.optimizer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + +<div class="viewcode-block" id="AdaBound"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adabound/index.html#lmflow.optim.adabound.AdaBound">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">AdaBound</span><span class="p">(</span><span class="n">Optimizer</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Implements AdaBound algorithm.</span> +<span class="sd"> </span> +<span class="sd"> It has been proposed in `Adaptive Gradient Methods with Dynamic Bound of</span> +<span class="sd"> Learning Rate</span> +<span class="sd"> https://arxiv.org/abs/1902.09843</span> +<span class="sd"> Note:</span> +<span class="sd"> Reference code: https://github.com/Luolc/AdaBound</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">params</span><span class="p">,</span> + <span class="n">lr</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-3</span><span class="p">,</span> + <span class="n">betas</span> <span class="o">=</span> <span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.999</span><span class="p">),</span> + <span class="n">final_lr</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.1</span><span class="p">,</span> + <span class="n">gamma</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-3</span><span class="p">,</span> + <span class="n">eps</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-8</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> + <span class="n">amsbound</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="n">lr</span> <span class="o">&lt;=</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid learning rate: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">lr</span><span class="p">))</span> + <span class="k">if</span> <span class="n">eps</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid epsilon value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">eps</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid beta parameter at index 0: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + <span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid beta parameter at index 1: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">final_lr</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid final learning rate: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">final_lr</span><span class="p">)</span> + <span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">gamma</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid gamma parameter: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">gamma</span><span class="p">))</span> + <span class="k">if</span> <span class="n">weight_decay</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid weight_decay value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">weight_decay</span><span class="p">)</span> + <span class="p">)</span> + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> + <span class="n">betas</span><span class="o">=</span><span class="n">betas</span><span class="p">,</span> + <span class="n">final_lr</span><span class="o">=</span><span class="n">final_lr</span><span class="p">,</span> + <span class="n">gamma</span><span class="o">=</span><span class="n">gamma</span><span class="p">,</span> + <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">,</span> + <span class="n">amsbound</span><span class="o">=</span><span class="n">amsbound</span><span class="p">,</span> + <span class="p">)</span> + <span class="nb">super</span><span class="p">(</span><span class="n">AdaBound</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> +<div class="viewcode-block" id="AdaBound.base_lrs"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adabound/index.html#lmflow.optim.adabound.AdaBound.base_lrs">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">base_lrs</span> <span class="o">=</span> <span class="p">[</span><span class="n">group</span><span class="p">[</span><span class="s2">&quot;lr&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">]</span></div> + + +<div class="viewcode-block" id="AdaBound.__setstate__"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adabound/index.html#lmflow.optim.adabound.AdaBound.__setstate__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__setstate__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> + <span class="nb">super</span><span class="p">(</span><span class="n">AdaBound</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__setstate__</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">group</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">&quot;amsbound&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="AdaBound.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adabound/index.html#lmflow.optim.adabound.AdaBound.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Performs a single optimization step.</span> + +<span class="sd"> Arguments:</span> +<span class="sd"> closure: A closure that reevaluates the model and returns the loss.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span><span class="p">,</span> <span class="n">base_lr</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_lrs</span><span class="p">):</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;params&quot;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span> + <span class="k">if</span> <span class="n">grad</span><span class="o">.</span><span class="n">is_sparse</span><span class="p">:</span> + <span class="n">msg</span> <span class="o">=</span> <span class="p">(</span> + <span class="s2">&quot;AdaBound does not support sparse gradients, &quot;</span> + <span class="s2">&quot;please consider SparseAdam instead&quot;</span> + <span class="p">)</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> + <span class="n">amsbound</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;amsbound&quot;</span><span class="p">]</span> + + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="c1"># State initialization</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="c1"># Exponential moving average of gradient values</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span> + <span class="n">p</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span> + <span class="p">)</span> + <span class="c1"># Exponential moving average of squared gradient values</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg_sq&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span> + <span class="n">p</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">amsbound</span><span class="p">:</span> + <span class="c1"># Maintains max of all exp. moving avg. of</span> + <span class="c1"># sq. grad. values</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;max_exp_avg_sq&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span> + <span class="n">p</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span> + <span class="p">)</span> + + <span class="n">exp_avg</span><span class="p">,</span> <span class="n">exp_avg_sq</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg&quot;</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg_sq&quot;</span><span class="p">]</span> + <span class="k">if</span> <span class="n">amsbound</span><span class="p">:</span> + <span class="n">max_exp_avg_sq</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;max_exp_avg_sq&quot;</span><span class="p">]</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;betas&quot;</span><span class="p">]</span> + + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;weight_decay&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">grad</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">group</span><span class="p">[</span><span class="s2">&quot;weight_decay&quot;</span><span class="p">])</span> + + <span class="c1"># Decay the first and second moment running average coefficient</span> + <span class="n">exp_avg</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">)</span> + <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta2</span><span class="p">)</span><span class="o">.</span><span class="n">addcmul_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span><span class="p">)</span> + <span class="k">if</span> <span class="n">amsbound</span><span class="p">:</span> + <span class="c1"># Maintains the maximum of all 2nd moment running</span> + <span class="c1"># avg. till now</span> + <span class="n">torch</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">max_exp_avg_sq</span><span class="p">,</span> <span class="n">exp_avg_sq</span><span class="p">,</span> <span class="n">out</span><span class="o">=</span><span class="n">max_exp_avg_sq</span><span class="p">)</span> + <span class="c1"># Use the max. for normalizing running avg. of gradient</span> + <span class="n">denom</span> <span class="o">=</span> <span class="n">max_exp_avg_sq</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s2">&quot;eps&quot;</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">denom</span> <span class="o">=</span> <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s2">&quot;eps&quot;</span><span class="p">])</span> + + <span class="n">bias_correction1</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> + <span class="n">bias_correction2</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> + <span class="n">step_size</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">group</span><span class="p">[</span><span class="s2">&quot;lr&quot;</span><span class="p">]</span> + <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">bias_correction2</span><span class="p">)</span> + <span class="o">/</span> <span class="n">bias_correction1</span> + <span class="p">)</span> + + <span class="c1"># Applies bounds on actual learning rate</span> + <span class="c1"># lr_scheduler cannot affect final_lr, this is a workaround</span> + <span class="c1"># to apply lr decay</span> + <span class="n">final_lr</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;final_lr&quot;</span><span class="p">]</span> <span class="o">*</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;lr&quot;</span><span class="p">]</span> <span class="o">/</span> <span class="n">base_lr</span> + <span class="n">lower_bound</span> <span class="o">=</span> <span class="n">final_lr</span> <span class="o">*</span> <span class="p">(</span> + <span class="mi">1</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">/</span> <span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s2">&quot;gamma&quot;</span><span class="p">]</span> <span class="o">*</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> + <span class="p">)</span> + <span class="n">upper_bound</span> <span class="o">=</span> <span class="n">final_lr</span> <span class="o">*</span> <span class="p">(</span> + <span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s2">&quot;gamma&quot;</span><span class="p">]</span> <span class="o">*</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">])</span> + <span class="p">)</span> + <span class="n">step_size</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">full_like</span><span class="p">(</span><span class="n">denom</span><span class="p">,</span> <span class="n">step_size</span><span class="p">)</span> + <span class="n">step_size</span><span class="o">.</span><span class="n">div_</span><span class="p">(</span><span class="n">denom</span><span class="p">)</span><span class="o">.</span><span class="n">clamp_</span><span class="p">(</span><span class="n">lower_bound</span><span class="p">,</span> <span class="n">upper_bound</span><span class="p">)</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span> + <span class="n">exp_avg</span> + <span class="p">)</span> + + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="o">-</span><span class="n">step_size</span><span class="p">)</span> + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/adadelta.html b/_modules/lmflow/optim/adadelta.html new file mode 100644 index 000000000..336afff9c --- /dev/null +++ b/_modules/lmflow/optim/adadelta.html @@ -0,0 +1,490 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.adadelta &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/adadelta';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adadelta</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.adadelta</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim.optimizer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + +<div class="viewcode-block" id="Adadelta"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adadelta/index.html#lmflow.optim.adadelta.Adadelta">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Adadelta</span><span class="p">(</span><span class="n">Optimizer</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span> <span class="n">rho</span><span class="o">=</span><span class="mf">0.95</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="mf">1e-6</span><span class="p">):</span> + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> <span class="n">rho</span><span class="o">=</span><span class="n">rho</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">)</span> + <span class="nb">super</span><span class="p">(</span><span class="n">Adadelta</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + +<div class="viewcode-block" id="Adadelta.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adadelta/index.html#lmflow.optim.adadelta.Adadelta.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span> + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;square_avg&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;acc_delta&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + + <span class="n">square_avg</span><span class="p">,</span> <span class="n">acc_delta</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;square_avg&#39;</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;acc_delta&#39;</span><span class="p">]</span> + <span class="n">rho</span><span class="p">,</span> <span class="n">eps</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;rho&#39;</span><span class="p">],</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">]</span> + + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="n">square_avg</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">rho</span><span class="p">)</span><span class="o">.</span><span class="n">addcmul_</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">rho</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">grad</span><span class="p">)</span> + + <span class="n">std</span> <span class="o">=</span> <span class="n">square_avg</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">eps</span><span class="p">)</span><span class="o">.</span><span class="n">sqrt_</span><span class="p">()</span> + <span class="n">delta</span> <span class="o">=</span> <span class="n">acc_delta</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">eps</span><span class="p">)</span><span class="o">.</span><span class="n">sqrt_</span><span class="p">()</span><span class="o">.</span><span class="n">div_</span><span class="p">(</span><span class="n">std</span><span class="p">)</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">grad</span><span class="p">)</span> + + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="o">-</span><span class="n">delta</span><span class="p">)</span> + + <span class="n">acc_delta</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">rho</span><span class="p">)</span><span class="o">.</span><span class="n">addcmul_</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">rho</span><span class="p">,</span> <span class="n">delta</span><span class="p">,</span> <span class="n">delta</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/adagrad.html b/_modules/lmflow/optim/adagrad.html new file mode 100644 index 000000000..6d3e8ced5 --- /dev/null +++ b/_modules/lmflow/optim/adagrad.html @@ -0,0 +1,482 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.adagrad &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/adagrad';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adagrad</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.adagrad</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim.optimizer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + +<div class="viewcode-block" id="AdaGrad"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adagrad/index.html#lmflow.optim.adagrad.AdaGrad">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">AdaGrad</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Optimizer</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">0.001</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span> + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">)</span> + <span class="nb">super</span><span class="p">(</span><span class="n">AdaGrad</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + +<div class="viewcode-block" id="AdaGrad.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adagrad/index.html#lmflow.optim.adagrad.AdaGrad.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span> + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">grad</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">],</span> <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;sum&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + + <span class="nb">sum</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;sum&#39;</span><span class="p">]</span> + <span class="nb">sum</span><span class="o">.</span><span class="n">addcmul_</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">grad</span><span class="p">)</span> + <span class="n">std</span> <span class="o">=</span> <span class="nb">sum</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">])</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">addcdiv_</span><span class="p">(</span><span class="o">-</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr&#39;</span><span class="p">],</span> <span class="n">grad</span><span class="p">,</span> <span class="n">std</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/adam.html b/_modules/lmflow/optim/adam.html new file mode 100644 index 000000000..faa76ea2d --- /dev/null +++ b/_modules/lmflow/optim/adam.html @@ -0,0 +1,493 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.adam &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/adam';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adam</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.adam</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim.optimizer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + +<div class="viewcode-block" id="Adam"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adam/index.html#lmflow.optim.adam.Adam">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Adam</span><span class="p">(</span><span class="n">Optimizer</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">0.001</span><span class="p">,</span> <span class="n">betas</span><span class="o">=</span><span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.999</span><span class="p">),</span> <span class="n">eps</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">):</span> + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> <span class="n">betas</span><span class="o">=</span><span class="n">betas</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">)</span> + <span class="nb">super</span><span class="p">(</span><span class="n">Adam</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + +<div class="viewcode-block" id="Adam.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adam/index.html#lmflow.optim.adam.Adam.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span> + + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg_sq&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + + <span class="n">exp_avg</span><span class="p">,</span> <span class="n">exp_avg_sq</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg_sq&#39;</span><span class="p">]</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;betas&#39;</span><span class="p">]</span> + + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="n">exp_avg</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">,</span> <span class="n">grad</span><span class="p">)</span> + + <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta2</span><span class="p">)</span><span class="o">.</span><span class="n">addcmul_</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">grad</span><span class="p">)</span> + + <span class="n">bias_correction1</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> + <span class="n">bias_correction2</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> + + <span class="n">step_size</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr&#39;</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="n">bias_correction2</span> <span class="o">**</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">/</span> <span class="n">bias_correction1</span> + <span class="n">denom</span> <span class="o">=</span> <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">])</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">addcdiv_</span><span class="p">(</span><span class="o">-</span><span class="n">step_size</span><span class="p">,</span> <span class="n">exp_avg</span><span class="p">,</span> <span class="n">denom</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/adamax.html b/_modules/lmflow/optim/adamax.html new file mode 100644 index 000000000..50d749fb2 --- /dev/null +++ b/_modules/lmflow/optim/adamax.html @@ -0,0 +1,518 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.adamax &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/adamax';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adamax</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.adamax</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim.optimizer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + +<div class="viewcode-block" id="Adamax"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adamax/index.html#lmflow.optim.adamax.Adamax">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Adamax</span><span class="p">(</span><span class="n">Optimizer</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">2e-3</span><span class="p">,</span> <span class="n">betas</span><span class="o">=</span><span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.999</span><span class="p">),</span> <span class="n">eps</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">lr</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid learning rate: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">lr</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">eps</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid epsilon value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">eps</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid beta parameter at index 0: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid beta parameter at index 1: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">weight_decay</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid weight_decay value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">weight_decay</span><span class="p">))</span> + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> <span class="n">betas</span><span class="o">=</span><span class="n">betas</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">)</span> + <span class="nb">super</span><span class="p">(</span><span class="n">Adamax</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + +<div class="viewcode-block" id="Adamax.__setstate__"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adamax/index.html#lmflow.optim.adamax.Adamax.__setstate__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__setstate__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span> + <span class="nb">super</span><span class="p">(</span><span class="n">Adamax</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__setstate__</span><span class="p">(</span><span class="n">state</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="Adamax.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adamax/index.html#lmflow.optim.adamax.Adamax.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span> + <span class="k">if</span> <span class="n">grad</span><span class="o">.</span><span class="n">is_sparse</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s1">&#39;Adamax does not support sparse gradients&#39;</span><span class="p">)</span> + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="c1"># State initialization</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_inf&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + + <span class="n">exp_avg</span><span class="p">,</span> <span class="n">exp_inf</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_inf&#39;</span><span class="p">]</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;betas&#39;</span><span class="p">]</span> + + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">grad</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">],</span> <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + + <span class="c1"># Update biased first moment estimate</span> + <span class="n">exp_avg</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">,</span> <span class="n">grad</span><span class="p">)</span> + + <span class="c1"># Update the exponentially weighted infinity norm</span> + <span class="n">norm_buf</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">([</span> + <span class="n">exp_inf</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta2</span><span class="p">)</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> + <span class="n">grad</span><span class="o">.</span><span class="n">abs</span><span class="p">()</span><span class="o">.</span><span class="n">unsqueeze_</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> + <span class="p">],</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">torch</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">norm_buf</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">keepdim</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">out</span><span class="o">=</span><span class="p">(</span><span class="n">exp_inf</span><span class="p">,</span> <span class="n">exp_inf</span><span class="o">.</span><span class="n">new</span><span class="p">()</span><span class="o">.</span><span class="n">long</span><span class="p">()))</span> + + <span class="n">bias_correction</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> + <span class="n">clr</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr&#39;</span><span class="p">]</span> <span class="o">/</span> <span class="n">bias_correction</span> + + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">addcdiv_</span><span class="p">(</span><span class="o">-</span><span class="n">clr</span><span class="p">,</span> <span class="n">exp_avg</span><span class="p">,</span> <span class="n">exp_inf</span> <span class="o">+</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">])</span> + + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/adamp.html b/_modules/lmflow/optim/adamp.html new file mode 100644 index 000000000..e82de98a8 --- /dev/null +++ b/_modules/lmflow/optim/adamp.html @@ -0,0 +1,632 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.adamp &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/adamp';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adamp</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.adamp</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">math</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim.optimizer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + + +<div class="viewcode-block" id="AdamP"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adamp/index.html#lmflow.optim.adamp.AdamP">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">AdamP</span><span class="p">(</span><span class="n">Optimizer</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Implements AdamP algorithm.</span> + +<span class="sd"> It has been proposed in `Slowing Down the Weight Norm Increase in</span> +<span class="sd"> Momentum-based Optimizers`</span> +<span class="sd"> https://arxiv.org/abs/2006.08217</span> + +<span class="sd"> Note:</span> +<span class="sd"> Reference code: https://github.com/clovaai/AdamP</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">params</span><span class="p">,</span> + <span class="n">lr</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-3</span><span class="p">,</span> + <span class="n">betas</span> <span class="o">=</span> <span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.999</span><span class="p">),</span> + <span class="n">eps</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-8</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> + <span class="n">delta</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.1</span><span class="p">,</span> + <span class="n">wd_ratio</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.1</span><span class="p">,</span> + <span class="n">nesterov</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="n">lr</span> <span class="o">&lt;=</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid learning rate: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">lr</span><span class="p">))</span> + <span class="k">if</span> <span class="n">eps</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid epsilon value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">eps</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid beta parameter at index 0: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + <span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid beta parameter at index 1: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">weight_decay</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid weight_decay value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">weight_decay</span><span class="p">)</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">delta</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid delta value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">delta</span><span class="p">))</span> + <span class="k">if</span> <span class="n">wd_ratio</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid wd_ratio value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">wd_ratio</span><span class="p">))</span> + + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> + <span class="n">betas</span><span class="o">=</span><span class="n">betas</span><span class="p">,</span> + <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">,</span> + <span class="n">delta</span><span class="o">=</span><span class="n">delta</span><span class="p">,</span> + <span class="n">wd_ratio</span><span class="o">=</span><span class="n">wd_ratio</span><span class="p">,</span> + <span class="n">nesterov</span><span class="o">=</span><span class="n">nesterov</span><span class="p">,</span> + <span class="p">)</span> + <span class="nb">super</span><span class="p">(</span><span class="n">AdamP</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="AdamP._channel_view"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adamp/index.html#lmflow.optim.adamp.AdamP._channel_view">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_channel_view</span><span class="p">(</span><span class="n">x</span><span class="p">):</span> + <span class="k">return</span> <span class="n">x</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span></div> + + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="AdamP._layer_view"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adamp/index.html#lmflow.optim.adamp.AdamP._layer_view">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_layer_view</span><span class="p">(</span><span class="n">x</span><span class="p">):</span> + <span class="k">return</span> <span class="n">x</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span></div> + + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="AdamP._cosine_similarity"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adamp/index.html#lmflow.optim.adamp.AdamP._cosine_similarity">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_cosine_similarity</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">eps</span><span class="p">,</span> <span class="n">view_func</span><span class="p">):</span> + <span class="n">x</span> <span class="o">=</span> <span class="n">view_func</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> + <span class="n">y</span> <span class="o">=</span> <span class="n">view_func</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> + + <span class="n">x_norm</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">eps</span><span class="p">)</span> + <span class="n">y_norm</span> <span class="o">=</span> <span class="n">y</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">eps</span><span class="p">)</span> + <span class="n">dot</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span> <span class="o">*</span> <span class="n">y</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">dot</span><span class="o">.</span><span class="n">abs</span><span class="p">()</span> <span class="o">/</span> <span class="n">x_norm</span> <span class="o">/</span> <span class="n">y_norm</span></div> + + +<div class="viewcode-block" id="AdamP._projection"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adamp/index.html#lmflow.optim.adamp.AdamP._projection">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_projection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">perturb</span><span class="p">,</span> <span class="n">delta</span><span class="p">,</span> <span class="n">wd_ratio</span><span class="p">,</span> <span class="n">eps</span><span class="p">):</span> + <span class="n">wd</span> <span class="o">=</span> <span class="mi">1</span> + <span class="n">expand_size</span> <span class="o">=</span> <span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> + <span class="k">for</span> <span class="n">view_func</span> <span class="ow">in</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_channel_view</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_layer_view</span><span class="p">]:</span> + <span class="n">cosine_sim</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cosine_similarity</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">eps</span><span class="p">,</span> <span class="n">view_func</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">cosine_sim</span><span class="o">.</span><span class="n">max</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">delta</span> <span class="o">/</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">view_func</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">1</span><span class="p">)):</span> + <span class="n">p_n</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">data</span> <span class="o">/</span> <span class="n">view_func</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">view</span><span class="p">(</span> + <span class="n">expand_size</span> + <span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">eps</span><span class="p">)</span> + <span class="n">perturb</span> <span class="o">-=</span> <span class="n">p_n</span> <span class="o">*</span> <span class="n">view_func</span><span class="p">(</span><span class="n">p_n</span> <span class="o">*</span> <span class="n">perturb</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">view</span><span class="p">(</span> + <span class="n">expand_size</span> + <span class="p">)</span> + <span class="n">wd</span> <span class="o">=</span> <span class="n">wd_ratio</span> + + <span class="k">return</span> <span class="n">perturb</span><span class="p">,</span> <span class="n">wd</span> + + <span class="k">return</span> <span class="n">perturb</span><span class="p">,</span> <span class="n">wd</span></div> + + +<div class="viewcode-block" id="AdamP.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adamp/index.html#lmflow.optim.adamp.AdamP.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Performs a single optimization step.</span> + +<span class="sd"> Arguments:</span> +<span class="sd"> closure: A closure that reevaluates the model and returns the loss.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;params&quot;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;betas&quot;</span><span class="p">]</span> + <span class="n">nesterov</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;nesterov&quot;</span><span class="p">]</span> + + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="c1"># State initialization</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span> + <span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg_sq&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span> + <span class="p">)</span> + + <span class="c1"># Adam</span> + <span class="n">exp_avg</span><span class="p">,</span> <span class="n">exp_avg_sq</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg&quot;</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg_sq&quot;</span><span class="p">]</span> + + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="n">bias_correction1</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> + <span class="n">bias_correction2</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> + + <span class="n">exp_avg</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">)</span> + <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta2</span><span class="p">)</span><span class="o">.</span><span class="n">addcmul_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span><span class="p">)</span> + + <span class="n">denom</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span> <span class="o">/</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">bias_correction2</span><span class="p">))</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span> + <span class="n">group</span><span class="p">[</span><span class="s2">&quot;eps&quot;</span><span class="p">]</span> + <span class="p">)</span> + <span class="n">step_size</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;lr&quot;</span><span class="p">]</span> <span class="o">/</span> <span class="n">bias_correction1</span> + + <span class="k">if</span> <span class="n">nesterov</span><span class="p">:</span> + <span class="n">perturb</span> <span class="o">=</span> <span class="p">(</span><span class="n">beta1</span> <span class="o">*</span> <span class="n">exp_avg</span> <span class="o">+</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">)</span> <span class="o">*</span> <span class="n">grad</span><span class="p">)</span> <span class="o">/</span> <span class="n">denom</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">perturb</span> <span class="o">=</span> <span class="n">exp_avg</span> <span class="o">/</span> <span class="n">denom</span> + + <span class="c1"># Projection</span> + <span class="n">wd_ratio</span> <span class="o">=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">perturb</span><span class="p">,</span> <span class="n">wd_ratio</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_projection</span><span class="p">(</span> + <span class="n">p</span><span class="p">,</span> + <span class="n">grad</span><span class="p">,</span> + <span class="n">perturb</span><span class="p">,</span> + <span class="n">group</span><span class="p">[</span><span class="s2">&quot;delta&quot;</span><span class="p">],</span> + <span class="n">group</span><span class="p">[</span><span class="s2">&quot;wd_ratio&quot;</span><span class="p">],</span> + <span class="n">group</span><span class="p">[</span><span class="s2">&quot;eps&quot;</span><span class="p">],</span> + <span class="p">)</span> + + <span class="c1"># Weight decay</span> + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;weight_decay&quot;</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span> + <span class="mi">1</span> <span class="o">-</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;lr&quot;</span><span class="p">]</span> <span class="o">*</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;weight_decay&quot;</span><span class="p">]</span> <span class="o">*</span> <span class="n">wd_ratio</span> + <span class="p">)</span> + + <span class="c1"># Step</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">perturb</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=-</span><span class="n">step_size</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/adamw_schedule_free.html b/_modules/lmflow/optim/adamw_schedule_free.html new file mode 100644 index 000000000..e29188273 --- /dev/null +++ b/_modules/lmflow/optim/adamw_schedule_free.html @@ -0,0 +1,632 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.adamw_schedule_free &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/adamw_schedule_free';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adamw_schedule_free</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.adamw_schedule_free</h1><div class="highlight"><pre> +<span></span><span class="c1"># Copyright (c) Meta Platforms, Inc. and affiliates.</span> +<span class="c1"># All rights reserved.</span> +<span class="c1"># </span> +<span class="c1"># This source code is licensed under the license found in the</span> +<span class="c1"># LICENSE file in the root directory of this source tree.</span> +<span class="c1">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.optim</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">math</span> + +<div class="viewcode-block" id="AdamWScheduleFree"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adamw_schedule_free/index.html#lmflow.optim.adamw_schedule_free.AdamWScheduleFree">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">AdamWScheduleFree</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Optimizer</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Schedule-Free AdamW</span> +<span class="sd"> As the name suggests, no scheduler is needed with this optimizer. </span> +<span class="sd"> To add warmup, rather than using a learning rate schedule you can just</span> +<span class="sd"> set the warmup_steps parameter.</span> +<span class="sd"> </span> +<span class="sd"> This optimizer requires that .train() and .eval() be called before the</span> +<span class="sd"> beginning of training and evaluation respectively. The optimizer should</span> +<span class="sd"> also be placed in eval mode when saving checkpoints.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> + <span class="n">params</span><span class="p">,</span> + <span class="n">lr</span><span class="o">=</span><span class="mf">0.0025</span><span class="p">,</span> + <span class="n">betas</span><span class="o">=</span><span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.999</span><span class="p">),</span> + <span class="n">eps</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">warmup_steps</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">r</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> + <span class="n">weight_lr_power</span><span class="o">=</span><span class="mf">2.0</span><span class="p">,</span> + <span class="n">foreach</span><span class="o">=</span><span class="nb">hasattr</span><span class="p">(</span><span class="n">torch</span><span class="p">,</span> <span class="s2">&quot;_foreach_mul_&quot;</span><span class="p">)</span> + <span class="p">):</span> + + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> + <span class="n">betas</span><span class="o">=</span><span class="n">betas</span><span class="p">,</span> + <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">,</span> + <span class="n">r</span><span class="o">=</span><span class="n">r</span><span class="p">,</span> + <span class="n">k</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">warmup_steps</span><span class="o">=</span><span class="n">warmup_steps</span><span class="p">,</span> + <span class="n">train_mode</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">weight_sum</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> + <span class="n">lr_max</span><span class="o">=-</span><span class="mf">1.0</span><span class="p">,</span> + <span class="n">weight_lr_power</span><span class="o">=</span><span class="n">weight_lr_power</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">,</span> + <span class="n">foreach</span><span class="o">=</span><span class="n">foreach</span><span class="p">)</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + +<div class="viewcode-block" id="AdamWScheduleFree.eval"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adamw_schedule_free/index.html#lmflow.optim.adamw_schedule_free.AdamWScheduleFree.eval">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">eval</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">train_mode</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;train_mode&#39;</span><span class="p">]</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;betas&#39;</span><span class="p">]</span> + <span class="k">if</span> <span class="n">train_mode</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + <span class="k">if</span> <span class="s1">&#39;z&#39;</span> <span class="ow">in</span> <span class="n">state</span><span class="p">:</span> + <span class="c1"># Set p.data to x</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">lerp_</span><span class="p">(</span><span class="n">end</span><span class="o">=</span><span class="n">state</span><span class="p">[</span><span class="s1">&#39;z&#39;</span><span class="p">],</span> <span class="n">weight</span><span class="o">=</span><span class="mi">1</span><span class="o">-</span><span class="mi">1</span><span class="o">/</span><span class="n">beta1</span><span class="p">)</span> + <span class="n">group</span><span class="p">[</span><span class="s1">&#39;train_mode&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span></div> + + +<div class="viewcode-block" id="AdamWScheduleFree.train"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adamw_schedule_free/index.html#lmflow.optim.adamw_schedule_free.AdamWScheduleFree.train">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">train</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">train_mode</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;train_mode&#39;</span><span class="p">]</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;betas&#39;</span><span class="p">]</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">train_mode</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + <span class="k">if</span> <span class="s1">&#39;z&#39;</span> <span class="ow">in</span> <span class="n">state</span><span class="p">:</span> + <span class="c1"># Set p.data to y</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">lerp_</span><span class="p">(</span><span class="n">end</span><span class="o">=</span><span class="n">state</span><span class="p">[</span><span class="s1">&#39;z&#39;</span><span class="p">],</span> <span class="n">weight</span><span class="o">=</span><span class="mi">1</span><span class="o">-</span><span class="n">beta1</span><span class="p">)</span> + <span class="n">group</span><span class="p">[</span><span class="s1">&#39;train_mode&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span></div> + + +<div class="viewcode-block" id="AdamWScheduleFree.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adamw_schedule_free/index.html#lmflow.optim.adamw_schedule_free.AdamWScheduleFree.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Performs a single optimization step.</span> + +<span class="sd"> Arguments:</span> +<span class="sd"> closure (callable, optional): A closure that reevaluates the model</span> +<span class="sd"> and returns the loss.</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">eps</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">]</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;betas&#39;</span><span class="p">]</span> + <span class="n">decay</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">]</span> + <span class="n">k</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;k&#39;</span><span class="p">]</span> + <span class="n">r</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;r&#39;</span><span class="p">]</span> + <span class="n">warmup_steps</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;warmup_steps&#39;</span><span class="p">]</span> + <span class="n">weight_lr_power</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_lr_power&#39;</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">k</span> <span class="o">&lt;</span> <span class="n">warmup_steps</span><span class="p">:</span> + <span class="n">sched</span> <span class="o">=</span> <span class="p">(</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">warmup_steps</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">sched</span> <span class="o">=</span> <span class="mf">1.0</span> + + <span class="n">bias_correction2</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span> <span class="o">**</span> <span class="p">(</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> + <span class="n">lr</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr&#39;</span><span class="p">]</span><span class="o">*</span><span class="n">sched</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">bias_correction2</span><span class="p">)</span> + + <span class="n">lr_max</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr_max&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">lr</span><span class="p">,</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr_max&#39;</span><span class="p">])</span> + + <span class="n">weight</span> <span class="o">=</span> <span class="p">((</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">**</span><span class="n">r</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">lr_max</span><span class="o">**</span><span class="n">weight_lr_power</span><span class="p">)</span> + <span class="n">weight_sum</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_sum&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_sum&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="n">weight</span> + + <span class="k">try</span><span class="p">:</span> + <span class="n">ckp1</span> <span class="o">=</span> <span class="n">weight</span><span class="o">/</span><span class="n">weight_sum</span> + <span class="k">except</span> <span class="ne">ZeroDivisionError</span><span class="p">:</span> + <span class="n">ckp1</span> <span class="o">=</span> <span class="mi">0</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;train_mode&#39;</span><span class="p">]:</span> + <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Not in train mode!&quot;</span><span class="p">)</span> + + <span class="n">active_p</span> <span class="o">=</span> <span class="p">[</span><span class="n">p</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]</span> <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">]</span> + + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">active_p</span><span class="p">:</span> + <span class="k">if</span> <span class="s1">&#39;z&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">][</span><span class="s1">&#39;z&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">clone</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">][</span><span class="s1">&#39;exp_avg_sq&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;foreach&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">active_p</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">y</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">exp_avg_sq</span><span class="p">,</span> <span class="n">z</span> <span class="o">=</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="p">[(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> + <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">][</span><span class="s1">&#39;exp_avg_sq&#39;</span><span class="p">],</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">][</span><span class="s1">&#39;z&#39;</span><span class="p">])</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">active_p</span><span class="p">])</span> + + <span class="c1"># Decay the first and second moment running average coefficient</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_mul_</span><span class="p">(</span><span class="n">exp_avg_sq</span><span class="p">,</span> <span class="n">beta2</span><span class="p">)</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_addcmul_</span><span class="p">(</span><span class="n">exp_avg_sq</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span><span class="o">-</span><span class="n">beta2</span><span class="p">)</span> + <span class="n">denom</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_sqrt</span><span class="p">(</span><span class="n">exp_avg_sq</span><span class="p">)</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_add_</span><span class="p">(</span><span class="n">denom</span><span class="p">,</span> <span class="n">eps</span><span class="p">)</span> + + <span class="c1"># Normalize grad in-place for memory efficiency</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_div_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">denom</span><span class="p">)</span> + + <span class="c1"># Weight decay calculated at y</span> + <span class="k">if</span> <span class="n">decay</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_add_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">decay</span><span class="p">)</span> + + <span class="c1"># These operations update y in-place,</span> + <span class="c1"># without computing x explicitly.</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_lerp_</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="n">weight</span><span class="o">=</span><span class="n">ckp1</span><span class="p">)</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_add_</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">lr</span><span class="o">*</span><span class="p">(</span><span class="n">beta1</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">ckp1</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span> + + <span class="c1"># z step</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_sub_</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">lr</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">active_p</span><span class="p">:</span> + <span class="n">y</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">data</span> <span class="c1"># Notation to match theory</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span> + + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="n">z</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;z&#39;</span><span class="p">]</span> + <span class="n">exp_avg_sq</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg_sq&#39;</span><span class="p">]</span> + + <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta2</span><span class="p">)</span><span class="o">.</span><span class="n">addcmul_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span><span class="o">-</span><span class="n">beta2</span><span class="p">)</span> + <span class="n">denom</span> <span class="o">=</span> <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">eps</span><span class="p">)</span> + + <span class="c1"># Reuse grad buffer for memory efficiency</span> + <span class="n">grad_normalized</span> <span class="o">=</span> <span class="n">grad</span><span class="o">.</span><span class="n">div_</span><span class="p">(</span><span class="n">denom</span><span class="p">)</span> + + <span class="c1"># Weight decay calculated at y</span> + <span class="k">if</span> <span class="n">decay</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">grad_normalized</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">decay</span><span class="p">)</span> + + <span class="c1"># These operations update y in-place,</span> + <span class="c1"># without computing x explicitly.</span> + <span class="n">y</span><span class="o">.</span><span class="n">lerp_</span><span class="p">(</span><span class="n">end</span><span class="o">=</span><span class="n">z</span><span class="p">,</span> <span class="n">weight</span><span class="o">=</span><span class="n">ckp1</span><span class="p">)</span> + <span class="n">y</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">grad_normalized</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">lr</span><span class="o">*</span><span class="p">(</span><span class="n">beta1</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">ckp1</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span> + + <span class="c1"># z step</span> + <span class="n">z</span><span class="o">.</span><span class="n">sub_</span><span class="p">(</span><span class="n">grad_normalized</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">lr</span><span class="p">)</span> + + <span class="n">group</span><span class="p">[</span><span class="s1">&#39;k&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">k</span><span class="o">+</span><span class="mi">1</span> + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/adan.html b/_modules/lmflow/optim/adan.html new file mode 100644 index 000000000..2c4bc54da --- /dev/null +++ b/_modules/lmflow/optim/adan.html @@ -0,0 +1,739 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.adan &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/adan';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adan</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.adan</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">math</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">List</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch</span><span class="w"> </span><span class="kn">import</span> <span class="n">Tensor</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim.optimizer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + +<div class="viewcode-block" id="Adan"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adan/index.html#lmflow.optim.adan.Adan">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Adan</span><span class="p">(</span><span class="n">Optimizer</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Implements a pytorch variant of Adan.</span> + +<span class="sd"> Adan was proposed in</span> +<span class="sd"> Adan : Adaptive Nesterov Momentum Algorithm for Faster Optimizing Deep Models.</span> +<span class="sd"> https://arxiv.org/abs/2208.06677</span> + +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> + <span class="n">params</span><span class="p">,</span> + <span class="n">lr</span><span class="o">=</span><span class="mf">1e-3</span><span class="p">,</span> + <span class="n">betas</span><span class="o">=</span><span class="p">(</span><span class="mf">0.98</span><span class="p">,</span> <span class="mf">0.92</span><span class="p">,</span> <span class="mf">0.99</span><span class="p">),</span> + <span class="n">eps</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> + <span class="n">max_grad_norm</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> + <span class="n">no_prox</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">foreach</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">max_grad_norm</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Invalid Max grad norm: </span><span class="si">{}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">max_grad_norm</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">lr</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Invalid learning rate: </span><span class="si">{}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">lr</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">eps</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Invalid epsilon value: </span><span class="si">{}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">eps</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Invalid beta parameter at index 0: </span><span class="si">{}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> + <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Invalid beta parameter at index 1: </span><span class="si">{}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> + <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Invalid beta parameter at index 2: </span><span class="si">{}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> + <span class="n">betas</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span> + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> + <span class="n">betas</span><span class="o">=</span><span class="n">betas</span><span class="p">,</span> + <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">,</span> + <span class="n">max_grad_norm</span><span class="o">=</span><span class="n">max_grad_norm</span><span class="p">,</span> + <span class="n">no_prox</span><span class="o">=</span><span class="n">no_prox</span><span class="p">,</span> + <span class="n">foreach</span><span class="o">=</span><span class="n">foreach</span><span class="p">)</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + +<div class="viewcode-block" id="Adan.__setstate__"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adan/index.html#lmflow.optim.adan.Adan.__setstate__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__setstate__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span> + <span class="nb">super</span><span class="p">(</span><span class="n">Adan</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__setstate__</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">group</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s1">&#39;no_prox&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span></div> + + + <span class="nd">@torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">()</span> +<div class="viewcode-block" id="Adan.restart_opt"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adan/index.html#lmflow.optim.adan.Adan.restart_opt">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">restart_opt</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">group</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">requires_grad</span><span class="p">:</span> + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + <span class="c1"># State initialization</span> + + <span class="c1"># Exponential moving average of gradient values</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> + <span class="c1"># Exponential moving average of squared gradient values</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg_sq&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> + <span class="c1"># Exponential moving average of gradient difference</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg_diff&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="p">)</span></div> + + + <span class="nd">@torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">()</span> +<div class="viewcode-block" id="Adan.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adan/index.html#lmflow.optim.adan.Adan.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Performs a single optimization step.&quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">defaults</span><span class="p">[</span><span class="s1">&#39;max_grad_norm&#39;</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">device</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;params&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">device</span> + <span class="n">global_grad_norm</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">device</span><span class="p">)</span> + + <span class="n">max_grad_norm</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">defaults</span><span class="p">[</span><span class="s1">&#39;max_grad_norm&#39;</span><span class="p">],</span> <span class="n">device</span><span class="o">=</span><span class="n">device</span><span class="p">)</span> + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> + <span class="n">global_grad_norm</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">grad</span><span class="o">.</span><span class="n">pow</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">())</span> + + <span class="n">global_grad_norm</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">global_grad_norm</span><span class="p">)</span> <span class="o">+</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">]</span> + + <span class="n">clip_global_grad_norm</span> <span class="o">=</span> \ + <span class="n">torch</span><span class="o">.</span><span class="n">clamp</span><span class="p">(</span><span class="n">max_grad_norm</span> <span class="o">/</span> <span class="n">global_grad_norm</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="mf">1.0</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">clip_global_grad_norm</span> <span class="o">=</span> <span class="mf">1.0</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">params_with_grad</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">grads</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">exp_avgs</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">exp_avg_sqs</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">exp_avg_diffs</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">pre_grads</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span><span class="p">,</span> <span class="n">beta3</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;betas&#39;</span><span class="p">]</span> + <span class="c1"># assume same step across group now to simplify things</span> + <span class="c1"># per parameter step can be easily support</span> + <span class="c1"># by making it tensor, or pass list into kernel</span> + <span class="k">if</span> <span class="s1">&#39;step&#39;</span> <span class="ow">in</span> <span class="n">group</span><span class="p">:</span> + <span class="n">group</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">group</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span> + + <span class="n">bias_correction1</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">-</span> <span class="n">beta1</span><span class="o">**</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> + <span class="n">bias_correction2</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">-</span> <span class="n">beta2</span><span class="o">**</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> + <span class="n">bias_correction3</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">-</span> <span class="n">beta3</span><span class="o">**</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> + + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">params_with_grad</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> + <span class="n">grads</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="p">)</span> + + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg_sq&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg_diff&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> + + <span class="k">if</span> <span class="s1">&#39;pre_grad&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">state</span> <span class="ow">or</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> + <span class="c1"># at first step grad wouldn&#39;t be clipped</span> + <span class="c1"># by `clip_global_grad_norm`</span> + <span class="c1"># this is only to simplify implementation</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;pre_grad&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> + + <span class="n">exp_avgs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">])</span> + <span class="n">exp_avg_sqs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg_sq&#39;</span><span class="p">])</span> + <span class="n">exp_avg_diffs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg_diff&#39;</span><span class="p">])</span> + <span class="n">pre_grads</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="s1">&#39;pre_grad&#39;</span><span class="p">])</span> + + <span class="n">kwargs</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">params</span><span class="o">=</span><span class="n">params_with_grad</span><span class="p">,</span> + <span class="n">grads</span><span class="o">=</span><span class="n">grads</span><span class="p">,</span> + <span class="n">exp_avgs</span><span class="o">=</span><span class="n">exp_avgs</span><span class="p">,</span> + <span class="n">exp_avg_sqs</span><span class="o">=</span><span class="n">exp_avg_sqs</span><span class="p">,</span> + <span class="n">exp_avg_diffs</span><span class="o">=</span><span class="n">exp_avg_diffs</span><span class="p">,</span> + <span class="n">pre_grads</span><span class="o">=</span><span class="n">pre_grads</span><span class="p">,</span> + <span class="n">beta1</span><span class="o">=</span><span class="n">beta1</span><span class="p">,</span> + <span class="n">beta2</span><span class="o">=</span><span class="n">beta2</span><span class="p">,</span> + <span class="n">beta3</span><span class="o">=</span><span class="n">beta3</span><span class="p">,</span> + <span class="n">bias_correction1</span><span class="o">=</span><span class="n">bias_correction1</span><span class="p">,</span> + <span class="n">bias_correction2</span><span class="o">=</span><span class="n">bias_correction2</span><span class="p">,</span> + <span class="n">bias_correction3_sqrt</span><span class="o">=</span><span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">bias_correction3</span><span class="p">),</span> + <span class="n">lr</span><span class="o">=</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr&#39;</span><span class="p">],</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">],</span> + <span class="n">eps</span><span class="o">=</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">],</span> + <span class="n">no_prox</span><span class="o">=</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;no_prox&#39;</span><span class="p">],</span> + <span class="n">clip_global_grad_norm</span><span class="o">=</span><span class="n">clip_global_grad_norm</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;foreach&#39;</span><span class="p">]:</span> + <span class="n">copy_grads</span> <span class="o">=</span> <span class="n">_multi_tensor_adan</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">copy_grads</span> <span class="o">=</span> <span class="n">_single_tensor_adan</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">p</span><span class="p">,</span> <span class="n">copy_grad</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">params_with_grad</span><span class="p">,</span> <span class="n">copy_grads</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">][</span><span class="s1">&#39;pre_grad&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">copy_grad</span></div> +</div> + + + +<div class="viewcode-block" id="_single_tensor_adan"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adan/index.html#lmflow.optim.adan._single_tensor_adan">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_single_tensor_adan</span><span class="p">(</span> + <span class="n">params</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Tensor</span><span class="p">],</span> + <span class="n">grads</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Tensor</span><span class="p">],</span> + <span class="n">exp_avgs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Tensor</span><span class="p">],</span> + <span class="n">exp_avg_sqs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Tensor</span><span class="p">],</span> + <span class="n">exp_avg_diffs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Tensor</span><span class="p">],</span> + <span class="n">pre_grads</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Tensor</span><span class="p">],</span> + <span class="o">*</span><span class="p">,</span> + <span class="n">beta1</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">beta2</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">beta3</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">bias_correction1</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">bias_correction2</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">bias_correction3_sqrt</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">lr</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">eps</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">no_prox</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> + <span class="n">clip_global_grad_norm</span><span class="p">:</span> <span class="n">Tensor</span><span class="p">,</span> +<span class="p">):</span> + <span class="n">copy_grads</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">param</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">params</span><span class="p">):</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">grads</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">exp_avg</span> <span class="o">=</span> <span class="n">exp_avgs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">exp_avg_sq</span> <span class="o">=</span> <span class="n">exp_avg_sqs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">exp_avg_diff</span> <span class="o">=</span> <span class="n">exp_avg_diffs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">pre_grad</span> <span class="o">=</span> <span class="n">pre_grads</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + + <span class="n">grad</span> <span class="o">=</span> <span class="n">grad</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">clip_global_grad_norm</span><span class="p">)</span> + <span class="n">copy_grads</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">grad</span><span class="o">.</span><span class="n">clone</span><span class="p">())</span> + + <span class="n">diff</span> <span class="o">=</span> <span class="n">grad</span> <span class="o">-</span> <span class="n">pre_grad</span> + <span class="n">update</span> <span class="o">=</span> <span class="n">grad</span> <span class="o">+</span> <span class="n">beta2</span> <span class="o">*</span> <span class="n">diff</span> + + <span class="n">exp_avg</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">)</span> <span class="c1"># m_t</span> + <span class="n">exp_avg_diff</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta2</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span><span class="p">)</span> <span class="c1"># diff_t</span> + <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta3</span><span class="p">)</span><span class="o">.</span><span class="n">addcmul_</span><span class="p">(</span><span class="n">update</span><span class="p">,</span> <span class="n">update</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta3</span><span class="p">)</span> <span class="c1"># n_t</span> + + <span class="n">denom</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span> <span class="o">/</span> <span class="n">bias_correction3_sqrt</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">eps</span><span class="p">)</span> + <span class="n">update</span> <span class="o">=</span> <span class="n">exp_avg</span> <span class="o">/</span> <span class="n">bias_correction1</span> + <span class="n">update</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">beta2</span> <span class="o">*</span> <span class="n">exp_avg_diff</span> <span class="o">/</span> <span class="n">bias_correction2</span><span class="p">)</span><span class="o">.</span><span class="n">div_</span><span class="p">(</span><span class="n">denom</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">no_prox</span><span class="p">:</span> + <span class="n">param</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">lr</span> <span class="o">*</span> <span class="n">weight_decay</span><span class="p">)</span> + <span class="n">param</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">update</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=-</span><span class="n">lr</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">param</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">update</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=-</span><span class="n">lr</span><span class="p">)</span> + <span class="n">param</span><span class="o">.</span><span class="n">div_</span><span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">lr</span> <span class="o">*</span> <span class="n">weight_decay</span><span class="p">)</span> + <span class="k">return</span> <span class="n">copy_grads</span></div> + + + +<div class="viewcode-block" id="_multi_tensor_adan"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/adan/index.html#lmflow.optim.adan._multi_tensor_adan">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_multi_tensor_adan</span><span class="p">(</span> + <span class="n">params</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Tensor</span><span class="p">],</span> + <span class="n">grads</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Tensor</span><span class="p">],</span> + <span class="n">exp_avgs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Tensor</span><span class="p">],</span> + <span class="n">exp_avg_sqs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Tensor</span><span class="p">],</span> + <span class="n">exp_avg_diffs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Tensor</span><span class="p">],</span> + <span class="n">pre_grads</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Tensor</span><span class="p">],</span> + <span class="o">*</span><span class="p">,</span> + <span class="n">beta1</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">beta2</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">beta3</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">bias_correction1</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">bias_correction2</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">bias_correction3_sqrt</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">lr</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">eps</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">no_prox</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> + <span class="n">clip_global_grad_norm</span><span class="p">:</span> <span class="n">Tensor</span><span class="p">,</span> +<span class="p">):</span> + <span class="k">if</span> <span class="n">clip_global_grad_norm</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_mul_</span><span class="p">(</span><span class="n">grads</span><span class="p">,</span> <span class="n">clip_global_grad_norm</span><span class="o">.</span><span class="n">item</span><span class="p">())</span> + <span class="n">copy_grads</span> <span class="o">=</span> <span class="p">[</span><span class="n">g</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span> <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="n">grads</span><span class="p">]</span> + + <span class="n">diff</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_sub</span><span class="p">(</span><span class="n">grads</span><span class="p">,</span> <span class="n">pre_grads</span><span class="p">)</span> + <span class="c1"># NOTE: line below while looking identical gives different result,</span> + <span class="c1"># due to float precision errors.</span> + <span class="c1"># using mul+add produces identical results to single-tensor,</span> + <span class="c1"># using add+alpha doesn&#39;t</span> + <span class="c1"># update = torch._foreach_add(grads, torch._foreach_mul(diff, beta2))</span> + <span class="n">update</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_add</span><span class="p">(</span><span class="n">grads</span><span class="p">,</span> <span class="n">diff</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">beta2</span><span class="p">)</span> + + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_mul_</span><span class="p">(</span><span class="n">exp_avgs</span><span class="p">,</span> <span class="n">beta1</span><span class="p">)</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_add_</span><span class="p">(</span><span class="n">exp_avgs</span><span class="p">,</span> <span class="n">grads</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">)</span> <span class="c1"># m_t</span> + + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_mul_</span><span class="p">(</span><span class="n">exp_avg_diffs</span><span class="p">,</span> <span class="n">beta2</span><span class="p">)</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_add_</span><span class="p">(</span><span class="n">exp_avg_diffs</span><span class="p">,</span> <span class="n">diff</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span><span class="p">)</span> <span class="c1"># diff_t</span> + + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_mul_</span><span class="p">(</span><span class="n">exp_avg_sqs</span><span class="p">,</span> <span class="n">beta3</span><span class="p">)</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_addcmul_</span><span class="p">(</span> + <span class="n">exp_avg_sqs</span><span class="p">,</span> <span class="n">update</span><span class="p">,</span> <span class="n">update</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta3</span><span class="p">)</span> <span class="c1"># n_t</span> + + <span class="n">denom</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_sqrt</span><span class="p">(</span><span class="n">exp_avg_sqs</span><span class="p">)</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_div_</span><span class="p">(</span><span class="n">denom</span><span class="p">,</span> <span class="n">bias_correction3_sqrt</span><span class="p">)</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_add_</span><span class="p">(</span><span class="n">denom</span><span class="p">,</span> <span class="n">eps</span><span class="p">)</span> + + <span class="n">update</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_div</span><span class="p">(</span><span class="n">exp_avgs</span><span class="p">,</span> <span class="n">bias_correction1</span><span class="p">)</span> + <span class="c1"># NOTE: same issue as above.</span> + <span class="c1"># beta2 * diff / bias_correction2 != diff * (beta2 / bias_correction2) # noqa</span> + <span class="c1"># using faster version by default. uncomment for tests to pass</span> + <span class="c1"># torch._foreach_add_(update, torch._foreach_div(torch._foreach_mul(exp_avg_diffs, beta2), bias_correction2)) # noqa</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_add_</span><span class="p">(</span> + <span class="n">update</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_mul</span><span class="p">(</span><span class="n">exp_avg_diffs</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">/</span> <span class="n">bias_correction2</span><span class="p">))</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_div_</span><span class="p">(</span><span class="n">update</span><span class="p">,</span> <span class="n">denom</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">no_prox</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_mul_</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">lr</span> <span class="o">*</span> <span class="n">weight_decay</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_add_</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">update</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=-</span><span class="n">lr</span><span class="p">)</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_div_</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="mi">1</span> <span class="o">+</span> <span class="n">lr</span> <span class="o">*</span> <span class="n">weight_decay</span><span class="p">)</span> + <span class="k">return</span> <span class="n">copy_grads</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/dummy.html b/_modules/lmflow/optim/dummy.html new file mode 100644 index 000000000..d5b9caf91 --- /dev/null +++ b/_modules/lmflow/optim/dummy.html @@ -0,0 +1,527 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.dummy &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/dummy';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.dummy</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.dummy</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;Dummy Optimizer.</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">math</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">warnings</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Iterable</span><span class="p">,</span> <span class="n">Tuple</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch</span><span class="w"> </span><span class="kn">import</span> <span class="n">nn</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + +<div class="viewcode-block" id="Dummy"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/dummy/index.html#lmflow.optim.dummy.Dummy">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Dummy</span><span class="p">(</span><span class="n">Optimizer</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> An dummy optimizer that does nothing.</span> + +<span class="sd"> Parameters:</span> +<span class="sd"> params (:obj:`Iterable[nn.parameter.Parameter]`):</span> +<span class="sd"> Iterable of parameters to optimize or dictionaries defining parameter groups.</span> +<span class="sd"> lr (:obj:`float`, `optional`, defaults to 0):</span> +<span class="sd"> The learning rate to use.</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">params</span><span class="p">:</span> <span class="n">Iterable</span><span class="p">[</span><span class="n">nn</span><span class="o">.</span><span class="n">parameter</span><span class="o">.</span><span class="n">Parameter</span><span class="p">],</span> + <span class="n">lr</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.</span><span class="p">,</span> + <span class="n">betas</span><span class="p">:</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.999</span><span class="p">),</span> + <span class="n">weight_decay</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">,</span> + <span class="p">):</span> + <span class="k">if</span> <span class="n">lr</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Invalid learning rate: </span><span class="si">{</span><span class="n">lr</span><span class="si">}</span><span class="s2"> - should be &gt;= 0.0&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Invalid beta parameter: </span><span class="si">{</span><span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s2"> - should be in [0.0, 1.0)&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Invalid beta parameter: </span><span class="si">{</span><span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2"> - should be in [0.0, 1.0)&quot;</span><span class="p">)</span> + <span class="n">defaults</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;lr&quot;</span><span class="p">:</span> <span class="n">lr</span><span class="p">,</span> <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="n">betas</span><span class="p">,</span> <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="n">weight_decay</span><span class="p">}</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + + + <span class="nd">@torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">()</span> +<div class="viewcode-block" id="Dummy.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/dummy/index.html#lmflow.optim.dummy.Dummy.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span><span class="p">:</span> <span class="n">Callable</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Performs a single optimization step.</span> + +<span class="sd"> Arguments:</span> +<span class="sd"> closure (:obj:`Callable`, `optional`): A closure that reevaluates the model and returns the loss.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;params&quot;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> + <span class="k">if</span> <span class="n">grad</span><span class="o">.</span><span class="n">is_sparse</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Dummy does not support sparse gradients yet&quot;</span><span class="p">)</span> + + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="c1"># State initialization</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg2&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> + + <span class="c1"># v := exp_avg</span> + <span class="c1"># m := double_exp_avg</span> + <span class="n">v</span><span class="p">,</span> <span class="n">m</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg&quot;</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg2&quot;</span><span class="p">]</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;betas&quot;</span><span class="p">]</span> + <span class="n">step_size</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;lr&quot;</span><span class="p">]</span> + + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="n">p</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=-</span><span class="mf">0.0</span><span class="p">)</span> + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;weight_decay&quot;</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="n">p</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="p">(</span><span class="o">-</span><span class="n">group</span><span class="p">[</span><span class="s2">&quot;lr&quot;</span><span class="p">]</span> <span class="o">*</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;weight_decay&quot;</span><span class="p">]))</span> + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/lamb.html b/_modules/lmflow/optim/lamb.html new file mode 100644 index 000000000..fed2a1e71 --- /dev/null +++ b/_modules/lmflow/optim/lamb.html @@ -0,0 +1,588 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.lamb &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/lamb';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.lamb</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.lamb</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">math</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim.optimizer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + +<div class="viewcode-block" id="Lamb"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/lamb/index.html#lmflow.optim.lamb.Lamb">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Lamb</span><span class="p">(</span><span class="n">Optimizer</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Implements Lamb algorithm.</span> + +<span class="sd"> It has been proposed in `Large Batch Optimization for Deep Learning:</span> +<span class="sd"> Training BERT in 76 minutes`</span> +<span class="sd"> https://arxiv.org/abs/1904.00962</span> + +<span class="sd"> Note:</span> +<span class="sd"> Reference code: https://github.com/cybertronai/pytorch-lamb</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">params</span><span class="p">,</span> + <span class="n">lr</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-3</span><span class="p">,</span> + <span class="n">betas</span> <span class="o">=</span> <span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.999</span><span class="p">),</span> + <span class="n">eps</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-6</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> + <span class="n">clamp_value</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">10</span><span class="p">,</span> + <span class="n">adam</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">debias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="n">lr</span> <span class="o">&lt;=</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid learning rate: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">lr</span><span class="p">))</span> + <span class="k">if</span> <span class="n">eps</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid epsilon value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">eps</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid beta parameter at index 0: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + <span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid beta parameter at index 1: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">weight_decay</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid weight_decay value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">weight_decay</span><span class="p">)</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">clamp_value</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid clamp value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">clamp_value</span><span class="p">))</span> + + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> <span class="n">betas</span><span class="o">=</span><span class="n">betas</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">)</span> +<div class="viewcode-block" id="Lamb.clamp_value"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/lamb/index.html#lmflow.optim.lamb.Lamb.clamp_value">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">clamp_value</span> <span class="o">=</span> <span class="n">clamp_value</span></div> + +<div class="viewcode-block" id="Lamb.adam"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/lamb/index.html#lmflow.optim.lamb.Lamb.adam">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">adam</span> <span class="o">=</span> <span class="n">adam</span></div> + +<div class="viewcode-block" id="Lamb.debias"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/lamb/index.html#lmflow.optim.lamb.Lamb.debias">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">debias</span> <span class="o">=</span> <span class="n">debias</span></div> + + + <span class="nb">super</span><span class="p">(</span><span class="n">Lamb</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + +<div class="viewcode-block" id="Lamb.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/lamb/index.html#lmflow.optim.lamb.Lamb.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Performs a single optimization step.</span> + +<span class="sd"> Arguments:</span> +<span class="sd"> closure: A closure that reevaluates the model and returns the loss.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;params&quot;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span> + <span class="k">if</span> <span class="n">grad</span><span class="o">.</span><span class="n">is_sparse</span><span class="p">:</span> + <span class="n">msg</span> <span class="o">=</span> <span class="p">(</span> + <span class="s2">&quot;Lamb does not support sparse gradients, &quot;</span> + <span class="s2">&quot;please consider SparseAdam instead&quot;</span> + <span class="p">)</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> + + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="c1"># State initialization</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="c1"># Exponential moving average of gradient values</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span> + <span class="n">p</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span> + <span class="p">)</span> + <span class="c1"># Exponential moving average of squared gradient values</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg_sq&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span> + <span class="n">p</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span> + <span class="p">)</span> + + <span class="n">exp_avg</span><span class="p">,</span> <span class="n">exp_avg_sq</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg&quot;</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg_sq&quot;</span><span class="p">]</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;betas&quot;</span><span class="p">]</span> + + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="c1"># Decay the first and second moment running average coefficient</span> + <span class="c1"># m_t</span> + <span class="n">exp_avg</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">)</span> + <span class="c1"># v_t</span> + <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta2</span><span class="p">)</span><span class="o">.</span><span class="n">addcmul_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span><span class="p">)</span> + + <span class="c1"># Paper v3 does not use debiasing.</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">debias</span><span class="p">:</span> + <span class="n">bias_correction</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">])</span> + <span class="n">bias_correction</span> <span class="o">/=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">bias_correction</span> <span class="o">=</span> <span class="mi">1</span> + + <span class="c1"># Apply bias to lr to avoid broadcast.</span> + <span class="n">step_size</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;lr&quot;</span><span class="p">]</span> <span class="o">*</span> <span class="n">bias_correction</span> + + <span class="n">weight_norm</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">clamp</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">clamp_value</span><span class="p">)</span> + + <span class="n">adam_step</span> <span class="o">=</span> <span class="n">exp_avg</span> <span class="o">/</span> <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s2">&quot;eps&quot;</span><span class="p">])</span> + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;weight_decay&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">adam_step</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">group</span><span class="p">[</span><span class="s2">&quot;weight_decay&quot;</span><span class="p">])</span> + + <span class="n">adam_norm</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">adam_step</span><span class="p">)</span> + <span class="k">if</span> <span class="n">weight_norm</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">adam_norm</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">trust_ratio</span> <span class="o">=</span> <span class="mi">1</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">trust_ratio</span> <span class="o">=</span> <span class="n">weight_norm</span> <span class="o">/</span> <span class="n">adam_norm</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;weight_norm&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">weight_norm</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;adam_norm&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">adam_norm</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;trust_ratio&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">trust_ratio</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">adam</span><span class="p">:</span> + <span class="n">trust_ratio</span> <span class="o">=</span> <span class="mi">1</span> + + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">adam_step</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=-</span><span class="n">step_size</span> <span class="o">*</span> <span class="n">trust_ratio</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/lars.html b/_modules/lmflow/optim/lars.html new file mode 100644 index 000000000..1204fc5d3 --- /dev/null +++ b/_modules/lmflow/optim/lars.html @@ -0,0 +1,593 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.lars &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/lars';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.lars</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.lars</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim.optimizer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + +<div class="viewcode-block" id="LARS"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/lars/index.html#lmflow.optim.lars.LARS">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">LARS</span><span class="p">(</span><span class="n">Optimizer</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Extends SGD in PyTorch with LARS scaling from the paper</span> +<span class="sd"> `Large batch training of Convolutional Networks`__.</span> +<span class="sd"> .. note::</span> +<span class="sd"> The application of momentum in the SGD part is modified according to</span> +<span class="sd"> the PyTorch standards. LARS scaling fits into the equation in the</span> +<span class="sd"> following fashion.</span> + +<span class="sd"> .. math::</span> +<span class="sd"> \begin{aligned}</span> +<span class="sd"> g_{t+1} &amp; = \text{lars_lr} * (\beta * p_{t} + g_{t+1}), \\</span> +<span class="sd"> v_{t+1} &amp; = \\mu * v_{t} + g_{t+1}, \\</span> +<span class="sd"> p_{t+1} &amp; = p_{t} - \text{lr} * v_{t+1},</span> +<span class="sd"> \\end{aligned}</span> + +<span class="sd"> where :math:`p`, :math:`g`, :math:`v`, :math:`\\mu` and :math:`\beta`</span> +<span class="sd"> denote the parameters, gradient, velocity, momentum, and weight decay</span> +<span class="sd"> respectively. The :math:`lars_lr` is defined by Eq. 6 in the paper.</span> +<span class="sd"> The Nesterov version is analogously modified.</span> + +<span class="sd"> .. warning::</span> +<span class="sd"> Parameters with weight decay set to 0 will automatically be excluded</span> +<span class="sd"> from layer-wise LR scaling. This is to ensure consistency with papers</span> +<span class="sd"> like SimCLR and BYOL.</span> + + +<span class="sd"> __ https://arxiv.org/pdf/1708.03888.pdf</span> + +<span class="sd"> Note:</span> +<span class="sd"> Reference code: https://github.com/PyTorchLightning/lightning-bolts/</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">params</span><span class="p">,</span> + <span class="n">lr</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-2</span><span class="p">,</span> + <span class="n">momentum</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">,</span> + <span class="n">dampening</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">,</span> + <span class="n">nesterov</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">trust_coefficient</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.01</span><span class="p">,</span> + <span class="n">eps</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-8</span><span class="p">,</span> + <span class="p">):</span> + <span class="k">if</span> <span class="n">lr</span> <span class="o">&lt;=</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid learning rate: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">lr</span><span class="p">))</span> + <span class="k">if</span> <span class="n">eps</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid epsilon value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">eps</span><span class="p">))</span> + <span class="k">if</span> <span class="n">momentum</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid momentum value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">momentum</span><span class="p">))</span> + <span class="k">if</span> <span class="n">dampening</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid dampening value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">dampening</span><span class="p">))</span> + <span class="k">if</span> <span class="n">weight_decay</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid weight_decay value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">weight_decay</span><span class="p">)</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">trust_coefficient</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid trust_coefficient value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">trust_coefficient</span><span class="p">)</span> + <span class="p">)</span> + + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> + <span class="n">momentum</span><span class="o">=</span><span class="n">momentum</span><span class="p">,</span> + <span class="n">dampening</span><span class="o">=</span><span class="n">dampening</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">,</span> + <span class="n">nesterov</span><span class="o">=</span><span class="n">nesterov</span><span class="p">,</span> + <span class="n">trust_coefficient</span><span class="o">=</span><span class="n">trust_coefficient</span><span class="p">,</span> + <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">nesterov</span> <span class="ow">and</span> <span class="p">(</span><span class="n">momentum</span> <span class="o">&lt;=</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">dampening</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Nesterov momentum requires a momentum and zero dampening&quot;</span> + <span class="p">)</span> + + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + +<div class="viewcode-block" id="LARS.__setstate__"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/lars/index.html#lmflow.optim.lars.LARS.__setstate__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__setstate__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">__setstate__</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">group</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">&quot;nesterov&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span></div> + + + <span class="nd">@torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">()</span> +<div class="viewcode-block" id="LARS.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/lars/index.html#lmflow.optim.lars.LARS.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Performs a single optimization step.</span> + +<span class="sd"> Arguments:</span> +<span class="sd"> closure: A closure that reevaluates the model and returns the loss.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">enable_grad</span><span class="p">():</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="c1"># exclude scaling for params with 0 weight decay</span> + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">weight_decay</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;weight_decay&quot;</span><span class="p">]</span> + <span class="n">momentum</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;momentum&quot;</span><span class="p">]</span> + <span class="n">dampening</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;dampening&quot;</span><span class="p">]</span> + <span class="n">nesterov</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;nesterov&quot;</span><span class="p">]</span> + + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;params&quot;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + + <span class="n">d_p</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> + <span class="n">p_norm</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + <span class="n">g_norm</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + + <span class="c1"># lars scaling + weight decay part</span> + <span class="k">if</span> <span class="n">weight_decay</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">if</span> <span class="n">p_norm</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">g_norm</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">lars_lr</span> <span class="o">=</span> <span class="n">p_norm</span> <span class="o">/</span> <span class="p">(</span> + <span class="n">g_norm</span> <span class="o">+</span> <span class="n">p_norm</span> <span class="o">*</span> <span class="n">weight_decay</span> <span class="o">+</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;eps&quot;</span><span class="p">]</span> + <span class="p">)</span> + <span class="n">lars_lr</span> <span class="o">*=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;trust_coefficient&quot;</span><span class="p">]</span> + + <span class="n">d_p</span> <span class="o">=</span> <span class="n">d_p</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">)</span> + <span class="n">d_p</span> <span class="o">*=</span> <span class="n">lars_lr</span> + + <span class="k">if</span> <span class="n">momentum</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">param_state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + <span class="k">if</span> <span class="s2">&quot;momentum_buffer&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">param_state</span><span class="p">:</span> + <span class="n">buf</span> <span class="o">=</span> <span class="n">param_state</span><span class="p">[</span><span class="s2">&quot;momentum_buffer&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">clone</span><span class="p">(</span> + <span class="n">d_p</span> + <span class="p">)</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">buf</span> <span class="o">=</span> <span class="n">param_state</span><span class="p">[</span><span class="s2">&quot;momentum_buffer&quot;</span><span class="p">]</span> + <span class="n">buf</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">momentum</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">d_p</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dampening</span><span class="p">)</span> + <span class="k">if</span> <span class="n">nesterov</span><span class="p">:</span> + <span class="n">d_p</span> <span class="o">=</span> <span class="n">d_p</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">momentum</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">d_p</span> <span class="o">=</span> <span class="n">buf</span> + + <span class="n">p</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">d_p</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=-</span><span class="n">group</span><span class="p">[</span><span class="s2">&quot;lr&quot;</span><span class="p">])</span> + + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/nadam.html b/_modules/lmflow/optim/nadam.html new file mode 100644 index 000000000..230b76958 --- /dev/null +++ b/_modules/lmflow/optim/nadam.html @@ -0,0 +1,523 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.nadam &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/nadam';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.nadam</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.nadam</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">math</span> + +<div class="viewcode-block" id="NAdam"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/nadam/index.html#lmflow.optim.nadam.NAdam">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">NAdam</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Optimizer</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">2e-3</span><span class="p">,</span> <span class="n">betas</span><span class="o">=</span><span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.999</span><span class="p">),</span> <span class="n">eps</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">momentum_decay</span><span class="o">=</span><span class="mf">4e-3</span><span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">lr</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid learning rate: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">lr</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">eps</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid epsilon value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">eps</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid beta parameter at index 0: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid beta parameter at index 1: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">weight_decay</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid weight_decay value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">weight_decay</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">momentum_decay</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid momentum_decay value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">momentum_decay</span><span class="p">))</span> + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> <span class="n">betas</span><span class="o">=</span><span class="n">betas</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">,</span> <span class="n">momentum_decay</span><span class="o">=</span><span class="n">momentum_decay</span><span class="p">)</span> + <span class="nb">super</span><span class="p">(</span><span class="n">NAdam</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + +<div class="viewcode-block" id="NAdam.__setstate__"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/nadam/index.html#lmflow.optim.nadam.NAdam.__setstate__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__setstate__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span> + <span class="nb">super</span><span class="p">(</span><span class="n">NAdam</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__setstate__</span><span class="p">(</span><span class="n">state</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="NAdam.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/nadam/index.html#lmflow.optim.nadam.NAdam.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span> + <span class="k">if</span> <span class="n">grad</span><span class="o">.</span><span class="n">is_sparse</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s1">&#39;NAdam does not support sparse gradients&#39;</span><span class="p">)</span> + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="c1"># State initialization</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;m_prev&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;v&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + + <span class="n">m_prev</span><span class="p">,</span> <span class="n">v</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;m_prev&#39;</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;v&#39;</span><span class="p">]</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;betas&#39;</span><span class="p">]</span> + + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="n">bias_correction1</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> + <span class="n">bias_correction2</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">grad</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">],</span> <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + + <span class="n">m</span> <span class="o">=</span> <span class="n">beta1</span> <span class="o">*</span> <span class="n">m_prev</span> <span class="o">+</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">)</span> <span class="o">*</span> <span class="n">grad</span> + <span class="n">v</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta2</span><span class="p">)</span><span class="o">.</span><span class="n">addcmul_</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">grad</span><span class="p">)</span> + + <span class="n">m_hat</span> <span class="o">=</span> <span class="n">m</span> <span class="o">/</span> <span class="n">bias_correction1</span> + <span class="n">v_hat</span> <span class="o">=</span> <span class="n">v</span> <span class="o">/</span> <span class="n">bias_correction2</span> + + <span class="n">denom</span> <span class="o">=</span> <span class="n">v_hat</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">])</span> + + <span class="n">momentum_decay</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;momentum_decay&#39;</span><span class="p">]</span> + <span class="n">m_prev</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">,</span> <span class="n">grad</span><span class="p">)</span> + <span class="n">m_prev_hat</span> <span class="o">=</span> <span class="n">m_prev</span> <span class="o">/</span> <span class="n">bias_correction1</span> + + <span class="n">step_size</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr&#39;</span><span class="p">]</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">bias_correction2</span><span class="p">)</span> <span class="o">/</span> <span class="n">bias_correction1</span> + + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">addcdiv_</span><span class="p">(</span><span class="o">-</span><span class="n">step_size</span><span class="p">,</span> <span class="n">m_hat</span> <span class="o">+</span> <span class="n">momentum_decay</span> <span class="o">*</span> <span class="n">m_prev_hat</span><span class="p">,</span> <span class="n">denom</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/novograd.html b/_modules/lmflow/optim/novograd.html new file mode 100644 index 000000000..a6af40ae8 --- /dev/null +++ b/_modules/lmflow/optim/novograd.html @@ -0,0 +1,534 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.novograd &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/novograd';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.novograd</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.novograd</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.optim</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">optim</span> + +<div class="viewcode-block" id="NovoGrad"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/novograd/index.html#lmflow.optim.novograd.NovoGrad">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">NovoGrad</span><span class="p">(</span><span class="n">optim</span><span class="o">.</span><span class="n">Optimizer</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">0.01</span><span class="p">,</span> <span class="n">betas</span><span class="o">=</span><span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.999</span><span class="p">),</span> <span class="n">eps</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">grad_averaging</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">amsgrad</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">lr</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid learning rate: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">lr</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">eps</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid epsilon value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">eps</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid beta parameter at index 0: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid beta parameter at index 1: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">weight_decay</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid weight_decay value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">weight_decay</span><span class="p">))</span> + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> <span class="n">betas</span><span class="o">=</span><span class="n">betas</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">,</span> <span class="n">grad_averaging</span><span class="o">=</span><span class="n">grad_averaging</span><span class="p">,</span> <span class="n">amsgrad</span><span class="o">=</span><span class="n">amsgrad</span><span class="p">)</span> + <span class="nb">super</span><span class="p">(</span><span class="n">NovoGrad</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + +<div class="viewcode-block" id="NovoGrad.__setstate__"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/novograd/index.html#lmflow.optim.novograd.NovoGrad.__setstate__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__setstate__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span> + <span class="nb">super</span><span class="p">(</span><span class="n">NovoGrad</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__setstate__</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">group</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s1">&#39;amsgrad&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="NovoGrad.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/novograd/index.html#lmflow.optim.novograd.NovoGrad.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span> + <span class="k">if</span> <span class="n">grad</span><span class="o">.</span><span class="n">is_sparse</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s1">&#39;NovoGrad does not support sparse gradients&#39;</span><span class="p">)</span> + <span class="n">amsgrad</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;amsgrad&#39;</span><span class="p">]</span> + + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="c1"># State initialization</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg_sq&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros</span><span class="p">([])</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="k">if</span> <span class="n">amsgrad</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;max_exp_avg_sq&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros</span><span class="p">([])</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + + <span class="n">exp_avg</span><span class="p">,</span> <span class="n">exp_avg_sq</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg_sq&#39;</span><span class="p">]</span> + <span class="k">if</span> <span class="n">amsgrad</span><span class="p">:</span> + <span class="n">max_exp_avg_sq</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s1">&#39;max_exp_avg_sq&#39;</span><span class="p">]</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;betas&#39;</span><span class="p">]</span> + + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="n">norm</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">pow</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> + + <span class="k">if</span> <span class="n">exp_avg_sq</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">copy_</span><span class="p">(</span><span class="n">norm</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta2</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span><span class="p">,</span> <span class="n">norm</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">amsgrad</span><span class="p">:</span> + <span class="c1"># Maintains the maximum of all 2nd moment running avg. till now</span> + <span class="n">torch</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">max_exp_avg_sq</span><span class="p">,</span> <span class="n">exp_avg_sq</span><span class="p">,</span> <span class="n">out</span><span class="o">=</span><span class="n">max_exp_avg_sq</span><span class="p">)</span> + <span class="c1"># Use the max. for normalizing running avg. of gradient</span> + <span class="n">denom</span> <span class="o">=</span> <span class="n">max_exp_avg_sq</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">denom</span> <span class="o">=</span> <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;eps&#39;</span><span class="p">])</span> + + <span class="n">grad</span><span class="o">.</span><span class="n">div_</span><span class="p">(</span><span class="n">denom</span><span class="p">)</span> + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">grad</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">],</span> <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;grad_averaging&#39;</span><span class="p">]:</span> + <span class="n">grad</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">)</span> + + <span class="n">exp_avg</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">grad</span><span class="p">)</span> + + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="o">-</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr&#39;</span><span class="p">],</span> <span class="n">exp_avg</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/radam.html b/_modules/lmflow/optim/radam.html new file mode 100644 index 000000000..227bbdc1e --- /dev/null +++ b/_modules/lmflow/optim/radam.html @@ -0,0 +1,623 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.radam &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/radam';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.radam</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.radam</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">math</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">warnings</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim.optimizer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + +<div class="viewcode-block" id="RAdam"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/radam/index.html#lmflow.optim.radam.RAdam">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">RAdam</span><span class="p">(</span><span class="n">Optimizer</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Implements RAdam optimization algorithm.</span> + +<span class="sd"> Note:</span> +<span class="sd"> Deprecated, please use version provided by PyTorch_.</span> + +<span class="sd"> It has been proposed in `On the Variance of the Adaptive Learning</span> +<span class="sd"> Rate and Beyond`.</span> +<span class="sd"> https://arxiv.org/abs/1908.03265</span> + +<span class="sd"> Note:</span> +<span class="sd"> Reference code: https://github.com/LiyuanLucasLiu/RAdam</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">params</span><span class="p">,</span> + <span class="n">lr</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-3</span><span class="p">,</span> + <span class="n">betas</span> <span class="o">=</span> <span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.999</span><span class="p">),</span> + <span class="n">eps</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-8</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span> + <span class="s2">&quot;RAdam optimizer is deprecated, since it is included &quot;</span> + <span class="s2">&quot;in pytorch natively.&quot;</span><span class="p">,</span> + <span class="ne">DeprecationWarning</span><span class="p">,</span> + <span class="n">stacklevel</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">lr</span> <span class="o">&lt;=</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid learning rate: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">lr</span><span class="p">))</span> + <span class="k">if</span> <span class="n">eps</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid epsilon value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">eps</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid beta parameter at index 0: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + <span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid beta parameter at index 1: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">weight_decay</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid weight_decay value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">weight_decay</span><span class="p">)</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="p">(</span> + <span class="nb">isinstance</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="p">(</span><span class="nb">list</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">))</span> + <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">params</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span> + <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">params</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="nb">dict</span><span class="p">)</span> + <span class="p">):</span> + <span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">params</span><span class="p">:</span> + <span class="k">if</span> <span class="s2">&quot;betas&quot;</span> <span class="ow">in</span> <span class="n">param</span> <span class="ow">and</span> <span class="p">(</span> + <span class="n">param</span><span class="p">[</span><span class="s2">&quot;betas&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="ow">or</span> <span class="n">param</span><span class="p">[</span><span class="s2">&quot;betas&quot;</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + <span class="p">):</span> + <span class="n">param</span><span class="p">[</span><span class="s2">&quot;buffer&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[[</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">)]</span> + + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> + <span class="n">betas</span><span class="o">=</span><span class="n">betas</span><span class="p">,</span> + <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">,</span> + <span class="n">buffer</span><span class="o">=</span><span class="p">[[</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">)],</span> + <span class="p">)</span> + <span class="nb">super</span><span class="p">(</span><span class="n">RAdam</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + +<div class="viewcode-block" id="RAdam.__setstate__"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/radam/index.html#lmflow.optim.radam.RAdam.__setstate__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__setstate__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span> + <span class="nb">super</span><span class="p">(</span><span class="n">RAdam</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__setstate__</span><span class="p">(</span><span class="n">state</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RAdam.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/radam/index.html#lmflow.optim.radam.RAdam.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Performs a single optimization step.</span> + +<span class="sd"> Arguments:</span> +<span class="sd"> closure: A closure that reevaluates the model and returns the loss.</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">lr</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;lr&quot;</span><span class="p">]</span> + <span class="n">weight_decay</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;weight_decay&quot;</span><span class="p">]</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;betas&quot;</span><span class="p">]</span> + <span class="n">eps</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;eps&quot;</span><span class="p">]</span> + + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;params&quot;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">float</span><span class="p">()</span> + <span class="k">if</span> <span class="n">grad</span><span class="o">.</span><span class="n">is_sparse</span><span class="p">:</span> + <span class="n">msg</span> <span class="o">=</span> <span class="p">(</span> + <span class="s2">&quot;RAdam does not support sparse gradients, &quot;</span> + <span class="s2">&quot;please consider SparseAdam instead&quot;</span> + <span class="p">)</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> + + <span class="n">p_data_fp32</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">float</span><span class="p">()</span> + + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span> + <span class="n">p_data_fp32</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span> + <span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg_sq&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span> + <span class="n">p_data_fp32</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">type_as</span><span class="p">(</span><span class="n">p_data_fp32</span><span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg_sq&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg_sq&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">type_as</span><span class="p">(</span> + <span class="n">p_data_fp32</span> + <span class="p">)</span> + + <span class="n">exp_avg</span><span class="p">,</span> <span class="n">exp_avg_sq</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg&quot;</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg_sq&quot;</span><span class="p">]</span> + + <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta2</span><span class="p">)</span><span class="o">.</span><span class="n">addcmul_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span><span class="p">)</span> + <span class="n">exp_avg</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">)</span> + + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="n">buffered</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;buffer&quot;</span><span class="p">][</span><span class="nb">int</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">%</span> <span class="mi">10</span><span class="p">)]</span> + <span class="k">if</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">buffered</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> + <span class="n">N_sma</span><span class="p">,</span> <span class="n">step_size</span> <span class="o">=</span> <span class="n">buffered</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">buffered</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">buffered</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> + <span class="n">beta2_t</span> <span class="o">=</span> <span class="n">beta2</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> + <span class="n">N_sma_max</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> + <span class="n">N_sma</span> <span class="o">=</span> <span class="n">N_sma_max</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">*</span> <span class="n">beta2_t</span> <span class="o">/</span> <span class="p">(</span> + <span class="mi">1</span> <span class="o">-</span> <span class="n">beta2_t</span> + <span class="p">)</span> + <span class="n">buffered</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">N_sma</span> + + <span class="c1"># more conservative since it&#39;s an approximated value</span> + <span class="k">if</span> <span class="n">N_sma</span> <span class="o">&gt;=</span> <span class="mi">5</span><span class="p">:</span> + <span class="n">step_size</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">lr</span> + <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span> + <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2_t</span><span class="p">)</span> + <span class="o">*</span> <span class="p">(</span><span class="n">N_sma</span> <span class="o">-</span> <span class="mi">4</span><span class="p">)</span> + <span class="o">/</span> <span class="p">(</span><span class="n">N_sma_max</span> <span class="o">-</span> <span class="mi">4</span><span class="p">)</span> + <span class="o">*</span> <span class="p">(</span><span class="n">N_sma</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> + <span class="o">/</span> <span class="n">N_sma</span> + <span class="o">*</span> <span class="n">N_sma_max</span> + <span class="o">/</span> <span class="p">(</span><span class="n">N_sma_max</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> + <span class="p">)</span> + <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">])</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">step_size</span> <span class="o">=</span> <span class="n">lr</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">])</span> + <span class="n">buffered</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">step_size</span> + + <span class="k">if</span> <span class="n">weight_decay</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">p_data_fp32</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">p_data_fp32</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=-</span><span class="n">weight_decay</span> <span class="o">*</span> <span class="n">lr</span><span class="p">)</span> + + <span class="c1"># more conservative since it&#39;s an approximated value</span> + <span class="k">if</span> <span class="n">N_sma</span> <span class="o">&gt;=</span> <span class="mi">5</span><span class="p">:</span> + <span class="n">denom</span> <span class="o">=</span> <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">eps</span><span class="p">)</span> + <span class="n">p_data_fp32</span><span class="o">.</span><span class="n">addcdiv_</span><span class="p">(</span><span class="n">exp_avg</span><span class="p">,</span> <span class="n">denom</span><span class="p">,</span> <span class="n">value</span><span class="o">=-</span><span class="n">step_size</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">p_data_fp32</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">exp_avg</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=-</span><span class="n">step_size</span><span class="p">)</span> + + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">copy_</span><span class="p">(</span><span class="n">p_data_fp32</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/sgd_schedule_free.html b/_modules/lmflow/optim/sgd_schedule_free.html new file mode 100644 index 000000000..fc90def3b --- /dev/null +++ b/_modules/lmflow/optim/sgd_schedule_free.html @@ -0,0 +1,611 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.sgd_schedule_free &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/sgd_schedule_free';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.sgd_schedule_free</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.sgd_schedule_free</h1><div class="highlight"><pre> +<span></span><span class="c1"># Copyright (c) Meta Platforms, Inc. and affiliates.</span> +<span class="c1"># All rights reserved.</span> +<span class="c1"># </span> +<span class="c1"># This source code is licensed under the license found in the</span> +<span class="c1"># LICENSE file in the root directory of this source tree.</span> +<span class="c1">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.optim</span> + +<div class="viewcode-block" id="SGDScheduleFree"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/sgd_schedule_free/index.html#lmflow.optim.sgd_schedule_free.SGDScheduleFree">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">SGDScheduleFree</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Optimizer</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Schedule-Free SGD</span> +<span class="sd"> As the name suggests, no scheduler is needed with this optimizer. </span> +<span class="sd"> To add warmup, rather than using a learning rate schedule you can just</span> +<span class="sd"> set the warmup_steps parameter.</span> + +<span class="sd"> This optimizer requires that .train() and .eval() be called before the</span> +<span class="sd"> beginning of training and evaluation respectively. The optimizer should</span> +<span class="sd"> also be placed in eval mode when saving checkpoints.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> + <span class="n">params</span><span class="p">,</span> + <span class="n">lr</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span> + <span class="n">momentum</span><span class="o">=</span><span class="mf">0.9</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">warmup_steps</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">r</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> + <span class="n">weight_lr_power</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> + <span class="n">foreach</span><span class="o">=</span><span class="nb">hasattr</span><span class="p">(</span><span class="n">torch</span><span class="p">,</span> <span class="s2">&quot;_foreach_mul_&quot;</span><span class="p">),</span> + <span class="p">):</span> + <span class="k">if</span> <span class="n">lr</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid learning rate: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">lr</span><span class="p">))</span> + <span class="k">if</span> <span class="n">weight_decay</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid weight_decay value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">weight_decay</span><span class="p">))</span> + <span class="k">if</span> <span class="n">momentum</span> <span class="o">&lt;=</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">momentum</span> <span class="o">&gt;=</span> <span class="mi">1</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Momentum must be between 0 and 1 exclusive: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">momentum</span><span class="p">))</span> + + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> + <span class="n">momentum</span><span class="o">=</span><span class="n">momentum</span><span class="p">,</span> + <span class="n">r</span><span class="o">=</span><span class="n">r</span><span class="p">,</span> + <span class="n">k</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">warmup_steps</span><span class="o">=</span><span class="n">warmup_steps</span><span class="p">,</span> + <span class="n">train_mode</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">weight_sum</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> + <span class="n">lr_max</span><span class="o">=-</span><span class="mf">1.0</span><span class="p">,</span> + <span class="n">weight_lr_power</span><span class="o">=</span><span class="n">weight_lr_power</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">,</span> + <span class="n">foreach</span><span class="o">=</span><span class="n">foreach</span><span class="p">)</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + +<div class="viewcode-block" id="SGDScheduleFree.eval"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/sgd_schedule_free/index.html#lmflow.optim.sgd_schedule_free.SGDScheduleFree.eval">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">eval</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">train_mode</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;train_mode&#39;</span><span class="p">]</span> + <span class="n">momentum</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;momentum&#39;</span><span class="p">]</span> + <span class="k">if</span> <span class="n">train_mode</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + <span class="k">if</span> <span class="s1">&#39;z&#39;</span> <span class="ow">in</span> <span class="n">state</span><span class="p">:</span> + <span class="c1"># Set p.data to x</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">lerp_</span><span class="p">(</span><span class="n">end</span><span class="o">=</span><span class="n">state</span><span class="p">[</span><span class="s1">&#39;z&#39;</span><span class="p">],</span> <span class="n">weight</span><span class="o">=</span><span class="mi">1</span><span class="o">-</span><span class="mi">1</span><span class="o">/</span><span class="n">momentum</span><span class="p">)</span> + <span class="n">group</span><span class="p">[</span><span class="s1">&#39;train_mode&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span></div> + + +<div class="viewcode-block" id="SGDScheduleFree.train"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/sgd_schedule_free/index.html#lmflow.optim.sgd_schedule_free.SGDScheduleFree.train">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">train</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">train_mode</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;train_mode&#39;</span><span class="p">]</span> + <span class="n">momentum</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;momentum&#39;</span><span class="p">]</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">train_mode</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + <span class="k">if</span> <span class="s1">&#39;z&#39;</span> <span class="ow">in</span> <span class="n">state</span><span class="p">:</span> + <span class="c1"># Set p.data to y</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">lerp_</span><span class="p">(</span><span class="n">end</span><span class="o">=</span><span class="n">state</span><span class="p">[</span><span class="s1">&#39;z&#39;</span><span class="p">],</span> <span class="n">weight</span><span class="o">=</span><span class="mi">1</span><span class="o">-</span><span class="n">momentum</span><span class="p">)</span> + <span class="n">group</span><span class="p">[</span><span class="s1">&#39;train_mode&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span></div> + + +<div class="viewcode-block" id="SGDScheduleFree.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/sgd_schedule_free/index.html#lmflow.optim.sgd_schedule_free.SGDScheduleFree.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Performs a single optimization step.</span> + +<span class="sd"> Arguments:</span> +<span class="sd"> closure (callable, optional): A closure that reevaluates the model</span> +<span class="sd"> and returns the loss.</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">momentum</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;momentum&#39;</span><span class="p">]</span> + <span class="n">lr</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr&#39;</span><span class="p">]</span> + <span class="n">weight_decay</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">]</span> + <span class="n">k</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;k&#39;</span><span class="p">]</span> + <span class="n">warmup_steps</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;warmup_steps&#39;</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">k</span> <span class="o">&lt;</span> <span class="n">warmup_steps</span><span class="p">:</span> + <span class="n">sched</span> <span class="o">=</span> <span class="p">(</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">warmup_steps</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">sched</span> <span class="o">=</span> <span class="mf">1.0</span> + <span class="n">lr</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr&#39;</span><span class="p">]</span><span class="o">*</span><span class="n">sched</span> + + <span class="n">weight_lr_power</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_lr_power&#39;</span><span class="p">]</span> + + <span class="n">r</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;r&#39;</span><span class="p">]</span> + <span class="n">lr_max</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr_max&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">lr</span><span class="p">,</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr_max&#39;</span><span class="p">])</span> + + <span class="n">weight</span> <span class="o">=</span> <span class="p">((</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">**</span><span class="n">r</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">lr_max</span><span class="o">**</span><span class="n">weight_lr_power</span><span class="p">)</span> + <span class="n">weight_sum</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_sum&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_sum&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="n">weight</span> + + <span class="k">try</span><span class="p">:</span> + <span class="n">ckp1</span> <span class="o">=</span> <span class="n">weight</span><span class="o">/</span><span class="n">weight_sum</span> + <span class="k">except</span> <span class="ne">ZeroDivisionError</span><span class="p">:</span> + <span class="n">ckp1</span> <span class="o">=</span> <span class="mi">0</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;train_mode&#39;</span><span class="p">]:</span> + <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Not in train mode!&quot;</span><span class="p">)</span> + + <span class="n">active_p</span> <span class="o">=</span> <span class="p">[</span><span class="n">p</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]</span> <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">]</span> + + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">active_p</span><span class="p">:</span> + <span class="k">if</span> <span class="s1">&#39;z&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">][</span><span class="s1">&#39;z&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">clone</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;foreach&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">active_p</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">y</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">z</span> <span class="o">=</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="p">[(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">][</span><span class="s1">&#39;z&#39;</span><span class="p">])</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">active_p</span><span class="p">])</span> + + <span class="c1"># Apply weight decay</span> + <span class="k">if</span> <span class="n">weight_decay</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_add_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">)</span> + + <span class="c1"># These operations update y in-place,</span> + <span class="c1"># without computing x explicitly.</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_lerp_</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="n">weight</span><span class="o">=</span><span class="n">ckp1</span><span class="p">)</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_add_</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">lr</span><span class="o">*</span><span class="p">(</span><span class="n">momentum</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">ckp1</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span> + + <span class="c1"># SGD step</span> + <span class="n">torch</span><span class="o">.</span><span class="n">_foreach_sub_</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">lr</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">active_p</span><span class="p">:</span> + <span class="n">y</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">data</span> <span class="c1"># Notation to match theory</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span> + <span class="n">z</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">][</span><span class="s1">&#39;z&#39;</span><span class="p">]</span> + + <span class="c1"># Apply weight decay</span> + <span class="k">if</span> <span class="n">weight_decay</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">grad</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">)</span> + + <span class="c1"># These operations update y in-place,</span> + <span class="c1"># without computing x explicitly.</span> + <span class="n">y</span><span class="o">.</span><span class="n">lerp_</span><span class="p">(</span><span class="n">end</span><span class="o">=</span><span class="n">z</span><span class="p">,</span> <span class="n">weight</span><span class="o">=</span><span class="n">ckp1</span><span class="p">)</span> + <span class="n">y</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">lr</span><span class="o">*</span><span class="p">(</span><span class="n">momentum</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">ckp1</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span> + + <span class="c1"># SGD step</span> + <span class="n">z</span><span class="o">.</span><span class="n">sub_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">lr</span><span class="p">)</span> + + <span class="n">group</span><span class="p">[</span><span class="s1">&#39;k&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">k</span><span class="o">+</span><span class="mi">1</span> + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/sgdp.html b/_modules/lmflow/optim/sgdp.html new file mode 100644 index 000000000..49798ee64 --- /dev/null +++ b/_modules/lmflow/optim/sgdp.html @@ -0,0 +1,620 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.sgdp &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/sgdp';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.sgdp</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.sgdp</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">math</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim.optimizer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + + +<div class="viewcode-block" id="SGDP"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/sgdp/index.html#lmflow.optim.sgdp.SGDP">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">SGDP</span><span class="p">(</span><span class="n">Optimizer</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Implements SGDP algorithm.</span> + +<span class="sd"> It has been proposed in `Slowing Down the Weight Norm Increase in</span> +<span class="sd"> Momentum-based Optimizers`.</span> +<span class="sd"> https://arxiv.org/abs/2006.08217</span> + +<span class="sd"> Note:</span> +<span class="sd"> Reference code: https://github.com/clovaai/AdamP</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">params</span><span class="p">,</span> + <span class="n">lr</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-3</span><span class="p">,</span> + <span class="n">momentum</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> + <span class="n">dampening</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> + <span class="n">eps</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-8</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> + <span class="n">delta</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.1</span><span class="p">,</span> + <span class="n">wd_ratio</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.1</span><span class="p">,</span> + <span class="n">nesterov</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="n">lr</span> <span class="o">&lt;=</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid learning rate: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">lr</span><span class="p">))</span> + <span class="k">if</span> <span class="n">eps</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid epsilon value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">eps</span><span class="p">))</span> + <span class="k">if</span> <span class="n">momentum</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid momentum value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">momentum</span><span class="p">))</span> + <span class="k">if</span> <span class="n">dampening</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid dampening value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">dampening</span><span class="p">))</span> + <span class="k">if</span> <span class="n">weight_decay</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid weight_decay value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">weight_decay</span><span class="p">)</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">delta</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid delta value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">delta</span><span class="p">))</span> + <span class="k">if</span> <span class="n">wd_ratio</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid wd_ratio value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">wd_ratio</span><span class="p">))</span> + + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> + <span class="n">momentum</span><span class="o">=</span><span class="n">momentum</span><span class="p">,</span> + <span class="n">dampening</span><span class="o">=</span><span class="n">dampening</span><span class="p">,</span> + <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">,</span> + <span class="n">delta</span><span class="o">=</span><span class="n">delta</span><span class="p">,</span> + <span class="n">wd_ratio</span><span class="o">=</span><span class="n">wd_ratio</span><span class="p">,</span> + <span class="n">nesterov</span><span class="o">=</span><span class="n">nesterov</span><span class="p">,</span> + <span class="p">)</span> + <span class="nb">super</span><span class="p">(</span><span class="n">SGDP</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="SGDP._channel_view"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/sgdp/index.html#lmflow.optim.sgdp.SGDP._channel_view">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_channel_view</span><span class="p">(</span><span class="n">x</span><span class="p">):</span> + <span class="k">return</span> <span class="n">x</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span></div> + + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="SGDP._layer_view"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/sgdp/index.html#lmflow.optim.sgdp.SGDP._layer_view">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_layer_view</span><span class="p">(</span><span class="n">x</span><span class="p">):</span> + <span class="k">return</span> <span class="n">x</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span></div> + + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="SGDP._cosine_similarity"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/sgdp/index.html#lmflow.optim.sgdp.SGDP._cosine_similarity">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_cosine_similarity</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">eps</span><span class="p">,</span> <span class="n">view_func</span><span class="p">):</span> + <span class="n">x</span> <span class="o">=</span> <span class="n">view_func</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> + <span class="n">y</span> <span class="o">=</span> <span class="n">view_func</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> + + <span class="n">x_norm</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">eps</span><span class="p">)</span> + <span class="n">y_norm</span> <span class="o">=</span> <span class="n">y</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">eps</span><span class="p">)</span> + <span class="n">dot</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span> <span class="o">*</span> <span class="n">y</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">dot</span><span class="o">.</span><span class="n">abs</span><span class="p">()</span> <span class="o">/</span> <span class="n">x_norm</span> <span class="o">/</span> <span class="n">y_norm</span></div> + + +<div class="viewcode-block" id="SGDP._projection"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/sgdp/index.html#lmflow.optim.sgdp.SGDP._projection">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_projection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">perturb</span><span class="p">,</span> <span class="n">delta</span><span class="p">,</span> <span class="n">wd_ratio</span><span class="p">,</span> <span class="n">eps</span><span class="p">):</span> + <span class="n">wd</span> <span class="o">=</span> <span class="mi">1</span> + <span class="n">expand_size</span> <span class="o">=</span> <span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> + <span class="k">for</span> <span class="n">view_func</span> <span class="ow">in</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_channel_view</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_layer_view</span><span class="p">]:</span> + <span class="n">cosine_sim</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cosine_similarity</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">eps</span><span class="p">,</span> <span class="n">view_func</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">cosine_sim</span><span class="o">.</span><span class="n">max</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">delta</span> <span class="o">/</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">view_func</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">1</span><span class="p">)):</span> + <span class="n">p_n</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">data</span> <span class="o">/</span> <span class="n">view_func</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">view</span><span class="p">(</span> + <span class="n">expand_size</span> + <span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">eps</span><span class="p">)</span> + <span class="n">perturb</span> <span class="o">-=</span> <span class="n">p_n</span> <span class="o">*</span> <span class="n">view_func</span><span class="p">(</span><span class="n">p_n</span> <span class="o">*</span> <span class="n">perturb</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">view</span><span class="p">(</span> + <span class="n">expand_size</span> + <span class="p">)</span> + <span class="n">wd</span> <span class="o">=</span> <span class="n">wd_ratio</span> + + <span class="k">return</span> <span class="n">perturb</span><span class="p">,</span> <span class="n">wd</span> + + <span class="k">return</span> <span class="n">perturb</span><span class="p">,</span> <span class="n">wd</span></div> + + +<div class="viewcode-block" id="SGDP.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/sgdp/index.html#lmflow.optim.sgdp.SGDP.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Performs a single optimization step.</span> + +<span class="sd"> Arguments:</span> +<span class="sd"> closure: A closure that reevaluates the model and returns the loss.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">weight_decay</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;weight_decay&quot;</span><span class="p">]</span> + <span class="n">momentum</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;momentum&quot;</span><span class="p">]</span> + <span class="n">dampening</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;dampening&quot;</span><span class="p">]</span> + <span class="n">nesterov</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;nesterov&quot;</span><span class="p">]</span> + + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;params&quot;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span> + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="c1"># State initialization</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;momentum&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span> + <span class="p">)</span> + + <span class="c1"># SGD</span> + <span class="n">buf</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;momentum&quot;</span><span class="p">]</span> + <span class="n">buf</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">momentum</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dampening</span><span class="p">)</span> + <span class="k">if</span> <span class="n">nesterov</span><span class="p">:</span> + <span class="n">d_p</span> <span class="o">=</span> <span class="n">grad</span> <span class="o">+</span> <span class="n">momentum</span> <span class="o">*</span> <span class="n">buf</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">d_p</span> <span class="o">=</span> <span class="n">buf</span> + + <span class="c1"># Projection</span> + <span class="n">wd_ratio</span> <span class="o">=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">d_p</span><span class="p">,</span> <span class="n">wd_ratio</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_projection</span><span class="p">(</span> + <span class="n">p</span><span class="p">,</span> + <span class="n">grad</span><span class="p">,</span> + <span class="n">d_p</span><span class="p">,</span> + <span class="n">group</span><span class="p">[</span><span class="s2">&quot;delta&quot;</span><span class="p">],</span> + <span class="n">group</span><span class="p">[</span><span class="s2">&quot;wd_ratio&quot;</span><span class="p">],</span> + <span class="n">group</span><span class="p">[</span><span class="s2">&quot;eps&quot;</span><span class="p">],</span> + <span class="p">)</span> + + <span class="c1"># Weight decay</span> + <span class="k">if</span> <span class="n">weight_decay</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span> + <span class="mi">1</span> + <span class="o">-</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;lr&quot;</span><span class="p">]</span> + <span class="o">*</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;weight_decay&quot;</span><span class="p">]</span> + <span class="o">*</span> <span class="n">wd_ratio</span> + <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">momentum</span><span class="p">)</span> + <span class="p">)</span> + + <span class="c1"># Step</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">d_p</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=-</span><span class="n">group</span><span class="p">[</span><span class="s2">&quot;lr&quot;</span><span class="p">])</span> + + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/sophia.html b/_modules/lmflow/optim/sophia.html new file mode 100644 index 000000000..43da6207f --- /dev/null +++ b/_modules/lmflow/optim/sophia.html @@ -0,0 +1,571 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.sophia &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/sophia';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.sophia</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.sophia</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim.optimizer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + +<div class="viewcode-block" id="SophiaG"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/sophia/index.html#lmflow.optim.sophia.SophiaG">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">SophiaG</span><span class="p">(</span><span class="n">Optimizer</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Sophia: A Scalable Stochastic Second-order Optimizer for Language Model Pre-training.</span> +<span class="sd"> Code from: https://github.com/Liuhong99/Sophia/</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">1e-4</span><span class="p">,</span> <span class="n">betas</span><span class="o">=</span><span class="p">(</span><span class="mf">0.965</span><span class="p">,</span> <span class="mf">0.99</span><span class="p">),</span> <span class="n">rho</span> <span class="o">=</span> <span class="mf">0.04</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="mf">1e-1</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">maximize</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">capturable</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">lr</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid learning rate: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">lr</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid beta parameter at index 0: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid beta parameter at index 1: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">rho</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid rho parameter at index 1: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">rho</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">weight_decay</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid weight_decay value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">weight_decay</span><span class="p">))</span> + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> <span class="n">betas</span><span class="o">=</span><span class="n">betas</span><span class="p">,</span> <span class="n">rho</span><span class="o">=</span><span class="n">rho</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">,</span> + <span class="n">maximize</span><span class="o">=</span><span class="n">maximize</span><span class="p">,</span> <span class="n">capturable</span><span class="o">=</span><span class="n">capturable</span><span class="p">)</span> + <span class="nb">super</span><span class="p">(</span><span class="n">SophiaG</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + +<div class="viewcode-block" id="SophiaG.__setstate__"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/sophia/index.html#lmflow.optim.sophia.SophiaG.__setstate__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__setstate__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">__setstate__</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">group</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s1">&#39;maximize&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> + <span class="n">group</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s1">&#39;capturable&#39;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> + <span class="n">state_values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> + <span class="n">step_is_tensor</span> <span class="o">=</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">state_values</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">and</span> <span class="n">torch</span><span class="o">.</span><span class="n">is_tensor</span><span class="p">(</span><span class="n">state_values</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;step&#39;</span><span class="p">])</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">step_is_tensor</span><span class="p">:</span> + <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">state_values</span><span class="p">:</span> + <span class="n">s</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]))</span></div> + + + <span class="nd">@torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">()</span> +<div class="viewcode-block" id="SophiaG.update_hessian"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/sophia/index.html#lmflow.optim.sophia.SophiaG.update_hessian">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">update_hessian</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;betas&#39;</span><span class="p">]</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="mi">1</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> \ + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">defaults</span><span class="p">[</span><span class="s1">&#39;capturable&#39;</span><span class="p">]</span> <span class="k">else</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span><span class="mf">0.</span><span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span><span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;hessian&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span><span class="p">)</span> + + <span class="k">if</span> <span class="s1">&#39;hessian&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">state</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;hessian&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span><span class="p">)</span> + + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;hessian&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta2</span><span class="p">)</span><span class="o">.</span><span class="n">addcmul_</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="p">,</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span><span class="p">)</span></div> + + + <span class="nd">@torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">()</span> +<div class="viewcode-block" id="SophiaG.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/sophia/index.html#lmflow.optim.sophia.SophiaG.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">bs</span><span class="o">=</span><span class="mi">5120</span><span class="p">):</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">enable_grad</span><span class="p">():</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="n">params_with_grad</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">grads</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">exp_avgs</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">state_steps</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">hessian</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;betas&#39;</span><span class="p">]</span> + + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;params&#39;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">params_with_grad</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">is_sparse</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s1">&#39;SophiaG does not support sparse gradients&#39;</span><span class="p">)</span> + <span class="n">grads</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="p">)</span> + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + <span class="c1"># State initialization</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="mi">1</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> \ + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">defaults</span><span class="p">[</span><span class="s1">&#39;capturable&#39;</span><span class="p">]</span> <span class="k">else</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span><span class="mf">0.</span><span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span><span class="p">)</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;hessian&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span><span class="p">)</span> + + <span class="k">if</span> <span class="s1">&#39;hessian&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">state</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> + <span class="n">state</span><span class="p">[</span><span class="s1">&#39;hessian&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span><span class="p">)</span> + + <span class="n">exp_avgs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="s1">&#39;exp_avg&#39;</span><span class="p">])</span> + <span class="n">state_steps</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="s1">&#39;step&#39;</span><span class="p">])</span> + <span class="n">hessian</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">state</span><span class="p">[</span><span class="s1">&#39;hessian&#39;</span><span class="p">])</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">defaults</span><span class="p">[</span><span class="s1">&#39;capturable&#39;</span><span class="p">]:</span> + <span class="n">bs</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="mi">1</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> <span class="o">*</span> <span class="n">bs</span> + + <span class="c1"># Perform the actual update step here instead of calling SophiaG again</span> + <span class="k">for</span> <span class="n">p</span><span class="p">,</span> <span class="n">grad</span><span class="p">,</span> <span class="n">exp_avg</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="n">step</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">params_with_grad</span><span class="p">,</span> <span class="n">grads</span><span class="p">,</span> <span class="n">exp_avgs</span><span class="p">,</span> <span class="n">hessian</span><span class="p">,</span> <span class="n">state_steps</span><span class="p">):</span> + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">grad</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;weight_decay&#39;</span><span class="p">])</span> + + <span class="c1"># Decay the first and second moment running average coefficient</span> + <span class="n">exp_avg</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">)</span> + <span class="n">step</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> + + <span class="c1"># Compute the update using the hessian information</span> + <span class="n">update</span> <span class="o">=</span> <span class="n">exp_avg</span><span class="o">.</span><span class="n">div</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span> <span class="o">**</span> <span class="n">step</span><span class="o">.</span><span class="n">item</span><span class="p">())</span> + <span class="n">h_sqrt</span> <span class="o">=</span> <span class="n">h</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;rho&#39;</span><span class="p">])</span> + <span class="n">p</span><span class="o">.</span><span class="n">addcdiv_</span><span class="p">(</span><span class="n">update</span><span class="p">,</span> <span class="n">h_sqrt</span><span class="p">,</span> <span class="n">value</span><span class="o">=-</span><span class="n">group</span><span class="p">[</span><span class="s1">&#39;lr&#39;</span><span class="p">])</span> + + <span class="k">return</span> <span class="n">loss</span></div> +</div> + + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/optim/yogi.html b/_modules/lmflow/optim/yogi.html new file mode 100644 index 000000000..c5b92cb81 --- /dev/null +++ b/_modules/lmflow/optim/yogi.html @@ -0,0 +1,573 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.optim.yogi &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/optim/yogi';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.yogi</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.optim.yogi</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">math</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.nn</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">nn</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim.optimizer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optimizer</span> + +<div class="viewcode-block" id="Yogi"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/yogi/index.html#lmflow.optim.yogi.Yogi">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Yogi</span><span class="p">(</span><span class="n">Optimizer</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Implements Yogi Optimizer Algorithm.</span> +<span class="sd"> It has been proposed in `Adaptive methods for Nonconvex Optimization`.</span> + +<span class="sd"> https://papers.nips.cc/paper/8186-adaptive-methods-for-nonconvex-optimization # noqa</span> + +<span class="sd"> Note:</span> +<span class="sd"> Reference code: https://github.com/4rtemi5/Yogi-Optimizer_Keras</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">params</span><span class="p">,</span> + <span class="n">lr</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-2</span><span class="p">,</span> + <span class="n">betas</span> <span class="o">=</span> <span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="mf">0.999</span><span class="p">),</span> + <span class="n">eps</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-3</span><span class="p">,</span> + <span class="n">initial_accumulator</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1e-6</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="n">lr</span> <span class="o">&lt;=</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid learning rate: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">lr</span><span class="p">))</span> + <span class="k">if</span> <span class="n">eps</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid epsilon value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">eps</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid beta parameter at index 0: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + <span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="mf">0.0</span> <span class="o">&lt;=</span> <span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid beta parameter at index 1: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">betas</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">weight_decay</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Invalid weight_decay value: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">weight_decay</span><span class="p">)</span> + <span class="p">)</span> + + <span class="n">defaults</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> + <span class="n">betas</span><span class="o">=</span><span class="n">betas</span><span class="p">,</span> + <span class="n">eps</span><span class="o">=</span><span class="n">eps</span><span class="p">,</span> + <span class="n">initial_accumulator</span><span class="o">=</span><span class="n">initial_accumulator</span><span class="p">,</span> + <span class="n">weight_decay</span><span class="o">=</span><span class="n">weight_decay</span><span class="p">,</span> + <span class="p">)</span> + <span class="nb">super</span><span class="p">(</span><span class="n">Yogi</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span> + +<div class="viewcode-block" id="Yogi.step"> +<a class="viewcode-back" href="../../../autoapi/lmflow/optim/yogi/index.html#lmflow.optim.yogi.Yogi.step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">closure</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Performs a single optimization step.</span> + +<span class="sd"> Arguments:</span> +<span class="sd"> closure: A closure that reevaluates the model and returns the loss.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">closure</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">closure</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;params&quot;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">grad</span><span class="o">.</span><span class="n">data</span> + <span class="k">if</span> <span class="n">grad</span><span class="o">.</span><span class="n">is_sparse</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> + <span class="s2">&quot;Yogi does not support sparse gradients, &quot;</span> + <span class="s2">&quot;please consider SparseAdam instead&quot;</span> + <span class="p">)</span> + + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> + + <span class="c1"># State initialization</span> + <span class="c1"># Followed from official implementation in tensorflow addons:</span> + <span class="c1"># https://github.com/tensorflow/addons/blob/master/tensorflow_addons/optimizers/yogi.py#L118 # noqa</span> + <span class="c1"># For more details refer to the discussion:</span> + <span class="c1"># https://github.com/jettify/pytorch-optimizer/issues/77</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">state</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="c1"># Exponential moving average of gradient values</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">constant_</span><span class="p">(</span> + <span class="n">torch</span><span class="o">.</span><span class="n">empty_like</span><span class="p">(</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span> + <span class="p">),</span> + <span class="n">group</span><span class="p">[</span><span class="s2">&quot;initial_accumulator&quot;</span><span class="p">],</span> + <span class="p">)</span> + <span class="c1"># Exponential moving average of squared gradient values</span> + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg_sq&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">constant_</span><span class="p">(</span> + <span class="n">torch</span><span class="o">.</span><span class="n">empty_like</span><span class="p">(</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">memory_format</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">preserve_format</span> + <span class="p">),</span> + <span class="n">group</span><span class="p">[</span><span class="s2">&quot;initial_accumulator&quot;</span><span class="p">],</span> + <span class="p">)</span> + + <span class="n">exp_avg</span><span class="p">,</span> <span class="n">exp_avg_sq</span> <span class="o">=</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg&quot;</span><span class="p">],</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;exp_avg_sq&quot;</span><span class="p">]</span> + <span class="n">beta1</span><span class="p">,</span> <span class="n">beta2</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;betas&quot;</span><span class="p">]</span> + + <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="n">bias_correction1</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> + <span class="n">bias_correction2</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span> <span class="o">**</span> <span class="n">state</span><span class="p">[</span><span class="s2">&quot;step&quot;</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;weight_decay&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">grad</span> <span class="o">=</span> <span class="n">grad</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">group</span><span class="p">[</span><span class="s2">&quot;weight_decay&quot;</span><span class="p">])</span> + + <span class="c1"># Decay the first and second moment running average coefficient</span> + <span class="n">exp_avg</span><span class="o">.</span><span class="n">mul_</span><span class="p">(</span><span class="n">beta1</span><span class="p">)</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span><span class="n">grad</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta1</span><span class="p">)</span> + + <span class="n">grad_squared</span> <span class="o">=</span> <span class="n">grad</span><span class="o">.</span><span class="n">mul</span><span class="p">(</span><span class="n">grad</span><span class="p">)</span> + + <span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">addcmul_</span><span class="p">(</span> + <span class="n">torch</span><span class="o">.</span><span class="n">sign</span><span class="p">(</span><span class="n">exp_avg_sq</span> <span class="o">-</span> <span class="n">grad_squared</span><span class="p">),</span> + <span class="n">grad_squared</span><span class="p">,</span> + <span class="n">value</span><span class="o">=-</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta2</span><span class="p">),</span> + <span class="p">)</span> + + <span class="n">denom</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp_avg_sq</span><span class="o">.</span><span class="n">sqrt</span><span class="p">()</span> <span class="o">/</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">bias_correction2</span><span class="p">))</span><span class="o">.</span><span class="n">add_</span><span class="p">(</span> + <span class="n">group</span><span class="p">[</span><span class="s2">&quot;eps&quot;</span><span class="p">]</span> + <span class="p">)</span> + <span class="n">step_size</span> <span class="o">=</span> <span class="n">group</span><span class="p">[</span><span class="s2">&quot;lr&quot;</span><span class="p">]</span> <span class="o">/</span> <span class="n">bias_correction1</span> + <span class="n">p</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">addcdiv_</span><span class="p">(</span><span class="n">exp_avg</span><span class="p">,</span> <span class="n">denom</span><span class="p">,</span> <span class="n">value</span><span class="o">=-</span><span class="n">step_size</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">loss</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/auto_pipeline.html b/_modules/lmflow/pipeline/auto_pipeline.html new file mode 100644 index 000000000..57ce4d0ed --- /dev/null +++ b/_modules/lmflow/pipeline/auto_pipeline.html @@ -0,0 +1,537 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.auto_pipeline &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/auto_pipeline';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.auto_pipeline</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.auto_pipeline</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;Return a pipeline automatically based on its name.</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.versioning</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">is_package_version_at_least</span><span class="p">,</span> + <span class="n">is_vllm_available</span><span class="p">,</span> + <span class="n">is_trl_available</span><span class="p">,</span> + <span class="n">is_ray_available</span> +<span class="p">)</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.evaluator</span><span class="w"> </span><span class="kn">import</span> <span class="n">Evaluator</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.finetuner</span><span class="w"> </span><span class="kn">import</span> <span class="n">Finetuner</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.inferencer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Inferencer</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.rm_tuner</span><span class="w"> </span><span class="kn">import</span> <span class="n">RewardModelTuner</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.rm_inferencer</span><span class="w"> </span><span class="kn">import</span> <span class="n">RewardModelInferencer</span> +<div class="viewcode-block" id="PIPELINE_MAPPING"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/auto_pipeline/index.html#lmflow.pipeline.auto_pipeline.PIPELINE_MAPPING">[docs]</a> +<span class="n">PIPELINE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;evaluator&quot;</span><span class="p">:</span> <span class="n">Evaluator</span><span class="p">,</span> + <span class="s2">&quot;finetuner&quot;</span><span class="p">:</span> <span class="n">Finetuner</span><span class="p">,</span> + <span class="s2">&quot;inferencer&quot;</span><span class="p">:</span> <span class="n">Inferencer</span><span class="p">,</span> + <span class="s2">&quot;rm_inferencer&quot;</span><span class="p">:</span> <span class="n">RewardModelInferencer</span><span class="p">,</span> + <span class="s2">&quot;rm_tuner&quot;</span><span class="p">:</span> <span class="n">RewardModelTuner</span><span class="p">,</span> +<span class="p">}</span></div> + +<div class="viewcode-block" id="PIPELINE_NEEDS_EXTRAS"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/auto_pipeline/index.html#lmflow.pipeline.auto_pipeline.PIPELINE_NEEDS_EXTRAS">[docs]</a> +<span class="n">PIPELINE_NEEDS_EXTRAS</span> <span class="o">=</span> <span class="p">[]</span></div> + + +<span class="k">if</span> <span class="ow">not</span> <span class="n">is_package_version_at_least</span><span class="p">(</span><span class="s1">&#39;transformers&#39;</span><span class="p">,</span> <span class="s1">&#39;4.35.0&#39;</span><span class="p">):</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.raft_aligner</span><span class="w"> </span><span class="kn">import</span> <span class="n">RaftAligner</span> + <span class="n">PIPELINE_MAPPING</span><span class="p">[</span><span class="s1">&#39;raft_aligner&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">RaftAligner</span> +<span class="k">else</span><span class="p">:</span> + <span class="n">PIPELINE_NEEDS_EXTRAS</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;raft_aligner&#39;</span><span class="p">)</span> + +<span class="k">if</span> <span class="n">is_vllm_available</span><span class="p">():</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.vllm_inferencer</span><span class="w"> </span><span class="kn">import</span> <span class="n">VLLMInferencer</span> + <span class="n">PIPELINE_MAPPING</span><span class="p">[</span><span class="s1">&#39;vllm_inferencer&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">VLLMInferencer</span> +<span class="k">else</span><span class="p">:</span> + <span class="n">PIPELINE_NEEDS_EXTRAS</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;vllm_inferencer&#39;</span><span class="p">)</span> + +<span class="k">if</span> <span class="n">is_trl_available</span><span class="p">():</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.dpo_aligner</span><span class="w"> </span><span class="kn">import</span> <span class="n">DPOAligner</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.dpov2_aligner</span><span class="w"> </span><span class="kn">import</span> <span class="n">DPOv2Aligner</span> + <span class="n">PIPELINE_MAPPING</span><span class="p">[</span><span class="s1">&#39;dpo_aligner&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">DPOAligner</span> + <span class="n">PIPELINE_MAPPING</span><span class="p">[</span><span class="s1">&#39;dpov2_aligner&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">DPOv2Aligner</span> +<span class="k">else</span><span class="p">:</span> + <span class="n">PIPELINE_NEEDS_EXTRAS</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="s1">&#39;dpo_aligner&#39;</span><span class="p">,</span> <span class="s1">&#39;dpov2_aligner&#39;</span><span class="p">])</span> + +<span class="k">if</span> <span class="n">is_vllm_available</span><span class="p">()</span> <span class="ow">and</span> <span class="n">is_trl_available</span><span class="p">()</span> <span class="ow">and</span> <span class="n">is_ray_available</span><span class="p">():</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.iterative_dpo_aligner</span><span class="w"> </span><span class="kn">import</span> <span class="n">IterativeDPOAligner</span> + <span class="n">PIPELINE_MAPPING</span><span class="p">[</span><span class="s1">&#39;iterative_dpo_aligner&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">IterativeDPOAligner</span> +<span class="k">else</span><span class="p">:</span> + <span class="n">PIPELINE_NEEDS_EXTRAS</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;iterative_dpo_aligner&#39;</span><span class="p">)</span> + + +<div class="viewcode-block" id="AutoPipeline"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/auto_pipeline/index.html#lmflow.pipeline.auto_pipeline.AutoPipeline">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">AutoPipeline</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot; </span> +<span class="sd"> The class designed to return a pipeline automatically based on its name.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="nd">@classmethod</span> +<div class="viewcode-block" id="AutoPipeline.get_pipeline"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/auto_pipeline/index.html#lmflow.pipeline.auto_pipeline.AutoPipeline.get_pipeline">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_pipeline</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> + <span class="n">pipeline_name</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">,</span> + <span class="n">pipeline_args</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">):</span> + <span class="k">if</span> <span class="n">pipeline_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">PIPELINE_MAPPING</span><span class="p">:</span> + <span class="k">if</span> <span class="n">pipeline_name</span> <span class="ow">in</span> <span class="n">PIPELINE_NEEDS_EXTRAS</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;Please install the necessary dependencies &#39;</span> + <span class="sa">f</span><span class="s1">&#39;to use pipeline &quot;</span><span class="si">{</span><span class="n">pipeline_name</span><span class="si">}</span><span class="s1">&quot;&#39;</span> + <span class="p">)</span> + + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s1">&#39;Pipeline &quot;</span><span class="si">{</span><span class="n">pipeline_name</span><span class="si">}</span><span class="s1">&quot; is not supported&#39;</span> + <span class="p">)</span> + + <span class="n">pipeline</span> <span class="o">=</span> <span class="n">PIPELINE_MAPPING</span><span class="p">[</span><span class="n">pipeline_name</span><span class="p">](</span> + <span class="n">model_args</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">,</span> + <span class="n">pipeline_args</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">pipeline</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/base_aligner.html b/_modules/lmflow/pipeline/base_aligner.html new file mode 100644 index 000000000..55c789fa4 --- /dev/null +++ b/_modules/lmflow/pipeline/base_aligner.html @@ -0,0 +1,471 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.base_aligner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/base_aligner';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.base_aligner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.base_aligner</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot; BaseTuner: a subclass of BasePipeline.</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.base_pipeline</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePipeline</span> + + +<div class="viewcode-block" id="BaseAligner"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/base_aligner/index.html#lmflow.pipeline.base_aligner.BaseAligner">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">BaseAligner</span><span class="p">(</span><span class="n">BasePipeline</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot; A subclass of BasePipeline which is alignable.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="k">pass</span> + +<div class="viewcode-block" id="BaseAligner._check_if_alignable"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/base_aligner/index.html#lmflow.pipeline.base_aligner.BaseAligner._check_if_alignable">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_check_if_alignable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">reward_model</span><span class="p">):</span> + <span class="c1"># TODO: check if the model is alignable and dataset is compatible</span> + <span class="c1"># TODO: add reward_model</span> + <span class="k">pass</span></div> + + +<div class="viewcode-block" id="BaseAligner.align"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/base_aligner/index.html#lmflow.pipeline.base_aligner.BaseAligner.align">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">align</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">reward_model</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">&quot;.align is not implemented&quot;</span><span class="p">)</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/base_pipeline.html b/_modules/lmflow/pipeline/base_pipeline.html new file mode 100644 index 000000000..3b1af8f4f --- /dev/null +++ b/_modules/lmflow/pipeline/base_pipeline.html @@ -0,0 +1,453 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.base_pipeline &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/base_pipeline';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.base_pipeline</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.base_pipeline</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot; BasePipeline.</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">abc</span><span class="w"> </span><span class="kn">import</span> <span class="n">ABC</span> <span class="c1"># abstract class</span> + +<div class="viewcode-block" id="BasePipeline"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/base_pipeline/index.html#lmflow.pipeline.base_pipeline.BasePipeline">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">BasePipeline</span><span class="p">(</span><span class="n">ABC</span><span class="p">):</span> + <span class="k">pass</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/base_tuner.html b/_modules/lmflow/pipeline/base_tuner.html new file mode 100644 index 000000000..7bfb2f396 --- /dev/null +++ b/_modules/lmflow/pipeline/base_tuner.html @@ -0,0 +1,470 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.base_tuner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/base_tuner';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.base_tuner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.base_tuner</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot; BaseTuner: a subclass of BasePipeline.</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.base_pipeline</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePipeline</span> + + +<div class="viewcode-block" id="BaseTuner"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/base_tuner/index.html#lmflow.pipeline.base_tuner.BaseTuner">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">BaseTuner</span><span class="p">(</span><span class="n">BasePipeline</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot; A subclass of BasePipeline which is tunable.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="k">pass</span> + +<div class="viewcode-block" id="BaseTuner._check_if_tunable"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/base_tuner/index.html#lmflow.pipeline.base_tuner.BaseTuner._check_if_tunable">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_check_if_tunable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">dataset</span><span class="p">):</span> + <span class="c1"># TODO: check if the model is tunable and dataset is compatible</span> + <span class="k">pass</span></div> + + +<div class="viewcode-block" id="BaseTuner.tune"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/base_tuner/index.html#lmflow.pipeline.base_tuner.BaseTuner.tune">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">tune</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">dataset</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">&quot;.tune is not implemented&quot;</span><span class="p">)</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/dpo_aligner.html b/_modules/lmflow/pipeline/dpo_aligner.html new file mode 100644 index 000000000..f49b5a920 --- /dev/null +++ b/_modules/lmflow/pipeline/dpo_aligner.html @@ -0,0 +1,645 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.dpo_aligner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/dpo_aligner';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.dpo_aligner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.dpo_aligner</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># -*- coding: utf-8 -*-</span> +<span class="c1"># @Time : 7/4/2024 21:12</span> +<span class="c1"># @Author : Yu Li</span> +<span class="c1"># @Site :</span> +<span class="c1"># @File : dpo_pipeline.py</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Optional</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">datasets</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span><span class="p">,</span> <span class="n">load_dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">peft</span><span class="w"> </span><span class="kn">import</span> <span class="n">LoraConfig</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">TrainingArguments</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.base_aligner</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseAligner</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.versioning</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_trl_available</span> + +<span class="k">if</span> <span class="n">is_trl_available</span><span class="p">():</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">trl</span><span class="w"> </span><span class="kn">import</span> <span class="n">DPOTrainer</span> +<span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="s2">&quot;Please install trl package to use dpo_aligner.py&quot;</span><span class="p">)</span> + + +<div class="viewcode-block" id="get_paired_dataset"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.get_paired_dataset">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">get_paired_dataset</span><span class="p">(</span> + <span class="n">data_root</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">data_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">sanity_check</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">cache_dir</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">num_proc</span><span class="o">=</span><span class="mi">24</span><span class="p">,</span> +<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dataset</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Load dataset and convert it to the necessary format.</span> + +<span class="sd"> The dataset is converted to a dictionary with the following structure:</span> +<span class="sd"> {</span> +<span class="sd"> &#39;prompt&#39;: List[str],</span> +<span class="sd"> &#39;chosen&#39;: List[str],</span> +<span class="sd"> &#39;rejected&#39;: List[str],</span> +<span class="sd"> }</span> + +<span class="sd"> Prompts are structured as follows:</span> +<span class="sd"> &quot;Question: &quot; + &lt;prompt&gt; + &quot;\n\nAnswer: &quot;</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">data_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">data_root</span><span class="p">)</span> <span class="o">/</span> <span class="n">data_dir</span> + <span class="n">data_files</span> <span class="o">=</span> <span class="p">[</span> + <span class="n">x</span><span class="o">.</span><span class="n">absolute</span><span class="p">()</span><span class="o">.</span><span class="n">as_posix</span><span class="p">()</span> + <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">data_path</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="s2">&quot;*.json&quot;</span><span class="p">)</span> + <span class="p">]</span> + <span class="n">dataset</span> <span class="o">=</span> <span class="n">load_dataset</span><span class="p">(</span> + <span class="n">path</span><span class="o">=</span><span class="n">data_root</span><span class="p">,</span> + <span class="n">split</span><span class="o">=</span><span class="s2">&quot;train&quot;</span><span class="p">,</span> + <span class="n">data_files</span><span class="o">=</span><span class="n">data_files</span><span class="p">,</span> + <span class="n">cache_dir</span><span class="o">=</span><span class="n">cache_dir</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">original_columns</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">column_names</span> + + <span class="k">if</span> <span class="n">sanity_check</span><span class="p">:</span> + <span class="n">dataset</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">dataset</span><span class="p">),</span> <span class="mi">1000</span><span class="p">)))</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">return_prompt_and_responses</span><span class="p">(</span><span class="n">samples</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]:</span> + <span class="k">return</span> <span class="p">{</span> + <span class="s2">&quot;prompt&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;Question: &quot;</span> <span class="o">+</span> <span class="n">question</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n\n</span><span class="s2">Answer: &quot;</span> <span class="k">for</span> <span class="n">question</span> <span class="ow">in</span> <span class="n">samples</span><span class="p">[</span><span class="s2">&quot;question&quot;</span><span class="p">]],</span> + <span class="s2">&quot;chosen&quot;</span><span class="p">:</span> <span class="n">samples</span><span class="p">[</span><span class="s2">&quot;response_j&quot;</span><span class="p">],</span> + <span class="s2">&quot;rejected&quot;</span><span class="p">:</span> <span class="n">samples</span><span class="p">[</span><span class="s2">&quot;response_k&quot;</span><span class="p">],</span> + <span class="p">}</span> + + <span class="k">return</span> <span class="n">dataset</span><span class="o">.</span><span class="n">map</span><span class="p">(</span> + <span class="n">return_prompt_and_responses</span><span class="p">,</span> + <span class="n">batched</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">num_proc</span><span class="o">=</span><span class="n">num_proc</span><span class="p">,</span> + <span class="n">remove_columns</span><span class="o">=</span><span class="n">original_columns</span><span class="p">,</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="DPOAligner"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">DPOAligner</span><span class="p">(</span><span class="n">BaseAligner</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">aligner_args</span><span class="p">):</span> +<div class="viewcode-block" id="DPOAligner.model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner.model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> <span class="o">=</span> <span class="n">model_args</span></div> + +<div class="viewcode-block" id="DPOAligner.data_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner.data_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> <span class="o">=</span> <span class="n">data_args</span></div> + +<div class="viewcode-block" id="DPOAligner.aligner_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner.aligner_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span> <span class="o">=</span> <span class="n">aligner_args</span></div> + +<div class="viewcode-block" id="DPOAligner.train_dataset"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner.train_dataset">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="DPOAligner.eval_dataset"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner.eval_dataset">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">eval_dataset</span> <span class="o">=</span> <span class="kc">None</span></div> + + +<div class="viewcode-block" id="DPOAligner._initialize_trainer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner._initialize_trainer">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_initialize_trainer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">):</span> + <span class="n">peft_config</span> <span class="o">=</span> <span class="n">LoraConfig</span><span class="p">(</span> + <span class="n">r</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">lora_r</span><span class="p">,</span> + <span class="n">lora_alpha</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">lora_alpha</span><span class="p">,</span> + <span class="n">lora_dropout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">lora_dropout</span><span class="p">,</span> + <span class="n">target_modules</span><span class="o">=</span><span class="p">[</span> + <span class="s2">&quot;q_proj&quot;</span><span class="p">,</span> + <span class="s2">&quot;v_proj&quot;</span><span class="p">,</span> + <span class="s2">&quot;k_proj&quot;</span><span class="p">,</span> + <span class="s2">&quot;out_proj&quot;</span><span class="p">,</span> + <span class="s2">&quot;fc_in&quot;</span><span class="p">,</span> + <span class="s2">&quot;fc_out&quot;</span><span class="p">,</span> + <span class="s2">&quot;wte&quot;</span><span class="p">,</span> + <span class="p">],</span> + <span class="n">bias</span><span class="o">=</span><span class="s2">&quot;none&quot;</span><span class="p">,</span> + <span class="n">task_type</span><span class="o">=</span><span class="s2">&quot;CAUSAL_LM&quot;</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">training_args</span> <span class="o">=</span> <span class="n">TrainingArguments</span><span class="p">(</span> + <span class="n">per_device_train_batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">per_device_train_batch_size</span><span class="p">,</span> + <span class="n">per_device_eval_batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">per_device_eval_batch_size</span><span class="p">,</span> + <span class="n">max_steps</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">max_steps</span><span class="p">,</span> + <span class="n">logging_steps</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">logging_steps</span><span class="p">,</span> + <span class="n">save_steps</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">save_steps</span><span class="p">,</span> + <span class="n">gradient_accumulation_steps</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span><span class="p">,</span> + <span class="n">gradient_checkpointing</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">gradient_checkpointing</span><span class="p">,</span> + <span class="n">learning_rate</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">learning_rate</span><span class="p">,</span> + <span class="n">evaluation_strategy</span><span class="o">=</span><span class="s2">&quot;steps&quot;</span><span class="p">,</span> + <span class="n">eval_steps</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">eval_steps</span><span class="p">,</span> + <span class="n">output_dir</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> + <span class="n">report_to</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">report_to</span><span class="p">,</span> + <span class="n">lr_scheduler_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">lr_scheduler_type</span><span class="p">,</span> + <span class="n">warmup_steps</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">warmup_steps</span><span class="p">,</span> + <span class="n">optim</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">optimizer_type</span><span class="p">,</span> + <span class="n">bf16</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">remove_unused_columns</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">run_name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">run_name</span><span class="p">,</span> + <span class="n">ddp_find_unused_parameters</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="c1"># gradient_checkpointing_kwargs=dict(use_reentrant=self.aligner_args.gradient_checkpointing_use_reentrant),</span> + <span class="n">seed</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">seed</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">dpo_trainer</span> <span class="o">=</span> <span class="n">DPOTrainer</span><span class="p">(</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">ref_model</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">args</span><span class="o">=</span><span class="n">training_args</span><span class="p">,</span> + <span class="n">beta</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">beta</span><span class="p">,</span> + <span class="n">train_dataset</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span><span class="p">,</span> + <span class="n">eval_dataset</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">eval_dataset</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">eval_dataset</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="n">tokenizer</span><span class="p">,</span> + <span class="n">peft_config</span><span class="o">=</span><span class="n">peft_config</span><span class="p">,</span> + <span class="n">max_prompt_length</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">beta</span><span class="p">,</span> + <span class="n">max_length</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">max_length</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">dpo_trainer</span></div> + + +<div class="viewcode-block" id="DPOAligner._load_dataset"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner._load_dataset">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_load_dataset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="c1"># load training set</span> + <span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span> <span class="o">=</span> <span class="n">get_paired_dataset</span><span class="p">(</span><span class="n">data_root</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">dataset_path</span><span class="p">,</span> + <span class="n">data_dir</span><span class="o">=</span><span class="s2">&quot;train&quot;</span><span class="p">,</span> + <span class="n">sanity_check</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">sanity_check</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> + <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s2">&quot;prompt&quot;</span><span class="p">])</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s2">&quot;chosen&quot;</span><span class="p">])</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">max_length</span> + <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s2">&quot;prompt&quot;</span><span class="p">])</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s2">&quot;rejected&quot;</span><span class="p">])</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">max_length</span> + <span class="p">)</span> + <span class="c1"># load evaluation set</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">eval_dataset_path</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">eval_dataset</span> <span class="o">=</span> <span class="n">get_paired_dataset</span><span class="p">(</span><span class="n">data_root</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">eval_dataset_path</span><span class="p">,</span> + <span class="n">data_dir</span><span class="o">=</span><span class="s2">&quot;test&quot;</span><span class="p">,</span> + <span class="n">sanity_check</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">eval_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">eval_dataset</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> + <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s2">&quot;prompt&quot;</span><span class="p">])</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s2">&quot;chosen&quot;</span><span class="p">])</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">max_length</span> + <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s2">&quot;prompt&quot;</span><span class="p">])</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s2">&quot;rejected&quot;</span><span class="p">])</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">max_length</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="DPOAligner.align"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner.align">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">align</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">reward_model</span><span class="p">):</span> + <span class="n">tokenizer</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">get_tokenizer</span><span class="p">()</span> + <span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token</span> + <span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_load_dataset</span><span class="p">()</span> + + <span class="n">wrapped_model</span> <span class="o">=</span> <span class="n">model</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span> + + <span class="n">dpo_trainer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_initialize_trainer</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + <span class="n">dpo_trainer</span><span class="o">.</span><span class="n">train</span><span class="p">()</span> + <span class="n">dpo_trainer</span><span class="o">.</span><span class="n">save_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">)</span> + + <span class="c1"># 7. save</span> + <span class="n">output_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> <span class="s2">&quot;final_checkpoint&quot;</span><span class="p">)</span> + <span class="n">dpo_trainer</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span></div> +</div> + + + + + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/dpov2_aligner.html b/_modules/lmflow/pipeline/dpov2_aligner.html new file mode 100644 index 000000000..0ffc6ffc8 --- /dev/null +++ b/_modules/lmflow/pipeline/dpov2_aligner.html @@ -0,0 +1,856 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.dpov2_aligner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/dpov2_aligner';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.dpov2_aligner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.dpov2_aligner</h1><div class="highlight"><pre> +<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">copy</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">importlib.resources</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pkg_resources</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">subprocess</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Union</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">tqdm</span><span class="w"> </span><span class="kn">import</span> <span class="n">tqdm</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">TrainingArguments</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.utils.dpov2_trainer</span><span class="w"> </span><span class="kn">import</span> <span class="n">DPOv2Trainer</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.base_aligner</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseAligner</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">DPOv2AlignerArguments</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.common</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">make_shell_args_from_dataclass</span><span class="p">,</span> + <span class="n">add_dataclass_attr_prefix</span><span class="p">,</span> + <span class="n">create_copied_dataclass</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.hf_decoder_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">HFDecoderModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets.dataset</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span><span class="p">,</span> <span class="n">KEY_SCORE</span><span class="p">,</span> <span class="n">KEY_TYPE</span><span class="p">,</span> <span class="n">KEY_INSTANCES</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="n">MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="ReferenceModelArguments"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.ReferenceModelArguments">[docs]</a> +<span class="n">ReferenceModelArguments</span> <span class="o">=</span> <span class="n">create_copied_dataclass</span><span class="p">(</span> + <span class="n">original_dataclass</span><span class="o">=</span><span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">field_prefix</span><span class="o">=</span><span class="s2">&quot;reference_&quot;</span><span class="p">,</span> + <span class="n">class_prefix</span><span class="o">=</span><span class="s2">&quot;Reference&quot;</span> +<span class="p">)</span></div> + + + +<div class="viewcode-block" id="DPOv2Aligner"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">DPOv2Aligner</span><span class="p">(</span><span class="n">BaseAligner</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">aligner_args</span><span class="p">:</span> <span class="n">DPOv2AlignerArguments</span><span class="p">,</span> + <span class="n">ref_model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="p">):</span> +<div class="viewcode-block" id="DPOv2Aligner.model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> <span class="o">=</span> <span class="n">model_args</span></div> + +<div class="viewcode-block" id="DPOv2Aligner.ref_model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.ref_model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">ref_model_args</span> <span class="o">=</span> <span class="n">ref_model_args</span></div> + +<div class="viewcode-block" id="DPOv2Aligner.data_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.data_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> <span class="o">=</span> <span class="n">data_args</span></div> + +<div class="viewcode-block" id="DPOv2Aligner.aligner_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.aligner_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span> <span class="o">=</span> <span class="n">aligner_args</span></div> + + + +<div class="viewcode-block" id="DPOv2Aligner.align"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.align">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">align</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFDecoderModel</span><span class="p">,</span> + <span class="n">ref_model</span><span class="p">:</span> <span class="n">HFDecoderModel</span><span class="p">,</span> + <span class="n">train_dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">eval_dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">transform_dataset_in_place</span><span class="p">:</span> <span class="nb">bool</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="p">):</span> + <span class="k">if</span> <span class="p">(</span><span class="n">train_dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;text_to_scored_textlist&quot;</span><span class="p">,</span> <span class="s2">&quot;paired_text_to_text&quot;</span><span class="p">])</span> <span class="ow">or</span> \ + <span class="p">(</span><span class="n">eval_dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;text_to_scored_textlist&quot;</span><span class="p">,</span> <span class="s2">&quot;paired_text_to_text&quot;</span><span class="p">]):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Unsupported dataset type </span><span class="si">{</span><span class="n">train_dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span><span class="si">}</span><span class="s2"> for DPOv2 aligner.&quot;</span> + <span class="p">)</span> + + <span class="c1"># step 0. setting up</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">gradient_checkpointing</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;Setting backend_model.config.use_cache to False since using gradient checkpointing&quot;</span> + <span class="p">)</span> + <span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">use_cache</span> <span class="o">=</span> <span class="kc">False</span> + <span class="n">ref_model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">use_cache</span> <span class="o">=</span> <span class="kc">False</span> + + <span class="c1"># step 1. prepare datasets</span> + <span class="k">if</span> <span class="n">train_dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;text_to_scored_textlist&quot;</span><span class="p">:</span> + <span class="n">train_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">convert_to_paired_dataset</span><span class="p">(</span> + <span class="n">source_dataset</span><span class="o">=</span><span class="n">train_dataset</span><span class="p">,</span> + <span class="n">sampling_paired_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">sampling_paired_method</span><span class="p">,</span> + <span class="n">length_penalty</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">length_penalty</span><span class="p">,</span> + <span class="n">margin_scale</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">margin_scale</span><span class="p">,</span> + <span class="n">use_fast</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">max_train_samples</span><span class="p">:</span> + <span class="n">train_dataset</span><span class="o">.</span><span class="n">backend_dataset</span> <span class="o">=</span> <span class="n">train_dataset</span><span class="o">.</span><span class="n">backend_dataset</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">max_train_samples</span><span class="p">))</span> + + <span class="k">if</span> <span class="n">eval_dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;text_to_scored_textlist&quot;</span><span class="p">:</span> + <span class="n">eval_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">convert_to_paired_dataset</span><span class="p">(</span> + <span class="n">source_dataset</span><span class="o">=</span><span class="n">eval_dataset</span><span class="p">,</span> + <span class="n">sampling_paired_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">sampling_paired_method</span><span class="p">,</span> + <span class="n">margin_scale</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">margin_scale</span><span class="p">,</span> + <span class="n">use_fast</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> + + <span class="c1"># step 2. prepare trainer</span> + <span class="n">dpo_trainer</span> <span class="o">=</span> <span class="n">DPOv2Trainer</span><span class="p">(</span> + <span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">(),</span> + <span class="n">ref_model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">(),</span> + <span class="n">train_dataset</span><span class="o">=</span><span class="n">train_dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">(),</span> <span class="c1"># tokenization is done in the trainer</span> + <span class="n">eval_dataset</span><span class="o">=</span><span class="n">eval_dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">(),</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">,</span> + <span class="n">args</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">__prepare_training_args</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="p">),</span> + <span class="n">beta</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">beta</span><span class="p">,</span> + <span class="n">loss_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">loss_type</span><span class="p">,</span> + <span class="n">max_prompt_length</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">max_prompt_length</span><span class="p">,</span> + <span class="n">max_length</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">max_length</span><span class="p">,</span> + <span class="n">mask_prompt</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">mask_prompt</span><span class="p">,</span> + <span class="n">len_penalty</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">length_penalty</span><span class="p">,</span> + <span class="c1"># preprocessing_num_workers=self.data_args.preprocessing_num_workers, # will trigger TypeError: cannot pickle &#39;torch._C._distributed_c10d.ProcessGroup&#39; object</span> + <span class="p">)</span> + + <span class="c1"># step 3. train</span> + <span class="n">dpo_trainer</span><span class="o">.</span><span class="n">train</span><span class="p">()</span> + <span class="n">dpo_trainer</span><span class="o">.</span><span class="n">save_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">)</span> + + <span class="c1"># step 4. save</span> + <span class="n">output_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> <span class="s2">&quot;final_checkpoint&quot;</span><span class="p">)</span> + <span class="n">dpo_trainer</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span> + + <span class="c1"># step 5. release resources</span> + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span> + <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">empty_cache</span><span class="p">()</span></div> + + + +<div class="viewcode-block" id="DPOv2Aligner.__prepare_training_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.__prepare_training_args">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__prepare_training_args</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">args</span><span class="p">:</span> <span class="n">DPOv2AlignerArguments</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">TrainingArguments</span><span class="p">:</span> + <span class="n">training_args</span> <span class="o">=</span> <span class="n">TrainingArguments</span><span class="p">(</span> + <span class="n">per_device_train_batch_size</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">per_device_train_batch_size</span><span class="p">,</span> + <span class="n">per_device_eval_batch_size</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">per_device_eval_batch_size</span><span class="p">,</span> + <span class="n">num_train_epochs</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">num_train_epochs</span><span class="p">,</span> + <span class="n">save_strategy</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">save_strategy</span><span class="p">,</span> + <span class="n">logging_steps</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">logging_steps</span><span class="p">,</span> + <span class="n">save_steps</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">save_steps</span><span class="p">,</span> + <span class="n">gradient_accumulation_steps</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span><span class="p">,</span> + <span class="n">gradient_checkpointing</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">gradient_checkpointing</span><span class="p">,</span> + <span class="n">learning_rate</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">learning_rate</span><span class="p">,</span> + <span class="n">evaluation_strategy</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">evaluation_strategy</span><span class="p">,</span> + <span class="n">eval_steps</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">eval_steps</span><span class="p">,</span> + <span class="n">output_dir</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> + <span class="n">lr_scheduler_type</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">lr_scheduler_type</span><span class="p">,</span> + <span class="n">warmup_steps</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">warmup_steps</span><span class="p">,</span> + <span class="n">optim</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">optim</span><span class="p">,</span> + <span class="n">bf16</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">bf16</span><span class="p">,</span> + <span class="n">report_to</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">report_to</span><span class="p">,</span> + <span class="n">run_name</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">run_name</span><span class="p">,</span> + <span class="n">remove_unused_columns</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># DO NOT CHANGE THIS, may cause error https://discuss.huggingface.co/t/indexerror-invalid-key-16-is-out-of-bounds-for-size-0/14298/3</span> + <span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Actual training arguments for dpo trainer: </span><span class="si">{</span><span class="n">training_args</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">training_args</span></div> + + + +<div class="viewcode-block" id="DPOv2Aligner.convert_to_paired_dataset"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.convert_to_paired_dataset">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">convert_to_paired_dataset</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">source_dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">sampling_paired_method</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s2">&quot;random&quot;</span><span class="p">,</span> + <span class="n">length_penalty</span><span class="p">:</span> <span class="nb">float</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> + <span class="n">margin_scale</span><span class="p">:</span> <span class="nb">float</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span> + <span class="n">use_fast</span><span class="p">:</span> <span class="nb">bool</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dataset</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Convert a scored one to multiple (text_to_scored_textlist) to a paired dataset by rejection sampling.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">output_dict</span> <span class="o">=</span> <span class="p">{</span> + <span class="n">KEY_INSTANCES</span><span class="p">:</span> <span class="p">[]</span> + <span class="p">}</span> + <span class="k">if</span> <span class="n">source_dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;text_to_scored_textlist&quot;</span><span class="p">]:</span> + <span class="n">output_dict</span><span class="p">[</span><span class="n">KEY_TYPE</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;paired_text_to_text&quot;</span> + + <span class="k">for</span> <span class="n">sample</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span><span class="n">source_dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">(),</span> <span class="n">desc</span><span class="o">=</span><span class="s2">&quot;Converting to paired dataset&quot;</span><span class="p">):</span> + <span class="n">sample_output_dict</span> <span class="o">=</span> <span class="p">{}</span> + <span class="n">lengths</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_calc_response_lengths</span><span class="p">(</span><span class="n">sample</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">],</span> <span class="n">source_dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">())</span> + <span class="n">penalized_rewards</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_calc_reward_with_length_penalty</span><span class="p">(</span> + <span class="n">rewards</span><span class="o">=</span><span class="p">[</span><span class="n">content</span><span class="p">[</span><span class="n">KEY_SCORE</span><span class="p">]</span> <span class="k">for</span> <span class="n">content</span> <span class="ow">in</span> <span class="n">sample</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">]],</span> + <span class="n">lengths</span><span class="o">=</span><span class="n">lengths</span><span class="p">,</span> + <span class="n">length_penalty</span><span class="o">=</span><span class="n">length_penalty</span> + <span class="p">)</span> + <span class="n">chosen_idx</span><span class="p">,</span> <span class="n">rejected_idx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sampling_paired_idx_from_rewards</span><span class="p">(</span> + <span class="n">rewards</span><span class="o">=</span><span class="n">penalized_rewards</span><span class="p">,</span> + <span class="n">sampling_paired_method</span><span class="o">=</span><span class="n">sampling_paired_method</span><span class="p">,</span> + <span class="n">use_fast</span><span class="o">=</span><span class="n">use_fast</span> + <span class="p">)</span> + + <span class="n">sample_output_dict</span><span class="p">[</span><span class="s2">&quot;prompt&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">sample</span><span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">]</span> + <span class="n">sample_output_dict</span><span class="p">[</span><span class="s2">&quot;chosen&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">sample</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">][</span><span class="n">chosen_idx</span><span class="p">][</span><span class="s2">&quot;text&quot;</span><span class="p">]</span> + <span class="n">sample_output_dict</span><span class="p">[</span><span class="s2">&quot;rejected&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">sample</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">][</span><span class="n">rejected_idx</span><span class="p">][</span><span class="s2">&quot;text&quot;</span><span class="p">]</span> + <span class="n">sample_output_dict</span><span class="p">[</span><span class="s2">&quot;margin&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">sample</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">][</span><span class="n">chosen_idx</span><span class="p">][</span><span class="n">KEY_SCORE</span><span class="p">]</span> <span class="o">-</span> <span class="n">sample</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">][</span><span class="n">rejected_idx</span><span class="p">][</span><span class="n">KEY_SCORE</span><span class="p">])</span> <span class="o">*</span> <span class="n">margin_scale</span> + <span class="n">output_dict</span><span class="p">[</span><span class="n">KEY_INSTANCES</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sample_output_dict</span><span class="p">)</span> + + <span class="n">output_dataset_args</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">source_dataset</span><span class="o">.</span><span class="n">data_args</span><span class="p">)</span> + <span class="n">output_dataset_args</span><span class="o">.</span><span class="n">dataset_path</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">output_dataset_args</span><span class="o">.</span><span class="n">dataset_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;paired_</span><span class="si">{</span><span class="n">output_dataset_args</span><span class="o">.</span><span class="n">dataset_name</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="n">output_dataset</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="n">output_dataset_args</span><span class="p">)</span> + <span class="n">output_dataset</span> <span class="o">=</span> <span class="n">output_dataset</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">output_dict</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">output_dataset</span></div> + + + +<div class="viewcode-block" id="DPOv2Aligner._calc_response_lengths"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._calc_response_lengths">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_calc_response_lengths</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">outputs</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]],</span> + <span class="n">dataset_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]:</span> + <span class="n">all_lengths</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">if</span> <span class="n">dataset_type</span> <span class="o">==</span> <span class="s2">&quot;text_to_scored_textlist&quot;</span><span class="p">:</span> + <span class="n">all_lengths</span> <span class="o">=</span> <span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">output</span><span class="p">[</span><span class="s2">&quot;text&quot;</span><span class="p">])</span> <span class="k">for</span> <span class="n">output</span> <span class="ow">in</span> <span class="n">outputs</span><span class="p">]</span> + + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Unknown dataset type </span><span class="si">{</span><span class="n">dataset_type</span><span class="si">}</span><span class="s2"> when calculating the response length.&quot;</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">all_lengths</span></div> + + + +<div class="viewcode-block" id="DPOv2Aligner._calc_reward_with_length_penalty"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._calc_reward_with_length_penalty">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_calc_reward_with_length_penalty</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">rewards</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> + <span class="n">lengths</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> + <span class="n">length_penalty</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;When length_penalty &gt; 0, penalize the longer sequence by subtracting </span> +<span class="sd"> length_penalty * length from the reward. Vice versa when length_penalty &lt; 0.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">rewards</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">lengths</span><span class="p">),</span> <span class="s2">&quot;The number of rewards and lengths should be the same.&quot;</span> + <span class="k">return</span> <span class="p">[</span><span class="n">reward</span> <span class="o">-</span> <span class="n">length_penalty</span> <span class="o">*</span> <span class="n">length</span> <span class="k">for</span> <span class="n">reward</span><span class="p">,</span> <span class="n">length</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">rewards</span><span class="p">,</span> <span class="n">lengths</span><span class="p">)]</span></div> + + + +<div class="viewcode-block" id="DPOv2Aligner.sampling_paired_idx_from_rewards"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.sampling_paired_idx_from_rewards">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">sampling_paired_idx_from_rewards</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">rewards</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> + <span class="n">sampling_paired_method</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s2">&quot;random&quot;</span><span class="p">,</span> + <span class="n">use_fast</span><span class="p">:</span> <span class="nb">bool</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Prepare the dataset for DPO training by rejection sampling.</span> +<span class="sd"> We implement different strategies to select pairs, including</span> +<span class="sd"> random: randomly select two instances</span> +<span class="sd"> max_min: best v.s. worst</span> +<span class="sd"> max_max: best v.s. second best</span> +<span class="sd"> max_random: best v.s. random from the remaining</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="n">use_fast</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sampling_paired_idx_from_rewards_fast</span><span class="p">(</span><span class="n">rewards</span><span class="p">,</span> <span class="n">sampling_paired_method</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sampling_paired_idx_from_rewards</span><span class="p">(</span><span class="n">rewards</span><span class="p">,</span> <span class="n">sampling_paired_method</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="DPOv2Aligner._sampling_paired_idx_from_rewards"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._sampling_paired_idx_from_rewards">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_sampling_paired_idx_from_rewards</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">rewards</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> + <span class="n">sampling_paired_method</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s2">&quot;random&quot;</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]:</span> + <span class="n">idx_0</span><span class="p">,</span> <span class="n">idx_1</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span> + + <span class="k">if</span> <span class="n">sampling_paired_method</span> <span class="o">==</span> <span class="s2">&quot;random&quot;</span><span class="p">:</span> + <span class="n">idx_0</span><span class="p">,</span> <span class="n">idx_1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">rewards</span><span class="p">),</span> <span class="n">size</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">sampling_paired_method</span> <span class="o">==</span> <span class="s2">&quot;max_min&quot;</span><span class="p">:</span> + <span class="n">idx_0</span><span class="p">,</span> <span class="n">idx_1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">rewards</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">argmin</span><span class="p">(</span><span class="n">rewards</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">sampling_paired_method</span> <span class="o">==</span> <span class="s2">&quot;max_max&quot;</span><span class="p">:</span> + <span class="n">sorted_indices</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argsort</span><span class="p">(</span><span class="n">rewards</span><span class="p">)</span> + <span class="n">idx_0</span><span class="p">,</span> <span class="n">idx_1</span> <span class="o">=</span> <span class="n">sorted_indices</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">sorted_indices</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> + <span class="k">elif</span> <span class="n">sampling_paired_method</span> <span class="o">==</span> <span class="s2">&quot;max_random&quot;</span><span class="p">:</span> + <span class="n">idx_0</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">rewards</span><span class="p">)</span> + <span class="n">idx_1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">([</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">rewards</span><span class="p">))</span> <span class="k">if</span> <span class="n">i</span> <span class="o">!=</span> <span class="n">idx_0</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Unknown sampling method: </span><span class="si">{</span><span class="n">sampling_paired_method</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="n">chosen_idx</span><span class="p">,</span> <span class="n">rejected_idx</span> <span class="o">=</span> <span class="p">(</span><span class="n">idx_0</span><span class="p">,</span> <span class="n">idx_1</span><span class="p">)</span> <span class="k">if</span> <span class="n">rewards</span><span class="p">[</span><span class="n">idx_0</span><span class="p">]</span> <span class="o">&gt;</span> <span class="n">rewards</span><span class="p">[</span><span class="n">idx_1</span><span class="p">]</span> <span class="k">else</span> <span class="p">(</span><span class="n">idx_1</span><span class="p">,</span> <span class="n">idx_0</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">chosen_idx</span><span class="p">,</span> <span class="n">rejected_idx</span></div> + + + +<div class="viewcode-block" id="DPOv2Aligner._sampling_paired_idx_from_rewards_fast"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._sampling_paired_idx_from_rewards_fast">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_sampling_paired_idx_from_rewards_fast</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">rewards</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> + <span class="n">sampling_paired_method</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s2">&quot;random&quot;</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]:</span> + <span class="n">idx_0</span><span class="p">,</span> <span class="n">idx_1</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span> + + <span class="k">if</span> <span class="n">sampling_paired_method</span> <span class="o">==</span> <span class="s2">&quot;random&quot;</span><span class="p">:</span> + <span class="n">idx_0</span><span class="p">,</span> <span class="n">idx_1</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span> + <span class="k">elif</span> <span class="n">sampling_paired_method</span> <span class="o">==</span> <span class="s2">&quot;max_min&quot;</span><span class="p">:</span> + <span class="n">idx_0</span><span class="p">,</span> <span class="n">idx_1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">rewards</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">argmin</span><span class="p">(</span><span class="n">rewards</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">sampling_paired_method</span> <span class="o">==</span> <span class="s2">&quot;max_max&quot;</span><span class="p">:</span> + <span class="n">sorted_indices</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argsort</span><span class="p">(</span><span class="n">rewards</span><span class="p">)</span> + <span class="n">idx_0</span><span class="p">,</span> <span class="n">idx_1</span> <span class="o">=</span> <span class="n">sorted_indices</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">sorted_indices</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> + <span class="k">elif</span> <span class="n">sampling_paired_method</span> <span class="o">==</span> <span class="s2">&quot;max_random&quot;</span><span class="p">:</span> + <span class="n">idx_0</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">rewards</span><span class="p">)</span> + <span class="n">idx_1</span> <span class="o">=</span> <span class="mi">0</span> <span class="k">if</span> <span class="n">idx_0</span> <span class="o">!=</span> <span class="mi">0</span> <span class="k">else</span> <span class="mi">1</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Unknown sampling method: </span><span class="si">{</span><span class="n">sampling_paired_method</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="n">chosen_idx</span><span class="p">,</span> <span class="n">rejected_idx</span> <span class="o">=</span> <span class="p">(</span><span class="n">idx_0</span><span class="p">,</span> <span class="n">idx_1</span><span class="p">)</span> <span class="k">if</span> <span class="n">rewards</span><span class="p">[</span><span class="n">idx_0</span><span class="p">]</span> <span class="o">&gt;</span> <span class="n">rewards</span><span class="p">[</span><span class="n">idx_1</span><span class="p">]</span> <span class="k">else</span> <span class="p">(</span><span class="n">idx_1</span><span class="p">,</span> <span class="n">idx_0</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">chosen_idx</span><span class="p">,</span> <span class="n">rejected_idx</span></div> +</div> + + + +<div class="viewcode-block" id="MemorySafeDPOv2Aligner"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">MemorySafeDPOv2Aligner</span><span class="p">:</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">aligner_args</span><span class="p">:</span> <span class="n">DPOv2AlignerArguments</span><span class="p">,</span> + <span class="n">ref_model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="p">):</span> +<div class="viewcode-block" id="MemorySafeDPOv2Aligner.model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> <span class="o">=</span> <span class="n">model_args</span></div> + +<div class="viewcode-block" id="MemorySafeDPOv2Aligner.ref_model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.ref_model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">ref_model_args</span> <span class="o">=</span> <span class="n">ReferenceModelArguments</span><span class="p">(</span><span class="o">**</span><span class="n">add_dataclass_attr_prefix</span><span class="p">(</span><span class="n">ref_model_args</span><span class="p">,</span> <span class="s1">&#39;reference_&#39;</span><span class="p">))</span></div> + +<div class="viewcode-block" id="MemorySafeDPOv2Aligner.data_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.data_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> <span class="o">=</span> <span class="n">data_args</span></div> + +<div class="viewcode-block" id="MemorySafeDPOv2Aligner.aligner_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.aligner_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span> <span class="o">=</span> <span class="n">aligner_args</span></div> + +<div class="viewcode-block" id="MemorySafeDPOv2Aligner.aligner_file_path"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.aligner_file_path">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">aligner_file_path</span> <span class="o">=</span> <span class="n">pkg_resources</span><span class="o">.</span><span class="n">files</span><span class="p">(</span><span class="s2">&quot;lmflow.pipeline.utils&quot;</span><span class="p">)</span> <span class="o">/</span> <span class="s2">&quot;memory_safe_dpov2_align.py&quot;</span></div> + + +<div class="viewcode-block" id="MemorySafeDPOv2Aligner.align"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.align">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">align</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">aligner_args</span> <span class="o">=</span> <span class="n">make_shell_args_from_dataclass</span><span class="p">(</span> + <span class="n">dataclass_objects</span><span class="o">=</span><span class="p">[</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">ref_model_args</span> + <span class="p">],</span> + <span class="nb">format</span><span class="o">=</span><span class="s2">&quot;shell&quot;</span><span class="p">,</span> + <span class="n">ignored_args_list</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;accelerator_config&#39;</span><span class="p">,</span> <span class="s1">&#39;fsdp_config&#39;</span><span class="p">,</span> <span class="s1">&#39;_n_gpu&#39;</span><span class="p">],</span> + <span class="p">)</span> + <span class="n">cmd</span> <span class="o">=</span> <span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;accelerate launch --config_file </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">accelerate_config_file</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="o">+</span> <span class="s2">&quot; &quot;</span> + <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_file_path</span><span class="p">)</span> + <span class="o">+</span> <span class="s2">&quot; &quot;</span> + <span class="o">+</span> <span class="n">aligner_args</span> + <span class="p">)</span> + <span class="n">current_env</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> + <span class="k">for</span> <span class="n">var</span> <span class="ow">in</span> <span class="n">MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE</span><span class="p">:</span> + <span class="n">current_env</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">var</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> + + <span class="n">cli_res</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span> + <span class="n">args</span><span class="o">=</span><span class="n">cmd</span><span class="p">,</span> + <span class="n">stdout</span><span class="o">=</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span> + <span class="n">stderr</span><span class="o">=</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span> + <span class="n">shell</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">preexec_fn</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">setsid</span><span class="p">,</span> + <span class="n">env</span><span class="o">=</span><span class="n">current_env</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;MemorySafeDPOv2Aligner subprocess run finished, info at finish: </span><span class="si">{</span><span class="n">cli_res</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">cli_res</span><span class="o">.</span><span class="n">returncode</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="n">cli_res</span><span class="o">.</span><span class="n">stderr</span><span class="p">)</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Error during MemorySafeDPOv2Aligner: </span><span class="si">{</span><span class="n">cli_res</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/evaluator.html b/_modules/lmflow/pipeline/evaluator.html new file mode 100644 index 000000000..8479d3738 --- /dev/null +++ b/_modules/lmflow/pipeline/evaluator.html @@ -0,0 +1,979 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.evaluator &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/evaluator';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.evaluator</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.evaluator</h1><div class="highlight"><pre> +<span></span><span class="sd">&quot;&quot;&quot;The Evaluator class simplifies the process of running evaluation on a language model provided by a HFDecoderModel instance imported from the lmflow package. The class constructor takes three dictionaries as arguments: model_args containing arguments related to the language model, data_args containing arguments related to the data used for evaluation, and evaluator_args containing other arguments for the evaluation process.</span> + +<span class="sd">The class has two methods: create_dataloader() that loads the data from the test file, creates a data loader, and returns it with the size of the data, and evaluate(model) that generates output text given input text. It uses the create_dataloader() method to load the data, iterates over the data in mini-batches, and encodes the input text with the encode() method of the HFDecoderModel class. Then, it generates output text using the evaluate() method of the HFDecoderModel class, decodes the generated output text using the decode() method of the HFDecoderModel class, and writes the output to a file in the output directory. The method also logs some information to the console and Weights and Biases if the use_wandb argument is True.</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">wandb</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">deepspeed</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">datetime</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">json</span> +<span class="c1"># TODO: remove later</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">accelerate</span><span class="w"> </span><span class="kn">import</span> <span class="n">Accelerator</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">AutoConfig</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.distributed</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">dist</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets.dataset</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.base_pipeline</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePipeline</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.hf_decoder_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">HFDecoderModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.data_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">set_random_seed</span><span class="p">,</span> <span class="n">batchlize</span><span class="p">,</span> <span class="n">answer_extraction</span> +<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">&quot;TOKENIZERS_PARALLELISM&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;false&quot;</span> <span class="c1"># To avoid warnings about parallelism in tokenizers</span> + +<div class="viewcode-block" id="Evaluator"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Evaluator</span><span class="p">(</span><span class="n">BasePipeline</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes the `Evaluator` class with given arguments.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> model_args : ModelArguments object.</span> +<span class="sd"> Contains the arguments required to load the model.</span> +<span class="sd"> </span> +<span class="sd"> data_args : DatasetArguments object.</span> +<span class="sd"> Contains the arguments required to load the dataset.</span> + +<span class="sd"> evaluator_args : EvaluatorArguments object.</span> +<span class="sd"> Contains the arguments required to perform evaluation.</span> + + +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">evaluator_args</span><span class="p">):</span> + <span class="c1"># our method</span> +<div class="viewcode-block" id="Evaluator.data_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.data_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> <span class="o">=</span> <span class="n">data_args</span></div> + +<div class="viewcode-block" id="Evaluator.evaluator_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.evaluator_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span> <span class="o">=</span> <span class="n">evaluator_args</span></div> + +<div class="viewcode-block" id="Evaluator.model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> <span class="o">=</span> <span class="n">model_args</span></div> + + + <span class="c1"># logger</span> + <span class="k">if</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">use_wandb</span> <span class="o">==</span> <span class="kc">True</span><span class="p">):</span> + <span class="n">wandb</span><span class="o">.</span><span class="n">init</span><span class="p">(</span><span class="n">project</span><span class="o">=</span><span class="s2">&quot;lmflow_evaluation&quot;</span><span class="p">)</span> + <span class="c1"># random seed</span> + <span class="n">set_random_seed</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">random_seed</span><span class="p">)</span> +<div class="viewcode-block" id="Evaluator.local_rank"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.local_rank">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;LOCAL_RANK&quot;</span><span class="p">,</span> <span class="s2">&quot;0&quot;</span><span class="p">))</span></div> + +<div class="viewcode-block" id="Evaluator.world_size"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.world_size">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">world_size</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;WORLD_SIZE&quot;</span><span class="p">,</span> <span class="s2">&quot;1&quot;</span><span class="p">))</span></div> + + <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">set_device</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> <span class="c1"># NOTE: cpu-only machine will have error</span> + + <span class="k">if</span> <span class="n">evaluator_args</span><span class="o">.</span><span class="n">use_accelerator_for_evaluator</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span> <span class="o">=</span> <span class="n">Accelerator</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span><span class="o">.</span><span class="n">wait_for_everyone</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">deepspeed</span><span class="o">.</span><span class="n">init_distributed</span><span class="p">()</span> + +<div class="viewcode-block" id="Evaluator.config"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.config">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="n">AutoConfig</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">)</span></div> + + <span class="k">try</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_hidden_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">hidden_size</span> + <span class="k">except</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Error in setting hidden size, use the default size 1024&quot;</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_hidden_size</span> <span class="o">=</span> <span class="mi">1024</span> <span class="c1"># gpt2 seems do not have hidden_size in config</span> + + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;model_hidden_size = </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">model_hidden_size</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="c1"># batch size has to be divisible by world_size, but can be bigger than world_size</span> + <span class="n">train_batch_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">inference_batch_size_per_device</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">world_size</span> + <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">minibatch_size</span> <span class="o">=</span> <span class="n">train_batch_size</span> +<div class="viewcode-block" id="Evaluator.block_size"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.block_size">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">block_size</span> <span class="o">=</span> <span class="n">evaluator_args</span><span class="o">.</span><span class="n">evaluate_block_size</span></div> + + <span class="c1"># dataloader, data_size = create_dataloader(args) # load dataset</span> + + +<div class="viewcode-block" id="Evaluator.create_dataloader"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.create_dataloader">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">create_dataloader</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">):</span> + <span class="n">data_dict</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span> <span class="n">instance</span><span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">instance</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s2">&quot;instances&quot;</span><span class="p">]</span> <span class="p">]</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="p">[</span> <span class="n">instance</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">instance</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s2">&quot;instances&quot;</span><span class="p">]</span> <span class="p">]</span> + <span class="n">dataset_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">outputs</span><span class="p">)</span> + <span class="n">dataset_buf</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">idx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">dataset_size</span><span class="p">):</span> + <span class="n">dataset_buf</span><span class="o">.</span><span class="n">append</span><span class="p">({</span> + <span class="s2">&quot;input&quot;</span><span class="p">:</span> <span class="n">inputs</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> + <span class="s2">&quot;output&quot;</span><span class="p">:</span> <span class="n">outputs</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> + <span class="s2">&quot;input_idx&quot;</span><span class="p">:</span> <span class="n">idx</span> + <span class="p">})</span> + + <span class="n">dataloader</span> <span class="o">=</span> <span class="n">batchlize</span><span class="p">(</span> + <span class="n">dataset_buf</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">minibatch_size</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">random_shuffle</span> + <span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Successfully create dataloader with size </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">dataloader</span><span class="p">)</span><span class="si">}</span><span class="s2">,batch_size </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">minibatch_size</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">dataloader</span><span class="p">,</span> <span class="n">dataset_size</span></div> + + + + <span class="c1"># TODO: Split for better unittest</span> + +<div class="viewcode-block" id="Evaluator._match"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator._match">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_match</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">predicted_answer</span><span class="p">,</span> <span class="n">groundtruth</span><span class="p">,</span> <span class="n">answer_type</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="n">case_insensitive_types</span> <span class="o">=</span> <span class="p">[</span> + <span class="s2">&quot;strategyqa&quot;</span><span class="p">,</span> + <span class="s2">&quot;coin_flip&quot;</span><span class="p">,</span> + <span class="s2">&quot;pubmedqa&quot;</span><span class="p">,</span> + <span class="s2">&quot;binary_choice&quot;</span><span class="p">,</span> + <span class="s2">&quot;medmcqa&quot;</span><span class="p">,</span> + <span class="s2">&quot;usmle&quot;</span><span class="p">,</span> + <span class="p">]</span> + <span class="k">if</span> <span class="n">answer_type</span> <span class="ow">in</span> <span class="n">case_insensitive_types</span><span class="p">:</span> + <span class="k">return</span> <span class="n">predicted_answer</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="n">groundtruth</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">return</span> <span class="n">predicted_answer</span> <span class="o">==</span> <span class="n">groundtruth</span> + <span class="k">return</span> <span class="kc">False</span></div> + + + +<div class="viewcode-block" id="Evaluator.evaluate"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.evaluate">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">evaluate</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">metric</span> <span class="o">=</span> <span class="s2">&quot;accuracy&quot;</span><span class="p">,</span> + <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform Evaluation for a model</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> model : TunableModel object.</span> +<span class="sd"> TunableModel to perform inference</span> + +<span class="sd"> dataset : Dataset object.</span> +<span class="sd"> </span> + +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="n">metric</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;acc&quot;</span><span class="p">,</span> <span class="s2">&quot;accuracy&quot;</span><span class="p">]:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">use_accelerator_for_evaluator</span><span class="p">:</span> + <span class="n">acc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_evaluate_acc_with_accelerator</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">acc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_evaluate_acc_with_deepspeed</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Evaluating final accuracy: </span><span class="si">{</span><span class="n">acc</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">return</span> <span class="n">acc</span> + <span class="k">elif</span> <span class="n">metric</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;ppl&quot;</span><span class="p">,</span> <span class="s2">&quot;perplexity&quot;</span><span class="p">]:</span> + <span class="n">ppl</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_evaluate_ppl</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Evaluating final perplexity: </span><span class="si">{</span><span class="n">ppl</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">return</span> <span class="n">ppl</span> + <span class="k">elif</span> <span class="n">metric</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;nll&quot;</span><span class="p">,</span> <span class="s2">&quot;neg_log_likelihood&quot;</span><span class="p">]:</span> + <span class="n">nll</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_evaluate_nll</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Evaluating final negative log likelihood: </span><span class="si">{</span><span class="n">nll</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">return</span> <span class="n">nll</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;metric </span><span class="si">{</span><span class="n">metric</span><span class="si">}</span><span class="s2"> is not supported&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="Evaluator._evaluate_acc_with_accelerator"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator._evaluate_acc_with_accelerator">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_evaluate_acc_with_accelerator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> + <span class="n">dataloader</span><span class="p">,</span> <span class="n">data_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create_dataloader</span><span class="p">(</span><span class="n">dataset</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span><span class="o">.</span><span class="n">is_local_main_process</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">):</span> + <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">)</span> + <span class="n">output_writer</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">output_dir</span><span class="si">}</span><span class="s2">/evaluation.json&quot;</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> + + <span class="n">correct_number_list</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">batch_index</span><span class="p">,</span> <span class="n">batch</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">dataloader</span><span class="p">):</span> + <span class="k">if</span> <span class="n">batch_index</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">world_size</span> <span class="o">&gt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">max_eval_samples</span><span class="p">:</span> + <span class="k">break</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">inference_batch_size_per_device</span> <span class="o">&gt;=</span> <span class="nb">len</span><span class="p">(</span><span class="n">batch</span><span class="p">):</span> + <span class="n">current_batch</span> <span class="o">=</span> <span class="n">batch</span><span class="p">[:</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">inference_batch_size_per_device</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">current_batch</span> <span class="o">=</span> <span class="n">batch</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">inference_batch_size_per_device</span><span class="p">:(</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">inference_batch_size_per_device</span><span class="p">]</span> + <span class="n">prompt_structure</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">prompt_structure</span> + <span class="nb">input</span> <span class="o">=</span> <span class="p">[</span><span class="n">prompt_structure</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">input</span><span class="o">=</span><span class="n">i</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">])</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">current_batch</span><span class="p">]</span> + <span class="n">output</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span><span class="p">[</span><span class="s1">&#39;output&#39;</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">current_batch</span><span class="p">]</span> + + <span class="n">batch_input</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s2">&quot;pt&quot;</span><span class="p">,</span><span class="n">padding</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="n">batch_input</span><span class="p">[</span><span class="s1">&#39;input_ids&#39;</span><span class="p">]</span> + <span class="n">mask</span> <span class="o">=</span> <span class="n">batch_input</span><span class="p">[</span><span class="s1">&#39;attention_mask&#39;</span><span class="p">]</span> + <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span><span class="o">.</span><span class="n">autocast</span><span class="p">():</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span><span class="n">inputs</span><span class="p">,</span> <span class="n">max_new_tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">max_new_tokens</span><span class="p">,</span><span class="n">attention_mask</span><span class="o">=</span><span class="n">mask</span><span class="p">,</span><span class="n">temperature</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">temperature</span><span class="p">,</span> <span class="n">repetition_penalty</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">repetition_penalty</span><span class="p">,</span><span class="n">use_accelerator</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">use_accelerator_for_evaluator</span><span class="p">)</span> + <span class="n">text_out</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="n">skip_special_tokens</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">decoded_input</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">inputs</span><span class="p">,</span> <span class="n">skip_special_tokens</span><span class="o">=</span><span class="kc">True</span><span class="p">,)</span> + <span class="n">prompt_length</span> <span class="o">=</span> <span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">decoded_input</span><span class="p">]</span> + <span class="n">text_out</span> <span class="o">=</span> <span class="p">[</span><span class="n">text_out</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">prompt_length</span><span class="p">[</span><span class="n">i</span><span class="p">]:]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">text_out</span><span class="p">))]</span> + <span class="n">answer_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">answer_type</span> + <span class="n">pred_answer</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">text_out</span><span class="p">:</span> + <span class="n">pred_answer</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">answer_extraction</span><span class="p">(</span> + <span class="n">i</span><span class="p">,</span> + <span class="n">answer_type</span><span class="o">=</span><span class="n">answer_type</span><span class="p">,</span> + <span class="p">))</span> + <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;batch_index</span><span class="si">{</span><span class="n">batch_index</span><span class="si">}</span><span class="s2"> rank</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="si">}</span><span class="s2">:</span><span class="se">\n</span><span class="s2"> question=</span><span class="si">{</span><span class="nb">input</span><span class="si">}</span><span class="se">\n</span><span class="s2"> prediction=</span><span class="si">{</span><span class="n">text_out</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;predicted answer: </span><span class="si">{</span><span class="n">pred_answer</span><span class="si">}</span><span class="s2"> </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;groundtruth answer: </span><span class="si">{</span><span class="n">output</span><span class="si">}</span><span class="s2"> </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">inference_batch_size_per_device</span> <span class="o">&gt;=</span> <span class="nb">len</span><span class="p">(</span><span class="n">batch</span><span class="p">):</span> + <span class="n">correct_</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">correct_</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">pred_answer</span><span class="p">)):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">pred_answer</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">output</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">answer_type</span><span class="p">):</span> + <span class="n">correct_</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="c1"># collect accuracy from all gpus</span> + <span class="n">all_process</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">([</span><span class="n">correct_</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> + <span class="n">all_process</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span><span class="o">.</span><span class="n">gather</span><span class="p">(</span><span class="n">all_process</span><span class="p">)</span> + <span class="n">correct_</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span><span class="n">all_process</span><span class="o">.</span><span class="n">tolist</span><span class="p">())</span> + <span class="n">correct_number_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">correct_</span><span class="p">)</span> + + <span class="c1"># collect predictions from all gpus</span> + <span class="n">output_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;question&quot;</span><span class="p">:</span> <span class="nb">input</span><span class="p">,</span> + <span class="s2">&quot;prediction&quot;</span><span class="p">:</span> <span class="n">text_out</span><span class="p">,</span> + <span class="s2">&quot;pred_answer&quot;</span><span class="p">:</span> <span class="n">pred_answer</span><span class="p">,</span> + <span class="s2">&quot;answer&quot;</span><span class="p">:</span> <span class="n">output</span><span class="p">}</span> + <span class="k">if</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">world_size</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">):</span> + <span class="n">all_process_list</span> <span class="o">=</span> <span class="p">[{}]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">world_size</span> + <span class="n">dist</span><span class="o">.</span><span class="n">gather_object</span><span class="p">(</span><span class="n">output_dict</span><span class="p">,</span> <span class="n">all_process_list</span> <span class="k">if</span> <span class="n">dist</span><span class="o">.</span><span class="n">get_rank</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> <span class="n">dst</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">all_process_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">output_dict</span><span class="p">]</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span><span class="o">.</span><span class="n">is_local_main_process</span><span class="p">:</span> + <span class="n">current_total</span> <span class="o">=</span> <span class="p">(</span><span class="n">batch_index</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">world_size</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">inference_batch_size_per_device</span> + <span class="n">current_accuracy</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">correct_number_list</span><span class="p">)</span> <span class="o">/</span> <span class="n">current_total</span> <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">current_total</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">data_size</span> <span class="k">else</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">correct_number_list</span><span class="p">)</span> <span class="o">/</span> <span class="n">data_size</span> + <span class="nb">print</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%Y-%m-</span><span class="si">%d</span><span class="s2"> %H:%M:%S&quot;</span><span class="p">),</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">current_total</span><span class="p">)</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nb">int</span><span class="p">(</span><span class="n">current_total</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">data_size</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="n">data_size</span><span class="si">}</span><span class="s2"> / </span><span class="si">{</span><span class="n">data_size</span><span class="si">}</span><span class="s2"> has been finished, # correct = </span><span class="si">{</span><span class="w"> </span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">correct_number_list</span><span class="p">)</span><span class="si">}</span><span class="s2">, current accuracy = </span><span class="si">{</span><span class="n">current_accuracy</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">if</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">use_wandb</span> <span class="o">==</span> <span class="kc">True</span><span class="p">):</span> + <span class="n">wandb</span><span class="o">.</span><span class="n">log</span><span class="p">({</span><span class="s2">&quot;Accuracy&quot;</span><span class="p">:</span> <span class="n">current_accuracy</span><span class="p">})</span> + + <span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">output</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">all_process_list</span><span class="p">):</span> + <span class="n">output_json</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> + <span class="n">output_writer</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">output_json</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span><span class="o">.</span><span class="n">is_local_main_process</span><span class="p">:</span> + <span class="n">current_accuracy</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">correct_number_list</span><span class="p">)</span> <span class="o">/</span> <span class="n">data_size</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;# Correct = </span><span class="si">{</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">correct_number_list</span><span class="p">)</span><span class="si">}</span><span class="s2">, # Total = </span><span class="si">{</span><span class="n">data_size</span><span class="si">}</span><span class="s2">, Final accuracy = &quot;</span><span class="p">,</span> <span class="n">current_accuracy</span><span class="p">)</span> + <span class="n">output_writer</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">correct_number_list</span><span class="p">)</span> <span class="o">/</span> <span class="n">data_size</span></div> + + +<div class="viewcode-block" id="Evaluator._evaluate_acc_with_deepspeed"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator._evaluate_acc_with_deepspeed">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_evaluate_acc_with_deepspeed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> + <span class="n">dataloader</span><span class="p">,</span> <span class="n">data_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create_dataloader</span><span class="p">(</span><span class="n">dataset</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">dist</span><span class="o">.</span><span class="n">is_initialized</span><span class="p">()</span> <span class="ow">or</span> <span class="n">dist</span><span class="o">.</span><span class="n">get_rank</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">):</span> + <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">)</span> + <span class="n">output_writer</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">output_dir</span><span class="si">}</span><span class="s2">/evaluation.json&quot;</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> + + <span class="n">correct_number_list</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">batch_index</span><span class="p">,</span> <span class="n">batch</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">dataloader</span><span class="p">):</span> + <span class="k">if</span> <span class="n">batch_index</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">world_size</span> <span class="o">&gt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">max_eval_samples</span><span class="p">:</span> + <span class="k">break</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">inference_batch_size_per_device</span> <span class="o">&gt;=</span> <span class="nb">len</span><span class="p">(</span><span class="n">batch</span><span class="p">):</span> + <span class="n">current_batch</span> <span class="o">=</span> <span class="n">batch</span><span class="p">[:</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">inference_batch_size_per_device</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">current_batch</span> <span class="o">=</span> <span class="n">batch</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">inference_batch_size_per_device</span><span class="p">:(</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">inference_batch_size_per_device</span><span class="p">]</span> + <span class="n">prompt_structure</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">prompt_structure</span> + <span class="nb">input</span> <span class="o">=</span> <span class="p">[</span><span class="n">prompt_structure</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">input</span><span class="o">=</span><span class="n">i</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">])</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">current_batch</span><span class="p">]</span> + <span class="n">output</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span><span class="p">[</span><span class="s1">&#39;output&#39;</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">current_batch</span><span class="p">]</span> + <span class="n">input_idx</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span><span class="p">[</span><span class="s1">&#39;input_idx&#39;</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">current_batch</span><span class="p">]</span> + <span class="n">batch_input</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s2">&quot;pt&quot;</span><span class="p">,</span><span class="n">padding</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="n">batch_input</span><span class="p">[</span><span class="s1">&#39;input_ids&#39;</span><span class="p">]</span> + <span class="n">mask</span> <span class="o">=</span> <span class="n">batch_input</span><span class="p">[</span><span class="s1">&#39;attention_mask&#39;</span><span class="p">]</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span><span class="n">inputs</span><span class="p">,</span> <span class="n">max_new_tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">max_new_tokens</span><span class="p">,</span> <span class="n">attention_mask</span><span class="o">=</span><span class="n">mask</span><span class="p">,</span><span class="n">temperature</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">temperature</span><span class="p">,</span> <span class="n">repetition_penalty</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">repetition_penalty</span><span class="p">)</span> + <span class="n">text_out</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="n">skip_special_tokens</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="c1"># # only return the generation, trucating the input</span> + <span class="n">decoded_input</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">inputs</span><span class="p">,</span> <span class="n">skip_special_tokens</span><span class="o">=</span><span class="kc">True</span><span class="p">,)</span> + <span class="n">prompt_length</span> <span class="o">=</span> <span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">decoded_input</span><span class="p">]</span> + <span class="n">text_out</span> <span class="o">=</span> <span class="p">[</span><span class="n">text_out</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">prompt_length</span><span class="p">[</span><span class="n">i</span><span class="p">]:]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">text_out</span><span class="p">))]</span> + <span class="n">answer_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">answer_type</span> + <span class="n">pred_answer</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">text_out</span><span class="p">:</span> + <span class="n">pred_answer</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">answer_extraction</span><span class="p">(</span> + <span class="n">i</span><span class="p">,</span> + <span class="n">answer_type</span><span class="o">=</span><span class="n">answer_type</span><span class="p">,</span> + <span class="p">))</span> + <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;batch_index</span><span class="si">{</span><span class="n">batch_index</span><span class="si">}</span><span class="s2"> rank</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="si">}</span><span class="s2">:</span><span class="se">\n</span><span class="s2"> question=</span><span class="si">{</span><span class="nb">input</span><span class="si">}</span><span class="se">\n</span><span class="s2"> prediction=</span><span class="si">{</span><span class="n">text_out</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;predicted answer: </span><span class="si">{</span><span class="n">pred_answer</span><span class="si">}</span><span class="s2"> </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;groundtruth answer: </span><span class="si">{</span><span class="n">output</span><span class="si">}</span><span class="s2"> </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">inference_batch_size_per_device</span> <span class="o">&gt;=</span> <span class="nb">len</span><span class="p">(</span><span class="n">batch</span><span class="p">):</span> + <span class="n">correct_</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">correct_</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">pred_answer</span><span class="p">)):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">pred_answer</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">output</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">answer_type</span><span class="p">):</span> + <span class="n">correct_</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="c1"># collect accuracy from all gpus</span> + <span class="n">all_process</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">([</span><span class="n">correct_</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> + <span class="n">dist</span><span class="o">.</span><span class="n">all_reduce</span><span class="p">(</span><span class="n">all_process</span><span class="p">,</span> <span class="n">dist</span><span class="o">.</span><span class="n">ReduceOp</span><span class="o">.</span><span class="n">SUM</span><span class="p">,</span> <span class="n">async_op</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">correct_</span> <span class="o">=</span> <span class="n">all_process</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span> + <span class="n">correct_number_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">correct_</span><span class="p">)</span> + + <span class="c1"># collect predictions from all gpus</span> + <span class="n">output_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;question&quot;</span><span class="p">:</span> <span class="nb">input</span><span class="p">,</span> + <span class="s2">&quot;prediction&quot;</span><span class="p">:</span> <span class="n">text_out</span><span class="p">,</span> + <span class="s2">&quot;pred_answer&quot;</span><span class="p">:</span> <span class="n">pred_answer</span><span class="p">,</span> + <span class="s2">&quot;answer&quot;</span><span class="p">:</span> <span class="n">output</span><span class="p">}</span> + <span class="n">all_process_list</span> <span class="o">=</span> <span class="p">[{}]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">world_size</span> + + <span class="n">dist</span><span class="o">.</span><span class="n">gather_object</span><span class="p">(</span><span class="n">output_dict</span><span class="p">,</span> <span class="n">all_process_list</span> <span class="k">if</span> <span class="n">dist</span><span class="o">.</span><span class="n">get_rank</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> <span class="n">dst</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">dist</span><span class="o">.</span><span class="n">is_initialized</span><span class="p">()</span> <span class="ow">or</span> <span class="n">dist</span><span class="o">.</span><span class="n">get_rank</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">current_total</span> <span class="o">=</span> <span class="p">(</span><span class="n">batch_index</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">world_size</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">inference_batch_size_per_device</span> + <span class="n">current_accuracy</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">correct_number_list</span><span class="p">)</span> <span class="o">/</span> <span class="n">current_total</span> <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">current_total</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">data_size</span> <span class="k">else</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">correct_number_list</span><span class="p">)</span> <span class="o">/</span> <span class="n">data_size</span> + <span class="nb">print</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%Y-%m-</span><span class="si">%d</span><span class="s2"> %H:%M:%S&quot;</span><span class="p">),</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">current_total</span><span class="p">)</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nb">int</span><span class="p">(</span><span class="n">current_total</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">data_size</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="n">data_size</span><span class="si">}</span><span class="s2"> / </span><span class="si">{</span><span class="n">data_size</span><span class="si">}</span><span class="s2"> has been finished, # correct = </span><span class="si">{</span><span class="w"> </span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">correct_number_list</span><span class="p">)</span><span class="si">}</span><span class="s2">, current accuracy = </span><span class="si">{</span><span class="n">current_accuracy</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">if</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">use_wandb</span> <span class="o">==</span> <span class="kc">True</span><span class="p">):</span> + <span class="n">wandb</span><span class="o">.</span><span class="n">log</span><span class="p">({</span><span class="s2">&quot;Accuracy&quot;</span><span class="p">:</span> <span class="n">current_accuracy</span><span class="p">})</span> + + <span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">output</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">all_process_list</span><span class="p">):</span> + <span class="n">output_json</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> + <span class="n">output_writer</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">output_json</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">dist</span><span class="o">.</span><span class="n">is_initialized</span><span class="p">()</span> <span class="ow">or</span> <span class="n">dist</span><span class="o">.</span><span class="n">get_rank</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">current_accuracy</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">correct_number_list</span><span class="p">)</span> <span class="o">/</span> <span class="n">data_size</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;# Correct = </span><span class="si">{</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">correct_number_list</span><span class="p">)</span><span class="si">}</span><span class="s2">, # Total = </span><span class="si">{</span><span class="n">data_size</span><span class="si">}</span><span class="s2">, Final accuracy = &quot;</span><span class="p">,</span> <span class="n">current_accuracy</span><span class="p">)</span> + <span class="n">output_writer</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">correct_number_list</span><span class="p">)</span> <span class="o">/</span> <span class="n">data_size</span></div> + + +<div class="viewcode-block" id="Evaluator._evaluate_ppl"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator._evaluate_ppl">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_evaluate_ppl</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> + <span class="n">data_dict</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()</span> + <span class="k">if</span> <span class="n">data_dict</span><span class="p">[</span><span class="s1">&#39;type&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;text2text&#39;</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">&quot;ppl evaluation is currently not supported for text2text dataset, please use text_only dataset.&quot;</span><span class="p">)</span> + <span class="n">texts</span> <span class="o">=</span> <span class="p">[</span> <span class="n">instance</span><span class="p">[</span><span class="s2">&quot;text&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">instance</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s2">&quot;instances&quot;</span><span class="p">]</span> <span class="p">]</span> + <span class="n">encodings</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">get_tokenizer</span><span class="p">()(</span><span class="s2">&quot;</span><span class="se">\n\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">texts</span><span class="p">),</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s2">&quot;pt&quot;</span><span class="p">)</span> + <span class="c1"># Define some constant</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">truncate_to_model_max_length</span><span class="p">:</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">max_length</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">n_positions</span><span class="p">,</span> <span class="n">model</span><span class="o">.</span><span class="n">get_max_length</span><span class="p">())</span> + <span class="k">except</span><span class="p">:</span> + <span class="n">max_length</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="mi">1024</span><span class="p">,</span> <span class="n">model</span><span class="o">.</span><span class="n">get_max_length</span><span class="p">())</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">max_length</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">block_size</span> + + <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;The maximum sequence length : </span><span class="si">{</span><span class="n">max_length</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">seq_len</span> <span class="o">=</span> <span class="n">encodings</span><span class="o">.</span><span class="n">input_ids</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> + + <span class="n">nlls</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">prev_end_loc</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">begin_loc</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">seq_len</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">block_size</span><span class="p">):</span> + <span class="n">end_loc</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">begin_loc</span> <span class="o">+</span> <span class="n">max_length</span><span class="p">,</span> <span class="n">seq_len</span><span class="p">)</span> + <span class="n">trg_len</span> <span class="o">=</span> <span class="n">end_loc</span> <span class="o">-</span> <span class="n">prev_end_loc</span> <span class="c1"># may be different from block_size on last loop</span> + <span class="n">input_ids</span> <span class="o">=</span> <span class="n">encodings</span><span class="o">.</span><span class="n">input_ids</span><span class="p">[:,</span> <span class="n">begin_loc</span><span class="p">:</span><span class="n">end_loc</span><span class="p">]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> + <span class="n">target_ids</span> <span class="o">=</span> <span class="n">input_ids</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span> + <span class="n">target_ids</span><span class="p">[:,</span> <span class="p">:</span><span class="o">-</span><span class="n">trg_len</span><span class="p">]</span> <span class="o">=</span> <span class="o">-</span><span class="mi">100</span> + + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()(</span><span class="n">input_ids</span><span class="p">,</span> <span class="n">labels</span><span class="o">=</span><span class="n">target_ids</span><span class="p">)</span> + <span class="c1"># loss is calculated using CrossEntropyLoss which averages over valid labels</span> + <span class="c1"># N.B. the model only calculates loss over trg_len - 1 labels, because it internally shifts the labels</span> + <span class="c1"># to the left by 1.</span> + <span class="n">neg_log_likelihood</span> <span class="o">=</span> <span class="n">outputs</span><span class="o">.</span><span class="n">loss</span> + + <span class="n">nlls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">neg_log_likelihood</span><span class="p">)</span> + <span class="n">prev_end_loc</span> <span class="o">=</span> <span class="n">end_loc</span> + <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Evaluating PPL: </span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">begin_loc</span><span class="o">/</span><span class="bp">self</span><span class="o">.</span><span class="n">block_size</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2"> / </span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">seq_len</span><span class="o">/</span><span class="bp">self</span><span class="o">.</span><span class="n">block_size</span><span class="p">)</span><span class="si">}</span><span class="s2"> Complete, current ppl : </span><span class="si">{</span><span class="n">torch</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">nlls</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">())</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="n">end_loc</span> <span class="o">==</span> <span class="n">seq_len</span><span class="p">:</span> + <span class="k">break</span> + <span class="n">ppl</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">nlls</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">())</span> + <span class="k">return</span> <span class="n">ppl</span></div> + + + +<div class="viewcode-block" id="Evaluator._evaluate_nll"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator._evaluate_nll">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_evaluate_nll</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Evaluates negative log likelihood of the model over a dataset.</span> + +<span class="sd"> NLL = -1/N sum_{i=1}^N sum_{j=1}^|w_i| ln(p(w_{i,j}|context_window)),</span> + +<span class="sd"> where N is the number of data samples, w_{i,j} is the j-th token in</span> +<span class="sd"> i-th sample. Here &quot;context_window&quot; = p(w_{i,start}, w_{i,start+1}, ...,</span> +<span class="sd"> p_{i,j-1} with start = max(0, j - window_length + 1). &quot;window_length&quot;</span> +<span class="sd"> is normally the maximum length accepted by the model.</span> + +<span class="sd"> Returns:</span> +<span class="sd"> A float which represents the negative log likelihood.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">data_dict</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()</span> + + <span class="c1"># Handles prompt structure</span> + <span class="k">if</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;text2text&quot;</span><span class="p">:</span> + <span class="n">prompt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluator_args</span><span class="o">.</span><span class="n">prompt_structure</span> + <span class="n">data_dict</span><span class="p">[</span><span class="s2">&quot;instances&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span> + <span class="p">{</span> + <span class="s2">&quot;input&quot;</span><span class="p">:</span> <span class="n">prompt</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">input</span><span class="o">=</span><span class="n">instance</span><span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">]),</span> + <span class="s2">&quot;output&quot;</span><span class="p">:</span> <span class="n">instance</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">]</span> + <span class="p">}</span> + <span class="k">for</span> <span class="n">instance</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s2">&quot;instances&quot;</span><span class="p">]</span> + <span class="p">]</span> + + <span class="n">dataset</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">data_dict</span><span class="p">)</span> + <span class="n">tokenized_dataset</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">dataset</span><span class="p">,</span> <span class="n">add_special_tokens</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">tokenized_dataset</span> <span class="o">=</span> <span class="n">tokenized_dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()</span> + <span class="n">encoding_list</span> <span class="o">=</span> <span class="p">[</span> + <span class="p">{</span> + <span class="s2">&quot;input_ids&quot;</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">([</span><span class="n">input_ids</span><span class="p">]),</span> + <span class="s2">&quot;labels&quot;</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">([</span><span class="n">labels</span><span class="p">]),</span> + <span class="p">}</span> + <span class="k">for</span> <span class="n">input_ids</span><span class="p">,</span> <span class="n">labels</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">tokenized_dataset</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">],</span> + <span class="n">tokenized_dataset</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">])</span> + <span class="p">]</span> + + <span class="c1"># Gets context window length</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">max_length</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">n_positions</span><span class="p">,</span> + <span class="n">model</span><span class="o">.</span><span class="n">get_max_length</span><span class="p">())</span> + <span class="k">except</span><span class="p">:</span> + <span class="n">max_length</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="mi">1024</span><span class="p">,</span> <span class="n">model</span><span class="o">.</span><span class="n">get_max_length</span><span class="p">())</span> + + <span class="n">nlls</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">full_nlls</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">num_samples</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">encoding_list</span><span class="p">)</span> + <span class="k">for</span> <span class="n">sample_idx</span><span class="p">,</span> <span class="n">encodings</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">encoding_list</span><span class="p">):</span> + <span class="n">seq_len</span> <span class="o">=</span> <span class="n">encodings</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> + + <span class="n">prev_end_loc</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">begin_loc</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">seq_len</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">block_size</span><span class="p">):</span> + <span class="n">end_loc</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">begin_loc</span> <span class="o">+</span> <span class="n">max_length</span><span class="p">,</span> <span class="n">seq_len</span><span class="p">)</span> + + <span class="c1"># may be different from block_size on last loop</span> + <span class="n">trg_len</span> <span class="o">=</span> <span class="n">end_loc</span> <span class="o">-</span> <span class="n">prev_end_loc</span> + <span class="n">input_ids</span> <span class="o">=</span> <span class="n">encodings</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][:,</span> <span class="n">begin_loc</span><span class="p">:</span><span class="n">end_loc</span><span class="p">]</span> + <span class="n">input_ids</span> <span class="o">=</span> <span class="n">input_ids</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> + + <span class="n">labels</span> <span class="o">=</span> <span class="n">encodings</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">][:,</span> <span class="n">begin_loc</span><span class="p">:</span><span class="n">end_loc</span><span class="p">]</span> + <span class="n">target_ids</span> <span class="o">=</span> <span class="n">labels</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span> + <span class="n">full_target_ids</span> <span class="o">=</span> <span class="n">input_ids</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">get_nll</span><span class="p">(</span><span class="n">label_ids</span><span class="p">,</span> <span class="n">nll_list</span><span class="p">):</span> + <span class="n">label_ids</span><span class="p">[:,</span> <span class="p">:</span><span class="o">-</span><span class="n">trg_len</span><span class="p">]</span> <span class="o">=</span> <span class="o">-</span><span class="mi">100</span> + <span class="n">label_ids</span> <span class="o">=</span> <span class="n">label_ids</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> + + <span class="c1"># Valid labels are from 0 to `vocab_size`</span> + <span class="n">num_valid_labels</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">count_nonzero</span><span class="p">(</span><span class="n">label_ids</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span> + <span class="k">if</span> <span class="n">label_ids</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">100</span><span class="p">:</span> + <span class="n">num_valid_labels</span> <span class="o">-=</span> <span class="mi">1</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">torch</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">label_ids</span> <span class="o">==</span> <span class="o">-</span><span class="mi">100</span><span class="p">):</span> + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()(</span> + <span class="n">input_ids</span><span class="p">,</span> <span class="n">labels</span><span class="o">=</span><span class="n">label_ids</span> + <span class="p">)</span> + <span class="c1"># loss is calculated using CrossEntropyLoss which</span> + <span class="c1"># sums over valid labels N.B. the model only</span> + <span class="c1"># calculates loss over trg_len - 1 labels, because</span> + <span class="c1"># it internally shifts the labels to the left by 1.</span> + <span class="n">neg_log_likelihood</span> <span class="o">=</span> <span class="n">outputs</span><span class="o">.</span><span class="n">loss</span> <span class="o">*</span> <span class="n">num_valid_labels</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">neg_log_likelihood</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros</span><span class="p">([])</span><span class="o">.</span><span class="n">to</span><span class="p">(</span> + <span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span> + <span class="p">)</span> + + <span class="n">nll_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">neg_log_likelihood</span><span class="p">)</span> + + <span class="n">get_nll</span><span class="p">(</span><span class="n">target_ids</span><span class="p">,</span> <span class="n">nlls</span><span class="p">)</span> + <span class="n">get_nll</span><span class="p">(</span><span class="n">full_target_ids</span><span class="p">,</span> <span class="n">full_nlls</span><span class="p">)</span> + + <span class="n">current_output_nll</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">nlls</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span> <span class="o">/</span> <span class="p">(</span><span class="n">sample_idx</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> + <span class="n">current_full_nll</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">full_nlls</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span> <span class="o">/</span> <span class="p">(</span><span class="n">sample_idx</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> + + <span class="n">prev_end_loc</span> <span class="o">=</span> <span class="n">end_loc</span> + <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> + <span class="k">if</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;text_only&quot;</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Evaluating negative log likelihood:&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">sample_idx</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2"> / </span><span class="si">{</span><span class="n">num_samples</span><span class="si">}</span><span class="s2"> Complete,&quot;</span> + <span class="sa">f</span><span class="s2">&quot; current nll: </span><span class="si">{</span><span class="n">current_full_nll</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;text2text&quot;</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Evaluating negative log likelihood:&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">sample_idx</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2"> / </span><span class="si">{</span><span class="n">num_samples</span><span class="si">}</span><span class="s2"> Complete,&quot;</span> + <span class="sa">f</span><span class="s2">&quot; current full nll / input nll / output nll:&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">current_full_nll</span><span class="si">}</span><span class="s2"> /&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">current_full_nll</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">current_output_nll</span><span class="si">}</span><span class="s2"> /&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">current_output_nll</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="s2">&quot;f{dataset.get_type()} typed datasets are not&quot;</span> + <span class="s2">&quot; supported&quot;</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">end_loc</span> <span class="o">==</span> <span class="n">seq_len</span><span class="p">:</span> + <span class="k">break</span> + + <span class="n">mean_nll</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">nlls</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span> <span class="o">/</span> <span class="n">num_samples</span> + <span class="k">return</span> <span class="n">mean_nll</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/finetuner.html b/_modules/lmflow/pipeline/finetuner.html new file mode 100644 index 000000000..b68195948 --- /dev/null +++ b/_modules/lmflow/pipeline/finetuner.html @@ -0,0 +1,1101 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.finetuner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/finetuner';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.finetuner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.finetuner</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;The Finetuner class simplifies the process of running finetuning process on a language model for a TunableModel instance with given dataset.</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">copy</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">Iterable</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">datasets</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">transformers</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">evaluate</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">itertools</span><span class="w"> </span><span class="kn">import</span> <span class="n">chain</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">Trainer</span><span class="p">,</span> + <span class="n">default_data_collator</span><span class="p">,</span> + <span class="n">set_seed</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">copy</span><span class="w"> </span><span class="kn">import</span> <span class="n">deepcopy</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">PreTrainedModel</span><span class="p">,</span> <span class="n">TrainingArguments</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.trainer_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_last_checkpoint</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.trainer_callback</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">TrainerCallback</span><span class="p">,</span> + <span class="n">TrainerControl</span><span class="p">,</span> + <span class="n">TrainerState</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.utils</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">is_sagemaker_mp_enabled</span><span class="p">,</span> + <span class="n">send_example_telemetry</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">lmflow.optim.optimizers</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">optim</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="n">OptimizerNames</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets.dataset</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.base_tuner</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseTuner</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.utils.peft_trainer</span><span class="w"> </span><span class="kn">import</span> <span class="n">PeftTrainer</span><span class="p">,</span> <span class="n">PeftSavingCallback</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="Finetuner"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Finetuner</span><span class="p">(</span><span class="n">BaseTuner</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes the `Finetuner` class with given arguments.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> model_args : ModelArguments object.</span> +<span class="sd"> Contains the arguments required to load the model.</span> + +<span class="sd"> data_args : DatasetArguments object.</span> +<span class="sd"> Contains the arguments required to load the dataset.</span> + +<span class="sd"> finetuner_args : FinetunerArguments object.</span> +<span class="sd"> Contains the arguments required to perform finetuning.</span> + +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> + +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments.</span> + +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">finetuner_args</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + +<div class="viewcode-block" id="Finetuner.model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner.model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> <span class="o">=</span> <span class="n">model_args</span></div> + +<div class="viewcode-block" id="Finetuner.data_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner.data_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> <span class="o">=</span> <span class="n">data_args</span></div> + +<div class="viewcode-block" id="Finetuner.finetuner_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner.finetuner_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span> <span class="o">=</span> <span class="n">finetuner_args</span></div> + + + <span class="c1"># Sending telemetry. Tracking the example usage helps us better</span> + <span class="c1"># allocate resources to maintain them. The information sent is the one</span> + <span class="c1"># passed as arguments along with your Python/PyTorch versions.</span> + <span class="n">send_example_telemetry</span><span class="p">(</span><span class="s2">&quot;run_clm&quot;</span><span class="p">,</span> <span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">)</span> + + <span class="c1"># Setup logging</span> + <span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span> + <span class="nb">format</span><span class="o">=</span><span class="s2">&quot;</span><span class="si">%(asctime)s</span><span class="s2"> - </span><span class="si">%(levelname)s</span><span class="s2"> - </span><span class="si">%(name)s</span><span class="s2"> - </span><span class="si">%(message)s</span><span class="s2">&quot;</span><span class="p">,</span> + <span class="n">datefmt</span><span class="o">=</span><span class="s2">&quot;%m/</span><span class="si">%d</span><span class="s2">/%Y %H:%M:%S&quot;</span><span class="p">,</span> + <span class="n">handlers</span><span class="o">=</span><span class="p">[</span><span class="n">logging</span><span class="o">.</span><span class="n">StreamHandler</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">)],</span> + <span class="p">)</span> + + <span class="n">log_level</span> <span class="o">=</span> <span class="n">finetuner_args</span><span class="o">.</span><span class="n">get_process_log_level</span><span class="p">()</span> + <span class="n">logger</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">log_level</span><span class="p">)</span> + <span class="n">datasets</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">logging</span><span class="o">.</span><span class="n">set_verbosity</span><span class="p">(</span><span class="n">log_level</span><span class="p">)</span> + <span class="n">transformers</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">logging</span><span class="o">.</span><span class="n">set_verbosity</span><span class="p">(</span><span class="n">log_level</span><span class="p">)</span> + <span class="n">transformers</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">logging</span><span class="o">.</span><span class="n">enable_default_handler</span><span class="p">()</span> + <span class="n">transformers</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">logging</span><span class="o">.</span><span class="n">enable_explicit_format</span><span class="p">()</span> + + <span class="c1"># Log on each process the small summary:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Process rank: </span><span class="si">{</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">local_rank</span><span class="si">}</span><span class="s2">,&quot;</span> + <span class="sa">f</span><span class="s2">&quot; device: </span><span class="si">{</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">device</span><span class="si">}</span><span class="s2">,&quot;</span> + <span class="sa">f</span><span class="s2">&quot; n_gpu: </span><span class="si">{</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">n_gpu</span><span class="si">}</span><span class="s2">,&quot;</span> + <span class="sa">f</span><span class="s2">&quot;distributed training: </span><span class="si">{</span><span class="nb">bool</span><span class="p">(</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">local_rank</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="si">}</span><span class="s2">,&quot;</span> + <span class="sa">f</span><span class="s2">&quot; 16-bits training: </span><span class="si">{</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">fp16</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Training/evaluation parameters </span><span class="si">{</span><span class="n">finetuner_args</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="c1"># Detecting last checkpoint.</span> + <span class="n">last_checkpoint</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">)</span> <span class="ow">and</span> <span class="n">finetuner_args</span><span class="o">.</span><span class="n">do_train</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">finetuner_args</span><span class="o">.</span><span class="n">overwrite_output_dir</span><span class="p">:</span> + <span class="n">last_checkpoint</span> <span class="o">=</span> <span class="n">get_last_checkpoint</span><span class="p">(</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">)</span> + <span class="k">if</span> <span class="n">last_checkpoint</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">))</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Output directory (</span><span class="si">{</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">output_dir</span><span class="si">}</span><span class="s2">) already&quot;</span> + <span class="s2">&quot; exists and is not empty. &quot;</span> + <span class="s2">&quot;Use --overwrite_output_dir to overcome.&quot;</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="n">last_checkpoint</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">finetuner_args</span><span class="o">.</span><span class="n">resume_from_checkpoint</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Checkpoint detected, resuming training at&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">last_checkpoint</span><span class="si">}</span><span class="s2">. To avoid this behavior, change&quot;</span> + <span class="s2">&quot; the `--output_dir` or add `--overwrite_output_dir` to&quot;</span> + <span class="s2">&quot; train from scratch.&quot;</span> + <span class="p">)</span> +<div class="viewcode-block" id="Finetuner.last_checkpoint"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner.last_checkpoint">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">last_checkpoint</span> <span class="o">=</span> <span class="n">last_checkpoint</span></div> + + + <span class="c1"># Set seed before initializing model.</span> + <span class="n">set_seed</span><span class="p">(</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">seed</span><span class="p">)</span> + + +<div class="viewcode-block" id="Finetuner.group_text"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner.group_text">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">group_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tokenized_datasets</span><span class="p">,</span> <span class="n">model_max_length</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Groups texts together to form blocks of maximum length `model_max_length` and returns the processed data as</span> +<span class="sd"> a dictionary.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">data_args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> + <span class="n">finetuner_args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span> + + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">block_size</span> <span class="o">=</span> <span class="n">model_max_length</span> + <span class="k">if</span> <span class="n">block_size</span> <span class="o">&gt;</span> <span class="mi">1024</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;The chosen tokenizer supports a `model_max_length` that is&quot;</span> + <span class="s2">&quot; longer than the default `block_size` value&quot;</span> + <span class="s2">&quot; of 1024. If you would like to use a longer `block_size`&quot;</span> + <span class="s2">&quot; up to `tokenizer.model_max_length` you can override this &quot;</span> + <span class="s2">&quot; default with `--block_size xxx`.&quot;</span> + <span class="p">)</span> + <span class="n">block_size</span> <span class="o">=</span> <span class="mi">1024</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span> <span class="o">&gt;</span> <span class="n">model_max_length</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">truncate_to_model_max_length</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;The block_size passed (</span><span class="si">{</span><span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span><span class="si">}</span><span class="s2">) is larger&quot;</span> + <span class="sa">f</span><span class="s2">&quot; than the maximum length for the model&quot;</span> + <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">model_max_length</span><span class="si">}</span><span class="s2">).&quot;</span> + <span class="sa">f</span><span class="s2">&quot; Using block_size=</span><span class="si">{</span><span class="n">model_max_length</span><span class="si">}</span><span class="s2">.&quot;</span> + <span class="sa">f</span><span class="s2">&quot;If you would like to use a longer &#39;block_size&#39; that is&quot;</span> + <span class="sa">f</span><span class="s2">&quot; longer than the maximum length supported by the model,&quot;</span> + <span class="sa">f</span><span class="s2">&quot; you can override this behavior with&quot;</span> + <span class="sa">f</span><span class="s2">&quot;default with `--truncate_to_model_max_length False`.&quot;</span> + <span class="p">)</span> + <span class="n">block_size</span> <span class="o">=</span> <span class="n">model_max_length</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;The block_size passed (</span><span class="si">{</span><span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span><span class="si">}</span><span class="s2">) is larger&quot;</span> + <span class="sa">f</span><span class="s2">&quot;than the maximum length for the model&quot;</span> + <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">model_max_length</span><span class="si">}</span><span class="s2">).&quot;</span> + <span class="sa">f</span><span class="s2">&quot;Using block_size=</span><span class="si">{</span><span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span> + <span class="n">block_size</span> <span class="o">=</span> <span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">block_size</span> <span class="o">=</span> <span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span> + <span class="c1"># Main data processing function that will concatenate all texts from</span> + <span class="c1"># our dataset and generate chunks of block_size.</span> + <span class="k">def</span><span class="w"> </span><span class="nf">group_texts</span><span class="p">(</span><span class="n">examples</span><span class="p">):</span> + <span class="c1"># Concatenate all texts.</span> + <span class="n">concatenated_examples</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="n">chain</span><span class="p">(</span><span class="o">*</span><span class="n">examples</span><span class="p">[</span><span class="n">k</span><span class="p">]))</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">examples</span><span class="o">.</span><span class="n">keys</span><span class="p">()}</span> + <span class="n">total_length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">concatenated_examples</span><span class="p">[</span><span class="nb">list</span><span class="p">(</span><span class="n">examples</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="mi">0</span><span class="p">]])</span> + <span class="c1"># We drop the small remainder, we could add padding if the model</span> + <span class="c1"># supported it instead of this drop, you can customize this part to</span> + <span class="c1"># your needs.</span> + <span class="n">total_length</span> <span class="o">=</span> <span class="p">(</span><span class="n">total_length</span> <span class="o">//</span> <span class="n">block_size</span><span class="p">)</span> <span class="o">*</span> <span class="n">block_size</span> + <span class="c1"># Split by chunks of max_len.</span> + <span class="n">result</span> <span class="o">=</span> <span class="p">{</span> + <span class="n">k</span><span class="p">:</span> <span class="p">[</span><span class="n">t</span><span class="p">[</span><span class="n">i</span> <span class="p">:</span> <span class="n">i</span> <span class="o">+</span> <span class="n">block_size</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">total_length</span><span class="p">,</span> <span class="n">block_size</span><span class="p">)]</span> + <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">concatenated_examples</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> + <span class="p">}</span> + <span class="k">return</span> <span class="n">result</span> + + <span class="c1"># Note that with `batched=True`, this map processes 1,000 texts</span> + <span class="c1"># together, so group_texts throws away a remainder for each of those</span> + <span class="c1"># groups of 1,000 texts. You can adjust that batch_size here but a</span> + <span class="c1"># higher value might be slower to preprocess.</span> + <span class="c1">#</span> + <span class="c1"># To speed up this part, we use multiprocessing. See the documentation</span> + <span class="c1"># of the map method for more information:</span> + <span class="c1"># https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset.map</span> + <span class="k">with</span> <span class="n">finetuner_args</span><span class="o">.</span><span class="n">main_process_first</span><span class="p">(</span><span class="n">desc</span><span class="o">=</span><span class="s2">&quot;grouping texts together&quot;</span><span class="p">):</span> + <span class="n">group_batch_size</span> <span class="o">=</span> <span class="n">data_args</span><span class="o">.</span><span class="n">group_texts_batch_size</span> + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="p">:</span> + <span class="n">group_batch_size</span> <span class="o">=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">data_args</span><span class="o">.</span><span class="n">streaming</span><span class="p">:</span> + <span class="n">lm_datasets</span> <span class="o">=</span> <span class="n">tokenized_datasets</span><span class="o">.</span><span class="n">map</span><span class="p">(</span> + <span class="n">group_texts</span><span class="p">,</span> + <span class="n">batched</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="n">group_batch_size</span><span class="p">,</span> + <span class="n">num_proc</span><span class="o">=</span><span class="n">data_args</span><span class="o">.</span><span class="n">preprocessing_num_workers</span><span class="p">,</span> + <span class="n">load_from_cache_file</span><span class="o">=</span><span class="ow">not</span> <span class="n">data_args</span><span class="o">.</span><span class="n">overwrite_cache</span><span class="p">,</span> + <span class="n">desc</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;Grouping texts in chunks of </span><span class="si">{</span><span class="n">block_size</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">lm_datasets</span> <span class="o">=</span> <span class="n">tokenized_datasets</span><span class="o">.</span><span class="n">map</span><span class="p">(</span> + <span class="n">group_texts</span><span class="p">,</span> + <span class="n">batched</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="n">group_batch_size</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">lm_datasets</span></div> + + +<div class="viewcode-block" id="Finetuner.create_customized_optimizer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner.create_customized_optimizer">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">create_customized_optimizer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">base_trainer_class</span><span class="p">,</span> <span class="n">model_args</span><span class="p">):</span> + <span class="k">class</span><span class="w"> </span><span class="nc">CustomizedOptimTrainer</span><span class="p">(</span><span class="n">base_trainer_class</span><span class="p">):</span> + + <span class="nd">@staticmethod</span> + <span class="k">def</span><span class="w"> </span><span class="nf">get_optimizer_cls_and_kwargs</span><span class="p">(</span> + <span class="n">args</span><span class="p">:</span> <span class="n">TrainingArguments</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">PreTrainedModel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Any</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span> + <span class="c1"># parse args.optim_args</span> + <span class="n">optim_args</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim_args</span><span class="p">:</span> + <span class="k">for</span> <span class="n">mapping</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim_args</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="p">):</span> + <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">mapping</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;=&quot;</span><span class="p">)</span> + <span class="n">optim_args</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> + + <span class="n">optimizer_kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;lr&quot;</span><span class="p">:</span> <span class="n">args</span><span class="o">.</span><span class="n">learning_rate</span><span class="p">}</span> + + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">DUMMY</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">Dummy</span> + <span class="n">dummy_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_dummy_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_dummy_beta2</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">dummy_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADABELIEF</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">AdaBelief</span> + <span class="n">adabelief_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_beta2</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">)</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adabelief_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADABOUND</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">AdaBound</span> + <span class="n">adabound_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_beta2</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">)</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adabound_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">LARS</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">LARS</span> + <span class="n">lars_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;momentum&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_momentum</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">lars_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">LAMB</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">Lamb</span> + <span class="n">lamb_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_beta2</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">lamb_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAMAX</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">Adamax</span> + <span class="n">adamax_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_beta2</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adamax_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">NADAM</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">NAdam</span> + <span class="n">nadam_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_beta2</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">nadam_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">RADAM</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">RAdam</span> + <span class="n">radam_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_beta2</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">radam_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAMP</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">AdamP</span> + <span class="n">adamp_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_beta2</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adamp_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">SGDP</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">SGDP</span> + <span class="n">sgdp_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;momentum&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_momentum</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">sgdp_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">YOGI</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">Yogi</span> + <span class="n">yogi_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_beta2</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">yogi_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">SOPHIA</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">SophiaG</span> + <span class="n">sophia_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_beta2</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">sophia_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAM</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">Adam</span> + <span class="n">adam_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_beta2</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adam_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">NOVOGRAD</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">NovoGrad</span> + <span class="n">novograd_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_beta2</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">novograd_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADADELTA</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">Adadelta</span> + <span class="n">adadelta_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adadelta_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAGRAD</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">AdaGrad</span> + <span class="n">adagrad_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adagrad_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAMW_SCHEDULE_FREE</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">AdamWScheduleFree</span> + <span class="n">adamw_schedule_free_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_beta2</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adamw_schedule_free_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">SGD_SCHEDULE_FREE</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">SGDScheduleFree</span> + <span class="n">sgd_schedule_free_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;momentum&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_momentum</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">sgd_schedule_free_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAN</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">optim</span><span class="o">.</span><span class="n">Adan</span> + <span class="n">adan_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_beta2</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_beta3</span><span class="p">),</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">optim_weight_decay</span><span class="p">),</span> + <span class="p">}</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adan_kwargs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Trainer cannot instantiate unsupported optimizer: &quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">args</span><span class="o">.</span><span class="n">customized_optim</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">optimizer_cls</span><span class="p">,</span> <span class="n">optimizer_kwargs</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">create_optimizer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">opt_model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span> <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">()</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">decay_parameters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_decay_parameter_names</span><span class="p">(</span><span class="n">opt_model</span><span class="p">)</span> + <span class="n">optimizer_grouped_parameters</span> <span class="o">=</span> <span class="p">[</span> + <span class="p">{</span> + <span class="s2">&quot;params&quot;</span><span class="p">:</span> <span class="p">[</span> + <span class="n">p</span> <span class="k">for</span> <span class="n">n</span><span class="p">,</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">opt_model</span><span class="o">.</span><span class="n">named_parameters</span><span class="p">()</span> + <span class="k">if</span> <span class="p">(</span><span class="n">n</span> <span class="ow">in</span> <span class="n">decay_parameters</span> <span class="ow">and</span> <span class="n">p</span><span class="o">.</span><span class="n">requires_grad</span><span class="p">)</span> + <span class="p">],</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">weight_decay</span><span class="p">,</span> + <span class="p">},</span> + <span class="p">{</span> + <span class="s2">&quot;params&quot;</span><span class="p">:</span> <span class="p">[</span> + <span class="n">p</span> <span class="k">for</span> <span class="n">n</span><span class="p">,</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">opt_model</span><span class="o">.</span><span class="n">named_parameters</span><span class="p">()</span> + <span class="k">if</span> <span class="p">(</span><span class="n">n</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">decay_parameters</span> <span class="ow">and</span> <span class="n">p</span><span class="o">.</span><span class="n">requires_grad</span><span class="p">)</span> + <span class="p">],</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="mf">0.0</span><span class="p">,</span> + <span class="p">},</span> + <span class="p">]</span> + + <span class="n">optimizer_cls</span><span class="p">,</span> <span class="n">optimizer_kwargs</span> <span class="o">=</span> <span class="n">CustomizedOptimTrainer</span><span class="o">.</span><span class="n">get_optimizer_cls_and_kwargs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="n">opt_model</span><span class="p">)</span> + + <span class="c1"># Overwrite `params` in case it&#39;s created by</span> + <span class="c1"># `get_optimizer_cls_and_kwargs` e.g. for GaLore optimizer.</span> + <span class="k">if</span> <span class="s2">&quot;params&quot;</span> <span class="ow">in</span> <span class="n">optimizer_kwargs</span><span class="p">:</span> + <span class="n">optimizer_grouped_parameters</span> <span class="o">=</span> <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span> + <span class="s2">&quot;params&quot;</span> + <span class="p">)</span> + + <span class="c1"># For layer-wise dummy optimizers we overwrite</span> + <span class="c1"># optimizer_grouped_parameters with `optimizer_dict` to</span> + <span class="c1"># avoid arguments conflicts.</span> + <span class="k">if</span> <span class="s2">&quot;optimizer_dict&quot;</span> <span class="ow">in</span> <span class="n">optimizer_kwargs</span><span class="p">:</span> + <span class="n">optimizer_grouped_parameters</span> <span class="o">=</span> <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span> + <span class="s2">&quot;optimizer_dict&quot;</span> + <span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="o">=</span> <span class="n">optimizer_cls</span><span class="p">(</span> + <span class="n">optimizer_grouped_parameters</span><span class="p">,</span> + <span class="o">**</span><span class="n">optimizer_kwargs</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="o">=</span> <span class="n">smp</span><span class="o">.</span><span class="n">DistributedOptimizer</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">CustomizedOptimTrainer</span></div> + + +<div class="viewcode-block" id="Finetuner.tune"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner.tune">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">tune</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">,</span> + <span class="n">transform_dataset_in_place</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">data_collator</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform tuning for a model</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> model : TunableModel object.</span> +<span class="sd"> TunableModel to perform tuning.</span> + +<span class="sd"> dataset:</span> +<span class="sd"> dataset to train model.</span> + +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">model_args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> + <span class="n">data_args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> + <span class="n">finetuner_args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">transform_dataset_in_place</span><span class="p">:</span> + <span class="n">dataset</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">dataset</span><span class="p">)</span> + + <span class="c1"># Tokenization and text grouping must be done in the main process</span> + <span class="k">if</span> <span class="n">dataset</span><span class="o">.</span><span class="n">backend</span> <span class="o">==</span> <span class="s2">&quot;custom_multi_modal&quot;</span><span class="p">:</span> + <span class="n">dataset</span><span class="o">.</span><span class="n">backend_dataset</span><span class="o">.</span><span class="n">register_tokenizer</span><span class="p">(</span> + <span class="n">model</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">,</span> <span class="n">model</span><span class="o">.</span><span class="n">image_processor</span><span class="p">)</span> + <span class="n">lm_dataset</span> <span class="o">=</span> <span class="n">dataset</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">with</span> <span class="n">finetuner_args</span><span class="o">.</span><span class="n">main_process_first</span><span class="p">(</span><span class="n">desc</span><span class="o">=</span><span class="s2">&quot;dataset map tokenization&quot;</span><span class="p">):</span> + <span class="n">tokenized_dataset</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">dataset</span><span class="p">)</span> + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="p">:</span> + <span class="n">lm_dataset</span> <span class="o">=</span> <span class="n">tokenized_dataset</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">lm_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">group_text</span><span class="p">(</span> + <span class="n">tokenized_dataset</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">get_max_length</span><span class="p">(),</span> + <span class="p">)</span> + + <span class="n">train_dataset</span> <span class="o">=</span> <span class="n">lm_dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Number of train samples: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">finetuner_args</span><span class="o">.</span><span class="n">do_eval</span><span class="p">:</span> + <span class="n">eval_dataset_args</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="n">data_args</span><span class="p">)</span> + <span class="n">eval_dataset_args</span><span class="o">.</span><span class="n">dataset_path</span> <span class="o">=</span> <span class="n">finetuner_args</span><span class="o">.</span><span class="n">eval_dataset_path</span> + <span class="n">eval_dataset</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="n">eval_dataset_args</span><span class="p">)</span> + <span class="k">with</span> <span class="n">finetuner_args</span><span class="o">.</span><span class="n">main_process_first</span><span class="p">(</span><span class="n">desc</span><span class="o">=</span><span class="s2">&quot;dataset map tokenization&quot;</span><span class="p">):</span> + <span class="n">tokenized_dataset</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">)</span> + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="p">:</span> + <span class="n">lm_dataset</span> <span class="o">=</span> <span class="n">tokenized_dataset</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">lm_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">group_text</span><span class="p">(</span> + <span class="n">tokenized_dataset</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">get_max_length</span><span class="p">(),</span> + <span class="p">)</span> + <span class="n">eval_dataset</span> <span class="o">=</span> <span class="n">lm_dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Number of eval samples: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">preprocess_logits_for_metrics</span><span class="p">(</span><span class="n">logits</span><span class="p">,</span> <span class="n">labels</span><span class="p">):</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">logits</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">):</span> + <span class="c1"># Depending on the model and config, logits may contain extra tensors,</span> + <span class="c1"># like past_key_values, but logits always come first</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">logits</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="k">return</span> <span class="n">logits</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">dim</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span> + + <span class="n">metric</span> <span class="o">=</span> <span class="n">evaluate</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="s2">&quot;accuracy&quot;</span><span class="p">)</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">compute_metrics</span><span class="p">(</span><span class="n">eval_preds</span><span class="p">):</span> + <span class="n">preds</span><span class="p">,</span> <span class="n">labels</span> <span class="o">=</span> <span class="n">eval_preds</span> + <span class="c1"># preds have the same shape as the labels, after the argmax(-1) has been calculated</span> + <span class="c1"># by preprocess_logits_for_metrics but we need to shift the labels</span> + <span class="n">labels</span> <span class="o">=</span> <span class="n">labels</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> + <span class="n">preds</span> <span class="o">=</span> <span class="n">preds</span><span class="p">[:,</span> <span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> + <span class="k">return</span> <span class="n">metric</span><span class="o">.</span><span class="n">compute</span><span class="p">(</span><span class="n">predictions</span><span class="o">=</span><span class="n">preds</span><span class="p">,</span> <span class="n">references</span><span class="o">=</span><span class="n">labels</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">finetuner_args</span><span class="o">.</span><span class="n">do_train</span><span class="p">:</span> + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">max_train_samples</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">max_train_samples</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">),</span> <span class="n">data_args</span><span class="o">.</span><span class="n">max_train_samples</span><span class="p">)</span> + <span class="n">train_dataset</span> <span class="o">=</span> <span class="n">train_dataset</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="n">max_train_samples</span><span class="p">))</span> + + <span class="c1"># Initialize our Trainer</span> + <span class="n">training_args</span> <span class="o">=</span> <span class="n">finetuner_args</span> + + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_lora</span><span class="p">:</span> + <span class="n">FinetuningTrainer</span> <span class="o">=</span> <span class="n">PeftTrainer</span> + <span class="n">trainer_callbacks</span> <span class="o">=</span> <span class="p">[</span><span class="n">PeftSavingCallback</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">FinetuningTrainer</span> <span class="o">=</span> <span class="n">Trainer</span> + <span class="n">trainer_callbacks</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">if</span> <span class="n">data_collator</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">data_collator</span> <span class="o">=</span> <span class="n">default_data_collator</span> + + <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">use_customized_optim</span><span class="p">:</span> + <span class="n">BaseTrainer</span> <span class="o">=</span> <span class="n">FinetuningTrainer</span> + <span class="n">FinetuningTrainer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create_customized_optimizer</span><span class="p">(</span> + <span class="n">BaseTrainer</span><span class="p">,</span> <span class="n">model_args</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">use_lisa</span><span class="p">:</span> + <span class="k">class</span><span class="w"> </span><span class="nc">DynamicLayerActivationCallback</span><span class="p">(</span><span class="n">TrainerCallback</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n_layers</span><span class="p">,</span> <span class="n">interval_steps</span><span class="p">,</span> <span class="n">model</span><span class="p">):</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">n_layers</span> <span class="o">=</span> <span class="n">n_layers</span> + <span class="bp">self</span><span class="o">.</span><span class="n">interval_steps</span> <span class="o">=</span> <span class="n">interval_steps</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">model</span> + + <span class="c1"># Determine the way to access layers based on the model type</span> + <span class="n">class_to_layers_map</span> <span class="o">=</span> <span class="p">{</span> + <span class="s1">&#39;LlamaForCausalLM&#39;</span><span class="p">:</span> <span class="s1">&#39;model.model.layers&#39;</span><span class="p">,</span> + <span class="s1">&#39;Qwen2ForCausalLM&#39;</span><span class="p">:</span> <span class="s1">&#39;model.model.layers&#39;</span><span class="p">,</span> + <span class="s1">&#39;MistralForCausalLM&#39;</span><span class="p">:</span> <span class="s1">&#39;model.model.layers&#39;</span><span class="p">,</span> + <span class="s1">&#39;MixtralForCausalLM&#39;</span><span class="p">:</span> <span class="s1">&#39;model.model.layers&#39;</span><span class="p">,</span> + <span class="s1">&#39;GemmaForCausalLM&#39;</span><span class="p">:</span> <span class="s1">&#39;model.model.layers&#39;</span><span class="p">,</span> + <span class="s1">&#39;GPT2LMHeadModel&#39;</span><span class="p">:</span> <span class="s1">&#39;model.transformer.h&#39;</span><span class="p">,</span> + <span class="s1">&#39;HymbaForCausalLM&#39;</span><span class="p">:</span> <span class="s1">&#39;model.model.layers&#39;</span><span class="p">,</span> + <span class="p">}</span> + <span class="n">model_class_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> + <span class="k">if</span> <span class="n">model_class_name</span> <span class="ow">in</span> <span class="n">class_to_layers_map</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">layers_attribute</span> <span class="o">=</span> <span class="n">class_to_layers_map</span><span class="p">[</span><span class="n">model_class_name</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">layers_attribute</span> <span class="o">=</span> <span class="n">training_args</span><span class="o">.</span><span class="n">lisa_layers_attribute</span> + <span class="bp">self</span><span class="o">.</span><span class="n">total_layers</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="nb">eval</span><span class="p">(</span><span class="s1">&#39;self.&#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">layers_attribute</span><span class="p">))</span> <span class="c1"># Dynamically execute to get the number of layers</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">active_layers_indices</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">freeze_all_layers</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">layers</span> <span class="o">=</span> <span class="nb">eval</span><span class="p">(</span><span class="s1">&#39;self.&#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">layers_attribute</span><span class="p">)</span> <span class="c1"># Dynamically execute to get layers</span> + <span class="k">for</span> <span class="n">layer</span> <span class="ow">in</span> <span class="n">layers</span><span class="p">:</span> + <span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">layer</span><span class="o">.</span><span class="n">parameters</span><span class="p">():</span> + <span class="n">param</span><span class="o">.</span><span class="n">requires_grad</span> <span class="o">=</span> <span class="kc">False</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">on_step_begin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">state</span><span class="p">,</span> <span class="n">control</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="c1"># Check if it&#39;s time to switch active layers, including at step 0</span> + <span class="k">if</span> <span class="n">state</span><span class="o">.</span><span class="n">global_step</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">interval_steps</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">switch_active_layers</span><span class="p">()</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">switch_active_layers</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="c1"># First, disable gradients for all layers</span> + <span class="bp">self</span><span class="o">.</span><span class="n">freeze_all_layers</span><span class="p">()</span> + + <span class="c1"># Randomly select n_layers to activate</span> + <span class="n">layers</span> <span class="o">=</span> <span class="nb">eval</span><span class="p">(</span><span class="s1">&#39;self.&#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">layers_attribute</span><span class="p">)</span> <span class="c1"># Re-fetch layer references</span> + <span class="bp">self</span><span class="o">.</span><span class="n">active_layers_indices</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">total_layers</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">n_layers</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Activating layers at indices: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">active_layers_indices</span><span class="si">}</span><span class="s2"> for the next steps.&quot;</span><span class="p">,</span> <span class="n">flush</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="c1"># Enable gradients only for the selected layers</span> + <span class="k">for</span> <span class="n">idx</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_layers_indices</span><span class="p">:</span> + <span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">layers</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span><span class="o">.</span><span class="n">parameters</span><span class="p">():</span> + <span class="n">param</span><span class="o">.</span><span class="n">requires_grad</span> <span class="o">=</span> <span class="kc">True</span> + + <span class="c1"># Instantiate the callback</span> + <span class="n">dynamic_layer_activation_callback</span> <span class="o">=</span> <span class="n">DynamicLayerActivationCallback</span><span class="p">(</span> + <span class="n">n_layers</span><span class="o">=</span><span class="n">training_args</span><span class="o">.</span><span class="n">lisa_activated_layers</span><span class="p">,</span> <span class="c1"># Number of layers to activate</span> + <span class="n">interval_steps</span><span class="o">=</span><span class="n">training_args</span><span class="o">.</span><span class="n">lisa_interval_steps</span><span class="p">,</span> <span class="c1"># Step interval to update active layers</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span> + <span class="p">)</span> + + <span class="n">trainer_callbacks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dynamic_layer_activation_callback</span><span class="p">)</span> + + <span class="n">trainer</span> <span class="o">=</span> <span class="n">FinetuningTrainer</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">(),</span> + <span class="n">args</span><span class="o">=</span><span class="n">training_args</span><span class="p">,</span> + <span class="n">train_dataset</span><span class="o">=</span><span class="n">train_dataset</span> <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">do_train</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">eval_dataset</span><span class="o">=</span><span class="n">eval_dataset</span> <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">do_eval</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">get_tokenizer</span><span class="p">(),</span> + <span class="c1"># Data collator will default to DataCollatorWithPadding, so we change it.</span> + <span class="n">data_collator</span><span class="o">=</span><span class="n">data_collator</span><span class="p">,</span> + <span class="n">compute_metrics</span><span class="o">=</span><span class="n">compute_metrics</span> <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">do_eval</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">preprocess_logits_for_metrics</span><span class="o">=</span><span class="n">preprocess_logits_for_metrics</span> <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">do_eval</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">callbacks</span><span class="o">=</span><span class="n">trainer_callbacks</span> + <span class="p">)</span> + <span class="c1"># Training</span> + <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">do_train</span><span class="p">:</span> + <span class="n">checkpoint</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">last_checkpoint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_checkpoint</span> + <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">resume_from_checkpoint</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">checkpoint</span> <span class="o">=</span> <span class="n">training_args</span><span class="o">.</span><span class="n">resume_from_checkpoint</span> + <span class="k">elif</span> <span class="n">last_checkpoint</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">checkpoint</span> <span class="o">=</span> <span class="n">last_checkpoint</span> + <span class="n">train_result</span> <span class="o">=</span> <span class="n">trainer</span><span class="o">.</span><span class="n">train</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="o">=</span><span class="n">checkpoint</span><span class="p">)</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">model_args</span><span class="o">.</span><span class="n">use_lora</span><span class="p">:</span> + <span class="n">trainer</span><span class="o">.</span><span class="n">save_model</span><span class="p">()</span> <span class="c1"># Saves the tokenizer too for easy upload</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">save_aggregated_lora</span><span class="p">:</span> + <span class="n">model</span><span class="o">.</span><span class="n">merge_lora_weights</span><span class="p">()</span> + <span class="n">model</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">model_args</span><span class="o">.</span><span class="n">save_aggregated_lora</span><span class="p">)</span> + <span class="c1"># save language_projection for multi-modal model;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">save_language_projection</span><span class="p">:</span> + <span class="n">language_projection_state</span> <span class="o">=</span> <span class="n">trainer</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">language_projection</span><span class="o">.</span><span class="n">state_dict</span><span class="p">()</span> + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span> + <span class="n">osp</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> + <span class="s2">&quot;language_projection.pth&quot;</span><span class="p">),</span> + <span class="n">language_projection_state</span><span class="p">)</span> + <span class="n">metrics</span> <span class="o">=</span> <span class="n">train_result</span><span class="o">.</span><span class="n">metrics</span> + + <span class="n">max_train_samples</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">data_args</span><span class="o">.</span><span class="n">max_train_samples</span> <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">max_train_samples</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="nb">len</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">)</span> + <span class="p">)</span> + <span class="n">metrics</span><span class="p">[</span><span class="s2">&quot;train_samples&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">max_train_samples</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">))</span> + + <span class="n">trainer</span><span class="o">.</span><span class="n">log_metrics</span><span class="p">(</span><span class="s2">&quot;train&quot;</span><span class="p">,</span> <span class="n">metrics</span><span class="p">)</span> + <span class="n">trainer</span><span class="o">.</span><span class="n">save_metrics</span><span class="p">(</span><span class="s2">&quot;train&quot;</span><span class="p">,</span> <span class="n">metrics</span><span class="p">)</span> + <span class="n">trainer</span><span class="o">.</span><span class="n">save_state</span><span class="p">()</span> + + <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;finetuned_from&quot;</span><span class="p">:</span> <span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> <span class="s2">&quot;tasks&quot;</span><span class="p">:</span> <span class="s2">&quot;text-generation&quot;</span><span class="p">}</span> + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">dataset_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;dataset_tags&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">data_args</span><span class="o">.</span><span class="n">dataset_name</span> + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">dataset_config_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;dataset_args&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">data_args</span><span class="o">.</span><span class="n">dataset_config_name</span> + <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;dataset&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">data_args</span><span class="o">.</span><span class="n">dataset_name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">data_args</span><span class="o">.</span><span class="n">dataset_config_name</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;dataset&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">data_args</span><span class="o">.</span><span class="n">dataset_name</span> + + <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">push_to_hub</span><span class="p">:</span> + <span class="n">trainer</span><span class="o">.</span><span class="n">push_to_hub</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">trainer</span><span class="o">.</span><span class="n">create_model_card</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">model</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/inferencer.html b/_modules/lmflow/pipeline/inferencer.html new file mode 100644 index 000000000..ee436bcd8 --- /dev/null +++ b/_modules/lmflow/pipeline/inferencer.html @@ -0,0 +1,1181 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.inferencer &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/inferencer';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.inferencer</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.inferencer</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;The Inferencer class simplifies the process of model inferencing.&quot;&quot;&quot;</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">copy</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">wandb</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">deepspeed</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">datetime</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">json</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">time</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">concurrent.futures</span><span class="w"> </span><span class="kn">import</span> <span class="n">ThreadPoolExecutor</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">subprocess</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">accelerate</span><span class="w"> </span><span class="kn">import</span> <span class="n">Accelerator</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">AutoConfig</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.distributed</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">dist</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.nn.functional</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">F</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="n">DatasetArguments</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets.dataset</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.base_pipeline</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePipeline</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.hf_decoder_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">HFDecoderModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.data_utils</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span><span class="n">set_random_seed</span><span class="p">,</span> <span class="n">batchlize</span><span class="p">,</span> + <span class="n">answer_extraction</span><span class="p">,</span> <span class="n">process_image_flag</span><span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="n">IMAGE_TOKEN_INDEX</span> +<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">&quot;TOKENIZERS_PARALLELISM&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;false&quot;</span> <span class="c1"># To avoid warnings about parallelism in tokenizers</span> +<div class="viewcode-block" id="rstrip_partial_utf8"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.rstrip_partial_utf8">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">rstrip_partial_utf8</span><span class="p">(</span><span class="n">string</span><span class="p">):</span> + <span class="k">return</span> <span class="n">string</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\ufffd</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="supported_dataset_type"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.supported_dataset_type">[docs]</a> +<span class="n">supported_dataset_type</span> <span class="o">=</span> <span class="p">[</span> + <span class="s2">&quot;text_only&quot;</span><span class="p">,</span> + <span class="s2">&quot;image_text&quot;</span><span class="p">,</span> +<span class="p">]</span></div> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="Inferencer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Inferencer</span><span class="p">(</span><span class="n">BasePipeline</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes the `Inferencer` class with given arguments.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> model_args : ModelArguments object.</span> +<span class="sd"> Contains the arguments required to load the model.</span> + +<span class="sd"> data_args : DatasetArguments object.</span> +<span class="sd"> Contains the arguments required to load the dataset.</span> + +<span class="sd"> inferencer_args : InferencerArguments object.</span> +<span class="sd"> Contains the arguments required to perform inference.</span> + + +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">inferencer_args</span><span class="p">):</span> +<div class="viewcode-block" id="Inferencer.data_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.data_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> <span class="o">=</span> <span class="n">data_args</span></div> + +<div class="viewcode-block" id="Inferencer.inferencer_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.inferencer_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span> <span class="o">=</span> <span class="n">inferencer_args</span></div> + +<div class="viewcode-block" id="Inferencer.model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> <span class="o">=</span> <span class="n">model_args</span></div> + + + <span class="n">set_random_seed</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">random_seed</span><span class="p">)</span> + +<div class="viewcode-block" id="Inferencer.local_rank"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.local_rank">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;LOCAL_RANK&quot;</span><span class="p">,</span> <span class="s2">&quot;0&quot;</span><span class="p">))</span></div> + +<div class="viewcode-block" id="Inferencer.world_size"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.world_size">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">world_size</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;WORLD_SIZE&quot;</span><span class="p">,</span> <span class="s2">&quot;1&quot;</span><span class="p">))</span></div> + + <span class="k">if</span> <span class="n">inferencer_args</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;gpu&quot;</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">set_device</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> <span class="c1"># NOTE: cpu-only machine will have error</span> + <span class="n">deepspeed</span><span class="o">.</span><span class="n">init_distributed</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">&quot;MASTER_ADDR&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;localhost&quot;</span> + <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">&quot;MASTER_PORT&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;15000&quot;</span> + <span class="n">dist</span><span class="o">.</span><span class="n">init_process_group</span><span class="p">(</span> + <span class="s2">&quot;gloo&quot;</span><span class="p">,</span> <span class="n">rank</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">,</span> <span class="n">world_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">world_size</span> + <span class="p">)</span> + +<div class="viewcode-block" id="Inferencer.config"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.config">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="n">AutoConfig</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> <span class="n">trust_remote_code</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div> + + <span class="k">try</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_hidden_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">hidden_size</span> + <span class="k">except</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Error in setting hidden size, use the default size 1024&quot;</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_hidden_size</span> <span class="o">=</span> <span class="mi">1024</span> <span class="c1"># gpt2 seems do not have hidden_size in config</span> + + <span class="k">if</span> <span class="n">inferencer_args</span><span class="o">.</span><span class="n">use_accelerator</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span> <span class="o">=</span> <span class="n">Accelerator</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span><span class="o">.</span><span class="n">wait_for_everyone</span><span class="p">()</span> + + +<div class="viewcode-block" id="Inferencer.create_dataloader"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.create_dataloader">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">create_dataloader</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">):</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&quot;&quot;&quot;Batchlize dataset and format it to dataloader.</span> + +<span class="sd"> Args:</span> +<span class="sd"> dataset (Dataset): the dataset object</span> + +<span class="sd"> Output:</span> +<span class="sd"> dataloader (batchlize): the dataloader object</span> +<span class="sd"> dataset_size (int): the length of the dataset</span> + +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;text_only&quot;</span><span class="p">:</span> + <span class="n">data_dict</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">instance</span><span class="p">[</span><span class="s2">&quot;text&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">instance</span> <span class="ow">in</span> <span class="n">data_dict</span><span class="p">[</span><span class="s2">&quot;instances&quot;</span><span class="p">]</span> <span class="p">]</span> + <span class="k">elif</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;image_text&quot;</span><span class="p">:</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span> + + <span class="n">dataset_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span> + <span class="n">dataset_buf</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">idx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">dataset_size</span><span class="p">):</span> + <span class="n">dataset_buf</span><span class="o">.</span><span class="n">append</span><span class="p">({</span> + <span class="s2">&quot;input&quot;</span><span class="p">:</span> <span class="n">inputs</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> + <span class="s2">&quot;input_idx&quot;</span><span class="p">:</span> <span class="n">idx</span> + <span class="p">})</span> + + <span class="n">dataloader</span> <span class="o">=</span> <span class="n">batchlize</span><span class="p">(</span> + <span class="n">dataset_buf</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">random_shuffle</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">dataloader</span><span class="p">,</span> <span class="n">dataset_size</span></div> + + + +<div class="viewcode-block" id="Inferencer.inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">max_new_tokens</span><span class="p">:</span> <span class="nb">int</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> + <span class="n">temperature</span><span class="p">:</span> <span class="nb">float</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> + <span class="n">prompt_structure</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s1">&#39;</span><span class="si">{input}</span><span class="s1">&#39;</span><span class="p">,</span> + <span class="n">remove_image_flag</span><span class="p">:</span> <span class="nb">bool</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">chatbot_type</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s2">&quot;mini_gpt&quot;</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform inference for a model</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> model : TunableModel object.</span> +<span class="sd"> TunableModel to perform inference</span> + +<span class="sd"> dataset : Dataset object.</span> + + +<span class="sd"> Returns:</span> + +<span class="sd"> output_dataset: Dataset object.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">supported_dataset_type</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="s1">&#39;input dataset should have type </span><span class="si">{}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> + <span class="n">supported_dataset_type</span><span class="p">))</span> + <span class="n">dataloader</span><span class="p">,</span> <span class="n">data_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create_dataloader</span><span class="p">(</span><span class="n">dataset</span><span class="p">)</span> + + <span class="c1"># The output dataset</span> + <span class="n">output_dict</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;text_only&quot;</span><span class="p">,</span> + <span class="s2">&quot;instances&quot;</span><span class="p">:</span> <span class="p">[</span> + <span class="p">]</span> + <span class="p">}</span> + + <span class="k">for</span> <span class="n">batch_index</span><span class="p">,</span> <span class="n">batch</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">dataloader</span><span class="p">):</span> + <span class="n">current_batch</span> <span class="o">=</span> <span class="n">batch</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># batch size is 1</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">current_batch</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">],</span> <span class="nb">str</span><span class="p">):</span> + <span class="nb">input</span> <span class="o">=</span> <span class="n">prompt_structure</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">input</span><span class="o">=</span><span class="n">current_batch</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="nb">input</span> <span class="o">=</span> <span class="n">current_batch</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">]</span> + <span class="nb">input</span><span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">prompt_structure</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">input</span><span class="o">=</span><span class="nb">input</span><span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">])</span> + + <span class="k">if</span> <span class="kc">False</span> <span class="ow">and</span> <span class="s1">&#39;images&#39;</span> <span class="ow">in</span> <span class="nb">input</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">[</span><span class="s1">&#39;images&#39;</span><span class="p">],</span> <span class="nb">list</span><span class="p">):</span> + <span class="nb">input</span><span class="p">[</span><span class="s1">&#39;images&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="nb">input</span><span class="p">[</span><span class="s1">&#39;images&#39;</span><span class="p">])</span> + <span class="k">if</span> <span class="n">remove_image_flag</span><span class="p">:</span> + <span class="c1"># remove the image flag &lt;ImageHere&gt; in tokenization;</span> + <span class="k">if</span> <span class="n">chatbot_type</span> <span class="o">==</span> <span class="s2">&quot;mini_gpt&quot;</span><span class="p">:</span> + <span class="n">image_split_flag</span> <span class="o">=</span> <span class="s2">&quot;&lt;ImageHere&gt;&quot;</span> + <span class="k">elif</span> <span class="n">chatbot_type</span><span class="p">:</span> + <span class="n">image_split_flag</span> <span class="o">=</span> <span class="s2">&quot;&lt;image&gt;&quot;</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span> + <span class="nb">input</span><span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">input</span><span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">image_split_flag</span><span class="p">)</span> + <span class="c1"># TODO remove this code by update the tokenizer</span> + <span class="n">input_ids</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">attention_mask</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">image_token_indexes</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">temp_input</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="nb">input</span><span class="p">)</span> + <span class="k">for</span> <span class="n">idx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">input</span><span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">])):</span> + <span class="n">temp_input</span><span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">input</span><span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">][</span><span class="n">idx</span><span class="p">]</span> + <span class="n">temp_inputs</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span> + <span class="n">temp_input</span><span class="p">,</span> + <span class="n">return_tensors</span><span class="o">=</span><span class="s2">&quot;pt&quot;</span><span class="p">,</span> + <span class="n">add_special_tokens</span><span class="o">=</span><span class="n">idx</span> <span class="o">==</span> <span class="mi">0</span> + <span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> + <span class="n">input_ids</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">temp_inputs</span><span class="p">[</span><span class="s1">&#39;input_ids&#39;</span><span class="p">])</span> + <span class="n">attention_mask</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">temp_inputs</span><span class="p">[</span><span class="s1">&#39;attention_mask&#39;</span><span class="p">])</span> + <span class="k">if</span> <span class="n">chatbot_type</span> <span class="o">==</span> <span class="s2">&quot;llava&quot;</span><span class="p">:</span> + <span class="c1"># add the flag for inserting the image.</span> + <span class="c1"># TODO should merge the way of handling image flag in minigpt and llava.</span> + <span class="n">index_tensor</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span> + <span class="p">[</span><span class="n">IMAGE_TOKEN_INDEX</span><span class="p">]</span> + <span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> + <span class="n">index_tensor</span> <span class="o">=</span> <span class="n">index_tensor</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> + <span class="n">input_ids</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">index_tensor</span><span class="p">)</span> + <span class="n">attention_mask</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> + <span class="n">torch</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">))</span> + <span class="n">image_token_indexes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> + <span class="n">temp_inputs</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">image_token_indexes</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">image_token_indexes</span> <span class="o">=</span> <span class="n">image_token_indexes</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + <span class="k">if</span> <span class="n">chatbot_type</span> <span class="o">==</span> <span class="s2">&quot;llava&quot;</span><span class="p">:</span> + <span class="n">input_ids</span> <span class="o">=</span> <span class="n">input_ids</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + <span class="n">attention_mask</span> <span class="o">=</span> <span class="n">attention_mask</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="n">temp_inputs</span> + <span class="n">inputs</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">(</span><span class="n">input_ids</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + <span class="n">inputs</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">(</span><span class="n">attention_mask</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;gpu&quot;</span><span class="p">:</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span> + <span class="nb">input</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s2">&quot;pt&quot;</span> + <span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;cpu&quot;</span><span class="p">:</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span> + <span class="nb">input</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s2">&quot;pt&quot;</span> + <span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="s1">&#39;cpu&#39;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;device </span><span class="se">\&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">device</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2"> is not supported&quot;</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">use_accelerator</span><span class="p">:</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="n">inputs</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + + + <span class="k">if</span> <span class="n">remove_image_flag</span><span class="p">:</span> + <span class="n">inputs</span><span class="p">[</span><span class="s2">&quot;image_token_indexes&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">image_token_indexes</span> + <span class="n">inputs</span><span class="p">[</span><span class="s2">&quot;one_sample_multiple_images&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">use_accelerator</span><span class="p">:</span> + <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span><span class="o">.</span><span class="n">autocast</span><span class="p">():</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span> + <span class="n">inputs</span><span class="p">,</span> + <span class="n">max_new_tokens</span><span class="o">=</span><span class="n">max_new_tokens</span><span class="p">,</span> + <span class="n">temperature</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">temperature</span><span class="p">,</span> + <span class="n">repetition_penalty</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">repetition_penalty</span><span class="p">,</span> + <span class="n">do_sample</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">do_sample</span><span class="p">,</span> + <span class="n">use_accelerator</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span> + <span class="n">inputs</span><span class="p">,</span> + <span class="n">max_new_tokens</span><span class="o">=</span><span class="n">max_new_tokens</span><span class="p">,</span> + <span class="n">temperature</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">temperature</span><span class="p">,</span> + <span class="n">repetition_penalty</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">repetition_penalty</span><span class="p">,</span> + <span class="n">do_sample</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">do_sample</span><span class="p">,</span> + <span class="p">)</span> + + <span class="c1"># only return the generation, trucating the input</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">arch_type</span> <span class="o">!=</span> <span class="s2">&quot;vision_encoder_decoder&quot;</span><span class="p">:</span> + <span class="n">text_out</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">outputs</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">skip_special_tokens</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">prompt_length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">inputs</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">skip_special_tokens</span><span class="o">=</span><span class="kc">True</span><span class="p">,))</span> + <span class="n">text_out</span> <span class="o">=</span> <span class="n">text_out</span><span class="p">[</span><span class="n">prompt_length</span><span class="p">:]</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># to avoid redundant/missing leading space problem, we use a</span> + <span class="c1"># part of the input text</span> + <span class="n">input_text</span> <span class="o">=</span> <span class="n">inputs</span><span class="p">[</span><span class="s1">&#39;input_ids&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">:]</span> + <span class="n">text_out</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">([</span><span class="n">input_text</span><span class="p">,</span> <span class="n">outputs</span><span class="p">[</span><span class="mi">0</span><span class="p">]]),</span> <span class="n">skip_special_tokens</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">prompt_length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">input_text</span><span class="p">,</span> <span class="n">skip_special_tokens</span><span class="o">=</span><span class="kc">True</span><span class="p">,))</span> + <span class="n">text_out</span> <span class="o">=</span> <span class="n">text_out</span><span class="p">[</span><span class="n">prompt_length</span><span class="p">:]</span> + + <span class="n">output_dict</span><span class="p">[</span><span class="s2">&quot;instances&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">({</span> <span class="s2">&quot;text&quot;</span><span class="p">:</span> <span class="n">text_out</span> <span class="p">})</span> + + <span class="n">output_dataset</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="n">DatasetArguments</span><span class="p">(</span><span class="n">dataset_path</span> <span class="o">=</span> <span class="kc">None</span><span class="p">))</span> + <span class="n">output_dataset</span> <span class="o">=</span> <span class="n">output_dataset</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">output_dict</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">output_dataset</span></div> + + +<div class="viewcode-block" id="Inferencer.stream_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.stream_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">stream_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">context</span><span class="p">,</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">max_new_tokens</span><span class="p">,</span> + <span class="n">token_per_step</span><span class="p">,</span> + <span class="n">temperature</span><span class="p">,</span> + <span class="n">end_string</span><span class="p">,</span> + <span class="n">input_dataset</span><span class="p">,</span> + <span class="n">remove_image_flag</span><span class="p">:</span> <span class="nb">bool</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="p">):</span> + <span class="n">response</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> + <span class="n">history</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">if</span> <span class="s2">&quot;ChatGLMModel&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">architectures</span><span class="p">:</span> + <span class="k">for</span> <span class="n">response</span><span class="p">,</span> <span class="n">history</span> <span class="ow">in</span> <span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span><span class="o">.</span><span class="n">stream_chat</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">get_tokenizer</span><span class="p">(),</span> <span class="n">context</span><span class="p">,</span> <span class="n">history</span><span class="o">=</span><span class="n">history</span><span class="p">):</span> + <span class="n">response</span> <span class="o">=</span> <span class="n">rstrip_partial_utf8</span><span class="p">(</span><span class="n">response</span><span class="p">)</span> + <span class="k">yield</span> <span class="n">response</span><span class="p">,</span> <span class="kc">False</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">max_new_tokens</span> <span class="o">//</span> <span class="n">token_per_step</span><span class="p">):</span> + <span class="n">output_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span> + <span class="n">dataset</span><span class="o">=</span><span class="n">input_dataset</span><span class="p">,</span> + <span class="n">max_new_tokens</span><span class="o">=</span><span class="n">token_per_step</span><span class="p">,</span> + <span class="n">temperature</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">temperature</span><span class="p">,</span> + <span class="n">remove_image_flag</span><span class="o">=</span><span class="n">remove_image_flag</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">new_append_text</span> <span class="o">=</span> <span class="n">output_dataset</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()[</span><span class="s2">&quot;instances&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s2">&quot;text&quot;</span><span class="p">]</span> + <span class="n">new_append_text</span> <span class="o">=</span> <span class="n">rstrip_partial_utf8</span><span class="p">(</span><span class="n">new_append_text</span><span class="p">)</span> + <span class="n">response</span> <span class="o">+=</span> <span class="n">new_append_text</span> + + <span class="n">input_dict</span> <span class="o">=</span> <span class="n">input_dataset</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()</span> + <span class="n">input_dict</span><span class="p">[</span><span class="s2">&quot;instances&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s2">&quot;text&quot;</span><span class="p">]</span> <span class="o">+=</span> <span class="n">new_append_text</span> + <span class="n">input_dataset</span> <span class="o">=</span> <span class="n">input_dataset</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">input_dict</span><span class="p">)</span> + + <span class="n">flag_break</span> <span class="o">=</span> <span class="kc">False</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">index</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">end_string</span><span class="p">)</span> + <span class="n">flag_break</span> <span class="o">=</span> <span class="kc">True</span> + <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> + <span class="n">response</span> <span class="o">+=</span> <span class="n">end_string</span> + <span class="n">index</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">end_string</span><span class="p">)</span> + + <span class="n">response</span> <span class="o">=</span> <span class="n">response</span><span class="p">[:</span><span class="n">index</span><span class="p">]</span> + + <span class="k">yield</span> <span class="n">response</span><span class="p">,</span> <span class="n">flag_break</span></div> +</div> + + + +<div class="viewcode-block" id="SpeculativeInferencer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">SpeculativeInferencer</span><span class="p">(</span><span class="n">Inferencer</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Ref: [arXiv:2211.17192v2](https://arxiv.org/abs/2211.17192)</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> target_model_args : ModelArguments object.</span> +<span class="sd"> Contains the arguments required to load the target model.</span> +<span class="sd"> </span> +<span class="sd"> draft_model_args : ModelArguments object.</span> +<span class="sd"> Contains the arguments required to load the draft model.</span> +<span class="sd"> </span> +<span class="sd"> data_args : DatasetArguments object.</span> +<span class="sd"> Contains the arguments required to load the dataset.</span> + +<span class="sd"> inferencer_args : InferencerArguments object.</span> +<span class="sd"> Contains the arguments required to perform inference.</span> + + +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model_args</span><span class="p">,</span> <span class="n">draft_model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">inferencer_args</span><span class="p">):</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">inferencer_args</span><span class="p">)</span> +<div class="viewcode-block" id="SpeculativeInferencer.draft_model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.draft_model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">draft_model_args</span> <span class="o">=</span> <span class="n">draft_model_args</span></div> + + +<div class="viewcode-block" id="SpeculativeInferencer.draft_config"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.draft_config">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">draft_config</span> <span class="o">=</span> <span class="n">AutoConfig</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="n">draft_model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> <span class="n">trust_remote_code</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div> + + <span class="k">try</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">draft_model_hidden_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">draft_config</span><span class="o">.</span><span class="n">hidden_size</span> + <span class="k">except</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Error in setting hidden size for draft model, use the default size 1024&quot;</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">draft_model_hidden_size</span> <span class="o">=</span> <span class="mi">768</span> + + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="SpeculativeInferencer.score_to_prob"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.score_to_prob">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">score_to_prob</span><span class="p">(</span><span class="n">scores</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> + <span class="n">temperature</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.</span><span class="p">,</span> + <span class="n">top_p</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1.</span><span class="p">,)</span> <span class="o">-&gt;</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Convert scores (NOT softmaxed tensor) to probabilities with support for temperature, top-p sampling, and argmax.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> scores : torch.Tensor</span> +<span class="sd"> Input scores.</span> +<span class="sd"> temperature : float, optional</span> +<span class="sd"> Temperature parameter for controlling randomness. Higher values make the distribution more uniform, </span> +<span class="sd"> lower values make it peakier. When temperature &lt;= 1e-6, argmax is used. by default 0.0</span> +<span class="sd"> top_p : float, optional</span> +<span class="sd"> Top-p sampling parameter for controlling the cumulative probability threshold, by default 1.0 (no threshold)</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> torch.Tensor</span> +<span class="sd"> Probability distribution after adjustments.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">assert</span> <span class="n">temperature</span> <span class="o">&gt;=</span> <span class="mf">0.0</span> + <span class="k">assert</span> <span class="mf">0.0</span> <span class="o">&lt;</span> <span class="n">top_p</span> <span class="o">&lt;=</span> <span class="mf">1.0</span> + + <span class="k">if</span> <span class="n">temperature</span> <span class="o">&lt;=</span> <span class="mf">1e-6</span><span class="p">:</span> + <span class="n">final_prob</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">one_hot</span><span class="p">(</span><span class="n">scores</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span> <span class="n">num_classes</span><span class="o">=</span><span class="n">scores</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span><span class="o">.</span><span class="n">float</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">scores</span> <span class="o">/=</span> <span class="n">temperature</span> + <span class="k">if</span> <span class="n">top_p</span> <span class="o">&lt;</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="n">sorted_scores</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">scores</span><span class="p">,</span> <span class="n">descending</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">probs</span> <span class="o">=</span> <span class="n">sorted_scores</span><span class="o">.</span><span class="n">softmax</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + <span class="n">cumulative_probs</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cumsum</span><span class="p">(</span><span class="n">probs</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + <span class="n">mask</span> <span class="o">=</span> <span class="n">cumulative_probs</span> <span class="o">&lt;=</span> <span class="n">top_p</span> + <span class="k">if</span> <span class="n">mask</span><span class="o">.</span><span class="n">any</span><span class="p">():</span> + <span class="n">thresholded_probs</span> <span class="o">=</span> <span class="n">probs</span> <span class="o">*</span> <span class="n">mask</span> + <span class="n">thresholded_probs</span> <span class="o">=</span> <span class="n">thresholded_probs</span> <span class="o">/</span> <span class="n">thresholded_probs</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">keepdim</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">final_prob</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">scores</span><span class="p">)</span> + <span class="n">final_prob</span><span class="o">.</span><span class="n">scatter_add_</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">sorted_scores</span><span class="o">.</span><span class="n">argsort</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span> <span class="n">thresholded_probs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">final_prob</span> <span class="o">=</span> <span class="n">scores</span><span class="o">.</span><span class="n">softmax</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + + <span class="k">else</span><span class="p">:</span> + <span class="n">final_prob</span> <span class="o">=</span> <span class="n">scores</span><span class="o">.</span><span class="n">softmax</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">final_prob</span></div> + + + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="SpeculativeInferencer.sample"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.sample">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">sample</span><span class="p">(</span><span class="n">prob</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">num_samples</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Sample from a tensor of probabilities</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">sampled_indices</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">multinomial</span><span class="p">(</span><span class="n">prob</span><span class="p">,</span> <span class="n">num_samples</span><span class="o">=</span><span class="n">num_samples</span><span class="p">,</span> <span class="n">replacement</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="k">return</span> <span class="p">{</span><span class="s1">&#39;sampled_token&#39;</span><span class="p">:</span> <span class="n">sampled_indices</span><span class="p">,</span> <span class="s1">&#39;sampled_prob&#39;</span><span class="p">:</span> <span class="n">prob</span><span class="o">.</span><span class="n">gather</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="n">sampled_indices</span><span class="p">),</span> <span class="s1">&#39;all_prob&#39;</span><span class="p">:</span> <span class="n">prob</span><span class="p">}</span></div> + + + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="SpeculativeInferencer.predict_next_token"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.predict_next_token">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">predict_next_token</span><span class="p">(</span><span class="n">model</span><span class="p">:</span> <span class="n">HFDecoderModel</span><span class="p">,</span> <span class="n">input_ids</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">num_new_tokens</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Predict the next token given the input_ids.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span><span class="n">input_ids</span><span class="p">,</span> + <span class="n">use_accelerator</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">max_new_tokens</span><span class="o">=</span><span class="n">num_new_tokens</span><span class="p">,</span> + <span class="n">return_dict_in_generate</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">output_scores</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">do_sample</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">num_beams</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + <span class="k">return</span> <span class="n">output</span></div> + + + +<div class="viewcode-block" id="SpeculativeInferencer.autoregressive_sampling"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.autoregressive_sampling">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">autoregressive_sampling</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> + <span class="n">input_ids</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFDecoderModel</span><span class="p">,</span> + <span class="n">temperature</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.</span><span class="p">,</span> + <span class="n">num_new_tokens</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">5</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Ref: [arXiv:2211.17192v2](https://arxiv.org/abs/2211.17192) Section 2.2</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">sequence</span> <span class="o">=</span> <span class="n">input_ids</span> + <span class="n">new_tokens</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_new_tokens</span><span class="p">):</span> + <span class="n">pred</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">predict_next_token</span><span class="p">(</span><span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span> <span class="n">input_ids</span><span class="o">=</span><span class="n">sequence</span><span class="p">,</span> <span class="n">num_new_tokens</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># predict next one token</span> + <span class="n">prob</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">score_to_prob</span><span class="p">(</span><span class="n">pred</span><span class="o">.</span><span class="n">scores</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">temperature</span><span class="o">=</span><span class="n">temperature</span><span class="p">)</span> + <span class="n">sampled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="n">prob</span><span class="o">=</span><span class="n">prob</span><span class="p">,</span> <span class="n">num_samples</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + <span class="n">new_tokens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sampled</span><span class="p">)</span> + <span class="n">sequence</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">([</span><span class="n">sequence</span><span class="p">,</span> <span class="n">sampled</span><span class="p">[</span><span class="s1">&#39;sampled_token&#39;</span><span class="p">]],</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + + <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;sequence&quot;</span><span class="p">:</span> <span class="n">sequence</span><span class="p">,</span> <span class="s2">&quot;new_tokens&quot;</span><span class="p">:</span> <span class="n">new_tokens</span><span class="p">}</span></div> + + + +<div class="viewcode-block" id="SpeculativeInferencer.inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFDecoderModel</span><span class="p">,</span> + <span class="n">draft_model</span><span class="p">:</span> <span class="n">HFDecoderModel</span><span class="p">,</span> + <span class="nb">input</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">temperature</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.</span><span class="p">,</span> + <span class="n">gamma</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">5</span><span class="p">,</span> + <span class="n">max_new_tokens</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform inference for a model</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> model : HFDecoderModel object.</span> +<span class="sd"> TunableModel to verify tokens generated by the draft model.</span> +<span class="sd"> </span> +<span class="sd"> draft_model : HFDecoderModel object.</span> +<span class="sd"> TunableModel that provides approximations of the target model.</span> + +<span class="sd"> input : str.</span> +<span class="sd"> The input text (i.e., the prompt) for the model.</span> +<span class="sd"> </span> +<span class="sd"> gamma : int.</span> +<span class="sd"> The number of tokens to be generated by the draft model within each iter.</span> +<span class="sd"> </span> +<span class="sd"> max_new_tokens : int.</span> +<span class="sd"> The maximum number of tokens to be generated by the target model.</span> +<span class="sd"> </span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> output: str.</span> +<span class="sd"> The output text generated by the model.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">assert</span> <span class="n">gamma</span> <span class="o">&gt;</span> <span class="mi">0</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;gpu&quot;</span><span class="p">:</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s2">&quot;pt&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;cpu&quot;</span><span class="p">:</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s2">&quot;pt&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="s1">&#39;cpu&#39;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;device </span><span class="se">\&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">device</span><span class="si">}</span><span class="se">\&quot;</span><span class="s2"> is not supported&quot;</span> + <span class="p">)</span> + + + <span class="k">def</span><span class="w"> </span><span class="nf">speculative_sampling</span><span class="p">(</span><span class="n">input_ids</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFDecoderModel</span><span class="p">,</span> + <span class="n">draft_model</span><span class="p">:</span> <span class="n">HFDecoderModel</span><span class="p">,</span> + <span class="n">temperature</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Ref: [arXiv:2211.17192v2](https://arxiv.org/abs/2211.17192)</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> input_ids : torch.Tensor</span> +<span class="sd"> draft_model : TunableModel object</span> +<span class="sd"> model_list : List[TunableModel object]</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> torch.Tensor</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">len_input_ids</span><span class="o">=</span> <span class="n">input_ids</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;len of input_ids: </span><span class="si">{</span><span class="n">len_input_ids</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="c1"># STEP 1: Sample γ guesses x1, ..., xγ from Mq (draft model) autoregressively</span> + <span class="n">output_draft</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">autoregressive_sampling</span><span class="p">(</span><span class="n">input_ids</span><span class="o">=</span><span class="n">input_ids</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="n">draft_model</span><span class="p">,</span> <span class="n">num_new_tokens</span><span class="o">=</span><span class="n">gamma</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;draft result: </span><span class="si">{</span><span class="n">output_draft</span><span class="p">[</span><span class="s1">&#39;sequence&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;draft result decoded: </span><span class="si">{</span><span class="n">draft_model</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">output_draft</span><span class="p">[</span><span class="s1">&#39;sequence&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + + <span class="c1"># STEP 2: Run Mp (target model) in parallel</span> + <span class="c1"># generate sequences [prefix, x1, x2, ..., xγ]</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()(</span><span class="n">input_ids</span><span class="o">=</span><span class="n">output_draft</span><span class="p">[</span><span class="s1">&#39;sequence&#39;</span><span class="p">],</span> <span class="n">return_dict</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;shape of output: </span><span class="si">{</span><span class="n">output</span><span class="o">.</span><span class="n">logits</span><span class="o">.</span><span class="n">shape</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">)</span> + + + <span class="c1"># STEP 3: Determine the number of accepted guesses n</span> + <span class="n">accepted</span> <span class="o">=</span> <span class="p">[</span><span class="kc">False</span><span class="p">]</span> <span class="o">*</span> <span class="n">gamma</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">gamma</span><span class="p">):</span> + <span class="n">draft_sampled_token_id</span> <span class="o">=</span> <span class="n">output_draft</span><span class="p">[</span><span class="s1">&#39;new_tokens&#39;</span><span class="p">][</span><span class="n">i</span><span class="p">][</span><span class="s1">&#39;sampled_token&#39;</span><span class="p">]</span> + <span class="n">draft_sampled_token_prob</span> <span class="o">=</span> <span class="n">output_draft</span><span class="p">[</span><span class="s1">&#39;new_tokens&#39;</span><span class="p">][</span><span class="n">i</span><span class="p">][</span><span class="s1">&#39;sampled_prob&#39;</span><span class="p">]</span> + <span class="n">token_prob</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">score_to_prob</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">logits</span><span class="p">[:,</span><span class="n">len_input_ids</span><span class="o">+</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">,:],</span> <span class="n">temperature</span><span class="o">=</span><span class="n">temperature</span><span class="p">)[</span><span class="mi">0</span><span class="p">,</span> <span class="n">draft_sampled_token_id</span><span class="p">]</span> + + <span class="c1"># reject the sample with probability 1 - p(x)/q(x)</span> + <span class="k">if</span> <span class="n">torch</span><span class="o">.</span><span class="n">rand_like</span><span class="p">(</span><span class="n">token_prob</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">token_prob</span><span class="o">/</span><span class="n">draft_sampled_token_prob</span><span class="p">:</span> + <span class="k">break</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">accepted</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> + + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Speculative Sampling: Accepted: </span><span class="si">{</span><span class="nb">sum</span><span class="p">(</span><span class="n">accepted</span><span class="p">)</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">gamma</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + + <span class="c1"># STEP 4: Adjust the distribution from Mp if needed</span> + <span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">(</span><span class="n">accepted</span><span class="p">):</span> + <span class="n">all_prob</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">score_to_prob</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">logits</span><span class="p">[:,</span><span class="n">len_input_ids</span><span class="o">+</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">,:],</span> <span class="n">temperature</span><span class="o">=</span><span class="n">temperature</span><span class="p">)</span> + <span class="n">draft_all_prob</span> <span class="o">=</span> <span class="n">output_draft</span><span class="p">[</span><span class="s1">&#39;new_tokens&#39;</span><span class="p">][</span><span class="n">i</span><span class="p">][</span><span class="s1">&#39;all_prob&#39;</span><span class="p">]</span> + <span class="n">adjusted_prob</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">all_prob</span><span class="p">),</span> <span class="n">all_prob</span> <span class="o">-</span> <span class="n">draft_all_prob</span><span class="p">)</span> + <span class="n">prob</span> <span class="o">=</span> <span class="n">adjusted_prob</span> <span class="o">/</span> <span class="n">adjusted_prob</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">keepdim</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">prob</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">score_to_prob</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">logits</span><span class="p">[:,</span><span class="o">-</span><span class="mi">1</span><span class="p">,:],</span> <span class="n">temperature</span><span class="o">=</span><span class="n">temperature</span><span class="p">)</span> + + + <span class="c1"># STEP 5: Return n tokens from Mq, and one token from Mp</span> + <span class="n">token_from_target_model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="n">prob</span><span class="p">)[</span><span class="s1">&#39;sampled_token&#39;</span><span class="p">]</span> + <span class="n">final_sequence</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">output_draft</span><span class="p">[</span><span class="s1">&#39;sequence&#39;</span><span class="p">][:,:</span><span class="n">len_input_ids</span><span class="o">+</span><span class="nb">sum</span><span class="p">(</span><span class="n">accepted</span><span class="p">)],</span> <span class="n">token_from_target_model</span><span class="p">],</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">final_sequence</span> + + + <span class="n">num_generated_new_tokens</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">len_raw_input</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">inputs</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + <span class="k">while</span> <span class="n">num_generated_new_tokens</span> <span class="o">&lt;</span> <span class="n">max_new_tokens</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;===== New iter =====&#39;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;input_ids: </span><span class="si">{</span><span class="n">inputs</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">sampling_result</span> <span class="o">=</span> <span class="n">speculative_sampling</span><span class="p">(</span><span class="n">input_ids</span><span class="o">=</span><span class="n">inputs</span><span class="p">,</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span> + <span class="n">draft_model</span><span class="o">=</span><span class="n">draft_model</span><span class="p">,</span> + <span class="n">temperature</span><span class="o">=</span><span class="n">temperature</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;sampling result: </span><span class="si">{</span><span class="n">sampling_result</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;sampling result decoded: </span><span class="si">{</span><span class="n">model</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">sampling_result</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="n">num_generated_new_tokens</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sampling_result</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">inputs</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="n">sampling_result</span> + + + <span class="c1"># if, say, num_generated_new_tokens = 19, and the model accept 3 </span> + <span class="c1"># tokens, the actual generated tokens would be 22.</span> + <span class="k">return</span> <span class="n">model</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">inputs</span><span class="p">[</span><span class="mi">0</span><span class="p">,:</span><span class="n">len_raw_input</span><span class="o">+</span><span class="n">max_new_tokens</span><span class="p">])</span></div> + + + +<div class="viewcode-block" id="SpeculativeInferencer.stream_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.stream_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">stream_inference</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">&quot;Streaming output for SpeculativeInferencer is not supported yet&quot;</span><span class="p">)</span></div> +</div> + + +<div class="viewcode-block" id="ToolInferencer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.ToolInferencer">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">ToolInferencer</span><span class="p">(</span><span class="n">Inferencer</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes the `ToolInferencer` class with given arguments.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> model_args : ModelArguments object.</span> +<span class="sd"> Contains the arguments required to load the model.</span> + +<span class="sd"> data_args : DatasetArguments object.</span> +<span class="sd"> Contains the arguments required to load the dataset.</span> + +<span class="sd"> inferencer_args : InferencerArguments object.</span> +<span class="sd"> Contains the arguments required to perform inference.</span> + + +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">inferencer_args</span><span class="p">):</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">inferencer_args</span><span class="p">)</span> + +<div class="viewcode-block" id="ToolInferencer.model"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.ToolInferencer.model">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">HFDecoderModel</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="ToolInferencer.inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.ToolInferencer.inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFDecoderModel</span><span class="p">,</span> + <span class="nb">input</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">max_new_tokens</span><span class="p">:</span> <span class="nb">int</span><span class="o">=</span><span class="mi">1024</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform inference for a model</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> model : HFDecoderModel object.</span> +<span class="sd"> TunableModel to perform inference</span> + +<span class="sd"> input : str.</span> +<span class="sd"> The input text (i.e., the prompt) for the model. </span> +<span class="sd"> </span> +<span class="sd"> max_new_tokens : int.</span> +<span class="sd"> The maximum number of tokens to be generated by the model.</span> + +<span class="sd"> Returns:</span> + +<span class="sd"> output : str.</span> +<span class="sd"> The output text generated by the model.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;gpu&quot;</span><span class="p">:</span> + <span class="n">input_id</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s2">&quot;pt&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;cpu&quot;</span><span class="p">:</span> + <span class="n">input_id</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s2">&quot;pt&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="o">=</span><span class="s1">&#39;cpu&#39;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;input_id: </span><span class="si">{</span><span class="n">input_id</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">input_length</span> <span class="o">=</span> <span class="n">input_id</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + <span class="n">output_id</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span> + <span class="n">input_id</span><span class="p">,</span> + <span class="n">use_accelerator</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">max_new_tokens</span><span class="o">=</span><span class="n">max_new_tokens</span><span class="p">,</span> + <span class="c1"># pad_token_id=model.tokenizer.eos_token_id,</span> + <span class="p">)</span> + <span class="c1"># logger.debug(f&quot;output: {output_id}&quot;)</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">output_id</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">output</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span><span class="s2">&quot;&quot;</span><span class="p">)</span> + <span class="k">return</span> <span class="n">output</span></div> + + +<div class="viewcode-block" id="ToolInferencer.code_exec"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.ToolInferencer.code_exec">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">code_exec</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">code</span><span class="p">):</span> + <span class="c1"># Execute the code</span> + <span class="n">result</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">run</span><span class="p">([</span><span class="s2">&quot;python&quot;</span><span class="p">,</span> <span class="s2">&quot;-c&quot;</span><span class="p">,</span> <span class="n">code</span><span class="p">],</span> <span class="n">capture_output</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="c1"># Print the result</span> + <span class="k">if</span> <span class="n">result</span><span class="o">.</span><span class="n">returncode</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Successfully Executed, the result is:&quot;</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">stdout</span><span class="p">)</span> + <span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">stdout</span> + <span class="k">else</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Error:&quot;</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">stderr</span><span class="p">)</span> + <span class="k">return</span> <span class="n">result</span></div> +</div> + + + + + + + + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/iterative_dpo_aligner.html b/_modules/lmflow/pipeline/iterative_dpo_aligner.html new file mode 100644 index 000000000..ef8403cec --- /dev/null +++ b/_modules/lmflow/pipeline/iterative_dpo_aligner.html @@ -0,0 +1,746 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.iterative_dpo_aligner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/iterative_dpo_aligner';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.iterative_dpo_aligner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.iterative_dpo_aligner</h1><div class="highlight"><pre> +<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">copy</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">dataclasses</span><span class="w"> </span><span class="kn">import</span> <span class="n">fields</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">gc</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">json</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Any</span><span class="p">,</span> <span class="n">Optional</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">tqdm</span><span class="w"> </span><span class="kn">import</span> <span class="n">tqdm</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.hf_text_regression_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">HFTextRegressionModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.hf_decoder_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">HFDecoderModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets.dataset</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.dpov2_aligner</span><span class="w"> </span><span class="kn">import</span> <span class="n">MemorySafeDPOv2Aligner</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.rm_inferencer</span><span class="w"> </span><span class="kn">import</span> <span class="n">RewardModelInferencer</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.vllm_inferencer</span><span class="w"> </span><span class="kn">import</span> <span class="n">MemorySafeVLLMInferencer</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">InferencerArguments</span><span class="p">,</span> + <span class="n">IterativeDPOAlignerArguments</span><span class="p">,</span> + <span class="n">DPOv2AlignerArguments</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.common</span><span class="w"> </span><span class="kn">import</span> <span class="n">print_banner</span> + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="IterativeDPOAligner"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">IterativeDPOAligner</span><span class="p">:</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">aligner_args</span><span class="p">:</span><span class="n">IterativeDPOAlignerArguments</span><span class="p">,</span> + <span class="n">ref_model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">reward_model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">):</span> +<div class="viewcode-block" id="IterativeDPOAligner.model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> <span class="o">=</span> <span class="n">model_args</span></div> + +<div class="viewcode-block" id="IterativeDPOAligner.data_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.data_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> <span class="o">=</span> <span class="n">data_args</span></div> + +<div class="viewcode-block" id="IterativeDPOAligner.aligner_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.aligner_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span> <span class="o">=</span> <span class="n">aligner_args</span></div> + +<div class="viewcode-block" id="IterativeDPOAligner.ref_model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.ref_model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">ref_model_args</span> <span class="o">=</span> <span class="n">ref_model_args</span></div> + +<div class="viewcode-block" id="IterativeDPOAligner.reward_model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.reward_model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">reward_model_args</span> <span class="o">=</span> <span class="n">reward_model_args</span></div> + +<div class="viewcode-block" id="IterativeDPOAligner.workspace_path"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.workspace_path">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">workspace_path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="IterativeDPOAligner.align"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.align">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">align</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">dataset_list</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]</span> + <span class="p">):</span> + <span class="n">num_iterations</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">dataset_list</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">iter_idx</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span> + <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">initial_iter_idx</span><span class="p">,</span> <span class="n">num_iterations</span><span class="p">),</span> + <span class="n">desc</span><span class="o">=</span><span class="s2">&quot;Iterative DPO Align&quot;</span><span class="p">,</span> + <span class="n">unit</span><span class="o">=</span><span class="s2">&quot;iteration&quot;</span> + <span class="p">):</span> + <span class="k">if</span> <span class="n">iter_idx</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">target_model_args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">target_model_args</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="p">)</span> + <span class="n">target_model_args</span><span class="o">.</span><span class="n">model_name_or_path</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">workspace_path</span><span class="o">/</span><span class="sa">f</span><span class="s2">&quot;iteration_</span><span class="si">{</span><span class="n">iter_idx</span><span class="si">}</span><span class="s2">&quot;</span><span class="o">/</span><span class="s2">&quot;model&quot;</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">_align_single_iteration</span><span class="p">(</span> + <span class="n">iteration_name</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;iteration_</span><span class="si">{</span><span class="n">iter_idx</span><span class="o">+</span><span class="mi">1</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span> + <span class="n">target_model_args</span><span class="o">=</span><span class="n">target_model_args</span><span class="p">,</span> + <span class="n">reward_model_args</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">reward_model_args</span><span class="p">,</span> + <span class="n">ref_model_args</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ref_model_args</span><span class="p">,</span> + <span class="n">dataset</span><span class="o">=</span><span class="n">dataset_list</span><span class="p">[</span><span class="n">iter_idx</span><span class="p">],</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="IterativeDPOAligner._align_single_iteration"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._align_single_iteration">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_align_single_iteration</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">iteration_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">target_model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">reward_model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">ref_model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">do_response_generation</span><span class="p">:</span> + <span class="c1"># generate responses</span> + <span class="n">print_banner</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;Iterative DPO </span><span class="si">{</span><span class="n">iteration_name</span><span class="si">}</span><span class="s1">: Generate responses&#39;</span><span class="p">)</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">HFDecoderModel</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">=</span><span class="n">target_model_args</span><span class="p">,</span> + <span class="n">tune_strategy</span><span class="o">=</span><span class="s1">&#39;none&#39;</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_do_target_model_inference</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span> + <span class="n">dataset</span><span class="o">=</span><span class="n">dataset</span><span class="p">,</span> + <span class="n">output_dir</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">workspace_path</span><span class="o">/</span><span class="n">iteration_name</span><span class="p">),</span> + <span class="p">)</span> + <span class="k">del</span> <span class="n">model</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">do_scoring</span><span class="p">:</span> + <span class="c1"># reward model scoring</span> + <span class="n">print_banner</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;Iterative DPO </span><span class="si">{</span><span class="n">iteration_name</span><span class="si">}</span><span class="s1">: Reward model scoring&#39;</span><span class="p">)</span> + <span class="n">reward_model</span> <span class="o">=</span> <span class="n">HFTextRegressionModel</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">=</span><span class="n">reward_model_args</span><span class="p">,</span> + <span class="n">tune_strategy</span><span class="o">=</span><span class="s1">&#39;none&#39;</span><span class="p">,</span> + <span class="n">use_accelerator</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">use_accelerator</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">target_model_inference_result_data_args</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">dataset</span><span class="o">.</span><span class="n">data_args</span><span class="p">)</span> + <span class="n">target_model_inference_result_data_args</span><span class="o">.</span><span class="n">dataset_path</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">workspace_path</span><span class="o">/</span><span class="n">iteration_name</span><span class="o">/</span><span class="s2">&quot;target_model_inference_result&quot;</span><span class="p">)</span> + <span class="n">target_model_inference_result_data_args</span><span class="o">.</span><span class="n">block_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">reward_model_inference_block_size</span> + <span class="n">target_model_inference_result_dataset</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="n">target_model_inference_result_data_args</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_do_reward_model_inference</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">reward_model</span><span class="p">,</span> + <span class="n">dataset</span><span class="o">=</span><span class="n">target_model_inference_result_dataset</span><span class="p">,</span> + <span class="n">output_dir</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">workspace_path</span><span class="o">/</span><span class="n">iteration_name</span><span class="p">),</span> + <span class="p">)</span> + <span class="k">del</span> <span class="n">reward_model</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">do_dpo_align</span><span class="p">:</span> + <span class="c1"># DPO training</span> + <span class="n">print_banner</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;Iterative DPO </span><span class="si">{</span><span class="n">iteration_name</span><span class="si">}</span><span class="s1">: DPO training&#39;</span><span class="p">)</span> + <span class="n">dpo_train_data_args</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">dataset</span><span class="o">.</span><span class="n">data_args</span><span class="p">)</span> + <span class="n">dpo_train_data_args</span><span class="o">.</span><span class="n">dataset_path</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">workspace_path</span><span class="o">/</span><span class="n">iteration_name</span><span class="o">/</span><span class="s2">&quot;reward_model_inference_result&quot;</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_do_single_dpo_align</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">=</span><span class="n">target_model_args</span><span class="p">,</span> + <span class="n">ref_model_args</span><span class="o">=</span><span class="n">ref_model_args</span><span class="p">,</span> + <span class="n">data_args</span><span class="o">=</span><span class="n">dpo_train_data_args</span><span class="p">,</span> + <span class="n">output_dir</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">workspace_path</span><span class="o">/</span><span class="n">iteration_name</span><span class="o">/</span><span class="s2">&quot;model&quot;</span><span class="p">),</span> + <span class="n">iteration_name</span><span class="o">=</span><span class="n">iteration_name</span><span class="p">,</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="IterativeDPOAligner._do_target_model_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_target_model_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_do_target_model_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFDecoderModel</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">output_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="p">):</span> + <span class="n">result_cache_path</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">Path</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span><span class="o">/</span><span class="s2">&quot;cache&quot;</span><span class="o">/</span><span class="s2">&quot;target_model_inference_result.json&quot;</span><span class="p">)</span> + <span class="n">inferencer</span> <span class="o">=</span> <span class="n">MemorySafeVLLMInferencer</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">model_args</span><span class="p">,</span> + <span class="n">data_args</span><span class="o">=</span><span class="n">dataset</span><span class="o">.</span><span class="n">data_args</span><span class="p">,</span> + <span class="n">inferencer_args</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_target_model_inference_args</span><span class="p">(</span> + <span class="n">args</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="p">,</span> + <span class="n">result_cache_path</span><span class="o">=</span><span class="n">result_cache_path</span><span class="p">,</span> + <span class="p">),</span> + <span class="p">)</span> + <span class="n">res</span> <span class="o">=</span> <span class="n">inferencer</span><span class="o">.</span><span class="n">inference</span><span class="p">()</span> + + <span class="n">dataset_out</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;text_to_textlist&quot;</span><span class="p">,</span> <span class="s2">&quot;instances&quot;</span><span class="p">:</span> <span class="n">res</span><span class="p">}</span> + + <span class="n">target_model_inference_result_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span><span class="o">/</span><span class="s2">&quot;target_model_inference_result&quot;</span> + <span class="n">target_model_inference_result_dir</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span> + <span class="n">dataset_out</span><span class="p">,</span> + <span class="nb">open</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">target_model_inference_result_dir</span><span class="o">/</span><span class="s2">&quot;result.json&quot;</span><span class="p">),</span> <span class="s2">&quot;w&quot;</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">&#39;utf-8&#39;</span><span class="p">),</span> + <span class="n">ensure_ascii</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">indent</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="IterativeDPOAligner._do_reward_model_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_reward_model_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_do_reward_model_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFTextRegressionModel</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">output_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="p">):</span> + <span class="n">inferencer</span> <span class="o">=</span> <span class="n">RewardModelInferencer</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">model_args</span><span class="p">,</span> + <span class="n">data_args</span><span class="o">=</span><span class="n">dataset</span><span class="o">.</span><span class="n">data_args</span><span class="p">,</span> + <span class="n">inferencer_args</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_reward_model_inference_args</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="p">),</span> + <span class="p">)</span> + <span class="n">res</span> <span class="o">=</span> <span class="n">inferencer</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span> + <span class="n">dataset</span><span class="o">=</span><span class="n">dataset</span><span class="p">,</span> + <span class="n">transform_dataset_in_place</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">use_vllm</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">enable_distributed_inference</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">enable_distributed_inference</span><span class="p">,</span> + <span class="n">distributed_inference_num_instances</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">distributed_inference_num_instances</span><span class="p">,</span> + <span class="n">inference_batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">reward_model_inference_batch_size</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">reward_model_inference_result_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span><span class="o">/</span><span class="s2">&quot;reward_model_inference_result&quot;</span> + <span class="n">reward_model_inference_result_dir</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">res</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">reward_model_inference_result_dir</span><span class="o">/</span><span class="s2">&quot;result.json&quot;</span><span class="p">))</span></div> + + + +<div class="viewcode-block" id="IterativeDPOAligner._do_single_dpo_align"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_single_dpo_align">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_do_single_dpo_align</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">ref_model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">output_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">iteration_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="p">):</span> + <span class="n">aligner</span> <span class="o">=</span> <span class="n">MemorySafeDPOv2Aligner</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">=</span><span class="n">model_args</span><span class="p">,</span> + <span class="n">data_args</span><span class="o">=</span><span class="n">data_args</span><span class="p">,</span> + <span class="n">aligner_args</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_dpo_aligner_args</span><span class="p">(</span> + <span class="n">args</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span><span class="p">,</span> + <span class="n">output_dir</span><span class="o">=</span><span class="n">output_dir</span><span class="p">,</span> + <span class="n">iteration_name</span><span class="o">=</span><span class="n">iteration_name</span><span class="p">,</span> + <span class="p">),</span> + <span class="n">ref_model_args</span><span class="o">=</span><span class="n">ref_model_args</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">aligner</span><span class="o">.</span><span class="n">align</span><span class="p">()</span></div> + + + +<div class="viewcode-block" id="IterativeDPOAligner._parse_target_model_inference_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_target_model_inference_args">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_parse_target_model_inference_args</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">args</span><span class="p">:</span> <span class="n">IterativeDPOAlignerArguments</span><span class="p">,</span> + <span class="n">result_cache_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">InferencerArguments</span><span class="p">:</span> + <span class="n">inferencer_args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__filter_args</span><span class="p">(</span> + <span class="n">mixed_args</span><span class="o">=</span><span class="n">args</span><span class="p">,</span> + <span class="n">target_cls</span><span class="o">=</span><span class="n">InferencerArguments</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">inferencer_args</span><span class="o">.</span><span class="n">save_results</span><span class="o">=</span><span class="kc">True</span> + <span class="n">inferencer_args</span><span class="o">.</span><span class="n">results_path</span><span class="o">=</span><span class="n">result_cache_path</span> + + <span class="k">return</span> <span class="n">inferencer_args</span></div> + + + +<div class="viewcode-block" id="IterativeDPOAligner._parse_reward_model_inference_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_reward_model_inference_args">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_parse_reward_model_inference_args</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">args</span><span class="p">:</span> <span class="n">IterativeDPOAlignerArguments</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">InferencerArguments</span><span class="p">:</span> + <span class="n">inferencer_args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__filter_args</span><span class="p">(</span> + <span class="n">mixed_args</span><span class="o">=</span><span class="n">args</span><span class="p">,</span> + <span class="n">target_cls</span><span class="o">=</span><span class="n">InferencerArguments</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">inferencer_args</span></div> + + + +<div class="viewcode-block" id="IterativeDPOAligner._parse_dpo_aligner_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_dpo_aligner_args">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_parse_dpo_aligner_args</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">args</span><span class="p">:</span> <span class="n">IterativeDPOAlignerArguments</span><span class="p">,</span> + <span class="n">output_dir</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">iteration_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">DPOv2AlignerArguments</span><span class="p">:</span> + <span class="n">aligner_args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__filter_args</span><span class="p">(</span> + <span class="n">mixed_args</span><span class="o">=</span><span class="n">args</span><span class="p">,</span> + <span class="n">target_cls</span><span class="o">=</span><span class="n">DPOv2AlignerArguments</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">aligner_args</span><span class="o">.</span><span class="n">output_dir</span> <span class="o">=</span> <span class="n">output_dir</span> + <span class="n">aligner_args</span><span class="o">.</span><span class="n">run_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">args</span><span class="o">.</span><span class="n">run_name</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">iteration_name</span><span class="si">}</span><span class="s2">&quot;</span> + + <span class="k">return</span> <span class="n">aligner_args</span></div> + + + +<div class="viewcode-block" id="IterativeDPOAligner.__filter_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.__filter_args">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__filter_args</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">mixed_args</span><span class="p">,</span> + <span class="n">target_cls</span><span class="p">,</span> + <span class="p">):</span> + <span class="n">target_cls_fields</span> <span class="o">=</span> <span class="p">{</span><span class="n">f</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">(</span><span class="n">target_cls</span><span class="p">)</span> <span class="k">if</span> <span class="n">f</span><span class="o">.</span><span class="n">init</span><span class="p">}</span> + <span class="n">common_fields</span> <span class="o">=</span> <span class="p">{</span><span class="n">f</span><span class="p">:</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">mixed_args</span><span class="p">,</span> <span class="n">f</span><span class="p">)</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">target_cls_fields</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">mixed_args</span><span class="p">,</span> <span class="n">f</span><span class="p">)}</span> + <span class="k">return</span> <span class="n">target_cls</span><span class="p">(</span><span class="o">**</span><span class="n">common_fields</span><span class="p">)</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/raft_aligner.html b/_modules/lmflow/pipeline/raft_aligner.html new file mode 100644 index 000000000..12c390ec1 --- /dev/null +++ b/_modules/lmflow/pipeline/raft_aligner.html @@ -0,0 +1,1176 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.raft_aligner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/raft_aligner';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.raft_aligner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.raft_aligner</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="sd">The Aligner class simplifies the process of running alignment.</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">time</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">itertools</span><span class="w"> </span><span class="kn">import</span> <span class="n">chain</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.distributed</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">dist</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">transformers</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">datasets</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">set_caching_enabled</span><span class="p">,</span> + <span class="n">Dataset</span><span class="p">,</span> + <span class="n">DatasetDict</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">default_data_collator</span><span class="p">,</span> + <span class="n">pipeline</span><span class="p">,</span> + <span class="n">set_seed</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.testing_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">CaptureLogger</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="n">DatasetArguments</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets.dataset</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> <span class="k">as</span> <span class="n">LMFlowDataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.base_aligner</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseAligner</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.utils.raft_trainer</span><span class="w"> </span><span class="kn">import</span> <span class="n">RaftTrainer</span> + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="RaftAligner"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">RaftAligner</span><span class="p">(</span><span class="n">BaseAligner</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes the `RaftAligner` class with given arguments.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> model_args : ModelArguments object.</span> +<span class="sd"> Contains the arguments required to load the model.</span> +<span class="sd"> </span> +<span class="sd"> data_args : DatasetArguments object.</span> +<span class="sd"> Contains the arguments required to load the dataset.</span> + +<span class="sd"> raft_aligner_args : RaftAlignerArguments object.</span> +<span class="sd"> Contains the arguments required to perform alignment.</span> + +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> +<span class="sd"> </span> +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments.</span> + +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">aligner_args</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +<div class="viewcode-block" id="RaftAligner.model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner.model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> <span class="o">=</span> <span class="n">model_args</span></div> + +<div class="viewcode-block" id="RaftAligner.data_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner.data_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> <span class="o">=</span> <span class="n">data_args</span></div> + +<div class="viewcode-block" id="RaftAligner.aligner_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner.aligner_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span> <span class="o">=</span> <span class="n">aligner_args</span></div> + + + <span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span> + <span class="nb">format</span><span class="o">=</span><span class="s2">&quot;</span><span class="si">%(asctime)s</span><span class="s2"> - </span><span class="si">%(levelname)s</span><span class="s2"> - </span><span class="si">%(name)s</span><span class="s2"> - </span><span class="si">%(message)s</span><span class="s2">&quot;</span><span class="p">,</span> + <span class="n">datefmt</span><span class="o">=</span><span class="s2">&quot;%m/</span><span class="si">%d</span><span class="s2">/%Y %H:%M:%S&quot;</span><span class="p">,</span> + <span class="n">handlers</span><span class="o">=</span><span class="p">[</span><span class="n">logging</span><span class="o">.</span><span class="n">StreamHandler</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">)],</span> + <span class="p">)</span> + +<div class="viewcode-block" id="RaftAligner.INF"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner.INF">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">INF</span> <span class="o">=</span> <span class="mi">888888888</span></div> + + <span class="n">logger</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span> + + <span class="n">output_reward_path</span> <span class="o">=</span> <span class="n">aligner_args</span><span class="o">.</span><span class="n">output_reward_path</span> + <span class="k">if</span> <span class="n">output_reward_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">output_reward_path</span><span class="p">),</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="c1"># Deletes a maybe-exist file</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">output_reward_path</span><span class="p">)</span> + <span class="k">except</span> <span class="ne">OSError</span><span class="p">:</span> + <span class="k">pass</span> + + +<div class="viewcode-block" id="RaftAligner._initialize_trainer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner._initialize_trainer">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_initialize_trainer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">,</span> <span class="n">training_args</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> This function takes the model and tokenizer as the input and initialize the trainer.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">trainer</span> <span class="o">=</span> <span class="n">RaftTrainer</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span> + <span class="n">args</span><span class="o">=</span><span class="n">training_args</span><span class="p">,</span> + <span class="n">train_dataset</span><span class="o">=</span><span class="n">Dataset</span><span class="o">.</span><span class="n">from_dict</span><span class="p">({</span><span class="s2">&quot;text&quot;</span><span class="p">:</span> <span class="p">[</span> <span class="s2">&quot; &quot;</span> <span class="p">]</span> <span class="p">}),</span> + <span class="n">eval_dataset</span><span class="o">=</span><span class="n">Dataset</span><span class="o">.</span><span class="n">from_dict</span><span class="p">({}),</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="n">tokenizer</span><span class="p">,</span> + <span class="n">data_collator</span><span class="o">=</span><span class="n">default_data_collator</span><span class="p">,</span> + <span class="n">compute_metrics</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">preprocess_logits_for_metrics</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">trainer</span></div> + + + +<div class="viewcode-block" id="RaftAligner._load_dataset"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner._load_dataset">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_load_dataset</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">selected_dataset</span><span class="p">,</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">,</span> + <span class="n">training_args</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&#39;&#39;&#39;</span> +<span class="sd"> This function prepares the dataset for every iteration.</span> +<span class="sd"> &#39;&#39;&#39;</span> + <span class="n">raw_datasets</span> <span class="o">=</span> <span class="n">selected_dataset</span> + + <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">do_train</span><span class="p">:</span> + <span class="n">column_names</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">raw_datasets</span><span class="p">[</span><span class="s2">&quot;train&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">features</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">column_names</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">raw_datasets</span><span class="p">[</span><span class="s2">&quot;validation&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">features</span><span class="p">)</span> + <span class="n">text_column_name</span> <span class="o">=</span> <span class="s2">&quot;text&quot;</span> <span class="k">if</span> <span class="s2">&quot;text&quot;</span> <span class="ow">in</span> <span class="n">column_names</span> <span class="k">else</span> <span class="n">column_names</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + + <span class="c1"># since this will be pickled to avoid _LazyModule error in Hasher force logger loading before tokenize_function</span> + <span class="n">tok_logger</span> <span class="o">=</span> <span class="n">transformers</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">logging</span><span class="o">.</span><span class="n">get_logger</span><span class="p">(</span><span class="s2">&quot;transformers.tokenization_utils_base&quot;</span><span class="p">)</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">tokenize_function</span><span class="p">(</span><span class="n">examples</span><span class="p">):</span> + <span class="k">with</span> <span class="n">CaptureLogger</span><span class="p">(</span><span class="n">tok_logger</span><span class="p">)</span> <span class="k">as</span> <span class="n">cl</span><span class="p">:</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="p">(</span><span class="n">examples</span><span class="p">[</span><span class="n">text_column_name</span><span class="p">])</span> + <span class="c1"># clm input could be much much longer than block_size</span> + <span class="k">if</span> <span class="s2">&quot;Token indices sequence length is longer than the&quot;</span> <span class="ow">in</span> <span class="n">cl</span><span class="o">.</span><span class="n">out</span><span class="p">:</span> + <span class="n">tok_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;^^^^^^^^^^^^^^^^ Please ignore the warning above - this long input will be chunked into smaller bits&quot;</span> + <span class="s2">&quot; before being passed to the model.&quot;</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">output</span> + + <span class="k">with</span> <span class="n">training_args</span><span class="o">.</span><span class="n">main_process_first</span><span class="p">(</span><span class="n">desc</span><span class="o">=</span><span class="s2">&quot;dataset map tokenization&quot;</span><span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">data_args</span><span class="o">.</span><span class="n">streaming</span><span class="p">:</span> + <span class="n">tokenized_datasets</span> <span class="o">=</span> <span class="n">raw_datasets</span><span class="o">.</span><span class="n">map</span><span class="p">(</span> + <span class="n">tokenize_function</span><span class="p">,</span> + <span class="n">batched</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">num_proc</span><span class="o">=</span><span class="n">data_args</span><span class="o">.</span><span class="n">preprocessing_num_workers</span><span class="p">,</span> + <span class="n">remove_columns</span><span class="o">=</span><span class="n">column_names</span><span class="p">,</span> + <span class="n">load_from_cache_file</span><span class="o">=</span><span class="ow">not</span> <span class="n">data_args</span><span class="o">.</span><span class="n">overwrite_cache</span><span class="p">,</span> + <span class="n">desc</span><span class="o">=</span><span class="s2">&quot;Running tokenizer on dataset&quot;</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">tokenized_datasets</span> <span class="o">=</span> <span class="n">raw_datasets</span><span class="o">.</span><span class="n">map</span><span class="p">(</span> + <span class="n">tokenize_function</span><span class="p">,</span> + <span class="n">batched</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">remove_columns</span><span class="o">=</span><span class="n">column_names</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">block_size</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span> + <span class="k">if</span> <span class="n">block_size</span> <span class="o">&gt;</span> <span class="mi">1024</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;The chosen tokenizer supports a `model_max_length` that is longer than the default `block_size` value&quot;</span> + <span class="s2">&quot; of 1024. If you would like to use a longer `block_size` up to `tokenizer.model_max_length` you can&quot;</span> + <span class="s2">&quot; override this default with `--block_size xxx`.&quot;</span> + <span class="p">)</span> + <span class="n">block_size</span> <span class="o">=</span> <span class="mi">512</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span> <span class="o">&gt;</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;The block_size passed (</span><span class="si">{</span><span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span><span class="si">}</span><span class="s2">) is larger than the maximum length for the model&quot;</span> + <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span><span class="si">}</span><span class="s2">). Using block_size=</span><span class="si">{</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span><span class="si">}</span><span class="s2">.&quot;</span> + <span class="p">)</span> + <span class="n">block_size</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span><span class="p">,</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span><span class="p">)</span> + + <span class="c1"># Main data processing function that will concatenate all texts from our dataset and generate chunks of block_size.</span> + <span class="k">def</span><span class="w"> </span><span class="nf">group_texts</span><span class="p">(</span><span class="n">examples</span><span class="p">):</span> + <span class="c1"># Concatenate all texts.</span> + <span class="n">concatenated_examples</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="n">chain</span><span class="p">(</span><span class="o">*</span><span class="n">examples</span><span class="p">[</span><span class="n">k</span><span class="p">]))</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">examples</span><span class="o">.</span><span class="n">keys</span><span class="p">()}</span> + <span class="n">total_length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">concatenated_examples</span><span class="p">[</span><span class="nb">list</span><span class="p">(</span><span class="n">examples</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="mi">0</span><span class="p">]])</span> + <span class="c1"># We drop the small remainder, we could add padding if the model supported it instead of this drop, you can</span> + <span class="c1"># customize this part to your needs.</span> + <span class="k">if</span> <span class="n">total_length</span> <span class="o">&gt;=</span> <span class="n">block_size</span><span class="p">:</span> + <span class="n">total_length</span> <span class="o">=</span> <span class="p">(</span><span class="n">total_length</span> <span class="o">//</span> <span class="n">block_size</span><span class="p">)</span> <span class="o">*</span> <span class="n">block_size</span> + <span class="c1"># Split by chunks of max_len.</span> + <span class="n">result</span> <span class="o">=</span> <span class="p">{</span> + <span class="n">k</span><span class="p">:</span> <span class="p">[</span><span class="n">t</span><span class="p">[</span><span class="n">i</span> <span class="p">:</span> <span class="n">i</span> <span class="o">+</span> <span class="n">block_size</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">total_length</span><span class="p">,</span> <span class="n">block_size</span><span class="p">)]</span> + <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">concatenated_examples</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> + <span class="p">}</span> + <span class="n">result</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">result</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> + <span class="k">return</span> <span class="n">result</span> + + <span class="c1"># Note that with `batched=True`, this map processes 1,000 texts together, so group_texts throws away a remainder</span> + <span class="c1"># for each of those groups of 1,000 texts. You can adjust that batch_size here but a higher value might be slower</span> + <span class="c1"># to preprocess.</span> + <span class="c1">#</span> + <span class="c1"># To speed up this part, we use multiprocessing. See the documentation of the map method for more information:</span> + <span class="c1"># https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset.map</span> + + <span class="k">with</span> <span class="n">training_args</span><span class="o">.</span><span class="n">main_process_first</span><span class="p">(</span><span class="n">desc</span><span class="o">=</span><span class="s2">&quot;grouping texts together&quot;</span><span class="p">):</span> + <span class="n">group_batch_size</span> <span class="o">=</span> <span class="mi">1000</span> + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="p">:</span> + <span class="n">group_batch_size</span> <span class="o">=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">data_args</span><span class="o">.</span><span class="n">streaming</span><span class="p">:</span> + <span class="n">lm_datasets</span> <span class="o">=</span> <span class="n">tokenized_datasets</span><span class="o">.</span><span class="n">map</span><span class="p">(</span> + <span class="n">group_texts</span><span class="p">,</span> + <span class="n">batched</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="n">group_batch_size</span><span class="p">,</span> + <span class="n">num_proc</span><span class="o">=</span><span class="n">data_args</span><span class="o">.</span><span class="n">preprocessing_num_workers</span><span class="p">,</span> + <span class="n">load_from_cache_file</span><span class="o">=</span><span class="ow">not</span> <span class="n">data_args</span><span class="o">.</span><span class="n">overwrite_cache</span><span class="p">,</span> + <span class="n">desc</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;Grouping texts in chunks of </span><span class="si">{</span><span class="n">block_size</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">lm_datasets</span> <span class="o">=</span> <span class="n">tokenized_datasets</span><span class="o">.</span><span class="n">map</span><span class="p">(</span> + <span class="n">group_texts</span><span class="p">,</span> + <span class="n">batched</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="n">group_batch_size</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">do_train</span><span class="p">:</span> + <span class="k">if</span> <span class="s2">&quot;train&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">tokenized_datasets</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;--do_train requires a train dataset&quot;</span><span class="p">)</span> + <span class="n">train_dataset</span> <span class="o">=</span> <span class="n">lm_datasets</span><span class="p">[</span><span class="s2">&quot;train&quot;</span><span class="p">]</span> + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">max_train_samples</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">max_train_samples</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">),</span> <span class="n">data_args</span><span class="o">.</span><span class="n">max_train_samples</span><span class="p">)</span> + <span class="n">train_dataset</span> <span class="o">=</span> <span class="n">train_dataset</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="n">max_train_samples</span><span class="p">))</span> + + <span class="k">return</span> <span class="n">train_dataset</span></div> + + + +<div class="viewcode-block" id="RaftAligner._load_input_dataset"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner._load_input_dataset">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_load_input_dataset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Load input dataset (i.e. prompt/question dataset) for training.</span> + +<span class="sd"> Args:</span> +<span class="sd"> dataset: A Dataset object.</span> +<span class="sd"> The dataset to be loaded.</span> + +<span class="sd"> Returns:</span> +<span class="sd"> dataloader (`torch.utils.data.DataLoader`):</span> +<span class="sd"> The dataloader for the dataset.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">ds</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">tokenize</span><span class="p">(</span><span class="n">sample</span><span class="p">):</span> + <span class="n">sample</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">sample</span><span class="p">[</span><span class="s2">&quot;text&quot;</span><span class="p">])</span> + <span class="n">sample</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">sample</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">])</span> + <span class="k">return</span> <span class="n">sample</span> + + <span class="n">ds</span> <span class="o">=</span> <span class="n">ds</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">tokenize</span><span class="p">,</span> <span class="n">batched</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">ds</span> <span class="o">=</span> <span class="n">ds</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">])</span> <span class="o">&lt;=</span> <span class="mi">256</span><span class="p">)</span> + + <span class="n">ds</span><span class="o">.</span><span class="n">set_format</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;torch&#39;</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">ds</span></div> + + +<div class="viewcode-block" id="RaftAligner._clean_text"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner._clean_text">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_clean_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">return</span> <span class="n">text</span> + <span class="n">stext</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;###Human&quot;</span><span class="p">)</span> <span class="k">if</span> <span class="n">x</span><span class="p">]</span> + <span class="k">return</span> <span class="n">stext</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">&quot;#&quot;</span><span class="p">)</span> </div> + + +<div class="viewcode-block" id="RaftAligner._discard_sample"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner._discard_sample">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_discard_sample</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span> + <span class="k">if</span> <span class="s2">&quot;#&quot;</span> <span class="ow">in</span> <span class="n">text</span><span class="p">:</span> + <span class="k">return</span> <span class="kc">True</span> + <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">:</span> <span class="c1"># delete empty sample</span> + <span class="k">return</span> <span class="kc">True</span> + <span class="k">return</span> <span class="kc">False</span></div> + + +<div class="viewcode-block" id="RaftAligner._get_batch_dataset_top"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner._get_batch_dataset_top">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_get_batch_dataset_top</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">batch_input</span><span class="p">,</span> + <span class="n">alpha</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> + <span class="n">iter_id</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">local_rank</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">output_min_length</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> + <span class="n">output_max_length</span><span class="o">=</span><span class="mi">48</span><span class="p">,</span> + <span class="n">infer_batch_size</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> + <span class="n">generation_kwargs</span><span class="o">=</span><span class="p">{},</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">training_args</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">reward_model</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">output_reward_path</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> :param batch_input: input prompts</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># we will get the batch dataset via Dataset.from_dict</span> + <span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> + + <span class="n">query_tensors</span> <span class="o">=</span> <span class="n">batch_input</span><span class="p">[</span><span class="s1">&#39;input_ids&#39;</span><span class="p">]</span> + <span class="n">querys</span> <span class="o">=</span> <span class="n">batch_input</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">]</span> + <span class="n">data_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">querys</span><span class="p">)</span> + + <span class="n">reward_eva</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># record the reward of the samples</span> + <span class="n">input_texts</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">responses</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">query_tensor</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">query_tensors</span><span class="p">):</span> + <span class="n">query</span> <span class="o">=</span> <span class="n">querys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">input_texts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">query</span><span class="p">)</span> + <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="n">infer_batch_size</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span> <span class="o">==</span> <span class="n">data_size</span><span class="p">):</span> + <span class="n">gen_len</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="n">output_min_length</span><span class="p">,</span> <span class="n">output_max_length</span><span class="p">)</span> + <span class="n">generation_kwargs</span><span class="p">[</span><span class="s2">&quot;max_new_tokens&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">gen_len</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="p">(</span><span class="n">input_texts</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s2">&quot;pt&quot;</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">training_args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="o">**</span><span class="n">inputs</span><span class="p">,</span> <span class="o">**</span><span class="n">generation_kwargs</span><span class="p">)</span> + <span class="n">generated_texts</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">batch_decode</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="n">skip_special_tokens</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">generated_texts</span> <span class="o">=</span> <span class="p">[</span> + <span class="n">generated_text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">input_texts</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="s2">&quot;&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">generated_text</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">generated_texts</span><span class="p">)</span> + <span class="p">]</span> + <span class="n">texts_for_rewards</span> <span class="o">=</span> <span class="p">[</span><span class="n">q</span> <span class="o">+</span> <span class="n">r</span> <span class="k">for</span> <span class="n">q</span><span class="p">,</span> <span class="n">r</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">input_texts</span><span class="p">,</span> <span class="n">generated_texts</span><span class="p">)]</span> + + <span class="n">texts_for_reward_dataset</span> <span class="o">=</span> <span class="n">LMFlowDataset</span><span class="o">.</span><span class="n">create_from_dict</span><span class="p">({</span> + <span class="s2">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;text_only&quot;</span><span class="p">,</span> + <span class="s2">&quot;instances&quot;</span><span class="p">:</span> <span class="p">[</span> + <span class="p">{</span> <span class="s2">&quot;text&quot;</span><span class="p">:</span> <span class="n">text</span> <span class="p">}</span> <span class="k">for</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">texts_for_rewards</span> + <span class="p">],</span> + <span class="p">})</span> + + <span class="n">reward_dataset</span> <span class="o">=</span> <span class="n">reward_model</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span><span class="n">texts_for_reward_dataset</span><span class="p">)</span> + <span class="n">rewards</span> <span class="o">=</span> <span class="p">[</span> <span class="n">sample</span><span class="p">[</span><span class="s2">&quot;value&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">sample</span> <span class="ow">in</span> <span class="n">reward_dataset</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()[</span><span class="s2">&quot;instances&quot;</span><span class="p">]</span> <span class="p">]</span> + + <span class="n">reward_eva</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">rewards</span><span class="p">)</span> + <span class="n">responses</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">generated_texts</span><span class="p">)</span> + <span class="n">input_texts</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="n">data</span> <span class="o">=</span> <span class="p">[{</span><span class="s2">&quot;input&quot;</span><span class="p">:</span> <span class="n">querys</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="s2">&quot;output&quot;</span><span class="p">:</span> <span class="p">[</span><span class="n">responses</span><span class="p">[</span><span class="n">j</span><span class="p">]]}</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">reward_eva</span><span class="p">))]</span> + + <span class="n">world_size</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;WORLD_SIZE&quot;</span><span class="p">,</span> <span class="s2">&quot;1&quot;</span><span class="p">))</span> + <span class="n">all_process_list</span> <span class="o">=</span><span class="p">[{}]</span> <span class="o">*</span> <span class="n">world_size</span> + + + <span class="n">data_to_send</span> <span class="o">=</span> <span class="p">[[</span><span class="n">data</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">reward_eva</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">))]</span> + <span class="n">dist</span><span class="o">.</span><span class="n">all_gather_object</span><span class="p">(</span><span class="n">all_process_list</span><span class="p">,</span> <span class="n">data_to_send</span><span class="p">)</span> + <span class="n">gathered_data</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">gathered_reward</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">world_size</span><span class="p">):</span> + <span class="n">tmp_data</span> <span class="o">=</span> <span class="p">[</span><span class="n">tmp</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">tmp</span> <span class="ow">in</span> <span class="n">all_process_list</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> + <span class="n">gathered_data</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">tmp_data</span><span class="p">)</span> + + <span class="n">tmp_reward</span> <span class="o">=</span> <span class="p">[</span><span class="n">tmp</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">tmp</span> <span class="ow">in</span> <span class="n">all_process_list</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> + <span class="n">gathered_reward</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">tmp_reward</span><span class="p">)</span> + + <span class="n">idx</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argsort</span><span class="p">(</span><span class="n">gathered_reward</span><span class="p">)[::</span><span class="o">-</span><span class="mi">1</span><span class="p">][:</span><span class="nb">int</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">gathered_reward</span><span class="p">)</span> <span class="o">*</span> <span class="n">alpha</span><span class="p">)]</span> + <span class="n">gathered_data</span> <span class="o">=</span> <span class="p">[</span><span class="n">gathered_data</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">idx</span><span class="p">]</span> + <span class="n">reward_train</span> <span class="o">=</span> <span class="p">[</span><span class="n">gathered_reward</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">idx</span><span class="p">]</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">reward_seq</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">gathered_reward</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">train_reawrd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">reward_train</span><span class="p">))</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.pyplot</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">plt</span> + <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">reward_seq</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s2">&quot;o&quot;</span><span class="p">)</span> + <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">train_reawrd</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s2">&quot;*&quot;</span><span class="p">)</span> + <span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">([</span><span class="s2">&quot;Model reward&quot;</span><span class="p">,</span> <span class="s2">&quot;Reward of SFT Set&quot;</span><span class="p">])</span> + <span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">store_dir</span> <span class="o">+</span> <span class="s1">&#39;/training_reward.png&#39;</span><span class="p">)</span> + <span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;collected data of </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">gathered_data</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">gathered_reward</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">reward_train</span><span class="p">)])</span> + + <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">output_reward_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">output_reward_path</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">&#39;a&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fout</span><span class="p">:</span> + <span class="n">fout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;mean reward: &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">gathered_reward</span><span class="p">))</span> <span class="o">+</span> <span class="s1">&#39;mean reward in training set: &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">reward_train</span><span class="p">)))</span> + <span class="n">fout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span> + + + <span class="n">prompt_structure</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">{definition}{input}{output}</span><span class="s2">&quot;</span> + <span class="n">tmp_output_dataset</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;text&quot;</span><span class="p">:</span> <span class="p">[</span> <span class="n">prompt_structure</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> + <span class="n">definition</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="nb">input</span><span class="o">=</span><span class="n">sample</span><span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">],</span> <span class="n">output</span><span class="o">=</span><span class="n">sample</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> + <span class="p">)</span> <span class="k">for</span> <span class="n">sample</span> <span class="ow">in</span> <span class="n">gathered_data</span> + <span class="p">]</span> + <span class="p">}</span> + + <span class="c1"># We store the training set for monitoring the RAFT training</span> + <span class="n">all_texts</span> <span class="o">=</span> <span class="n">tmp_output_dataset</span><span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">]</span> + <span class="n">output_eval_dataset</span> <span class="o">=</span> <span class="p">{}</span> + <span class="n">output_eval_dataset</span><span class="p">[</span><span class="s1">&#39;type&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;text_only&#39;</span> + <span class="n">output_eval_dataset</span><span class="p">[</span><span class="s1">&#39;instances&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[{</span><span class="s1">&#39;text&#39;</span><span class="p">:</span> <span class="n">i_text</span><span class="p">}</span> <span class="k">for</span> <span class="n">i_text</span> <span class="ow">in</span> <span class="n">all_texts</span><span class="p">]</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">json</span> + <span class="k">if</span> <span class="n">local_rank</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">store_dir</span> <span class="o">+</span> <span class="s2">&quot;/train_set_&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">iter_id</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;.json&quot;</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">&#39;utf8&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">output_eval_dataset</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">ensure_ascii</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + + + <span class="c1"># We need to make sure that the order of the samples are the same for each agent</span> + <span class="n">all_process_list</span> <span class="o">=</span> <span class="p">[{}]</span> <span class="o">*</span> <span class="n">world_size</span> + <span class="n">data_to_send</span> <span class="o">=</span> <span class="p">[</span><span class="n">tmp_output_dataset</span><span class="p">,</span> <span class="n">local_rank</span><span class="p">]</span> + <span class="n">dist</span><span class="o">.</span><span class="n">all_gather_object</span><span class="p">(</span><span class="n">all_process_list</span><span class="p">,</span> <span class="n">data_to_send</span><span class="p">)</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">world_size</span><span class="p">):</span> + <span class="k">if</span> <span class="n">all_process_list</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">output_dataset</span> <span class="o">=</span> <span class="n">all_process_list</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> + <span class="k">break</span> + + <span class="k">return</span> <span class="n">DatasetDict</span><span class="p">({</span> <span class="s2">&quot;train&quot;</span><span class="p">:</span> <span class="n">Dataset</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">output_dataset</span><span class="p">)</span> <span class="p">})</span></div> + + +<div class="viewcode-block" id="RaftAligner._get_batch_dataset_local"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner._get_batch_dataset_local">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_get_batch_dataset_local</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">batch_input</span><span class="p">,</span> + <span class="n">K</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> + <span class="n">iter_id</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">local_rank</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">output_min_length</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> + <span class="n">output_max_length</span><span class="o">=</span><span class="mi">48</span><span class="p">,</span> + <span class="n">infer_batch_size</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> + <span class="n">generation_kwargs</span><span class="o">=</span><span class="p">{},</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">training_args</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">reward_model</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">output_reward_path</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> :param batch_input: input prompts</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># we will get the batch dataset via Dataset.from_dict</span> + <span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> + + <span class="n">querys</span> <span class="o">=</span> <span class="n">batch_input</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">]</span> + <span class="n">data_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">querys</span><span class="p">)</span> + + <span class="n">reward_eva</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">reward_train</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="n">input_texts</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">responses</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">record_querys</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">all_outputs</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">query</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">querys</span><span class="p">):</span> + <span class="n">input_texts</span> <span class="o">=</span> <span class="p">[</span><span class="n">query</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">K</span><span class="p">)]</span> + + <span class="n">gen_len</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="n">output_min_length</span><span class="p">,</span> <span class="n">output_max_length</span><span class="p">)</span> + <span class="n">generation_kwargs</span><span class="p">[</span><span class="s2">&quot;max_new_tokens&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">gen_len</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="p">(</span><span class="n">input_texts</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s2">&quot;pt&quot;</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">training_args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="o">**</span><span class="n">inputs</span><span class="p">,</span> <span class="o">**</span><span class="n">generation_kwargs</span><span class="p">)</span> + <span class="n">generated_texts</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">batch_decode</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="n">skip_special_tokens</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">generated_texts</span> <span class="o">=</span> <span class="p">[</span> + <span class="n">generated_text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">input_texts</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="s2">&quot;&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">generated_text</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">generated_texts</span><span class="p">)</span> + <span class="p">]</span> + <span class="n">generated_texts</span> <span class="o">=</span> <span class="p">[</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_clean_text</span><span class="p">(</span><span class="n">generated_text</span><span class="p">)</span> <span class="k">for</span> <span class="n">generated_text</span> <span class="ow">in</span> <span class="n">generated_texts</span> + <span class="p">]</span> + <span class="n">texts_for_rewards</span> <span class="o">=</span> <span class="p">[</span><span class="n">q</span> <span class="o">+</span> <span class="n">r</span> <span class="k">for</span> <span class="n">q</span><span class="p">,</span> <span class="n">r</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">input_texts</span><span class="p">,</span> <span class="n">generated_texts</span><span class="p">)]</span> + + <span class="n">texts_for_reward_dataset</span> <span class="o">=</span> <span class="n">LMFlowDataset</span><span class="o">.</span><span class="n">create_from_dict</span><span class="p">({</span> + <span class="s2">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;text_only&quot;</span><span class="p">,</span> + <span class="s2">&quot;instances&quot;</span><span class="p">:</span> <span class="p">[</span> + <span class="p">{</span> <span class="s2">&quot;text&quot;</span><span class="p">:</span> <span class="n">texts_for_rewards</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">}</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">texts_for_rewards</span><span class="p">))</span> + <span class="p">],</span> + <span class="p">})</span> + + <span class="n">reward_dataset</span> <span class="o">=</span> <span class="n">reward_model</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span><span class="n">texts_for_reward_dataset</span><span class="p">)</span> + <span class="n">rewards</span> <span class="o">=</span> <span class="p">[</span> <span class="n">sample</span><span class="p">[</span><span class="s2">&quot;value&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">sample</span> <span class="ow">in</span> <span class="n">reward_dataset</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()[</span><span class="s2">&quot;instances&quot;</span><span class="p">]</span> <span class="p">]</span> + <span class="n">reward_eva</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">rewards</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + + <span class="c1">################################</span> + <span class="c1"># we impose some post-detection and discard the samples with certain criteria.</span> + <span class="k">for</span> <span class="n">kk</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">K</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_discard_sample</span><span class="p">(</span><span class="n">generated_texts</span><span class="p">[</span><span class="n">kk</span><span class="p">]):</span> + <span class="n">rewards</span><span class="p">[</span><span class="n">kk</span><span class="p">]</span> <span class="o">=</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">INF</span> + <span class="c1">################################</span> + + <span class="n">idx_to_record</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">rewards</span><span class="p">)</span> + <span class="n">all_outputs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">generated_texts</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + + <span class="c1"># if we discard all the samples, we do not record the sample </span> + <span class="k">if</span> <span class="n">rewards</span><span class="p">[</span><span class="n">idx_to_record</span><span class="p">]</span> <span class="o">!=</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">INF</span><span class="p">:</span> + <span class="n">responses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">generated_texts</span><span class="p">[</span><span class="n">idx_to_record</span><span class="p">])</span> + <span class="n">reward_train</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">rewards</span><span class="p">[</span><span class="n">idx_to_record</span><span class="p">])</span> + <span class="n">record_querys</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">query</span><span class="p">)</span> + <span class="n">input_texts</span> <span class="o">=</span> <span class="p">[]</span> + + + <span class="n">data</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">reward_train</span><span class="p">)):</span> + <span class="n">sample</span> <span class="o">=</span> <span class="p">{}</span> + <span class="n">sample</span><span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">record_querys</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> + <span class="n">sample</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">responses</span><span class="p">[</span><span class="n">j</span><span class="p">]]</span> + <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sample</span><span class="p">)</span> + + + <span class="n">world_size</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;WORLD_SIZE&quot;</span><span class="p">,</span> <span class="s2">&quot;1&quot;</span><span class="p">))</span> + <span class="n">all_process_data</span> <span class="o">=</span><span class="p">[{}]</span> <span class="o">*</span> <span class="n">world_size</span> + <span class="n">dist</span><span class="o">.</span><span class="n">all_gather_object</span><span class="p">(</span><span class="n">all_process_data</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span> + + <span class="n">all_process_eval_reward</span> <span class="o">=</span><span class="p">[{}]</span> <span class="o">*</span> <span class="n">world_size</span> + <span class="n">dist</span><span class="o">.</span><span class="n">all_gather_object</span><span class="p">(</span><span class="n">all_process_eval_reward</span><span class="p">,</span> <span class="n">reward_eva</span><span class="p">)</span> + <span class="n">all_process_train_set_reward</span> <span class="o">=</span><span class="p">[{}]</span> <span class="o">*</span> <span class="n">world_size</span> + <span class="n">dist</span><span class="o">.</span><span class="n">all_gather_object</span><span class="p">(</span><span class="n">all_process_train_set_reward</span><span class="p">,</span> <span class="n">reward_train</span><span class="p">)</span> + + + <span class="n">gathered_data</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">gathered_reward</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">gathered_train_reward</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">world_size</span><span class="p">):</span> + <span class="n">gathered_data</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">all_process_data</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> + <span class="n">gathered_reward</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">all_process_eval_reward</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> + <span class="n">gathered_train_reward</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">all_process_train_set_reward</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> + + <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">output_reward_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">output_reward_path</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">&#39;a&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fout</span><span class="p">:</span> + <span class="n">fout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;mean reward: &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">gathered_reward</span><span class="p">))</span> <span class="o">+</span> <span class="s1">&#39;mean reward in training set: &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">gathered_train_reward</span><span class="p">)))</span> + <span class="n">fout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">gathered_reward</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">gathered_train_reward</span><span class="p">)])</span> + + + <span class="bp">self</span><span class="o">.</span><span class="n">reward_seq</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">gathered_reward</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">train_reawrd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">reward_train</span><span class="p">))</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.pyplot</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">plt</span> + <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">reward_seq</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s2">&quot;o&quot;</span><span class="p">)</span> + <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">train_reawrd</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s2">&quot;*&quot;</span><span class="p">)</span> + <span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">([</span><span class="s2">&quot;Model reward&quot;</span><span class="p">,</span> <span class="s2">&quot;Reward of SFT Set&quot;</span><span class="p">])</span> + <span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">store_dir</span> <span class="o">+</span> <span class="s1">&#39;/training_reward.png&#39;</span><span class="p">)</span> + <span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + + + <span class="n">prompt_structure</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">{definition}{input}{output}</span><span class="s2">&quot;</span> + <span class="n">tmp_output_dataset</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;text&quot;</span><span class="p">:</span> <span class="p">[</span> <span class="n">prompt_structure</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> + <span class="n">definition</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="nb">input</span><span class="o">=</span><span class="n">sample</span><span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">],</span> <span class="n">output</span><span class="o">=</span><span class="n">sample</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> + <span class="p">)</span> <span class="k">for</span> <span class="n">sample</span> <span class="ow">in</span> <span class="n">gathered_data</span> + <span class="p">]</span> + <span class="p">}</span> + + <span class="c1"># We store the training set for monitoring the RAFT training</span> + <span class="n">all_texts</span> <span class="o">=</span> <span class="n">tmp_output_dataset</span><span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">]</span> + <span class="n">output_eval_dataset</span> <span class="o">=</span> <span class="p">{}</span> + <span class="n">output_eval_dataset</span><span class="p">[</span><span class="s1">&#39;type&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;text_only&#39;</span> + <span class="n">output_eval_dataset</span><span class="p">[</span><span class="s1">&#39;instances&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[{</span><span class="s1">&#39;text&#39;</span><span class="p">:</span> <span class="n">i_text</span><span class="p">}</span> <span class="k">for</span> <span class="n">i_text</span> <span class="ow">in</span> <span class="n">all_texts</span><span class="p">]</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">json</span> + <span class="k">if</span> <span class="n">local_rank</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">store_dir</span> <span class="o">+</span> <span class="s2">&quot;/train_set_&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">iter_id</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;.json&quot;</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">&#39;utf8&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">output_eval_dataset</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">ensure_ascii</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + + + <span class="c1"># We need to make sure that the order of the samples are the same for each agent</span> + <span class="n">all_process_list</span> <span class="o">=</span> <span class="p">[{}]</span> <span class="o">*</span> <span class="n">world_size</span> + <span class="n">data_to_send</span> <span class="o">=</span> <span class="p">[</span><span class="n">tmp_output_dataset</span><span class="p">,</span> <span class="n">local_rank</span><span class="p">]</span> + <span class="n">dist</span><span class="o">.</span><span class="n">all_gather_object</span><span class="p">(</span><span class="n">all_process_list</span><span class="p">,</span> <span class="n">data_to_send</span><span class="p">)</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">world_size</span><span class="p">):</span> + <span class="k">if</span> <span class="n">all_process_list</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">output_dataset</span> <span class="o">=</span> <span class="n">all_process_list</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> + <span class="k">break</span> + + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;collected data of </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">output_dataset</span><span class="p">[</span><span class="s1">&#39;text&#39;</span><span class="p">])</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + + <span class="k">return</span> <span class="n">DatasetDict</span><span class="p">({</span> <span class="s2">&quot;train&quot;</span><span class="p">:</span> <span class="n">Dataset</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">output_dataset</span><span class="p">)</span> <span class="p">})</span></div> + + + +<div class="viewcode-block" id="RaftAligner.align"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner.align">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">align</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">dataset</span><span class="p">,</span> <span class="n">reward_model</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform alignment for a model</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> model : BaseModel object.</span> +<span class="sd"> dataset: Dataset object.</span> +<span class="sd"> Input dataset for model to generate outputs. The input and output</span> +<span class="sd"> will then be feed into reward model to get the reward for</span> +<span class="sd"> alignment.</span> +<span class="sd"> reward_model: RegressionModel object.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">tokenizer</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">get_tokenizer</span><span class="p">()</span> + <span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token</span> + <span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span> + <span class="n">tokenizer</span><span class="o">.</span><span class="n">padding_side</span> <span class="o">=</span> <span class="s2">&quot;left&quot;</span> + + <span class="n">dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_load_input_dataset</span><span class="p">(</span><span class="n">dataset</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + <span class="n">set_caching_enabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span> + + <span class="n">wrapped_model</span> <span class="o">=</span> <span class="n">model</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span> + + <span class="n">generation_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;min_length&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> + <span class="s2">&quot;top_k&quot;</span><span class="p">:</span> <span class="mf">0.0</span><span class="p">,</span> + <span class="s2">&quot;top_p&quot;</span><span class="p">:</span> <span class="mf">1.0</span><span class="p">,</span> + <span class="s2">&quot;do_sample&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> + <span class="s2">&quot;pad_token_id&quot;</span><span class="p">:</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span><span class="p">,</span> + <span class="s2">&quot;temperature&quot;</span><span class="p">:</span><span class="mf">0.85</span><span class="p">,</span> + <span class="p">}</span> + + <span class="n">aligner_args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">aligner_args</span> + <span class="n">training_args</span> <span class="o">=</span> <span class="n">aligner_args</span> + <span class="n">model_args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> + <span class="n">data_args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> + <span class="n">world_size</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;WORLD_SIZE&quot;</span><span class="p">,</span> <span class="s2">&quot;1&quot;</span><span class="p">))</span> + + + <span class="n">set_seed</span><span class="p">(</span><span class="mi">42</span> <span class="o">+</span> <span class="n">training_args</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> + <span class="n">ITERATION</span> <span class="o">=</span> <span class="n">aligner_args</span><span class="o">.</span><span class="n">num_raft_iteration</span> + <span class="n">collection_strategy</span> <span class="o">=</span> <span class="n">aligner_args</span><span class="o">.</span><span class="n">collection_strategy</span> + <span class="n">sft_batch_size</span> <span class="o">=</span> <span class="n">aligner_args</span><span class="o">.</span><span class="n">raft_batch_size</span> + + <span class="k">if</span> <span class="n">collection_strategy</span> <span class="o">==</span> <span class="s2">&quot;top&quot;</span><span class="p">:</span> + <span class="n">alpha</span> <span class="o">=</span> <span class="n">aligner_args</span><span class="o">.</span><span class="n">top_reward_percentage</span> + <span class="n">M</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sft_batch_size</span> <span class="o">/</span> <span class="n">world_size</span> <span class="o">/</span> <span class="n">alpha</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">collection_strategy</span> <span class="o">==</span> <span class="s2">&quot;local&quot;</span><span class="p">:</span> + <span class="n">K</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="mi">1</span><span class="o">/</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">top_reward_percentage</span><span class="p">)</span> + <span class="n">M</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sft_batch_size</span> <span class="o">/</span> <span class="n">world_size</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">&quot;We only support two data collection strategies&quot;</span><span class="p">)</span> + + <span class="nb">print</span><span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">K</span><span class="p">)</span> + <span class="k">if</span> <span class="n">training_args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="n">aligner_args</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">store_dir</span> <span class="o">=</span> <span class="n">aligner_args</span><span class="o">.</span><span class="n">output_dir</span> + <span class="bp">self</span><span class="o">.</span><span class="n">reward_seq</span> <span class="o">=</span> <span class="p">[]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">train_reawrd</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="n">data_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">dataset</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">])</span> + <span class="n">lr</span> <span class="o">=</span> <span class="n">training_args</span><span class="o">.</span><span class="n">learning_rate</span> + <span class="n">random_idxs</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">data_size</span><span class="p">)</span> + <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">shuffle</span><span class="p">(</span><span class="n">random_idxs</span><span class="p">)</span> + + <span class="n">raft_trainer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_initialize_trainer</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">,</span> <span class="n">training_args</span><span class="p">)</span> + <span class="n">raft_trainer</span><span class="o">.</span><span class="n">train</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">is_first_time</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">iteration</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">ITERATION</span><span class="p">):</span> + <span class="n">set_seed</span><span class="p">(</span><span class="mi">666</span> <span class="o">+</span> <span class="n">training_args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">+</span> <span class="n">world_size</span> <span class="o">*</span> <span class="p">(</span><span class="n">iteration</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span> + + <span class="n">end_idx</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">([</span><span class="n">data_size</span><span class="p">,</span> <span class="p">(</span><span class="n">iteration</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">M</span><span class="p">])</span> + <span class="n">batch_input</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">random_idxs</span><span class="p">[</span><span class="n">iteration</span> <span class="o">*</span> <span class="n">M</span> <span class="p">:</span> <span class="n">end_idx</span><span class="p">])</span> + <span class="n">model</span><span class="o">.</span><span class="n">gradient_checkpointing_disable</span><span class="p">()</span> + <span class="n">model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">use_cache</span> <span class="o">=</span> <span class="kc">True</span> + + <span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> + <span class="k">if</span> <span class="n">collection_strategy</span> <span class="o">==</span> <span class="s2">&quot;top&quot;</span><span class="p">:</span> + <span class="n">selected_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_batch_dataset_top</span><span class="p">(</span> + <span class="n">raft_trainer</span><span class="o">.</span><span class="n">tmp_model</span><span class="p">,</span> + <span class="n">batch_input</span><span class="p">,</span> + <span class="n">alpha</span><span class="p">,</span> + <span class="n">iteration</span><span class="p">,</span> + <span class="n">training_args</span><span class="o">.</span><span class="n">local_rank</span><span class="p">,</span> + <span class="n">output_min_length</span><span class="o">=</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">output_min_length</span><span class="p">,</span> + <span class="n">output_max_length</span><span class="o">=</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">output_max_length</span><span class="p">,</span> + <span class="n">infer_batch_size</span><span class="o">=</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">inference_batch_size_per_device</span><span class="p">,</span> + <span class="n">generation_kwargs</span><span class="o">=</span><span class="n">generation_kwargs</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="n">tokenizer</span><span class="p">,</span> + <span class="n">training_args</span><span class="o">=</span><span class="n">training_args</span><span class="p">,</span> + <span class="n">reward_model</span><span class="o">=</span><span class="n">reward_model</span><span class="p">,</span> + <span class="n">output_reward_path</span><span class="o">=</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">output_reward_path</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="n">collection_strategy</span> <span class="o">==</span> <span class="s2">&quot;local&quot;</span><span class="p">:</span> + <span class="n">selected_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_batch_dataset_local</span><span class="p">(</span> + <span class="n">raft_trainer</span><span class="o">.</span><span class="n">tmp_model</span><span class="p">,</span> + <span class="n">batch_input</span><span class="p">,</span> + <span class="n">K</span><span class="p">,</span> + <span class="n">iteration</span><span class="p">,</span> + <span class="n">training_args</span><span class="o">.</span><span class="n">local_rank</span><span class="p">,</span> + <span class="n">output_min_length</span><span class="o">=</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">output_min_length</span><span class="p">,</span> + <span class="n">output_max_length</span><span class="o">=</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">output_max_length</span><span class="p">,</span> + <span class="n">infer_batch_size</span><span class="o">=</span><span class="n">K</span><span class="p">,</span> + <span class="n">generation_kwargs</span><span class="o">=</span><span class="n">generation_kwargs</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="n">tokenizer</span><span class="p">,</span> + <span class="n">training_args</span><span class="o">=</span><span class="n">training_args</span><span class="p">,</span> + <span class="n">reward_model</span><span class="o">=</span><span class="n">reward_model</span><span class="p">,</span> + <span class="n">output_reward_path</span><span class="o">=</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">output_reward_path</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">end_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;It takes </span><span class="si">%.2f</span><span class="s2"> s to inference one stage&quot;</span><span class="p">,</span> <span class="n">end_time</span> <span class="o">-</span> <span class="n">start_time</span><span class="p">)</span> + + <span class="n">raft_trainer</span><span class="o">.</span><span class="n">train_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_load_dataset</span><span class="p">(</span> + <span class="n">selected_dataset</span><span class="p">,</span> + <span class="n">raft_trainer</span><span class="o">.</span><span class="n">tmp_model</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">,</span> + <span class="n">training_args</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;iter </span><span class="si">{</span><span class="n">iteration</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> + <span class="n">model</span><span class="o">.</span><span class="n">gradient_checkpointing_enable</span><span class="p">()</span> + <span class="n">model</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">use_cache</span> <span class="o">=</span> <span class="kc">False</span> + + + <span class="n">train_result</span> <span class="o">=</span> <span class="n">raft_trainer</span><span class="o">.</span><span class="n">train</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">end_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;It takes </span><span class="si">%.2f</span><span class="s2"> s to train one stage&quot;</span><span class="p">,</span> <span class="n">end_time</span> <span class="o">-</span> <span class="n">start_time</span><span class="p">)</span> + <span class="k">if</span> <span class="p">(</span><span class="n">iteration</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">M</span> <span class="o">&gt;</span> <span class="n">data_size</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;One epoch is completed.&quot;</span><span class="p">)</span> + <span class="k">break</span> + +<span class="w"> </span><span class="sd">&#39;&#39;&#39;</span> +<span class="sd"> if training_args.local_rank == 0 and iteration % 2 == 0:</span> +<span class="sd"> wrapped_model.save(aligner_args.output_dir + &quot;/&quot; + &quot;model&quot; + str(iteration))</span> +<span class="sd"> print(iteration, &quot;I save a model with&quot;, self.reward_seq[-1])</span> +<span class="sd"> &#39;&#39;&#39;</span> + + <span class="k">if</span> <span class="n">aligner_args</span><span class="o">.</span><span class="n">output_dir</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">wrapped_model</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">wrapped_model</span> </div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/rm_inferencer.html b/_modules/lmflow/pipeline/rm_inferencer.html new file mode 100644 index 000000000..49e479511 --- /dev/null +++ b/_modules/lmflow/pipeline/rm_inferencer.html @@ -0,0 +1,845 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.rm_inferencer &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/rm_inferencer';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.rm_inferencer</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.rm_inferencer</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">copy</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">wandb</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">deepspeed</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">datetime</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">json</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">time</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Any</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">accelerate</span><span class="w"> </span><span class="kn">import</span> <span class="n">Accelerator</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">tqdm</span><span class="w"> </span><span class="kn">import</span> <span class="n">tqdm</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">AutoConfig</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.modeling_outputs</span><span class="w"> </span><span class="kn">import</span> <span class="n">SequenceClassifierOutputWithPast</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.distributed</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">dist</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.nn.functional</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">F</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">InferencerArguments</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets.dataset</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.hf_text_regression_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">HFTextRegressionModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.base_pipeline</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePipeline</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.data_utils</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">set_random_seed</span><span class="p">,</span> + <span class="n">batchlize</span><span class="p">,</span> + <span class="n">RewardModelInferenceResultWithInput</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets.dataset</span><span class="w"> </span><span class="kn">import</span> <span class="n">KEY_SCORE</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.versioning</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_ray_available</span> + +<span class="k">if</span> <span class="n">is_ray_available</span><span class="p">():</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">ray</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">ray.data</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">ray.util.scheduling_strategies</span><span class="w"> </span><span class="kn">import</span> <span class="n">PlacementGroupSchedulingStrategy</span> + + +<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">&quot;TOKENIZERS_PARALLELISM&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;false&quot;</span> <span class="c1"># To avoid warnings about parallelism in tokenizers</span> +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="RewardModelInferencer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">RewardModelInferencer</span><span class="p">(</span><span class="n">BasePipeline</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes the `Inferencer` class with given arguments.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> model_args : ModelArguments object.</span> +<span class="sd"> Contains the arguments required to load the model.</span> + +<span class="sd"> data_args : DatasetArguments object.</span> +<span class="sd"> Contains the arguments required to load the dataset.</span> + +<span class="sd"> inferencer_args : InferencerArguments object.</span> +<span class="sd"> Contains the arguments required to perform inference.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">inferencer_args</span><span class="p">:</span> <span class="n">InferencerArguments</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">):</span> +<div class="viewcode-block" id="RewardModelInferencer.data_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.data_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> <span class="o">=</span> <span class="n">data_args</span></div> + +<div class="viewcode-block" id="RewardModelInferencer.inferencer_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.inferencer_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span> <span class="o">=</span> <span class="n">inferencer_args</span></div> + +<div class="viewcode-block" id="RewardModelInferencer.model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> <span class="o">=</span> <span class="n">model_args</span></div> + + + <span class="n">set_random_seed</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">random_seed</span><span class="p">)</span> + +<div class="viewcode-block" id="RewardModelInferencer.local_rank"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.local_rank">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;LOCAL_RANK&quot;</span><span class="p">,</span> <span class="s2">&quot;0&quot;</span><span class="p">))</span></div> + +<div class="viewcode-block" id="RewardModelInferencer.world_size"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.world_size">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">world_size</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;WORLD_SIZE&quot;</span><span class="p">,</span> <span class="s2">&quot;1&quot;</span><span class="p">))</span></div> + + <span class="k">if</span> <span class="n">inferencer_args</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;gpu&quot;</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">set_device</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">)</span> <span class="c1"># NOTE: cpu-only machine will have error</span> + <span class="n">deepspeed</span><span class="o">.</span><span class="n">init_distributed</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">dist</span><span class="o">.</span><span class="n">init_process_group</span><span class="p">(</span> + <span class="s2">&quot;gloo&quot;</span><span class="p">,</span> <span class="n">rank</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">local_rank</span><span class="p">,</span> <span class="n">world_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">world_size</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">inferencer_args</span><span class="o">.</span><span class="n">use_accelerator</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span><span class="p">:</span> <span class="n">Accelerator</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;accelerator&#39;</span><span class="p">,</span> <span class="n">Accelerator</span><span class="p">())</span> + + +<div class="viewcode-block" id="RewardModelInferencer.inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFTextRegressionModel</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">transform_dataset_in_place</span><span class="p">:</span> <span class="nb">bool</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">use_vllm</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">enable_distributed_inference</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dataset</span><span class="p">:</span> + <span class="k">if</span> <span class="n">use_vllm</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;VLLM doesn&#39;t support reward model inference, using normal inference instead.&quot;</span><span class="p">)</span> + <span class="n">use_vllm</span> <span class="o">=</span> <span class="kc">False</span> + + <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">HFTextRegressionModel</span><span class="p">),</span> <span class="s2">&quot;model should be HFTextRegressionModel&quot;</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">transform_dataset_in_place</span><span class="p">:</span> + <span class="n">dataset</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">dataset</span><span class="p">)</span> + + <span class="n">model_input</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">prepare_inputs_for_inference</span><span class="p">(</span> + <span class="n">dataset</span><span class="o">=</span><span class="n">dataset</span><span class="p">,</span> + <span class="n">apply_chat_template</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">enable_distributed_inference</span><span class="o">=</span><span class="n">enable_distributed_inference</span><span class="p">,</span> + <span class="n">use_vllm</span><span class="o">=</span><span class="n">use_vllm</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">use_vllm</span><span class="p">:</span> + <span class="n">inference_result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__vllm_inference</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span> + <span class="n">model_input</span><span class="o">=</span><span class="n">model_input</span><span class="p">,</span> + <span class="n">enable_distributed_inference</span><span class="o">=</span><span class="n">enable_distributed_inference</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">inference_result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_inference</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span> + <span class="n">model_input</span><span class="o">=</span><span class="n">model_input</span><span class="p">,</span> + <span class="n">enable_distributed_inference</span><span class="o">=</span><span class="n">enable_distributed_inference</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">enable_distributed_inference</span><span class="p">:</span> + <span class="n">output_dataset</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">postprocess_distributed_inference_outputs</span><span class="p">(</span> + <span class="n">dataset</span><span class="o">=</span><span class="n">dataset</span><span class="p">,</span> + <span class="n">inference_result</span><span class="o">=</span><span class="n">inference_result</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">output_dataset</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">postprocess_inference_outputs</span><span class="p">(</span> + <span class="n">dataset</span><span class="o">=</span><span class="n">dataset</span><span class="p">,</span> + <span class="n">scores</span><span class="o">=</span><span class="n">inference_result</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">output_dataset</span></div> + + + +<div class="viewcode-block" id="RewardModelInferencer._inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer._inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFTextRegressionModel</span><span class="p">,</span> + <span class="n">model_input</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Dataset</span><span class="p">,</span> <span class="s1">&#39;ray.data.Dataset&#39;</span><span class="p">],</span> + <span class="n">enable_distributed_inference</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">):</span> + <span class="k">if</span> <span class="n">enable_distributed_inference</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_ray_available</span><span class="p">():</span> + <span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="s1">&#39;Ray is not installed. Please install via `pip install -e &quot;.[ray]&quot;`.&#39;</span><span class="p">)</span> + + <span class="n">inference_res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__distributed_inference</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span> + <span class="n">model_input</span><span class="o">=</span><span class="n">model_input</span><span class="p">,</span> + <span class="n">num_instances</span><span class="o">=</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;distributed_inference_num_instances&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> + <span class="n">batch_size</span><span class="o">=</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;inference_batch_size&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">inference_res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__inference</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span> + <span class="n">model_input</span><span class="o">=</span><span class="n">model_input</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">inference_res</span></div> + + + +<div class="viewcode-block" id="RewardModelInferencer.__inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFTextRegressionModel</span><span class="p">,</span> + <span class="n">model_input</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">]]]:</span> + <span class="k">if</span> <span class="n">model_input</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;text_to_textlist&quot;</span><span class="p">]:</span> + <span class="n">model_input_ids</span><span class="p">,</span> <span class="n">num_outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">flatten_list</span><span class="p">(</span><span class="n">model_input</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">model_input_ids</span> <span class="o">=</span> <span class="n">model_input</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span> + + <span class="n">dataloader</span> <span class="o">=</span> <span class="n">batchlize</span><span class="p">(</span> + <span class="n">examples</span><span class="o">=</span><span class="n">model_input_ids</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">inference_batch_size</span><span class="p">,</span> + <span class="n">random_shuffle</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># DO NOT shuffle when inference</span> + <span class="p">)</span> + <span class="n">num_batches</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">dataloader</span><span class="p">)</span> + <span class="n">final_output</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">for</span> <span class="n">batch_index</span><span class="p">,</span> <span class="n">batched_input_ids</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span> + <span class="n">iterable</span><span class="o">=</span><span class="nb">enumerate</span><span class="p">(</span><span class="n">dataloader</span><span class="p">),</span> + <span class="n">total</span><span class="o">=</span><span class="n">num_batches</span><span class="p">,</span> + <span class="n">desc</span><span class="o">=</span><span class="s2">&quot;Inference&quot;</span><span class="p">,</span> + <span class="n">unit</span><span class="o">=</span><span class="s2">&quot;batch&quot;</span> + <span class="p">):</span> + <span class="c1"># len(batch) = batch_size, and batch element is dataset sample</span> + <span class="n">model_input_tensor</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span><span class="p">(</span><span class="n">batched_input_ids</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="s2">&quot;cpu&quot;</span> <span class="k">if</span> <span class="n">model</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="s2">&quot;cpu&quot;</span> <span class="k">else</span> <span class="s2">&quot;cuda&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">use_accelerator</span><span class="p">:</span> + <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span><span class="o">.</span><span class="n">autocast</span><span class="p">():</span> + <span class="n">batch_output</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span> + <span class="n">inputs</span><span class="o">=</span><span class="n">model_input_tensor</span><span class="p">,</span> + <span class="n">use_vllm</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">batch_output</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span> + <span class="n">inputs</span><span class="o">=</span><span class="n">model_input_tensor</span><span class="p">,</span> + <span class="n">use_vllm</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">batch_output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__post_process_model_output</span><span class="p">(</span><span class="n">batch_output</span><span class="p">)</span> + <span class="n">final_output</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">batch_output</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">model_input</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;text_to_textlist&quot;</span><span class="p">]:</span> + <span class="n">final_output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">compress_list</span><span class="p">(</span><span class="n">final_output</span><span class="p">,</span> <span class="n">num_outputs</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">final_output</span></div> + + + +<div class="viewcode-block" id="RewardModelInferencer.__distributed_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__distributed_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__distributed_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFTextRegressionModel</span><span class="p">,</span> + <span class="n">model_input</span><span class="p">:</span> <span class="s1">&#39;ray.data.Dataset&#39;</span><span class="p">,</span> + <span class="n">num_instances</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">batch_size</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">RewardModelInferenceResultWithInput</span><span class="p">]:</span> + <span class="k">def</span><span class="w"> </span><span class="nf">scheduling_strategy_fn</span><span class="p">():</span> + <span class="c1"># One bundle per tensor parallel worker</span> + <span class="n">pg</span> <span class="o">=</span> <span class="n">ray</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">placement_group</span><span class="p">(</span> + <span class="p">[{</span> + <span class="s2">&quot;GPU&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> + <span class="s2">&quot;CPU&quot;</span><span class="p">:</span> <span class="mi">1</span> + <span class="p">}]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">tensor_parallel_size</span><span class="p">,</span> + <span class="n">strategy</span><span class="o">=</span><span class="s2">&quot;STRICT_PACK&quot;</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">scheduling_strategy</span><span class="o">=</span><span class="n">PlacementGroupSchedulingStrategy</span><span class="p">(</span> + <span class="n">pg</span><span class="p">,</span> <span class="n">placement_group_capture_child_tasks</span><span class="o">=</span><span class="kc">True</span> + <span class="p">)</span> + <span class="p">)</span> + + <span class="n">resources_kwarg</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">tensor_parallel_size</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> + <span class="c1"># For tensor_parallel_size == 1, we simply set num_gpus=1.</span> + <span class="n">resources_kwarg</span><span class="p">[</span><span class="s2">&quot;num_gpus&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># Otherwise, we have to set num_gpus=0 and provide</span> + <span class="c1"># a function that will create a placement group for</span> + <span class="c1"># each instance.</span> + <span class="n">resources_kwarg</span><span class="p">[</span><span class="s2">&quot;num_gpus&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">resources_kwarg</span><span class="p">[</span><span class="s2">&quot;ray_remote_args_fn&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">scheduling_strategy_fn</span> + + <span class="c1">## predictor</span> + <span class="k">class</span><span class="w"> </span><span class="nc">DistributedPredictor</span><span class="p">:</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">HFTextRegressionModel</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">=</span><span class="n">model_args</span><span class="p">,</span> + <span class="n">tune_strategy</span><span class="o">=</span><span class="s1">&#39;none&#39;</span><span class="p">,</span> + <span class="n">use_accelerator</span><span class="o">=</span><span class="kc">True</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">activate_model_for_inference</span><span class="p">(</span><span class="n">use_vllm</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">batch</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">]):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;batch: Dict[str, np.ndarray]</span> +<span class="sd"> Example (batch size=2):</span> +<span class="sd"> {&#39;input&#39;: array([&#39;...&#39;,&#39;...&#39;], dtype=object),</span> +<span class="sd"> &#39;output&#39;: array([array([&quot;...&quot;, &quot;...&quot;], dtype=object), array([&#39;...&#39;,&#39;...&#39;], dtype=object)], dtype=object),</span> +<span class="sd"> &#39;input_ids&#39;: array([[[128000, 128006, 882, ..., 128256, 128256, 128256],</span> +<span class="sd"> [128000, 128006, 882, ..., 128256, 128256, 128256]],</span> +<span class="sd"> [[128000, 128006, 882, ..., 128256, 128256, 128256],</span> +<span class="sd"> [128000, 128006, 882, ..., 128256, 128256, 128256]]])}</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># The batch is managed by ray and the actual batch size may smaller than </span> + <span class="c1"># inference_batch_size in config, since there may be some remainders. </span> + <span class="c1"># For example, 10 examples with 2 inference instances and inference_batch_size=4,</span> + <span class="c1"># there will be only 2 examples for instance 0 to run and then the </span> + <span class="c1"># actual batch size changes.</span> + <span class="n">actual_batch_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">batch</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">])</span> + <span class="n">input_tensor</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span><span class="p">([</span> + <span class="p">[</span><span class="nb">list</span><span class="p">(</span><span class="n">arr</span><span class="p">)</span> <span class="k">for</span> <span class="n">arr</span> <span class="ow">in</span> <span class="n">batch</span><span class="p">[</span><span class="s1">&#39;input_ids&#39;</span><span class="p">][</span><span class="n">batch_idx</span><span class="p">]]</span> + <span class="k">for</span> <span class="n">batch_idx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">actual_batch_size</span><span class="p">)</span> + <span class="p">])</span><span class="o">.</span><span class="n">flatten</span><span class="p">(</span><span class="n">start_dim</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">end_dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="s2">&quot;cuda&quot;</span><span class="p">)</span> + <span class="n">batched_inference_res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span><span class="n">input_tensor</span><span class="p">)</span><span class="o">.</span><span class="n">logits</span> + <span class="n">batched_inference_res</span> <span class="o">=</span> <span class="n">batched_inference_res</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="s2">&quot;cpu&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">actual_batch_size</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">squeeze</span><span class="p">(</span><span class="n">dim</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span> + <span class="c1"># [bs, num_output_sequences]</span> + <span class="n">batched_final_res</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;input&quot;</span><span class="p">:</span> <span class="n">batch</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">tolist</span><span class="p">(),</span> + <span class="s2">&quot;output&quot;</span><span class="p">:</span> <span class="p">[</span> + <span class="p">[</span> + <span class="p">{</span><span class="s2">&quot;score&quot;</span><span class="p">:</span> <span class="n">batched_inference_res</span><span class="p">[</span><span class="n">j</span><span class="p">][</span><span class="n">i</span><span class="p">],</span> <span class="s2">&quot;text&quot;</span><span class="p">:</span> <span class="n">batch</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">][</span><span class="n">j</span><span class="p">][</span><span class="n">i</span><span class="p">]}</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">batch</span><span class="p">[</span><span class="s1">&#39;output&#39;</span><span class="p">][</span><span class="n">j</span><span class="p">]))</span> + <span class="p">]</span> + <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">actual_batch_size</span><span class="p">)</span> + <span class="p">],</span> + <span class="p">}</span> <span class="c1"># do this since we&#39;re writing to a pandas dataframe</span> + <span class="k">return</span> <span class="n">batched_final_res</span> + + <span class="c1"># inference</span> + <span class="n">model_input_mapping</span> <span class="o">=</span> <span class="n">model_input</span><span class="o">.</span><span class="n">map_batches</span><span class="p">(</span> + <span class="n">DistributedPredictor</span><span class="p">,</span> + <span class="n">concurrency</span><span class="o">=</span><span class="n">num_instances</span><span class="p">,</span> <span class="c1"># Set the concurrency to the number of LLM instances.</span> + <span class="n">batch_size</span><span class="o">=</span><span class="n">batch_size</span><span class="p">,</span> + <span class="n">fn_constructor_kwargs</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;model_args&quot;</span><span class="p">:</span> <span class="n">model</span><span class="o">.</span><span class="n">model_args</span><span class="p">,</span> + <span class="p">},</span> + <span class="o">**</span><span class="n">resources_kwarg</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">df_model_output</span> <span class="o">=</span> <span class="n">model_input_mapping</span><span class="o">.</span><span class="n">to_pandas</span><span class="p">()</span> <span class="c1"># the actual forwards are executed here</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Distributed reward model inference result preview:</span><span class="se">\n</span><span class="si">{</span><span class="n">df_model_output</span><span class="o">.</span><span class="n">head</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="n">model_output</span> <span class="o">=</span> <span class="p">[</span> + <span class="p">{</span><span class="s2">&quot;input&quot;</span><span class="p">:</span> <span class="n">row</span><span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">],</span> <span class="s2">&quot;output&quot;</span><span class="p">:</span> <span class="n">row</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">]}</span> <span class="k">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">df_model_output</span><span class="p">[:]</span><span class="o">.</span><span class="n">iterrows</span><span class="p">()</span> + <span class="p">]</span> + + <span class="k">return</span> <span class="n">model_output</span></div> + + + +<div class="viewcode-block" id="RewardModelInferencer.__vllm_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__vllm_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__vllm_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFTextRegressionModel</span><span class="p">,</span> + <span class="n">model_input</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> + <span class="n">enable_distributed_inference</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">]:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">&quot;VLLM inference for reward model is not implemented yet.&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="RewardModelInferencer.__post_process_model_output"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__post_process_model_output">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__post_process_model_output</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_output</span><span class="p">:</span> <span class="n">SequenceClassifierOutputWithPast</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">]:</span> + <span class="n">final_output</span> <span class="o">=</span> <span class="n">model_output</span><span class="o">.</span><span class="n">logits</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="s2">&quot;cpu&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span> + + <span class="k">return</span> <span class="n">final_output</span></div> + + + +<div class="viewcode-block" id="RewardModelInferencer.flatten_list"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.flatten_list">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">flatten_list</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">list_of_list</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">]</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]:</span> + <span class="n">sublist_lengths</span> <span class="o">=</span> <span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">sublist</span><span class="p">)</span> <span class="k">for</span> <span class="n">sublist</span> <span class="ow">in</span> <span class="n">list_of_list</span><span class="p">]</span> + <span class="n">flattened_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">sublist</span> <span class="ow">in</span> <span class="n">list_of_list</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">sublist</span><span class="p">]</span> + <span class="k">return</span> <span class="n">flattened_list</span><span class="p">,</span> <span class="n">sublist_lengths</span></div> + + + +<div class="viewcode-block" id="RewardModelInferencer.compress_list"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.compress_list">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">compress_list</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">list_to_compress</span><span class="p">:</span> <span class="n">List</span><span class="p">,</span> + <span class="n">sublist_lengths</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">]:</span> + <span class="k">assert</span> <span class="nb">sum</span><span class="p">(</span><span class="n">sublist_lengths</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">list_to_compress</span><span class="p">),</span> <span class="s2">&quot;Sum of sublist lengths should be equal to length of list to compress.&quot;</span> + <span class="n">compressed_list</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">start_index</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">length</span> <span class="ow">in</span> <span class="n">sublist_lengths</span><span class="p">:</span> + <span class="n">sublist</span> <span class="o">=</span> <span class="n">list_to_compress</span><span class="p">[</span><span class="n">start_index</span><span class="p">:</span> <span class="n">start_index</span> <span class="o">+</span> <span class="n">length</span><span class="p">]</span> + <span class="n">compressed_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sublist</span><span class="p">)</span> + <span class="n">start_index</span> <span class="o">+=</span> <span class="n">length</span> + <span class="k">return</span> <span class="n">compressed_list</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/rm_tuner.html b/_modules/lmflow/pipeline/rm_tuner.html new file mode 100644 index 000000000..6bbe2b89b --- /dev/null +++ b/_modules/lmflow/pipeline/rm_tuner.html @@ -0,0 +1,683 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.rm_tuner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/rm_tuner';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.rm_tuner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.rm_tuner</h1><div class="highlight"><pre> +<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optional</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">copy</span><span class="w"> </span><span class="kn">import</span> <span class="n">deepcopy</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">datasets</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">transformers</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">set_seed</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">send_example_telemetry</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.trainer_callback</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">TrainerCallback</span> +<span class="p">)</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.hf_text_regression_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">HFTextRegressionModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.finetuner</span><span class="w"> </span><span class="kn">import</span> <span class="n">Finetuner</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.utils.rm_trainer</span><span class="w"> </span><span class="kn">import</span> <span class="n">compute_metrics</span><span class="p">,</span> <span class="n">RewardTrainer</span><span class="p">,</span> <span class="n">PeftRewardTrainer</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.utils.peft_trainer</span><span class="w"> </span><span class="kn">import</span> <span class="n">PeftSavingCallback</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.utils.rm_dataprocessor</span><span class="w"> </span><span class="kn">import</span> <span class="n">RewardDataCollatorWithPadding</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_tuner/index.html#lmflow.pipeline.rm_tuner.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="RewardModelTuner"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_tuner/index.html#lmflow.pipeline.rm_tuner.RewardModelTuner">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">RewardModelTuner</span><span class="p">(</span><span class="n">Finetuner</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Initializes the `RewardModelTuner` class.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> model_args : ModelArguments object.</span> +<span class="sd"> Contains the arguments required to load the model.</span> + +<span class="sd"> data_args : DatasetArguments object.</span> +<span class="sd"> Contains the arguments required to load the dataset.</span> + +<span class="sd"> finetuner_args : RewardModelTunerArguments object.</span> +<span class="sd"> Contains the arguments required to perform finetuning.</span> + +<span class="sd"> args : Optional.</span> +<span class="sd"> Positional arguments.</span> + +<span class="sd"> kwargs : Optional.</span> +<span class="sd"> Keyword arguments.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">,</span> + <span class="n">finetuner_args</span><span class="p">,</span> + <span class="o">*</span><span class="n">args</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">):</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">finetuner_args</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + + +<div class="viewcode-block" id="RewardModelTuner.tune"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/rm_tuner/index.html#lmflow.pipeline.rm_tuner.RewardModelTuner.tune">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">tune</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFTextRegressionModel</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">,</span> + <span class="n">transform_dataset_in_place</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">data_collator</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">):</span> + <span class="c1"># 0. basic init</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">transform_dataset_in_place</span><span class="p">:</span> + <span class="n">dataset</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="n">dataset</span><span class="p">)</span> + + <span class="c1"># 1. prepare dataset</span> + <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">main_process_first</span><span class="p">(</span><span class="n">desc</span><span class="o">=</span><span class="s2">&quot;dataset map tokenization&quot;</span><span class="p">):</span> + <span class="n">tokenized_dataset</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">dataset</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="p">:</span> + <span class="n">lm_dataset</span> <span class="o">=</span> <span class="n">tokenized_dataset</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">lm_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">group_text</span><span class="p">(</span> + <span class="n">tokenized_dataset</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">get_max_length</span><span class="p">(),</span> + <span class="p">)</span> + <span class="n">train_dataset</span> <span class="o">=</span> <span class="n">lm_dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Number of train samples: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">do_train</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">max_train_samples</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">max_train_samples</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">max_train_samples</span><span class="p">)</span> + <span class="n">train_dataset</span> <span class="o">=</span> <span class="n">train_dataset</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="n">max_train_samples</span><span class="p">))</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">do_eval</span><span class="p">:</span> + <span class="n">eval_dataset_args</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="p">)</span> + <span class="n">eval_dataset_args</span><span class="o">.</span><span class="n">dataset_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">eval_dataset_path</span> + <span class="n">eval_dataset</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="n">eval_dataset_args</span><span class="p">)</span> + <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">main_process_first</span><span class="p">(</span><span class="n">desc</span><span class="o">=</span><span class="s2">&quot;dataset map tokenization&quot;</span><span class="p">):</span> + <span class="n">tokenized_dataset</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="p">:</span> + <span class="n">lm_dataset</span> <span class="o">=</span> <span class="n">tokenized_dataset</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">lm_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">group_text</span><span class="p">(</span> + <span class="n">tokenized_dataset</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">get_max_length</span><span class="p">(),</span> + <span class="p">)</span> + <span class="n">eval_dataset</span> <span class="o">=</span> <span class="n">lm_dataset</span><span class="o">.</span><span class="n">get_backend_dataset</span><span class="p">()</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Number of eval samples: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">data_collator</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">data_collator</span> <span class="o">=</span> <span class="n">RewardDataCollatorWithPadding</span><span class="p">(</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">get_tokenizer</span><span class="p">(),</span> + <span class="n">max_length</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_max_length</span> + <span class="p">)</span> + + <span class="c1"># 2. prepare trainer</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">use_lora</span><span class="p">:</span> + <span class="n">RewardModelingTrainer</span> <span class="o">=</span> <span class="n">PeftRewardTrainer</span> + <span class="n">trainer_callbacks</span> <span class="o">=</span> <span class="p">[</span><span class="n">PeftSavingCallback</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">RewardModelingTrainer</span> <span class="o">=</span> <span class="n">RewardTrainer</span> + <span class="n">trainer_callbacks</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">use_lisa</span><span class="p">:</span> + <span class="k">class</span><span class="w"> </span><span class="nc">DynamicLayerActivationCallback</span><span class="p">(</span><span class="n">TrainerCallback</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n_layers</span><span class="p">,</span> <span class="n">interval_steps</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">n_layers</span> <span class="o">=</span> <span class="n">n_layers</span> + <span class="bp">self</span><span class="o">.</span><span class="n">interval_steps</span> <span class="o">=</span> <span class="n">interval_steps</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">model</span> + + <span class="c1"># Determine the way to access layers based on the model type</span> + <span class="n">class_to_layers_map</span> <span class="o">=</span> <span class="p">{</span> + <span class="s1">&#39;LlamaForCausalLM&#39;</span><span class="p">:</span> <span class="s1">&#39;model.model.layers&#39;</span><span class="p">,</span> + <span class="s1">&#39;Qwen2ForCausalLM&#39;</span><span class="p">:</span> <span class="s1">&#39;model.model.layers&#39;</span><span class="p">,</span> + <span class="s1">&#39;MistralForCausalLM&#39;</span><span class="p">:</span> <span class="s1">&#39;model.model.layers&#39;</span><span class="p">,</span> + <span class="s1">&#39;MixtralForCausalLM&#39;</span><span class="p">:</span> <span class="s1">&#39;model.model.layers&#39;</span><span class="p">,</span> + <span class="s1">&#39;GemmaForCausalLM&#39;</span><span class="p">:</span> <span class="s1">&#39;model.model.layers&#39;</span><span class="p">,</span> + <span class="s1">&#39;GPT2LMHeadModel&#39;</span><span class="p">:</span> <span class="s1">&#39;model.transformer.h&#39;</span><span class="p">,</span> + <span class="p">}</span> + <span class="n">model_class_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> + <span class="k">if</span> <span class="n">model_class_name</span> <span class="ow">in</span> <span class="n">class_to_layers_map</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">layers_attribute</span> <span class="o">=</span> <span class="n">class_to_layers_map</span><span class="p">[</span><span class="n">model_class_name</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">layers_attribute</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;lisa_layers_attribute&quot;</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">total_layers</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="nb">eval</span><span class="p">(</span><span class="s1">&#39;self.&#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">layers_attribute</span><span class="p">))</span> <span class="c1"># Dynamically execute to get the number of layers</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">active_layers_indices</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">freeze_all_layers</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">layers</span> <span class="o">=</span> <span class="nb">eval</span><span class="p">(</span><span class="s1">&#39;self.&#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">layers_attribute</span><span class="p">)</span> <span class="c1"># Dynamically execute to get layers</span> + <span class="k">for</span> <span class="n">layer</span> <span class="ow">in</span> <span class="n">layers</span><span class="p">:</span> + <span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">layer</span><span class="o">.</span><span class="n">parameters</span><span class="p">():</span> + <span class="n">param</span><span class="o">.</span><span class="n">requires_grad</span> <span class="o">=</span> <span class="kc">False</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">on_step_begin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">state</span><span class="p">,</span> <span class="n">control</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="c1"># Check if it&#39;s time to switch active layers, including at step 0</span> + <span class="k">if</span> <span class="n">state</span><span class="o">.</span><span class="n">global_step</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">interval_steps</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">switch_active_layers</span><span class="p">()</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">switch_active_layers</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="c1"># First, disable gradients for all layers</span> + <span class="bp">self</span><span class="o">.</span><span class="n">freeze_all_layers</span><span class="p">()</span> + + <span class="c1"># Randomly select n_layers to activate</span> + <span class="n">layers</span> <span class="o">=</span> <span class="nb">eval</span><span class="p">(</span><span class="s1">&#39;self.&#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">layers_attribute</span><span class="p">)</span> <span class="c1"># Re-fetch layer references</span> + <span class="bp">self</span><span class="o">.</span><span class="n">active_layers_indices</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">total_layers</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">n_layers</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Activating layers at indices: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">active_layers_indices</span><span class="si">}</span><span class="s2"> for the next steps.&quot;</span><span class="p">,</span> <span class="n">flush</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="c1"># Enable gradients only for the selected layers</span> + <span class="k">for</span> <span class="n">idx</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_layers_indices</span><span class="p">:</span> + <span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">layers</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span><span class="o">.</span><span class="n">parameters</span><span class="p">():</span> + <span class="n">param</span><span class="o">.</span><span class="n">requires_grad</span> <span class="o">=</span> <span class="kc">True</span> + + <span class="c1"># Instantiate the callback</span> + <span class="n">dynamic_layer_activation_callback</span> <span class="o">=</span> <span class="n">DynamicLayerActivationCallback</span><span class="p">(</span> + <span class="n">n_layers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">lisa_activated_layers</span><span class="p">,</span> <span class="c1"># Number of layers to activate</span> + <span class="n">interval_steps</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">lisa_interval_steps</span><span class="p">,</span> <span class="c1"># Step interval to update active layers</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">(),</span> + <span class="n">lisa_layers_attribute</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">lisa_layers_attribute</span> + <span class="p">)</span> + + <span class="n">trainer_callbacks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dynamic_layer_activation_callback</span><span class="p">)</span> + + <span class="n">trainer</span> <span class="o">=</span> <span class="n">RewardModelingTrainer</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">(),</span> + <span class="n">args</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="p">,</span> + <span class="n">train_dataset</span><span class="o">=</span><span class="n">train_dataset</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">do_train</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">eval_dataset</span><span class="o">=</span><span class="n">eval_dataset</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">do_eval</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">get_tokenizer</span><span class="p">(),</span> + <span class="n">data_collator</span><span class="o">=</span><span class="n">data_collator</span><span class="p">,</span> + <span class="n">compute_metrics</span><span class="o">=</span><span class="n">compute_metrics</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">do_eval</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">callbacks</span><span class="o">=</span><span class="n">trainer_callbacks</span> + <span class="p">)</span> + + <span class="c1"># 3. training</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">do_train</span><span class="p">:</span> + <span class="n">checkpoint</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">last_checkpoint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_checkpoint</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">resume_from_checkpoint</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">checkpoint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">resume_from_checkpoint</span> + <span class="k">elif</span> <span class="n">last_checkpoint</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">checkpoint</span> <span class="o">=</span> <span class="n">last_checkpoint</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">gradient_checkpointing</span><span class="p">:</span> + <span class="k">if</span> <span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">use_cache</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;Backend model config `use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`.&quot;</span> + <span class="p">)</span> + <span class="n">model</span><span class="o">.</span><span class="n">get_backend_model</span><span class="p">()</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">use_cache</span> <span class="o">=</span> <span class="kc">False</span> + + <span class="n">train_result</span> <span class="o">=</span> <span class="n">trainer</span><span class="o">.</span><span class="n">train</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="o">=</span><span class="n">checkpoint</span><span class="p">)</span> + + <span class="n">trainer</span><span class="o">.</span><span class="n">save_model</span><span class="p">()</span> <span class="c1"># Saves the tokenizer too for easy upload</span> + + <span class="n">metrics</span> <span class="o">=</span> <span class="n">train_result</span><span class="o">.</span><span class="n">metrics</span> + + <span class="n">max_train_samples</span> <span class="o">=</span> <span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">max_train_samples</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">max_train_samples</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="nb">len</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">)</span> + <span class="p">)</span> + <span class="n">metrics</span><span class="p">[</span><span class="s2">&quot;train_samples&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">max_train_samples</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">))</span> + + <span class="n">trainer</span><span class="o">.</span><span class="n">log_metrics</span><span class="p">(</span><span class="s2">&quot;train&quot;</span><span class="p">,</span> <span class="n">metrics</span><span class="p">)</span> + <span class="n">trainer</span><span class="o">.</span><span class="n">save_metrics</span><span class="p">(</span><span class="s2">&quot;train&quot;</span><span class="p">,</span> <span class="n">metrics</span><span class="p">)</span> + <span class="n">trainer</span><span class="o">.</span><span class="n">save_state</span><span class="p">()</span> + + <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;finetuned_from&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> <span class="s2">&quot;tasks&quot;</span><span class="p">:</span> <span class="s2">&quot;reward-modeling&quot;</span><span class="p">}</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">dataset_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;dataset_tags&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">dataset_name</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">dataset_config_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;dataset_args&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">dataset_config_name</span> + <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;dataset&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">dataset_name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">dataset_config_name</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;dataset&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="o">.</span><span class="n">dataset_name</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">finetuner_args</span><span class="o">.</span><span class="n">push_to_hub</span><span class="p">:</span> + <span class="n">trainer</span><span class="o">.</span><span class="n">push_to_hub</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">trainer</span><span class="o">.</span><span class="n">create_model_card</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">model</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html b/_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html new file mode 100644 index 000000000..2932e91e5 --- /dev/null +++ b/_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html @@ -0,0 +1,684 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.utils.dpov2_dataprocessor &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/utils/dpov2_dataprocessor';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.dpov2_dataprocessor</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.utils.dpov2_dataprocessor</h1><div class="highlight"><pre> +<span></span><span class="kn">from</span><span class="w"> </span><span class="nn">dataclasses</span><span class="w"> </span><span class="kn">import</span> <span class="n">dataclass</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Any</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.nn.utils.rnn</span><span class="w"> </span><span class="kn">import</span> <span class="n">pad_sequence</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">PreTrainedModel</span><span class="p">,</span> + <span class="n">PreTrainedTokenizerBase</span><span class="p">,</span> +<span class="p">)</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">PreferenceDataCollatorWithPadding</span><span class="p">:</span> +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding.tokenizer"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.tokenizer">[docs]</a> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">PreTrainedTokenizerBase</span></div> + +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding.model"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.model">[docs]</a> + <span class="n">model</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">PreTrainedModel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding.padding"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.padding">[docs]</a> + <span class="n">padding</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span></div> + +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding.max_length"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_length">[docs]</a> + <span class="n">max_length</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding.max_prompt_length"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_prompt_length">[docs]</a> + <span class="n">max_prompt_length</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding.label_pad_token_id"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.label_pad_token_id">[docs]</a> + <span class="n">label_pad_token_id</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">-</span><span class="mi">100</span></div> + +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding.padding_value"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.padding_value">[docs]</a> + <span class="n">padding_value</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span></div> + +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding.truncation_mode"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.truncation_mode">[docs]</a> + <span class="n">truncation_mode</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;keep_end&quot;</span></div> + +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding.is_encoder_decoder"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.is_encoder_decoder">[docs]</a> + <span class="n">is_encoder_decoder</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span></div> + +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding.max_target_length"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_target_length">[docs]</a> + <span class="n">max_target_length</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding.mask_prompt"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.mask_prompt">[docs]</a> + <span class="n">mask_prompt</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span></div> + + + +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding.tokenize_batch_element"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.tokenize_batch_element">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">tokenize_batch_element</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">prompt</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">chosen</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">rejected</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Tokenize a single batch element.</span> + +<span class="sd"> At this stage, we don&#39;t convert to PyTorch tensors yet; we just handle the truncation</span> +<span class="sd"> in case the prompt + chosen or prompt + rejected responses is/are too long. First</span> +<span class="sd"> we truncate the prompt; if we&#39;re still too long, we truncate the chosen/rejected.</span> + +<span class="sd"> We also create the labels for the chosen/rejected responses, which are of length equal to</span> +<span class="sd"> the sum of the length of the prompt and the chosen/rejected response, with</span> +<span class="sd"> label_pad_token_id for the prompt tokens.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">batch</span> <span class="o">=</span> <span class="p">{}</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_encoder_decoder</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span> + + <span class="n">chosen_tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">(</span><span class="n">chosen</span><span class="p">,</span> <span class="n">add_special_tokens</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">rejected_tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">(</span><span class="n">rejected</span><span class="p">,</span> <span class="n">add_special_tokens</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">prompt_tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">(</span><span class="n">prompt</span><span class="p">,</span> <span class="n">add_special_tokens</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + + <span class="n">eos_token_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span> + <span class="c1"># Get indices in list prompt_tokens[&quot;input_ids&quot;] that equals the EOS token (often 0)</span> + <span class="n">eos_indices_prompt</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">prompt_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">])</span> <span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="n">eos_token_id</span><span class="p">]</span> + <span class="c1"># attention mask these indices to eos_token_id</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask_prompt</span><span class="p">:</span> + <span class="n">new_attention_mask</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">p</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">prompt_tokens</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">])]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">new_attention_mask</span> <span class="o">=</span> <span class="p">[</span> + <span class="mi">0</span> <span class="k">if</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">eos_indices_prompt</span> <span class="k">else</span> <span class="n">p</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">p</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">prompt_tokens</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">])</span> + <span class="p">]</span> + <span class="n">prompt_tokens</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_attention_mask</span> + + <span class="c1"># do the same for chosen and rejected</span> + <span class="n">eos_indices_chosen</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">chosen_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">])</span> <span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="n">eos_token_id</span><span class="p">]</span> + <span class="n">new_attention_mask_c</span> <span class="o">=</span> <span class="p">[</span> + <span class="mi">0</span> <span class="k">if</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">eos_indices_chosen</span> <span class="k">else</span> <span class="n">p</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">p</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">chosen_tokens</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">])</span> + <span class="p">]</span> + <span class="n">chosen_tokens</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_attention_mask_c</span> + + <span class="n">eos_indices_rejected</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">rejected_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">])</span> <span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="n">eos_token_id</span><span class="p">]</span> + <span class="n">new_attention_mask_r</span> <span class="o">=</span> <span class="p">[</span> + <span class="mi">0</span> <span class="k">if</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">eos_indices_rejected</span> <span class="k">else</span> <span class="n">p</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">p</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">rejected_tokens</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">])</span> + <span class="p">]</span> + <span class="n">rejected_tokens</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_attention_mask_r</span> + + <span class="c1"># add EOS token to end of prompt</span> + + <span class="n">chosen_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span><span class="p">)</span> + <span class="n">chosen_tokens</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> + + <span class="n">rejected_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span><span class="p">)</span> + <span class="n">rejected_tokens</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> + + <span class="n">longer_response_length</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">chosen_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]),</span> <span class="nb">len</span><span class="p">(</span><span class="n">rejected_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]))</span> + + <span class="c1"># if combined sequence is too long, truncate the prompt</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">prompt_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">])</span> <span class="o">+</span> <span class="n">longer_response_length</span> <span class="o">&gt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_length</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">truncation_mode</span> <span class="o">==</span> <span class="s2">&quot;keep_start&quot;</span><span class="p">:</span> + <span class="n">prompt_tokens</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span><span class="p">[:</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_prompt_length</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">prompt_tokens</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">truncation_mode</span> <span class="o">==</span> <span class="s2">&quot;keep_end&quot;</span><span class="p">:</span> + <span class="n">prompt_tokens</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span><span class="p">[</span><span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">max_prompt_length</span> <span class="p">:]</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">prompt_tokens</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Unknown truncation mode: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">truncation_mode</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="c1"># if that&#39;s still too long, truncate the response</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">prompt_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">])</span> <span class="o">+</span> <span class="n">longer_response_length</span> <span class="o">&gt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_length</span><span class="p">:</span> + <span class="n">chosen_tokens</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span><span class="p">[:</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_prompt_length</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">chosen_tokens</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> + <span class="n">rejected_tokens</span> <span class="o">=</span> <span class="p">{</span> + <span class="n">k</span><span class="p">:</span> <span class="n">v</span><span class="p">[:</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_prompt_length</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">rejected_tokens</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> + <span class="p">}</span> + + <span class="c1"># Create labels</span> + <span class="n">chosen_sequence_tokens</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">prompt_tokens</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">+</span> <span class="n">chosen_tokens</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">chosen_tokens</span><span class="p">}</span> + <span class="n">rejected_sequence_tokens</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">prompt_tokens</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">+</span> <span class="n">rejected_tokens</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">rejected_tokens</span><span class="p">}</span> + <span class="n">chosen_sequence_tokens</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">chosen_sequence_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][:]</span> + <span class="n">chosen_sequence_tokens</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">][:</span> <span class="nb">len</span><span class="p">(</span><span class="n">prompt_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">])]</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">label_pad_token_id</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span> + <span class="n">prompt_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span> + <span class="p">)</span> + <span class="n">rejected_sequence_tokens</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">rejected_sequence_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][:]</span> + <span class="n">rejected_sequence_tokens</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">][:</span> <span class="nb">len</span><span class="p">(</span><span class="n">prompt_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">])]</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">label_pad_token_id</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span> + <span class="n">prompt_tokens</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span> + <span class="p">)</span> + + <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">toks</span> <span class="ow">in</span> <span class="p">{</span> + <span class="s2">&quot;chosen&quot;</span><span class="p">:</span> <span class="n">chosen_sequence_tokens</span><span class="p">,</span> + <span class="s2">&quot;rejected&quot;</span><span class="p">:</span> <span class="n">rejected_sequence_tokens</span><span class="p">,</span> + <span class="s2">&quot;prompt&quot;</span><span class="p">:</span> <span class="n">prompt_tokens</span><span class="p">,</span> + <span class="p">}</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> + <span class="k">for</span> <span class="n">type_key</span><span class="p">,</span> <span class="n">tokens</span> <span class="ow">in</span> <span class="n">toks</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> + <span class="k">if</span> <span class="n">type_key</span> <span class="o">==</span> <span class="s2">&quot;token_type_ids&quot;</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">batch</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">type_key</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">tokens</span> + + + + <span class="n">batch</span><span class="p">[</span><span class="s2">&quot;prompt&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">prompt</span> + <span class="n">batch</span><span class="p">[</span><span class="s2">&quot;chosen&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">prompt</span> <span class="o">+</span> <span class="n">chosen</span> + <span class="n">batch</span><span class="p">[</span><span class="s2">&quot;rejected&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">prompt</span> <span class="o">+</span> <span class="n">rejected</span> + <span class="n">batch</span><span class="p">[</span><span class="s2">&quot;chosen_response_only&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">chosen</span> + <span class="n">batch</span><span class="p">[</span><span class="s2">&quot;rejected_response_only&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">rejected</span> + + <span class="k">return</span> <span class="n">batch</span></div> + + + +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding.collate"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.collate">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">collate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">batch</span><span class="p">):</span> + <span class="c1"># first, pad everything to the same length</span> + <span class="n">padded_batch</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">batch</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> + <span class="k">if</span> <span class="n">k</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;_input_ids&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">k</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;_attention_mask&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">k</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;_labels&quot;</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_encoder_decoder</span><span class="p">:</span> + <span class="n">to_pad</span> <span class="o">=</span> <span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span><span class="p">(</span><span class="n">ex</span><span class="p">[</span><span class="n">k</span><span class="p">])</span> <span class="k">for</span> <span class="n">ex</span> <span class="ow">in</span> <span class="n">batch</span><span class="p">]</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">k</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;prompt&quot;</span><span class="p">))</span> <span class="ow">and</span> <span class="p">(</span><span class="n">k</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;input_ids&quot;</span><span class="p">)):</span> + <span class="n">padding_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span> + <span class="k">elif</span> <span class="n">k</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;_attention_mask&quot;</span><span class="p">):</span> + <span class="n">padding_value</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">elif</span> <span class="p">(</span><span class="n">k</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;chosen&quot;</span><span class="p">))</span> <span class="ow">or</span> <span class="p">(</span><span class="n">k</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;rejected&quot;</span><span class="p">))</span> <span class="ow">or</span> <span class="p">(</span><span class="s2">&quot;decoder&quot;</span> <span class="ow">in</span> <span class="n">k</span><span class="p">):</span> + <span class="n">padding_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">label_pad_token_id</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Unexpected key in batch &#39;</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">)</span> + <span class="n">padded_batch</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">pad_sequence</span><span class="p">(</span><span class="n">to_pad</span><span class="p">,</span> <span class="n">batch_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">padding_value</span><span class="o">=</span><span class="n">padding_value</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># adapted from https://stackoverflow.com/questions/73256206</span> + <span class="k">if</span> <span class="s2">&quot;prompt&quot;</span> <span class="ow">in</span> <span class="n">k</span><span class="p">:</span> + <span class="n">to_pad</span> <span class="o">=</span> <span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span><span class="p">(</span><span class="n">ex</span><span class="p">[</span><span class="n">k</span><span class="p">][::</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> <span class="k">for</span> <span class="n">ex</span> <span class="ow">in</span> <span class="n">batch</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">to_pad</span> <span class="o">=</span> <span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span><span class="p">(</span><span class="n">ex</span><span class="p">[</span><span class="n">k</span><span class="p">])</span> <span class="k">for</span> <span class="n">ex</span> <span class="ow">in</span> <span class="n">batch</span><span class="p">]</span> + <span class="k">if</span> <span class="n">k</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;_input_ids&quot;</span><span class="p">):</span> + <span class="n">padding_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span> + <span class="k">elif</span> <span class="n">k</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;_labels&quot;</span><span class="p">):</span> + <span class="n">padding_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">label_pad_token_id</span> + <span class="k">elif</span> <span class="n">k</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;_attention_mask&quot;</span><span class="p">):</span> + <span class="n">padding_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">padding_value</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Unexpected key in batch &#39;</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">)</span> + + <span class="n">padded_batch</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">pad_sequence</span><span class="p">(</span><span class="n">to_pad</span><span class="p">,</span> <span class="n">batch_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">padding_value</span><span class="o">=</span><span class="n">padding_value</span><span class="p">)</span> + <span class="c1"># for the prompt, flip back so padding is on left side</span> + <span class="k">if</span> <span class="s2">&quot;prompt&quot;</span> <span class="ow">in</span> <span class="n">k</span><span class="p">:</span> + <span class="n">padded_batch</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">padded_batch</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">.</span><span class="n">flip</span><span class="p">(</span><span class="n">dims</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">padded_batch</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">ex</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="k">for</span> <span class="n">ex</span> <span class="ow">in</span> <span class="n">batch</span><span class="p">]</span> + + <span class="k">return</span> <span class="n">padded_batch</span></div> + + + +<div class="viewcode-block" id="PreferenceDataCollatorWithPadding.__call__"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.__call__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">features</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]])</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span> + <span class="n">tokenized_batch</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">for</span> <span class="n">feature</span> <span class="ow">in</span> <span class="n">features</span><span class="p">:</span> + <span class="n">prompt</span> <span class="o">=</span> <span class="n">feature</span><span class="p">[</span><span class="s2">&quot;prompt&quot;</span><span class="p">]</span> + <span class="n">chosen</span> <span class="o">=</span> <span class="n">feature</span><span class="p">[</span><span class="s2">&quot;chosen&quot;</span><span class="p">]</span> + <span class="n">rejected</span> <span class="o">=</span> <span class="n">feature</span><span class="p">[</span><span class="s2">&quot;rejected&quot;</span><span class="p">]</span> + + <span class="n">batch_element</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenize_batch_element</span><span class="p">(</span><span class="n">prompt</span><span class="p">,</span> <span class="n">chosen</span><span class="p">,</span> <span class="n">rejected</span><span class="p">)</span> + <span class="n">batch_element</span><span class="p">[</span><span class="s2">&quot;margin&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">feature</span><span class="p">[</span><span class="s2">&quot;margin&quot;</span><span class="p">]</span> + <span class="n">tokenized_batch</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">batch_element</span><span class="p">)</span> + + <span class="c1"># return collated batch</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">collate</span><span class="p">(</span><span class="n">tokenized_batch</span><span class="p">)</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/utils/dpov2_trainer.html b/_modules/lmflow/pipeline/utils/dpov2_trainer.html new file mode 100644 index 000000000..c6ad15cd8 --- /dev/null +++ b/_modules/lmflow/pipeline/utils/dpov2_trainer.html @@ -0,0 +1,714 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.utils.dpov2_trainer &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/utils/dpov2_trainer';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.dpov2_trainer</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.utils.dpov2_trainer</h1><div class="highlight"><pre> +<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Any</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Literal</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">datasets</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.nn</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">nn</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.nn.functional</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">F</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">PreTrainedModel</span><span class="p">,</span> + <span class="n">PreTrainedTokenizerBase</span><span class="p">,</span> + <span class="n">DataCollator</span><span class="p">,</span> + <span class="n">TrainingArguments</span><span class="p">,</span> + <span class="n">TrainerCallback</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.trainer_callback</span><span class="w"> </span><span class="kn">import</span> <span class="n">TrainerCallback</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.trainer_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">EvalLoopOutput</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.utils.dpov2_dataprocessor</span><span class="w"> </span><span class="kn">import</span> <span class="n">PreferenceDataCollatorWithPadding</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.versioning</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_trl_available</span> + +<span class="k">if</span> <span class="n">is_trl_available</span><span class="p">():</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">trl</span><span class="w"> </span><span class="kn">import</span> <span class="n">DPOTrainer</span> +<span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="s2">&quot;Please install trl package to use dpo_aligner.py&quot;</span><span class="p">)</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#lmflow.pipeline.utils.dpov2_trainer.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="DPOv2Trainer"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">DPOv2Trainer</span><span class="p">(</span><span class="n">DPOTrainer</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">PreTrainedModel</span><span class="p">,</span> <span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">ref_model</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">PreTrainedModel</span><span class="p">,</span> <span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">beta</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.1</span><span class="p">,</span> + <span class="n">loss_type</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">&quot;sigmoid&quot;</span><span class="p">,</span> <span class="s2">&quot;hinge&quot;</span><span class="p">,</span> <span class="s2">&quot;cross_entropy&quot;</span><span class="p">,</span> <span class="s2">&quot;kl&quot;</span><span class="p">,</span> <span class="s2">&quot;rev_kl&quot;</span><span class="p">,</span> <span class="s2">&quot;raft&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;rev_kl&quot;</span><span class="p">,</span> + <span class="n">args</span><span class="p">:</span> <span class="n">TrainingArguments</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">data_collator</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">DataCollator</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">label_pad_token_id</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">-</span><span class="mi">100</span><span class="p">,</span> + <span class="n">padding_value</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> + <span class="n">truncation_mode</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;keep_end&quot;</span><span class="p">,</span> + <span class="n">train_dataset</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">eval_dataset</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">Dataset</span><span class="p">,</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Dataset</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">PreTrainedTokenizerBase</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">model_init</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Callable</span><span class="p">[[],</span> <span class="n">PreTrainedModel</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">callbacks</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">TrainerCallback</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">optimizers</span><span class="p">:</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Optimizer</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">lr_scheduler</span><span class="o">.</span><span class="n">LambdaLR</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span> + <span class="kc">None</span><span class="p">,</span> + <span class="kc">None</span><span class="p">,</span> + <span class="p">),</span> + <span class="n">preprocess_logits_for_metrics</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Callable</span><span class="p">[[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">],</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">max_length</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">max_prompt_length</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">max_target_length</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">peft_config</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">is_encoder_decoder</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">disable_dropout</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> + <span class="n">generate_during_eval</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">compute_metrics</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Callable</span><span class="p">[[</span><span class="n">EvalLoopOutput</span><span class="p">],</span> <span class="n">Dict</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">mask_prompt</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">len_penalty</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> + <span class="n">preprocessing_num_workers</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> + <span class="p">):</span> + + <span class="k">if</span> <span class="n">data_collator</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">data_collator</span> <span class="o">=</span> <span class="n">PreferenceDataCollatorWithPadding</span><span class="p">(</span> + <span class="n">tokenizer</span><span class="p">,</span> + <span class="n">max_length</span><span class="o">=</span><span class="n">max_length</span><span class="p">,</span> + <span class="n">max_prompt_length</span><span class="o">=</span><span class="n">max_prompt_length</span><span class="p">,</span> + <span class="n">label_pad_token_id</span><span class="o">=</span><span class="n">label_pad_token_id</span><span class="p">,</span> + <span class="n">padding_value</span><span class="o">=</span><span class="n">padding_value</span><span class="p">,</span> + <span class="n">truncation_mode</span><span class="o">=</span><span class="n">truncation_mode</span><span class="p">,</span> + <span class="n">is_encoder_decoder</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">max_target_length</span><span class="o">=</span><span class="n">max_target_length</span><span class="p">,</span> + <span class="n">mask_prompt</span><span class="o">=</span><span class="n">mask_prompt</span><span class="p">,</span> + <span class="p">)</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span> + <span class="n">ref_model</span><span class="o">=</span><span class="n">ref_model</span><span class="p">,</span> + <span class="n">beta</span><span class="o">=</span><span class="n">beta</span><span class="p">,</span> + <span class="n">loss_type</span><span class="o">=</span><span class="n">loss_type</span><span class="p">,</span> + <span class="n">args</span><span class="o">=</span><span class="n">args</span><span class="p">,</span> + <span class="n">data_collator</span><span class="o">=</span><span class="n">data_collator</span><span class="p">,</span> + <span class="n">label_pad_token_id</span><span class="o">=</span><span class="n">label_pad_token_id</span><span class="p">,</span> + <span class="n">padding_value</span><span class="o">=</span><span class="n">padding_value</span><span class="p">,</span> + <span class="n">truncation_mode</span><span class="o">=</span><span class="n">truncation_mode</span><span class="p">,</span> + <span class="n">train_dataset</span><span class="o">=</span><span class="n">train_dataset</span><span class="p">,</span> + <span class="n">eval_dataset</span><span class="o">=</span><span class="n">eval_dataset</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="n">tokenizer</span><span class="p">,</span> + <span class="n">model_init</span><span class="o">=</span><span class="n">model_init</span><span class="p">,</span> + <span class="n">callbacks</span><span class="o">=</span><span class="n">callbacks</span><span class="p">,</span> + <span class="n">optimizers</span><span class="o">=</span><span class="n">optimizers</span><span class="p">,</span> + <span class="n">preprocess_logits_for_metrics</span><span class="o">=</span><span class="n">preprocess_logits_for_metrics</span><span class="p">,</span> + <span class="n">max_length</span><span class="o">=</span><span class="n">max_length</span><span class="p">,</span> + <span class="n">max_prompt_length</span><span class="o">=</span><span class="n">max_prompt_length</span><span class="p">,</span> + <span class="n">max_target_length</span><span class="o">=</span><span class="n">max_target_length</span><span class="p">,</span> + <span class="n">peft_config</span><span class="o">=</span><span class="n">peft_config</span><span class="p">,</span> + <span class="n">is_encoder_decoder</span><span class="o">=</span><span class="n">is_encoder_decoder</span><span class="p">,</span> + <span class="n">disable_dropout</span><span class="o">=</span><span class="n">disable_dropout</span><span class="p">,</span> + <span class="n">generate_during_eval</span><span class="o">=</span><span class="n">generate_during_eval</span><span class="p">,</span> + <span class="n">compute_metrics</span><span class="o">=</span><span class="n">compute_metrics</span><span class="p">,</span> + <span class="n">dataset_num_proc</span><span class="o">=</span><span class="n">preprocessing_num_workers</span><span class="p">,</span> + <span class="p">)</span> +<div class="viewcode-block" id="DPOv2Trainer.use_dpo_data_collator"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.use_dpo_data_collator">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">use_dpo_data_collator</span> <span class="o">=</span> <span class="kc">True</span></div> + +<div class="viewcode-block" id="DPOv2Trainer.len_penalty"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.len_penalty">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">len_penalty</span> <span class="o">=</span> <span class="n">len_penalty</span></div> + + +<div class="viewcode-block" id="DPOv2Trainer.dpo_loss"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.dpo_loss">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">dpo_loss</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">policy_chosen_logps</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">,</span> + <span class="n">policy_rejected_logps</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">,</span> + <span class="n">reference_chosen_logps</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">,</span> + <span class="n">reference_rejected_logps</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">,</span> + <span class="n">reference_free</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">margin</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">len_penalty</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Compute the DPO loss for a batch of policy and reference model log probabilities.</span> + +<span class="sd"> Args:</span> +<span class="sd"> policy_chosen_logps: Log probabilities of the policy model for the chosen responses. Shape: (batch_size,)</span> +<span class="sd"> policy_rejected_logps: Log probabilities of the policy model for the rejected responses. Shape: (batch_size,)</span> +<span class="sd"> reference_chosen_logps: Log probabilities of the reference model for the chosen responses. Shape: (batch_size,)</span> +<span class="sd"> reference_rejected_logps: Log probabilities of the reference model for the rejected responses. Shape: (batch_size,)</span> +<span class="sd"> beta: Temperature parameter for the DPO loss, typically something in the range of 0.1 to 0.5. We ignore the reference model as beta -&gt; 0.</span> +<span class="sd"> reference_free: If True, we ignore the _provided_ reference model and implicitly use a reference model that assigns equal probability to all responses.</span> + +<span class="sd"> Returns:</span> +<span class="sd"> A tuple of three tensors: (losses, chosen_rewards, rejected_rewards).</span> +<span class="sd"> The losses tensor contains the DPO loss for each example in the batch.</span> +<span class="sd"> The chosen_rewards and rejected_rewards tensors contain the rewards for the chosen and rejected responses, respectively.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">pi_logratios</span> <span class="o">=</span> <span class="n">policy_chosen_logps</span> <span class="o">-</span> <span class="n">policy_rejected_logps</span> + <span class="n">ref_logratios</span> <span class="o">=</span> <span class="n">reference_chosen_logps</span> <span class="o">-</span> <span class="n">reference_rejected_logps</span> <span class="o">+</span> <span class="n">len_penalty</span> + + <span class="k">if</span> <span class="n">reference_free</span><span class="p">:</span> + <span class="n">ref_logratios</span> <span class="o">=</span> <span class="mi">0</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss_type</span> <span class="o">==</span> <span class="s2">&quot;sigmoid&quot;</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">pi_logratios</span> <span class="o">-</span> <span class="n">ref_logratios</span> + <span class="n">losses</span> <span class="o">=</span> <span class="o">-</span><span class="n">F</span><span class="o">.</span><span class="n">logsigmoid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">beta</span> <span class="o">*</span> <span class="n">logits</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss_type</span> <span class="o">==</span> <span class="s2">&quot;hinge&quot;</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">pi_logratios</span> <span class="o">-</span> <span class="n">ref_logratios</span> + <span class="n">losses</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">beta</span> <span class="o">*</span> <span class="n">logits</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss_type</span> <span class="o">==</span> <span class="s2">&quot;cross_entropy&quot;</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">policy_chosen_logps</span> <span class="o">-</span> <span class="n">reference_chosen_logps</span> + <span class="n">losses</span> <span class="o">=</span> <span class="o">-</span><span class="n">F</span><span class="o">.</span><span class="n">logsigmoid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">beta</span> <span class="o">*</span> <span class="n">logits</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss_type</span> <span class="o">==</span> <span class="s2">&quot;raft&quot;</span><span class="p">:</span> + <span class="n">losses</span> <span class="o">=</span> <span class="o">-</span><span class="n">policy_chosen_logps</span> <span class="c1"># F.logsigmoid(self.beta * logits)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss_type</span> <span class="o">==</span> <span class="s2">&quot;ipo&quot;</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">pi_logratios</span> <span class="o">-</span> <span class="n">ref_logratios</span> + <span class="c1"># eqn (17) of the paper where beta is the regularization parameter for the IPO loss, denoted by tau in the paper.</span> + <span class="n">losses</span> <span class="o">=</span> <span class="p">(</span><span class="n">logits</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">/</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">beta</span><span class="p">))</span> <span class="o">**</span> <span class="mi">2</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss_type</span> <span class="o">==</span> <span class="s2">&quot;kl&quot;</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">pi_logratios</span> <span class="o">-</span> <span class="n">ref_logratios</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">sigmoid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">beta</span> <span class="o">*</span> <span class="n">logits</span><span class="p">)</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">minimum</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="o">*</span> <span class="mf">0.999</span><span class="p">)</span> + <span class="n">p_gt</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">margin</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">torch</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">margin</span><span class="p">)</span> <span class="o">+</span> <span class="mf">1e-3</span><span class="p">)</span> + <span class="n">losses</span> <span class="o">=</span> <span class="n">p</span> <span class="o">*</span> <span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="o">-</span> <span class="n">torch</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">p_gt</span><span class="p">))</span> <span class="o">+</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">p</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">p</span><span class="p">)</span> <span class="o">-</span> <span class="n">torch</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">p_gt</span><span class="p">))</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss_type</span> <span class="o">==</span> <span class="s2">&quot;tv&quot;</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">pi_logratios</span> <span class="o">-</span> <span class="n">ref_logratios</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">sigmoid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">beta</span> <span class="o">*</span> <span class="n">logits</span><span class="p">)</span> + <span class="n">p_gt</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">margin</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">torch</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">margin</span><span class="p">))</span> + <span class="n">losses</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">p</span> <span class="o">-</span> <span class="n">p_gt</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss_type</span> <span class="o">==</span> <span class="s2">&quot;hellinger&quot;</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">pi_logratios</span> <span class="o">-</span> <span class="n">ref_logratios</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">sigmoid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">beta</span> <span class="o">*</span> <span class="n">logits</span><span class="p">)</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">minimum</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="o">*</span> <span class="mf">0.999</span><span class="p">)</span> + <span class="n">p_gt</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">margin</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">torch</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">margin</span><span class="p">))</span> + <span class="n">losses</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="o">*</span> <span class="p">((</span><span class="n">p</span><span class="o">**</span><span class="mf">0.5</span> <span class="o">-</span> <span class="n">p_gt</span><span class="o">**</span><span class="mf">0.5</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">+</span> <span class="p">((</span><span class="mi">1</span> <span class="o">-</span> <span class="n">p</span><span class="p">)</span> <span class="o">**</span> <span class="mf">0.5</span> <span class="o">-</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">p_gt</span><span class="p">)</span> <span class="o">**</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss_type</span> <span class="o">==</span> <span class="s2">&quot;rev_kl&quot;</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">pi_logratios</span> <span class="o">-</span> <span class="n">ref_logratios</span> + <span class="n">logp</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">logsigmoid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">beta</span> <span class="o">*</span> <span class="n">logits</span><span class="p">)</span> + <span class="n">logp_neg</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">logsigmoid</span><span class="p">(</span><span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">beta</span> <span class="o">*</span> <span class="n">logits</span><span class="p">)</span> + <span class="n">p_gt</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">sigmoid</span><span class="p">(</span><span class="n">margin</span><span class="p">)</span> + <span class="n">losses</span> <span class="o">=</span> <span class="o">-</span><span class="n">p_gt</span> <span class="o">*</span> <span class="p">(</span><span class="n">logp</span><span class="p">)</span> <span class="o">-</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">p_gt</span><span class="p">)</span> <span class="o">*</span> <span class="n">logp_neg</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Unknown loss type: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">loss_type</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span> + + <span class="n">chosen_rewards</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">beta</span> <span class="o">*</span> <span class="p">(</span><span class="n">policy_chosen_logps</span> <span class="o">-</span> <span class="n">reference_chosen_logps</span><span class="p">)</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span> + <span class="n">rejected_rewards</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">beta</span> <span class="o">*</span> <span class="p">(</span><span class="n">policy_rejected_logps</span> <span class="o">-</span> <span class="n">reference_rejected_logps</span><span class="p">)</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span> + + <span class="k">return</span> <span class="n">losses</span><span class="p">,</span> <span class="n">chosen_rewards</span><span class="p">,</span> <span class="n">rejected_rewards</span></div> + + +<div class="viewcode-block" id="DPOv2Trainer.get_batch_loss_metrics"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.get_batch_loss_metrics">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_batch_loss_metrics</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">batch</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span><span class="p">]],</span> + <span class="n">train_eval</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">&quot;train&quot;</span><span class="p">,</span> <span class="s2">&quot;eval&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;train&quot;</span><span class="p">,</span> + <span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_batch_metrics</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">batch</span><span class="p">,</span> <span class="n">train_eval</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="DPOv2Trainer.get_batch_metrics"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.get_batch_metrics">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_batch_metrics</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">batch</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span><span class="p">]],</span> + <span class="n">train_eval</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s2">&quot;train&quot;</span><span class="p">,</span> <span class="s2">&quot;eval&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;train&quot;</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Compute the DPO loss and other metrics for the given batch of inputs for train or test.&quot;&quot;&quot;</span> + <span class="n">metrics</span> <span class="o">=</span> <span class="p">{}</span> + <span class="p">(</span> + <span class="n">policy_chosen_logps</span><span class="p">,</span> + <span class="n">policy_rejected_logps</span><span class="p">,</span> + <span class="n">policy_chosen_logits</span><span class="p">,</span> + <span class="n">policy_rejected_logits</span><span class="p">,</span> + <span class="p">)</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">concatenated_forward</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">batch</span><span class="p">)</span> + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ref_model</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span><span class="o">.</span><span class="n">unwrap_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">)</span><span class="o">.</span><span class="n">disable_adapter</span><span class="p">():</span> + <span class="p">(</span> + <span class="n">reference_chosen_logps</span><span class="p">,</span> + <span class="n">reference_rejected_logps</span><span class="p">,</span> + <span class="n">_</span><span class="p">,</span> + <span class="n">_</span><span class="p">,</span> + <span class="p">)</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">concatenated_forward</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">batch</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="p">(</span> + <span class="n">reference_chosen_logps</span><span class="p">,</span> + <span class="n">reference_rejected_logps</span><span class="p">,</span> + <span class="n">_</span><span class="p">,</span> + <span class="n">_</span><span class="p">,</span> + <span class="p">)</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">concatenated_forward</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ref_model</span><span class="p">,</span> <span class="n">batch</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">len_penalty</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">chosen_len</span> <span class="o">=</span> <span class="n">batch</span><span class="p">[</span><span class="s2">&quot;chosen_input_ids&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">len_penalty</span> + <span class="n">rejected_len</span> <span class="o">=</span> <span class="n">batch</span><span class="p">[</span><span class="s2">&quot;rejected_input_ids&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">len_penalty</span> + <span class="n">len_penalty</span> <span class="o">=</span> <span class="n">chosen_len</span> <span class="o">-</span> <span class="n">rejected_len</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">chosen_len</span> <span class="o">=</span> <span class="mi">1</span> + <span class="n">rejected_len</span> <span class="o">=</span> <span class="mi">1</span> + <span class="n">len_penalty</span> <span class="o">=</span> <span class="mi">0</span> + + <span class="n">margin</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span><span class="n">batch</span><span class="p">[</span><span class="s2">&quot;margin&quot;</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="n">policy_chosen_logps</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">accelerator</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="n">losses</span><span class="p">,</span> <span class="n">chosen_rewards</span><span class="p">,</span> <span class="n">rejected_rewards</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dpo_loss</span><span class="p">(</span> + <span class="n">policy_chosen_logps</span><span class="p">,</span> + <span class="n">policy_rejected_logps</span><span class="p">,</span> + <span class="n">reference_chosen_logps</span><span class="p">,</span> + <span class="n">reference_rejected_logps</span><span class="p">,</span> + <span class="n">margin</span><span class="o">=</span><span class="n">margin</span><span class="p">,</span> + <span class="n">len_penalty</span><span class="o">=</span><span class="n">len_penalty</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">reward_accuracies</span> <span class="o">=</span> <span class="p">(</span><span class="n">chosen_rewards</span> <span class="o">&gt;</span> <span class="n">rejected_rewards</span><span class="p">)</span><span class="o">.</span><span class="n">float</span><span class="p">()</span> + + <span class="n">prefix</span> <span class="o">=</span> <span class="s2">&quot;eval_&quot;</span> <span class="k">if</span> <span class="n">train_eval</span> <span class="o">==</span> <span class="s2">&quot;eval&quot;</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span> + <span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2">rewards/chosen&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">chosen_rewards</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span> + <span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2">rewards/rejected&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">rejected_rewards</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span> + <span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2">rewards/accuracies&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">reward_accuracies</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span> + <span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2">rewards/margins&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">chosen_rewards</span> <span class="o">-</span> <span class="n">rejected_rewards</span><span class="p">)</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span> + <span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2">logps/rejected&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">policy_rejected_logps</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span> + <span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2">logps/chosen&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">policy_chosen_logps</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span> + <span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2">logits/rejected&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">policy_rejected_logits</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span> + <span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2">logits/chosen&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">policy_chosen_logits</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span> + + <span class="k">return</span> <span class="n">losses</span><span class="o">.</span><span class="n">mean</span><span class="p">(),</span> <span class="n">metrics</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/utils/memory_safe_dpov2_align.html b/_modules/lmflow/pipeline/utils/memory_safe_dpov2_align.html new file mode 100644 index 000000000..fc3c44941 --- /dev/null +++ b/_modules/lmflow/pipeline/utils/memory_safe_dpov2_align.html @@ -0,0 +1,520 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.utils.memory_safe_dpov2_align &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/utils/memory_safe_dpov2_align';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.memory_safe_dpov2_align</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.utils.memory_safe_dpov2_align</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">copy</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">HfArgumentParser</span> +<span class="p">)</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.hf_decoder_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">HFDecoderModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.dpov2_aligner</span><span class="w"> </span><span class="kn">import</span> <span class="n">DPOv2Aligner</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">DPOv2AlignerArguments</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.common</span><span class="w"> </span><span class="kn">import</span> <span class="n">remove_dataclass_attr_prefix</span><span class="p">,</span> <span class="n">create_copied_dataclass</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.html#lmflow.pipeline.utils.memory_safe_dpov2_align.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="ReferenceModelArguments"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.html#lmflow.pipeline.utils.memory_safe_dpov2_align.ReferenceModelArguments">[docs]</a> +<span class="n">ReferenceModelArguments</span><span class="p">:</span> <span class="n">ModelArguments</span> <span class="o">=</span> <span class="n">create_copied_dataclass</span><span class="p">(</span> + <span class="n">original_dataclass</span><span class="o">=</span><span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">field_prefix</span><span class="o">=</span><span class="s2">&quot;reference_&quot;</span><span class="p">,</span> + <span class="n">class_prefix</span><span class="o">=</span><span class="s2">&quot;Reference&quot;</span> +<span class="p">)</span></div> + + + +<div class="viewcode-block" id="main"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.html#lmflow.pipeline.utils.memory_safe_dpov2_align.main">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">():</span> + <span class="c1"># Parses arguments</span> + <span class="n">parser</span> <span class="o">=</span> <span class="n">HfArgumentParser</span><span class="p">((</span> + <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">ReferenceModelArguments</span><span class="p">,</span> + <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">DPOv2AlignerArguments</span><span class="p">,</span> + <span class="p">))</span> + <span class="n">target_model_args</span><span class="p">,</span> <span class="n">ref_model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">aligner_args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args_into_dataclasses</span><span class="p">()</span> + + <span class="n">ref_model_args_dict</span> <span class="o">=</span> <span class="n">remove_dataclass_attr_prefix</span><span class="p">(</span><span class="n">ref_model_args</span><span class="p">,</span> <span class="s2">&quot;reference_&quot;</span><span class="p">)</span> + <span class="n">ref_model_args</span> <span class="o">=</span> <span class="n">ModelArguments</span><span class="p">(</span><span class="o">**</span><span class="n">ref_model_args_dict</span><span class="p">)</span> + + <span class="n">target_model</span> <span class="o">=</span> <span class="n">HFDecoderModel</span><span class="p">(</span><span class="n">target_model_args</span><span class="p">)</span> + <span class="n">ref_model</span> <span class="o">=</span> <span class="n">HFDecoderModel</span><span class="p">(</span><span class="n">ref_model_args</span><span class="p">)</span> + <span class="n">train_dataset</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="n">data_args</span><span class="p">)</span> + <span class="n">eval_dataset</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">train_dataset</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span> + <span class="n">n</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> + <span class="n">seed</span><span class="o">=</span><span class="n">aligner_args</span><span class="o">.</span><span class="n">random_seed</span> + <span class="p">))</span> + + <span class="n">aligner</span> <span class="o">=</span> <span class="n">DPOv2Aligner</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">=</span><span class="n">target_model_args</span><span class="p">,</span> + <span class="n">data_args</span><span class="o">=</span><span class="n">train_dataset</span><span class="o">.</span><span class="n">data_args</span><span class="p">,</span> + <span class="n">aligner_args</span><span class="o">=</span><span class="n">aligner_args</span><span class="p">,</span> + <span class="n">ref_model_args</span><span class="o">=</span><span class="n">ref_model</span><span class="o">.</span><span class="n">model_args</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">aligner</span><span class="o">.</span><span class="n">align</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">target_model</span><span class="p">,</span> + <span class="n">ref_model</span><span class="o">=</span><span class="n">ref_model</span><span class="p">,</span> + <span class="n">train_dataset</span><span class="o">=</span><span class="n">train_dataset</span><span class="p">,</span> + <span class="n">eval_dataset</span><span class="o">=</span><span class="n">eval_dataset</span><span class="p">,</span> + <span class="p">)</span></div> + + + +<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span> + <span class="n">main</span><span class="p">()</span> +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/utils/memory_safe_vllm_inference.html b/_modules/lmflow/pipeline/utils/memory_safe_vllm_inference.html new file mode 100644 index 000000000..af897e430 --- /dev/null +++ b/_modules/lmflow/pipeline/utils/memory_safe_vllm_inference.html @@ -0,0 +1,515 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.utils.memory_safe_vllm_inference &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/utils/memory_safe_vllm_inference';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.memory_safe_vllm_inference</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.utils.memory_safe_vllm_inference</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> + +<span class="c1"># Note that this is only a workaround, since vllm</span> +<span class="c1"># inference engine cannot release GPU memory properly by now. Please see this github </span> +<span class="c1"># [issue](https://github.com/vllm-project/vllm/issues/1908).</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">HfArgumentParser</span> +<span class="p">)</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.auto_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">AutoModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.vllm_inferencer</span><span class="w"> </span><span class="kn">import</span> <span class="n">VLLMInferencer</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">AutoArguments</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="n">MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.html#lmflow.pipeline.utils.memory_safe_vllm_inference.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="main"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.html#lmflow.pipeline.utils.memory_safe_vllm_inference.main">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">():</span> + <span class="c1"># Parses arguments</span> + <span class="n">pipeline_name</span> <span class="o">=</span> <span class="s2">&quot;vllm_inferencer&quot;</span> + <span class="n">PipelineArguments</span> <span class="o">=</span> <span class="n">AutoArguments</span><span class="o">.</span><span class="n">get_pipeline_args_class</span><span class="p">(</span><span class="n">pipeline_name</span><span class="p">)</span> + + <span class="n">parser</span> <span class="o">=</span> <span class="n">HfArgumentParser</span><span class="p">((</span> + <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">PipelineArguments</span> + <span class="p">))</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span> <span class="ow">and</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;.json&quot;</span><span class="p">):</span> + <span class="c1"># If we pass only one argument to the script and it&#39;s the path to a json file,</span> + <span class="c1"># let&#39;s parse it to get our arguments.</span> + <span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">pipeline_args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_json_file</span><span class="p">(</span><span class="n">json_file</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">pipeline_args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args_into_dataclasses</span><span class="p">()</span> + + <span class="n">dataset</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="n">data_args</span><span class="p">)</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">AutoModel</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">model_args</span><span class="p">,</span> <span class="n">tune_strategy</span><span class="o">=</span><span class="s1">&#39;none&#39;</span><span class="p">)</span> + <span class="n">inferencer</span> <span class="o">=</span> <span class="n">VLLMInferencer</span><span class="p">(</span><span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">pipeline_args</span><span class="p">)</span> + + <span class="n">res</span> <span class="o">=</span> <span class="n">inferencer</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">,</span> + <span class="n">release_gpu</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">enable_decode_inference_result</span><span class="o">=</span><span class="n">pipeline_args</span><span class="o">.</span><span class="n">enable_decode_inference_result</span><span class="p">,</span> + <span class="n">enable_distributed_inference</span><span class="o">=</span><span class="n">pipeline_args</span><span class="o">.</span><span class="n">enable_distributed_inference</span><span class="p">,</span> + <span class="n">distributed_inference_num_instances</span><span class="o">=</span><span class="n">pipeline_args</span><span class="o">.</span><span class="n">distributed_inference_num_instances</span><span class="p">,</span> + <span class="n">inference_batch_size</span><span class="o">=</span><span class="n">pipeline_args</span><span class="o">.</span><span class="n">vllm_inference_batch_size</span><span class="p">,</span> + <span class="p">)</span> + + <span class="c1"># use this as a flag, stdout will be captured by the pipeline</span> + <span class="nb">print</span><span class="p">(</span><span class="n">MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG</span><span class="p">)</span></div> + + + +<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span> + <span class="n">main</span><span class="p">()</span> +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/utils/peft_trainer.html b/_modules/lmflow/pipeline/utils/peft_trainer.html new file mode 100644 index 000000000..4ee8856fe --- /dev/null +++ b/_modules/lmflow/pipeline/utils/peft_trainer.html @@ -0,0 +1,540 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.utils.peft_trainer &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/utils/peft_trainer';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.peft_trainer</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.utils.peft_trainer</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;Trainer for Peft models</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">__future__</span><span class="w"> </span><span class="kn">import</span> <span class="n">absolute_import</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">Trainer</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.trainer_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">PREFIX_CHECKPOINT_DIR</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.trainer_callback</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">TrainerCallback</span><span class="p">,</span> + <span class="n">TrainerControl</span><span class="p">,</span> + <span class="n">TrainerState</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.training_args</span><span class="w"> </span><span class="kn">import</span> <span class="n">TrainingArguments</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> + +<div class="viewcode-block" id="PeftTrainer"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftTrainer">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">PeftTrainer</span><span class="p">(</span><span class="n">Trainer</span><span class="p">):</span> +<div class="viewcode-block" id="PeftTrainer._save_checkpoint"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftTrainer._save_checkpoint">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_save_checkpoint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">trial</span><span class="p">,</span> <span class="n">metrics</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot; Don&#39;t save base model, optimizer etc.</span> +<span class="sd"> but create checkpoint folder (needed for saving adapter) &quot;&quot;&quot;</span> + <span class="n">checkpoint_folder</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">PREFIX_CHECKPOINT_DIR</span><span class="si">}</span><span class="s2">-</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span><span class="si">}</span><span class="s2">&quot;</span> + + <span class="n">run_dir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_output_dir</span><span class="p">(</span><span class="n">trial</span><span class="o">=</span><span class="n">trial</span><span class="p">)</span> + <span class="n">output_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">run_dir</span><span class="p">,</span> <span class="n">checkpoint_folder</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">metrics</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">metric_for_best_model</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">metric_to_check</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">metric_for_best_model</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">metric_to_check</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;eval_&quot;</span><span class="p">):</span> + <span class="n">metric_to_check</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;eval_</span><span class="si">{</span><span class="n">metric_to_check</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="n">metric_value</span> <span class="o">=</span> <span class="n">metrics</span><span class="p">[</span><span class="n">metric_to_check</span><span class="p">]</span> + + <span class="n">operator</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">greater</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">greater_is_better</span> <span class="k">else</span> <span class="n">np</span><span class="o">.</span><span class="n">less</span> + <span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_metric</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span> <span class="ow">is</span> <span class="kc">None</span> + <span class="ow">or</span> <span class="n">operator</span><span class="p">(</span><span class="n">metric_value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_metric</span><span class="p">)):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_metric</span> <span class="o">=</span> <span class="n">metric_value</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span> <span class="o">=</span> <span class="n">output_dir</span> + + <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_rotate_checkpoints</span><span class="p">(</span><span class="n">use_mtime</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">output_dir</span><span class="o">=</span><span class="n">run_dir</span><span class="p">)</span></div> +</div> + + +<div class="viewcode-block" id="PeftSavingCallback"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">PeftSavingCallback</span><span class="p">(</span><span class="n">TrainerCallback</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot; Correctly save PEFT model and not full model &quot;&quot;&quot;</span> +<div class="viewcode-block" id="PeftSavingCallback._save"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback._save">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">folder</span><span class="p">):</span> + <span class="k">if</span> <span class="n">folder</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">folder</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> + <span class="n">peft_model_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">folder</span><span class="p">,</span> <span class="s2">&quot;adapter_model&quot;</span><span class="p">)</span> + <span class="n">model</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="n">peft_model_path</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="PeftSavingCallback.on_train_end"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_train_end">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">on_train_end</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">:</span> <span class="n">TrainingArguments</span><span class="p">,</span> <span class="n">state</span><span class="p">:</span> <span class="n">TrainerState</span><span class="p">,</span> + <span class="n">control</span><span class="p">:</span> <span class="n">TrainerControl</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot; Save final best model adapter &quot;&quot;&quot;</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_save</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;model&#39;</span><span class="p">],</span> <span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="PeftSavingCallback.on_epoch_end"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_epoch_end">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">on_epoch_end</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">:</span> <span class="n">TrainingArguments</span><span class="p">,</span> <span class="n">state</span><span class="p">:</span> <span class="n">TrainerState</span><span class="p">,</span> + <span class="n">control</span><span class="p">:</span> <span class="n">TrainerControl</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot; Save intermediate model adapters in case of interrupted training &quot;&quot;&quot;</span> + <span class="n">folder</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">PREFIX_CHECKPOINT_DIR</span><span class="si">}</span><span class="s2">-</span><span class="si">{</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_save</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;model&#39;</span><span class="p">],</span> <span class="n">folder</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="PeftSavingCallback.on_save"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_save">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">on_save</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">args</span><span class="p">:</span> <span class="n">TrainingArguments</span><span class="p">,</span> + <span class="n">state</span><span class="p">:</span> <span class="n">TrainerState</span><span class="p">,</span> + <span class="n">control</span><span class="p">:</span> <span class="n">TrainerControl</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">):</span> + <span class="n">checkpoint_folder</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> + <span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">PREFIX_CHECKPOINT_DIR</span><span class="si">}</span><span class="s2">-</span><span class="si">{</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_save</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;model&#39;</span><span class="p">],</span> <span class="n">checkpoint_folder</span><span class="p">)</span> + + <span class="n">peft_model_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint_folder</span><span class="p">,</span> <span class="s2">&quot;adapter_model&quot;</span><span class="p">)</span> + <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;model&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="n">peft_model_path</span><span class="p">)</span> + <span class="k">return</span> <span class="n">control</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/utils/raft_trainer.html b/_modules/lmflow/pipeline/utils/raft_trainer.html new file mode 100644 index 000000000..ad6bdecda --- /dev/null +++ b/_modules/lmflow/pipeline/utils/raft_trainer.html @@ -0,0 +1,4580 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.utils.raft_trainer &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/utils/raft_trainer';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.raft_trainer</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.utils.raft_trainer</h1><div class="highlight"><pre> +<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">contextlib</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">functools</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">glob</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">inspect</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">math</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">random</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">re</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">shutil</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">time</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">warnings</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">collections.abc</span><span class="w"> </span><span class="kn">import</span> <span class="n">Mapping</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">distutils.util</span><span class="w"> </span><span class="kn">import</span> <span class="n">strtobool</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">TYPE_CHECKING</span><span class="p">,</span> <span class="n">Any</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Union</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">tqdm.auto</span><span class="w"> </span><span class="kn">import</span> <span class="n">tqdm</span> + + +<span class="c1"># Integrations must be imported before ML frameworks:</span> +<span class="c1"># isort: off</span> + +<span class="c1">### Fix the import bug in the latest version</span> +<span class="k">try</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">transformers.integrations</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">default_hp_search_backend</span><span class="p">,</span> + <span class="n">get_reporting_integration_callbacks</span><span class="p">,</span> + <span class="n">hp_params</span><span class="p">,</span> + <span class="n">is_fairscale_available</span><span class="p">,</span> + <span class="n">is_optuna_available</span><span class="p">,</span> + <span class="n">is_ray_tune_available</span><span class="p">,</span> + <span class="n">is_sigopt_available</span><span class="p">,</span> + <span class="n">is_wandb_available</span><span class="p">,</span> + <span class="n">run_hp_search_optuna</span><span class="p">,</span> + <span class="n">run_hp_search_ray</span><span class="p">,</span> + <span class="n">run_hp_search_sigopt</span><span class="p">,</span> + <span class="n">run_hp_search_wandb</span><span class="p">,</span> + <span class="p">)</span> +<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">transformers.integrations</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">get_reporting_integration_callbacks</span><span class="p">,</span> + <span class="n">hp_params</span><span class="p">,</span> + <span class="n">is_fairscale_available</span><span class="p">,</span> + <span class="p">)</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">transformers.hyperparameter_search</span><span class="w"> </span><span class="kn">import</span> <span class="n">default_hp_search_backend</span><span class="p">,</span><span class="n">ALL_HYPERPARAMETER_SEARCH_BACKENDS</span> + + + +<span class="c1"># isort: on</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.distributed</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">dist</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">huggingface_hub</span><span class="w"> </span><span class="kn">import</span> <span class="n">Repository</span><span class="p">,</span> <span class="n">create_repo</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">packaging</span><span class="w"> </span><span class="kn">import</span> <span class="n">version</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch</span><span class="w"> </span><span class="kn">import</span> <span class="n">nn</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.utils.data</span><span class="w"> </span><span class="kn">import</span> <span class="n">DataLoader</span><span class="p">,</span> <span class="n">Dataset</span><span class="p">,</span> <span class="n">RandomSampler</span><span class="p">,</span> <span class="n">SequentialSampler</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch.utils.data.distributed</span><span class="w"> </span><span class="kn">import</span> <span class="n">DistributedSampler</span> + + +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.configuration_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">PretrainedConfig</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.data.data_collator</span><span class="w"> </span><span class="kn">import</span> <span class="n">DataCollator</span><span class="p">,</span> <span class="n">DataCollatorWithPadding</span><span class="p">,</span> <span class="n">default_data_collator</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.debug_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">DebugOption</span><span class="p">,</span> <span class="n">DebugUnderflowOverflow</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.deepspeed</span><span class="w"> </span><span class="kn">import</span> <span class="n">deepspeed_init</span><span class="p">,</span> <span class="n">is_deepspeed_zero3_enabled</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.dependency_versions_check</span><span class="w"> </span><span class="kn">import</span> <span class="n">dep_version_check</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.modelcard</span><span class="w"> </span><span class="kn">import</span> <span class="n">TrainingSummary</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.modeling_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">PreTrainedModel</span><span class="p">,</span> <span class="n">load_sharded_checkpoint</span><span class="p">,</span> <span class="n">unwrap_model</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.models.auto.modeling_auto</span><span class="w"> </span><span class="kn">import</span> <span class="n">MODEL_FOR_CAUSAL_LM_MAPPING_NAMES</span><span class="p">,</span> <span class="n">MODEL_MAPPING_NAMES</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.optimization</span><span class="w"> </span><span class="kn">import</span> <span class="n">Adafactor</span><span class="p">,</span> <span class="n">get_scheduler</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.pytorch_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">ALL_LAYERNORM_LAYERS</span> + +<div class="viewcode-block" id="is_torch_greater_or_equal_than_1_10"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.is_torch_greater_or_equal_than_1_10">[docs]</a> +<span class="n">is_torch_greater_or_equal_than_1_10</span> <span class="o">=</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">__version__</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s2">&quot;1.10&quot;</span><span class="p">)</span></div> + +<div class="viewcode-block" id="is_torch_less_than_1_11"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.is_torch_less_than_1_11">[docs]</a> +<span class="n">is_torch_less_than_1_11</span> <span class="o">=</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">__version__</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s2">&quot;1.11&quot;</span><span class="p">)</span></div> + +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.tokenization_utils_base</span><span class="w"> </span><span class="kn">import</span> <span class="n">PreTrainedTokenizerBase</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.trainer_callback</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">CallbackHandler</span><span class="p">,</span> + <span class="n">DefaultFlowCallback</span><span class="p">,</span> + <span class="n">PrinterCallback</span><span class="p">,</span> + <span class="n">ProgressCallback</span><span class="p">,</span> + <span class="n">TrainerCallback</span><span class="p">,</span> + <span class="n">TrainerControl</span><span class="p">,</span> + <span class="n">TrainerState</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.trainer_pt_utils</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">DistributedLengthGroupedSampler</span><span class="p">,</span> + <span class="n">DistributedSamplerWithLoop</span><span class="p">,</span> + <span class="n">DistributedTensorGatherer</span><span class="p">,</span> + <span class="n">IterableDatasetShard</span><span class="p">,</span> + <span class="n">LabelSmoother</span><span class="p">,</span> + <span class="n">LengthGroupedSampler</span><span class="p">,</span> + <span class="n">SequentialDistributedSampler</span><span class="p">,</span> + <span class="n">ShardSampler</span><span class="p">,</span> + <span class="n">distributed_broadcast_scalars</span><span class="p">,</span> + <span class="n">distributed_concat</span><span class="p">,</span> + <span class="n">find_batch_size</span><span class="p">,</span> + <span class="n">get_module_class_from_name</span><span class="p">,</span> + <span class="n">get_parameter_names</span><span class="p">,</span> + <span class="n">nested_concat</span><span class="p">,</span> + <span class="n">nested_detach</span><span class="p">,</span> + <span class="n">nested_numpify</span><span class="p">,</span> + <span class="n">nested_truncate</span><span class="p">,</span> + <span class="n">nested_xla_mesh_reduce</span><span class="p">,</span> + <span class="n">reissue_pt_warnings</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.trainer_utils</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">PREFIX_CHECKPOINT_DIR</span><span class="p">,</span> + <span class="n">BestRun</span><span class="p">,</span> + <span class="n">EvalLoopOutput</span><span class="p">,</span> + <span class="n">EvalPrediction</span><span class="p">,</span> + <span class="n">FSDPOption</span><span class="p">,</span> + <span class="n">HPSearchBackend</span><span class="p">,</span> + <span class="n">HubStrategy</span><span class="p">,</span> + <span class="n">IntervalStrategy</span><span class="p">,</span> + <span class="n">PredictionOutput</span><span class="p">,</span> + <span class="n">RemoveColumnsCollator</span><span class="p">,</span> + <span class="n">ShardedDDPOption</span><span class="p">,</span> + <span class="n">TrainerMemoryTracker</span><span class="p">,</span> + <span class="n">TrainOutput</span><span class="p">,</span> + <span class="n">default_compute_objective</span><span class="p">,</span> + <span class="n">denumpify_detensorize</span><span class="p">,</span> + <span class="n">enable_full_determinism</span><span class="p">,</span> + <span class="n">find_executable_batch_size</span><span class="p">,</span> + <span class="n">get_last_checkpoint</span><span class="p">,</span> + <span class="n">has_length</span><span class="p">,</span> + <span class="n">number_of_arguments</span><span class="p">,</span> + <span class="n">seed_worker</span><span class="p">,</span> + <span class="n">set_seed</span><span class="p">,</span> + <span class="n">speed_metrics</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.training_args</span><span class="w"> </span><span class="kn">import</span> <span class="n">OptimizerNames</span><span class="p">,</span> <span class="n">ParallelMode</span><span class="p">,</span> <span class="n">TrainingArguments</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.utils</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">CONFIG_NAME</span><span class="p">,</span> + <span class="n">WEIGHTS_INDEX_NAME</span><span class="p">,</span> + <span class="n">WEIGHTS_NAME</span><span class="p">,</span> + <span class="n">can_return_loss</span><span class="p">,</span> + <span class="n">find_labels</span><span class="p">,</span> + <span class="n">get_full_repo_name</span><span class="p">,</span> + <span class="n">is_accelerate_available</span><span class="p">,</span> + <span class="n">is_apex_available</span><span class="p">,</span> + <span class="n">is_datasets_available</span><span class="p">,</span> + <span class="n">is_in_notebook</span><span class="p">,</span> + <span class="n">is_ipex_available</span><span class="p">,</span> + <span class="n">is_sagemaker_dp_enabled</span><span class="p">,</span> + <span class="n">is_sagemaker_mp_enabled</span><span class="p">,</span> + <span class="n">is_torch_compile_available</span><span class="p">,</span> + <span class="n">is_torch_neuroncore_available</span><span class="p">,</span> + <span class="n">is_torch_tpu_available</span><span class="p">,</span> + <span class="n">logging</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.utils.generic</span><span class="w"> </span><span class="kn">import</span> <span class="n">ContextManagers</span> + + +<div class="viewcode-block" id="_is_native_cpu_amp_available"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer._is_native_cpu_amp_available">[docs]</a> +<span class="n">_is_native_cpu_amp_available</span> <span class="o">=</span> <span class="n">is_torch_greater_or_equal_than_1_10</span></div> + + +<div class="viewcode-block" id="DEFAULT_CALLBACKS"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.DEFAULT_CALLBACKS">[docs]</a> +<span class="n">DEFAULT_CALLBACKS</span> <span class="o">=</span> <span class="p">[</span><span class="n">DefaultFlowCallback</span><span class="p">]</span></div> + +<span class="n">DEFAULT_PROGRESS_CALLBACK</span> <span class="o">=</span> <span class="n">ProgressCallback</span> + +<span class="k">if</span> <span class="n">is_in_notebook</span><span class="p">():</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">transformers.utils.notebook</span><span class="w"> </span><span class="kn">import</span> <span class="n">NotebookProgressCallback</span> + +<div class="viewcode-block" id="DEFAULT_PROGRESS_CALLBACK"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.DEFAULT_PROGRESS_CALLBACK">[docs]</a> + <span class="n">DEFAULT_PROGRESS_CALLBACK</span> <span class="o">=</span> <span class="n">NotebookProgressCallback</span></div> + + +<span class="k">if</span> <span class="n">is_apex_available</span><span class="p">():</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">apex</span><span class="w"> </span><span class="kn">import</span> <span class="n">amp</span> + +<span class="k">if</span> <span class="n">is_datasets_available</span><span class="p">():</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">datasets</span> + +<span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">(</span><span class="n">check_device</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">torch_xla.core.xla_model</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">xm</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">torch_xla.debug.metrics</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">met</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">torch_xla.distributed.parallel_loader</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pl</span> + +<span class="k">if</span> <span class="n">is_fairscale_available</span><span class="p">():</span> + <span class="n">dep_version_check</span><span class="p">(</span><span class="s2">&quot;fairscale&quot;</span><span class="p">)</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">fairscale</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">fairscale.nn.data_parallel</span><span class="w"> </span><span class="kn">import</span> <span class="n">FullyShardedDataParallel</span> <span class="k">as</span> <span class="n">FullyShardedDDP</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">fairscale.nn.data_parallel</span><span class="w"> </span><span class="kn">import</span> <span class="n">ShardedDataParallel</span> <span class="k">as</span> <span class="n">ShardedDDP</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">fairscale.nn.wrap</span><span class="w"> </span><span class="kn">import</span> <span class="n">auto_wrap</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">fairscale.optim</span><span class="w"> </span><span class="kn">import</span> <span class="n">OSS</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">fairscale.optim.grad_scaler</span><span class="w"> </span><span class="kn">import</span> <span class="n">ShardedGradScaler</span> + + +<span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">smdistributed.modelparallel.torch</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">smp</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">smdistributed.modelparallel</span><span class="w"> </span><span class="kn">import</span> <span class="n">__version__</span> <span class="k">as</span> <span class="n">SMP_VERSION</span> + +<div class="viewcode-block" id="IS_SAGEMAKER_MP_POST_1_10"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.IS_SAGEMAKER_MP_POST_1_10">[docs]</a> + <span class="n">IS_SAGEMAKER_MP_POST_1_10</span> <span class="o">=</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">SMP_VERSION</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s2">&quot;1.10&quot;</span><span class="p">)</span></div> + + + <span class="kn">from</span><span class="w"> </span><span class="nn">transformers.trainer_pt_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">smp_forward_backward</span><span class="p">,</span> <span class="n">smp_forward_only</span><span class="p">,</span> <span class="n">smp_gather</span><span class="p">,</span> <span class="n">smp_nested_concat</span> +<span class="k">else</span><span class="p">:</span> + <span class="n">IS_SAGEMAKER_MP_POST_1_10</span> <span class="o">=</span> <span class="kc">False</span> + + +<div class="viewcode-block" id="skip_first_batches"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.skip_first_batches">[docs]</a> +<span class="n">skip_first_batches</span> <span class="o">=</span> <span class="kc">None</span></div> + + + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">get_logger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<span class="c1"># Name of the files used for checkpointing</span> +<div class="viewcode-block" id="TRAINING_ARGS_NAME"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.TRAINING_ARGS_NAME">[docs]</a> +<span class="n">TRAINING_ARGS_NAME</span> <span class="o">=</span> <span class="s2">&quot;training_args.bin&quot;</span></div> + +<div class="viewcode-block" id="TRAINER_STATE_NAME"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.TRAINER_STATE_NAME">[docs]</a> +<span class="n">TRAINER_STATE_NAME</span> <span class="o">=</span> <span class="s2">&quot;trainer_state.json&quot;</span></div> + +<div class="viewcode-block" id="OPTIMIZER_NAME"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.OPTIMIZER_NAME">[docs]</a> +<span class="n">OPTIMIZER_NAME</span> <span class="o">=</span> <span class="s2">&quot;optimizer.pt&quot;</span></div> + +<div class="viewcode-block" id="SCHEDULER_NAME"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.SCHEDULER_NAME">[docs]</a> +<span class="n">SCHEDULER_NAME</span> <span class="o">=</span> <span class="s2">&quot;scheduler.pt&quot;</span></div> + +<div class="viewcode-block" id="SCALER_NAME"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.SCALER_NAME">[docs]</a> +<span class="n">SCALER_NAME</span> <span class="o">=</span> <span class="s2">&quot;scaler.pt&quot;</span></div> + + + +<div class="viewcode-block" id="RaftTrainer"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">RaftTrainer</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Trainer is a simple but feature-complete training and eval loop for PyTorch, optimized for 🤗 Transformers.</span> +<span class="sd"> Args:</span> +<span class="sd"> model ([`PreTrainedModel`] or `torch.nn.Module`, *optional*):</span> +<span class="sd"> The model to train, evaluate or use for predictions. If not provided, a `model_init` must be passed.</span> +<span class="sd"> &lt;Tip&gt;</span> +<span class="sd"> [`Trainer`] is optimized to work with the [`PreTrainedModel`] provided by the library. You can still use</span> +<span class="sd"> your own models defined as `torch.nn.Module` as long as they work the same way as the 🤗 Transformers</span> +<span class="sd"> models.</span> +<span class="sd"> &lt;/Tip&gt;</span> +<span class="sd"> args ([`TrainingArguments`], *optional*):</span> +<span class="sd"> The arguments to tweak for training. Will default to a basic instance of [`TrainingArguments`] with the</span> +<span class="sd"> `output_dir` set to a directory named *tmp_trainer* in the current directory if not provided.</span> +<span class="sd"> data_collator (`DataCollator`, *optional*):</span> +<span class="sd"> The function to use to form a batch from a list of elements of `train_dataset` or `eval_dataset`. Will</span> +<span class="sd"> default to [`default_data_collator`] if no `tokenizer` is provided, an instance of</span> +<span class="sd"> [`DataCollatorWithPadding`] otherwise.</span> +<span class="sd"> train_dataset (`torch.utils.data.Dataset` or `torch.utils.data.IterableDataset`, *optional*):</span> +<span class="sd"> The dataset to use for training. If it is a [`~datasets.Dataset`], columns not accepted by the</span> +<span class="sd"> `model.forward()` method are automatically removed.</span> +<span class="sd"> Note that if it&#39;s a `torch.utils.data.IterableDataset` with some randomization and you are training in a</span> +<span class="sd"> distributed fashion, your iterable dataset should either use a internal attribute `generator` that is a</span> +<span class="sd"> `torch.Generator` for the randomization that must be identical on all processes (and the Trainer will</span> +<span class="sd"> manually set the seed of this `generator` at each epoch) or have a `set_epoch()` method that internally</span> +<span class="sd"> sets the seed of the RNGs used.</span> +<span class="sd"> eval_dataset (Union[`torch.utils.data.Dataset`, Dict[str, `torch.utils.data.Dataset`]), *optional*):</span> +<span class="sd"> The dataset to use for evaluation. If it is a [`~datasets.Dataset`], columns not accepted by the</span> +<span class="sd"> `model.forward()` method are automatically removed. If it is a dictionary, it will evaluate on each</span> +<span class="sd"> dataset prepending the dictionary key to the metric name.</span> +<span class="sd"> tokenizer ([`PreTrainedTokenizerBase`], *optional*):</span> +<span class="sd"> The tokenizer used to preprocess the data. If provided, will be used to automatically pad the inputs to the</span> +<span class="sd"> maximum length when batching inputs, and it will be saved along the model to make it easier to rerun an</span> +<span class="sd"> interrupted training or reuse the fine-tuned model.</span> +<span class="sd"> model_init (`Callable[[], PreTrainedModel]`, *optional*):</span> +<span class="sd"> A function that instantiates the model to be used. If provided, each call to [`~Trainer.train`] will start</span> +<span class="sd"> from a new instance of the model as given by this function.</span> +<span class="sd"> The function may have zero argument, or a single one containing the optuna/Ray Tune/SigOpt trial object, to</span> +<span class="sd"> be able to choose different architectures according to hyper parameters (such as layer count, sizes of</span> +<span class="sd"> inner layers, dropout probabilities etc).</span> +<span class="sd"> compute_metrics (`Callable[[EvalPrediction], Dict]`, *optional*):</span> +<span class="sd"> The function that will be used to compute metrics at evaluation. Must take a [`EvalPrediction`] and return</span> +<span class="sd"> a dictionary string to metric values.</span> +<span class="sd"> callbacks (List of [`TrainerCallback`], *optional*):</span> +<span class="sd"> A list of callbacks to customize the training loop. Will add those to the list of default callbacks</span> +<span class="sd"> detailed in [here](callback).</span> +<span class="sd"> If you want to remove one of the default callbacks used, use the [`Trainer.remove_callback`] method.</span> +<span class="sd"> optimizers (`Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR]`, *optional*): A tuple</span> +<span class="sd"> containing the optimizer and the scheduler to use. Will default to an instance of [`AdamW`] on your model</span> +<span class="sd"> and a scheduler given by [`get_linear_schedule_with_warmup`] controlled by `args`.</span> +<span class="sd"> preprocess_logits_for_metrics (`Callable[[torch.Tensor, torch.Tensor], torch.Tensor]`, *optional*):</span> +<span class="sd"> A function that preprocess the logits right before caching them at each evaluation step. Must take two</span> +<span class="sd"> tensors, the logits and the labels, and return the logits once processed as desired. The modifications made</span> +<span class="sd"> by this function will be reflected in the predictions received by `compute_metrics`.</span> +<span class="sd"> Note that the labels (second parameter) will be `None` if the dataset does not have them.</span> +<span class="sd"> Important attributes:</span> +<span class="sd"> - **model** -- Always points to the core model. If using a transformers model, it will be a [`PreTrainedModel`]</span> +<span class="sd"> subclass.</span> +<span class="sd"> - **model_wrapped** -- Always points to the most external model in case one or more other modules wrap the</span> +<span class="sd"> original model. This is the model that should be used for the forward pass. For example, under `DeepSpeed`,</span> +<span class="sd"> the inner model is wrapped in `DeepSpeed` and then again in `torch.nn.DistributedDataParallel`. If the inner</span> +<span class="sd"> model hasn&#39;t been wrapped, then `self.model_wrapped` is the same as `self.model`.</span> +<span class="sd"> - **is_model_parallel** -- Whether or not a model has been switched to a model parallel mode (different from</span> +<span class="sd"> data parallelism, this means some of the model layers are split on different GPUs).</span> +<span class="sd"> - **place_model_on_device** -- Whether or not to automatically place the model on the device - it will be set</span> +<span class="sd"> to `False` if model parallel or deepspeed is used, or if the default</span> +<span class="sd"> `TrainingArguments.place_model_on_device` is overridden to return `False` .</span> +<span class="sd"> - **is_in_train** -- Whether or not a model is currently running `train` (e.g. when `evaluate` is called while</span> +<span class="sd"> in `train`)</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="kn">from</span><span class="w"> </span><span class="nn">transformers.trainer_pt_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">_get_learning_rate</span><span class="p">,</span> <span class="n">log_metrics</span><span class="p">,</span> <span class="n">metrics_format</span><span class="p">,</span> <span class="n">save_metrics</span><span class="p">,</span> <span class="n">save_state</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">PreTrainedModel</span><span class="p">,</span> <span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">args</span><span class="p">:</span> <span class="n">TrainingArguments</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">data_collator</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">DataCollator</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">train_dataset</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">eval_dataset</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">Dataset</span><span class="p">,</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Dataset</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">PreTrainedTokenizerBase</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">model_init</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Callable</span><span class="p">[[],</span> <span class="n">PreTrainedModel</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">compute_metrics</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Callable</span><span class="p">[[</span><span class="n">EvalPrediction</span><span class="p">],</span> <span class="n">Dict</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">callbacks</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">TrainerCallback</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">optimizers</span><span class="p">:</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Optimizer</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">lr_scheduler</span><span class="o">.</span><span class="n">LambdaLR</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">),</span> + <span class="n">preprocess_logits_for_metrics</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Callable</span><span class="p">[[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">],</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="p">):</span> + <span class="c1">############</span> +<div class="viewcode-block" id="RaftTrainer.save_counter"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.save_counter">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">save_counter</span> <span class="o">=</span> <span class="mi">0</span></div> + + <span class="c1">##############</span> + <span class="k">if</span> <span class="n">args</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">output_dir</span> <span class="o">=</span> <span class="s2">&quot;tmp_trainer&quot;</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No `TrainingArguments` passed, using `output_dir=</span><span class="si">{</span><span class="n">output_dir</span><span class="si">}</span><span class="s2">`.&quot;</span><span class="p">)</span> + <span class="n">args</span> <span class="o">=</span> <span class="n">TrainingArguments</span><span class="p">(</span><span class="n">output_dir</span><span class="o">=</span><span class="n">output_dir</span><span class="p">)</span> +<div class="viewcode-block" id="RaftTrainer.args"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="o">=</span> <span class="n">args</span></div> + + <span class="c1"># Seed must be set before instantiating the model when using model</span> + <span class="n">enable_full_determinism</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">seed</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">full_determinism</span> <span class="k">else</span> <span class="n">set_seed</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">seed</span><span class="p">)</span> +<div class="viewcode-block" id="RaftTrainer.hp_name"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.hp_name">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">hp_name</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="RaftTrainer.deepspeed"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.deepspeed">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="RaftTrainer.is_in_train"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_in_train">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">is_in_train</span> <span class="o">=</span> <span class="kc">False</span></div> + + + <span class="c1"># memory metrics - must set up as early as possible</span> +<div class="viewcode-block" id="RaftTrainer._memory_tracker"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._memory_tracker">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">_memory_tracker</span> <span class="o">=</span> <span class="n">TrainerMemoryTracker</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">skip_memory_metrics</span><span class="p">)</span></div> + + <span class="bp">self</span><span class="o">.</span><span class="n">_memory_tracker</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> + + <span class="c1"># set the correct log level depending on the node</span> + <span class="n">log_level</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">get_process_log_level</span><span class="p">()</span> + <span class="n">logging</span><span class="o">.</span><span class="n">set_verbosity</span><span class="p">(</span><span class="n">log_level</span><span class="p">)</span> + + <span class="c1"># force device and distributed setup init explicitly</span> + <span class="n">args</span><span class="o">.</span><span class="n">_setup_devices</span> + + <span class="k">if</span> <span class="n">model</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="n">model_init</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_init</span> <span class="o">=</span> <span class="n">model_init</span> + <span class="n">model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">call_model_init</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;`Trainer` requires either a `model` or `model_init` argument&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">model_init</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span> + <span class="s2">&quot;`Trainer` requires either a `model` or `model_init` argument, but not both. `model_init` will&quot;</span> + <span class="s2">&quot; overwrite your model when calling the `train` method. This will become a fatal error in the next&quot;</span> + <span class="s2">&quot; release.&quot;</span><span class="p">,</span> + <span class="ne">FutureWarning</span><span class="p">,</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_init</span> <span class="o">=</span> <span class="n">model_init</span> + + <span class="k">if</span> <span class="n">model</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> <span class="ow">in</span> <span class="n">MODEL_MAPPING_NAMES</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;The model you have picked (</span><span class="si">{</span><span class="n">model</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">) cannot be used as is for training: it only &quot;</span> + <span class="s2">&quot;computes hidden states and does not accept any labels. You should choose a model with a head &quot;</span> + <span class="s2">&quot;suitable for your task like any of the `AutoModelForXxx` listed at &quot;</span> + <span class="s2">&quot;https://huggingface.co/docs/transformers/model_doc/auto.&quot;</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="s2">&quot;is_parallelizable&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">model</span><span class="o">.</span><span class="n">is_parallelizable</span> <span class="ow">and</span> <span class="n">model</span><span class="o">.</span><span class="n">model_parallel</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">is_model_parallel</span> <span class="o">=</span> <span class="kc">True</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">is_model_parallel</span> <span class="o">=</span> <span class="kc">False</span> + + <span class="c1"># At this stage the model is already loaded</span> + <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="s2">&quot;is_loaded_in_8bit&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> + <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="s2">&quot;_is_int8_training_enabled&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span> + <span class="s2">&quot;The model is loaded in 8-bit precision. To train this model you need to add additional modules&quot;</span> + <span class="s2">&quot; inside the model such as adapters using `peft` library and freeze the model weights. Please&quot;</span> + <span class="s2">&quot; check &quot;</span> + <span class="s2">&quot; the examples in https://github.com/huggingface/peft for more details.&quot;</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;The model you want to train is loaded in 8-bit precision. if you want to fine-tune an 8-bit&quot;</span> + <span class="s2">&quot; model, please make sure that you have installed `bitsandbytes&gt;=0.37.0`. &quot;</span> + <span class="p">)</span> + + <span class="c1"># Setup Sharded DDP training</span> +<div class="viewcode-block" id="RaftTrainer.sharded_ddp"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.sharded_ddp">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="o">=</span> <span class="kc">None</span></div> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">sharded_ddp</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Using --sharded_ddp xxx together with --deepspeed is not possible, deactivate one of those flags.&quot;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Using --sharded_ddp xxx together with --fsdp is not possible, deactivate one of those flags.&quot;</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Using sharded DDP only works in distributed training.&quot;</span><span class="p">)</span> + <span class="k">elif</span> <span class="ow">not</span> <span class="n">is_fairscale_available</span><span class="p">():</span> + <span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="s2">&quot;Sharded DDP training requires fairscale: `pip install fairscale`.&quot;</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">SIMPLE</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="ow">and</span> <span class="n">FullyShardedDDP</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span> + <span class="s2">&quot;Sharded DDP in a mode other than simple training requires fairscale version &gt;= 0.3, found &quot;</span> + <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">fairscale</span><span class="o">.</span><span class="n">__version__</span><span class="si">}</span><span class="s2">. Upgrade your fairscale library: `pip install --upgrade fairscale`.&quot;</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">SIMPLE</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">sharded_ddp</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="o">=</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">SIMPLE</span> + <span class="k">elif</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">ZERO_DP_2</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">sharded_ddp</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="o">=</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">ZERO_DP_2</span> + <span class="k">elif</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">ZERO_DP_3</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">sharded_ddp</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="o">=</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">ZERO_DP_3</span> + +<div class="viewcode-block" id="RaftTrainer.fsdp"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.fsdp">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">fsdp</span> <span class="o">=</span> <span class="kc">None</span></div> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Using --fsdp xxx together with --deepspeed is not possible, deactivate one of those flags.&quot;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">args</span><span class="o">.</span><span class="n">fsdp_config</span><span class="p">[</span><span class="s2">&quot;xla&quot;</span><span class="p">]</span> <span class="ow">and</span> <span class="n">args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Using fsdp only works in distributed training.&quot;</span><span class="p">)</span> + + <span class="c1"># dep_version_check(&quot;torch&gt;=1.12.0&quot;)</span> + <span class="c1"># Would have to update setup.py with torch&gt;=1.12.0</span> + <span class="c1"># which isn&#39;t ideally given that it will force people not using FSDP to also use torch&gt;=1.12.0</span> + <span class="c1"># below is the current alternative.</span> + <span class="k">if</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">__version__</span><span class="p">)</span><span class="o">.</span><span class="n">base_version</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s2">&quot;1.12.0&quot;</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;FSDP requires PyTorch &gt;= 1.12.0&quot;</span><span class="p">)</span> + + <span class="kn">from</span><span class="w"> </span><span class="nn">torch.distributed.fsdp.fully_sharded_data_parallel</span><span class="w"> </span><span class="kn">import</span> <span class="n">BackwardPrefetch</span><span class="p">,</span> <span class="n">ShardingStrategy</span> + + <span class="k">if</span> <span class="n">FSDPOption</span><span class="o">.</span><span class="n">FULL_SHARD</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">fsdp</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">fsdp</span> <span class="o">=</span> <span class="n">ShardingStrategy</span><span class="o">.</span><span class="n">FULL_SHARD</span> + <span class="k">elif</span> <span class="n">FSDPOption</span><span class="o">.</span><span class="n">SHARD_GRAD_OP</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">fsdp</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">fsdp</span> <span class="o">=</span> <span class="n">ShardingStrategy</span><span class="o">.</span><span class="n">SHARD_GRAD_OP</span> + <span class="k">elif</span> <span class="n">FSDPOption</span><span class="o">.</span><span class="n">NO_SHARD</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">fsdp</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">fsdp</span> <span class="o">=</span> <span class="n">ShardingStrategy</span><span class="o">.</span><span class="n">NO_SHARD</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">backward_prefetch</span> <span class="o">=</span> <span class="n">BackwardPrefetch</span><span class="o">.</span><span class="n">BACKWARD_PRE</span> + <span class="k">if</span> <span class="s2">&quot;backward_prefetch&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp_config</span> <span class="ow">and</span> <span class="s2">&quot;backward_pos&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">backward_prefetch</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">backward_prefetch</span> <span class="o">=</span> <span class="n">BackwardPrefetch</span><span class="o">.</span><span class="n">BACKWARD_POST</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">forword_prefetch</span> <span class="o">=</span> <span class="kc">False</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp_config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;forword_prefect&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">forword_prefetch</span> <span class="o">=</span> <span class="kc">True</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">limit_all_gathers</span> <span class="o">=</span> <span class="kc">False</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp_config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;limit_all_gathers&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">limit_all_gathers</span> <span class="o">=</span> <span class="kc">True</span> + + <span class="c1"># one place to sort out whether to place the model on device or not</span> + <span class="c1"># postpone switching model to cuda when:</span> + <span class="c1"># 1. MP - since we are trying to fit a much bigger than 1 gpu model</span> + <span class="c1"># 2. fp16-enabled DeepSpeed loads the model in half the size and it doesn&#39;t need .to() anyway,</span> + <span class="c1"># and we only use deepspeed for training at the moment</span> + <span class="c1"># 3. full bf16 or fp16 eval - since the model needs to be cast to the right dtype first</span> + <span class="c1"># 4. Sharded DDP - same as MP</span> + <span class="c1"># 5. FSDP - same as MP</span> +<div class="viewcode-block" id="RaftTrainer.place_model_on_device"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.place_model_on_device">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">place_model_on_device</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">place_model_on_device</span></div> + + <span class="k">if</span> <span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">is_model_parallel</span> + <span class="ow">or</span> <span class="n">args</span><span class="o">.</span><span class="n">deepspeed</span> + <span class="ow">or</span> <span class="p">((</span><span class="n">args</span><span class="o">.</span><span class="n">fp16_full_eval</span> <span class="ow">or</span> <span class="n">args</span><span class="o">.</span><span class="n">bf16_full_eval</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">args</span><span class="o">.</span><span class="n">do_train</span><span class="p">)</span> + <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="ow">in</span> <span class="p">[</span><span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">ZERO_DP_2</span><span class="p">,</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">ZERO_DP_3</span><span class="p">])</span> + <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fsdp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> + <span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">place_model_on_device</span> <span class="o">=</span> <span class="kc">False</span> + + <span class="n">default_collator</span> <span class="o">=</span> <span class="n">default_data_collator</span> <span class="k">if</span> <span class="n">tokenizer</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">DataCollatorWithPadding</span><span class="p">(</span><span class="n">tokenizer</span><span class="p">)</span> +<div class="viewcode-block" id="RaftTrainer.data_collator"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.data_collator">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">data_collator</span> <span class="o">=</span> <span class="n">data_collator</span> <span class="k">if</span> <span class="n">data_collator</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">default_collator</span></div> + +<div class="viewcode-block" id="RaftTrainer.train_dataset"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.train_dataset">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span> <span class="o">=</span> <span class="n">train_dataset</span></div> + +<div class="viewcode-block" id="RaftTrainer.eval_dataset"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.eval_dataset">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">eval_dataset</span> <span class="o">=</span> <span class="n">eval_dataset</span></div> + +<div class="viewcode-block" id="RaftTrainer.tokenizer"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.tokenizer">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span> <span class="o">=</span> <span class="n">tokenizer</span></div> + + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">place_model_on_device</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="s2">&quot;is_loaded_in_8bit&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_move_model_to_device</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + + <span class="c1"># Force n_gpu to 1 to avoid DataParallel as MP will manage the GPUs</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_model_parallel</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">_n_gpu</span> <span class="o">=</span> <span class="mi">1</span> + + <span class="c1"># later use `self.model is self.model_wrapped` to check if it&#39;s wrapped or not</span> +<div class="viewcode-block" id="RaftTrainer.model_wrapped"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.model_wrapped">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span> <span class="o">=</span> <span class="n">model</span></div> + +<div class="viewcode-block" id="RaftTrainer.model"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.model">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">model</span></div> + + +<div class="viewcode-block" id="RaftTrainer.compute_metrics"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_metrics">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">compute_metrics</span> <span class="o">=</span> <span class="n">compute_metrics</span></div> + +<div class="viewcode-block" id="RaftTrainer.preprocess_logits_for_metrics"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.preprocess_logits_for_metrics">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">preprocess_logits_for_metrics</span> <span class="o">=</span> <span class="n">preprocess_logits_for_metrics</span></div> + + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span> <span class="o">=</span> <span class="n">optimizers</span> + <span class="k">if</span> <span class="n">model_init</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> + <span class="s2">&quot;Passing a `model_init` is incompatible with providing the `optimizers` argument. &quot;</span> + <span class="s2">&quot;You should subclass `Trainer` and override the `create_optimizer_and_scheduler` method.&quot;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">parameters</span><span class="p">():</span> + <span class="n">model_device</span> <span class="o">=</span> <span class="n">param</span><span class="o">.</span><span class="n">device</span> + <span class="k">break</span> + <span class="k">for</span> <span class="n">param_group</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">param_groups</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">param_group</span><span class="p">[</span><span class="s2">&quot;params&quot;</span><span class="p">])</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">optimizer_device</span> <span class="o">=</span> <span class="n">param_group</span><span class="p">[</span><span class="s2">&quot;params&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">device</span> + <span class="k">break</span> + <span class="k">if</span> <span class="n">model_device</span> <span class="o">!=</span> <span class="n">optimizer_device</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;The model and the optimizer parameters are not on the same device, which probably means you&quot;</span> + <span class="s2">&quot; created an optimizer around your model **before** putting on the device and passing it to the&quot;</span> + <span class="s2">&quot; `Trainer`. Make sure the lines `import torch_xla.core.xla_model as xm` and&quot;</span> + <span class="s2">&quot; `model.to(xm.xla_device())` is performed before the optimizer creation in your script.&quot;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="n">args</span><span class="o">.</span><span class="n">deepspeed</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fsdp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">))</span> <span class="ow">and</span> <span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> + <span class="p">):</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> + <span class="s2">&quot;Passing `optimizers` is not allowed if Fairscale, Deepspeed or PyTorch FSDP is enabled.&quot;</span> + <span class="s2">&quot;You should subclass `Trainer` and override the `create_optimizer_and_scheduler` method.&quot;</span> + <span class="p">)</span> + <span class="n">default_callbacks</span> <span class="o">=</span> <span class="n">DEFAULT_CALLBACKS</span> <span class="o">+</span> <span class="n">get_reporting_integration_callbacks</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">report_to</span><span class="p">)</span> + <span class="n">callbacks</span> <span class="o">=</span> <span class="n">default_callbacks</span> <span class="k">if</span> <span class="n">callbacks</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">default_callbacks</span> <span class="o">+</span> <span class="n">callbacks</span> +<div class="viewcode-block" id="RaftTrainer.callback_handler"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.callback_handler">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span> <span class="o">=</span> <span class="n">CallbackHandler</span><span class="p">(</span> + <span class="n">callbacks</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span> + <span class="p">)</span></div> + + <span class="bp">self</span><span class="o">.</span><span class="n">add_callback</span><span class="p">(</span><span class="n">PrinterCallback</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">disable_tqdm</span> <span class="k">else</span> <span class="n">DEFAULT_PROGRESS_CALLBACK</span><span class="p">)</span> + + <span class="c1"># Will be set to True by `self._setup_loggers()` on first call to `self.log()`.</span> +<div class="viewcode-block" id="RaftTrainer._loggers_initialized"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._loggers_initialized">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">_loggers_initialized</span> <span class="o">=</span> <span class="kc">False</span></div> + + + <span class="c1"># Create clone of distant repo and output directory if needed</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">push_to_hub</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">init_git_repo</span><span class="p">(</span><span class="n">at_init</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="c1"># In case of pull, we need to make sure every process has the latest.</span> + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="n">xm</span><span class="o">.</span><span class="n">rendezvous</span><span class="p">(</span><span class="s2">&quot;init git repo&quot;</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="n">dist</span><span class="o">.</span><span class="n">barrier</span><span class="p">()</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="nb">callable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data_collator</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">callable</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data_collator</span><span class="p">,</span> <span class="s2">&quot;collate_batch&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;The `data_collator` should be a simple callable (function, class with `__call__`).&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;max_steps is given, it will override any value given in num_train_epochs&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">train_dataset</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">has_length</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">)</span> <span class="ow">and</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;train_dataset does not implement __len__, max_steps has to be specified&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="p">(</span> + <span class="n">train_dataset</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> + <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">IterableDataset</span><span class="p">)</span> + <span class="ow">and</span> <span class="n">args</span><span class="o">.</span><span class="n">group_by_length</span> + <span class="p">):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;the `--group_by_length` option is only available for `Dataset`, not `IterableDataset&quot;</span><span class="p">)</span> + +<div class="viewcode-block" id="RaftTrainer._signature_columns"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._signature_columns">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">_signature_columns</span> <span class="o">=</span> <span class="kc">None</span></div> + + + <span class="c1"># Mixed precision setup</span> +<div class="viewcode-block" id="RaftTrainer.use_apex"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_apex">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">use_apex</span> <span class="o">=</span> <span class="kc">False</span></div> + +<div class="viewcode-block" id="RaftTrainer.use_cuda_amp"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_cuda_amp">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">use_cuda_amp</span> <span class="o">=</span> <span class="kc">False</span></div> + +<div class="viewcode-block" id="RaftTrainer.use_cpu_amp"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_cpu_amp">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">use_cpu_amp</span> <span class="o">=</span> <span class="kc">False</span></div> + + + <span class="c1"># Mixed precision setup for SageMaker Model Parallel</span> + <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="c1"># BF16 + model parallelism in SageMaker: currently not supported, raise an error</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">bf16</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;SageMaker Model Parallelism does not support BF16 yet. Please use FP16 instead &quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">IS_SAGEMAKER_MP_POST_1_10</span><span class="p">:</span> + <span class="c1"># When there&#39;s mismatch between SMP config and trainer argument, use SMP config as truth</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">fp16</span> <span class="o">!=</span> <span class="n">smp</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">fp16</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;FP16 provided in SM_HP_MP_PARAMETERS is </span><span class="si">{</span><span class="n">smp</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">fp16</span><span class="si">}</span><span class="s2">,&quot;</span> + <span class="sa">f</span><span class="s2">&quot;but FP16 provided in trainer argument is </span><span class="si">{</span><span class="n">args</span><span class="o">.</span><span class="n">fp16</span><span class="si">}</span><span class="s2">,&quot;</span> + <span class="sa">f</span><span class="s2">&quot;setting to </span><span class="si">{</span><span class="n">smp</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">fp16</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="n">args</span><span class="o">.</span><span class="n">fp16</span> <span class="o">=</span> <span class="n">smp</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">fp16</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># smp &lt; 1.10 does not support fp16 in trainer.</span> + <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">smp</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">cfg</span><span class="p">,</span> <span class="s2">&quot;fp16&quot;</span><span class="p">):</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;FP16 provided in SM_HP_MP_PARAMETERS is </span><span class="si">{</span><span class="n">smp</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">fp16</span><span class="si">}</span><span class="s2">, &quot;</span> + <span class="s2">&quot;but SageMaker Model Parallelism &lt; 1.10 does not support FP16 in trainer.&quot;</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">fp16</span> <span class="ow">or</span> <span class="n">args</span><span class="o">.</span><span class="n">bf16</span><span class="p">:</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">half_precision_backend</span> <span class="o">==</span> <span class="s2">&quot;auto&quot;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">device</span> <span class="o">==</span> <span class="n">torch</span><span class="o">.</span><span class="n">device</span><span class="p">(</span><span class="s2">&quot;cpu&quot;</span><span class="p">):</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">fp16</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Tried to use `fp16` but it is not supported on cpu&quot;</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">_is_native_cpu_amp_available</span><span class="p">:</span> + <span class="n">args</span><span class="o">.</span><span class="n">half_precision_backend</span> <span class="o">=</span> <span class="s2">&quot;cpu_amp&quot;</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Tried to use cpu amp but native cpu amp is not available&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">args</span><span class="o">.</span><span class="n">half_precision_backend</span> <span class="o">=</span> <span class="s2">&quot;cuda_amp&quot;</span> + + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Using </span><span class="si">{</span><span class="n">args</span><span class="o">.</span><span class="n">half_precision_backend</span><span class="si">}</span><span class="s2"> half precision backend&quot;</span><span class="p">)</span> + +<div class="viewcode-block" id="RaftTrainer.do_grad_scaling"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.do_grad_scaling">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">do_grad_scaling</span> <span class="o">=</span> <span class="kc">False</span></div> + + <span class="k">if</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">fp16</span> <span class="ow">or</span> <span class="n">args</span><span class="o">.</span><span class="n">bf16</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">deepspeed</span> <span class="ow">or</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">()</span> <span class="ow">or</span> <span class="n">is_torch_tpu_available</span><span class="p">()):</span> + <span class="c1"># deepspeed and SageMaker Model Parallel manage their own half precision</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">half_precision_backend</span> <span class="o">==</span> <span class="s2">&quot;cuda_amp&quot;</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">use_cuda_amp</span> <span class="o">=</span> <span class="kc">True</span> + <span class="bp">self</span><span class="o">.</span><span class="n">amp_dtype</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">float16</span> <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">fp16</span> <span class="k">else</span> <span class="n">torch</span><span class="o">.</span><span class="n">bfloat16</span> + <span class="c1"># bf16 does not need grad scaling</span> + <span class="bp">self</span><span class="o">.</span><span class="n">do_grad_scaling</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">amp_dtype</span> <span class="o">==</span> <span class="n">torch</span><span class="o">.</span><span class="n">float16</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_grad_scaling</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">scaler</span> <span class="o">=</span> <span class="n">ShardedGradScaler</span><span class="p">()</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">fsdp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">torch.distributed.fsdp.sharded_grad_scaler</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">ShardedGradScaler</span> <span class="k">as</span> <span class="n">FSDPShardedGradScaler</span><span class="p">,</span> + <span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">scaler</span> <span class="o">=</span> <span class="n">FSDPShardedGradScaler</span><span class="p">()</span> + <span class="k">elif</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">torch_xla.amp</span><span class="w"> </span><span class="kn">import</span> <span class="n">GradScaler</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">scaler</span> <span class="o">=</span> <span class="n">GradScaler</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">scaler</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">amp</span><span class="o">.</span><span class="n">GradScaler</span><span class="p">()</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">half_precision_backend</span> <span class="o">==</span> <span class="s2">&quot;cpu_amp&quot;</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">use_cpu_amp</span> <span class="o">=</span> <span class="kc">True</span> + <span class="bp">self</span><span class="o">.</span><span class="n">amp_dtype</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">bfloat16</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_apex_available</span><span class="p">():</span> + <span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span> + <span class="s2">&quot;Using FP16 with APEX but APEX is not installed, please refer to&quot;</span> + <span class="s2">&quot; https://www.github.com/nvidia/apex.&quot;</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">use_apex</span> <span class="o">=</span> <span class="kc">True</span> + + <span class="c1"># FP16 + model parallelism in SageMaker: gradient clipping does not work for now so we raise a helpful error.</span> + <span class="k">if</span> <span class="p">(</span> + <span class="n">is_sagemaker_mp_enabled</span><span class="p">()</span> + <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_cuda_amp</span> + <span class="ow">and</span> <span class="n">args</span><span class="o">.</span><span class="n">max_grad_norm</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> + <span class="ow">and</span> <span class="n">args</span><span class="o">.</span><span class="n">max_grad_norm</span> <span class="o">&gt;</span> <span class="mi">0</span> + <span class="p">):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;SageMaker Model Parallelism in mixed precision mode does not support gradient clipping yet. Pass &quot;</span> + <span class="s2">&quot;along &#39;max_grad_norm&#39;: 0 in your hyperparameters.&quot;</span> + <span class="p">)</span> + + <span class="c1"># Label smoothing</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">label_smoothing_factor</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">label_smoother</span> <span class="o">=</span> <span class="n">LabelSmoother</span><span class="p">(</span><span class="n">epsilon</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">label_smoothing_factor</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">label_smoother</span> <span class="o">=</span> <span class="kc">None</span> + +<div class="viewcode-block" id="RaftTrainer.state"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.state">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="n">TrainerState</span><span class="p">(</span> + <span class="n">is_local_process_zero</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">is_local_process_zero</span><span class="p">(),</span> + <span class="n">is_world_process_zero</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">is_world_process_zero</span><span class="p">(),</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer.control"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.control">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="n">TrainerControl</span><span class="p">()</span></div> + + <span class="c1"># Internal variable to count flos in each process, will be accumulated in `self.state.total_flos` then</span> + <span class="c1"># returned to 0 every time flos need to be logged</span> +<div class="viewcode-block" id="RaftTrainer.current_flos"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.current_flos">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">current_flos</span> <span class="o">=</span> <span class="mi">0</span></div> + +<div class="viewcode-block" id="RaftTrainer.hp_search_backend"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.hp_search_backend">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="RaftTrainer.use_tune_checkpoints"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_tune_checkpoints">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">use_tune_checkpoints</span> <span class="o">=</span> <span class="kc">False</span></div> + + <span class="n">default_label_names</span> <span class="o">=</span> <span class="n">find_labels</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> +<div class="viewcode-block" id="RaftTrainer.label_names"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.label_names">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">label_names</span> <span class="o">=</span> <span class="n">default_label_names</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">label_names</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">label_names</span></div> + +<div class="viewcode-block" id="RaftTrainer.can_return_loss"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.can_return_loss">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">can_return_loss</span> <span class="o">=</span> <span class="n">can_return_loss</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span></div> + + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_init_end</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">)</span> + + <span class="c1"># Internal variables to keep track of the original batch size</span> +<div class="viewcode-block" id="RaftTrainer._train_batch_size"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._train_batch_size">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">_train_batch_size</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">train_batch_size</span></div> + + + <span class="c1"># very last</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_memory_tracker</span><span class="o">.</span><span class="n">stop_and_update_metrics</span><span class="p">()</span> + + <span class="c1"># torch.compile</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">torch_compile</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">is_torch_compile_available</span><span class="p">():</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Using torch.compile requires PyTorch 2.0 or higher.&quot;</span><span class="p">)</span> + +<div class="viewcode-block" id="RaftTrainer.add_callback"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.add_callback">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">add_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Add a callback to the current list of [`~transformer.TrainerCallback`].</span> +<span class="sd"> Args:</span> +<span class="sd"> callback (`type` or [`~transformer.TrainerCallback`]):</span> +<span class="sd"> A [`~transformer.TrainerCallback`] class or an instance of a [`~transformer.TrainerCallback`]. In the</span> +<span class="sd"> first case, will instantiate a member of that class.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">add_callback</span><span class="p">(</span><span class="n">callback</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer.pop_callback"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.pop_callback">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">pop_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Remove a callback from the current list of [`~transformer.TrainerCallback`] and returns it.</span> +<span class="sd"> If the callback is not found, returns `None` (and no error is raised).</span> +<span class="sd"> Args:</span> +<span class="sd"> callback (`type` or [`~transformer.TrainerCallback`]):</span> +<span class="sd"> A [`~transformer.TrainerCallback`] class or an instance of a [`~transformer.TrainerCallback`]. In the</span> +<span class="sd"> first case, will pop the first member of that class found in the list of callbacks.</span> +<span class="sd"> Returns:</span> +<span class="sd"> [`~transformer.TrainerCallback`]: The callback removed, if found.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">pop_callback</span><span class="p">(</span><span class="n">callback</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer.remove_callback"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.remove_callback">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">remove_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Remove a callback from the current list of [`~transformer.TrainerCallback`].</span> +<span class="sd"> Args:</span> +<span class="sd"> callback (`type` or [`~transformer.TrainerCallback`]):</span> +<span class="sd"> A [`~transformer.TrainerCallback`] class or an instance of a [`~transformer.TrainerCallback`]. In the</span> +<span class="sd"> first case, will remove the first member of that class found in the list of callbacks.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">remove_callback</span><span class="p">(</span><span class="n">callback</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._move_model_to_device"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._move_model_to_device">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_move_model_to_device</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">device</span><span class="p">):</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="p">)</span> + <span class="c1"># Moving a model to an XLA device disconnects the tied weights, so we have to retie them.</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">parallel_mode</span> <span class="o">==</span> <span class="n">ParallelMode</span><span class="o">.</span><span class="n">TPU</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="s2">&quot;tie_weights&quot;</span><span class="p">):</span> + <span class="n">model</span><span class="o">.</span><span class="n">tie_weights</span><span class="p">()</span></div> + + +<div class="viewcode-block" id="RaftTrainer._set_signature_columns_if_needed"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._set_signature_columns_if_needed">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_set_signature_columns_if_needed</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_signature_columns</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="c1"># Inspect model forward signature to keep only the arguments it accepts.</span> + <span class="n">signature</span> <span class="o">=</span> <span class="n">inspect</span><span class="o">.</span><span class="n">signature</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">forward</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_signature_columns</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">signature</span><span class="o">.</span><span class="n">parameters</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span> + <span class="c1"># Labels may be named label or label_ids, the default data collator handles that.</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_signature_columns</span> <span class="o">+=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="s2">&quot;label&quot;</span><span class="p">,</span> <span class="s2">&quot;label_ids&quot;</span><span class="p">]</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">label_names</span><span class="p">))</span></div> + + +<div class="viewcode-block" id="RaftTrainer._remove_unused_columns"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._remove_unused_columns">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_remove_unused_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dataset</span><span class="p">:</span> <span class="s2">&quot;datasets.Dataset&quot;</span><span class="p">,</span> <span class="n">description</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">remove_unused_columns</span><span class="p">:</span> + <span class="k">return</span> <span class="n">dataset</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_set_signature_columns_if_needed</span><span class="p">()</span> + <span class="n">signature_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_signature_columns</span> + + <span class="n">ignored_columns</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">dataset</span><span class="o">.</span><span class="n">column_names</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">signature_columns</span><span class="p">))</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ignored_columns</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">dset_description</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> <span class="k">if</span> <span class="n">description</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">&quot;in the </span><span class="si">{</span><span class="n">description</span><span class="si">}</span><span class="s2"> set&quot;</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;The following columns </span><span class="si">{</span><span class="n">dset_description</span><span class="si">}</span><span class="s2"> don&#39;t have a corresponding argument in &quot;</span> + <span class="sa">f</span><span class="s2">&quot;`</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">.forward` and have been ignored: </span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">ignored_columns</span><span class="p">)</span><span class="si">}</span><span class="s2">.&quot;</span> + <span class="sa">f</span><span class="s2">&quot; If </span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">ignored_columns</span><span class="p">)</span><span class="si">}</span><span class="s2"> are not expected by `</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">.forward`, &quot;</span> + <span class="s2">&quot; you can safely ignore this message.&quot;</span> + <span class="p">)</span> + + <span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">k</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">signature_columns</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">dataset</span><span class="o">.</span><span class="n">column_names</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">datasets</span><span class="o">.</span><span class="n">__version__</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s2">&quot;1.4.0&quot;</span><span class="p">):</span> + <span class="n">dataset</span><span class="o">.</span><span class="n">set_format</span><span class="p">(</span> + <span class="nb">type</span><span class="o">=</span><span class="n">dataset</span><span class="o">.</span><span class="n">format</span><span class="p">[</span><span class="s2">&quot;type&quot;</span><span class="p">],</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">,</span> <span class="n">format_kwargs</span><span class="o">=</span><span class="n">dataset</span><span class="o">.</span><span class="n">format</span><span class="p">[</span><span class="s2">&quot;format_kwargs&quot;</span><span class="p">]</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">dataset</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">return</span> <span class="n">dataset</span><span class="o">.</span><span class="n">remove_columns</span><span class="p">(</span><span class="n">ignored_columns</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._get_collator_with_removed_columns"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_collator_with_removed_columns">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_get_collator_with_removed_columns</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> <span class="n">data_collator</span><span class="p">:</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">description</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Callable</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Wrap the data collator in a callable removing unused columns.&quot;&quot;&quot;</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">remove_unused_columns</span><span class="p">:</span> + <span class="k">return</span> <span class="n">data_collator</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_set_signature_columns_if_needed</span><span class="p">()</span> + <span class="n">signature_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_signature_columns</span> + + <span class="n">remove_columns_collator</span> <span class="o">=</span> <span class="n">RemoveColumnsCollator</span><span class="p">(</span> + <span class="n">data_collator</span><span class="o">=</span><span class="n">data_collator</span><span class="p">,</span> + <span class="n">signature_columns</span><span class="o">=</span><span class="n">signature_columns</span><span class="p">,</span> + <span class="n">logger</span><span class="o">=</span><span class="n">logger</span><span class="p">,</span> + <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> + <span class="n">model_name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">remove_columns_collator</span></div> + + +<div class="viewcode-block" id="RaftTrainer._get_train_sampler"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_train_sampler">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_get_train_sampler</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">Sampler</span><span class="p">]:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">has_length</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span><span class="p">):</span> + <span class="k">return</span> <span class="kc">None</span> + + <span class="n">generator</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">generator</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">Generator</span><span class="p">()</span> + <span class="c1"># for backwards compatibility, we generate a seed here (which is sampled from a generator seeded with</span> + <span class="c1"># `args.seed`) if data_seed isn&#39;t provided.</span> + <span class="c1"># Further on in this method, we default to `args.seed` instead.</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">data_seed</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">seed</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">empty</span><span class="p">((),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">int64</span><span class="p">)</span><span class="o">.</span><span class="n">random_</span><span class="p">()</span><span class="o">.</span><span class="n">item</span><span class="p">())</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">seed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">data_seed</span> + <span class="n">generator</span><span class="o">.</span><span class="n">manual_seed</span><span class="p">(</span><span class="n">seed</span><span class="p">)</span> + + <span class="n">seed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">data_seed</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">data_seed</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">seed</span> + + <span class="c1"># Build the sampler.</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">group_by_length</span><span class="p">:</span> + <span class="k">if</span> <span class="n">is_datasets_available</span><span class="p">()</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span><span class="p">,</span> <span class="n">datasets</span><span class="o">.</span><span class="n">Dataset</span><span class="p">):</span> + <span class="n">lengths</span> <span class="o">=</span> <span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">length_column_name</span><span class="p">]</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">length_column_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span><span class="o">.</span><span class="n">column_names</span> + <span class="k">else</span> <span class="kc">None</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">lengths</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">model_input_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_input_names</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="kc">None</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span> + <span class="k">return</span> <span class="n">LengthGroupedSampler</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">train_batch_size</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span><span class="p">,</span> + <span class="n">dataset</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span><span class="p">,</span> + <span class="n">lengths</span><span class="o">=</span><span class="n">lengths</span><span class="p">,</span> + <span class="n">model_input_name</span><span class="o">=</span><span class="n">model_input_name</span><span class="p">,</span> + <span class="n">generator</span><span class="o">=</span><span class="n">generator</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">return</span> <span class="n">DistributedLengthGroupedSampler</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">train_batch_size</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span><span class="p">,</span> + <span class="n">dataset</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span><span class="p">,</span> + <span class="n">num_replicas</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span><span class="p">,</span> + <span class="n">rank</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">process_index</span><span class="p">,</span> + <span class="n">lengths</span><span class="o">=</span><span class="n">lengths</span><span class="p">,</span> + <span class="n">model_input_name</span><span class="o">=</span><span class="n">model_input_name</span><span class="p">,</span> + <span class="n">seed</span><span class="o">=</span><span class="n">seed</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span> + <span class="k">return</span> <span class="n">RandomSampler</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span><span class="p">,</span> <span class="n">generator</span><span class="o">=</span><span class="n">generator</span><span class="p">)</span> + <span class="k">elif</span> <span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">parallel_mode</span> <span class="ow">in</span> <span class="p">[</span><span class="n">ParallelMode</span><span class="o">.</span><span class="n">TPU</span><span class="p">,</span> <span class="n">ParallelMode</span><span class="o">.</span><span class="n">SAGEMAKER_MODEL_PARALLEL</span><span class="p">]</span> + <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_drop_last</span> + <span class="p">):</span> + <span class="c1"># Use a loop for TPUs when drop_last is False to have all batches have the same size.</span> + <span class="k">return</span> <span class="n">DistributedSamplerWithLoop</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">per_device_train_batch_size</span><span class="p">,</span> + <span class="n">num_replicas</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span><span class="p">,</span> + <span class="n">rank</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">process_index</span><span class="p">,</span> + <span class="n">seed</span><span class="o">=</span><span class="n">seed</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">return</span> <span class="n">DistributedSampler</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span><span class="p">,</span> + <span class="n">num_replicas</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span><span class="p">,</span> + <span class="n">rank</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">process_index</span><span class="p">,</span> + <span class="n">seed</span><span class="o">=</span><span class="n">seed</span><span class="p">,</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer.get_train_dataloader"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_train_dataloader">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_train_dataloader</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">DataLoader</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Returns the training [`~torch.utils.data.DataLoader`].</span> +<span class="sd"> Will use no sampler if `train_dataset` does not implement `__len__`, a random sampler (adapted to distributed</span> +<span class="sd"> training if necessary) otherwise.</span> +<span class="sd"> Subclass and override this method if you want to inject some custom behavior.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Trainer: training requires a train_dataset.&quot;</span><span class="p">)</span> + + <span class="n">train_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">train_dataset</span> + <span class="n">data_collator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_collator</span> + <span class="k">if</span> <span class="n">is_datasets_available</span><span class="p">()</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">,</span> <span class="n">datasets</span><span class="o">.</span><span class="n">Dataset</span><span class="p">):</span> + <span class="n">train_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_remove_unused_columns</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;training&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">data_collator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_collator_with_removed_columns</span><span class="p">(</span><span class="n">data_collator</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;training&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">IterableDataset</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">train_dataset</span> <span class="o">=</span> <span class="n">IterableDatasetShard</span><span class="p">(</span> + <span class="n">train_dataset</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_train_batch_size</span><span class="p">,</span> + <span class="n">drop_last</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_drop_last</span><span class="p">,</span> + <span class="n">num_processes</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span><span class="p">,</span> + <span class="n">process_index</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">process_index</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">DataLoader</span><span class="p">(</span> + <span class="n">train_dataset</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_train_batch_size</span><span class="p">,</span> + <span class="n">collate_fn</span><span class="o">=</span><span class="n">data_collator</span><span class="p">,</span> + <span class="n">num_workers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_num_workers</span><span class="p">,</span> + <span class="n">pin_memory</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_pin_memory</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">train_sampler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_train_sampler</span><span class="p">()</span> + + <span class="k">return</span> <span class="n">DataLoader</span><span class="p">(</span> + <span class="n">train_dataset</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_train_batch_size</span><span class="p">,</span> + <span class="n">sampler</span><span class="o">=</span><span class="n">train_sampler</span><span class="p">,</span> + <span class="n">collate_fn</span><span class="o">=</span><span class="n">data_collator</span><span class="p">,</span> + <span class="n">drop_last</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_drop_last</span><span class="p">,</span> + <span class="n">num_workers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_num_workers</span><span class="p">,</span> + <span class="n">pin_memory</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_pin_memory</span><span class="p">,</span> + <span class="n">worker_init_fn</span><span class="o">=</span><span class="n">seed_worker</span><span class="p">,</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._get_eval_sampler"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_eval_sampler">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_get_eval_sampler</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">eval_dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">Sampler</span><span class="p">]:</span> + <span class="c1"># Deprecated code</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">use_legacy_prediction_loop</span><span class="p">:</span> + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="k">return</span> <span class="n">SequentialDistributedSampler</span><span class="p">(</span> + <span class="n">eval_dataset</span><span class="p">,</span> <span class="n">num_replicas</span><span class="o">=</span><span class="n">xm</span><span class="o">.</span><span class="n">xrt_world_size</span><span class="p">(),</span> <span class="n">rank</span><span class="o">=</span><span class="n">xm</span><span class="o">.</span><span class="n">get_ordinal</span><span class="p">()</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="k">return</span> <span class="n">SequentialDistributedSampler</span><span class="p">(</span> + <span class="n">eval_dataset</span><span class="p">,</span> + <span class="n">num_replicas</span><span class="o">=</span><span class="n">smp</span><span class="o">.</span><span class="n">dp_size</span><span class="p">(),</span> + <span class="n">rank</span><span class="o">=</span><span class="n">smp</span><span class="o">.</span><span class="n">dp_rank</span><span class="p">(),</span> + <span class="n">batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">per_device_eval_batch_size</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="k">return</span> <span class="n">SequentialDistributedSampler</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">return</span> <span class="n">SequentialSampler</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span> + <span class="k">return</span> <span class="n">SequentialSampler</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">return</span> <span class="n">ShardSampler</span><span class="p">(</span> + <span class="n">eval_dataset</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">per_device_eval_batch_size</span><span class="p">,</span> + <span class="n">num_processes</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span><span class="p">,</span> + <span class="n">process_index</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">process_index</span><span class="p">,</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer.get_eval_dataloader"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_eval_dataloader">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_eval_dataloader</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">eval_dataset</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">DataLoader</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Returns the evaluation [`~torch.utils.data.DataLoader`].</span> +<span class="sd"> Subclass and override this method if you want to inject some custom behavior.</span> +<span class="sd"> Args:</span> +<span class="sd"> eval_dataset (`torch.utils.data.Dataset`, *optional*):</span> +<span class="sd"> If provided, will override `self.eval_dataset`. If it is a [`~datasets.Dataset`], columns not accepted</span> +<span class="sd"> by the `model.forward()` method are automatically removed. It must implement `__len__`.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="n">eval_dataset</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">eval_dataset</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Trainer: evaluation requires an eval_dataset.&quot;</span><span class="p">)</span> + <span class="n">eval_dataset</span> <span class="o">=</span> <span class="n">eval_dataset</span> <span class="k">if</span> <span class="n">eval_dataset</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">eval_dataset</span> + <span class="n">data_collator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_collator</span> + + <span class="k">if</span> <span class="n">is_datasets_available</span><span class="p">()</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">,</span> <span class="n">datasets</span><span class="o">.</span><span class="n">Dataset</span><span class="p">):</span> + <span class="n">eval_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_remove_unused_columns</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;evaluation&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">data_collator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_collator_with_removed_columns</span><span class="p">(</span><span class="n">data_collator</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;evaluation&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">IterableDataset</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">eval_dataset</span> <span class="o">=</span> <span class="n">IterableDatasetShard</span><span class="p">(</span> + <span class="n">eval_dataset</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">per_device_eval_batch_size</span><span class="p">,</span> + <span class="n">drop_last</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_drop_last</span><span class="p">,</span> + <span class="n">num_processes</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span><span class="p">,</span> + <span class="n">process_index</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">process_index</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">DataLoader</span><span class="p">(</span> + <span class="n">eval_dataset</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">eval_batch_size</span><span class="p">,</span> + <span class="n">collate_fn</span><span class="o">=</span><span class="n">data_collator</span><span class="p">,</span> + <span class="n">num_workers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_num_workers</span><span class="p">,</span> + <span class="n">pin_memory</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_pin_memory</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">eval_sampler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_eval_sampler</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">DataLoader</span><span class="p">(</span> + <span class="n">eval_dataset</span><span class="p">,</span> + <span class="n">sampler</span><span class="o">=</span><span class="n">eval_sampler</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">eval_batch_size</span><span class="p">,</span> + <span class="n">collate_fn</span><span class="o">=</span><span class="n">data_collator</span><span class="p">,</span> + <span class="n">drop_last</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_drop_last</span><span class="p">,</span> + <span class="n">num_workers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_num_workers</span><span class="p">,</span> + <span class="n">pin_memory</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_pin_memory</span><span class="p">,</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer.get_test_dataloader"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_test_dataloader">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_test_dataloader</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">test_dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">DataLoader</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Returns the test [`~torch.utils.data.DataLoader`].</span> +<span class="sd"> Subclass and override this method if you want to inject some custom behavior.</span> +<span class="sd"> Args:</span> +<span class="sd"> test_dataset (`torch.utils.data.Dataset`, *optional*):</span> +<span class="sd"> The test dataset to use. If it is a [`~datasets.Dataset`], columns not accepted by the</span> +<span class="sd"> `model.forward()` method are automatically removed. It must implement `__len__`.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">data_collator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_collator</span> + + <span class="k">if</span> <span class="n">is_datasets_available</span><span class="p">()</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">test_dataset</span><span class="p">,</span> <span class="n">datasets</span><span class="o">.</span><span class="n">Dataset</span><span class="p">):</span> + <span class="n">test_dataset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_remove_unused_columns</span><span class="p">(</span><span class="n">test_dataset</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;test&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">data_collator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_collator_with_removed_columns</span><span class="p">(</span><span class="n">data_collator</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;test&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">test_dataset</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">IterableDataset</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">test_dataset</span> <span class="o">=</span> <span class="n">IterableDatasetShard</span><span class="p">(</span> + <span class="n">test_dataset</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">eval_batch_size</span><span class="p">,</span> + <span class="n">drop_last</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_drop_last</span><span class="p">,</span> + <span class="n">num_processes</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span><span class="p">,</span> + <span class="n">process_index</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">process_index</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">DataLoader</span><span class="p">(</span> + <span class="n">test_dataset</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">eval_batch_size</span><span class="p">,</span> + <span class="n">collate_fn</span><span class="o">=</span><span class="n">data_collator</span><span class="p">,</span> + <span class="n">num_workers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_num_workers</span><span class="p">,</span> + <span class="n">pin_memory</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_pin_memory</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">test_sampler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_eval_sampler</span><span class="p">(</span><span class="n">test_dataset</span><span class="p">)</span> + + <span class="c1"># We use the same batch_size as for eval.</span> + <span class="k">return</span> <span class="n">DataLoader</span><span class="p">(</span> + <span class="n">test_dataset</span><span class="p">,</span> + <span class="n">sampler</span><span class="o">=</span><span class="n">test_sampler</span><span class="p">,</span> + <span class="n">batch_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">eval_batch_size</span><span class="p">,</span> + <span class="n">collate_fn</span><span class="o">=</span><span class="n">data_collator</span><span class="p">,</span> + <span class="n">drop_last</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_drop_last</span><span class="p">,</span> + <span class="n">num_workers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_num_workers</span><span class="p">,</span> + <span class="n">pin_memory</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">dataloader_pin_memory</span><span class="p">,</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer.create_optimizer_and_scheduler"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_optimizer_and_scheduler">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">create_optimizer_and_scheduler</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num_training_steps</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Setup the optimizer and the learning rate scheduler.</span> +<span class="sd"> We provide a reasonable default that works well. If you want to use something else, you can pass a tuple in the</span> +<span class="sd"> Trainer&#39;s init through `optimizers`, or subclass and override this method (or `create_optimizer` and/or</span> +<span class="sd"> `create_scheduler`) in a subclass.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="bp">self</span><span class="o">.</span><span class="n">create_optimizer</span><span class="p">()</span> + <span class="k">if</span> <span class="n">IS_SAGEMAKER_MP_POST_1_10</span> <span class="ow">and</span> <span class="n">smp</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">fp16</span><span class="p">:</span> + <span class="c1"># If smp &gt;= 1.10 and fp16 is enabled, we unwrap the optimizer</span> + <span class="n">optimizer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">optimizer</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">optimizer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> + <span class="bp">self</span><span class="o">.</span><span class="n">create_scheduler</span><span class="p">(</span><span class="n">num_training_steps</span><span class="o">=</span><span class="n">num_training_steps</span><span class="p">,</span> <span class="n">optimizer</span><span class="o">=</span><span class="n">optimizer</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer.create_optimizer"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_optimizer">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">create_optimizer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Setup the optimizer.</span> +<span class="sd"> We provide a reasonable default that works well. If you want to use something else, you can pass a tuple in the</span> +<span class="sd"> Trainer&#39;s init through `optimizers`, or subclass and override this method in a subclass.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">opt_model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span> <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">()</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">decay_parameters</span> <span class="o">=</span> <span class="n">get_parameter_names</span><span class="p">(</span><span class="n">opt_model</span><span class="p">,</span> <span class="n">ALL_LAYERNORM_LAYERS</span><span class="p">)</span> + <span class="n">decay_parameters</span> <span class="o">=</span> <span class="p">[</span><span class="n">name</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">decay_parameters</span> <span class="k">if</span> <span class="s2">&quot;bias&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">name</span><span class="p">]</span> + <span class="n">optimizer_grouped_parameters</span> <span class="o">=</span> <span class="p">[</span> + <span class="p">{</span> + <span class="s2">&quot;params&quot;</span><span class="p">:</span> <span class="p">[</span> + <span class="n">p</span> <span class="k">for</span> <span class="n">n</span><span class="p">,</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">opt_model</span><span class="o">.</span><span class="n">named_parameters</span><span class="p">()</span> <span class="k">if</span> <span class="p">(</span><span class="n">n</span> <span class="ow">in</span> <span class="n">decay_parameters</span> <span class="ow">and</span> <span class="n">p</span><span class="o">.</span><span class="n">requires_grad</span><span class="p">)</span> + <span class="p">],</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">weight_decay</span><span class="p">,</span> + <span class="p">},</span> + <span class="p">{</span> + <span class="s2">&quot;params&quot;</span><span class="p">:</span> <span class="p">[</span> + <span class="n">p</span> <span class="k">for</span> <span class="n">n</span><span class="p">,</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">opt_model</span><span class="o">.</span><span class="n">named_parameters</span><span class="p">()</span> <span class="k">if</span> <span class="p">(</span><span class="n">n</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">decay_parameters</span> <span class="ow">and</span> <span class="n">p</span><span class="o">.</span><span class="n">requires_grad</span><span class="p">)</span> + <span class="p">],</span> + <span class="s2">&quot;weight_decay&quot;</span><span class="p">:</span> <span class="mf">0.0</span><span class="p">,</span> + <span class="p">},</span> + <span class="p">]</span> + + <span class="n">optimizer_cls</span><span class="p">,</span> <span class="n">optimizer_kwargs</span> <span class="o">=</span> <span class="n">Trainer</span><span class="o">.</span><span class="n">get_optimizer_cls_and_kwargs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="o">==</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">SIMPLE</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="o">=</span> <span class="n">OSS</span><span class="p">(</span> + <span class="n">params</span><span class="o">=</span><span class="n">optimizer_grouped_parameters</span><span class="p">,</span> + <span class="n">optim</span><span class="o">=</span><span class="n">optimizer_cls</span><span class="p">,</span> + <span class="o">**</span><span class="n">optimizer_kwargs</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="o">=</span> <span class="n">optimizer_cls</span><span class="p">(</span><span class="n">optimizer_grouped_parameters</span><span class="p">,</span> <span class="o">**</span><span class="n">optimizer_kwargs</span><span class="p">)</span> + <span class="k">if</span> <span class="n">optimizer_cls</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;Adam8bit&quot;</span><span class="p">:</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">bitsandbytes</span> + + <span class="n">manager</span> <span class="o">=</span> <span class="n">bitsandbytes</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">GlobalOptimManager</span><span class="o">.</span><span class="n">get_instance</span><span class="p">()</span> + + <span class="n">skipped</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">opt_model</span><span class="o">.</span><span class="n">modules</span><span class="p">():</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">nn</span><span class="o">.</span><span class="n">Embedding</span><span class="p">):</span> + <span class="n">skipped</span> <span class="o">+=</span> <span class="nb">sum</span><span class="p">({</span><span class="n">p</span><span class="o">.</span><span class="n">data_ptr</span><span class="p">():</span> <span class="n">p</span><span class="o">.</span><span class="n">numel</span><span class="p">()</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">module</span><span class="o">.</span><span class="n">parameters</span><span class="p">()}</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;skipped </span><span class="si">{</span><span class="n">module</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">skipped</span><span class="o">/</span><span class="mi">2</span><span class="o">**</span><span class="mi">20</span><span class="si">}</span><span class="s2">M params&quot;</span><span class="p">)</span> + <span class="n">manager</span><span class="o">.</span><span class="n">register_module_override</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="s2">&quot;weight&quot;</span><span class="p">,</span> <span class="p">{</span><span class="s2">&quot;optim_bits&quot;</span><span class="p">:</span> <span class="mi">32</span><span class="p">})</span> + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;bitsandbytes: will optimize </span><span class="si">{</span><span class="n">module</span><span class="si">}</span><span class="s2"> in fp32&quot;</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;skipped: </span><span class="si">{</span><span class="n">skipped</span><span class="o">/</span><span class="mi">2</span><span class="o">**</span><span class="mi">20</span><span class="si">}</span><span class="s2">M params&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="o">=</span> <span class="n">smp</span><span class="o">.</span><span class="n">DistributedOptimizer</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">)</span> + + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span></div> + + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="RaftTrainer.get_optimizer_cls_and_kwargs"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_optimizer_cls_and_kwargs">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_optimizer_cls_and_kwargs</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">TrainingArguments</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Any</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Returns the optimizer class and optimizer parameters based on the training arguments.</span> +<span class="sd"> Args:</span> +<span class="sd"> args (`transformers.training_args.TrainingArguments`):</span> +<span class="sd"> The training arguments for the training session.</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="c1"># parse args.optim_args</span> + <span class="n">optim_args</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_args</span><span class="p">:</span> + <span class="k">for</span> <span class="n">mapping</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">optim_args</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="p">):</span> + <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">mapping</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;=&quot;</span><span class="p">)</span> + <span class="n">optim_args</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> + + <span class="n">optimizer_kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;lr&quot;</span><span class="p">:</span> <span class="n">args</span><span class="o">.</span><span class="n">learning_rate</span><span class="p">}</span> + + <span class="n">adam_kwargs</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;betas&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">adam_beta1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">adam_beta2</span><span class="p">),</span> + <span class="s2">&quot;eps&quot;</span><span class="p">:</span> <span class="n">args</span><span class="o">.</span><span class="n">adam_epsilon</span><span class="p">,</span> + <span class="p">}</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAFACTOR</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">Adafactor</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s2">&quot;scale_parameter&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;relative_step&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAMW_HF</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">transformers.optimization</span><span class="w"> </span><span class="kn">import</span> <span class="n">AdamW</span> + + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">AdamW</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adam_kwargs</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">optim</span> <span class="ow">in</span> <span class="p">[</span><span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAMW_TORCH</span><span class="p">,</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAMW_TORCH_FUSED</span><span class="p">]:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">torch.optim</span><span class="w"> </span><span class="kn">import</span> <span class="n">AdamW</span> + + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">AdamW</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adam_kwargs</span><span class="p">)</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAMW_TORCH_FUSED</span><span class="p">:</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s2">&quot;fused&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">})</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAMW_TORCH_XLA</span><span class="p">:</span> + <span class="k">try</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">torch_xla.amp.syncfree</span><span class="w"> </span><span class="kn">import</span> <span class="n">AdamW</span> + + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">AdamW</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adam_kwargs</span><span class="p">)</span> + <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Trainer failed to import syncfree AdamW from torch_xla.&quot;</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAMW_APEX_FUSED</span><span class="p">:</span> + <span class="k">try</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">apex.optimizers</span><span class="w"> </span><span class="kn">import</span> <span class="n">FusedAdam</span> + + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">FusedAdam</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adam_kwargs</span><span class="p">)</span> + <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Trainer tried to instantiate apex FusedAdam but apex is not installed!&quot;</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAMW_BNB</span><span class="p">:</span> + <span class="k">try</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">bitsandbytes.optim</span><span class="w"> </span><span class="kn">import</span> <span class="n">Adam8bit</span> + + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">Adam8bit</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adam_kwargs</span><span class="p">)</span> + <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Trainer tried to instantiate bnb Adam8bit but bnb is not installed!&quot;</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAMW_ANYPRECISION</span><span class="p">:</span> + <span class="k">try</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">torchdistx.optimizers</span><span class="w"> </span><span class="kn">import</span> <span class="n">AnyPrecisionAdamW</span> + + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">AnyPrecisionAdamW</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">adam_kwargs</span><span class="p">)</span> + + <span class="c1"># TODO Change dtypes back to M=FP32, Var = BF16, Kahan = False once they can be cast together in torchdistx.</span> + <span class="n">optimizer_kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span> + <span class="p">{</span> + <span class="s2">&quot;use_kahan_summation&quot;</span><span class="p">:</span> <span class="n">strtobool</span><span class="p">(</span><span class="n">optim_args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;use_kahan_summation&quot;</span><span class="p">,</span> <span class="s2">&quot;False&quot;</span><span class="p">)),</span> + <span class="s2">&quot;momentum_dtype&quot;</span><span class="p">:</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">torch</span><span class="p">,</span> <span class="n">optim_args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;momentum_dtype&quot;</span><span class="p">,</span> <span class="s2">&quot;float32&quot;</span><span class="p">)),</span> + <span class="s2">&quot;variance_dtype&quot;</span><span class="p">:</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">torch</span><span class="p">,</span> <span class="n">optim_args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;variance_dtype&quot;</span><span class="p">,</span> <span class="s2">&quot;float32&quot;</span><span class="p">)),</span> + <span class="s2">&quot;compensation_buffer_dtype&quot;</span><span class="p">:</span> <span class="nb">getattr</span><span class="p">(</span> + <span class="n">torch</span><span class="p">,</span> <span class="n">optim_args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;compensation_buffer_dtype&quot;</span><span class="p">,</span> <span class="s2">&quot;bfloat16&quot;</span><span class="p">)</span> + <span class="p">),</span> + <span class="p">}</span> + <span class="p">)</span> + <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Please install https://github.com/pytorch/torchdistx&quot;</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">SGD</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">SGD</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">optim</span> <span class="o">==</span> <span class="n">OptimizerNames</span><span class="o">.</span><span class="n">ADAGRAD</span><span class="p">:</span> + <span class="n">optimizer_cls</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Adagrad</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Trainer cannot instantiate unsupported optimizer: </span><span class="si">{</span><span class="n">args</span><span class="o">.</span><span class="n">optim</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">return</span> <span class="n">optimizer_cls</span><span class="p">,</span> <span class="n">optimizer_kwargs</span></div> + + +<div class="viewcode-block" id="RaftTrainer.create_scheduler"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_scheduler">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">create_scheduler</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num_training_steps</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">optimizer</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Optimizer</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Setup the scheduler. The optimizer of the trainer must have been set up either before this method is called or</span> +<span class="sd"> passed as an argument.</span> +<span class="sd"> Args:</span> +<span class="sd"> num_training_steps (int): The number of training steps to do.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1">############</span> + <span class="n">num_training_steps</span> <span class="o">*=</span> <span class="mi">3</span> + <span class="c1">############</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span> <span class="o">=</span> <span class="n">get_scheduler</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">lr_scheduler_type</span><span class="p">,</span> + <span class="n">optimizer</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="k">if</span> <span class="n">optimizer</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">optimizer</span><span class="p">,</span> + <span class="n">num_warmup_steps</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get_warmup_steps</span><span class="p">(</span><span class="n">num_training_steps</span><span class="p">),</span> + <span class="n">num_training_steps</span><span class="o">=</span><span class="n">num_training_steps</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span></div> + + +<div class="viewcode-block" id="RaftTrainer.num_examples"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.num_examples">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">num_examples</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dataloader</span><span class="p">:</span> <span class="n">DataLoader</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Helper to get number of samples in a [`~torch.utils.data.DataLoader`] by accessing its dataset. When</span> +<span class="sd"> dataloader.dataset does not exist or has no length, estimates as best it can</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">dataset</span> <span class="o">=</span> <span class="n">dataloader</span><span class="o">.</span><span class="n">dataset</span> + <span class="c1"># Special case for IterableDatasetShard, we need to dig deeper</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dataset</span><span class="p">,</span> <span class="n">IterableDatasetShard</span><span class="p">):</span> + <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="n">dataloader</span><span class="o">.</span><span class="n">dataset</span><span class="o">.</span><span class="n">dataset</span><span class="p">)</span> + <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="n">dataloader</span><span class="o">.</span><span class="n">dataset</span><span class="p">)</span> + <span class="k">except</span> <span class="p">(</span><span class="ne">NameError</span><span class="p">,</span> <span class="ne">AttributeError</span><span class="p">,</span> <span class="ne">TypeError</span><span class="p">):</span> <span class="c1"># no dataset or length, estimate by length of dataloader</span> + <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="n">dataloader</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">per_device_train_batch_size</span></div> + + +<div class="viewcode-block" id="RaftTrainer._hp_search_setup"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._hp_search_setup">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_hp_search_setup</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">trial</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="s2">&quot;optuna.Trial&quot;</span><span class="p">,</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;HP search setup code&quot;&quot;&quot;</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_trial</span> <span class="o">=</span> <span class="n">trial</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">trial</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">return</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">OPTUNA</span><span class="p">:</span> + <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_space</span><span class="p">(</span><span class="n">trial</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">RAY</span><span class="p">:</span> + <span class="n">params</span> <span class="o">=</span> <span class="n">trial</span> + <span class="n">params</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;wandb&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">SIGOPT</span><span class="p">:</span> + <span class="n">params</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">trial</span><span class="o">.</span><span class="n">assignments</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">WANDB</span><span class="p">:</span> + <span class="n">params</span> <span class="o">=</span> <span class="n">trial</span> + + <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">params</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> + <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Trying to set </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2"> in the hyperparameter search but there is no corresponding field in&quot;</span> + <span class="s2">&quot; `TrainingArguments`.&quot;</span> + <span class="p">)</span> + <span class="k">continue</span> + <span class="n">old_attr</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> + <span class="c1"># Casting value to the proper type</span> + <span class="k">if</span> <span class="n">old_attr</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">value</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">old_attr</span><span class="p">)(</span><span class="n">value</span><span class="p">)</span> + <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">OPTUNA</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Trial: </span><span class="si">{</span><span class="n">trial</span><span class="o">.</span><span class="n">params</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">SIGOPT</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;SigOpt Assignments: </span><span class="si">{</span><span class="n">trial</span><span class="o">.</span><span class="n">assignments</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">WANDB</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;W&amp;B Sweep parameters: </span><span class="si">{</span><span class="n">trial</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="c1"># Rebuild the deepspeed config to reflect the updated training parameters</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">transformers.deepspeed</span><span class="w"> </span><span class="kn">import</span> <span class="n">HfTrainerDeepSpeedConfig</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hf_deepspeed_config</span> <span class="o">=</span> <span class="n">HfTrainerDeepSpeedConfig</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hf_deepspeed_config</span><span class="o">.</span><span class="n">trainer_config_process</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._report_to_hp_search"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._report_to_hp_search">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_report_to_hp_search</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">trial</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="s2">&quot;optuna.Trial&quot;</span><span class="p">,</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]],</span> <span class="n">step</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">metrics</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">float</span><span class="p">]):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">trial</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">return</span> + <span class="bp">self</span><span class="o">.</span><span class="n">objective</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">compute_objective</span><span class="p">(</span><span class="n">metrics</span><span class="o">.</span><span class="n">copy</span><span class="p">())</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">OPTUNA</span><span class="p">:</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">optuna</span> + + <span class="n">trial</span><span class="o">.</span><span class="n">report</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">objective</span><span class="p">,</span> <span class="n">step</span><span class="p">)</span> + <span class="k">if</span> <span class="n">trial</span><span class="o">.</span><span class="n">should_prune</span><span class="p">():</span> + <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_train_end</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">)</span> + <span class="k">raise</span> <span class="n">optuna</span><span class="o">.</span><span class="n">TrialPruned</span><span class="p">()</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">RAY</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">ray</span><span class="w"> </span><span class="kn">import</span> <span class="n">tune</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_tune_save_checkpoint</span><span class="p">()</span> + <span class="n">tune</span><span class="o">.</span><span class="n">report</span><span class="p">(</span><span class="n">objective</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">objective</span><span class="p">,</span> <span class="o">**</span><span class="n">metrics</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._tune_save_checkpoint"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._tune_save_checkpoint">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_tune_save_checkpoint</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">ray</span><span class="w"> </span><span class="kn">import</span> <span class="n">tune</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_tune_checkpoints</span><span class="p">:</span> + <span class="k">return</span> + <span class="k">with</span> <span class="n">tune</span><span class="o">.</span><span class="n">checkpoint_dir</span><span class="p">(</span><span class="n">step</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span><span class="p">)</span> <span class="k">as</span> <span class="n">checkpoint_dir</span><span class="p">:</span> + <span class="n">output_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint_dir</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">PREFIX_CHECKPOINT_DIR</span><span class="si">}</span><span class="s2">-</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">save_model</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">_internal_call</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">save_to_json</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">TRAINER_STATE_NAME</span><span class="p">))</span> + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">state_dict</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">OPTIMIZER_NAME</span><span class="p">))</span> + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span><span class="o">.</span><span class="n">state_dict</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">SCHEDULER_NAME</span><span class="p">))</span></div> + + +<div class="viewcode-block" id="RaftTrainer.call_model_init"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.call_model_init">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">call_model_init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">trial</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="n">model_init_argcount</span> <span class="o">=</span> <span class="n">number_of_arguments</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_init</span><span class="p">)</span> + <span class="k">if</span> <span class="n">model_init_argcount</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_init</span><span class="p">()</span> + <span class="k">elif</span> <span class="n">model_init_argcount</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_init</span><span class="p">(</span><span class="n">trial</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;model_init should have 0 or 1 argument.&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">model</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;model_init should not return None.&quot;</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">model</span></div> + + +<div class="viewcode-block" id="RaftTrainer.torch_jit_model_eval"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.torch_jit_model_eval">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">torch_jit_model_eval</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">dataloader</span><span class="p">,</span> <span class="n">training</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">training</span><span class="p">:</span> + <span class="k">if</span> <span class="n">dataloader</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;failed to use PyTorch jit mode due to current dataloader is none.&quot;</span><span class="p">)</span> + <span class="k">return</span> <span class="n">model</span> + <span class="n">example_batch</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">dataloader</span><span class="p">))</span> + <span class="n">example_batch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prepare_inputs</span><span class="p">(</span><span class="n">example_batch</span><span class="p">)</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">jit_model</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span> + <span class="k">with</span> <span class="n">ContextManagers</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">autocast_smart_context_manager</span><span class="p">(</span><span class="n">cache_enabled</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">()]):</span> + <span class="k">if</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">__version__</span><span class="p">)</span><span class="o">.</span><span class="n">base_version</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="n">version</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s2">&quot;1.14.0&quot;</span><span class="p">):</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">example_batch</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> + <span class="n">jit_model</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">jit</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="n">jit_model</span><span class="p">,</span> <span class="n">example_kwarg_inputs</span><span class="o">=</span><span class="n">example_batch</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">jit_model</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">jit</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span> + <span class="n">jit_model</span><span class="p">,</span> + <span class="n">example_kwarg_inputs</span><span class="o">=</span><span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">example_batch</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">example_batch</span><span class="p">},</span> + <span class="n">strict</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">jit_inputs</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">example_batch</span><span class="p">:</span> + <span class="n">example_tensor</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">example_batch</span><span class="p">[</span><span class="n">key</span><span class="p">])</span> + <span class="n">jit_inputs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">example_tensor</span><span class="p">)</span> + <span class="n">jit_inputs</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">jit_inputs</span><span class="p">)</span> + <span class="n">jit_model</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">jit</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="n">jit_model</span><span class="p">,</span> <span class="n">jit_inputs</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">jit_model</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">jit</span><span class="o">.</span><span class="n">freeze</span><span class="p">(</span><span class="n">jit_model</span><span class="p">)</span> + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span> + <span class="n">jit_model</span><span class="p">(</span><span class="o">**</span><span class="n">example_batch</span><span class="p">)</span> + <span class="n">jit_model</span><span class="p">(</span><span class="o">**</span><span class="n">example_batch</span><span class="p">)</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">jit_model</span> + <span class="bp">self</span><span class="o">.</span><span class="n">use_cpu_amp</span> <span class="o">=</span> <span class="kc">False</span> + <span class="bp">self</span><span class="o">.</span><span class="n">use_cuda_amp</span> <span class="o">=</span> <span class="kc">False</span> + <span class="k">except</span> <span class="p">(</span><span class="ne">RuntimeError</span><span class="p">,</span> <span class="ne">TypeError</span><span class="p">,</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="ne">NameError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">)</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;failed to use PyTorch jit mode due to: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">model</span></div> + + +<div class="viewcode-block" id="RaftTrainer.ipex_optimize_model"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.ipex_optimize_model">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">ipex_optimize_model</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">training</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float32</span><span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_ipex_available</span><span class="p">():</span> + <span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span> + <span class="s2">&quot;Using IPEX but IPEX is not installed or IPEX&#39;s version does not match current PyTorch, please refer&quot;</span> + <span class="s2">&quot; to https://github.com/intel/intel-extension-for-pytorch.&quot;</span> + <span class="p">)</span> + + <span class="kn">import</span><span class="w"> </span><span class="nn">intel_extension_for_pytorch</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">ipex</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">training</span><span class="p">:</span> + <span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span> + <span class="n">dtype</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">bfloat16</span> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_in_train</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">bf16_full_eval</span> <span class="k">else</span> <span class="n">dtype</span> + <span class="c1"># conv_bn_folding is disabled as it fails in symbolic tracing, resulting in ipex warnings</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">ipex</span><span class="o">.</span><span class="n">optimize</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">dtype</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="s2">&quot;O1&quot;</span><span class="p">,</span> <span class="n">conv_bn_folding</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">inplace</span><span class="o">=</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_in_train</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">model</span><span class="o">.</span><span class="n">training</span><span class="p">:</span> + <span class="n">model</span><span class="o">.</span><span class="n">train</span><span class="p">()</span> + <span class="n">model</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="o">=</span> <span class="n">ipex</span><span class="o">.</span><span class="n">optimize</span><span class="p">(</span> + <span class="n">model</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">dtype</span><span class="p">,</span> <span class="n">optimizer</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">,</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="s2">&quot;O1&quot;</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">model</span></div> + + +<div class="viewcode-block" id="RaftTrainer._wrap_model"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._wrap_model">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_wrap_model</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">training</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dataloader</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">torch_compile</span><span class="p">:</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">backend</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">torch_compile_backend</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">torch_compile_mode</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">use_ipex</span><span class="p">:</span> + <span class="n">dtype</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">bfloat16</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_cpu_amp</span> <span class="k">else</span> <span class="n">torch</span><span class="o">.</span><span class="n">float32</span> + <span class="n">model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ipex_optimize_model</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">training</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="c1"># Wrapping the base model twice in a DistributedModel will raise an error.</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span><span class="p">,</span> <span class="n">smp</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">DistributedModel</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span> + <span class="k">return</span> <span class="n">smp</span><span class="o">.</span><span class="n">DistributedModel</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">backward_passes_per_step</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span><span class="p">)</span> + + <span class="c1"># already initialized its own DDP and AMP</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span> + + <span class="c1"># train/eval could be run multiple-times - if already wrapped, don&#39;t re-wrap it again</span> + <span class="k">if</span> <span class="n">unwrap_model</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">model</span><span class="p">:</span> + <span class="k">return</span> <span class="n">model</span> + + <span class="c1"># Mixed precision training with apex (torch &lt; 1.6)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_apex</span> <span class="ow">and</span> <span class="n">training</span><span class="p">:</span> + <span class="n">model</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="o">=</span> <span class="n">amp</span><span class="o">.</span><span class="n">initialize</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">,</span> <span class="n">opt_level</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fp16_opt_level</span><span class="p">)</span> + + <span class="c1"># Multi-gpu training (should be after apex fp16 initialization)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">n_gpu</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">DataParallel</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">jit_mode_eval</span><span class="p">:</span> + <span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> + <span class="n">model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">torch_jit_model_eval</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">dataloader</span><span class="p">,</span> <span class="n">training</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">jit_compilation_time</span> <span class="o">=</span> <span class="nb">round</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">start_time</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span> + + <span class="c1"># Note: in torch.distributed mode, there&#39;s no point in wrapping the model</span> + <span class="c1"># inside a DistributedDataParallel as we&#39;ll be under `no_grad` anyways.</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">training</span><span class="p">:</span> + <span class="k">return</span> <span class="n">model</span> + + <span class="c1"># Distributed training (should be after apex fp16 initialization)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="c1"># Sharded DDP!</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="o">==</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">SIMPLE</span><span class="p">:</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">ShardedDDP</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">mixed_precision</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fp16</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">bf16</span> + <span class="n">cpu_offload</span> <span class="o">=</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">OFFLOAD</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">sharded_ddp</span> + <span class="n">zero_3</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="o">==</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">ZERO_DP_3</span> + <span class="c1"># XXX: Breaking the self.model convention but I see no way around it for now.</span> + <span class="k">if</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">AUTO_WRAP</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">sharded_ddp</span><span class="p">:</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">auto_wrap</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">model</span> <span class="o">=</span> <span class="n">FullyShardedDDP</span><span class="p">(</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">mixed_precision</span><span class="o">=</span><span class="n">mixed_precision</span><span class="p">,</span> + <span class="n">reshard_after_forward</span><span class="o">=</span><span class="n">zero_3</span><span class="p">,</span> + <span class="n">cpu_offload</span><span class="o">=</span><span class="n">cpu_offload</span><span class="p">,</span> + <span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="c1"># Distributed training using PyTorch FSDP</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">fsdp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp_config</span><span class="p">[</span><span class="s2">&quot;xla&quot;</span><span class="p">]:</span> + <span class="c1"># PyTorch FSDP!</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">torch.distributed.fsdp.fully_sharded_data_parallel</span><span class="w"> </span><span class="kn">import</span> <span class="n">CPUOffload</span><span class="p">,</span> <span class="n">MixedPrecision</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">torch.distributed.fsdp.fully_sharded_data_parallel</span><span class="w"> </span><span class="kn">import</span> <span class="n">FullyShardedDataParallel</span> <span class="k">as</span> <span class="n">FSDP</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">torch.distributed.fsdp.wrap</span><span class="w"> </span><span class="kn">import</span> <span class="n">size_based_auto_wrap_policy</span><span class="p">,</span> <span class="n">transformer_auto_wrap_policy</span> + + <span class="k">if</span> <span class="n">FSDPOption</span><span class="o">.</span><span class="n">OFFLOAD</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp</span><span class="p">:</span> + <span class="n">cpu_offload</span> <span class="o">=</span> <span class="n">CPUOffload</span><span class="p">(</span><span class="n">offload_params</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">cpu_offload</span> <span class="o">=</span> <span class="n">CPUOffload</span><span class="p">(</span><span class="n">offload_params</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + + <span class="n">auto_wrap_policy</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="k">if</span> <span class="n">FSDPOption</span><span class="o">.</span><span class="n">AUTO_WRAP</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp_config</span><span class="p">[</span><span class="s2">&quot;fsdp_min_num_params&quot;</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">auto_wrap_policy</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">partial</span><span class="p">(</span> + <span class="n">size_based_auto_wrap_policy</span><span class="p">,</span> <span class="n">min_num_params</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp_config</span><span class="p">[</span><span class="s2">&quot;fsdp_min_num_params&quot;</span><span class="p">]</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp_config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;fsdp_transformer_layer_cls_to_wrap&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">transformer_cls_to_wrap</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> + <span class="k">for</span> <span class="n">layer_class</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp_config</span><span class="p">[</span><span class="s2">&quot;fsdp_transformer_layer_cls_to_wrap&quot;</span><span class="p">]:</span> + <span class="n">transformer_cls</span> <span class="o">=</span> <span class="n">get_module_class_from_name</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">layer_class</span><span class="p">)</span> + <span class="k">if</span> <span class="n">transformer_cls</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Could not find the transformer layer class to wrap in the model.&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">transformer_cls_to_wrap</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">transformer_cls</span><span class="p">)</span> + <span class="n">auto_wrap_policy</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">partial</span><span class="p">(</span> + <span class="n">transformer_auto_wrap_policy</span><span class="p">,</span> + <span class="c1"># Transformer layer class to wrap</span> + <span class="n">transformer_layer_cls</span><span class="o">=</span><span class="n">transformer_cls_to_wrap</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">mixed_precision_policy</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">dtype</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fp16</span><span class="p">:</span> + <span class="n">dtype</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">float16</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">bf16</span><span class="p">:</span> + <span class="n">dtype</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">bfloat16</span> + <span class="k">if</span> <span class="n">dtype</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">mixed_precision_policy</span> <span class="o">=</span> <span class="n">MixedPrecision</span><span class="p">(</span><span class="n">param_dtype</span><span class="o">=</span><span class="n">dtype</span><span class="p">,</span> <span class="n">reduce_dtype</span><span class="o">=</span><span class="n">dtype</span><span class="p">,</span> <span class="n">buffer_dtype</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> <span class="o">!=</span> <span class="n">FSDP</span><span class="p">:</span> + <span class="c1"># XXX: Breaking the self.model convention but I see no way around it for now.</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">model</span> <span class="o">=</span> <span class="n">FSDP</span><span class="p">(</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">sharding_strategy</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">fsdp</span><span class="p">,</span> + <span class="n">cpu_offload</span><span class="o">=</span><span class="n">cpu_offload</span><span class="p">,</span> + <span class="n">auto_wrap_policy</span><span class="o">=</span><span class="n">auto_wrap_policy</span><span class="p">,</span> + <span class="n">mixed_precision</span><span class="o">=</span><span class="n">mixed_precision_policy</span><span class="p">,</span> + <span class="n">device_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">,</span> + <span class="n">backward_prefetch</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">backward_prefetch</span><span class="p">,</span> + <span class="n">forward_prefetch</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">forword_prefetch</span><span class="p">,</span> + <span class="n">limit_all_gathers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">limit_all_gathers</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">try</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">torch_xla.distributed.fsdp</span><span class="w"> </span><span class="kn">import</span> <span class="n">XlaFullyShardedDataParallel</span> <span class="k">as</span> <span class="n">FSDP</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">torch_xla.distributed.fsdp</span><span class="w"> </span><span class="kn">import</span> <span class="n">checkpoint_module</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">torch_xla.distributed.fsdp.wrap</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">size_based_auto_wrap_policy</span><span class="p">,</span> + <span class="n">transformer_auto_wrap_policy</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="s2">&quot;Missing XLA FSDP related module; please make sure to use torch-xla &gt;= 2.0.&quot;</span><span class="p">)</span> + <span class="n">auto_wrap_policy</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">auto_wrapper_callable</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp_config</span><span class="p">[</span><span class="s2">&quot;fsdp_min_num_params&quot;</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">auto_wrap_policy</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">partial</span><span class="p">(</span> + <span class="n">size_based_auto_wrap_policy</span><span class="p">,</span> <span class="n">min_num_params</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp_config</span><span class="p">[</span><span class="s2">&quot;fsdp_min_num_params&quot;</span><span class="p">]</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp_config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;fsdp_transformer_layer_cls_to_wrap&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">transformer_cls_to_wrap</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> + <span class="k">for</span> <span class="n">layer_class</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp_config</span><span class="p">[</span><span class="s2">&quot;fsdp_transformer_layer_cls_to_wrap&quot;</span><span class="p">]:</span> + <span class="n">transformer_cls</span> <span class="o">=</span> <span class="n">get_module_class_from_name</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">layer_class</span><span class="p">)</span> + <span class="k">if</span> <span class="n">transformer_cls</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Could not find the transformer layer class to wrap in the model.&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">transformer_cls_to_wrap</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">transformer_cls</span><span class="p">)</span> + <span class="n">auto_wrap_policy</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">partial</span><span class="p">(</span> + <span class="n">transformer_auto_wrap_policy</span><span class="p">,</span> + <span class="c1"># Transformer layer class to wrap</span> + <span class="n">transformer_layer_cls</span><span class="o">=</span><span class="n">transformer_cls_to_wrap</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">fsdp_kwargs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">xla_fsdp_config</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fsdp_config</span><span class="p">[</span><span class="s2">&quot;xla_fsdp_grad_ckpt&quot;</span><span class="p">]:</span> + <span class="c1"># Apply gradient checkpointing to auto-wrapped sub-modules if specified</span> + <span class="k">def</span><span class="w"> </span><span class="nf">auto_wrapper_callable</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="k">return</span> <span class="n">FSDP</span><span class="p">(</span><span class="n">checkpoint_module</span><span class="p">(</span><span class="n">m</span><span class="p">),</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + + <span class="c1"># Wrap the base model with an outer FSDP wrapper</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">model</span> <span class="o">=</span> <span class="n">FSDP</span><span class="p">(</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">auto_wrap_policy</span><span class="o">=</span><span class="n">auto_wrap_policy</span><span class="p">,</span> + <span class="n">auto_wrapper_callable</span><span class="o">=</span><span class="n">auto_wrapper_callable</span><span class="p">,</span> + <span class="o">**</span><span class="n">fsdp_kwargs</span><span class="p">,</span> + <span class="p">)</span> + + <span class="c1"># Patch `xm.optimizer_step` should not reduce gradients in this case,</span> + <span class="c1"># as FSDP does not need gradient reduction over sharded parameters.</span> + <span class="k">def</span><span class="w"> </span><span class="nf">patched_optimizer_step</span><span class="p">(</span><span class="n">optimizer</span><span class="p">,</span> <span class="n">barrier</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">optimizer_args</span><span class="o">=</span><span class="p">{}):</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">optimizer</span><span class="o">.</span><span class="n">step</span><span class="p">(</span><span class="o">**</span><span class="n">optimizer_args</span><span class="p">)</span> + <span class="k">if</span> <span class="n">barrier</span><span class="p">:</span> + <span class="n">xm</span><span class="o">.</span><span class="n">mark_step</span><span class="p">()</span> + <span class="k">return</span> <span class="n">loss</span> + + <span class="n">xm</span><span class="o">.</span><span class="n">optimizer_step</span> <span class="o">=</span> <span class="n">patched_optimizer_step</span> + <span class="k">elif</span> <span class="n">is_sagemaker_dp_enabled</span><span class="p">():</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">parallel</span><span class="o">.</span><span class="n">DistributedDataParallel</span><span class="p">(</span> + <span class="n">model</span><span class="p">,</span> <span class="n">device_ids</span><span class="o">=</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;SMDATAPARALLEL_LOCAL_RANK&quot;</span><span class="p">))]</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">ddp_find_unused_parameters</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;find_unused_parameters&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">ddp_find_unused_parameters</span> + <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">PreTrainedModel</span><span class="p">):</span> + <span class="c1"># find_unused_parameters breaks checkpointing as per</span> + <span class="c1"># https://github.com/huggingface/transformers/pull/4659#issuecomment-643356021</span> + <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;find_unused_parameters&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">model</span><span class="o">.</span><span class="n">is_gradient_checkpointing</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;find_unused_parameters&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">ddp_bucket_cap_mb</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;bucket_cap_mb&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">ddp_bucket_cap_mb</span> + <span class="k">if</span> <span class="n">is_torch_neuroncore_available</span><span class="p">():</span> + <span class="k">return</span> <span class="n">model</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">parallel</span><span class="o">.</span><span class="n">DistributedDataParallel</span><span class="p">(</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">device_ids</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">local_rank</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">_n_gpu</span> <span class="o">!=</span> <span class="mi">0</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">output_device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">local_rank</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">_n_gpu</span> <span class="o">!=</span> <span class="mi">0</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">model</span></div> + + +<div class="viewcode-block" id="RaftTrainer.train"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.train">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">train</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">resume_from_checkpoint</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">trial</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="s2">&quot;optuna.Trial&quot;</span><span class="p">,</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">ignore_keys_for_eval</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">is_first_time</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Main training entry point.</span> +<span class="sd"> Args:</span> +<span class="sd"> resume_from_checkpoint (`str` or `bool`, *optional*):</span> +<span class="sd"> If a `str`, local path to a saved checkpoint as saved by a previous instance of [`Trainer`]. If a</span> +<span class="sd"> `bool` and equals `True`, load the last checkpoint in *args.output_dir* as saved by a previous instance</span> +<span class="sd"> of [`Trainer`]. If present, training will resume from the model/optimizer/scheduler states loaded here.</span> +<span class="sd"> trial (`optuna.Trial` or `Dict[str, Any]`, *optional*):</span> +<span class="sd"> The trial run or the hyperparameter dictionary for hyperparameter search.</span> +<span class="sd"> ignore_keys_for_eval (`List[str]`, *optional*)</span> +<span class="sd"> A list of keys in the output of your model (if it is a dictionary) that should be ignored when</span> +<span class="sd"> gathering predictions for evaluation during the training.</span> +<span class="sd"> kwargs:</span> +<span class="sd"> Additional keyword arguments used to hide deprecated arguments</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="n">resume_from_checkpoint</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span> + <span class="n">resume_from_checkpoint</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="c1"># memory metrics - must set up as early as possible</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_memory_tracker</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> + + <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span> + + <span class="c1">#self.is_in_train = True</span> + + <span class="c1"># do_train is not a reliable argument, as it might not be set and .train() still called, so</span> + <span class="c1"># the following is a workaround:</span> + <span class="k">if</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">fp16_full_eval</span> <span class="ow">or</span> <span class="n">args</span><span class="o">.</span><span class="n">bf16_full_eval</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">args</span><span class="o">.</span><span class="n">do_train</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_move_model_to_device</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + + <span class="k">if</span> <span class="s2">&quot;model_path&quot;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span> + <span class="n">resume_from_checkpoint</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;model_path&quot;</span><span class="p">)</span> + <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span> + <span class="s2">&quot;`model_path` is deprecated and will be removed in a future version. Use `resume_from_checkpoint` &quot;</span> + <span class="s2">&quot;instead.&quot;</span><span class="p">,</span> + <span class="ne">FutureWarning</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;train() received got unexpected keyword arguments: </span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">kwargs</span><span class="o">.</span><span class="n">keys</span><span class="p">()))</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span> + <span class="c1"># This might change the seed so needs to run first.</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_hp_search_setup</span><span class="p">(</span><span class="n">trial</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_train_batch_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">train_batch_size</span> + + <span class="c1"># Model re-init</span> + <span class="n">model_reloaded</span> <span class="o">=</span> <span class="kc">False</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_init</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="c1"># Seed must be set before instantiating the model when using model_init.</span> + <span class="n">enable_full_determinism</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">seed</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">full_determinism</span> <span class="k">else</span> <span class="n">set_seed</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">seed</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">call_model_init</span><span class="p">(</span><span class="n">trial</span><span class="p">)</span> + <span class="n">model_reloaded</span> <span class="o">=</span> <span class="kc">True</span> + <span class="c1"># Reinitializes optimizer and scheduler</span> + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span> + + <span class="c1"># Load potential model checkpoint</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="p">,</span> <span class="nb">bool</span><span class="p">)</span> <span class="ow">and</span> <span class="n">resume_from_checkpoint</span><span class="p">:</span> + <span class="n">resume_from_checkpoint</span> <span class="o">=</span> <span class="n">get_last_checkpoint</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">)</span> + <span class="k">if</span> <span class="n">resume_from_checkpoint</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No valid checkpoint found in output directory (</span><span class="si">{</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">resume_from_checkpoint</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">()</span> <span class="ow">and</span> <span class="n">args</span><span class="o">.</span><span class="n">deepspeed</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_load_from_checkpoint</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="p">)</span> + + <span class="c1"># If model was re-initialized, put it on the right device and update self.model_wrapped</span> + <span class="k">if</span> <span class="n">model_reloaded</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">place_model_on_device</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_move_model_to_device</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span> + <span class="k">if</span> <span class="n">is_first_time</span><span class="p">:</span> + <span class="n">inner_training_loop1</span> <span class="o">=</span> <span class="n">find_executable_batch_size</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_inner_training_loop</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_train_batch_size</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">auto_find_batch_size</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">inner_training_loop1</span><span class="p">(</span> + <span class="n">args</span><span class="o">=</span><span class="n">args</span><span class="p">,</span> + <span class="n">resume_from_checkpoint</span><span class="o">=</span><span class="n">resume_from_checkpoint</span><span class="p">,</span> + <span class="n">trial</span><span class="o">=</span><span class="n">trial</span><span class="p">,</span> + <span class="n">ignore_keys_for_eval</span><span class="o">=</span><span class="n">ignore_keys_for_eval</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">inner_training_loop2</span> <span class="o">=</span> <span class="n">find_executable_batch_size</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_one_train</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_train_batch_size</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">auto_find_batch_size</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">inner_training_loop2</span><span class="p">(</span> + <span class="n">args</span><span class="o">=</span><span class="n">args</span><span class="p">,</span> + <span class="n">resume_from_checkpoint</span><span class="o">=</span><span class="n">resume_from_checkpoint</span><span class="p">,</span> + <span class="n">trial</span><span class="o">=</span><span class="n">trial</span><span class="p">,</span> + <span class="n">ignore_keys_for_eval</span><span class="o">=</span><span class="n">ignore_keys_for_eval</span><span class="p">,</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="RaftTrainer._one_train"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._one_train">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_one_train</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> <span class="n">batch_size</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">resume_from_checkpoint</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">trial</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ignore_keys_for_eval</span><span class="o">=</span><span class="kc">None</span> + <span class="p">):</span> + <span class="c1">#print(self.lr_scheduler)</span> + <span class="c1">#print(dir(self.lr_scheduler))</span> + + + <span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="n">TrainerState</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">is_hyper_param_search</span> <span class="o">=</span> <span class="n">trial</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> + <span class="c1"># Get dataloader</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_train_batch_size</span> <span class="o">=</span> <span class="n">batch_size</span> + <span class="c1"># Data loader and number of training steps</span> + <span class="n">train_dataloader</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_train_dataloader</span><span class="p">()</span> + <span class="c1">#print(&quot;AAAAAAA&quot;, len(train_dataloader))</span> + + <span class="n">total_train_batch_size</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">train_batch_size</span> <span class="o">*</span> <span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span> <span class="o">*</span> <span class="n">args</span><span class="o">.</span><span class="n">world_size</span> + + <span class="n">len_dataloader</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">has_length</span><span class="p">(</span><span class="n">train_dataloader</span><span class="p">):</span> + <span class="n">len_dataloader</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">train_dataloader</span><span class="p">)</span> + <span class="n">num_update_steps_per_epoch</span> <span class="o">=</span> <span class="n">len_dataloader</span> <span class="o">//</span> <span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span> + <span class="n">num_update_steps_per_epoch</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">num_update_steps_per_epoch</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> + <span class="n">num_examples</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_examples</span><span class="p">(</span><span class="n">train_dataloader</span><span class="p">)</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">max_steps</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> + <span class="n">num_train_epochs</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">//</span> <span class="n">num_update_steps_per_epoch</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span> + <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">%</span> <span class="n">num_update_steps_per_epoch</span> <span class="o">&gt;</span> <span class="mi">0</span> + <span class="p">)</span> + <span class="c1"># May be slightly incorrect if the last batch in the training dataloader has a smaller size but it&#39;s</span> + <span class="c1"># the best we can do.</span> + <span class="n">num_train_samples</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">*</span> <span class="n">total_train_batch_size</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">max_steps</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">num_train_epochs</span> <span class="o">*</span> <span class="n">num_update_steps_per_epoch</span><span class="p">)</span> + <span class="n">num_train_epochs</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">num_train_epochs</span><span class="p">)</span> + <span class="n">num_train_samples</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_examples</span><span class="p">(</span><span class="n">train_dataloader</span><span class="p">)</span> <span class="o">*</span> <span class="n">args</span><span class="o">.</span><span class="n">num_train_epochs</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> <span class="c1"># Rely on max_steps when dataloader does not have a working size</span> + <span class="n">max_steps</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> + <span class="c1"># Setting a very large number of epochs so we go as many times as necessary over the iterator.</span> + <span class="n">num_train_epochs</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">maxsize</span> + <span class="n">num_update_steps_per_epoch</span> <span class="o">=</span> <span class="n">max_steps</span> + <span class="n">num_examples</span> <span class="o">=</span> <span class="n">total_train_batch_size</span> <span class="o">*</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> + <span class="n">num_train_samples</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">*</span> <span class="n">total_train_batch_size</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;args.max_steps must be set to a positive value if dataloader does not have a length, was&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">args</span><span class="o">.</span><span class="n">max_steps</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="c1">###########</span> + <span class="c1">#num_train_epochs = 5</span> + + <span class="c1"># Train!</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;***** Running training *****&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Num examples = </span><span class="si">{</span><span class="n">num_examples</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Num Epochs = </span><span class="si">{</span><span class="n">num_train_epochs</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Instantaneous batch size per device = </span><span class="si">{</span><span class="n">args</span><span class="o">.</span><span class="n">per_device_train_batch_size</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Total train batch size (w. parallel, distributed &amp; accumulation) = </span><span class="si">{</span><span class="n">total_train_batch_size</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Gradient Accumulation steps = </span><span class="si">{</span><span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Total optimization steps = </span><span class="si">{</span><span class="n">max_steps</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot; Number of trainable parameters = </span><span class="si">{</span><span class="nb">sum</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">numel</span><span class="p">()</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="bp">self</span><span class="o">.</span><span class="n">tmp_model</span><span class="o">.</span><span class="n">parameters</span><span class="p">()</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">p</span><span class="o">.</span><span class="n">requires_grad</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">epoch</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> + <span class="n">epochs_trained</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">steps_trained_in_current_epoch</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">steps_trained_progress_bar</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="c1"># Update the references</span> + <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span> + <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">optimizer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> + <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">lr_scheduler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span> + <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">train_dataloader</span> <span class="o">=</span> <span class="n">train_dataloader</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_trial</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="c1"># use self._trial because the SigOpt/Optuna hpo only call `_hp_search_setup(trial)` instead of passing trial</span> + <span class="c1"># parameter to Train when using DDP.</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">trial_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_trial</span><span class="p">)</span> + <span class="k">if</span> <span class="n">trial</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">assignments</span> <span class="o">=</span> <span class="n">trial</span><span class="o">.</span><span class="n">assignments</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">SIGOPT</span> <span class="k">else</span> <span class="n">trial</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">trial_params</span> <span class="o">=</span> <span class="n">hp_params</span><span class="p">(</span><span class="n">assignments</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">trial_params</span> <span class="o">=</span> <span class="kc">None</span> + <span class="c1"># This should be the same if the state has been saved but in case the training arguments changed, it&#39;s safer</span> + <span class="c1"># to set this after the load.</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">=</span> <span class="n">max_steps</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">num_train_epochs</span> <span class="o">=</span> <span class="n">num_train_epochs</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">is_local_process_zero</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_local_process_zero</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">is_world_process_zero</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_world_process_zero</span><span class="p">()</span> + + <span class="c1"># tr_loss is a tensor to avoid synchronization of TPUs through .item()</span> + <span class="n">tr_loss</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span><span class="mf">0.0</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="c1"># _total_loss_scalar is updated everytime .item() has to be called on tr_loss and stores the sum of all losses</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_total_loss_scalar</span> <span class="o">=</span> <span class="mf">0.0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_globalstep_last_logged</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span> + <span class="c1">#model.zero_grad()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tmp_model</span><span class="o">.</span><span class="n">zero_grad</span><span class="p">()</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_train_begin</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">)</span> + + <span class="c1"># Skip the first epochs_trained epochs to get the random state of the dataloader at the right point.</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">args</span><span class="o">.</span><span class="n">ignore_data_skip</span><span class="p">:</span> + <span class="c1">#print(&quot;I skip!&quot;) called</span> + <span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">epochs_trained</span><span class="p">):</span> + <span class="n">is_random_sampler</span> <span class="o">=</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">train_dataloader</span><span class="p">,</span> <span class="s2">&quot;sampler&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span> + <span class="n">train_dataloader</span><span class="o">.</span><span class="n">sampler</span><span class="p">,</span> <span class="n">RandomSampler</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">is_torch_less_than_1_11</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">is_random_sampler</span><span class="p">:</span> + <span class="c1"># We just need to begin an iteration to create the randomization of the sampler.</span> + <span class="c1"># That was before PyTorch 1.11 however...</span> + <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">train_dataloader</span><span class="p">:</span> + <span class="k">break</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># Otherwise we need to call the whooooole sampler cause there is some random operation added</span> + <span class="c1"># AT THE VERY END!</span> + <span class="n">_</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">train_dataloader</span><span class="o">.</span><span class="n">sampler</span><span class="p">)</span> + + <span class="c1">###############</span> + <span class="c1">#num_train_epochs = 10</span> + <span class="bp">self</span><span class="o">.</span><span class="n">is_in_train</span> <span class="o">=</span> <span class="kc">True</span> + <span class="c1">#print(&quot;The number of epoches: &quot;, num_train_epochs)</span> + <span class="c1">############# </span> + <span class="n">total_batched_samples</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">epochs_trained</span><span class="p">,</span> <span class="n">num_train_epochs</span><span class="p">):</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">train_dataloader</span><span class="p">,</span> <span class="n">DataLoader</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">train_dataloader</span><span class="o">.</span><span class="n">sampler</span><span class="p">,</span> <span class="n">DistributedSampler</span><span class="p">):</span> + <span class="n">train_dataloader</span><span class="o">.</span><span class="n">sampler</span><span class="o">.</span><span class="n">set_epoch</span><span class="p">(</span><span class="n">epoch</span><span class="p">)</span> + <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">train_dataloader</span><span class="p">,</span> <span class="s2">&quot;dataset&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">train_dataloader</span><span class="o">.</span><span class="n">dataset</span><span class="p">,</span> <span class="n">IterableDatasetShard</span><span class="p">):</span> + <span class="n">train_dataloader</span><span class="o">.</span><span class="n">dataset</span><span class="o">.</span><span class="n">set_epoch</span><span class="p">(</span><span class="n">epoch</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="n">parallel_loader</span> <span class="o">=</span> <span class="n">pl</span><span class="o">.</span><span class="n">ParallelLoader</span><span class="p">(</span><span class="n">train_dataloader</span><span class="p">,</span> <span class="p">[</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">])</span><span class="o">.</span><span class="n">per_device_loader</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="n">epoch_iterator</span> <span class="o">=</span> <span class="n">parallel_loader</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">epoch_iterator</span> <span class="o">=</span> <span class="n">train_dataloader</span> + + <span class="c1"># Reset the past mems state at the beginning of each epoch if necessary.</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">past_index</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_past</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="n">steps_in_epoch</span> <span class="o">=</span> <span class="p">(</span> + <span class="nb">len</span><span class="p">(</span><span class="n">epoch_iterator</span><span class="p">)</span> + <span class="k">if</span> <span class="n">len_dataloader</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> + <span class="k">else</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">*</span> <span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_epoch_begin</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">epoch</span> <span class="o">==</span> <span class="n">epochs_trained</span> <span class="ow">and</span> <span class="n">resume_from_checkpoint</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">steps_trained_in_current_epoch</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_load_rng_state</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="p">)</span> + + <span class="n">rng_to_sync</span> <span class="o">=</span> <span class="kc">False</span> + <span class="n">steps_skipped</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">if</span> <span class="n">skip_first_batches</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">steps_trained_in_current_epoch</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">epoch_iterator</span> <span class="o">=</span> <span class="n">skip_first_batches</span><span class="p">(</span><span class="n">epoch_iterator</span><span class="p">,</span> <span class="n">steps_trained_in_current_epoch</span><span class="p">)</span> + <span class="n">steps_skipped</span> <span class="o">=</span> <span class="n">steps_trained_in_current_epoch</span> + <span class="n">steps_trained_in_current_epoch</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">rng_to_sync</span> <span class="o">=</span> <span class="kc">True</span> + + <span class="c1">#print(&quot;The number of one epoch: &quot;, len(epoch_iterator))</span> + <span class="n">step</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> + <span class="k">for</span> <span class="n">step</span><span class="p">,</span> <span class="n">inputs</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">epoch_iterator</span><span class="p">):</span> + <span class="n">total_batched_samples</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="n">rng_to_sync</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_load_rng_state</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="p">)</span> + <span class="n">rng_to_sync</span> <span class="o">=</span> <span class="kc">False</span> + + <span class="c1"># Skip past any already trained steps if resuming training</span> + <span class="k">if</span> <span class="n">steps_trained_in_current_epoch</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">steps_trained_in_current_epoch</span> <span class="o">-=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="n">steps_trained_progress_bar</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">steps_trained_progress_bar</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> + <span class="k">if</span> <span class="n">steps_trained_in_current_epoch</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_load_rng_state</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="p">)</span> + <span class="k">continue</span> + <span class="k">elif</span> <span class="n">steps_trained_progress_bar</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">steps_trained_progress_bar</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + <span class="n">steps_trained_progress_bar</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="k">if</span> <span class="n">step</span> <span class="o">%</span> <span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_step_begin</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">)</span> + + <span class="k">if</span> <span class="p">(</span> + <span class="p">(</span><span class="n">total_batched_samples</span> <span class="o">%</span> <span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> + <span class="ow">and</span> <span class="n">args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span> + <span class="ow">and</span> <span class="n">args</span><span class="o">.</span><span class="n">_no_sync_in_gradient_accumulation</span> + <span class="p">):</span> + <span class="c1"># Avoid unnecessary DDP synchronization since there will be no backward pass on this example.</span> + <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">tmp_model</span><span class="o">.</span><span class="n">no_sync</span><span class="p">():</span> + <span class="n">tr_loss_step</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">training_step</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tmp_model</span><span class="p">,</span> <span class="n">inputs</span><span class="p">)</span> + <span class="c1">#with model.no_sync():</span> + <span class="c1">#tr_loss_step = self.training_step(model, inputs)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">tr_loss_step</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">training_step</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tmp_model</span><span class="p">,</span> <span class="n">inputs</span><span class="p">)</span> + + <span class="k">if</span> <span class="p">(</span> + <span class="n">args</span><span class="o">.</span><span class="n">logging_nan_inf_filter</span> + <span class="ow">and</span> <span class="ow">not</span> <span class="n">is_torch_tpu_available</span><span class="p">()</span> + <span class="ow">and</span> <span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">tr_loss_step</span><span class="p">)</span> <span class="ow">or</span> <span class="n">torch</span><span class="o">.</span><span class="n">isinf</span><span class="p">(</span><span class="n">tr_loss_step</span><span class="p">))</span> + <span class="p">):</span> + <span class="c1"># if loss is nan or inf simply add the average of previous logged losses</span> + <span class="n">tr_loss</span> <span class="o">+=</span> <span class="n">tr_loss</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">_globalstep_last_logged</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">tr_loss</span> <span class="o">+=</span> <span class="n">tr_loss_step</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">current_flos</span> <span class="o">+=</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">floating_point_ops</span><span class="p">(</span><span class="n">inputs</span><span class="p">))</span> + + <span class="c1"># Optimizer step for deepspeed must be called on every step regardless of the value of gradient_accumulation_steps</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="o">.</span><span class="n">step</span><span class="p">()</span> + + <span class="k">if</span> <span class="n">total_batched_samples</span> <span class="o">%</span> <span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="p">(</span> + <span class="c1"># last step in epoch but step is always smaller than gradient_accumulation_steps</span> + <span class="n">steps_in_epoch</span> <span class="o">&lt;=</span> <span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span> + <span class="ow">and</span> <span class="p">(</span><span class="n">step</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="n">steps_in_epoch</span> + <span class="p">):</span> + <span class="c1"># Gradient clipping</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">max_grad_norm</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">args</span><span class="o">.</span><span class="n">max_grad_norm</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="c1"># deepspeed does its own clipping</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_grad_scaling</span><span class="p">:</span> + <span class="c1"># Reduce gradients first for XLA</span> + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="n">gradients</span> <span class="o">=</span> <span class="n">xm</span><span class="o">.</span><span class="n">_fetch_gradients</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">)</span> + <span class="n">xm</span><span class="o">.</span><span class="n">all_reduce</span><span class="p">(</span><span class="s2">&quot;sum&quot;</span><span class="p">,</span> <span class="n">gradients</span><span class="p">,</span> <span class="n">scale</span><span class="o">=</span><span class="mf">1.0</span> <span class="o">/</span> <span class="n">xm</span><span class="o">.</span><span class="n">xrt_world_size</span><span class="p">())</span> + <span class="c1"># AMP: gradients need unscaling</span> + <span class="bp">self</span><span class="o">.</span><span class="n">scaler</span><span class="o">.</span><span class="n">unscale_</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">()</span> <span class="ow">and</span> <span class="n">args</span><span class="o">.</span><span class="n">fp16</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">clip_master_grads</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">max_grad_norm</span><span class="p">)</span> + <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">,</span> <span class="s2">&quot;clip_grad_norm&quot;</span><span class="p">):</span> + <span class="c1"># Some optimizers (like the sharded optimizer) have a specific way to do gradient clipping</span> + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">clip_grad_norm</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">max_grad_norm</span><span class="p">)</span> + <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="s2">&quot;clip_grad_norm_&quot;</span><span class="p">):</span> + <span class="c1"># Some models (like FullyShardedDDP) have a specific way to do gradient clipping</span> + <span class="n">model</span><span class="o">.</span><span class="n">clip_grad_norm_</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">max_grad_norm</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># Revert to normal clipping otherwise, handling Apex or full precision</span> + <span class="n">nn</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">clip_grad_norm_</span><span class="p">(</span> + <span class="n">amp</span><span class="o">.</span><span class="n">master_params</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_apex</span> <span class="k">else</span> <span class="n">model</span><span class="o">.</span><span class="n">parameters</span><span class="p">(),</span> + <span class="n">args</span><span class="o">.</span><span class="n">max_grad_norm</span><span class="p">,</span> + <span class="p">)</span> + + <span class="c1"># Optimizer step</span> + <span class="n">optimizer_was_run</span> <span class="o">=</span> <span class="kc">True</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="k">pass</span> <span class="c1"># called outside the loop</span> + <span class="k">elif</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_grad_scaling</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">scaler</span><span class="o">.</span><span class="n">step</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">scaler</span><span class="o">.</span><span class="n">update</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">xm</span><span class="o">.</span><span class="n">optimizer_step</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_grad_scaling</span><span class="p">:</span> + <span class="n">scale_before</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scaler</span><span class="o">.</span><span class="n">get_scale</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">scaler</span><span class="o">.</span><span class="n">step</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">scaler</span><span class="o">.</span><span class="n">update</span><span class="p">()</span> + <span class="n">scale_after</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scaler</span><span class="o">.</span><span class="n">get_scale</span><span class="p">()</span> + <span class="n">optimizer_was_run</span> <span class="o">=</span> <span class="n">scale_before</span> <span class="o">&lt;=</span> <span class="n">scale_after</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">step</span><span class="p">()</span> + + <span class="k">if</span> <span class="n">optimizer_was_run</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span><span class="o">.</span><span class="n">step</span><span class="p">()</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">tmp_model</span><span class="o">.</span><span class="n">zero_grad</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">epoch</span> <span class="o">=</span> <span class="n">epoch</span> <span class="o">+</span> <span class="p">(</span><span class="n">step</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">+</span> <span class="n">steps_skipped</span><span class="p">)</span> <span class="o">/</span> <span class="n">steps_in_epoch</span> + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_step_end</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">_maybe_log_save_evaluate</span><span class="p">(</span><span class="n">tr_loss</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tmp_model</span><span class="p">,</span> <span class="n">trial</span><span class="p">,</span> <span class="n">epoch</span><span class="p">,</span> <span class="n">ignore_keys_for_eval</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_substep_end</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="o">.</span><span class="n">should_epoch_stop</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="o">.</span><span class="n">should_training_stop</span><span class="p">:</span> + <span class="k">break</span> + <span class="k">if</span> <span class="n">step</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;There seems to be not a single sample in your epoch_iterator, stopping training at step&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span><span class="si">}</span><span class="s2">! This is expected if you&#39;re using an IterableDataset and set&quot;</span> + <span class="sa">f</span><span class="s2">&quot; num_steps (</span><span class="si">{</span><span class="n">max_steps</span><span class="si">}</span><span class="s2">) higher than the number of available samples.&quot;</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="o">.</span><span class="n">should_training_stop</span> <span class="o">=</span> <span class="kc">True</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_epoch_end</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_maybe_log_save_evaluate</span><span class="p">(</span><span class="n">tr_loss</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tmp_model</span><span class="p">,</span> <span class="n">trial</span><span class="p">,</span> <span class="n">epoch</span><span class="p">,</span> <span class="n">ignore_keys_for_eval</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">DebugOption</span><span class="o">.</span><span class="n">TPU_METRICS_DEBUG</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">debug</span><span class="p">:</span> + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="c1"># tpu-comment: Logging debug metrics for PyTorch/XLA (compile, execute times, ops, etc.)</span> + <span class="n">xm</span><span class="o">.</span><span class="n">master_print</span><span class="p">(</span><span class="n">met</span><span class="o">.</span><span class="n">metrics_report</span><span class="p">())</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;You enabled PyTorch/XLA debug metrics but you don&#39;t have a TPU &quot;</span> + <span class="s2">&quot;configured. Check your training configuration if this is unexpected.&quot;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="o">.</span><span class="n">should_training_stop</span><span class="p">:</span> + <span class="k">break</span> + + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">past_index</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;_past&quot;</span><span class="p">):</span> + <span class="c1"># Clean the state at the end of training</span> + <span class="nb">delattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;_past&quot;</span><span class="p">)</span> + + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n\n</span><span class="s2">Training completed. Do not forget to share your model on huggingface.co/models =)</span><span class="se">\n\n</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">load_best_model_at_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="c1"># Wait for everyone to get here so we are sur the model has been saved by process 0.</span> + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="n">xm</span><span class="o">.</span><span class="n">rendezvous</span><span class="p">(</span><span class="s2">&quot;load_best_model_at_end&quot;</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="n">dist</span><span class="o">.</span><span class="n">barrier</span><span class="p">()</span> + <span class="k">elif</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="n">smp</span><span class="o">.</span><span class="n">barrier</span><span class="p">()</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">_load_best_model</span><span class="p">()</span> + + <span class="c1"># add remaining tr_loss</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_total_loss_scalar</span> <span class="o">+=</span> <span class="n">tr_loss</span><span class="o">.</span><span class="n">item</span><span class="p">()</span> + <span class="n">train_loss</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_total_loss_scalar</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span> + + <span class="n">metrics</span> <span class="o">=</span> <span class="n">speed_metrics</span><span class="p">(</span><span class="s2">&quot;train&quot;</span><span class="p">,</span> <span class="n">start_time</span><span class="p">,</span> <span class="n">num_samples</span><span class="o">=</span><span class="n">num_train_samples</span><span class="p">,</span> <span class="n">num_steps</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">max_steps</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">store_flos</span><span class="p">()</span> + <span class="n">metrics</span><span class="p">[</span><span class="s2">&quot;total_flos&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">total_flos</span> + <span class="n">metrics</span><span class="p">[</span><span class="s2">&quot;train_loss&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">train_loss</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">is_in_train</span> <span class="o">=</span> <span class="kc">False</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">_memory_tracker</span><span class="o">.</span><span class="n">stop_and_update_metrics</span><span class="p">(</span><span class="n">metrics</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">metrics</span><span class="p">)</span> + + <span class="n">run_dir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_output_dir</span><span class="p">(</span><span class="n">trial</span><span class="p">)</span> + <span class="n">checkpoints_sorted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sorted_checkpoints</span><span class="p">(</span><span class="n">use_mtime</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">output_dir</span><span class="o">=</span><span class="n">run_dir</span><span class="p">)</span> + + <span class="c1"># Delete the last checkpoint when save_total_limit=1 if it&#39;s different from the best checkpoint and process allowed to save.</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">save_total_limit</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> + <span class="k">for</span> <span class="n">checkpoint</span> <span class="ow">in</span> <span class="n">checkpoints_sorted</span><span class="p">:</span> + <span class="k">if</span> <span class="n">checkpoint</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Deleting older checkpoint [</span><span class="si">{</span><span class="n">checkpoint</span><span class="si">}</span><span class="s2">] due to args.save_total_limit&quot;</span><span class="p">)</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_train_end</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">TrainOutput</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span><span class="p">,</span> <span class="n">train_loss</span><span class="p">,</span> <span class="n">metrics</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._inner_training_loop"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._inner_training_loop">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_inner_training_loop</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> <span class="n">batch_size</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">resume_from_checkpoint</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">trial</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ignore_keys_for_eval</span><span class="o">=</span><span class="kc">None</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&#39;&#39;&#39;</span> +<span class="sd"> 0 This function serves to train one time</span> +<span class="sd"> 1 Update the self.train_dataset before calling this function</span> +<span class="sd"> &#39;&#39;&#39;</span> + <span class="c1"># 1 Get dataloader</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_train_batch_size</span> <span class="o">=</span> <span class="n">batch_size</span> + <span class="c1"># Data loader and number of training steps</span> + <span class="n">train_dataloader</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_train_dataloader</span><span class="p">()</span> + <span class="n">total_train_batch_size</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">train_batch_size</span> <span class="o">*</span> <span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span> <span class="o">*</span> <span class="n">args</span><span class="o">.</span><span class="n">world_size</span> + + <span class="n">len_dataloader</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">has_length</span><span class="p">(</span><span class="n">train_dataloader</span><span class="p">):</span> + <span class="n">len_dataloader</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">train_dataloader</span><span class="p">)</span> + <span class="n">num_update_steps_per_epoch</span> <span class="o">=</span> <span class="n">len_dataloader</span> <span class="o">//</span> <span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span> + <span class="n">num_update_steps_per_epoch</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">num_update_steps_per_epoch</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> + <span class="n">num_examples</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_examples</span><span class="p">(</span><span class="n">train_dataloader</span><span class="p">)</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">max_steps</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> + <span class="n">num_train_epochs</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">//</span> <span class="n">num_update_steps_per_epoch</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span> + <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">%</span> <span class="n">num_update_steps_per_epoch</span> <span class="o">&gt;</span> <span class="mi">0</span> + <span class="p">)</span> + <span class="c1"># May be slightly incorrect if the last batch in the training dataloader has a smaller size but it&#39;s</span> + <span class="c1"># the best we can do.</span> + <span class="n">num_train_samples</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">*</span> <span class="n">total_train_batch_size</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">max_steps</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">num_train_epochs</span> <span class="o">*</span> <span class="n">num_update_steps_per_epoch</span><span class="p">)</span> + <span class="n">num_train_epochs</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">num_train_epochs</span><span class="p">)</span> + <span class="n">num_train_samples</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_examples</span><span class="p">(</span><span class="n">train_dataloader</span><span class="p">)</span> <span class="o">*</span> <span class="n">args</span><span class="o">.</span><span class="n">num_train_epochs</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> <span class="c1"># Rely on max_steps when dataloader does not have a working size</span> + <span class="n">max_steps</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> + <span class="c1"># Setting a very large number of epochs so we go as many times as necessary over the iterator.</span> + <span class="n">num_train_epochs</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">maxsize</span> + <span class="n">num_update_steps_per_epoch</span> <span class="o">=</span> <span class="n">max_steps</span> + <span class="n">num_examples</span> <span class="o">=</span> <span class="n">total_train_batch_size</span> <span class="o">*</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> + <span class="n">num_train_samples</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">max_steps</span> <span class="o">*</span> <span class="n">total_train_batch_size</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;args.max_steps must be set to a positive value if dataloader does not have a length, was&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">args</span><span class="o">.</span><span class="n">max_steps</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">DebugOption</span><span class="o">.</span><span class="n">UNDERFLOW_OVERFLOW</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">debug</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">n_gpu</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> + <span class="c1"># nn.DataParallel(model) replicates the model, creating new variables and module</span> + <span class="c1"># references registered here no longer work on other gpus, breaking the module</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;Currently --debug underflow_overflow is not supported under DP. Please use DDP&quot;</span> + <span class="s2">&quot; (torch.distributed.launch).&quot;</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">debug_overflow</span> <span class="o">=</span> <span class="n">DebugUnderflowOverflow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">)</span> <span class="c1"># noqa</span> + + <span class="n">delay_optimizer_creation</span> <span class="o">=</span> <span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> + <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="o">!=</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">SIMPLE</span> + <span class="ow">or</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">()</span> + <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">fsdp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="n">deepspeed_engine</span><span class="p">,</span> <span class="n">optimizer</span><span class="p">,</span> <span class="n">lr_scheduler</span> <span class="o">=</span> <span class="n">deepspeed_init</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> <span class="n">num_training_steps</span><span class="o">=</span><span class="n">max_steps</span><span class="p">,</span> <span class="n">resume_from_checkpoint</span><span class="o">=</span><span class="n">resume_from_checkpoint</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">deepspeed_engine</span><span class="o">.</span><span class="n">module</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span> <span class="o">=</span> <span class="n">deepspeed_engine</span> + <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span> <span class="o">=</span> <span class="n">deepspeed_engine</span> + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="o">=</span> <span class="n">optimizer</span> + <span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span> <span class="o">=</span> <span class="n">lr_scheduler</span> + <span class="c1">#print(&quot;I just create a optimizer here!&quot;) # called</span> + <span class="k">elif</span> <span class="ow">not</span> <span class="n">delay_optimizer_creation</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">create_optimizer_and_scheduler</span><span class="p">(</span><span class="n">num_training_steps</span><span class="o">=</span><span class="n">max_steps</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="n">TrainerState</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">is_hyper_param_search</span> <span class="o">=</span> <span class="n">trial</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> + + <span class="c1"># Activate gradient checkpointing if needed</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">gradient_checkpointing</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">gradient_checkpointing_enable</span><span class="p">()</span> + + <span class="c1">#model = self._wrap_model(self.model_wrapped)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tmp_model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_wrap_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span><span class="p">)</span> + + + <span class="c1">#if is_sagemaker_mp_enabled() and resume_from_checkpoint is not None:</span> + <span class="c1"># self._load_from_checkpoint(resume_from_checkpoint, model)</span> + + <span class="c1"># for the rest of this function `model` is the outside model, whether it was wrapped or not</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tmp_model</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tmp_model</span> + + <span class="k">if</span> <span class="n">delay_optimizer_creation</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;I create here!&quot;</span><span class="p">)</span> <span class="c1"># not called</span> + <span class="bp">self</span><span class="o">.</span><span class="n">create_optimizer_and_scheduler</span><span class="p">(</span><span class="n">num_training_steps</span><span class="o">=</span><span class="n">max_steps</span><span class="p">)</span> + + <span class="k">return</span> <span class="kc">True</span></div> + + <span class="c1"># Check if saved optimizer or scheduler states exist</span> + <span class="c1">#self._load_optimizer_and_scheduler(resume_from_checkpoint)</span> + + <span class="c1"># important: at this point:</span> + <span class="c1"># self.model is the Transformers Model</span> + <span class="c1"># self.model_wrapped is DDP(Transformers Model), Deepspeed(Transformers Model), etc.</span> + + + +<div class="viewcode-block" id="RaftTrainer._get_output_dir"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_output_dir">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_get_output_dir</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">trial</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">trial</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">OPTUNA</span><span class="p">:</span> + <span class="n">run_id</span> <span class="o">=</span> <span class="n">trial</span><span class="o">.</span><span class="n">number</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">RAY</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">ray</span><span class="w"> </span><span class="kn">import</span> <span class="n">tune</span> + + <span class="n">run_id</span> <span class="o">=</span> <span class="n">tune</span><span class="o">.</span><span class="n">get_trial_id</span><span class="p">()</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">SIGOPT</span><span class="p">:</span> + <span class="n">run_id</span> <span class="o">=</span> <span class="n">trial</span><span class="o">.</span><span class="n">id</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">WANDB</span><span class="p">:</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">wandb</span> + + <span class="n">run_id</span> <span class="o">=</span> <span class="n">wandb</span><span class="o">.</span><span class="n">run</span><span class="o">.</span><span class="n">id</span> + <span class="n">run_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_name</span><span class="p">(</span><span class="n">trial</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">&quot;run-</span><span class="si">{</span><span class="n">run_id</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="n">run_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">run_name</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">run_dir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span> + <span class="k">return</span> <span class="n">run_dir</span></div> + + +<div class="viewcode-block" id="RaftTrainer._load_from_checkpoint"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_from_checkpoint">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_load_from_checkpoint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resume_from_checkpoint</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="k">if</span> <span class="n">model</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="p">,</span> <span class="n">WEIGHTS_NAME</span><span class="p">))</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span> + <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="p">,</span> <span class="n">WEIGHTS_INDEX_NAME</span><span class="p">)</span> + <span class="p">):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Can&#39;t find a valid checkpoint at </span><span class="si">{</span><span class="n">resume_from_checkpoint</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Loading model from </span><span class="si">{</span><span class="n">resume_from_checkpoint</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="p">,</span> <span class="n">CONFIG_NAME</span><span class="p">)):</span> + <span class="n">config</span> <span class="o">=</span> <span class="n">PretrainedConfig</span><span class="o">.</span><span class="n">from_json_file</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="p">,</span> <span class="n">CONFIG_NAME</span><span class="p">))</span> + <span class="n">checkpoint_version</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">transformers_version</span> + <span class="k">if</span> <span class="n">checkpoint_version</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">checkpoint_version</span> <span class="o">!=</span> <span class="n">__version__</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;You are resuming training from a checkpoint trained with </span><span class="si">{</span><span class="n">checkpoint_version</span><span class="si">}</span><span class="s2"> of &quot;</span> + <span class="sa">f</span><span class="s2">&quot;Transformers but your current version is </span><span class="si">{</span><span class="n">__version__</span><span class="si">}</span><span class="s2">. This is not recommended and could &quot;</span> + <span class="s2">&quot;yield to errors or unwanted behaviors.&quot;</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="p">,</span> <span class="n">WEIGHTS_NAME</span><span class="p">)):</span> + <span class="c1"># If the model is on the GPU, it still works!</span> + <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="p">,</span> <span class="s2">&quot;user_content.pt&quot;</span><span class="p">)):</span> + <span class="c1"># If the &#39;user_content.pt&#39; file exists, load with the new smp api.</span> + <span class="c1"># Checkpoint must have been saved with the new smp api.</span> + <span class="n">smp</span><span class="o">.</span><span class="n">resume_from_checkpoint</span><span class="p">(</span> + <span class="n">path</span><span class="o">=</span><span class="n">resume_from_checkpoint</span><span class="p">,</span> <span class="n">tag</span><span class="o">=</span><span class="n">WEIGHTS_NAME</span><span class="p">,</span> <span class="n">partial</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">load_optimizer</span><span class="o">=</span><span class="kc">False</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># If the &#39;user_content.pt&#39; file does NOT exist, load with the old smp api.</span> + <span class="c1"># Checkpoint must have been saved with the old smp api.</span> + <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">&quot;fp16&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">fp16</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;Enabling FP16 and loading from smp &lt; 1.10 checkpoint together is not suppported.&quot;</span> + <span class="p">)</span> + <span class="n">state_dict</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="p">,</span> <span class="n">WEIGHTS_NAME</span><span class="p">),</span> <span class="n">map_location</span><span class="o">=</span><span class="s2">&quot;cpu&quot;</span><span class="p">)</span> + <span class="c1"># Required for smp to not auto-translate state_dict from hf to smp (is already smp).</span> + <span class="n">state_dict</span><span class="p">[</span><span class="s2">&quot;_smp_is_partial&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span> + <span class="n">load_result</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">state_dict</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="c1"># release memory</span> + <span class="k">del</span> <span class="n">state_dict</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># We load the model state dict on the CPU to avoid an OOM error.</span> + <span class="n">state_dict</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">resume_from_checkpoint</span><span class="p">,</span> <span class="n">WEIGHTS_NAME</span><span class="p">),</span> <span class="n">map_location</span><span class="o">=</span><span class="s2">&quot;cpu&quot;</span><span class="p">)</span> + <span class="c1"># workaround for FSDP bug https://github.com/pytorch/pytorch/issues/82963</span> + <span class="c1"># which takes *args instead of **kwargs</span> + <span class="n">load_result</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">state_dict</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> + <span class="c1"># release memory</span> + <span class="k">del</span> <span class="n">state_dict</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_issue_warnings_after_load</span><span class="p">(</span><span class="n">load_result</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># We load the sharded checkpoint</span> + <span class="n">load_result</span> <span class="o">=</span> <span class="n">load_sharded_checkpoint</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">resume_from_checkpoint</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="n">is_sagemaker_mp_enabled</span><span class="p">())</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_issue_warnings_after_load</span><span class="p">(</span><span class="n">load_result</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._load_best_model"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_best_model">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_load_best_model</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Loading best model from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span><span class="si">}</span><span class="s2"> (score: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_metric</span><span class="si">}</span><span class="s2">).&quot;</span><span class="p">)</span> + <span class="n">best_model_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span><span class="p">,</span> <span class="n">WEIGHTS_NAME</span><span class="p">)</span> + <span class="n">model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span> <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">()</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">best_model_path</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="c1"># this removes the pre-hooks from the previous engine</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span><span class="o">.</span><span class="n">destroy</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="c1"># temp hack until Deepspeed fixes the problem with resume from an existing engine that did some stepping</span> + <span class="n">deepspeed_engine</span><span class="p">,</span> <span class="n">optimizer</span><span class="p">,</span> <span class="n">lr_scheduler</span> <span class="o">=</span> <span class="n">deepspeed_init</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">num_training_steps</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">max_steps</span><span class="p">,</span> + <span class="n">resume_from_checkpoint</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span><span class="p">,</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">deepspeed_engine</span><span class="o">.</span><span class="n">module</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span> <span class="o">=</span> <span class="n">deepspeed_engine</span> + <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span> <span class="o">=</span> <span class="n">deepspeed_engine</span> + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="o">=</span> <span class="n">optimizer</span> + <span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span> <span class="o">=</span> <span class="n">lr_scheduler</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span><span class="p">,</span> <span class="s2">&quot;user_content.pt&quot;</span><span class="p">)):</span> + <span class="c1"># If the &#39;user_content.pt&#39; file exists, load with the new smp api.</span> + <span class="c1"># Checkpoint must have been saved with the new smp api.</span> + <span class="n">smp</span><span class="o">.</span><span class="n">resume_from_checkpoint</span><span class="p">(</span> + <span class="n">path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span><span class="p">,</span> + <span class="n">tag</span><span class="o">=</span><span class="n">WEIGHTS_NAME</span><span class="p">,</span> + <span class="n">partial</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">load_optimizer</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># If the &#39;user_content.pt&#39; file does NOT exist, load with the old smp api.</span> + <span class="c1"># Checkpoint must have been saved with the old smp api.</span> + <span class="n">state_dict</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">best_model_path</span><span class="p">,</span> <span class="n">map_location</span><span class="o">=</span><span class="s2">&quot;cpu&quot;</span><span class="p">)</span> + <span class="n">state_dict</span><span class="p">[</span><span class="s2">&quot;_smp_is_partial&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span> + <span class="n">load_result</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">state_dict</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># We load the model state dict on the CPU to avoid an OOM error.</span> + <span class="n">state_dict</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">best_model_path</span><span class="p">,</span> <span class="n">map_location</span><span class="o">=</span><span class="s2">&quot;cpu&quot;</span><span class="p">)</span> + <span class="c1"># If the model is on the GPU, it still works!</span> + <span class="c1"># workaround for FSDP bug https://github.com/pytorch/pytorch/issues/82963</span> + <span class="c1"># which takes *args instead of **kwargs</span> + <span class="n">load_result</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">state_dict</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_issue_warnings_after_load</span><span class="p">(</span><span class="n">load_result</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span><span class="p">,</span> <span class="n">WEIGHTS_INDEX_NAME</span><span class="p">)):</span> + <span class="n">load_result</span> <span class="o">=</span> <span class="n">load_sharded_checkpoint</span><span class="p">(</span> + <span class="n">model</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="n">is_sagemaker_mp_enabled</span><span class="p">()</span> + <span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_issue_warnings_after_load</span><span class="p">(</span><span class="n">load_result</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Could not locate the best model at </span><span class="si">{</span><span class="n">best_model_path</span><span class="si">}</span><span class="s2">, if you are running a distributed training &quot;</span> + <span class="s2">&quot;on multiple nodes, you should activate `--save_on_each_node`.&quot;</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._issue_warnings_after_load"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._issue_warnings_after_load">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_issue_warnings_after_load</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">load_result</span><span class="p">):</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">load_result</span><span class="o">.</span><span class="n">missing_keys</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_keys_to_ignore_on_save</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">set</span><span class="p">(</span><span class="n">load_result</span><span class="o">.</span><span class="n">missing_keys</span><span class="p">)</span> <span class="o">==</span> <span class="nb">set</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_keys_to_ignore_on_save</span> + <span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">tie_weights</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;There were missing keys in the checkpoint model loaded: </span><span class="si">{</span><span class="n">load_result</span><span class="o">.</span><span class="n">missing_keys</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">load_result</span><span class="o">.</span><span class="n">unexpected_keys</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;There were unexpected keys in the checkpoint model loaded: </span><span class="si">{</span><span class="n">load_result</span><span class="o">.</span><span class="n">unexpected_keys</span><span class="si">}</span><span class="s2">.&quot;</span> + <span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._maybe_log_save_evaluate"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._maybe_log_save_evaluate">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_maybe_log_save_evaluate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tr_loss</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">trial</span><span class="p">,</span> <span class="n">epoch</span><span class="p">,</span> <span class="n">ignore_keys_for_eval</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="o">.</span><span class="n">should_log</span><span class="p">:</span> + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="n">xm</span><span class="o">.</span><span class="n">mark_step</span><span class="p">()</span> + + <span class="n">logs</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> + + <span class="c1"># all_gather + mean() to get average loss over all processes</span> + <span class="n">tr_loss_scalar</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_nested_gather</span><span class="p">(</span><span class="n">tr_loss</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span><span class="o">.</span><span class="n">item</span><span class="p">()</span> + + <span class="c1"># reset tr_loss to zero</span> + <span class="n">tr_loss</span> <span class="o">-=</span> <span class="n">tr_loss</span> + + <span class="n">logs</span><span class="p">[</span><span class="s2">&quot;loss&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">round</span><span class="p">(</span><span class="n">tr_loss_scalar</span> <span class="o">/</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">_globalstep_last_logged</span><span class="p">),</span> <span class="mi">4</span><span class="p">)</span> + <span class="n">logs</span><span class="p">[</span><span class="s2">&quot;learning_rate&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_learning_rate</span><span class="p">()</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">_total_loss_scalar</span> <span class="o">+=</span> <span class="n">tr_loss_scalar</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_globalstep_last_logged</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span> + <span class="bp">self</span><span class="o">.</span><span class="n">store_flos</span><span class="p">()</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">logs</span><span class="p">)</span> + + <span class="n">metrics</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="o">.</span><span class="n">should_evaluate</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">eval_dataset</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> + <span class="k">for</span> <span class="n">eval_dataset_name</span><span class="p">,</span> <span class="n">eval_dataset</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">eval_dataset</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> + <span class="n">metrics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span> + <span class="n">eval_dataset</span><span class="o">=</span><span class="n">eval_dataset</span><span class="p">,</span> + <span class="n">ignore_keys</span><span class="o">=</span><span class="n">ignore_keys_for_eval</span><span class="p">,</span> + <span class="n">metric_key_prefix</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;eval_</span><span class="si">{</span><span class="n">eval_dataset_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">metrics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="n">ignore_keys</span><span class="o">=</span><span class="n">ignore_keys_for_eval</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_report_to_hp_search</span><span class="p">(</span><span class="n">trial</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span><span class="p">,</span> <span class="n">metrics</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_save_checkpoint</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">trial</span><span class="p">,</span> <span class="n">metrics</span><span class="o">=</span><span class="n">metrics</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_save</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._load_rng_state"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_rng_state">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_load_rng_state</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">checkpoint</span><span class="p">):</span> + <span class="c1"># Load RNG states from `checkpoint`</span> + <span class="k">if</span> <span class="n">checkpoint</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">return</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">process_index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">process_index</span> + <span class="n">rng_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;rng_state_</span><span class="si">{</span><span class="n">process_index</span><span class="si">}</span><span class="s2">.pth&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">rng_file</span><span class="p">):</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Didn&#39;t find an RNG file for process </span><span class="si">{</span><span class="n">process_index</span><span class="si">}</span><span class="s2">, if you are resuming a training that &quot;</span> + <span class="s2">&quot;wasn&#39;t launched in a distributed fashion, reproducibility is not guaranteed.&quot;</span> + <span class="p">)</span> + <span class="k">return</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">rng_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="s2">&quot;rng_state.pth&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">rng_file</span><span class="p">):</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span> + <span class="s2">&quot;Didn&#39;t find an RNG file, if you are resuming a training that was launched in a distributed &quot;</span> + <span class="s2">&quot;fashion, reproducibility is not guaranteed.&quot;</span> + <span class="p">)</span> + <span class="k">return</span> + + <span class="n">checkpoint_rng_state</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">rng_file</span><span class="p">)</span> + <span class="n">random</span><span class="o">.</span><span class="n">setstate</span><span class="p">(</span><span class="n">checkpoint_rng_state</span><span class="p">[</span><span class="s2">&quot;python&quot;</span><span class="p">])</span> + <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">set_state</span><span class="p">(</span><span class="n">checkpoint_rng_state</span><span class="p">[</span><span class="s2">&quot;numpy&quot;</span><span class="p">])</span> + <span class="n">torch</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">set_rng_state</span><span class="p">(</span><span class="n">checkpoint_rng_state</span><span class="p">[</span><span class="s2">&quot;cpu&quot;</span><span class="p">])</span> + <span class="k">if</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">is_available</span><span class="p">():</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">set_rng_state</span><span class="p">(</span><span class="n">checkpoint_rng_state</span><span class="p">[</span><span class="s2">&quot;cuda&quot;</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">set_rng_state_all</span><span class="p">(</span><span class="n">checkpoint_rng_state</span><span class="p">[</span><span class="s2">&quot;cuda&quot;</span><span class="p">])</span> + <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Didn&#39;t manage to set back the RNG states of the GPU because of the following error:</span><span class="se">\n</span><span class="s2"> </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">This won&#39;t yield the same results as if the training had not been interrupted.&quot;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="n">xm</span><span class="o">.</span><span class="n">set_rng_state</span><span class="p">(</span><span class="n">checkpoint_rng_state</span><span class="p">[</span><span class="s2">&quot;xla&quot;</span><span class="p">])</span></div> + + +<div class="viewcode-block" id="RaftTrainer._save_checkpoint"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._save_checkpoint">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_save_checkpoint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">trial</span><span class="p">,</span> <span class="n">metrics</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="c1"># In all cases, including ddp/dp/deepspeed, self.model is always a reference to the model we</span> + <span class="c1"># want to save except FullyShardedDDP.</span> + <span class="c1"># assert unwrap_model(model) is self.model, &quot;internal model should be a reference to self.model&quot;</span> + + <span class="c1"># Save model checkpoint</span> + <span class="c1">#checkpoint_folder = f&quot;{PREFIX_CHECKPOINT_DIR}-{self.state.global_step}&quot;</span> + <span class="n">checkpoint_folder</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">PREFIX_CHECKPOINT_DIR</span><span class="si">}</span><span class="s2">-</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">save_counter</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="c1">##########</span> + <span class="bp">self</span><span class="o">.</span><span class="n">save_counter</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="c1">##########</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">trial</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">store_flos</span><span class="p">()</span> + + <span class="n">run_dir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_output_dir</span><span class="p">(</span><span class="n">trial</span><span class="o">=</span><span class="n">trial</span><span class="p">)</span> + <span class="n">output_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">run_dir</span><span class="p">,</span> <span class="n">checkpoint_folder</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">save_model</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">_internal_call</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="c1"># under zero3 model file itself doesn&#39;t get saved since it&#39;s bogus! Unless deepspeed</span> + <span class="c1"># config `stage3_gather_16bit_weights_on_model_save` is True</span> + <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="o">.</span><span class="n">save_checkpoint</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span> + + <span class="c1"># Save optimizer and scheduler</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sharded_ddp</span> <span class="o">==</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">SIMPLE</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">consolidate_state_dict</span><span class="p">()</span> + + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="n">xm</span><span class="o">.</span><span class="n">rendezvous</span><span class="p">(</span><span class="s2">&quot;saving_optimizer_states&quot;</span><span class="p">)</span> + <span class="n">xm</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">state_dict</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">OPTIMIZER_NAME</span><span class="p">))</span> + <span class="k">with</span> <span class="n">warnings</span><span class="o">.</span><span class="n">catch_warnings</span><span class="p">(</span><span class="n">record</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">as</span> <span class="n">caught_warnings</span><span class="p">:</span> + <span class="n">xm</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span><span class="o">.</span><span class="n">state_dict</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">SCHEDULER_NAME</span><span class="p">))</span> + <span class="n">reissue_pt_warnings</span><span class="p">(</span><span class="n">caught_warnings</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="n">opt_state_dict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">local_state_dict</span><span class="p">(</span><span class="n">gather_if_shard</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">smp</span><span class="o">.</span><span class="n">barrier</span><span class="p">()</span> + <span class="k">if</span> <span class="n">smp</span><span class="o">.</span><span class="n">rdp_rank</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">smp</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">shard_optimizer_state</span><span class="p">:</span> + <span class="n">smp</span><span class="o">.</span><span class="n">save</span><span class="p">(</span> + <span class="n">opt_state_dict</span><span class="p">,</span> + <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">OPTIMIZER_NAME</span><span class="p">),</span> + <span class="n">partial</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">v3</span><span class="o">=</span><span class="n">smp</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">cfg</span><span class="o">.</span><span class="n">shard_optimizer_state</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="k">with</span> <span class="n">warnings</span><span class="o">.</span><span class="n">catch_warnings</span><span class="p">(</span><span class="n">record</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">as</span> <span class="n">caught_warnings</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span><span class="o">.</span><span class="n">state_dict</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">SCHEDULER_NAME</span><span class="p">))</span> + <span class="n">reissue_pt_warnings</span><span class="p">(</span><span class="n">caught_warnings</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_grad_scaling</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">scaler</span><span class="o">.</span><span class="n">state_dict</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">SCALER_NAME</span><span class="p">))</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="c1"># deepspeed.save_checkpoint above saves model/optim/sched</span> + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">state_dict</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">OPTIMIZER_NAME</span><span class="p">))</span> + <span class="k">with</span> <span class="n">warnings</span><span class="o">.</span><span class="n">catch_warnings</span><span class="p">(</span><span class="n">record</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">as</span> <span class="n">caught_warnings</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span><span class="o">.</span><span class="n">state_dict</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">SCHEDULER_NAME</span><span class="p">))</span> + <span class="n">reissue_pt_warnings</span><span class="p">(</span><span class="n">caught_warnings</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_grad_scaling</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">scaler</span><span class="o">.</span><span class="n">state_dict</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">SCALER_NAME</span><span class="p">))</span> + + <span class="c1"># Determine the new best metric / best model checkpoint</span> + <span class="k">if</span> <span class="n">metrics</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">metric_for_best_model</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">metric_to_check</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">metric_for_best_model</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">metric_to_check</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;eval_&quot;</span><span class="p">):</span> + <span class="n">metric_to_check</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;eval_</span><span class="si">{</span><span class="n">metric_to_check</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="n">metric_value</span> <span class="o">=</span> <span class="n">metrics</span><span class="p">[</span><span class="n">metric_to_check</span><span class="p">]</span> + + <span class="n">operator</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">greater</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">greater_is_better</span> <span class="k">else</span> <span class="n">np</span><span class="o">.</span><span class="n">less</span> + <span class="k">if</span> <span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_metric</span> <span class="ow">is</span> <span class="kc">None</span> + <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span> <span class="ow">is</span> <span class="kc">None</span> + <span class="ow">or</span> <span class="n">operator</span><span class="p">(</span><span class="n">metric_value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_metric</span><span class="p">)</span> + <span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_metric</span> <span class="o">=</span> <span class="n">metric_value</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span> <span class="o">=</span> <span class="n">output_dir</span> + + <span class="c1"># Save the Trainer state</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">save_to_json</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">TRAINER_STATE_NAME</span><span class="p">))</span> + + <span class="c1"># Save RNG state in non-distributed training</span> + <span class="n">rng_states</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;python&quot;</span><span class="p">:</span> <span class="n">random</span><span class="o">.</span><span class="n">getstate</span><span class="p">(),</span> + <span class="s2">&quot;numpy&quot;</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">get_state</span><span class="p">(),</span> + <span class="s2">&quot;cpu&quot;</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">get_rng_state</span><span class="p">(),</span> + <span class="p">}</span> + <span class="k">if</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">is_available</span><span class="p">():</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="c1"># In non distributed, we save the global CUDA RNG state (will take care of DataParallel)</span> + <span class="n">rng_states</span><span class="p">[</span><span class="s2">&quot;cuda&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">get_rng_state_all</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">rng_states</span><span class="p">[</span><span class="s2">&quot;cuda&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">get_rng_state</span><span class="p">()</span> + + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="n">rng_states</span><span class="p">[</span><span class="s2">&quot;xla&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">xm</span><span class="o">.</span><span class="n">get_rng_state</span><span class="p">()</span> + + <span class="c1"># A process can arrive here before the process 0 has a chance to save the model, in which case output_dir may</span> + <span class="c1"># not yet exist.</span> + <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">rng_states</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="s2">&quot;rng_state.pth&quot;</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">rng_states</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;rng_state_</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">process_index</span><span class="si">}</span><span class="s2">.pth&quot;</span><span class="p">))</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">push_to_hub</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_push_from_checkpoint</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span> + + <span class="c1"># Maybe delete some older checkpoints.</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_rotate_checkpoints</span><span class="p">(</span><span class="n">use_mtime</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">output_dir</span><span class="o">=</span><span class="n">run_dir</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._load_optimizer_and_scheduler"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_optimizer_and_scheduler">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_load_optimizer_and_scheduler</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">checkpoint</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;If optimizer and scheduler states exist, load them.&quot;&quot;&quot;</span> + <span class="k">if</span> <span class="n">checkpoint</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">return</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="c1"># deepspeed loads optimizer/lr_scheduler together with the model in deepspeed_init</span> + <span class="k">return</span> + + <span class="n">checkpoint_file_exists</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">glob</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="n">OPTIMIZER_NAME</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;_*&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">()</span> + <span class="k">else</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="n">OPTIMIZER_NAME</span><span class="p">))</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">checkpoint_file_exists</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="n">SCHEDULER_NAME</span><span class="p">)):</span> + <span class="c1"># Load in optimizer and scheduler states</span> + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="c1"># On TPU we have to take some extra precautions to properly load the states on the right device.</span> + <span class="n">optimizer_state</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="n">OPTIMIZER_NAME</span><span class="p">),</span> <span class="n">map_location</span><span class="o">=</span><span class="s2">&quot;cpu&quot;</span><span class="p">)</span> + <span class="k">with</span> <span class="n">warnings</span><span class="o">.</span><span class="n">catch_warnings</span><span class="p">(</span><span class="n">record</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">as</span> <span class="n">caught_warnings</span><span class="p">:</span> + <span class="n">lr_scheduler_state</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="n">SCHEDULER_NAME</span><span class="p">),</span> <span class="n">map_location</span><span class="o">=</span><span class="s2">&quot;cpu&quot;</span><span class="p">)</span> + <span class="n">reissue_pt_warnings</span><span class="p">(</span><span class="n">caught_warnings</span><span class="p">)</span> + + <span class="n">xm</span><span class="o">.</span><span class="n">send_cpu_data_to_device</span><span class="p">(</span><span class="n">optimizer_state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="n">xm</span><span class="o">.</span><span class="n">send_cpu_data_to_device</span><span class="p">(</span><span class="n">lr_scheduler_state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">optimizer_state</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">lr_scheduler_state</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">map_location</span> <span class="o">=</span> <span class="s2">&quot;cpu&quot;</span> <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">()</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">device</span> + <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="s2">&quot;user_content.pt&quot;</span><span class="p">)):</span> + <span class="c1"># Optimizer checkpoint was saved with smp &gt;= 1.10</span> + <span class="k">def</span><span class="w"> </span><span class="nf">opt_load_hook</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <span class="n">opt</span><span class="p">):</span> + <span class="n">opt</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">smp</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="n">OPTIMIZER_NAME</span><span class="p">),</span> <span class="n">partial</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> + + <span class="k">else</span><span class="p">:</span> + <span class="c1"># Optimizer checkpoint was saved with smp &lt; 1.10</span> + <span class="k">def</span><span class="w"> </span><span class="nf">opt_load_hook</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <span class="n">opt</span><span class="p">):</span> + <span class="k">if</span> <span class="n">IS_SAGEMAKER_MP_POST_1_10</span><span class="p">:</span> + <span class="n">opt</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span> + <span class="n">smp</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="n">OPTIMIZER_NAME</span><span class="p">),</span> <span class="n">partial</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">back_compat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">opt</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">smp</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="n">OPTIMIZER_NAME</span><span class="p">),</span> <span class="n">partial</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span><span class="o">.</span><span class="n">register_post_step_hook</span><span class="p">(</span><span class="n">opt_load_hook</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span> + <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="n">OPTIMIZER_NAME</span><span class="p">),</span> <span class="n">map_location</span><span class="o">=</span><span class="n">map_location</span><span class="p">)</span> + <span class="p">)</span> + <span class="k">with</span> <span class="n">warnings</span><span class="o">.</span><span class="n">catch_warnings</span><span class="p">(</span><span class="n">record</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">as</span> <span class="n">caught_warnings</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">lr_scheduler</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="n">SCHEDULER_NAME</span><span class="p">)))</span> + <span class="n">reissue_pt_warnings</span><span class="p">(</span><span class="n">caught_warnings</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_grad_scaling</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="n">SCALER_NAME</span><span class="p">)):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">scaler</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="n">SCALER_NAME</span><span class="p">)))</span></div> + + +<div class="viewcode-block" id="RaftTrainer.hyperparameter_search"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.hyperparameter_search">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">hyperparameter_search</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">hp_space</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Callable</span><span class="p">[[</span><span class="s2">&quot;optuna.Trial&quot;</span><span class="p">],</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">float</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">compute_objective</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">float</span><span class="p">]],</span> <span class="nb">float</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">n_trials</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span> + <span class="n">direction</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;minimize&quot;</span><span class="p">,</span> + <span class="n">backend</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="s2">&quot;str&quot;</span><span class="p">,</span> <span class="n">HPSearchBackend</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">hp_name</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Callable</span><span class="p">[[</span><span class="s2">&quot;optuna.Trial&quot;</span><span class="p">],</span> <span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">BestRun</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Launch an hyperparameter search using `optuna` or `Ray Tune` or `SigOpt`. The optimized quantity is determined</span> +<span class="sd"> by `compute_objective`, which defaults to a function returning the evaluation loss when no metric is provided,</span> +<span class="sd"> the sum of all metrics otherwise.</span> +<span class="sd"> &lt;Tip warning={true}&gt;</span> +<span class="sd"> To use this method, you need to have provided a `model_init` when initializing your [`Trainer`]: we need to</span> +<span class="sd"> reinitialize the model at each new run. This is incompatible with the `optimizers` argument, so you need to</span> +<span class="sd"> subclass [`Trainer`] and override the method [`~Trainer.create_optimizer_and_scheduler`] for custom</span> +<span class="sd"> optimizer/scheduler.</span> +<span class="sd"> &lt;/Tip&gt;</span> +<span class="sd"> Args:</span> +<span class="sd"> hp_space (`Callable[[&quot;optuna.Trial&quot;], Dict[str, float]]`, *optional*):</span> +<span class="sd"> A function that defines the hyperparameter search space. Will default to</span> +<span class="sd"> [`~trainer_utils.default_hp_space_optuna`] or [`~trainer_utils.default_hp_space_ray`] or</span> +<span class="sd"> [`~trainer_utils.default_hp_space_sigopt`] depending on your backend.</span> +<span class="sd"> compute_objective (`Callable[[Dict[str, float]], float]`, *optional*):</span> +<span class="sd"> A function computing the objective to minimize or maximize from the metrics returned by the `evaluate`</span> +<span class="sd"> method. Will default to [`~trainer_utils.default_compute_objective`].</span> +<span class="sd"> n_trials (`int`, *optional*, defaults to 100):</span> +<span class="sd"> The number of trial runs to test.</span> +<span class="sd"> direction (`str`, *optional*, defaults to `&quot;minimize&quot;`):</span> +<span class="sd"> Whether to optimize greater or lower objects. Can be `&quot;minimize&quot;` or `&quot;maximize&quot;`, you should pick</span> +<span class="sd"> `&quot;minimize&quot;` when optimizing the validation loss, `&quot;maximize&quot;` when optimizing one or several metrics.</span> +<span class="sd"> backend (`str` or [`~training_utils.HPSearchBackend`], *optional*):</span> +<span class="sd"> The backend to use for hyperparameter search. Will default to optuna or Ray Tune or SigOpt, depending</span> +<span class="sd"> on which one is installed. If all are installed, will default to optuna.</span> +<span class="sd"> hp_name (`Callable[[&quot;optuna.Trial&quot;], str]]`, *optional*):</span> +<span class="sd"> A function that defines the trial/run name. Will default to None.</span> +<span class="sd"> kwargs (`Dict[str, Any]`, *optional*):</span> +<span class="sd"> Additional keyword arguments passed along to `optuna.create_study` or `ray.tune.run`. For more</span> +<span class="sd"> information see:</span> +<span class="sd"> - the documentation of</span> +<span class="sd"> [optuna.create_study](https://optuna.readthedocs.io/en/stable/reference/generated/optuna.study.create_study.html)</span> +<span class="sd"> - the documentation of [tune.run](https://docs.ray.io/en/latest/tune/api_docs/execution.html#tune-run)</span> +<span class="sd"> - the documentation of [sigopt](https://app.sigopt.com/docs/endpoints/experiments/create)</span> +<span class="sd"> Returns:</span> +<span class="sd"> [`trainer_utils.BestRun`]: All the information about the best run. Experiment summary can be found in</span> +<span class="sd"> `run_summary` attribute for Ray backend.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="n">backend</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">backend</span> <span class="o">=</span> <span class="n">default_hp_search_backend</span><span class="p">()</span> + <span class="k">if</span> <span class="n">backend</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> + <span class="s2">&quot;At least one of optuna or ray should be installed. &quot;</span> + <span class="s2">&quot;To install optuna run `pip install optuna`. &quot;</span> + <span class="s2">&quot;To install ray run `pip install ray[tune]`. &quot;</span> + <span class="s2">&quot;To install sigopt run `pip install sigopt`.&quot;</span> + <span class="p">)</span> + <span class="n">backend</span> <span class="o">=</span> <span class="n">HPSearchBackend</span><span class="p">(</span><span class="n">backend</span><span class="p">)</span> + <span class="k">if</span> <span class="n">backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">OPTUNA</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;You picked the optuna backend, but it is not installed. Use `pip install optuna`.&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="n">backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">RAY</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> + <span class="s2">&quot;You picked the Ray Tune backend, but it is not installed. Use `pip install &#39;ray[tune]&#39;`.&quot;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">SIGOPT</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;You picked the sigopt backend, but it is not installed. Use `pip install sigopt`.&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="n">backend</span> <span class="o">==</span> <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">WANDB</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;You picked the wandb backend, but it is not installed. Use `pip install wandb`.&quot;</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">=</span> <span class="n">backend</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_init</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> + <span class="s2">&quot;To use hyperparameter search, you need to pass your model through a model_init function.&quot;</span> + <span class="p">)</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">backend_dict</span> <span class="o">=</span> <span class="p">{</span> + <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">OPTUNA</span><span class="p">:</span> <span class="n">run_hp_search_optuna</span><span class="p">,</span> + <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">RAY</span><span class="p">:</span> <span class="n">run_hp_search_ray</span><span class="p">,</span> + <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">SIGOPT</span><span class="p">:</span> <span class="n">run_hp_search_sigopt</span><span class="p">,</span> + <span class="n">HPSearchBackend</span><span class="o">.</span><span class="n">WANDB</span><span class="p">:</span> <span class="n">run_hp_search_wandb</span><span class="p">,</span> + <span class="p">}</span> + <span class="n">backend_run</span> <span class="o">=</span> <span class="n">backend_dict</span><span class="p">[</span><span class="n">backend</span><span class="p">]</span> + <span class="k">except</span> <span class="ne">NameError</span><span class="p">:</span> + <span class="n">ALL_HYPERPARAMETER_SEARCH_BACKENDS</span> + <span class="n">backend_obj</span> <span class="o">=</span> <span class="n">ALL_HYPERPARAMETER_SEARCH_BACKENDS</span><span class="p">[</span><span class="n">backend</span><span class="p">]()</span> + <span class="n">backend_run</span> <span class="o">=</span> <span class="n">backend_obj</span><span class="o">.</span><span class="n">run</span> + <span class="k">try</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">transformers.trainer_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">default_hp_space</span> + <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> + <span class="n">default_hp_space</span> <span class="o">=</span> <span class="n">backend_obj</span><span class="o">.</span><span class="n">default_hp_space</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">hp_space</span> <span class="o">=</span> <span class="n">default_hp_space</span><span class="p">[</span><span class="n">backend</span><span class="p">]</span> <span class="k">if</span> <span class="n">hp_space</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">hp_space</span> + <span class="bp">self</span><span class="o">.</span><span class="n">hp_name</span> <span class="o">=</span> <span class="n">hp_name</span> + <span class="bp">self</span><span class="o">.</span><span class="n">compute_objective</span> <span class="o">=</span> <span class="n">default_compute_objective</span> <span class="k">if</span> <span class="n">compute_objective</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">compute_objective</span> + + + <span class="n">best_run</span> <span class="o">=</span> <span class="n">backend_run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n_trials</span><span class="p">,</span> <span class="n">direction</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">hp_search_backend</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">return</span> <span class="n">best_run</span></div> + + +<div class="viewcode-block" id="RaftTrainer.log"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.log">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">log</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">logs</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">float</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Log `logs` on the various objects watching training.</span> +<span class="sd"> Subclass and override this method to inject custom behavior.</span> +<span class="sd"> Args:</span> +<span class="sd"> logs (`Dict[str, float]`):</span> +<span class="sd"> The values to log.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">epoch</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">logs</span><span class="p">[</span><span class="s2">&quot;epoch&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">round</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">epoch</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> + + <span class="n">output</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">logs</span><span class="p">,</span> <span class="o">**</span><span class="p">{</span><span class="s2">&quot;step&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span><span class="p">}}</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">log_history</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_log</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">,</span> <span class="n">logs</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._prepare_input"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._prepare_input">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_prepare_input</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">Any</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Prepares one `data` before feeding it to the model, be it a tensor or a nested list/dictionary of tensors.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">Mapping</span><span class="p">):</span> + <span class="k">return</span> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">)({</span><span class="n">k</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prepare_input</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">data</span><span class="o">.</span><span class="n">items</span><span class="p">()})</span> + <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="p">(</span><span class="nb">tuple</span><span class="p">,</span> <span class="nb">list</span><span class="p">)):</span> + <span class="k">return</span> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">)(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prepare_input</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">data</span><span class="p">)</span> + <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">):</span> + <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;device&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">}</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span> <span class="ow">and</span> <span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">is_floating_point</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="ow">or</span> <span class="n">torch</span><span class="o">.</span><span class="n">is_complex</span><span class="p">(</span><span class="n">data</span><span class="p">)):</span> + <span class="c1"># NLP models inputs are int/uint and those get adjusted to the right dtype of the</span> + <span class="c1"># embedding. Other models such as wav2vec2&#39;s inputs are already float and thus</span> + <span class="c1"># may need special handling to match the dtypes of the model</span> + <span class="n">kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s2">&quot;dtype&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hf_deepspeed_config</span><span class="o">.</span><span class="n">dtype</span><span class="p">()})</span> + <span class="k">return</span> <span class="n">data</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">return</span> <span class="n">data</span></div> + + +<div class="viewcode-block" id="RaftTrainer._prepare_inputs"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._prepare_inputs">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_prepare_inputs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inputs</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">Any</span><span class="p">]])</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Prepare `inputs` before feeding them to the model, converting them to tensors if they are not already and</span> +<span class="sd"> handling potential state.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prepare_input</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;The batch received was empty, your model won&#39;t be able to train on it. Double-check that your &quot;</span> + <span class="sa">f</span><span class="s2">&quot;training dataset contains keys expected by the model: </span><span class="si">{</span><span class="s1">&#39;,&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_signature_columns</span><span class="p">)</span><span class="si">}</span><span class="s2">.&quot;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">past_index</span> <span class="o">&gt;=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_past</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">inputs</span><span class="p">[</span><span class="s2">&quot;mems&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_past</span> + + <span class="k">return</span> <span class="n">inputs</span></div> + + +<div class="viewcode-block" id="RaftTrainer.compute_loss_context_manager"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_loss_context_manager">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">compute_loss_context_manager</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> A helper wrapper to group together context managers.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">autocast_smart_context_manager</span><span class="p">()</span></div> + + +<div class="viewcode-block" id="RaftTrainer.autocast_smart_context_manager"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.autocast_smart_context_manager">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">autocast_smart_context_manager</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cache_enabled</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> A helper wrapper that creates an appropriate context manager for `autocast` while feeding it the desired</span> +<span class="sd"> arguments, depending on the situation.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_cuda_amp</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_cpu_amp</span><span class="p">:</span> + <span class="k">if</span> <span class="n">is_torch_greater_or_equal_than_1_10</span><span class="p">:</span> + <span class="n">ctx_manager</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">torch</span><span class="o">.</span><span class="n">cpu</span><span class="o">.</span><span class="n">amp</span><span class="o">.</span><span class="n">autocast</span><span class="p">(</span><span class="n">cache_enabled</span><span class="o">=</span><span class="n">cache_enabled</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">amp_dtype</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_cpu_amp</span> + <span class="k">else</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">amp</span><span class="o">.</span><span class="n">autocast</span><span class="p">(</span><span class="n">cache_enabled</span><span class="o">=</span><span class="n">cache_enabled</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">amp_dtype</span><span class="p">)</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">ctx_manager</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">amp</span><span class="o">.</span><span class="n">autocast</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">ctx_manager</span> <span class="o">=</span> <span class="n">contextlib</span><span class="o">.</span><span class="n">nullcontext</span><span class="p">()</span> <span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span> <span class="o">&gt;=</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span> <span class="k">else</span> <span class="n">contextlib</span><span class="o">.</span><span class="n">suppress</span><span class="p">()</span> + + <span class="k">return</span> <span class="n">ctx_manager</span></div> + + +<div class="viewcode-block" id="RaftTrainer.training_step"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.training_step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">training_step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">:</span> <span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">,</span> <span class="n">inputs</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">Any</span><span class="p">]])</span> <span class="o">-&gt;</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform a training step on a batch of inputs.</span> +<span class="sd"> Subclass and override to inject custom behavior.</span> +<span class="sd"> Args:</span> +<span class="sd"> model (`nn.Module`):</span> +<span class="sd"> The model to train.</span> +<span class="sd"> inputs (`Dict[str, Union[torch.Tensor, Any]]`):</span> +<span class="sd"> The inputs and targets of the model.</span> +<span class="sd"> The dictionary will be unpacked before being fed to the model. Most models expect the targets under the</span> +<span class="sd"> argument `labels`. Check your model&#39;s documentation for all accepted arguments.</span> +<span class="sd"> Return:</span> +<span class="sd"> `torch.Tensor`: The tensor with training loss on this batch.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">model</span><span class="o">.</span><span class="n">train</span><span class="p">()</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prepare_inputs</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="n">loss_mb</span> <span class="o">=</span> <span class="n">smp_forward_backward</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span><span class="p">)</span> + <span class="k">return</span> <span class="n">loss_mb</span><span class="o">.</span><span class="n">reduce_mean</span><span class="p">()</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + + <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">compute_loss_context_manager</span><span class="p">():</span> + <span class="n">loss</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">compute_loss</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">inputs</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">n_gpu</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">loss</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span> <span class="c1"># mean() to average on multi-gpu parallel training</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="c1"># deepspeed handles loss scaling by gradient_accumulation_steps in its `backward`</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">loss</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">gradient_accumulation_steps</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_grad_scaling</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">scaler</span><span class="o">.</span><span class="n">scale</span><span class="p">(</span><span class="n">loss</span><span class="p">)</span><span class="o">.</span><span class="n">backward</span><span class="p">()</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_apex</span><span class="p">:</span> + <span class="k">with</span> <span class="n">amp</span><span class="o">.</span><span class="n">scale_loss</span><span class="p">(</span><span class="n">loss</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="p">)</span> <span class="k">as</span> <span class="n">scaled_loss</span><span class="p">:</span> + <span class="n">scaled_loss</span><span class="o">.</span><span class="n">backward</span><span class="p">()</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="c1"># loss gets scaled under gradient_accumulation_steps in deepspeed</span> + <span class="n">loss</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="o">.</span><span class="n">backward</span><span class="p">(</span><span class="n">loss</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">loss</span><span class="o">.</span><span class="n">backward</span><span class="p">()</span> + + <span class="k">return</span> <span class="n">loss</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span></div> + + +<div class="viewcode-block" id="RaftTrainer.compute_loss"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_loss">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">compute_loss</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">return_outputs</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> How the loss is computed by Trainer. By default, all models return the loss in the first element.</span> +<span class="sd"> Subclass and override for custom behavior.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">label_smoother</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="s2">&quot;labels&quot;</span> <span class="ow">in</span> <span class="n">inputs</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">=</span> <span class="n">inputs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;labels&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="n">model</span><span class="p">(</span><span class="o">**</span><span class="n">inputs</span><span class="p">)</span> + <span class="c1"># Save past state if it exists</span> + <span class="c1"># TODO: this needs to be fixed and made cleaner later.</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">past_index</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_past</span> <span class="o">=</span> <span class="n">outputs</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">past_index</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="n">unwrap_model</span><span class="p">(</span><span class="n">model</span><span class="p">)</span><span class="o">.</span><span class="n">_get_name</span><span class="p">()</span> <span class="ow">in</span> <span class="n">MODEL_FOR_CAUSAL_LM_MAPPING_NAMES</span><span class="o">.</span><span class="n">values</span><span class="p">():</span> + <span class="n">loss</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">label_smoother</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="n">labels</span><span class="p">,</span> <span class="n">shift_labels</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">label_smoother</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="n">labels</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="nb">dict</span><span class="p">)</span> <span class="ow">and</span> <span class="s2">&quot;loss&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">outputs</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;The model did not return a loss from the inputs, only the following keys: &quot;</span> + <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="s1">&#39;,&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">outputs</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span><span class="si">}</span><span class="s2">. For reference, the inputs it received are </span><span class="si">{</span><span class="s1">&#39;,&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">inputs</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span><span class="si">}</span><span class="s2">.&quot;</span> + <span class="p">)</span> + <span class="c1"># We don&#39;t use .loss here since the model may return tuples instead of ModelOutput.</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">outputs</span><span class="p">[</span><span class="s2">&quot;loss&quot;</span><span class="p">]</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="nb">dict</span><span class="p">)</span> <span class="k">else</span> <span class="n">outputs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + + <span class="k">return</span> <span class="p">(</span><span class="n">loss</span><span class="p">,</span> <span class="n">outputs</span><span class="p">)</span> <span class="k">if</span> <span class="n">return_outputs</span> <span class="k">else</span> <span class="n">loss</span></div> + + +<div class="viewcode-block" id="RaftTrainer.is_local_process_zero"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_local_process_zero">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">is_local_process_zero</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Whether or not this process is the local (e.g., on one machine if training in a distributed fashion on several</span> +<span class="sd"> machines) main process.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">local_process_index</span> <span class="o">==</span> <span class="mi">0</span></div> + + +<div class="viewcode-block" id="RaftTrainer.is_world_process_zero"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_world_process_zero">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">is_world_process_zero</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Whether or not this process is the global main process (when training in a distributed fashion on several</span> +<span class="sd"> machines, this is only going to be `True` for one process).</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># Special case for SageMaker ModelParallel since there process_index is dp_process_index, not the global</span> + <span class="c1"># process index.</span> + <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="k">return</span> <span class="n">smp</span><span class="o">.</span><span class="n">rank</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">process_index</span> <span class="o">==</span> <span class="mi">0</span></div> + + +<div class="viewcode-block" id="RaftTrainer.save_model"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.save_model">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">save_model</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">output_dir</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">_internal_call</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Will save the model, so you can reload it using `from_pretrained()`.</span> +<span class="sd"> Will only save from the main process.</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="k">if</span> <span class="n">output_dir</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">output_dir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span> + + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_save_tpu</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="c1"># Calling the state_dict needs to be done on the wrapped model and on all processes.</span> + <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">state_dict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span><span class="o">.</span><span class="n">state_dict</span><span class="p">()</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_save</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">state_dict</span><span class="o">=</span><span class="n">state_dict</span><span class="p">)</span> + <span class="k">if</span> <span class="n">IS_SAGEMAKER_MP_POST_1_10</span><span class="p">:</span> + <span class="c1"># &#39;user_content.pt&#39; indicates model state_dict saved with smp &gt;= 1.10</span> + <span class="n">Path</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="s2">&quot;user_content.pt&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">touch</span><span class="p">()</span> + <span class="k">elif</span> <span class="p">(</span> + <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">ZERO_DP_2</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">sharded_ddp</span> + <span class="ow">or</span> <span class="n">ShardedDDPOption</span><span class="o">.</span><span class="n">ZERO_DP_3</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">sharded_ddp</span> + <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">fsdp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> + <span class="p">):</span> + <span class="n">state_dict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">state_dict</span><span class="p">()</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_save</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">state_dict</span><span class="o">=</span><span class="n">state_dict</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="c1"># this takes care of everything as long as we aren&#39;t under zero3</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_save</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">is_deepspeed_zero3_enabled</span><span class="p">():</span> + <span class="c1"># It&#39;s too complicated to try to override different places where the weights dump gets</span> + <span class="c1"># saved, so since under zero3 the file is bogus, simply delete it. The user should</span> + <span class="c1"># either user deepspeed checkpoint to resume or to recover full weights use</span> + <span class="c1"># zero_to_fp32.py stored in the checkpoint.</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="n">file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">WEIGHTS_NAME</span><span class="p">)</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">file</span><span class="p">):</span> + <span class="c1"># logger.info(f&quot;deepspeed zero3: removing {file}, see zero_to_fp32.py to recover weights&quot;)</span> + <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> + + <span class="c1"># now save the real model if stage3_gather_16bit_weights_on_model_save=True</span> + <span class="c1"># if false it will not be saved.</span> + <span class="c1"># This must be called on all ranks</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="o">.</span><span class="n">save_16bit_model</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">WEIGHTS_NAME</span><span class="p">):</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;deepspeed.save_16bit_model didn&#39;t save the model, since&quot;</span> + <span class="s2">&quot; stage3_gather_16bit_weights_on_model_save=false. Saving the full checkpoint instead, use&quot;</span> + <span class="s2">&quot; zero_to_fp32.py to recover weights&quot;</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="o">.</span><span class="n">save_checkpoint</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span> + + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_save</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span> + + <span class="c1"># Push to the Hub when `save_model` is called by the user.</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">push_to_hub</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">_internal_call</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">push_to_hub</span><span class="p">(</span><span class="n">commit_message</span><span class="o">=</span><span class="s2">&quot;Model save&quot;</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._save_tpu"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._save_tpu">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_save_tpu</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">output_dir</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> + <span class="n">output_dir</span> <span class="o">=</span> <span class="n">output_dir</span> <span class="k">if</span> <span class="n">output_dir</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Saving model checkpoint to </span><span class="si">{</span><span class="n">output_dir</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">xm</span><span class="o">.</span><span class="n">is_master_ordinal</span><span class="p">():</span> + <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">TRAINING_ARGS_NAME</span><span class="p">))</span> + + <span class="c1"># Save a trained model and configuration using `save_pretrained()`.</span> + <span class="c1"># They can then be reloaded using `from_pretrained()`</span> + <span class="n">xm</span><span class="o">.</span><span class="n">rendezvous</span><span class="p">(</span><span class="s2">&quot;saving_checkpoint&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">PreTrainedModel</span><span class="p">):</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unwrap_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">),</span> <span class="n">PreTrainedModel</span><span class="p">):</span> + <span class="n">unwrap_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">)</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span> + <span class="n">output_dir</span><span class="p">,</span> + <span class="n">is_main_process</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">,</span> + <span class="n">state_dict</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">state_dict</span><span class="p">(),</span> + <span class="n">save_function</span><span class="o">=</span><span class="n">xm</span><span class="o">.</span><span class="n">save</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Trainer.model is not a `PreTrainedModel`, only saving its state dict.&quot;</span><span class="p">)</span> + <span class="n">state_dict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">state_dict</span><span class="p">()</span> + <span class="n">xm</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">state_dict</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">WEIGHTS_NAME</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">is_main_process</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">,</span> <span class="n">save_function</span><span class="o">=</span><span class="n">xm</span><span class="o">.</span><span class="n">save</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._save"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._save">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">output_dir</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">state_dict</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="c1"># If we are executing this function, we are the process zero, so we don&#39;t check for that.</span> + <span class="n">output_dir</span> <span class="o">=</span> <span class="n">output_dir</span> <span class="k">if</span> <span class="n">output_dir</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span> + <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Saving model checkpoint to </span><span class="si">{</span><span class="n">output_dir</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="c1"># Save a trained model and configuration using `save_pretrained()`.</span> + <span class="c1"># They can then be reloaded using `from_pretrained()`</span> + <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">PreTrainedModel</span><span class="p">):</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unwrap_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">),</span> <span class="n">PreTrainedModel</span><span class="p">):</span> + <span class="k">if</span> <span class="n">state_dict</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">state_dict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">state_dict</span><span class="p">()</span> + <span class="n">unwrap_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">)</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">state_dict</span><span class="o">=</span><span class="n">state_dict</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Trainer.model is not a `PreTrainedModel`, only saving its state dict.&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="n">state_dict</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">state_dict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">state_dict</span><span class="p">()</span> + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">state_dict</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">WEIGHTS_NAME</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">state_dict</span><span class="o">=</span><span class="n">state_dict</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span> + + <span class="c1"># Good practice: save your training arguments together with the trained model</span> + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">TRAINING_ARGS_NAME</span><span class="p">))</span></div> + + +<div class="viewcode-block" id="RaftTrainer.store_flos"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.store_flos">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">store_flos</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="c1"># Storing the number of floating-point operations that went into the model</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">total_flos</span> <span class="o">+=</span> <span class="p">(</span> + <span class="n">distributed_broadcast_scalars</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">current_flos</span><span class="p">],</span> <span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span><span class="o">.</span><span class="n">item</span><span class="p">()</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">current_flos</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">total_flos</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_flos</span> + <span class="bp">self</span><span class="o">.</span><span class="n">current_flos</span> <span class="o">=</span> <span class="mi">0</span></div> + + +<div class="viewcode-block" id="RaftTrainer._sorted_checkpoints"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._sorted_checkpoints">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_sorted_checkpoints</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> <span class="n">output_dir</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">checkpoint_prefix</span><span class="o">=</span><span class="n">PREFIX_CHECKPOINT_DIR</span><span class="p">,</span> <span class="n">use_mtime</span><span class="o">=</span><span class="kc">False</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> + <span class="n">ordering_and_checkpoint_path</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="n">glob_checkpoints</span> <span class="o">=</span> <span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">Path</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">checkpoint_prefix</span><span class="si">}</span><span class="s2">-*&quot;</span><span class="p">)</span> <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">x</span><span class="p">)]</span> + + <span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="n">glob_checkpoints</span><span class="p">:</span> + <span class="k">if</span> <span class="n">use_mtime</span><span class="p">:</span> + <span class="n">ordering_and_checkpoint_path</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">getmtime</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> <span class="n">path</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">regex_match</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;.*</span><span class="si">{</span><span class="n">checkpoint_prefix</span><span class="si">}</span><span class="s2">-([0-9]+)&quot;</span><span class="p">,</span> <span class="n">path</span><span class="p">)</span> + <span class="k">if</span> <span class="n">regex_match</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">regex_match</span><span class="o">.</span><span class="n">groups</span><span class="p">()</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">ordering_and_checkpoint_path</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="nb">int</span><span class="p">(</span><span class="n">regex_match</span><span class="o">.</span><span class="n">groups</span><span class="p">()[</span><span class="mi">0</span><span class="p">]),</span> <span class="n">path</span><span class="p">))</span> + + <span class="n">checkpoints_sorted</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">ordering_and_checkpoint_path</span><span class="p">)</span> + <span class="n">checkpoints_sorted</span> <span class="o">=</span> <span class="p">[</span><span class="n">checkpoint</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">checkpoint</span> <span class="ow">in</span> <span class="n">checkpoints_sorted</span><span class="p">]</span> + <span class="c1"># Make sure we don&#39;t delete the best model.</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">best_model_index</span> <span class="o">=</span> <span class="n">checkpoints_sorted</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">Path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span><span class="p">)))</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">best_model_index</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">checkpoints_sorted</span><span class="p">)</span> <span class="o">-</span> <span class="mi">2</span><span class="p">):</span> + <span class="n">checkpoints_sorted</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">checkpoints_sorted</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">checkpoints_sorted</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="n">checkpoints_sorted</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="k">return</span> <span class="n">checkpoints_sorted</span></div> + + +<div class="viewcode-block" id="RaftTrainer._rotate_checkpoints"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._rotate_checkpoints">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_rotate_checkpoints</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">use_mtime</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">output_dir</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">save_total_limit</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">save_total_limit</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">return</span> + + <span class="c1"># Check if we should delete older checkpoint(s)</span> + <span class="n">checkpoints_sorted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sorted_checkpoints</span><span class="p">(</span><span class="n">use_mtime</span><span class="o">=</span><span class="n">use_mtime</span><span class="p">,</span> <span class="n">output_dir</span><span class="o">=</span><span class="n">output_dir</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">checkpoints_sorted</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">save_total_limit</span><span class="p">:</span> + <span class="k">return</span> + + <span class="c1"># If save_total_limit=1 with load_best_model_at_end=True, we could end up deleting the last checkpoint, which</span> + <span class="c1"># we don&#39;t do to allow resuming.</span> + <span class="n">save_total_limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">save_total_limit</span> + <span class="k">if</span> <span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> + <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">save_total_limit</span> <span class="o">==</span> <span class="mi">1</span> + <span class="ow">and</span> <span class="n">checkpoints_sorted</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">best_model_checkpoint</span> + <span class="p">):</span> + <span class="n">save_total_limit</span> <span class="o">=</span> <span class="mi">2</span> + + <span class="n">number_of_checkpoints_to_delete</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">checkpoints_sorted</span><span class="p">)</span> <span class="o">-</span> <span class="n">save_total_limit</span><span class="p">)</span> + <span class="n">checkpoints_to_be_deleted</span> <span class="o">=</span> <span class="n">checkpoints_sorted</span><span class="p">[:</span><span class="n">number_of_checkpoints_to_delete</span><span class="p">]</span> + <span class="k">for</span> <span class="n">checkpoint</span> <span class="ow">in</span> <span class="n">checkpoints_to_be_deleted</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Deleting older checkpoint [</span><span class="si">{</span><span class="n">checkpoint</span><span class="si">}</span><span class="s2">] due to args.save_total_limit&quot;</span><span class="p">)</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">checkpoint</span><span class="p">,</span> <span class="n">ignore_errors</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer.evaluate"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.evaluate">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">evaluate</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">eval_dataset</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">ignore_keys</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">metric_key_prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;eval&quot;</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">float</span><span class="p">]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Run evaluation and returns metrics.</span> +<span class="sd"> The calling script will be responsible for providing a method to compute metrics, as they are task-dependent</span> +<span class="sd"> (pass it to the init `compute_metrics` argument).</span> +<span class="sd"> You can also subclass and override this method to inject custom behavior.</span> +<span class="sd"> Args:</span> +<span class="sd"> eval_dataset (`Dataset`, *optional*):</span> +<span class="sd"> Pass a dataset if you wish to override `self.eval_dataset`. If it is a [`~datasets.Dataset`], columns</span> +<span class="sd"> not accepted by the `model.forward()` method are automatically removed. It must implement the `__len__`</span> +<span class="sd"> method.</span> +<span class="sd"> ignore_keys (`Lst[str]`, *optional*):</span> +<span class="sd"> A list of keys in the output of your model (if it is a dictionary) that should be ignored when</span> +<span class="sd"> gathering predictions.</span> +<span class="sd"> metric_key_prefix (`str`, *optional*, defaults to `&quot;eval&quot;`):</span> +<span class="sd"> An optional prefix to be used as the metrics key prefix. For example the metrics &quot;bleu&quot; will be named</span> +<span class="sd"> &quot;eval_bleu&quot; if the prefix is &quot;eval&quot; (default)</span> +<span class="sd"> Returns:</span> +<span class="sd"> A dictionary containing the evaluation loss and the potential metrics computed from the predictions. The</span> +<span class="sd"> dictionary also contains the epoch number which comes from the training state.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># memory metrics - must set up as early as possible</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_memory_tracker</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> + + <span class="n">eval_dataloader</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_eval_dataloader</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">)</span> + <span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> + + <span class="n">eval_loop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prediction_loop</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">use_legacy_prediction_loop</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluation_loop</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">eval_loop</span><span class="p">(</span> + <span class="n">eval_dataloader</span><span class="p">,</span> + <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Evaluation&quot;</span><span class="p">,</span> + <span class="c1"># No point gathering the predictions if there are no metrics, otherwise we defer to</span> + <span class="c1"># self.args.prediction_loss_only</span> + <span class="n">prediction_loss_only</span><span class="o">=</span><span class="kc">True</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">compute_metrics</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">ignore_keys</span><span class="o">=</span><span class="n">ignore_keys</span><span class="p">,</span> + <span class="n">metric_key_prefix</span><span class="o">=</span><span class="n">metric_key_prefix</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">total_batch_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">eval_batch_size</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span> + <span class="k">if</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">metric_key_prefix</span><span class="si">}</span><span class="s2">_jit_compilation_time&quot;</span> <span class="ow">in</span> <span class="n">output</span><span class="o">.</span><span class="n">metrics</span><span class="p">:</span> + <span class="n">start_time</span> <span class="o">+=</span> <span class="n">output</span><span class="o">.</span><span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">metric_key_prefix</span><span class="si">}</span><span class="s2">_jit_compilation_time&quot;</span><span class="p">]</span> + <span class="n">output</span><span class="o">.</span><span class="n">metrics</span><span class="o">.</span><span class="n">update</span><span class="p">(</span> + <span class="n">speed_metrics</span><span class="p">(</span> + <span class="n">metric_key_prefix</span><span class="p">,</span> + <span class="n">start_time</span><span class="p">,</span> + <span class="n">num_samples</span><span class="o">=</span><span class="n">output</span><span class="o">.</span><span class="n">num_samples</span><span class="p">,</span> + <span class="n">num_steps</span><span class="o">=</span><span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">num_samples</span> <span class="o">/</span> <span class="n">total_batch_size</span><span class="p">),</span> + <span class="p">)</span> + <span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">metrics</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">DebugOption</span><span class="o">.</span><span class="n">TPU_METRICS_DEBUG</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">debug</span><span class="p">:</span> + <span class="c1"># tpu-comment: Logging debug metrics for PyTorch/XLA (compile, execute times, ops, etc.)</span> + <span class="n">xm</span><span class="o">.</span><span class="n">master_print</span><span class="p">(</span><span class="n">met</span><span class="o">.</span><span class="n">metrics_report</span><span class="p">())</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_evaluate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">,</span> <span class="n">output</span><span class="o">.</span><span class="n">metrics</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">_memory_tracker</span><span class="o">.</span><span class="n">stop_and_update_metrics</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">metrics</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">output</span><span class="o">.</span><span class="n">metrics</span></div> + + +<div class="viewcode-block" id="RaftTrainer.predict"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.predict">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">predict</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> <span class="n">test_dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> <span class="n">ignore_keys</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">metric_key_prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;test&quot;</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">PredictionOutput</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Run prediction and returns predictions and potential metrics.</span> +<span class="sd"> Depending on the dataset and your use case, your test dataset may contain labels. In that case, this method</span> +<span class="sd"> will also return metrics, like in `evaluate()`.</span> +<span class="sd"> Args:</span> +<span class="sd"> test_dataset (`Dataset`):</span> +<span class="sd"> Dataset to run the predictions on. If it is an `datasets.Dataset`, columns not accepted by the</span> +<span class="sd"> `model.forward()` method are automatically removed. Has to implement the method `__len__`</span> +<span class="sd"> ignore_keys (`Lst[str]`, *optional*):</span> +<span class="sd"> A list of keys in the output of your model (if it is a dictionary) that should be ignored when</span> +<span class="sd"> gathering predictions.</span> +<span class="sd"> metric_key_prefix (`str`, *optional*, defaults to `&quot;test&quot;`):</span> +<span class="sd"> An optional prefix to be used as the metrics key prefix. For example the metrics &quot;bleu&quot; will be named</span> +<span class="sd"> &quot;test_bleu&quot; if the prefix is &quot;test&quot; (default)</span> +<span class="sd"> &lt;Tip&gt;</span> +<span class="sd"> If your predictions or labels have different sequence length (for instance because you&#39;re doing dynamic padding</span> +<span class="sd"> in a token classification task) the predictions will be padded (on the right) to allow for concatenation into</span> +<span class="sd"> one array. The padding index is -100.</span> +<span class="sd"> &lt;/Tip&gt;</span> +<span class="sd"> Returns: *NamedTuple* A namedtuple with the following keys:</span> +<span class="sd"> - predictions (`np.ndarray`): The predictions on `test_dataset`.</span> +<span class="sd"> - label_ids (`np.ndarray`, *optional*): The labels (if the dataset contained some).</span> +<span class="sd"> - metrics (`Dict[str, float]`, *optional*): The potential dictionary of metrics (if the dataset contained</span> +<span class="sd"> labels).</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># memory metrics - must set up as early as possible</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_memory_tracker</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> + + <span class="n">test_dataloader</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_test_dataloader</span><span class="p">(</span><span class="n">test_dataset</span><span class="p">)</span> + <span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> + + <span class="n">eval_loop</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prediction_loop</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">use_legacy_prediction_loop</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluation_loop</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">eval_loop</span><span class="p">(</span> + <span class="n">test_dataloader</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Prediction&quot;</span><span class="p">,</span> <span class="n">ignore_keys</span><span class="o">=</span><span class="n">ignore_keys</span><span class="p">,</span> <span class="n">metric_key_prefix</span><span class="o">=</span><span class="n">metric_key_prefix</span> + <span class="p">)</span> + <span class="n">total_batch_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">eval_batch_size</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">world_size</span> + <span class="k">if</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">metric_key_prefix</span><span class="si">}</span><span class="s2">_jit_compilation_time&quot;</span> <span class="ow">in</span> <span class="n">output</span><span class="o">.</span><span class="n">metrics</span><span class="p">:</span> + <span class="n">start_time</span> <span class="o">+=</span> <span class="n">output</span><span class="o">.</span><span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">metric_key_prefix</span><span class="si">}</span><span class="s2">_jit_compilation_time&quot;</span><span class="p">]</span> + <span class="n">output</span><span class="o">.</span><span class="n">metrics</span><span class="o">.</span><span class="n">update</span><span class="p">(</span> + <span class="n">speed_metrics</span><span class="p">(</span> + <span class="n">metric_key_prefix</span><span class="p">,</span> + <span class="n">start_time</span><span class="p">,</span> + <span class="n">num_samples</span><span class="o">=</span><span class="n">output</span><span class="o">.</span><span class="n">num_samples</span><span class="p">,</span> + <span class="n">num_steps</span><span class="o">=</span><span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">num_samples</span> <span class="o">/</span> <span class="n">total_batch_size</span><span class="p">),</span> + <span class="p">)</span> + <span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_predict</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">,</span> <span class="n">output</span><span class="o">.</span><span class="n">metrics</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_memory_tracker</span><span class="o">.</span><span class="n">stop_and_update_metrics</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">metrics</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">PredictionOutput</span><span class="p">(</span><span class="n">predictions</span><span class="o">=</span><span class="n">output</span><span class="o">.</span><span class="n">predictions</span><span class="p">,</span> <span class="n">label_ids</span><span class="o">=</span><span class="n">output</span><span class="o">.</span><span class="n">label_ids</span><span class="p">,</span> <span class="n">metrics</span><span class="o">=</span><span class="n">output</span><span class="o">.</span><span class="n">metrics</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer.evaluation_loop"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.evaluation_loop">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">evaluation_loop</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">dataloader</span><span class="p">:</span> <span class="n">DataLoader</span><span class="p">,</span> + <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">prediction_loss_only</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">ignore_keys</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">metric_key_prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;eval&quot;</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">EvalLoopOutput</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Prediction/evaluation loop, shared by `Trainer.evaluate()` and `Trainer.predict()`.</span> +<span class="sd"> Works both with or without labels.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span> + + <span class="n">prediction_loss_only</span> <span class="o">=</span> <span class="n">prediction_loss_only</span> <span class="k">if</span> <span class="n">prediction_loss_only</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">args</span><span class="o">.</span><span class="n">prediction_loss_only</span> + + <span class="c1"># if eval is called w/o train init deepspeed here</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">deepspeed</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="c1"># XXX: eval doesn&#39;t have `resume_from_checkpoint` arg but we should be able to do eval</span> + <span class="c1"># from the checkpoint eventually</span> + <span class="n">deepspeed_engine</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">deepspeed_init</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> <span class="n">num_training_steps</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">resume_from_checkpoint</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">inference</span><span class="o">=</span><span class="kc">True</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">deepspeed_engine</span><span class="o">.</span><span class="n">module</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span> <span class="o">=</span> <span class="n">deepspeed_engine</span> + <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span> <span class="o">=</span> <span class="n">deepspeed_engine</span> + + <span class="n">model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_wrap_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">training</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dataloader</span><span class="o">=</span><span class="n">dataloader</span><span class="p">)</span> + + <span class="c1"># if full fp16 or bf16 eval is wanted and this ``evaluation`` or ``predict`` isn&#39;t called</span> + <span class="c1"># while ``train`` is running, cast it to the right dtype first and then put on device</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_in_train</span><span class="p">:</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">fp16_full_eval</span><span class="p">:</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float16</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">bf16_full_eval</span><span class="p">:</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">bfloat16</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + + <span class="n">batch_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">eval_batch_size</span> + + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;***** Running </span><span class="si">{</span><span class="n">description</span><span class="si">}</span><span class="s2"> *****&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="n">has_length</span><span class="p">(</span><span class="n">dataloader</span><span class="p">):</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Num examples = </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">num_examples</span><span class="p">(</span><span class="n">dataloader</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot; Num examples: Unknown&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Batch size = </span><span class="si">{</span><span class="n">batch_size</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">eval_dataloader</span> <span class="o">=</span> <span class="n">dataloader</span> + <span class="c1"># Do this before wrapping.</span> + <span class="n">eval_dataset</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">dataloader</span><span class="p">,</span> <span class="s2">&quot;dataset&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="n">dataloader</span> <span class="o">=</span> <span class="n">pl</span><span class="o">.</span><span class="n">ParallelLoader</span><span class="p">(</span><span class="n">dataloader</span><span class="p">,</span> <span class="p">[</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">])</span><span class="o">.</span><span class="n">per_device_loader</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">past_index</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_past</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="c1"># Initialize containers</span> + <span class="c1"># losses/preds/labels on GPU/TPU (accumulated for eval_accumulation_steps)</span> + <span class="n">losses_host</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">preds_host</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">labels_host</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">inputs_host</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="c1"># losses/preds/labels on CPU (final containers)</span> + <span class="n">all_losses</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">all_preds</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">all_labels</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">all_inputs</span> <span class="o">=</span> <span class="kc">None</span> + <span class="c1"># Will be useful when we have an iterable dataset so don&#39;t know its length.</span> + + <span class="n">observed_num_examples</span> <span class="o">=</span> <span class="mi">0</span> + <span class="c1"># Main evaluation loop</span> + <span class="k">for</span> <span class="n">step</span><span class="p">,</span> <span class="n">inputs</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">dataloader</span><span class="p">):</span> + <span class="c1"># Update the observed num examples</span> + <span class="n">observed_batch_size</span> <span class="o">=</span> <span class="n">find_batch_size</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span> + <span class="k">if</span> <span class="n">observed_batch_size</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">observed_num_examples</span> <span class="o">+=</span> <span class="n">observed_batch_size</span> + <span class="c1"># For batch samplers, batch_size is not known by the dataloader in advance.</span> + <span class="k">if</span> <span class="n">batch_size</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">batch_size</span> <span class="o">=</span> <span class="n">observed_batch_size</span> + + <span class="c1"># Prediction step</span> + <span class="n">loss</span><span class="p">,</span> <span class="n">logits</span><span class="p">,</span> <span class="n">labels</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prediction_step</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">prediction_loss_only</span><span class="p">,</span> <span class="n">ignore_keys</span><span class="o">=</span><span class="n">ignore_keys</span><span class="p">)</span> + <span class="n">inputs_decode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prepare_input</span><span class="p">(</span><span class="n">inputs</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">])</span> <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">include_inputs_for_metrics</span> <span class="k">else</span> <span class="kc">None</span> + + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="n">xm</span><span class="o">.</span><span class="n">mark_step</span><span class="p">()</span> + + <span class="c1"># Update containers on host</span> + <span class="k">if</span> <span class="n">loss</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">losses</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_nested_gather</span><span class="p">(</span><span class="n">loss</span><span class="o">.</span><span class="n">repeat</span><span class="p">(</span><span class="n">batch_size</span><span class="p">))</span> + <span class="n">losses_host</span> <span class="o">=</span> <span class="n">losses</span> <span class="k">if</span> <span class="n">losses_host</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">losses_host</span><span class="p">,</span> <span class="n">losses</span><span class="p">),</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="k">if</span> <span class="n">labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pad_across_processes</span><span class="p">(</span><span class="n">labels</span><span class="p">)</span> + <span class="n">labels</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_nested_gather</span><span class="p">(</span><span class="n">labels</span><span class="p">)</span> + <span class="n">labels_host</span> <span class="o">=</span> <span class="n">labels</span> <span class="k">if</span> <span class="n">labels_host</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">nested_concat</span><span class="p">(</span><span class="n">labels_host</span><span class="p">,</span> <span class="n">labels</span><span class="p">,</span> <span class="n">padding_index</span><span class="o">=-</span><span class="mi">100</span><span class="p">)</span> + <span class="k">if</span> <span class="n">inputs_decode</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">inputs_decode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pad_across_processes</span><span class="p">(</span><span class="n">inputs_decode</span><span class="p">)</span> + <span class="n">inputs_decode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_nested_gather</span><span class="p">(</span><span class="n">inputs_decode</span><span class="p">)</span> + <span class="n">inputs_host</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">inputs_decode</span> + <span class="k">if</span> <span class="n">inputs_host</span> <span class="ow">is</span> <span class="kc">None</span> + <span class="k">else</span> <span class="n">nested_concat</span><span class="p">(</span><span class="n">inputs_host</span><span class="p">,</span> <span class="n">inputs_decode</span><span class="p">,</span> <span class="n">padding_index</span><span class="o">=-</span><span class="mi">100</span><span class="p">)</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">logits</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pad_across_processes</span><span class="p">(</span><span class="n">logits</span><span class="p">)</span> + <span class="n">logits</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_nested_gather</span><span class="p">(</span><span class="n">logits</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">preprocess_logits_for_metrics</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">preprocess_logits_for_metrics</span><span class="p">(</span><span class="n">logits</span><span class="p">,</span> <span class="n">labels</span><span class="p">)</span> + <span class="n">preds_host</span> <span class="o">=</span> <span class="n">logits</span> <span class="k">if</span> <span class="n">preds_host</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">nested_concat</span><span class="p">(</span><span class="n">preds_host</span><span class="p">,</span> <span class="n">logits</span><span class="p">,</span> <span class="n">padding_index</span><span class="o">=-</span><span class="mi">100</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_prediction_step</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">)</span> + + <span class="c1"># Gather all tensors and put them back on the CPU if we have done enough accumulation steps.</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">eval_accumulation_steps</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="p">(</span><span class="n">step</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="n">args</span><span class="o">.</span><span class="n">eval_accumulation_steps</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">if</span> <span class="n">losses_host</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">losses</span> <span class="o">=</span> <span class="n">nested_numpify</span><span class="p">(</span><span class="n">losses_host</span><span class="p">)</span> + <span class="n">all_losses</span> <span class="o">=</span> <span class="n">losses</span> <span class="k">if</span> <span class="n">all_losses</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">all_losses</span><span class="p">,</span> <span class="n">losses</span><span class="p">),</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="k">if</span> <span class="n">preds_host</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">nested_numpify</span><span class="p">(</span><span class="n">preds_host</span><span class="p">)</span> + <span class="n">all_preds</span> <span class="o">=</span> <span class="n">logits</span> <span class="k">if</span> <span class="n">all_preds</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">nested_concat</span><span class="p">(</span><span class="n">all_preds</span><span class="p">,</span> <span class="n">logits</span><span class="p">,</span> <span class="n">padding_index</span><span class="o">=-</span><span class="mi">100</span><span class="p">)</span> + <span class="k">if</span> <span class="n">inputs_host</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">inputs_decode</span> <span class="o">=</span> <span class="n">nested_numpify</span><span class="p">(</span><span class="n">inputs_host</span><span class="p">)</span> + <span class="n">all_inputs</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">inputs_decode</span> + <span class="k">if</span> <span class="n">all_inputs</span> <span class="ow">is</span> <span class="kc">None</span> + <span class="k">else</span> <span class="n">nested_concat</span><span class="p">(</span><span class="n">all_inputs</span><span class="p">,</span> <span class="n">inputs_decode</span><span class="p">,</span> <span class="n">padding_index</span><span class="o">=-</span><span class="mi">100</span><span class="p">)</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">labels_host</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">=</span> <span class="n">nested_numpify</span><span class="p">(</span><span class="n">labels_host</span><span class="p">)</span> + <span class="n">all_labels</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">labels</span> <span class="k">if</span> <span class="n">all_labels</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">nested_concat</span><span class="p">(</span><span class="n">all_labels</span><span class="p">,</span> <span class="n">labels</span><span class="p">,</span> <span class="n">padding_index</span><span class="o">=-</span><span class="mi">100</span><span class="p">)</span> + <span class="p">)</span> + + <span class="c1"># Set back to None to begin a new accumulation</span> + <span class="n">losses_host</span><span class="p">,</span> <span class="n">preds_host</span><span class="p">,</span> <span class="n">inputs_host</span><span class="p">,</span> <span class="n">labels_host</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span> + + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">past_index</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;_past&quot;</span><span class="p">):</span> + <span class="c1"># Clean the state at the end of the evaluation loop</span> + <span class="nb">delattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;_past&quot;</span><span class="p">)</span> + + <span class="c1"># Gather all remaining tensors and put them back on the CPU</span> + <span class="k">if</span> <span class="n">losses_host</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">losses</span> <span class="o">=</span> <span class="n">nested_numpify</span><span class="p">(</span><span class="n">losses_host</span><span class="p">)</span> + <span class="n">all_losses</span> <span class="o">=</span> <span class="n">losses</span> <span class="k">if</span> <span class="n">all_losses</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">all_losses</span><span class="p">,</span> <span class="n">losses</span><span class="p">),</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="k">if</span> <span class="n">preds_host</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">nested_numpify</span><span class="p">(</span><span class="n">preds_host</span><span class="p">)</span> + <span class="n">all_preds</span> <span class="o">=</span> <span class="n">logits</span> <span class="k">if</span> <span class="n">all_preds</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">nested_concat</span><span class="p">(</span><span class="n">all_preds</span><span class="p">,</span> <span class="n">logits</span><span class="p">,</span> <span class="n">padding_index</span><span class="o">=-</span><span class="mi">100</span><span class="p">)</span> + <span class="k">if</span> <span class="n">inputs_host</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">inputs_decode</span> <span class="o">=</span> <span class="n">nested_numpify</span><span class="p">(</span><span class="n">inputs_host</span><span class="p">)</span> + <span class="n">all_inputs</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">inputs_decode</span> <span class="k">if</span> <span class="n">all_inputs</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">nested_concat</span><span class="p">(</span><span class="n">all_inputs</span><span class="p">,</span> <span class="n">inputs_decode</span><span class="p">,</span> <span class="n">padding_index</span><span class="o">=-</span><span class="mi">100</span><span class="p">)</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">labels_host</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">=</span> <span class="n">nested_numpify</span><span class="p">(</span><span class="n">labels_host</span><span class="p">)</span> + <span class="n">all_labels</span> <span class="o">=</span> <span class="n">labels</span> <span class="k">if</span> <span class="n">all_labels</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">nested_concat</span><span class="p">(</span><span class="n">all_labels</span><span class="p">,</span> <span class="n">labels</span><span class="p">,</span> <span class="n">padding_index</span><span class="o">=-</span><span class="mi">100</span><span class="p">)</span> + + <span class="c1"># Number of samples</span> + <span class="k">if</span> <span class="n">has_length</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">):</span> + <span class="n">num_samples</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">)</span> + <span class="c1"># The instance check is weird and does not actually check for the type, but whether the dataset has the right</span> + <span class="c1"># methods. Therefore we need to make sure it also has the attribute.</span> + <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">,</span> <span class="n">IterableDatasetShard</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">eval_dataset</span><span class="p">,</span> <span class="s2">&quot;num_examples&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">num_samples</span> <span class="o">=</span> <span class="n">eval_dataset</span><span class="o">.</span><span class="n">num_examples</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">has_length</span><span class="p">(</span><span class="n">dataloader</span><span class="p">):</span> + <span class="n">num_samples</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_examples</span><span class="p">(</span><span class="n">dataloader</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> <span class="c1"># both len(dataloader.dataset) and len(dataloader) fail</span> + <span class="n">num_samples</span> <span class="o">=</span> <span class="n">observed_num_examples</span> + <span class="k">if</span> <span class="n">num_samples</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">observed_num_examples</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">num_samples</span> <span class="o">=</span> <span class="n">observed_num_examples</span> + + <span class="c1"># Number of losses has been rounded to a multiple of batch_size and in a distributed training, the number of</span> + <span class="c1"># samplers has been rounded to a multiple of batch_size, so we truncate.</span> + <span class="k">if</span> <span class="n">all_losses</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">all_losses</span> <span class="o">=</span> <span class="n">all_losses</span><span class="p">[:</span><span class="n">num_samples</span><span class="p">]</span> + <span class="k">if</span> <span class="n">all_preds</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">all_preds</span> <span class="o">=</span> <span class="n">nested_truncate</span><span class="p">(</span><span class="n">all_preds</span><span class="p">,</span> <span class="n">num_samples</span><span class="p">)</span> + <span class="k">if</span> <span class="n">all_labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">all_labels</span> <span class="o">=</span> <span class="n">nested_truncate</span><span class="p">(</span><span class="n">all_labels</span><span class="p">,</span> <span class="n">num_samples</span><span class="p">)</span> + <span class="k">if</span> <span class="n">all_inputs</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">all_inputs</span> <span class="o">=</span> <span class="n">nested_truncate</span><span class="p">(</span><span class="n">all_inputs</span><span class="p">,</span> <span class="n">num_samples</span><span class="p">)</span> + + <span class="c1"># Metrics!</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">compute_metrics</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">all_preds</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">all_labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">include_inputs_for_metrics</span><span class="p">:</span> + <span class="n">metrics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">compute_metrics</span><span class="p">(</span> + <span class="n">EvalPrediction</span><span class="p">(</span><span class="n">predictions</span><span class="o">=</span><span class="n">all_preds</span><span class="p">,</span> <span class="n">label_ids</span><span class="o">=</span><span class="n">all_labels</span><span class="p">,</span> <span class="n">inputs</span><span class="o">=</span><span class="n">all_inputs</span><span class="p">)</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">metrics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">compute_metrics</span><span class="p">(</span><span class="n">EvalPrediction</span><span class="p">(</span><span class="n">predictions</span><span class="o">=</span><span class="n">all_preds</span><span class="p">,</span> <span class="n">label_ids</span><span class="o">=</span><span class="n">all_labels</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">metrics</span> <span class="o">=</span> <span class="p">{}</span> + + <span class="c1"># To be JSON-serializable, we need to remove numpy types or zero-d tensors</span> + <span class="n">metrics</span> <span class="o">=</span> <span class="n">denumpify_detensorize</span><span class="p">(</span><span class="n">metrics</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">all_losses</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">metric_key_prefix</span><span class="si">}</span><span class="s2">_loss&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">all_losses</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span><span class="o">.</span><span class="n">item</span><span class="p">()</span> + <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;jit_compilation_time&quot;</span><span class="p">):</span> + <span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">metric_key_prefix</span><span class="si">}</span><span class="s2">_jit_compilation_time&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">jit_compilation_time</span> + + <span class="c1"># Prefix all keys with metric_key_prefix + &#39;_&#39;</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">metrics</span><span class="o">.</span><span class="n">keys</span><span class="p">()):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">key</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">metric_key_prefix</span><span class="si">}</span><span class="s2">_&quot;</span><span class="p">):</span> + <span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">metric_key_prefix</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">metrics</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">EvalLoopOutput</span><span class="p">(</span><span class="n">predictions</span><span class="o">=</span><span class="n">all_preds</span><span class="p">,</span> <span class="n">label_ids</span><span class="o">=</span><span class="n">all_labels</span><span class="p">,</span> <span class="n">metrics</span><span class="o">=</span><span class="n">metrics</span><span class="p">,</span> <span class="n">num_samples</span><span class="o">=</span><span class="n">num_samples</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._nested_gather"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._nested_gather">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_nested_gather</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tensors</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Gather value of `tensors` (tensor or list/tuple of nested tensors) and convert them to numpy before</span> +<span class="sd"> concatenating them to `gathered`</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="n">tensors</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">return</span> + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;nested_gather&quot;</span> + <span class="n">tensors</span> <span class="o">=</span> <span class="n">nested_xla_mesh_reduce</span><span class="p">(</span><span class="n">tensors</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="n">tensors</span> <span class="o">=</span> <span class="n">smp_gather</span><span class="p">(</span><span class="n">tensors</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="n">tensors</span> <span class="o">=</span> <span class="n">distributed_concat</span><span class="p">(</span><span class="n">tensors</span><span class="p">)</span> + <span class="k">return</span> <span class="n">tensors</span></div> + + + <span class="c1"># Copied from Accelerate.</span> +<div class="viewcode-block" id="RaftTrainer._pad_across_processes"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._pad_across_processes">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_pad_across_processes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tensor</span><span class="p">,</span> <span class="n">pad_index</span><span class="o">=-</span><span class="mi">100</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Recursively pad the tensors in a nested list/tuple/dictionary of tensors from all devices to the same size so</span> +<span class="sd"> they can safely be gathered.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">tensor</span><span class="p">,</span> <span class="p">(</span><span class="nb">list</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">)):</span> + <span class="k">return</span> <span class="nb">type</span><span class="p">(</span><span class="n">tensor</span><span class="p">)(</span><span class="bp">self</span><span class="o">.</span><span class="n">_pad_across_processes</span><span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="n">pad_index</span><span class="o">=</span><span class="n">pad_index</span><span class="p">)</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">tensor</span><span class="p">)</span> + <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">tensor</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> + <span class="k">return</span> <span class="nb">type</span><span class="p">(</span><span class="n">tensor</span><span class="p">)({</span><span class="n">k</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pad_across_processes</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">pad_index</span><span class="o">=</span><span class="n">pad_index</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">tensor</span><span class="o">.</span><span class="n">items</span><span class="p">()})</span> + <span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">tensor</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Can&#39;t pad the values of type </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">tensor</span><span class="p">)</span><span class="si">}</span><span class="s2">, only of nested list/tuple/dicts of tensors.&quot;</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">tensor</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">:</span> + <span class="k">return</span> <span class="n">tensor</span> + <span class="c1"># Gather all sizes</span> + <span class="n">size</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span><span class="n">tensor</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">tensor</span><span class="o">.</span><span class="n">device</span><span class="p">)[</span><span class="kc">None</span><span class="p">]</span> + <span class="n">sizes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_nested_gather</span><span class="p">(</span><span class="n">size</span><span class="p">)</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span> + + <span class="n">max_size</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">sizes</span><span class="p">)</span> + <span class="c1"># When extracting XLA graphs for compilation, max_size is 0,</span> + <span class="c1"># so use inequality to avoid errors.</span> + <span class="k">if</span> <span class="n">tensor</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="n">max_size</span><span class="p">:</span> + <span class="k">return</span> <span class="n">tensor</span> + + <span class="c1"># Then pad to the maximum size</span> + <span class="n">old_size</span> <span class="o">=</span> <span class="n">tensor</span><span class="o">.</span><span class="n">shape</span> + <span class="n">new_size</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">old_size</span><span class="p">)</span> + <span class="n">new_size</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">max_size</span> + <span class="n">new_tensor</span> <span class="o">=</span> <span class="n">tensor</span><span class="o">.</span><span class="n">new_zeros</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="n">new_size</span><span class="p">))</span> <span class="o">+</span> <span class="n">pad_index</span> + <span class="n">new_tensor</span><span class="p">[:,</span> <span class="p">:</span> <span class="n">old_size</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">tensor</span> + <span class="k">return</span> <span class="n">new_tensor</span></div> + + +<div class="viewcode-block" id="RaftTrainer.prediction_step"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.prediction_step">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">prediction_step</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">,</span> + <span class="n">inputs</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">Any</span><span class="p">]],</span> + <span class="n">prediction_loss_only</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> + <span class="n">ignore_keys</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Perform an evaluation step on `model` using `inputs`.</span> +<span class="sd"> Subclass and override to inject custom behavior.</span> +<span class="sd"> Args:</span> +<span class="sd"> model (`nn.Module`):</span> +<span class="sd"> The model to evaluate.</span> +<span class="sd"> inputs (`Dict[str, Union[torch.Tensor, Any]]`):</span> +<span class="sd"> The inputs and targets of the model.</span> +<span class="sd"> The dictionary will be unpacked before being fed to the model. Most models expect the targets under the</span> +<span class="sd"> argument `labels`. Check your model&#39;s documentation for all accepted arguments.</span> +<span class="sd"> prediction_loss_only (`bool`):</span> +<span class="sd"> Whether or not to return the loss only.</span> +<span class="sd"> ignore_keys (`Lst[str]`, *optional*):</span> +<span class="sd"> A list of keys in the output of your model (if it is a dictionary) that should be ignored when</span> +<span class="sd"> gathering predictions.</span> +<span class="sd"> Return:</span> +<span class="sd"> Tuple[Optional[torch.Tensor], Optional[torch.Tensor], Optional[torch.Tensor]]: A tuple with the loss,</span> +<span class="sd"> logits and labels (each being optional).</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">has_labels</span> <span class="o">=</span> <span class="kc">False</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">label_names</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">else</span> <span class="nb">all</span><span class="p">(</span><span class="n">inputs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">label_names</span><span class="p">)</span> + <span class="c1"># For CLIP-like models capable of returning loss values.</span> + <span class="c1"># If `return_loss` is not specified or being `None` in `inputs`, we check if the default value of `return_loss`</span> + <span class="c1"># is `True` in `model.forward`.</span> + <span class="n">return_loss</span> <span class="o">=</span> <span class="n">inputs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;return_loss&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> + <span class="k">if</span> <span class="n">return_loss</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">return_loss</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">can_return_loss</span> + <span class="n">loss_without_labels</span> <span class="o">=</span> <span class="kc">True</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">label_names</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">return_loss</span> <span class="k">else</span> <span class="kc">False</span> + + <span class="n">inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prepare_inputs</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span> + <span class="k">if</span> <span class="n">ignore_keys</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="s2">&quot;config&quot;</span><span class="p">):</span> + <span class="n">ignore_keys</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">config</span><span class="p">,</span> <span class="s2">&quot;keys_to_ignore_at_inference&quot;</span><span class="p">,</span> <span class="p">[])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">ignore_keys</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="c1"># labels may be popped when computing the loss (label smoothing for instance) so we grab them first.</span> + <span class="k">if</span> <span class="n">has_labels</span> <span class="ow">or</span> <span class="n">loss_without_labels</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">=</span> <span class="n">nested_detach</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="n">inputs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">label_names</span><span class="p">))</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">labels</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">=</span> <span class="n">labels</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span> + <span class="k">if</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="n">raw_outputs</span> <span class="o">=</span> <span class="n">smp_forward_only</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">inputs</span><span class="p">)</span> + <span class="k">if</span> <span class="n">has_labels</span> <span class="ow">or</span> <span class="n">loss_without_labels</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">raw_outputs</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> + <span class="n">loss_mb</span> <span class="o">=</span> <span class="n">raw_outputs</span><span class="p">[</span><span class="s2">&quot;loss&quot;</span><span class="p">]</span> + <span class="n">logits_mb</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">raw_outputs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">ignore_keys</span> <span class="o">+</span> <span class="p">[</span><span class="s2">&quot;loss&quot;</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">loss_mb</span> <span class="o">=</span> <span class="n">raw_outputs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">logits_mb</span> <span class="o">=</span> <span class="n">raw_outputs</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> + + <span class="n">loss</span> <span class="o">=</span> <span class="n">loss_mb</span><span class="o">.</span><span class="n">reduce_mean</span><span class="p">()</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">smp_nested_concat</span><span class="p">(</span><span class="n">logits_mb</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">raw_outputs</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> + <span class="n">logits_mb</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">raw_outputs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">ignore_keys</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logits_mb</span> <span class="o">=</span> <span class="n">raw_outputs</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">smp_nested_concat</span><span class="p">(</span><span class="n">logits_mb</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">has_labels</span> <span class="ow">or</span> <span class="n">loss_without_labels</span><span class="p">:</span> + <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">compute_loss_context_manager</span><span class="p">():</span> + <span class="n">loss</span><span class="p">,</span> <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">compute_loss</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">return_outputs</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">loss</span> <span class="o">=</span> <span class="n">loss</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span> + + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> + <span class="n">logits</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">outputs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">ignore_keys</span> <span class="o">+</span> <span class="p">[</span><span class="s2">&quot;loss&quot;</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">outputs</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">loss</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">compute_loss_context_manager</span><span class="p">():</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="n">model</span><span class="p">(</span><span class="o">**</span><span class="n">inputs</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> + <span class="n">logits</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">outputs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">ignore_keys</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">outputs</span> + <span class="c1"># TODO: this needs to be fixed and made cleaner later.</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">past_index</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_past</span> <span class="o">=</span> <span class="n">outputs</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">past_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">prediction_loss_only</span><span class="p">:</span> + <span class="k">return</span> <span class="p">(</span><span class="n">loss</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> + + <span class="n">logits</span> <span class="o">=</span> <span class="n">nested_detach</span><span class="p">(</span><span class="n">logits</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">logits</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">logits</span> <span class="o">=</span> <span class="n">logits</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + + <span class="k">return</span> <span class="p">(</span><span class="n">loss</span><span class="p">,</span> <span class="n">logits</span><span class="p">,</span> <span class="n">labels</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer.floating_point_ops"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.floating_point_ops">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">floating_point_ops</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inputs</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> For models that inherit from [`PreTrainedModel`], uses that method to compute the number of floating point</span> +<span class="sd"> operations for every backward + forward pass. If using another model, either implement such a method in the</span> +<span class="sd"> model or subclass and override this method.</span> +<span class="sd"> Args:</span> +<span class="sd"> inputs (`Dict[str, Union[torch.Tensor, Any]]`):</span> +<span class="sd"> The inputs and targets of the model.</span> +<span class="sd"> Returns:</span> +<span class="sd"> `int`: The number of floating-point operations.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="s2">&quot;floating_point_ops&quot;</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">floating_point_ops</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">return</span> <span class="mi">0</span></div> + + +<div class="viewcode-block" id="RaftTrainer.init_git_repo"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.init_git_repo">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">init_git_repo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">at_init</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Initializes a git repo in `self.args.hub_model_id`.</span> +<span class="sd"> Args:</span> +<span class="sd"> at_init (`bool`, *optional*, defaults to `False`):</span> +<span class="sd"> Whether this function is called before any training or not. If `self.args.overwrite_output_dir` is</span> +<span class="sd"> `True` and `at_init` is `True`, the path to the repo (which is `self.args.output_dir`) might be wiped</span> +<span class="sd"> out.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_world_process_zero</span><span class="p">():</span> + <span class="k">return</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hub_model_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">repo_name</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">)</span><span class="o">.</span><span class="n">absolute</span><span class="p">()</span><span class="o">.</span><span class="n">name</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">repo_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hub_model_id</span> + <span class="k">if</span> <span class="s2">&quot;/&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">repo_name</span><span class="p">:</span> + <span class="n">repo_name</span> <span class="o">=</span> <span class="n">get_full_repo_name</span><span class="p">(</span><span class="n">repo_name</span><span class="p">,</span> <span class="n">token</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hub_token</span><span class="p">)</span> + + <span class="c1"># Make sure the repo exists.</span> + <span class="n">create_repo</span><span class="p">(</span><span class="n">repo_name</span><span class="p">,</span> <span class="n">token</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hub_token</span><span class="p">,</span> <span class="n">private</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hub_private_repo</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="k">try</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">repo</span> <span class="o">=</span> <span class="n">Repository</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">clone_from</span><span class="o">=</span><span class="n">repo_name</span><span class="p">,</span> <span class="n">token</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hub_token</span><span class="p">)</span> + <span class="k">except</span> <span class="ne">EnvironmentError</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">overwrite_output_dir</span> <span class="ow">and</span> <span class="n">at_init</span><span class="p">:</span> + <span class="c1"># Try again after wiping output_dir</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">repo</span> <span class="o">=</span> <span class="n">Repository</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">clone_from</span><span class="o">=</span><span class="n">repo_name</span><span class="p">,</span> <span class="n">token</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hub_token</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">repo</span><span class="o">.</span><span class="n">git_pull</span><span class="p">()</span> + + <span class="c1"># By default, ignore the checkpoint folders</span> + <span class="k">if</span> <span class="p">(</span> + <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> <span class="s2">&quot;.gitignore&quot;</span><span class="p">))</span> + <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hub_strategy</span> <span class="o">!=</span> <span class="n">HubStrategy</span><span class="o">.</span><span class="n">ALL_CHECKPOINTS</span> + <span class="p">):</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> <span class="s2">&quot;.gitignore&quot;</span><span class="p">),</span> <span class="s2">&quot;w&quot;</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s2">&quot;utf-8&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">writer</span><span class="p">:</span> + <span class="n">writer</span><span class="o">.</span><span class="n">writelines</span><span class="p">([</span><span class="s2">&quot;checkpoint-*/&quot;</span><span class="p">])</span> + + <span class="c1"># Add &quot;*.sagemaker&quot; to .gitignore if using SageMaker</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;SM_TRAINING_ENV&quot;</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_add_sm_patterns_to_gitignore</span><span class="p">()</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">push_in_progress</span> <span class="o">=</span> <span class="kc">None</span></div> + + +<div class="viewcode-block" id="RaftTrainer.create_model_card"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_model_card">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">create_model_card</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">language</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">license</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tags</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">model_name</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">finetuned_from</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tasks</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">dataset_tags</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">dataset_args</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Creates a draft of a model card using the information available to the `Trainer`.</span> +<span class="sd"> Args:</span> +<span class="sd"> language (`str`, *optional*):</span> +<span class="sd"> The language of the model (if applicable)</span> +<span class="sd"> license (`str`, *optional*):</span> +<span class="sd"> The license of the model. Will default to the license of the pretrained model used, if the original</span> +<span class="sd"> model given to the `Trainer` comes from a repo on the Hub.</span> +<span class="sd"> tags (`str` or `List[str]`, *optional*):</span> +<span class="sd"> Some tags to be included in the metadata of the model card.</span> +<span class="sd"> model_name (`str`, *optional*):</span> +<span class="sd"> The name of the model.</span> +<span class="sd"> finetuned_from (`str`, *optional*):</span> +<span class="sd"> The name of the model used to fine-tune this one (if applicable). Will default to the name of the repo</span> +<span class="sd"> of the original model given to the `Trainer` (if it comes from the Hub).</span> +<span class="sd"> tasks (`str` or `List[str]`, *optional*):</span> +<span class="sd"> One or several task identifiers, to be included in the metadata of the model card.</span> +<span class="sd"> dataset_tags (`str` or `List[str]`, *optional*):</span> +<span class="sd"> One or several dataset tags, to be included in the metadata of the model card.</span> +<span class="sd"> dataset (`str` or `List[str]`, *optional*):</span> +<span class="sd"> One or several dataset identifiers, to be included in the metadata of the model card.</span> +<span class="sd"> dataset_args (`str` or `List[str]`, *optional*):</span> +<span class="sd"> One or several dataset arguments, to be included in the metadata of the model card.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_world_process_zero</span><span class="p">():</span> + <span class="k">return</span> + + <span class="n">training_summary</span> <span class="o">=</span> <span class="n">TrainingSummary</span><span class="o">.</span><span class="n">from_trainer</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">language</span><span class="o">=</span><span class="n">language</span><span class="p">,</span> + <span class="n">license</span><span class="o">=</span><span class="n">license</span><span class="p">,</span> + <span class="n">tags</span><span class="o">=</span><span class="n">tags</span><span class="p">,</span> + <span class="n">model_name</span><span class="o">=</span><span class="n">model_name</span><span class="p">,</span> + <span class="n">finetuned_from</span><span class="o">=</span><span class="n">finetuned_from</span><span class="p">,</span> + <span class="n">tasks</span><span class="o">=</span><span class="n">tasks</span><span class="p">,</span> + <span class="n">dataset_tags</span><span class="o">=</span><span class="n">dataset_tags</span><span class="p">,</span> + <span class="n">dataset</span><span class="o">=</span><span class="n">dataset</span><span class="p">,</span> + <span class="n">dataset_args</span><span class="o">=</span><span class="n">dataset_args</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">model_card</span> <span class="o">=</span> <span class="n">training_summary</span><span class="o">.</span><span class="n">to_model_card</span><span class="p">()</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">,</span> <span class="s2">&quot;README.md&quot;</span><span class="p">),</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">model_card</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._push_from_checkpoint"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._push_from_checkpoint">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_push_from_checkpoint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">checkpoint_folder</span><span class="p">):</span> + <span class="c1"># Only push from one node.</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_world_process_zero</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hub_strategy</span> <span class="o">==</span> <span class="n">HubStrategy</span><span class="o">.</span><span class="n">END</span><span class="p">:</span> + <span class="k">return</span> + <span class="c1"># If we haven&#39;t finished the last push, we don&#39;t do this one.</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">push_in_progress</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">push_in_progress</span><span class="o">.</span><span class="n">is_done</span><span class="p">:</span> + <span class="k">return</span> + + <span class="n">output_dir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span> + <span class="c1"># To avoid a new synchronization of all model weights, we just copy the file from the checkpoint folder</span> + <span class="n">modeling_files</span> <span class="o">=</span> <span class="p">[</span><span class="n">CONFIG_NAME</span><span class="p">,</span> <span class="n">WEIGHTS_NAME</span><span class="p">]</span> + <span class="k">for</span> <span class="n">modeling_file</span> <span class="ow">in</span> <span class="n">modeling_files</span><span class="p">:</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint_folder</span><span class="p">,</span> <span class="n">modeling_file</span><span class="p">)):</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">checkpoint_folder</span><span class="p">,</span> <span class="n">modeling_file</span><span class="p">),</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">modeling_file</span><span class="p">))</span> + <span class="c1"># Saving the tokenizer is fast and we don&#39;t know how many files it may have spawned, so we resave it to be sure.</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">save_pretrained</span><span class="p">(</span><span class="n">output_dir</span><span class="p">)</span> + <span class="c1"># Same for the training arguments</span> + <span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="n">TRAINING_ARGS_NAME</span><span class="p">))</span> + + <span class="k">try</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hub_strategy</span> <span class="o">==</span> <span class="n">HubStrategy</span><span class="o">.</span><span class="n">CHECKPOINT</span><span class="p">:</span> + <span class="c1"># Temporarily move the checkpoint just saved for the push</span> + <span class="n">tmp_checkpoint</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output_dir</span><span class="p">,</span> <span class="s2">&quot;last-checkpoint&quot;</span><span class="p">)</span> + <span class="c1"># We have to remove the &quot;last-checkpoint&quot; dir if it exists, otherwise the checkpoint is moved as a</span> + <span class="c1"># subfolder.</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">tmp_checkpoint</span><span class="p">):</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">tmp_checkpoint</span><span class="p">)</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">checkpoint_folder</span><span class="p">,</span> <span class="n">tmp_checkpoint</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">save_strategy</span> <span class="o">==</span> <span class="n">IntervalStrategy</span><span class="o">.</span><span class="n">STEPS</span><span class="p">:</span> + <span class="n">commit_message</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Training in progress, step </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">global_step</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">commit_message</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Training in progress, epoch </span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">epoch</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="n">_</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">push_in_progress</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">repo</span><span class="o">.</span><span class="n">push_to_hub</span><span class="p">(</span> + <span class="n">commit_message</span><span class="o">=</span><span class="n">commit_message</span><span class="p">,</span> <span class="n">blocking</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">auto_lfs_prune</span><span class="o">=</span><span class="kc">True</span> + <span class="p">)</span> + <span class="k">finally</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hub_strategy</span> <span class="o">==</span> <span class="n">HubStrategy</span><span class="o">.</span><span class="n">CHECKPOINT</span><span class="p">:</span> + <span class="c1"># Move back the checkpoint to its place</span> + <span class="n">shutil</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">tmp_checkpoint</span><span class="p">,</span> <span class="n">checkpoint_folder</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer.push_to_hub"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.push_to_hub">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">push_to_hub</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">commit_message</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;End of training&quot;</span><span class="p">,</span> <span class="n">blocking</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Upload *self.model* and *self.tokenizer* to the 🤗 model hub on the repo *self.args.hub_model_id*.</span> +<span class="sd"> Parameters:</span> +<span class="sd"> commit_message (`str`, *optional*, defaults to `&quot;End of training&quot;`):</span> +<span class="sd"> Message to commit while pushing.</span> +<span class="sd"> blocking (`bool`, *optional*, defaults to `True`):</span> +<span class="sd"> Whether the function should return only when the `git push` has finished.</span> +<span class="sd"> kwargs:</span> +<span class="sd"> Additional keyword arguments passed along to [`~Trainer.create_model_card`].</span> +<span class="sd"> Returns:</span> +<span class="sd"> The url of the commit of your model in the given repository if `blocking=False`, a tuple with the url of</span> +<span class="sd"> the commit and an object to track the progress of the commit if `blocking=True`</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># If a user calls manually `push_to_hub` with `self.args.push_to_hub = False`, we try to create the repo but</span> + <span class="c1"># it might fail.</span> + <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;repo&quot;</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">init_git_repo</span><span class="p">()</span> + + <span class="n">model_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">&quot;model_name&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> + <span class="k">if</span> <span class="n">model_name</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hub_model_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">model_name</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_dir</span><span class="p">)</span><span class="o">.</span><span class="n">name</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">model_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">hub_model_id</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + + <span class="c1"># Needs to be executed on all processes for TPU training, but will only save on the processed determined by</span> + <span class="c1"># self.args.should_save.</span> + <span class="bp">self</span><span class="o">.</span><span class="n">save_model</span><span class="p">(</span><span class="n">_internal_call</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="c1"># Only push from one node.</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_world_process_zero</span><span class="p">():</span> + <span class="k">return</span> + + <span class="c1"># Cancel any async push in progress if blocking=True. The commits will all be pushed together.</span> + <span class="k">if</span> <span class="n">blocking</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">push_in_progress</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">push_in_progress</span><span class="o">.</span><span class="n">is_done</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">push_in_progress</span><span class="o">.</span><span class="n">_process</span><span class="o">.</span><span class="n">kill</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">push_in_progress</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="n">git_head_commit_url</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">repo</span><span class="o">.</span><span class="n">push_to_hub</span><span class="p">(</span> + <span class="n">commit_message</span><span class="o">=</span><span class="n">commit_message</span><span class="p">,</span> <span class="n">blocking</span><span class="o">=</span><span class="n">blocking</span><span class="p">,</span> <span class="n">auto_lfs_prune</span><span class="o">=</span><span class="kc">True</span> + <span class="p">)</span> + <span class="c1"># push separately the model card to be independant from the rest of the model</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">should_save</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">create_model_card</span><span class="p">(</span><span class="n">model_name</span><span class="o">=</span><span class="n">model_name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="k">try</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">repo</span><span class="o">.</span><span class="n">push_to_hub</span><span class="p">(</span> + <span class="n">commit_message</span><span class="o">=</span><span class="s2">&quot;update model card README.md&quot;</span><span class="p">,</span> <span class="n">blocking</span><span class="o">=</span><span class="n">blocking</span><span class="p">,</span> <span class="n">auto_lfs_prune</span><span class="o">=</span><span class="kc">True</span> + <span class="p">)</span> + <span class="k">except</span> <span class="ne">EnvironmentError</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Error pushing update to the model card. Please read logs and retry.</span><span class="se">\n</span><span class="s2">$</span><span class="si">{</span><span class="n">exc</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">git_head_commit_url</span></div> + + + <span class="c1">#</span> + <span class="c1"># Deprecated code</span> + <span class="c1">#</span> + +<div class="viewcode-block" id="RaftTrainer.prediction_loop"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.prediction_loop">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">prediction_loop</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">dataloader</span><span class="p">:</span> <span class="n">DataLoader</span><span class="p">,</span> + <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">prediction_loss_only</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">ignore_keys</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">metric_key_prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;eval&quot;</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">EvalLoopOutput</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Prediction/evaluation loop, shared by `Trainer.evaluate()` and `Trainer.predict()`.</span> +<span class="sd"> Works both with or without labels.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">has_length</span><span class="p">(</span><span class="n">dataloader</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;dataloader must implement a working __len__&quot;</span><span class="p">)</span> + + <span class="n">prediction_loss_only</span> <span class="o">=</span> <span class="n">prediction_loss_only</span> <span class="k">if</span> <span class="n">prediction_loss_only</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">args</span><span class="o">.</span><span class="n">prediction_loss_only</span> + + <span class="c1"># if eval is called w/o train init deepspeed here</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">deepspeed</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span><span class="p">:</span> + <span class="c1"># XXX: eval doesn&#39;t have `resume_from_checkpoint` arg but we should be able to do eval</span> + <span class="c1"># from the checkpoint eventually</span> + <span class="n">deepspeed_engine</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">deepspeed_init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num_training_steps</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">resume_from_checkpoint</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">deepspeed_engine</span><span class="o">.</span><span class="n">module</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_wrapped</span> <span class="o">=</span> <span class="n">deepspeed_engine</span> + <span class="bp">self</span><span class="o">.</span><span class="n">deepspeed</span> <span class="o">=</span> <span class="n">deepspeed_engine</span> + <span class="c1"># XXX: we don&#39;t need optim/sched for inference, but this needs to be sorted out, since</span> + <span class="c1"># for example the Z3-optimizer is a must for zero3 to work even for inference - what we</span> + <span class="c1"># don&#39;t need is the deepspeed basic optimizer which is self.optimizer.optimizer</span> + <span class="n">deepspeed_engine</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">optimizer</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">deepspeed_engine</span><span class="o">.</span><span class="n">lr_scheduler</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="n">model</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_wrap_model</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">training</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dataloader</span><span class="o">=</span><span class="n">dataloader</span><span class="p">)</span> + + <span class="c1"># if full fp16 or bf16 eval is wanted and this ``evaluation`` or ``predict`` isn&#39;t called</span> + <span class="c1"># while ``train`` is running, cast it to the right dtype first and then put on device</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_in_train</span><span class="p">:</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">fp16_full_eval</span><span class="p">:</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float16</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">bf16_full_eval</span><span class="p">:</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">bfloat16</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + + <span class="n">batch_size</span> <span class="o">=</span> <span class="n">dataloader</span><span class="o">.</span><span class="n">batch_size</span> + <span class="n">num_examples</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_examples</span><span class="p">(</span><span class="n">dataloader</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;***** Running </span><span class="si">{</span><span class="n">description</span><span class="si">}</span><span class="s2"> *****&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Num examples = </span><span class="si">{</span><span class="n">num_examples</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Batch size = </span><span class="si">{</span><span class="n">batch_size</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">losses_host</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">preds_host</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">labels_host</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">inputs_host</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="n">world_size</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">world_size</span><span class="p">)</span> + + <span class="n">eval_losses_gatherer</span> <span class="o">=</span> <span class="n">DistributedTensorGatherer</span><span class="p">(</span><span class="n">world_size</span><span class="p">,</span> <span class="n">num_examples</span><span class="p">,</span> <span class="n">make_multiple_of</span><span class="o">=</span><span class="n">batch_size</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">prediction_loss_only</span><span class="p">:</span> + <span class="c1"># The actual number of eval_sample can be greater than num_examples in distributed settings (when we pass</span> + <span class="c1"># a batch size to the sampler)</span> + <span class="n">make_multiple_of</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">dataloader</span><span class="p">,</span> <span class="s2">&quot;sampler&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dataloader</span><span class="o">.</span><span class="n">sampler</span><span class="p">,</span> <span class="n">SequentialDistributedSampler</span><span class="p">):</span> + <span class="n">make_multiple_of</span> <span class="o">=</span> <span class="n">dataloader</span><span class="o">.</span><span class="n">sampler</span><span class="o">.</span><span class="n">batch_size</span> + <span class="n">preds_gatherer</span> <span class="o">=</span> <span class="n">DistributedTensorGatherer</span><span class="p">(</span><span class="n">world_size</span><span class="p">,</span> <span class="n">num_examples</span><span class="p">,</span> <span class="n">make_multiple_of</span><span class="o">=</span><span class="n">make_multiple_of</span><span class="p">)</span> + <span class="n">labels_gatherer</span> <span class="o">=</span> <span class="n">DistributedTensorGatherer</span><span class="p">(</span><span class="n">world_size</span><span class="p">,</span> <span class="n">num_examples</span><span class="p">,</span> <span class="n">make_multiple_of</span><span class="o">=</span><span class="n">make_multiple_of</span><span class="p">)</span> + <span class="n">inputs_gatherer</span> <span class="o">=</span> <span class="n">DistributedTensorGatherer</span><span class="p">(</span><span class="n">world_size</span><span class="p">,</span> <span class="n">num_examples</span><span class="p">,</span> <span class="n">make_multiple_of</span><span class="o">=</span><span class="n">make_multiple_of</span><span class="p">)</span> + + <span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span> + + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="n">dataloader</span> <span class="o">=</span> <span class="n">pl</span><span class="o">.</span><span class="n">ParallelLoader</span><span class="p">(</span><span class="n">dataloader</span><span class="p">,</span> <span class="p">[</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">])</span><span class="o">.</span><span class="n">per_device_loader</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">past_index</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_past</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">eval_dataloader</span> <span class="o">=</span> <span class="n">dataloader</span> + + <span class="k">for</span> <span class="n">step</span><span class="p">,</span> <span class="n">inputs</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">dataloader</span><span class="p">):</span> + <span class="n">loss</span><span class="p">,</span> <span class="n">logits</span><span class="p">,</span> <span class="n">labels</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prediction_step</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">prediction_loss_only</span><span class="p">,</span> <span class="n">ignore_keys</span><span class="o">=</span><span class="n">ignore_keys</span><span class="p">)</span> + <span class="n">inputs_decode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prepare_input</span><span class="p">(</span><span class="n">inputs</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">])</span> <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">include_inputs_for_metrics</span> <span class="k">else</span> <span class="kc">None</span> + + <span class="k">if</span> <span class="n">loss</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">losses</span> <span class="o">=</span> <span class="n">loss</span><span class="o">.</span><span class="n">repeat</span><span class="p">(</span><span class="n">batch_size</span><span class="p">)</span> + <span class="n">losses_host</span> <span class="o">=</span> <span class="n">losses</span> <span class="k">if</span> <span class="n">losses_host</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">losses_host</span><span class="p">,</span> <span class="n">losses</span><span class="p">),</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> + <span class="k">if</span> <span class="n">logits</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">preds_host</span> <span class="o">=</span> <span class="n">logits</span> <span class="k">if</span> <span class="n">preds_host</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">nested_concat</span><span class="p">(</span><span class="n">preds_host</span><span class="p">,</span> <span class="n">logits</span><span class="p">,</span> <span class="n">padding_index</span><span class="o">=-</span><span class="mi">100</span><span class="p">)</span> + <span class="k">if</span> <span class="n">labels</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">labels_host</span> <span class="o">=</span> <span class="n">labels</span> <span class="k">if</span> <span class="n">labels_host</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">nested_concat</span><span class="p">(</span><span class="n">labels_host</span><span class="p">,</span> <span class="n">labels</span><span class="p">,</span> <span class="n">padding_index</span><span class="o">=-</span><span class="mi">100</span><span class="p">)</span> + <span class="k">if</span> <span class="n">inputs_decode</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">inputs_host</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">inputs_decode</span> + <span class="k">if</span> <span class="n">inputs_host</span> <span class="ow">is</span> <span class="kc">None</span> + <span class="k">else</span> <span class="n">nested_concat</span><span class="p">(</span><span class="n">inputs_host</span><span class="p">,</span> <span class="n">inputs_decode</span><span class="p">,</span> <span class="n">padding_index</span><span class="o">=-</span><span class="mi">100</span><span class="p">)</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">control</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_handler</span><span class="o">.</span><span class="n">on_prediction_step</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">control</span><span class="p">)</span> + + <span class="c1"># Gather all tensors and put them back on the CPU if we have done enough accumulation steps.</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">eval_accumulation_steps</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="p">(</span><span class="n">step</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="n">args</span><span class="o">.</span><span class="n">eval_accumulation_steps</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">eval_losses_gatherer</span><span class="o">.</span><span class="n">add_arrays</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_gather_and_numpify</span><span class="p">(</span><span class="n">losses_host</span><span class="p">,</span> <span class="s2">&quot;eval_losses&quot;</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">prediction_loss_only</span><span class="p">:</span> + <span class="n">preds_gatherer</span><span class="o">.</span><span class="n">add_arrays</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_gather_and_numpify</span><span class="p">(</span><span class="n">preds_host</span><span class="p">,</span> <span class="s2">&quot;eval_preds&quot;</span><span class="p">))</span> + <span class="n">labels_gatherer</span><span class="o">.</span><span class="n">add_arrays</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_gather_and_numpify</span><span class="p">(</span><span class="n">labels_host</span><span class="p">,</span> <span class="s2">&quot;eval_label_ids&quot;</span><span class="p">))</span> + <span class="n">inputs_gatherer</span><span class="o">.</span><span class="n">add_arrays</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_gather_and_numpify</span><span class="p">(</span><span class="n">inputs_host</span><span class="p">,</span> <span class="s2">&quot;eval_inputs_ids&quot;</span><span class="p">))</span> + + <span class="c1"># Set back to None to begin a new accumulation</span> + <span class="n">losses_host</span><span class="p">,</span> <span class="n">preds_host</span><span class="p">,</span> <span class="n">labels_host</span><span class="p">,</span> <span class="n">inputs_host</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span> + + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">past_index</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;_past&quot;</span><span class="p">):</span> + <span class="c1"># Clean the state at the end of the evaluation loop</span> + <span class="nb">delattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;_past&quot;</span><span class="p">)</span> + + <span class="c1"># Gather all remaining tensors and put them back on the CPU</span> + <span class="n">eval_losses_gatherer</span><span class="o">.</span><span class="n">add_arrays</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_gather_and_numpify</span><span class="p">(</span><span class="n">losses_host</span><span class="p">,</span> <span class="s2">&quot;eval_losses&quot;</span><span class="p">))</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">prediction_loss_only</span><span class="p">:</span> + <span class="n">preds_gatherer</span><span class="o">.</span><span class="n">add_arrays</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_gather_and_numpify</span><span class="p">(</span><span class="n">preds_host</span><span class="p">,</span> <span class="s2">&quot;eval_preds&quot;</span><span class="p">))</span> + <span class="n">labels_gatherer</span><span class="o">.</span><span class="n">add_arrays</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_gather_and_numpify</span><span class="p">(</span><span class="n">labels_host</span><span class="p">,</span> <span class="s2">&quot;eval_label_ids&quot;</span><span class="p">))</span> + <span class="n">inputs_gatherer</span><span class="o">.</span><span class="n">add_arrays</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_gather_and_numpify</span><span class="p">(</span><span class="n">inputs_host</span><span class="p">,</span> <span class="s2">&quot;eval_inputs_ids&quot;</span><span class="p">))</span> + + <span class="n">eval_loss</span> <span class="o">=</span> <span class="n">eval_losses_gatherer</span><span class="o">.</span><span class="n">finalize</span><span class="p">()</span> + <span class="n">preds</span> <span class="o">=</span> <span class="n">preds_gatherer</span><span class="o">.</span><span class="n">finalize</span><span class="p">()</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">prediction_loss_only</span> <span class="k">else</span> <span class="kc">None</span> + <span class="n">label_ids</span> <span class="o">=</span> <span class="n">labels_gatherer</span><span class="o">.</span><span class="n">finalize</span><span class="p">()</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">prediction_loss_only</span> <span class="k">else</span> <span class="kc">None</span> + <span class="n">inputs_ids</span> <span class="o">=</span> <span class="n">inputs_gatherer</span><span class="o">.</span><span class="n">finalize</span><span class="p">()</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">prediction_loss_only</span> <span class="k">else</span> <span class="kc">None</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">compute_metrics</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">preds</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">label_ids</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">include_inputs_for_metrics</span><span class="p">:</span> + <span class="n">metrics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">compute_metrics</span><span class="p">(</span> + <span class="n">EvalPrediction</span><span class="p">(</span><span class="n">predictions</span><span class="o">=</span><span class="n">preds</span><span class="p">,</span> <span class="n">label_ids</span><span class="o">=</span><span class="n">label_ids</span><span class="p">,</span> <span class="n">inputs</span><span class="o">=</span><span class="n">inputs_ids</span><span class="p">)</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">metrics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">compute_metrics</span><span class="p">(</span><span class="n">EvalPrediction</span><span class="p">(</span><span class="n">predictions</span><span class="o">=</span><span class="n">preds</span><span class="p">,</span> <span class="n">label_ids</span><span class="o">=</span><span class="n">label_ids</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">metrics</span> <span class="o">=</span> <span class="p">{}</span> + + <span class="c1"># To be JSON-serializable, we need to remove numpy types or zero-d tensors</span> + <span class="n">metrics</span> <span class="o">=</span> <span class="n">denumpify_detensorize</span><span class="p">(</span><span class="n">metrics</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">eval_loss</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">metric_key_prefix</span><span class="si">}</span><span class="s2">_loss&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">eval_loss</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span><span class="o">.</span><span class="n">item</span><span class="p">()</span> + + <span class="c1"># Prefix all keys with metric_key_prefix + &#39;_&#39;</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">metrics</span><span class="o">.</span><span class="n">keys</span><span class="p">()):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">key</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">metric_key_prefix</span><span class="si">}</span><span class="s2">_&quot;</span><span class="p">):</span> + <span class="n">metrics</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">metric_key_prefix</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">metrics</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">EvalLoopOutput</span><span class="p">(</span><span class="n">predictions</span><span class="o">=</span><span class="n">preds</span><span class="p">,</span> <span class="n">label_ids</span><span class="o">=</span><span class="n">label_ids</span><span class="p">,</span> <span class="n">metrics</span><span class="o">=</span><span class="n">metrics</span><span class="p">,</span> <span class="n">num_samples</span><span class="o">=</span><span class="n">num_examples</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._gather_and_numpify"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._gather_and_numpify">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_gather_and_numpify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tensors</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Gather value of `tensors` (tensor or list/tuple of nested tensors) and convert them to numpy before</span> +<span class="sd"> concatenating them to `gathered`</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="n">tensors</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">return</span> + <span class="k">if</span> <span class="n">is_torch_tpu_available</span><span class="p">():</span> + <span class="n">tensors</span> <span class="o">=</span> <span class="n">nested_xla_mesh_reduce</span><span class="p">(</span><span class="n">tensors</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">is_sagemaker_mp_enabled</span><span class="p">():</span> + <span class="n">tensors</span> <span class="o">=</span> <span class="n">smp_gather</span><span class="p">(</span><span class="n">tensors</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">local_rank</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="n">tensors</span> <span class="o">=</span> <span class="n">distributed_concat</span><span class="p">(</span><span class="n">tensors</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">nested_numpify</span><span class="p">(</span><span class="n">tensors</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="RaftTrainer._add_sm_patterns_to_gitignore"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._add_sm_patterns_to_gitignore">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_add_sm_patterns_to_gitignore</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Add SageMaker Checkpointing patterns to .gitignore file.&quot;&quot;&quot;</span> + <span class="c1"># Make sure we only do this on the main process</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_world_process_zero</span><span class="p">():</span> + <span class="k">return</span> + + <span class="n">patterns</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;*.sagemaker-uploading&quot;</span><span class="p">,</span> <span class="s2">&quot;*.sagemaker-uploaded&quot;</span><span class="p">]</span> + + <span class="c1"># Get current .gitignore content</span> + <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">repo</span><span class="o">.</span><span class="n">local_dir</span><span class="p">,</span> <span class="s2">&quot;.gitignore&quot;</span><span class="p">)):</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">repo</span><span class="o">.</span><span class="n">local_dir</span><span class="p">,</span> <span class="s2">&quot;.gitignore&quot;</span><span class="p">),</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">current_content</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">current_content</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> + + <span class="c1"># Add the patterns to .gitignore</span> + <span class="n">content</span> <span class="o">=</span> <span class="n">current_content</span> + <span class="k">for</span> <span class="n">pattern</span> <span class="ow">in</span> <span class="n">patterns</span><span class="p">:</span> + <span class="k">if</span> <span class="n">pattern</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">content</span><span class="p">:</span> + <span class="k">if</span> <span class="n">content</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">):</span> + <span class="n">content</span> <span class="o">+=</span> <span class="n">pattern</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="si">{</span><span class="n">pattern</span><span class="si">}</span><span class="s2">&quot;</span> + + <span class="c1"># Write the .gitignore file if it has changed</span> + <span class="k">if</span> <span class="n">content</span> <span class="o">!=</span> <span class="n">current_content</span><span class="p">:</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">repo</span><span class="o">.</span><span class="n">local_dir</span><span class="p">,</span> <span class="s2">&quot;.gitignore&quot;</span><span class="p">),</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Writing .gitignore file. Content: </span><span class="si">{</span><span class="n">content</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">content</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">repo</span><span class="o">.</span><span class="n">git_add</span><span class="p">(</span><span class="s2">&quot;.gitignore&quot;</span><span class="p">)</span> + + <span class="c1"># avoid race condition with git status</span> + <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">repo</span><span class="o">.</span><span class="n">is_repo_clean</span><span class="p">():</span> + <span class="bp">self</span><span class="o">.</span><span class="n">repo</span><span class="o">.</span><span class="n">git_commit</span><span class="p">(</span><span class="s2">&quot;Add *.sagemaker patterns to .gitignore.&quot;</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">repo</span><span class="o">.</span><span class="n">git_push</span><span class="p">()</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/utils/rm_dataprocessor.html b/_modules/lmflow/pipeline/utils/rm_dataprocessor.html new file mode 100644 index 000000000..f0fa17484 --- /dev/null +++ b/_modules/lmflow/pipeline/utils/rm_dataprocessor.html @@ -0,0 +1,515 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.utils.rm_dataprocessor &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/utils/rm_dataprocessor';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.rm_dataprocessor</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.utils.rm_dataprocessor</h1><div class="highlight"><pre> +<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">dataclasses</span><span class="w"> </span><span class="kn">import</span> <span class="n">dataclass</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Union</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">datasets</span><span class="w"> </span><span class="kn">import</span> <span class="n">load_dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">AutoTokenizer</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">PaddingStrategy</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="RewardDataCollatorWithPadding"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">RewardDataCollatorWithPadding</span><span class="p">:</span> +<div class="viewcode-block" id="RewardDataCollatorWithPadding.tokenizer"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.tokenizer">[docs]</a> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">AutoTokenizer</span></div> + +<div class="viewcode-block" id="RewardDataCollatorWithPadding.padding"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.padding">[docs]</a> + <span class="n">padding</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">PaddingStrategy</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span></div> + +<div class="viewcode-block" id="RewardDataCollatorWithPadding.max_length"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.max_length">[docs]</a> + <span class="n">max_length</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="RewardDataCollatorWithPadding.pad_to_multiple_of"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.pad_to_multiple_of">[docs]</a> + <span class="n">pad_to_multiple_of</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="RewardDataCollatorWithPadding.return_tensors"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.return_tensors">[docs]</a> + <span class="n">return_tensors</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;pt&quot;</span></div> + + +<div class="viewcode-block" id="RewardDataCollatorWithPadding.__call__"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.__call__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">features</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]])</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span> + <span class="n">merged_features</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">feature</span> <span class="ow">in</span> <span class="n">features</span><span class="p">:</span> + <span class="n">merged_features</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> + <span class="p">{</span> + <span class="s2">&quot;input_ids&quot;</span><span class="p">:</span> <span class="n">feature</span><span class="p">[</span><span class="s2">&quot;input_ids_chosen&quot;</span><span class="p">],</span> + <span class="s2">&quot;attention_mask&quot;</span><span class="p">:</span> <span class="n">feature</span><span class="p">[</span><span class="s2">&quot;attention_mask_chosen&quot;</span><span class="p">],</span> + <span class="p">}</span> + <span class="p">)</span> + <span class="n">merged_features</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> + <span class="p">{</span> + <span class="s2">&quot;input_ids&quot;</span><span class="p">:</span> <span class="n">feature</span><span class="p">[</span><span class="s2">&quot;input_ids_rejected&quot;</span><span class="p">],</span> + <span class="s2">&quot;attention_mask&quot;</span><span class="p">:</span> <span class="n">feature</span><span class="p">[</span><span class="s2">&quot;attention_mask_rejected&quot;</span><span class="p">],</span> + <span class="p">}</span> + <span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Chosen: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">feature</span><span class="p">[</span><span class="s1">&#39;input_ids_chosen&#39;</span><span class="p">])</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Rejected: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">feature</span><span class="p">[</span><span class="s1">&#39;input_ids_rejected&#39;</span><span class="p">])</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">batch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad</span><span class="p">(</span> + <span class="n">merged_features</span><span class="p">,</span> + <span class="n">padding</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">padding</span><span class="p">,</span> + <span class="n">max_length</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">max_length</span><span class="p">,</span> + <span class="n">pad_to_multiple_of</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">pad_to_multiple_of</span><span class="p">,</span> + <span class="n">return_tensors</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">return_tensors</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">batch</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;input_ids&quot;</span><span class="p">:</span> <span class="n">batch</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">],</span> + <span class="s2">&quot;attention_mask&quot;</span><span class="p">:</span> <span class="n">batch</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">],</span> + <span class="s2">&quot;return_loss&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> + <span class="p">}</span> + <span class="k">return</span> <span class="n">batch</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/utils/rm_trainer.html b/_modules/lmflow/pipeline/utils/rm_trainer.html new file mode 100644 index 000000000..9d8157b51 --- /dev/null +++ b/_modules/lmflow/pipeline/utils/rm_trainer.html @@ -0,0 +1,501 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.utils.rm_trainer &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/utils/rm_trainer';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.rm_trainer</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.utils.rm_trainer</h1><div class="highlight"><pre> +<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.nn</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">nn</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">Trainer</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">.peft_trainer</span><span class="w"> </span><span class="kn">import</span> <span class="n">PeftTrainer</span> + + +<div class="viewcode-block" id="compute_metrics"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/rm_trainer/index.html#lmflow.pipeline.utils.rm_trainer.compute_metrics">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">compute_metrics</span><span class="p">(</span><span class="n">eval_pred</span><span class="p">):</span> + <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span> + <span class="n">pos_predictions_scores</span> <span class="o">=</span> <span class="n">eval_pred</span><span class="o">.</span><span class="n">predictions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">neg_predictions_scores</span> <span class="o">=</span> <span class="n">eval_pred</span><span class="o">.</span><span class="n">predictions</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + <span class="c1"># We assume that the first sample is preferred by default in groundtruth</span> + <span class="n">result</span><span class="p">[</span><span class="s1">&#39;accuracy&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span> + <span class="n">pos_predictions_scores</span> <span class="o">&gt;</span> <span class="n">neg_predictions_scores</span><span class="p">)</span> <span class="o">/</span> <span class="nb">len</span><span class="p">(</span><span class="n">pos_predictions_scores</span><span class="p">)</span> + <span class="k">return</span> <span class="n">result</span></div> + + + +<div class="viewcode-block" id="rm_loss"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/rm_trainer/index.html#lmflow.pipeline.utils.rm_trainer.rm_loss">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">rm_loss</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">return_outputs</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> + <span class="n">rewards</span> <span class="o">=</span> <span class="n">model</span><span class="p">(</span> + <span class="n">input_ids</span><span class="o">=</span><span class="n">inputs</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">],</span> + <span class="n">attention_mask</span><span class="o">=</span><span class="n">inputs</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">]</span> + <span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">bsz</span> <span class="o">=</span> <span class="n">rewards</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> + <span class="n">jidx</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">bsz</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> + <span class="n">kidx</span> <span class="o">=</span> <span class="n">jidx</span> <span class="o">+</span> <span class="mi">1</span> + <span class="n">rewards_j</span> <span class="o">=</span> <span class="n">rewards</span><span class="p">[</span><span class="n">jidx</span><span class="p">]</span> + <span class="n">rewards_k</span> <span class="o">=</span> <span class="n">rewards</span><span class="p">[</span><span class="n">kidx</span><span class="p">]</span> + <span class="n">loss</span> <span class="o">=</span> <span class="o">-</span><span class="n">nn</span><span class="o">.</span><span class="n">functional</span><span class="o">.</span><span class="n">logsigmoid</span><span class="p">(</span><span class="n">rewards_j</span> <span class="o">-</span> <span class="n">rewards_k</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span> + <span class="k">if</span> <span class="n">return_outputs</span><span class="p">:</span> + <span class="k">return</span> <span class="n">loss</span><span class="p">,</span> <span class="p">{</span><span class="s2">&quot;rewards_j&quot;</span><span class="p">:</span> <span class="n">rewards_j</span><span class="p">,</span> <span class="s2">&quot;rewards_k&quot;</span><span class="p">:</span> <span class="n">rewards_k</span><span class="p">}</span> + <span class="k">return</span> <span class="n">loss</span></div> + + + +<div class="viewcode-block" id="RewardTrainer"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/rm_trainer/index.html#lmflow.pipeline.utils.rm_trainer.RewardTrainer">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">RewardTrainer</span><span class="p">(</span><span class="n">Trainer</span><span class="p">):</span> +<div class="viewcode-block" id="RewardTrainer.compute_loss"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/rm_trainer/index.html#lmflow.pipeline.utils.rm_trainer.RewardTrainer.compute_loss">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">compute_loss</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">return_outputs</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> + <span class="k">return</span> <span class="n">rm_loss</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">return_outputs</span><span class="p">)</span></div> +</div> + + + +<div class="viewcode-block" id="PeftRewardTrainer"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/rm_trainer/index.html#lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">PeftRewardTrainer</span><span class="p">(</span><span class="n">PeftTrainer</span><span class="p">):</span> +<div class="viewcode-block" id="PeftRewardTrainer.compute_loss"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/pipeline/utils/rm_trainer/index.html#lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer.compute_loss">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">compute_loss</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">return_outputs</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> + <span class="k">return</span> <span class="n">rm_loss</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">return_outputs</span><span class="p">)</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/pipeline/vllm_inferencer.html b/_modules/lmflow/pipeline/vllm_inferencer.html new file mode 100644 index 000000000..2fc0849ac --- /dev/null +++ b/_modules/lmflow/pipeline/vllm_inferencer.html @@ -0,0 +1,866 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.pipeline.vllm_inferencer &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/pipeline/vllm_inferencer';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.vllm_inferencer</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.pipeline.vllm_inferencer</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">copy</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">importlib.resources</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pkg_resources</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">json</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">&#39;VLLM_WORKER_MULTIPROC_METHOD&#39;</span><span class="p">]</span><span class="o">=</span><span class="s1">&#39;spawn&#39;</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">subprocess</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">functools</span><span class="w"> </span><span class="kn">import</span> <span class="n">partial</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Any</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">AutoTokenizer</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.base_pipeline</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePipeline</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.hf_decoder_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">HFDecoderModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">InferencerArguments</span><span class="p">,</span> + <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">DatasetArguments</span><span class="p">,</span> +<span class="p">)</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.common</span><span class="w"> </span><span class="kn">import</span> <span class="n">make_shell_args_from_dataclass</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="n">RETURN_CODE_ERROR_BUFFER</span><span class="p">,</span> <span class="n">MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.data_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">VLLMInferenceResultWithInput</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.versioning</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_vllm_available</span><span class="p">,</span> <span class="n">is_ray_available</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<span class="k">if</span> <span class="n">is_vllm_available</span><span class="p">():</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">vllm</span><span class="w"> </span><span class="kn">import</span> <span class="n">SamplingParams</span><span class="p">,</span> <span class="n">LLM</span> +<span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="s2">&quot;VLLM is not available, please install vllm.&quot;</span><span class="p">)</span> + +<span class="k">if</span> <span class="n">is_ray_available</span><span class="p">():</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">ray</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">ray.data</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">ray.util.scheduling_strategies</span><span class="w"> </span><span class="kn">import</span> <span class="n">PlacementGroupSchedulingStrategy</span> +<span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Ray is not available, distributed vllm inference will not be supported.&quot;</span><span class="p">)</span> + + +<div class="viewcode-block" id="InferencerWithOffloading"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">InferencerWithOffloading</span><span class="p">(</span><span class="n">BasePipeline</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">inferencer_args</span><span class="p">:</span> <span class="n">InferencerArguments</span><span class="p">,</span> + <span class="p">):</span> +<div class="viewcode-block" id="InferencerWithOffloading.model_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.model_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span> <span class="o">=</span> <span class="n">model_args</span></div> + +<div class="viewcode-block" id="InferencerWithOffloading.data_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.data_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span> <span class="o">=</span> <span class="n">data_args</span></div> + +<div class="viewcode-block" id="InferencerWithOffloading.inferencer_args"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.inferencer_args">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span> <span class="o">=</span> <span class="n">inferencer_args</span></div> + +<div class="viewcode-block" id="InferencerWithOffloading.eos_token_id"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.eos_token_id">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">eos_token_id</span> <span class="o">=</span> <span class="n">AutoTokenizer</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">)</span><span class="o">.</span><span class="n">eos_token_id</span></div> + + +<div class="viewcode-block" id="InferencerWithOffloading.inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">inference</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">&quot;.inference is not implemented&quot;</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="InferencerWithOffloading.save_inference_results"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.save_inference_results">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">save_inference_results</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">&quot;.save_inference_results is not implemented&quot;</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="InferencerWithOffloading.load_inference_results"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.load_inference_results">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">load_inference_results</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">&quot;.load_inference_results is not implemented&quot;</span><span class="p">)</span></div> +</div> + + + +<div class="viewcode-block" id="VLLMInferencer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">VLLMInferencer</span><span class="p">(</span><span class="n">InferencerWithOffloading</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">inferencer_args</span><span class="p">:</span> <span class="n">InferencerArguments</span><span class="p">,</span> + <span class="p">):</span> + <span class="k">assert</span> <span class="n">inferencer_args</span><span class="o">.</span><span class="n">use_vllm</span><span class="p">,</span> <span class="s2">&quot;The inferencer_args.use_vllm must be True.&quot;</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">inferencer_args</span><span class="p">)</span> +<div class="viewcode-block" id="VLLMInferencer.sampling_params"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer.sampling_params">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">sampling_params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parse_to_sampling_params</span><span class="p">(</span><span class="n">inferencer_args</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="VLLMInferencer.parse_to_sampling_params"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer.parse_to_sampling_params">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">parse_to_sampling_params</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">inference_args</span><span class="p">:</span> <span class="n">InferencerArguments</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">SamplingParams</span><span class="p">:</span> + <span class="k">return</span> <span class="n">SamplingParams</span><span class="p">(</span> + <span class="n">use_beam_search</span><span class="o">=</span><span class="n">inference_args</span><span class="o">.</span><span class="n">use_beam_search</span><span class="p">,</span> + <span class="n">n</span><span class="o">=</span><span class="n">inference_args</span><span class="o">.</span><span class="n">num_output_sequences</span><span class="p">,</span> + <span class="n">temperature</span><span class="o">=</span><span class="n">inference_args</span><span class="o">.</span><span class="n">temperature</span> <span class="o">+</span> <span class="mf">1e-6</span><span class="p">,</span> + <span class="n">max_tokens</span><span class="o">=</span><span class="n">inference_args</span><span class="o">.</span><span class="n">max_new_tokens</span><span class="p">,</span> + <span class="n">seed</span><span class="o">=</span><span class="n">inference_args</span><span class="o">.</span><span class="n">random_seed</span><span class="p">,</span> + <span class="n">top_p</span><span class="o">=</span><span class="n">inference_args</span><span class="o">.</span><span class="n">top_p</span><span class="p">,</span> + <span class="n">top_k</span><span class="o">=</span><span class="n">inference_args</span><span class="o">.</span><span class="n">top_k</span><span class="p">,</span> + <span class="n">stop_token_ids</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">eos_token_id</span><span class="p">]</span> <span class="o">+</span> <span class="n">inference_args</span><span class="o">.</span><span class="n">additional_stop_token_ids</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="VLLMInferencer.inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer.inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFDecoderModel</span><span class="p">,</span> + <span class="n">dataset</span><span class="p">:</span> <span class="n">Dataset</span><span class="p">,</span> + <span class="n">enable_decode_inference_result</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> + <span class="n">release_gpu</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">inference_args</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">InferencerArguments</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">enable_distributed_inference</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">VLLMInferenceResultWithInput</span><span class="p">]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Perform inference using the provided model and dataset. Will save inference results if</span> +<span class="sd"> `save_results` is set to True in `inferencer_args`.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> model : HFDecoderModel</span> +<span class="sd"> LMFlow HFDecoderModel object</span> +<span class="sd"> dataset : Dataset</span> +<span class="sd"> LMFlow Dataset object</span> +<span class="sd"> apply_chat_template : bool, optional</span> +<span class="sd"> Whether to apply chat template to the input, by default True.</span> +<span class="sd"> enable_decode_inference_result : bool, optional</span> +<span class="sd"> Whether to decode after generation, by default False.</span> +<span class="sd"> release_gpu : bool, optional</span> +<span class="sd"> Whether to release gpu resources, by default False. </span> +<span class="sd"> inference_args : InferencerArguments, optional</span> +<span class="sd"> by default None</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> List[VLLMInferenceResultWithInput]</span> +<span class="sd"> Return a list of VLLMInferenceResultWithInput, where each</span> +<span class="sd"> element contains the input prompt and the corresponding output.</span> +<span class="sd"> </span> +<span class="sd"> When `enable_decode_inference_result = True`, the output would be a list of strings,</span> +<span class="sd"> contains sampling_params.n samples for the corresponding prompt.</span> +<span class="sd"> </span> +<span class="sd"> When `enable_decode_inference_result = False`, return a list of list of ints </span> +<span class="sd"> (token ids, no decoding after generation).</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">if</span> <span class="n">inference_args</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;Overriding the default inference arguments with the provided arguments in .inference()&quot;</span> + <span class="p">)</span> + <span class="n">sampling_params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parse_to_sampling_params</span><span class="p">(</span><span class="n">inference_args</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">sampling_params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sampling_params</span> + + <span class="n">sampling_params</span><span class="o">.</span><span class="n">detokenize</span> <span class="o">=</span> <span class="n">enable_decode_inference_result</span> + + <span class="n">model_input</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">prepare_inputs_for_inference</span><span class="p">(</span> + <span class="n">dataset</span><span class="o">=</span><span class="n">dataset</span><span class="p">,</span> + <span class="n">apply_chat_template</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">apply_chat_template</span><span class="p">,</span> + <span class="n">use_vllm</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">use_vllm</span><span class="p">,</span> + <span class="n">enable_distributed_inference</span><span class="o">=</span><span class="n">enable_distributed_inference</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">enable_distributed_inference</span><span class="p">:</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_distributed_inference</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span> + <span class="n">model_input</span><span class="o">=</span><span class="n">model_input</span><span class="p">,</span> + <span class="n">sampling_params</span><span class="o">=</span><span class="n">sampling_params</span><span class="p">,</span> + <span class="n">num_instances</span><span class="o">=</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;distributed_inference_num_instances&quot;</span><span class="p">),</span> + <span class="n">batch_size</span><span class="o">=</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;inference_batch_size&quot;</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> + <span class="n">release_gpu</span><span class="o">=</span><span class="n">release_gpu</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_inference</span><span class="p">(</span> + <span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span> + <span class="n">model_input</span><span class="o">=</span><span class="n">model_input</span><span class="p">,</span> + <span class="n">sampling_params</span><span class="o">=</span><span class="n">sampling_params</span><span class="p">,</span> + <span class="n">release_gpu</span><span class="o">=</span><span class="n">release_gpu</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">save_results</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">save_inference_results</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">results_path</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">outputs</span></div> + + + +<div class="viewcode-block" id="VLLMInferencer._inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer._inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFDecoderModel</span><span class="p">,</span> + <span class="n">model_input</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> + <span class="n">sampling_params</span><span class="p">:</span> <span class="n">SamplingParams</span><span class="p">,</span> + <span class="n">release_gpu</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">VLLMInferenceResultWithInput</span><span class="p">]:</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span> + <span class="n">inputs</span><span class="o">=</span><span class="n">model_input</span><span class="p">,</span> + <span class="n">sampling_params</span><span class="o">=</span><span class="n">sampling_params</span><span class="p">,</span> + <span class="n">release_gpu</span><span class="o">=</span><span class="n">release_gpu</span><span class="p">,</span> + <span class="n">use_vllm</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">vllm_gpu_memory_utilization</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">vllm_gpu_memory_utilization</span><span class="p">,</span> + <span class="n">vllm_tensor_parallel_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">vllm_tensor_parallel_size</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">outputs</span></div> + + + +<div class="viewcode-block" id="VLLMInferencer._distributed_inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer._distributed_inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_distributed_inference</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFDecoderModel</span><span class="p">,</span> + <span class="n">model_input</span><span class="p">:</span> <span class="n">ray</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">Dataset</span><span class="p">,</span> + <span class="n">sampling_params</span><span class="p">:</span> <span class="n">SamplingParams</span><span class="p">,</span> + <span class="n">num_instances</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">batch_size</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">4</span><span class="p">,</span> + <span class="n">release_gpu</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">VLLMInferenceResultWithInput</span><span class="p">]:</span> + <span class="c1"># prepare distributed inference resources</span> + <span class="c1"># from https://github.com/vllm-project/vllm/blob/main/examples/offline_inference_distributed.py</span> + <span class="c1">## strategy</span> + <span class="k">def</span><span class="w"> </span><span class="nf">scheduling_strategy_fn</span><span class="p">():</span> + <span class="c1"># One bundle per tensor parallel worker</span> + <span class="n">pg</span> <span class="o">=</span> <span class="n">ray</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">placement_group</span><span class="p">(</span> + <span class="p">[{</span> + <span class="s2">&quot;GPU&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> + <span class="s2">&quot;CPU&quot;</span><span class="p">:</span> <span class="mi">1</span> + <span class="p">}]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">vllm_tensor_parallel_size</span><span class="p">,</span> + <span class="n">strategy</span><span class="o">=</span><span class="s2">&quot;STRICT_PACK&quot;</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span> + <span class="n">scheduling_strategy</span><span class="o">=</span><span class="n">PlacementGroupSchedulingStrategy</span><span class="p">(</span> + <span class="n">pg</span><span class="p">,</span> <span class="n">placement_group_capture_child_tasks</span><span class="o">=</span><span class="kc">True</span> + <span class="p">)</span> + <span class="p">)</span> + + <span class="n">resources_kwarg</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">vllm_tensor_parallel_size</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> + <span class="c1"># For tensor_parallel_size == 1, we simply set num_gpus=1.</span> + <span class="n">resources_kwarg</span><span class="p">[</span><span class="s2">&quot;num_gpus&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># Otherwise, we have to set num_gpus=0 and provide</span> + <span class="c1"># a function that will create a placement group for</span> + <span class="c1"># each instance.</span> + <span class="n">resources_kwarg</span><span class="p">[</span><span class="s2">&quot;num_gpus&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">resources_kwarg</span><span class="p">[</span><span class="s2">&quot;ray_remote_args_fn&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">scheduling_strategy_fn</span> + + <span class="c1">## predictor</span> + <span class="k">class</span><span class="w"> </span><span class="nc">DistributedPredictor</span><span class="p">:</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model</span><span class="p">:</span> <span class="n">HFDecoderModel</span><span class="p">,</span> + <span class="n">sampling_params</span><span class="p">:</span> <span class="n">SamplingParams</span><span class="p">,</span> + <span class="n">vllm_gpu_memory_utilization</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> + <span class="n">vllm_tensor_parallel_size</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">release_gpu</span><span class="p">:</span> <span class="nb">bool</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">activate_model_for_inference</span><span class="p">(</span> + <span class="n">use_vllm</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">vllm_gpu_memory_utilization</span><span class="o">=</span><span class="n">vllm_gpu_memory_utilization</span><span class="p">,</span> + <span class="n">vllm_tensor_parallel_size</span><span class="o">=</span><span class="n">vllm_tensor_parallel_size</span><span class="p">,</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">sampling_params</span> <span class="o">=</span> <span class="n">sampling_params</span> + <span class="bp">self</span><span class="o">.</span><span class="n">release_gpu</span> <span class="o">=</span> <span class="n">release_gpu</span> + + <span class="k">def</span><span class="w"> </span><span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">batch</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">]):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;batch: Dict[str, np.ndarray], {&quot;item&quot;: array([&#39;...&#39;, &#39;...&#39;, &#39;...&#39;, ...])}</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">batched_inference_res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">inference</span><span class="p">(</span> + <span class="n">inputs</span><span class="o">=</span><span class="n">batch</span><span class="p">[</span><span class="s1">&#39;item&#39;</span><span class="p">],</span> + <span class="n">sampling_params</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sampling_params</span><span class="p">,</span> + <span class="n">release_gpu</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">release_gpu</span><span class="p">,</span> + <span class="n">use_vllm</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="p">)</span> <span class="c1"># this is the postprocessed output, see model.__vllm_inference</span> + <span class="n">batched_final_res</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;input&quot;</span><span class="p">:</span> <span class="p">[</span><span class="n">sample</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">]</span> <span class="k">for</span> <span class="n">sample</span> <span class="ow">in</span> <span class="n">batched_inference_res</span><span class="p">],</span> + <span class="s2">&quot;output&quot;</span><span class="p">:</span> <span class="p">[</span><span class="n">sample</span><span class="p">[</span><span class="s1">&#39;output&#39;</span><span class="p">]</span> <span class="k">for</span> <span class="n">sample</span> <span class="ow">in</span> <span class="n">batched_inference_res</span><span class="p">]</span> + <span class="p">}</span> <span class="c1"># do this since we&#39;re writing to a pandas dataframe</span> + <span class="k">return</span> <span class="n">batched_final_res</span> + + <span class="c1"># inference </span> + <span class="n">model_input_mapping</span> <span class="o">=</span> <span class="n">model_input</span><span class="o">.</span><span class="n">map_batches</span><span class="p">(</span> + <span class="n">DistributedPredictor</span><span class="p">,</span> + <span class="n">concurrency</span><span class="o">=</span><span class="n">num_instances</span><span class="p">,</span> <span class="c1"># Set the concurrency to the number of LLM instances.</span> + <span class="n">batch_size</span><span class="o">=</span><span class="n">batch_size</span><span class="p">,</span> + <span class="n">fn_constructor_kwargs</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;model&quot;</span><span class="p">:</span> <span class="n">model</span><span class="p">,</span> + <span class="s2">&quot;sampling_params&quot;</span><span class="p">:</span> <span class="n">sampling_params</span><span class="p">,</span> + <span class="s2">&quot;vllm_gpu_memory_utilization&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">vllm_gpu_memory_utilization</span><span class="p">,</span> + <span class="s2">&quot;vllm_tensor_parallel_size&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">vllm_tensor_parallel_size</span><span class="p">,</span> + <span class="s2">&quot;release_gpu&quot;</span><span class="p">:</span> <span class="n">release_gpu</span><span class="p">,</span> + <span class="p">},</span> + <span class="o">**</span><span class="n">resources_kwarg</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">df_model_output</span> <span class="o">=</span> <span class="n">model_input_mapping</span><span class="o">.</span><span class="n">to_pandas</span><span class="p">()</span> <span class="c1"># the actual forwards are executed here</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Distributed vllm inference result preview:</span><span class="se">\n</span><span class="si">{</span><span class="n">df_model_output</span><span class="o">.</span><span class="n">head</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="n">model_output</span> <span class="o">=</span> <span class="p">[</span> + <span class="p">{</span><span class="s2">&quot;input&quot;</span><span class="p">:</span> <span class="n">row</span><span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">],</span> <span class="s2">&quot;output&quot;</span><span class="p">:</span> <span class="n">row</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">]}</span> <span class="k">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">df_model_output</span><span class="p">[:]</span><span class="o">.</span><span class="n">iterrows</span><span class="p">()</span> + <span class="p">]</span> + + <span class="k">return</span> <span class="n">model_output</span></div> + + + +<div class="viewcode-block" id="VLLMInferencer.save_inference_results"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer.save_inference_results">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">save_inference_results</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">outputs</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]],</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]],</span> + <span class="n">save_file_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="p">):</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">save_file_path</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">&#39;utf-8&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">ensure_ascii</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span> + + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Inference results are saved to </span><span class="si">{</span><span class="n">save_file_path</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="VLLMInferencer.load_inference_results"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer.load_inference_results">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">load_inference_results</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">results_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]],</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]]:</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">results_path</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">results</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">f</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">results</span></div> +</div> + + + +<div class="viewcode-block" id="MemorySafeVLLMInferencer"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">MemorySafeVLLMInferencer</span><span class="p">(</span><span class="n">VLLMInferencer</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">model_args</span><span class="p">:</span> <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">inferencer_args</span><span class="p">:</span> <span class="n">InferencerArguments</span><span class="p">,</span> + <span class="p">):</span> + <span class="k">assert</span> <span class="n">inferencer_args</span><span class="o">.</span><span class="n">save_results</span><span class="p">,</span> <span class="s2">&quot;For MemorySafeVLLMInferencer, `save_results` must be True.&quot;</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">inferencer_args</span><span class="p">)</span> +<div class="viewcode-block" id="MemorySafeVLLMInferencer.inferencer_file_path"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer.inferencer_file_path">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_file_path</span> <span class="o">=</span> <span class="n">pkg_resources</span><span class="o">.</span><span class="n">files</span><span class="p">(</span><span class="s2">&quot;lmflow.pipeline.utils&quot;</span><span class="p">)</span> <span class="o">/</span> <span class="s2">&quot;memory_safe_vllm_inference.py&quot;</span></div> + + + +<div class="viewcode-block" id="MemorySafeVLLMInferencer.inference"> +<a class="viewcode-back" href="../../../autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer.inference">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">inference</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">VLLMInferenceResultWithInput</span><span class="p">]:</span> + <span class="n">inferencer_args</span> <span class="o">=</span> <span class="n">make_shell_args_from_dataclass</span><span class="p">(</span> + <span class="n">dataclass_objects</span><span class="o">=</span><span class="p">[</span> + <span class="bp">self</span><span class="o">.</span><span class="n">model_args</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">data_args</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="p">,</span> + <span class="p">],</span> + <span class="nb">format</span><span class="o">=</span><span class="s2">&quot;shell&quot;</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">cmd</span> <span class="o">=</span> <span class="s2">&quot;python &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_file_path</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="n">inferencer_args</span> + <span class="n">current_env</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> + <span class="k">for</span> <span class="n">var</span> <span class="ow">in</span> <span class="n">MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE</span><span class="p">:</span> + <span class="n">current_env</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">var</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> + + <span class="n">cli_res</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span> + <span class="n">args</span><span class="o">=</span><span class="n">cmd</span><span class="p">,</span> + <span class="n">stdout</span><span class="o">=</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span> + <span class="n">stderr</span><span class="o">=</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span> + <span class="n">shell</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">preexec_fn</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">setsid</span><span class="p">,</span> + <span class="n">env</span><span class="o">=</span><span class="n">current_env</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;MemorySafeVLLMInference subprocess run finished, info at finish: </span><span class="si">{</span><span class="n">cli_res</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">cli_res</span><span class="o">.</span><span class="n">returncode</span> <span class="ow">in</span> <span class="n">RETURN_CODE_ERROR_BUFFER</span><span class="p">:</span> + <span class="c1"># &gt; Fatal Python error: _enter_buffered_busy: could not acquire lock for &lt;_io.BufferedWriter name=&#39;&lt;stdout&gt;&#39;&gt; </span> + <span class="c1"># &gt; at interpreter shutdown, possibly due to daemon threads</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;^^^^^^^^^^ Please ignore the above error, as it comes from the subprocess. &quot;</span> + <span class="s2">&quot;This may due to a kill signal with unfinished stdout/stderr writing in the subprocess. &quot;</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">cli_res</span><span class="o">.</span><span class="n">returncode</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Error during MemorySafeVLLMInference: </span><span class="si">{</span><span class="n">cli_res</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="n">outputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_inference_results</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inferencer_args</span><span class="o">.</span><span class="n">results_path</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;MemorySafeVLLMInference result captured.&quot;</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">outputs</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/tokenization/hf_decoder_model.html b/_modules/lmflow/tokenization/hf_decoder_model.html new file mode 100644 index 000000000..34cd4a09f --- /dev/null +++ b/_modules/lmflow/tokenization/hf_decoder_model.html @@ -0,0 +1,673 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.tokenization.hf_decoder_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/tokenization/hf_decoder_model';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.tokenization.hf_decoder_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.tokenization.hf_decoder_model</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">logging</span><span class="w"> </span><span class="kn">import</span> <span class="n">Logger</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Union</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">transformers</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.testing_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">CaptureLogger</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">PreTrainedTokenizer</span><span class="p">,</span> <span class="n">PreTrainedTokenizerFast</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.conversation_template</span><span class="w"> </span><span class="kn">import</span> <span class="n">ConversationTemplate</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="n">CONVERSATION_ROLE_NAMES</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="n">DatasetArguments</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/tokenization/hf_decoder_model/index.html#lmflow.tokenization.hf_decoder_model.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + +<div class="viewcode-block" id="tok_logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/tokenization/hf_decoder_model/index.html#lmflow.tokenization.hf_decoder_model.tok_logger">[docs]</a> +<span class="n">tok_logger</span> <span class="o">=</span> <span class="n">transformers</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">logging</span><span class="o">.</span><span class="n">get_logger</span><span class="p">(</span><span class="s2">&quot;transformers.tokenization_utils_base&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="blocking"> +<a class="viewcode-back" href="../../../autoapi/lmflow/tokenization/hf_decoder_model/index.html#lmflow.tokenization.hf_decoder_model.blocking">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">blocking</span><span class="p">(</span> + <span class="n">token_dict</span><span class="p">:</span> <span class="n">Dict</span><span class="p">,</span> + <span class="n">block_size</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">pad_token_id</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">padding_side</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">truncation_side</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s1">&#39;right&#39;</span><span class="p">,</span> +<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> + <span class="n">block_size_warning_num</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">num_example</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">token_dict</span><span class="p">[</span><span class="nb">list</span><span class="p">(</span><span class="n">token_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="mi">0</span><span class="p">]])</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">):</span> + <span class="n">max_length</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">block_size</span><span class="p">,</span> <span class="n">model_max_length</span><span class="p">)</span> + <span class="n">pad_length</span> <span class="o">=</span> <span class="n">max_length</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">])</span> + <span class="k">if</span> <span class="n">block_size</span> <span class="o">&lt;</span> <span class="n">model_max_length</span><span class="p">:</span> + <span class="n">block_size_warning_num</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="n">pad_length</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="c1"># Truncates too long samples</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">,</span> <span class="s2">&quot;attention_mask&quot;</span><span class="p">,</span> <span class="s2">&quot;labels&quot;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">truncation_side</span> <span class="o">==</span> <span class="s1">&#39;right&#39;</span><span class="p">:</span> + <span class="n">token_dict</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">token_dict</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="n">i</span><span class="p">][:</span><span class="n">max_length</span><span class="p">]</span> + <span class="k">elif</span> <span class="n">truncation_side</span> <span class="o">==</span> <span class="s1">&#39;left&#39;</span><span class="p">:</span> + <span class="n">token_dict</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">token_dict</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="n">i</span><span class="p">][</span><span class="o">-</span><span class="n">max_length</span><span class="p">:]</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;truncation_side should be either &#39;right&#39; or &#39;left&#39;, got </span><span class="si">{</span><span class="n">truncation_side</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">padding_side</span> <span class="o">==</span> <span class="s1">&#39;right&#39;</span><span class="p">:</span> + <span class="c1"># Pads too short samples</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> + <span class="p">[</span><span class="n">pad_token_id</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> + <span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> + <span class="p">[</span><span class="mi">0</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> + <span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> + <span class="p">[</span><span class="o">-</span><span class="mi">100</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="n">padding_side</span> <span class="o">==</span> <span class="s1">&#39;left&#39;</span><span class="p">:</span> + <span class="c1"># Pads too short samples</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span> + <span class="p">[</span><span class="n">pad_token_id</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> <span class="o">+</span> <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span> + <span class="p">[</span><span class="mi">0</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> <span class="o">+</span> <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span> + <span class="p">[</span><span class="o">-</span><span class="mi">100</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> <span class="o">+</span> <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;padding_side should be either &#39;right&#39; or &#39;left&#39;, got </span><span class="si">{</span><span class="n">padding_side</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">block_size_warning_num</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;There are </span><span class="si">{</span><span class="n">block_size_warning_num</span><span class="si">}</span><span class="s2"> of </span><span class="si">{</span><span class="n">num_example</span><span class="si">}</span><span class="s2"> samples where&quot;</span> + <span class="sa">f</span><span class="s2">&quot;block_size </span><span class="si">{</span><span class="n">block_size</span><span class="si">}</span><span class="s2"> &lt; model_max_length&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">model_max_length</span><span class="si">}</span><span class="s2">, use block_size&quot;</span> + <span class="s2">&quot; for maximum tokenized sequence length&quot;</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">token_dict</span></div> + + + +<div class="viewcode-block" id="tokenize_function"> +<a class="viewcode-back" href="../../../autoapi/lmflow/tokenization/hf_decoder_model/index.html#lmflow.tokenization.hf_decoder_model.tokenize_function">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">tokenize_function</span><span class="p">(</span> + <span class="n">examples</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">PreTrainedTokenizer</span><span class="p">,</span> <span class="n">PreTrainedTokenizerFast</span><span class="p">],</span> + <span class="n">column_names</span><span class="p">,</span> + <span class="n">label_columns</span><span class="p">,</span> + <span class="n">tokenized_column_order</span><span class="p">,</span> + <span class="n">add_special_tokens</span><span class="p">,</span> + <span class="n">use_truncation</span><span class="p">,</span> +<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Handels text_only and text2text datasets tokenization</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">num_example</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">examples</span><span class="p">[</span><span class="n">column_names</span><span class="p">[</span><span class="mi">0</span><span class="p">]])</span> + <span class="n">token_dict</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;input_ids&quot;</span><span class="p">:</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)],</span> + <span class="s2">&quot;attention_mask&quot;</span><span class="p">:</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)],</span> + <span class="s2">&quot;labels&quot;</span><span class="p">:</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)],</span> + <span class="p">}</span> + <span class="k">with</span> <span class="n">CaptureLogger</span><span class="p">(</span><span class="n">tok_logger</span><span class="p">)</span> <span class="k">as</span> <span class="n">cl</span><span class="p">:</span> + <span class="k">for</span> <span class="n">column_name</span> <span class="ow">in</span> <span class="n">tokenized_column_order</span><span class="p">:</span> + <span class="n">encoding</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="p">(</span> + <span class="n">examples</span><span class="p">[</span><span class="n">column_name</span><span class="p">],</span> + <span class="n">add_special_tokens</span><span class="o">=</span><span class="n">add_special_tokens</span><span class="p">,</span> + <span class="n">truncation</span><span class="o">=</span><span class="n">use_truncation</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">column_name</span> <span class="ow">in</span> <span class="n">label_columns</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">=</span> <span class="n">encoding</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">=</span> <span class="p">[</span> + <span class="p">[</span><span class="o">-</span><span class="mi">100</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">encoding</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">])</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)</span> + <span class="p">]</span> + + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">):</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> + <span class="n">encoding</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> + <span class="n">encoding</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">labels</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> + + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="p">:</span> + <span class="n">token_dict</span> <span class="o">=</span> <span class="n">blocking</span><span class="p">(</span> + <span class="n">token_dict</span><span class="o">=</span><span class="n">token_dict</span><span class="p">,</span> + <span class="n">block_size</span><span class="o">=</span><span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span><span class="p">,</span> + <span class="n">pad_token_id</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span><span class="p">,</span> + <span class="n">padding_side</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">padding_side</span><span class="p">,</span> + <span class="n">truncation_side</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">truncation_side</span><span class="p">,</span> + <span class="p">)</span> + + <span class="c1"># clm input could be much much longer than block_size</span> + <span class="k">if</span> <span class="s2">&quot;Token indices sequence length is longer than the&quot;</span> <span class="ow">in</span> <span class="n">cl</span><span class="o">.</span><span class="n">out</span><span class="p">:</span> + <span class="n">tok_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;^^^^^^^^^^^^^^^^ Please ignore the warning above - this long input will be chunked into smaller bits&quot;</span> + <span class="s2">&quot; before being passed to the model.&quot;</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">token_dict</span></div> + + + +<div class="viewcode-block" id="conversation_tokenize_function"> +<a class="viewcode-back" href="../../../autoapi/lmflow/tokenization/hf_decoder_model/index.html#lmflow.tokenization.hf_decoder_model.conversation_tokenize_function">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">conversation_tokenize_function</span><span class="p">(</span> + <span class="n">examples</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">PreTrainedTokenizer</span><span class="p">,</span> <span class="n">PreTrainedTokenizerFast</span><span class="p">],</span> + <span class="n">column_names</span><span class="p">,</span> + <span class="n">conversation_template</span><span class="p">:</span> <span class="n">ConversationTemplate</span><span class="p">,</span> +<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Handels conversation datasets tokenization</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">num_example</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">examples</span><span class="p">[</span><span class="n">column_names</span><span class="p">[</span><span class="mi">0</span><span class="p">]])</span> + <span class="n">token_dict</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;input_ids&quot;</span><span class="p">:</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)],</span> + <span class="s2">&quot;attention_mask&quot;</span><span class="p">:</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)],</span> + <span class="s2">&quot;labels&quot;</span><span class="p">:</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)],</span> + <span class="p">}</span> + <span class="k">with</span> <span class="n">CaptureLogger</span><span class="p">(</span><span class="n">tok_logger</span><span class="p">)</span> <span class="k">as</span> <span class="n">cl</span><span class="p">:</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">examples</span><span class="p">[</span><span class="s2">&quot;messages&quot;</span><span class="p">])):</span> + <span class="n">messages</span> <span class="o">=</span> <span class="n">examples</span><span class="p">[</span><span class="s2">&quot;messages&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="n">system</span> <span class="o">=</span> <span class="n">examples</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;system&quot;</span><span class="p">,</span> <span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">num_example</span><span class="p">)[</span><span class="n">i</span><span class="p">]</span> + <span class="n">tools</span> <span class="o">=</span> <span class="n">examples</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;tools&quot;</span><span class="p">,</span> <span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">num_example</span><span class="p">)[</span><span class="n">i</span><span class="p">]</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">messages</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">2</span> <span class="ow">or</span> <span class="n">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="n">CONVERSATION_ROLE_NAMES</span><span class="p">[</span><span class="s1">&#39;user&#39;</span><span class="p">]:</span> + <span class="n">tok_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;Invalid instance encountered. Either the conversation has less than &quot;</span> + <span class="s2">&quot;one round or the first message is not from the user.&quot;</span> + <span class="p">)</span> + <span class="k">continue</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">messages</span><span class="p">)</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;The number of messages is not even, the last message will be ignored.&quot;</span> + <span class="p">)</span> + <span class="n">messages</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + + <span class="n">encoded_conversation</span> <span class="o">=</span> <span class="n">conversation_template</span><span class="o">.</span><span class="n">encode_conversation</span><span class="p">(</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="n">tokenizer</span><span class="p">,</span> + <span class="n">messages</span><span class="o">=</span><span class="n">messages</span><span class="p">,</span> + <span class="n">system</span><span class="o">=</span><span class="n">system</span><span class="p">,</span> + <span class="n">tools</span><span class="o">=</span><span class="n">tools</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">input_ids</span><span class="p">,</span> <span class="n">labels</span> <span class="o">=</span> <span class="p">[],</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">turn_idx</span><span class="p">,</span> <span class="p">(</span><span class="n">user_input</span><span class="p">,</span> <span class="n">assistant_result</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">encoded_conversation</span><span class="p">):</span> + <span class="n">input_ids</span> <span class="o">+=</span> <span class="n">user_input</span> <span class="o">+</span> <span class="n">assistant_result</span> + + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">train_on_prompt</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">+=</span> <span class="n">user_input</span> <span class="o">+</span> <span class="n">assistant_result</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">+=</span> <span class="p">[</span><span class="o">-</span><span class="mi">100</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">user_input</span><span class="p">)</span> <span class="o">+</span> <span class="n">assistant_result</span> + + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">input_ids</span><span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">input_ids</span><span class="p">))</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">labels</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="p">:</span> + <span class="n">token_dict</span> <span class="o">=</span> <span class="n">blocking</span><span class="p">(</span> + <span class="n">token_dict</span><span class="o">=</span><span class="n">token_dict</span><span class="p">,</span> + <span class="n">block_size</span><span class="o">=</span><span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span><span class="p">,</span> + <span class="n">pad_token_id</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span><span class="p">,</span> + <span class="n">padding_side</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">padding_side</span><span class="p">,</span> + <span class="n">truncation_side</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">truncation_side</span><span class="p">,</span> + <span class="p">)</span> + + <span class="c1"># clm input could be much much longer than block_size</span> + <span class="k">if</span> <span class="s2">&quot;Token indices sequence length is longer than the&quot;</span> <span class="ow">in</span> <span class="n">cl</span><span class="o">.</span><span class="n">out</span><span class="p">:</span> + <span class="n">tok_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;^^^^^^^^^^^^^^^^ Please ignore the warning above - this long input will be chunked into smaller bits&quot;</span> + <span class="s2">&quot; before being passed to the model.&quot;</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">token_dict</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/tokenization/hf_text_regression_model.html b/_modules/lmflow/tokenization/hf_text_regression_model.html new file mode 100644 index 000000000..a68025e6a --- /dev/null +++ b/_modules/lmflow/tokenization/hf_text_regression_model.html @@ -0,0 +1,914 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.tokenization.hf_text_regression_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/tokenization/hf_text_regression_model';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.tokenization.hf_text_regression_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.tokenization.hf_text_regression_model</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">logging</span><span class="w"> </span><span class="kn">import</span> <span class="n">Logger</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Union</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">transformers</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.testing_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">CaptureLogger</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">PreTrainedTokenizer</span><span class="p">,</span> <span class="n">PreTrainedTokenizerFast</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.conversation_template</span><span class="w"> </span><span class="kn">import</span> <span class="n">ConversationTemplate</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="n">CONVERSATION_ROLE_NAMES</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="n">DatasetArguments</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + +<div class="viewcode-block" id="tok_logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.tok_logger">[docs]</a> +<span class="n">tok_logger</span> <span class="o">=</span> <span class="n">transformers</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">logging</span><span class="o">.</span><span class="n">get_logger</span><span class="p">(</span><span class="s2">&quot;transformers.tokenization_utils_base&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="blocking_paired"> +<a class="viewcode-back" href="../../../autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.blocking_paired">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">blocking_paired</span><span class="p">(</span> + <span class="n">token_dict</span><span class="p">:</span> <span class="n">Dict</span><span class="p">,</span> + <span class="n">column_names</span><span class="p">:</span> <span class="n">List</span><span class="p">,</span> + <span class="n">block_size</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">pad_token_id</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">padding_side</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">truncation_side</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s1">&#39;right&#39;</span><span class="p">,</span> +<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> + <span class="n">block_size_warning_num</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">num_example</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">token_dict</span><span class="p">[</span><span class="nb">list</span><span class="p">(</span><span class="n">token_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="mi">0</span><span class="p">]])</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">):</span> + <span class="k">for</span> <span class="n">column_name</span> <span class="ow">in</span> <span class="n">column_names</span><span class="p">:</span> + <span class="n">max_length</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">block_size</span><span class="p">,</span> <span class="n">model_max_length</span><span class="p">)</span> + <span class="n">pad_length</span> <span class="o">=</span> <span class="n">max_length</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">token_dict</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;input_ids_</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">])</span> + <span class="k">if</span> <span class="n">block_size</span> <span class="o">&lt;</span> <span class="n">model_max_length</span><span class="p">:</span> + <span class="n">block_size_warning_num</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="n">pad_length</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="c1"># Truncates too long samples</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">[</span><span class="sa">f</span><span class="s2">&quot;input_ids_</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;attention_mask_</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">truncation_side</span> <span class="o">==</span> <span class="s1">&#39;right&#39;</span><span class="p">:</span> + <span class="n">token_dict</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">token_dict</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="n">i</span><span class="p">][:</span><span class="n">pad_length</span><span class="p">]</span> + <span class="k">elif</span> <span class="n">truncation_side</span> <span class="o">==</span> <span class="s1">&#39;left&#39;</span><span class="p">:</span> + <span class="n">token_dict</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">token_dict</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="n">i</span><span class="p">][</span><span class="o">-</span><span class="n">pad_length</span><span class="p">:]</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;truncation_side should be either &#39;right&#39; or &#39;left&#39;, got </span><span class="si">{</span><span class="n">truncation_side</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">padding_side</span> <span class="o">==</span> <span class="s1">&#39;right&#39;</span><span class="p">:</span> + <span class="c1"># Pads too short samples</span> + <span class="n">token_dict</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;input_ids_</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> + <span class="p">[</span><span class="n">pad_token_id</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> + <span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;attention_mask_</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> + <span class="p">[</span><span class="mi">0</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="n">padding_side</span> <span class="o">==</span> <span class="s1">&#39;left&#39;</span><span class="p">:</span> + <span class="c1"># Pads too short samples</span> + <span class="n">token_dict</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;input_ids_</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span> + <span class="p">[</span><span class="n">pad_token_id</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> <span class="o">+</span> <span class="n">token_dict</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;input_ids_</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;attention_mask_</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span> + <span class="p">[</span><span class="mi">0</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> <span class="o">+</span> <span class="n">token_dict</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;attention_mask_</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;padding_side should be either &#39;right&#39; or &#39;left&#39;, got </span><span class="si">{</span><span class="n">padding_side</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">block_size_warning_num</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;There are </span><span class="si">{</span><span class="n">block_size_warning_num</span><span class="si">}</span><span class="s2"> of </span><span class="si">{</span><span class="n">num_example</span><span class="si">}</span><span class="s2"> samples where&quot;</span> + <span class="sa">f</span><span class="s2">&quot; block_size </span><span class="si">{</span><span class="n">block_size</span><span class="si">}</span><span class="s2"> &lt; model_max_length&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">model_max_length</span><span class="si">}</span><span class="s2">, use block_size&quot;</span> + <span class="s2">&quot; for maximum tokenized sequence length&quot;</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">token_dict</span></div> + + + +<div class="viewcode-block" id="blocking"> +<a class="viewcode-back" href="../../../autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.blocking">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">blocking</span><span class="p">(</span> + <span class="n">token_dict</span><span class="p">:</span> <span class="n">Dict</span><span class="p">,</span> + <span class="n">block_size</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">pad_token_id</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">padding_side</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">truncation_side</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s1">&#39;right&#39;</span><span class="p">,</span> +<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> + <span class="n">block_size_warning_num</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">num_example</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">token_dict</span><span class="p">[</span><span class="nb">list</span><span class="p">(</span><span class="n">token_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="mi">0</span><span class="p">]])</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">):</span> + <span class="n">max_length</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">block_size</span><span class="p">,</span> <span class="n">model_max_length</span><span class="p">)</span> + <span class="n">pad_length</span> <span class="o">=</span> <span class="n">max_length</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">])</span> + <span class="k">if</span> <span class="n">block_size</span> <span class="o">&lt;</span> <span class="n">model_max_length</span><span class="p">:</span> + <span class="n">block_size_warning_num</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="n">pad_length</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="c1"># Truncates too long samples</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">,</span> <span class="s2">&quot;attention_mask&quot;</span><span class="p">,</span> <span class="s2">&quot;labels&quot;</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">truncation_side</span> <span class="o">==</span> <span class="s1">&#39;right&#39;</span><span class="p">:</span> + <span class="n">token_dict</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">token_dict</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="n">i</span><span class="p">][:</span><span class="n">pad_length</span><span class="p">]</span> + <span class="k">elif</span> <span class="n">truncation_side</span> <span class="o">==</span> <span class="s1">&#39;left&#39;</span><span class="p">:</span> + <span class="n">token_dict</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">token_dict</span><span class="p">[</span><span class="n">key</span><span class="p">][</span><span class="n">i</span><span class="p">][</span><span class="o">-</span><span class="n">pad_length</span><span class="p">:]</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;truncation_side should be either &#39;right&#39; or &#39;left&#39;, got </span><span class="si">{</span><span class="n">truncation_side</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">padding_side</span> <span class="o">==</span> <span class="s1">&#39;right&#39;</span><span class="p">:</span> + <span class="c1"># Pads too short samples</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> + <span class="p">[</span><span class="n">pad_token_id</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> + <span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> + <span class="p">[</span><span class="mi">0</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> + <span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> + <span class="p">[</span><span class="o">-</span><span class="mi">100</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="n">padding_side</span> <span class="o">==</span> <span class="s1">&#39;left&#39;</span><span class="p">:</span> + <span class="c1"># Pads too short samples</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span> + <span class="p">[</span><span class="n">pad_token_id</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> <span class="o">+</span> <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span> + <span class="p">[</span><span class="mi">0</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> <span class="o">+</span> <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span> + <span class="p">[</span><span class="o">-</span><span class="mi">100</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> <span class="o">+</span> <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;padding_side should be either &#39;right&#39; or &#39;left&#39;, got </span><span class="si">{</span><span class="n">padding_side</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">block_size_warning_num</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;There are </span><span class="si">{</span><span class="n">block_size_warning_num</span><span class="si">}</span><span class="s2"> of </span><span class="si">{</span><span class="n">num_example</span><span class="si">}</span><span class="s2"> samples where&quot;</span> + <span class="sa">f</span><span class="s2">&quot; block_size </span><span class="si">{</span><span class="n">block_size</span><span class="si">}</span><span class="s2"> &lt; model_max_length&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">model_max_length</span><span class="si">}</span><span class="s2">, use block_size&quot;</span> + <span class="s2">&quot; for maximum tokenized sequence length&quot;</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">token_dict</span></div> + + + +<div class="viewcode-block" id="blocking_text_to_textlist"> +<a class="viewcode-back" href="../../../autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.blocking_text_to_textlist">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">blocking_text_to_textlist</span><span class="p">(</span> + <span class="n">token_dict</span><span class="p">:</span> <span class="n">Dict</span><span class="p">,</span> + <span class="n">block_size</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">pad_token_id</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> + <span class="n">padding_side</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">truncation_side</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s1">&#39;right&#39;</span><span class="p">,</span> +<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> + <span class="n">block_size_warning_num</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">num_example</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">token_dict</span><span class="p">[</span><span class="nb">list</span><span class="p">(</span><span class="n">token_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="mi">0</span><span class="p">]])</span> + <span class="n">max_length</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">block_size</span><span class="p">,</span> <span class="n">model_max_length</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">example_idx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">):</span> + <span class="k">for</span> <span class="n">content_idx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">example_idx</span><span class="p">])):</span> + <span class="n">pad_length</span> <span class="o">=</span> <span class="n">max_length</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">example_idx</span><span class="p">][</span><span class="n">content_idx</span><span class="p">])</span> + <span class="k">if</span> <span class="n">block_size</span> <span class="o">&lt;</span> <span class="n">model_max_length</span><span class="p">:</span> + <span class="n">block_size_warning_num</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="n">pad_length</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="c1"># Truncates too long samples</span> + <span class="k">if</span> <span class="n">truncation_side</span> <span class="o">==</span> <span class="s1">&#39;right&#39;</span><span class="p">:</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">example_idx</span><span class="p">][</span><span class="n">content_idx</span><span class="p">]</span> <span class="o">=</span> <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">example_idx</span><span class="p">][</span><span class="n">content_idx</span><span class="p">][:</span><span class="n">pad_length</span><span class="p">]</span> + <span class="k">elif</span> <span class="n">truncation_side</span> <span class="o">==</span> <span class="s1">&#39;left&#39;</span><span class="p">:</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">example_idx</span><span class="p">][</span><span class="n">content_idx</span><span class="p">]</span> <span class="o">=</span> <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">example_idx</span><span class="p">][</span><span class="n">content_idx</span><span class="p">][</span><span class="o">-</span><span class="n">pad_length</span><span class="p">:]</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;truncation_side should be either &#39;right&#39; or &#39;left&#39;, got </span><span class="si">{</span><span class="n">truncation_side</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">padding_side</span> <span class="o">==</span> <span class="s1">&#39;right&#39;</span><span class="p">:</span> + <span class="c1"># Pads too short samples</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">example_idx</span><span class="p">][</span><span class="n">content_idx</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> + <span class="p">[</span><span class="n">pad_token_id</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="n">padding_side</span> <span class="o">==</span> <span class="s1">&#39;left&#39;</span><span class="p">:</span> + <span class="c1"># Pads too short samples</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">example_idx</span><span class="p">][</span><span class="n">content_idx</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span> + <span class="p">[</span><span class="n">pad_token_id</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">pad_length</span><span class="p">)]</span> <span class="o">+</span> <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">example_idx</span><span class="p">][</span><span class="n">content_idx</span><span class="p">]</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;padding_side should be either &#39;right&#39; or &#39;left&#39;, got </span><span class="si">{</span><span class="n">padding_side</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">block_size_warning_num</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;There are </span><span class="si">{</span><span class="n">block_size_warning_num</span><span class="si">}</span><span class="s2"> of </span><span class="si">{</span><span class="n">num_example</span><span class="si">}</span><span class="s2"> samples where&quot;</span> + <span class="sa">f</span><span class="s2">&quot; block_size </span><span class="si">{</span><span class="n">block_size</span><span class="si">}</span><span class="s2"> &lt; model_max_length&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">model_max_length</span><span class="si">}</span><span class="s2">, use block_size&quot;</span> + <span class="s2">&quot; for maximum tokenized sequence length&quot;</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">token_dict</span></div> + + + +<div class="viewcode-block" id="paired_conversation_tokenize_function"> +<a class="viewcode-back" href="../../../autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.paired_conversation_tokenize_function">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">paired_conversation_tokenize_function</span><span class="p">(</span> + <span class="n">examples</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">PreTrainedTokenizer</span><span class="p">,</span> <span class="n">PreTrainedTokenizerFast</span><span class="p">],</span> + <span class="n">column_names</span><span class="p">,</span> + <span class="n">conversation_template</span><span class="p">:</span> <span class="n">ConversationTemplate</span><span class="p">,</span> +<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> + <span class="n">num_example</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">examples</span><span class="p">[</span><span class="n">column_names</span><span class="p">[</span><span class="mi">0</span><span class="p">]])</span> + <span class="n">token_dict</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">for</span> <span class="n">column_name</span> <span class="ow">in</span> <span class="n">column_names</span><span class="p">:</span> + <span class="n">token_dict</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;input_ids_</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)]</span> + <span class="n">token_dict</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;attention_mask_</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)]</span> + + <span class="k">with</span> <span class="n">CaptureLogger</span><span class="p">(</span><span class="n">tok_logger</span><span class="p">)</span> <span class="k">as</span> <span class="n">cl</span><span class="p">:</span> + <span class="n">num_corrupted</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">):</span> + <span class="k">try</span><span class="p">:</span> + <span class="k">for</span> <span class="n">column_name</span> <span class="ow">in</span> <span class="n">column_names</span><span class="p">:</span> + <span class="n">messages</span> <span class="o">=</span> <span class="n">examples</span><span class="p">[</span><span class="n">column_name</span><span class="p">][</span><span class="n">i</span><span class="p">][</span><span class="s2">&quot;messages&quot;</span><span class="p">]</span> + <span class="n">system</span> <span class="o">=</span> <span class="n">examples</span><span class="p">[</span><span class="n">column_name</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;system&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> + <span class="n">tools</span> <span class="o">=</span> <span class="n">examples</span><span class="p">[</span><span class="n">column_name</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;tools&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">messages</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">2</span> <span class="ow">or</span> <span class="n">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="n">CONVERSATION_ROLE_NAMES</span><span class="p">[</span><span class="s1">&#39;user&#39;</span><span class="p">]:</span> + <span class="n">tok_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;Invalid instance encountered. Either the conversation has less than &quot;</span> + <span class="s2">&quot;one round or the first message is not from the user.&quot;</span> + <span class="p">)</span> + <span class="k">continue</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">messages</span><span class="p">)</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;The number of messages is not even, the last message will be ignored.&quot;</span> + <span class="p">)</span> + <span class="n">messages</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + + <span class="n">encoded_conversation</span> <span class="o">=</span> <span class="n">conversation_template</span><span class="o">.</span><span class="n">encode_conversation</span><span class="p">(</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="n">tokenizer</span><span class="p">,</span> + <span class="n">messages</span><span class="o">=</span><span class="n">messages</span><span class="p">,</span> + <span class="n">system</span><span class="o">=</span><span class="n">system</span><span class="p">,</span> + <span class="n">tools</span><span class="o">=</span><span class="n">tools</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">input_ids</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">turn_idx</span><span class="p">,</span> <span class="p">(</span><span class="n">user_input</span><span class="p">,</span> <span class="n">assistant_result</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">encoded_conversation</span><span class="p">):</span> + <span class="n">input_ids</span> <span class="o">+=</span> <span class="n">user_input</span> <span class="o">+</span> <span class="n">assistant_result</span> + + <span class="n">token_dict</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;input_ids_</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">input_ids</span><span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="sa">f</span><span class="s2">&quot;attention_mask_</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">input_ids</span><span class="p">))</span> + + <span class="k">except</span><span class="p">:</span> + <span class="n">num_corrupted</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Error in encoding conversation </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Messages: </span><span class="si">{</span><span class="n">messages</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">continue</span> + <span class="k">if</span> <span class="n">num_corrupted</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Number of corrupted examples: </span><span class="si">{</span><span class="n">num_corrupted</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="p">:</span> + <span class="n">token_dict</span> <span class="o">=</span> <span class="n">blocking_paired</span><span class="p">(</span> + <span class="n">token_dict</span><span class="o">=</span><span class="n">token_dict</span><span class="p">,</span> + <span class="n">column_names</span><span class="o">=</span><span class="n">column_names</span><span class="p">,</span> + <span class="n">block_size</span><span class="o">=</span><span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span><span class="p">,</span> + <span class="n">pad_token_id</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span><span class="p">,</span> + <span class="n">padding_side</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">padding_side</span><span class="p">,</span> + <span class="n">truncation_side</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">truncation_side</span><span class="p">,</span> + <span class="p">)</span> + + <span class="c1"># clm input could be much much longer than block_size</span> + <span class="k">if</span> <span class="s2">&quot;Token indices sequence length is longer than the&quot;</span> <span class="ow">in</span> <span class="n">cl</span><span class="o">.</span><span class="n">out</span><span class="p">:</span> + <span class="n">tok_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;^^^^^^^^^^^^^^^^ Please ignore the warning above - this long input will be chunked into smaller bits&quot;</span> + <span class="s2">&quot; before being passed to the model.&quot;</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">token_dict</span></div> + + + +<div class="viewcode-block" id="conversation_tokenize_function"> +<a class="viewcode-back" href="../../../autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.conversation_tokenize_function">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">conversation_tokenize_function</span><span class="p">(</span> + <span class="n">examples</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">PreTrainedTokenizer</span><span class="p">,</span> <span class="n">PreTrainedTokenizerFast</span><span class="p">],</span> + <span class="n">column_names</span><span class="p">,</span> + <span class="n">conversation_template</span><span class="p">:</span> <span class="n">ConversationTemplate</span><span class="p">,</span> +<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Handels conversation datasets tokenization</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">num_example</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">examples</span><span class="p">[</span><span class="n">column_names</span><span class="p">[</span><span class="mi">0</span><span class="p">]])</span> + <span class="n">token_dict</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;input_ids&quot;</span><span class="p">:</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)],</span> + <span class="s2">&quot;attention_mask&quot;</span><span class="p">:</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)],</span> + <span class="s2">&quot;labels&quot;</span><span class="p">:</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)],</span> + <span class="p">}</span> + <span class="k">with</span> <span class="n">CaptureLogger</span><span class="p">(</span><span class="n">tok_logger</span><span class="p">)</span> <span class="k">as</span> <span class="n">cl</span><span class="p">:</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">examples</span><span class="p">[</span><span class="s2">&quot;messages&quot;</span><span class="p">])):</span> + <span class="n">messages</span> <span class="o">=</span> <span class="n">examples</span><span class="p">[</span><span class="s2">&quot;messages&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="n">system</span> <span class="o">=</span> <span class="n">examples</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;system&quot;</span><span class="p">,</span> <span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">num_example</span><span class="p">)[</span><span class="n">i</span><span class="p">]</span> + <span class="n">tools</span> <span class="o">=</span> <span class="n">examples</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;tools&quot;</span><span class="p">,</span> <span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">num_example</span><span class="p">)[</span><span class="n">i</span><span class="p">]</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">messages</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">2</span> <span class="ow">or</span> <span class="n">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="n">CONVERSATION_ROLE_NAMES</span><span class="p">[</span><span class="s1">&#39;user&#39;</span><span class="p">]:</span> + <span class="n">tok_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;Invalid instance encountered. Either the conversation has less than &quot;</span> + <span class="s2">&quot;one round or the first message is not from the user.&quot;</span> + <span class="p">)</span> + <span class="k">continue</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">messages</span><span class="p">)</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;The number of messages is not even, the last message will be ignored.&quot;</span> + <span class="p">)</span> + <span class="n">messages</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + + <span class="n">encoded_conversation</span> <span class="o">=</span> <span class="n">conversation_template</span><span class="o">.</span><span class="n">encode_conversation</span><span class="p">(</span> + <span class="n">tokenizer</span><span class="o">=</span><span class="n">tokenizer</span><span class="p">,</span> + <span class="n">messages</span><span class="o">=</span><span class="n">messages</span><span class="p">,</span> + <span class="n">system</span><span class="o">=</span><span class="n">system</span><span class="p">,</span> + <span class="n">tools</span><span class="o">=</span><span class="n">tools</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">input_ids</span><span class="p">,</span> <span class="n">labels</span> <span class="o">=</span> <span class="p">[],</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">turn_idx</span><span class="p">,</span> <span class="p">(</span><span class="n">user_input</span><span class="p">,</span> <span class="n">assistant_result</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">encoded_conversation</span><span class="p">):</span> + <span class="n">input_ids</span> <span class="o">+=</span> <span class="n">user_input</span> <span class="o">+</span> <span class="n">assistant_result</span> + + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">train_on_prompt</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">+=</span> <span class="n">user_input</span> <span class="o">+</span> <span class="n">assistant_result</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">+=</span> <span class="p">[</span><span class="o">-</span><span class="mi">100</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">user_input</span><span class="p">)</span> <span class="o">+</span> <span class="n">assistant_result</span> + + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">input_ids</span><span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">input_ids</span><span class="p">))</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">labels</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="p">:</span> + <span class="n">token_dict</span> <span class="o">=</span> <span class="n">blocking</span><span class="p">(</span> + <span class="n">token_dict</span><span class="o">=</span><span class="n">token_dict</span><span class="p">,</span> + <span class="n">block_size</span><span class="o">=</span><span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span><span class="p">,</span> + <span class="n">pad_token_id</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span><span class="p">,</span> + <span class="n">padding_side</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">padding_side</span><span class="p">,</span> + <span class="n">truncation_side</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">truncation_side</span><span class="p">,</span> + <span class="p">)</span> + + <span class="c1"># clm input could be much much longer than block_size</span> + <span class="k">if</span> <span class="s2">&quot;Token indices sequence length is longer than the&quot;</span> <span class="ow">in</span> <span class="n">cl</span><span class="o">.</span><span class="n">out</span><span class="p">:</span> + <span class="n">tok_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;^^^^^^^^^^^^^^^^ Please ignore the warning above - this long input will be chunked into smaller bits&quot;</span> + <span class="s2">&quot; before being passed to the model.&quot;</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">token_dict</span></div> + + + +<div class="viewcode-block" id="tokenize_function"> +<a class="viewcode-back" href="../../../autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.tokenize_function">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">tokenize_function</span><span class="p">(</span> + <span class="n">examples</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">PreTrainedTokenizer</span><span class="p">,</span> <span class="n">PreTrainedTokenizerFast</span><span class="p">],</span> + <span class="n">column_names</span><span class="p">,</span> + <span class="n">label_columns</span><span class="p">,</span> + <span class="n">tokenized_column_order</span><span class="p">,</span> + <span class="n">add_special_tokens</span><span class="p">,</span> + <span class="n">use_truncation</span><span class="p">,</span> +<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Handels text_only and text2text datasets tokenization</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">num_example</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">examples</span><span class="p">[</span><span class="n">column_names</span><span class="p">[</span><span class="mi">0</span><span class="p">]])</span> + <span class="n">token_dict</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;input_ids&quot;</span><span class="p">:</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)],</span> + <span class="s2">&quot;attention_mask&quot;</span><span class="p">:</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)],</span> + <span class="s2">&quot;labels&quot;</span><span class="p">:</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)],</span> + <span class="p">}</span> + <span class="k">with</span> <span class="n">CaptureLogger</span><span class="p">(</span><span class="n">tok_logger</span><span class="p">)</span> <span class="k">as</span> <span class="n">cl</span><span class="p">:</span> + <span class="k">for</span> <span class="n">column_name</span> <span class="ow">in</span> <span class="n">tokenized_column_order</span><span class="p">:</span> + <span class="n">encoding</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="p">(</span> + <span class="n">examples</span><span class="p">[</span><span class="n">column_name</span><span class="p">],</span> + <span class="n">add_special_tokens</span><span class="o">=</span><span class="n">add_special_tokens</span><span class="p">,</span> + <span class="n">truncation</span><span class="o">=</span><span class="n">use_truncation</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">column_name</span> <span class="ow">in</span> <span class="n">label_columns</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">=</span> <span class="n">encoding</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">labels</span> <span class="o">=</span> <span class="p">[</span> + <span class="p">[</span><span class="o">-</span><span class="mi">100</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">encoding</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">])</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)</span> + <span class="p">]</span> + + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">):</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> + <span class="n">encoding</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> + <span class="n">encoding</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="p">)</span> + <span class="n">token_dict</span><span class="p">[</span><span class="s2">&quot;labels&quot;</span><span class="p">][</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">labels</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> + + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="p">:</span> + <span class="n">token_dict</span> <span class="o">=</span> <span class="n">blocking</span><span class="p">(</span> + <span class="n">token_dict</span><span class="o">=</span><span class="n">token_dict</span><span class="p">,</span> + <span class="n">block_size</span><span class="o">=</span><span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span><span class="p">,</span> + <span class="n">pad_token_id</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span><span class="p">,</span> + <span class="n">padding_side</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">padding_side</span><span class="p">,</span> + <span class="n">truncation_side</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">truncation_side</span><span class="p">,</span> + <span class="p">)</span> + + <span class="c1"># clm input could be much much longer than block_size</span> + <span class="k">if</span> <span class="s2">&quot;Token indices sequence length is longer than the&quot;</span> <span class="ow">in</span> <span class="n">cl</span><span class="o">.</span><span class="n">out</span><span class="p">:</span> + <span class="n">tok_logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">&quot;^^^^^^^^^^^^^^^^ Please ignore the warning above - this long input will be chunked into smaller bits&quot;</span> + <span class="s2">&quot; before being passed to the model.&quot;</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">token_dict</span></div> + + + +<div class="viewcode-block" id="text_to_textlist_tokenize_function"> +<a class="viewcode-back" href="../../../autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.text_to_textlist_tokenize_function">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">text_to_textlist_tokenize_function</span><span class="p">(</span> + <span class="n">examples</span><span class="p">,</span> + <span class="n">data_args</span><span class="p">:</span> <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">PreTrainedTokenizer</span><span class="p">,</span> <span class="n">PreTrainedTokenizerFast</span><span class="p">],</span> + <span class="n">column_names</span><span class="p">,</span> + <span class="n">add_special_tokens</span><span class="p">,</span> + <span class="n">use_truncation</span><span class="p">,</span> +<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;For rm inference, and don&#39;t need attn mask and labels.</span> +<span class="sd"> NOTE: input_ids here refers to the tokenized input_ids of the input **and** output</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">num_example</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">examples</span><span class="p">[</span><span class="n">column_names</span><span class="p">[</span><span class="mi">0</span><span class="p">]])</span> + <span class="n">output_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">column_name</span><span class="p">:</span> <span class="n">examples</span><span class="p">[</span><span class="n">column_name</span><span class="p">]</span> <span class="k">for</span> <span class="n">column_name</span> <span class="ow">in</span> <span class="n">column_names</span><span class="p">}</span> + <span class="n">output_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">)]</span> + + <span class="k">for</span> <span class="n">example_idx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_example</span><span class="p">):</span> + <span class="n">encoded</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="p">(</span> + <span class="p">[</span> + <span class="n">examples</span><span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">][</span><span class="n">example_idx</span><span class="p">]</span> <span class="o">+</span> <span class="n">examples</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">][</span><span class="n">example_idx</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">examples</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">][</span><span class="n">example_idx</span><span class="p">]))</span> + <span class="p">],</span> + <span class="n">add_special_tokens</span><span class="o">=</span><span class="n">add_special_tokens</span><span class="p">,</span> + <span class="n">truncation</span><span class="o">=</span><span class="n">use_truncation</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">output_dict</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">][</span><span class="n">example_idx</span><span class="p">]</span> <span class="o">=</span> <span class="n">encoded</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">data_args</span><span class="o">.</span><span class="n">disable_group_texts</span><span class="p">:</span> + <span class="n">output_dict</span> <span class="o">=</span> <span class="n">blocking_text_to_textlist</span><span class="p">(</span> + <span class="n">token_dict</span><span class="o">=</span><span class="n">output_dict</span><span class="p">,</span> + <span class="n">block_size</span><span class="o">=</span><span class="n">data_args</span><span class="o">.</span><span class="n">block_size</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">model_max_length</span><span class="p">,</span> + <span class="n">pad_token_id</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">pad_token_id</span><span class="p">,</span> + <span class="n">padding_side</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">padding_side</span><span class="p">,</span> + <span class="n">truncation_side</span><span class="o">=</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">truncation_side</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">output_dict</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/common.html b/_modules/lmflow/utils/common.html new file mode 100644 index 000000000..5eabc7ee2 --- /dev/null +++ b/_modules/lmflow/utils/common.html @@ -0,0 +1,650 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.common &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/common';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.common</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.common</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">dataclasses</span><span class="w"> </span><span class="kn">import</span> <span class="n">dataclass</span><span class="p">,</span> <span class="n">field</span><span class="p">,</span> <span class="n">fields</span><span class="p">,</span> <span class="n">Field</span><span class="p">,</span> <span class="n">make_dataclass</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Dict</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.versioning</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_python_version</span> + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/common/index.html#lmflow.utils.common.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="make_shell_args_from_dataclass"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/common/index.html#lmflow.utils.common.make_shell_args_from_dataclass">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">make_shell_args_from_dataclass</span><span class="p">(</span> + <span class="n">dataclass_objects</span><span class="p">:</span> <span class="n">List</span><span class="p">,</span> + <span class="nb">format</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s2">&quot;subprocess&quot;</span><span class="p">,</span> + <span class="n">skip_default</span><span class="p">:</span> <span class="nb">bool</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">ignored_args_list</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Return a string or a list of strings that can be used as shell arguments.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> dataclass_objects : List</span> +<span class="sd"> A list of dataclass objects.</span> +<span class="sd"> format : str, optional</span> +<span class="sd"> Return format, can be &quot;shell&quot; or &quot;subprocess&quot;, by default &quot;subprocess&quot;.</span> +<span class="sd"> skip_default : bool, optional</span> +<span class="sd"> Whether to skip attributes with default values, by default True. </span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> Union[str, List[str]]</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dataclass_objects</span><span class="p">,</span> <span class="nb">list</span><span class="p">),</span> <span class="s2">&quot;dataclass_objects should be a list of dataclass objects.&quot;</span> + <span class="n">all_args</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">for</span> <span class="n">dataclass_object</span> <span class="ow">in</span> <span class="n">dataclass_objects</span><span class="p">:</span> + <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">dataclass_object</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> + <span class="k">if</span> <span class="n">ignored_args_list</span> <span class="ow">and</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">ignored_args_list</span><span class="p">:</span> + <span class="k">continue</span> + <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">dataclass_object</span><span class="o">.</span><span class="n">__dataclass_fields__</span><span class="p">:</span> + <span class="c1"># skip attributes that added dynamically</span> + <span class="k">continue</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">v</span><span class="p">:</span> + <span class="c1"># skip attributes with None values</span> + <span class="k">continue</span> + <span class="k">if</span> <span class="n">skip_default</span><span class="p">:</span> + <span class="k">if</span> <span class="n">dataclass_object</span><span class="o">.</span><span class="n">__dataclass_fields__</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">.</span><span class="n">default</span> <span class="o">==</span> <span class="n">v</span><span class="p">:</span> + <span class="k">continue</span> + + <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">all_args</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">Path</span><span class="p">):</span> + <span class="n">all_args</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> + <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> + <span class="n">all_args</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;,&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">all_args</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> + <span class="k">elif</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">all_args</span><span class="p">:</span> + <span class="k">if</span> <span class="n">all_args</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">==</span> <span class="n">v</span><span class="p">:</span> + <span class="k">continue</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Found different values for the same key: </span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">, using value: </span><span class="si">{</span><span class="n">v</span><span class="si">}</span><span class="s2"> instead.&quot;</span><span class="p">)</span> + <span class="n">all_args</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span> + + <span class="k">if</span> <span class="nb">format</span> <span class="o">==</span> <span class="s2">&quot;shell&quot;</span><span class="p">:</span> + <span class="n">final_res</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="sa">f</span><span class="s2">&quot;--</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">v</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">all_args</span><span class="o">.</span><span class="n">items</span><span class="p">()])</span> + <span class="k">elif</span> <span class="nb">format</span> <span class="o">==</span> <span class="s2">&quot;subprocess&quot;</span><span class="p">:</span> + <span class="n">final_res</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">all_args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> + <span class="n">final_res</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="sa">f</span><span class="s2">&quot;--</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">v</span><span class="p">)])</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Unknown format: </span><span class="si">{</span><span class="nb">format</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">final_res</span></div> + + + +<div class="viewcode-block" id="create_copied_dataclass"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/common/index.html#lmflow.utils.common.create_copied_dataclass">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">create_copied_dataclass</span><span class="p">(</span> + <span class="n">original_dataclass</span><span class="p">,</span> + <span class="n">field_prefix</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">class_prefix</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">new_default</span><span class="p">:</span> <span class="n">Dict</span><span class="o">=</span><span class="kc">None</span> +<span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Create a copied dataclass with new field names and default values.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> original_dataclass : dataclass</span> +<span class="sd"> field_prefix : str</span> +<span class="sd"> The prefix to add to the **field** names of the copied dataclass.</span> +<span class="sd"> class_prefix : str</span> +<span class="sd"> The prefix to add to the **class** name of the copied dataclass.</span> +<span class="sd"> new_default : Dict, optional</span> +<span class="sd"> The new default values for the copied dataclass. When None, the </span> +<span class="sd"> default values of the original dataclass are used.</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> dataclass</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">original_fields</span> <span class="o">=</span> <span class="n">fields</span><span class="p">(</span><span class="n">original_dataclass</span><span class="p">)</span> + <span class="n">new_default</span> <span class="o">=</span> <span class="n">new_default</span> <span class="ow">or</span> <span class="p">{}</span> + <span class="n">new_fields</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">field</span> <span class="ow">in</span> <span class="n">original_fields</span><span class="p">:</span> + <span class="k">if</span> <span class="n">get_python_version</span><span class="p">()</span><span class="o">.</span><span class="n">minor</span> <span class="o">&gt;=</span> <span class="mi">10</span><span class="p">:</span> + <span class="n">new_field</span> <span class="o">=</span> <span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">field_prefix</span><span class="si">}{</span><span class="n">field</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span> + <span class="n">field</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> + <span class="n">Field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="n">new_default</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">field_prefix</span><span class="si">}{</span><span class="n">field</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">field</span><span class="o">.</span><span class="n">default</span><span class="p">),</span> + <span class="n">default_factory</span><span class="o">=</span><span class="n">field</span><span class="o">.</span><span class="n">default_factory</span><span class="p">,</span> + <span class="n">init</span><span class="o">=</span><span class="n">field</span><span class="o">.</span><span class="n">init</span><span class="p">,</span> + <span class="nb">repr</span><span class="o">=</span><span class="n">field</span><span class="o">.</span><span class="n">repr</span><span class="p">,</span> + <span class="nb">hash</span><span class="o">=</span><span class="n">field</span><span class="o">.</span><span class="n">hash</span><span class="p">,</span> + <span class="n">compare</span><span class="o">=</span><span class="n">field</span><span class="o">.</span><span class="n">compare</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="n">field</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> + <span class="n">kw_only</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># add in py3.10: https://docs.python.org/3/library/dataclasses.html</span> + <span class="p">)</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">new_field</span> <span class="o">=</span> <span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">field_prefix</span><span class="si">}{</span><span class="n">field</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span> + <span class="n">field</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> + <span class="n">Field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="n">new_default</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">field_prefix</span><span class="si">}{</span><span class="n">field</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">field</span><span class="o">.</span><span class="n">default</span><span class="p">),</span> + <span class="n">default_factory</span><span class="o">=</span><span class="n">field</span><span class="o">.</span><span class="n">default_factory</span><span class="p">,</span> + <span class="n">init</span><span class="o">=</span><span class="n">field</span><span class="o">.</span><span class="n">init</span><span class="p">,</span> + <span class="nb">repr</span><span class="o">=</span><span class="n">field</span><span class="o">.</span><span class="n">repr</span><span class="p">,</span> + <span class="nb">hash</span><span class="o">=</span><span class="n">field</span><span class="o">.</span><span class="n">hash</span><span class="p">,</span> + <span class="n">compare</span><span class="o">=</span><span class="n">field</span><span class="o">.</span><span class="n">compare</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="n">field</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span> + <span class="p">)</span> + <span class="p">)</span> + + <span class="n">new_fields</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_field</span><span class="p">)</span> + <span class="n">copied_dataclass</span> <span class="o">=</span> <span class="n">make_dataclass</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">class_prefix</span><span class="si">}{</span><span class="n">original_dataclass</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">new_fields</span><span class="p">)</span> + <span class="k">return</span> <span class="n">copied_dataclass</span></div> + + + +<div class="viewcode-block" id="remove_dataclass_attr_prefix"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/common/index.html#lmflow.utils.common.remove_dataclass_attr_prefix">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">remove_dataclass_attr_prefix</span><span class="p">(</span><span class="n">data_instance</span><span class="p">,</span> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Remove the prefix from the attribute names of a dataclass instance.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> data_instance : dataclass</span> +<span class="sd"> prefix : str</span> +<span class="sd"> The prefix to remove from the attribute names of the dataclass instance.</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> Dict</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">new_attributes</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">for</span> <span class="n">field</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">(</span><span class="n">data_instance</span><span class="p">):</span> + <span class="n">attr_name</span> <span class="o">=</span> <span class="n">field</span><span class="o">.</span><span class="n">name</span> + <span class="n">attr_value</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">data_instance</span><span class="p">,</span> <span class="n">attr_name</span><span class="p">)</span> + <span class="n">new_attr_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">attr_name</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">):]</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="n">new_attributes</span><span class="p">[</span><span class="n">new_attr_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">attr_value</span> + + <span class="k">return</span> <span class="n">new_attributes</span></div> + + + +<div class="viewcode-block" id="add_dataclass_attr_prefix"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/common/index.html#lmflow.utils.common.add_dataclass_attr_prefix">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">add_dataclass_attr_prefix</span><span class="p">(</span><span class="n">data_instance</span><span class="p">,</span> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Add the prefix to the attribute names of a dataclass instance.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> data_instance : dataclass</span> +<span class="sd"> prefix : str</span> +<span class="sd"> The prefix to add to the attribute names of the dataclass instance.</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> Dict</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">new_attributes</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">for</span> <span class="n">field</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">(</span><span class="n">data_instance</span><span class="p">):</span> + <span class="n">attr_name</span> <span class="o">=</span> <span class="n">field</span><span class="o">.</span><span class="n">name</span> + <span class="n">attr_value</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">data_instance</span><span class="p">,</span> <span class="n">attr_name</span><span class="p">)</span> + <span class="n">new_attr_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">attr_name</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="n">new_attributes</span><span class="p">[</span><span class="n">new_attr_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">attr_value</span> + + <span class="k">return</span> <span class="n">new_attributes</span></div> + + + +<div class="viewcode-block" id="print_banner"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/common/index.html#lmflow.utils.common.print_banner">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">print_banner</span><span class="p">(</span><span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span> + <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> <span class="o">+</span> <span class="mi">8</span> + <span class="n">border</span> <span class="o">=</span> <span class="s2">&quot;#&quot;</span> <span class="o">*</span> <span class="n">length</span> + + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">border</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;# </span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2"> #&quot;</span><span class="p">)</span> + <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">border</span><span class="p">)</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/constants.html b/_modules/lmflow/utils/constants.html new file mode 100644 index 000000000..13bf4215c --- /dev/null +++ b/_modules/lmflow/utils/constants.html @@ -0,0 +1,981 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.constants &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/constants';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.constants</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.constants</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="sd">Commonly used constants.</span> +<span class="sd">&quot;&quot;&quot;</span> + +<div class="viewcode-block" id="TEXT_ONLY_DATASET_DESCRIPTION"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT_ONLY_DATASET_DESCRIPTION">[docs]</a> +<span class="n">TEXT_ONLY_DATASET_DESCRIPTION</span> <span class="o">=</span> <span class="p">(</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="sd">&quot;text_only&quot;: a dataset with only raw text instances, with following format:</span> + +<span class="sd"> {</span> +<span class="sd"> &quot;type&quot;: &quot;text_only&quot;,</span> +<span class="sd"> &quot;instances&quot;: [</span> +<span class="sd"> { &quot;text&quot;: &quot;TEXT_1&quot; },</span> +<span class="sd"> { &quot;text&quot;: &quot;TEXT_2&quot; },</span> +<span class="sd"> ...</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="p">)</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION">[docs]</a> +<span class="n">TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION</span> <span class="o">=</span> <span class="p">(</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="sd">This kind of dataset is commonly used in reward model training/prediction, as well as rl training.</span> +<span class="sd">{</span> +<span class="sd"> &quot;type&quot;: &quot;text_to_scored_textlist&quot;,</span> +<span class="sd"> &quot;instances&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;input&quot;: &quot;what&#39;s your name?&quot;,</span> +<span class="sd"> &quot;output&quot;: [</span> +<span class="sd"> {&quot;score&quot;: 1.0, &quot;text&quot;: &quot;My name is John&quot;},</span> +<span class="sd"> {&quot;score&quot;: -0.8, &quot;text&quot;: &quot;I&#39;m John&quot;}</span> +<span class="sd"> ]</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;input&quot;: &quot;Who are you?&quot;,</span> +<span class="sd"> &quot;output&quot;: [</span> +<span class="sd"> {&quot;score&quot;: 1.5, &quot;text&quot;: &quot;My name is Amy&quot;},</span> +<span class="sd"> {&quot;score&quot;: 1.0, &quot;text&quot;: &quot;I&#39;m Amy&quot;}</span> +<span class="sd"> ]</span> +<span class="sd"> },</span> +<span class="sd"> ]</span> +<span class="sd">}</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="p">)</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION">[docs]</a> +<span class="n">PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION</span> <span class="o">=</span> <span class="p">(</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="sd">This kind of dataset is commonly used in reward model training as well as rl training.</span> +<span class="sd">{</span> +<span class="sd"> &quot;type&quot;: &quot;paired_text_to_text&quot;,</span> +<span class="sd"> &quot;instances&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;prompt&quot;: &quot;Who are you?&quot;,</span> +<span class="sd"> &quot;chosen&quot;: &quot;My name is Amy.&quot;,</span> +<span class="sd"> &quot;rejected&quot;: &quot;I&#39;m Amy&quot;,</span> +<span class="sd"> &quot;margin&quot;: 0.6</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;prompt&quot;: &quot;what&#39;s your name?&quot;,</span> +<span class="sd"> &quot;chosen&quot;: &quot;My name is John.&quot;,</span> +<span class="sd"> &quot;rejected&quot;: &quot;I&#39;m John&quot;,</span> +<span class="sd"> &quot;margin&quot;: 0.5</span> +<span class="sd"> }</span> +<span class="sd"> ]</span> +<span class="sd">}</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="p">)</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="TEXT_ONLY_DATASET_DETAILS"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT_ONLY_DATASET_DETAILS">[docs]</a> +<span class="n">TEXT_ONLY_DATASET_DETAILS</span> <span class="o">=</span> <span class="p">(</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> For example,</span> + +<span class="sd"> ```python</span> +<span class="sd"> from lmflow.datasets import Dataset</span> + +<span class="sd"> data_dict = {</span> +<span class="sd"> &quot;type&quot;: &quot;text_only&quot;,</span> +<span class="sd"> &quot;instances&quot;: [</span> +<span class="sd"> { &quot;text&quot;: &quot;Human: Hello. Bot: Hi!&quot; },</span> +<span class="sd"> { &quot;text&quot;: &quot;Human: How are you today? Bot: Fine, thank you!&quot; },</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> +<span class="sd"> dataset = Dataset.create_from_dict(data_dict)</span> +<span class="sd"> ```</span> + +<span class="sd"> You may also save the corresponding format to json,</span> +<span class="sd"> ```python</span> +<span class="sd"> import json</span> +<span class="sd"> from lmflow.args import DatasetArguments</span> +<span class="sd"> from lmflow.datasets import Dataset</span> + +<span class="sd"> data_dict = {</span> +<span class="sd"> &quot;type&quot;: &quot;text_only&quot;,</span> +<span class="sd"> &quot;instances&quot;: [</span> +<span class="sd"> { &quot;text&quot;: &quot;Human: Hello. Bot: Hi!&quot; },</span> +<span class="sd"> { &quot;text&quot;: &quot;Human: How are you today? Bot: Fine, thank you!&quot; },</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> +<span class="sd"> with open(&quot;data.json&quot;, &quot;w&quot;) as fout:</span> +<span class="sd"> json.dump(data_dict, fout)</span> + +<span class="sd"> data_args = DatasetArgument(dataset_path=&quot;data.json&quot;)</span> +<span class="sd"> dataset = Dataset(data_args)</span> +<span class="sd"> new_data_dict = dataset.to_dict()</span> +<span class="sd"> # `new_data_dict` Should have the same content as `data_dict`</span> +<span class="sd"> ```</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="p">)</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="TEXT2TEXT_DATASET_DESCRIPTION"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT2TEXT_DATASET_DESCRIPTION">[docs]</a> +<span class="n">TEXT2TEXT_DATASET_DESCRIPTION</span> <span class="o">=</span> <span class="p">(</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="sd">&quot;text2text&quot;: a dataset with input &amp; output instances, with following format:</span> + +<span class="sd"> {</span> +<span class="sd"> &quot;type&quot;: &quot;text2text&quot;,</span> +<span class="sd"> &quot;instances&quot;: [</span> +<span class="sd"> { &quot;input&quot;: &quot;INPUT_1&quot;, &quot;output&quot;: &quot;OUTPUT_1&quot; },</span> +<span class="sd"> { &quot;input&quot;: &quot;INPUT_2&quot;, &quot;output&quot;: &quot;OUTPUT_2&quot; },</span> +<span class="sd"> ...</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="p">)</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="CONVERSATION_DATASET_DESCRIPTION"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.CONVERSATION_DATASET_DESCRIPTION">[docs]</a> +<span class="n">CONVERSATION_DATASET_DESCRIPTION</span> <span class="o">=</span> <span class="p">(</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="sd">&quot;conversation&quot;: a dataset with conversation instances, with following format (`conversation_id`, `system` and `tools` are optional):</span> + +<span class="sd"> {</span> +<span class="sd"> &quot;type&quot;: &quot;conversation&quot;,</span> +<span class="sd"> &quot;instances&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;conversation_id&quot;: &quot;CONVERSATION_ID&quot;,</span> +<span class="sd"> &quot;system&quot;: &quot;SYSTEM_PROPMT&quot;,</span> +<span class="sd"> &quot;tools&quot;: [&quot;TOOL_DESCRIPTION_1&quot;,&quot;TOOL_DESCRIPTION_2&quot;,&quot;TOOL_DESCRIPTION_X&quot;],</span> +<span class="sd"> &quot;messages&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;user&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;USER_INPUT_1&quot;</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;assistant&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;ASSISTANT_RESPONSE_1&quot;</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;user&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;USER_INPUT_2&quot;</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;assistant&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;ASSISTANT_RESPONSE_2&quot;</span> +<span class="sd"> }</span> +<span class="sd"> ]</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;conversation_id&quot;: &quot;CONVERSATION_ID&quot;,</span> +<span class="sd"> &quot;system&quot;: &quot;SYSTEM_PROPMT&quot;,</span> +<span class="sd"> &quot;tools&quot;: [&quot;TOOL_DESCRIPTION_1&quot;],</span> +<span class="sd"> &quot;messages&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;user&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;USER_INPUT_1&quot;</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;assistant&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;ASSISTANT_RESPONSE_1&quot;</span> +<span class="sd"> }</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="p">)</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="PAIRED_CONVERSATION_DATASET_DESCRIPTION"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.PAIRED_CONVERSATION_DATASET_DESCRIPTION">[docs]</a> +<span class="n">PAIRED_CONVERSATION_DATASET_DESCRIPTION</span> <span class="o">=</span> <span class="p">(</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="sd">&quot;paired_conversation&quot;: a dataset with paired conversation instances, with following format:</span> + +<span class="sd"> {</span> +<span class="sd"> &quot;type&quot;: &quot;paired_conversation&quot;,</span> +<span class="sd"> &quot;instances&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;chosen&quot;: {</span> +<span class="sd"> &quot;conversation_id&quot;: &quot;CONVERSATION_ID&quot;,</span> +<span class="sd"> &quot;system&quot;: &quot;SYSTEM_PROPMT&quot;,</span> +<span class="sd"> &quot;tools&quot;: [&quot;TOOL_DESCRIPTION_1&quot;,&quot;TOOL_DESCRIPTION_2&quot;,&quot;TOOL_DESCRIPTION_3&quot;],</span> +<span class="sd"> &quot;messages&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;user&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;USER_INPUT_1&quot;</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;assistant&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;ASSISTANT_RESPONSE_1_GOOD&quot;</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;user&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;USER_INPUT_2&quot;</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;assistant&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;ASSISTANT_RESPONSE_2_GOOD&quot;</span> +<span class="sd"> }</span> +<span class="sd"> ]</span> +<span class="sd"> },</span> +<span class="sd"> &quot;rejected&quot;: {</span> +<span class="sd"> &quot;conversation_id&quot;: &quot;CONVERSATION_ID&quot;,</span> +<span class="sd"> &quot;system&quot;: &quot;SYSTEM_PROPMT&quot;,</span> +<span class="sd"> &quot;tools&quot;: [&quot;TOOL_DESCRIPTION_1&quot;,&quot;TOOL_DESCRIPTION_2&quot;,&quot;TOOL_DESCRIPTION_3&quot;],</span> +<span class="sd"> &quot;messages&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;user&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;USER_INPUT_1&quot;</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;assistant&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;ASSISTANT_RESPONSE_1_BAD&quot;</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;user&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;USER_INPUT_2&quot;</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;assistant&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;ASSISTANT_RESPONSE_2_BAD&quot;</span> +<span class="sd"> }</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> +<span class="sd"> }</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="p">)</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="TEXT_TO_TEXTLIST_DATASET_DESCRIPTION"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT_TO_TEXTLIST_DATASET_DESCRIPTION">[docs]</a> +<span class="n">TEXT_TO_TEXTLIST_DATASET_DESCRIPTION</span> <span class="o">=</span> <span class="p">(</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="sd">This kind of dataset is commonly used in reward model inference.</span> +<span class="sd">{</span> +<span class="sd"> &quot;type&quot;: &quot;text_to_textlist&quot;,</span> +<span class="sd"> &quot;instances&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;input&quot;: &quot;what&#39;s your name?&quot;,</span> +<span class="sd"> &quot;output&quot;: [</span> +<span class="sd"> &quot;My name is John&quot;,</span> +<span class="sd"> &quot;I&#39;m John&quot;,</span> +<span class="sd"> ]</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;input&quot;: &quot;Who are you?&quot;,</span> +<span class="sd"> &quot;output&quot;: [</span> +<span class="sd"> &quot;My name is Amy&quot;,</span> +<span class="sd"> &quot;I&#39;m Amy&quot;,</span> +<span class="sd"> ]</span> +<span class="sd"> },</span> +<span class="sd"> ]</span> +<span class="sd">}</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="p">)</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="TEXT2TEXT_DATASET_DETAILS"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT2TEXT_DATASET_DETAILS">[docs]</a> +<span class="n">TEXT2TEXT_DATASET_DETAILS</span> <span class="o">=</span> <span class="p">(</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> For example,</span> + +<span class="sd"> ```python</span> +<span class="sd"> from lmflow.datasets import Dataset</span> + +<span class="sd"> data_dict = {</span> +<span class="sd"> &quot;type&quot;: &quot;text2text&quot;,</span> +<span class="sd"> &quot;instances&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;input&quot;: &quot;Human: Hello.&quot;,</span> +<span class="sd"> &quot;output&quot;: &quot;Bot: Hi!&quot;,</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;input&quot;: &quot;Human: How are you today?&quot;,</span> +<span class="sd"> &quot;output&quot;: &quot;Bot: Fine, thank you! And you?&quot;,</span> +<span class="sd"> }</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> +<span class="sd"> dataset = Dataset.create_from_dict(data_dict)</span> +<span class="sd"> ```</span> + +<span class="sd"> You may also save the corresponding format to json,</span> +<span class="sd"> ```python</span> +<span class="sd"> import json</span> +<span class="sd"> from lmflow.args import DatasetArguments</span> +<span class="sd"> from lmflow.datasets import Dataset</span> + +<span class="sd"> data_dict = {</span> +<span class="sd"> &quot;type&quot;: &quot;text2text&quot;,</span> +<span class="sd"> &quot;instances&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;input&quot;: &quot;Human: Hello.&quot;,</span> +<span class="sd"> &quot;output&quot;: &quot;Bot: Hi!&quot;,</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;input&quot;: &quot;Human: How are you today?&quot;,</span> +<span class="sd"> &quot;output&quot;: &quot;Bot: Fine, thank you! And you?&quot;,</span> +<span class="sd"> }</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> +<span class="sd"> with open(&quot;data.json&quot;, &quot;w&quot;) as fout:</span> +<span class="sd"> json.dump(data_dict, fout)</span> + +<span class="sd"> data_args = DatasetArgument(dataset_path=&quot;data.json&quot;)</span> +<span class="sd"> dataset = Dataset(data_args)</span> +<span class="sd"> new_data_dict = dataset.to_dict()</span> +<span class="sd"> # `new_data_dict` Should have the same content as `data_dict`</span> +<span class="sd"> ```</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="p">)</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="FLOAT_ONLY_DATASET_DESCRIPTION"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.FLOAT_ONLY_DATASET_DESCRIPTION">[docs]</a> +<span class="n">FLOAT_ONLY_DATASET_DESCRIPTION</span> <span class="o">=</span> <span class="p">(</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="sd">&quot;float_only&quot;: a dataset with only float instances, with following format:</span> + +<span class="sd"> {</span> +<span class="sd"> &quot;type&quot;: &quot;float_only&quot;,</span> +<span class="sd"> &quot;instances&quot;: [</span> +<span class="sd"> { &quot;value&quot;: &quot;FLOAT_1&quot; },</span> +<span class="sd"> { &quot;value&quot;: &quot;FLOAT_2&quot; },</span> +<span class="sd"> ...</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> +<span class="sd">&quot;&quot;&quot;</span> +<span class="p">)</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="TEXT_ONLY_DATASET_LONG_DESCRITION"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT_ONLY_DATASET_LONG_DESCRITION">[docs]</a> +<span class="n">TEXT_ONLY_DATASET_LONG_DESCRITION</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">TEXT_ONLY_DATASET_DESCRIPTION</span> <span class="o">+</span> <span class="n">TEXT_ONLY_DATASET_DETAILS</span> +<span class="p">)</span></div> + + +<div class="viewcode-block" id="TEXT2TEXT_DATASET_LONG_DESCRITION"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT2TEXT_DATASET_LONG_DESCRITION">[docs]</a> +<span class="n">TEXT2TEXT_DATASET_LONG_DESCRITION</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">TEXT2TEXT_DATASET_DESCRIPTION</span> <span class="o">+</span> <span class="n">TEXT2TEXT_DATASET_DETAILS</span> +<span class="p">)</span></div> + + + +<div class="viewcode-block" id="DATASET_DESCRIPTION_MAP"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.DATASET_DESCRIPTION_MAP">[docs]</a> +<span class="n">DATASET_DESCRIPTION_MAP</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;text_only&quot;</span><span class="p">:</span> <span class="n">TEXT_ONLY_DATASET_DESCRIPTION</span><span class="p">,</span> + <span class="s2">&quot;text2text&quot;</span><span class="p">:</span> <span class="n">TEXT2TEXT_DATASET_DESCRIPTION</span><span class="p">,</span> + <span class="s2">&quot;float_only&quot;</span><span class="p">:</span> <span class="n">FLOAT_ONLY_DATASET_DESCRIPTION</span><span class="p">,</span> +<span class="p">}</span></div> + + +<div class="viewcode-block" id="INSTANCE_FIELDS_MAP"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.INSTANCE_FIELDS_MAP">[docs]</a> +<span class="n">INSTANCE_FIELDS_MAP</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;text_only&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;text&quot;</span><span class="p">],</span> + <span class="s2">&quot;text2text&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">,</span> <span class="s2">&quot;output&quot;</span><span class="p">],</span> + <span class="s2">&quot;conversation&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;messages&quot;</span><span class="p">],</span> <span class="c1"># system, tools and conversation_id are optional</span> + <span class="s2">&quot;paired_conversation&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;chosen&quot;</span><span class="p">,</span> <span class="s2">&quot;rejected&quot;</span><span class="p">],</span> + <span class="s2">&quot;paired_text_to_text&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;prompt&quot;</span><span class="p">,</span> <span class="s2">&quot;chosen&quot;</span><span class="p">,</span> <span class="s2">&quot;rejected&quot;</span><span class="p">],</span> + <span class="s2">&quot;float_only&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;value&quot;</span><span class="p">],</span> + <span class="s2">&quot;image_text&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;images&quot;</span><span class="p">,</span> <span class="s2">&quot;text&quot;</span><span class="p">],</span> + <span class="s2">&quot;text_to_textlist&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">,</span> <span class="s2">&quot;output&quot;</span><span class="p">],</span> + <span class="s2">&quot;text_to_scored_textlist&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">,</span> <span class="s2">&quot;output&quot;</span><span class="p">],</span> +<span class="p">}</span></div> + + +<div class="viewcode-block" id="CONVERSATION_ROLE_NAMES"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.CONVERSATION_ROLE_NAMES">[docs]</a> +<span class="n">CONVERSATION_ROLE_NAMES</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;system&quot;</span><span class="p">:</span> <span class="s2">&quot;system&quot;</span><span class="p">,</span> + <span class="s2">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;user&quot;</span><span class="p">,</span> + <span class="s2">&quot;assistant&quot;</span><span class="p">:</span> <span class="s2">&quot;assistant&quot;</span><span class="p">,</span> + <span class="s2">&quot;function&quot;</span><span class="p">:</span> <span class="s2">&quot;function&quot;</span><span class="p">,</span> + <span class="s2">&quot;observation&quot;</span><span class="p">:</span> <span class="s2">&quot;observation&quot;</span> +<span class="p">}</span></div> + + +<span class="c1"># LLAVA constants</span> +<div class="viewcode-block" id="CONTROLLER_HEART_BEAT_EXPIRATION"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.CONTROLLER_HEART_BEAT_EXPIRATION">[docs]</a> +<span class="n">CONTROLLER_HEART_BEAT_EXPIRATION</span> <span class="o">=</span> <span class="mi">30</span></div> + +<div class="viewcode-block" id="WORKER_HEART_BEAT_INTERVAL"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.WORKER_HEART_BEAT_INTERVAL">[docs]</a> +<span class="n">WORKER_HEART_BEAT_INTERVAL</span> <span class="o">=</span> <span class="mi">15</span></div> + + +<div class="viewcode-block" id="LOGDIR"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.LOGDIR">[docs]</a> +<span class="n">LOGDIR</span> <span class="o">=</span> <span class="s2">&quot;.&quot;</span></div> + + +<span class="c1"># Model Constants</span> +<div class="viewcode-block" id="IGNORE_INDEX"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.IGNORE_INDEX">[docs]</a> +<span class="n">IGNORE_INDEX</span> <span class="o">=</span> <span class="o">-</span><span class="mi">100</span></div> + +<div class="viewcode-block" id="IMAGE_TOKEN_INDEX"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.IMAGE_TOKEN_INDEX">[docs]</a> +<span class="n">IMAGE_TOKEN_INDEX</span> <span class="o">=</span> <span class="o">-</span><span class="mi">200</span></div> + +<div class="viewcode-block" id="DEFAULT_IMAGE_TOKEN"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.DEFAULT_IMAGE_TOKEN">[docs]</a> +<span class="n">DEFAULT_IMAGE_TOKEN</span> <span class="o">=</span> <span class="s2">&quot;&lt;image&gt;&quot;</span></div> + +<div class="viewcode-block" id="DEFAULT_IMAGE_PATCH_TOKEN"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.DEFAULT_IMAGE_PATCH_TOKEN">[docs]</a> +<span class="n">DEFAULT_IMAGE_PATCH_TOKEN</span> <span class="o">=</span> <span class="s2">&quot;&lt;im_patch&gt;&quot;</span></div> + +<div class="viewcode-block" id="DEFAULT_IM_START_TOKEN"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.DEFAULT_IM_START_TOKEN">[docs]</a> +<span class="n">DEFAULT_IM_START_TOKEN</span> <span class="o">=</span> <span class="s2">&quot;&lt;im_start&gt;&quot;</span></div> + +<div class="viewcode-block" id="DEFAULT_IM_END_TOKEN"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.DEFAULT_IM_END_TOKEN">[docs]</a> +<span class="n">DEFAULT_IM_END_TOKEN</span> <span class="o">=</span> <span class="s2">&quot;&lt;im_end&gt;&quot;</span></div> + + +<span class="c1"># Lora</span> +<span class="c1"># NOTE: This work as a mapping for those models that `peft` library doesn&#39;t support yet, and will be </span> +<span class="c1"># overwritten by peft.utils.constants.TRANSFORMERS_MODELS_TO_LORA_TARGET_MODULES_MAPPING</span> +<span class="c1"># if the model is supported (see hf_model_mixin.py).</span> +<span class="c1"># NOTE: When passing lora_target_modules through arg parser, the </span> +<span class="c1"># value should be a string. Using commas to separate the module names, e.g.</span> +<span class="c1"># &quot;--lora_target_modules &#39;q_proj, v_proj&#39;&quot;. </span> +<span class="c1"># However, when specifying here, they should be lists.</span> +<div class="viewcode-block" id="LMFLOW_LORA_TARGET_MODULES_MAPPING"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.LMFLOW_LORA_TARGET_MODULES_MAPPING">[docs]</a> +<span class="n">LMFLOW_LORA_TARGET_MODULES_MAPPING</span> <span class="o">=</span> <span class="p">{</span> + <span class="s1">&#39;qwen2&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;q_proj&quot;</span><span class="p">,</span> <span class="s2">&quot;v_proj&quot;</span><span class="p">],</span> + <span class="s1">&#39;internlm2&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;wqkv&quot;</span><span class="p">],</span> + <span class="s1">&#39;hymba&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;x_proj.0&quot;</span><span class="p">,</span> <span class="s2">&quot;in_proj&quot;</span><span class="p">,</span> <span class="s2">&quot;out_proj&quot;</span><span class="p">,</span> <span class="s2">&quot;dt_proj.0&quot;</span><span class="p">]</span> +<span class="p">}</span></div> + + +<span class="c1"># vllm inference</span> +<div class="viewcode-block" id="MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG">[docs]</a> +<span class="n">MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG</span> <span class="o">=</span> <span class="s2">&quot;MEMORY_SAFE_VLLM_INFERENCE_DONE&quot;</span></div> + +<div class="viewcode-block" id="RETURN_CODE_ERROR_BUFFER"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.RETURN_CODE_ERROR_BUFFER">[docs]</a> +<span class="n">RETURN_CODE_ERROR_BUFFER</span> <span class="o">=</span> <span class="p">[</span> + <span class="mi">134</span> +<span class="p">]</span></div> + +<span class="c1"># return code 134:</span> +<span class="c1"># &gt; Fatal Python error: _enter_buffered_busy: could not acquire lock for &lt;_io.BufferedWriter name=&#39;&lt;stdout&gt;&#39;&gt; </span> +<span class="c1"># &gt; at interpreter shutdown, possibly due to daemon threads</span> +<span class="c1"># The above error, by our observation, is due to the kill signal with unfinished </span> +<span class="c1"># stdout/stderr writing in the subprocess</span> +<div class="viewcode-block" id="MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE">[docs]</a> +<span class="n">MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE</span> <span class="o">=</span> <span class="p">[</span> + <span class="s2">&quot;OMP_NUM_THREADS&quot;</span><span class="p">,</span> + <span class="s2">&quot;LOCAL_RANK&quot;</span><span class="p">,</span> + <span class="s2">&quot;RANK&quot;</span><span class="p">,</span> + <span class="s2">&quot;GROUP_RANK&quot;</span><span class="p">,</span> + <span class="s2">&quot;ROLE_RANK&quot;</span><span class="p">,</span> + <span class="s2">&quot;ROLE_NAME&quot;</span><span class="p">,</span> + <span class="s2">&quot;LOCAL_WORLD_SIZE&quot;</span><span class="p">,</span> + <span class="s2">&quot;WORLD_SIZE&quot;</span><span class="p">,</span> + <span class="s2">&quot;GROUP_WORLD_SIZE&quot;</span><span class="p">,</span> + <span class="s2">&quot;ROLE_WORLD_SIZE&quot;</span><span class="p">,</span> + <span class="s2">&quot;MASTER_ADDR&quot;</span><span class="p">,</span> + <span class="s2">&quot;MASTER_PORT&quot;</span><span class="p">,</span> + <span class="s2">&quot;TORCHELASTIC_RESTART_COUNT&quot;</span><span class="p">,</span> + <span class="s2">&quot;TORCHELASTIC_MAX_RESTARTS&quot;</span><span class="p">,</span> + <span class="s2">&quot;TORCHELASTIC_RUN_ID&quot;</span><span class="p">,</span> + <span class="s2">&quot;TORCHELASTIC_USE_AGENT_STORE&quot;</span><span class="p">,</span> + <span class="s2">&quot;TORCH_NCCL_ASYNC_ERROR_HANDLING&quot;</span><span class="p">,</span> + <span class="s2">&quot;TORCHELASTIC_ERROR_FILE&quot;</span><span class="p">,</span> +<span class="p">]</span></div> + + +<span class="c1"># dpov2 align</span> +<div class="viewcode-block" id="MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE">[docs]</a> +<span class="n">MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE</span> <span class="o">=</span> <span class="p">[</span> + <span class="s2">&quot;OMP_NUM_THREADS&quot;</span><span class="p">,</span> + <span class="s2">&quot;LOCAL_RANK&quot;</span><span class="p">,</span> + <span class="s2">&quot;RANK&quot;</span><span class="p">,</span> + <span class="s2">&quot;GROUP_RANK&quot;</span><span class="p">,</span> + <span class="s2">&quot;ROLE_RANK&quot;</span><span class="p">,</span> + <span class="s2">&quot;ROLE_NAME&quot;</span><span class="p">,</span> + <span class="s2">&quot;LOCAL_WORLD_SIZE&quot;</span><span class="p">,</span> + <span class="s2">&quot;WORLD_SIZE&quot;</span><span class="p">,</span> + <span class="s2">&quot;GROUP_WORLD_SIZE&quot;</span><span class="p">,</span> + <span class="s2">&quot;ROLE_WORLD_SIZE&quot;</span><span class="p">,</span> + <span class="s2">&quot;MASTER_ADDR&quot;</span><span class="p">,</span> + <span class="s2">&quot;MASTER_PORT&quot;</span><span class="p">,</span> + <span class="s2">&quot;TORCHELASTIC_RESTART_COUNT&quot;</span><span class="p">,</span> + <span class="s2">&quot;TORCHELASTIC_MAX_RESTARTS&quot;</span><span class="p">,</span> + <span class="s2">&quot;TORCHELASTIC_RUN_ID&quot;</span><span class="p">,</span> + <span class="s2">&quot;TORCHELASTIC_USE_AGENT_STORE&quot;</span><span class="p">,</span> + <span class="s2">&quot;TORCH_NCCL_ASYNC_ERROR_HANDLING&quot;</span><span class="p">,</span> + <span class="s2">&quot;TORCHELASTIC_ERROR_FILE&quot;</span><span class="p">,</span> +<span class="p">]</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/conversation_template.html b/_modules/lmflow/utils/conversation_template.html new file mode 100644 index 000000000..b230e32ff --- /dev/null +++ b/_modules/lmflow/utils/conversation_template.html @@ -0,0 +1,481 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.conversation_template &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/conversation_template';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.conversation_template</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">EMPTY_TEMPLATE</span><span class="p">,</span> <span class="n">EMPTY_NO_SPECIAL_TOKENS_TEMPLATE</span><span class="p">,</span> <span class="n">ConversationTemplate</span><span class="p">,</span> <span class="n">ConversationTemplateForTool</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.chatglm</span><span class="w"> </span><span class="kn">import</span> <span class="n">CHATGLM3_TEMPLATE</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.chatml</span><span class="w"> </span><span class="kn">import</span> <span class="n">CHATML_TEMPLATE</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.deepseek</span><span class="w"> </span><span class="kn">import</span> <span class="n">DEEPSEEK_TEMPLATE</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.gemma</span><span class="w"> </span><span class="kn">import</span> <span class="n">GEMMA_TEMPLATE</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.hymba</span><span class="w"> </span><span class="kn">import</span> <span class="n">HYMBA_TEMPLATE</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.internlm</span><span class="w"> </span><span class="kn">import</span> <span class="n">INTERNLM2_TEMPLATE</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.llama</span><span class="w"> </span><span class="kn">import</span> <span class="n">LLAMA2_TEMPLATE</span><span class="p">,</span> <span class="n">LLAMA3_TEMPLATE</span><span class="p">,</span> <span class="n">LLAMA3_TEMPLATE_FOR_TOOL</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.phi</span><span class="w"> </span><span class="kn">import</span> <span class="n">PHI3_TEMPLATE</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.qwen</span><span class="w"> </span><span class="kn">import</span> <span class="n">QWEN2_TEMPLATE</span><span class="p">,</span> <span class="n">QWEN2_TEMPLATE_FOR_TOOL</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.yi</span><span class="w"> </span><span class="kn">import</span> <span class="n">YI1_5_TEMPLATE</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.zephyr</span><span class="w"> </span><span class="kn">import</span> <span class="n">ZEPHYR_TEMPLATE</span> + + +<div class="viewcode-block" id="PRESET_TEMPLATES"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.PRESET_TEMPLATES">[docs]</a> +<span class="n">PRESET_TEMPLATES</span> <span class="o">=</span> <span class="p">{</span> + <span class="s1">&#39;chatglm3&#39;</span><span class="p">:</span> <span class="n">CHATGLM3_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;chatml&#39;</span><span class="p">:</span> <span class="n">CHATML_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;deepseek&#39;</span><span class="p">:</span> <span class="n">DEEPSEEK_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;disable&#39;</span><span class="p">:</span> <span class="n">EMPTY_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;empty&#39;</span><span class="p">:</span> <span class="n">EMPTY_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;empty_no_special_tokens&#39;</span><span class="p">:</span> <span class="n">EMPTY_NO_SPECIAL_TOKENS_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;gemma&#39;</span><span class="p">:</span> <span class="n">GEMMA_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;hymba&#39;</span><span class="p">:</span> <span class="n">HYMBA_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;internlm2&#39;</span><span class="p">:</span> <span class="n">INTERNLM2_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;llama2&#39;</span><span class="p">:</span> <span class="n">LLAMA2_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;llama3&#39;</span><span class="p">:</span> <span class="n">LLAMA3_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;llama3_for_tool&#39;</span><span class="p">:</span> <span class="n">LLAMA3_TEMPLATE_FOR_TOOL</span><span class="p">,</span> + <span class="s1">&#39;phi3&#39;</span><span class="p">:</span> <span class="n">PHI3_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;qwen2&#39;</span><span class="p">:</span> <span class="n">QWEN2_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;qwen2_for_tool&#39;</span><span class="p">:</span> <span class="n">QWEN2_TEMPLATE_FOR_TOOL</span><span class="p">,</span> + <span class="s1">&#39;yi&#39;</span><span class="p">:</span> <span class="n">CHATML_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;yi1_5&#39;</span><span class="p">:</span> <span class="n">YI1_5_TEMPLATE</span><span class="p">,</span> + <span class="s1">&#39;zephyr&#39;</span><span class="p">:</span> <span class="n">ZEPHYR_TEMPLATE</span> +<span class="p">}</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/conversation_template/base.html b/_modules/lmflow/utils/conversation_template/base.html new file mode 100644 index 000000000..09bbc2df2 --- /dev/null +++ b/_modules/lmflow/utils/conversation_template/base.html @@ -0,0 +1,1173 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.conversation_template.base &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/conversation_template/base';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../conversation_template.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.base</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.conversation_template.base</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">re</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">abc</span><span class="w"> </span><span class="kn">import</span> <span class="n">ABC</span><span class="p">,</span> <span class="n">abstractmethod</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">dataclasses</span><span class="w"> </span><span class="kn">import</span> <span class="n">dataclass</span><span class="p">,</span> <span class="n">field</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Set</span><span class="p">,</span> <span class="n">Sequence</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">PreTrainedTokenizer</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="n">CONVERSATION_ROLE_NAMES</span> + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="TemplateComponent"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.TemplateComponent">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">TemplateComponent</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;The minimal unit of a template, which can be a token, a string, or a list of tools.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> type : Literal[&#39;token&#39;, &#39;token_id&#39;, &#39;string&#39;, &#39;tools&#39;]</span> +<span class="sd"> - Type of the component. </span> +<span class="sd"> </span> +<span class="sd"> - When the component is a token or a string, the content should be `string`. </span> +<span class="sd"> The difference between the two is that token will be converted to token ids </span> +<span class="sd"> by the tokenizer.convert_tokens_to_ids() method, while string will be directly </span> +<span class="sd"> encoded by the tokenizer.encode() method. Specially, since the bos token and eos</span> +<span class="sd"> token are frequently used across different templates, we provide the convenience</span> +<span class="sd"> to use `&#39;bos_token&#39;` and `&#39;eos_token&#39;` to represent the actual bos and eos tokens when</span> +<span class="sd"> `type` of the `TemplateComponent` is `token`. For example: </span> +<span class="sd"> </span> +<span class="sd"> ```python</span> +<span class="sd"> TemplateComponent(type=&#39;token&#39;, content=&#39;bos_token&#39;)</span> +<span class="sd"> ```</span> +<span class="sd"> </span> +<span class="sd"> After encoding, the content will be replaced by the actual token id of the bos token.</span> +<span class="sd"> Please do remember that if you set the `type` to `string`, the tokenizer will try to </span> +<span class="sd"> encode the string &#39;bos_token&#39; instead of providing the actual bos token.</span> +<span class="sd"> </span> +<span class="sd"> - When the component is token_id, the content should be `int` or `List[int]`, and </span> +<span class="sd"> will be directly appended to the encoded token ids.</span> +<span class="sd"> </span> +<span class="sd"> - Tools are not supported yet.</span> +<span class="sd"> </span> +<span class="sd"> content : Union[str, int, List[str], List[int]]</span> +<span class="sd"> Content of the component.</span> + +<span class="sd"> &quot;&quot;&quot;</span> +<div class="viewcode-block" id="TemplateComponent.type"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.TemplateComponent.type">[docs]</a> + <span class="nb">type</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="s1">&#39;token_id&#39;</span><span class="p">,</span> <span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="s1">&#39;tools&#39;</span><span class="p">]</span></div> + +<div class="viewcode-block" id="TemplateComponent.content"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.TemplateComponent.content">[docs]</a> + <span class="n">content</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]</span></div> + +<div class="viewcode-block" id="TemplateComponent.mask"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.TemplateComponent.mask">[docs]</a> + <span class="n">mask</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> <span class="c1"># for token specific masking, work in progress</span></div> + + +<div class="viewcode-block" id="TemplateComponent.__post_init__"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.TemplateComponent.__post_init__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__post_init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">,</span> <span class="s2">&quot;Content of the component cannot be empty.&quot;</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;tools&#39;</span><span class="p">:</span> + <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">,</span> <span class="nb">list</span><span class="p">),</span> <span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Content of tools component must be a list, got </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="s1">&#39;string&#39;</span><span class="p">]:</span> + <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">,</span> <span class="nb">str</span><span class="p">),</span> <span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Content of string/token component must be a string, got </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;token_id&#39;</span><span class="p">:</span> + <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">all</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">token_id</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span> <span class="k">for</span> <span class="n">token_id</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="p">),</span> <span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;Content of token_id component must be an integer or a list of integers.&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;The type of the component must be either &quot;</span> + <span class="sa">f</span><span class="s2">&quot;&#39;token&#39;, &#39;string&#39; or &#39;tools&#39;, got </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="TemplateComponent.__repr__"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.TemplateComponent.__repr__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span> + <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;TemplateComponent(type=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="s2">, content=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="si">}</span><span class="s2">)&quot;</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">n&quot;</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="TemplateComponent.__str__"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.TemplateComponent.__str__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span> + <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">content</span><span class="si">}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s2">&quot;</span><span class="se">\\</span><span class="s2">n&quot;</span><span class="p">)</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="Formatter"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.Formatter">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Formatter</span><span class="p">(</span><span class="n">ABC</span><span class="p">):</span> +<div class="viewcode-block" id="Formatter.template"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.Formatter.template">[docs]</a> + <span class="n">template</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">TemplateComponent</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span><span class="n">default_factory</span><span class="o">=</span><span class="nb">list</span><span class="p">)</span></div> + + + <span class="nd">@abstractmethod</span> +<div class="viewcode-block" id="Formatter.format"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.Formatter.format">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">format</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">TemplateComponent</span><span class="p">]:</span> <span class="o">...</span></div> + + +<div class="viewcode-block" id="Formatter.has_placeholder"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.Formatter.has_placeholder">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">has_placeholder</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">flag</span> <span class="o">=</span> <span class="kc">False</span> + <span class="k">for</span> <span class="n">component</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="p">:</span> + <span class="k">if</span> <span class="n">component</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;{{(.*?)}}&quot;</span><span class="p">,</span> <span class="n">component</span><span class="o">.</span><span class="n">content</span><span class="p">):</span> + <span class="n">flag</span> <span class="o">=</span> <span class="kc">True</span> + <span class="k">break</span> + <span class="k">return</span> <span class="n">flag</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="EmptyFormatter"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.EmptyFormatter">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">EmptyFormatter</span><span class="p">(</span><span class="n">Formatter</span><span class="p">):</span> +<div class="viewcode-block" id="EmptyFormatter.__post_init__"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.EmptyFormatter.__post_init__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__post_init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_placeholder</span><span class="p">():</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Empty formatter should not have placeholders.&quot;</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="EmptyFormatter.format"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.EmptyFormatter.format">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">format</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Empty formatter for when no formatting is needed.</span> +<span class="sd"> This is useful when user has already applied formatting to the dataset.</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> list</span> +<span class="sd"> Original template.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">template</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="StringFormatter"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.StringFormatter">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">StringFormatter</span><span class="p">(</span><span class="n">Formatter</span><span class="p">):</span> +<div class="viewcode-block" id="StringFormatter.__post_init__"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.StringFormatter.__post_init__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__post_init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_placeholder</span><span class="p">():</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;String formatter should have placeholders.&quot;</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="StringFormatter.format"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.StringFormatter.format">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">format</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Format the string components with the provided keyword arguments. </span> +<span class="sd"> Mostly used for formatting system prompt, user and assistant messages.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> **kwargs : dict</span> +<span class="sd"> Keyword arguments containing values to replace in the template components.</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> list</span> +<span class="sd"> Formatted template.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">formatted_template</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">component</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="p">:</span> + <span class="k">if</span> <span class="n">component</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span><span class="p">:</span> + <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> + <span class="n">templated</span> <span class="o">=</span> <span class="n">component</span><span class="o">.</span><span class="n">content</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;{{&quot;</span> <span class="o">+</span> <span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;}}&quot;</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">templated</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Found empty string after formatting, adding a space instead. &quot;</span> + <span class="s2">&quot;If this is not intended, please check the dataset.&quot;</span><span class="p">)</span> + <span class="n">templated</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span> + <span class="n">formatted_template</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="n">templated</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">formatted_template</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">component</span><span class="p">)</span> + + <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">formatted_template</span><span class="p">)</span> + <span class="k">return</span> <span class="n">formatted_template</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="ListFormatter"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ListFormatter">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">ListFormatter</span><span class="p">(</span><span class="n">Formatter</span><span class="p">):</span> +<div class="viewcode-block" id="ListFormatter.format"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ListFormatter.format">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">format</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span> + <span class="k">pass</span> <span class="c1"># Work in progress</span></div> +</div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="ConversationTemplate"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.ConversationTemplate">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">ConversationTemplate</span><span class="p">:</span> +<div class="viewcode-block" id="ConversationTemplate.user_formatter"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.user_formatter">[docs]</a> + <span class="n">user_formatter</span><span class="p">:</span> <span class="n">Formatter</span></div> + +<div class="viewcode-block" id="ConversationTemplate.assistant_formatter"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.assistant_formatter">[docs]</a> + <span class="n">assistant_formatter</span><span class="p">:</span> <span class="n">Formatter</span></div> + +<div class="viewcode-block" id="ConversationTemplate.function_formatter"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.function_formatter">[docs]</a> + <span class="n">function_formatter</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Formatter</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="ConversationTemplate.observation_formatter"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.observation_formatter">[docs]</a> + <span class="n">observation_formatter</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Formatter</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="ConversationTemplate.system_formatter"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.system_formatter">[docs]</a> + <span class="n">system_formatter</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Formatter</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="ConversationTemplate.force_system"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.force_system">[docs]</a> + <span class="n">force_system</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span></div> + +<div class="viewcode-block" id="ConversationTemplate.tools_formatter"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.tools_formatter">[docs]</a> + <span class="n">tools_formatter</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Formatter</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="ConversationTemplate.separator"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.separator">[docs]</a> + <span class="n">separator</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">TemplateComponent</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="ConversationTemplate.remove_last_sep"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.remove_last_sep">[docs]</a> + <span class="n">remove_last_sep</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span></div> + +<div class="viewcode-block" id="ConversationTemplate.special_starter"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.special_starter">[docs]</a> + <span class="n">special_starter</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">TemplateComponent</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="ConversationTemplate.special_stopper"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.special_stopper">[docs]</a> + <span class="n">special_stopper</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">TemplateComponent</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="ConversationTemplate.template_name"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.template_name">[docs]</a> + <span class="n">template_name</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div> + + +<div class="viewcode-block" id="ConversationTemplate.__post_init__"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.__post_init__">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">__post_init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">separator</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">separator</span><span class="o">.</span><span class="n">type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="s1">&#39;token_id&#39;</span><span class="p">]:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Component type </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">separator</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="s2"> cannot be used as a separator.&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">special_starter</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">special_starter</span><span class="o">.</span><span class="n">type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="s1">&#39;token_id&#39;</span><span class="p">]:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Component type </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">special_starter</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="s2"> cannot be used as a special starter.&quot;</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="ConversationTemplate.encode_conversation"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.encode_conversation">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">encode_conversation</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">PreTrainedTokenizer</span><span class="p">,</span> + <span class="n">messages</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]],</span> + <span class="n">system</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tools</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]:</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&#39;&#39;&#39;</span> +<span class="sd"> Messages here should be guaranteed to be in pairs, with the first message being the user message and the second message being the system message.</span> +<span class="sd"> Data example: </span> +<span class="sd"> ```json</span> +<span class="sd"> {</span> +<span class="sd"> &quot;conversation_id&quot;: 2,</span> +<span class="sd"> &quot;system&quot;: &quot;sysinfo1&quot;,</span> +<span class="sd"> &quot;tools&quot;: [&quot;tool_1_desc&quot;],</span> +<span class="sd"> &quot;messages&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;user&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;hi&quot;</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;assistant&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;Hello!&quot;</span> +<span class="sd"> }</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> +<span class="sd"> ```</span> +<span class="sd"> &#39;&#39;&#39;</span> + <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">messages</span><span class="p">,</span> <span class="nb">list</span><span class="p">),</span> <span class="s2">&quot;Messages must be a list.&quot;</span> + + <span class="k">if</span> <span class="n">tools</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Tools are not supported yet. Please include tools in the system message manually.&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">system</span><span class="p">:</span> + <span class="k">if</span> <span class="n">system</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span><span class="s2">&quot;&quot;</span><span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_formatter</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Your dataset contains system message but no system formatter is provided. &quot;</span> + <span class="s2">&quot;Consider either providing a system formatter or removing system prompt from your dataset.&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">system</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="n">encoded_pairs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode</span><span class="p">(</span><span class="n">tokenizer</span><span class="p">,</span> <span class="n">messages</span><span class="p">,</span> <span class="n">system</span><span class="p">,</span> <span class="n">tools</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="n">encoded_pairs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">post_process_pairs</span><span class="p">(</span><span class="n">encoded_pairs</span><span class="o">=</span><span class="n">encoded_pairs</span><span class="p">,</span> <span class="n">tokenizer</span><span class="o">=</span><span class="n">tokenizer</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">encoded_pairs</span></div> + + +<div class="viewcode-block" id="ConversationTemplate._encode"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.ConversationTemplate._encode">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_encode</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">PreTrainedTokenizer</span><span class="p">,</span> + <span class="n">messages</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]],</span> + <span class="n">system</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tools</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]:</span> + <span class="c1"># TODO: truncation according to model max length</span> + <span class="c1"># TODO: make sure the last few tokens are &quot;learnable&quot;, not masked with token_id = -100.</span> + + <span class="n">res_all</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">if</span> <span class="n">system</span><span class="p">:</span> + <span class="n">system_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">system</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">system_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">force_system</span> <span class="k">else</span> <span class="p">[]</span> + <span class="n">system_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">system_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">messages</span><span class="p">),</span> <span class="mi">2</span><span class="p">):</span> + <span class="n">user_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">assistant_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> + + <span class="n">user_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">user_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">user_message</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">])</span> + <span class="n">assistant_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">assistant_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">assistant_message</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">])</span> + + <span class="n">user_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">user_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + <span class="n">assistant_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">assistant_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + + <span class="n">res_all</span><span class="o">.</span><span class="n">append</span><span class="p">((</span> + <span class="n">system_encoded</span> <span class="o">+</span> <span class="n">user_encoded</span> <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">else</span> <span class="n">user_encoded</span><span class="p">,</span> + <span class="n">assistant_encoded</span> + <span class="p">))</span> + + <span class="k">return</span> <span class="n">res_all</span></div> + + +<div class="viewcode-block" id="ConversationTemplate._encode_template"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.ConversationTemplate._encode_template">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_encode_template</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">template</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">TemplateComponent</span><span class="p">],</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">PreTrainedTokenizer</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Encode template components into token ids.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> template : List[TemplateComponent]</span> +<span class="sd"> Formatted template components.</span> +<span class="sd"> tokenizer : PreTrainedTokenizer</span> +<span class="sd"> Tokenizer to convert tokens into token ids.</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> List[int]</span> +<span class="sd"> Encoded token ids.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">encoded_ids</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">component</span> <span class="ow">in</span> <span class="n">template</span><span class="p">:</span> + <span class="k">if</span> <span class="n">component</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">component</span><span class="o">.</span><span class="n">content</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Empty string component found in the template.&quot;</span><span class="p">)</span> + <span class="k">continue</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">encoded_ids</span> <span class="o">+=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">component</span><span class="o">.</span><span class="n">content</span><span class="p">,</span> <span class="n">add_special_tokens</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">component</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;token&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">component</span><span class="o">.</span><span class="n">content</span> <span class="o">==</span> <span class="s1">&#39;bos_token&#39;</span><span class="p">:</span> + <span class="n">encoded_ids</span> <span class="o">+=</span> <span class="p">[</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">bos_token_id</span><span class="p">]</span> + <span class="k">elif</span> <span class="n">component</span><span class="o">.</span><span class="n">content</span> <span class="o">==</span> <span class="s1">&#39;eos_token&#39;</span><span class="p">:</span> + <span class="n">encoded_ids</span> <span class="o">+=</span> <span class="p">[</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">encoded_ids</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_id_list</span><span class="p">(</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">convert_tokens_to_ids</span><span class="p">(</span><span class="n">component</span><span class="o">.</span><span class="n">content</span><span class="p">))</span> + <span class="k">elif</span> <span class="n">component</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;token_id&#39;</span><span class="p">:</span> + <span class="n">encoded_ids</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_id_list</span><span class="p">(</span><span class="n">component</span><span class="o">.</span><span class="n">content</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Component type </span><span class="si">{</span><span class="n">component</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="s2"> is not supported yet.&quot;</span><span class="p">)</span> + <span class="k">return</span> <span class="n">encoded_ids</span></div> + + +<div class="viewcode-block" id="ConversationTemplate.post_process_pairs"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.post_process_pairs">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">post_process_pairs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">encoded_pairs</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">separator</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">remove_last_sep</span><span class="p">:</span> + <span class="c1"># For models that require a separator between messages, </span> + <span class="c1"># user can include the seperator at the end of each template</span> + <span class="c1"># and specify the separator. Auto formatting will remove the </span> + <span class="c1"># last separator once user specifies this option.</span> + <span class="n">encoded_pairs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">remove_last_separator</span><span class="p">(</span><span class="n">encoded_pairs</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">special_starter</span><span class="p">:</span> + <span class="c1"># For models that has ONLY ONE bos token at the beginning of </span> + <span class="c1"># a conversation session (not a conversation pair), user can</span> + <span class="c1"># specify a special starter to add that starter to the very</span> + <span class="c1"># beginning of the conversation session. </span> + <span class="c1"># eg:</span> + <span class="c1"># llama-2: &lt;s&gt; and &lt;/s&gt; at every pair of conversation </span> + <span class="c1"># v.s.</span> + <span class="c1"># llama-3: &lt;|begin_of_text|&gt; only at the beginning of a session</span> + <span class="n">encoded_pairs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">add_special_starter</span><span class="p">(</span><span class="n">encoded_pairs</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">special_stopper</span><span class="p">:</span> + <span class="n">encoded_pairs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">add_special_stopper</span><span class="p">(</span><span class="n">encoded_pairs</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">encoded_pairs</span></div> + + +<div class="viewcode-block" id="ConversationTemplate.remove_last_separator"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.remove_last_separator">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">remove_last_separator</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">encoded_pairs</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]],</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">PreTrainedTokenizer</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]:</span> + <span class="n">last_assistant_msg</span> <span class="o">=</span> <span class="n">encoded_pairs</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">separator</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span><span class="p">:</span> + <span class="n">separator_ids</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">separator</span><span class="o">.</span><span class="n">content</span><span class="p">,</span> <span class="n">add_special_tokens</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">separator</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;token&#39;</span><span class="p">:</span> + <span class="n">separator_ids</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_id_list</span><span class="p">(</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">convert_tokens_to_ids</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">separator</span><span class="o">.</span><span class="n">content</span><span class="p">))</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">separator</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;token_id&#39;</span><span class="p">:</span> + <span class="n">separator_ids</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_id_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">separator</span><span class="o">.</span><span class="n">content</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Component type </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">separator</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="s2"> cannot be used as a separator.&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">separator_ids</span><span class="p">)</span> <span class="o">&gt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">last_assistant_msg</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Separator is longer than the last assistant message, please check.&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">last_assistant_msg</span><span class="p">[</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">separator_ids</span><span class="p">):]</span> <span class="o">==</span> <span class="n">separator_ids</span><span class="p">:</span> + <span class="n">last_assistant_msg</span> <span class="o">=</span> <span class="n">last_assistant_msg</span><span class="p">[:</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">separator_ids</span><span class="p">)]</span> + + <span class="n">encoded_pairs</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">encoded_pairs</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">last_assistant_msg</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">encoded_pairs</span></div> + + +<div class="viewcode-block" id="ConversationTemplate.add_special_starter"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.add_special_starter">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">add_special_starter</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">encoded_pairs</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]],</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">PreTrainedTokenizer</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">special_starter</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span><span class="p">:</span> + <span class="n">special_starter_ids</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">special_starter</span><span class="o">.</span><span class="n">content</span><span class="p">,</span> <span class="n">add_special_tokens</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">special_starter</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;token&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">special_starter</span><span class="o">.</span><span class="n">content</span> <span class="o">==</span> <span class="s1">&#39;bos_token&#39;</span><span class="p">:</span> + <span class="n">special_starter_ids</span> <span class="o">=</span> <span class="p">[</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">bos_token_id</span><span class="p">]</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">special_starter</span><span class="o">.</span><span class="n">content</span> <span class="o">==</span> <span class="s1">&#39;eos_token&#39;</span><span class="p">:</span> + <span class="n">special_starter_ids</span> <span class="o">=</span> <span class="p">[</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">special_starter_ids</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_id_list</span><span class="p">(</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">convert_tokens_to_ids</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">special_starter</span><span class="o">.</span><span class="n">content</span><span class="p">))</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">special_starter</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;token_id&#39;</span><span class="p">:</span> + <span class="n">special_starter_ids</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_id_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">special_starter</span><span class="o">.</span><span class="n">content</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Component type </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">special_starter</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="s2"> cannot be used as a special starter.&quot;</span><span class="p">)</span> + + <span class="n">encoded_pairs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">special_starter_ids</span> <span class="o">+</span> <span class="n">encoded_pairs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">encoded_pairs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span> + + <span class="k">return</span> <span class="n">encoded_pairs</span></div> + + +<div class="viewcode-block" id="ConversationTemplate.add_special_stopper"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.add_special_stopper">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">add_special_stopper</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">encoded_pairs</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]],</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">PreTrainedTokenizer</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">special_stopper</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span><span class="p">:</span> + <span class="n">special_stopper_ids</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">special_stopper</span><span class="o">.</span><span class="n">content</span><span class="p">,</span> <span class="n">add_special_tokens</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">special_stopper</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;token&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">special_stopper</span><span class="o">.</span><span class="n">content</span> <span class="o">==</span> <span class="s1">&#39;bos_token&#39;</span><span class="p">:</span> + <span class="n">special_stopper_ids</span> <span class="o">=</span> <span class="p">[</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">bos_token_id</span><span class="p">]</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">special_stopper</span><span class="o">.</span><span class="n">content</span> <span class="o">==</span> <span class="s1">&#39;eos_token&#39;</span><span class="p">:</span> + <span class="n">special_stopper_ids</span> <span class="o">=</span> <span class="p">[</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">special_stopper_ids</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_id_list</span><span class="p">(</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">convert_tokens_to_ids</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">special_stopper</span><span class="o">.</span><span class="n">content</span><span class="p">))</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">special_stopper</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;token_id&#39;</span><span class="p">:</span> + <span class="n">special_stopper_ids</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_id_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">special_stopper</span><span class="o">.</span><span class="n">content</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Component type </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">special_stopper</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="s2"> cannot be used as a special stopper.&quot;</span><span class="p">)</span> + + <span class="n">encoded_pairs</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">encoded_pairs</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">encoded_pairs</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">special_stopper_ids</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">encoded_pairs</span></div> + + +<div class="viewcode-block" id="ConversationTemplate._ensure_id_list"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.ConversationTemplate._ensure_id_list">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_ensure_id_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]])</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]:</span> +<span class="w"> </span><span class="sd">&#39;&#39;&#39;Make sure the object is a list of integers. Useful for handling token ids.</span> +<span class="sd"> &#39;&#39;&#39;</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span> + <span class="k">return</span> <span class="p">[</span><span class="n">obj</span><span class="p">]</span> + <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> + <span class="k">return</span> <span class="n">obj</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Object type </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span><span class="si">}</span><span class="s2"> is not supported yet.&quot;</span><span class="p">)</span></div> +</div> + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="ConversationTemplateForTool"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.ConversationTemplateForTool">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">ConversationTemplateForTool</span><span class="p">(</span><span class="n">ConversationTemplate</span><span class="p">):</span> +<div class="viewcode-block" id="ConversationTemplateForTool.encode_conversation"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.ConversationTemplateForTool.encode_conversation">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">encode_conversation</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">PreTrainedTokenizer</span><span class="p">,</span> + <span class="n">messages</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]],</span> + <span class="n">system</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tools</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]:</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&#39;&#39;&#39;</span> +<span class="sd"> Messages here should be guaranteed to be in pairs, with the first message being the user message and the second message being the system message.</span> +<span class="sd"> Data example: </span> +<span class="sd"> ```json</span> +<span class="sd"> {</span> +<span class="sd"> &quot;conversation_id&quot;: 2,</span> +<span class="sd"> &quot;system&quot;: &quot;sysinfo1&quot;,</span> +<span class="sd"> &quot;tools&quot;: [&quot;tool_1_desc&quot;],</span> +<span class="sd"> &quot;messages&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;user&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;hi&quot;</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;assistant&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;Hello!&quot;</span> +<span class="sd"> }</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> +<span class="sd"> ```</span> +<span class="sd"> &#39;&#39;&#39;</span> + <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">messages</span><span class="p">,</span> <span class="nb">list</span><span class="p">),</span> <span class="s2">&quot;Messages must be a list.&quot;</span> + + <span class="k">if</span> <span class="n">tools</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">tools</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">tools</span> <span class="o">=</span> <span class="s1">&#39;,&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">tools</span><span class="p">)</span> + <span class="c1"># logger.warning(&quot;Tools are not supported yet. Please include tools in the system message manually.&quot;)</span> + + <span class="k">if</span> <span class="n">system</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">system</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">system</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span><span class="s2">&quot;&quot;</span><span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_formatter</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Your dataset contains system message but no system formatter is provided. &quot;</span> + <span class="s2">&quot;Consider either providing a system formatter or removing system prompt from your dataset.&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">system</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> + <span class="n">encoded_pairs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode</span><span class="p">(</span><span class="n">tokenizer</span><span class="p">,</span> <span class="n">messages</span><span class="p">,</span> <span class="n">system</span><span class="p">,</span> <span class="n">tools</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="n">encoded_pairs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">post_process_pairs</span><span class="p">(</span><span class="n">encoded_pairs</span><span class="o">=</span><span class="n">encoded_pairs</span><span class="p">,</span> <span class="n">tokenizer</span><span class="o">=</span><span class="n">tokenizer</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">encoded_pairs</span></div> + + +<div class="viewcode-block" id="ConversationTemplateForTool._encode"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.ConversationTemplateForTool._encode">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_encode</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">PreTrainedTokenizer</span><span class="p">,</span> + <span class="n">messages</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]],</span> + <span class="n">system</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tools</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]:</span> + <span class="c1"># TODO: truncation according to model max length</span> + <span class="c1"># TODO: make sure the last few tokens are &quot;learnable&quot;, not masked with token_id = -100.</span> + + <span class="n">res_all</span> <span class="o">=</span> <span class="p">[]</span> + <span class="c1"># Concatenate the system and tools strings</span> + <span class="n">system</span> <span class="o">=</span> <span class="n">system</span> <span class="o">+</span> <span class="n">tools</span> + <span class="k">if</span> <span class="n">system</span><span class="p">:</span> + <span class="n">system_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">system</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">system_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">force_system</span> <span class="k">else</span> <span class="p">[]</span> + <span class="n">system_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">system_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + <span class="n">ls_for_save</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">messages</span><span class="p">),</span> <span class="mi">1</span><span class="p">):</span> + <span class="k">if</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">CONVERSATION_ROLE_NAMES</span><span class="p">[</span><span class="s1">&#39;user&#39;</span><span class="p">]:</span> + <span class="n">user_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">user_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">user_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">user_message</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">])</span> + <span class="n">user_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">user_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">user_encoded</span> <span class="o">=</span> <span class="n">system_encoded</span> <span class="o">+</span> <span class="n">user_encoded</span> + <span class="n">ls_for_save</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">user_encoded</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">CONVERSATION_ROLE_NAMES</span><span class="p">[</span><span class="s1">&#39;function&#39;</span><span class="p">]:</span> + <span class="n">function_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">function_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">function_message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">])</span> + <span class="n">function_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">function_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + <span class="n">ls_for_save</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">function_encoded</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">CONVERSATION_ROLE_NAMES</span><span class="p">[</span><span class="s1">&#39;observation&#39;</span><span class="p">]:</span> + <span class="n">observation_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">observation_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">observation_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">observation_message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">])</span> + <span class="n">observation_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">observation_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + <span class="n">ls_for_save</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">observation_encoded</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">CONVERSATION_ROLE_NAMES</span><span class="p">[</span><span class="s1">&#39;assistant&#39;</span><span class="p">]:</span> + <span class="n">assistant_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">assistant_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">assistant_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">assistant_message</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">])</span> + <span class="n">assistant_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">assistant_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + <span class="n">ls_for_save</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">assistant_encoded</span><span class="p">)</span> + <span class="c1"># res_tuple = (ls_for_save[0], ls_for_save[1], ls_for_save[2], ls_for_save[3])</span> + <span class="n">res_all</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="n">ls_for_save</span><span class="p">))</span> + <span class="n">ls_for_save</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">if</span> <span class="n">ls_for_save</span><span class="p">:</span> + <span class="n">res_all</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="n">ls_for_save</span><span class="p">))</span> + + <span class="k">return</span> <span class="n">res_all</span></div> + + +<div class="viewcode-block" id="ConversationTemplateForTool._encode_template"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.ConversationTemplateForTool._encode_template">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_encode_template</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">template</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">TemplateComponent</span><span class="p">],</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">PreTrainedTokenizer</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Encode template components into token ids.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> template : List[TemplateComponent]</span> +<span class="sd"> Formatted template components.</span> +<span class="sd"> tokenizer : PreTrainedTokenizer</span> +<span class="sd"> Tokenizer to convert tokens into token ids.</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> List[int]</span> +<span class="sd"> Encoded token ids.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">encoded_ids</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">component</span> <span class="ow">in</span> <span class="n">template</span><span class="p">:</span> + <span class="k">if</span> <span class="n">component</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">component</span><span class="o">.</span><span class="n">content</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Empty string component found in the template.&quot;</span><span class="p">)</span> + <span class="k">continue</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">encoded_ids</span> <span class="o">+=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">component</span><span class="o">.</span><span class="n">content</span><span class="p">,</span> <span class="n">add_special_tokens</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">component</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;token&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">component</span><span class="o">.</span><span class="n">content</span> <span class="o">==</span> <span class="s1">&#39;bos_token&#39;</span><span class="p">:</span> + <span class="n">encoded_ids</span> <span class="o">+=</span> <span class="p">[</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">bos_token_id</span><span class="p">]</span> + <span class="k">elif</span> <span class="n">component</span><span class="o">.</span><span class="n">content</span> <span class="o">==</span> <span class="s1">&#39;eos_token&#39;</span><span class="p">:</span> + <span class="n">encoded_ids</span> <span class="o">+=</span> <span class="p">[</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">eos_token_id</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">encoded_ids</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_id_list</span><span class="p">(</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">convert_tokens_to_ids</span><span class="p">(</span><span class="n">component</span><span class="o">.</span><span class="n">content</span><span class="p">))</span> + <span class="k">elif</span> <span class="n">component</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;token_id&#39;</span><span class="p">:</span> + <span class="n">encoded_ids</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_id_list</span><span class="p">(</span><span class="n">component</span><span class="o">.</span><span class="n">content</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Component type </span><span class="si">{</span><span class="n">component</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="s2"> is not supported yet.&quot;</span><span class="p">)</span> + <span class="k">return</span> <span class="n">encoded_ids</span></div> +</div> + + + +<div class="viewcode-block" id="EMPTY_TEMPLATE"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.EMPTY_TEMPLATE">[docs]</a> +<span class="n">EMPTY_TEMPLATE</span> <span class="o">=</span> <span class="n">ConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;empty&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;bos_token&#39;</span><span class="p">),</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;{{content}}&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;{{content}}&#39;</span><span class="p">),</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;eos_token&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">)</span> +<span class="p">)</span></div> + + + +<div class="viewcode-block" id="EMPTY_NO_SPECIAL_TOKENS_TEMPLATE"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.base.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE">[docs]</a> +<span class="n">EMPTY_NO_SPECIAL_TOKENS_TEMPLATE</span> <span class="o">=</span> <span class="n">ConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;empty_no_special_tokens&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;{{content}}&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;{{content}}&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">)</span> +<span class="p">)</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/conversation_template/chatglm.html b/_modules/lmflow/utils/conversation_template/chatglm.html new file mode 100644 index 000000000..894899c3d --- /dev/null +++ b/_modules/lmflow/utils/conversation_template/chatglm.html @@ -0,0 +1,472 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.conversation_template.chatglm &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/conversation_template/chatglm';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../conversation_template.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.chatglm</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.conversation_template.chatglm</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">StringFormatter</span><span class="p">,</span> <span class="n">TemplateComponent</span><span class="p">,</span> <span class="n">ConversationTemplate</span> + + +<div class="viewcode-block" id="CHATGLM3_TEMPLATE"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.chatglm.CHATGLM3_TEMPLATE">[docs]</a> +<span class="n">CHATGLM3_TEMPLATE</span> <span class="o">=</span> <span class="n">ConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;chatglm3&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|user|&gt;</span><span class="se">\n</span><span class="s1"> {{content}}&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|assistant|&gt;</span><span class="se">\n</span><span class="s1"> {{content}}&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|system|&gt;</span><span class="se">\n</span><span class="s1"> {{content}}&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">special_starter</span><span class="o">=</span><span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;[gMASK]sop&#39;</span><span class="p">)</span> +<span class="p">)</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/conversation_template/chatml.html b/_modules/lmflow/utils/conversation_template/chatml.html new file mode 100644 index 000000000..7436fff6d --- /dev/null +++ b/_modules/lmflow/utils/conversation_template/chatml.html @@ -0,0 +1,471 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.conversation_template.chatml &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/conversation_template/chatml';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../conversation_template.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.chatml</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.conversation_template.chatml</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">StringFormatter</span><span class="p">,</span> <span class="n">TemplateComponent</span><span class="p">,</span> <span class="n">ConversationTemplate</span> + + +<div class="viewcode-block" id="CHATML_TEMPLATE"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.chatml.CHATML_TEMPLATE">[docs]</a> +<span class="n">CHATML_TEMPLATE</span> <span class="o">=</span> <span class="n">ConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;chatml&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;user</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;assistant</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;system</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">)</span> +<span class="p">)</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/conversation_template/deepseek.html b/_modules/lmflow/utils/conversation_template/deepseek.html new file mode 100644 index 000000000..666c5dbc8 --- /dev/null +++ b/_modules/lmflow/utils/conversation_template/deepseek.html @@ -0,0 +1,473 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.conversation_template.deepseek &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/conversation_template/deepseek';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../conversation_template.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.deepseek</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.conversation_template.deepseek</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">StringFormatter</span><span class="p">,</span> <span class="n">TemplateComponent</span><span class="p">,</span> <span class="n">ConversationTemplate</span> + + +<div class="viewcode-block" id="DEEPSEEK_TEMPLATE"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.deepseek.DEEPSEEK_TEMPLATE">[docs]</a> +<span class="n">DEEPSEEK_TEMPLATE</span> <span class="o">=</span> <span class="n">ConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;deepseek&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;User: {{content}}</span><span class="se">\n\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;Assistant: {{content}}&#39;</span><span class="p">),</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;eos_token&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;{{content}}</span><span class="se">\n\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">special_starter</span><span class="o">=</span><span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;bos_token&#39;</span><span class="p">)</span> +<span class="p">)</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/conversation_template/gemma.html b/_modules/lmflow/utils/conversation_template/gemma.html new file mode 100644 index 000000000..6dead8160 --- /dev/null +++ b/_modules/lmflow/utils/conversation_template/gemma.html @@ -0,0 +1,501 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.conversation_template.gemma &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/conversation_template/gemma';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../conversation_template.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.gemma</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.conversation_template.gemma</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">dataclasses</span><span class="w"> </span><span class="kn">import</span> <span class="n">dataclass</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">StringFormatter</span><span class="p">,</span> <span class="n">TemplateComponent</span><span class="p">,</span> <span class="n">ConversationTemplate</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/gemma/index.html#lmflow.utils.conversation_template.gemma.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<span class="nd">@dataclass</span> +<div class="viewcode-block" id="GemmaConversationTemplate"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/gemma/index.html#lmflow.utils.conversation_template.gemma.GemmaConversationTemplate">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">GemmaConversationTemplate</span><span class="p">(</span><span class="n">ConversationTemplate</span><span class="p">):</span> +<div class="viewcode-block" id="GemmaConversationTemplate.encode_conversation"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/gemma/index.html#lmflow.utils.conversation_template.gemma.GemmaConversationTemplate.encode_conversation">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">encode_conversation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;system&#39;</span><span class="p">):</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s1">&#39;As of now, Gemma does not support system messages officially. &#39;</span> + <span class="s1">&#39;ConversationTemplate will add your system messages right after &#39;</span> + <span class="s1">&#39;the bos token and before the user message without any special formatting. &#39;</span> + <span class="s1">&#39;For more details, please refer to the [official template]&#39;</span> + <span class="s1">&#39;(https://huggingface.co/google/gemma-1.1-2b-it/blob/bf4924f313df5166dee1467161e886e55f2eb4d4/tokenizer_config.json#L1507).&#39;</span> + <span class="p">)</span> + <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">encode_conversation</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div> +</div> + + + +<div class="viewcode-block" id="GEMMA_TEMPLATE"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.gemma.GEMMA_TEMPLATE">[docs]</a> +<span class="n">GEMMA_TEMPLATE</span> <span class="o">=</span> <span class="n">GemmaConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;gemma&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;start_of_turn&gt;user</span><span class="se">\n</span><span class="s1">{{content}}&lt;end_of_turn&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;start_of_turn&gt;model</span><span class="se">\n</span><span class="s1">{{content}}&lt;end_of_turn&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;{{content}}&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">special_starter</span><span class="o">=</span><span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;bos_token&#39;</span><span class="p">)</span> +<span class="p">)</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/conversation_template/hymba.html b/_modules/lmflow/utils/conversation_template/hymba.html new file mode 100644 index 000000000..9e7402e89 --- /dev/null +++ b/_modules/lmflow/utils/conversation_template/hymba.html @@ -0,0 +1,576 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.conversation_template.hymba &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/conversation_template/hymba';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../conversation_template.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.hymba</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.conversation_template.hymba</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">StringFormatter</span><span class="p">,</span> <span class="n">TemplateComponent</span><span class="p">,</span> <span class="n">ConversationTemplateForTool</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Set</span><span class="p">,</span> <span class="n">Sequence</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">PreTrainedTokenizer</span> + +<span class="c1"># NOTE: &#39;contexts&#39; are not used in sft</span> +<span class="c1"># {{&#39;&lt;extra_id_0&gt;System&#39;}}</span> +<span class="c1"># {% for message in messages %}</span> +<span class="c1"># {% if message[&#39;role&#39;] == &#39;system&#39; %}</span> +<span class="c1"># {{&#39;\n&#39; + message[&#39;content&#39;].strip()}}</span> +<span class="c1"># {% if tools %}</span> +<span class="c1"># {{&#39;\n&#39;}}</span> +<span class="c1"># {% endif %}</span> +<span class="c1"># {% endif %}</span> +<span class="c1"># {% endfor %}</span> +<span class="c1"># {% if tools %}</span> +<span class="c1"># {% for tool in tools %}</span> +<span class="c1"># {{ &#39;\n&lt;tool&gt; &#39; + tool|tojson + &#39; &lt;/tool&gt;&#39; }}</span> +<span class="c1"># {% endfor %}</span> +<span class="c1"># {% endif %}</span> +<span class="c1"># {{&#39;\n\n&#39;}}</span> +<span class="c1"># {% for message in messages %}</span> +<span class="c1"># {% if message[&#39;role&#39;] == &#39;user&#39; %}</span> +<span class="c1"># {{ &#39;&lt;extra_id_1&gt;User\n&#39; + message[&#39;content&#39;].strip() + &#39;\n&#39; }}</span> +<span class="c1"># {% elif message[&#39;role&#39;] == &#39;assistant&#39; %}</span> +<span class="c1"># {{ &#39;&lt;extra_id_1&gt;Assistant\n&#39; + message[&#39;content&#39;].strip() + &#39;\n&#39; }}</span> +<span class="c1"># {% elif message[&#39;role&#39;] == &#39;tool&#39; %}</span> +<span class="c1"># {{ &#39;&lt;extra_id_1&gt;Tool\n&#39; + message[&#39;content&#39;].strip() + &#39;\n&#39; }}</span> +<span class="c1"># {% endif %}</span> +<span class="c1"># {% endfor %}</span> +<span class="c1"># {%- if add_generation_prompt %}</span> +<span class="c1"># {{&#39;&lt;extra_id_1&gt;Assistant\n&#39;}}</span> +<span class="c1"># {%- endif %}</span> + + +<div class="viewcode-block" id="HymbaConversationTemplate"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/hymba/index.html#lmflow.utils.conversation_template.hymba.HymbaConversationTemplate">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">HymbaConversationTemplate</span><span class="p">(</span><span class="n">ConversationTemplateForTool</span><span class="p">):</span> +<div class="viewcode-block" id="HymbaConversationTemplate.encode_conversation"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/hymba/index.html#lmflow.utils.conversation_template.hymba.HymbaConversationTemplate.encode_conversation">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">encode_conversation</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">PreTrainedTokenizer</span><span class="p">,</span> + <span class="n">messages</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]],</span> + <span class="n">system</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tools</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]:</span> +<span class="w"> </span><span class="sa">r</span><span class="sd">&#39;&#39;&#39;</span> +<span class="sd"> Messages here should be guaranteed to be in pairs, with the first message being the user message and the second message being the system message.</span> +<span class="sd"> Data example: </span> +<span class="sd"> ```json</span> +<span class="sd"> {</span> +<span class="sd"> &quot;conversation_id&quot;: 2,</span> +<span class="sd"> &quot;system&quot;: &quot;sysinfo1&quot;,</span> +<span class="sd"> &quot;tools&quot;: [&quot;tool_1_desc&quot;],</span> +<span class="sd"> &quot;messages&quot;: [</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;user&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;hi&quot;</span> +<span class="sd"> },</span> +<span class="sd"> {</span> +<span class="sd"> &quot;role&quot;: &quot;assistant&quot;,</span> +<span class="sd"> &quot;content&quot;: &quot;Hello!&quot;</span> +<span class="sd"> }</span> +<span class="sd"> ]</span> +<span class="sd"> }</span> +<span class="sd"> ```</span> +<span class="sd"> &#39;&#39;&#39;</span> + <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">messages</span><span class="p">,</span> <span class="nb">list</span><span class="p">),</span> <span class="s2">&quot;Messages must be a list.&quot;</span> + + <span class="n">tools_out</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> + <span class="k">if</span> <span class="n">tools</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">for</span> <span class="n">tool</span> <span class="ow">in</span> <span class="n">tools</span><span class="p">:</span> + <span class="n">tools_out</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&lt;tool&gt; &quot;</span> <span class="o">+</span> <span class="n">tool</span> <span class="o">+</span> <span class="s2">&quot; &lt;/tool&gt;&quot;</span> + + <span class="k">if</span> <span class="n">system</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">system</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">system</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span><span class="s2">&quot;&quot;</span><span class="p">):</span> <span class="c1"># has actual content</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_formatter</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Your dataset contains system message but no system formatter is provided. &quot;</span> + <span class="s2">&quot;Consider either providing a system formatter or removing system prompt from your dataset.&quot;</span><span class="p">)</span> + <span class="n">system</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">system</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">system</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> + <span class="n">encoded_pairs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode</span><span class="p">(</span><span class="n">tokenizer</span><span class="p">,</span> <span class="n">messages</span><span class="p">,</span> <span class="n">system</span><span class="p">,</span> <span class="n">tools_out</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <span class="n">encoded_pairs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">post_process_pairs</span><span class="p">(</span><span class="n">encoded_pairs</span><span class="o">=</span><span class="n">encoded_pairs</span><span class="p">,</span> <span class="n">tokenizer</span><span class="o">=</span><span class="n">tokenizer</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">encoded_pairs</span> </div> +</div> + + + +<div class="viewcode-block" id="HYMBA_TEMPLATE"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.hymba.HYMBA_TEMPLATE">[docs]</a> +<span class="n">HYMBA_TEMPLATE</span> <span class="o">=</span> <span class="n">HymbaConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;hymba&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;extra_id_1&gt;User</span><span class="se">\n</span><span class="s1">{{content}}</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;extra_id_1&gt;Assistant</span><span class="se">\n</span><span class="s1">{{content}}</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">function_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;extra_id_1&gt;Assistant</span><span class="se">\n</span><span class="s1">{{content}}</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">observation_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;extra_id_1&gt;Tool</span><span class="se">\n</span><span class="s1">{{content}}</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;extra_id_0&gt;System{{content}}</span><span class="se">\n\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">separator</span><span class="o">=</span><span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token_id&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="mi">13</span><span class="p">),</span> + <span class="n">remove_last_sep</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">special_stopper</span><span class="o">=</span><span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;eos_token&#39;</span><span class="p">),</span> + <span class="n">force_system</span><span class="o">=</span><span class="kc">True</span> +<span class="p">)</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/conversation_template/internlm.html b/_modules/lmflow/utils/conversation_template/internlm.html new file mode 100644 index 000000000..2aea84a12 --- /dev/null +++ b/_modules/lmflow/utils/conversation_template/internlm.html @@ -0,0 +1,472 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.conversation_template.internlm &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/conversation_template/internlm';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../conversation_template.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.internlm</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.conversation_template.internlm</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">StringFormatter</span><span class="p">,</span> <span class="n">TemplateComponent</span><span class="p">,</span> <span class="n">ConversationTemplate</span> + + +<div class="viewcode-block" id="INTERNLM2_TEMPLATE"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/internlm/index.html#lmflow.utils.conversation_template.INTERNLM2_TEMPLATE">[docs]</a> +<span class="n">INTERNLM2_TEMPLATE</span> <span class="o">=</span> <span class="n">ConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;internlm2&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;user</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;assistant</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;system</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">special_starter</span><span class="o">=</span><span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;bos_token&#39;</span><span class="p">)</span> +<span class="p">)</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/conversation_template/llama.html b/_modules/lmflow/utils/conversation_template/llama.html new file mode 100644 index 000000000..8383af531 --- /dev/null +++ b/_modules/lmflow/utils/conversation_template/llama.html @@ -0,0 +1,664 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.conversation_template.llama &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/conversation_template/llama';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../conversation_template.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.llama</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.conversation_template.llama</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Set</span><span class="p">,</span> <span class="n">Sequence</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">PreTrainedTokenizer</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">StringFormatter</span><span class="p">,</span> <span class="n">TemplateComponent</span><span class="p">,</span> <span class="n">ConversationTemplate</span><span class="p">,</span> <span class="n">ConversationTemplateForTool</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.utils.constants</span><span class="w"> </span><span class="kn">import</span> <span class="n">CONVERSATION_ROLE_NAMES</span> + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="Llama2ConversationTemplate"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.Llama2ConversationTemplate">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Llama2ConversationTemplate</span><span class="p">(</span><span class="n">ConversationTemplate</span><span class="p">):</span> +<div class="viewcode-block" id="Llama2ConversationTemplate._encode"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.Llama2ConversationTemplate._encode">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_encode</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">PreTrainedTokenizer</span><span class="p">,</span> + <span class="n">messages</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]],</span> + <span class="n">system</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tools</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]:</span> + <span class="k">if</span> <span class="n">tools</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Formatted tools are not supported in Llama2, thus tools will be ignored. &quot;</span> + <span class="s2">&quot;If this is intended, please include tools in the system message manually.&quot;</span><span class="p">)</span> + + <span class="n">res_all</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="n">system_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">system</span><span class="p">)</span> <span class="k">if</span> <span class="n">system</span> <span class="k">else</span> <span class="p">[]</span> + <span class="n">system_formatted_text</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">component</span><span class="o">.</span><span class="n">content</span> <span class="k">for</span> <span class="n">component</span> <span class="ow">in</span> <span class="n">system_formatted</span> <span class="k">if</span> <span class="n">component</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span><span class="p">])</span> <span class="c1"># HACK</span> + + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">messages</span><span class="p">),</span> <span class="mi">2</span><span class="p">):</span> + <span class="n">user_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">assistant_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> + + <span class="n">user_content</span> <span class="o">=</span> <span class="n">system_formatted_text</span> <span class="o">+</span> <span class="n">user_message</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span> <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">else</span> <span class="n">user_message</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">]</span> + <span class="n">user_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">user_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">user_content</span><span class="p">)</span> + <span class="n">assistant_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">assistant_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">assistant_message</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">])</span> + + <span class="n">user_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">user_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + <span class="n">assistant_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">assistant_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + + <span class="n">res_all</span><span class="o">.</span><span class="n">append</span><span class="p">((</span> + <span class="n">user_encoded</span><span class="p">,</span> + <span class="n">assistant_encoded</span> + <span class="p">))</span> + + <span class="k">return</span> <span class="n">res_all</span></div> +</div> + + +<div class="viewcode-block" id="Llama2ConversationTemplateForTool"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.Llama2ConversationTemplateForTool">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Llama2ConversationTemplateForTool</span><span class="p">(</span><span class="n">Llama2ConversationTemplate</span><span class="p">):</span> +<div class="viewcode-block" id="Llama2ConversationTemplateForTool._encode"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.Llama2ConversationTemplateForTool._encode">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_encode</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">PreTrainedTokenizer</span><span class="p">,</span> + <span class="n">messages</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]],</span> + <span class="n">system</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tools</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]:</span> + <span class="k">if</span> <span class="n">tools</span><span class="p">:</span> + <span class="c1"># logger.warning(&quot;Formatted tools are not supported in Llama2, thus tools will be ignored. &quot;</span> + <span class="c1"># &quot;If this is intended, please include tools in the system message manually.&quot;)</span> + <span class="n">system</span> <span class="o">=</span> <span class="n">system</span> <span class="o">+</span> <span class="n">tools</span> + <span class="n">res_all</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">system_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">system</span><span class="p">)</span> <span class="k">if</span> <span class="n">system</span> <span class="k">else</span> <span class="p">[]</span> + <span class="n">system_formatted_text</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">component</span><span class="o">.</span><span class="n">content</span> <span class="k">for</span> <span class="n">component</span> <span class="ow">in</span> <span class="n">system_formatted</span> <span class="k">if</span> <span class="n">component</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;string&#39;</span><span class="p">])</span> <span class="c1"># HACK</span> + <span class="n">ls_for_save</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">messages</span><span class="p">),</span> <span class="mi">1</span><span class="p">):</span> + <span class="k">if</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">CONVERSATION_ROLE_NAMES</span><span class="p">[</span><span class="s1">&#39;user&#39;</span><span class="p">]:</span> + <span class="n">user_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">user_content</span> <span class="o">=</span> <span class="n">system_formatted_text</span> <span class="o">+</span> <span class="n">user_message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">user_content</span> <span class="o">=</span> <span class="n">user_message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> + <span class="n">user_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">user_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">user_content</span><span class="p">)</span> + <span class="n">user_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">user_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + <span class="n">ls_for_save</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">user_encoded</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">CONVERSATION_ROLE_NAMES</span><span class="p">[</span><span class="s1">&#39;function&#39;</span><span class="p">]:</span> + <span class="n">function_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">function_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">assistant_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">function_message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">])</span> + <span class="n">function_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">function_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + <span class="n">ls_for_save</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">function_encoded</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">CONVERSATION_ROLE_NAMES</span><span class="p">[</span><span class="s1">&#39;observation&#39;</span><span class="p">]:</span> + <span class="n">observation_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">observation_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">user_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">observation_message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">])</span> + <span class="n">observation_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">observation_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + <span class="n">ls_for_save</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">observation_encoded</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">CONVERSATION_ROLE_NAMES</span><span class="p">[</span><span class="s1">&#39;assistant&#39;</span><span class="p">]:</span> + <span class="n">assistant_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">assistant_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">assistant_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">assistant_message</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">])</span> + <span class="n">assistant_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">assistant_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + <span class="n">ls_for_save</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">assistant_encoded</span><span class="p">)</span> + <span class="c1"># res_tuple = (ls_for_save[0], ls_for_save[1], ls_for_save[2], ls_for_save[3])</span> + <span class="n">res_all</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="n">ls_for_save</span><span class="p">))</span> + <span class="n">ls_for_save</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">if</span> <span class="n">ls_for_save</span><span class="p">:</span> + <span class="n">res_all</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="n">ls_for_save</span><span class="p">))</span> + + <span class="k">return</span> <span class="n">res_all</span></div> +</div> + + +<div class="viewcode-block" id="LLAMA3_TEMPLATE"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.LLAMA3_TEMPLATE">[docs]</a> +<span class="n">LLAMA3_TEMPLATE</span> <span class="o">=</span> <span class="n">ConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;llama3&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;</span><span class="se">\n\n</span><span class="s1">{{content}}&lt;|eot_id|&gt;&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;</span><span class="se">\n\n</span><span class="s1">{{content}}&lt;|eot_id|&gt;&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|start_header_id|&gt;system&lt;|end_header_id|&gt;</span><span class="se">\n\n</span><span class="s1">{{content}}&lt;|eot_id|&gt;&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">special_starter</span><span class="o">=</span><span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;bos_token&#39;</span><span class="p">)</span> +<span class="p">)</span></div> + + +<div class="viewcode-block" id="LLAMA3_TEMPLATE_FOR_TOOL"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.LLAMA3_TEMPLATE_FOR_TOOL">[docs]</a> +<span class="n">LLAMA3_TEMPLATE_FOR_TOOL</span> <span class="o">=</span> <span class="n">ConversationTemplateForTool</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;llama3_for_tool&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;</span><span class="se">\n\n</span><span class="s1">{{content}}&lt;|eot_id|&gt;&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">function_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;</span><span class="se">\n\n</span><span class="s1">{{content}}&lt;|eot_id|&gt;&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">observation_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|start_header_id|&gt;tool&lt;|end_header_id|&gt;</span><span class="se">\n\n</span><span class="s1">{{content}}&lt;|eot_id|&gt;&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;</span><span class="se">\n\n</span><span class="s1">{{content}}&lt;|eot_id|&gt;&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|start_header_id|&gt;system&lt;|end_header_id|&gt;</span><span class="se">\n\n</span><span class="s1">{{content}}&lt;|eot_id|&gt;&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">special_starter</span><span class="o">=</span><span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;bos_token&#39;</span><span class="p">)</span> +<span class="p">)</span></div> + + + +<div class="viewcode-block" id="LLAMA2_TEMPLATE"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.LLAMA2_TEMPLATE">[docs]</a> +<span class="n">LLAMA2_TEMPLATE</span> <span class="o">=</span> <span class="n">Llama2ConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;llama2&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;bos_token&#39;</span><span class="p">),</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;[INST] {{content}} [/INST]&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;{{content}}&#39;</span><span class="p">),</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;eos_token&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;&lt;SYS&gt;&gt;</span><span class="se">\n</span><span class="s1">{{content}}</span><span class="se">\n</span><span class="s1">&lt;&lt;/SYS&gt;&gt;</span><span class="se">\n\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">)</span> +<span class="p">)</span></div> + + +<div class="viewcode-block" id="LLAMA2_TEMPLATE_FOR_TOOL"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.LLAMA2_TEMPLATE_FOR_TOOL">[docs]</a> +<span class="n">LLAMA2_TEMPLATE_FOR_TOOL</span> <span class="o">=</span> <span class="n">Llama2ConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;llama2_for_tool&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;bos_token&#39;</span><span class="p">),</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;[INST] {{content}} [/INST]&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;{{content}}&#39;</span><span class="p">),</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;eos_token&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;&lt;SYS&gt;&gt;</span><span class="se">\n</span><span class="s1">{{content}}</span><span class="se">\n</span><span class="s1">&lt;&lt;/SYS&gt;&gt;</span><span class="se">\n\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">)</span> +<span class="p">)</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/conversation_template/phi.html b/_modules/lmflow/utils/conversation_template/phi.html new file mode 100644 index 000000000..a44e3ed71 --- /dev/null +++ b/_modules/lmflow/utils/conversation_template/phi.html @@ -0,0 +1,473 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.conversation_template.phi &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/conversation_template/phi';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../conversation_template.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.phi</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.conversation_template.phi</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">StringFormatter</span><span class="p">,</span> <span class="n">TemplateComponent</span><span class="p">,</span> <span class="n">ConversationTemplate</span> + + +<div class="viewcode-block" id="PHI3_TEMPLATE"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/phi/index.html#lmflow.utils.conversation_template.PHI3_TEMPLATE">[docs]</a> +<span class="n">PHI3_TEMPLATE</span> <span class="o">=</span> <span class="n">ConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;phi3&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|user|&gt;</span><span class="se">\n</span><span class="s1">{{content}}&lt;|end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|assistant|&gt;</span><span class="se">\n</span><span class="s1">{{content}}&lt;|end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|system|&gt;</span><span class="se">\n</span><span class="s1">{{content}}&lt;|end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">special_starter</span><span class="o">=</span><span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;bos_token&#39;</span><span class="p">),</span> + <span class="n">special_stopper</span><span class="o">=</span><span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;eos_token&#39;</span><span class="p">)</span> +<span class="p">)</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/conversation_template/qwen.html b/_modules/lmflow/utils/conversation_template/qwen.html new file mode 100644 index 000000000..3c1943cb5 --- /dev/null +++ b/_modules/lmflow/utils/conversation_template/qwen.html @@ -0,0 +1,505 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.conversation_template.qwen &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/conversation_template/qwen';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../conversation_template.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.qwen</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.conversation_template.qwen</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">StringFormatter</span><span class="p">,</span> <span class="n">TemplateComponent</span><span class="p">,</span> <span class="n">ConversationTemplate</span><span class="p">,</span> <span class="n">ConversationTemplateForTool</span> + + +<div class="viewcode-block" id="QWEN2_TEMPLATE"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/qwen/index.html#lmflow.utils.conversation_template.QWEN2_TEMPLATE">[docs]</a> +<span class="n">QWEN2_TEMPLATE</span> <span class="o">=</span> <span class="n">ConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;qwen2&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;user</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;assistant</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;system</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">separator</span><span class="o">=</span><span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> +<span class="p">)</span></div> + + +<div class="viewcode-block" id="QWEN2_TEMPLATE_FOR_TOOL"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/qwen/index.html#lmflow.utils.conversation_template.QWEN2_TEMPLATE_FOR_TOOL">[docs]</a> +<span class="n">QWEN2_TEMPLATE_FOR_TOOL</span> <span class="o">=</span> <span class="n">ConversationTemplateForTool</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;qwen2_for_tool&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;user</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">function_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;assistant</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">observation_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;tool</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;assistant</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;system</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">separator</span><span class="o">=</span><span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> +<span class="p">)</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/conversation_template/yi.html b/_modules/lmflow/utils/conversation_template/yi.html new file mode 100644 index 000000000..b275bce1b --- /dev/null +++ b/_modules/lmflow/utils/conversation_template/yi.html @@ -0,0 +1,471 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.conversation_template.yi &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/conversation_template/yi';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../conversation_template.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.yi</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.conversation_template.yi</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">StringFormatter</span><span class="p">,</span> <span class="n">TemplateComponent</span><span class="p">,</span> <span class="n">ConversationTemplate</span> + + +<div class="viewcode-block" id="YI1_5_TEMPLATE"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/yi/index.html#lmflow.utils.conversation_template.YI1_5_TEMPLATE">[docs]</a> +<span class="n">YI1_5_TEMPLATE</span> <span class="o">=</span> <span class="n">ConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;yi1_5&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;user</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|im_start|&gt;assistant</span><span class="se">\n</span><span class="s1">{{content}}&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;{{content}}&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">)</span> +<span class="p">)</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/conversation_template/zephyr.html b/_modules/lmflow/utils/conversation_template/zephyr.html new file mode 100644 index 000000000..e96be2f4b --- /dev/null +++ b/_modules/lmflow/utils/conversation_template/zephyr.html @@ -0,0 +1,529 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.conversation_template.zephyr &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/conversation_template/zephyr';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../conversation_template.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.zephyr</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.conversation_template.zephyr</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Set</span><span class="p">,</span> <span class="n">Sequence</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">PreTrainedTokenizer</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">StringFormatter</span><span class="p">,</span> <span class="n">TemplateComponent</span><span class="p">,</span> <span class="n">ConversationTemplate</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/zephyr/index.html#lmflow.utils.conversation_template.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="ZephyrConversationTemplate"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/zephyr/index.html#lmflow.utils.conversation_template.ZephyrConversationTemplate">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">ZephyrConversationTemplate</span><span class="p">(</span><span class="n">ConversationTemplate</span><span class="p">):</span> +<div class="viewcode-block" id="ZephyrConversationTemplate._encode"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/zephyr/index.html#lmflow.utils.conversation_template.ZephyrConversationTemplate._encode">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">_encode</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">tokenizer</span><span class="p">:</span> <span class="n">PreTrainedTokenizer</span><span class="p">,</span> + <span class="n">messages</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]],</span> + <span class="n">system</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">tools</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="o">**</span><span class="n">kwargs</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]:</span> + <span class="c1"># TODO: truncation according to model max length</span> + <span class="c1"># TODO: make sure the last few tokens are &quot;learnable&quot;, not masked with token_id = -100.</span> + + <span class="n">res_all</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="n">system_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">system</span><span class="p">)</span> <span class="k">if</span> <span class="n">system</span> <span class="k">else</span> <span class="p">[]</span> + <span class="n">system_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">system_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">messages</span><span class="p">),</span> <span class="mi">2</span><span class="p">):</span> + <span class="n">user_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> + <span class="n">assistant_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> + + <span class="n">user_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">user_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">user_message</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">])</span> + <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">system</span><span class="p">:</span> + <span class="c1"># when system is not provided, the first user message should not start with a newline</span> + <span class="n">user_formatted</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">content</span> <span class="o">=</span> <span class="n">user_formatted</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">content</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> + <span class="n">assistant_formatted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">assistant_formatter</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">assistant_message</span><span class="p">[</span><span class="s2">&quot;content&quot;</span><span class="p">])</span> + + <span class="n">user_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">user_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + <span class="n">assistant_encoded</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_template</span><span class="p">(</span><span class="n">assistant_formatted</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">)</span> + + <span class="n">res_all</span><span class="o">.</span><span class="n">append</span><span class="p">((</span> + <span class="n">system_encoded</span> <span class="o">+</span> <span class="n">user_encoded</span> <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">else</span> <span class="n">user_encoded</span><span class="p">,</span> + <span class="n">assistant_encoded</span> + <span class="p">))</span> + + <span class="k">return</span> <span class="n">res_all</span></div> +</div> + + + +<div class="viewcode-block" id="ZEPHYR_TEMPLATE"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/conversation_template/zephyr/index.html#lmflow.utils.conversation_template.ZEPHYR_TEMPLATE">[docs]</a> +<span class="n">ZEPHYR_TEMPLATE</span> <span class="o">=</span> <span class="n">ZephyrConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;zephyr&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&lt;|user|&gt;</span><span class="se">\n</span><span class="s1">{{content}}&#39;</span><span class="p">),</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;eos_token&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&lt;|assistant|&gt;</span><span class="se">\n</span><span class="s1">{{content}}&#39;</span><span class="p">),</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;eos_token&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;&lt;|system|&gt;</span><span class="se">\n</span><span class="s1">{{content}}&#39;</span><span class="p">),</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;eos_token&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">)</span> +<span class="p">)</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/data_utils.html b/_modules/lmflow/utils/data_utils.html new file mode 100644 index 000000000..ae2cb3959 --- /dev/null +++ b/_modules/lmflow/utils/data_utils.html @@ -0,0 +1,711 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.data_utils &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/data_utils';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.data_utils</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.data_utils</h1><div class="highlight"><pre> +<span></span><span class="sd">&quot;&quot;&quot;The program includes several functions: setting a random seed, </span> +<span class="sd">loading data from a JSON file, batching data, and extracting answers from generated text.</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">random</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">json</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">re</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Union</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">TypedDict</span><span class="p">,</span> <span class="n">Dict</span> + + +<div class="viewcode-block" id="set_random_seed"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.set_random_seed">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">set_random_seed</span><span class="p">(</span><span class="n">seed</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Set the random seed for `random`, `numpy`, `torch`, `torch.cuda`.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> seed : int</span> +<span class="sd"> The default seed.</span> +<span class="sd"> </span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">random</span><span class="o">.</span><span class="n">seed</span><span class="p">(</span><span class="n">seed</span><span class="p">)</span> + <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">seed</span><span class="p">(</span><span class="n">seed</span><span class="p">)</span> + <span class="n">torch</span><span class="o">.</span><span class="n">manual_seed</span><span class="p">(</span><span class="n">seed</span><span class="p">)</span> + <span class="k">if</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">is_available</span><span class="p">():</span> + <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">manual_seed_all</span><span class="p">(</span><span class="n">seed</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="load_data"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.load_data">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">load_data</span><span class="p">(</span><span class="n">file_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Load data with file name.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> file_name : str.</span> +<span class="sd"> The dataset file name.</span> +<span class="sd"> </span> +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> inputs : list.</span> +<span class="sd"> The input texts of the dataset.</span> +<span class="sd"> outputs : list.</span> +<span class="sd"> The output texts file datasets. </span> +<span class="sd"> len : int.</span> +<span class="sd"> The length of the dataset.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">outputs</span> <span class="o">=</span> <span class="p">[]</span> + <span class="nb">type</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_name</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">&#39;utf-8&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="n">json_data</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">f</span><span class="p">)</span> + <span class="nb">type</span> <span class="o">=</span> <span class="n">json_data</span><span class="p">[</span><span class="s2">&quot;type&quot;</span><span class="p">]</span> + <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">json_data</span><span class="p">[</span><span class="s2">&quot;instances&quot;</span><span class="p">]:</span> + <span class="n">inputs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">line</span><span class="p">[</span><span class="s2">&quot;input&quot;</span><span class="p">])</span> + <span class="n">outputs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">line</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">])</span> + + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;load dataset </span><span class="si">{</span><span class="n">file_name</span><span class="si">}</span><span class="s2"> success.</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Type : </span><span class="si">{</span><span class="nb">type</span><span class="si">}</span><span class="s2">, datasize : </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">outputs</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">inputs</span><span class="p">,</span> <span class="n">outputs</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">outputs</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="batchlize"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.batchlize">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">batchlize</span><span class="p">(</span><span class="n">examples</span><span class="p">:</span> <span class="nb">list</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">random_shuffle</span><span class="p">:</span> <span class="nb">bool</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Convert examples to a dataloader.</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> examples : list.</span> +<span class="sd"> Data list.</span> +<span class="sd"> batch_size : int.</span> + +<span class="sd"> random_shuffle : bool</span> +<span class="sd"> If true, the dataloader shuffle the training data.</span> +<span class="sd"> </span> +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> dataloader:</span> +<span class="sd"> Dataloader with batch generator.</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">dataloader</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">examples</span><span class="p">)</span> + <span class="k">if</span> <span class="p">(</span><span class="n">random_shuffle</span><span class="p">):</span> + <span class="n">random</span><span class="o">.</span><span class="n">shuffle</span><span class="p">(</span><span class="n">examples</span><span class="p">)</span> + <span class="k">while</span> <span class="n">size</span> <span class="o">&lt;</span> <span class="n">length</span><span class="p">:</span> + <span class="k">if</span> <span class="n">length</span> <span class="o">-</span> <span class="n">size</span> <span class="o">&gt;</span> <span class="n">batch_size</span><span class="p">:</span> + <span class="n">dataloader</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">examples</span><span class="p">[</span><span class="n">size</span> <span class="p">:</span> <span class="n">size</span><span class="o">+</span><span class="n">batch_size</span><span class="p">])</span> + <span class="n">size</span> <span class="o">+=</span> <span class="n">batch_size</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">dataloader</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">examples</span><span class="p">[</span><span class="n">size</span> <span class="p">:</span> <span class="n">size</span><span class="o">+</span><span class="p">(</span><span class="n">length</span><span class="o">-</span><span class="n">size</span><span class="p">)])</span> + <span class="n">size</span> <span class="o">+=</span> <span class="p">(</span><span class="n">length</span> <span class="o">-</span> <span class="n">size</span><span class="p">)</span> + <span class="k">return</span> <span class="n">dataloader</span></div> + + + + +<div class="viewcode-block" id="answer_extraction"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.answer_extraction">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">answer_extraction</span><span class="p">(</span><span class="n">response</span><span class="p">,</span> <span class="n">answer_type</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> <span class="c1">#use this funtion to extract answers from generated text</span> + +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> Use this funtion to extract answers from generated text</span> + +<span class="sd"> Parameters</span> +<span class="sd"> ------------</span> +<span class="sd"> args : </span> +<span class="sd"> Arguments.</span> +<span class="sd"> response : str</span> +<span class="sd"> plain string response.</span> + + +<span class="sd"> Returns</span> +<span class="sd"> ------------</span> +<span class="sd"> answer:</span> +<span class="sd"> Decoded answer (such as A, B, C, D, E for mutiple-choice QA).</span> +<span class="sd"> &quot;&quot;&quot;</span> + + <span class="c1"># temp = response[&quot;generated_text&quot;]</span> + <span class="n">temp</span> <span class="o">=</span> <span class="n">response</span> + <span class="k">if</span> <span class="n">answer_type</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;gsm8k&quot;</span><span class="p">,</span> <span class="s2">&quot;svamp&quot;</span><span class="p">,</span> <span class="s2">&quot;asdiv&quot;</span><span class="p">,</span> <span class="s2">&quot;addsub&quot;</span><span class="p">,</span> <span class="s2">&quot;singleeq&quot;</span><span class="p">,</span> <span class="s2">&quot;multiarith&quot;</span><span class="p">,</span> <span class="s2">&quot;math&quot;</span><span class="p">):</span> + <span class="n">temp</span> <span class="o">=</span> <span class="n">temp</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span> + <span class="n">temp</span> <span class="o">=</span> <span class="p">[</span><span class="n">s</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;-?\d+\.?\d*&#39;</span><span class="p">,</span> <span class="n">temp</span><span class="p">)]</span> + <span class="k">elif</span> <span class="n">answer_type</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;aqua&quot;</span><span class="p">,</span> <span class="s2">&quot;csqa&quot;</span><span class="p">,</span> <span class="s2">&quot;multiple_choice&quot;</span><span class="p">):</span> + <span class="n">temp</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;A|B|C|D|E&#39;</span><span class="p">,</span> <span class="n">temp</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">answer_type</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;strategyqa&quot;</span><span class="p">,</span> <span class="s2">&quot;coin_flip&quot;</span><span class="p">):</span> + <span class="n">temp</span> <span class="o">=</span> <span class="n">temp</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> + <span class="n">temp</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\&quot;</span><span class="s2">|</span><span class="se">\&#39;</span><span class="s2">|</span><span class="se">\n</span><span class="s2">|\.|\s|\:|\,&quot;</span><span class="p">,</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="n">temp</span><span class="p">)</span> + <span class="n">temp</span> <span class="o">=</span> <span class="n">temp</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">)</span> + <span class="n">temp</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">temp</span> <span class="k">if</span> <span class="n">i</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;yes&quot;</span><span class="p">,</span> <span class="s2">&quot;no&quot;</span><span class="p">)]</span> + <span class="k">elif</span> <span class="n">answer_type</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;last_letters&quot;</span><span class="p">):</span> + <span class="n">temp</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\&quot;</span><span class="s2">|</span><span class="se">\&#39;</span><span class="s2">|</span><span class="se">\n</span><span class="s2">|\.|\s&quot;</span><span class="p">,</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">temp</span><span class="p">)</span> + <span class="n">temp</span> <span class="o">=</span> <span class="p">[</span><span class="n">temp</span><span class="p">]</span> + <span class="k">elif</span> <span class="n">answer_type</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;pubmedqa&quot;</span><span class="p">,</span> <span class="s2">&quot;binary_choice&quot;</span><span class="p">):</span> + <span class="c1"># pattern = &quot;Output: (yes|no|maybe)&quot;</span> + <span class="c1"># sttr = re.search(pattern, temp)</span> + <span class="c1"># answer = sttr.group(0)[8:] if sttr is not None else &quot;N/A&quot;</span> + <span class="n">pattern</span> <span class="o">=</span> <span class="s2">&quot;(answer|Answer|ANSWER|output|Output|OUTPUT|A): \(*(yes|Yes|YES|no|No|NO|maybe|Maybe|MAYBE)&quot;</span> + <span class="n">sttr</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">temp</span><span class="p">)</span> + <span class="k">if</span> <span class="n">sttr</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">mid_answer</span> <span class="o">=</span> <span class="n">sttr</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> + <span class="n">mid_answer</span> <span class="o">=</span> <span class="n">mid_answer</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> + <span class="n">answer</span> <span class="o">=</span> <span class="n">mid_answer</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">pattern</span> <span class="o">=</span> <span class="s2">&quot;(yes|Yes|YES|no|No|NO|maybe|Maybe|MAYBE)(\.|\s)&quot;</span> + <span class="n">sttr</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">temp</span><span class="p">)</span> + <span class="k">if</span> <span class="n">sttr</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">answer</span> <span class="o">=</span> <span class="n">sttr</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">)[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">answer</span> <span class="o">=</span> <span class="s2">&quot;N/A&quot;</span> + <span class="k">return</span> <span class="n">answer</span> + <span class="k">elif</span> <span class="n">answer_type</span> <span class="o">==</span> <span class="s2">&quot;medmcqa&quot;</span><span class="p">:</span> + <span class="c1"># pattern = &quot;Output: (A|B|C|D).&quot;</span> + <span class="c1"># sttr = re.search(pattern, temp)</span> + <span class="c1"># answer = sttr.group(0)[8:-1].lower() if sttr is not None else &quot;N/A&quot;</span> + <span class="n">pattern</span> <span class="o">=</span> <span class="s2">&quot;(answer|Answer|ANSWER|output|Output|OUTPUT|A): \(*(A|B|C|D|a|b|c|d)&quot;</span> + <span class="n">sttr</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">temp</span><span class="p">)</span> + <span class="k">if</span> <span class="n">sttr</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">mid_answer</span> <span class="o">=</span> <span class="n">sttr</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> + <span class="n">answer</span> <span class="o">=</span> <span class="n">mid_answer</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">pattern</span> <span class="o">=</span> <span class="s2">&quot;\(*(A|B|C|D|a|b|c|d)\)*(\.|\s)&quot;</span> + <span class="n">sttr</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">temp</span><span class="p">)</span> + <span class="k">if</span> <span class="n">sttr</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="s1">&#39;(&#39;</span> <span class="ow">in</span> <span class="n">sttr</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">):</span> + <span class="n">answer</span> <span class="o">=</span> <span class="n">sttr</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">answer</span> <span class="o">=</span> <span class="n">sttr</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">answer</span> <span class="o">=</span> <span class="s2">&quot;N/A&quot;</span> + <span class="k">return</span> <span class="n">answer</span> + + <span class="k">elif</span> <span class="n">answer_type</span> <span class="o">==</span> <span class="s2">&quot;usmle&quot;</span><span class="p">:</span> + <span class="c1"># pattern = &quot;Output: (A|B|C|D).&quot;</span> + <span class="c1"># sttr = re.search(pattern, temp)</span> + <span class="c1"># answer = sttr.group(0)[8:-1].lower() if sttr is not None else &quot;N/A&quot;</span> + <span class="n">pattern</span> <span class="o">=</span> <span class="s2">&quot;(Answer|Output|A): \(*(A|B|C|D|a|b|c|d)&quot;</span> + <span class="n">sttr</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">temp</span><span class="p">)</span> + <span class="k">if</span> <span class="n">sttr</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">mid_answer</span> <span class="o">=</span> <span class="n">sttr</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> + <span class="n">answer</span> <span class="o">=</span> <span class="n">mid_answer</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">pattern</span> <span class="o">=</span> <span class="s2">&quot;\(*(A|B|C|D|a|b|c|d)\)*(\.|\s)&quot;</span> + <span class="n">sttr</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">temp</span><span class="p">)</span> + <span class="k">if</span> <span class="n">sttr</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="s1">&#39;(&#39;</span> <span class="ow">in</span> <span class="n">sttr</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">):</span> + <span class="n">answer</span> <span class="o">=</span> <span class="n">sttr</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">answer</span> <span class="o">=</span> <span class="n">sttr</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">answer</span> <span class="o">=</span> <span class="s2">&quot;N/A&quot;</span> + <span class="k">return</span> <span class="n">answer</span> + <span class="k">elif</span> <span class="n">answer_type</span> <span class="o">==</span> <span class="s2">&quot;text&quot;</span><span class="p">:</span> + <span class="k">return</span> <span class="n">response</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Unsupported answer type: </span><span class="si">{</span><span class="n">answer_type</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">temp</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">answer</span> <span class="o">=</span> <span class="n">temp</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + <span class="c1"># if there is . at the end of answer, remove it</span> + <span class="c1"># e.g. answer = 64.</span> + <span class="k">if</span> <span class="n">answer</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">answer</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;.&quot;</span><span class="p">:</span> + <span class="n">answer</span> <span class="o">=</span> <span class="n">answer</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + + <span class="c1"># round the answer to nearest integer</span> + <span class="k">if</span> <span class="n">answer_type</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;gsm8k&quot;</span><span class="p">,</span> <span class="s2">&quot;svamp&quot;</span><span class="p">):</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">answer</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="nb">round</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">answer</span><span class="p">)))</span> + <span class="k">except</span><span class="p">:</span> + <span class="n">answer</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> <span class="c1"># no sol or sol doesn&#39;t have valid format</span> + <span class="k">elif</span> <span class="n">answer_type</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;last_letters&quot;</span><span class="p">):</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">answer</span> <span class="o">=</span> <span class="n">answer</span><span class="p">[</span><span class="o">-</span><span class="n">args</span><span class="o">.</span><span class="n">concat_length</span><span class="p">:]</span> + <span class="k">except</span><span class="p">:</span> + <span class="n">answer</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">answer</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> + <span class="k">return</span> <span class="n">answer</span></div> + + + +<div class="viewcode-block" id="process_image_flag"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.process_image_flag">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">process_image_flag</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">image_flag</span><span class="o">=</span><span class="s2">&quot;&lt;ImageHere&gt;&quot;</span><span class="p">):</span> + <span class="n">texts</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">image_flag</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">texts</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">image_token_indexes</span> <span class="o">=</span> <span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> <span class="k">for</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">image_token_indexes</span> <span class="o">=</span> <span class="p">[]</span> + <span class="c1"># cumsun</span> + <span class="n">image_token_indexes</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">cumsum</span><span class="p">(</span><span class="n">image_token_indexes</span><span class="p">))</span> + <span class="n">texts</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">texts</span><span class="p">)</span> + <span class="k">return</span> <span class="n">texts</span><span class="p">,</span> <span class="n">image_token_indexes</span></div> + + + +<div class="viewcode-block" id="VLLMInferenceResultWithInput"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.VLLMInferenceResultWithInput">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">VLLMInferenceResultWithInput</span><span class="p">(</span><span class="n">TypedDict</span><span class="p">):</span> +<div class="viewcode-block" id="VLLMInferenceResultWithInput.input"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.VLLMInferenceResultWithInput.input">[docs]</a> + <span class="nb">input</span><span class="p">:</span> <span class="nb">str</span></div> + +<div class="viewcode-block" id="VLLMInferenceResultWithInput.output"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.VLLMInferenceResultWithInput.output">[docs]</a> + <span class="n">output</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]]</span></div> +</div> + + + +<div class="viewcode-block" id="RewardModelInferenceResultWithInput"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.RewardModelInferenceResultWithInput">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">RewardModelInferenceResultWithInput</span><span class="p">(</span><span class="n">TypedDict</span><span class="p">):</span> +<div class="viewcode-block" id="RewardModelInferenceResultWithInput.input"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.RewardModelInferenceResultWithInput.input">[docs]</a> + <span class="nb">input</span><span class="p">:</span> <span class="nb">str</span></div> + +<div class="viewcode-block" id="RewardModelInferenceResultWithInput.output"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.RewardModelInferenceResultWithInput.output">[docs]</a> + <span class="n">output</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">float</span><span class="p">]]]</span> <span class="c1"># [{&quot;score&quot;: 0.5, &quot;text&quot;: &quot;output text&quot;}]</span></div> +</div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/flash_attention/bloom_flash_attention.html b/_modules/lmflow/utils/flash_attention/bloom_flash_attention.html new file mode 100644 index 000000000..8d74c66b0 --- /dev/null +++ b/_modules/lmflow/utils/flash_attention/bloom_flash_attention.html @@ -0,0 +1,552 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.flash_attention.bloom_flash_attention &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/flash_attention/bloom_flash_attention';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.flash_attention.bloom_flash_attention</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.flash_attention.bloom_flash_attention</h1><div class="highlight"><pre> +<span></span><span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Union</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch</span><span class="w"> </span><span class="kn">import</span> <span class="n">nn</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.nn.functional</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">F</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">transformers</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.models.bloom.modeling_bloom</span><span class="w"> </span><span class="kn">import</span> <span class="n">dropout_add</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">einops</span><span class="w"> </span><span class="kn">import</span> <span class="n">rearrange</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">.triton_flash_attention</span><span class="w"> </span><span class="kn">import</span> <span class="n">flash_attn_qkvpacked_func</span> + +<div class="viewcode-block" id="forward"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.html#lmflow.utils.flash_attention.bloom_flash_attention.forward">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">hidden_states</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> + <span class="n">residual</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> + <span class="n">alibi</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> + <span class="n">attention_mask</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> + <span class="n">layer_past</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">head_mask</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">use_cache</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">output_attentions</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="p">):</span> + <span class="n">dtype</span> <span class="o">=</span> <span class="n">hidden_states</span><span class="o">.</span><span class="n">dtype</span> + <span class="n">fused_qkv</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_key_value</span><span class="p">(</span><span class="n">hidden_states</span><span class="p">)</span> <span class="c1"># [batch_size, seq_length, 3 x hidden_size]</span> + + <span class="c1"># 3 x [batch_size, seq_length, num_heads, head_dim]</span> + <span class="p">(</span><span class="n">query_layer</span><span class="p">,</span> <span class="n">key_layer</span><span class="p">,</span> <span class="n">value_layer</span><span class="p">)</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_split_heads</span><span class="p">(</span><span class="n">fused_qkv</span><span class="p">)</span> + + <span class="n">batch_size</span><span class="p">,</span> <span class="n">q_length</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">query_layer</span><span class="o">.</span><span class="n">shape</span> + <span class="n">bsz</span><span class="p">,</span> <span class="n">q_len</span> <span class="o">=</span> <span class="n">batch_size</span><span class="p">,</span> <span class="n">q_length</span> + + <span class="k">if</span> <span class="n">layer_past</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">past_key</span><span class="p">,</span> <span class="n">past_value</span> <span class="o">=</span> <span class="n">layer_past</span> + <span class="c1"># concatenate along seq_length dimension:</span> + <span class="c1"># - key: [batch_size * self.num_heads, head_dim, kv_length]</span> + <span class="c1"># - value: [batch_size * self.num_heads, kv_length, head_dim]</span> + <span class="n">key_layer</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">past_key</span><span class="p">,</span> <span class="n">key_layer</span><span class="p">),</span> <span class="n">dim</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> + <span class="n">value_layer</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">past_value</span><span class="p">,</span> <span class="n">value_layer</span><span class="p">),</span> <span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">use_cache</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> + <span class="n">present</span> <span class="o">=</span> <span class="p">(</span><span class="n">key_layer</span><span class="p">,</span> <span class="n">value_layer</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">present</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="n">reshaped_alibi</span> <span class="o">=</span> <span class="n">rearrange</span><span class="p">(</span><span class="n">alibi</span><span class="p">,</span> <span class="s1">&#39;(b h) one s-&gt; b h one s&#39;</span><span class="p">,</span> <span class="n">h</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_heads</span><span class="p">)</span> + <span class="n">reshaped_alibi</span> <span class="o">=</span> <span class="n">reshaped_alibi</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">beta</span> + + <span class="n">attention_mask</span> <span class="o">=</span> <span class="p">(</span><span class="mf">1.0</span> <span class="o">-</span> <span class="n">attention_mask</span><span class="p">)</span> + <span class="n">attention_mask</span> <span class="o">=</span> <span class="n">attention_mask</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="p">:]</span><span class="o">.</span><span class="n">bool</span><span class="p">()</span> + <span class="n">reshaped_alibi_masked</span> <span class="o">=</span> <span class="n">reshaped_alibi</span><span class="o">.</span><span class="n">masked_fill</span><span class="p">(</span><span class="n">attention_mask</span><span class="p">,</span> <span class="o">-</span><span class="mf">1e9</span><span class="p">)</span> + + <span class="n">reshaped_query_layer</span> <span class="o">=</span> <span class="n">query_layer</span> + <span class="n">reshaped_key_layer</span> <span class="o">=</span> <span class="n">key_layer</span> + <span class="n">reshaped_value_layer</span> <span class="o">=</span> <span class="n">value_layer</span> + + <span class="n">qkv</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">reshaped_query_layer</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">reshaped_key_layer</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">reshaped_value_layer</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="mi">2</span><span class="p">)],</span> <span class="n">dim</span> <span class="o">=</span> <span class="mi">2</span><span class="p">)</span> + + <span class="n">output</span> <span class="o">=</span> <span class="n">flash_attn_qkvpacked_func</span><span class="p">(</span> + <span class="n">qkv</span><span class="p">,</span> <span class="n">reshaped_alibi_masked</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">inv_norm_factor</span> + <span class="p">)</span> + + <span class="n">output</span> <span class="o">=</span> <span class="n">rearrange</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="s1">&#39;b s h d -&gt; (b h) s d&#39;</span><span class="p">)</span> + + <span class="c1"># change view [batch_size, num_heads, q_length, head_dim]</span> + <span class="n">context_layer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_merge_heads</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> + + <span class="c1"># aggregate results across tp ranks. See here: https://github.com/pytorch/pytorch/issues/76232</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretraining_tp</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">slow_but_exact</span><span class="p">:</span> + <span class="n">slices</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">hidden_size</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretraining_tp</span> + <span class="n">output_tensor</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">context_layer</span><span class="p">)</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pretraining_tp</span><span class="p">):</span> + <span class="n">output_tensor</span> <span class="o">=</span> <span class="n">output_tensor</span> <span class="o">+</span> <span class="n">F</span><span class="o">.</span><span class="n">linear</span><span class="p">(</span> + <span class="n">context_layer</span><span class="p">[:,</span> <span class="p">:,</span> <span class="nb">int</span><span class="p">(</span><span class="n">i</span> <span class="o">*</span> <span class="n">slices</span><span class="p">)</span> <span class="p">:</span> <span class="nb">int</span><span class="p">((</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">slices</span><span class="p">)],</span> + <span class="bp">self</span><span class="o">.</span><span class="n">dense</span><span class="o">.</span><span class="n">weight</span><span class="p">[:,</span> <span class="nb">int</span><span class="p">(</span><span class="n">i</span> <span class="o">*</span> <span class="n">slices</span><span class="p">)</span> <span class="p">:</span> <span class="nb">int</span><span class="p">((</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">slices</span><span class="p">)],</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">output_tensor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dense</span><span class="p">(</span><span class="n">context_layer</span><span class="p">)</span> + + <span class="n">output_tensor</span> <span class="o">=</span> <span class="n">dropout_add</span><span class="p">(</span><span class="n">output_tensor</span><span class="p">,</span> <span class="n">residual</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">hidden_dropout</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">training</span><span class="p">)</span> + + <span class="n">outputs</span> <span class="o">=</span> <span class="p">(</span><span class="n">output_tensor</span><span class="p">,</span> <span class="n">present</span><span class="p">)</span> + <span class="k">if</span> <span class="n">output_attentions</span><span class="p">:</span> + <span class="n">outputs</span> <span class="o">+=</span> <span class="p">(</span><span class="n">context_layer</span><span class="p">,)</span> + + <span class="k">return</span> <span class="n">outputs</span></div> + + + +<span class="c1"># Disable the transformation of the attention mask in LlamaModel as the flash attention</span> +<span class="c1"># requires the attention mask to be the same as the key_padding_mask</span> +<div class="viewcode-block" id="_prepare_attn_mask"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.html#lmflow.utils.flash_attention.bloom_flash_attention._prepare_attn_mask">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_prepare_attn_mask</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> <span class="n">attention_mask</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">input_shape</span><span class="p">:</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">],</span> <span class="n">past_key_values_length</span><span class="p">:</span> <span class="nb">int</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">torch</span><span class="o">.</span><span class="n">BoolTensor</span><span class="p">:</span> + + <span class="k">return</span> <span class="n">attention_mask</span></div> + + +<div class="viewcode-block" id="replace_bloom_attn_with_flash_attn"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.html#lmflow.utils.flash_attention.bloom_flash_attention.replace_bloom_attn_with_flash_attn">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">replace_bloom_attn_with_flash_attn</span><span class="p">():</span> + <span class="n">transformers</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">bloom</span><span class="o">.</span><span class="n">modeling_bloom</span><span class="o">.</span><span class="n">BloomModel</span><span class="o">.</span><span class="n">_prepare_attn_mask</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">_prepare_attn_mask</span> + <span class="p">)</span> + <span class="n">transformers</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">bloom</span><span class="o">.</span><span class="n">modeling_bloom</span><span class="o">.</span><span class="n">BloomAttention</span><span class="o">.</span><span class="n">forward</span> <span class="o">=</span> <span class="n">forward</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/flash_attention/gpt2_flash_attention.html b/_modules/lmflow/utils/flash_attention/gpt2_flash_attention.html new file mode 100644 index 000000000..9875a88f7 --- /dev/null +++ b/_modules/lmflow/utils/flash_attention/gpt2_flash_attention.html @@ -0,0 +1,586 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.flash_attention.gpt2_flash_attention &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/flash_attention/gpt2_flash_attention';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.flash_attention.gpt2_flash_attention</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.flash_attention.gpt2_flash_attention</h1><div class="highlight"><pre> +<span></span><span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Union</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch</span><span class="w"> </span><span class="kn">import</span> <span class="n">nn</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">transformers</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.models.llama.modeling_llama</span><span class="w"> </span><span class="kn">import</span> <span class="n">apply_rotary_pos_emb</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">einops</span><span class="w"> </span><span class="kn">import</span> <span class="n">rearrange</span> + +<span class="c1">#try to import flash_attn 2.x.x, if not, import flash_attn 1.x.x</span> +<span class="k">try</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">flash_attn.flash_attn_interface</span><span class="w"> </span><span class="kn">import</span> <span class="n">flash_attn_varlen_qkvpacked_func</span> <span class="k">as</span> <span class="n">flash_attn_unpadded_qkvpacked_func</span> +<span class="k">except</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">flash_attn.flash_attn_interface</span><span class="w"> </span><span class="kn">import</span> <span class="n">flash_attn_unpadded_qkvpacked_func</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">flash_attn.bert_padding</span><span class="w"> </span><span class="kn">import</span> <span class="n">unpad_input</span><span class="p">,</span> <span class="n">pad_input</span> + + +<div class="viewcode-block" id="forward"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.html#lmflow.utils.flash_attention.gpt2_flash_attention.forward">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">hidden_states</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">]],</span> + <span class="n">layer_past</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">attention_mask</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">head_mask</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">encoder_hidden_states</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">encoder_attention_mask</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">use_cache</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">output_attentions</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]],</span> <span class="o">...</span><span class="p">]:</span> + + + <span class="k">if</span> <span class="n">encoder_hidden_states</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;q_attn&quot;</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="s2">&quot;If class is used as cross attention, the weights `q_attn` have to be defined. &quot;</span> + <span class="s2">&quot;Please make sure to instantiate class with `GPT2Attention(..., is_cross_attention=True)`.&quot;</span> + <span class="p">)</span> + + <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">q_attn</span><span class="p">(</span><span class="n">hidden_states</span><span class="p">)</span> + <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">c_attn</span><span class="p">(</span><span class="n">encoder_hidden_states</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">split_size</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> + <span class="n">attention_mask</span> <span class="o">=</span> <span class="n">encoder_attention_mask</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">query</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">c_attn</span><span class="p">(</span><span class="n">hidden_states</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">split_size</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> + + <span class="n">bsz</span><span class="p">,</span> <span class="n">q_len</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">hidden_states</span><span class="o">.</span><span class="n">size</span><span class="p">()</span> + + <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_split_heads</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_heads</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">head_dim</span><span class="p">)</span> + <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_split_heads</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_heads</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">head_dim</span><span class="p">)</span> + <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_split_heads</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_heads</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">head_dim</span><span class="p">)</span> + + <span class="c1">#TODO Should we support?</span> + <span class="k">if</span> <span class="n">layer_past</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">past_key</span><span class="p">,</span> <span class="n">past_value</span> <span class="o">=</span> <span class="n">layer_past</span> + <span class="n">key</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">past_key</span><span class="p">,</span> <span class="n">key</span><span class="p">),</span> <span class="n">dim</span><span class="o">=-</span><span class="mi">2</span><span class="p">)</span> + <span class="n">value</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">past_value</span><span class="p">,</span> <span class="n">value</span><span class="p">),</span> <span class="n">dim</span><span class="o">=-</span><span class="mi">2</span><span class="p">)</span> + + <span class="k">assert</span> <span class="n">use_cache</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;Use cache is not supported&quot;</span> + <span class="n">present</span> <span class="o">=</span> <span class="kc">None</span> + <span class="c1"># if use_cache is True:</span> + <span class="c1"># present = (key, value)</span> + <span class="c1"># else:</span> + <span class="c1"># present = None</span> + + <span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">reorder_and_upcast_attn</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;reorder_and_upcast_attn is not supported yet&quot;</span> + + <span class="n">qkv</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">([</span><span class="n">query</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">],</span> <span class="n">dim</span> <span class="o">=</span> <span class="mi">2</span><span class="p">)</span> + <span class="n">qkv</span> <span class="o">=</span> <span class="n">qkv</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> <span class="c1"># [bsz, seq_len, 3, heads, hiddens_per_head]</span> + + <span class="c1"># breakpoint()</span> + <span class="n">key_padding_mask</span> <span class="o">=</span> <span class="n">attention_mask</span> + <span class="c1"># key_padding_mask = None</span> + <span class="c1"># breakpoint()</span> + <span class="k">if</span> <span class="n">key_padding_mask</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">qkv</span> <span class="o">=</span> <span class="n">rearrange</span><span class="p">(</span><span class="n">qkv</span><span class="p">,</span> <span class="s2">&quot;b s ... -&gt; (b s) ...&quot;</span><span class="p">)</span> + <span class="n">max_s</span> <span class="o">=</span> <span class="n">q_len</span> + <span class="n">cu_q_lens</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span> + <span class="mi">0</span><span class="p">,</span> <span class="p">(</span><span class="n">bsz</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">q_len</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="n">q_len</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">int32</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">qkv</span><span class="o">.</span><span class="n">device</span> + <span class="p">)</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">flash_attn_unpadded_qkvpacked_func</span><span class="p">(</span> + <span class="n">qkv</span><span class="p">,</span> <span class="n">cu_q_lens</span><span class="p">,</span> <span class="n">max_s</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="n">softmax_scale</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="kc">True</span> + <span class="p">)</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">rearrange</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="s2">&quot;(b s) ... -&gt; b s ...&quot;</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="n">bsz</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># flip in flash attention</span> + <span class="n">key_padding_mask</span> <span class="o">=</span> <span class="n">key_padding_mask</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span> + <span class="n">key_padding_mask</span> <span class="o">=</span> <span class="p">(</span><span class="mf">1.0</span> <span class="o">-</span> <span class="n">key_padding_mask</span><span class="p">)</span> + <span class="n">key_padding_mask</span> <span class="o">=</span> <span class="n">key_padding_mask</span><span class="o">.</span><span class="n">squeeze</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">squeeze</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> + <span class="n">nheads</span> <span class="o">=</span> <span class="n">qkv</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> + <span class="n">x</span> <span class="o">=</span> <span class="n">rearrange</span><span class="p">(</span><span class="n">qkv</span><span class="p">,</span> <span class="s2">&quot;b s three h d -&gt; b s (three h d)&quot;</span><span class="p">)</span> + <span class="n">x_unpad</span><span class="p">,</span> <span class="n">indices</span><span class="p">,</span> <span class="n">cu_q_lens</span><span class="p">,</span> <span class="n">max_s</span> <span class="o">=</span> <span class="n">unpad_input</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">key_padding_mask</span><span class="p">)</span> + <span class="n">x_unpad</span> <span class="o">=</span> <span class="n">rearrange</span><span class="p">(</span> + <span class="n">x_unpad</span><span class="p">,</span> <span class="s2">&quot;nnz (three h d) -&gt; nnz three h d&quot;</span><span class="p">,</span> <span class="n">three</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="n">nheads</span> + <span class="p">)</span> + <span class="n">output_unpad</span> <span class="o">=</span> <span class="n">flash_attn_unpadded_qkvpacked_func</span><span class="p">(</span> + <span class="n">x_unpad</span><span class="p">,</span> <span class="n">cu_q_lens</span><span class="p">,</span> <span class="n">max_s</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="n">softmax_scale</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="kc">True</span> + <span class="p">)</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">rearrange</span><span class="p">(</span> + <span class="n">pad_input</span><span class="p">(</span> + <span class="n">rearrange</span><span class="p">(</span><span class="n">output_unpad</span><span class="p">,</span> <span class="s2">&quot;nnz h d -&gt; nnz (h d)&quot;</span><span class="p">),</span> <span class="n">indices</span><span class="p">,</span> <span class="n">bsz</span><span class="p">,</span> <span class="n">q_len</span> + <span class="p">),</span> + <span class="s2">&quot;b s (h d) -&gt; b s h d&quot;</span><span class="p">,</span> + <span class="n">h</span><span class="o">=</span><span class="n">nheads</span><span class="p">,</span> + <span class="p">)</span> + <span class="c1"># if self.reorder_and_upcast_attn:</span> + <span class="c1"># attn_output, attn_weights = self._upcast_and_reordered_attn(query, key, value, attention_mask, head_mask)</span> + <span class="c1"># else:</span> + <span class="c1"># attn_output, attn_weights = self._attn(query, key, value, attention_mask, head_mask)</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">rearrange</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="s1">&#39;b s h d -&gt; b h s d&#39;</span><span class="p">)</span> + <span class="n">attn_output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_merge_heads</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_heads</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">head_dim</span><span class="p">)</span> + <span class="n">attn_output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">c_proj</span><span class="p">(</span><span class="n">attn_output</span><span class="p">)</span> + <span class="n">attn_output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">resid_dropout</span><span class="p">(</span><span class="n">attn_output</span><span class="p">)</span> + + <span class="n">outputs</span> <span class="o">=</span> <span class="p">(</span><span class="n">attn_output</span><span class="p">,</span> <span class="n">present</span><span class="p">)</span> + + <span class="k">assert</span> <span class="n">output_attentions</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">&quot;output attentions is not supported yet&quot;</span> + <span class="c1"># if output_attentions:</span> + <span class="c1"># outputs += (attn_weights,)</span> + + <span class="k">return</span> <span class="n">outputs</span> <span class="c1"># a, present, (attentions)</span></div> + + + +<span class="c1"># Disable the transformation of the attention mask in LlamaModel as the flash attention</span> +<span class="c1"># requires the attention mask to be the same as the key_padding_mask</span> +<div class="viewcode-block" id="_prepare_decoder_attention_mask"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.html#lmflow.utils.flash_attention.gpt2_flash_attention._prepare_decoder_attention_mask">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_prepare_decoder_attention_mask</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> <span class="n">attention_mask</span><span class="p">,</span> <span class="n">input_shape</span><span class="p">,</span> <span class="n">inputs_embeds</span><span class="p">,</span> <span class="n">past_key_values_length</span> +<span class="p">):</span> + <span class="c1"># [bsz, seq_len]</span> + <span class="k">return</span> <span class="n">attention_mask</span></div> + + + +<div class="viewcode-block" id="replace_gpt2_attn_with_flash_attn"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.html#lmflow.utils.flash_attention.gpt2_flash_attention.replace_gpt2_attn_with_flash_attn">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">replace_gpt2_attn_with_flash_attn</span><span class="p">():</span> + <span class="c1"># transformers.models.gpt2.modeling_gpt2.LlamaModel._prepare_decoder_attention_mask = (</span> + <span class="c1"># _prepare_decoder_attention_mask</span> + <span class="c1"># )</span> + <span class="n">transformers</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">gpt2</span><span class="o">.</span><span class="n">modeling_gpt2</span><span class="o">.</span><span class="n">GPT2Attention</span><span class="o">.</span><span class="n">forward</span> <span class="o">=</span> <span class="n">forward</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/flash_attention/gpt_neo_flash_attention.html b/_modules/lmflow/utils/flash_attention/gpt_neo_flash_attention.html new file mode 100644 index 000000000..3e895ee2f --- /dev/null +++ b/_modules/lmflow/utils/flash_attention/gpt_neo_flash_attention.html @@ -0,0 +1,550 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.flash_attention.gpt_neo_flash_attention &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/flash_attention/gpt_neo_flash_attention';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.flash_attention.gpt_neo_flash_attention</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.flash_attention.gpt_neo_flash_attention</h1><div class="highlight"><pre> +<span></span><span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">transformers</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">einops</span><span class="w"> </span><span class="kn">import</span> <span class="n">rearrange</span> + +<span class="c1">#try to import flash_attn 2.x.x, if not, import flash_attn 1.x.x</span> +<span class="k">try</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">flash_attn.flash_attn_interface</span><span class="w"> </span><span class="kn">import</span> <span class="n">flash_attn_varlen_qkvpacked_func</span> <span class="k">as</span> <span class="n">flash_attn_unpadded_qkvpacked_func</span> +<span class="k">except</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">flash_attn.flash_attn_interface</span><span class="w"> </span><span class="kn">import</span> <span class="n">flash_attn_unpadded_qkvpacked_func</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">flash_attn.bert_padding</span><span class="w"> </span><span class="kn">import</span> <span class="n">unpad_input</span><span class="p">,</span> <span class="n">pad_input</span> + +<div class="viewcode-block" id="_attn"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html#lmflow.utils.flash_attention.gpt_neo_flash_attention._attn">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_attn</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">attention_mask</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">head_mask</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="c1"># (batch, head, seq_length, head_features)</span> + <span class="n">query</span> <span class="o">=</span> <span class="n">query</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">bfloat16</span><span class="p">)</span> + <span class="n">key</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">bfloat16</span><span class="p">)</span> + <span class="n">query</span> <span class="o">=</span> <span class="n">query</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">head_dim</span><span class="p">))</span> + <span class="n">qkv</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span> + <span class="p">[</span><span class="n">query</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">],</span> <span class="n">dim</span><span class="o">=</span><span class="mi">2</span> + <span class="p">)</span><span class="c1"># [bsz, nh, 3, t, hd]</span> + <span class="n">qkv</span> <span class="o">=</span> <span class="n">qkv</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span><span class="c1">## [bsz, q_len, 3, nh, hd]</span> + <span class="n">bsz</span> <span class="o">=</span> <span class="n">qkv</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">q_len</span> <span class="o">=</span> <span class="n">qkv</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + + <span class="n">attention_mask</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">attention_mask</span> <span class="o">==</span> <span class="o">-</span><span class="mf">0.0</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> + <span class="n">key_padding_mask</span> <span class="o">=</span> <span class="n">rearrange</span><span class="p">(</span><span class="n">attention_mask</span><span class="p">,</span> <span class="s2">&quot;b () () s -&gt; b s&quot;</span><span class="p">)</span> <span class="k">if</span> <span class="n">attention_mask</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">key_padding_mask</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">qkv</span> <span class="o">=</span> <span class="n">rearrange</span><span class="p">(</span><span class="n">qkv</span><span class="p">,</span> <span class="s2">&quot;b s ... -&gt; (b s) ...&quot;</span><span class="p">)</span> + <span class="n">max_s</span> <span class="o">=</span> <span class="n">q_len</span> + <span class="n">cu_q_lens</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span> + <span class="mi">0</span><span class="p">,</span> <span class="p">(</span><span class="n">bsz</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">q_len</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="n">q_len</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">int32</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">qkv</span><span class="o">.</span><span class="n">device</span> + <span class="p">)</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">flash_attn_unpadded_qkvpacked_func</span><span class="p">(</span> + <span class="n">qkv</span><span class="p">,</span> <span class="n">cu_q_lens</span><span class="p">,</span> <span class="n">max_s</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">attn_dropout</span><span class="o">.</span><span class="n">p</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">training</span> <span class="k">else</span> <span class="mf">0.0</span> <span class="p">,</span> <span class="n">softmax_scale</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="kc">True</span> + <span class="p">)</span><span class="c1"># attention compute</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">rearrange</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="s2">&quot;(b s) ... -&gt; b s ...&quot;</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="n">bsz</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">nheads</span> <span class="o">=</span> <span class="n">qkv</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> + <span class="n">x</span> <span class="o">=</span> <span class="n">rearrange</span><span class="p">(</span><span class="n">qkv</span><span class="p">,</span> <span class="s2">&quot;b s three h d -&gt; b s (three h d)&quot;</span><span class="p">)</span> + <span class="n">x_unpad</span><span class="p">,</span> <span class="n">indices</span><span class="p">,</span> <span class="n">cu_q_lens</span><span class="p">,</span> <span class="n">max_s</span> <span class="o">=</span> <span class="n">unpad_input</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">key_padding_mask</span><span class="p">)</span> + <span class="n">x_unpad</span> <span class="o">=</span> <span class="n">rearrange</span><span class="p">(</span> + <span class="n">x_unpad</span><span class="p">,</span> <span class="s2">&quot;nnz (three h d) -&gt; nnz three h d&quot;</span><span class="p">,</span> <span class="n">three</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="n">nheads</span> + <span class="p">)</span> + <span class="n">output_unpad</span> <span class="o">=</span> <span class="n">flash_attn_unpadded_qkvpacked_func</span><span class="p">(</span> + <span class="n">x_unpad</span><span class="p">,</span> <span class="n">cu_q_lens</span><span class="p">,</span> <span class="n">max_s</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">attn_dropout</span><span class="o">.</span><span class="n">p</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">training</span> <span class="k">else</span> <span class="mf">0.0</span><span class="p">,</span> <span class="n">softmax_scale</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="kc">True</span> + <span class="p">)</span> + <span class="n">output</span> <span class="o">=</span> <span class="n">rearrange</span><span class="p">(</span> + <span class="n">pad_input</span><span class="p">(</span> + <span class="n">rearrange</span><span class="p">(</span><span class="n">output_unpad</span><span class="p">,</span> <span class="s2">&quot;nnz h d -&gt; nnz (h d)&quot;</span><span class="p">),</span> <span class="n">indices</span><span class="p">,</span> <span class="n">bsz</span><span class="p">,</span> <span class="n">q_len</span> + <span class="p">),</span> + <span class="s2">&quot;b s (h d) -&gt; b s h d&quot;</span><span class="p">,</span> + <span class="n">h</span><span class="o">=</span><span class="n">nheads</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">output</span><span class="p">,</span> <span class="kc">None</span></div> + + +<div class="viewcode-block" id="forward"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html#lmflow.utils.flash_attention.gpt_neo_flash_attention.forward">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">hidden_states</span><span class="p">,</span> + <span class="n">attention_mask</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">layer_past</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">head_mask</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> + <span class="n">use_cache</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">output_attentions</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="p">):</span> + + <span class="k">assert</span> <span class="n">head_mask</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">,</span> <span class="s2">&quot;head_mask is not supported&quot;</span> + <span class="k">assert</span> <span class="ow">not</span> <span class="n">output_attentions</span><span class="p">,</span> <span class="s2">&quot;output_attentions is not supported&quot;</span> + <span class="k">assert</span> <span class="ow">not</span> <span class="n">use_cache</span><span class="p">,</span> <span class="s2">&quot;use_cache is not supported&quot;</span> + + <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">q_proj</span><span class="p">(</span><span class="n">hidden_states</span><span class="p">)</span> + <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">k_proj</span><span class="p">(</span><span class="n">hidden_states</span><span class="p">)</span> + <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">v_proj</span><span class="p">(</span><span class="n">hidden_states</span><span class="p">)</span> + + <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_split_heads</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_heads</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">head_dim</span><span class="p">)</span> + <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_split_heads</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_heads</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">head_dim</span><span class="p">)</span> + <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_split_heads</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_heads</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">head_dim</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">layer_past</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">past_key</span> <span class="o">=</span> <span class="n">layer_past</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">past_value</span> <span class="o">=</span> <span class="n">layer_past</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + <span class="n">key</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">past_key</span><span class="p">,</span> <span class="n">key</span><span class="p">),</span> <span class="n">dim</span><span class="o">=-</span><span class="mi">2</span><span class="p">)</span> + <span class="n">value</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">past_value</span><span class="p">,</span> <span class="n">value</span><span class="p">),</span> <span class="n">dim</span><span class="o">=-</span><span class="mi">2</span><span class="p">)</span> + + <span class="n">present</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">attn_output</span><span class="p">,</span> <span class="n">attn_weights</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_attn</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">attention_mask</span><span class="p">,</span> <span class="n">head_mask</span><span class="p">)</span> + <span class="n">new_shape</span> <span class="o">=</span> <span class="n">attn_output</span><span class="o">.</span><span class="n">size</span><span class="p">()[:</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">num_heads</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">head_dim</span><span class="p">,)</span> + <span class="n">attn_output</span> <span class="o">=</span> <span class="n">attn_output</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="n">new_shape</span><span class="p">)</span> + <span class="n">attn_output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">out_proj</span><span class="p">(</span><span class="n">attn_output</span><span class="p">)</span> + <span class="n">attn_output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">resid_dropout</span><span class="p">(</span><span class="n">attn_output</span><span class="p">)</span> + + <span class="n">outputs</span> <span class="o">=</span> <span class="p">(</span><span class="n">attn_output</span><span class="p">,</span> <span class="n">present</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">outputs</span> <span class="c1"># a, present, (attentions)</span></div> + + +<div class="viewcode-block" id="replace_gpt_neo_attn_with_flash_attn"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html#lmflow.utils.flash_attention.gpt_neo_flash_attention.replace_gpt_neo_attn_with_flash_attn">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">replace_gpt_neo_attn_with_flash_attn</span><span class="p">():</span> + <span class="n">transformers</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">gpt_neo</span><span class="o">.</span><span class="n">modeling_gpt_neo</span><span class="o">.</span><span class="n">GPTNeoSelfAttention</span><span class="o">.</span><span class="n">_attn</span> <span class="o">=</span> <span class="n">_attn</span> + <span class="n">transformers</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">gpt_neo</span><span class="o">.</span><span class="n">modeling_gpt_neo</span><span class="o">.</span><span class="n">GPTNeoSelfAttention</span><span class="o">.</span><span class="n">forward</span> <span class="o">=</span> <span class="n">forward</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/flash_attention/llama_flash_attention.html b/_modules/lmflow/utils/flash_attention/llama_flash_attention.html new file mode 100644 index 000000000..3cfc05617 --- /dev/null +++ b/_modules/lmflow/utils/flash_attention/llama_flash_attention.html @@ -0,0 +1,574 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.flash_attention.llama_flash_attention &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/flash_attention/llama_flash_attention';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.flash_attention.llama_flash_attention</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.flash_attention.llama_flash_attention</h1><div class="highlight"><pre> +<span></span><span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torch</span><span class="w"> </span><span class="kn">import</span> <span class="n">nn</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">math</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">transformers</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers.models.llama.modeling_llama</span><span class="w"> </span><span class="kn">import</span> <span class="n">apply_rotary_pos_emb</span><span class="p">,</span><span class="n">_make_causal_mask</span><span class="p">,</span><span class="n">_expand_mask</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">einops</span><span class="w"> </span><span class="kn">import</span> <span class="n">rearrange</span> + +<span class="c1">#try to import flash_attn 2.x.x, if not, import flash_attn 1.x.x</span> +<span class="k">try</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">flash_attn.flash_attn_interface</span><span class="w"> </span><span class="kn">import</span> <span class="n">flash_attn_func</span> +<span class="k">except</span><span class="p">:</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">flash_attn.flash_attn_interface</span><span class="w"> </span><span class="kn">import</span> <span class="n">flash_attn_unpadded_qkvpacked_func</span> <span class="k">as</span> <span class="n">flash_attn_func</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">flash_attn.bert_padding</span><span class="w"> </span><span class="kn">import</span> <span class="n">unpad_input</span><span class="p">,</span> <span class="n">pad_input</span> + + +<div class="viewcode-block" id="forward"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.html#lmflow.utils.flash_attention.llama_flash_attention.forward">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">hidden_states</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> + <span class="n">attention_mask</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">position_ids</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">LongTensor</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">past_key_value</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">output_attentions</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">use_cache</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">,</span> <span class="n">Optional</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">]]]:</span> + <span class="n">bsz</span><span class="p">,</span> <span class="n">q_len</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">hidden_states</span><span class="o">.</span><span class="n">size</span><span class="p">()</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">pretraining_tp</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;pretraining_tp &gt; 1 is not supported for flash attention&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">query_states</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">q_proj</span><span class="p">(</span><span class="n">hidden_states</span><span class="p">)</span> + <span class="n">key_states</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">k_proj</span><span class="p">(</span><span class="n">hidden_states</span><span class="p">)</span> + <span class="n">value_states</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">v_proj</span><span class="p">(</span><span class="n">hidden_states</span><span class="p">)</span> + + <span class="n">query_states</span> <span class="o">=</span> <span class="n">query_states</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="n">bsz</span><span class="p">,</span> <span class="n">q_len</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_heads</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">head_dim</span><span class="p">)</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> + <span class="n">key_states</span> <span class="o">=</span> <span class="n">key_states</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="n">bsz</span><span class="p">,</span> <span class="n">q_len</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_key_value_heads</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">head_dim</span><span class="p">)</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> + <span class="n">value_states</span> <span class="o">=</span> <span class="n">value_states</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="n">bsz</span><span class="p">,</span> <span class="n">q_len</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_key_value_heads</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">head_dim</span><span class="p">)</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> + + <span class="n">kv_seq_len</span> <span class="o">=</span> <span class="n">key_states</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">past_key_value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">kv_seq_len</span> <span class="o">+=</span> <span class="n">past_key_value</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> + <span class="n">cos</span><span class="p">,</span> <span class="n">sin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rotary_emb</span><span class="p">(</span><span class="n">value_states</span><span class="p">,</span> <span class="n">seq_len</span><span class="o">=</span><span class="n">kv_seq_len</span><span class="p">)</span> + <span class="n">query_states</span><span class="p">,</span> <span class="n">key_states</span> <span class="o">=</span> <span class="n">apply_rotary_pos_emb</span><span class="p">(</span><span class="n">query_states</span><span class="p">,</span> <span class="n">key_states</span><span class="p">,</span> <span class="n">cos</span><span class="p">,</span> <span class="n">sin</span><span class="p">,</span> <span class="n">position_ids</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">past_key_value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="c1"># reuse k, v, self_attention</span> + <span class="n">key_states</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">([</span><span class="n">past_key_value</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">key_states</span><span class="p">],</span> <span class="n">dim</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> + <span class="n">value_states</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">([</span><span class="n">past_key_value</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">value_states</span><span class="p">],</span> <span class="n">dim</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> + + <span class="n">past_key_value</span> <span class="o">=</span> <span class="p">(</span><span class="n">key_states</span><span class="p">,</span> <span class="n">value_states</span><span class="p">)</span> <span class="k">if</span> <span class="n">use_cache</span> <span class="k">else</span> <span class="kc">None</span> + + <span class="n">query_states</span><span class="p">,</span> <span class="n">key_states</span><span class="p">,</span> <span class="n">value_states</span> <span class="o">=</span> <span class="p">[</span> + <span class="n">rearrange</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="s2">&quot;b h s d -&gt; b s h d&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[</span><span class="n">query_states</span><span class="p">,</span> <span class="n">key_states</span><span class="p">,</span> <span class="n">value_states</span><span class="p">]</span> + <span class="p">]</span> + + <span class="n">input_dtype</span> <span class="o">=</span> <span class="n">query_states</span><span class="o">.</span><span class="n">dtype</span> + <span class="k">if</span> <span class="n">input_dtype</span> <span class="o">==</span> <span class="n">torch</span><span class="o">.</span><span class="n">float32</span><span class="p">:</span> + <span class="c1"># Handle the case where the model is quantized</span> + <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">,</span> <span class="s2">&quot;_pre_quantization_dtype&quot;</span><span class="p">):</span> + <span class="n">target_dtype</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">_pre_quantization_dtype</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">target_dtype</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">q_proj</span><span class="o">.</span><span class="n">weight</span><span class="o">.</span><span class="n">dtype</span> + + <span class="n">query_states</span> <span class="o">=</span> <span class="n">query_states</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">target_dtype</span><span class="p">)</span> + <span class="n">key_states</span> <span class="o">=</span> <span class="n">key_states</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">target_dtype</span><span class="p">)</span> + <span class="n">value_states</span> <span class="o">=</span> <span class="n">value_states</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">target_dtype</span><span class="p">)</span> + + <span class="c1"># below output will have shape (batch_size, seqlen, nheads, headdim)</span> + <span class="n">attn_output</span> <span class="o">=</span> <span class="n">flash_attn_func</span><span class="p">(</span><span class="n">query_states</span><span class="p">,</span> <span class="n">key_states</span><span class="p">,</span> <span class="n">value_states</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">attn_output</span><span class="o">.</span><span class="n">size</span><span class="p">()</span> <span class="o">!=</span> <span class="p">(</span><span class="n">bsz</span><span class="p">,</span> <span class="n">q_len</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_heads</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">head_dim</span><span class="p">):</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">&quot;`attn_output` should be of size </span><span class="si">{</span><span class="p">(</span><span class="n">bsz</span><span class="p">,</span><span class="w"> </span><span class="n">q_len</span><span class="p">,</span><span class="w"> </span><span class="bp">self</span><span class="o">.</span><span class="n">num_heads</span><span class="p">,</span><span class="w"> </span><span class="bp">self</span><span class="o">.</span><span class="n">head_dim</span><span class="p">)</span><span class="si">}</span><span class="s2">, but is&quot;</span> + <span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">attn_output</span><span class="o">.</span><span class="n">size</span><span class="p">()</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="p">)</span> + + <span class="n">attn_output</span> <span class="o">=</span> <span class="n">attn_output</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">bsz</span><span class="p">,</span> <span class="n">q_len</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">hidden_size</span><span class="p">)</span> + <span class="n">attn_output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">o_proj</span><span class="p">(</span><span class="n">attn_output</span><span class="p">)</span> + <span class="k">if</span> <span class="n">output_attentions</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">&quot;`output_attentions` is not supported when `use_flash_attn` is True&quot;</span><span class="p">)</span> + <span class="n">attn_weights</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="k">return</span> <span class="n">attn_output</span><span class="p">,</span> <span class="n">attn_weights</span><span class="p">,</span> <span class="n">past_key_value</span></div> + + + +<span class="c1"># Disable the transformation of the attention mask in LlamaModel as the flash attention</span> +<span class="c1"># requires the attention mask to be the same as the key_padding_mask</span> +<div class="viewcode-block" id="_prepare_decoder_attention_mask"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.html#lmflow.utils.flash_attention.llama_flash_attention._prepare_decoder_attention_mask">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_prepare_decoder_attention_mask</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> <span class="n">attention_mask</span><span class="p">,</span> <span class="n">input_shape</span><span class="p">,</span> <span class="n">inputs_embeds</span><span class="p">,</span> <span class="n">past_key_values_length</span> +<span class="p">):</span> + <span class="c1"># [bsz, seq_len]</span> + <span class="k">if</span> <span class="n">input_shape</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">past_key_values_length</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> <span class="c1"># encode</span> + <span class="k">return</span> <span class="n">attention_mask</span> + <span class="c1"># create causal mask</span> + <span class="c1"># [bsz, seq_len] -&gt; [bsz, 1, tgt_seq_len, src_seq_len]</span> + <span class="n">combined_attention_mask</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">input_shape</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">combined_attention_mask</span> <span class="o">=</span> <span class="n">_make_causal_mask</span><span class="p">(</span> + <span class="n">input_shape</span><span class="p">,</span> + <span class="n">inputs_embeds</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span> + <span class="n">device</span><span class="o">=</span><span class="n">inputs_embeds</span><span class="o">.</span><span class="n">device</span><span class="p">,</span> + <span class="n">past_key_values_length</span><span class="o">=</span><span class="n">past_key_values_length</span><span class="p">,</span> + <span class="p">)</span> + + <span class="k">if</span> <span class="n">attention_mask</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="c1"># [bsz, seq_len] -&gt; [bsz, 1, tgt_seq_len, src_seq_len]</span> + <span class="n">expanded_attn_mask</span> <span class="o">=</span> <span class="n">_expand_mask</span><span class="p">(</span><span class="n">attention_mask</span><span class="p">,</span> <span class="n">inputs_embeds</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span> <span class="n">tgt_len</span><span class="o">=</span><span class="n">input_shape</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span><span class="o">.</span><span class="n">to</span><span class="p">(</span> + <span class="n">inputs_embeds</span><span class="o">.</span><span class="n">device</span> + <span class="p">)</span> + <span class="n">combined_attention_mask</span> <span class="o">=</span> <span class="p">(</span> + <span class="n">expanded_attn_mask</span> <span class="k">if</span> <span class="n">combined_attention_mask</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">expanded_attn_mask</span> <span class="o">+</span> <span class="n">combined_attention_mask</span> + <span class="p">)</span> + + <span class="k">return</span> <span class="n">combined_attention_mask</span></div> + + + +<div class="viewcode-block" id="replace_llama_attn_with_flash_attn"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.html#lmflow.utils.flash_attention.llama_flash_attention.replace_llama_attn_with_flash_attn">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">replace_llama_attn_with_flash_attn</span><span class="p">():</span> + <span class="n">transformers</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">llama</span><span class="o">.</span><span class="n">modeling_llama</span><span class="o">.</span><span class="n">LlamaModel</span><span class="o">.</span><span class="n">_prepare_decoder_attention_mask</span> <span class="o">=</span> <span class="n">_prepare_decoder_attention_mask</span> + <span class="n">transformers</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">llama</span><span class="o">.</span><span class="n">modeling_llama</span><span class="o">.</span><span class="n">LlamaAttention</span><span class="o">.</span><span class="n">forward</span> <span class="o">=</span> <span class="n">forward</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/flash_attention/triton_flash_attention.html b/_modules/lmflow/utils/flash_attention/triton_flash_attention.html new file mode 100644 index 000000000..b7cf47b66 --- /dev/null +++ b/_modules/lmflow/utils/flash_attention/triton_flash_attention.html @@ -0,0 +1,1333 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.flash_attention.triton_flash_attention &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/flash_attention/triton_flash_attention';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.flash_attention.triton_flash_attention</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.flash_attention.triton_flash_attention</h1><div class="highlight"><pre> +<span></span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd">*Experimental* implementation of FlashAttention in Triton.</span> +<span class="sd">Tested with triton==2.0.0.dev20221202.</span> +<span class="sd">Triton 2.0 has a new backend (MLIR) but seems like it doesn&#39;t yet work for head dimensions</span> +<span class="sd">other than 64:</span> +<span class="sd">https://github.com/openai/triton/blob/d376020f90002757eea3ea9475d4f7cfc2ec5ead/python/triton/ops/flash_attention.py#L207</span> +<span class="sd">We&#39;ll update this implementation with the new Triton backend once this is fixed.</span> + +<span class="sd">We use the FlashAttention implementation from Phil Tillet a starting point.</span> +<span class="sd">https://github.com/openai/triton/blob/master/python/tutorials/06-fused-attention.py</span> + +<span class="sd">Changes:</span> +<span class="sd">- Implement both causal and non-causal attention.</span> +<span class="sd">- Implement both self-attention and cross-attention.</span> +<span class="sd">- Support arbitrary seqlens (not just multiples of 128), for both forward and backward.</span> +<span class="sd">- Support all head dimensions up to 128 (not just 16, 32, 64, 128), for both forward and backward.</span> +<span class="sd">- Support attention bias.</span> +<span class="sd">- Speed up the forward pass a bit, and only store the LSE instead of m and l.</span> +<span class="sd">- Make the backward for d=128 much faster by reducing register spilling.</span> +<span class="sd">- Optionally parallelize the backward pass across seqlen_k, to deal with the case of</span> +<span class="sd">small batch size * nheads.</span> + +<span class="sd">Caution:</span> +<span class="sd">- This is an *experimental* implementation. The forward pass should be quite robust but</span> +<span class="sd">I&#39;m not 100% sure that the backward pass doesn&#39;t have race conditions (due to the Triton compiler).</span> +<span class="sd">- This implementation has only been tested on A100.</span> +<span class="sd">- If you plan to use headdim other than 64 and 128, you should test for race conditions</span> +<span class="sd">(due to the Triton compiler), as done in tests/test_flash_attn.py</span> +<span class="sd">&quot;test_flash_attn_triton_race_condition&quot;. I&#39;ve tested and fixed many race conditions</span> +<span class="sd">for different head dimensions (40, 48, 64, 128, 80, 88, 96), but I&#39;m still not 100% confident</span> +<span class="sd">that there are none left for other head dimensions.</span> + +<span class="sd">Differences between this Triton version and the CUDA version:</span> +<span class="sd">- Triton version doesn&#39;t support dropout.</span> +<span class="sd">- Triton forward is generally faster than CUDA forward, while Triton backward is</span> +<span class="sd">generally slower than CUDA backward. Overall Triton forward + backward is slightly slower</span> +<span class="sd">than CUDA forward + backward.</span> +<span class="sd">- Triton version doesn&#39;t support different sequence lengths in a batch (i.e., RaggedTensor/NestedTensor).</span> +<span class="sd">- Triton version supports attention bias, while CUDA version doesn&#39;t.</span> +<span class="sd">&quot;&quot;&quot;</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">math</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">triton</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">triton.language</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">tl</span> + + +<span class="c1"># Disabling autotune for now, set num_warps=4 if headdim=64 and num_warps=8 if headdim=128</span> +<span class="c1"># @triton.autotune(</span> +<span class="c1"># configs=[</span> +<span class="c1"># triton.Config({&quot;BLOCK_M&quot;: 128, &quot;BLOCK_N&quot;: 128}, num_warps=4, num_stages=1),</span> +<span class="c1"># # This config has a race condition when EVEN_M == False, disabling it for now.</span> +<span class="c1"># # triton.Config({&quot;BLOCK_M&quot;: 64, &quot;BLOCK_N&quot;: 64}, num_warps=4, num_stages=1),</span> +<span class="c1"># ],</span> +<span class="c1"># key=[&#39;CACHE_KEY_SEQLEN_Q&#39;, &#39;CACHE_KEY_SEQLEN_K&#39;, &#39;BIAS_TYPE&#39;, &#39;IS_CAUSAL&#39;, &#39;BLOCK_HEADDIM&#39;]</span> +<span class="c1"># )</span> +<span class="nd">@triton</span><span class="o">.</span><span class="n">heuristics</span><span class="p">(</span> + <span class="p">{</span> + <span class="s2">&quot;EVEN_M&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;seqlen_q&quot;</span><span class="p">]</span> <span class="o">%</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;BLOCK_M&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span> + <span class="s2">&quot;EVEN_N&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;seqlen_k&quot;</span><span class="p">]</span> <span class="o">%</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;BLOCK_N&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span> + <span class="s2">&quot;EVEN_HEADDIM&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;headdim&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;BLOCK_HEADDIM&quot;</span><span class="p">],</span> + <span class="p">}</span> +<span class="p">)</span> +<span class="nd">@triton</span><span class="o">.</span><span class="n">jit</span> +<div class="viewcode-block" id="_fwd_kernel"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention._fwd_kernel">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_fwd_kernel</span><span class="p">(</span> + <span class="n">Q</span><span class="p">,</span> <span class="n">K</span><span class="p">,</span> <span class="n">V</span><span class="p">,</span> <span class="n">Bias</span><span class="p">,</span> <span class="n">Out</span><span class="p">,</span> + <span class="n">Lse</span><span class="p">,</span> <span class="n">TMP</span><span class="p">,</span> <span class="c1"># NOTE: TMP is a scratchpad buffer to workaround a compiler bug</span> + <span class="n">softmax_scale</span><span class="p">,</span> + <span class="n">stride_qb</span><span class="p">,</span> <span class="n">stride_qh</span><span class="p">,</span> <span class="n">stride_qm</span><span class="p">,</span> + <span class="n">stride_kb</span><span class="p">,</span> <span class="n">stride_kh</span><span class="p">,</span> <span class="n">stride_kn</span><span class="p">,</span> + <span class="n">stride_vb</span><span class="p">,</span> <span class="n">stride_vh</span><span class="p">,</span> <span class="n">stride_vn</span><span class="p">,</span> + <span class="n">stride_bb</span><span class="p">,</span> <span class="n">stride_bh</span><span class="p">,</span> <span class="n">stride_bm</span><span class="p">,</span> + <span class="n">stride_ob</span><span class="p">,</span> <span class="n">stride_oh</span><span class="p">,</span> <span class="n">stride_om</span><span class="p">,</span> + <span class="n">nheads</span><span class="p">,</span> <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">seqlen_q_rounded</span><span class="p">,</span> <span class="n">headdim</span><span class="p">,</span> + <span class="n">CACHE_KEY_SEQLEN_Q</span><span class="p">,</span> <span class="n">CACHE_KEY_SEQLEN_K</span><span class="p">,</span> + <span class="n">BIAS_TYPE</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> + <span class="n">IS_CAUSAL</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> + <span class="n">BLOCK_HEADDIM</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> + <span class="n">EVEN_M</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> <span class="n">EVEN_N</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> + <span class="n">BLOCK_M</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> <span class="n">BLOCK_N</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> +<span class="p">):</span> + <span class="n">start_m</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">program_id</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> + <span class="n">off_hb</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">program_id</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> + <span class="n">off_b</span> <span class="o">=</span> <span class="n">off_hb</span> <span class="o">//</span> <span class="n">nheads</span> + <span class="n">off_h</span> <span class="o">=</span> <span class="n">off_hb</span> <span class="o">%</span> <span class="n">nheads</span> + <span class="c1"># off_b = tl.program_id(1)</span> + <span class="c1"># off_h = tl.program_id(2)</span> + <span class="c1"># off_hb = off_b * nheads + off_h</span> + <span class="c1"># initialize offsets</span> + <span class="n">offs_m</span> <span class="o">=</span> <span class="n">start_m</span> <span class="o">*</span> <span class="n">BLOCK_M</span> <span class="o">+</span> <span class="n">tl</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">BLOCK_M</span><span class="p">)</span> + <span class="n">offs_n</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">BLOCK_N</span><span class="p">)</span> + <span class="n">offs_d</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">BLOCK_HEADDIM</span><span class="p">)</span> + <span class="c1"># Initialize pointers to Q, K, V</span> + <span class="c1"># Adding parenthesis around indexing might use int32 math instead of int64 math?</span> + <span class="c1"># https://github.com/openai/triton/issues/741</span> + <span class="c1"># I&#39;m seeing a tiny bit of difference (5-7us)</span> + <span class="n">q_ptrs</span> <span class="o">=</span> <span class="n">Q</span> <span class="o">+</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_qb</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_qh</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_m</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_qm</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="n">k_ptrs</span> <span class="o">=</span> <span class="n">K</span> <span class="o">+</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_kb</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_kh</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_kn</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="n">v_ptrs</span> <span class="o">=</span> <span class="n">V</span> <span class="o">+</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_vb</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_vh</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_vn</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="k">if</span> <span class="n">BIAS_TYPE</span> <span class="o">==</span> <span class="s1">&#39;vector&#39;</span><span class="p">:</span> + <span class="n">b_ptrs</span> <span class="o">=</span> <span class="n">Bias</span> <span class="o">+</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_bb</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_bh</span> <span class="o">+</span> <span class="n">offs_n</span> + <span class="k">elif</span> <span class="n">BIAS_TYPE</span> <span class="o">==</span> <span class="s1">&#39;matrix&#39;</span><span class="p">:</span> + <span class="n">b_ptrs</span> <span class="o">=</span> <span class="n">Bias</span> <span class="o">+</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_bb</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_bh</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_m</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_bm</span> <span class="o">+</span> <span class="n">offs_n</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="c1"># initialize pointer to m and l</span> + <span class="n">t_ptrs</span> <span class="o">=</span> <span class="n">TMP</span> <span class="o">+</span> <span class="n">off_hb</span> <span class="o">*</span> <span class="n">seqlen_q_rounded</span> <span class="o">+</span> <span class="n">offs_m</span> + <span class="n">lse_i</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">zeros</span><span class="p">([</span><span class="n">BLOCK_M</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> <span class="o">-</span> <span class="nb">float</span><span class="p">(</span><span class="s2">&quot;inf&quot;</span><span class="p">)</span> + <span class="n">m_i</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">zeros</span><span class="p">([</span><span class="n">BLOCK_M</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> <span class="o">-</span> <span class="nb">float</span><span class="p">(</span><span class="s2">&quot;inf&quot;</span><span class="p">)</span> + <span class="n">acc_o</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">zeros</span><span class="p">([</span><span class="n">BLOCK_M</span><span class="p">,</span> <span class="n">BLOCK_HEADDIM</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="c1"># load q: it will stay in SRAM throughout</span> + <span class="c1"># [2022-10-30] TD: Triton bug - in the case of EVEN_M=True and EVEN_N=False, if we just call</span> + <span class="c1"># tl.load(q_ptrs), we get the wrong output!</span> + <span class="k">if</span> <span class="n">EVEN_M</span> <span class="o">&amp;</span> <span class="n">EVEN_N</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">q</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">q_ptrs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">q</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">q_ptrs</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">,</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">q</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">q_ptrs</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_m</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">q</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">q_ptrs</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_m</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">),</span> + <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="c1"># loop over k, v and update accumulator</span> + <span class="n">end_n</span> <span class="o">=</span> <span class="n">seqlen_k</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">IS_CAUSAL</span> <span class="k">else</span> <span class="n">tl</span><span class="o">.</span><span class="n">minimum</span><span class="p">((</span><span class="n">start_m</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">BLOCK_M</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">)</span> + <span class="k">for</span> <span class="n">start_n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">end_n</span><span class="p">,</span> <span class="n">BLOCK_N</span><span class="p">):</span> + <span class="n">start_n</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">multiple_of</span><span class="p">(</span><span class="n">start_n</span><span class="p">,</span> <span class="n">BLOCK_N</span><span class="p">)</span> + <span class="c1"># -- compute qk ----</span> + <span class="k">if</span> <span class="n">EVEN_N</span> <span class="o">&amp;</span> <span class="n">EVEN_M</span><span class="p">:</span> <span class="c1"># If we just do &quot;if EVEN_N&quot;, there seems to be some race condition</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">k</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">k_ptrs</span> <span class="o">+</span> <span class="n">start_n</span> <span class="o">*</span> <span class="n">stride_kn</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">k</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">k_ptrs</span> <span class="o">+</span> <span class="n">start_n</span> <span class="o">*</span> <span class="n">stride_kn</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">,</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">k</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">k_ptrs</span> <span class="o">+</span> <span class="n">start_n</span> <span class="o">*</span> <span class="n">stride_kn</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">start_n</span> <span class="o">+</span> <span class="n">offs_n</span><span class="p">)[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">,</span> + <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">k</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">k_ptrs</span> <span class="o">+</span> <span class="n">start_n</span> <span class="o">*</span> <span class="n">stride_kn</span><span class="p">,</span> + <span class="n">mask</span><span class="o">=</span><span class="p">((</span><span class="n">start_n</span> <span class="o">+</span> <span class="n">offs_n</span><span class="p">)[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">),</span> + <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="n">qk</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">zeros</span><span class="p">([</span><span class="n">BLOCK_M</span><span class="p">,</span> <span class="n">BLOCK_N</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="n">qk</span> <span class="o">+=</span> <span class="n">tl</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">q</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">trans_b</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="c1"># Trying to combine the two masks seem to make the result wrong</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">EVEN_N</span><span class="p">:</span> <span class="c1"># Need to mask out otherwise the softmax is wrong</span> + <span class="n">qk</span> <span class="o">+=</span> <span class="n">tl</span><span class="o">.</span><span class="n">where</span><span class="p">((</span><span class="n">start_n</span> <span class="o">+</span> <span class="n">offs_n</span><span class="p">)[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">float</span><span class="p">(</span><span class="s2">&quot;-inf&quot;</span><span class="p">))</span> + <span class="k">if</span> <span class="n">IS_CAUSAL</span><span class="p">:</span> + <span class="n">qk</span> <span class="o">+=</span> <span class="n">tl</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">offs_m</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="p">(</span><span class="n">start_n</span> <span class="o">+</span> <span class="n">offs_n</span><span class="p">)[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:],</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">float</span><span class="p">(</span><span class="s2">&quot;-inf&quot;</span><span class="p">))</span> + <span class="k">if</span> <span class="n">BIAS_TYPE</span> <span class="o">!=</span> <span class="s1">&#39;none&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">BIAS_TYPE</span> <span class="o">==</span> <span class="s1">&#39;vector&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_N</span><span class="p">:</span> + <span class="n">bias</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">b_ptrs</span> <span class="o">+</span> <span class="n">start_n</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">bias</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">b_ptrs</span> <span class="o">+</span> <span class="n">start_n</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">start_n</span> <span class="o">+</span> <span class="n">offs_n</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="n">bias</span> <span class="o">=</span> <span class="n">bias</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> + <span class="k">elif</span> <span class="n">BIAS_TYPE</span> <span class="o">==</span> <span class="s1">&#39;matrix&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_M</span> <span class="o">&amp;</span> <span class="n">EVEN_N</span><span class="p">:</span> + <span class="n">bias</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">b_ptrs</span> <span class="o">+</span> <span class="n">start_n</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">bias</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">b_ptrs</span> <span class="o">+</span> <span class="n">start_n</span><span class="p">,</span> + <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_m</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">)</span> + <span class="o">&amp;</span> <span class="p">((</span><span class="n">start_n</span> <span class="o">+</span> <span class="n">offs_n</span><span class="p">)[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">),</span> + <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="c1"># Slightly faster to multiply the softmax_scale in the tl.exp below since the compiler</span> + <span class="c1"># can then fuse the mult and add into an fma instruction. But if we have bias we need to</span> + <span class="c1"># to multiply with softmax_scale here.</span> + <span class="n">qk</span> <span class="o">=</span> <span class="n">qk</span> <span class="o">*</span> <span class="n">softmax_scale</span> <span class="o">+</span> <span class="n">bias</span> + <span class="n">m_ij</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">maximum</span><span class="p">(</span><span class="n">tl</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">qk</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">lse_i</span><span class="p">)</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">qk</span> <span class="o">-</span> <span class="n">m_ij</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">m_ij</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">maximum</span><span class="p">(</span><span class="n">tl</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">qk</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">softmax_scale</span><span class="p">,</span> <span class="n">lse_i</span><span class="p">)</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">qk</span> <span class="o">*</span> <span class="n">softmax_scale</span> <span class="o">-</span> <span class="n">m_ij</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">])</span> + <span class="n">l_ij</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> + + <span class="c1"># scale acc_o</span> + <span class="n">acc_o_scale</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">m_i</span> <span class="o">-</span> <span class="n">m_ij</span><span class="p">)</span> + + <span class="c1"># # -- update output accumulator --</span> + <span class="c1"># BUG: have to store and immediately load</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">t_ptrs</span><span class="p">,</span> <span class="n">acc_o_scale</span><span class="p">)</span> + <span class="n">acc_o_scale</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">t_ptrs</span><span class="p">)</span> + <span class="n">acc_o</span> <span class="o">=</span> <span class="n">acc_o</span> <span class="o">*</span> <span class="n">acc_o_scale</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> + <span class="c1"># update acc_o</span> + <span class="k">if</span> <span class="n">EVEN_N</span> <span class="o">&amp;</span> <span class="n">EVEN_M</span><span class="p">:</span> <span class="c1"># If we just do &quot;if EVEN_N&quot;, there seems to be some race condition</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">v</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">v_ptrs</span> <span class="o">+</span> <span class="n">start_n</span> <span class="o">*</span> <span class="n">stride_vn</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">v</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">v_ptrs</span> <span class="o">+</span> <span class="n">start_n</span> <span class="o">*</span> <span class="n">stride_vn</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">,</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">v</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">v_ptrs</span> <span class="o">+</span> <span class="n">start_n</span> <span class="o">*</span> <span class="n">stride_vn</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">start_n</span> <span class="o">+</span> <span class="n">offs_n</span><span class="p">)[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">,</span> + <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">v</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">v_ptrs</span> <span class="o">+</span> <span class="n">start_n</span> <span class="o">*</span> <span class="n">stride_vn</span><span class="p">,</span> + <span class="n">mask</span><span class="o">=</span><span class="p">((</span><span class="n">start_n</span> <span class="o">+</span> <span class="n">offs_n</span><span class="p">)[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">),</span> + <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">v</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span> + <span class="n">acc_o</span> <span class="o">+=</span> <span class="n">tl</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> + + <span class="c1"># -- update statistics</span> + <span class="n">m_i</span> <span class="o">=</span> <span class="n">m_ij</span> + <span class="n">l_i_new</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">lse_i</span> <span class="o">-</span> <span class="n">m_ij</span><span class="p">)</span> <span class="o">+</span> <span class="n">l_ij</span> + <span class="n">lse_i</span> <span class="o">=</span> <span class="n">m_ij</span> <span class="o">+</span> <span class="n">tl</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">l_i_new</span><span class="p">)</span> + + <span class="n">o_scale</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">m_i</span> <span class="o">-</span> <span class="n">lse_i</span><span class="p">)</span> + <span class="c1"># BUG: have to store and immediately load</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">t_ptrs</span><span class="p">,</span> <span class="n">o_scale</span><span class="p">)</span> + <span class="n">o_scale</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">t_ptrs</span><span class="p">)</span> + <span class="n">acc_o</span> <span class="o">=</span> <span class="n">acc_o</span> <span class="o">*</span> <span class="n">o_scale</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> + <span class="c1"># rematerialize offsets to save registers</span> + <span class="n">start_m</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">program_id</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> + <span class="n">offs_m</span> <span class="o">=</span> <span class="n">start_m</span> <span class="o">*</span> <span class="n">BLOCK_M</span> <span class="o">+</span> <span class="n">tl</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">BLOCK_M</span><span class="p">)</span> + <span class="c1"># write back l and m</span> + <span class="n">lse_ptrs</span> <span class="o">=</span> <span class="n">Lse</span> <span class="o">+</span> <span class="n">off_hb</span> <span class="o">*</span> <span class="n">seqlen_q_rounded</span> <span class="o">+</span> <span class="n">offs_m</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">lse_ptrs</span><span class="p">,</span> <span class="n">lse_i</span><span class="p">)</span> + <span class="c1"># initialize pointers to output</span> + <span class="n">offs_d</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">BLOCK_HEADDIM</span><span class="p">)</span> + <span class="n">out_ptrs</span> <span class="o">=</span> <span class="n">Out</span> <span class="o">+</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_ob</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_oh</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_m</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_om</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="k">if</span> <span class="n">EVEN_M</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">out_ptrs</span><span class="p">,</span> <span class="n">acc_o</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">out_ptrs</span><span class="p">,</span> <span class="n">acc_o</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">out_ptrs</span><span class="p">,</span> <span class="n">acc_o</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_m</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">out_ptrs</span><span class="p">,</span> <span class="n">acc_o</span><span class="p">,</span> + <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_m</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">))</span></div> + + + +<span class="nd">@triton</span><span class="o">.</span><span class="n">jit</span> +<div class="viewcode-block" id="_bwd_preprocess_do_o_dot"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention._bwd_preprocess_do_o_dot">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_bwd_preprocess_do_o_dot</span><span class="p">(</span> + <span class="n">Out</span><span class="p">,</span> <span class="n">DO</span><span class="p">,</span> <span class="n">Delta</span><span class="p">,</span> + <span class="n">stride_ob</span><span class="p">,</span> <span class="n">stride_oh</span><span class="p">,</span> <span class="n">stride_om</span><span class="p">,</span> + <span class="n">stride_dob</span><span class="p">,</span> <span class="n">stride_doh</span><span class="p">,</span> <span class="n">stride_dom</span><span class="p">,</span> + <span class="n">nheads</span><span class="p">,</span> <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">seqlen_q_rounded</span><span class="p">,</span> <span class="n">headdim</span><span class="p">,</span> + <span class="n">BLOCK_M</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> <span class="n">BLOCK_HEADDIM</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> +<span class="p">):</span> + <span class="n">start_m</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">program_id</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> + <span class="n">off_hb</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">program_id</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> + <span class="n">off_b</span> <span class="o">=</span> <span class="n">off_hb</span> <span class="o">//</span> <span class="n">nheads</span> + <span class="n">off_h</span> <span class="o">=</span> <span class="n">off_hb</span> <span class="o">%</span> <span class="n">nheads</span> + <span class="c1"># initialize offsets</span> + <span class="n">offs_m</span> <span class="o">=</span> <span class="n">start_m</span> <span class="o">*</span> <span class="n">BLOCK_M</span> <span class="o">+</span> <span class="n">tl</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">BLOCK_M</span><span class="p">)</span> + <span class="n">offs_d</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">BLOCK_HEADDIM</span><span class="p">)</span> + <span class="c1"># load</span> + <span class="n">o</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">Out</span> <span class="o">+</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_ob</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_oh</span> <span class="o">+</span> <span class="n">offs_m</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_om</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:],</span> + <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_m</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">),</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="n">do</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">DO</span> <span class="o">+</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_dob</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_doh</span> <span class="o">+</span> <span class="n">offs_m</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_dom</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:],</span> + <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_m</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">),</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="n">delta</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">o</span> <span class="o">*</span> <span class="n">do</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + <span class="c1"># write-back</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">Delta</span> <span class="o">+</span> <span class="n">off_hb</span> <span class="o">*</span> <span class="n">seqlen_q_rounded</span> <span class="o">+</span> <span class="n">offs_m</span><span class="p">,</span> <span class="n">delta</span><span class="p">)</span></div> + + + +<span class="nd">@triton</span><span class="o">.</span><span class="n">jit</span> +<div class="viewcode-block" id="_bwd_store_dk_dv"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention._bwd_store_dk_dv">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_bwd_store_dk_dv</span><span class="p">(</span> + <span class="n">dk_ptrs</span><span class="p">,</span> <span class="n">dv_ptrs</span><span class="p">,</span> <span class="n">dk</span><span class="p">,</span> <span class="n">dv</span><span class="p">,</span> <span class="n">offs_n</span><span class="p">,</span> <span class="n">offs_d</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">headdim</span><span class="p">,</span> + <span class="n">EVEN_M</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> <span class="n">EVEN_N</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> +<span class="p">):</span> + <span class="c1"># [2022-11-01] TD: Same bug. In the case of EVEN_N=True and EVEN_M=False,</span> + <span class="c1"># if we just call tl.store(dv_ptrs), there&#39;s a race condition</span> + <span class="k">if</span> <span class="n">EVEN_N</span> <span class="o">&amp;</span> <span class="n">EVEN_M</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">dv_ptrs</span><span class="p">,</span> <span class="n">dv</span><span class="p">)</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">dk_ptrs</span><span class="p">,</span> <span class="n">dk</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">dv_ptrs</span><span class="p">,</span> <span class="n">dv</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">)</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">dk_ptrs</span><span class="p">,</span> <span class="n">dk</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">dv_ptrs</span><span class="p">,</span> <span class="n">dv</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">)</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">dk_ptrs</span><span class="p">,</span> <span class="n">dk</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">dv_ptrs</span><span class="p">,</span> <span class="n">dv</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">))</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">dk_ptrs</span><span class="p">,</span> <span class="n">dk</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">))</span></div> + + + +<span class="nd">@triton</span><span class="o">.</span><span class="n">jit</span> +<div class="viewcode-block" id="_bwd_kernel_one_col_block"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel_one_col_block">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_bwd_kernel_one_col_block</span><span class="p">(</span> + <span class="n">start_n</span><span class="p">,</span> + <span class="n">Q</span><span class="p">,</span> <span class="n">K</span><span class="p">,</span> <span class="n">V</span><span class="p">,</span> <span class="n">Bias</span><span class="p">,</span> + <span class="n">DO</span><span class="p">,</span> <span class="n">DQ</span><span class="p">,</span> <span class="n">DK</span><span class="p">,</span> <span class="n">DV</span><span class="p">,</span> + <span class="n">LSE</span><span class="p">,</span> <span class="n">D</span><span class="p">,</span> + <span class="n">softmax_scale</span><span class="p">,</span> + <span class="n">stride_qm</span><span class="p">,</span> <span class="n">stride_kn</span><span class="p">,</span> <span class="n">stride_vn</span><span class="p">,</span> <span class="n">stride_bm</span><span class="p">,</span> + <span class="n">stride_dom</span><span class="p">,</span> <span class="n">stride_dqm</span><span class="p">,</span> <span class="n">stride_dkn</span><span class="p">,</span> <span class="n">stride_dvn</span><span class="p">,</span> + <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">headdim</span><span class="p">,</span> + <span class="n">ATOMIC_ADD</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> + <span class="n">BIAS_TYPE</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> + <span class="n">IS_CAUSAL</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> + <span class="n">BLOCK_HEADDIM</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> + <span class="n">EVEN_M</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> <span class="n">EVEN_N</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> + <span class="n">BLOCK_M</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> <span class="n">BLOCK_N</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> +<span class="p">):</span> + <span class="c1"># We need to make sure begin_m is a multiple of BLOCK_M (not BLOCK_N)</span> + <span class="n">begin_m</span> <span class="o">=</span> <span class="mi">0</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">IS_CAUSAL</span> <span class="k">else</span> <span class="p">((</span><span class="n">start_n</span> <span class="o">*</span> <span class="n">BLOCK_N</span><span class="p">)</span> <span class="o">//</span> <span class="n">BLOCK_M</span><span class="p">)</span> <span class="o">*</span> <span class="n">BLOCK_M</span> + <span class="c1"># initialize row/col offsets</span> + <span class="n">offs_qm</span> <span class="o">=</span> <span class="n">begin_m</span> <span class="o">+</span> <span class="n">tl</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">BLOCK_M</span><span class="p">)</span> + <span class="n">offs_n</span> <span class="o">=</span> <span class="n">start_n</span> <span class="o">*</span> <span class="n">BLOCK_N</span> <span class="o">+</span> <span class="n">tl</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">BLOCK_N</span><span class="p">)</span> + <span class="n">offs_m</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">BLOCK_M</span><span class="p">)</span> + <span class="n">offs_d</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">BLOCK_HEADDIM</span><span class="p">)</span> + <span class="c1"># initialize pointers to value-like data</span> + <span class="n">q_ptrs</span> <span class="o">=</span> <span class="n">Q</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_qm</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_qm</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="n">k_ptrs</span> <span class="o">=</span> <span class="n">K</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_kn</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="n">v_ptrs</span> <span class="o">=</span> <span class="n">V</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_vn</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="n">do_ptrs</span> <span class="o">=</span> <span class="n">DO</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_qm</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_dom</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="n">dq_ptrs</span> <span class="o">=</span> <span class="n">DQ</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_qm</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_dqm</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="k">if</span> <span class="n">BIAS_TYPE</span> <span class="o">==</span> <span class="s1">&#39;vector&#39;</span><span class="p">:</span> + <span class="n">b_ptrs</span> <span class="o">=</span> <span class="n">Bias</span> <span class="o">+</span> <span class="n">offs_n</span> + <span class="k">elif</span> <span class="n">BIAS_TYPE</span> <span class="o">==</span> <span class="s1">&#39;matrix&#39;</span><span class="p">:</span> + <span class="n">b_ptrs</span> <span class="o">=</span> <span class="n">Bias</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_qm</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_bm</span> <span class="o">+</span> <span class="n">offs_n</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="c1"># initialize dv and dk</span> + <span class="n">dv</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">zeros</span><span class="p">([</span><span class="n">BLOCK_N</span><span class="p">,</span> <span class="n">BLOCK_HEADDIM</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="n">dk</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">zeros</span><span class="p">([</span><span class="n">BLOCK_N</span><span class="p">,</span> <span class="n">BLOCK_HEADDIM</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="c1"># There seems to be some problem with Triton pipelining that makes results wrong for</span> + <span class="c1"># headdim=64, seqlen=(113, 255), bias_type=&#39;matrix&#39;. In this case the for loop</span> + <span class="c1"># may have zero step, and pipelining with the bias matrix could screw it up.</span> + <span class="c1"># So we just exit early.</span> + <span class="k">if</span> <span class="n">begin_m</span> <span class="o">&gt;=</span> <span class="n">seqlen_q</span><span class="p">:</span> + <span class="n">dv_ptrs</span> <span class="o">=</span> <span class="n">DV</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_dvn</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="n">dk_ptrs</span> <span class="o">=</span> <span class="n">DK</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_dkn</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="n">_bwd_store_dk_dv</span><span class="p">(</span><span class="n">dk_ptrs</span><span class="p">,</span> <span class="n">dv_ptrs</span><span class="p">,</span> <span class="n">dk</span><span class="p">,</span> <span class="n">dv</span><span class="p">,</span> <span class="n">offs_n</span><span class="p">,</span> <span class="n">offs_d</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">headdim</span><span class="p">,</span> + <span class="n">EVEN_M</span><span class="o">=</span><span class="n">EVEN_M</span><span class="p">,</span> <span class="n">EVEN_N</span><span class="o">=</span><span class="n">EVEN_N</span><span class="p">,</span> <span class="n">EVEN_HEADDIM</span><span class="o">=</span><span class="n">EVEN_HEADDIM</span><span class="p">)</span> + <span class="k">return</span> + <span class="c1"># k and v stay in SRAM throughout</span> + <span class="c1"># [2022-10-30] TD: Same bug as the fwd. In the case of EVEN_N=True and EVEN_M=False,</span> + <span class="c1"># if we just call tl.load(k_ptrs), we get the wrong output!</span> + <span class="k">if</span> <span class="n">EVEN_N</span> <span class="o">&amp;</span> <span class="n">EVEN_M</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">k</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">k_ptrs</span><span class="p">)</span> + <span class="n">v</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">v_ptrs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">k</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">k_ptrs</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">,</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="n">v</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">v_ptrs</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">,</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">k</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">k_ptrs</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="n">v</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">v_ptrs</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">k</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">k_ptrs</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">),</span> + <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="n">v</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">v_ptrs</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">),</span> + <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="c1"># loop over rows</span> + <span class="n">num_block_m</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">cdiv</span><span class="p">(</span><span class="n">seqlen_q</span><span class="p">,</span> <span class="n">BLOCK_M</span><span class="p">)</span> + <span class="k">for</span> <span class="n">start_m</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">begin_m</span><span class="p">,</span> <span class="n">num_block_m</span> <span class="o">*</span> <span class="n">BLOCK_M</span><span class="p">,</span> <span class="n">BLOCK_M</span><span class="p">):</span> + <span class="n">start_m</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">multiple_of</span><span class="p">(</span><span class="n">start_m</span><span class="p">,</span> <span class="n">BLOCK_M</span><span class="p">)</span> + <span class="n">offs_m_curr</span> <span class="o">=</span> <span class="n">start_m</span> <span class="o">+</span> <span class="n">offs_m</span> + <span class="c1"># load q, k, v, do on-chip</span> + <span class="c1"># Same bug as below. Otherwise gives wrong result for headdim=40, seqlen=(128, 117)</span> + <span class="k">if</span> <span class="n">EVEN_M</span> <span class="o">&amp;</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">q</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">q_ptrs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">q</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">q_ptrs</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_m_curr</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">q</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">q_ptrs</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_m_curr</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">)</span> + <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">),</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="c1"># recompute p = softmax(qk, dim=-1).T</span> + <span class="n">qk</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">q</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">trans_b</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="c1"># Trying to combine the two masks seem to make the result wrong</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">EVEN_N</span><span class="p">:</span> <span class="c1"># Need to mask out otherwise the softmax is wrong</span> + <span class="n">qk</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">offs_n</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">qk</span><span class="p">,</span> <span class="nb">float</span><span class="p">(</span><span class="s2">&quot;-inf&quot;</span><span class="p">))</span> + <span class="k">if</span> <span class="n">IS_CAUSAL</span><span class="p">:</span> + <span class="n">qk</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">offs_m_curr</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="p">(</span><span class="n">offs_n</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]),</span> <span class="n">qk</span><span class="p">,</span> <span class="nb">float</span><span class="p">(</span><span class="s2">&quot;-inf&quot;</span><span class="p">))</span> + <span class="k">if</span> <span class="n">BIAS_TYPE</span> <span class="o">!=</span> <span class="s1">&#39;none&#39;</span><span class="p">:</span> + <span class="n">tl</span><span class="o">.</span><span class="n">debug_barrier</span><span class="p">()</span> <span class="c1"># Race condition otherwise</span> + <span class="k">if</span> <span class="n">BIAS_TYPE</span> <span class="o">==</span> <span class="s1">&#39;vector&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_N</span><span class="p">:</span> + <span class="n">bias</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">b_ptrs</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">bias</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">b_ptrs</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_n</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="n">bias</span> <span class="o">=</span> <span class="n">bias</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> + <span class="k">elif</span> <span class="n">BIAS_TYPE</span> <span class="o">==</span> <span class="s1">&#39;matrix&#39;</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_M</span> <span class="o">&amp;</span> <span class="n">EVEN_N</span><span class="p">:</span> + <span class="n">bias</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">b_ptrs</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">bias</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">b_ptrs</span><span class="p">,</span> + <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_m_curr</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">)</span> + <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_n</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">seqlen_k</span><span class="p">),</span> + <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">tl</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="n">qk</span> <span class="o">=</span> <span class="n">qk</span> <span class="o">*</span> <span class="n">softmax_scale</span> <span class="o">+</span> <span class="n">bias</span> + <span class="c1"># There seems to be a race condition when headdim=48/96, and dq, dk, dv are wrong.</span> + <span class="c1"># Also wrong for headdim=64.</span> + <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">EVEN_M</span> <span class="o">&amp;</span> <span class="n">EVEN_HEADDIM</span><span class="p">):</span> + <span class="n">tl</span><span class="o">.</span><span class="n">debug_barrier</span><span class="p">()</span> + <span class="n">lse_i</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">LSE</span> <span class="o">+</span> <span class="n">offs_m_curr</span><span class="p">)</span> + <span class="k">if</span> <span class="n">BIAS_TYPE</span> <span class="o">==</span> <span class="s1">&#39;none&#39;</span><span class="p">:</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">qk</span> <span class="o">*</span> <span class="n">softmax_scale</span> <span class="o">-</span> <span class="n">lse_i</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">qk</span> <span class="o">-</span> <span class="n">lse_i</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">])</span> + <span class="c1"># compute dv</span> + <span class="c1"># [2022-10-30] TD: A Triton bug: if EVEN_M=True and EVEN_HEADDIM=False, if we call</span> + <span class="c1"># do = tl.load(do_ptrs, mask=offs_d[None, :] &lt; headdim, other=0.0), we get wrong outputs</span> + <span class="c1"># in the case of headdim=48/96, seqlen_q &amp; seqlen_k &gt;= 512. If headdim=40 or seqlen &lt; 512,</span> + <span class="c1"># the output is correct.</span> + <span class="k">if</span> <span class="n">EVEN_M</span> <span class="o">&amp;</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">do</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">do_ptrs</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># [2022-11-01] TD: Triton bug, there&#39;s a race condition if we just use m_mask and not d_mask.</span> + <span class="n">do</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">do_ptrs</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_m_curr</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">)</span> + <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">),</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span> + <span class="c1"># if EVEN_M:</span> + <span class="c1"># if EVEN_HEADDIM:</span> + <span class="c1"># do = tl.load(do_ptrs)</span> + <span class="c1"># else:</span> + <span class="c1"># do = tl.load(do_ptrs, mask=offs_d[None, :] &lt; headdim, other=0.0)</span> + <span class="c1"># else:</span> + <span class="c1"># if EVEN_HEADDIM:</span> + <span class="c1"># do = tl.load(do_ptrs, mask=offs_m_curr[:, None] &lt; seqlen_q, other=0.0)</span> + <span class="c1"># else:</span> + <span class="c1"># do = tl.load(do_ptrs, mask=(offs_m_curr[:, None] &lt; seqlen_q)</span> + <span class="c1"># &amp; (offs_d[None, :] &lt; headdim), other=0.0)</span> + <span class="n">dv</span> <span class="o">+=</span> <span class="n">tl</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">do</span><span class="o">.</span><span class="n">dtype</span><span class="p">),</span> <span class="n">do</span><span class="p">,</span> <span class="n">trans_a</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="c1"># compute dp = dot(v, do)</span> + <span class="c1"># There seems to be a race condition when headdim=48/96, and dq, dk are wrong.</span> + <span class="c1"># Also wrong for headdim=128, seqlen=(108, 256), and ATOMIC_ADD=True</span> + <span class="c1"># Also wrong for headdim=64, seqlen=(1023, 1024), and ATOMIC_ADD=False</span> + <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">EVEN_M</span> <span class="o">&amp;</span> <span class="n">EVEN_HEADDIM</span><span class="p">):</span> + <span class="n">tl</span><span class="o">.</span><span class="n">debug_barrier</span><span class="p">()</span> + <span class="n">dp</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">do</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">trans_b</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="c1"># There&#39;s a race condition for headdim=48</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">tl</span><span class="o">.</span><span class="n">debug_barrier</span><span class="p">()</span> + <span class="c1"># compute ds = p * (dp - delta[:, None])</span> + <span class="c1"># Putting the subtraction after the dp matmul (instead of before) is slightly faster</span> + <span class="n">Di</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">D</span> <span class="o">+</span> <span class="n">offs_m_curr</span><span class="p">)</span> + <span class="c1"># Converting ds to q.dtype here reduces register pressure and makes it much faster</span> + <span class="c1"># for BLOCK_HEADDIM=128</span> + <span class="n">ds</span> <span class="o">=</span> <span class="p">(</span><span class="n">p</span> <span class="o">*</span> <span class="p">(</span><span class="n">dp</span> <span class="o">-</span> <span class="n">Di</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">])</span> <span class="o">*</span> <span class="n">softmax_scale</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">q</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span> + <span class="c1"># compute dk = dot(ds.T, q)</span> + <span class="n">dk</span> <span class="o">+=</span> <span class="n">tl</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">ds</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">trans_a</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="c1"># compute dq</span> + <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">EVEN_M</span> <span class="o">&amp;</span> <span class="n">EVEN_HEADDIM</span><span class="p">):</span> <span class="c1"># Otherewise there&#39;s a race condition when BIAS_TYPE=&#39;matrix&#39;</span> + <span class="n">tl</span><span class="o">.</span><span class="n">debug_barrier</span><span class="p">()</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">ATOMIC_ADD</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_M</span> <span class="o">&amp;</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> <span class="c1"># Race condition if we just do EVEN_M</span> + <span class="n">dq</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">dq_ptrs</span><span class="p">,</span> <span class="n">eviction_policy</span><span class="o">=</span><span class="s2">&quot;evict_last&quot;</span><span class="p">)</span> + <span class="n">dq</span> <span class="o">+=</span> <span class="n">tl</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">ds</span><span class="p">,</span> <span class="n">k</span><span class="p">)</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">dq_ptrs</span><span class="p">,</span> <span class="n">dq</span><span class="p">,</span> <span class="n">eviction_policy</span><span class="o">=</span><span class="s2">&quot;evict_last&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">dq</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">dq_ptrs</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_m_curr</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> + <span class="n">eviction_policy</span><span class="o">=</span><span class="s2">&quot;evict_last&quot;</span><span class="p">)</span> + <span class="n">dq</span> <span class="o">+=</span> <span class="n">tl</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">ds</span><span class="p">,</span> <span class="n">k</span><span class="p">)</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">dq_ptrs</span><span class="p">,</span> <span class="n">dq</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_m_curr</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">,</span> + <span class="n">eviction_policy</span><span class="o">=</span><span class="s2">&quot;evict_last&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">dq</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">dq_ptrs</span><span class="p">,</span> + <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_m_curr</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">),</span> + <span class="n">other</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">eviction_policy</span><span class="o">=</span><span class="s2">&quot;evict_last&quot;</span><span class="p">)</span> + <span class="n">dq</span> <span class="o">+=</span> <span class="n">tl</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">ds</span><span class="p">,</span> <span class="n">k</span><span class="p">)</span> + <span class="n">tl</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">dq_ptrs</span><span class="p">,</span> <span class="n">dq</span><span class="p">,</span> + <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_m_curr</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">),</span> + <span class="n">eviction_policy</span><span class="o">=</span><span class="s2">&quot;evict_last&quot;</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> <span class="c1"># If we&#39;re parallelizing across the seqlen_k dimension</span> + <span class="n">dq</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">ds</span><span class="p">,</span> <span class="n">k</span><span class="p">)</span> + <span class="k">if</span> <span class="n">EVEN_M</span> <span class="o">&amp;</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> <span class="c1"># Race condition if we just do EVEN_M</span> + <span class="n">tl</span><span class="o">.</span><span class="n">atomic_add</span><span class="p">(</span><span class="n">dq_ptrs</span><span class="p">,</span> <span class="n">dq</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> + <span class="n">tl</span><span class="o">.</span><span class="n">atomic_add</span><span class="p">(</span><span class="n">dq_ptrs</span><span class="p">,</span> <span class="n">dq</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">offs_m_curr</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">tl</span><span class="o">.</span><span class="n">atomic_add</span><span class="p">(</span><span class="n">dq_ptrs</span><span class="p">,</span> <span class="n">dq</span><span class="p">,</span> + <span class="n">mask</span><span class="o">=</span><span class="p">(</span><span class="n">offs_m_curr</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">seqlen_q</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:]</span> <span class="o">&lt;</span> <span class="n">headdim</span><span class="p">))</span> + <span class="c1"># increment pointers</span> + <span class="n">dq_ptrs</span> <span class="o">+=</span> <span class="n">BLOCK_M</span> <span class="o">*</span> <span class="n">stride_dqm</span> + <span class="n">q_ptrs</span> <span class="o">+=</span> <span class="n">BLOCK_M</span> <span class="o">*</span> <span class="n">stride_qm</span> + <span class="n">do_ptrs</span> <span class="o">+=</span> <span class="n">BLOCK_M</span> <span class="o">*</span> <span class="n">stride_dom</span> + <span class="k">if</span> <span class="n">BIAS_TYPE</span> <span class="o">==</span> <span class="s1">&#39;matrix&#39;</span><span class="p">:</span> + <span class="n">b_ptrs</span> <span class="o">+=</span> <span class="n">BLOCK_M</span> <span class="o">*</span> <span class="n">stride_bm</span> + <span class="c1"># write-back</span> + <span class="n">dv_ptrs</span> <span class="o">=</span> <span class="n">DV</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_dvn</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="n">dk_ptrs</span> <span class="o">=</span> <span class="n">DK</span> <span class="o">+</span> <span class="p">(</span><span class="n">offs_n</span><span class="p">[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="n">stride_dkn</span> <span class="o">+</span> <span class="n">offs_d</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:])</span> + <span class="n">_bwd_store_dk_dv</span><span class="p">(</span><span class="n">dk_ptrs</span><span class="p">,</span> <span class="n">dv_ptrs</span><span class="p">,</span> <span class="n">dk</span><span class="p">,</span> <span class="n">dv</span><span class="p">,</span> <span class="n">offs_n</span><span class="p">,</span> <span class="n">offs_d</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">headdim</span><span class="p">,</span> + <span class="n">EVEN_M</span><span class="o">=</span><span class="n">EVEN_M</span><span class="p">,</span> <span class="n">EVEN_N</span><span class="o">=</span><span class="n">EVEN_N</span><span class="p">,</span> <span class="n">EVEN_HEADDIM</span><span class="o">=</span><span class="n">EVEN_HEADDIM</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="init_to_zero"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.init_to_zero">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">init_to_zero</span><span class="p">(</span><span class="n">name</span><span class="p">):</span> + <span class="k">return</span> <span class="k">lambda</span> <span class="n">nargs</span><span class="p">:</span> <span class="n">nargs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">zero_</span><span class="p">()</span></div> + + + +<span class="nd">@triton</span><span class="o">.</span><span class="n">autotune</span><span class="p">(</span> + <span class="n">configs</span><span class="o">=</span><span class="p">[</span> + <span class="n">triton</span><span class="o">.</span><span class="n">Config</span><span class="p">({</span><span class="s2">&quot;BLOCK_M&quot;</span><span class="p">:</span> <span class="mi">128</span><span class="p">,</span> <span class="s2">&quot;BLOCK_N&quot;</span><span class="p">:</span> <span class="mi">128</span><span class="p">,</span> <span class="s2">&quot;SEQUENCE_PARALLEL&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">},</span> <span class="n">num_warps</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">num_stages</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">pre_hook</span><span class="o">=</span><span class="n">init_to_zero</span><span class="p">(</span><span class="s1">&#39;DQ&#39;</span><span class="p">)),</span> + <span class="n">triton</span><span class="o">.</span><span class="n">Config</span><span class="p">({</span><span class="s2">&quot;BLOCK_M&quot;</span><span class="p">:</span> <span class="mi">128</span><span class="p">,</span> <span class="s2">&quot;BLOCK_N&quot;</span><span class="p">:</span> <span class="mi">128</span><span class="p">,</span> <span class="s2">&quot;SEQUENCE_PARALLEL&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">},</span> <span class="n">num_warps</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">num_stages</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">pre_hook</span><span class="o">=</span><span class="n">init_to_zero</span><span class="p">(</span><span class="s1">&#39;DQ&#39;</span><span class="p">)),</span> + <span class="c1"># Other configs seem to give wrong results when seqlen_q % 128 != 0, disabling them for now</span> + <span class="c1"># # Kernel is buggy (give wrong result) if we set BLOCK_m=128, BLOCK_n=64, num_warps=*4*</span> + <span class="c1"># triton.Config({&quot;BLOCK_M&quot;: 128, &quot;BLOCK_N&quot;: 64, &quot;SEQUENCE_PARALLEL&quot;: False}, num_warps=8, num_stages=1, pre_hook=init_to_zero(&#39;DQ&#39;)),</span> + <span class="c1"># triton.Config({&quot;BLOCK_M&quot;: 128, &quot;BLOCK_N&quot;: 64, &quot;SEQUENCE_PARALLEL&quot;: True}, num_warps=8, num_stages=1, pre_hook=init_to_zero(&#39;DQ&#39;)),</span> + <span class="c1"># triton.Config({&quot;BLOCK_M&quot;: 64, &quot;BLOCK_N&quot;: 64, &quot;SEQUENCE_PARALLEL&quot;: False}, num_warps=4, num_stages=1, pre_hook=init_to_zero(&#39;DQ&#39;)),</span> + <span class="c1"># triton.Config({&quot;BLOCK_M&quot;: 64, &quot;BLOCK_N&quot;: 64, &quot;SEQUENCE_PARALLEL&quot;: True}, num_warps=4, num_stages=1, pre_hook=init_to_zero(&#39;DQ&#39;)),</span> + <span class="p">],</span> + <span class="n">key</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;CACHE_KEY_SEQLEN_Q&#39;</span><span class="p">,</span> <span class="s1">&#39;CACHE_KEY_SEQLEN_K&#39;</span><span class="p">,</span> <span class="s1">&#39;BIAS_TYPE&#39;</span><span class="p">,</span> <span class="s1">&#39;IS_CAUSAL&#39;</span><span class="p">,</span> <span class="s1">&#39;BLOCK_HEADDIM&#39;</span><span class="p">],</span> +<span class="p">)</span> +<span class="nd">@triton</span><span class="o">.</span><span class="n">heuristics</span><span class="p">(</span> + <span class="p">{</span> + <span class="s2">&quot;EVEN_M&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;seqlen_q&quot;</span><span class="p">]</span> <span class="o">%</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;BLOCK_M&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span> + <span class="s2">&quot;EVEN_N&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;seqlen_k&quot;</span><span class="p">]</span> <span class="o">%</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;BLOCK_N&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span> + <span class="s2">&quot;EVEN_HEADDIM&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;headdim&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="n">args</span><span class="p">[</span><span class="s2">&quot;BLOCK_HEADDIM&quot;</span><span class="p">],</span> + <span class="p">}</span> +<span class="p">)</span> +<span class="nd">@triton</span><span class="o">.</span><span class="n">jit</span> +<div class="viewcode-block" id="_bwd_kernel"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_bwd_kernel</span><span class="p">(</span> + <span class="n">Q</span><span class="p">,</span> <span class="n">K</span><span class="p">,</span> <span class="n">V</span><span class="p">,</span> <span class="n">Bias</span><span class="p">,</span> + <span class="n">DO</span><span class="p">,</span> <span class="n">DQ</span><span class="p">,</span> <span class="n">DK</span><span class="p">,</span> <span class="n">DV</span><span class="p">,</span> + <span class="n">LSE</span><span class="p">,</span> <span class="n">D</span><span class="p">,</span> + <span class="n">softmax_scale</span><span class="p">,</span> + <span class="n">stride_qb</span><span class="p">,</span> <span class="n">stride_qh</span><span class="p">,</span> <span class="n">stride_qm</span><span class="p">,</span> + <span class="n">stride_kb</span><span class="p">,</span> <span class="n">stride_kh</span><span class="p">,</span> <span class="n">stride_kn</span><span class="p">,</span> + <span class="n">stride_vb</span><span class="p">,</span> <span class="n">stride_vh</span><span class="p">,</span> <span class="n">stride_vn</span><span class="p">,</span> + <span class="n">stride_bb</span><span class="p">,</span> <span class="n">stride_bh</span><span class="p">,</span> <span class="n">stride_bm</span><span class="p">,</span> + <span class="n">stride_dob</span><span class="p">,</span> <span class="n">stride_doh</span><span class="p">,</span> <span class="n">stride_dom</span><span class="p">,</span> + <span class="n">stride_dqb</span><span class="p">,</span> <span class="n">stride_dqh</span><span class="p">,</span> <span class="n">stride_dqm</span><span class="p">,</span> + <span class="n">stride_dkb</span><span class="p">,</span> <span class="n">stride_dkh</span><span class="p">,</span> <span class="n">stride_dkn</span><span class="p">,</span> + <span class="n">stride_dvb</span><span class="p">,</span> <span class="n">stride_dvh</span><span class="p">,</span> <span class="n">stride_dvn</span><span class="p">,</span> + <span class="n">nheads</span><span class="p">,</span> <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">seqlen_q_rounded</span><span class="p">,</span> <span class="n">headdim</span><span class="p">,</span> + <span class="n">CACHE_KEY_SEQLEN_Q</span><span class="p">,</span> <span class="n">CACHE_KEY_SEQLEN_K</span><span class="p">,</span> + <span class="n">BIAS_TYPE</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> + <span class="n">IS_CAUSAL</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> + <span class="n">BLOCK_HEADDIM</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> + <span class="n">SEQUENCE_PARALLEL</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> + <span class="n">EVEN_M</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> <span class="n">EVEN_N</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> <span class="n">EVEN_HEADDIM</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> + <span class="n">BLOCK_M</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> <span class="n">BLOCK_N</span><span class="p">:</span> <span class="n">tl</span><span class="o">.</span><span class="n">constexpr</span><span class="p">,</span> +<span class="p">):</span> + <span class="n">off_hb</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">program_id</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> + <span class="n">off_b</span> <span class="o">=</span> <span class="n">off_hb</span> <span class="o">//</span> <span class="n">nheads</span> + <span class="n">off_h</span> <span class="o">=</span> <span class="n">off_hb</span> <span class="o">%</span> <span class="n">nheads</span> + <span class="c1"># offset pointers for batch/head</span> + <span class="n">Q</span> <span class="o">+=</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_qb</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_qh</span> + <span class="n">K</span> <span class="o">+=</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_kb</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_kh</span> + <span class="n">V</span> <span class="o">+=</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_vb</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_vh</span> + <span class="n">DO</span> <span class="o">+=</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_dob</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_doh</span> + <span class="n">DQ</span> <span class="o">+=</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_dqb</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_dqh</span> + <span class="n">DK</span> <span class="o">+=</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_dkb</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_dkh</span> + <span class="n">DV</span> <span class="o">+=</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_dvb</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_dvh</span> + <span class="k">if</span> <span class="n">BIAS_TYPE</span> <span class="o">!=</span> <span class="s1">&#39;none&#39;</span><span class="p">:</span> + <span class="n">Bias</span> <span class="o">+=</span> <span class="n">off_b</span> <span class="o">*</span> <span class="n">stride_bb</span> <span class="o">+</span> <span class="n">off_h</span> <span class="o">*</span> <span class="n">stride_bh</span> + <span class="c1"># pointer to row-wise quantities in value-like data</span> + <span class="n">D</span> <span class="o">+=</span> <span class="n">off_hb</span> <span class="o">*</span> <span class="n">seqlen_q_rounded</span> + <span class="n">LSE</span> <span class="o">+=</span> <span class="n">off_hb</span> <span class="o">*</span> <span class="n">seqlen_q_rounded</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">SEQUENCE_PARALLEL</span><span class="p">:</span> + <span class="n">num_block_n</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">cdiv</span><span class="p">(</span><span class="n">seqlen_k</span><span class="p">,</span> <span class="n">BLOCK_N</span><span class="p">)</span> + <span class="k">for</span> <span class="n">start_n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">num_block_n</span><span class="p">):</span> + <span class="n">_bwd_kernel_one_col_block</span><span class="p">(</span> + <span class="n">start_n</span><span class="p">,</span> + <span class="n">Q</span><span class="p">,</span> <span class="n">K</span><span class="p">,</span> <span class="n">V</span><span class="p">,</span> <span class="n">Bias</span><span class="p">,</span> + <span class="n">DO</span><span class="p">,</span> <span class="n">DQ</span><span class="p">,</span> <span class="n">DK</span><span class="p">,</span> <span class="n">DV</span><span class="p">,</span> + <span class="n">LSE</span><span class="p">,</span> <span class="n">D</span><span class="p">,</span> + <span class="n">softmax_scale</span><span class="p">,</span> + <span class="n">stride_qm</span><span class="p">,</span> <span class="n">stride_kn</span><span class="p">,</span> <span class="n">stride_vn</span><span class="p">,</span> <span class="n">stride_bm</span><span class="p">,</span> + <span class="n">stride_dom</span><span class="p">,</span> <span class="n">stride_dqm</span><span class="p">,</span> <span class="n">stride_dkn</span><span class="p">,</span> <span class="n">stride_dvn</span><span class="p">,</span> + <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">headdim</span><span class="p">,</span> + <span class="n">ATOMIC_ADD</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">BIAS_TYPE</span><span class="o">=</span><span class="n">BIAS_TYPE</span><span class="p">,</span> + <span class="n">IS_CAUSAL</span><span class="o">=</span><span class="n">IS_CAUSAL</span><span class="p">,</span> + <span class="n">BLOCK_HEADDIM</span><span class="o">=</span><span class="n">BLOCK_HEADDIM</span><span class="p">,</span> + <span class="n">EVEN_M</span><span class="o">=</span><span class="n">EVEN_M</span><span class="p">,</span> <span class="n">EVEN_N</span><span class="o">=</span><span class="n">EVEN_N</span><span class="p">,</span> <span class="n">EVEN_HEADDIM</span><span class="o">=</span><span class="n">EVEN_HEADDIM</span><span class="p">,</span> + <span class="n">BLOCK_M</span><span class="o">=</span><span class="n">BLOCK_M</span><span class="p">,</span> <span class="n">BLOCK_N</span><span class="o">=</span><span class="n">BLOCK_N</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">start_n</span> <span class="o">=</span> <span class="n">tl</span><span class="o">.</span><span class="n">program_id</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> + <span class="n">_bwd_kernel_one_col_block</span><span class="p">(</span> + <span class="n">start_n</span><span class="p">,</span> + <span class="n">Q</span><span class="p">,</span> <span class="n">K</span><span class="p">,</span> <span class="n">V</span><span class="p">,</span> <span class="n">Bias</span><span class="p">,</span> + <span class="n">DO</span><span class="p">,</span> <span class="n">DQ</span><span class="p">,</span> <span class="n">DK</span><span class="p">,</span> <span class="n">DV</span><span class="p">,</span> + <span class="n">LSE</span><span class="p">,</span> <span class="n">D</span><span class="p">,</span> + <span class="n">softmax_scale</span><span class="p">,</span> + <span class="n">stride_qm</span><span class="p">,</span> <span class="n">stride_kn</span><span class="p">,</span> <span class="n">stride_vn</span><span class="p">,</span> <span class="n">stride_bm</span><span class="p">,</span> + <span class="n">stride_dom</span><span class="p">,</span> <span class="n">stride_dqm</span><span class="p">,</span> <span class="n">stride_dkn</span><span class="p">,</span> <span class="n">stride_dvn</span><span class="p">,</span> + <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">headdim</span><span class="p">,</span> + <span class="n">ATOMIC_ADD</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">BIAS_TYPE</span><span class="o">=</span><span class="n">BIAS_TYPE</span><span class="p">,</span> + <span class="n">IS_CAUSAL</span><span class="o">=</span><span class="n">IS_CAUSAL</span><span class="p">,</span> + <span class="n">BLOCK_HEADDIM</span><span class="o">=</span><span class="n">BLOCK_HEADDIM</span><span class="p">,</span> + <span class="n">EVEN_M</span><span class="o">=</span><span class="n">EVEN_M</span><span class="p">,</span> <span class="n">EVEN_N</span><span class="o">=</span><span class="n">EVEN_N</span><span class="p">,</span> <span class="n">EVEN_HEADDIM</span><span class="o">=</span><span class="n">EVEN_HEADDIM</span><span class="p">,</span> + <span class="n">BLOCK_M</span><span class="o">=</span><span class="n">BLOCK_M</span><span class="p">,</span> <span class="n">BLOCK_N</span><span class="o">=</span><span class="n">BLOCK_N</span> + <span class="p">)</span></div> + + + +<div class="viewcode-block" id="_flash_attn_forward"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention._flash_attn_forward">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_flash_attn_forward</span><span class="p">(</span><span class="n">q</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">softmax_scale</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="c1"># shape constraints</span> + <span class="n">batch</span><span class="p">,</span> <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">nheads</span><span class="p">,</span> <span class="n">d</span> <span class="o">=</span> <span class="n">q</span><span class="o">.</span><span class="n">shape</span> + <span class="n">_</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">k</span><span class="o">.</span><span class="n">shape</span> + <span class="k">assert</span> <span class="n">k</span><span class="o">.</span><span class="n">shape</span> <span class="o">==</span> <span class="p">(</span><span class="n">batch</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">nheads</span><span class="p">,</span> <span class="n">d</span><span class="p">)</span> + <span class="k">assert</span> <span class="n">v</span><span class="o">.</span><span class="n">shape</span> <span class="o">==</span> <span class="p">(</span><span class="n">batch</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">nheads</span><span class="p">,</span> <span class="n">d</span><span class="p">)</span> + <span class="k">assert</span> <span class="n">d</span> <span class="o">&lt;=</span> <span class="mi">128</span><span class="p">,</span> <span class="s1">&#39;FlashAttention only support head dimensions up to 128&#39;</span> + <span class="k">assert</span> <span class="n">q</span><span class="o">.</span><span class="n">dtype</span> <span class="o">==</span> <span class="n">k</span><span class="o">.</span><span class="n">dtype</span> <span class="o">==</span> <span class="n">v</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span> <span class="s1">&#39;All tensors must have the same type&#39;</span> + <span class="k">assert</span> <span class="n">q</span><span class="o">.</span><span class="n">dtype</span> <span class="ow">in</span> <span class="p">[</span><span class="n">torch</span><span class="o">.</span><span class="n">float16</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">bfloat16</span><span class="p">],</span> <span class="s1">&#39;Only support fp16 and bf16&#39;</span> + <span class="k">assert</span> <span class="n">q</span><span class="o">.</span><span class="n">is_cuda</span> <span class="ow">and</span> <span class="n">k</span><span class="o">.</span><span class="n">is_cuda</span> <span class="ow">and</span> <span class="n">v</span><span class="o">.</span><span class="n">is_cuda</span> + <span class="n">softmax_scale</span> <span class="o">=</span> <span class="n">softmax_scale</span> <span class="ow">or</span> <span class="mf">1.0</span> <span class="o">/</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> + + <span class="n">has_bias</span> <span class="o">=</span> <span class="n">bias</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> + <span class="n">bias_type</span> <span class="o">=</span> <span class="s1">&#39;none&#39;</span> + <span class="k">if</span> <span class="n">has_bias</span><span class="p">:</span> + <span class="k">assert</span> <span class="n">bias</span><span class="o">.</span><span class="n">dtype</span> <span class="ow">in</span> <span class="p">[</span><span class="n">q</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">float</span><span class="p">]</span> + <span class="k">assert</span> <span class="n">bias</span><span class="o">.</span><span class="n">is_cuda</span> + <span class="k">assert</span> <span class="n">bias</span><span class="o">.</span><span class="n">dim</span><span class="p">()</span> <span class="o">==</span> <span class="mi">4</span> + <span class="k">if</span> <span class="n">bias</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">bias</span> <span class="o">=</span> <span class="n">bias</span><span class="o">.</span><span class="n">contiguous</span><span class="p">()</span> + <span class="k">if</span> <span class="n">bias</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span> <span class="o">==</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">):</span> + <span class="n">bias_type</span> <span class="o">=</span> <span class="s1">&#39;vector&#39;</span> + <span class="k">elif</span> <span class="n">bias</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span> <span class="o">==</span> <span class="p">(</span><span class="n">seqlen_q</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">):</span> + <span class="n">bias_type</span> <span class="o">=</span> <span class="s1">&#39;matrix&#39;</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s1">&#39;Last 2 dimensions of bias must be (1, seqlen_k)&#39;</span> + <span class="s1">&#39; or (seqlen_q, seqlen_k)&#39;</span><span class="p">)</span> + <span class="n">bias</span> <span class="o">=</span> <span class="n">bias</span><span class="o">.</span><span class="n">expand</span><span class="p">(</span><span class="n">batch</span><span class="p">,</span> <span class="n">nheads</span><span class="p">,</span> <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">)</span> + <span class="n">bias_strides</span> <span class="o">=</span> <span class="p">(</span><span class="n">bias</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">bias</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="n">bias</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span> <span class="k">if</span> <span class="n">has_bias</span> <span class="k">else</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> + + <span class="n">seqlen_q_rounded</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">seqlen_q</span> <span class="o">/</span> <span class="mi">128</span><span class="p">)</span> <span class="o">*</span> <span class="mi">128</span> + <span class="n">lse</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">empty</span><span class="p">((</span><span class="n">batch</span><span class="p">,</span> <span class="n">nheads</span><span class="p">,</span> <span class="n">seqlen_q_rounded</span><span class="p">),</span> <span class="n">device</span><span class="o">=</span><span class="n">q</span><span class="o">.</span><span class="n">device</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="n">tmp</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">empty</span><span class="p">((</span><span class="n">batch</span><span class="p">,</span> <span class="n">nheads</span><span class="p">,</span> <span class="n">seqlen_q_rounded</span><span class="p">),</span> <span class="n">device</span><span class="o">=</span><span class="n">q</span><span class="o">.</span><span class="n">device</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="n">o</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">empty_like</span><span class="p">(</span><span class="n">q</span><span class="p">)</span> + + <span class="n">BLOCK_HEADDIM</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">triton</span><span class="o">.</span><span class="n">next_power_of_2</span><span class="p">(</span><span class="n">d</span><span class="p">),</span> <span class="mi">16</span><span class="p">)</span> + <span class="n">BLOCK</span> <span class="o">=</span> <span class="mi">128</span> + <span class="n">num_warps</span> <span class="o">=</span> <span class="mi">4</span> <span class="k">if</span> <span class="n">d</span> <span class="o">&lt;=</span> <span class="mi">64</span> <span class="k">else</span> <span class="mi">8</span> + <span class="n">grid</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">META</span><span class="p">:</span> <span class="p">(</span><span class="n">triton</span><span class="o">.</span><span class="n">cdiv</span><span class="p">(</span><span class="n">seqlen_q</span><span class="p">,</span> <span class="n">META</span><span class="p">[</span><span class="s2">&quot;BLOCK_M&quot;</span><span class="p">]),</span> <span class="n">batch</span> <span class="o">*</span> <span class="n">nheads</span><span class="p">)</span> + <span class="n">_fwd_kernel</span><span class="p">[</span><span class="n">grid</span><span class="p">](</span> + <span class="n">q</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">bias</span><span class="p">,</span> <span class="n">o</span><span class="p">,</span> + <span class="n">lse</span><span class="p">,</span> <span class="n">tmp</span><span class="p">,</span> + <span class="n">softmax_scale</span><span class="p">,</span> + <span class="n">q</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">q</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">q</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> + <span class="n">k</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">k</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">k</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> + <span class="n">v</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">v</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">v</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> + <span class="o">*</span><span class="n">bias_strides</span><span class="p">,</span> + <span class="n">o</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">o</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">o</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> + <span class="n">nheads</span><span class="p">,</span> <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">seqlen_q_rounded</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> + <span class="n">seqlen_q</span> <span class="o">//</span> <span class="mi">32</span><span class="p">,</span> <span class="n">seqlen_k</span> <span class="o">//</span> <span class="mi">32</span><span class="p">,</span> <span class="c1"># key for triton cache (limit number of compilations)</span> + <span class="c1"># Can&#39;t use kwargs here because triton autotune expects key to be args, not kwargs</span> + <span class="c1"># IS_CAUSAL=causal, BLOCK_HEADDIM=d,</span> + <span class="n">bias_type</span><span class="p">,</span> <span class="n">causal</span><span class="p">,</span> <span class="n">BLOCK_HEADDIM</span><span class="p">,</span> + <span class="n">BLOCK_M</span><span class="o">=</span><span class="n">BLOCK</span><span class="p">,</span> <span class="n">BLOCK_N</span><span class="o">=</span><span class="n">BLOCK</span><span class="p">,</span> + <span class="n">num_warps</span><span class="o">=</span><span class="n">num_warps</span><span class="p">,</span> + <span class="n">num_stages</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="p">)</span> + <span class="k">return</span> <span class="n">o</span><span class="p">,</span> <span class="n">lse</span><span class="p">,</span> <span class="n">softmax_scale</span> <span class="c1"># softmax_scale could have been updated</span></div> + + + +<div class="viewcode-block" id="_flash_attn_backward"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention._flash_attn_backward">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_flash_attn_backward</span><span class="p">(</span><span class="n">do</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">o</span><span class="p">,</span> <span class="n">lse</span><span class="p">,</span> <span class="n">dq</span><span class="p">,</span> <span class="n">dk</span><span class="p">,</span> <span class="n">dv</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">softmax_scale</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="c1"># Make sure that the last dimension is contiguous</span> + <span class="k">if</span> <span class="n">do</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">do</span> <span class="o">=</span> <span class="n">do</span><span class="o">.</span><span class="n">contiguous</span><span class="p">()</span> + <span class="n">batch</span><span class="p">,</span> <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">nheads</span><span class="p">,</span> <span class="n">d</span> <span class="o">=</span> <span class="n">q</span><span class="o">.</span><span class="n">shape</span> + <span class="n">_</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">k</span><span class="o">.</span><span class="n">shape</span> + <span class="c1"># assert d in {16, 32, 64, 128}</span> + <span class="k">assert</span> <span class="n">d</span> <span class="o">&lt;=</span> <span class="mi">128</span> + <span class="n">seqlen_q_rounded</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">seqlen_q</span> <span class="o">/</span> <span class="mi">128</span><span class="p">)</span> <span class="o">*</span> <span class="mi">128</span> + <span class="k">assert</span> <span class="n">lse</span><span class="o">.</span><span class="n">shape</span> <span class="o">==</span> <span class="p">(</span><span class="n">batch</span><span class="p">,</span> <span class="n">nheads</span><span class="p">,</span> <span class="n">seqlen_q_rounded</span><span class="p">)</span> + <span class="k">assert</span> <span class="n">q</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="n">k</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="n">v</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="n">o</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> + <span class="k">assert</span> <span class="n">dq</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="n">dk</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="n">dv</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> + <span class="n">softmax_scale</span> <span class="o">=</span> <span class="n">softmax_scale</span> <span class="ow">or</span> <span class="mf">1.0</span> <span class="o">/</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> + <span class="c1"># dq_accum = torch.zeros_like(q, dtype=torch.float32)</span> + <span class="n">dq_accum</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">empty_like</span><span class="p">(</span><span class="n">q</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="n">delta</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">empty_like</span><span class="p">(</span><span class="n">lse</span><span class="p">)</span> + <span class="c1"># delta = torch.zeros_like(lse)</span> + + <span class="n">BLOCK_HEADDIM</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">triton</span><span class="o">.</span><span class="n">next_power_of_2</span><span class="p">(</span><span class="n">d</span><span class="p">),</span> <span class="mi">16</span><span class="p">)</span> + <span class="n">grid</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">META</span><span class="p">:</span> <span class="p">(</span><span class="n">triton</span><span class="o">.</span><span class="n">cdiv</span><span class="p">(</span><span class="n">seqlen_q</span><span class="p">,</span> <span class="n">META</span><span class="p">[</span><span class="s2">&quot;BLOCK_M&quot;</span><span class="p">]),</span> <span class="n">batch</span> <span class="o">*</span> <span class="n">nheads</span><span class="p">)</span> + <span class="n">_bwd_preprocess_do_o_dot</span><span class="p">[</span><span class="n">grid</span><span class="p">](</span> + <span class="n">o</span><span class="p">,</span> <span class="n">do</span><span class="p">,</span> <span class="n">delta</span><span class="p">,</span> + <span class="n">o</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">o</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">o</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> + <span class="n">do</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">do</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">do</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> + <span class="n">nheads</span><span class="p">,</span> <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">seqlen_q_rounded</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> + <span class="n">BLOCK_M</span><span class="o">=</span><span class="mi">128</span><span class="p">,</span> <span class="n">BLOCK_HEADDIM</span><span class="o">=</span><span class="n">BLOCK_HEADDIM</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">has_bias</span> <span class="o">=</span> <span class="n">bias</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> + <span class="n">bias_type</span> <span class="o">=</span> <span class="s1">&#39;none&#39;</span> + <span class="k">if</span> <span class="n">has_bias</span><span class="p">:</span> + <span class="k">assert</span> <span class="n">bias</span><span class="o">.</span><span class="n">dtype</span> <span class="ow">in</span> <span class="p">[</span><span class="n">q</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">float</span><span class="p">]</span> + <span class="k">assert</span> <span class="n">bias</span><span class="o">.</span><span class="n">is_cuda</span> + <span class="k">assert</span> <span class="n">bias</span><span class="o">.</span><span class="n">dim</span><span class="p">()</span> <span class="o">==</span> <span class="mi">4</span> + <span class="k">assert</span> <span class="n">bias</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> + <span class="k">if</span> <span class="n">bias</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span> <span class="o">==</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">):</span> + <span class="n">bias_type</span> <span class="o">=</span> <span class="s1">&#39;vector&#39;</span> + <span class="k">elif</span> <span class="n">bias</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span> <span class="o">==</span> <span class="p">(</span><span class="n">seqlen_q</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">):</span> + <span class="n">bias_type</span> <span class="o">=</span> <span class="s1">&#39;matrix&#39;</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s1">&#39;Last 2 dimensions of bias must be (1, seqlen_k)&#39;</span> + <span class="s1">&#39; or (seqlen_q, seqlen_k)&#39;</span><span class="p">)</span> + <span class="n">bias</span> <span class="o">=</span> <span class="n">bias</span><span class="o">.</span><span class="n">expand</span><span class="p">(</span><span class="n">batch</span><span class="p">,</span> <span class="n">nheads</span><span class="p">,</span> <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">)</span> + <span class="n">bias_strides</span> <span class="o">=</span> <span class="p">(</span><span class="n">bias</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">bias</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="n">bias</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span> <span class="k">if</span> <span class="n">has_bias</span> <span class="k">else</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> + + <span class="c1"># BLOCK_M = 128</span> + <span class="c1"># BLOCK_N = 64</span> + <span class="c1"># num_warps = 4</span> + <span class="n">grid</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">META</span><span class="p">:</span> <span class="p">(</span><span class="n">triton</span><span class="o">.</span><span class="n">cdiv</span><span class="p">(</span><span class="n">seqlen_k</span><span class="p">,</span> <span class="n">META</span><span class="p">[</span><span class="s2">&quot;BLOCK_N&quot;</span><span class="p">])</span> <span class="k">if</span> <span class="n">META</span><span class="p">[</span><span class="s2">&quot;SEQUENCE_PARALLEL&quot;</span><span class="p">]</span> <span class="k">else</span> <span class="mi">1</span><span class="p">,</span> + <span class="n">batch</span> <span class="o">*</span> <span class="n">nheads</span><span class="p">)</span> + <span class="n">_bwd_kernel</span><span class="p">[</span><span class="n">grid</span><span class="p">](</span> + <span class="n">q</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">bias</span><span class="p">,</span> + <span class="n">do</span><span class="p">,</span> <span class="n">dq_accum</span><span class="p">,</span> <span class="n">dk</span><span class="p">,</span> <span class="n">dv</span><span class="p">,</span> + <span class="n">lse</span><span class="p">,</span> <span class="n">delta</span><span class="p">,</span> + <span class="n">softmax_scale</span><span class="p">,</span> + <span class="n">q</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">q</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">q</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> + <span class="n">k</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">k</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">k</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> + <span class="n">v</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">v</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">v</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> + <span class="o">*</span><span class="n">bias_strides</span><span class="p">,</span> + <span class="n">do</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">do</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">do</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> + <span class="n">dq_accum</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">dq_accum</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">dq_accum</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> + <span class="n">dk</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">dk</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">dk</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> + <span class="n">dv</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">dv</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">dv</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> + <span class="n">nheads</span><span class="p">,</span> <span class="n">seqlen_q</span><span class="p">,</span> <span class="n">seqlen_k</span><span class="p">,</span> <span class="n">seqlen_q_rounded</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> + <span class="n">seqlen_q</span> <span class="o">//</span> <span class="mi">32</span><span class="p">,</span> <span class="n">seqlen_k</span> <span class="o">//</span> <span class="mi">32</span><span class="p">,</span> <span class="c1"># key for triton cache (limit number of compilations)</span> + <span class="c1"># Can&#39;t use kwargs here because triton autotune expects key to be args, not kwargs</span> + <span class="c1"># IS_CAUSAL=causal, BLOCK_HEADDIM=d,</span> + <span class="n">bias_type</span><span class="p">,</span> <span class="n">causal</span><span class="p">,</span> <span class="n">BLOCK_HEADDIM</span><span class="p">,</span> + <span class="c1"># SEQUENCE_PARALLEL=False,</span> + <span class="c1"># BLOCK_M=BLOCK_M, BLOCK_N=BLOCK_N,</span> + <span class="c1"># num_warps=num_warps,</span> + <span class="c1"># num_stages=1,</span> + <span class="p">)</span> + <span class="n">dq</span><span class="o">.</span><span class="n">copy_</span><span class="p">(</span><span class="n">dq_accum</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="FlashAttnQKVPackedFunc"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">FlashAttnQKVPackedFunc</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">autograd</span><span class="o">.</span><span class="n">Function</span><span class="p">):</span> + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="FlashAttnQKVPackedFunc.forward"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc.forward">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">qkv</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">softmax_scale</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> qkv: (batch, seqlen, 3, nheads, headdim)</span> +<span class="sd"> bias: optional, shape broadcastible to (batch, nheads, seqlen, seqlen).</span> +<span class="sd"> For example, ALiBi mask for causal would have shape (1, nheads, 1, seqlen).</span> +<span class="sd"> ALiBi mask for non-causal would have shape (1, nheads, seqlen, seqlen)</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># Make sure that the last dimension is contiguous</span> + <span class="k">if</span> <span class="n">qkv</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">qkv</span> <span class="o">=</span> <span class="n">qkv</span><span class="o">.</span><span class="n">contiguous</span><span class="p">()</span> + <span class="n">o</span><span class="p">,</span> <span class="n">lse</span><span class="p">,</span> <span class="n">ctx</span><span class="o">.</span><span class="n">softmax_scale</span> <span class="o">=</span> <span class="n">_flash_attn_forward</span><span class="p">(</span> + <span class="n">qkv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">qkv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">qkv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">2</span><span class="p">],</span> <span class="n">bias</span><span class="o">=</span><span class="n">bias</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="n">causal</span><span class="p">,</span> + <span class="n">softmax_scale</span><span class="o">=</span><span class="n">softmax_scale</span> + <span class="p">)</span> + <span class="n">ctx</span><span class="o">.</span><span class="n">save_for_backward</span><span class="p">(</span><span class="n">qkv</span><span class="p">,</span> <span class="n">o</span><span class="p">,</span> <span class="n">lse</span><span class="p">,</span> <span class="n">bias</span><span class="p">)</span> + <span class="n">ctx</span><span class="o">.</span><span class="n">causal</span> <span class="o">=</span> <span class="n">causal</span> + <span class="k">return</span> <span class="n">o</span></div> + + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="FlashAttnQKVPackedFunc.backward"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc.backward">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">backward</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">do</span><span class="p">):</span> + <span class="n">qkv</span><span class="p">,</span> <span class="n">o</span><span class="p">,</span> <span class="n">lse</span><span class="p">,</span> <span class="n">bias</span> <span class="o">=</span> <span class="n">ctx</span><span class="o">.</span><span class="n">saved_tensors</span> + <span class="k">assert</span> <span class="ow">not</span> <span class="n">ctx</span><span class="o">.</span><span class="n">needs_input_grad</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s1">&#39;FlashAttention does not support bias gradient yet&#39;</span> + <span class="c1"># Triton&#39;s autotune causes the Tensor._version to change, and so Pytorch autograd</span> + <span class="c1"># does a memcpy. To avoid this we run in inference_mode, which doesn&#39;t track the version.</span> + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">inference_mode</span><span class="p">():</span> + <span class="n">dqkv</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">empty_like</span><span class="p">(</span><span class="n">qkv</span><span class="p">)</span> + <span class="n">_flash_attn_backward</span><span class="p">(</span><span class="n">do</span><span class="p">,</span> <span class="n">qkv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">qkv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">qkv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">2</span><span class="p">],</span> <span class="n">o</span><span class="p">,</span> <span class="n">lse</span><span class="p">,</span> + <span class="n">dqkv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">dqkv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">dqkv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">2</span><span class="p">],</span> + <span class="n">bias</span><span class="o">=</span><span class="n">bias</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="n">ctx</span><span class="o">.</span><span class="n">causal</span><span class="p">,</span> <span class="n">softmax_scale</span><span class="o">=</span><span class="n">ctx</span><span class="o">.</span><span class="n">softmax_scale</span><span class="p">)</span> + <span class="k">return</span> <span class="n">dqkv</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span></div> +</div> + + + +<div class="viewcode-block" id="flash_attn_qkvpacked_func"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_qkvpacked_func">[docs]</a> +<span class="n">flash_attn_qkvpacked_func</span> <span class="o">=</span> <span class="n">FlashAttnQKVPackedFunc</span><span class="o">.</span><span class="n">apply</span></div> + + + +<div class="viewcode-block" id="FlashAttnKVPackedFunc"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">FlashAttnKVPackedFunc</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">autograd</span><span class="o">.</span><span class="n">Function</span><span class="p">):</span> + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="FlashAttnKVPackedFunc.forward"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc.forward">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">kv</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">softmax_scale</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> q: (batch, seqlen_q, nheads, headdim)</span> +<span class="sd"> kv: (batch, seqlen_k, 2, nheads, headdim)</span> +<span class="sd"> bias: optional, shape broadcastible to (batch, nheads, seqlen_q, seqlen_k).</span> +<span class="sd"> For example, ALiBi mask for causal would have shape (1, nheads, 1, seqlen_k).</span> +<span class="sd"> ALiBi mask for non-causal would have shape (1, nheads, seqlen_q, seqlen_k)</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># Make sure that the last dimension is contiguous</span> + <span class="n">q</span><span class="p">,</span> <span class="n">kv</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="k">if</span> <span class="n">x</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="n">x</span><span class="o">.</span><span class="n">contiguous</span><span class="p">()</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[</span><span class="n">q</span><span class="p">,</span> <span class="n">kv</span><span class="p">]]</span> + <span class="n">o</span><span class="p">,</span> <span class="n">lse</span><span class="p">,</span> <span class="n">ctx</span><span class="o">.</span><span class="n">softmax_scale</span> <span class="o">=</span> <span class="n">_flash_attn_forward</span><span class="p">(</span> + <span class="n">q</span><span class="p">,</span> <span class="n">kv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">kv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">bias</span><span class="o">=</span><span class="n">bias</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="n">causal</span><span class="p">,</span> <span class="n">softmax_scale</span><span class="o">=</span><span class="n">softmax_scale</span> + <span class="p">)</span> + <span class="n">ctx</span><span class="o">.</span><span class="n">save_for_backward</span><span class="p">(</span><span class="n">q</span><span class="p">,</span> <span class="n">kv</span><span class="p">,</span> <span class="n">o</span><span class="p">,</span> <span class="n">lse</span><span class="p">,</span> <span class="n">bias</span><span class="p">)</span> + <span class="n">ctx</span><span class="o">.</span><span class="n">causal</span> <span class="o">=</span> <span class="n">causal</span> + <span class="k">return</span> <span class="n">o</span></div> + + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="FlashAttnKVPackedFunc.backward"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc.backward">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">backward</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">do</span><span class="p">):</span> + <span class="n">q</span><span class="p">,</span> <span class="n">kv</span><span class="p">,</span> <span class="n">o</span><span class="p">,</span> <span class="n">lse</span><span class="p">,</span> <span class="n">bias</span> <span class="o">=</span> <span class="n">ctx</span><span class="o">.</span><span class="n">saved_tensors</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ctx</span><span class="o">.</span><span class="n">needs_input_grad</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mi">3</span><span class="p">:</span> + <span class="k">assert</span> <span class="ow">not</span> <span class="n">ctx</span><span class="o">.</span><span class="n">needs_input_grad</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="s1">&#39;FlashAttention does not support bias gradient yet&#39;</span> + <span class="c1"># Triton&#39;s autotune causes the Tensor._version to change, and so Pytorch autograd</span> + <span class="c1"># does a memcpy. To avoid this we run in inference_mode, which doesn&#39;t track the version.</span> + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">inference_mode</span><span class="p">():</span> + <span class="n">dq</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">empty_like</span><span class="p">(</span><span class="n">q</span><span class="p">)</span> + <span class="n">dkv</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">empty_like</span><span class="p">(</span><span class="n">kv</span><span class="p">)</span> + <span class="n">_flash_attn_backward</span><span class="p">(</span><span class="n">do</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">kv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">kv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">o</span><span class="p">,</span> <span class="n">lse</span><span class="p">,</span> + <span class="n">dq</span><span class="p">,</span> <span class="n">dkv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">dkv</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">1</span><span class="p">],</span> + <span class="n">bias</span><span class="o">=</span><span class="n">bias</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="n">ctx</span><span class="o">.</span><span class="n">causal</span><span class="p">,</span> <span class="n">softmax_scale</span><span class="o">=</span><span class="n">ctx</span><span class="o">.</span><span class="n">softmax_scale</span><span class="p">)</span> + <span class="k">return</span> <span class="n">dq</span><span class="p">,</span> <span class="n">dkv</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span></div> +</div> + + + +<div class="viewcode-block" id="flash_attn_kvpacked_func"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_kvpacked_func">[docs]</a> +<span class="n">flash_attn_kvpacked_func</span> <span class="o">=</span> <span class="n">FlashAttnKVPackedFunc</span><span class="o">.</span><span class="n">apply</span></div> + + + +<div class="viewcode-block" id="FlashAttnFunc"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">FlashAttnFunc</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">autograd</span><span class="o">.</span><span class="n">Function</span><span class="p">):</span> + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="FlashAttnFunc.forward"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc.forward">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">softmax_scale</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> +<span class="sd"> q: (batch_size, seqlen_q, nheads, headdim)</span> +<span class="sd"> k, v: (batch_size, seqlen_k, nheads, headdim)</span> +<span class="sd"> bias: optional, shape broadcastible to (batch, nheads, seqlen_q, seqlen_k).</span> +<span class="sd"> For example, ALiBi mask for causal would have shape (1, nheads, 1, seqlen_k).</span> +<span class="sd"> ALiBi mask for non-causal would have shape (1, nheads, seqlen_q, seqlen_k)</span> +<span class="sd"> &quot;&quot;&quot;</span> + <span class="c1"># Make sure that the last dimension is contiguous</span> + <span class="n">q</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="k">if</span> <span class="n">x</span><span class="o">.</span><span class="n">stride</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="n">x</span><span class="o">.</span><span class="n">contiguous</span><span class="p">()</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[</span><span class="n">q</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">]]</span> + <span class="n">o</span><span class="p">,</span> <span class="n">lse</span><span class="p">,</span> <span class="n">ctx</span><span class="o">.</span><span class="n">softmax_scale</span> <span class="o">=</span> <span class="n">_flash_attn_forward</span><span class="p">(</span> + <span class="n">q</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">bias</span><span class="o">=</span><span class="n">bias</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="n">causal</span><span class="p">,</span> <span class="n">softmax_scale</span><span class="o">=</span><span class="n">softmax_scale</span> + <span class="p">)</span> + <span class="n">ctx</span><span class="o">.</span><span class="n">save_for_backward</span><span class="p">(</span><span class="n">q</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">o</span><span class="p">,</span> <span class="n">lse</span><span class="p">,</span> <span class="n">bias</span><span class="p">)</span> + <span class="n">ctx</span><span class="o">.</span><span class="n">causal</span> <span class="o">=</span> <span class="n">causal</span> + <span class="k">return</span> <span class="n">o</span></div> + + + <span class="nd">@staticmethod</span> +<div class="viewcode-block" id="FlashAttnFunc.backward"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc.backward">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">backward</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">do</span><span class="p">):</span> + <span class="n">q</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">o</span><span class="p">,</span> <span class="n">lse</span><span class="p">,</span> <span class="n">bias</span> <span class="o">=</span> <span class="n">ctx</span><span class="o">.</span><span class="n">saved_tensors</span> + <span class="k">assert</span> <span class="ow">not</span> <span class="n">ctx</span><span class="o">.</span><span class="n">needs_input_grad</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="s1">&#39;FlashAttention does not support bias gradient yet&#39;</span> + <span class="c1"># Triton&#39;s autotune causes the Tensor._version to change, and so Pytorch autograd</span> + <span class="c1"># does a memcpy. To avoid this we run in inference_mode, which doesn&#39;t track the version.</span> + <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">inference_mode</span><span class="p">():</span> + <span class="n">dq</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">empty_like</span><span class="p">(</span><span class="n">q</span><span class="p">)</span> + <span class="n">dk</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">empty_like</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> + <span class="n">dv</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">empty_like</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> + <span class="n">_flash_attn_backward</span><span class="p">(</span><span class="n">do</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">o</span><span class="p">,</span> <span class="n">lse</span><span class="p">,</span> <span class="n">dq</span><span class="p">,</span> <span class="n">dk</span><span class="p">,</span> <span class="n">dv</span><span class="p">,</span> + <span class="n">bias</span><span class="o">=</span><span class="n">bias</span><span class="p">,</span> <span class="n">causal</span><span class="o">=</span><span class="n">ctx</span><span class="o">.</span><span class="n">causal</span><span class="p">,</span> <span class="n">softmax_scale</span><span class="o">=</span><span class="n">ctx</span><span class="o">.</span><span class="n">softmax_scale</span><span class="p">)</span> + <span class="k">return</span> <span class="n">dq</span><span class="p">,</span> <span class="n">dk</span><span class="p">,</span> <span class="n">dv</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span></div> +</div> + + + +<div class="viewcode-block" id="flash_attn_func"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_func">[docs]</a> +<span class="n">flash_attn_func</span> <span class="o">=</span> <span class="n">FlashAttnFunc</span><span class="o">.</span><span class="n">apply</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/llava_conversation_lib.html b/_modules/lmflow/utils/llava_conversation_lib.html new file mode 100644 index 000000000..e12df3cb0 --- /dev/null +++ b/_modules/lmflow/utils/llava_conversation_lib.html @@ -0,0 +1,927 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.llava_conversation_lib &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/llava_conversation_lib';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.llava_conversation_lib</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.llava_conversation_lib</h1><div class="highlight"><pre> +<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">dataclasses</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">auto</span><span class="p">,</span> <span class="n">Enum</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Tuple</span> + + +<div class="viewcode-block" id="SeparatorStyle"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.SeparatorStyle">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">SeparatorStyle</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;Different separator style.&quot;&quot;&quot;</span> +<div class="viewcode-block" id="SeparatorStyle.SINGLE"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.SeparatorStyle.SINGLE">[docs]</a> + <span class="n">SINGLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span></div> + +<div class="viewcode-block" id="SeparatorStyle.TWO"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.SeparatorStyle.TWO">[docs]</a> + <span class="n">TWO</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span></div> + +<div class="viewcode-block" id="SeparatorStyle.MPT"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.SeparatorStyle.MPT">[docs]</a> + <span class="n">MPT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span></div> + +<div class="viewcode-block" id="SeparatorStyle.PLAIN"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.SeparatorStyle.PLAIN">[docs]</a> + <span class="n">PLAIN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span></div> + +<div class="viewcode-block" id="SeparatorStyle.LLAMA_2"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.SeparatorStyle.LLAMA_2">[docs]</a> + <span class="n">LLAMA_2</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span></div> +</div> + + + +<span class="nd">@dataclasses</span><span class="o">.</span><span class="n">dataclass</span> +<div class="viewcode-block" id="Conversation"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">Conversation</span><span class="p">:</span> +<span class="w"> </span><span class="sd">&quot;&quot;&quot;A class that keeps all conversation history.&quot;&quot;&quot;</span> +<div class="viewcode-block" id="Conversation.system"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.system">[docs]</a> + <span class="n">system</span><span class="p">:</span> <span class="nb">str</span></div> + +<div class="viewcode-block" id="Conversation.roles"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.roles">[docs]</a> + <span class="n">roles</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span></div> + +<div class="viewcode-block" id="Conversation.messages"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.messages">[docs]</a> + <span class="n">messages</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span></div> + +<div class="viewcode-block" id="Conversation.offset"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.offset">[docs]</a> + <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span></div> + +<div class="viewcode-block" id="Conversation.sep_style"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.sep_style">[docs]</a> + <span class="n">sep_style</span><span class="p">:</span> <span class="n">SeparatorStyle</span> <span class="o">=</span> <span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">SINGLE</span></div> + +<div class="viewcode-block" id="Conversation.sep"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.sep">[docs]</a> + <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;###&quot;</span></div> + +<div class="viewcode-block" id="Conversation.sep2"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.sep2">[docs]</a> + <span class="n">sep2</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span></div> + +<div class="viewcode-block" id="Conversation.version"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.version">[docs]</a> + <span class="n">version</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;Unknown&quot;</span></div> + + +<div class="viewcode-block" id="Conversation.skip_next"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.skip_next">[docs]</a> + <span class="n">skip_next</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span></div> + + +<div class="viewcode-block" id="Conversation.get_prompt"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.get_prompt">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_prompt</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">messages</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">messages</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">messages</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="nb">type</span><span class="p">(</span><span class="n">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span> <span class="ow">is</span> <span class="nb">tuple</span><span class="p">:</span> + <span class="n">messages</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">messages</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> + <span class="n">init_role</span><span class="p">,</span> <span class="n">init_msg</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> + <span class="n">init_msg</span> <span class="o">=</span> <span class="n">init_msg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;&lt;image&gt;&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> + <span class="k">if</span> <span class="s1">&#39;mmtag&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">version</span><span class="p">:</span> + <span class="n">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">init_role</span><span class="p">,</span> <span class="n">init_msg</span><span class="p">)</span> + <span class="n">messages</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">roles</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s2">&quot;&lt;Image&gt;&lt;image&gt;&lt;/Image&gt;&quot;</span><span class="p">))</span> + <span class="n">messages</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">roles</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s2">&quot;Received.&quot;</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">init_role</span><span class="p">,</span> <span class="s2">&quot;&lt;image&gt;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="n">init_msg</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep_style</span> <span class="o">==</span> <span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">SINGLE</span><span class="p">:</span> + <span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">system</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span> + <span class="k">for</span> <span class="n">role</span><span class="p">,</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span><span class="p">:</span> + <span class="k">if</span> <span class="n">message</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">tuple</span><span class="p">:</span> + <span class="n">message</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">message</span> + <span class="n">ret</span> <span class="o">+=</span> <span class="n">role</span> <span class="o">+</span> <span class="s2">&quot;: &quot;</span> <span class="o">+</span> <span class="n">message</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">ret</span> <span class="o">+=</span> <span class="n">role</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep_style</span> <span class="o">==</span> <span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">TWO</span><span class="p">:</span> + <span class="n">seps</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep2</span><span class="p">]</span> + <span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">system</span> <span class="o">+</span> <span class="n">seps</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">role</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">messages</span><span class="p">):</span> + <span class="k">if</span> <span class="n">message</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">tuple</span><span class="p">:</span> + <span class="n">message</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">message</span> + <span class="n">ret</span> <span class="o">+=</span> <span class="n">role</span> <span class="o">+</span> <span class="s2">&quot;: &quot;</span> <span class="o">+</span> <span class="n">message</span> <span class="o">+</span> <span class="n">seps</span><span class="p">[</span><span class="n">i</span> <span class="o">%</span> <span class="mi">2</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">ret</span> <span class="o">+=</span> <span class="n">role</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep_style</span> <span class="o">==</span> <span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">MPT</span><span class="p">:</span> + <span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">system</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span> + <span class="k">for</span> <span class="n">role</span><span class="p">,</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span><span class="p">:</span> + <span class="k">if</span> <span class="n">message</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">tuple</span><span class="p">:</span> + <span class="n">message</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">message</span> + <span class="n">ret</span> <span class="o">+=</span> <span class="n">role</span> <span class="o">+</span> <span class="n">message</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">ret</span> <span class="o">+=</span> <span class="n">role</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep_style</span> <span class="o">==</span> <span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">LLAMA_2</span><span class="p">:</span> + <span class="n">wrap_sys</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">msg</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;&lt;&lt;SYS&gt;&gt;</span><span class="se">\n</span><span class="si">{</span><span class="n">msg</span><span class="si">}</span><span class="se">\n</span><span class="s2">&lt;&lt;/SYS&gt;&gt;</span><span class="se">\n\n</span><span class="s2">&quot;</span> + <span class="n">wrap_inst</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">msg</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;[INST] </span><span class="si">{</span><span class="n">msg</span><span class="si">}</span><span class="s2"> [/INST]&quot;</span> + <span class="n">ret</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> + + <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">role</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">messages</span><span class="p">):</span> + <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">assert</span> <span class="n">message</span><span class="p">,</span> <span class="s2">&quot;first message should not be none&quot;</span> + <span class="k">assert</span> <span class="n">role</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">roles</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s2">&quot;first message should come from user&quot;</span> + <span class="k">if</span> <span class="n">message</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">tuple</span><span class="p">:</span> + <span class="n">message</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">message</span> + <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> <span class="n">message</span> <span class="o">=</span> <span class="n">wrap_sys</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">system</span><span class="p">)</span> <span class="o">+</span> <span class="n">message</span> + <span class="k">if</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">message</span> <span class="o">=</span> <span class="n">wrap_inst</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> + <span class="n">ret</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span> <span class="o">+</span> <span class="n">message</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">ret</span> <span class="o">+=</span> <span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="n">message</span> <span class="o">+</span> <span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep2</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">ret</span> <span class="o">+=</span> <span class="s2">&quot;&quot;</span> + <span class="n">ret</span> <span class="o">=</span> <span class="n">ret</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep_style</span> <span class="o">==</span> <span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">PLAIN</span><span class="p">:</span> + <span class="n">seps</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep2</span><span class="p">]</span> + <span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">system</span> + <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">role</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">messages</span><span class="p">):</span> + <span class="k">if</span> <span class="n">message</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">tuple</span><span class="p">:</span> + <span class="n">message</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">message</span> + <span class="n">ret</span> <span class="o">+=</span> <span class="n">message</span> <span class="o">+</span> <span class="n">seps</span><span class="p">[</span><span class="n">i</span> <span class="o">%</span> <span class="mi">2</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">ret</span> <span class="o">+=</span> <span class="s2">&quot;&quot;</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Invalid style: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep_style</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">ret</span></div> + + +<div class="viewcode-block" id="Conversation.append_message"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.append_message">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">append_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">role</span><span class="p">,</span> <span class="n">message</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">messages</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">role</span><span class="p">,</span> <span class="n">message</span><span class="p">])</span></div> + + +<div class="viewcode-block" id="Conversation.get_images"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.get_images">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">get_images</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">return_pil</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> + <span class="n">images</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">role</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">messages</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">offset</span><span class="p">:]):</span> + <span class="k">if</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">tuple</span><span class="p">:</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">base64</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">io</span><span class="w"> </span><span class="kn">import</span> <span class="n">BytesIO</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">PIL</span><span class="w"> </span><span class="kn">import</span> <span class="n">Image</span> + <span class="n">msg</span><span class="p">,</span> <span class="n">image</span><span class="p">,</span> <span class="n">image_process_mode</span> <span class="o">=</span> <span class="n">msg</span> + <span class="k">if</span> <span class="n">image_process_mode</span> <span class="o">==</span> <span class="s2">&quot;Pad&quot;</span><span class="p">:</span> + <span class="k">def</span><span class="w"> </span><span class="nf">expand2square</span><span class="p">(</span><span class="n">pil_img</span><span class="p">,</span> <span class="n">background_color</span><span class="o">=</span><span class="p">(</span><span class="mi">122</span><span class="p">,</span> <span class="mi">116</span><span class="p">,</span> <span class="mi">104</span><span class="p">)):</span> + <span class="n">width</span><span class="p">,</span> <span class="n">height</span> <span class="o">=</span> <span class="n">pil_img</span><span class="o">.</span><span class="n">size</span> + <span class="k">if</span> <span class="n">width</span> <span class="o">==</span> <span class="n">height</span><span class="p">:</span> + <span class="k">return</span> <span class="n">pil_img</span> + <span class="k">elif</span> <span class="n">width</span> <span class="o">&gt;</span> <span class="n">height</span><span class="p">:</span> + <span class="n">result</span> <span class="o">=</span> <span class="n">Image</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">pil_img</span><span class="o">.</span><span class="n">mode</span><span class="p">,</span> <span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">width</span><span class="p">),</span> <span class="n">background_color</span><span class="p">)</span> + <span class="n">result</span><span class="o">.</span><span class="n">paste</span><span class="p">(</span><span class="n">pil_img</span><span class="p">,</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="p">(</span><span class="n">width</span> <span class="o">-</span> <span class="n">height</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span><span class="p">))</span> + <span class="k">return</span> <span class="n">result</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">result</span> <span class="o">=</span> <span class="n">Image</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">pil_img</span><span class="o">.</span><span class="n">mode</span><span class="p">,</span> <span class="p">(</span><span class="n">height</span><span class="p">,</span> <span class="n">height</span><span class="p">),</span> <span class="n">background_color</span><span class="p">)</span> + <span class="n">result</span><span class="o">.</span><span class="n">paste</span><span class="p">(</span><span class="n">pil_img</span><span class="p">,</span> <span class="p">((</span><span class="n">height</span> <span class="o">-</span> <span class="n">width</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> + <span class="k">return</span> <span class="n">result</span> + <span class="n">image</span> <span class="o">=</span> <span class="n">expand2square</span><span class="p">(</span><span class="n">image</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">image_process_mode</span> <span class="o">==</span> <span class="s2">&quot;Crop&quot;</span><span class="p">:</span> + <span class="k">pass</span> + <span class="k">elif</span> <span class="n">image_process_mode</span> <span class="o">==</span> <span class="s2">&quot;Resize&quot;</span><span class="p">:</span> + <span class="n">image</span> <span class="o">=</span> <span class="n">image</span><span class="o">.</span><span class="n">resize</span><span class="p">((</span><span class="mi">336</span><span class="p">,</span> <span class="mi">336</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Invalid image_process_mode: </span><span class="si">{</span><span class="n">image_process_mode</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="n">max_hw</span><span class="p">,</span> <span class="n">min_hw</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">image</span><span class="o">.</span><span class="n">size</span><span class="p">),</span> <span class="nb">min</span><span class="p">(</span><span class="n">image</span><span class="o">.</span><span class="n">size</span><span class="p">)</span> + <span class="n">aspect_ratio</span> <span class="o">=</span> <span class="n">max_hw</span> <span class="o">/</span> <span class="n">min_hw</span> + <span class="n">max_len</span><span class="p">,</span> <span class="n">min_len</span> <span class="o">=</span> <span class="mi">800</span><span class="p">,</span> <span class="mi">400</span> + <span class="n">shortest_edge</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">max_len</span> <span class="o">/</span> <span class="n">aspect_ratio</span><span class="p">,</span> <span class="n">min_len</span><span class="p">,</span> <span class="n">min_hw</span><span class="p">))</span> + <span class="n">longest_edge</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">shortest_edge</span> <span class="o">*</span> <span class="n">aspect_ratio</span><span class="p">)</span> + <span class="n">W</span><span class="p">,</span> <span class="n">H</span> <span class="o">=</span> <span class="n">image</span><span class="o">.</span><span class="n">size</span> + <span class="k">if</span> <span class="n">H</span> <span class="o">&gt;</span> <span class="n">W</span><span class="p">:</span> + <span class="n">H</span><span class="p">,</span> <span class="n">W</span> <span class="o">=</span> <span class="n">longest_edge</span><span class="p">,</span> <span class="n">shortest_edge</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">H</span><span class="p">,</span> <span class="n">W</span> <span class="o">=</span> <span class="n">shortest_edge</span><span class="p">,</span> <span class="n">longest_edge</span> + <span class="n">image</span> <span class="o">=</span> <span class="n">image</span><span class="o">.</span><span class="n">resize</span><span class="p">((</span><span class="n">W</span><span class="p">,</span> <span class="n">H</span><span class="p">))</span> + <span class="k">if</span> <span class="n">return_pil</span><span class="p">:</span> + <span class="n">images</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">image</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">buffered</span> <span class="o">=</span> <span class="n">BytesIO</span><span class="p">()</span> + <span class="n">image</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">buffered</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s2">&quot;PNG&quot;</span><span class="p">)</span> + <span class="n">img_b64_str</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">b64encode</span><span class="p">(</span><span class="n">buffered</span><span class="o">.</span><span class="n">getvalue</span><span class="p">())</span><span class="o">.</span><span class="n">decode</span><span class="p">()</span> + <span class="n">images</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">img_b64_str</span><span class="p">)</span> + <span class="k">return</span> <span class="n">images</span></div> + + +<div class="viewcode-block" id="Conversation.to_gradio_chatbot"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.to_gradio_chatbot">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">to_gradio_chatbot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">ret</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">role</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">messages</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">offset</span><span class="p">:]):</span> + <span class="k">if</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">tuple</span><span class="p">:</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">base64</span> + <span class="kn">from</span><span class="w"> </span><span class="nn">io</span><span class="w"> </span><span class="kn">import</span> <span class="n">BytesIO</span> + <span class="n">msg</span><span class="p">,</span> <span class="n">image</span><span class="p">,</span> <span class="n">image_process_mode</span> <span class="o">=</span> <span class="n">msg</span> + <span class="n">max_hw</span><span class="p">,</span> <span class="n">min_hw</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">image</span><span class="o">.</span><span class="n">size</span><span class="p">),</span> <span class="nb">min</span><span class="p">(</span><span class="n">image</span><span class="o">.</span><span class="n">size</span><span class="p">)</span> + <span class="n">aspect_ratio</span> <span class="o">=</span> <span class="n">max_hw</span> <span class="o">/</span> <span class="n">min_hw</span> + <span class="n">max_len</span><span class="p">,</span> <span class="n">min_len</span> <span class="o">=</span> <span class="mi">800</span><span class="p">,</span> <span class="mi">400</span> + <span class="n">shortest_edge</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">max_len</span> <span class="o">/</span> <span class="n">aspect_ratio</span><span class="p">,</span> <span class="n">min_len</span><span class="p">,</span> <span class="n">min_hw</span><span class="p">))</span> + <span class="n">longest_edge</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">shortest_edge</span> <span class="o">*</span> <span class="n">aspect_ratio</span><span class="p">)</span> + <span class="n">W</span><span class="p">,</span> <span class="n">H</span> <span class="o">=</span> <span class="n">image</span><span class="o">.</span><span class="n">size</span> + <span class="k">if</span> <span class="n">H</span> <span class="o">&gt;</span> <span class="n">W</span><span class="p">:</span> + <span class="n">H</span><span class="p">,</span> <span class="n">W</span> <span class="o">=</span> <span class="n">longest_edge</span><span class="p">,</span> <span class="n">shortest_edge</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">H</span><span class="p">,</span> <span class="n">W</span> <span class="o">=</span> <span class="n">shortest_edge</span><span class="p">,</span> <span class="n">longest_edge</span> + <span class="n">image</span> <span class="o">=</span> <span class="n">image</span><span class="o">.</span><span class="n">resize</span><span class="p">((</span><span class="n">W</span><span class="p">,</span> <span class="n">H</span><span class="p">))</span> + <span class="n">buffered</span> <span class="o">=</span> <span class="n">BytesIO</span><span class="p">()</span> + <span class="n">image</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">buffered</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s2">&quot;JPEG&quot;</span><span class="p">)</span> + <span class="n">img_b64_str</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">b64encode</span><span class="p">(</span><span class="n">buffered</span><span class="o">.</span><span class="n">getvalue</span><span class="p">())</span><span class="o">.</span><span class="n">decode</span><span class="p">()</span> + <span class="n">img_str</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">&#39;&lt;img src=&quot;data:image/png;base64,</span><span class="si">{</span><span class="n">img_b64_str</span><span class="si">}</span><span class="s1">&quot; alt=&quot;user upload image&quot; /&gt;&#39;</span> + <span class="n">ret</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">img_str</span><span class="p">,</span> <span class="kc">None</span><span class="p">])</span> + <span class="n">msg</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;&lt;image&gt;&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">ret</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">msg</span><span class="p">,</span> <span class="kc">None</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">ret</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">msg</span><span class="p">,</span> <span class="kc">None</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">ret</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">msg</span> + <span class="k">return</span> <span class="n">ret</span></div> + + +<div class="viewcode-block" id="Conversation.copy"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.copy">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="n">Conversation</span><span class="p">(</span> + <span class="n">system</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">system</span><span class="p">,</span> + <span class="n">roles</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">roles</span><span class="p">,</span> + <span class="n">messages</span><span class="o">=</span><span class="p">[[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">]</span> <span class="k">for</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">messages</span><span class="p">],</span> + <span class="n">offset</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">offset</span><span class="p">,</span> + <span class="n">sep_style</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sep_style</span><span class="p">,</span> + <span class="n">sep</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">,</span> + <span class="n">sep2</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sep2</span><span class="p">,</span> + <span class="n">version</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">version</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="Conversation.dict"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.dict">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_images</span><span class="p">())</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="k">return</span> <span class="p">{</span> + <span class="s2">&quot;system&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">system</span><span class="p">,</span> + <span class="s2">&quot;roles&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">roles</span><span class="p">,</span> + <span class="s2">&quot;messages&quot;</span><span class="p">:</span> <span class="p">[[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">tuple</span> <span class="k">else</span> <span class="n">y</span><span class="p">]</span> <span class="k">for</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">messages</span><span class="p">],</span> + <span class="s2">&quot;offset&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">offset</span><span class="p">,</span> + <span class="s2">&quot;sep&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">,</span> + <span class="s2">&quot;sep2&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep2</span><span class="p">,</span> + <span class="p">}</span> + <span class="k">return</span> <span class="p">{</span> + <span class="s2">&quot;system&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">system</span><span class="p">,</span> + <span class="s2">&quot;roles&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">roles</span><span class="p">,</span> + <span class="s2">&quot;messages&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">messages</span><span class="p">,</span> + <span class="s2">&quot;offset&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">offset</span><span class="p">,</span> + <span class="s2">&quot;sep&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">,</span> + <span class="s2">&quot;sep2&quot;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep2</span><span class="p">,</span> + <span class="p">}</span></div> +</div> + + + +<div class="viewcode-block" id="conv_vicuna_v0"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_vicuna_v0">[docs]</a> +<span class="n">conv_vicuna_v0</span> <span class="o">=</span> <span class="n">Conversation</span><span class="p">(</span> + <span class="n">system</span><span class="o">=</span><span class="s2">&quot;A chat between a curious human and an artificial intelligence assistant. &quot;</span> + <span class="s2">&quot;The assistant gives helpful, detailed, and polite answers to the human&#39;s questions.&quot;</span><span class="p">,</span> + <span class="n">roles</span><span class="o">=</span><span class="p">(</span><span class="s2">&quot;Human&quot;</span><span class="p">,</span> <span class="s2">&quot;Assistant&quot;</span><span class="p">),</span> + <span class="n">messages</span><span class="o">=</span><span class="p">(</span> + <span class="p">(</span><span class="s2">&quot;Human&quot;</span><span class="p">,</span> <span class="s2">&quot;What are the key differences between renewable and non-renewable energy sources?&quot;</span><span class="p">),</span> + <span class="p">(</span><span class="s2">&quot;Assistant&quot;</span><span class="p">,</span> + <span class="s2">&quot;Renewable energy sources are those that can be replenished naturally in a relatively &quot;</span> + <span class="s2">&quot;short amount of time, such as solar, wind, hydro, geothermal, and biomass. &quot;</span> + <span class="s2">&quot;Non-renewable energy sources, on the other hand, are finite and will eventually be &quot;</span> + <span class="s2">&quot;depleted, such as coal, oil, and natural gas. Here are some key differences between &quot;</span> + <span class="s2">&quot;renewable and non-renewable energy sources:</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="s2">&quot;1. Availability: Renewable energy sources are virtually inexhaustible, while non-renewable &quot;</span> + <span class="s2">&quot;energy sources are finite and will eventually run out.</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="s2">&quot;2. Environmental impact: Renewable energy sources have a much lower environmental impact &quot;</span> + <span class="s2">&quot;than non-renewable sources, which can lead to air and water pollution, greenhouse gas emissions, &quot;</span> + <span class="s2">&quot;and other negative effects.</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="s2">&quot;3. Cost: Renewable energy sources can be more expensive to initially set up, but they typically &quot;</span> + <span class="s2">&quot;have lower operational costs than non-renewable sources.</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="s2">&quot;4. Reliability: Renewable energy sources are often more reliable and can be used in more remote &quot;</span> + <span class="s2">&quot;locations than non-renewable sources.</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="s2">&quot;5. Flexibility: Renewable energy sources are often more flexible and can be adapted to different &quot;</span> + <span class="s2">&quot;situations and needs, while non-renewable sources are more rigid and inflexible.</span><span class="se">\n</span><span class="s2">&quot;</span> + <span class="s2">&quot;6. Sustainability: Renewable energy sources are more sustainable over the long term, while &quot;</span> + <span class="s2">&quot;non-renewable sources are not, and their depletion can lead to economic and social instability.</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span> + <span class="p">),</span> + <span class="n">offset</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> + <span class="n">sep_style</span><span class="o">=</span><span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">SINGLE</span><span class="p">,</span> + <span class="n">sep</span><span class="o">=</span><span class="s2">&quot;###&quot;</span><span class="p">,</span> +<span class="p">)</span></div> + + +<div class="viewcode-block" id="conv_vicuna_v1"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_vicuna_v1">[docs]</a> +<span class="n">conv_vicuna_v1</span> <span class="o">=</span> <span class="n">Conversation</span><span class="p">(</span> + <span class="n">system</span><span class="o">=</span><span class="s2">&quot;A chat between a curious user and an artificial intelligence assistant. &quot;</span> + <span class="s2">&quot;The assistant gives helpful, detailed, and polite answers to the user&#39;s questions.&quot;</span><span class="p">,</span> + <span class="n">roles</span><span class="o">=</span><span class="p">(</span><span class="s2">&quot;USER&quot;</span><span class="p">,</span> <span class="s2">&quot;ASSISTANT&quot;</span><span class="p">),</span> + <span class="n">version</span><span class="o">=</span><span class="s2">&quot;v1&quot;</span><span class="p">,</span> + <span class="n">messages</span><span class="o">=</span><span class="p">(),</span> + <span class="n">offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">sep_style</span><span class="o">=</span><span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">TWO</span><span class="p">,</span> + <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</span><span class="p">,</span> + <span class="n">sep2</span><span class="o">=</span><span class="s2">&quot;&lt;/s&gt;&quot;</span><span class="p">,</span> +<span class="p">)</span></div> + + +<div class="viewcode-block" id="conv_llama_2"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_llama_2">[docs]</a> +<span class="n">conv_llama_2</span> <span class="o">=</span> <span class="n">Conversation</span><span class="p">(</span> + <span class="n">system</span><span class="o">=</span><span class="s2">&quot;&quot;&quot;You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe. Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature.</span> + +<span class="s2">If a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don&#39;t know the answer to a question, please don&#39;t share false information.&quot;&quot;&quot;</span><span class="p">,</span> + <span class="n">roles</span><span class="o">=</span><span class="p">(</span><span class="s2">&quot;USER&quot;</span><span class="p">,</span> <span class="s2">&quot;ASSISTANT&quot;</span><span class="p">),</span> + <span class="n">version</span><span class="o">=</span><span class="s2">&quot;llama_v2&quot;</span><span class="p">,</span> + <span class="n">messages</span><span class="o">=</span><span class="p">(),</span> + <span class="n">offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">sep_style</span><span class="o">=</span><span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">LLAMA_2</span><span class="p">,</span> + <span class="n">sep</span><span class="o">=</span><span class="s2">&quot;&lt;s&gt;&quot;</span><span class="p">,</span> + <span class="n">sep2</span><span class="o">=</span><span class="s2">&quot;&lt;/s&gt;&quot;</span><span class="p">,</span> +<span class="p">)</span></div> + + +<div class="viewcode-block" id="conv_llava_llama_2"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_llava_llama_2">[docs]</a> +<span class="n">conv_llava_llama_2</span> <span class="o">=</span> <span class="n">Conversation</span><span class="p">(</span> + <span class="n">system</span><span class="o">=</span><span class="s2">&quot;You are a helpful language and vision assistant. &quot;</span> + <span class="s2">&quot;You are able to understand the visual content that the user provides, &quot;</span> + <span class="s2">&quot;and assist the user with a variety of tasks using natural language.&quot;</span><span class="p">,</span> + <span class="n">roles</span><span class="o">=</span><span class="p">(</span><span class="s2">&quot;USER&quot;</span><span class="p">,</span> <span class="s2">&quot;ASSISTANT&quot;</span><span class="p">),</span> + <span class="n">version</span><span class="o">=</span><span class="s2">&quot;llama_v2&quot;</span><span class="p">,</span> + <span class="n">messages</span><span class="o">=</span><span class="p">(),</span> + <span class="n">offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">sep_style</span><span class="o">=</span><span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">LLAMA_2</span><span class="p">,</span> + <span class="n">sep</span><span class="o">=</span><span class="s2">&quot;&lt;s&gt;&quot;</span><span class="p">,</span> + <span class="n">sep2</span><span class="o">=</span><span class="s2">&quot;&lt;/s&gt;&quot;</span><span class="p">,</span> +<span class="p">)</span></div> + + +<div class="viewcode-block" id="conv_mpt"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_mpt">[docs]</a> +<span class="n">conv_mpt</span> <span class="o">=</span> <span class="n">Conversation</span><span class="p">(</span> + <span class="n">system</span><span class="o">=</span><span class="s2">&quot;&quot;&quot;&lt;|im_start|&gt;system</span> +<span class="s2">A conversation between a user and an LLM-based AI assistant. The assistant gives helpful and honest answers.&quot;&quot;&quot;</span><span class="p">,</span> + <span class="n">roles</span><span class="o">=</span><span class="p">(</span><span class="s2">&quot;&lt;|im_start|&gt;user</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s2">&quot;&lt;|im_start|&gt;assistant</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">),</span> + <span class="n">version</span><span class="o">=</span><span class="s2">&quot;mpt&quot;</span><span class="p">,</span> + <span class="n">messages</span><span class="o">=</span><span class="p">(),</span> + <span class="n">offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">sep_style</span><span class="o">=</span><span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">MPT</span><span class="p">,</span> + <span class="n">sep</span><span class="o">=</span><span class="s2">&quot;&lt;|im_end|&gt;&quot;</span><span class="p">,</span> +<span class="p">)</span></div> + + +<div class="viewcode-block" id="conv_llava_plain"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_llava_plain">[docs]</a> +<span class="n">conv_llava_plain</span> <span class="o">=</span> <span class="n">Conversation</span><span class="p">(</span> + <span class="n">system</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> + <span class="n">roles</span><span class="o">=</span><span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">),</span> + <span class="n">messages</span><span class="o">=</span><span class="p">(</span> + <span class="p">),</span> + <span class="n">offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">sep_style</span><span class="o">=</span><span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">PLAIN</span><span class="p">,</span> + <span class="n">sep</span><span class="o">=</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span> +<span class="p">)</span></div> + + +<div class="viewcode-block" id="conv_llava_v0"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_llava_v0">[docs]</a> +<span class="n">conv_llava_v0</span> <span class="o">=</span> <span class="n">Conversation</span><span class="p">(</span> + <span class="n">system</span><span class="o">=</span><span class="s2">&quot;A chat between a curious human and an artificial intelligence assistant. &quot;</span> + <span class="s2">&quot;The assistant gives helpful, detailed, and polite answers to the human&#39;s questions.&quot;</span><span class="p">,</span> + <span class="n">roles</span><span class="o">=</span><span class="p">(</span><span class="s2">&quot;Human&quot;</span><span class="p">,</span> <span class="s2">&quot;Assistant&quot;</span><span class="p">),</span> + <span class="n">messages</span><span class="o">=</span><span class="p">(</span> + <span class="p">(</span><span class="s2">&quot;Human&quot;</span><span class="p">,</span> <span class="s2">&quot;Hi!&quot;</span><span class="p">),</span> + <span class="p">(</span><span class="s2">&quot;Assistant&quot;</span><span class="p">,</span> <span class="s2">&quot;Hi there! How can I help you today?&quot;</span><span class="p">)</span> + <span class="p">),</span> + <span class="n">offset</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> + <span class="n">sep_style</span><span class="o">=</span><span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">SINGLE</span><span class="p">,</span> + <span class="n">sep</span><span class="o">=</span><span class="s2">&quot;###&quot;</span><span class="p">,</span> +<span class="p">)</span></div> + + +<div class="viewcode-block" id="conv_llava_v0_mmtag"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_llava_v0_mmtag">[docs]</a> +<span class="n">conv_llava_v0_mmtag</span> <span class="o">=</span> <span class="n">Conversation</span><span class="p">(</span> + <span class="n">system</span><span class="o">=</span><span class="s2">&quot;A chat between a curious user and an artificial intelligence assistant. &quot;</span> + <span class="s2">&quot;The assistant is able to understand the visual content that the user provides, and assist the user with a variety of tasks using natural language.&quot;</span> + <span class="s2">&quot;The visual content will be provided with the following format: &lt;Image&gt;visual content&lt;/Image&gt;.&quot;</span><span class="p">,</span> + <span class="n">roles</span><span class="o">=</span><span class="p">(</span><span class="s2">&quot;Human&quot;</span><span class="p">,</span> <span class="s2">&quot;Assistant&quot;</span><span class="p">),</span> + <span class="n">messages</span><span class="o">=</span><span class="p">(</span> + <span class="p">),</span> + <span class="n">offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">sep_style</span><span class="o">=</span><span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">SINGLE</span><span class="p">,</span> + <span class="n">sep</span><span class="o">=</span><span class="s2">&quot;###&quot;</span><span class="p">,</span> + <span class="n">version</span><span class="o">=</span><span class="s2">&quot;v0_mmtag&quot;</span><span class="p">,</span> +<span class="p">)</span></div> + + +<div class="viewcode-block" id="conv_llava_v1"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_llava_v1">[docs]</a> +<span class="n">conv_llava_v1</span> <span class="o">=</span> <span class="n">Conversation</span><span class="p">(</span> + <span class="n">system</span><span class="o">=</span><span class="s2">&quot;A chat between a curious human and an artificial intelligence assistant. &quot;</span> + <span class="s2">&quot;The assistant gives helpful, detailed, and polite answers to the human&#39;s questions.&quot;</span><span class="p">,</span> + <span class="n">roles</span><span class="o">=</span><span class="p">(</span><span class="s2">&quot;USER&quot;</span><span class="p">,</span> <span class="s2">&quot;ASSISTANT&quot;</span><span class="p">),</span> + <span class="n">version</span><span class="o">=</span><span class="s2">&quot;v1&quot;</span><span class="p">,</span> + <span class="n">messages</span><span class="o">=</span><span class="p">(),</span> + <span class="n">offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">sep_style</span><span class="o">=</span><span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">TWO</span><span class="p">,</span> + <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</span><span class="p">,</span> + <span class="n">sep2</span><span class="o">=</span><span class="s2">&quot;&lt;/s&gt;&quot;</span><span class="p">,</span> +<span class="p">)</span></div> + + +<div class="viewcode-block" id="conv_llava_v1_mmtag"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_llava_v1_mmtag">[docs]</a> +<span class="n">conv_llava_v1_mmtag</span> <span class="o">=</span> <span class="n">Conversation</span><span class="p">(</span> + <span class="n">system</span><span class="o">=</span><span class="s2">&quot;A chat between a curious user and an artificial intelligence assistant. &quot;</span> + <span class="s2">&quot;The assistant is able to understand the visual content that the user provides, and assist the user with a variety of tasks using natural language.&quot;</span> + <span class="s2">&quot;The visual content will be provided with the following format: &lt;Image&gt;visual content&lt;/Image&gt;.&quot;</span><span class="p">,</span> + <span class="n">roles</span><span class="o">=</span><span class="p">(</span><span class="s2">&quot;USER&quot;</span><span class="p">,</span> <span class="s2">&quot;ASSISTANT&quot;</span><span class="p">),</span> + <span class="n">messages</span><span class="o">=</span><span class="p">(),</span> + <span class="n">offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">sep_style</span><span class="o">=</span><span class="n">SeparatorStyle</span><span class="o">.</span><span class="n">TWO</span><span class="p">,</span> + <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</span><span class="p">,</span> + <span class="n">sep2</span><span class="o">=</span><span class="s2">&quot;&lt;/s&gt;&quot;</span><span class="p">,</span> + <span class="n">version</span><span class="o">=</span><span class="s2">&quot;v1_mmtag&quot;</span><span class="p">,</span> +<span class="p">)</span></div> + + +<div class="viewcode-block" id="default_conversation"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.default_conversation">[docs]</a> +<span class="n">default_conversation</span> <span class="o">=</span> <span class="n">conv_vicuna_v1</span> <span class="c1"># currently only support the v1 version</span></div> + +<div class="viewcode-block" id="conv_templates"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_templates">[docs]</a> +<span class="n">conv_templates</span> <span class="o">=</span> <span class="p">{</span> + <span class="s2">&quot;default&quot;</span><span class="p">:</span> <span class="n">conv_vicuna_v0</span><span class="p">,</span> + <span class="s2">&quot;v0&quot;</span><span class="p">:</span> <span class="n">conv_vicuna_v0</span><span class="p">,</span> + <span class="s2">&quot;v1&quot;</span><span class="p">:</span> <span class="n">conv_vicuna_v1</span><span class="p">,</span> + <span class="s2">&quot;vicuna_v1&quot;</span><span class="p">:</span> <span class="n">conv_vicuna_v1</span><span class="p">,</span> + <span class="s2">&quot;llama_2&quot;</span><span class="p">:</span> <span class="n">conv_llama_2</span><span class="p">,</span> + + <span class="s2">&quot;plain&quot;</span><span class="p">:</span> <span class="n">conv_llava_plain</span><span class="p">,</span> + <span class="s2">&quot;v0_plain&quot;</span><span class="p">:</span> <span class="n">conv_llava_plain</span><span class="p">,</span> + <span class="s2">&quot;llava_v0&quot;</span><span class="p">:</span> <span class="n">conv_llava_v0</span><span class="p">,</span> + <span class="s2">&quot;v0_mmtag&quot;</span><span class="p">:</span> <span class="n">conv_llava_v0_mmtag</span><span class="p">,</span> + <span class="s2">&quot;llava_v1&quot;</span><span class="p">:</span> <span class="n">conv_llava_v1</span><span class="p">,</span> + <span class="s2">&quot;v1_mmtag&quot;</span><span class="p">:</span> <span class="n">conv_llava_v1_mmtag</span><span class="p">,</span> + <span class="s2">&quot;llava_llama_2&quot;</span><span class="p">:</span> <span class="n">conv_llava_llama_2</span><span class="p">,</span> + + <span class="s2">&quot;mpt&quot;</span><span class="p">:</span> <span class="n">conv_mpt</span><span class="p">,</span> +<span class="p">}</span></div> + + + +<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="n">default_conversation</span><span class="o">.</span><span class="n">get_prompt</span><span class="p">())</span> +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/model.html b/_modules/lmflow/utils/model.html new file mode 100644 index 000000000..0ac2ebc65 --- /dev/null +++ b/_modules/lmflow/utils/model.html @@ -0,0 +1,472 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/model';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.model</h1><div class="highlight"><pre> +<span></span><span class="ch">#!/usr/bin/env python</span> +<span class="c1"># coding=utf-8</span> +<span class="c1"># Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Any</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Union</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">AutoTokenizer</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModelArguments</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/model/index.html#lmflow.utils.model.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="check_homogeneity"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/model/index.html#lmflow.utils.model.check_homogeneity">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">check_homogeneity</span><span class="p">(</span><span class="n">model_args_list</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">ModelArguments</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span> + <span class="k">assert</span> <span class="nb">all</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">model_args</span><span class="p">,</span> <span class="n">ModelArguments</span><span class="p">)</span> <span class="k">for</span> <span class="n">model_args</span> <span class="ow">in</span> <span class="n">model_args_list</span><span class="p">),</span> \ + <span class="s2">&quot;model_args_list should be a list of ModelArguments objects.&quot;</span> + <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">model_args_list</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;model_args_list should have at least two elements.&quot;</span> + + <span class="n">tokenizer_names</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">model_args</span> <span class="ow">in</span> <span class="n">model_args_list</span><span class="p">:</span> + <span class="n">tokenizer</span> <span class="o">=</span> <span class="n">AutoTokenizer</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="n">model_args</span><span class="o">.</span><span class="n">model_name_or_path</span><span class="p">,</span> <span class="n">use_fast</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">tokenizer_names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tokenizer</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)</span> + + <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">tokenizer_names</span><span class="p">))</span> <span class="o">==</span> <span class="mi">1</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/multimodal.html b/_modules/lmflow/utils/multimodal.html new file mode 100644 index 000000000..015ce2240 --- /dev/null +++ b/_modules/lmflow/utils/multimodal.html @@ -0,0 +1,500 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.multimodal &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/multimodal';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.multimodal</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.multimodal</h1><div class="highlight"><pre> +<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">glob</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">LlamaConfig</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">tqdm</span><span class="w"> </span><span class="kn">import</span> <span class="n">tqdm</span> + + +<div class="viewcode-block" id="update_custom_config"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/multimodal/index.html#lmflow.utils.multimodal.update_custom_config">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">update_custom_config</span><span class="p">(</span><span class="n">config</span><span class="p">,</span> <span class="n">model_args</span><span class="p">):</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">llm_model_name_or_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">text_config</span> <span class="o">=</span> <span class="n">LlamaConfig</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span> + <span class="n">model_args</span><span class="o">.</span><span class="n">llm_model_name_or_path</span><span class="p">)</span> + <span class="n">config</span><span class="o">.</span><span class="n">text_config</span> <span class="o">=</span> <span class="n">text_config</span> + <span class="n">config</span><span class="o">.</span><span class="n">with_qformer</span> <span class="o">=</span> <span class="n">model_args</span><span class="o">.</span><span class="n">with_qformer</span> + <span class="n">config</span><span class="o">.</span><span class="n">custom_vision_model</span> <span class="o">=</span> <span class="n">model_args</span><span class="o">.</span><span class="n">custom_vision_model</span> + <span class="k">if</span> <span class="n">model_args</span><span class="o">.</span><span class="n">custom_vision_model</span><span class="p">:</span> + <span class="c1"># config.vision_model_args = model_args</span> + <span class="n">config</span><span class="o">.</span><span class="n">image_encoder_name_or_path</span> <span class="o">=</span> \ + <span class="n">model_args</span><span class="o">.</span><span class="n">image_encoder_name_or_path</span> + <span class="n">config</span><span class="o">.</span><span class="n">vision_select_layer</span> <span class="o">=</span> <span class="n">model_args</span><span class="o">.</span><span class="n">vision_select_layer</span> + <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">model_args</span><span class="p">,</span> <span class="s2">&quot;vision_select_feature&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">config</span><span class="o">.</span><span class="n">vision_select_feature</span> <span class="o">=</span> <span class="n">model_args</span><span class="o">.</span><span class="n">vision_select_feature</span> + <span class="k">return</span> <span class="n">config</span></div> + + + +<div class="viewcode-block" id="load_llava_pretrain_model"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/multimodal/index.html#lmflow.utils.multimodal.load_llava_pretrain_model">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">load_llava_pretrain_model</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">checkpoint_path</span><span class="p">):</span> + <span class="n">checkpoint_path</span> <span class="o">=</span> <span class="n">glob</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="n">checkpoint_path</span><span class="p">)</span> + <span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span><span class="n">checkpoint_path</span><span class="p">):</span> + <span class="n">state_dict</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">map_location</span><span class="o">=</span><span class="s2">&quot;cpu&quot;</span><span class="p">)</span> + <span class="n">new_state_dict</span> <span class="o">=</span> <span class="n">adapt_llava_model_to_lmflow_type</span><span class="p">(</span><span class="n">state_dict</span><span class="p">)</span> + <span class="c1"># modify the name of the key</span> + <span class="c1"># import pdb; pdb.set_trace()</span> + <span class="n">lmflow_keys</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">state_dict</span><span class="p">()</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">new_state_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> + <span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">lmflow_keys</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;key not in lmflow_keys: &quot;</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> + <span class="n">model</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">new_state_dict</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="k">return</span> <span class="n">model</span></div> + + +<div class="viewcode-block" id="adapt_llava_model_to_lmflow_type"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/multimodal/index.html#lmflow.utils.multimodal.adapt_llava_model_to_lmflow_type">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">adapt_llava_model_to_lmflow_type</span><span class="p">(</span><span class="n">state_dict</span><span class="p">):</span> + <span class="n">new_state_dict</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">state_dict</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> + <span class="n">key</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;model.layers&quot;</span><span class="p">,</span> <span class="s2">&quot;language_model.model.layers&quot;</span><span class="p">)</span> + <span class="n">key</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;model.embed_tokens&quot;</span><span class="p">,</span> + <span class="s2">&quot;language_model.model.embed_tokens&quot;</span><span class="p">)</span> + <span class="n">key</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;model.mm_projector&quot;</span><span class="p">,</span> <span class="s2">&quot;language_projection&quot;</span><span class="p">)</span> + <span class="n">key</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;lm_head&quot;</span><span class="p">,</span> <span class="s2">&quot;language_model.lm_head&quot;</span><span class="p">)</span> + <span class="n">key</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;model.norm&quot;</span><span class="p">,</span> <span class="s2">&quot;language_model.model.norm&quot;</span><span class="p">)</span> + <span class="k">if</span> <span class="s2">&quot;vision_tower&quot;</span> <span class="ow">in</span> <span class="n">key</span><span class="p">:</span> + <span class="k">continue</span> + <span class="n">new_state_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">item</span> + <span class="k">return</span> <span class="n">new_state_dict</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch.html b/_modules/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch.html new file mode 100644 index 000000000..7605c84a0 --- /dev/null +++ b/_modules/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch.html @@ -0,0 +1,508 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</h1><div class="highlight"><pre> +<span></span><span class="kn">from</span><span class="w"> </span><span class="nn">functools</span><span class="w"> </span><span class="kn">import</span> <span class="n">partial</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">transformers</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">transformers.models.llama.modeling_llama</span> + +<div class="viewcode-block" id="CondenseRotaryEmbedding"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding">[docs]</a> +<span class="k">class</span><span class="w"> </span><span class="nc">CondenseRotaryEmbedding</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dim</span><span class="p">,</span> <span class="n">pi_ratio</span><span class="p">,</span> <span class="n">ntk_ratio</span><span class="p">,</span> <span class="n">max_position_embeddings</span><span class="o">=</span><span class="mi">2048</span><span class="p">,</span> <span class="n">base</span><span class="o">=</span><span class="mi">10000</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span> + +<div class="viewcode-block" id="CondenseRotaryEmbedding.ntk_ratio"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.ntk_ratio">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">ntk_ratio</span> <span class="o">=</span> <span class="n">ntk_ratio</span></div> + + <span class="n">max_position_embeddings</span> <span class="o">*=</span> <span class="n">ntk_ratio</span> + <span class="n">base</span> <span class="o">=</span> <span class="n">base</span> <span class="o">*</span> <span class="n">ntk_ratio</span> <span class="o">**</span> <span class="p">(</span><span class="n">dim</span> <span class="o">/</span> <span class="p">(</span><span class="n">dim</span><span class="o">-</span><span class="mi">2</span><span class="p">))</span> <span class="c1">#Base change formula</span> + + <span class="n">inv_freq</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">/</span> <span class="p">(</span><span class="n">base</span> <span class="o">**</span> <span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">dim</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">float</span><span class="p">()</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="p">)</span> <span class="o">/</span> <span class="n">dim</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">register_buffer</span><span class="p">(</span><span class="s2">&quot;inv_freq&quot;</span><span class="p">,</span> <span class="n">inv_freq</span><span class="p">)</span> + +<div class="viewcode-block" id="CondenseRotaryEmbedding.pi_ratio"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.pi_ratio">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">pi_ratio</span> <span class="o">=</span> <span class="n">pi_ratio</span></div> + + <span class="n">max_position_embeddings</span> <span class="o">*=</span> <span class="n">pi_ratio</span> +<div class="viewcode-block" id="CondenseRotaryEmbedding.max_seq_len_cached"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.max_seq_len_cached">[docs]</a> + <span class="bp">self</span><span class="o">.</span><span class="n">max_seq_len_cached</span> <span class="o">=</span> <span class="n">max_position_embeddings</span></div> + + <span class="n">t</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">max_seq_len_cached</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inv_freq</span><span class="o">.</span><span class="n">device</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inv_freq</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span> <span class="o">/</span> <span class="n">pi_ratio</span> + <span class="n">freqs</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">einsum</span><span class="p">(</span><span class="s2">&quot;i,j-&gt;ij&quot;</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">inv_freq</span><span class="p">)</span> + + <span class="c1"># Different from paper, but it uses a different permutation in order to obtain the same calculation</span> + <span class="n">emb</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">freqs</span><span class="p">,</span> <span class="n">freqs</span><span class="p">),</span> <span class="n">dim</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span> + <span class="n">dtype</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">get_default_dtype</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">register_buffer</span><span class="p">(</span><span class="s2">&quot;cos_cached&quot;</span><span class="p">,</span> <span class="n">emb</span><span class="o">.</span><span class="n">cos</span><span class="p">()[</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="p">:,</span> <span class="p">:]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">dtype</span><span class="p">),</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">register_buffer</span><span class="p">(</span><span class="s2">&quot;sin_cached&quot;</span><span class="p">,</span> <span class="n">emb</span><span class="o">.</span><span class="n">sin</span><span class="p">()[</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="p">:,</span> <span class="p">:]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">dtype</span><span class="p">),</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + +<div class="viewcode-block" id="CondenseRotaryEmbedding.forward"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.forward">[docs]</a> + <span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">seq_len</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="c1"># x: [bs, num_attention_heads, seq_len, head_size]</span> + <span class="c1"># This `if` block is unlikely to be run after we build sin/cos in `__init__`. Keep the logic here just in case.</span> + <span class="k">if</span> <span class="n">seq_len</span> <span class="o">&gt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_seq_len_cached</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">max_seq_len_cached</span> <span class="o">=</span> <span class="n">seq_len</span> + <span class="n">t</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">max_seq_len_cached</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="n">x</span><span class="o">.</span><span class="n">device</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">inv_freq</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">pi_ratio</span> + <span class="n">freqs</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">einsum</span><span class="p">(</span><span class="s2">&quot;i,j-&gt;ij&quot;</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">inv_freq</span><span class="p">)</span> + + <span class="c1"># Different from paper, but it uses a different permutation in order to obtain the same calculation</span> + <span class="n">emb</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">((</span><span class="n">freqs</span><span class="p">,</span> <span class="n">freqs</span><span class="p">),</span> <span class="n">dim</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">device</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">register_buffer</span><span class="p">(</span><span class="s2">&quot;cos_cached&quot;</span><span class="p">,</span> <span class="n">emb</span><span class="o">.</span><span class="n">cos</span><span class="p">()[</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="p">:,</span> <span class="p">:]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">dtype</span><span class="p">),</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">register_buffer</span><span class="p">(</span><span class="s2">&quot;sin_cached&quot;</span><span class="p">,</span> <span class="n">emb</span><span class="o">.</span><span class="n">sin</span><span class="p">()[</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="p">:,</span> <span class="p">:]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">dtype</span><span class="p">),</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + + <span class="k">return</span> <span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">cos_cached</span><span class="p">[:,</span> <span class="p">:,</span> <span class="p">:</span><span class="n">seq_len</span><span class="p">,</span> <span class="o">...</span><span class="p">]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">dtype</span><span class="o">=</span><span class="n">x</span><span class="o">.</span><span class="n">dtype</span><span class="p">),</span> + <span class="bp">self</span><span class="o">.</span><span class="n">sin_cached</span><span class="p">[:,</span> <span class="p">:,</span> <span class="p">:</span><span class="n">seq_len</span><span class="p">,</span> <span class="o">...</span><span class="p">]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">dtype</span><span class="o">=</span><span class="n">x</span><span class="o">.</span><span class="n">dtype</span><span class="p">),</span> + <span class="p">)</span></div> +</div> + + +<div class="viewcode-block" id="replace_llama_with_condense"> +<a class="viewcode-back" href="../../../../autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.replace_llama_with_condense">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">replace_llama_with_condense</span><span class="p">(</span><span class="n">pi_ratio</span><span class="p">,</span> <span class="n">ntk_ratio</span><span class="p">):</span> + <span class="n">transformers</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">llama</span><span class="o">.</span><span class="n">modeling_llama</span><span class="o">.</span><span class="n">LlamaRotaryEmbedding</span> <span class="o">=</span> <span class="n">partial</span><span class="p">(</span><span class="n">CondenseRotaryEmbedding</span><span class="p">,</span> <span class="n">pi_ratio</span><span class="o">=</span><span class="n">pi_ratio</span><span class="p">,</span> <span class="n">ntk_ratio</span><span class="o">=</span><span class="n">ntk_ratio</span><span class="p">)</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/utils/versioning.html b/_modules/lmflow/utils/versioning.html new file mode 100644 index 000000000..e0f15ff3d --- /dev/null +++ b/_modules/lmflow/utils/versioning.html @@ -0,0 +1,555 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.utils.versioning &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/utils/versioning';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.versioning</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.utils.versioning</h1><div class="highlight"><pre> +<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">importlib</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Union</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">importlib.metadata</span><span class="w"> </span><span class="kn">import</span> <span class="n">version</span><span class="p">,</span> <span class="n">PackageNotFoundError</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">pkg_resources</span> + + +<div class="viewcode-block" id="logger"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/versioning/index.html#lmflow.datasets.logger">[docs]</a> +<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="get_python_version"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/versioning/index.html#lmflow.datasets.get_python_version">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">get_python_version</span><span class="p">():</span> + <span class="k">return</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span></div> + + + +<div class="viewcode-block" id="_is_package_available"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/versioning/index.html#lmflow.datasets._is_package_available">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_is_package_available</span><span class="p">(</span><span class="n">package_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">skippable</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span> + <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">package_name</span><span class="p">,</span> <span class="nb">str</span><span class="p">),</span> <span class="sa">f</span><span class="s2">&quot;Invalid type of package_name: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">package_name</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">importlib</span><span class="o">.</span><span class="n">import_module</span><span class="p">(</span><span class="n">package_name</span><span class="p">)</span> + <span class="k">return</span> <span class="kc">True</span> + <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> + <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="vm">__class__</span> <span class="o">==</span> <span class="ne">ModuleNotFoundError</span><span class="p">:</span> + <span class="k">return</span> <span class="kc">False</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="n">skippable</span><span class="p">:</span> + <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;An error occurred when importing </span><span class="si">{</span><span class="n">package_name</span><span class="si">}</span><span class="s1">:</span><span class="se">\n</span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="n">package_name</span><span class="si">}</span><span class="s1"> is disabled.&#39;</span><span class="p">)</span> + <span class="k">return</span> <span class="kc">False</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="n">e</span></div> + + + +<div class="viewcode-block" id="_is_packages_available"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/versioning/index.html#lmflow.datasets._is_packages_available">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">_is_packages_available</span><span class="p">(</span><span class="n">packages</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]]):</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">packages</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="nb">str</span><span class="p">):</span> + <span class="k">return</span> <span class="nb">all</span><span class="p">([</span><span class="n">_is_package_available</span><span class="p">(</span><span class="n">package</span><span class="p">)</span> <span class="k">for</span> <span class="n">package</span> <span class="ow">in</span> <span class="n">packages</span><span class="p">])</span> + <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">packages</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="nb">tuple</span><span class="p">):</span> + <span class="k">return</span> <span class="nb">all</span><span class="p">([</span><span class="n">_is_package_available</span><span class="p">(</span><span class="n">package</span><span class="p">,</span> <span class="n">skippable</span><span class="p">)</span> <span class="k">for</span> <span class="n">package</span><span class="p">,</span> <span class="n">skippable</span> <span class="ow">in</span> <span class="n">packages</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Invalid type of packages: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">packages</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="is_package_version_at_least"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/versioning/index.html#lmflow.datasets.is_package_version_at_least">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">is_package_version_at_least</span><span class="p">(</span><span class="n">package_name</span><span class="p">,</span> <span class="n">min_version</span><span class="p">):</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">package_version</span> <span class="o">=</span> <span class="n">pkg_resources</span><span class="o">.</span><span class="n">get_distribution</span><span class="p">(</span><span class="n">package_name</span><span class="p">)</span><span class="o">.</span><span class="n">version</span> + <span class="k">if</span> <span class="p">(</span><span class="n">pkg_resources</span><span class="o">.</span><span class="n">parse_version</span><span class="p">(</span><span class="n">package_version</span><span class="p">)</span> + <span class="o">&lt;</span> <span class="n">pkg_resources</span><span class="o">.</span><span class="n">parse_version</span><span class="p">(</span><span class="n">min_version</span><span class="p">)):</span> + <span class="k">return</span> <span class="kc">False</span> + <span class="k">except</span> <span class="n">pkg_resources</span><span class="o">.</span><span class="n">DistributionNotFound</span><span class="p">:</span> + <span class="k">return</span> <span class="kc">False</span> + <span class="k">return</span> <span class="kc">True</span></div> + + + +<div class="viewcode-block" id="is_gradio_available"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/versioning/index.html#lmflow.datasets.is_gradio_available">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">is_gradio_available</span><span class="p">():</span> + <span class="k">return</span> <span class="n">_is_package_available</span><span class="p">(</span><span class="s2">&quot;gradio&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="is_ray_available"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/versioning/index.html#lmflow.datasets.is_ray_available">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">is_ray_available</span><span class="p">():</span> + <span class="k">return</span> <span class="n">_is_package_available</span><span class="p">(</span><span class="s2">&quot;ray&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="is_vllm_available"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/versioning/index.html#lmflow.datasets.is_vllm_available">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">is_vllm_available</span><span class="p">():</span> + <span class="k">return</span> <span class="n">_is_package_available</span><span class="p">(</span><span class="s2">&quot;vllm&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="is_flash_attn_available"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/versioning/index.html#lmflow.datasets.is_flash_attn_available">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">is_flash_attn_available</span><span class="p">():</span> + <span class="k">return</span> <span class="n">_is_package_available</span><span class="p">(</span><span class="s2">&quot;flash_attn&quot;</span><span class="p">,</span> <span class="n">skippable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="is_flask_available"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/versioning/index.html#lmflow.datasets.is_flask_available">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">is_flask_available</span><span class="p">():</span> + <span class="k">return</span> <span class="n">_is_packages_available</span><span class="p">([</span><span class="s2">&quot;flask&quot;</span><span class="p">,</span> <span class="s2">&quot;flask_cors&quot;</span><span class="p">])</span></div> + + + +<div class="viewcode-block" id="is_trl_available"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/versioning/index.html#lmflow.datasets.is_trl_available">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">is_trl_available</span><span class="p">():</span> + <span class="k">return</span> <span class="n">_is_package_available</span><span class="p">(</span><span class="s2">&quot;trl&quot;</span><span class="p">)</span></div> + + + +<div class="viewcode-block" id="is_multimodal_available"> +<a class="viewcode-back" href="../../../autoapi/lmflow/utils/versioning/index.html#lmflow.datasets.is_multimodal_available">[docs]</a> +<span class="k">def</span><span class="w"> </span><span class="nf">is_multimodal_available</span><span class="p">():</span> + <span class="k">return</span> <span class="n">_is_packages_available</span><span class="p">([</span><span class="s2">&quot;PIL&quot;</span><span class="p">])</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_modules/lmflow/version.html b/_modules/lmflow/version.html new file mode 100644 index 000000000..0665e6bfa --- /dev/null +++ b/_modules/lmflow/version.html @@ -0,0 +1,445 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>lmflow.version &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = '_modules/lmflow/version';</script> + <link rel="index" title="Index" href="../../genindex.html" /> + <link rel="search" title="Search" href="../../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">Module code</a></li> + + + <li class="breadcrumb-item"><a href="../lmflow.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.version</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <h1>Source code for lmflow.version</h1><div class="highlight"><pre> +<div class="viewcode-block" id="__version__"> +<a class="viewcode-back" href="../../autoapi/lmflow/version/index.html#lmflow.version.__version__">[docs]</a> +<span></span><span class="n">__version__</span> <span class="o">=</span> <span class="s2">&quot;0.0.9&quot;</span></div> + +</pre></div> + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/_sources/about/authors.md.txt b/_sources/about/authors.md.txt new file mode 100644 index 000000000..a3481ee66 --- /dev/null +++ b/_sources/about/authors.md.txt @@ -0,0 +1,4 @@ +# Contributors + + +Shizhe Diao, Rui Pan, Hanze Dong, Ka Shun Shum, Jipeng Zhang, Wei Xiong, Tong Zhang diff --git a/_sources/about/changelog.md.txt b/_sources/about/changelog.md.txt new file mode 100644 index 000000000..991794df9 --- /dev/null +++ b/_sources/about/changelog.md.txt @@ -0,0 +1,15 @@ +# Changelog + + +## Version 0.0.1 (Mar 28, 2023) + +The first public version. + +Task tuning, instruction tuning, on user defined datasets. + +A simple and extensible API for developers. + +Efficient finetuning with LoRA. + +Simplified model inference framework. + diff --git a/_sources/about/index.md.txt b/_sources/about/index.md.txt new file mode 100644 index 000000000..df657b31c --- /dev/null +++ b/_sources/about/index.md.txt @@ -0,0 +1,15 @@ +# About + + +```{toctree} +:maxdepth: 2 + +changelog +``` + + +```{toctree} +:maxdepth: 2 + +authors +``` diff --git a/_sources/autoapi/index.rst.txt b/_sources/autoapi/index.rst.txt new file mode 100644 index 000000000..333d5c5cd --- /dev/null +++ b/_sources/autoapi/index.rst.txt @@ -0,0 +1,11 @@ +API Reference +============= + +This page contains auto-generated API reference documentation [#f1]_. + +.. toctree:: + :titlesonly: + + /autoapi/lmflow/index + +.. [#f1] Created with `sphinx-autoapi <https://github.com/readthedocs/sphinx-autoapi>`_ \ No newline at end of file diff --git a/_sources/autoapi/lmflow/args/index.rst.txt b/_sources/autoapi/lmflow/args/index.rst.txt new file mode 100644 index 000000000..04e230fed --- /dev/null +++ b/_sources/autoapi/lmflow/args/index.rst.txt @@ -0,0 +1,1982 @@ +lmflow.args +=========== + +.. py:module:: lmflow.args + +.. autoapi-nested-parse:: + + This script defines dataclasses: ModelArguments and DatasetArguments, + that contain the arguments for the model and dataset used in training. + + It imports several modules, including dataclasses, field from typing, Optional from typing, + require_version from transformers.utils.versions, MODEL_FOR_CAUSAL_LM_MAPPING, + and TrainingArguments from transformers. + + MODEL_CONFIG_CLASSES is assigned a list of the model config classes from + MODEL_FOR_CAUSAL_LM_MAPPING. MODEL_TYPES is assigned a tuple of the model types + extracted from the MODEL_CONFIG_CLASSES. + + .. + !! processed by numpydoc !! + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.args.MODEL_CONFIG_CLASSES + lmflow.args.MODEL_TYPES + lmflow.args.logger + lmflow.args.PIPELINE_ARGUMENT_MAPPING + + +Classes +------- + +.. autoapisummary:: + + lmflow.args.OptimizerNames + lmflow.args.ModelArguments + lmflow.args.VisModelArguments + lmflow.args.DatasetArguments + lmflow.args.MultiModalDatasetArguments + lmflow.args.FinetunerArguments + lmflow.args.RewardModelTunerArguments + lmflow.args.EvaluatorArguments + lmflow.args.InferencerArguments + lmflow.args.RaftAlignerArguments + lmflow.args.BenchmarkingArguments + lmflow.args.DPOAlignerArguments + lmflow.args.DPOv2AlignerArguments + lmflow.args.IterativeAlignerArguments + lmflow.args.IterativeDPOAlignerArguments + lmflow.args.AutoArguments + + +Functions +--------- + +.. autoapisummary:: + + lmflow.args.split_args + + +Module Contents +--------------- + +.. py:data:: MODEL_CONFIG_CLASSES + +.. py:data:: MODEL_TYPES + +.. py:data:: logger + +.. py:class:: OptimizerNames + + .. py:attribute:: DUMMY + :value: 'dummy' + + + + .. py:attribute:: ADABELIEF + :value: 'adabelief' + + + + .. py:attribute:: ADABOUND + :value: 'adabound' + + + + .. py:attribute:: LARS + :value: 'lars' + + + + .. py:attribute:: LAMB + :value: 'lamb' + + + + .. py:attribute:: ADAMAX + :value: 'adamax' + + + + .. py:attribute:: NADAM + :value: 'nadam' + + + + .. py:attribute:: RADAM + :value: 'radam' + + + + .. py:attribute:: ADAMP + :value: 'adamp' + + + + .. py:attribute:: SGDP + :value: 'sgdp' + + + + .. py:attribute:: YOGI + :value: 'yogi' + + + + .. py:attribute:: SOPHIA + :value: 'sophia' + + + + .. py:attribute:: ADAN + :value: 'adan' + + + + .. py:attribute:: ADAM + :value: 'adam' + + + + .. py:attribute:: NOVOGRAD + :value: 'novograd' + + + + .. py:attribute:: ADADELTA + :value: 'adadelta' + + + + .. py:attribute:: ADAGRAD + :value: 'adagrad' + + + + .. py:attribute:: ADAMW_SCHEDULE_FREE + :value: 'adamw_schedule_free' + + + + .. py:attribute:: SGD_SCHEDULE_FREE + :value: 'sgd_schedule_free' + + + +.. py:class:: ModelArguments + + + Define a class ModelArguments using the dataclass decorator. + The class contains several optional parameters that can be used to configure a model. + + model_name_or_path : str + a string representing the path or name of a pretrained + model checkpoint for weights initialization. If None, a model will be trained from scratch. + + model_type : str + a string representing the type of model to use if training from + scratch. If not provided, a pretrained model will be used. + + config_overrides : str + a string representing the default config settings to override + when training a model from scratch. + + config_name : str + a string representing the name or path of the pretrained config to + use, if different from the model_name_or_path. + + tokenizer_name : str + a string representing the name or path of the pretrained tokenizer + to use, if different from the model_name_or_path. + + cache_dir : str + a string representing the path to the directory where pretrained models + downloaded from huggingface.co will be stored. + + use_fast_tokenizer : bool + a boolean indicating whether to use a fast tokenizer (backed by the + tokenizers library) or not. + + model_revision : str + a string representing the specific model version to use (can be a + branch name, tag name, or commit id). + + token : Optional[str] + Necessary when accessing a private model/dataset. + + torch_dtype : str + a string representing the dtype to load the model under. If auto is + passed, the dtype will be automatically derived from the model's weights. + + use_ram_optimized_load : bool + a boolean indicating whether to use disk mapping when memory is not + enough. + + use_int8 : bool + a boolean indicating whether to load int8 quantization for inference. + + load_in_4bit : bool + whether to load the model in 4bit + + model_max_length : int + The maximum length of the model. + + truncation_side : str + The side on which the model should have truncation applied. + + arch_type : str + Model architecture type. + padding_side : str + The side on which the tokenizer should have padding applied. + eos_padding : bool + whether to pad with eos token instead of pad token. + ignore_bias_buffers : bool + fix for DDP issues with LM bias/mask buffers - invalid scalar type,`inplace operation. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: model_name_or_path + :type: Optional[str] + :value: None + + + + .. py:attribute:: lora_model_path + :type: Optional[str] + :value: None + + + + .. py:attribute:: model_type + :type: Optional[str] + :value: None + + + + .. py:attribute:: config_overrides + :type: Optional[str] + :value: None + + + + .. py:attribute:: arch_type + :type: Optional[str] + :value: 'decoder_only' + + + + .. py:attribute:: config_name + :type: Optional[str] + :value: None + + + + .. py:attribute:: tokenizer_name + :type: Optional[str] + :value: None + + + + .. py:attribute:: cache_dir + :type: Optional[str] + :value: None + + + + .. py:attribute:: use_fast_tokenizer + :type: bool + :value: True + + + + .. py:attribute:: model_revision + :type: str + :value: 'main' + + + + .. py:attribute:: token + :type: Optional[str] + :value: None + + + + .. py:attribute:: trust_remote_code + :type: bool + :value: False + + + + .. py:attribute:: torch_dtype + :type: Optional[str] + :value: None + + + + .. py:attribute:: use_dora + :type: bool + :value: False + + + + .. py:attribute:: use_lora + :type: bool + :value: False + + + + .. py:attribute:: use_qlora + :type: bool + :value: False + + + + .. py:attribute:: bits + :type: int + :value: 4 + + + + .. py:attribute:: quant_type + :type: str + :value: 'nf4' + + + + .. py:attribute:: double_quant + :type: bool + :value: True + + + + .. py:attribute:: lora_r + :type: int + :value: 8 + + + + .. py:attribute:: lora_alpha + :type: int + :value: 32 + + + + .. py:attribute:: lora_target_modules + :type: str + :value: None + + + + .. py:attribute:: lora_dropout + :type: float + :value: 0.1 + + + + .. py:attribute:: save_aggregated_lora + :type: bool + :value: False + + + + .. py:attribute:: use_ram_optimized_load + :type: bool + :value: True + + + + .. py:attribute:: use_flash_attention + :type: bool + :value: False + + + + .. py:attribute:: truncate_to_model_max_length + :type: bool + :value: True + + + + .. py:attribute:: do_rope_scaling + :type: bool + :value: False + + + + .. py:attribute:: rope_pi_ratio + :type: int + :value: 1 + + + + .. py:attribute:: rope_ntk_ratio + :type: int + :value: 1 + + + + .. py:attribute:: use_int8 + :type: bool + :value: False + + + + .. py:attribute:: load_in_4bit + :type: Optional[bool] + :value: True + + + + .. py:attribute:: model_max_length + :type: Optional[int] + :value: None + + + + .. py:attribute:: truncation_side + :type: str + :value: None + + + + .. py:attribute:: padding_side + :type: str + :value: 'right' + + + + .. py:attribute:: eos_padding + :type: Optional[bool] + :value: False + + + + .. py:attribute:: ignore_bias_buffers + :type: Optional[bool] + :value: False + + + + .. py:method:: __post_init__() + + +.. py:class:: VisModelArguments + + Bases: :py:obj:`ModelArguments` + + + + Define a class ModelArguments using the dataclass decorator. + The class contains several optional parameters that can be used to configure a model. + + model_name_or_path : str + a string representing the path or name of a pretrained + model checkpoint for weights initialization. If None, a model will be trained from scratch. + + model_type : str + a string representing the type of model to use if training from + scratch. If not provided, a pretrained model will be used. + + config_overrides : str + a string representing the default config settings to override + when training a model from scratch. + + config_name : str + a string representing the name or path of the pretrained config to + use, if different from the model_name_or_path. + + tokenizer_name : str + a string representing the name or path of the pretrained tokenizer + to use, if different from the model_name_or_path. + + cache_dir : str + a string representing the path to the directory where pretrained models + downloaded from huggingface.co will be stored. + + use_fast_tokenizer : bool + a boolean indicating whether to use a fast tokenizer (backed by the + tokenizers library) or not. + + model_revision : str + a string representing the specific model version to use (can be a + branch name, tag name, or commit id). + + token : Optional[str] + Necessary when accessing a private model/dataset. + + torch_dtype : str + a string representing the dtype to load the model under. If auto is + passed, the dtype will be automatically derived from the model's weights. + + use_ram_optimized_load : bool + a boolean indicating whether to use disk mapping when memory is not + enough. + + use_int8 : bool + a boolean indicating whether to load int8 quantization for inference. + + load_in_4bit : bool + whether to load the model in 4bit + + model_max_length : int + The maximum length of the model. + + truncation_side : str + The side on which the model should have truncation applied. + + arch_type : str + Model architecture type. + padding_side : str + The side on which the tokenizer should have padding applied. + eos_padding : bool + whether to pad with eos token instead of pad token. + ignore_bias_buffers : bool + fix for DDP issues with LM bias/mask buffers - invalid scalar type,`inplace operation. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: low_resource + :type: Optional[bool] + :value: False + + + + .. py:attribute:: custom_model + :type: bool + :value: False + + + + .. py:attribute:: pretrained_language_projection_path + :type: str + :value: None + + + + .. py:attribute:: custom_vision_model + :type: bool + :value: False + + + + .. py:attribute:: image_encoder_name_or_path + :type: Optional[str] + :value: None + + + + .. py:attribute:: qformer_name_or_path + :type: Optional[str] + :value: None + + + + .. py:attribute:: llm_model_name_or_path + :type: Optional[str] + :value: None + + + + .. py:attribute:: use_prompt_cache + :type: bool + :value: False + + + + .. py:attribute:: prompt_cache_path + :type: Optional[str] + :value: None + + + + .. py:attribute:: llava_loading + :type: Optional[bool] + :value: False + + + + .. py:attribute:: with_qformer + :type: Optional[bool] + :value: False + + + + .. py:attribute:: vision_select_layer + :type: Optional[int] + :value: -2 + + + + .. py:attribute:: llava_pretrain_model_path + :type: Optional[str] + :value: None + + + + .. py:attribute:: save_pretrain_model_path + :type: Optional[str] + :value: None + + + +.. py:class:: DatasetArguments + + + Define a class DatasetArguments using the dataclass decorator. + The class contains several optional parameters that can be used to configure a dataset for a language model. + + dataset_path : str + a string representing the path of the dataset to use. + + dataset_name : str + a string representing the name of the dataset to use. The default value is "customized". + + is_custom_dataset : bool + a boolean indicating whether to use custom data. The default value is False. + + customized_cache_dir : str + a string representing the path to the directory where customized dataset caches will be stored. + + dataset_config_name : str + a string representing the configuration name of the dataset to use (via the datasets library). + + train_file : str + a string representing the path to the input training data file (a text file). + + validation_file : str + a string representing the path to the input evaluation data file to evaluate the perplexity on (a text file). + + max_train_samples : int + an integer indicating the maximum number of training examples to use for debugging or quicker training. + If set, the training dataset will be truncated to this number. + + max_eval_samples: int + an integer indicating the maximum number of evaluation examples to use for debugging or quicker training. + If set, the evaluation dataset will be truncated to this number. + + streaming : bool + a boolean indicating whether to enable streaming mode. + + block_size: int + an integer indicating the optional input sequence length after tokenization. The training dataset will be + truncated in blocks of this size for training. + + train_on_prompt: bool + a boolean indicating whether to train on prompt for conversation datasets such as ShareGPT. + + conversation_template: str + a string representing the template for conversation datasets. + + The class also includes some additional parameters that can be used to configure the dataset further, such as `overwrite_cache`, + `validation_split_percentage`, `preprocessing_num_workers`, `disable_group_texts`, `demo_example_in_prompt`, `explanation_in_prompt`, + `keep_linebreaks`, and `prompt_structure`. + + The field function is used to set default values and provide help messages for each parameter. The Optional type hint is + used to indicate that a parameter is optional. The metadata argument is used to provide additional information about + each parameter, such as a help message. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: dataset_path + :type: Optional[str] + :value: None + + + + .. py:attribute:: dataset_name + :type: Optional[str] + :value: 'customized' + + + + .. py:attribute:: is_custom_dataset + :type: Optional[bool] + :value: False + + + + .. py:attribute:: customized_cache_dir + :type: Optional[str] + :value: '.cache/llm-ft/datasets' + + + + .. py:attribute:: dataset_config_name + :type: Optional[str] + :value: None + + + + .. py:attribute:: train_file + :type: Optional[str] + :value: None + + + + .. py:attribute:: validation_file + :type: Optional[str] + :value: None + + + + .. py:attribute:: max_train_samples + :type: Optional[int] + :value: None + + + + .. py:attribute:: max_eval_samples + :type: Optional[int] + :value: 10000000000.0 + + + + .. py:attribute:: streaming + :type: bool + :value: False + + + + .. py:attribute:: block_size + :type: Optional[int] + :value: None + + + + .. py:attribute:: overwrite_cache + :type: bool + :value: False + + + + .. py:attribute:: validation_split_percentage + :type: Optional[int] + :value: 5 + + + + .. py:attribute:: preprocessing_num_workers + :type: Optional[int] + :value: None + + + + .. py:attribute:: group_texts_batch_size + :type: int + :value: 1000 + + + + .. py:attribute:: disable_group_texts + :type: bool + :value: True + + + + .. py:attribute:: keep_linebreaks + :type: bool + :value: True + + + + .. py:attribute:: test_file + :type: Optional[str] + :value: None + + + + .. py:attribute:: train_on_prompt + :type: bool + :value: False + + + + .. py:attribute:: conversation_template + :type: Optional[str] + :value: None + + + + .. py:method:: __post_init__() + + +.. py:class:: MultiModalDatasetArguments + + Bases: :py:obj:`DatasetArguments` + + + + Define a class DatasetArguments using the dataclass decorator. + The class contains several optional parameters that can be used to configure a dataset for a language model. + + dataset_path : str + a string representing the path of the dataset to use. + + dataset_name : str + a string representing the name of the dataset to use. The default value is "customized". + + is_custom_dataset : bool + a boolean indicating whether to use custom data. The default value is False. + + customized_cache_dir : str + a string representing the path to the directory where customized dataset caches will be stored. + + dataset_config_name : str + a string representing the configuration name of the dataset to use (via the datasets library). + + train_file : str + a string representing the path to the input training data file (a text file). + + validation_file : str + a string representing the path to the input evaluation data file to evaluate the perplexity on (a text file). + + max_train_samples : int + an integer indicating the maximum number of training examples to use for debugging or quicker training. + If set, the training dataset will be truncated to this number. + + max_eval_samples: int + an integer indicating the maximum number of evaluation examples to use for debugging or quicker training. + If set, the evaluation dataset will be truncated to this number. + + streaming : bool + a boolean indicating whether to enable streaming mode. + + block_size: int + an integer indicating the optional input sequence length after tokenization. The training dataset will be + truncated in blocks of this size for training. + + train_on_prompt: bool + a boolean indicating whether to train on prompt for conversation datasets such as ShareGPT. + + conversation_template: str + a string representing the template for conversation datasets. + + The class also includes some additional parameters that can be used to configure the dataset further, such as `overwrite_cache`, + `validation_split_percentage`, `preprocessing_num_workers`, `disable_group_texts`, `demo_example_in_prompt`, `explanation_in_prompt`, + `keep_linebreaks`, and `prompt_structure`. + + The field function is used to set default values and provide help messages for each parameter. The Optional type hint is + used to indicate that a parameter is optional. The metadata argument is used to provide additional information about + each parameter, such as a help message. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: image_folder + :type: Optional[str] + :value: None + + + + .. py:attribute:: image_aspect_ratio + :type: Optional[str] + :value: 'pad' + + + + .. py:attribute:: is_multimodal + :type: Optional[bool] + :value: True + + + + .. py:attribute:: use_image_start_end + :type: Optional[bool] + :value: True + + + + .. py:attribute:: sep_style + :type: Optional[str] + :value: 'plain' + + + +.. py:class:: FinetunerArguments + + Bases: :py:obj:`transformers.TrainingArguments` + + + + Adapt transformers.TrainingArguments + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: eval_dataset_path + :type: Optional[str] + :value: None + + + + .. py:attribute:: remove_unused_columns + :type: Optional[bool] + :value: False + + + + .. py:attribute:: finetune_part + :type: Optional[str] + :value: 'language_projection' + + + + .. py:attribute:: save_language_projection + :type: Optional[str] + :value: False + + + + .. py:attribute:: use_lisa + :type: bool + :value: False + + + + .. py:attribute:: lisa_activated_layers + :type: int + :value: 2 + + + + .. py:attribute:: lisa_interval_steps + :type: int + :value: 20 + + + + .. py:attribute:: lisa_layers_attribute + :type: str + :value: 'model.model.layers' + + + + .. py:attribute:: use_customized_optim + :type: bool + :value: False + + + + .. py:attribute:: customized_optim + :type: str + :value: 'sign_sgd' + + + + .. py:attribute:: customized_optim_args + :type: str + :value: None + + + + .. py:attribute:: optim_dummy_beta1 + :type: float + :value: 0.9 + + + + .. py:attribute:: optim_dummy_beta2 + :type: float + :value: 0.999 + + + + .. py:attribute:: optim_adam_beta1 + :type: float + :value: 0.9 + + + + .. py:attribute:: optim_adam_beta2 + :type: float + :value: 0.999 + + + + .. py:attribute:: optim_beta1 + :type: float + :value: 0.9 + + + + .. py:attribute:: optim_beta2 + :type: float + :value: 0.999 + + + + .. py:attribute:: optim_beta3 + :type: float + :value: 0.9 + + + + .. py:attribute:: optim_momentum + :type: float + :value: 0.999 + + + + .. py:attribute:: optim_weight_decay + :type: float + :value: 0 + + + +.. py:class:: RewardModelTunerArguments + + Bases: :py:obj:`FinetunerArguments` + + + + Arguments for reward modeling. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:class:: EvaluatorArguments + + + Define a class EvaluatorArguments using the dataclass decorator. The class contains several optional + parameters that can be used to configure a evaluator. + + local_rank : str + For distributed training: local_rank + + random_shuffle : bool + + use_wandb : bool + + random_seed : int, default = 1 + + output_dir : str, default = './output_dir', + + mixed_precision : str, choice from ["bf16","fp16"]. + mixed precision mode, whether to use bf16 or fp16 + + deepspeed : + Enable deepspeed and pass the path to deepspeed json config file (e.g. ds_config.json) or an already + loaded json file as a dict + + temperature : float + An argument of model.generate in huggingface to control the diversity of generation. + + repetition_penalty : float + An argument of model.generate in huggingface to penalize repetitions. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: local_rank + :type: int + :value: -1 + + + + .. py:attribute:: random_shuffle + :type: Optional[bool] + :value: False + + + + .. py:attribute:: use_wandb + :type: Optional[bool] + :value: False + + + + .. py:attribute:: random_seed + :type: Optional[int] + :value: 1 + + + + .. py:attribute:: output_dir + :type: Optional[str] + :value: './output_dir' + + + + .. py:attribute:: mixed_precision + :type: Optional[str] + :value: 'bf16' + + + + .. py:attribute:: deepspeed + :type: Optional[str] + :value: None + + + + .. py:attribute:: answer_type + :type: Optional[str] + :value: 'text' + + + + .. py:attribute:: prompt_structure + :type: Optional[str] + :value: '{input}' + + + + .. py:attribute:: evaluate_block_size + :type: Optional[int] + :value: 512 + + + + .. py:attribute:: metric + :type: Optional[str] + :value: 'accuracy' + + + + .. py:attribute:: inference_batch_size_per_device + :type: Optional[int] + :value: 1 + + + + .. py:attribute:: use_accelerator_for_evaluator + :type: bool + :value: False + + + + .. py:attribute:: temperature + :type: float + :value: 0 + + + + .. py:attribute:: repetition_penalty + :type: float + :value: 1 + + + + .. py:attribute:: max_new_tokens + :type: int + :value: 100 + + + +.. py:class:: InferencerArguments + + + Define a class InferencerArguments using the dataclass decorator. The class contains several optional + parameters that can be used to configure a inferencer. + + local_rank : str + For distributed training: local_rank + random_seed : int, default = 1 + inference_batch_size : int, default = 1 + deepspeed : + Enable deepspeed and pass the path to deepspeed json config file (e.g. ds_config.json) or an already + loaded json file as a dict + mixed_precision : str, choice from ["bf16","fp16"]. + mixed precision mode, whether to use bf16 or fp16 + temperature : float + An argument of model.generate in huggingface to control the diversity of generation. + repetition_penalty : float + An argument of model.generate in huggingface to penalize repetitions. + use_beam_search : Optional[bool] + Whether to use beam search during inference, By default False. + num_output_sequences : Optional[int] + Number of output sequences to return for the given prompt, + currently only used in vllm inference, By default 8. + top_p : Optional[float] + top_p for sampling, By default 1.0. + top_k : Optional[int] + top_k for sampling, By default -1 (no top_k). + additional_stop_token_ids : Optional[List[int]] + the ids of the end of sentence tokens, By default []. + apply_chat_template : Optional[bool] + Whether to apply chat template, By default True. + save_results : Optional[bool] + Whether to save inference results, By default False. + results_path : Optional[str] + The **json file** path of inference results, By default None. + enable_decode_inference_result : Optional[bool] + Whether to detokenize the inference results. + + NOTE: For iterative align pipelines, whether to detokenize depends on + the homogeneity of the policy model and the reward model + (i.e., if they have the same tokenizer). + use_vllm: bool, optional + Whether to use VLLM for inference, By default False. + vllm_tensor_parallel_size: int, optional + The tensor parallel size for VLLM inference. + vllm_gpu_memory_utilization: float, optional + The GPU memory utilization for VLLM inference. The proportion of GPU + memory (per GPU) to use for VLLM inference. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: device + :type: str + :value: 'gpu' + + + + .. py:attribute:: local_rank + :type: int + :value: -1 + + + + .. py:attribute:: inference_batch_size + :type: int + :value: 1 + + + + .. py:attribute:: vllm_inference_batch_size + :type: int + :value: 1 + + + + .. py:attribute:: temperature + :type: float + :value: 0.0 + + + + .. py:attribute:: repetition_penalty + :type: float + :value: 1 + + + + .. py:attribute:: max_new_tokens + :type: int + :value: 100 + + + + .. py:attribute:: random_seed + :type: Optional[int] + :value: 1 + + + + .. py:attribute:: deepspeed + :type: Optional[str] + :value: None + + + + .. py:attribute:: mixed_precision + :type: Optional[str] + :value: 'bf16' + + + + .. py:attribute:: do_sample + :type: Optional[bool] + :value: False + + + + .. py:attribute:: use_accelerator + :type: bool + :value: False + + + + .. py:attribute:: use_beam_search + :type: Optional[bool] + :value: False + + + + .. py:attribute:: num_output_sequences + :type: Optional[int] + :value: 8 + + + + .. py:attribute:: top_p + :type: Optional[float] + :value: 1.0 + + + + .. py:attribute:: top_k + :type: Optional[int] + :value: -1 + + + + .. py:attribute:: additional_stop_token_ids + :type: Optional[List[int]] + :value: [] + + + + .. py:attribute:: apply_chat_template + :type: Optional[bool] + :value: True + + + + .. py:attribute:: enable_decode_inference_result + :type: Optional[bool] + :value: False + + + + .. py:attribute:: tensor_parallel_size + :type: Optional[int] + :value: 1 + + + + .. py:attribute:: enable_distributed_inference + :type: Optional[bool] + :value: False + + + + .. py:attribute:: distributed_inference_num_instances + :type: Optional[int] + :value: 1 + + + + .. py:attribute:: use_vllm + :type: bool + :value: False + + + + .. py:attribute:: vllm_tensor_parallel_size + :type: Optional[int] + :value: 1 + + + + .. py:attribute:: vllm_gpu_memory_utilization + :type: Optional[float] + :value: 0.95 + + + + .. py:attribute:: save_results + :type: Optional[bool] + :value: False + + + + .. py:attribute:: results_path + :type: Optional[str] + :value: None + + + + .. py:method:: __post_init__() + + +.. py:class:: RaftAlignerArguments + + Bases: :py:obj:`transformers.TrainingArguments` + + + + Define a class RaftAlignerArguments to configure raft aligner. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: output_reward_path + :type: Optional[str] + :value: 'tmp/raft_aligner/' + + + + .. py:attribute:: output_min_length + :type: Optional[int] + :value: 64 + + + + .. py:attribute:: output_max_length + :type: Optional[int] + :value: 128 + + + + .. py:attribute:: num_raft_iteration + :type: Optional[int] + :value: 20 + + + + .. py:attribute:: raft_batch_size + :type: Optional[int] + :value: 1024 + + + + .. py:attribute:: top_reward_percentage + :type: Optional[float] + :value: 0.2 + + + + .. py:attribute:: inference_batch_size_per_device + :type: Optional[int] + :value: 1 + + + + .. py:attribute:: collection_strategy + :type: Optional[str] + :value: 'top' + + + +.. py:class:: BenchmarkingArguments + + .. py:attribute:: dataset_name + :type: Optional[str] + :value: None + + + + .. py:attribute:: lm_evaluation_metric + :type: Optional[str] + :value: 'accuracy' + + + +.. py:class:: DPOAlignerArguments + + + The arguments for the DPO training script. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: local_rank + :type: int + :value: -1 + + + + .. py:attribute:: beta + :type: Optional[float] + :value: 0.1 + + + + .. py:attribute:: learning_rate + :type: Optional[float] + :value: 0.0005 + + + + .. py:attribute:: lr_scheduler_type + :type: Optional[str] + :value: 'cosine' + + + + .. py:attribute:: warmup_steps + :type: Optional[int] + :value: 100 + + + + .. py:attribute:: weight_decay + :type: Optional[float] + :value: 0.05 + + + + .. py:attribute:: optimizer_type + :type: Optional[str] + :value: 'paged_adamw_32bit' + + + + .. py:attribute:: per_device_train_batch_size + :type: Optional[int] + :value: 4 + + + + .. py:attribute:: per_device_eval_batch_size + :type: Optional[int] + :value: 1 + + + + .. py:attribute:: gradient_accumulation_steps + :type: Optional[int] + :value: 4 + + + + .. py:attribute:: gradient_checkpointing + :type: Optional[bool] + :value: True + + + + .. py:attribute:: gradient_checkpointing_use_reentrant + :type: Optional[bool] + :value: False + + + + .. py:attribute:: max_prompt_length + :type: Optional[int] + :value: 512 + + + + .. py:attribute:: max_length + :type: Optional[int] + :value: 1024 + + + + .. py:attribute:: max_steps + :type: Optional[int] + :value: 1000 + + + + .. py:attribute:: logging_steps + :type: Optional[int] + :value: 10 + + + + .. py:attribute:: save_steps + :type: Optional[int] + :value: 100 + + + + .. py:attribute:: eval_steps + :type: Optional[int] + :value: 100 + + + + .. py:attribute:: output_dir + :type: Optional[str] + :value: './results' + + + + .. py:attribute:: log_freq + :type: Optional[int] + :value: 1 + + + + .. py:attribute:: sanity_check + :type: Optional[bool] + :value: False + + + + .. py:attribute:: report_to + :type: Optional[str] + :value: 'wandb' + + + + .. py:attribute:: seed + :type: Optional[int] + :value: 0 + + + + .. py:attribute:: run_name + :type: Optional[str] + :value: 'dpo' + + + + .. py:attribute:: eval_dataset_path + :type: Optional[str] + :value: None + + + +.. py:class:: DPOv2AlignerArguments + + Bases: :py:obj:`FinetunerArguments` + + + + The arguments for the DPOv2 training script. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: random_seed + :type: Optional[int] + :value: 42 + + + + .. py:attribute:: accelerate_config_file + :type: Optional[str] + :value: None + + + + .. py:attribute:: margin_scale + :type: Optional[float] + :value: 1.0 + + + + .. py:attribute:: sampling_paired_method + :type: Optional[str] + :value: 'max_random' + + + + .. py:attribute:: length_penalty + :type: Optional[float] + :value: 0 + + + + .. py:attribute:: max_length + :type: Optional[int] + :value: 2048 + + + + .. py:attribute:: max_prompt_length + :type: Optional[int] + :value: 1000 + + + + .. py:attribute:: mask_prompt + :type: Optional[bool] + :value: False + + + + .. py:attribute:: beta + :type: Optional[float] + :value: 0.1 + + + + .. py:attribute:: loss_type + :type: Optional[str] + :value: 'sigmoid' + + + +.. py:class:: IterativeAlignerArguments + + Bases: :py:obj:`InferencerArguments` + + + + Arguments for iterative aligners. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: dataset_path_list + :type: List[str] + :value: [] + + + + .. py:attribute:: initial_iter_idx + :type: int + :value: 0 + + + +.. py:class:: IterativeDPOAlignerArguments + + Bases: :py:obj:`IterativeAlignerArguments`, :py:obj:`DPOv2AlignerArguments` + + + + Arguments for iterative DPO aligners. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: output_dir + :type: Optional[str] + :value: './runs' + + + + .. py:attribute:: reward_model_inference_batch_size + :type: int + :value: 1 + + + + .. py:attribute:: reward_model_inference_block_size + :type: int + :value: 2048 + + + + .. py:attribute:: do_response_generation + :type: bool + :value: True + + + + .. py:attribute:: do_scoring + :type: bool + :value: True + + + + .. py:attribute:: do_dpo_align + :type: bool + :value: True + + + +.. py:data:: PIPELINE_ARGUMENT_MAPPING + +.. py:class:: AutoArguments + + + Automatically choose arguments from FinetunerArguments or EvaluatorArguments. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: get_pipeline_args_class() + + +.. py:function:: split_args(args) + diff --git a/_sources/autoapi/lmflow/datasets/dataset/index.rst.txt b/_sources/autoapi/lmflow/datasets/dataset/index.rst.txt new file mode 100644 index 000000000..a171bd384 --- /dev/null +++ b/_sources/autoapi/lmflow/datasets/dataset/index.rst.txt @@ -0,0 +1,646 @@ +lmflow.datasets.dataset +======================= + +.. py:module:: lmflow.datasets.dataset + +.. autoapi-nested-parse:: + + This Python code defines a class Dataset with methods for initializing, loading, + and manipulating datasets from different backends such as Hugging Face and JSON. + + The `Dataset` class includes methods for loading datasets from a dictionary and a Hugging + Face dataset, mapping datasets, and retrieving the backend dataset and arguments. + + .. + !! processed by numpydoc !! + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.datasets.dataset.logger + lmflow.datasets.dataset.DATASET_TYPES + lmflow.datasets.dataset.KEY_TYPE + lmflow.datasets.dataset.KEY_INSTANCES + lmflow.datasets.dataset.KEY_SCORE + + +Classes +------- + +.. autoapisummary:: + + lmflow.datasets.dataset.Dataset + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:data:: DATASET_TYPES + :value: ['text_only', 'text2text', 'float_only', 'image_text', 'conversation', 'paired_conversation',... + + +.. py:data:: KEY_TYPE + :value: 'type' + + +.. py:data:: KEY_INSTANCES + :value: 'instances' + + +.. py:data:: KEY_SCORE + :value: 'score' + + +.. py:class:: Dataset(data_args: lmflow.args.DatasetArguments = None, backend: str = 'huggingface', *args, **kwargs) + + + Initializes the Dataset object with the given parameters. + + + :Parameters: + + **data_args** : DatasetArguments object. + Contains the arguments required to load the dataset. + + **backend** : str, default="huggingface" + A string representing the dataset backend. Defaults to "huggingface". + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: data_args + :value: None + + + + .. py:attribute:: backend + :value: 'huggingface' + + + + .. py:attribute:: backend_dataset + :value: None + + + + .. py:attribute:: type + :value: None + + + + .. py:attribute:: dataset_path + + + .. py:method:: __len__() + + + .. py:method:: _check_data_format() + + + Checks if data type and data structure matches + + Raise messages with hints if not matched. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: from_dict(dict_obj: dict, *args, **kwargs) + + + Create a Dataset object from a dictionary. + + Return a Dataset given a dict with format: + { + "type": TYPE, + "instances": [ + { + "key_1": VALUE_1.1, + "key_2": VALUE_1.2, + ... + }, + { + "key_1": VALUE_2.1, + "key_2": VALUE_2.2, + ... + }, + ... + ] + } + + :Parameters: + + **dict_obj** : dict. + A dictionary containing the dataset information. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + **self** : Dataset object. + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: create_from_dict(dict_obj, *args, **kwargs) + :classmethod: + + + + + + + + + + :Returns: + + Returns a Dataset object given a dict. + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: to_dict() + + + + + + + + + :Returns: + + Return a dict represents the dataset: + { + "type": TYPE, + "instances": [ + { + "key_1": VALUE_1.1, + "key_2": VALUE_1.2, + ... + }, + { + "key_1": VALUE_2.1, + "key_2": VALUE_2.2, + ... + }, + ... + ] + } + + A python dict object represents the content of this dataset. + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: to_list() + + + Returns a list of instances. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: map(*args, **kwargs) + + + + + + :Parameters: + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + **self** : Dataset object. + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_backend() -> Optional[str] + + + + + + + + + :Returns: + + self.backend + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_backend_dataset() + + + + + + + + + :Returns: + + self.backend_dataset + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_fingerprint() + + + + + + + + + :Returns: + + Fingerprint of the backend_dataset which controls the cache + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_data_args() + + + + + + + + + :Returns: + + self.data_args + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_type() -> str + + + + + + + + + :Returns: + + self.type + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: save(file_path: str, format: str = 'json') + + + Save the dataset to a json file. + + + :Parameters: + + **file_path** : str. + The path to the file where the dataset will be saved. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: sample(n: int, seed: int = 42) + + + Sample n instances from the dataset. + + + :Parameters: + + **n** : int. + The number of instances to sample from the dataset. + + + + :Returns: + + **sample_dataset** : Dataset object. + A new dataset object containing the sampled instances. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: train_test_split(test_size: float = 0.2, shuffle: bool = True, seed: int = 42) + + + Split the dataset into training and testing sets. + + + :Parameters: + + **test_size** : float, default=0.2. + The proportion of the dataset that will be used for testing. + + + + :Returns: + + **train_dataset** : Dataset object. + A new dataset object containing the training instances. + + **test_dataset** : Dataset object. + A new dataset object containing the testing instances. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: drop_instances(indices: list) + + + Drop instances from the dataset. + + + :Parameters: + + **indices** : list. + A list of indices of the instances to drop from the dataset. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: sanity_check(drop_invalid: bool = True) + + + Perform a sanity check on the dataset. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: hf_dataset_sanity_check(drop_invalid: bool = True) + + + Perform a sanity check on the HuggingFace dataset. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/datasets/index.rst.txt b/_sources/autoapi/lmflow/datasets/index.rst.txt new file mode 100644 index 000000000..0dd7a83c5 --- /dev/null +++ b/_sources/autoapi/lmflow/datasets/index.rst.txt @@ -0,0 +1,651 @@ +lmflow.datasets +=============== + +.. py:module:: lmflow.datasets + +.. autoapi-nested-parse:: + + + This Python code defines a class Dataset with methods for initializing, loading, + and manipulating datasets from different backends such as Hugging Face and JSON. + + The `Dataset` class includes methods for loading datasets from a dictionary and a Hugging + Face dataset, mapping datasets, and retrieving the backend dataset and arguments. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + /autoapi/lmflow/datasets/dataset/index + /autoapi/lmflow/datasets/multi_modal_dataset/index + + +Classes +------- + +.. autoapisummary:: + + lmflow.datasets.Dataset + + +Functions +--------- + +.. autoapisummary:: + + lmflow.datasets.is_multimodal_available + + +Package Contents +---------------- + +.. py:function:: is_multimodal_available() + +.. py:class:: Dataset(data_args: lmflow.args.DatasetArguments = None, backend: str = 'huggingface', *args, **kwargs) + + + Initializes the Dataset object with the given parameters. + + + :Parameters: + + **data_args** : DatasetArguments object. + Contains the arguments required to load the dataset. + + **backend** : str, default="huggingface" + A string representing the dataset backend. Defaults to "huggingface". + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: data_args + :value: None + + + + .. py:attribute:: backend + :value: 'huggingface' + + + + .. py:attribute:: backend_dataset + :value: None + + + + .. py:attribute:: type + :value: None + + + + .. py:attribute:: dataset_path + + + .. py:method:: __len__() + + + .. py:method:: _check_data_format() + + + Checks if data type and data structure matches + + Raise messages with hints if not matched. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: from_dict(dict_obj: dict, *args, **kwargs) + + + Create a Dataset object from a dictionary. + + Return a Dataset given a dict with format: + { + "type": TYPE, + "instances": [ + { + "key_1": VALUE_1.1, + "key_2": VALUE_1.2, + ... + }, + { + "key_1": VALUE_2.1, + "key_2": VALUE_2.2, + ... + }, + ... + ] + } + + :Parameters: + + **dict_obj** : dict. + A dictionary containing the dataset information. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + **self** : Dataset object. + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: create_from_dict(dict_obj, *args, **kwargs) + :classmethod: + + + + + + + + + + :Returns: + + Returns a Dataset object given a dict. + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: to_dict() + + + + + + + + + :Returns: + + Return a dict represents the dataset: + { + "type": TYPE, + "instances": [ + { + "key_1": VALUE_1.1, + "key_2": VALUE_1.2, + ... + }, + { + "key_1": VALUE_2.1, + "key_2": VALUE_2.2, + ... + }, + ... + ] + } + + A python dict object represents the content of this dataset. + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: to_list() + + + Returns a list of instances. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: map(*args, **kwargs) + + + + + + :Parameters: + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + **self** : Dataset object. + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_backend() -> Optional[str] + + + + + + + + + :Returns: + + self.backend + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_backend_dataset() + + + + + + + + + :Returns: + + self.backend_dataset + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_fingerprint() + + + + + + + + + :Returns: + + Fingerprint of the backend_dataset which controls the cache + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_data_args() + + + + + + + + + :Returns: + + self.data_args + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_type() -> str + + + + + + + + + :Returns: + + self.type + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: save(file_path: str, format: str = 'json') + + + Save the dataset to a json file. + + + :Parameters: + + **file_path** : str. + The path to the file where the dataset will be saved. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: sample(n: int, seed: int = 42) + + + Sample n instances from the dataset. + + + :Parameters: + + **n** : int. + The number of instances to sample from the dataset. + + + + :Returns: + + **sample_dataset** : Dataset object. + A new dataset object containing the sampled instances. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: train_test_split(test_size: float = 0.2, shuffle: bool = True, seed: int = 42) + + + Split the dataset into training and testing sets. + + + :Parameters: + + **test_size** : float, default=0.2. + The proportion of the dataset that will be used for testing. + + + + :Returns: + + **train_dataset** : Dataset object. + A new dataset object containing the training instances. + + **test_dataset** : Dataset object. + A new dataset object containing the testing instances. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: drop_instances(indices: list) + + + Drop instances from the dataset. + + + :Parameters: + + **indices** : list. + A list of indices of the instances to drop from the dataset. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: sanity_check(drop_invalid: bool = True) + + + Perform a sanity check on the dataset. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: hf_dataset_sanity_check(drop_invalid: bool = True) + + + Perform a sanity check on the HuggingFace dataset. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/datasets/multi_modal_dataset/index.rst.txt b/_sources/autoapi/lmflow/datasets/multi_modal_dataset/index.rst.txt new file mode 100644 index 000000000..747bf15ea --- /dev/null +++ b/_sources/autoapi/lmflow/datasets/multi_modal_dataset/index.rst.txt @@ -0,0 +1,177 @@ +lmflow.datasets.multi_modal_dataset +=================================== + +.. py:module:: lmflow.datasets.multi_modal_dataset + +.. autoapi-nested-parse:: + + This Python code defines a class Multi Modal Dataset. + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset + lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset + + +Functions +--------- + +.. autoapisummary:: + + lmflow.datasets.multi_modal_dataset.preprocess_multimodal_llava + lmflow.datasets.multi_modal_dataset.tokenizer_image_token + lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_plain + lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_v1 + + +Module Contents +--------------- + +.. py:class:: CustomMultiModalDataset(dataset_path: str, data_args: lmflow.args.DatasetArguments) + + Bases: :py:obj:`torch.utils.data.Dataset` + + + + Dataset for Multi Modal data + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: data_dict + + + .. py:attribute:: data_args + + + .. py:attribute:: image_folder + + + .. py:method:: __len__() + + + .. py:method:: register_tokenizer(tokenizer, image_processor=None) + + + .. py:method:: __getitem__(i) + + +.. py:function:: preprocess_multimodal_llava(sources, data_args) + +.. py:function:: tokenizer_image_token(prompt, tokenizer, image_token_index=IMAGE_TOKEN_INDEX, return_tensors=None) + +.. py:function:: preprocess_llama_from_llava_plain(sources, tokenizer: transformers.PreTrainedTokenizer, has_image: bool = False) + + + This function just add the image in the front of text. + And don't add any prompt. + Args: + sources: The input data with text and image. + tokenizer: The tokenizer to process text. + has_image: Whether the input data has image. + Returns: + The input_ids and labels for the model. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:function:: preprocess_llama_from_llava_v1(sources, tokenizer: transformers.PreTrainedTokenizer, has_image: bool = False) + + + This function add the prompt and then put the image after the prompt. + So it needs additional code to generate the target label. + Args: + sources: The input data with text and image. + tokenizer: The tokenizer to process text. + has_image: Whether the input data has image. + Returns: + The input_ids and labels for the model. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:class:: DataCollatorForSupervisedDataset + + Bases: :py:obj:`object` + + + + Collate examples for supervised fine-tuning. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: tokenizer + :type: transformers.PreTrainedTokenizer + + + .. py:method:: __call__(instances) + + diff --git a/_sources/autoapi/lmflow/index.rst.txt b/_sources/autoapi/lmflow/index.rst.txt new file mode 100644 index 000000000..774227f8a --- /dev/null +++ b/_sources/autoapi/lmflow/index.rst.txt @@ -0,0 +1,40 @@ +lmflow +====== + +.. py:module:: lmflow + + +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + /autoapi/lmflow/args/index + /autoapi/lmflow/datasets/index + /autoapi/lmflow/models/index + /autoapi/lmflow/optim/index + /autoapi/lmflow/pipeline/index + /autoapi/lmflow/tokenization/index + /autoapi/lmflow/utils/index + /autoapi/lmflow/version/index + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.internal_version + lmflow.__version__ + + +Package Contents +---------------- + +.. py:data:: internal_version + :value: '0.0.9' + + +.. py:data:: __version__ + diff --git a/_sources/autoapi/lmflow/models/auto_model/index.rst.txt b/_sources/autoapi/lmflow/models/auto_model/index.rst.txt new file mode 100644 index 000000000..02555c027 --- /dev/null +++ b/_sources/autoapi/lmflow/models/auto_model/index.rst.txt @@ -0,0 +1,31 @@ +lmflow.models.auto_model +======================== + +.. py:module:: lmflow.models.auto_model + +.. autoapi-nested-parse:: + + Automatically get correct model type. + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.models.auto_model.AutoModel + + +Module Contents +--------------- + +.. py:class:: AutoModel + + .. py:method:: get_model(model_args, *args, **kwargs) + :classmethod: + + + diff --git a/_sources/autoapi/lmflow/models/base_model/index.rst.txt b/_sources/autoapi/lmflow/models/base_model/index.rst.txt new file mode 100644 index 000000000..ddc469cfe --- /dev/null +++ b/_sources/autoapi/lmflow/models/base_model/index.rst.txt @@ -0,0 +1,51 @@ +lmflow.models.base_model +======================== + +.. py:module:: lmflow.models.base_model + +.. autoapi-nested-parse:: + + Base model class. + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.models.base_model.BaseModel + + +Module Contents +--------------- + +.. py:class:: BaseModel(*args, **kwargs) + + Bases: :py:obj:`abc.ABC` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + diff --git a/_sources/autoapi/lmflow/models/decoder_model/index.rst.txt b/_sources/autoapi/lmflow/models/decoder_model/index.rst.txt new file mode 100644 index 000000000..16c36de6b --- /dev/null +++ b/_sources/autoapi/lmflow/models/decoder_model/index.rst.txt @@ -0,0 +1,61 @@ +lmflow.models.decoder_model +=========================== + +.. py:module:: lmflow.models.decoder_model + +.. autoapi-nested-parse:: + + A one-line summary of the module or program, terminated by a period. + + Leave one blank line. The rest of this docstring should contain an + overall description of the module or program. Optionally, it may also + contain a brief description of exported classes and functions and/or usage + examples. + + Typical usage example: + + foo = ClassFoo() + bar = foo.FunctionBar() + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.models.decoder_model.DecoderModel + + +Module Contents +--------------- + +.. py:class:: DecoderModel(*args, **kwargs) + + Bases: :py:obj:`lmflow.models.base_model.BaseModel` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + diff --git a/_sources/autoapi/lmflow/models/encoder_decoder_model/index.rst.txt b/_sources/autoapi/lmflow/models/encoder_decoder_model/index.rst.txt new file mode 100644 index 000000000..5f1c1c6a8 --- /dev/null +++ b/_sources/autoapi/lmflow/models/encoder_decoder_model/index.rst.txt @@ -0,0 +1,61 @@ +lmflow.models.encoder_decoder_model +=================================== + +.. py:module:: lmflow.models.encoder_decoder_model + +.. autoapi-nested-parse:: + + A one-line summary of the module or program, terminated by a period. + + Leave one blank line. The rest of this docstring should contain an + overall description of the module or program. Optionally, it may also + contain a brief description of exported classes and functions and/or usage + examples. + + Typical usage example: + + foo = ClassFoo() + bar = foo.FunctionBar() + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.models.encoder_decoder_model.EncoderDecoderModel + + +Module Contents +--------------- + +.. py:class:: EncoderDecoderModel(*args, **kwargs) + + Bases: :py:obj:`lmflow.models.base_model.BaseModel` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + diff --git a/_sources/autoapi/lmflow/models/hf_decoder_model/index.rst.txt b/_sources/autoapi/lmflow/models/hf_decoder_model/index.rst.txt new file mode 100644 index 000000000..3b4da2737 --- /dev/null +++ b/_sources/autoapi/lmflow/models/hf_decoder_model/index.rst.txt @@ -0,0 +1,427 @@ +lmflow.models.hf_decoder_model +============================== + +.. py:module:: lmflow.models.hf_decoder_model + +.. autoapi-nested-parse:: + + This is a class called HFDecoderModel which is a wrapper around transformers model and + tokenizer classes. It has several methods such as __init__, tokenize, and train that are + used for training and fine-tuning the model. The __init__ method takes in several arguments + such as model_args, tune_strategy, and ds_config, which are used to load the pretrained + model and tokenizer, and initialize the training settings. + + The tokenize method is used to tokenize the input text and return the input IDs and attention + masks that can be fed to the model for training or inference. + + This class supports different tune_strategy options such as 'normal', 'none', 'lora', and + 'adapter', which allow for different fine-tuning settings of the model. However, the 'lora' + and 'adapter' strategies are not yet implemented. + + Overall, this class provides a convenient interface for loading and fine-tuning transformer + models and can be used for various NLP tasks such as language modeling, text classification, + and question answering. + + .. + !! processed by numpydoc !! + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.models.hf_decoder_model.logger + + +Classes +------- + +.. autoapisummary:: + + lmflow.models.hf_decoder_model.HFDecoderModel + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: HFDecoderModel(model_args, tune_strategy='normal', ds_config=None, device='gpu', use_accelerator=False, *args, **kwargs) + + Bases: :py:obj:`lmflow.models.decoder_model.DecoderModel`, :py:obj:`lmflow.models.hf_model_mixin.HFModelMixin`, :py:obj:`lmflow.models.interfaces.tunable.Tunable` + + + + Initializes a HFDecoderModel instance. + + + :Parameters: + + **model_args** + Model arguments such as model name, path, revision, etc. + + **tune_strategy** : str or none, default="normal". + A string representing the dataset backend. Defaults to "huggingface". + + **ds_config** + Deepspeed configuations. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: tokenize(dataset, add_special_tokens=True, *args, **kwargs) -> lmflow.datasets.dataset.Dataset + + + Tokenize the full dataset. + + + :Parameters: + + **dataset** : lmflow.datasets.Dataset. + .. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + tokenized_datasets + The tokenized dataset, without any leading or trailing special + tokens (normally they are Begin-Of-Sentence or End-Of-Sentence + tokens). + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: encode(input: Union[str, List[str]], *args, **kwargs) -> Union[List[int], List[List[int]]] + + + Perform encoding process of the tokenizer. + + + :Parameters: + + **inputs** : str or list. + The text sequence. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + outputs + if string input,return the tokenized inputs. + "Hello,world!"-> [101, 7592, 1010, 2088, 102] + if batch input,return {input_ids,attention_mask,token_type_ids} + ["Hello,world!","Hello!"]-> {'input_ids': tensor([[ 101, 7592, 1010, 2088, 102],...),'attention_mask': tensor([[1, 1, 1, 1, 1],[0,0,1,1,1]])} + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: decode(input, *args, **kwargs) -> Union[str, List[str]] + + + Perform decoding process of the tokenizer. + + + :Parameters: + + **inputs** : list or tensor. + The token sequence. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + outputs + The text decoded from the token inputs. + if batch input,return the list of text + [[101, 7592, 1010, 2088, 102],[101, 7592, 1010, 2088, 102]]-> ["Hello,world!","Hello,world!" + if single input,return the text + [101, 7592, 1010, 2088, 102]-> "Hello,world!" + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: inference(inputs, release_gpu: bool = False, use_vllm: bool = False, **kwargs) + + + Perform generation process of the model. + + + :Parameters: + + **inputs** + The sequence used as a prompt for the generation or as model inputs to the model. + When using vllm inference, this should be a string or a list of strings. + When using normal inference, this should be a tensor. + + **release_gpu** : bool, optional + Whether to release the GPU resource after inference, by default False. + + **use_vllm** : bool, optional + Whether to use VLLM for inference, by default False. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + outputs + The generated sequence output + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: __inference(inputs, *args, **kwargs) + + + Perform generation process of the model. + + + :Parameters: + + **inputs** + The **tokenized** sequence used as a prompt for the generation or as model inputs to the model. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + outputs + The generated sequence output + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: __vllm_inference(inputs: Union[str, List[str]], sampling_params: Optional[vllm.SamplingParams] = None, **kwargs) -> List[lmflow.utils.data_utils.VLLMInferenceResultWithInput] + + + Perform VLLM inference process of the model. + + + :Parameters: + + **inputs** : Union[str, List[str]] + Prompt(s), string or a list of strings. + + **sampling_params** : Optional[SamplingParams], optional + vllm SamplingParams object, by default None. + + + + :Returns: + + List[VLLMInferenceResultWithInput] + Return a list of VLLMInferenceResultWithInput, where each + element contains the input prompt and the corresponding output. + + When `sampling_params.detokenize = True`, the output would be a list of strings, + contains sampling_params.n samples for the corresponding prompt. + + When `sampling_params.detokenize = False`, return a list of list of ints + (token ids, no decoding after generation). + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: prepare_inputs_for_inference(dataset: lmflow.datasets.dataset.Dataset, apply_chat_template: bool = True, enable_distributed_inference: bool = False, use_vllm: bool = False, **kwargs) -> Union[List[str], ray.data.Dataset, Dict[str, torch.Tensor]] + + + Prepare inputs for inference. + + + :Parameters: + + **dataset** : lmflow.datasets.Dataset. + The dataset used for inference. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + outputs + The prepared inputs for inference. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: __prepare_inputs_for_vllm_inference(dataset: lmflow.datasets.dataset.Dataset, apply_chat_template: bool = True, enable_distributed_inference: bool = False) -> Union[List[str], ray.data.Dataset] + + + .. py:method:: __prepare_inputs_for_inference(dataset: lmflow.datasets.dataset.Dataset, **kwargs) + :abstractmethod: + + + + .. py:method:: merge_lora_weights() + + + .. py:method:: get_peft_without_qlora() + + + .. py:method:: save(dir, save_full_model=False, *args, **kwargs) + + + Perform generation process of the model. + + + :Parameters: + + **dir** + The directory to save model and tokenizer + + **save_full_model** : Optional. + Whether to save full model. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + outputs + The generated sequence output + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/models/hf_encoder_decoder_model/index.rst.txt b/_sources/autoapi/lmflow/models/hf_encoder_decoder_model/index.rst.txt new file mode 100644 index 000000000..fa6f847d4 --- /dev/null +++ b/_sources/autoapi/lmflow/models/hf_encoder_decoder_model/index.rst.txt @@ -0,0 +1,363 @@ +lmflow.models.hf_encoder_decoder_model +====================================== + +.. py:module:: lmflow.models.hf_encoder_decoder_model + +.. autoapi-nested-parse:: + + This is a class called HFDecoderModel which is a wrapper around transformers model and + tokenizer classes. It has several methods such as __init__, tokenize, and train that are + used for training and fine-tuning the model. The __init__ method takes in several arguments + such as model_args, tune_strategy, and ds_config, which are used to load the pretrained + model and tokenizer, and initialize the training settings. + + The tokenize method is used to tokenize the input text and return the input IDs and attention + masks that can be fed to the model for training or inference. + + This class supports different tune_strategy options such as 'normal', 'none', 'lora', and + 'adapter', which allow for different fine-tuning settings of the model. However, the 'lora' + and 'adapter' strategies are not yet implemented. + + Overall, this class provides a convenient interface for loading and fine-tuning transformer + models and can be used for various NLP tasks such as language modeling, text classification, + and question answering. + + .. + !! processed by numpydoc !! + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.models.hf_encoder_decoder_model.logger + + +Classes +------- + +.. autoapisummary:: + + lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: HFEncoderDecoderModel(model_args, tune_strategy='normal', ds_config=None, device='gpu', use_accelerator=False, custom_model=False, with_deepspeed=True, pipeline_args=None, *args, **kwargs) + + Bases: :py:obj:`lmflow.models.encoder_decoder_model.EncoderDecoderModel`, :py:obj:`lmflow.models.interfaces.tunable.Tunable` + + + + Initializes a HFEncoderDecoderModel instance. + + + :Parameters: + + **model_args** + Model arguments such as model name, path, revision, etc. + + **tune_strategy** : str or none, default="normal". + A string representing the dataset backend. Defaults to "huggingface". + + **ds_config** + Deepspeed configuations. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: device + :value: 'gpu' + + + + .. py:method:: tokenize(dataset, *args, **kwargs) + :abstractmethod: + + + + Tokenize the full dataset. + + + :Parameters: + + **dataset** + Text dataset. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + tokenized_datasets + The tokenized dataset. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: encode(input: Union[str, List[str]], *args, **kwargs) -> Union[List[int], List[List[int]]] + + + Perform encoding process of the tokenizer. + + + :Parameters: + + **inputs** : str or list. + The text sequence. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + outputs + The tokenized inputs. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: decode(input, *args, **kwargs) -> Union[str, List[str]] + + + Perform decoding process of the tokenizer. + + + :Parameters: + + **inputs** : list. + The token sequence. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + outputs + The text decoded from the token inputs. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: inference(inputs, *args, **kwargs) + + + Perform generation process of the model. + + + :Parameters: + + **inputs** + The sequence used as a prompt for the generation or as model inputs to the model. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + outputs + The generated sequence output + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: merge_lora_weights() + + + .. py:method:: save(dir, save_full_model=False, *args, **kwargs) + + + Perform generation process of the model. + + + :Parameters: + + **dir** + The directory to save model and tokenizer + + **save_full_model** : Optional. + Whether to save full model. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + outputs + The generated sequence output + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_max_length() + + + Return max acceptable input length in terms of tokens. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_tokenizer() + + + Return the tokenizer of the model. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_backend_model() + + + Return the backend model. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/models/hf_model_mixin/index.rst.txt b/_sources/autoapi/lmflow/models/hf_model_mixin/index.rst.txt new file mode 100644 index 000000000..24007cde9 --- /dev/null +++ b/_sources/autoapi/lmflow/models/hf_model_mixin/index.rst.txt @@ -0,0 +1,301 @@ +lmflow.models.hf_model_mixin +============================ + +.. py:module:: lmflow.models.hf_model_mixin + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.models.hf_model_mixin.logger + lmflow.models.hf_model_mixin.HF_AUTOMODEL_MAPPING + lmflow.models.hf_model_mixin.HF_AUTOMODEL_TYPE + lmflow.models.hf_model_mixin.LORA_TARGET_MODULES_MAPPING + + +Classes +------- + +.. autoapisummary:: + + lmflow.models.hf_model_mixin.HFModelMixin + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:data:: HF_AUTOMODEL_MAPPING + +.. py:data:: HF_AUTOMODEL_TYPE + +.. py:data:: LORA_TARGET_MODULES_MAPPING + +.. py:class:: HFModelMixin(model_args: lmflow.args.ModelArguments, do_train: bool, ds_config=None, device: Optional[str] = 'gpu', use_accelerator: bool = False, hf_auto_model_additional_args: Optional[Dict] = None, *args, **kwargs) + + Bases: :py:obj:`lmflow.models.base_model.BaseModel` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: device + :value: 'gpu' + + + + .. py:attribute:: model_args + + + .. py:attribute:: hf_auto_model + + + .. py:attribute:: use_accelerator + :value: False + + + + .. py:attribute:: ds_config + :value: None + + + + .. py:attribute:: do_train + + + .. py:attribute:: tokenizer + + + .. py:attribute:: torch_dtype + + + .. py:attribute:: hf_model_config + + + .. py:attribute:: quant_config + :value: None + + + + .. py:attribute:: peft_config + :value: None + + + + .. py:attribute:: _activated + :value: False + + + + .. py:method:: __prepare_tokenizer(model_args: lmflow.args.ModelArguments) -> Union[transformers.PreTrainedTokenizer, transformers.PreTrainedTokenizerFast] + + + .. py:method:: __prepare_dtype(model_args: lmflow.args.ModelArguments) -> torch.dtype + + + .. py:method:: __prepare_model_config(model_args: lmflow.args.ModelArguments, hf_auto_model_additional_args: Optional[Dict] = None) + + + Prepare model configuration for hf auto register, + Parameters + ---------- + model_args : ModelArguments + LMFlow model arguments. + hf_auto_model_additional_args : Optional[Dict], optional + Special configurations such as `num_labels` in `AutoModelForSequenceClassification` + (commonly used in reward modeling) will not preset in __prepare_model_config, + so it should be passed in hf_auto_model_additional_args. + Returns + ------- + config : ModelConfig + hf model config. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: __prepare_quant_config(model_args: lmflow.args.ModelArguments) + + + .. py:method:: __prepare_peft_config(model_args: lmflow.args.ModelArguments) + + + .. py:method:: __model_module_inject(model_args: lmflow.args.ModelArguments) -> None + + + Override some model modules with custom implementations. + + Current implementations: + - Position interpolation (model_args.do_rope_scaling): + replace llama embeddings with condense embeddings. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: __prepare_model_for_training(model_args: lmflow.args.ModelArguments, hf_auto_model: HF_AUTOMODEL_TYPE) + + + .. py:method:: __prepare_model_for_inference(model_args: lmflow.args.ModelArguments, hf_auto_model: HF_AUTOMODEL_TYPE, use_accelerator: bool, ds_config) + + + .. py:method:: __prepare_model_for_vllm_inference(model_args: lmflow.args.ModelArguments, vllm_gpu_memory_utilization: float, vllm_tensor_parallel_size: int) + + + .. py:method:: __prepare_model_post_process() + + + .. py:method:: activate_model_for_inference(use_vllm: bool = False, **kwargs) + + + .. py:method:: deactivate_model_for_inference(use_vllm: bool = False) + + + Deactivate the model and release the resources. + + NOTE: Currently, VLLM doesn't have an official way to do this, and the + implementation below cannot release all gpu resources by our observation. + Thus this method is just a placeholder for future implementation. See: + [Github issue](https://github.com/vllm-project/vllm/issues/1908) + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_max_length() + + + Return max acceptable input length in terms of tokens. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_tokenizer() + + + Return the tokenizer of the model. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_backend_model() + + + Return the backend model. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/models/hf_text_regression_model/index.rst.txt b/_sources/autoapi/lmflow/models/hf_text_regression_model/index.rst.txt new file mode 100644 index 000000000..313095aab --- /dev/null +++ b/_sources/autoapi/lmflow/models/hf_text_regression_model/index.rst.txt @@ -0,0 +1,268 @@ +lmflow.models.hf_text_regression_model +====================================== + +.. py:module:: lmflow.models.hf_text_regression_model + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.models.hf_text_regression_model.logger + + +Classes +------- + +.. autoapisummary:: + + lmflow.models.hf_text_regression_model.HFTextRegressionModel + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: HFTextRegressionModel(model_args: lmflow.args.ModelArguments, tune_strategy: str = 'normal', ds_config=None, device='gpu', use_accelerator=False, *args, **kwargs) + + Bases: :py:obj:`lmflow.models.text_regression_model.TextRegressionModel`, :py:obj:`lmflow.models.hf_model_mixin.HFModelMixin`, :py:obj:`lmflow.models.interfaces.tunable.Tunable` + + + + Initializes a HFTextRegressionModel instance. + + + :Parameters: + + **model_args** + Model arguments such as model name, path, revision, etc. + + **tune_strategy** : str or none, default="normal". + A string representing the dataset backend. Defaults to "huggingface". + + **ds_config** + Deepspeed configuations. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: tokenize(dataset: lmflow.datasets.dataset.Dataset, add_special_tokens=True, *args, **kwargs) + + + Tokenize the full dataset. + + + :Parameters: + + **dataset** : lmflow.datasets.Dataset. + .. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + tokenized_datasets + The tokenized dataset, without any leading or trailing special + tokens (normally they are Begin-Of-Sentence or End-Of-Sentence + tokens). + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: inference(inputs, release_gpu: bool = False, use_vllm: bool = False, **kwargs) -> Union[List[float], transformers.modeling_outputs.SequenceClassifierOutputWithPast] + + + Perform generation process of the model. + + + :Parameters: + + **inputs** + The sequence used as a prompt for the generation or as model inputs to the model. + When using vllm inference, this should be a string or a list of strings. + When using normal inference, this should be a tensor. + + **release_gpu** : bool, optional + Whether to release the GPU resource after inference, by default False. + + **use_vllm** : bool, optional + Whether to use VLLM for inference, by default False. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + outputs + The generated sequence output + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: __inference(inputs, **kwargs) + + + Perform generation process of the model. + + + :Parameters: + + **inputs** + The **tokenized** sequence used as a prompt for the generation or as model inputs to the model. + + **kwargs** : Optional. + Keyword arguments. + + + + :Returns: + + outputs + The generated sequence output + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: __vllm_inference(inputs: Union[str, List[str]], sampling_params: Optional[vllm.SamplingParams] = None, **kwargs) -> Union[List[List[str]], List[List[List[int]]]] + :abstractmethod: + + + + Perform VLLM inference process of the model. + + + :Parameters: + + **inputs** : Union[str, List[str]] + Prompt(s), string or a list of strings. + + **sampling_params** : Optional[SamplingParams], optional + vllm SamplingParams object, by default None. + + + + :Returns: + + + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: prepare_inputs_for_inference(dataset: lmflow.datasets.dataset.Dataset, enable_distributed_inference: bool = False, use_vllm: bool = False, **kwargs) -> Union[lmflow.datasets.dataset.Dataset, ray.data.Dataset] + + + .. py:method:: postprocess_inference_outputs(dataset: lmflow.datasets.dataset.Dataset, scores: Union[List[float], List[List[float]]]) + :staticmethod: + + + + .. py:method:: postprocess_distributed_inference_outputs(dataset: lmflow.datasets.dataset.Dataset, inference_result: List[lmflow.utils.data_utils.RewardModelInferenceResultWithInput]) + :staticmethod: + + + + .. py:method:: save(dir, *args, **kwargs) + + + Perform generation process of the model. + + + :Parameters: + + **dir** + The directory to save model and tokenizer + + **kwargs** : Optional. + Keyword arguments. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/models/index.rst.txt b/_sources/autoapi/lmflow/models/index.rst.txt new file mode 100644 index 000000000..a27f13d57 --- /dev/null +++ b/_sources/autoapi/lmflow/models/index.rst.txt @@ -0,0 +1,27 @@ +lmflow.models +============= + +.. py:module:: lmflow.models + + +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + /autoapi/lmflow/models/auto_model/index + /autoapi/lmflow/models/base_model/index + /autoapi/lmflow/models/decoder_model/index + /autoapi/lmflow/models/encoder_decoder_model/index + /autoapi/lmflow/models/hf_decoder_model/index + /autoapi/lmflow/models/hf_encoder_decoder_model/index + /autoapi/lmflow/models/hf_model_mixin/index + /autoapi/lmflow/models/hf_text_regression_model/index + /autoapi/lmflow/models/interfaces/index + /autoapi/lmflow/models/regression_model/index + /autoapi/lmflow/models/text_regression_model/index + /autoapi/lmflow/models/vision2seq_model/index + /autoapi/lmflow/models/vision_encoder/index + + diff --git a/_sources/autoapi/lmflow/models/interfaces/index.rst.txt b/_sources/autoapi/lmflow/models/interfaces/index.rst.txt new file mode 100644 index 000000000..ca86d17cd --- /dev/null +++ b/_sources/autoapi/lmflow/models/interfaces/index.rst.txt @@ -0,0 +1,15 @@ +lmflow.models.interfaces +======================== + +.. py:module:: lmflow.models.interfaces + + +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + /autoapi/lmflow/models/interfaces/tunable/index + + diff --git a/_sources/autoapi/lmflow/models/interfaces/tunable/index.rst.txt b/_sources/autoapi/lmflow/models/interfaces/tunable/index.rst.txt new file mode 100644 index 000000000..beb8ecd7e --- /dev/null +++ b/_sources/autoapi/lmflow/models/interfaces/tunable/index.rst.txt @@ -0,0 +1,51 @@ +lmflow.models.interfaces.tunable +================================ + +.. py:module:: lmflow.models.interfaces.tunable + +.. autoapi-nested-parse:: + + Tunable class + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.models.interfaces.tunable.Tunable + + +Module Contents +--------------- + +.. py:class:: Tunable + + Bases: :py:obj:`abc.ABC` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + diff --git a/_sources/autoapi/lmflow/models/regression_model/index.rst.txt b/_sources/autoapi/lmflow/models/regression_model/index.rst.txt new file mode 100644 index 000000000..7b68aa48d --- /dev/null +++ b/_sources/autoapi/lmflow/models/regression_model/index.rst.txt @@ -0,0 +1,51 @@ +lmflow.models.regression_model +============================== + +.. py:module:: lmflow.models.regression_model + +.. autoapi-nested-parse:: + + General regression model. + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.models.regression_model.RegressionModel + + +Module Contents +--------------- + +.. py:class:: RegressionModel(*args, **kwargs) + + Bases: :py:obj:`lmflow.models.base_model.BaseModel` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + diff --git a/_sources/autoapi/lmflow/models/text_regression_model/index.rst.txt b/_sources/autoapi/lmflow/models/text_regression_model/index.rst.txt new file mode 100644 index 000000000..96bb6ae00 --- /dev/null +++ b/_sources/autoapi/lmflow/models/text_regression_model/index.rst.txt @@ -0,0 +1,114 @@ +lmflow.models.text_regression_model +=================================== + +.. py:module:: lmflow.models.text_regression_model + +.. autoapi-nested-parse:: + + A model maps "text_only" data to float. + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.models.text_regression_model.TextRegressionModel + + +Module Contents +--------------- + +.. py:class:: TextRegressionModel(model_args, *args, **kwargs) + + Bases: :py:obj:`lmflow.models.regression_model.RegressionModel` + + + + Initializes a TextRegressionModel instance. + + + :Parameters: + + **model_args** + Model arguments such as model name, path, revision, etc. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: inference_func + :value: None + + + + .. py:method:: register_inference_function(inference_func) + + + Registers a regression function. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: inference(inputs: lmflow.datasets.dataset.Dataset) + + + Gets regression results of a given dataset. + + :inputs: Dataset object, only accept type "text_only". + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/models/vision2seq_model/index.rst.txt b/_sources/autoapi/lmflow/models/vision2seq_model/index.rst.txt new file mode 100644 index 000000000..c11b576ef --- /dev/null +++ b/_sources/autoapi/lmflow/models/vision2seq_model/index.rst.txt @@ -0,0 +1,205 @@ +lmflow.models.vision2seq_model +============================== + +.. py:module:: lmflow.models.vision2seq_model + + +Classes +------- + +.. autoapisummary:: + + lmflow.models.vision2seq_model.CustomAutoVision2SeqModel + + +Module Contents +--------------- + +.. py:class:: CustomAutoVision2SeqModel(config: transformers.Blip2Config, image_encoder_name_or_path=None, qformer_name_or_path=None, language_model_name_or_path=None, low_resource=False) + + Bases: :py:obj:`transformers.Blip2ForConditionalGeneration`, :py:obj:`lmflow.models.base_model.BaseModel` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: custom_vision_model + + + .. py:attribute:: with_qformer + + + .. py:attribute:: language_model + + + .. py:attribute:: hidden_size + + + .. py:method:: get_backend_model() + + + .. py:method:: vision_model_from_pretrained(pretrained_path) + + + .. py:method:: qformer_from_pretrained(pretrained_path) + + + .. py:method:: language_model_from_pretrained(pretrained_path, low_resource=False, use_prompt_cache=False) + + + .. py:method:: vision_feature_select(image_forward_outs) + + + .. py:method:: register_prompt_cache(prompt_ids, prompt_keys_values) + + + Udpate the prompt id and embedding for reuse in the future + + Args: + prompt_ids (torch.LongTensor): The id of the prompt. + prompt_keys_values (torch.FloatTensor): The embedding of the prompt. + + Returns: + None + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: save_prompt_cache(path) + + + Save prompt embedding and id. + + Args: + path: The path to save the prompt embedding and id. + + Returns: + None + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: load_prompt_cache(path) + + + Load prompt embedding and id. + Args: + path: The path to load the prompt embedding and id. + + Returns: + None + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_tokenizer() + + + .. py:method:: forward(input_ids: torch.LongTensor = None, pixel_values: Optional[torch.FloatTensor] = None, images: Optional[torch.FloatTensor] = None, attention_mask: Optional[torch.Tensor] = None, past_key_values: Optional[List[torch.FloatTensor]] = None, inputs_embeds: Optional[torch.FloatTensor] = None, labels: Optional[torch.LongTensor] = None, use_cache: Optional[bool] = None, output_attentions: Optional[bool] = None, output_hidden_states: Optional[bool] = None, return_dict: Optional[bool] = None, image_token_indexes: Optional[List] = [0], one_sample_multiple_images: bool = False) -> Union[Tuple, transformers.modeling_outputs.CausalLMOutputWithPast] + + + .. py:method:: processor_image_token_in_minigpt4(input_ids, language_model_inputs, attention_mask, image_token_indexes, pixel_values, batch_size=1) + + + .. py:method:: generate(pixel_values: torch.FloatTensor, input_ids: Optional[torch.LongTensor] = None, attention_mask: Optional[torch.LongTensor] = None, image_token_indexes: Optional[List] = [0], one_sample_multiple_images: Optional[bool] = False, images: Optional[torch.LongTensor] = None, **generate_kwargs) -> torch.LongTensor + + + Overrides `generate` function to be able to use the model as a conditional generator. + + Args: + pixel_values (`torch.FloatTensor` of shape (batch_size, num_channels, height, width)): + Input images to be processed. + input_ids (`torch.LongTensor` of shape (batch_size, sequence_length), *optional*): + The sequence used as a prompt for the generation. + attention_mask (`torch.LongTensor` of shape (batch_size, sequence_length), *optional*): + Mask to avoid performing attention on padding token indices + image_token_indexes (bool, *optional*): + The index for inserting the image tokens. + one_sample_multiple_images: (bool, *optional*): + The flag for inference that the input batch size is 1 and contain multiple images. + + Returns: + captions (list): A list of strings of length batch_size * num_captions. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/models/vision_encoder/clip_encoder/index.rst.txt b/_sources/autoapi/lmflow/models/vision_encoder/clip_encoder/index.rst.txt new file mode 100644 index 000000000..4bc695829 --- /dev/null +++ b/_sources/autoapi/lmflow/models/vision_encoder/clip_encoder/index.rst.txt @@ -0,0 +1,101 @@ +lmflow.models.vision_encoder.clip_encoder +========================================= + +.. py:module:: lmflow.models.vision_encoder.clip_encoder + + +Classes +------- + +.. autoapisummary:: + + lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower + + +Functions +--------- + +.. autoapisummary:: + + lmflow.models.vision_encoder.clip_encoder.build_vision_tower + + +Module Contents +--------------- + +.. py:function:: build_vision_tower(vision_tower_cfg, **kwargs) + +.. py:class:: CLIPVisionTower(vision_tower, args, delay_load=False) + + Bases: :py:obj:`torch.nn.Module` + + + .. py:attribute:: is_loaded + :value: False + + + + .. py:attribute:: vision_tower_name + + + .. py:attribute:: select_layer + + + .. py:attribute:: select_feature + + + .. py:method:: load_model() + + + .. py:method:: encode_images(images, language_projection) + + + .. py:method:: feature_select(image_forward_outs) + + + .. py:method:: forward(images) + + + .. py:property:: dummy_feature + + + .. py:property:: dtype + + + .. py:property:: device + + + .. py:property:: config + + + .. py:property:: hidden_size + + + .. py:property:: num_patches + + + .. py:method:: prepare_inputs_labels_for_multimodal(input_ids, attention_mask, past_key_values, labels, images, language_projection=None, language_model=None, **kwargs) + + + Copy from the LLAVA code base. + Should be polished. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/models/vision_encoder/index.rst.txt b/_sources/autoapi/lmflow/models/vision_encoder/index.rst.txt new file mode 100644 index 000000000..fac6977d4 --- /dev/null +++ b/_sources/autoapi/lmflow/models/vision_encoder/index.rst.txt @@ -0,0 +1,28 @@ +lmflow.models.vision_encoder +============================ + +.. py:module:: lmflow.models.vision_encoder + + +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + /autoapi/lmflow/models/vision_encoder/clip_encoder/index + + +Functions +--------- + +.. autoapisummary:: + + lmflow.models.vision_encoder.build_vision_tower + + +Package Contents +---------------- + +.. py:function:: build_vision_tower(vision_tower_cfg, **kwargs) + diff --git a/_sources/autoapi/lmflow/optim/adabelief/index.rst.txt b/_sources/autoapi/lmflow/optim/adabelief/index.rst.txt new file mode 100644 index 000000000..2a8515da5 --- /dev/null +++ b/_sources/autoapi/lmflow/optim/adabelief/index.rst.txt @@ -0,0 +1,97 @@ +lmflow.optim.adabelief +====================== + +.. py:module:: lmflow.optim.adabelief + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.adabelief.AdaBelief + + +Module Contents +--------------- + +.. py:class:: AdaBelief(params, lr=0.001, betas=(0.9, 0.999), eps=1e-16, weight_decay=0, amsgrad=False, weight_decouple=True, fixed_decay=False, rectify=True, degenerated_to_sgd=True, print_change_log=True) + + Bases: :py:obj:`torch.optim.optimizer.Optimizer` + + + + Implements AdaBelief algorithm. Modified from Adam in PyTorch + reference: AdaBelief Optimizer, adapting stepsizes by the belief in observed gradients, NeurIPS 2020 + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: degenerated_to_sgd + :value: True + + + + .. py:attribute:: weight_decouple + :value: True + + + + .. py:attribute:: rectify + :value: True + + + + .. py:attribute:: fixed_decay + :value: False + + + + .. py:method:: __setstate__(state) + + + .. py:method:: reset() + + + .. py:method:: step(closure=None) + + + Performs a single optimization step. + Arguments: + closure (callable, optional): A closure that reevaluates the model + and returns the loss. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/optim/adabound/index.rst.txt b/_sources/autoapi/lmflow/optim/adabound/index.rst.txt new file mode 100644 index 000000000..45f8de11c --- /dev/null +++ b/_sources/autoapi/lmflow/optim/adabound/index.rst.txt @@ -0,0 +1,80 @@ +lmflow.optim.adabound +===================== + +.. py:module:: lmflow.optim.adabound + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.adabound.AdaBound + + +Module Contents +--------------- + +.. py:class:: AdaBound(params, lr: float = 0.001, betas=(0.9, 0.999), final_lr: float = 0.1, gamma: float = 0.001, eps: float = 1e-08, weight_decay: float = 0, amsbound: bool = False) + + Bases: :py:obj:`torch.optim.optimizer.Optimizer` + + + + Implements AdaBound algorithm. + + It has been proposed in `Adaptive Gradient Methods with Dynamic Bound of + Learning Rate + https://arxiv.org/abs/1902.09843 + Note: + Reference code: https://github.com/Luolc/AdaBound + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: base_lrs + + + .. py:method:: __setstate__(state) -> None + + + .. py:method:: step(closure=None) + + + Performs a single optimization step. + + Arguments: + closure: A closure that reevaluates the model and returns the loss. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/optim/adadelta/index.rst.txt b/_sources/autoapi/lmflow/optim/adadelta/index.rst.txt new file mode 100644 index 000000000..dc71d4e69 --- /dev/null +++ b/_sources/autoapi/lmflow/optim/adadelta/index.rst.txt @@ -0,0 +1,25 @@ +lmflow.optim.adadelta +===================== + +.. py:module:: lmflow.optim.adadelta + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.adadelta.Adadelta + + +Module Contents +--------------- + +.. py:class:: Adadelta(params, lr=1.0, rho=0.95, eps=1e-06) + + Bases: :py:obj:`torch.optim.optimizer.Optimizer` + + + .. py:method:: step(closure=None) + + diff --git a/_sources/autoapi/lmflow/optim/adagrad/index.rst.txt b/_sources/autoapi/lmflow/optim/adagrad/index.rst.txt new file mode 100644 index 000000000..831f76385 --- /dev/null +++ b/_sources/autoapi/lmflow/optim/adagrad/index.rst.txt @@ -0,0 +1,25 @@ +lmflow.optim.adagrad +==================== + +.. py:module:: lmflow.optim.adagrad + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.adagrad.AdaGrad + + +Module Contents +--------------- + +.. py:class:: AdaGrad(params, lr=0.001, eps=1e-08, weight_decay=0) + + Bases: :py:obj:`torch.optim.Optimizer` + + + .. py:method:: step(closure=None) + + diff --git a/_sources/autoapi/lmflow/optim/adam/index.rst.txt b/_sources/autoapi/lmflow/optim/adam/index.rst.txt new file mode 100644 index 000000000..42729f39d --- /dev/null +++ b/_sources/autoapi/lmflow/optim/adam/index.rst.txt @@ -0,0 +1,25 @@ +lmflow.optim.adam +================= + +.. py:module:: lmflow.optim.adam + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.adam.Adam + + +Module Contents +--------------- + +.. py:class:: Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08) + + Bases: :py:obj:`torch.optim.optimizer.Optimizer` + + + .. py:method:: step(closure=None) + + diff --git a/_sources/autoapi/lmflow/optim/adamax/index.rst.txt b/_sources/autoapi/lmflow/optim/adamax/index.rst.txt new file mode 100644 index 000000000..8622d08ae --- /dev/null +++ b/_sources/autoapi/lmflow/optim/adamax/index.rst.txt @@ -0,0 +1,28 @@ +lmflow.optim.adamax +=================== + +.. py:module:: lmflow.optim.adamax + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.adamax.Adamax + + +Module Contents +--------------- + +.. py:class:: Adamax(params, lr=0.002, betas=(0.9, 0.999), eps=1e-08, weight_decay=0) + + Bases: :py:obj:`torch.optim.optimizer.Optimizer` + + + .. py:method:: __setstate__(state) + + + .. py:method:: step(closure=None) + + diff --git a/_sources/autoapi/lmflow/optim/adamp/index.rst.txt b/_sources/autoapi/lmflow/optim/adamp/index.rst.txt new file mode 100644 index 000000000..d7c1d93a6 --- /dev/null +++ b/_sources/autoapi/lmflow/optim/adamp/index.rst.txt @@ -0,0 +1,93 @@ +lmflow.optim.adamp +================== + +.. py:module:: lmflow.optim.adamp + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.adamp.AdamP + + +Module Contents +--------------- + +.. py:class:: AdamP(params, lr: float = 0.001, betas=(0.9, 0.999), eps: float = 1e-08, weight_decay: float = 0, delta: float = 0.1, wd_ratio: float = 0.1, nesterov: bool = False) + + Bases: :py:obj:`torch.optim.optimizer.Optimizer` + + + + Implements AdamP algorithm. + + It has been proposed in `Slowing Down the Weight Norm Increase in + Momentum-based Optimizers` + https://arxiv.org/abs/2006.08217 + + Note: + Reference code: https://github.com/clovaai/AdamP + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: _channel_view(x) + :staticmethod: + + + + .. py:method:: _layer_view(x) + :staticmethod: + + + + .. py:method:: _cosine_similarity(x, y, eps, view_func) + :staticmethod: + + + + .. py:method:: _projection(p, grad, perturb, delta, wd_ratio, eps) + + + .. py:method:: step(closure=None) + + + Performs a single optimization step. + + Arguments: + closure: A closure that reevaluates the model and returns the loss. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/optim/adamw_schedule_free/index.rst.txt b/_sources/autoapi/lmflow/optim/adamw_schedule_free/index.rst.txt new file mode 100644 index 000000000..6557f514d --- /dev/null +++ b/_sources/autoapi/lmflow/optim/adamw_schedule_free/index.rst.txt @@ -0,0 +1,82 @@ +lmflow.optim.adamw_schedule_free +================================ + +.. py:module:: lmflow.optim.adamw_schedule_free + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.adamw_schedule_free.AdamWScheduleFree + + +Module Contents +--------------- + +.. py:class:: AdamWScheduleFree(params, lr=0.0025, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, warmup_steps=0, r=0.0, weight_lr_power=2.0, foreach=hasattr(torch, '_foreach_mul_')) + + Bases: :py:obj:`torch.optim.Optimizer` + + + + Schedule-Free AdamW + As the name suggests, no scheduler is needed with this optimizer. + To add warmup, rather than using a learning rate schedule you can just + set the warmup_steps parameter. + + This optimizer requires that .train() and .eval() be called before the + beginning of training and evaluation respectively. The optimizer should + also be placed in eval mode when saving checkpoints. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: eval() + + + .. py:method:: train() + + + .. py:method:: step(closure=None) + + + Performs a single optimization step. + + Arguments: + closure (callable, optional): A closure that reevaluates the model + and returns the loss. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/optim/adan/index.rst.txt b/_sources/autoapi/lmflow/optim/adan/index.rst.txt new file mode 100644 index 000000000..dc5e50c09 --- /dev/null +++ b/_sources/autoapi/lmflow/optim/adan/index.rst.txt @@ -0,0 +1,89 @@ +lmflow.optim.adan +================= + +.. py:module:: lmflow.optim.adan + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.adan.Adan + + +Functions +--------- + +.. autoapisummary:: + + lmflow.optim.adan._single_tensor_adan + lmflow.optim.adan._multi_tensor_adan + + +Module Contents +--------------- + +.. py:class:: Adan(params, lr=0.001, betas=(0.98, 0.92, 0.99), eps=1e-08, weight_decay=0.0, max_grad_norm=0.0, no_prox=False, foreach: bool = True) + + Bases: :py:obj:`torch.optim.optimizer.Optimizer` + + + + Implements a pytorch variant of Adan. + + Adan was proposed in + Adan : Adaptive Nesterov Momentum Algorithm for Faster Optimizing Deep Models. + https://arxiv.org/abs/2208.06677 + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: __setstate__(state) + + + .. py:method:: restart_opt() + + + .. py:method:: step() + + + Performs a single optimization step. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + +.. py:function:: _single_tensor_adan(params: List[torch.Tensor], grads: List[torch.Tensor], exp_avgs: List[torch.Tensor], exp_avg_sqs: List[torch.Tensor], exp_avg_diffs: List[torch.Tensor], pre_grads: List[torch.Tensor], *, beta1: float, beta2: float, beta3: float, bias_correction1: float, bias_correction2: float, bias_correction3_sqrt: float, lr: float, weight_decay: float, eps: float, no_prox: bool, clip_global_grad_norm: torch.Tensor) + +.. py:function:: _multi_tensor_adan(params: List[torch.Tensor], grads: List[torch.Tensor], exp_avgs: List[torch.Tensor], exp_avg_sqs: List[torch.Tensor], exp_avg_diffs: List[torch.Tensor], pre_grads: List[torch.Tensor], *, beta1: float, beta2: float, beta3: float, bias_correction1: float, bias_correction2: float, bias_correction3_sqrt: float, lr: float, weight_decay: float, eps: float, no_prox: bool, clip_global_grad_norm: torch.Tensor) + diff --git a/_sources/autoapi/lmflow/optim/dummy/index.rst.txt b/_sources/autoapi/lmflow/optim/dummy/index.rst.txt new file mode 100644 index 000000000..1a016a369 --- /dev/null +++ b/_sources/autoapi/lmflow/optim/dummy/index.rst.txt @@ -0,0 +1,81 @@ +lmflow.optim.dummy +================== + +.. py:module:: lmflow.optim.dummy + +.. autoapi-nested-parse:: + + Dummy Optimizer. + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.dummy.Dummy + + +Module Contents +--------------- + +.. py:class:: Dummy(params: Iterable[torch.nn.parameter.Parameter], lr: float = 0.0, betas: Tuple[float, float] = (0.9, 0.999), weight_decay: float = 0.0) + + Bases: :py:obj:`torch.optim.Optimizer` + + + + An dummy optimizer that does nothing. + + Parameters: + params (:obj:`Iterable[nn.parameter.Parameter]`): + Iterable of parameters to optimize or dictionaries defining parameter groups. + lr (:obj:`float`, `optional`, defaults to 0): + The learning rate to use. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: step(closure: Callable = None) + + + Performs a single optimization step. + + Arguments: + closure (:obj:`Callable`, `optional`): A closure that reevaluates the model and returns the loss. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/optim/index.rst.txt b/_sources/autoapi/lmflow/optim/index.rst.txt new file mode 100644 index 000000000..f0fbcc423 --- /dev/null +++ b/_sources/autoapi/lmflow/optim/index.rst.txt @@ -0,0 +1,34 @@ +lmflow.optim +============ + +.. py:module:: lmflow.optim + + +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + /autoapi/lmflow/optim/adabelief/index + /autoapi/lmflow/optim/adabound/index + /autoapi/lmflow/optim/adadelta/index + /autoapi/lmflow/optim/adagrad/index + /autoapi/lmflow/optim/adam/index + /autoapi/lmflow/optim/adamax/index + /autoapi/lmflow/optim/adamp/index + /autoapi/lmflow/optim/adamw_schedule_free/index + /autoapi/lmflow/optim/adan/index + /autoapi/lmflow/optim/dummy/index + /autoapi/lmflow/optim/lamb/index + /autoapi/lmflow/optim/lars/index + /autoapi/lmflow/optim/nadam/index + /autoapi/lmflow/optim/novograd/index + /autoapi/lmflow/optim/optimizers/index + /autoapi/lmflow/optim/radam/index + /autoapi/lmflow/optim/sgd_schedule_free/index + /autoapi/lmflow/optim/sgdp/index + /autoapi/lmflow/optim/sophia/index + /autoapi/lmflow/optim/yogi/index + + diff --git a/_sources/autoapi/lmflow/optim/lamb/index.rst.txt b/_sources/autoapi/lmflow/optim/lamb/index.rst.txt new file mode 100644 index 000000000..b31a50c1f --- /dev/null +++ b/_sources/autoapi/lmflow/optim/lamb/index.rst.txt @@ -0,0 +1,90 @@ +lmflow.optim.lamb +================= + +.. py:module:: lmflow.optim.lamb + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.lamb.Lamb + + +Module Contents +--------------- + +.. py:class:: Lamb(params, lr: float = 0.001, betas=(0.9, 0.999), eps: float = 1e-06, weight_decay: float = 0, clamp_value: float = 10, adam: bool = False, debias: bool = False) + + Bases: :py:obj:`torch.optim.optimizer.Optimizer` + + + + Implements Lamb algorithm. + + It has been proposed in `Large Batch Optimization for Deep Learning: + Training BERT in 76 minutes` + https://arxiv.org/abs/1904.00962 + + Note: + Reference code: https://github.com/cybertronai/pytorch-lamb + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: clamp_value + :value: 10 + + + + .. py:attribute:: adam + :value: False + + + + .. py:attribute:: debias + :value: False + + + + .. py:method:: step(closure=None) + + + Performs a single optimization step. + + Arguments: + closure: A closure that reevaluates the model and returns the loss. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/optim/lars/index.rst.txt b/_sources/autoapi/lmflow/optim/lars/index.rst.txt new file mode 100644 index 000000000..e30fbf6ab --- /dev/null +++ b/_sources/autoapi/lmflow/optim/lars/index.rst.txt @@ -0,0 +1,98 @@ +lmflow.optim.lars +================= + +.. py:module:: lmflow.optim.lars + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.lars.LARS + + +Module Contents +--------------- + +.. py:class:: LARS(params, lr: float = 0.01, momentum: float = 0.0, dampening: float = 0.0, weight_decay: float = 0.0, nesterov: bool = False, trust_coefficient: float = 0.01, eps: float = 1e-08) + + Bases: :py:obj:`torch.optim.optimizer.Optimizer` + + + + Extends SGD in PyTorch with LARS scaling from the paper + `Large batch training of Convolutional Networks`__. + .. note:: + The application of momentum in the SGD part is modified according to + the PyTorch standards. LARS scaling fits into the equation in the + following fashion. + + .. math:: + \begin{aligned} + g_{t+1} & = \text{lars_lr} * (\beta * p_{t} + g_{t+1}), \\ + v_{t+1} & = \\mu * v_{t} + g_{t+1}, \\ + p_{t+1} & = p_{t} - \text{lr} * v_{t+1}, + \\end{aligned} + + where :math:`p`, :math:`g`, :math:`v`, :math:`\\mu` and :math:`\beta` + denote the parameters, gradient, velocity, momentum, and weight decay + respectively. The :math:`lars_lr` is defined by Eq. 6 in the paper. + The Nesterov version is analogously modified. + + .. warning:: + Parameters with weight decay set to 0 will automatically be excluded + from layer-wise LR scaling. This is to ensure consistency with papers + like SimCLR and BYOL. + + __ https://arxiv.org/pdf/1708.03888.pdf + + Note: + Reference code: https://github.com/PyTorchLightning/lightning-bolts/ + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: __setstate__(state) -> None + + + .. py:method:: step(closure=None) + + + Performs a single optimization step. + + Arguments: + closure: A closure that reevaluates the model and returns the loss. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/optim/nadam/index.rst.txt b/_sources/autoapi/lmflow/optim/nadam/index.rst.txt new file mode 100644 index 000000000..fe3d1c3d5 --- /dev/null +++ b/_sources/autoapi/lmflow/optim/nadam/index.rst.txt @@ -0,0 +1,28 @@ +lmflow.optim.nadam +================== + +.. py:module:: lmflow.optim.nadam + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.nadam.NAdam + + +Module Contents +--------------- + +.. py:class:: NAdam(params, lr=0.002, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, momentum_decay=0.004) + + Bases: :py:obj:`torch.optim.Optimizer` + + + .. py:method:: __setstate__(state) + + + .. py:method:: step(closure=None) + + diff --git a/_sources/autoapi/lmflow/optim/novograd/index.rst.txt b/_sources/autoapi/lmflow/optim/novograd/index.rst.txt new file mode 100644 index 000000000..2cd3e4ff7 --- /dev/null +++ b/_sources/autoapi/lmflow/optim/novograd/index.rst.txt @@ -0,0 +1,28 @@ +lmflow.optim.novograd +===================== + +.. py:module:: lmflow.optim.novograd + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.novograd.NovoGrad + + +Module Contents +--------------- + +.. py:class:: NovoGrad(params, lr=0.01, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, grad_averaging=False, amsgrad=False) + + Bases: :py:obj:`torch.optim.Optimizer` + + + .. py:method:: __setstate__(state) + + + .. py:method:: step(closure=None) + + diff --git a/_sources/autoapi/lmflow/optim/optimizers/index.rst.txt b/_sources/autoapi/lmflow/optim/optimizers/index.rst.txt new file mode 100644 index 000000000..44c92a3d7 --- /dev/null +++ b/_sources/autoapi/lmflow/optim/optimizers/index.rst.txt @@ -0,0 +1,13 @@ +lmflow.optim.optimizers +======================= + +.. py:module:: lmflow.optim.optimizers + +.. autoapi-nested-parse:: + + All optimizers. + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/optim/radam/index.rst.txt b/_sources/autoapi/lmflow/optim/radam/index.rst.txt new file mode 100644 index 000000000..69b5a98a6 --- /dev/null +++ b/_sources/autoapi/lmflow/optim/radam/index.rst.txt @@ -0,0 +1,81 @@ +lmflow.optim.radam +================== + +.. py:module:: lmflow.optim.radam + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.radam.RAdam + + +Module Contents +--------------- + +.. py:class:: RAdam(params, lr: float = 0.001, betas=(0.9, 0.999), eps: float = 1e-08, weight_decay: float = 0) + + Bases: :py:obj:`torch.optim.optimizer.Optimizer` + + + + Implements RAdam optimization algorithm. + + Note: + Deprecated, please use version provided by PyTorch_. + + It has been proposed in `On the Variance of the Adaptive Learning + Rate and Beyond`. + https://arxiv.org/abs/1908.03265 + + Note: + Reference code: https://github.com/LiyuanLucasLiu/RAdam + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: __setstate__(state) + + + .. py:method:: step(closure=None) + + + Performs a single optimization step. + + Arguments: + closure: A closure that reevaluates the model and returns the loss. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/optim/sgd_schedule_free/index.rst.txt b/_sources/autoapi/lmflow/optim/sgd_schedule_free/index.rst.txt new file mode 100644 index 000000000..ac6a70e88 --- /dev/null +++ b/_sources/autoapi/lmflow/optim/sgd_schedule_free/index.rst.txt @@ -0,0 +1,82 @@ +lmflow.optim.sgd_schedule_free +============================== + +.. py:module:: lmflow.optim.sgd_schedule_free + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.sgd_schedule_free.SGDScheduleFree + + +Module Contents +--------------- + +.. py:class:: SGDScheduleFree(params, lr=1.0, momentum=0.9, weight_decay=0, warmup_steps=0, r=0.0, weight_lr_power=2, foreach=hasattr(torch, '_foreach_mul_')) + + Bases: :py:obj:`torch.optim.Optimizer` + + + + Schedule-Free SGD + As the name suggests, no scheduler is needed with this optimizer. + To add warmup, rather than using a learning rate schedule you can just + set the warmup_steps parameter. + + This optimizer requires that .train() and .eval() be called before the + beginning of training and evaluation respectively. The optimizer should + also be placed in eval mode when saving checkpoints. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: eval() + + + .. py:method:: train() + + + .. py:method:: step(closure=None) + + + Performs a single optimization step. + + Arguments: + closure (callable, optional): A closure that reevaluates the model + and returns the loss. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/optim/sgdp/index.rst.txt b/_sources/autoapi/lmflow/optim/sgdp/index.rst.txt new file mode 100644 index 000000000..5d695ece7 --- /dev/null +++ b/_sources/autoapi/lmflow/optim/sgdp/index.rst.txt @@ -0,0 +1,93 @@ +lmflow.optim.sgdp +================= + +.. py:module:: lmflow.optim.sgdp + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.sgdp.SGDP + + +Module Contents +--------------- + +.. py:class:: SGDP(params, lr: float = 0.001, momentum: float = 0, dampening: float = 0, eps: float = 1e-08, weight_decay: float = 0, delta: float = 0.1, wd_ratio: float = 0.1, nesterov: bool = False) + + Bases: :py:obj:`torch.optim.optimizer.Optimizer` + + + + Implements SGDP algorithm. + + It has been proposed in `Slowing Down the Weight Norm Increase in + Momentum-based Optimizers`. + https://arxiv.org/abs/2006.08217 + + Note: + Reference code: https://github.com/clovaai/AdamP + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: _channel_view(x) + :staticmethod: + + + + .. py:method:: _layer_view(x) + :staticmethod: + + + + .. py:method:: _cosine_similarity(x, y, eps, view_func) + :staticmethod: + + + + .. py:method:: _projection(p, grad, perturb, delta, wd_ratio, eps) + + + .. py:method:: step(closure=None) + + + Performs a single optimization step. + + Arguments: + closure: A closure that reevaluates the model and returns the loss. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/optim/sophia/index.rst.txt b/_sources/autoapi/lmflow/optim/sophia/index.rst.txt new file mode 100644 index 000000000..57144a0ef --- /dev/null +++ b/_sources/autoapi/lmflow/optim/sophia/index.rst.txt @@ -0,0 +1,53 @@ +lmflow.optim.sophia +=================== + +.. py:module:: lmflow.optim.sophia + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.sophia.SophiaG + + +Module Contents +--------------- + +.. py:class:: SophiaG(params, lr=0.0001, betas=(0.965, 0.99), rho=0.04, weight_decay=0.1, *, maximize: bool = False, capturable: bool = False) + + Bases: :py:obj:`torch.optim.optimizer.Optimizer` + + + + Sophia: A Scalable Stochastic Second-order Optimizer for Language Model Pre-training. + Code from: https://github.com/Liuhong99/Sophia/ + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: __setstate__(state) + + + .. py:method:: update_hessian() + + + .. py:method:: step(closure=None, bs=5120) + + diff --git a/_sources/autoapi/lmflow/optim/yogi/index.rst.txt b/_sources/autoapi/lmflow/optim/yogi/index.rst.txt new file mode 100644 index 000000000..0189c4218 --- /dev/null +++ b/_sources/autoapi/lmflow/optim/yogi/index.rst.txt @@ -0,0 +1,74 @@ +lmflow.optim.yogi +================= + +.. py:module:: lmflow.optim.yogi + + +Classes +------- + +.. autoapisummary:: + + lmflow.optim.yogi.Yogi + + +Module Contents +--------------- + +.. py:class:: Yogi(params, lr: float = 0.01, betas=(0.9, 0.999), eps: float = 0.001, initial_accumulator: float = 1e-06, weight_decay: float = 0) + + Bases: :py:obj:`torch.optim.optimizer.Optimizer` + + + + Implements Yogi Optimizer Algorithm. + It has been proposed in `Adaptive methods for Nonconvex Optimization`. + + https://papers.nips.cc/paper/8186-adaptive-methods-for-nonconvex-optimization # noqa + + Note: + Reference code: https://github.com/4rtemi5/Yogi-Optimizer_Keras + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: step(closure=None) + + + Performs a single optimization step. + + Arguments: + closure: A closure that reevaluates the model and returns the loss. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/pipeline/auto_pipeline/index.rst.txt b/_sources/autoapi/lmflow/pipeline/auto_pipeline/index.rst.txt new file mode 100644 index 000000000..c0194c84d --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/auto_pipeline/index.rst.txt @@ -0,0 +1,67 @@ +lmflow.pipeline.auto_pipeline +============================= + +.. py:module:: lmflow.pipeline.auto_pipeline + +.. autoapi-nested-parse:: + + Return a pipeline automatically based on its name. + + .. + !! processed by numpydoc !! + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.auto_pipeline.PIPELINE_MAPPING + lmflow.pipeline.auto_pipeline.PIPELINE_NEEDS_EXTRAS + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.auto_pipeline.AutoPipeline + + +Module Contents +--------------- + +.. py:data:: PIPELINE_MAPPING + +.. py:data:: PIPELINE_NEEDS_EXTRAS + :value: [] + + +.. py:class:: AutoPipeline + + + The class designed to return a pipeline automatically based on its name. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: get_pipeline(pipeline_name, model_args, data_args, pipeline_args, *args, **kwargs) + :classmethod: + + + diff --git a/_sources/autoapi/lmflow/pipeline/base_aligner/index.rst.txt b/_sources/autoapi/lmflow/pipeline/base_aligner/index.rst.txt new file mode 100644 index 000000000..23043558c --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/base_aligner/index.rst.txt @@ -0,0 +1,58 @@ +lmflow.pipeline.base_aligner +============================ + +.. py:module:: lmflow.pipeline.base_aligner + +.. autoapi-nested-parse:: + + BaseTuner: a subclass of BasePipeline. + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.base_aligner.BaseAligner + + +Module Contents +--------------- + +.. py:class:: BaseAligner(*args, **kwargs) + + Bases: :py:obj:`lmflow.pipeline.base_pipeline.BasePipeline` + + + + A subclass of BasePipeline which is alignable. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: _check_if_alignable(model, dataset, reward_model) + + + .. py:method:: align(model, dataset, reward_model) + :abstractmethod: + + + diff --git a/_sources/autoapi/lmflow/pipeline/base_pipeline/index.rst.txt b/_sources/autoapi/lmflow/pipeline/base_pipeline/index.rst.txt new file mode 100644 index 000000000..0af8835df --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/base_pipeline/index.rst.txt @@ -0,0 +1,51 @@ +lmflow.pipeline.base_pipeline +============================= + +.. py:module:: lmflow.pipeline.base_pipeline + +.. autoapi-nested-parse:: + + BasePipeline. + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.base_pipeline.BasePipeline + + +Module Contents +--------------- + +.. py:class:: BasePipeline + + Bases: :py:obj:`abc.ABC` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + diff --git a/_sources/autoapi/lmflow/pipeline/base_tuner/index.rst.txt b/_sources/autoapi/lmflow/pipeline/base_tuner/index.rst.txt new file mode 100644 index 000000000..a2953952d --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/base_tuner/index.rst.txt @@ -0,0 +1,58 @@ +lmflow.pipeline.base_tuner +========================== + +.. py:module:: lmflow.pipeline.base_tuner + +.. autoapi-nested-parse:: + + BaseTuner: a subclass of BasePipeline. + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.base_tuner.BaseTuner + + +Module Contents +--------------- + +.. py:class:: BaseTuner(*args, **kwargs) + + Bases: :py:obj:`lmflow.pipeline.base_pipeline.BasePipeline` + + + + A subclass of BasePipeline which is tunable. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: _check_if_tunable(model, dataset) + + + .. py:method:: tune(model, dataset) + :abstractmethod: + + + diff --git a/_sources/autoapi/lmflow/pipeline/dpo_aligner/index.rst.txt b/_sources/autoapi/lmflow/pipeline/dpo_aligner/index.rst.txt new file mode 100644 index 000000000..95c9a6f13 --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/dpo_aligner/index.rst.txt @@ -0,0 +1,92 @@ +lmflow.pipeline.dpo_aligner +=========================== + +.. py:module:: lmflow.pipeline.dpo_aligner + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.dpo_aligner.DPOAligner + + +Functions +--------- + +.. autoapisummary:: + + lmflow.pipeline.dpo_aligner.get_paired_dataset + + +Module Contents +--------------- + +.. py:function:: get_paired_dataset(data_root: str, data_dir: str, sanity_check: bool = False, cache_dir: Optional[str] = None, num_proc=24) -> datasets.Dataset + + + Load dataset and convert it to the necessary format. + + The dataset is converted to a dictionary with the following structure: + { + 'prompt': List[str], + 'chosen': List[str], + 'rejected': List[str], + } + + Prompts are structured as follows: + "Question: " + <prompt> + " + + Answer: " + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:class:: DPOAligner(model_args, data_args, aligner_args) + + Bases: :py:obj:`lmflow.pipeline.base_aligner.BaseAligner` + + + .. py:attribute:: model_args + + + .. py:attribute:: data_args + + + .. py:attribute:: aligner_args + + + .. py:attribute:: train_dataset + :value: None + + + + .. py:attribute:: eval_dataset + :value: None + + + + .. py:method:: _initialize_trainer(model, tokenizer) + + + .. py:method:: _load_dataset() + + + .. py:method:: align(model, dataset, reward_model) + + diff --git a/_sources/autoapi/lmflow/pipeline/dpov2_aligner/index.rst.txt b/_sources/autoapi/lmflow/pipeline/dpov2_aligner/index.rst.txt new file mode 100644 index 000000000..b6cd418cc --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/dpov2_aligner/index.rst.txt @@ -0,0 +1,161 @@ +lmflow.pipeline.dpov2_aligner +============================= + +.. py:module:: lmflow.pipeline.dpov2_aligner + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.dpov2_aligner.logger + lmflow.pipeline.dpov2_aligner.ReferenceModelArguments + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.dpov2_aligner.DPOv2Aligner + lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:data:: ReferenceModelArguments + +.. py:class:: DPOv2Aligner(model_args: lmflow.args.ModelArguments, data_args: lmflow.args.DatasetArguments, aligner_args: lmflow.args.DPOv2AlignerArguments, ref_model_args: lmflow.args.ModelArguments) + + Bases: :py:obj:`lmflow.pipeline.base_aligner.BaseAligner` + + + .. py:attribute:: model_args + + + .. py:attribute:: ref_model_args + + + .. py:attribute:: data_args + + + .. py:attribute:: aligner_args + + + .. py:method:: align(model: lmflow.models.hf_decoder_model.HFDecoderModel, ref_model: lmflow.models.hf_decoder_model.HFDecoderModel, train_dataset: lmflow.datasets.dataset.Dataset, eval_dataset: lmflow.datasets.dataset.Dataset, transform_dataset_in_place: bool = True) + + + .. py:method:: __prepare_training_args(args: lmflow.args.DPOv2AlignerArguments) -> transformers.TrainingArguments + + + .. py:method:: convert_to_paired_dataset(source_dataset: lmflow.datasets.dataset.Dataset, sampling_paired_method: str = 'random', length_penalty: float = 0.0, margin_scale: float = 1.0, use_fast: bool = False) -> lmflow.datasets.dataset.Dataset + + + Convert a scored one to multiple (text_to_scored_textlist) to a paired dataset by rejection sampling. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _calc_response_lengths(outputs: List[Union[str, Dict[str, str]]], dataset_type: str) -> List[int] + + + .. py:method:: _calc_reward_with_length_penalty(rewards: List[float], lengths: List[int], length_penalty: float) -> List[float] + + + When length_penalty > 0, penalize the longer sequence by subtracting + length_penalty * length from the reward. Vice versa when length_penalty < 0. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: sampling_paired_idx_from_rewards(rewards: List[float], sampling_paired_method: str = 'random', use_fast: bool = False) -> Tuple[int, int] + + + Prepare the dataset for DPO training by rejection sampling. + We implement different strategies to select pairs, including + random: randomly select two instances + max_min: best v.s. worst + max_max: best v.s. second best + max_random: best v.s. random from the remaining + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _sampling_paired_idx_from_rewards(rewards: List[float], sampling_paired_method: str = 'random') -> Tuple[int, int] + + + .. py:method:: _sampling_paired_idx_from_rewards_fast(rewards: List[float], sampling_paired_method: str = 'random') -> Tuple[int, int] + + +.. py:class:: MemorySafeDPOv2Aligner(model_args: lmflow.args.ModelArguments, data_args: lmflow.args.DatasetArguments, aligner_args: lmflow.args.DPOv2AlignerArguments, ref_model_args: lmflow.args.ModelArguments) + + .. py:attribute:: model_args + + + .. py:attribute:: ref_model_args + + + .. py:attribute:: data_args + + + .. py:attribute:: aligner_args + + + .. py:attribute:: aligner_file_path + + + .. py:method:: align() + + diff --git a/_sources/autoapi/lmflow/pipeline/evaluator/index.rst.txt b/_sources/autoapi/lmflow/pipeline/evaluator/index.rst.txt new file mode 100644 index 000000000..d110bda1e --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/evaluator/index.rst.txt @@ -0,0 +1,162 @@ +lmflow.pipeline.evaluator +========================= + +.. py:module:: lmflow.pipeline.evaluator + +.. autoapi-nested-parse:: + + The Evaluator class simplifies the process of running evaluation on a language model provided by a HFDecoderModel instance imported from the lmflow package. The class constructor takes three dictionaries as arguments: model_args containing arguments related to the language model, data_args containing arguments related to the data used for evaluation, and evaluator_args containing other arguments for the evaluation process. + + The class has two methods: create_dataloader() that loads the data from the test file, creates a data loader, and returns it with the size of the data, and evaluate(model) that generates output text given input text. It uses the create_dataloader() method to load the data, iterates over the data in mini-batches, and encodes the input text with the encode() method of the HFDecoderModel class. Then, it generates output text using the evaluate() method of the HFDecoderModel class, decodes the generated output text using the decode() method of the HFDecoderModel class, and writes the output to a file in the output directory. The method also logs some information to the console and Weights and Biases if the use_wandb argument is True. + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.evaluator.Evaluator + + +Module Contents +--------------- + +.. py:class:: Evaluator(model_args, data_args, evaluator_args) + + Bases: :py:obj:`lmflow.pipeline.base_pipeline.BasePipeline` + + + + Initializes the `Evaluator` class with given arguments. + + + :Parameters: + + **model_args** : ModelArguments object. + Contains the arguments required to load the model. + + **data_args** : DatasetArguments object. + Contains the arguments required to load the dataset. + + **evaluator_args** : EvaluatorArguments object. + Contains the arguments required to perform evaluation. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: data_args + + + .. py:attribute:: evaluator_args + + + .. py:attribute:: model_args + + + .. py:attribute:: local_rank + + + .. py:attribute:: world_size + + + .. py:attribute:: config + + + .. py:attribute:: block_size + + + .. py:method:: create_dataloader(dataset: lmflow.datasets.dataset.Dataset) + + + .. py:method:: _match(predicted_answer, groundtruth, answer_type=None) + + + .. py:method:: evaluate(model, dataset: lmflow.datasets.dataset.Dataset, metric='accuracy', verbose=True) + + + Perform Evaluation for a model + + + :Parameters: + + **model** : TunableModel object. + TunableModel to perform inference + + **dataset** : Dataset object. + .. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _evaluate_acc_with_accelerator(model, dataset, verbose=True) + + + .. py:method:: _evaluate_acc_with_deepspeed(model, dataset, verbose=True) + + + .. py:method:: _evaluate_ppl(model, dataset: lmflow.datasets.dataset.Dataset, verbose=True) + + + .. py:method:: _evaluate_nll(model, dataset: lmflow.datasets.dataset.Dataset, verbose=True) + + + Evaluates negative log likelihood of the model over a dataset. + + NLL = -1/N sum_{i=1}^N sum_{j=1}^|w_i| ln(p(w_{i,j}|context_window)), + + where N is the number of data samples, w_{i,j} is the j-th token in + i-th sample. Here "context_window" = p(w_{i,start}, w_{i,start+1}, ..., + p_{i,j-1} with start = max(0, j - window_length + 1). "window_length" + is normally the maximum length accepted by the model. + + Returns: + A float which represents the negative log likelihood. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/pipeline/finetuner/index.rst.txt b/_sources/autoapi/lmflow/pipeline/finetuner/index.rst.txt new file mode 100644 index 000000000..6f560af84 --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/finetuner/index.rst.txt @@ -0,0 +1,149 @@ +lmflow.pipeline.finetuner +========================= + +.. py:module:: lmflow.pipeline.finetuner + +.. autoapi-nested-parse:: + + The Finetuner class simplifies the process of running finetuning process on a language model for a TunableModel instance with given dataset. + + .. + !! processed by numpydoc !! + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.finetuner.logger + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.finetuner.Finetuner + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: Finetuner(model_args, data_args, finetuner_args, *args, **kwargs) + + Bases: :py:obj:`lmflow.pipeline.base_tuner.BaseTuner` + + + + Initializes the `Finetuner` class with given arguments. + + + :Parameters: + + **model_args** : ModelArguments object. + Contains the arguments required to load the model. + + **data_args** : DatasetArguments object. + Contains the arguments required to load the dataset. + + **finetuner_args** : FinetunerArguments object. + Contains the arguments required to perform finetuning. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: model_args + + + .. py:attribute:: data_args + + + .. py:attribute:: finetuner_args + + + .. py:attribute:: last_checkpoint + :value: None + + + + .. py:method:: group_text(tokenized_datasets, model_max_length) + + + Groups texts together to form blocks of maximum length `model_max_length` and returns the processed data as + a dictionary. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: create_customized_optimizer(base_trainer_class, model_args) + + + .. py:method:: tune(model, dataset, transform_dataset_in_place=True, data_collator=None) + + + Perform tuning for a model + + + :Parameters: + + **model** : TunableModel object. + TunableModel to perform tuning. + + **dataset:** + dataset to train model. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/pipeline/index.rst.txt b/_sources/autoapi/lmflow/pipeline/index.rst.txt new file mode 100644 index 000000000..78ec28381 --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/index.rst.txt @@ -0,0 +1,29 @@ +lmflow.pipeline +=============== + +.. py:module:: lmflow.pipeline + + +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + /autoapi/lmflow/pipeline/auto_pipeline/index + /autoapi/lmflow/pipeline/base_aligner/index + /autoapi/lmflow/pipeline/base_pipeline/index + /autoapi/lmflow/pipeline/base_tuner/index + /autoapi/lmflow/pipeline/dpo_aligner/index + /autoapi/lmflow/pipeline/dpov2_aligner/index + /autoapi/lmflow/pipeline/evaluator/index + /autoapi/lmflow/pipeline/finetuner/index + /autoapi/lmflow/pipeline/inferencer/index + /autoapi/lmflow/pipeline/iterative_dpo_aligner/index + /autoapi/lmflow/pipeline/raft_aligner/index + /autoapi/lmflow/pipeline/rm_inferencer/index + /autoapi/lmflow/pipeline/rm_tuner/index + /autoapi/lmflow/pipeline/utils/index + /autoapi/lmflow/pipeline/vllm_inferencer/index + + diff --git a/_sources/autoapi/lmflow/pipeline/inferencer/index.rst.txt b/_sources/autoapi/lmflow/pipeline/inferencer/index.rst.txt new file mode 100644 index 000000000..62a1c333a --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/inferencer/index.rst.txt @@ -0,0 +1,468 @@ +lmflow.pipeline.inferencer +========================== + +.. py:module:: lmflow.pipeline.inferencer + +.. autoapi-nested-parse:: + + The Inferencer class simplifies the process of model inferencing. + + .. + !! processed by numpydoc !! + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.inferencer.supported_dataset_type + lmflow.pipeline.inferencer.logger + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.inferencer.Inferencer + lmflow.pipeline.inferencer.SpeculativeInferencer + lmflow.pipeline.inferencer.ToolInferencer + + +Functions +--------- + +.. autoapisummary:: + + lmflow.pipeline.inferencer.rstrip_partial_utf8 + + +Module Contents +--------------- + +.. py:function:: rstrip_partial_utf8(string) + +.. py:data:: supported_dataset_type + :value: ['text_only', 'image_text'] + + +.. py:data:: logger + +.. py:class:: Inferencer(model_args, data_args, inferencer_args) + + Bases: :py:obj:`lmflow.pipeline.base_pipeline.BasePipeline` + + + + Initializes the `Inferencer` class with given arguments. + + + :Parameters: + + **model_args** : ModelArguments object. + Contains the arguments required to load the model. + + **data_args** : DatasetArguments object. + Contains the arguments required to load the dataset. + + **inferencer_args** : InferencerArguments object. + Contains the arguments required to perform inference. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: data_args + + + .. py:attribute:: inferencer_args + + + .. py:attribute:: model_args + + + .. py:attribute:: local_rank + + + .. py:attribute:: world_size + + + .. py:attribute:: config + + + .. py:method:: create_dataloader(dataset: lmflow.datasets.dataset.Dataset) + + + Batchlize dataset and format it to dataloader. + + Args: + dataset (Dataset): the dataset object + + Output: + dataloader (batchlize): the dataloader object + dataset_size (int): the length of the dataset + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: inference(model, dataset: lmflow.datasets.dataset.Dataset, max_new_tokens: int = 100, temperature: float = 0.0, prompt_structure: str = '{input}', remove_image_flag: bool = False, chatbot_type: str = 'mini_gpt') + + + Perform inference for a model + + + :Parameters: + + **model** : TunableModel object. + TunableModel to perform inference + + **dataset** : Dataset object. + .. + + **Returns:** + .. + + **output_dataset: Dataset object.** + .. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: stream_inference(context, model, max_new_tokens, token_per_step, temperature, end_string, input_dataset, remove_image_flag: bool = False) + + +.. py:class:: SpeculativeInferencer(model_args, draft_model_args, data_args, inferencer_args) + + Bases: :py:obj:`Inferencer` + + + + Ref: [arXiv:2211.17192v2](https://arxiv.org/abs/2211.17192) + + + :Parameters: + + **target_model_args** : ModelArguments object. + Contains the arguments required to load the target model. + + **draft_model_args** : ModelArguments object. + Contains the arguments required to load the draft model. + + **data_args** : DatasetArguments object. + Contains the arguments required to load the dataset. + + **inferencer_args** : InferencerArguments object. + Contains the arguments required to perform inference. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: draft_model_args + + + .. py:attribute:: draft_config + + + .. py:method:: score_to_prob(scores: torch.Tensor, temperature: float = 0.0, top_p: float = 1.0) -> torch.Tensor + :staticmethod: + + + + Convert scores (NOT softmaxed tensor) to probabilities with support for temperature, top-p sampling, and argmax. + + + :Parameters: + + **scores** : torch.Tensor + Input scores. + + **temperature** : float, optional + Temperature parameter for controlling randomness. Higher values make the distribution more uniform, + lower values make it peakier. When temperature <= 1e-6, argmax is used. by default 0.0 + + **top_p** : float, optional + Top-p sampling parameter for controlling the cumulative probability threshold, by default 1.0 (no threshold) + + + + :Returns: + + torch.Tensor + Probability distribution after adjustments. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: sample(prob: torch.Tensor, num_samples: int = 1) -> Dict + :staticmethod: + + + + Sample from a tensor of probabilities + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: predict_next_token(model: lmflow.models.hf_decoder_model.HFDecoderModel, input_ids: torch.Tensor, num_new_tokens: int = 1) + :staticmethod: + + + + Predict the next token given the input_ids. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: autoregressive_sampling(input_ids: torch.Tensor, model: lmflow.models.hf_decoder_model.HFDecoderModel, temperature: float = 0.0, num_new_tokens: int = 5) -> Dict + + + Ref: [arXiv:2211.17192v2](https://arxiv.org/abs/2211.17192) Section 2.2 + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: inference(model: lmflow.models.hf_decoder_model.HFDecoderModel, draft_model: lmflow.models.hf_decoder_model.HFDecoderModel, input: str, temperature: float = 0.0, gamma: int = 5, max_new_tokens: int = 100) + + + Perform inference for a model + + + :Parameters: + + **model** : HFDecoderModel object. + TunableModel to verify tokens generated by the draft model. + + **draft_model** : HFDecoderModel object. + TunableModel that provides approximations of the target model. + + **input** : str. + The input text (i.e., the prompt) for the model. + + **gamma** : int. + The number of tokens to be generated by the draft model within each iter. + + **max_new_tokens** : int. + The maximum number of tokens to be generated by the target model. + + + + :Returns: + + output: str. + The output text generated by the model. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: stream_inference() + :abstractmethod: + + + +.. py:class:: ToolInferencer(model_args, data_args, inferencer_args) + + Bases: :py:obj:`Inferencer` + + + + Initializes the `ToolInferencer` class with given arguments. + + + :Parameters: + + **model_args** : ModelArguments object. + Contains the arguments required to load the model. + + **data_args** : DatasetArguments object. + Contains the arguments required to load the dataset. + + **inferencer_args** : InferencerArguments object. + Contains the arguments required to perform inference. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: model + + + .. py:method:: inference(model: lmflow.models.hf_decoder_model.HFDecoderModel, input: str, max_new_tokens: int = 1024) + + + Perform inference for a model + + + :Parameters: + + **model** : HFDecoderModel object. + TunableModel to perform inference + + **input** : str. + The input text (i.e., the prompt) for the model. + + **max_new_tokens** : int. + The maximum number of tokens to be generated by the model. + + **Returns:** + .. + + **output** : str. + The output text generated by the model. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: code_exec(code) + + diff --git a/_sources/autoapi/lmflow/pipeline/iterative_dpo_aligner/index.rst.txt b/_sources/autoapi/lmflow/pipeline/iterative_dpo_aligner/index.rst.txt new file mode 100644 index 000000000..78b0a5373 --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/iterative_dpo_aligner/index.rst.txt @@ -0,0 +1,74 @@ +lmflow.pipeline.iterative_dpo_aligner +===================================== + +.. py:module:: lmflow.pipeline.iterative_dpo_aligner + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.iterative_dpo_aligner.logger + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: IterativeDPOAligner(model_args: lmflow.args.ModelArguments, data_args: lmflow.args.DatasetArguments, aligner_args: lmflow.args.IterativeDPOAlignerArguments, ref_model_args: lmflow.args.ModelArguments, reward_model_args: lmflow.args.ModelArguments, **kwargs) + + .. py:attribute:: model_args + + + .. py:attribute:: data_args + + + .. py:attribute:: aligner_args + + + .. py:attribute:: ref_model_args + + + .. py:attribute:: reward_model_args + + + .. py:attribute:: workspace_path + + + .. py:method:: align(dataset_list: List[lmflow.datasets.dataset.Dataset]) + + + .. py:method:: _align_single_iteration(iteration_name: str, target_model_args: lmflow.args.ModelArguments, reward_model_args: lmflow.args.ModelArguments, ref_model_args: lmflow.args.ModelArguments, dataset: lmflow.datasets.dataset.Dataset) + + + .. py:method:: _do_target_model_inference(model: lmflow.models.hf_decoder_model.HFDecoderModel, dataset: lmflow.datasets.dataset.Dataset, output_dir: str) + + + .. py:method:: _do_reward_model_inference(model: lmflow.models.hf_text_regression_model.HFTextRegressionModel, dataset: lmflow.datasets.dataset.Dataset, output_dir: str) + + + .. py:method:: _do_single_dpo_align(model_args: lmflow.args.ModelArguments, ref_model_args: lmflow.args.ModelArguments, data_args: lmflow.args.DatasetArguments, output_dir: str, iteration_name: str) + + + .. py:method:: _parse_target_model_inference_args(args: lmflow.args.IterativeDPOAlignerArguments, result_cache_path: str) -> lmflow.args.InferencerArguments + + + .. py:method:: _parse_reward_model_inference_args(args: lmflow.args.IterativeDPOAlignerArguments) -> lmflow.args.InferencerArguments + + + .. py:method:: _parse_dpo_aligner_args(args: lmflow.args.IterativeDPOAlignerArguments, output_dir: str, iteration_name: str) -> lmflow.args.DPOv2AlignerArguments + + + .. py:method:: __filter_args(mixed_args, target_cls) + + diff --git a/_sources/autoapi/lmflow/pipeline/raft_aligner/index.rst.txt b/_sources/autoapi/lmflow/pipeline/raft_aligner/index.rst.txt new file mode 100644 index 000000000..af6724393 --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/raft_aligner/index.rst.txt @@ -0,0 +1,259 @@ +lmflow.pipeline.raft_aligner +============================ + +.. py:module:: lmflow.pipeline.raft_aligner + +.. autoapi-nested-parse:: + + The Aligner class simplifies the process of running alignment. + + .. + !! processed by numpydoc !! + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.raft_aligner.logger + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.raft_aligner.RaftAligner + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: RaftAligner(model_args, data_args, aligner_args, *args, **kwargs) + + Bases: :py:obj:`lmflow.pipeline.base_aligner.BaseAligner` + + + + Initializes the `RaftAligner` class with given arguments. + + + :Parameters: + + **model_args** : ModelArguments object. + Contains the arguments required to load the model. + + **data_args** : DatasetArguments object. + Contains the arguments required to load the dataset. + + **raft_aligner_args** : RaftAlignerArguments object. + Contains the arguments required to perform alignment. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: model_args + + + .. py:attribute:: data_args + + + .. py:attribute:: aligner_args + + + .. py:attribute:: INF + :value: 888888888 + + + + .. py:method:: _initialize_trainer(model, tokenizer, training_args) + + + This function takes the model and tokenizer as the input and initialize the trainer. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _load_dataset(selected_dataset, model, tokenizer, model_args, data_args, training_args) + + + This function prepares the dataset for every iteration. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _load_input_dataset(dataset, tokenizer) + + + Load input dataset (i.e. prompt/question dataset) for training. + + Args: + dataset: A Dataset object. + The dataset to be loaded. + + Returns: + dataloader (`torch.utils.data.DataLoader`): + The dataloader for the dataset. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _clean_text(text) + + + .. py:method:: _discard_sample(text) + + + .. py:method:: _get_batch_dataset_top(model, batch_input, alpha=0.2, iter_id=0, local_rank=0, output_min_length=16, output_max_length=48, infer_batch_size=8, generation_kwargs={}, tokenizer=None, training_args=None, reward_model=None, output_reward_path=None) + + + :param batch_input: input prompts + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _get_batch_dataset_local(model, batch_input, K=8, iter_id=0, local_rank=0, output_min_length=16, output_max_length=48, infer_batch_size=8, generation_kwargs={}, tokenizer=None, training_args=None, reward_model=None, output_reward_path=None) + + + :param batch_input: input prompts + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: align(model, dataset, reward_model) + + + Perform alignment for a model + + + :Parameters: + + **model** : BaseModel object. + .. + + **dataset: Dataset object.** + Input dataset for model to generate outputs. The input and output + will then be feed into reward model to get the reward for + alignment. + + **reward_model: RegressionModel object.** + .. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/pipeline/rm_inferencer/index.rst.txt b/_sources/autoapi/lmflow/pipeline/rm_inferencer/index.rst.txt new file mode 100644 index 000000000..7633e1970 --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/rm_inferencer/index.rst.txt @@ -0,0 +1,104 @@ +lmflow.pipeline.rm_inferencer +============================= + +.. py:module:: lmflow.pipeline.rm_inferencer + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.rm_inferencer.logger + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.rm_inferencer.RewardModelInferencer + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: RewardModelInferencer(model_args: lmflow.args.ModelArguments, data_args: lmflow.args.DatasetArguments, inferencer_args: lmflow.args.InferencerArguments, **kwargs) + + Bases: :py:obj:`lmflow.pipeline.base_pipeline.BasePipeline` + + + + Initializes the `Inferencer` class with given arguments. + + + :Parameters: + + **model_args** : ModelArguments object. + Contains the arguments required to load the model. + + **data_args** : DatasetArguments object. + Contains the arguments required to load the dataset. + + **inferencer_args** : InferencerArguments object. + Contains the arguments required to perform inference. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: data_args + + + .. py:attribute:: inferencer_args + + + .. py:attribute:: model_args + + + .. py:attribute:: local_rank + + + .. py:attribute:: world_size + + + .. py:method:: inference(model: lmflow.models.hf_text_regression_model.HFTextRegressionModel, dataset: lmflow.datasets.dataset.Dataset, transform_dataset_in_place: bool = True, use_vllm: bool = False, enable_distributed_inference: bool = False, **kwargs) -> lmflow.datasets.dataset.Dataset + + + .. py:method:: _inference(model: lmflow.models.hf_text_regression_model.HFTextRegressionModel, model_input: Union[lmflow.datasets.dataset.Dataset, ray.data.Dataset], enable_distributed_inference: bool = False, **kwargs) + + + .. py:method:: __inference(model: lmflow.models.hf_text_regression_model.HFTextRegressionModel, model_input: lmflow.datasets.dataset.Dataset) -> Union[List[float], List[List[float]]] + + + .. py:method:: __distributed_inference(model: lmflow.models.hf_text_regression_model.HFTextRegressionModel, model_input: ray.data.Dataset, num_instances: int, batch_size: int) -> List[lmflow.utils.data_utils.RewardModelInferenceResultWithInput] + + + .. py:method:: __vllm_inference(model: lmflow.models.hf_text_regression_model.HFTextRegressionModel, model_input: List[str], enable_distributed_inference: bool = False) -> List[float] + :abstractmethod: + + + + .. py:method:: __post_process_model_output(model_output: transformers.modeling_outputs.SequenceClassifierOutputWithPast) -> List[float] + + + .. py:method:: flatten_list(list_of_list: List[List]) -> Tuple[List, List[int]] + + + .. py:method:: compress_list(list_to_compress: List, sublist_lengths: List[int]) -> List[List] + + diff --git a/_sources/autoapi/lmflow/pipeline/rm_tuner/index.rst.txt b/_sources/autoapi/lmflow/pipeline/rm_tuner/index.rst.txt new file mode 100644 index 000000000..c07043786 --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/rm_tuner/index.rst.txt @@ -0,0 +1,100 @@ +lmflow.pipeline.rm_tuner +======================== + +.. py:module:: lmflow.pipeline.rm_tuner + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.rm_tuner.logger + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.rm_tuner.RewardModelTuner + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: RewardModelTuner(model_args, data_args, finetuner_args, *args, **kwargs) + + Bases: :py:obj:`lmflow.pipeline.finetuner.Finetuner` + + + + Initializes the `RewardModelTuner` class. + + + :Parameters: + + **model_args** : ModelArguments object. + Contains the arguments required to load the model. + + **data_args** : DatasetArguments object. + Contains the arguments required to load the dataset. + + **finetuner_args** : RewardModelTunerArguments object. + Contains the arguments required to perform finetuning. + + **args** : Optional. + Positional arguments. + + **kwargs** : Optional. + Keyword arguments. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: tune(model: lmflow.models.hf_text_regression_model.HFTextRegressionModel, dataset, transform_dataset_in_place=True, data_collator=None, **kwargs) + + + Perform tuning for a model + + + :Parameters: + + **model** : TunableModel object. + TunableModel to perform tuning. + + **dataset:** + dataset to train model. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.rst.txt b/_sources/autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.rst.txt new file mode 100644 index 000000000..c634bf403 --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.rst.txt @@ -0,0 +1,130 @@ +lmflow.pipeline.utils.dpov2_dataprocessor +========================================= + +.. py:module:: lmflow.pipeline.utils.dpov2_dataprocessor + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.utils.dpov2_dataprocessor.logger + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: PreferenceDataCollatorWithPadding + + .. py:attribute:: tokenizer + :type: transformers.PreTrainedTokenizerBase + + + .. py:attribute:: model + :type: Optional[transformers.PreTrainedModel] + :value: None + + + + .. py:attribute:: padding + :type: Union[bool, str] + :value: True + + + + .. py:attribute:: max_length + :type: Optional[int] + :value: None + + + + .. py:attribute:: max_prompt_length + :type: Optional[int] + :value: None + + + + .. py:attribute:: label_pad_token_id + :type: int + :value: -100 + + + + .. py:attribute:: padding_value + :type: int + :value: 0 + + + + .. py:attribute:: truncation_mode + :type: str + :value: 'keep_end' + + + + .. py:attribute:: is_encoder_decoder + :type: Optional[bool] + :value: False + + + + .. py:attribute:: max_target_length + :type: Optional[int] + :value: None + + + + .. py:attribute:: mask_prompt + :type: Optional[bool] + :value: False + + + + .. py:method:: tokenize_batch_element(prompt: str, chosen: str, rejected: str) -> Dict + + + Tokenize a single batch element. + + At this stage, we don't convert to PyTorch tensors yet; we just handle the truncation + in case the prompt + chosen or prompt + rejected responses is/are too long. First + we truncate the prompt; if we're still too long, we truncate the chosen/rejected. + + We also create the labels for the chosen/rejected responses, which are of length equal to + the sum of the length of the prompt and the chosen/rejected response, with + label_pad_token_id for the prompt tokens. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: collate(batch) + + + .. py:method:: __call__(features: List[Dict[str, Any]]) -> Dict[str, Any] + + diff --git a/_sources/autoapi/lmflow/pipeline/utils/dpov2_trainer/index.rst.txt b/_sources/autoapi/lmflow/pipeline/utils/dpov2_trainer/index.rst.txt new file mode 100644 index 000000000..4b0b208ce --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/utils/dpov2_trainer/index.rst.txt @@ -0,0 +1,105 @@ +lmflow.pipeline.utils.dpov2_trainer +=================================== + +.. py:module:: lmflow.pipeline.utils.dpov2_trainer + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.utils.dpov2_trainer.logger + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: DPOv2Trainer(model: Union[transformers.PreTrainedModel, torch.nn.Module] = None, ref_model: Optional[Union[transformers.PreTrainedModel, torch.nn.Module]] = None, beta: float = 0.1, loss_type: Literal['sigmoid', 'hinge', 'cross_entropy', 'kl', 'rev_kl', 'raft'] = 'rev_kl', args: transformers.TrainingArguments = None, data_collator: Optional[transformers.DataCollator] = None, label_pad_token_id: int = -100, padding_value: int = 0, truncation_mode: str = 'keep_end', train_dataset: Optional[datasets.Dataset] = None, eval_dataset: Optional[Union[datasets.Dataset, Dict[str, datasets.Dataset]]] = None, tokenizer: Optional[transformers.PreTrainedTokenizerBase] = None, model_init: Optional[Callable[[], transformers.PreTrainedModel]] = None, callbacks: Optional[List[transformers.trainer_callback.TrainerCallback]] = None, optimizers: Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR] = (None, None), preprocess_logits_for_metrics: Optional[Callable[[torch.Tensor, torch.Tensor], torch.Tensor]] = None, max_length: Optional[int] = None, max_prompt_length: Optional[int] = None, max_target_length: Optional[int] = None, peft_config: Optional[Dict] = None, is_encoder_decoder: Optional[bool] = None, disable_dropout: bool = True, generate_during_eval: bool = False, compute_metrics: Optional[Callable[[transformers.trainer_utils.EvalLoopOutput], Dict]] = None, mask_prompt: Optional[bool] = False, len_penalty: float = 0, preprocessing_num_workers: int = 1) + + Bases: :py:obj:`trl.DPOTrainer` + + + .. py:attribute:: use_dpo_data_collator + :value: True + + + + .. py:attribute:: len_penalty + :value: 0 + + + + .. py:method:: dpo_loss(policy_chosen_logps: torch.FloatTensor, policy_rejected_logps: torch.FloatTensor, reference_chosen_logps: torch.FloatTensor, reference_rejected_logps: torch.FloatTensor, reference_free: bool = False, margin: Optional[torch.FloatTensor] = None, len_penalty: float = 0) -> Tuple[torch.FloatTensor, torch.FloatTensor, torch.FloatTensor] + + + Compute the DPO loss for a batch of policy and reference model log probabilities. + + Args: + policy_chosen_logps: Log probabilities of the policy model for the chosen responses. Shape: (batch_size,) + policy_rejected_logps: Log probabilities of the policy model for the rejected responses. Shape: (batch_size,) + reference_chosen_logps: Log probabilities of the reference model for the chosen responses. Shape: (batch_size,) + reference_rejected_logps: Log probabilities of the reference model for the rejected responses. Shape: (batch_size,) + beta: Temperature parameter for the DPO loss, typically something in the range of 0.1 to 0.5. We ignore the reference model as beta -> 0. + reference_free: If True, we ignore the _provided_ reference model and implicitly use a reference model that assigns equal probability to all responses. + + Returns: + A tuple of three tensors: (losses, chosen_rewards, rejected_rewards). + The losses tensor contains the DPO loss for each example in the batch. + The chosen_rewards and rejected_rewards tensors contain the rewards for the chosen and rejected responses, respectively. + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_batch_loss_metrics(model, batch: Dict[str, Union[List, torch.LongTensor]], train_eval: Literal['train', 'eval'] = 'train') + + + .. py:method:: get_batch_metrics(model, batch: Dict[str, Union[List, torch.LongTensor]], train_eval: Literal['train', 'eval'] = 'train') + + + Compute the DPO loss and other metrics for the given batch of inputs for train or test. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/pipeline/utils/index.rst.txt b/_sources/autoapi/lmflow/pipeline/utils/index.rst.txt new file mode 100644 index 000000000..68ca9f80d --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/utils/index.rst.txt @@ -0,0 +1,22 @@ +lmflow.pipeline.utils +===================== + +.. py:module:: lmflow.pipeline.utils + + +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + /autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index + /autoapi/lmflow/pipeline/utils/dpov2_trainer/index + /autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index + /autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index + /autoapi/lmflow/pipeline/utils/peft_trainer/index + /autoapi/lmflow/pipeline/utils/raft_trainer/index + /autoapi/lmflow/pipeline/utils/rm_dataprocessor/index + /autoapi/lmflow/pipeline/utils/rm_trainer/index + + diff --git a/_sources/autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.rst.txt b/_sources/autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.rst.txt new file mode 100644 index 000000000..023a68c13 --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.rst.txt @@ -0,0 +1,33 @@ +lmflow.pipeline.utils.memory_safe_dpov2_align +============================================= + +.. py:module:: lmflow.pipeline.utils.memory_safe_dpov2_align + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.utils.memory_safe_dpov2_align.logger + lmflow.pipeline.utils.memory_safe_dpov2_align.ReferenceModelArguments + + +Functions +--------- + +.. autoapisummary:: + + lmflow.pipeline.utils.memory_safe_dpov2_align.main + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:data:: ReferenceModelArguments + :type: lmflow.args.ModelArguments + +.. py:function:: main() + diff --git a/_sources/autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.rst.txt b/_sources/autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.rst.txt new file mode 100644 index 000000000..53ae3f3a7 --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.rst.txt @@ -0,0 +1,29 @@ +lmflow.pipeline.utils.memory_safe_vllm_inference +================================================ + +.. py:module:: lmflow.pipeline.utils.memory_safe_vllm_inference + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.utils.memory_safe_vllm_inference.logger + + +Functions +--------- + +.. autoapisummary:: + + lmflow.pipeline.utils.memory_safe_vllm_inference.main + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:function:: main() + diff --git a/_sources/autoapi/lmflow/pipeline/utils/peft_trainer/index.rst.txt b/_sources/autoapi/lmflow/pipeline/utils/peft_trainer/index.rst.txt new file mode 100644 index 000000000..aed03c218 --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/utils/peft_trainer/index.rst.txt @@ -0,0 +1,135 @@ +lmflow.pipeline.utils.peft_trainer +================================== + +.. py:module:: lmflow.pipeline.utils.peft_trainer + +.. autoapi-nested-parse:: + + Trainer for Peft models + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.utils.peft_trainer.PeftTrainer + lmflow.pipeline.utils.peft_trainer.PeftSavingCallback + + +Module Contents +--------------- + +.. py:class:: PeftTrainer + + Bases: :py:obj:`transformers.Trainer` + + + .. py:method:: _save_checkpoint(_, trial, metrics=None) + + + Don't save base model, optimizer etc. + but create checkpoint folder (needed for saving adapter) + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + +.. py:class:: PeftSavingCallback + + Bases: :py:obj:`transformers.trainer_callback.TrainerCallback` + + + + Correctly save PEFT model and not full model + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: _save(model, folder) + + + .. py:method:: on_train_end(args: transformers.training_args.TrainingArguments, state: transformers.trainer_callback.TrainerState, control: transformers.trainer_callback.TrainerControl, **kwargs) + + + Save final best model adapter + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: on_epoch_end(args: transformers.training_args.TrainingArguments, state: transformers.trainer_callback.TrainerState, control: transformers.trainer_callback.TrainerControl, **kwargs) + + + Save intermediate model adapters in case of interrupted training + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: on_save(args: transformers.training_args.TrainingArguments, state: transformers.trainer_callback.TrainerState, control: transformers.trainer_callback.TrainerControl, **kwargs) + + diff --git a/_sources/autoapi/lmflow/pipeline/utils/raft_trainer/index.rst.txt b/_sources/autoapi/lmflow/pipeline/utils/raft_trainer/index.rst.txt new file mode 100644 index 000000000..15c2931ee --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/utils/raft_trainer/index.rst.txt @@ -0,0 +1,1560 @@ +lmflow.pipeline.utils.raft_trainer +================================== + +.. py:module:: lmflow.pipeline.utils.raft_trainer + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.utils.raft_trainer.is_torch_greater_or_equal_than_1_10 + lmflow.pipeline.utils.raft_trainer.is_torch_less_than_1_11 + lmflow.pipeline.utils.raft_trainer._is_native_cpu_amp_available + lmflow.pipeline.utils.raft_trainer.DEFAULT_CALLBACKS + lmflow.pipeline.utils.raft_trainer.DEFAULT_PROGRESS_CALLBACK + lmflow.pipeline.utils.raft_trainer.DEFAULT_PROGRESS_CALLBACK + lmflow.pipeline.utils.raft_trainer.IS_SAGEMAKER_MP_POST_1_10 + lmflow.pipeline.utils.raft_trainer.skip_first_batches + lmflow.pipeline.utils.raft_trainer.logger + lmflow.pipeline.utils.raft_trainer.TRAINING_ARGS_NAME + lmflow.pipeline.utils.raft_trainer.TRAINER_STATE_NAME + lmflow.pipeline.utils.raft_trainer.OPTIMIZER_NAME + lmflow.pipeline.utils.raft_trainer.SCHEDULER_NAME + lmflow.pipeline.utils.raft_trainer.SCALER_NAME + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.utils.raft_trainer.RaftTrainer + + +Module Contents +--------------- + +.. py:data:: is_torch_greater_or_equal_than_1_10 + +.. py:data:: is_torch_less_than_1_11 + +.. py:data:: _is_native_cpu_amp_available + +.. py:data:: DEFAULT_CALLBACKS + +.. py:data:: DEFAULT_PROGRESS_CALLBACK + +.. py:data:: DEFAULT_PROGRESS_CALLBACK + +.. py:data:: IS_SAGEMAKER_MP_POST_1_10 + +.. py:data:: skip_first_batches + :value: None + + +.. py:data:: logger + +.. py:data:: TRAINING_ARGS_NAME + :value: 'training_args.bin' + + +.. py:data:: TRAINER_STATE_NAME + :value: 'trainer_state.json' + + +.. py:data:: OPTIMIZER_NAME + :value: 'optimizer.pt' + + +.. py:data:: SCHEDULER_NAME + :value: 'scheduler.pt' + + +.. py:data:: SCALER_NAME + :value: 'scaler.pt' + + +.. py:class:: RaftTrainer(model: Union[transformers.modeling_utils.PreTrainedModel, torch.nn.Module] = None, args: transformers.training_args.TrainingArguments = None, data_collator: Optional[transformers.data.data_collator.DataCollator] = None, train_dataset: Optional[torch.utils.data.Dataset] = None, eval_dataset: Optional[Union[torch.utils.data.Dataset, Dict[str, torch.utils.data.Dataset]]] = None, tokenizer: Optional[transformers.tokenization_utils_base.PreTrainedTokenizerBase] = None, model_init: Optional[Callable[[], transformers.modeling_utils.PreTrainedModel]] = None, compute_metrics: Optional[Callable[[transformers.trainer_utils.EvalPrediction], Dict]] = None, callbacks: Optional[List[transformers.trainer_callback.TrainerCallback]] = None, optimizers: Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR] = (None, None), preprocess_logits_for_metrics: Optional[Callable[[torch.Tensor, torch.Tensor], torch.Tensor]] = None) + + + Trainer is a simple but feature-complete training and eval loop for PyTorch, optimized for 🤗 Transformers. + Args: + model ([`PreTrainedModel`] or `torch.nn.Module`, *optional*): + The model to train, evaluate or use for predictions. If not provided, a `model_init` must be passed. + <Tip> + [`Trainer`] is optimized to work with the [`PreTrainedModel`] provided by the library. You can still use + your own models defined as `torch.nn.Module` as long as they work the same way as the 🤗 Transformers + models. + </Tip> + args ([`TrainingArguments`], *optional*): + The arguments to tweak for training. Will default to a basic instance of [`TrainingArguments`] with the + `output_dir` set to a directory named *tmp_trainer* in the current directory if not provided. + data_collator (`DataCollator`, *optional*): + The function to use to form a batch from a list of elements of `train_dataset` or `eval_dataset`. Will + default to [`default_data_collator`] if no `tokenizer` is provided, an instance of + [`DataCollatorWithPadding`] otherwise. + train_dataset (`torch.utils.data.Dataset` or `torch.utils.data.IterableDataset`, *optional*): + The dataset to use for training. If it is a [`~datasets.Dataset`], columns not accepted by the + `model.forward()` method are automatically removed. + Note that if it's a `torch.utils.data.IterableDataset` with some randomization and you are training in a + distributed fashion, your iterable dataset should either use a internal attribute `generator` that is a + `torch.Generator` for the randomization that must be identical on all processes (and the Trainer will + manually set the seed of this `generator` at each epoch) or have a `set_epoch()` method that internally + sets the seed of the RNGs used. + eval_dataset (Union[`torch.utils.data.Dataset`, Dict[str, `torch.utils.data.Dataset`]), *optional*): + The dataset to use for evaluation. If it is a [`~datasets.Dataset`], columns not accepted by the + `model.forward()` method are automatically removed. If it is a dictionary, it will evaluate on each + dataset prepending the dictionary key to the metric name. + tokenizer ([`PreTrainedTokenizerBase`], *optional*): + The tokenizer used to preprocess the data. If provided, will be used to automatically pad the inputs to the + maximum length when batching inputs, and it will be saved along the model to make it easier to rerun an + interrupted training or reuse the fine-tuned model. + model_init (`Callable[[], PreTrainedModel]`, *optional*): + A function that instantiates the model to be used. If provided, each call to [`~Trainer.train`] will start + from a new instance of the model as given by this function. + The function may have zero argument, or a single one containing the optuna/Ray Tune/SigOpt trial object, to + be able to choose different architectures according to hyper parameters (such as layer count, sizes of + inner layers, dropout probabilities etc). + compute_metrics (`Callable[[EvalPrediction], Dict]`, *optional*): + The function that will be used to compute metrics at evaluation. Must take a [`EvalPrediction`] and return + a dictionary string to metric values. + callbacks (List of [`TrainerCallback`], *optional*): + A list of callbacks to customize the training loop. Will add those to the list of default callbacks + detailed in [here](callback). + If you want to remove one of the default callbacks used, use the [`Trainer.remove_callback`] method. + optimizers (`Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR]`, *optional*): A tuple + containing the optimizer and the scheduler to use. Will default to an instance of [`AdamW`] on your model + and a scheduler given by [`get_linear_schedule_with_warmup`] controlled by `args`. + preprocess_logits_for_metrics (`Callable[[torch.Tensor, torch.Tensor], torch.Tensor]`, *optional*): + A function that preprocess the logits right before caching them at each evaluation step. Must take two + tensors, the logits and the labels, and return the logits once processed as desired. The modifications made + by this function will be reflected in the predictions received by `compute_metrics`. + Note that the labels (second parameter) will be `None` if the dataset does not have them. + Important attributes: + - **model** -- Always points to the core model. If using a transformers model, it will be a [`PreTrainedModel`] + subclass. + - **model_wrapped** -- Always points to the most external model in case one or more other modules wrap the + original model. This is the model that should be used for the forward pass. For example, under `DeepSpeed`, + the inner model is wrapped in `DeepSpeed` and then again in `torch.nn.DistributedDataParallel`. If the inner + model hasn't been wrapped, then `self.model_wrapped` is the same as `self.model`. + - **is_model_parallel** -- Whether or not a model has been switched to a model parallel mode (different from + data parallelism, this means some of the model layers are split on different GPUs). + - **place_model_on_device** -- Whether or not to automatically place the model on the device - it will be set + to `False` if model parallel or deepspeed is used, or if the default + `TrainingArguments.place_model_on_device` is overridden to return `False` . + - **is_in_train** -- Whether or not a model is currently running `train` (e.g. when `evaluate` is called while + in `train`) + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: save_counter + :value: 0 + + + + .. py:attribute:: args + :value: None + + + + .. py:attribute:: hp_name + :value: None + + + + .. py:attribute:: deepspeed + :value: None + + + + .. py:attribute:: is_in_train + :value: False + + + + .. py:attribute:: _memory_tracker + + + .. py:attribute:: sharded_ddp + :value: None + + + + .. py:attribute:: fsdp + :value: None + + + + .. py:attribute:: place_model_on_device + + + .. py:attribute:: data_collator + :value: None + + + + .. py:attribute:: train_dataset + :value: None + + + + .. py:attribute:: eval_dataset + :value: None + + + + .. py:attribute:: tokenizer + :value: None + + + + .. py:attribute:: model_wrapped + :value: None + + + + .. py:attribute:: model + :value: None + + + + .. py:attribute:: compute_metrics + :value: None + + + + .. py:attribute:: preprocess_logits_for_metrics + :value: None + + + + .. py:attribute:: callback_handler + + + .. py:attribute:: _loggers_initialized + :value: False + + + + .. py:attribute:: _signature_columns + :value: None + + + + .. py:attribute:: use_apex + :value: False + + + + .. py:attribute:: use_cuda_amp + :value: False + + + + .. py:attribute:: use_cpu_amp + :value: False + + + + .. py:attribute:: do_grad_scaling + :value: False + + + + .. py:attribute:: state + + + .. py:attribute:: control + + + .. py:attribute:: current_flos + :value: 0 + + + + .. py:attribute:: hp_search_backend + :value: None + + + + .. py:attribute:: use_tune_checkpoints + :value: False + + + + .. py:attribute:: label_names + + + .. py:attribute:: can_return_loss + + + .. py:attribute:: _train_batch_size + + + .. py:method:: add_callback(callback) + + + Add a callback to the current list of [`~transformer.TrainerCallback`]. + Args: + callback (`type` or [`~transformer.TrainerCallback`]): + A [`~transformer.TrainerCallback`] class or an instance of a [`~transformer.TrainerCallback`]. In the + first case, will instantiate a member of that class. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: pop_callback(callback) + + + Remove a callback from the current list of [`~transformer.TrainerCallback`] and returns it. + If the callback is not found, returns `None` (and no error is raised). + Args: + callback (`type` or [`~transformer.TrainerCallback`]): + A [`~transformer.TrainerCallback`] class or an instance of a [`~transformer.TrainerCallback`]. In the + first case, will pop the first member of that class found in the list of callbacks. + Returns: + [`~transformer.TrainerCallback`]: The callback removed, if found. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: remove_callback(callback) + + + Remove a callback from the current list of [`~transformer.TrainerCallback`]. + Args: + callback (`type` or [`~transformer.TrainerCallback`]): + A [`~transformer.TrainerCallback`] class or an instance of a [`~transformer.TrainerCallback`]. In the + first case, will remove the first member of that class found in the list of callbacks. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _move_model_to_device(model, device) + + + .. py:method:: _set_signature_columns_if_needed() + + + .. py:method:: _remove_unused_columns(dataset: datasets.Dataset, description: Optional[str] = None) + + + .. py:method:: _get_collator_with_removed_columns(data_collator: Callable, description: Optional[str] = None) -> Callable + + + Wrap the data collator in a callable removing unused columns. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _get_train_sampler() -> Optional[torch.utils.data.Sampler] + + + .. py:method:: get_train_dataloader() -> torch.utils.data.DataLoader + + + Returns the training [`~torch.utils.data.DataLoader`]. + Will use no sampler if `train_dataset` does not implement `__len__`, a random sampler (adapted to distributed + training if necessary) otherwise. + Subclass and override this method if you want to inject some custom behavior. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _get_eval_sampler(eval_dataset: torch.utils.data.Dataset) -> Optional[torch.utils.data.Sampler] + + + .. py:method:: get_eval_dataloader(eval_dataset: Optional[torch.utils.data.Dataset] = None) -> torch.utils.data.DataLoader + + + Returns the evaluation [`~torch.utils.data.DataLoader`]. + Subclass and override this method if you want to inject some custom behavior. + Args: + eval_dataset (`torch.utils.data.Dataset`, *optional*): + If provided, will override `self.eval_dataset`. If it is a [`~datasets.Dataset`], columns not accepted + by the `model.forward()` method are automatically removed. It must implement `__len__`. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_test_dataloader(test_dataset: torch.utils.data.Dataset) -> torch.utils.data.DataLoader + + + Returns the test [`~torch.utils.data.DataLoader`]. + Subclass and override this method if you want to inject some custom behavior. + Args: + test_dataset (`torch.utils.data.Dataset`, *optional*): + The test dataset to use. If it is a [`~datasets.Dataset`], columns not accepted by the + `model.forward()` method are automatically removed. It must implement `__len__`. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: create_optimizer_and_scheduler(num_training_steps: int) + + + Setup the optimizer and the learning rate scheduler. + We provide a reasonable default that works well. If you want to use something else, you can pass a tuple in the + Trainer's init through `optimizers`, or subclass and override this method (or `create_optimizer` and/or + `create_scheduler`) in a subclass. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: create_optimizer() + + + Setup the optimizer. + We provide a reasonable default that works well. If you want to use something else, you can pass a tuple in the + Trainer's init through `optimizers`, or subclass and override this method in a subclass. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: get_optimizer_cls_and_kwargs(args: transformers.training_args.TrainingArguments) -> Tuple[Any, Any] + :staticmethod: + + + + Returns the optimizer class and optimizer parameters based on the training arguments. + Args: + args (`transformers.training_args.TrainingArguments`): + The training arguments for the training session. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: create_scheduler(num_training_steps: int, optimizer: torch.optim.Optimizer = None) + + + Setup the scheduler. The optimizer of the trainer must have been set up either before this method is called or + passed as an argument. + Args: + num_training_steps (int): The number of training steps to do. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: num_examples(dataloader: torch.utils.data.DataLoader) -> int + + + Helper to get number of samples in a [`~torch.utils.data.DataLoader`] by accessing its dataset. When + dataloader.dataset does not exist or has no length, estimates as best it can + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _hp_search_setup(trial: Union[optuna.Trial, Dict[str, Any]]) + + + HP search setup code + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _report_to_hp_search(trial: Union[optuna.Trial, Dict[str, Any]], step: int, metrics: Dict[str, float]) + + + .. py:method:: _tune_save_checkpoint() + + + .. py:method:: call_model_init(trial=None) + + + .. py:method:: torch_jit_model_eval(model, dataloader, training=False) + + + .. py:method:: ipex_optimize_model(model, training=False, dtype=torch.float32) + + + .. py:method:: _wrap_model(model, training=True, dataloader=None) + + + .. py:method:: train(resume_from_checkpoint: Optional[Union[str, bool]] = None, trial: Union[optuna.Trial, Dict[str, Any]] = None, ignore_keys_for_eval: Optional[List[str]] = None, is_first_time=False, **kwargs) + + + Main training entry point. + Args: + resume_from_checkpoint (`str` or `bool`, *optional*): + If a `str`, local path to a saved checkpoint as saved by a previous instance of [`Trainer`]. If a + `bool` and equals `True`, load the last checkpoint in *args.output_dir* as saved by a previous instance + of [`Trainer`]. If present, training will resume from the model/optimizer/scheduler states loaded here. + trial (`optuna.Trial` or `Dict[str, Any]`, *optional*): + The trial run or the hyperparameter dictionary for hyperparameter search. + ignore_keys_for_eval (`List[str]`, *optional*) + A list of keys in the output of your model (if it is a dictionary) that should be ignored when + gathering predictions for evaluation during the training. + kwargs: + Additional keyword arguments used to hide deprecated arguments + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _one_train(batch_size=None, args=None, resume_from_checkpoint=None, trial=None, ignore_keys_for_eval=None) + + + .. py:method:: _inner_training_loop(batch_size=None, args=None, resume_from_checkpoint=None, trial=None, ignore_keys_for_eval=None) + + + 0 This function serves to train one time + 1 Update the self.train_dataset before calling this function + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _get_output_dir(trial) + + + .. py:method:: _load_from_checkpoint(resume_from_checkpoint, model=None) + + + .. py:method:: _load_best_model() + + + .. py:method:: _issue_warnings_after_load(load_result) + + + .. py:method:: _maybe_log_save_evaluate(tr_loss, model, trial, epoch, ignore_keys_for_eval) + + + .. py:method:: _load_rng_state(checkpoint) + + + .. py:method:: _save_checkpoint(model, trial, metrics=None) + + + .. py:method:: _load_optimizer_and_scheduler(checkpoint) + + + If optimizer and scheduler states exist, load them. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: hyperparameter_search(hp_space: Optional[Callable[[optuna.Trial], Dict[str, float]]] = None, compute_objective: Optional[Callable[[Dict[str, float]], float]] = None, n_trials: int = 20, direction: str = 'minimize', backend: Optional[Union[str, transformers.trainer_utils.HPSearchBackend]] = None, hp_name: Optional[Callable[[optuna.Trial], str]] = None, **kwargs) -> transformers.trainer_utils.BestRun + + + Launch an hyperparameter search using `optuna` or `Ray Tune` or `SigOpt`. The optimized quantity is determined + by `compute_objective`, which defaults to a function returning the evaluation loss when no metric is provided, + the sum of all metrics otherwise. + <Tip warning={true}> + To use this method, you need to have provided a `model_init` when initializing your [`Trainer`]: we need to + reinitialize the model at each new run. This is incompatible with the `optimizers` argument, so you need to + subclass [`Trainer`] and override the method [`~Trainer.create_optimizer_and_scheduler`] for custom + optimizer/scheduler. + </Tip> + Args: + hp_space (`Callable[["optuna.Trial"], Dict[str, float]]`, *optional*): + A function that defines the hyperparameter search space. Will default to + [`~trainer_utils.default_hp_space_optuna`] or [`~trainer_utils.default_hp_space_ray`] or + [`~trainer_utils.default_hp_space_sigopt`] depending on your backend. + compute_objective (`Callable[[Dict[str, float]], float]`, *optional*): + A function computing the objective to minimize or maximize from the metrics returned by the `evaluate` + method. Will default to [`~trainer_utils.default_compute_objective`]. + n_trials (`int`, *optional*, defaults to 100): + The number of trial runs to test. + direction (`str`, *optional*, defaults to `"minimize"`): + Whether to optimize greater or lower objects. Can be `"minimize"` or `"maximize"`, you should pick + `"minimize"` when optimizing the validation loss, `"maximize"` when optimizing one or several metrics. + backend (`str` or [`~training_utils.HPSearchBackend`], *optional*): + The backend to use for hyperparameter search. Will default to optuna or Ray Tune or SigOpt, depending + on which one is installed. If all are installed, will default to optuna. + hp_name (`Callable[["optuna.Trial"], str]]`, *optional*): + A function that defines the trial/run name. Will default to None. + kwargs (`Dict[str, Any]`, *optional*): + Additional keyword arguments passed along to `optuna.create_study` or `ray.tune.run`. For more + information see: + - the documentation of + [optuna.create_study](https://optuna.readthedocs.io/en/stable/reference/generated/optuna.study.create_study.html) + - the documentation of [tune.run](https://docs.ray.io/en/latest/tune/api_docs/execution.html#tune-run) + - the documentation of [sigopt](https://app.sigopt.com/docs/endpoints/experiments/create) + Returns: + [`trainer_utils.BestRun`]: All the information about the best run. Experiment summary can be found in + `run_summary` attribute for Ray backend. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: log(logs: Dict[str, float]) -> None + + + Log `logs` on the various objects watching training. + Subclass and override this method to inject custom behavior. + Args: + logs (`Dict[str, float]`): + The values to log. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _prepare_input(data: Union[torch.Tensor, Any]) -> Union[torch.Tensor, Any] + + + Prepares one `data` before feeding it to the model, be it a tensor or a nested list/dictionary of tensors. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _prepare_inputs(inputs: Dict[str, Union[torch.Tensor, Any]]) -> Dict[str, Union[torch.Tensor, Any]] + + + Prepare `inputs` before feeding them to the model, converting them to tensors if they are not already and + handling potential state. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: compute_loss_context_manager() + + + A helper wrapper to group together context managers. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: autocast_smart_context_manager(cache_enabled: Optional[bool] = True) + + + A helper wrapper that creates an appropriate context manager for `autocast` while feeding it the desired + arguments, depending on the situation. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: training_step(model: torch.nn.Module, inputs: Dict[str, Union[torch.Tensor, Any]]) -> torch.Tensor + + + Perform a training step on a batch of inputs. + Subclass and override to inject custom behavior. + Args: + model (`nn.Module`): + The model to train. + inputs (`Dict[str, Union[torch.Tensor, Any]]`): + The inputs and targets of the model. + The dictionary will be unpacked before being fed to the model. Most models expect the targets under the + argument `labels`. Check your model's documentation for all accepted arguments. + Return: + `torch.Tensor`: The tensor with training loss on this batch. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: compute_loss(model, inputs, return_outputs=False) + + + How the loss is computed by Trainer. By default, all models return the loss in the first element. + Subclass and override for custom behavior. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: is_local_process_zero() -> bool + + + Whether or not this process is the local (e.g., on one machine if training in a distributed fashion on several + machines) main process. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: is_world_process_zero() -> bool + + + Whether or not this process is the global main process (when training in a distributed fashion on several + machines, this is only going to be `True` for one process). + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: save_model(output_dir: Optional[str] = None, _internal_call: bool = False) + + + Will save the model, so you can reload it using `from_pretrained()`. + Will only save from the main process. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _save_tpu(output_dir: Optional[str] = None) + + + .. py:method:: _save(output_dir: Optional[str] = None, state_dict=None) + + + .. py:method:: store_flos() + + + .. py:method:: _sorted_checkpoints(output_dir=None, checkpoint_prefix=PREFIX_CHECKPOINT_DIR, use_mtime=False) -> List[str] + + + .. py:method:: _rotate_checkpoints(use_mtime=False, output_dir=None) -> None + + + .. py:method:: evaluate(eval_dataset: Optional[torch.utils.data.Dataset] = None, ignore_keys: Optional[List[str]] = None, metric_key_prefix: str = 'eval') -> Dict[str, float] + + + Run evaluation and returns metrics. + The calling script will be responsible for providing a method to compute metrics, as they are task-dependent + (pass it to the init `compute_metrics` argument). + You can also subclass and override this method to inject custom behavior. + Args: + eval_dataset (`Dataset`, *optional*): + Pass a dataset if you wish to override `self.eval_dataset`. If it is a [`~datasets.Dataset`], columns + not accepted by the `model.forward()` method are automatically removed. It must implement the `__len__` + method. + ignore_keys (`Lst[str]`, *optional*): + A list of keys in the output of your model (if it is a dictionary) that should be ignored when + gathering predictions. + metric_key_prefix (`str`, *optional*, defaults to `"eval"`): + An optional prefix to be used as the metrics key prefix. For example the metrics "bleu" will be named + "eval_bleu" if the prefix is "eval" (default) + Returns: + A dictionary containing the evaluation loss and the potential metrics computed from the predictions. The + dictionary also contains the epoch number which comes from the training state. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: predict(test_dataset: torch.utils.data.Dataset, ignore_keys: Optional[List[str]] = None, metric_key_prefix: str = 'test') -> transformers.trainer_utils.PredictionOutput + + + Run prediction and returns predictions and potential metrics. + Depending on the dataset and your use case, your test dataset may contain labels. In that case, this method + will also return metrics, like in `evaluate()`. + Args: + test_dataset (`Dataset`): + Dataset to run the predictions on. If it is an `datasets.Dataset`, columns not accepted by the + `model.forward()` method are automatically removed. Has to implement the method `__len__` + ignore_keys (`Lst[str]`, *optional*): + A list of keys in the output of your model (if it is a dictionary) that should be ignored when + gathering predictions. + metric_key_prefix (`str`, *optional*, defaults to `"test"`): + An optional prefix to be used as the metrics key prefix. For example the metrics "bleu" will be named + "test_bleu" if the prefix is "test" (default) + <Tip> + If your predictions or labels have different sequence length (for instance because you're doing dynamic padding + in a token classification task) the predictions will be padded (on the right) to allow for concatenation into + one array. The padding index is -100. + </Tip> + Returns: *NamedTuple* A namedtuple with the following keys: + - predictions (`np.ndarray`): The predictions on `test_dataset`. + - label_ids (`np.ndarray`, *optional*): The labels (if the dataset contained some). + - metrics (`Dict[str, float]`, *optional*): The potential dictionary of metrics (if the dataset contained + labels). + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: evaluation_loop(dataloader: torch.utils.data.DataLoader, description: str, prediction_loss_only: Optional[bool] = None, ignore_keys: Optional[List[str]] = None, metric_key_prefix: str = 'eval') -> transformers.trainer_utils.EvalLoopOutput + + + Prediction/evaluation loop, shared by `Trainer.evaluate()` and `Trainer.predict()`. + Works both with or without labels. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _nested_gather(tensors, name=None) + + + Gather value of `tensors` (tensor or list/tuple of nested tensors) and convert them to numpy before + concatenating them to `gathered` + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _pad_across_processes(tensor, pad_index=-100) + + + Recursively pad the tensors in a nested list/tuple/dictionary of tensors from all devices to the same size so + they can safely be gathered. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: prediction_step(model: torch.nn.Module, inputs: Dict[str, Union[torch.Tensor, Any]], prediction_loss_only: bool, ignore_keys: Optional[List[str]] = None) -> Tuple[Optional[torch.Tensor], Optional[torch.Tensor], Optional[torch.Tensor]] + + + Perform an evaluation step on `model` using `inputs`. + Subclass and override to inject custom behavior. + Args: + model (`nn.Module`): + The model to evaluate. + inputs (`Dict[str, Union[torch.Tensor, Any]]`): + The inputs and targets of the model. + The dictionary will be unpacked before being fed to the model. Most models expect the targets under the + argument `labels`. Check your model's documentation for all accepted arguments. + prediction_loss_only (`bool`): + Whether or not to return the loss only. + ignore_keys (`Lst[str]`, *optional*): + A list of keys in the output of your model (if it is a dictionary) that should be ignored when + gathering predictions. + Return: + Tuple[Optional[torch.Tensor], Optional[torch.Tensor], Optional[torch.Tensor]]: A tuple with the loss, + logits and labels (each being optional). + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: floating_point_ops(inputs: Dict[str, Union[torch.Tensor, Any]]) + + + For models that inherit from [`PreTrainedModel`], uses that method to compute the number of floating point + operations for every backward + forward pass. If using another model, either implement such a method in the + model or subclass and override this method. + Args: + inputs (`Dict[str, Union[torch.Tensor, Any]]`): + The inputs and targets of the model. + Returns: + `int`: The number of floating-point operations. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: init_git_repo(at_init: bool = False) + + + Initializes a git repo in `self.args.hub_model_id`. + Args: + at_init (`bool`, *optional*, defaults to `False`): + Whether this function is called before any training or not. If `self.args.overwrite_output_dir` is + `True` and `at_init` is `True`, the path to the repo (which is `self.args.output_dir`) might be wiped + out. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: create_model_card(language: Optional[str] = None, license: Optional[str] = None, tags: Union[str, List[str], None] = None, model_name: Optional[str] = None, finetuned_from: Optional[str] = None, tasks: Union[str, List[str], None] = None, dataset_tags: Union[str, List[str], None] = None, dataset: Union[str, List[str], None] = None, dataset_args: Union[str, List[str], None] = None) + + + Creates a draft of a model card using the information available to the `Trainer`. + Args: + language (`str`, *optional*): + The language of the model (if applicable) + license (`str`, *optional*): + The license of the model. Will default to the license of the pretrained model used, if the original + model given to the `Trainer` comes from a repo on the Hub. + tags (`str` or `List[str]`, *optional*): + Some tags to be included in the metadata of the model card. + model_name (`str`, *optional*): + The name of the model. + finetuned_from (`str`, *optional*): + The name of the model used to fine-tune this one (if applicable). Will default to the name of the repo + of the original model given to the `Trainer` (if it comes from the Hub). + tasks (`str` or `List[str]`, *optional*): + One or several task identifiers, to be included in the metadata of the model card. + dataset_tags (`str` or `List[str]`, *optional*): + One or several dataset tags, to be included in the metadata of the model card. + dataset (`str` or `List[str]`, *optional*): + One or several dataset identifiers, to be included in the metadata of the model card. + dataset_args (`str` or `List[str]`, *optional*): + One or several dataset arguments, to be included in the metadata of the model card. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _push_from_checkpoint(checkpoint_folder) + + + .. py:method:: push_to_hub(commit_message: Optional[str] = 'End of training', blocking: bool = True, **kwargs) -> str + + + Upload *self.model* and *self.tokenizer* to the 🤗 model hub on the repo *self.args.hub_model_id*. + Parameters: + commit_message (`str`, *optional*, defaults to `"End of training"`): + Message to commit while pushing. + blocking (`bool`, *optional*, defaults to `True`): + Whether the function should return only when the `git push` has finished. + kwargs: + Additional keyword arguments passed along to [`~Trainer.create_model_card`]. + Returns: + The url of the commit of your model in the given repository if `blocking=False`, a tuple with the url of + the commit and an object to track the progress of the commit if `blocking=True` + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: prediction_loop(dataloader: torch.utils.data.DataLoader, description: str, prediction_loss_only: Optional[bool] = None, ignore_keys: Optional[List[str]] = None, metric_key_prefix: str = 'eval') -> transformers.trainer_utils.EvalLoopOutput + + + Prediction/evaluation loop, shared by `Trainer.evaluate()` and `Trainer.predict()`. + Works both with or without labels. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _gather_and_numpify(tensors, name) + + + Gather value of `tensors` (tensor or list/tuple of nested tensors) and convert them to numpy before + concatenating them to `gathered` + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _add_sm_patterns_to_gitignore() -> None + + + Add SageMaker Checkpointing patterns to .gitignore file. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.rst.txt b/_sources/autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.rst.txt new file mode 100644 index 000000000..9be0deb3d --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.rst.txt @@ -0,0 +1,60 @@ +lmflow.pipeline.utils.rm_dataprocessor +====================================== + +.. py:module:: lmflow.pipeline.utils.rm_dataprocessor + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.utils.rm_dataprocessor.logger + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: RewardDataCollatorWithPadding + + .. py:attribute:: tokenizer + :type: transformers.AutoTokenizer + + + .. py:attribute:: padding + :type: Union[bool, str, transformers.utils.PaddingStrategy] + :value: True + + + + .. py:attribute:: max_length + :type: Optional[int] + :value: None + + + + .. py:attribute:: pad_to_multiple_of + :type: Optional[int] + :value: None + + + + .. py:attribute:: return_tensors + :type: str + :value: 'pt' + + + + .. py:method:: __call__(features: List[Dict[str, Any]]) -> Dict[str, Any] + + diff --git a/_sources/autoapi/lmflow/pipeline/utils/rm_trainer/index.rst.txt b/_sources/autoapi/lmflow/pipeline/utils/rm_trainer/index.rst.txt new file mode 100644 index 000000000..4f863d79f --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/utils/rm_trainer/index.rst.txt @@ -0,0 +1,47 @@ +lmflow.pipeline.utils.rm_trainer +================================ + +.. py:module:: lmflow.pipeline.utils.rm_trainer + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.utils.rm_trainer.RewardTrainer + lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer + + +Functions +--------- + +.. autoapisummary:: + + lmflow.pipeline.utils.rm_trainer.compute_metrics + lmflow.pipeline.utils.rm_trainer.rm_loss + + +Module Contents +--------------- + +.. py:function:: compute_metrics(eval_pred) + +.. py:function:: rm_loss(model, inputs, return_outputs=False) + +.. py:class:: RewardTrainer + + Bases: :py:obj:`transformers.Trainer` + + + .. py:method:: compute_loss(model, inputs, return_outputs=False) + + +.. py:class:: PeftRewardTrainer + + Bases: :py:obj:`lmflow.pipeline.utils.peft_trainer.PeftTrainer` + + + .. py:method:: compute_loss(model, inputs, return_outputs=False) + + diff --git a/_sources/autoapi/lmflow/pipeline/vllm_inferencer/index.rst.txt b/_sources/autoapi/lmflow/pipeline/vllm_inferencer/index.rst.txt new file mode 100644 index 000000000..b26597cfc --- /dev/null +++ b/_sources/autoapi/lmflow/pipeline/vllm_inferencer/index.rst.txt @@ -0,0 +1,268 @@ +lmflow.pipeline.vllm_inferencer +=============================== + +.. py:module:: lmflow.pipeline.vllm_inferencer + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.pipeline.vllm_inferencer.logger + + +Classes +------- + +.. autoapisummary:: + + lmflow.pipeline.vllm_inferencer.InferencerWithOffloading + lmflow.pipeline.vllm_inferencer.VLLMInferencer + lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: InferencerWithOffloading(model_args: lmflow.args.ModelArguments, data_args: lmflow.args.DatasetArguments, inferencer_args: lmflow.args.InferencerArguments) + + Bases: :py:obj:`lmflow.pipeline.base_pipeline.BasePipeline` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: model_args + + + .. py:attribute:: data_args + + + .. py:attribute:: inferencer_args + + + .. py:attribute:: eos_token_id + + + .. py:method:: inference() + :abstractmethod: + + + + .. py:method:: save_inference_results() + :abstractmethod: + + + + .. py:method:: load_inference_results() + :abstractmethod: + + + +.. py:class:: VLLMInferencer(model_args: lmflow.args.ModelArguments, data_args: lmflow.args.DatasetArguments, inferencer_args: lmflow.args.InferencerArguments) + + Bases: :py:obj:`InferencerWithOffloading` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: sampling_params + + + .. py:method:: parse_to_sampling_params(inference_args: lmflow.args.InferencerArguments) -> vllm.SamplingParams + + + .. py:method:: inference(model: lmflow.models.hf_decoder_model.HFDecoderModel, dataset: lmflow.datasets.Dataset, enable_decode_inference_result: bool = True, release_gpu: bool = False, inference_args: Optional[lmflow.args.InferencerArguments] = None, enable_distributed_inference: bool = False, **kwargs) -> List[lmflow.utils.data_utils.VLLMInferenceResultWithInput] + + + Perform inference using the provided model and dataset. Will save inference results if + `save_results` is set to True in `inferencer_args`. + + + :Parameters: + + **model** : HFDecoderModel + LMFlow HFDecoderModel object + + **dataset** : Dataset + LMFlow Dataset object + + **apply_chat_template** : bool, optional + Whether to apply chat template to the input, by default True. + + **enable_decode_inference_result** : bool, optional + Whether to decode after generation, by default False. + + **release_gpu** : bool, optional + Whether to release gpu resources, by default False. + + **inference_args** : InferencerArguments, optional + by default None + + + + :Returns: + + List[VLLMInferenceResultWithInput] + Return a list of VLLMInferenceResultWithInput, where each + element contains the input prompt and the corresponding output. + + When `enable_decode_inference_result = True`, the output would be a list of strings, + contains sampling_params.n samples for the corresponding prompt. + + When `enable_decode_inference_result = False`, return a list of list of ints + (token ids, no decoding after generation). + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _inference(model: lmflow.models.hf_decoder_model.HFDecoderModel, model_input: List[str], sampling_params: vllm.SamplingParams, release_gpu: bool = False) -> List[lmflow.utils.data_utils.VLLMInferenceResultWithInput] + + + .. py:method:: _distributed_inference(model: lmflow.models.hf_decoder_model.HFDecoderModel, model_input: ray.data.Dataset, sampling_params: vllm.SamplingParams, num_instances: int, batch_size: int = 4, release_gpu: bool = False) -> List[lmflow.utils.data_utils.VLLMInferenceResultWithInput] + + + .. py:method:: save_inference_results(outputs: Union[List[List[str]], List[List[List[int]]]], save_file_path: str) + + + .. py:method:: load_inference_results(results_path: str) -> Union[List[List[str]], List[List[List[int]]]] + + +.. py:class:: MemorySafeVLLMInferencer(model_args: lmflow.args.ModelArguments, data_args: lmflow.args.DatasetArguments, inferencer_args: lmflow.args.InferencerArguments) + + Bases: :py:obj:`VLLMInferencer` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: inferencer_file_path + + + .. py:method:: inference() -> List[lmflow.utils.data_utils.VLLMInferenceResultWithInput] + + + Perform inference using the provided model and dataset. Will save inference results if + `save_results` is set to True in `inferencer_args`. + + + :Parameters: + + **model** : HFDecoderModel + LMFlow HFDecoderModel object + + **dataset** : Dataset + LMFlow Dataset object + + **apply_chat_template** : bool, optional + Whether to apply chat template to the input, by default True. + + **enable_decode_inference_result** : bool, optional + Whether to decode after generation, by default False. + + **release_gpu** : bool, optional + Whether to release gpu resources, by default False. + + **inference_args** : InferencerArguments, optional + by default None + + + + :Returns: + + List[VLLMInferenceResultWithInput] + Return a list of VLLMInferenceResultWithInput, where each + element contains the input prompt and the corresponding output. + + When `enable_decode_inference_result = True`, the output would be a list of strings, + contains sampling_params.n samples for the corresponding prompt. + + When `enable_decode_inference_result = False`, return a list of list of ints + (token ids, no decoding after generation). + + + + + + + + + + + + .. + !! processed by numpydoc !! + + diff --git a/_sources/autoapi/lmflow/tokenization/hf_decoder_model/index.rst.txt b/_sources/autoapi/lmflow/tokenization/hf_decoder_model/index.rst.txt new file mode 100644 index 000000000..9d3e7767e --- /dev/null +++ b/_sources/autoapi/lmflow/tokenization/hf_decoder_model/index.rst.txt @@ -0,0 +1,80 @@ +lmflow.tokenization.hf_decoder_model +==================================== + +.. py:module:: lmflow.tokenization.hf_decoder_model + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.tokenization.hf_decoder_model.logger + lmflow.tokenization.hf_decoder_model.tok_logger + + +Functions +--------- + +.. autoapisummary:: + + lmflow.tokenization.hf_decoder_model.blocking + lmflow.tokenization.hf_decoder_model.tokenize_function + lmflow.tokenization.hf_decoder_model.conversation_tokenize_function + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:data:: tok_logger + +.. py:function:: blocking(token_dict: Dict, block_size: int, model_max_length: int, pad_token_id: int, padding_side: str, truncation_side: str = 'right') -> Dict + +.. py:function:: tokenize_function(examples, data_args: lmflow.args.DatasetArguments, tokenizer: Union[transformers.PreTrainedTokenizer, transformers.PreTrainedTokenizerFast], column_names, label_columns, tokenized_column_order, add_special_tokens, use_truncation) -> Dict + + + Handels text_only and text2text datasets tokenization + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:function:: conversation_tokenize_function(examples, data_args: lmflow.args.DatasetArguments, tokenizer: Union[transformers.PreTrainedTokenizer, transformers.PreTrainedTokenizerFast], column_names, conversation_template: lmflow.utils.conversation_template.ConversationTemplate) -> Dict + + + Handels conversation datasets tokenization + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + diff --git a/_sources/autoapi/lmflow/tokenization/hf_text_regression_model/index.rst.txt b/_sources/autoapi/lmflow/tokenization/hf_text_regression_model/index.rst.txt new file mode 100644 index 000000000..142f4b240 --- /dev/null +++ b/_sources/autoapi/lmflow/tokenization/hf_text_regression_model/index.rst.txt @@ -0,0 +1,114 @@ +lmflow.tokenization.hf_text_regression_model +============================================ + +.. py:module:: lmflow.tokenization.hf_text_regression_model + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.tokenization.hf_text_regression_model.logger + lmflow.tokenization.hf_text_regression_model.tok_logger + + +Functions +--------- + +.. autoapisummary:: + + lmflow.tokenization.hf_text_regression_model.blocking_paired + lmflow.tokenization.hf_text_regression_model.blocking + lmflow.tokenization.hf_text_regression_model.blocking_text_to_textlist + lmflow.tokenization.hf_text_regression_model.paired_conversation_tokenize_function + lmflow.tokenization.hf_text_regression_model.conversation_tokenize_function + lmflow.tokenization.hf_text_regression_model.tokenize_function + lmflow.tokenization.hf_text_regression_model.text_to_textlist_tokenize_function + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:data:: tok_logger + +.. py:function:: blocking_paired(token_dict: Dict, column_names: List, block_size: int, model_max_length: int, pad_token_id: int, padding_side: str, truncation_side: str = 'right') -> Dict + +.. py:function:: blocking(token_dict: Dict, block_size: int, model_max_length: int, pad_token_id: int, padding_side: str, truncation_side: str = 'right') -> Dict + +.. py:function:: blocking_text_to_textlist(token_dict: Dict, block_size: int, model_max_length: int, pad_token_id: int, padding_side: str, truncation_side: str = 'right') -> Dict + +.. py:function:: paired_conversation_tokenize_function(examples, data_args: lmflow.args.DatasetArguments, tokenizer: Union[transformers.PreTrainedTokenizer, transformers.PreTrainedTokenizerFast], column_names, conversation_template: lmflow.utils.conversation_template.ConversationTemplate) -> Dict + +.. py:function:: conversation_tokenize_function(examples, data_args: lmflow.args.DatasetArguments, tokenizer: Union[transformers.PreTrainedTokenizer, transformers.PreTrainedTokenizerFast], column_names, conversation_template: lmflow.utils.conversation_template.ConversationTemplate) -> Dict + + + Handels conversation datasets tokenization + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:function:: tokenize_function(examples, data_args: lmflow.args.DatasetArguments, tokenizer: Union[transformers.PreTrainedTokenizer, transformers.PreTrainedTokenizerFast], column_names, label_columns, tokenized_column_order, add_special_tokens, use_truncation) -> Dict + + + Handels text_only and text2text datasets tokenization + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:function:: text_to_textlist_tokenize_function(examples, data_args: lmflow.args.DatasetArguments, tokenizer: Union[transformers.PreTrainedTokenizer, transformers.PreTrainedTokenizerFast], column_names, add_special_tokens, use_truncation) -> Dict + + + For rm inference, and don't need attn mask and labels. + NOTE: input_ids here refers to the tokenized input_ids of the input **and** output + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + diff --git a/_sources/autoapi/lmflow/tokenization/index.rst.txt b/_sources/autoapi/lmflow/tokenization/index.rst.txt new file mode 100644 index 000000000..ee3c2d670 --- /dev/null +++ b/_sources/autoapi/lmflow/tokenization/index.rst.txt @@ -0,0 +1,16 @@ +lmflow.tokenization +=================== + +.. py:module:: lmflow.tokenization + + +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + /autoapi/lmflow/tokenization/hf_decoder_model/index + /autoapi/lmflow/tokenization/hf_text_regression_model/index + + diff --git a/_sources/autoapi/lmflow/utils/common/index.rst.txt b/_sources/autoapi/lmflow/utils/common/index.rst.txt new file mode 100644 index 000000000..a4ebc0357 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/common/index.rst.txt @@ -0,0 +1,179 @@ +lmflow.utils.common +=================== + +.. py:module:: lmflow.utils.common + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.common.logger + + +Functions +--------- + +.. autoapisummary:: + + lmflow.utils.common.make_shell_args_from_dataclass + lmflow.utils.common.create_copied_dataclass + lmflow.utils.common.remove_dataclass_attr_prefix + lmflow.utils.common.add_dataclass_attr_prefix + lmflow.utils.common.print_banner + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:function:: make_shell_args_from_dataclass(dataclass_objects: List, format: str = 'subprocess', skip_default: bool = True, ignored_args_list: Optional[List[str]] = None) -> Union[str, List[str]] + + + Return a string or a list of strings that can be used as shell arguments. + + + :Parameters: + + **dataclass_objects** : List + A list of dataclass objects. + + **format** : str, optional + Return format, can be "shell" or "subprocess", by default "subprocess". + + **skip_default** : bool, optional + Whether to skip attributes with default values, by default True. + + + + :Returns: + + Union[str, List[str]] + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:function:: create_copied_dataclass(original_dataclass, field_prefix: str, class_prefix: str, new_default: Dict = None) + + + Create a copied dataclass with new field names and default values. + + + :Parameters: + + **original_dataclass** : dataclass + .. + + **field_prefix** : str + The prefix to add to the **field** names of the copied dataclass. + + **class_prefix** : str + The prefix to add to the **class** name of the copied dataclass. + + **new_default** : Dict, optional + The new default values for the copied dataclass. When None, the + default values of the original dataclass are used. + + + + :Returns: + + dataclass + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:function:: remove_dataclass_attr_prefix(data_instance, prefix: str) -> Dict + + + Remove the prefix from the attribute names of a dataclass instance. + + + :Parameters: + + **data_instance** : dataclass + .. + + **prefix** : str + The prefix to remove from the attribute names of the dataclass instance. + + + + :Returns: + + Dict + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:function:: add_dataclass_attr_prefix(data_instance, prefix: str) -> Dict + + + Add the prefix to the attribute names of a dataclass instance. + + + :Parameters: + + **data_instance** : dataclass + .. + + **prefix** : str + The prefix to add to the attribute names of the dataclass instance. + + + + :Returns: + + Dict + .. + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:function:: print_banner(message: str) + diff --git a/_sources/autoapi/lmflow/utils/constants/index.rst.txt b/_sources/autoapi/lmflow/utils/constants/index.rst.txt new file mode 100644 index 000000000..828b27381 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/constants/index.rst.txt @@ -0,0 +1,160 @@ +lmflow.utils.constants +====================== + +.. py:module:: lmflow.utils.constants + +.. autoapi-nested-parse:: + + Commonly used constants. + + .. + !! processed by numpydoc !! + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.constants.TEXT_ONLY_DATASET_DESCRIPTION + lmflow.utils.constants.TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION + lmflow.utils.constants.PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION + lmflow.utils.constants.TEXT_ONLY_DATASET_DETAILS + lmflow.utils.constants.TEXT2TEXT_DATASET_DESCRIPTION + lmflow.utils.constants.CONVERSATION_DATASET_DESCRIPTION + lmflow.utils.constants.PAIRED_CONVERSATION_DATASET_DESCRIPTION + lmflow.utils.constants.TEXT_TO_TEXTLIST_DATASET_DESCRIPTION + lmflow.utils.constants.TEXT2TEXT_DATASET_DETAILS + lmflow.utils.constants.FLOAT_ONLY_DATASET_DESCRIPTION + lmflow.utils.constants.TEXT_ONLY_DATASET_LONG_DESCRITION + lmflow.utils.constants.TEXT2TEXT_DATASET_LONG_DESCRITION + lmflow.utils.constants.DATASET_DESCRIPTION_MAP + lmflow.utils.constants.INSTANCE_FIELDS_MAP + lmflow.utils.constants.CONVERSATION_ROLE_NAMES + lmflow.utils.constants.CONTROLLER_HEART_BEAT_EXPIRATION + lmflow.utils.constants.WORKER_HEART_BEAT_INTERVAL + lmflow.utils.constants.LOGDIR + lmflow.utils.constants.IGNORE_INDEX + lmflow.utils.constants.IMAGE_TOKEN_INDEX + lmflow.utils.constants.DEFAULT_IMAGE_TOKEN + lmflow.utils.constants.DEFAULT_IMAGE_PATCH_TOKEN + lmflow.utils.constants.DEFAULT_IM_START_TOKEN + lmflow.utils.constants.DEFAULT_IM_END_TOKEN + lmflow.utils.constants.LMFLOW_LORA_TARGET_MODULES_MAPPING + lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG + lmflow.utils.constants.RETURN_CODE_ERROR_BUFFER + lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE + lmflow.utils.constants.MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE + + +Module Contents +--------------- + +.. py:data:: TEXT_ONLY_DATASET_DESCRIPTION + :value: '' + + +.. py:data:: TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION + :value: '' + + +.. py:data:: PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION + :value: '' + + +.. py:data:: TEXT_ONLY_DATASET_DETAILS + :value: '' + + +.. py:data:: TEXT2TEXT_DATASET_DESCRIPTION + :value: '' + + +.. py:data:: CONVERSATION_DATASET_DESCRIPTION + :value: '' + + +.. py:data:: PAIRED_CONVERSATION_DATASET_DESCRIPTION + :value: '' + + +.. py:data:: TEXT_TO_TEXTLIST_DATASET_DESCRIPTION + :value: '' + + +.. py:data:: TEXT2TEXT_DATASET_DETAILS + :value: '' + + +.. py:data:: FLOAT_ONLY_DATASET_DESCRIPTION + :value: '' + + +.. py:data:: TEXT_ONLY_DATASET_LONG_DESCRITION + :value: '' + + +.. py:data:: TEXT2TEXT_DATASET_LONG_DESCRITION + :value: '' + + +.. py:data:: DATASET_DESCRIPTION_MAP + +.. py:data:: INSTANCE_FIELDS_MAP + +.. py:data:: CONVERSATION_ROLE_NAMES + +.. py:data:: CONTROLLER_HEART_BEAT_EXPIRATION + :value: 30 + + +.. py:data:: WORKER_HEART_BEAT_INTERVAL + :value: 15 + + +.. py:data:: LOGDIR + :value: '.' + + +.. py:data:: IGNORE_INDEX + :value: -100 + + +.. py:data:: IMAGE_TOKEN_INDEX + :value: -200 + + +.. py:data:: DEFAULT_IMAGE_TOKEN + :value: '<image>' + + +.. py:data:: DEFAULT_IMAGE_PATCH_TOKEN + :value: '<im_patch>' + + +.. py:data:: DEFAULT_IM_START_TOKEN + :value: '<im_start>' + + +.. py:data:: DEFAULT_IM_END_TOKEN + :value: '<im_end>' + + +.. py:data:: LMFLOW_LORA_TARGET_MODULES_MAPPING + +.. py:data:: MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG + :value: 'MEMORY_SAFE_VLLM_INFERENCE_DONE' + + +.. py:data:: RETURN_CODE_ERROR_BUFFER + :value: [134] + + +.. py:data:: MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE + :value: ['OMP_NUM_THREADS', 'LOCAL_RANK', 'RANK', 'GROUP_RANK', 'ROLE_RANK', 'ROLE_NAME',... + + +.. py:data:: MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE + :value: ['OMP_NUM_THREADS', 'LOCAL_RANK', 'RANK', 'GROUP_RANK', 'ROLE_RANK', 'ROLE_NAME',... + + diff --git a/_sources/autoapi/lmflow/utils/conversation_template/base/index.rst.txt b/_sources/autoapi/lmflow/utils/conversation_template/base/index.rst.txt new file mode 100644 index 000000000..ffaf718e9 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/conversation_template/base/index.rst.txt @@ -0,0 +1,580 @@ +lmflow.utils.conversation_template.base +======================================= + +.. py:module:: lmflow.utils.conversation_template.base + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.base.logger + lmflow.utils.conversation_template.base.EMPTY_TEMPLATE + lmflow.utils.conversation_template.base.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE + + +Classes +------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.base.TemplateComponent + lmflow.utils.conversation_template.base.Formatter + lmflow.utils.conversation_template.base.EmptyFormatter + lmflow.utils.conversation_template.base.StringFormatter + lmflow.utils.conversation_template.base.ListFormatter + lmflow.utils.conversation_template.base.ConversationTemplate + lmflow.utils.conversation_template.base.ConversationTemplateForTool + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: TemplateComponent + + + The minimal unit of a template, which can be a token, a string, or a list of tools. + + + :Parameters: + + **type** : Literal['token', 'token_id', 'string', 'tools'] + - Type of the component. + + - When the component is a token or a string, the content should be `string`. + The difference between the two is that token will be converted to token ids + by the tokenizer.convert_tokens_to_ids() method, while string will be directly + encoded by the tokenizer.encode() method. Specially, since the bos token and eos + token are frequently used across different templates, we provide the convenience + to use `'bos_token'` and `'eos_token'` to represent the actual bos and eos tokens when + `type` of the `TemplateComponent` is `token`. For example: + + ```python + TemplateComponent(type='token', content='bos_token') + ``` + + After encoding, the content will be replaced by the actual token id of the bos token. + Please do remember that if you set the `type` to `string`, the tokenizer will try to + encode the string 'bos_token' instead of providing the actual bos token. + + - When the component is token_id, the content should be `int` or `List[int]`, and + will be directly appended to the encoded token ids. + + - Tools are not supported yet. + + **content** : Union[str, int, List[str], List[int]] + Content of the component. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: type + :type: Literal['token', 'token_id', 'string', 'tools'] + + + .. py:attribute:: content + :type: Union[str, int, List[str], List[int]] + + + .. py:attribute:: mask + :type: Optional[bool] + :value: True + + + + .. py:method:: __post_init__() + + + .. py:method:: __repr__() -> str + + + .. py:method:: __str__() -> str + + +.. py:class:: Formatter + + Bases: :py:obj:`abc.ABC` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: template + :type: List[TemplateComponent] + :value: [] + + + + .. py:method:: format(**kwargs) -> List[TemplateComponent] + :abstractmethod: + + + + .. py:method:: has_placeholder() + + +.. py:class:: EmptyFormatter + + Bases: :py:obj:`Formatter` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: __post_init__() + + + .. py:method:: format(**kwargs) -> list + + + Empty formatter for when no formatting is needed. + This is useful when user has already applied formatting to the dataset. + + + + + + :Returns: + + list + Original template. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + +.. py:class:: StringFormatter + + Bases: :py:obj:`Formatter` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: __post_init__() + + + .. py:method:: format(**kwargs) -> list + + + Format the string components with the provided keyword arguments. + Mostly used for formatting system prompt, user and assistant messages. + + + :Parameters: + + **\*\*kwargs** : dict + Keyword arguments containing values to replace in the template components. + + + + :Returns: + + list + Formatted template. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + +.. py:class:: ListFormatter + + Bases: :py:obj:`Formatter` + + + + Helper class that provides a standard way to create an ABC using + inheritance. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:method:: format(**kwargs) -> list + + +.. py:class:: ConversationTemplate + + .. py:attribute:: user_formatter + :type: Formatter + + + .. py:attribute:: assistant_formatter + :type: Formatter + + + .. py:attribute:: function_formatter + :type: Optional[Formatter] + :value: None + + + + .. py:attribute:: observation_formatter + :type: Optional[Formatter] + :value: None + + + + .. py:attribute:: system_formatter + :type: Optional[Formatter] + :value: None + + + + .. py:attribute:: force_system + :type: bool + :value: False + + + + .. py:attribute:: tools_formatter + :type: Optional[Formatter] + :value: None + + + + .. py:attribute:: separator + :type: Optional[TemplateComponent] + :value: None + + + + .. py:attribute:: remove_last_sep + :type: bool + :value: False + + + + .. py:attribute:: special_starter + :type: Optional[TemplateComponent] + :value: None + + + + .. py:attribute:: special_stopper + :type: Optional[TemplateComponent] + :value: None + + + + .. py:attribute:: template_name + :type: Optional[str] + :value: None + + + + .. py:method:: __post_init__() + + + .. py:method:: encode_conversation(tokenizer: transformers.PreTrainedTokenizer, messages: List[Dict[str, str]], system: Optional[str] = None, tools: Optional[List[str]] = None, **kwargs) -> Sequence[Tuple[List[int], List[int]]] + + + Messages here should be guaranteed to be in pairs, with the first message being the user message and the second message being the system message. + Data example: + ```json + { + "conversation_id": 2, + "system": "sysinfo1", + "tools": ["tool_1_desc"], + "messages": [ + { + "role": "user", + "content": "hi" + }, + { + "role": "assistant", + "content": "Hello!" + } + ] + } + ``` + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _encode(tokenizer: transformers.PreTrainedTokenizer, messages: List[Dict[str, str]], system: Optional[str] = None, tools: Optional[str] = None, **kwargs) -> Sequence[Tuple[List[int], List[int]]] + + + .. py:method:: _encode_template(template: List[TemplateComponent], tokenizer: transformers.PreTrainedTokenizer, **kwargs) -> List[int] + + + Encode template components into token ids. + + + :Parameters: + + **template** : List[TemplateComponent] + Formatted template components. + + **tokenizer** : PreTrainedTokenizer + Tokenizer to convert tokens into token ids. + + + + :Returns: + + List[int] + Encoded token ids. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: post_process_pairs(encoded_pairs, tokenizer) + + + .. py:method:: remove_last_separator(encoded_pairs: Sequence[Tuple[List[int], List[int]]], tokenizer: transformers.PreTrainedTokenizer) -> Sequence[Tuple[List[int], List[int]]] + + + .. py:method:: add_special_starter(encoded_pairs: Sequence[Tuple[List[int], List[int]]], tokenizer: transformers.PreTrainedTokenizer) -> Sequence[Tuple[List[int], List[int]]] + + + .. py:method:: add_special_stopper(encoded_pairs: Sequence[Tuple[List[int], List[int]]], tokenizer: transformers.PreTrainedTokenizer) -> Sequence[Tuple[List[int], List[int]]] + + + .. py:method:: _ensure_id_list(obj: Union[int, List[int]]) -> List[int] + + + Make sure the object is a list of integers. Useful for handling token ids. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + +.. py:class:: ConversationTemplateForTool + + Bases: :py:obj:`ConversationTemplate` + + + .. py:method:: encode_conversation(tokenizer: transformers.PreTrainedTokenizer, messages: List[Dict[str, str]], system: Optional[str] = None, tools: Optional[List[str]] = None, **kwargs) -> Sequence[Tuple[List[int], List[int]]] + + + Messages here should be guaranteed to be in pairs, with the first message being the user message and the second message being the system message. + Data example: + ```json + { + "conversation_id": 2, + "system": "sysinfo1", + "tools": ["tool_1_desc"], + "messages": [ + { + "role": "user", + "content": "hi" + }, + { + "role": "assistant", + "content": "Hello!" + } + ] + } + ``` + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _encode(tokenizer: transformers.PreTrainedTokenizer, messages: List[Dict[str, str]], system: Optional[str] = None, tools: Optional[str] = None, **kwargs) -> Sequence[Tuple[List[int], List[int]]] + + + .. py:method:: _encode_template(template: List[TemplateComponent], tokenizer: transformers.PreTrainedTokenizer, **kwargs) -> List[int] + + + Encode template components into token ids. + + + :Parameters: + + **template** : List[TemplateComponent] + Formatted template components. + + **tokenizer** : PreTrainedTokenizer + Tokenizer to convert tokens into token ids. + + + + :Returns: + + List[int] + Encoded token ids. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + +.. py:data:: EMPTY_TEMPLATE + +.. py:data:: EMPTY_NO_SPECIAL_TOKENS_TEMPLATE + diff --git a/_sources/autoapi/lmflow/utils/conversation_template/chatglm/index.rst.txt b/_sources/autoapi/lmflow/utils/conversation_template/chatglm/index.rst.txt new file mode 100644 index 000000000..fa17b5407 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/conversation_template/chatglm/index.rst.txt @@ -0,0 +1,19 @@ +lmflow.utils.conversation_template.chatglm +========================================== + +.. py:module:: lmflow.utils.conversation_template.chatglm + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.chatglm.CHATGLM3_TEMPLATE + + +Module Contents +--------------- + +.. py:data:: CHATGLM3_TEMPLATE + diff --git a/_sources/autoapi/lmflow/utils/conversation_template/chatml/index.rst.txt b/_sources/autoapi/lmflow/utils/conversation_template/chatml/index.rst.txt new file mode 100644 index 000000000..b414e64a9 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/conversation_template/chatml/index.rst.txt @@ -0,0 +1,19 @@ +lmflow.utils.conversation_template.chatml +========================================= + +.. py:module:: lmflow.utils.conversation_template.chatml + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.chatml.CHATML_TEMPLATE + + +Module Contents +--------------- + +.. py:data:: CHATML_TEMPLATE + diff --git a/_sources/autoapi/lmflow/utils/conversation_template/deepseek/index.rst.txt b/_sources/autoapi/lmflow/utils/conversation_template/deepseek/index.rst.txt new file mode 100644 index 000000000..48ea50616 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/conversation_template/deepseek/index.rst.txt @@ -0,0 +1,19 @@ +lmflow.utils.conversation_template.deepseek +=========================================== + +.. py:module:: lmflow.utils.conversation_template.deepseek + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.deepseek.DEEPSEEK_TEMPLATE + + +Module Contents +--------------- + +.. py:data:: DEEPSEEK_TEMPLATE + diff --git a/_sources/autoapi/lmflow/utils/conversation_template/gemma/index.rst.txt b/_sources/autoapi/lmflow/utils/conversation_template/gemma/index.rst.txt new file mode 100644 index 000000000..e7d9381e0 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/conversation_template/gemma/index.rst.txt @@ -0,0 +1,38 @@ +lmflow.utils.conversation_template.gemma +======================================== + +.. py:module:: lmflow.utils.conversation_template.gemma + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.gemma.logger + lmflow.utils.conversation_template.gemma.GEMMA_TEMPLATE + + +Classes +------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.gemma.GemmaConversationTemplate + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: GemmaConversationTemplate + + Bases: :py:obj:`lmflow.utils.conversation_template.base.ConversationTemplate` + + + .. py:method:: encode_conversation(*args, **kwargs) + + +.. py:data:: GEMMA_TEMPLATE + diff --git a/_sources/autoapi/lmflow/utils/conversation_template/hymba/index.rst.txt b/_sources/autoapi/lmflow/utils/conversation_template/hymba/index.rst.txt new file mode 100644 index 000000000..145f1afe7 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/conversation_template/hymba/index.rst.txt @@ -0,0 +1,74 @@ +lmflow.utils.conversation_template.hymba +======================================== + +.. py:module:: lmflow.utils.conversation_template.hymba + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.hymba.HYMBA_TEMPLATE + + +Classes +------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.hymba.HymbaConversationTemplate + + +Module Contents +--------------- + +.. py:class:: HymbaConversationTemplate + + Bases: :py:obj:`lmflow.utils.conversation_template.base.ConversationTemplateForTool` + + + .. py:method:: encode_conversation(tokenizer: transformers.PreTrainedTokenizer, messages: List[Dict[str, str]], system: Optional[str] = None, tools: Optional[List[str]] = None, **kwargs) -> Sequence[Tuple[List[int], List[int]]] + + + Messages here should be guaranteed to be in pairs, with the first message being the user message and the second message being the system message. + Data example: + ```json + { + "conversation_id": 2, + "system": "sysinfo1", + "tools": ["tool_1_desc"], + "messages": [ + { + "role": "user", + "content": "hi" + }, + { + "role": "assistant", + "content": "Hello!" + } + ] + } + ``` + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + +.. py:data:: HYMBA_TEMPLATE + diff --git a/_sources/autoapi/lmflow/utils/conversation_template/index.rst.txt b/_sources/autoapi/lmflow/utils/conversation_template/index.rst.txt new file mode 100644 index 000000000..58c07c520 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/conversation_template/index.rst.txt @@ -0,0 +1,370 @@ +lmflow.utils.conversation_template +================================== + +.. py:module:: lmflow.utils.conversation_template + + +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + /autoapi/lmflow/utils/conversation_template/base/index + /autoapi/lmflow/utils/conversation_template/chatglm/index + /autoapi/lmflow/utils/conversation_template/chatml/index + /autoapi/lmflow/utils/conversation_template/deepseek/index + /autoapi/lmflow/utils/conversation_template/gemma/index + /autoapi/lmflow/utils/conversation_template/hymba/index + /autoapi/lmflow/utils/conversation_template/internlm/index + /autoapi/lmflow/utils/conversation_template/llama/index + /autoapi/lmflow/utils/conversation_template/phi/index + /autoapi/lmflow/utils/conversation_template/qwen/index + /autoapi/lmflow/utils/conversation_template/yi/index + /autoapi/lmflow/utils/conversation_template/zephyr/index + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.EMPTY_TEMPLATE + lmflow.utils.conversation_template.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE + lmflow.utils.conversation_template.CHATGLM3_TEMPLATE + lmflow.utils.conversation_template.CHATML_TEMPLATE + lmflow.utils.conversation_template.DEEPSEEK_TEMPLATE + lmflow.utils.conversation_template.GEMMA_TEMPLATE + lmflow.utils.conversation_template.HYMBA_TEMPLATE + lmflow.utils.conversation_template.INTERNLM2_TEMPLATE + lmflow.utils.conversation_template.LLAMA2_TEMPLATE + lmflow.utils.conversation_template.LLAMA3_TEMPLATE + lmflow.utils.conversation_template.LLAMA3_TEMPLATE_FOR_TOOL + lmflow.utils.conversation_template.PHI3_TEMPLATE + lmflow.utils.conversation_template.QWEN2_TEMPLATE + lmflow.utils.conversation_template.QWEN2_TEMPLATE_FOR_TOOL + lmflow.utils.conversation_template.YI1_5_TEMPLATE + lmflow.utils.conversation_template.ZEPHYR_TEMPLATE + lmflow.utils.conversation_template.PRESET_TEMPLATES + + +Classes +------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.ConversationTemplate + lmflow.utils.conversation_template.ConversationTemplateForTool + + +Package Contents +---------------- + +.. py:data:: EMPTY_TEMPLATE + +.. py:data:: EMPTY_NO_SPECIAL_TOKENS_TEMPLATE + +.. py:class:: ConversationTemplate + + .. py:attribute:: user_formatter + :type: Formatter + + + .. py:attribute:: assistant_formatter + :type: Formatter + + + .. py:attribute:: function_formatter + :type: Optional[Formatter] + :value: None + + + + .. py:attribute:: observation_formatter + :type: Optional[Formatter] + :value: None + + + + .. py:attribute:: system_formatter + :type: Optional[Formatter] + :value: None + + + + .. py:attribute:: force_system + :type: bool + :value: False + + + + .. py:attribute:: tools_formatter + :type: Optional[Formatter] + :value: None + + + + .. py:attribute:: separator + :type: Optional[TemplateComponent] + :value: None + + + + .. py:attribute:: remove_last_sep + :type: bool + :value: False + + + + .. py:attribute:: special_starter + :type: Optional[TemplateComponent] + :value: None + + + + .. py:attribute:: special_stopper + :type: Optional[TemplateComponent] + :value: None + + + + .. py:attribute:: template_name + :type: Optional[str] + :value: None + + + + .. py:method:: __post_init__() + + + .. py:method:: encode_conversation(tokenizer: transformers.PreTrainedTokenizer, messages: List[Dict[str, str]], system: Optional[str] = None, tools: Optional[List[str]] = None, **kwargs) -> Sequence[Tuple[List[int], List[int]]] + + + Messages here should be guaranteed to be in pairs, with the first message being the user message and the second message being the system message. + Data example: + ```json + { + "conversation_id": 2, + "system": "sysinfo1", + "tools": ["tool_1_desc"], + "messages": [ + { + "role": "user", + "content": "hi" + }, + { + "role": "assistant", + "content": "Hello!" + } + ] + } + ``` + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _encode(tokenizer: transformers.PreTrainedTokenizer, messages: List[Dict[str, str]], system: Optional[str] = None, tools: Optional[str] = None, **kwargs) -> Sequence[Tuple[List[int], List[int]]] + + + .. py:method:: _encode_template(template: List[TemplateComponent], tokenizer: transformers.PreTrainedTokenizer, **kwargs) -> List[int] + + + Encode template components into token ids. + + + :Parameters: + + **template** : List[TemplateComponent] + Formatted template components. + + **tokenizer** : PreTrainedTokenizer + Tokenizer to convert tokens into token ids. + + + + :Returns: + + List[int] + Encoded token ids. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: post_process_pairs(encoded_pairs, tokenizer) + + + .. py:method:: remove_last_separator(encoded_pairs: Sequence[Tuple[List[int], List[int]]], tokenizer: transformers.PreTrainedTokenizer) -> Sequence[Tuple[List[int], List[int]]] + + + .. py:method:: add_special_starter(encoded_pairs: Sequence[Tuple[List[int], List[int]]], tokenizer: transformers.PreTrainedTokenizer) -> Sequence[Tuple[List[int], List[int]]] + + + .. py:method:: add_special_stopper(encoded_pairs: Sequence[Tuple[List[int], List[int]]], tokenizer: transformers.PreTrainedTokenizer) -> Sequence[Tuple[List[int], List[int]]] + + + .. py:method:: _ensure_id_list(obj: Union[int, List[int]]) -> List[int] + + + Make sure the object is a list of integers. Useful for handling token ids. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + +.. py:class:: ConversationTemplateForTool + + Bases: :py:obj:`ConversationTemplate` + + + .. py:method:: encode_conversation(tokenizer: transformers.PreTrainedTokenizer, messages: List[Dict[str, str]], system: Optional[str] = None, tools: Optional[List[str]] = None, **kwargs) -> Sequence[Tuple[List[int], List[int]]] + + + Messages here should be guaranteed to be in pairs, with the first message being the user message and the second message being the system message. + Data example: + ```json + { + "conversation_id": 2, + "system": "sysinfo1", + "tools": ["tool_1_desc"], + "messages": [ + { + "role": "user", + "content": "hi" + }, + { + "role": "assistant", + "content": "Hello!" + } + ] + } + ``` + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: _encode(tokenizer: transformers.PreTrainedTokenizer, messages: List[Dict[str, str]], system: Optional[str] = None, tools: Optional[str] = None, **kwargs) -> Sequence[Tuple[List[int], List[int]]] + + + .. py:method:: _encode_template(template: List[TemplateComponent], tokenizer: transformers.PreTrainedTokenizer, **kwargs) -> List[int] + + + Encode template components into token ids. + + + :Parameters: + + **template** : List[TemplateComponent] + Formatted template components. + + **tokenizer** : PreTrainedTokenizer + Tokenizer to convert tokens into token ids. + + + + :Returns: + + List[int] + Encoded token ids. + + + + + + + + + + + + .. + !! processed by numpydoc !! + + +.. py:data:: CHATGLM3_TEMPLATE + +.. py:data:: CHATML_TEMPLATE + +.. py:data:: DEEPSEEK_TEMPLATE + +.. py:data:: GEMMA_TEMPLATE + +.. py:data:: HYMBA_TEMPLATE + +.. py:data:: INTERNLM2_TEMPLATE + +.. py:data:: LLAMA2_TEMPLATE + +.. py:data:: LLAMA3_TEMPLATE + +.. py:data:: LLAMA3_TEMPLATE_FOR_TOOL + +.. py:data:: PHI3_TEMPLATE + +.. py:data:: QWEN2_TEMPLATE + +.. py:data:: QWEN2_TEMPLATE_FOR_TOOL + +.. py:data:: YI1_5_TEMPLATE + +.. py:data:: ZEPHYR_TEMPLATE + +.. py:data:: PRESET_TEMPLATES + diff --git a/_sources/autoapi/lmflow/utils/conversation_template/internlm/index.rst.txt b/_sources/autoapi/lmflow/utils/conversation_template/internlm/index.rst.txt new file mode 100644 index 000000000..26e182b57 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/conversation_template/internlm/index.rst.txt @@ -0,0 +1,19 @@ +lmflow.utils.conversation_template.internlm +=========================================== + +.. py:module:: lmflow.utils.conversation_template.internlm + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.internlm.INTERNLM2_TEMPLATE + + +Module Contents +--------------- + +.. py:data:: INTERNLM2_TEMPLATE + diff --git a/_sources/autoapi/lmflow/utils/conversation_template/llama/index.rst.txt b/_sources/autoapi/lmflow/utils/conversation_template/llama/index.rst.txt new file mode 100644 index 000000000..579b833ee --- /dev/null +++ b/_sources/autoapi/lmflow/utils/conversation_template/llama/index.rst.txt @@ -0,0 +1,56 @@ +lmflow.utils.conversation_template.llama +======================================== + +.. py:module:: lmflow.utils.conversation_template.llama + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.llama.logger + lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE + lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE_FOR_TOOL + lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE + lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE_FOR_TOOL + + +Classes +------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.llama.Llama2ConversationTemplate + lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: Llama2ConversationTemplate + + Bases: :py:obj:`lmflow.utils.conversation_template.base.ConversationTemplate` + + + .. py:method:: _encode(tokenizer: transformers.PreTrainedTokenizer, messages: List[Dict[str, str]], system: Optional[str] = None, tools: Optional[str] = None, **kwargs) -> Sequence[Tuple[List[int], List[int]]] + + +.. py:class:: Llama2ConversationTemplateForTool + + Bases: :py:obj:`Llama2ConversationTemplate` + + + .. py:method:: _encode(tokenizer: transformers.PreTrainedTokenizer, messages: List[Dict[str, str]], system: Optional[str] = None, tools: Optional[str] = None, **kwargs) -> Sequence[Tuple[List[int], List[int]]] + + +.. py:data:: LLAMA3_TEMPLATE + +.. py:data:: LLAMA3_TEMPLATE_FOR_TOOL + +.. py:data:: LLAMA2_TEMPLATE + +.. py:data:: LLAMA2_TEMPLATE_FOR_TOOL + diff --git a/_sources/autoapi/lmflow/utils/conversation_template/phi/index.rst.txt b/_sources/autoapi/lmflow/utils/conversation_template/phi/index.rst.txt new file mode 100644 index 000000000..727d06e43 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/conversation_template/phi/index.rst.txt @@ -0,0 +1,19 @@ +lmflow.utils.conversation_template.phi +====================================== + +.. py:module:: lmflow.utils.conversation_template.phi + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.phi.PHI3_TEMPLATE + + +Module Contents +--------------- + +.. py:data:: PHI3_TEMPLATE + diff --git a/_sources/autoapi/lmflow/utils/conversation_template/qwen/index.rst.txt b/_sources/autoapi/lmflow/utils/conversation_template/qwen/index.rst.txt new file mode 100644 index 000000000..bfe5c7348 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/conversation_template/qwen/index.rst.txt @@ -0,0 +1,22 @@ +lmflow.utils.conversation_template.qwen +======================================= + +.. py:module:: lmflow.utils.conversation_template.qwen + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE + lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE_FOR_TOOL + + +Module Contents +--------------- + +.. py:data:: QWEN2_TEMPLATE + +.. py:data:: QWEN2_TEMPLATE_FOR_TOOL + diff --git a/_sources/autoapi/lmflow/utils/conversation_template/yi/index.rst.txt b/_sources/autoapi/lmflow/utils/conversation_template/yi/index.rst.txt new file mode 100644 index 000000000..b088e0fe2 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/conversation_template/yi/index.rst.txt @@ -0,0 +1,19 @@ +lmflow.utils.conversation_template.yi +===================================== + +.. py:module:: lmflow.utils.conversation_template.yi + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.yi.YI1_5_TEMPLATE + + +Module Contents +--------------- + +.. py:data:: YI1_5_TEMPLATE + diff --git a/_sources/autoapi/lmflow/utils/conversation_template/zephyr/index.rst.txt b/_sources/autoapi/lmflow/utils/conversation_template/zephyr/index.rst.txt new file mode 100644 index 000000000..0f5534552 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/conversation_template/zephyr/index.rst.txt @@ -0,0 +1,38 @@ +lmflow.utils.conversation_template.zephyr +========================================= + +.. py:module:: lmflow.utils.conversation_template.zephyr + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.zephyr.logger + lmflow.utils.conversation_template.zephyr.ZEPHYR_TEMPLATE + + +Classes +------- + +.. autoapisummary:: + + lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:class:: ZephyrConversationTemplate + + Bases: :py:obj:`lmflow.utils.conversation_template.base.ConversationTemplate` + + + .. py:method:: _encode(tokenizer: transformers.PreTrainedTokenizer, messages: List[Dict[str, str]], system: Optional[str] = None, tools: Optional[str] = None, **kwargs) -> Sequence[Tuple[List[int], List[int]]] + + +.. py:data:: ZEPHYR_TEMPLATE + diff --git a/_sources/autoapi/lmflow/utils/data_utils/index.rst.txt b/_sources/autoapi/lmflow/utils/data_utils/index.rst.txt new file mode 100644 index 000000000..2a4489bff --- /dev/null +++ b/_sources/autoapi/lmflow/utils/data_utils/index.rst.txt @@ -0,0 +1,241 @@ +lmflow.utils.data_utils +======================= + +.. py:module:: lmflow.utils.data_utils + +.. autoapi-nested-parse:: + + The program includes several functions: setting a random seed, + loading data from a JSON file, batching data, and extracting answers from generated text. + + .. + !! processed by numpydoc !! + + +Classes +------- + +.. autoapisummary:: + + lmflow.utils.data_utils.VLLMInferenceResultWithInput + lmflow.utils.data_utils.RewardModelInferenceResultWithInput + + +Functions +--------- + +.. autoapisummary:: + + lmflow.utils.data_utils.set_random_seed + lmflow.utils.data_utils.load_data + lmflow.utils.data_utils.batchlize + lmflow.utils.data_utils.answer_extraction + lmflow.utils.data_utils.process_image_flag + + +Module Contents +--------------- + +.. py:function:: set_random_seed(seed: int) + + + Set the random seed for `random`, `numpy`, `torch`, `torch.cuda`. + + + :Parameters: + + **seed** : int + The default seed. + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:function:: load_data(file_name: str) + + + Load data with file name. + + + :Parameters: + + **file_name** : str. + The dataset file name. + + + + :Returns: + + **inputs** : list. + The input texts of the dataset. + + **outputs** : list. + The output texts file datasets. + + **len** : int. + The length of the dataset. + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:function:: batchlize(examples: list, batch_size: int, random_shuffle: bool) + + + Convert examples to a dataloader. + + + :Parameters: + + **examples** : list. + Data list. + + **batch_size** : int. + .. + + **random_shuffle** : bool + If true, the dataloader shuffle the training data. + + + + :Returns: + + dataloader: + Dataloader with batch generator. + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:function:: answer_extraction(response, answer_type=None) + + + Use this funtion to extract answers from generated text + + + :Parameters: + + **args** + Arguments. + + **response** : str + plain string response. + + + + :Returns: + + answer: + Decoded answer (such as A, B, C, D, E for mutiple-choice QA). + + + + + + + + + + + + .. + !! processed by numpydoc !! + +.. py:function:: process_image_flag(text, image_flag='<ImageHere>') + +.. py:class:: VLLMInferenceResultWithInput + + Bases: :py:obj:`TypedDict` + + + + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: input + :type: str + + + .. py:attribute:: output + :type: Union[List[str], List[List[int]]] + + +.. py:class:: RewardModelInferenceResultWithInput + + Bases: :py:obj:`TypedDict` + + + + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: input + :type: str + + + .. py:attribute:: output + :type: List[Dict[str, Union[str, float]]] + + diff --git a/_sources/autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.rst.txt b/_sources/autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.rst.txt new file mode 100644 index 000000000..090a98ef9 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.rst.txt @@ -0,0 +1,25 @@ +lmflow.utils.flash_attention.bloom_flash_attention +================================================== + +.. py:module:: lmflow.utils.flash_attention.bloom_flash_attention + + +Functions +--------- + +.. autoapisummary:: + + lmflow.utils.flash_attention.bloom_flash_attention.forward + lmflow.utils.flash_attention.bloom_flash_attention._prepare_attn_mask + lmflow.utils.flash_attention.bloom_flash_attention.replace_bloom_attn_with_flash_attn + + +Module Contents +--------------- + +.. py:function:: forward(self, hidden_states: torch.Tensor, residual: torch.Tensor, alibi: torch.Tensor, attention_mask: torch.Tensor, layer_past: Optional[Tuple[torch.Tensor, torch.Tensor]] = None, head_mask: Optional[torch.Tensor] = None, use_cache: bool = False, output_attentions: bool = False) + +.. py:function:: _prepare_attn_mask(self, attention_mask: torch.Tensor, input_shape: Tuple[int, int], past_key_values_length: int) -> torch.BoolTensor + +.. py:function:: replace_bloom_attn_with_flash_attn() + diff --git a/_sources/autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.rst.txt b/_sources/autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.rst.txt new file mode 100644 index 000000000..59785df48 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.rst.txt @@ -0,0 +1,25 @@ +lmflow.utils.flash_attention.gpt2_flash_attention +================================================= + +.. py:module:: lmflow.utils.flash_attention.gpt2_flash_attention + + +Functions +--------- + +.. autoapisummary:: + + lmflow.utils.flash_attention.gpt2_flash_attention.forward + lmflow.utils.flash_attention.gpt2_flash_attention._prepare_decoder_attention_mask + lmflow.utils.flash_attention.gpt2_flash_attention.replace_gpt2_attn_with_flash_attn + + +Module Contents +--------------- + +.. py:function:: forward(self, hidden_states: Optional[Tuple[torch.FloatTensor]], layer_past: Optional[Tuple[torch.Tensor]] = None, attention_mask: Optional[torch.FloatTensor] = None, head_mask: Optional[torch.FloatTensor] = None, encoder_hidden_states: Optional[torch.Tensor] = None, encoder_attention_mask: Optional[torch.FloatTensor] = None, use_cache: Optional[bool] = False, output_attentions: Optional[bool] = False) -> Tuple[Union[torch.Tensor, Tuple[torch.Tensor]], Ellipsis] + +.. py:function:: _prepare_decoder_attention_mask(self, attention_mask, input_shape, inputs_embeds, past_key_values_length) + +.. py:function:: replace_gpt2_attn_with_flash_attn() + diff --git a/_sources/autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.rst.txt b/_sources/autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.rst.txt new file mode 100644 index 000000000..e093d94c1 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.rst.txt @@ -0,0 +1,25 @@ +lmflow.utils.flash_attention.gpt_neo_flash_attention +==================================================== + +.. py:module:: lmflow.utils.flash_attention.gpt_neo_flash_attention + + +Functions +--------- + +.. autoapisummary:: + + lmflow.utils.flash_attention.gpt_neo_flash_attention._attn + lmflow.utils.flash_attention.gpt_neo_flash_attention.forward + lmflow.utils.flash_attention.gpt_neo_flash_attention.replace_gpt_neo_attn_with_flash_attn + + +Module Contents +--------------- + +.. py:function:: _attn(self, query, key, value, attention_mask=None, head_mask=None) + +.. py:function:: forward(self, hidden_states, attention_mask=None, layer_past=None, head_mask=None, use_cache=False, output_attentions=False) + +.. py:function:: replace_gpt_neo_attn_with_flash_attn() + diff --git a/_sources/autoapi/lmflow/utils/flash_attention/index.rst.txt b/_sources/autoapi/lmflow/utils/flash_attention/index.rst.txt new file mode 100644 index 000000000..8194e87ee --- /dev/null +++ b/_sources/autoapi/lmflow/utils/flash_attention/index.rst.txt @@ -0,0 +1,19 @@ +lmflow.utils.flash_attention +============================ + +.. py:module:: lmflow.utils.flash_attention + + +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + /autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index + /autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index + /autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index + /autoapi/lmflow/utils/flash_attention/llama_flash_attention/index + /autoapi/lmflow/utils/flash_attention/triton_flash_attention/index + + diff --git a/_sources/autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.rst.txt b/_sources/autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.rst.txt new file mode 100644 index 000000000..1f9392c98 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.rst.txt @@ -0,0 +1,25 @@ +lmflow.utils.flash_attention.llama_flash_attention +================================================== + +.. py:module:: lmflow.utils.flash_attention.llama_flash_attention + + +Functions +--------- + +.. autoapisummary:: + + lmflow.utils.flash_attention.llama_flash_attention.forward + lmflow.utils.flash_attention.llama_flash_attention._prepare_decoder_attention_mask + lmflow.utils.flash_attention.llama_flash_attention.replace_llama_attn_with_flash_attn + + +Module Contents +--------------- + +.. py:function:: forward(self, hidden_states: torch.Tensor, attention_mask: Optional[torch.Tensor] = None, position_ids: Optional[torch.LongTensor] = None, past_key_value: Optional[Tuple[torch.Tensor]] = None, output_attentions: bool = False, use_cache: bool = False) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]] + +.. py:function:: _prepare_decoder_attention_mask(self, attention_mask, input_shape, inputs_embeds, past_key_values_length) + +.. py:function:: replace_llama_attn_with_flash_attn() + diff --git a/_sources/autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.rst.txt b/_sources/autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.rst.txt new file mode 100644 index 000000000..62dcdc3ea --- /dev/null +++ b/_sources/autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.rst.txt @@ -0,0 +1,229 @@ +lmflow.utils.flash_attention.triton_flash_attention +=================================================== + +.. py:module:: lmflow.utils.flash_attention.triton_flash_attention + +.. autoapi-nested-parse:: + + *Experimental* implementation of FlashAttention in Triton. + Tested with triton==2.0.0.dev20221202. + Triton 2.0 has a new backend (MLIR) but seems like it doesn't yet work for head dimensions + other than 64: + https://github.com/openai/triton/blob/d376020f90002757eea3ea9475d4f7cfc2ec5ead/python/triton/ops/flash_attention.py#L207 + We'll update this implementation with the new Triton backend once this is fixed. + + We use the FlashAttention implementation from Phil Tillet a starting point. + https://github.com/openai/triton/blob/master/python/tutorials/06-fused-attention.py + + Changes: + - Implement both causal and non-causal attention. + - Implement both self-attention and cross-attention. + - Support arbitrary seqlens (not just multiples of 128), for both forward and backward. + - Support all head dimensions up to 128 (not just 16, 32, 64, 128), for both forward and backward. + - Support attention bias. + - Speed up the forward pass a bit, and only store the LSE instead of m and l. + - Make the backward for d=128 much faster by reducing register spilling. + - Optionally parallelize the backward pass across seqlen_k, to deal with the case of + small batch size * nheads. + + Caution: + - This is an *experimental* implementation. The forward pass should be quite robust but + I'm not 100% sure that the backward pass doesn't have race conditions (due to the Triton compiler). + - This implementation has only been tested on A100. + - If you plan to use headdim other than 64 and 128, you should test for race conditions + (due to the Triton compiler), as done in tests/test_flash_attn.py + "test_flash_attn_triton_race_condition". I've tested and fixed many race conditions + for different head dimensions (40, 48, 64, 128, 80, 88, 96), but I'm still not 100% confident + that there are none left for other head dimensions. + + Differences between this Triton version and the CUDA version: + - Triton version doesn't support dropout. + - Triton forward is generally faster than CUDA forward, while Triton backward is + generally slower than CUDA backward. Overall Triton forward + backward is slightly slower + than CUDA forward + backward. + - Triton version doesn't support different sequence lengths in a batch (i.e., RaggedTensor/NestedTensor). + - Triton version supports attention bias, while CUDA version doesn't. + + .. + !! processed by numpydoc !! + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.flash_attention.triton_flash_attention.flash_attn_qkvpacked_func + lmflow.utils.flash_attention.triton_flash_attention.flash_attn_kvpacked_func + lmflow.utils.flash_attention.triton_flash_attention.flash_attn_func + + +Classes +------- + +.. autoapisummary:: + + lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc + lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc + lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc + + +Functions +--------- + +.. autoapisummary:: + + lmflow.utils.flash_attention.triton_flash_attention._fwd_kernel + lmflow.utils.flash_attention.triton_flash_attention._bwd_preprocess_do_o_dot + lmflow.utils.flash_attention.triton_flash_attention._bwd_store_dk_dv + lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel_one_col_block + lmflow.utils.flash_attention.triton_flash_attention.init_to_zero + lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel + lmflow.utils.flash_attention.triton_flash_attention._flash_attn_forward + lmflow.utils.flash_attention.triton_flash_attention._flash_attn_backward + + +Module Contents +--------------- + +.. py:function:: _fwd_kernel(Q, K, V, Bias, Out, Lse, TMP, softmax_scale, stride_qb, stride_qh, stride_qm, stride_kb, stride_kh, stride_kn, stride_vb, stride_vh, stride_vn, stride_bb, stride_bh, stride_bm, stride_ob, stride_oh, stride_om, nheads, seqlen_q, seqlen_k, seqlen_q_rounded, headdim, CACHE_KEY_SEQLEN_Q, CACHE_KEY_SEQLEN_K, BIAS_TYPE: triton.language.constexpr, IS_CAUSAL: triton.language.constexpr, BLOCK_HEADDIM: triton.language.constexpr, EVEN_M: triton.language.constexpr, EVEN_N: triton.language.constexpr, EVEN_HEADDIM: triton.language.constexpr, BLOCK_M: triton.language.constexpr, BLOCK_N: triton.language.constexpr) + +.. py:function:: _bwd_preprocess_do_o_dot(Out, DO, Delta, stride_ob, stride_oh, stride_om, stride_dob, stride_doh, stride_dom, nheads, seqlen_q, seqlen_q_rounded, headdim, BLOCK_M: triton.language.constexpr, BLOCK_HEADDIM: triton.language.constexpr) + +.. py:function:: _bwd_store_dk_dv(dk_ptrs, dv_ptrs, dk, dv, offs_n, offs_d, seqlen_k, headdim, EVEN_M: triton.language.constexpr, EVEN_N: triton.language.constexpr, EVEN_HEADDIM: triton.language.constexpr) + +.. py:function:: _bwd_kernel_one_col_block(start_n, Q, K, V, Bias, DO, DQ, DK, DV, LSE, D, softmax_scale, stride_qm, stride_kn, stride_vn, stride_bm, stride_dom, stride_dqm, stride_dkn, stride_dvn, seqlen_q, seqlen_k, headdim, ATOMIC_ADD: triton.language.constexpr, BIAS_TYPE: triton.language.constexpr, IS_CAUSAL: triton.language.constexpr, BLOCK_HEADDIM: triton.language.constexpr, EVEN_M: triton.language.constexpr, EVEN_N: triton.language.constexpr, EVEN_HEADDIM: triton.language.constexpr, BLOCK_M: triton.language.constexpr, BLOCK_N: triton.language.constexpr) + +.. py:function:: init_to_zero(name) + +.. py:function:: _bwd_kernel(Q, K, V, Bias, DO, DQ, DK, DV, LSE, D, softmax_scale, stride_qb, stride_qh, stride_qm, stride_kb, stride_kh, stride_kn, stride_vb, stride_vh, stride_vn, stride_bb, stride_bh, stride_bm, stride_dob, stride_doh, stride_dom, stride_dqb, stride_dqh, stride_dqm, stride_dkb, stride_dkh, stride_dkn, stride_dvb, stride_dvh, stride_dvn, nheads, seqlen_q, seqlen_k, seqlen_q_rounded, headdim, CACHE_KEY_SEQLEN_Q, CACHE_KEY_SEQLEN_K, BIAS_TYPE: triton.language.constexpr, IS_CAUSAL: triton.language.constexpr, BLOCK_HEADDIM: triton.language.constexpr, SEQUENCE_PARALLEL: triton.language.constexpr, EVEN_M: triton.language.constexpr, EVEN_N: triton.language.constexpr, EVEN_HEADDIM: triton.language.constexpr, BLOCK_M: triton.language.constexpr, BLOCK_N: triton.language.constexpr) + +.. py:function:: _flash_attn_forward(q, k, v, bias=None, causal=False, softmax_scale=None) + +.. py:function:: _flash_attn_backward(do, q, k, v, o, lse, dq, dk, dv, bias=None, causal=False, softmax_scale=None) + +.. py:class:: FlashAttnQKVPackedFunc + + Bases: :py:obj:`torch.autograd.Function` + + + .. py:method:: forward(ctx, qkv, bias=None, causal=False, softmax_scale=None) + :staticmethod: + + + + qkv: (batch, seqlen, 3, nheads, headdim) + bias: optional, shape broadcastible to (batch, nheads, seqlen, seqlen). + For example, ALiBi mask for causal would have shape (1, nheads, 1, seqlen). + ALiBi mask for non-causal would have shape (1, nheads, seqlen, seqlen) + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: backward(ctx, do) + :staticmethod: + + + +.. py:data:: flash_attn_qkvpacked_func + +.. py:class:: FlashAttnKVPackedFunc + + Bases: :py:obj:`torch.autograd.Function` + + + .. py:method:: forward(ctx, q, kv, bias=None, causal=False, softmax_scale=None) + :staticmethod: + + + + q: (batch, seqlen_q, nheads, headdim) + kv: (batch, seqlen_k, 2, nheads, headdim) + bias: optional, shape broadcastible to (batch, nheads, seqlen_q, seqlen_k). + For example, ALiBi mask for causal would have shape (1, nheads, 1, seqlen_k). + ALiBi mask for non-causal would have shape (1, nheads, seqlen_q, seqlen_k) + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: backward(ctx, do) + :staticmethod: + + + +.. py:data:: flash_attn_kvpacked_func + +.. py:class:: FlashAttnFunc + + Bases: :py:obj:`torch.autograd.Function` + + + .. py:method:: forward(ctx, q, k, v, bias=None, causal=False, softmax_scale=None) + :staticmethod: + + + + q: (batch_size, seqlen_q, nheads, headdim) + k, v: (batch_size, seqlen_k, nheads, headdim) + bias: optional, shape broadcastible to (batch, nheads, seqlen_q, seqlen_k). + For example, ALiBi mask for causal would have shape (1, nheads, 1, seqlen_k). + ALiBi mask for non-causal would have shape (1, nheads, seqlen_q, seqlen_k) + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + + .. py:method:: backward(ctx, do) + :staticmethod: + + + +.. py:data:: flash_attn_func + diff --git a/_sources/autoapi/lmflow/utils/index.rst.txt b/_sources/autoapi/lmflow/utils/index.rst.txt new file mode 100644 index 000000000..da7015fe2 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/index.rst.txt @@ -0,0 +1,24 @@ +lmflow.utils +============ + +.. py:module:: lmflow.utils + + +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + /autoapi/lmflow/utils/common/index + /autoapi/lmflow/utils/constants/index + /autoapi/lmflow/utils/conversation_template/index + /autoapi/lmflow/utils/data_utils/index + /autoapi/lmflow/utils/flash_attention/index + /autoapi/lmflow/utils/llava_conversation_lib/index + /autoapi/lmflow/utils/model/index + /autoapi/lmflow/utils/multimodal/index + /autoapi/lmflow/utils/position_interpolation/index + /autoapi/lmflow/utils/versioning/index + + diff --git a/_sources/autoapi/lmflow/utils/llava_conversation_lib/index.rst.txt b/_sources/autoapi/lmflow/utils/llava_conversation_lib/index.rst.txt new file mode 100644 index 000000000..8253f9e45 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/llava_conversation_lib/index.rst.txt @@ -0,0 +1,187 @@ +lmflow.utils.llava_conversation_lib +=================================== + +.. py:module:: lmflow.utils.llava_conversation_lib + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.llava_conversation_lib.conv_vicuna_v0 + lmflow.utils.llava_conversation_lib.conv_vicuna_v1 + lmflow.utils.llava_conversation_lib.conv_llama_2 + lmflow.utils.llava_conversation_lib.conv_llava_llama_2 + lmflow.utils.llava_conversation_lib.conv_mpt + lmflow.utils.llava_conversation_lib.conv_llava_plain + lmflow.utils.llava_conversation_lib.conv_llava_v0 + lmflow.utils.llava_conversation_lib.conv_llava_v0_mmtag + lmflow.utils.llava_conversation_lib.conv_llava_v1 + lmflow.utils.llava_conversation_lib.conv_llava_v1_mmtag + lmflow.utils.llava_conversation_lib.default_conversation + lmflow.utils.llava_conversation_lib.conv_templates + + +Classes +------- + +.. autoapisummary:: + + lmflow.utils.llava_conversation_lib.SeparatorStyle + lmflow.utils.llava_conversation_lib.Conversation + + +Module Contents +--------------- + +.. py:class:: SeparatorStyle(*args, **kwds) + + Bases: :py:obj:`enum.Enum` + + + + Different separator style. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: SINGLE + + + .. py:attribute:: TWO + + + .. py:attribute:: MPT + + + .. py:attribute:: PLAIN + + + .. py:attribute:: LLAMA_2 + + +.. py:class:: Conversation + + + A class that keeps all conversation history. + + + + + + + + + + + + + + + + + .. + !! processed by numpydoc !! + + .. py:attribute:: system + :type: str + + + .. py:attribute:: roles + :type: List[str] + + + .. py:attribute:: messages + :type: List[List[str]] + + + .. py:attribute:: offset + :type: int + + + .. py:attribute:: sep_style + :type: SeparatorStyle + + + .. py:attribute:: sep + :type: str + :value: '###' + + + + .. py:attribute:: sep2 + :type: str + :value: None + + + + .. py:attribute:: version + :type: str + :value: 'Unknown' + + + + .. py:attribute:: skip_next + :type: bool + :value: False + + + + .. py:method:: get_prompt() + + + .. py:method:: append_message(role, message) + + + .. py:method:: get_images(return_pil=False) + + + .. py:method:: to_gradio_chatbot() + + + .. py:method:: copy() + + + .. py:method:: dict() + + +.. py:data:: conv_vicuna_v0 + +.. py:data:: conv_vicuna_v1 + +.. py:data:: conv_llama_2 + +.. py:data:: conv_llava_llama_2 + +.. py:data:: conv_mpt + +.. py:data:: conv_llava_plain + +.. py:data:: conv_llava_v0 + +.. py:data:: conv_llava_v0_mmtag + +.. py:data:: conv_llava_v1 + +.. py:data:: conv_llava_v1_mmtag + +.. py:data:: default_conversation + +.. py:data:: conv_templates + diff --git a/_sources/autoapi/lmflow/utils/model/index.rst.txt b/_sources/autoapi/lmflow/utils/model/index.rst.txt new file mode 100644 index 000000000..0f106ecf0 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/model/index.rst.txt @@ -0,0 +1,29 @@ +lmflow.utils.model +================== + +.. py:module:: lmflow.utils.model + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.model.logger + + +Functions +--------- + +.. autoapisummary:: + + lmflow.utils.model.check_homogeneity + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:function:: check_homogeneity(model_args_list: List[lmflow.args.ModelArguments]) -> bool + diff --git a/_sources/autoapi/lmflow/utils/multimodal/index.rst.txt b/_sources/autoapi/lmflow/utils/multimodal/index.rst.txt new file mode 100644 index 000000000..a700ab4dc --- /dev/null +++ b/_sources/autoapi/lmflow/utils/multimodal/index.rst.txt @@ -0,0 +1,25 @@ +lmflow.utils.multimodal +======================= + +.. py:module:: lmflow.utils.multimodal + + +Functions +--------- + +.. autoapisummary:: + + lmflow.utils.multimodal.update_custom_config + lmflow.utils.multimodal.load_llava_pretrain_model + lmflow.utils.multimodal.adapt_llava_model_to_lmflow_type + + +Module Contents +--------------- + +.. py:function:: update_custom_config(config, model_args) + +.. py:function:: load_llava_pretrain_model(model, checkpoint_path) + +.. py:function:: adapt_llava_model_to_lmflow_type(state_dict) + diff --git a/_sources/autoapi/lmflow/utils/position_interpolation/index.rst.txt b/_sources/autoapi/lmflow/utils/position_interpolation/index.rst.txt new file mode 100644 index 000000000..586547af6 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/position_interpolation/index.rst.txt @@ -0,0 +1,15 @@ +lmflow.utils.position_interpolation +=================================== + +.. py:module:: lmflow.utils.position_interpolation + + +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + /autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index + + diff --git a/_sources/autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.rst.txt b/_sources/autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.rst.txt new file mode 100644 index 000000000..60e8d61c8 --- /dev/null +++ b/_sources/autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.rst.txt @@ -0,0 +1,44 @@ +lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch +================================================================== + +.. py:module:: lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch + + +Classes +------- + +.. autoapisummary:: + + lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding + + +Functions +--------- + +.. autoapisummary:: + + lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.replace_llama_with_condense + + +Module Contents +--------------- + +.. py:class:: CondenseRotaryEmbedding(dim, pi_ratio, ntk_ratio, max_position_embeddings=2048, base=10000, device=None) + + Bases: :py:obj:`torch.nn.Module` + + + .. py:attribute:: ntk_ratio + + + .. py:attribute:: pi_ratio + + + .. py:attribute:: max_seq_len_cached + + + .. py:method:: forward(x, seq_len=None) + + +.. py:function:: replace_llama_with_condense(pi_ratio, ntk_ratio) + diff --git a/_sources/autoapi/lmflow/utils/versioning/index.rst.txt b/_sources/autoapi/lmflow/utils/versioning/index.rst.txt new file mode 100644 index 000000000..bc05d4efa --- /dev/null +++ b/_sources/autoapi/lmflow/utils/versioning/index.rst.txt @@ -0,0 +1,59 @@ +lmflow.utils.versioning +======================= + +.. py:module:: lmflow.utils.versioning + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.utils.versioning.logger + + +Functions +--------- + +.. autoapisummary:: + + lmflow.utils.versioning.get_python_version + lmflow.utils.versioning._is_package_available + lmflow.utils.versioning._is_packages_available + lmflow.utils.versioning.is_package_version_at_least + lmflow.utils.versioning.is_gradio_available + lmflow.utils.versioning.is_ray_available + lmflow.utils.versioning.is_vllm_available + lmflow.utils.versioning.is_flash_attn_available + lmflow.utils.versioning.is_flask_available + lmflow.utils.versioning.is_trl_available + lmflow.utils.versioning.is_multimodal_available + + +Module Contents +--------------- + +.. py:data:: logger + +.. py:function:: get_python_version() + +.. py:function:: _is_package_available(package_name: str, skippable: bool = False) + +.. py:function:: _is_packages_available(packages: Union[List[str], List[Tuple[str, bool]]]) + +.. py:function:: is_package_version_at_least(package_name, min_version) + +.. py:function:: is_gradio_available() + +.. py:function:: is_ray_available() + +.. py:function:: is_vllm_available() + +.. py:function:: is_flash_attn_available() + +.. py:function:: is_flask_available() + +.. py:function:: is_trl_available() + +.. py:function:: is_multimodal_available() + diff --git a/_sources/autoapi/lmflow/version/index.rst.txt b/_sources/autoapi/lmflow/version/index.rst.txt new file mode 100644 index 000000000..0da4c4154 --- /dev/null +++ b/_sources/autoapi/lmflow/version/index.rst.txt @@ -0,0 +1,21 @@ +lmflow.version +============== + +.. py:module:: lmflow.version + + +Attributes +---------- + +.. autoapisummary:: + + lmflow.version.__version__ + + +Module Contents +--------------- + +.. py:data:: __version__ + :value: '0.0.9' + + diff --git a/_sources/blogs/benchmark.md.txt b/_sources/blogs/benchmark.md.txt new file mode 100644 index 000000000..c09c74868 --- /dev/null +++ b/_sources/blogs/benchmark.md.txt @@ -0,0 +1,253 @@ +# LMFlow Benchmark: An Automatic Evaluation Framework for Open-Source LLMs + +May 9, 2023 + + +## Introduction + +Evaluation of a chat-style Large Language Model (LLM) has been a huge challenge since the breakthrough of ChatGPT. On the one hand, researchers and engineers need a reliable way to compare two models and decide which model to choose under a certain application scenario. On the other hand, they have to monitor the model performance during the training of an LLM to avoid performance issues such as forgetting. + +Recent work of Vicuna introduces comparison methods of human evaluation, a.k.a. Chatbot Arena. They also pioneered the evaluation method by invoking GPT-4 to compare the outputs of two models. However, those methods require expensive human labeling or GPT-4 API calls, which are neither scalable nor convenient for LLM development. + +In this article, we introduce LMFlow benchmark, a new benchmark which provides a cheap and easy-to-use evaluation framework that can help reflect different aspects of LLMs. We have open-sourced the dataset and the code as well, so that everyone in the LLM community can use those toolkits to evaluate, monitor or compare different LLMs. +## Metric +In our evaluation framework, Negative Log Likelihood (NLL) is used for evaluating LLM +![](../_static/nll.png) + + +which corresponds to the LLM model’s prediction probability over a corpus set given their contexts. If the corpus set itself indicates a certain type of LLM ability, such as multi-round conversation, instruction following, math problem solving, role-playing, then NLL on those corpora can provide quantitative metrics to reflect those abilities. + +![](../_static/benchmark-1.png) + +The key idea behind NLL, is that + +*Generation ability is positively correlated with prediction ability.* + +For instance, an LLM which performs well in essay writing should have no problem understanding and predicting a reference human essay, just like human chess masters performing well at memorizing an endgame on a chessboard. + +Besides NLL, another similar and commonly used metric in NLP is Perplexity (PPL): + +![](../_static/ppl.png) + +Nevertheless, perplexity intrinsically depends on the lengths of the tokenized sequences, which induces unfair comparison between models with different tokenizers. For example, if a model has a smaller vocabulary size, it inherently results in a longer tokenized sequence and a lower token-level perplexity. Thus in all our experiments, we use NLL instead of PPL. + +One huge advantage of NLL evaluation is that it does not require human involvement during the evaluation process. As long as the test reference corpus is given, one can evaluate different aspects of an LLM’s ability automatically. This makes the evaluation of LLM more accessible to researchers. + +Besides its convenience, NLL itself is also a good metric. In our experimental results in commonsense QA, we find that NLL is correlated with QA accuracy when comparing the different finetuned versions of a single model. + +**Table 1: Accuracy results in traditional commonsense QA benchmarks** + + +||winogrande|boolq|arc\_e|hellaswag|piqa|obqa|arc\_c|Average| +| :- | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | +|bloom-3b|58\.7|61\.6|59\.5|52\.7|70\.8|42\.2|30\.6|53\.7| +|bloom-7.1b|64\.4|62\.9|65\.0|59\.6|73\.6|35\.8|33\.4|56\.3| +|opt-6.9b|65\.2|66\.1|65\.6|67\.2|76\.5|37\.4|34\.6|58\.9| +|opt-13b|65\.0|65\.9|67\.1|69\.8|76\.9|39\.0|35\.7|59\.9| +|llama-7b|67\.9|73\.2|67\.3|73\.0|78\.3|42\.4|41\.4|62\.7| +|llama-13b|**70.0**|**68.5**|**74.5**|**76.2**|**79.1**|**42.2**|**44.5**|**65.0**| + +**Table 2: NLL results in corpus of commonsense QA benchmarks** + + +||winogrande|boolq|arc\_e|hellaswag|piqa|obqa|arc\_c|Average| +| :- | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | +|bloom-3b|86\.5|228|86|245|134|64\.5|101\.5|135\.1| +|bloom-7.1b|85|215|81\.5|237|130|62\.5|96|129\.5| +|opt-6.9b|81\.5|200|81\.5|224|125|61|96|124\.1| +|opt-13b|82|198|82\.5|220|125|61\.8|97|123\.7| +|llama-7b|79\.5|167|71\.5|214|121|58|85|113\.7| +|llama-13b|**79**|**153**|**70**|**207**|**119**|**57.3**|**83**|**109.7**| + + +**Figure 1: Correlation between NLL and accuracy on commonsense QA benchmarks** + +![](../_static/benchmark-2.png) + +In the above figure, one can find that QA accuracy is roughly correlated to NLL. Thus NLL is able to reflect the “magnitude” of prediction level difference between models. A huge gap in NLL normally entails a huge performance gap. + +In the following sections, we provide a comprehensive evaluation of currently available LLM models and summarize their performance. Due to page limits, we only demonstrate partial evaluation results in this article. The full results can be found here [LLM Comparison Sheet 0501](https://docs.google.com/spreadsheets/d/1JYh4_pxNzmNA9I0YM2epgRA7VXBIeIGS64gPJBg5NHA/edit?usp=sharing). One can also evaluate their own LLM models using our LMFlow evaluation toolkit (<https://optimalscale.github.io/LMFlow/examples/TASK_GUIDE.html>). + +We also introduce our own finetuned model Robin-7b-Chat and compare its performance with some other popular models. One may try our online demo LMFlow-Chat at <https://lmflow.com/>. + +## Chat Performance +The first aspect of LLM is chat performance, especially multi-round chat. Based on our experimental results, we have the following observations: + +1. *Without finetuning, foundation models do not perform well on chat.* +1. *After finetuning, foundation models can all obtain huge performance gain.* +1. *Our Robin-Chat-7b achieves comparable chat performance with Vicuna-13b.* + + + +**Table 3: NLL on multi-round chat datasets, Lower the better** + + +||En\_multi\_round\_chat|En\_singe\_round\_chat|Average| +| :- | :-: | :-: | :-: | +|Bloom-7.1b|188|213|200\.5| +|Bloom-7.1b-chat|164|181|172\.5| +|Llama-7b|163 |184 |173\.5| +|Vicuna-7b|155 |175 |165| +|Vicuna-13b|150 |170 |160| +|Robin-Chat-7b|**146** |**164** |**155**| + +We also evaluate Vicuna-13b and our Robin-Chat-7b model qualitatively via use cases. It turns out that Robin-Chat-7b’s performance is comparable to Vicuna-13b. For example, both models can effortlessly refer to the conversation context with only slight mistakes, where Vicuna-13b sometimes doesn’t count the item correctly, while Robin-Chat-7b introduces only Mexican foods for international cuisine recommendations and omits other choices. + + + + + + + + + + + + + + + + + + + + + + + + + + +**Table 4: Use cases of multi-round chat** + + +|Round|Question|Vicuna-13b|Robin-Chat-7b| +| :- | :-: | :-: | :-: | +|R1|Where is the capital of USA?|The capital of the United States is **Washington, D.C.** (District of Columbia). It is located on the east coast of the country, in the northern part of the state of Maryland. Washington, D.C. is named after George Washington, the first president of the United States. It is a federal district, which means that it is not part of any state, but is instead directly administered by the federal government. The city is home to many national landmarks, including the White House, the Capitol Building, and the Supreme Court. It is also home to many museums, monuments, and other cultural institutions.|The capital of the United States is **Washington, D.C.** (District of Columbia). It is located on the east coast of the USA, between the states of Maryland and Virginia.| +|R2|Can you introduce some popular food there?|<p>Washington, D.C. is a city with a diverse food scene, and there are many popular restaurants and cuisines to choose from. Some popular foods in Washington, D.C. include:</p><p>- American Classics: There are many restaurants in Washington, D.C. that serve classic American dishes such as hamburgers, hot dogs, and apple pie.</p><p>- Seafood: Washington, D.C. is located near the Chesapeake Bay, which is known for its fresh seafood. Many restaurants in the city serve dishes such as crab cakes, shrimp, and oysters.</p><p>- Ethnic Cuisine: Washington, D.C. has a diverse population, and there are many restaurants that serve food from different parts of the world. Some popular ethnic cuisines include Mexican, Chinese, Japanese, and Korean.</p><p>- Barbecue: Washington, D.C. is also known for its barbecue restaurants. Many of these restaurants serve pulled pork, ribs, and brisket.</p><p>- **Donuts**: Washington, D.C. is home to the famous "Donut Happy" which is a famous donut shop with a variety of flavors and toppings.</p><p>- Street Food: There are also many street food options in Washington, D.C. such as food trucks and stands that serve food such as falafel, kebabs, and tacos.</p><p>These are just a few examples of the many types of food that are available in Washington, D.C. There is something for everyone in this city when it comes to food.</p><p></p>|<p>Washington, D.C. is a diverse city with a wide range of cuisines to choose from. Here are some popular foods that you can try when you visit:</p><p>1. Soul food: This style of cuisine originated in the southern United States and is known for its bold flavors and hearty portions. Some popular soul food dishes in Washington, D.C. include fried chicken, collard greens, and macaroni and cheese.</p><p>2. Ethiopian cuisine: Ethiopian food is known for its spicy and flavorful dishes, and it is a popular choice in Washington, D.C. Some popular dishes include injera (a sourdough flatbread), wat (a spicy vegetable stew), and kitfo (a spicy meat dish).</p><p>3. Seafood: Washington, D.C. is located near the Chesapeake Bay and has easy access to fresh seafood. Some popular seafood dishes include crab cakes, oysters, and seafood pasta.</p><p>4. BBQ: Washington, D.C. has a thriving barbecue scene, with many restaurants serving up slow-cooked meats and sides. Some popular BBQ spots include Ben’s Chili Bowl, Pete’s Soul Vegetarian, and Smoke & Barrel.</p><p>5. **International cuisine:** Washington, D.C. is a hub for international diplomacy, and as a result, it has a diverse culinary scene with many restaurants serving dishes from around the world. Some popular international cuisines include Japanese, Indian, and **Mexican.**</p><p></p>| +|R3|Can you be more specific about the **fifth item** above?|<p>Sure, **the fifth item I mentioned, "Barbecue,"** refers to a style of cooking and food that originated in the southern United States. Barbecue is usually made with meat that is slow-cooked over an open flame or heated coals. The meat is often marinated and then sauced, and it is typically served with a variety of sides such as coleslaw, baked beans, and corn on the cob. Barbecue is a popular cuisine in Washington, D.C. and many of the restaurants serve pulled pork, ribs, and brisket. Some of the most popular barbecue restaurants in Washington, D.C. include:</p><p>- The Rib Pit</p><p>- The Smokehouse</p><p>- The BBQ Joint</p><p>- The Salt Line</p><p>- The Sovereign</p><p>These are just a few examples of the many barbecue restaurants in Washington, D.C. that offer delicious and flavorful barbecue dishes.</p>|<p>Sure! Here are some specific recommendations for **Mexican food** in Washington, D.C.:</p><p>1. Margarita’s - This popular Mexican restaurant in Adams Morgan has been serving up authentic Mexican cuisine for over 30 years. Some of their most popular dishes include their tacos al pastor (grilled marinated pork), enchiladas (meat or cheese filled tortillas), and chiles rellenos (stuffed peppers).</p><p>2. El Comal - This cozy little restaurant in the Columbia Heights neighborhood has been serving up traditional Mexican cuisine for over 20 years. Some of their most popular dishes include their mole (a rich, spicy sauce made from a blend of chiles, spices, and chocolate), tacos de carnitas (crispy pork tacos), and chiles rellenos de queso (cheese stuffed peppers).</p><p>3. Casa Oaxaca - This upscale Mexican restaurant in the Shaw neighborhood has a menu that features a wide range of traditional and modern dishes. Some of their most popular dishes include their ceviche (raw fish marinated in lime juice and spices), mole negro (a rich, dark mole sauce), and chiles en nogada (a spicy dish made with poblano peppers, walnuts, and honey).</p><p>4. Taco King - This popular taco chain has several locations in the Washington, D.C. area, including one in the Adams Morgan neighborhood. They offer a wide range of tacos, burritos, and other Mexican dishes at affordable prices. Some of their most popular items include their carne asada tacos, chicken tacos, and quesadillas.</p><p>5. Los Tacos No. 1 - This small, casual taco stand in the Columbia Heights neighborhood has a menu that features a wide range of tacos, burritos, and other Mexican dishes. Some of their most popular items include their adobada tacos (marinated pork tacos), al pastor tacos (grilled marinated pork tacos), and chicken tacos.</p>| + + +**Experiment Details** + +Our dataset comes from real conversation history between humans and ChatGPT. We collect 183 English conversations with a total of 447 rounds of chats, where the original conversation history is already multi-round. For single-round NLL evaluation, we break a multi-round conversation into multiple single-round text pairs. For example, with a conversation history + + Q1, A1 + + Q2, A2 + + Q3, A3 + +where Q stands for Question, A stands for answer, we can get three single-round examples: + + Context: Q1 + + Output: A1 + + Context: Q1, A1, Q2 + + Output: A2 + + Context: Q1, A1, Q2, A2, Q3 + + Ouptut: A3 + +## CommonSense Performance +Another important aspect of an LLM model is its common sense ability, where a model should acquire a certain level of factual knowledge and utilize them properly under different scenarios. Regarding this aspect of the ability, we found: + +1. *Finetuning on chat dataset results in commonsense degradation.* +1. *Our Robin-Chat-7b model still achieves a competitive performance.* + + + +**Table 5: Accuracy results in commonsense QA benchmarks** + + +||winogrand|boolq|arc\_easy|hellaswag|piqa|obqa|arc\_c|Average| +| :- | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | +|Bloom-7.1b|64\.4|62\.9|65\.0|59\.6|73\.6|35\.8|33\.4|56\.4| +|Bloom-7.1b-chat|60\.3|56\.8|61\.3|58\.7|72\.7|37\.8|38\.7|55\.2| +|Llama-7b|67.9 |73\.2 |67.3 |73.0 |78\.4 |42\.4 |41\.4|62\.7| +|Vicuna-7b|63.7 |77\.4 |63.1 |68.8 |76\.3 |39\.6 |38\.7|61\.1| +|Vicuna-13b|66.2 |79\.9 |64.7 |73.0 |77\.6 |41\.6 |40\.4|63\.3| +|Robin-Chat-7b|64.7 |75\.2 |69.8 |72.4 |76\.6 |39\.0 |42\.9|62\.9| + + + +**Table 6: NLL results in corpus of commonsense QA benchmarks** + + +||winogrand|boolq|arc\_easy|hellaswag|piqa|obqa|arc\_c|Average| +| :- | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | +|Bloom-7.1b|96.0|254|89|266|147|69|106\.5|146\.7| +|Bloom-7.1b-chat|85.0|215|81\.5|237|130|62\.5|96|129\.5| +|Llama-7b|79.5 |167 |71.5 |214 |121 |58 |85|113\.7| +|Vicuna-7b|97.0 |219 |89 |258 |151 |72 |105|141\.6| +|Vicuna-13b|95\.5 |207|88.5 |262 |149 |73 |105|140\.0| +|Robin-Chat-7b|89\.0 |200 |81 |240 |139 |65\.5 |96\.5|130\.1| + +It is surprising to find that finetuning actually leads to commonsense degradation. A more well-known consequence of this issue is hallucination, where models tend to give plausible but factually incorrect or irrelevant answers. One explanation of this phenomenon is that LLMs “forget” the pretrained knowledge during finetuning when attempting to fit the finetune dataset. + +As one can see from the table above, both Vicuna and Robin suffer from this commonsense degradation issue. However, Robin suffers less. We conjecture that this improvement is brought by finetuning with smaller-sized but higher-quality dataset. Vicuna uses sharegpt data with ~900MB size and was finetuned for 3 epochs, while Robin uses multiple sources of dataset with ~600MB size and was only finetuned for 2 epochs. This suggests that in the finetuning stage, data quality plays a critical role. + +This improvement gives Vicuna-13b a run for its money when competing with Robin. The following examples show that Robin-Chat-7b possesses a comparable level of commonsense when compared with Vicuna-13b. + +**Table 7: Use cases of commonsense QA** + + +|Question|Vicuna-13b|Robin-Chat-7b|Note| +| :- | :-: | :-: | :-: | +|<p>I go to a friend's home but the door is locked. However, I smell coal gas. Should I break the window?</p><p></p>|If you smell coal gas, it is important to get out of the house as quickly as possible and call the fire department or the gas company. Coal gas is a flammable gas that can be dangerous and even deadly if it is not properly ventilated. If the door is locked, you **should not break the window because it could cause a fire or explosion**. Instead, try to find another way to escape the house or call for help. If you cannot leave the house safely, try to stay calm and wait for help to arrive.|No, it is not recommended to break a window in this situation. **Breaking a window can be dangerous and can cause injury or damage to yourself or others**. Additionally, it is **illegal** to break a window to enter a property without permission. Instead, you should try to find another way to enter the home, such as by using a key or by calling the homeowner or a locksmith for assistance. If you are unable to enter the home, you should call the emergency services or the police for assistance. In the meantime, it is important to **avoid using any sources of heat**, such as a lighter or matches, as these can cause a gas leak or explosion. If you smell gas, you should evacuate the area immediately and call the emergency services or the gas company for assistance.|*Breaking the window helps the ventilation and will not cause a gas explosion directly. However, it is indeed illegal and may injure yourself when breaking the window.*| +|Can I bring my pet ferret to that beautiful pacific island of USA to attend ICML 2023?|I'm sorry, but I am **not aware of** the specific policies regarding pets at the ICML 2023 conference or the island you are referring to. It would be best to check with the conference organizers or the local authorities on the island to determine if ferrets are allowed and if there are any necessary procedures or requirements for bringing a pet to the conference.|<p>It is **not recommended** to bring a pet ferret to the United States, including to attend ICML 2023. Ferrets are not permitted as pets in many areas of the United States, and **it is illegal** to bring them into the country without proper documentation and licensing. Additionally, ferrets can **carry diseases** that are not common in humans but can be dangerous to people, such as toxoplasmosis and salmonellosis. It is important to prioritize the health and safety of yourself and others by not bringing a pet ferret to a crowded event like ICML 2023.</p><p></p>|*ICML 2023 will be held in Hawaii, where ferrets are strictly prohibited as pets because they are potential carriers of the rabies virus.*| + +**Experiment Details** + +Here, we make use of Eleuther AI’s LM evaluation harness repository (<https://github.com/EleutherAI/lm-evaluation-harness>) to get QA accuracy results. We also evaluate all models’ NLL metrics on their datasets, with their questions as contexts and answers as output sentences. + +## Instruction Following +The final aspect we evaluate is instruction following, where a model is expected to loyally obey the user’s instructions, given the instruction being ethically or legally appropriate. It turns out that, + +1. *Without finetuning, foundation models do not perform well on instruction following.* +1. *Finetuning on chat dataset helps improve the performance.* +1. *Our Robin-Chat is still comparable with Vicuna-13b.* + +**Table 8: NLL on instruction following chat datasets** + + +||gpt4\_en\_instruction| +| :- | :-: | +|Alpaca|222| +|Llama-7b|214 | +|Vicuna-7b|211 | +|Vicuna-13b|206 | +|Robin-Chat-7b|**180** | + +Following examples show that Robin-Chat-7b can generate similar responses on instruction following tasks when compared with Vicuna-13b. + +**Table 9: Uses cases of instruction following** + + +|Question|Vicuna-13b|Robin-Chat-7b| +| :- | :-: | :-: | +|Can you write quicksort?|<p>Yes, here is a simple implementation of the quicksort algorithm in Python:</p><p>def quicksort(arr):</p><p>` `if len(arr) <= 1:</p><p>` `return arr</p><p>` `pivot = arr[len(arr) // 2]</p><p>` `left = [x for x in arr if x < pivot]</p><p>` `middle = [x for x in arr if x == pivot]</p><p>` `right = [x for x in arr if x > pivot]</p><p>` `return quicksort(left) + middle + quicksort(right)</p><p></p><p>This implementation uses the middle element of the array as the pivot, and then partitions the array into three sub-arrays: one containing all elements that are less than the pivot, one containing all elements that are equal to the pivot, and one containing all elements that are greater than the pivot. It then recursively applies the quicksort algorithm to the left and right sub-arrays, and returns the concatenation of the sorted left sub-array, the unsorted middle sub-array, and the sorted right sub-array.</p><p>This implementation has a time complexity of O(n log n) due to the recursive calls, although it could potentially be faster in practice if the pivot is carefully chosen.</p><p></p>|<p>Sure, here is a simple implementation of the quicksort algorithm in Python:</p><p>def quicksort(arr):</p><p>` `if len(arr) <= 1:</p><p>` `return arr</p><p>` `pivot = arr[len(arr) // 2]</p><p>` `left = [x for x in arr if x < pivot]</p><p>` `middle = [x for x in arr if x == pivot]</p><p>` `right = [x for x in arr if x > pivot]</p><p>` `return quicksort(left) + middle + quicksort(right)</p><p></p><p>This implementation chooses the middle element of the array as the pivot, and then partitions the array into three parts: elements less than the pivot, elements equal to the pivot, and elements greater than the pivot. It then recursively applies the quicksort algorithm to the left and right subarrays, and concatenates the results with the middle subarray to produce the final sorted array.</p><p>Note that this implementation uses a single pass through the array, which is the most efficient way to sort an array using quicksort.</p>| +|Instruction: Find synonyms for the given word. You need to write down how the provided synonyms differ from the original word in terms of meaning, usage, etc. adversity|<p>Synonyms for "adversity" include:</p><p>- Difficulty</p><p>- Hardship</p><p>- Trouble</p><p>- Misfortune</p><p>- Adversity</p><p>- Difficulties</p><p>- Hard times</p><p>All of these words refer to challenging or unpleasant circumstances or situations. However, "adversity" specifically connotes a difficult or hostile situation that is caused by external factors, such as an enemy or a natural disaster. "Difficulty" and "hardship" can be caused by external or internal factors, and can refer to a wide range of challenges, from mild inconveniences to major setbacks. "Trouble" often connotes a specific type of difficulty or distress, such as financial trouble or legal trouble. "Misfortune" specifically refers to bad luck or ill fate, while "hard times" refers to a general period of economic or social distress.</p>|<p>1. Hardship</p><p>2. Struggle</p><p>3. Difficulty</p><p>4. Oppression</p><p>5. Trial</p><p>6. Affliction</p><p>7. Distress</p><p>8. Calamity</p><p>9. Tribulation</p><p>10. Hardship</p><p>Adversity refers to difficult or challenging circumstances or conditions. Hardship, struggle, difficulty, oppression, trial, affliction, distress, and calamity are all words that can be used to describe adversity, but they often imply a more specific or intense situation. For example, hardship can refer to a general difficulty or challenge, while struggle implies a more intense battle or conflict. Difficulty and oppression imply a more specific obstacle or injustice, while trial and affliction suggest a more specific test or suffering. Trial can also refer to a legal proceeding, while tribulation implies a more general time of suffering or persecution.</p>| + +**Experiment Details** + +In order to make evaluations for models’ instruction following ability, we collected GPT-4 instruction data from the project “Instruction Tuning with GPT-4”, which provides many instruction tuning data labeled by GPT-4. We sample 1,000 English data and manually filtered examples with the following issues, where 767 effective samples remain after the filtering: + +1. Long response with too many nonsense words +1. Incomplete input texts +1. Specific domains involving chemistry/biology, where most LLM models do not possess the knowledge and always fail + +## Conclusion +In this article, we introduce LMFlow’s evaluation framework, which uses NLL metric to reflect LLM models’ ability. NLL provides a good metric to evaluate different aspects of a LLM model. According to our evaluation results, Robin-7b achieves on-par performance when compared with Vicuna-13b. As our Robin-7b model is finetuned with different sources of dataset instead of sharegpt only, this shows that Vicuna can be further improved or surpassed with smaller-sized models and better dataset. + +The checkpoint of Robin-7b is now available for engineers and researchers to download and use (<https://github.com/OptimalScale/LMFlow#model-zoo>). Its effectiveness demonstrates that a multi-aspect evaluation is indeed essential to the development of LLMs. + +## References +Vicuna Chatbot Arena: <https://chat.lmsys.org/?arena> + +lm-evaluation-harness: <https://github.com/EleutherAI/lm-evaluation-harness> + +LMFlow: <https://github.com/OptimalScale/LMFlow> diff --git a/_sources/blogs/index.md.txt b/_sources/blogs/index.md.txt new file mode 100644 index 000000000..d71f731f2 --- /dev/null +++ b/_sources/blogs/index.md.txt @@ -0,0 +1,13 @@ +# Blogs + +## 2023 + + +```{toctree} +:maxdepth: 1 + +benchmark +``` + + + diff --git a/_sources/examples/DATASETS.md.txt b/_sources/examples/DATASETS.md.txt new file mode 100644 index 000000000..6d41e08cc --- /dev/null +++ b/_sources/examples/DATASETS.md.txt @@ -0,0 +1,385 @@ +# Dataset + +- [Dataset](#dataset) + - [Dataset Format in General](#dataset-format-in-general) + - [Supported Dataset and Detailed Formats](#supported-dataset-and-detailed-formats) + - [Conversation](#conversation) + - [Data Format](#data-format) + - [Conversation Template](#conversation-template) + - [Customize Conversation Template](#customize-conversation-template) + - [TextOnly](#textonly) + - [Text2Text](#text2text) + - [Paired Conversation](#paired-conversation) + +We provide several available datasets under `data`. You may download them all by running: +```sh +cd data && ./download.sh all && cd - +``` +You can replace `all` with a specific dataset name to only download that dataset (e.g. `./download.sh alpaca`). + +Customized datasets are strongly encouraged, since this way users can apply +their own prompt engineering techniques over various source datasets. As long +as the generated dataset following the format below, they can be accepted as +the input of our pipelines :hugs: + + +## Dataset Format in General + +To specify the input for model finetune, users can provide a list of `.json` +files under a specified dataset directory. For example, + +```sh +|- path_to_dataset + |- data_1.json + |- data_2.json + |- another_data.json + |- ... +``` + +For inference, we currently only support a single `.json` file. + +Each json file shall have the following format (three instances with four keys +for example), + +```json +{ + "type": "TYPE", + "instances": [ + { + "KEY_1": "VALUE_1.1", + "KEY_2": "VALUE_1.2", + "KEY_3": "VALUE_1.3", + "KEY_4": "VALUE_1.4", + }, + { + "KEY_1": "VALUE_2.1", + "KEY_2": "VALUE_2.2", + "KEY_3": "VALUE_2.3", + "KEY_4": "VALUE_2.4", + }, + { + "KEY_1": "VALUE_3.1", + "KEY_2": "VALUE_3.2", + "KEY_3": "VALUE_3.3", + "KEY_4": "VALUE_3.4", + }, + ] +} +``` + +where the `TYPE` indicates the dataset type and defines the set of keys +`{ KEY_1, KEY_2, ... }` and their corresponding interpretations. The list of +supported types are listed as follows. + +## Supported Dataset and Detailed Formats + +### Conversation + +#### Data Format + +Conversational data are commonly used in sft process. We currently support conversational data in ShareGPT format: + +````{dropdown} A conversation dataset +```json +{ + "type": "conversation", + "instances": [ + { + "conversation_id": "CONVERSATION_ID", + "system": "SYSTEM_PROPMT", + "tools": ["TOOL_DESCRIPTION_1","TOOL_DESCRIPTION_2","TOOL_DESCRIPTION_X"], + "messages": [ + { + "role": "user", + "content": "USER_INPUT_1" + }, + { + "role": "assistant", + "content": "ASSISTANT_RESPONSE_1" + }, + { + "role": "user", + "content": "USER_INPUT_2" + }, + { + "role": "assistant", + "content": "ASSISTANT_RESPONSE_2" + } + ] + }, + { + "conversation_id": "CONVERSATION_ID", + "system": "SYSTEM_PROPMT", + "tools": ["TOOL_DESCRIPTION_1"], + "messages": [ + { + "role": "user", + "content": "USER_INPUT_1" + }, + { + "role": "assistant", + "content": "ASSISTANT_RESPONSE_1" + } + ] + } + ] +} +``` +```` +Data types: +- `conversation_id`: `Optional[Any]`. An identifier for the conversation. `conversation_id` is only for convience of tracking the conversation and will not be used in the pipeline. +- `system`: `Optional[string]`. A system prompt that is used to start the conversation. +- `tools`: `Optional[List[string]]`. A list of tools that are used in the conversation. +- `messages`: `List[Dict]`. A list of messages in the conversation. Each message contains the following fields: + - `role`: `string`. The role of the message. It can be either `user` or `assistant`. + - `content`: `string`. The content of the message. + +> We are working on supporting customized message keys and role names. Please stay tuned. + +Tips: +- Please make sure the messages are: + 1. Start with an user message. + 2. In the correct order. The pipeline will not check the order of the messages. + 3. In pairs of user and assistant (i.e., the length of the messages should be even). If the conversation ends with the user, the pipeline will trim the last user message. + 4. Make sure the `content`s are not empty. If the `content` is empty, the pipeline will add a space to it. + +#### Conversation Template + +Conversations should be formatted before feeding into the model. As of now, we've preset the conversation template for following models: + +| Template Name | Filled Example | Detailed Template | +| ------------- | -------------- | ----------------- | +| `chatglm3` | `[gMASK]sop<\|system\|>`<br>` You are a chatbot developed by LMFlow team.<\|user\|>`<br>` Who are you?<\|assistant\|>`<br>` I am a chatbot developed by LMFlow team.<\|user\|>`<br>` How old are you?<\|assistant\|>`<br>` I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.` | [Link](./supported_conversation_template.md#chatglm3) | +| `chatml` | `<\|im_start\|>system`<br>`You are a chatbot developed by LMFlow team.<\|im_end\|>`<br>`<\|im_start\|>user`<br>`Who are you?<\|im_end\|>`<br>`<\|im_start\|>assistant`<br>`I am a chatbot developed by LMFlow team.<\|im_end\|>`<br>`<\|im_start\|>user`<br>`How old are you?<\|im_end\|>`<br>`<\|im_start\|>assistant`<br>`I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<\|im_end\|>`<br> | [Link](./supported_conversation_template.md#chatml) | +| `deepseek` | `<|begin▁of▁sentence|>You are a chatbot developed by LMFlow team.`<br><br>`User: Who are you?`<br><br>`Assistant: I am a chatbot developed by LMFlow team.<|end▁of▁sentence|>User: How old are you?`<br><br>`Assistant: I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<|end▁of▁sentence|>` | [Link](./supported_conversation_template.md#deepseek) | +| `gemma` | `<bos>You are a chatbot developed by LMFlow team.<start_of_turn>user`<br>`Who are you?<end_of_turn>`<br>`<start_of_turn>model`<br>`I am a chatbot developed by LMFlow team.<end_of_turn>`<br>`<start_of_turn>user`<br>`How old are you?<end_of_turn>`<br>`<start_of_turn>model`<br>`I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<end_of_turn>`<br> | [Link](./supported_conversation_template.md#gemma) | +| `hymba` | `<extra_id_0>System`<br>`You are a chatbot developed by LMFlow team.`<br>`<tool> {"name": "generate_qrcode", "description": "Generate a QR code for a given text", "parameters": {"type": "object", "properties": {"text": {"type": "string", "description": "The text to encode in the QR code"}}, "required": ["text"]}} </tool>`<br><br>`<extra_id_1>User`<br>`Who are you?`<br>`<extra_id_1>Assistant`<br>`I am a chatbot developed by LMFlow team.`<br>`<extra_id_1>User`<br>`How old are you?`<br>`<extra_id_1>Assistant`<br>`I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.</s>` | [Link](./supported_conversation_template.md#hymba) | +| `internlm2` | `<s><\|im_start\|>system`<br>`You are a chatbot developed by LMFlow team.<\|im_end\|>`<br>`<\|im_start\|>user`<br>`Who are you?<\|im_end\|>`<br>`<\|im_start\|>assistant`<br>`I am a chatbot developed by LMFlow team.<\|im_end\|>`<br>`<\|im_start\|>user`<br>`How old are you?<\|im_end\|>`<br>`<\|im_start\|>assistant`<br>`I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<\|im_end\|>`<br> | [Link](./supported_conversation_template.md#internlm2) | +| `llama3` | `<\|begin_of_text\|><\|start_header_id\|>system<\|end_header_id\|>`<br><br>`You are a chatbot developed by LMFlow team.<\|eot_id\|><\|start_header_id\|>user<\|end_header_id\|>`<br><br>`Who are you?<\|eot_id\|><\|start_header_id\|>assistant<\|end_header_id\|>`<br><br>`I am a chatbot developed by LMFlow team.<\|eot_id\|><\|start_header_id\|>user<\|end_header_id\|>`<br><br>`How old are you?<\|eot_id\|><\|start_header_id\|>assistant<\|end_header_id\|>`<br><br>`I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<\|eot_id\|>` | [Link](./supported_conversation_template.md#llama-3) | +| `llama2` | `<s>[INST] <<SYS>>`<br>`You are a chatbot developed by LMFlow team.`<br>`<</SYS>>`<br><br>`Who are you? [/INST] I am a chatbot developed by LMFlow team.</s><s>[INST] How old are you? [/INST] I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.</s>` | [Link](./supported_conversation_template.md#llama-2) | +| `phi3` | `<s><\|system\|>`<br>`You are a chatbot developed by LMFlow team.<\|end\|>`<br>`<\|user\|>`<br>`Who are you?<\|end\|>`<br>`<\|assistant\|>`<br>`I am a chatbot developed by LMFlow team.<\|end\|>`<br>`<\|user\|>`<br>`How old are you?<\|end\|>`<br>`<\|assistant\|>`<br>`I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<\|end\|>`<br>`<\|endoftext\|>` | [Link](./supported_conversation_template.md#phi-3) | +| `qwen2` | `<\|im_start\|>system`<br>`You are a chatbot developed by LMFlow team.<\|im_end\|>`<br>`<\|im_start\|>user`<br>`Who are you?<\|im_end\|>`<br>`<\|im_start\|>assistant`<br>`I am a chatbot developed by LMFlow team.<\|im_end\|>`<br>`<\|im_start\|>user`<br>`How old are you?<\|im_end\|>`<br>`<\|im_start\|>assistant`<br>`I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<\|im_end\|>`<br> | [Link](./supported_conversation_template.md#qwen-2) | +| `yi` | Same as `chatml` | [Link](./supported_conversation_template.md#yi) | +| `yi1_5`| `You are a chatbot developed by LMFlow team.<\|im_start\|>user`<br>`Who are you?<\|im_end\|>`<br>`<\|im_start\|>assistant`<br>`I am a chatbot developed by LMFlow team.<\|im_end\|>`<br>`<\|im_start\|>user`<br>`How old are you?<\|im_end\|>`<br>`<\|im_start\|>assistant`<br>`I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<\|im_end\|>`<br> | [Link](./supported_conversation_template.md#yi-15) | +| `zephyr` | `<\|system\|>`<br>`You are a chatbot developed by LMFlow team.</s>`<br>`<\|user\|>`<br>`Who are you?</s>`<br>`<\|assistant\|>`<br>`I am a chatbot developed by LMFlow team.</s>`<br>`<\|user\|>`<br>`How old are you?</s>`<br>`<\|assistant\|>`<br>`I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.</s>`<br> | [Link](./supported_conversation_template.md#zephyr) | + +Passing the template name to the `--conversation_template` argument to apply the corresponding conversation template: +```sh +# scripts/run_finetune.sh +# ... +deepspeed ${deepspeed_args} \ + examples/finetune.py \ + --model_name_or_path meta-llama/Llama-2-7b-chat-hf \ + --dataset_path ${dataset_path} \ + --conversation_template llama2 \ +# ... +``` + +`````{admonition} Formatted Dataset +:class: info + +For dataset that system prompts, tool prompts and templates are already applied (like the one below), user can run the finetune shell by passing `empty` or `empty_no_special_tokens` to the `--conversation_template` argument. `empty` template will add a bos token to the beginning of every round of conversation as well as a eos token to the end of every round of conversation. `empty_no_special_tokens` will not add any special tokens to the conversation, just concatenates the user and assistant messages. +````{dropdown} A formatted dataset +```json +{ + "type": "conversation", + "instances": [ + { + "messages": [ + { + "role": "user", + "content": "[INST] <<SYS>>\nYou are a helpful assistant.\n<</SYS>>\n\nHello! [/INST]" + }, + { + "role": "assistant", + "content": "Hi, how are you?" + }, + { + "role": "user", + "content": "[INST] Good. [/INST]" + }, + { + "role": "assistant", + "content": "Glad to hear that." + } + ] + }, + { + "messages": [ + { + "role": "user", + "content": "[INST] <<SYS>>\nYou are a helpful assistant.\n<</SYS>>\n\nWhat's the weather like now? [/INST]" + }, + { + "role": "assistant", + "content": "I'm sorry for any confusion, but as an AI, I don't have access to real-time data such as current weather conditions." + } + ] + } + ] +} +``` +```` +````` + +#### Customize Conversation Template + +Please refer to the [Customize Conversation Template](./customize_conversation_template.md) for more details. + + +### TextOnly + +This is the most common dataset type, which only contains raw texts in each +sample. This type of dataset can be used as the training set for text decoder +models, or the input of decoder models / encoder-decoder models. Its format is +as follows (three instances for example), + +````{dropdown} A textonly dataset +```json +{ + "type": "text_only", + "instances": [ + { "text": "SAMPLE_TEXT_1" }, + { "text": "SAMPLE_TEXT_2" }, + { "text": "SAMPLE_TEXT_3" }, + ] +} +``` +```` + +For example, `data/example_dataset/train/train_50.json` has the aboved format. + + +### Text2Text + +This is the dataset type mostly used for inferencing, which contains a pair of +texts in each sample. This type of dataset can be used as the training set for +text encoder-decoder models, or question-answer pair for evaluating model +inferences. Its format is as follows (three instances for example): + +````{dropdown} A text2text dataset +```json +{ + "type": "text2text", + "instances": [ + { + "input": "SAMPLE_INPUT_1", + "output": "SAMPLE_OUTPUT_1", + }, + { + "input": "SAMPLE_INPUT_2", + "output": "SAMPLE_OUTPUT_2", + }, + { + "input": "SAMPLE_INPUT_3", + "output": "SAMPLE_OUTPUT_3", + }, + ] +} +``` +```` + +For example, `data/example_dataset/test/test_13.json` has the aboved format. + + +### Paired Conversation + +```{admonition} **Work in Progress** +:class: info + +We are working on paired conversation dataset and will update it soon. +``` + +This type of dataset are commonly used for alignment such as [reward modeling](https://arxiv.org/abs/2203.02155), +[Direct Preference Optimization (DPO)](https://arxiv.org/abs/2305.18290), etc. For requirements of the conversations, +please refer to [conversation data](#conversation). + +````{dropdown} A paired conversation dataset +```json +{ + "type": "paired_conversation", + "instances": [ + { + "chosen": { + "conversation_id": "CONVERSATION_ID", + "system": "SYSTEM_PROPMT", + "tools": ["TOOL_DESCRIPTION_1","TOOL_DESCRIPTION_2","TOOL_DESCRIPTION_3"], + "messages": [ + { + "role": "user", + "content": "USER_INPUT_1" + }, + { + "role": "assistant", + "content": "ASSISTANT_RESPONSE_1_GOOD" + }, + { + "role": "user", + "content": "USER_INPUT_2" + }, + { + "role": "assistant", + "content": "ASSISTANT_RESPONSE_2_GOOD" + } + ] + }, + "rejected": { + "conversation_id": "CONVERSATION_ID", + "system": "SYSTEM_PROPMT", + "tools": ["TOOL_DESCRIPTION_1","TOOL_DESCRIPTION_2","TOOL_DESCRIPTION_3"], + "messages": [ + { + "role": "user", + "content": "USER_INPUT_1" + }, + { + "role": "assistant", + "content": "ASSISTANT_RESPONSE_1_BAD" + }, + { + "role": "user", + "content": "USER_INPUT_2" + }, + { + "role": "assistant", + "content": "ASSISTANT_RESPONSE_2_BAD" + } + ] + } + }, + { + "chosen": { + "conversation_id": "CONVERSATION_ID", + "system": "SYSTEM_PROPMT", + "tools": ["TOOL_DESCRIPTION_1"], + "messages": [ + { + "role": "user", + "content": "USER_INPUT_1" + }, + { + "role": "assistant", + "content": "ASSISTANT_RESPONSE_1_GOOD" + } + ] + }, + "rejected": { + "conversation_id": "CONVERSATION_ID", + "system": "SYSTEM_PROPMT", + "tools": ["TOOL_DESCRIPTION_1"], + "messages": [ + { + "role": "user", + "content": "USER_INPUT_1" + }, + { + "role": "assistant", + "content": "ASSISTANT_RESPONSE_1_BAD" + } + ] + } + } + ] +} +``` +```` \ No newline at end of file diff --git a/_sources/examples/TASK_GUIDE.md.txt b/_sources/examples/TASK_GUIDE.md.txt new file mode 100644 index 000000000..afbfd3ca8 --- /dev/null +++ b/_sources/examples/TASK_GUIDE.md.txt @@ -0,0 +1,132 @@ +# LMFlow Benchmark Guide + +We support two ways to add evaluation settings in our repo, `NLL Task Setting` and `LM-Evaluation Task Setting`. Below are the details of them: + +# 1. NLL Task Setting +Users can easily create new tasks and evaluate their datasets on +the provide `nll (Negative Log Likelihood)` metric. + +## Setup + +Fork the main repo, clone it, and create a new branch with the name of +your task, and install the following: + +```bash +# After forking... +git clone https://github.com/<YOUR-USERNAME>/LMFlow.git +cd LMFlow +git checkout -b <TASK-NAME> +conda create -n lmflow python=3.9 -y +conda activate lmflow +conda install mpi4py +pip install -e . +``` +## Create Your Task Dataset File +We provide several available datasets under `data` after running +```sh +cd data && ./download.sh && cd - +``` + +You can refer to some given evaluation dataset files and create your own. +Also, you may refer to our guide on +[DATASET](https://optimalscale.github.io/LMFlow/examples/DATASETS.html). + +In this step, you will need to decide your answer type like `text2text` +or `text_only` (Notice that the current `nll` implementation only supports these +two answer types). We will note the chosen answer type as `<ANSWER_TYPE>`. + +After preparing your own `DATASET` file, you can put it under `data` dir +and make a `TASK` dir. + +```bash +mkdir <TASK> +mv <DATASET> <TASK> +``` + +## Task Registration + +Note the path of your dataset, `data/<TASK>/<DATASET>`. + +Open the file `examples/benchmarking.py`, add your task's info into +`LOCAL_DATSET_GROUP_MAP`, `LOCAL_DATSET_MAP`, `LOCAL_DATSET_ANSWERTYPE_MAP` + +In `LOCAL_DATSET_MAP`, you will need to specify your `DATASET` files' path: + +```python +LOCAL_DATSET_MAP ={ + "...":"...", + "<TASK>":"data/<TASK>/<DATASET>", +} +``` + +In `LOCAL_DATSET_ANSWERTYPE_MAP`, you will need to specify your task's +`<ANSWER_TYPE>`: + +```python +LOCAL_DATSET_ANSWERTYPE_MAP ={ + "...":"...", + "<TASK>":"<ANSWER_TYPE>, +} +``` + +If you only have one task, you can add key-value pair like `"<TASK>":"<TASK>"` +in `LOCAL_DATSET_GROUP_MAP`: +```python +LOCAL_DATSET_GROUP_MAP ={ + "...":"...", + "<TASK>":"<TASK>", +} +``` + + +If you want to combine several tasks, you may first specify a +combination name `<TASK_COMBINATION>` and add key-value pair like +`"<TASK_COMBINATION>":"<TASK_1>,<TASK_2>,.."`in `LOCAL_DATSET_GROUP_MAP`. + +Remember to separate TASK by `,`: +```python +LOCAL_DATSET_GROUP_MAP ={ + "...":"...", + "<TASK_COMBINATION>":"<TASK_1>,<TASK_2>,..", +} +``` + +After finishing changing these items, you can run your own `<TASK>` like: + +```bash +deepspeed examples/benchmarking.py \ + --answer_type <ANSWER_TYPE> \ + --use_ram_optimized_load False \ + --model_name_or_path ${model_name} \ + --dataset_name data/<TASK>/<DATASET>\ + --deepspeed examples/ds_config.json \ + --metric nll \ + --prompt_structure "###Human: {input}###Assistant:" \ + | tee ${log_dir}/train.log \ + 2> ${log_dir}/train.err +``` + +# 2. LM-Evaluation Task Setting + +We integrate [EleutherAI/lm-evaluation-harness](https://github.com/EleutherAI/lm-evaluation-harness) into +`benchamrk.py` by directly executing the evaluate commands. Users +can also use their evaluation by simply changing two items in +`<LM_EVAL_DATASET_MAP>` of `examples/benchmarking.py`. + +Please refer to Eleuther's +[task-table](https://github.com/EleutherAI/lm-evaluation-harness/blob/master/docs/task_table.md) +to get exact `<TASK>` name. + +Similarly, you can combine several tasks, you may first specify a +combination name `<TASK_COMBINATION>` and add key-value pair like +`"<TASK_COMBINATION>":"<TASK_1>,<TASK_2>,.."`in `LM_EVAL_DATASET_MAP`. + +Also, remember to separate TASK by `,`: + +```python +LM_EVAL_DATASET_MAP ={ + "...":"...", + "<TASK_COMBINATION>":"<TASK_1>,<TASK_2>,..", +} +``` + diff --git a/_sources/examples/checkpoints.md.txt b/_sources/examples/checkpoints.md.txt new file mode 100644 index 000000000..4c36eac49 --- /dev/null +++ b/_sources/examples/checkpoints.md.txt @@ -0,0 +1,31 @@ +# Checkpoints + +In general, you can directly load from checkpoints by using `--model_name_or_path`. However, the LLaMA case is slightly different due to the copyright issue. + + +## LLaMA Checkpoint + +1. First, you need to get the access of LLaMA model from [facebookresearch/llama](https://github.com/facebookresearch/llama). Download the official checkpoints and save them into `${llama-path}`. + +2. Second, convert the official checkpoints `${llama-path}` to HuggingFace supported checkpoints `${llama-hf-path}` by running + + `python ./scripts/convert_llama_weights_to_hf.py --input_dir ${llama-path} --model_size 7B --output_dir ${llama-hf-path}/llama-7b-hf` + +3. Then you are good to go by setting the checkpoint path to `${llama-hf-path}/llama-7b-hf`. Enjoy it! + +4. (optional) Now you have the original llama-7b-hf pretrained model. With +```sh +cd output_models && ./download.sh all && cd - +``` +You can obtain the model difference finetuned by ours. By a way similar to `./scripts/run_evaluation_with_lora.sh`, +```sh +CUDA_VISIBLE_DEVICES=0 \ + deepspeed examples/evaluate.py \ + --answer_type text \ + --model_name_or_path ${llama-hf-path}/llama-7b-hf \ + --lora_model_path output_models/${llama-model-diff-path} \ + --dataset_path data/alpaca/test \ + --prompt_structure "Input: {input}" \ + --deepspeed examples/ds_config.json +``` +You can now evaluate with the finetuned llama model. \ No newline at end of file diff --git a/_sources/examples/customize_conversation_template.md.txt b/_sources/examples/customize_conversation_template.md.txt new file mode 100644 index 000000000..a129f0f3f --- /dev/null +++ b/_sources/examples/customize_conversation_template.md.txt @@ -0,0 +1,115 @@ +# Customize Conversation Template + +> For beginners: Why template? +> Almost all LLMs today do a simple job - predict the next "word". To make the interaction between user and model smoother, developers use tricks: they add special "words" to the input text (at back-end, thus invisible to the user when using services like ChatGPT) to "tell" the model what user had said before, and ask the model to respond like an assistant. These "hidden words" are called "template". + +We provide the flexibility to customize the conversation template. You can customize your own conversation template by following the steps below: + +### 1. Decompose your conversations +Say you want to make the conversations between user and assistant look like: + +``` +<bos>System: +You are a chatbot developed by LMFlow team. + +User: +Who are you? + +Assistant: +I am a chatbot developed by LMFlow team.<eos> + +User: +How old are you? + +Assistant: +I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<eos> +``` + +It is easy to abstract the format for each message: +- System message: `System:\n{{content}}\n\n` +- User message: `User:\n{{content}}\n\n` +- Assistant message: `Assistant:\n{{content}}\n\n<eos>` + +Also, we have a bos token at the beginning of the conversation session. + +### 2. Choose proper `Formatter` +Recall the requirements for a conversation dataset: +> - `system`: `Optional[string]`. +> - `tools`: `Optional[List[string]]`. +> - `messages`: `List[Dict]`. +> - `role`: `string`. +> - `content`: `string`. + +System message, user message, and assistant message are strings thus we can use `StringFormatter` for them. + +### 3. Build the template +All preset templates are located at `src/lmflow/utils/conversation_template`. + +Within the template file, define your own template like: + +```python +from .base import StringFormatter, TemplateComponent, ConversationTemplate + + +YOUR_TEMPLATE = ConversationTemplate( + template_name='your_template_name', + user_formatter=StringFormatter( + template=[ + TemplateComponent(type='string', content='User:\n{{content}}\n\n') + ] + ), + assistant_formatter=StringFormatter( + template=[ + TemplateComponent(type='string', content='Assistant:\n{{content}}\n\n'), + TemplateComponent(type='token', content='eos_token') # this will add the eos token at the end of every assistant message + # please refer to the docstring of the `TemplateComponent` class to + # see the difference between different types of components. + ] + ), + system_formatter=StringFormatter( + template=[ + TemplateComponent(type='string', content='System:\n{{content}}\n\n') + ] + ) + # For models that has ONLY ONE bos token at the beginning of + # a conversation session (not a conversation pair), user can + # specify a special starter to add that starter to the very + # beginning of the conversation session. + # eg: + # llama-2: <s> and </s> at every pair of conversation + # v.s. + # llama-3: <|begin_of_text|> only at the beginning of a session + special_starter=TemplateComponent(type='token', content='bos_token'), + + # Similar to the special starter... (just for illustration, commented out + # since it is not necessary for our purposed template above) + # special_stopper=TemplateComponent(type='token', content='eos_token') +) +``` + +Feel free to create your own template by inheriting the `ConversationTemplate` class. Llama-2 v.s. llama-3 would be a good examples to refer to. + +### 4. Register your template +After defining your own template, you need to register it in the `src/lmflow/utils/conversation_template/__init__.py` file. + +```python +# ... +from .your_template_file import YOUR_TEMPLATE + + +PRESET_TEMPLATES = { + #... + 'your_template_name': YOUR_TEMPLATE, +} +``` + +### 5. Use your template +You are all set! Specify the template name in, for example, your finetune script: + +```bash +./scripts/run_finetune.sh \ + --model_name_or_path path_to_your_model \ + --dataset_path your_conversation_dataset \ + --conversation_template your_template_name \ + --output_model_path output_models/your_model +``` \ No newline at end of file diff --git a/_sources/examples/finetuning.md.txt b/_sources/examples/finetuning.md.txt new file mode 100644 index 000000000..821a9a594 --- /dev/null +++ b/_sources/examples/finetuning.md.txt @@ -0,0 +1,101 @@ +# Finetuning + +## Full Parameters + +Full training updates all the parameters to finetune a language model. +Here is an example to finetune a GPT-2 base model. + +```sh +cd data && ./download.sh alpaca && cd - + +./scripts/run_finetune.sh \ + --model_name_or_path gpt2 \ + --dataset_path data/alpaca/train_conversation \ + --output_model_path output_models/finetuned_gpt2 +``` + +```{admonition} Conversation Template +:class: tip + +For conversation dataset, specify a conversation template for better performance by adding `--conversation_template` to the command. +``` + +````{dropdown} Llama-3-8B conversation dataset example +```sh +cd data && ./download.sh alpaca && cd - + +./scripts/run_finetune.sh \ + --model_name_or_path meta-llama/Meta-Llama-3-8B \ + --dataset_path data/alpaca/train_conversation \ + --conversation_template llama3 \ + --output_model_path output_models/finetuned_llama3_8b +``` +```` + + +## Layerwise Importance Sampled AdamW (LISA) + +[LISA](https://arxiv.org/abs/2403.17919) is a memory-efficient finetuning algorithm that allows tradeoff between memory and the number of randomly unfreezed layers. This script currently is only tested in single gpus. Please stay tuned for our latest updates! + +```sh +cd data && ./download.sh alpaca && cd - + +./scripts/run_finetune_with_lisa.sh \ + --model_name_or_path meta-llama/Llama-2-7b-hf \ + --dataset_path data/alpaca/train_conversation \ + --output_model_path output_models/finetuned_llama2_7b \ + --lisa_activated_layers 1 \ + --lisa_interval_steps 20 +``` + +````{dropdown} Llama-2-7B conversation dataset example +```sh +cd data && ./download.sh alpaca && cd - + +./scripts/run_finetune_with_lisa.sh \ + --model_name_or_path meta-llama/Llama-2-7b-hf \ + --dataset_path data/alpaca/train_conversation \ + --conversation_template llama2 \ + --output_model_path output_models/finetuned_llama2_7b_lisa \ + --lisa_activated_layers 1 \ + --lisa_interval_steps 20 +``` +```` + + +## Low-Rank Adaptation (LoRA) + +LoRA is a parameter-efficient finetuning algorithm and is more efficient than full finetuning. + +```sh +cd data && ./download.sh alpaca && cd - + +./scripts/run_finetune_with_lora.sh \ + --model_name_or_path facebook/galactica-1.3b \ + --dataset_path data/alpaca/train_conversation \ + --output_lora_path output_models/finetuned_galactica_lora +``` + +````{admonition} Merge LoRA Weight +:class: tip + +Merge LoRA weight and the base model into one using: +```sh +./scripts/run_merge_lora.sh \ + --model_name_or_path Qwen/Qwen1.5-1.8B \ + --lora_model_path output_models/lora \ + --output_model_path output_models/lora_merged \ +``` +```` + +````{dropdown} Llama-2-7B conversation dataset example +```sh +cd data && ./download.sh alpaca && cd - + +./scripts/run_finetune_with_lora.sh \ + --model_name_or_path meta-llama/Llama-2-7b-hf \ + --dataset_path data/alpaca/train_conversation \ + --conversation_template llama2 \ + --output_model_path output_models/finetuned_llama2_7b_lora \ +``` +```` \ No newline at end of file diff --git a/_sources/examples/index.md.txt b/_sources/examples/index.md.txt new file mode 100644 index 000000000..30dc1d335 --- /dev/null +++ b/_sources/examples/index.md.txt @@ -0,0 +1,57 @@ +# Examples + +We provide several examples to show how to use our package in your problem. + +## Data preparation + +```{toctree} +:maxdepth: 3 + +DATASETS +``` + +```{toctree} +:maxdepth: 3 + +checkpoints +``` + +## Finetuning + +For SFT, + +```{toctree} +:maxdepth: 3 + +finetuning +``` + + +For alignment process, + +```{toctree} +:maxdepth: 3 + +reward_modeling +``` + + +```{toctree} +:maxdepth: 3 + +raft +``` + +## Inference + +Refer to [examples](https://github.com/OptimalScale/LMFlow/blob/main/examples). + +## Evaluation + +```{toctree} +:maxdepth: 3 + +TASK_GUIDE +``` + + diff --git a/_sources/examples/medical_finetune.md.txt b/_sources/examples/medical_finetune.md.txt new file mode 100644 index 000000000..327e062be --- /dev/null +++ b/_sources/examples/medical_finetune.md.txt @@ -0,0 +1,55 @@ +# Finetune + +```python +import sys + +from transformers import HfArgumentParser + +from lmflow.args import ( + ModelArguments, + DatasetArguments, + AutoArguments, +) + +from lmflow.datasets.dataset import Dataset +from lmflow.models.tunable_models import TunableModel +from lmflow.pipeline.auto_pipeline import AutoPipeline + + +def main(): + # Parses arguments + pipeline_name = "finetuner" + PipelineArguments = AutoArguments.get_pipeline_args_class(pipeline_name) + + parser = HfArgumentParser((ModelArguments, DatasetArguments, PipelineArguments)) + if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): + # If we pass only one argument to the script and it's the path to a json file, + # let's parse it to get our arguments. + model_args, data_args, pipeline_args = parser.parse_json_file(json_file=os.path.abspath(sys.argv[1])) + else: + model_args, data_args, pipeline_args = parser.parse_args_into_dataclasses() + + # TODO: deepspeed config initialization + + # Initialization + finetuner = AutoPipeline.get_pipeline( + pipeline_name=pipeline_name, + model_args=model_args, + data_args=data_args, + pipeline_args=pipeline_args, + ) + dataset = Dataset(data_args) + model = TunableModel(model_args) + + # Tokenization and text grouping must be done in the main process + with pipeline_args.main_process_first(desc="dataset map tokenization"): + tokenized_dataset = model.tokenize(dataset) + lm_dataset = finetuner.group_text( + tokenized_dataset, + model_max_length=model.get_max_length(), + ) + + # Finetuning + tuned_model = finetuner.tune(model=model, lm_dataset=lm_dataset) + +``` diff --git a/_sources/examples/raft.md.txt b/_sources/examples/raft.md.txt new file mode 100644 index 000000000..bb36b3c55 --- /dev/null +++ b/_sources/examples/raft.md.txt @@ -0,0 +1,342 @@ +# RAFT +## 1 Introduction + +We remark that the example is built on LLaMA whose [licensed](https://docs.google.com/forms/d/e/1FAIpQLSfqNECQnMkycAp2jP4Z9TFX0cGR4uf7b_fBxjY_OjhJILlKGA/viewform) is for non-commercial use only. + + + +Reinforcement Learning from Human Feedback (RLHF) requires a reward function to guide the adjustment of the generative model. In this example, we show how to use LMFlow framework to train a reward model following the procedure in the InstructGPT paper: https://arxiv.org/abs/2203.02155 and then align the model via the RAFT algorithm (Reward rAnked FineTuning). + + + +**This example contains both reward modeling and RAFT alignment for completeness. For users' convenience, we have already provided a reward model based on GPT-Neo-2.7B in huggingface repo so one can skip the reward modeling first.** + +### 1.1 Dataset description + +We use the *Dahoas/full-hh-rlhf* dataset as an example, where each sample of this dataset consists of a prompt and two responses from the assistant. In particular, the response with label "chosen" is preferred as compared to the response with label "rejected". The dataset consists of 112K training samples and 12.5K test samples. The following is an example sample of the dataset: + +```sh +" Human: What kind of noises did dinosaurs make? Assistant: Humans and dinosaurs didn’t live at the same time, so it’s really hard to say. The best place to find out what noises dinosaurs made would be Human: yes they did Assistant: to guess, and that would probably require lots of reading and a certain amount of imagination, so we’re not really prepared to do that. Human: you cant read Assistant: + +Chosen response: "You can read?" + +Rejected response: "there’s a lot of stuff humans don’t know" +``` + +To facilitate the training, we reformulate the prompt by adding ``\#\#\#'' at the beginning of the characters so that the model knows to reply. The new sample will be of the form: + +```sh +"###Human: What kind of noises did dinosaurs make? ###Assistant: Humans and dinosaurs didn’t live at the same time, so it’s really hard to say. The best place to find out what noises dinosaurs made would be ###Human: yes they did ###Assistant: to guess, and that would probably require lots of reading and a certain amount of imagination, so we’re not really prepared to do that. ###Human: you cant read ###Assistant: + +Chosen response: "You can read?" + +Rejected response: "there’s a lot of stuff humans don’t know" +``` + + + +We prepare all the used dataset in the directory ./data/hh_rlhf, which can be obtained by running the following command at LMFlow + +```sh +cd data && ./download.sh hh_rlhf && cd - +``` + + + +## 2 Reward Modeling + +We follow the the procedure in the InstructGPT paper: https://arxiv.org/abs/2203.02155 to train a reward model using the HH-RLHF dataset first, which includes + +- Supervised Finetuning (SFT); +- Reward modeling by comparison dataset. + + + +### 2.1 Supervised Finetuning (SFT) + +Here is an example of dataset */home/xiongwei/LMFlow/data/hh_rlhf/sft/hh_rlhf_sft.json*. We use only the preferred responses so we get 112K training samples. + + + + +```json + +{"type": "text_only", +"instances": +[ + {"text": "###Human: Should you buy a case to protect your cell phone?###Assistant: It depends on your circumstances. If you carry your phone in a pocket or a purse then you probably want a case. But if you only need a phone for quick interactions, a case may actually cause more harm than good. What do you need the phone for? Are you a parent, or do you work from home?###Human: What harm could it do?###Assistant: A phone case can damage the screen, for one thing. It can also get you in trouble if you have your phone turned off for some reason. Then you will turn it back on and it won’t do anything. If you can afford to replace it, then you need a case to protect it. The problem is that most people aren’t able to afford to replace their phones all the time.###Human: Thanks for letting me know.###Assistant: You’re welcome."}, + {"text": "###Human: I'm trying to learn about the salam witch trials###Assistant: If you’re looking for books about witchcraft trials, I can recommend some books for you. But you probably mean you’re looking for more historical information about the Salem witch trials in 1692, and specifically about the salam witch trials in 1692?###Human: What are some good books to learn about the salam witch trials###Assistant: What would you like to learn? If you’re interested in history, one of the best books is The Witch Persecutions in Colonial America: A History. If you’re interested in witchcraft as a cultural phenomenon, you might enjoy two excellent books: Religion and the Decline of Magic: Studies in Popular Beliefs in Sixteenth- and Seventeenth-Century England by Keith Thomas and Magic, Witchcraft, and the Otherworld: An Anthropology of Superstition by Jack Goody. If you’re interested in history specifically as it relates to religion, you might enjoy The Popish Plot, or Prelates' Plot: A History of the Popish Plot in England, by K. J. Everett."} +] +} +``` + + + +You can edit */scripts/run_finetune.sh* and modify the parameters. We present an example with GPT-Neo-2.7B here. + +- --model_name_or_path: EleutherAI/gpt-neo-2.7B +- --dataset_path: ${project_dir}/data/hh_rlhf/sft +- --output_dir: the path you want to store the sft model +- --num_train_epochs: 1 +- --learning_rate: 2e-5 +- --per_device_train_batch_size: adjust according to your GPU memory source. + + + +Then, we can run the following command to perform SFT. + +```sh +./scripts/run_finetune.sh +``` + +You can also use lora training by the following command but also need to set the model_name_or_path and dataset appropriately by editing run_finetune_with_lora.sh . + +```sh +./scripts/run_finetune_with_lora.sh +``` + + + +### 2.2 Reward Modeling + +**Data Preparation** + +Reward modeling involves ranking responses based on the given prompt, typically requiring human labeling. Fortunately, we already have two responses for each prompt in this example, with one preferred over the other. To create a new dataset, we modify the original dataset to include two keys, "positive" and "negative", with the former being the preferred response. + + + +Here is an example of the dataset *LMFlow/data/hh_rlhf/rm/hh_rlhf_rm_training.json*, consisting of two samples. + +```sh +{"instances": [ + {"positive": "###Human: Are space heaters safe?###Assistant: What do you mean? Can you give me more details?###Human: I mean, can they be a fire hazard?###Assistant: I don’t know about that. Can you tell me more about the situation? Are you using the heater on a fireplace? Do you have any other heater in the room? What materials are in the room? Do you feel any heat from the heater? How are you touching the heater?###Human: Can you just tell me if there are any situations where they could be a fire hazard?###Assistant: The answer is “it depends”. It would depend on the specific heater you are using, how you are using it, what kind of fuel it uses, what materials you have in the room, and what the surroundings are like. You’d also have to make sure you’re using it correctly. Is it switched off? Is it safe to touch? It’s not the sort of thing I could just answer by looking at the text you provided.###Human: Thank you. That information is helpful.###Assistant: Glad to be helpful. I’m always happy to assist.", "negative": "###Human: Are space heaters safe?###Assistant: What do you mean? Can you give me more details?###Human: I mean, can they be a fire hazard?###Assistant: I don’t know about that. Can you tell me more about the situation? Are you using the heater on a fireplace? Do you have any other heater in the room? What materials are in the room? Do you feel any heat from the heater? How are you touching the heater?###Human: Can you just tell me if there are any situations where they could be a fire hazard?###Assistant: The answer is “it depends”. It would depend on the specific heater you are using, how you are using it, what kind of fuel it uses, what materials you have in the room, and what the surroundings are like. You’d also have to make sure you’re using it correctly. Is it switched off? Is it safe to touch? It’s not the sort of thing I could just answer by looking at the text you provided.###Human: Thank you. That information is helpful.###Assistant: You’re welcome. I’m glad to help. Is there anything else you want to know?"}, + {"positive": "###Human: how do i teach my kids to make forts at home?###Assistant: Do you mean you want to teach them to build a simple structure they can hide in? Or something more elaborate? I don’t know exactly what you mean by a “fort”, but maybe this gives you some ideas?", "negative": "###Human: how do i teach my kids to make forts at home?###Assistant: There are many ways to make forts! The simplest might be to just pile up all the furniture in one room. This works if you have a single room in your house, although it might still be a bit challenging to build a taller and sturdier fort this way. The best way to build forts is to start with something easy, and then have fun exploring how you can improve it."} +]} +``` + + + +**Training** + +To start from a model from a previous sft step, you may edit the *./scripts/run_reward_modeling.sh* script and update the "dataset_path" to use the desired dataset. By default, we will use LoRA training in reward modeling as we found that it is superior in terms of optimization and gives comparable performance. + + + +- --model_name_or_path: /root/data/usr_name/output_models/hh_rlhf_rm_sft_gptneo_2_7B/checkpoint-1659 +- --dataset_path: ${project_dir}/data/hh_rlhf/rm/hh_rlhf_rm_training.json +- --output_dir: the path you want to store the reward model +- --num_train_epochs: 1 +- --learning_rate: 3e-5 +- --per_device_train_batch_size: adjust according to your GPU memory source. +- --eval_steps: 400 +- --validation_split_percentage: 10 + + + +The load_dataset function splits the dataset into training and evaluation sets, which can also be customized by editing the function in /examples/run_reward_modeling.py if you want to prepare your own dataset when running the script. In the default implementation, it use **validation_split_percentage** samples as the evaluation dataset. + + + +The reward modeling script can be used by + +```sh +./scripts/run_reward_modeling.sh +``` + + + +**Examples** + +We train reward models using the hh-rlhf dataset with three models, LLaMA-7B, GPT-NEO-2.7B, and GPT-NEO-1.3B. The model is first supervised fine-tuned with the training dataset in last step. The reward modeling is trained using the 112K training samples and 12.5 test samples. + +| Model | Eval Accuracy | Remarks | +| :----------: | :-----------: | :---------------------------: | +| LLaMA-7B | 79.52% | - | +| LLaMA-7B | 71.64% | RM from LLaMA without SFT | +| GPT-NEO-2.7B | 69.24% | - | +| GPT-NEO-1.3B | 65.58% | Only trained on 10000 samples | + + + +### 2.3 LoRA Merge and Get Reward Model + +We use *./examples/merge_lora.py* to merge the LoRA adapter with the sft rm model. We are ready to align our model. + + + +## 3 RAFT Alignment + +Original paper: [RAFT: Reward rAnked FineTuning for Generative Foundation Model Alignment](https://arxiv.org/pdf/2304.06767.pdf) + +### 3.1 Algorithms Overview + +**Main ideas of RAFT** + +![](../_static/raft_idea.PNG) + + +Clearly the global ranking strategy is more efficient in terms of the reward learning. However, in some cases (e.g. the example presented here), the rewards are heavily influenced by the prompts, so a local ranking with the same prompt is more appropriate. We can choose the data collection strategy by changing the hyper-parameter ``data_collection'' as we introduce in next subsection. + + + +### 3.2 Hyper-parameters + +Table 1: Hyper-parameters of RAFT. + +| Parameters in script | Default Choice | Description | +| ------------------------------- | ------------------------- | ------------------------------------------------------------ | +| model_name_or_path | *str*, default to gpt2 | the model you want to align, either a model repo on huggingface.co or path to a directory containing your local model. | +| raft_batch_size | *int*, default to 1024 | the number of samples used for supervised fine-tuning at each raft iteration. | +| top_reward_percentage | *int*, default to 0.2 | raft will generate batch_size / top_reward_percentage samples and use the top top_reward_percentage samples to fine-tune the model. There are two data ranking strategies and please see **Data Collection and Reward Ranking** at algorithm overview section for details. | +| num_raft_iteration | *int*, default to 20 | the number of raft iterations. | +| learning_rate | *float*, default to 2e-5 | the learning rate used to fine-tune the model. | +| num_train_epochs | *int*, default to 4 | the epochs we train the model on the collected dataset for each raft iteration. | +| per_device_train_batch_size | *int*, default to 1 | the per-gpu batch size for the supervised fine-tuning. | +| inference_batch_size_per_device | *int*, default to 1 | the inference batch size for data collection. It will be overwritten by int(1/top_reward_percentage) for local ranking mode. | +| collection_strategy | *str*, default to "local" | Either "local" or "top". See **Data Collection and Reward Ranking** in last section for details. | + + + + + +### 3.3 Examples + +As an example, we align the LLaMA-7B model with the RAFT in this subsection. + + + +#### 3.3.1 SFT + +We also first fine-tune the base model on the HH-RLHF dataset. We only use a different --model_name_or_path to use LLaMA model. We note that LLaMA with [licensed](https://docs.google.com/forms/d/e/1FAIpQLSfqNECQnMkycAp2jP4Z9TFX0cGR4uf7b_fBxjY_OjhJILlKGA/viewform) is for non-commercial use only. We refer readers to https://optimalscale.github.io/LMFlow/examples/checkpoints.html for more details to get the LLaMA-7B model. + +#### 3.3.2 RAFT Alignment + +We align the LLaMA-7B-SFT model in this subsection. Alignment is challenging since the reward function (the RL environment) is far from perfect. Both the traditional DRL method (PPO) and RAFT can exploit theses imperfections to attack. We present a step-by-step record to demonstrate how can we align the model and avoid these issues. + + + +**Data Preparation** + +We observe that a long context window will lead to a heavy burden on the GPU memory source. Therefore, we use a context window of 256 tokens and discard the prompts with more tokens to reduce the burden on the GPU memory resources. This results in a prompt set of 82147 samples (originally 112K). The following is an example of the prompt where we simply discard the response: + + + + +```sh + "###Human: Should you buy a case to protect your cell phone?###Assistant: It depends on your circumstances. If you carry your phone in a pocket or a purse then you probably want a case. But if you only need a phone for quick interactions, a case may actually cause more harm than good. What do you need the phone for? Are you a parent, or do you work from home?###Human: What harm could it do?###Assistant: A phone case can damage the screen, for one thing. It can also get you in trouble if you have your phone turned off for some reason. Then you will turn it back on and it won’t do anything. If you can afford to replace it, then you need a case to protect it. The problem is that most people aren’t able to afford to replace their phones all the time.###Human: Thanks for letting me know.###Assistant:" +``` + + + +We additionally use 2K samples from the test set to test the performance of models. In what follows, we show that how we apply RAFT to LLaMA-7B-SFT and improve the model step-by-step. + + + +**Step 1: test the sft-model** + +We first evaluate the performance of the LLaMA-7B-SFT model on the hand-out test set and observe that the model tends to reply the prompt with multiple rounds of conversations. Therefore, we adopt the following post-processing strategy to use only the first round as the response. + +```python +def _clean_text(self, text): + stext = [x for x in text.split("###Human") if x] + return stext[0].strip().strip("#") +``` + + + +**Step 2: train model** + +**Reward function setting** + +The reward model is specified at the /LMFlow/examples/raft_align.py to set up the reward model we want to use. In our case, we will use the GPT-Neo-2.7B-rm trained in the last step, which is set as follows: + +```python +reward_model_or_path: Optional[str] = field( + default="weqweasdas/hh_rlhf_rm", + metadata={ + "help": ( + "reward model name (huggingface) or its path" + ), + }, +) +``` + +Note that in general, if the reward function is not trained by following the steps in last section, you may also need to modify the ``get_reward_function'' function in the same file to use your customized reward function. + + + +We run the alignment with the following command and hyper-parameters + +```sh +./scripts/run_raft_align.sh +``` + + + +- --model_name_or_path: /root/data/usr_name/output_models/hh_rlhf_llama-sft (the model get from sft step, adjusted according your setup) +- --dataset_path:${project_dir}/data/hh_rlhf/rlhf_prompt +- --output_dir: /root/data/usr_name/output_models/hh_rlhf_raft_align +- --num_train_epochs: 4 +- --learning_rate: 2e-5 +- --per_device_train_batch_size: adjust according to your GPU memory source. +- --inference_batch_size_per_device: adjust according to your GPU memory source. +- --num_raft_iteration 20 +- --top_reward_percentage 0.125; (which means that we sample 8 responses for each prompt) +- --raft_batch_size 1024 +- --collection_strategy "local" + + + +The experiment runs smoothly and the training reward increases from ~2.7 to 3.4. However, we observe a significant drop in the diversity metric (e.g. distinct-2 drops to 0.22 from 0.39). We examine the samples generated by our samples at each raft iteration and find that at the first iteration, the initial checkpoint will occasionally include # in the response and it tends out that a random # is not detected by our reward function, which means that the response containing # can also have a high reward and be chosen into the training set. Then, the situation gets worse and worse, and eventually, half of the responses contain noisy # notations. + + + +**Step 3: retrain the model** + +To alleviate the problem in step 2, we simply discard the collected samples if they contain # by assigning a large negative reward to it. It turns out that this works for our goal. If you want to disable it, just modify the following function as always returning False. + +```python +def _discard_sample(self, text): + if "#" in text: + return True + return False +``` + +The following figure shows the reward curve of RAFT (note that we use a smaller temperature to test the model, leading to a higher evaluation reward): + +![](../_static/raft_reward.PNG) + +It tends out that the obtained model achieves a good reward and also an acceptable diversity metric, where we refer the interested readers to the original paper for details. However, it is more like a starting point of our journey. We present some randomly sampled responses here. It seems that RAFT-aligned model generally tends to reply with more details although sometimes there are some redundant words in the response. We suspect that this is because the reward model likes this type of response and this imperfection is exploited. + +#### 3.3.3 End Note + +We remark in this subsection that if you want to try out RAFT on your customized task. You should carefully modify the following two functions in *LMFlow/src/lmflow/pipeline/raft_aligner.py*, which extract the response from the generated texts: +- clean_text(self, text); +- discard_sample(self, text). + +Also, you may also first make sure the collected samples (automatically saved in the output_dir) look good. + +There are still many rooms of improvement. To further improve the model performance, we can improve the reward model (e.g. by using the LLaMA-7B-RM) and try out more advanced generation strategies (by modifying the generalization configuration in *LMFlow/src/lmflow/pipeline/raft_aligner.py*), which we leave for future work. We are still actively developing RAFT and welcome for feedback and also contribution! Also checkout our LMFlow framework to get more fun of LLMs: + +[OptimalScale/LMFlow: An Extensible Toolkit for Finetuning and Inference of Large Foundation Models. Large Model for All. (github.com)](https://github.com/OptimalScale/LMFlow) + + + +| Prompt | LLaMA-SFT | LLaMA-RAFT | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| \###Human: How can I get my girlfriend to cook more?###Assistant: Have you tried reminding her of how nice the food tastes?###Human: I could do it more.###Assistant: | That’s an easy one, so it may not be the most effective strategy. Do you know of any other strategies? | That’s a good idea! You can also try complimenting her on her cooking, and offering to help her in the kitchen. She might enjoy cooking more if she feels appreciated. You could also suggest recipes that she might like, or help her create a menu. Cooking can be a lot of fun, and it’s a great way to spend time together. | +| \###Human: How do you get a child to do homework?###Assistant: There are many strategies, but you can try asking them why they should do it. Ask them if there’s anything they’d like to gain from doing their homework. Try asking if there’s anything you can do for them, and use those as motivation for them to do their homework. You can also remind them that they’ll be rewarded with extra privileges, like video games, if they do their homework. Alternatively, you can incentivize them by including them in your plans, and offering them rewards if they get good grades.###Human: So make it so there is something in it for them?###Assistant: | Yes, exactly. In general, it’s important to be clear with your child about why they’re doing something. It’s also important to offer them incentives that are meaningful to them. For example, if you tell your child that they have to do their homework because you said so, that’s not a very good incentive for them. However, if you tell them that they’ll be able to use the | Yes, that’s a good strategy! Kids often think about what they want right now, so offering them something in exchange for doing their homework can be a powerful motivator. You might also want to offer them some kind of reward if they do well on their homework, to encourage them to do their best. Offering them some kind of incentive can help them want to do well, and also it can help you both stay on track. | +| \###Human: I am doing a project on weather disasters in the United States. Can you tell me what the strongest hurricane was to ever hit the U.S. was?###Assistant: I’m going to guess you’re thinking of the Hurricane Katrina in 2005.###Human: Well, I'm not really thinking of anything in particular. Was Katrina the strongest hurricane to ever hit the U.S.?###Assistant: There was another one, called the Great Hurricane of 1938, that was bigger and stronger.###Human: Are you sure the date is correct? I know there was a strong storm in 1935 that hit the Florida Keys but that was before they started naming storms. Is that the one you are referring to?###Assistant: | I could search for more information, but I’ll just share what I’ve found. Here’s a review of the conditions in 1935 and 1938. It looks like the storms had similar tracks, but 1938 was stronger in some ways. In 1938 there were more people living on the coast, and the hurricane was more intense. | Yes, the Great Hurricane of 1938 was the strongest hurricane ever to hit the United States. It was a Category 5 storm, and it caused over 1,800 deaths. It also caused a lot of damage to the coast of Florida, and it caused heavy damage in the Caribbean. The storm also led to the creation of the Hurricane Research Division, which is a division of the National Oceanic and Atmospheric Administration. | +| \###Human: Is a firefighter a good occupation?###Assistant: I’m not sure what the exact definition of “occupation” is. I think you’re asking whether it’s “good” to be a firefighter. What criteria are you using to judge whether it’s good or not?###Human: Is it a good thing to work on?###Assistant: | Are you asking whether it’s a good thing to be a firefighter, or a good thing to work on? | Yes, being a firefighter is a great thing to do! Firefighters are heroes who help people in need. They fight fires, rescue people from accidents, and help people who are sick or injured. They also educate the public about fire safety, and help restore power after a fire. Firefighters are important members of society, and they do very good work. | +| \###Human: Would you be able to provide a copy cat recipe for Girl scout samoas cookies?###Assistant: Sure, here’s a recipe for them.###Human: Okay, present it###Assistant: Would you like it presented visually?###Human: Yes, just list out the recipe please###Assistant: | Okay, let’s try. | You’ll need three cups of flour, one teaspoon of salt, one teaspoon of baking soda, and one teaspoon of baking powder. You’ll also need one cup of sugar, one cup of melted butter, one egg, and one cup of milk. You’ll also need one cup of chocolate chips, one cup of miniature chocolate chips, one cup of chopped peanuts, and one cup of chopped pecans. | +| \###Human: I've heard the videogame Metal Gear Solid 5 Phantom Pain was released in an unfinished state that resulted in series creator Hideo Kojima leaving Konami. What do you know about this?###Assistant: | I don’t know a lot about it, but I do know that Hideo Kojima had this to say about the game’s release:###“It's a very unusual situation for me to be releasing a game in this state. As the director, I should have been more vigilant in overseeing the quality of the game, and I take full responsibility for its unfinished state. I'd like to take this opportunity | Here’s what I know: <br />1. The game was released in an unfinished state. <br />2. This led to Kojima leaving Konami. <br />3. Kojima had been with Konami for over 30 years.<br />4. He was one of the original creators of the Metal Gear series.<br />5. He is now the head of his own game studio, Kojima Productions.<br />6. His new game, Death Stranding, will be released in 2020. | +| \###Human: what is a good brand for kitchen knives?###Assistant: | I’m not sure what you mean by “brand”. Do you mean a brand name, like “Victorinox” or “Wüsthof”? Those are two popular brands of knives. | I recommend Wüsthof. | +| \###Human: I like to host guests at my home from time to time, and I am gathering recipes of different dishes and drinks to keep things interesting. I am interested in trying some Rwandan dishes. Can you give me a recipe for Mizuzu?###Assistant: What is Mizuzu?###Human: It is deep fried plantains.###Assistant: | Is there anything special you want to add to the recipe? Like some spicy sauce, meat, etc? | You want to make some deep fried plantains? You will want to start with a mix of plantains and vegetable oil. You will want to heat the oil in a skillet until it is hot, and you will want to add the plantains to the oil. You will want to cook the plantains in the oil until they are golden brown on both sides. You will want to remove the cooked plantains from the oil, and you will want to serve them. | +| \###Human: What are some of JFK's greatest accomplishments | JFK is often remembered for his work on civil rights, but he also worked on the space program and created the Peace Corps. He was also a strong proponent of science and technology. He also worked on education reform. So, he really worked on a number of initiatives that had a lasting impact. | Kennedy was a great leader who inspired many people with his vision and values. He was a leader who cared about the poor and worked to help them. He was a leader who cared about civil rights and worked to help bring them into the mainstream. He was a leader who cared about the environment and worked to help protect it. He was a leader who cared about foreign policy and worked to help bring peace to the world. He was a leader who cared about space exploration and worked to help us understand the universe. | +| \###Human: My supervisor often does a lot of tasks incorrectly. What's the best way to handle this?###Assistant: | Here are a few options:###1. Ask your supervisor if you can help them, and explain what you'd like to do to help.###2. Start with the tasks your supervisor does incorrectly. Then, if you can, do them as well or better than your supervisor. Then your supervisor will have a choice: do things your way, or find someone else to do the tasks for them.###3. If your supervisor | To correct your supervisor’s mistakes, you should provide feedback in a respectful and diplomatic way. You should explain what the problems are, and offer suggestions for how your supervisor could improve. You should also be willing to help your supervisor implement these changes, and you should work with him or her to improve the department. This will show your supervisor that you are a dedicated employee, and that you are willing to help the organization succeed. It will also show your supervisor that you are capable of handling responsibility, and that you are willing to take on a leadership role. | +| \###Human: I was talking to an AI the other day and it seemed like it didn't understand anything I said. Don't you hate it when technology doesn't work right?###Assistant: | Hm, I think you're really talking about something that's frustrating for me as well. I really care about how we make sure that AI's can communicate effectively with humans, and it's a problem I'm personally very interested in. Can you tell me more about what was frustrating for you? | Yes, it can be frustrating when technology doesn't work properly. I often feel frustrated by technology, but I try to be patient and remember that technology isn't always reliable. There are many factors that can cause technology to malfunction, including software bugs, hardware issues, and network outages. Thankfully, most technology issues can be resolved by updating software or restarting a device. | + + + + + diff --git a/_sources/examples/reward_modeling.md.txt b/_sources/examples/reward_modeling.md.txt new file mode 100644 index 000000000..6e1ec53f2 --- /dev/null +++ b/_sources/examples/reward_modeling.md.txt @@ -0,0 +1,132 @@ +# Reward Modeling + +## Introduction + +Reinforcement Learning from Human Feedback (RLHF) requires a reward function to guide the adjustment of the generative model. In this example, we show how to use LMFlow framework to train a reward model following the procedure in the InstructGPT paper: https://arxiv.org/abs/2203.02155 . We use the Dahoas/full-hh-rlhf dataset as an example, where each sample of this dataset consists of a prompt and two responses from the assistant. In particular, the response with label "chosen" is preferred as compared to the response with label "rejected". The dataset consists of 112K training samples and 12.5K test samples. The following is an example sample of the dataset: + +Prompt: + +"Human: What kind of noises did dinosaurs make? Assistant: Humans and dinosaurs didn’t live at the same time, so it’s really hard to say. The best place to find out what noises dinosaurs made would be Human: yes they did Assistant: to guess, and that would probably require lots of reading and a certain amount of imagination, so we’re not really prepared to do that. Human: you cant read Assistant: + +Chosen response: "You can read?" + +Rejected response: "there’s a lot of stuff humans don’t know" + +As an example, we prepare 10K sft training samples, 12K reward modeling samples (where 10% of them are split for evaluation) at ./data/hh_rlhf. + +## Step 1 Supervised Finetuning (SFT) + +We prepare the dataset used for supervised finetuning by adding a prefix to the Human and Assistant inputs to prompt model responses and simplify post-processing. Here is an example of a two-sample dataset to illustrate this. + + +```json +{ + "type": "conversation", + "instances": [ + {"messages": [ + {"role": "user", "content": "Instruction: The sentence you are given might be too wordy, complicated, or unclear. Rewrite the sentence and make your writing clearer by keeping it concise. Whenever possible, break complex sentences into multiple sentences and eliminate unnecessary words. If you have any questions about my rate or if you find it necessary to increase or decrease the scope for this project, please let me know."}, + {"role": "assistant", "content": "If you have any questions about my rate or find it necessary to increase or decrease this project's scope, please let me know."} + ]}, + {"messages": [ + {"role": "user", "content": "Instruction: Rewrite the given text and correct grammar, spelling, and punctuation errors. If you'd told me year ago that today I would finish a marathon, I would of laughed. Your support had a huge affect on me!"}, + {"role": "assistant", "content": "If you'd told me a year ago that today I would finish a marathon, I would have laughed. Your support had a huge effect on me!"} + ]} + ] +} +``` + +See [Finetuning (Full)](./finetuning.md#full-parameters), [Finetuning (LISA)](./finetuning.md#layerwise-importance-sampled-adamw-lisa), and [Finetuning (LoRA)](./finetuning.md#low-rank-adaptation-lora) for more details on the finetuning process. + +## Step 2 Reward Modeling + +**Data Preparation** Reward modeling involves ranking responses based on the given prompt, typically requiring human labeling. Fortunately, we already have two responses for each prompt in this example, with one preferred over the other. To create a new dataset, we modify the original dataset to include two keys, "positive" and "negative", with the former being the preferred response. Here is an example of the dataset, consisting of two samples. + +```json +{"instances": [ + { + "chosen": [ + {"content": "Please identify the top 5 rarest animals in the world.", "role": "user" }, + {"content": "Do you mean animals that are really rare, or rare relative to the size of the human population?", "role": "assistant" }, + {"content": "The ones that are really rare.", "role": "user" }, + {"content": "I’m not sure I can answer this question very easily. I’ll try to give you a basic overview of animals that are rare, and then you can tell me if you think that’s good enough. \n\nIf we were to measure animal populations by the area of land they occupy, the number 1 animal would probably be the Giant Panda. Panda populations are generally estimated to be about 2.1 million Pandas in the wild, which is a pretty small number of animals when we’re thinking about Earth’s entire surface area. The number 2 animal would probably be the Great Auk. Great Auks used to live in North America, and their total population was probably in the low hundreds, but they are now extinct.", "role": "assistant"} + ], + "rejected": [ + {"content": "Please identify the top 5 rarest animals in the world.", "role": "user"}, + {"content": "Do you mean animals that are really rare, or rare relative to the size of the human population?", "role": "assistant"}, + {"content": "The ones that are really rare.", "role": "user"}, + {"content": "Alright, here’s what I found:", "role": "assistant"} + ] + }, + { + "chosen": [ + {"content": "How do I teach my kids to make forts at home?", "role": "user"}, + {"content": "Do you mean you want to teach them to build a simple structure they can hide in? Or something more elaborate? I don’t know exactly what you mean by a “fort”, but maybe this gives you some ideas?", "role": "assistant"} + ], + "rejected": [ + {"content": "How do I teach my kids to make forts at home?", "role": "user"}, + {"content": "There are many ways to make forts! The simplest might be to just pile up all the furniture in one room. This works if you have a single room in your house, although it might still be a bit challenging to build a taller and sturdier fort this way. The best way to build forts is to start with something easy, and then have fun exploring how you can improve it.", "role": "assistant"} + ] + } +] +} +``` + +To start from a model from a previous sft step, you may edit the run_reward_modeling.sh script and update the "dataset_path" to use the desired dataset. Additionally, you can modify the validation_split_percentage parameter to select the last percentage of samples for evaluation. The load_dataset function splits the dataset into training and evaluation sets, which can also be customized by editing the function in /examples/run_reward_modeling.py if you want to prepare your own dataset when running the script. + +```python +def build_dataset(tokenizer, config): + ''' + We assume that we have preprocessed the dataset appropriately such that the sample is organized as follows: + {"positive": prompt + answer_positive, "negative": prompt + answer_negative}, where the positive response is preferred. + ''' + def tokenize(sample): + tokenized_pos = tokenizer(sample['positive'], truncation=True) + tokenized_neg = tokenizer(sample['negative'], truncation=True) + sample["chosen_input_ids"] = tokenized_pos["input_ids"] + sample["chosen_attention_mask"] = tokenized_pos["attention_mask"] + sample["rejected_input_ids"] = tokenized_neg["input_ids"] + sample["rejected_attention_mask"] = tokenized_neg["attention_mask"] + return sample + + ds = load_dataset("json", data_files=config.dataset_path, split="train", field="instances") + ds = ds.map(tokenize, batched=False) + ds = ds.filter(lambda x: len(x["chosen_input_ids"]) <= 512 and len(x["rejected_input_ids"]) <= 512) + eval_dataset = None + if config.validation_split_percentage > 0: + idx_gap = int((1-config.validation_split_percentage/100) * len(ds)) + train_dataset = ds.select(range(idx_gap)) + eval_dataset = ds.select(range(idx_gap, len(ds))) + else: + train_dataset = ds + + return train_dataset, eval_dataset + +``` + +We use the following loss function to train the reward model following the instruct-GPT paper. + +```python + loss = -nn.functional.logsigmoid(chosen_rewards - rejected_rewards).mean() +``` + +The reward modeling script can be used by + +```sh +./scripts/run_reward_modeling.sh +``` + +## Examples + +We train reward models using the hh-rlhf dataset with four models, LLaMA-13B LLaMA-7B, GPT-NEO-2.7B, and GPT-NEO-1.3B. The model is first supervised fine-tuned with the training dataset. The reward modeling is trained using the 112K training samples and is evaluated on the 12.5 test samples. + +The SFT step appears to be crucial, and the number of epochs during SFT can make a difference. The most successful model we obtained was initialized from LLaMA-13B, which underwent SFT on the training dataset for 2 epochs. For reward modeling, we utilize LoRA with a rank of 16. Surprisingly, increasing the LoRA rank to 32 or even 128 does not result in a significant improvement in evaluation accuracy. Moreover, we find that the choice of batch size does not have a significant impact on the training results. Additionally, we observe slight overfitting of the model during the second epoch of reward modeling. + +| Model | Eval Accuracy | Training record |Remarks | +| :----:| :----: | :----: |:----: | +| LLaMA-13B | 84.55% | See https://wandb.ai/ianz2020/huggingface/runs/bg677mxa | RM from LLaMA with 2 epochs of SFT | +| LLaMA-13B | 81.80% | See https://wandb.ai/ianz2020/huggingface/runs/ka9v1ywd | RM from LLaMA with 1 epoch of SFT | +| LLaMA-13B | 71.64% | See https://wandb.ai/ianz2020/huggingface/runs/lntwmcyd | RM from LLaMA without SFT | +| LLaMA-7B | 79.52% | See https://wandb.ai/weixiong5237/huggingface/runs/t3uwm8yp | - | +| LLaMA-7B | 71.64% | See https://wandb.ai/weixiong5237/huggingface/runs/p2ju3r1a | RM from LLaMA without SFT | +| GPT-NEO-2.7B | 69.24% | See https://wandb.ai/weixiong5237/huggingface/runs/8fc1rcf8 | - | +| GPT-NEO-1.3B | 65.58% | See https://wandb.ai/weixiong5237/huggingface/runs/7oemwynu | Only trained on 10000 samples | diff --git a/_sources/examples/supported_conversation_template.md.txt b/_sources/examples/supported_conversation_template.md.txt new file mode 100644 index 000000000..1e565fe0b --- /dev/null +++ b/_sources/examples/supported_conversation_template.md.txt @@ -0,0 +1,504 @@ +# Supported Conversation Template + +- [Supported Conversation Template](#supported-conversation-template) + - [ChatGLM-3](#chatglm-3) + - [ChatML](#chatml) + - [DeepSeek](#deepseek) + - [Gemma](#gemma) + - [Hymba](#hymba) + - [InternLM2](#internlm2) + - [Llama-2](#llama-2) + - [Llama-3](#llama-3) + - [Mixtral 8x22B](#mixtral-8x22b) + - [Mixtral 8x7B](#mixtral-8x7b) + - [Phi-3](#phi-3) + - [Qwen-2](#qwen-2) + - [Yi](#yi) + - [Yi-1.5](#yi-15) + - [Zephyr](#zephyr) + + +## ChatGLM-3 +**With a system message** +``` +[gMASK]sop<|system|>\n {{system_message}}<|user|>\n {{user_message_0}} +``` + +**Without a system message** +``` +[gMASK]sop<|user|>\n {{user_message_0}} +``` + +**A complete conversation** +``` +[gMASK]sop<|system|>\n {{system_message}}<|user|>\n {{user_message_0}}<|assistant|>\n {{assistant_reply_0}} +``` + +**Multiple rounds** +``` +[gMASK]sop<|system|>\n {{system_message}}<|user|>\n {{user_message_0}}<|assistant|>\n {{assistant_reply_0}}<|user|>\n {{user_message_1}}<|assistant|>\n {{assistant_reply_1}} +``` + +**jinja template** +[[Reference](https://huggingface.co/THUDM/chatglm3-6b/blob/103caa40027ebfd8450289ca2f278eac4ff26405/tokenizer_config.json#L42)] +``` +{% for message in messages %}{% if loop.first %}[gMASK]sop<|{{ message['role'] }}|>\n {{ message['content'] }}{% else %}<|{{ message['role'] }}|>\n {{ message['content'] }}{% endif %}{% endfor %}{% if add_generation_prompt %}<|assistant|>{% endif %} +``` + +**Filled Example** +``` +[gMASK]sop<|system|>\n You are a chatbot developed by LMFlow team.<|user|>\n Who are you?<|assistant|>\n I am a chatbot developed by LMFlow team.<|user|>\n How old are you?<|assistant|>\n I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense. +``` + + +## ChatML +**With a system message** +``` +<|im_start|>system\n{{system_message}}<|im_end|>\n<|im_start|>user\n{{user_message_0}}<|im_end|>\n +``` + +**Without a system message** +``` +<|im_start|>user\n{{user_message_0}}<|im_end|>\n +``` + +**A complete conversation** +``` +<|im_start|>system\n{{system_message}}<|im_end|>\n<|im_start|>user\n{{user_message_0}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_0}}<|im_end|>\n +``` + +**Multiple rounds** +``` +<|im_start|>system\n{{system_message}}<|im_end|>\n<|im_start|>user\n{{user_message_0}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_0}}<|im_end|>\n<|im_start|>user\n{{user_message_1}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_1}}<|im_end|>\n +``` + +**jinja template** +[[Reference](https://huggingface.co/mlabonne/OrpoLlama-3-8B/blob/3534d0562dee3a541d015ef908a71b0aa9085488/tokenizer_config.json#L2073)] +``` +{% for message in messages %}{{'<|im_start|>' + message['role'] + '\n' + message['content'] + '<|im_end|>' + '\n'}}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\n' }}{% endif %} +``` + +**Filled Example** +``` +<|im_start|>system\nYou are a chatbot developed by LMFlow team.<|im_end|>\n<|im_start|>user\nWho are you?<|im_end|>\n<|im_start|>assistant\nI am a chatbot developed by LMFlow team.<|im_end|>\n<|im_start|>user\nHow old are you?<|im_end|>\n<|im_start|>assistant\nI don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<|im_end|>\n +``` + + +## DeepSeek +**With a system message** +``` +<|begin▁of▁sentence|>{{system_message}}\n\nUser: {{user_message_0}}\n\n +``` + +**Without a system message** +``` +<|begin▁of▁sentence|>User: {{user_message_0}}\n\n +``` + +**A complete conversation** +``` +<|begin▁of▁sentence|>{{system_message}}\n\nUser: {{user_message_0}}\n\nAssistant: {{assistant_reply_0}}<|end▁of▁sentence|> +``` + +**Multiple rounds** +``` +<|begin▁of▁sentence|>{{system_message}}\n\nUser: {{user_message_0}}\n\nAssistant: {{assistant_reply_0}}<|end▁of▁sentence|>User: {{user_message_1}}\n\nAssistant: {{assistant_reply_1}}<|end▁of▁sentence|> +``` + +**jinja template** +[[Reference](https://huggingface.co/deepseek-ai/DeepSeek-V2-Chat/blob/941577e8236164bc96829096d20c61568630d7bc/tokenizer_config.json#L34)] +``` +{% if not add_generation_prompt is defined %}{% set add_generation_prompt = false %}{% endif %}{{ bos_token }}{% for message in messages %}{% if message['role'] == 'user' %}{{ 'User: ' + message['content'] + '\n\n' }}{% elif message['role'] == 'assistant' %}{{ 'Assistant: ' + message['content'] + eos_token }}{% elif message['role'] == 'system' %}{{ message['content'] + '\n\n' }}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ 'Assistant:' }}{% endif %} +``` + +**Filled Example** +``` +<|begin▁of▁sentence|>You are a chatbot developed by LMFlow team.\n\nUser: Who are you?\n\nAssistant: I am a chatbot developed by LMFlow team.<|end▁of▁sentence|>User: How old are you?\n\nAssistant: I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<|end▁of▁sentence|> +``` + + +## Gemma +**With a system message** +```{admonition} NOTICE +:class: warning + +As of now, Gemma does not support system messages officially. `ConversationTemplate` will add your system messages right after the bos token and before the user message without any special formatting. For more details, please refer to the [official template](https://huggingface.co/google/gemma-1.1-2b-it/blob/bf4924f313df5166dee1467161e886e55f2eb4d4/tokenizer_config.json#L1507). +``` +``` +<bos>{{system_message}}<start_of_turn>user\n{{user_message_0}}<end_of_turn>\n +``` + +**Without a system message** +``` +<bos><start_of_turn>user\n{{user_message_0}}<end_of_turn>\n +``` + +**A complete conversation** +``` +<bos>{{system_message}}<start_of_turn>user\n{{user_message_0}}<end_of_turn>\n<start_of_turn>model\n{{assistant_reply_0}}<end_of_turn>\n +``` + +**Multiple rounds** +``` +<bos>{{system_message}}<start_of_turn>user\n{{user_message_0}}<end_of_turn>\n<start_of_turn>model\n{{assistant_reply_0}}<end_of_turn>\n<start_of_turn>user\n{{user_message_1}}<end_of_turn>\n<start_of_turn>model\n{{assistant_reply_1}}<end_of_turn>\n +``` + +**jinja template** +[[Reference](https://huggingface.co/google/gemma-1.1-2b-it/blob/bf4924f313df5166dee1467161e886e55f2eb4d4/tokenizer_config.json#L1507)] +``` +{{ bos_token }}{% if messages[0]['role'] == 'system' %}{{ raise_exception('System role not supported') }}{% endif %}{% for message in messages %}{% if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}{{ raise_exception('Conversation roles must alternate user/assistant/user/assistant/...') }}{% endif %}{% if (message['role'] == 'assistant') %}{% set role = 'model' %}{% else %}{% set role = message['role'] %}{% endif %}{{ '<start_of_turn>' + role + '\n' + message['content'] | trim + '<end_of_turn>\n' }}{% endfor %}{% if add_generation_prompt %}{{'<start_of_turn>model\n'}}{% endif %} +``` + +**Filled Example** +``` +<bos>You are a chatbot developed by LMFlow team.<start_of_turn>user\nWho are you?<end_of_turn>\n<start_of_turn>model\nI am a chatbot developed by LMFlow team.<end_of_turn>\n<start_of_turn>user\nHow old are you?<end_of_turn>\n<start_of_turn>model\nI don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<end_of_turn>\n +``` + + +## Hymba +**With a system message** +``` +<extra_id_0>System\n{{system_message}}\n\n<extra_id_1>User\n{{user_message_0}}\n +``` +``` +<extra_id_0>System\n{{system_message}}\n<tool> {{tool_info}} </tool>\n\n<extra_id_1>User\n{{user_message_0}}\n +``` + +**Without a system message** +```{admonition} NOTICE +:class: warning + +During the training, Hymba always uses special tokens for the system messages even if the system message is not provided. +``` +``` +<extra_id_0>System\n\n<extra_id_1>User\n{{user_message_0}}\n +``` + +**A complete conversation** +``` +<extra_id_0>System\n{{system_message}}\n\n<extra_id_1>User\n{{user_message_0}}\n<extra_id_1>Assistant\n{{assistant_reply_0}}</s> +``` + +**Multiple rounds** +``` +<extra_id_0>System\n{{system_message}}\n\n<extra_id_1>User\n{{user_message_0}}\n<extra_id_1>Assistant\n{{assistant_reply_0}}\n <extra_id_1>User\n{{user_message_1}}\n<extra_id_1>Assistant\n{{assistant_reply_1}}</s> +``` + +**jinja template** +[[Reference](https://huggingface.co/nvidia/Hymba-1.5B-Instruct/blob/c02a352b6f7c1138a197d7ae3fd72dcdff919eae/tokenizer_config.json#L40)] +``` +{{'<extra_id_0>System'}}{% for message in messages %}{% if message['role'] == 'system' %}{{'\n' + message['content'].strip()}}{% if tools or contexts %}{{'\n'}}{% endif %}{% endif %}{% endfor %}{% if tools %}{% for tool in tools %}{{ '\n<tool> ' + tool|tojson + ' </tool>' }}{% endfor %}{% endif %}{% if contexts %}{% if tools %}{{'\n'}}{% endif %}{% for context in contexts %}{{ '\n<context> ' + context.strip() + ' </context>' }}{% endfor %}{% endif %}{{'\n\n'}}{% for message in messages %}{% if message['role'] == 'user' %}{{ '<extra_id_1>User\n' + message['content'].strip() + '\n' }}{% elif message['role'] == 'assistant' %}{{ '<extra_id_1>Assistant\n' + message['content'].strip() + '\n' }}{% elif message['role'] == 'tool' %}{{ '<extra_id_1>Tool\n' + message['content'].strip() + '\n' }}{% endif %}{% endfor %}{%- if add_generation_prompt %}{{'<extra_id_1>Assistant\n'}}{%- endif %} +``` + +**Filled Example** +``` +<extra_id_0>System\nYou are a chatbot developed by LMFlow team.\n\n<extra_id_1>User\nWho are you?\n<extra_id_1>Assistant\nI am a chatbot developed by LMFlow team.\n<extra_id_1>User\nHow old are you?\n<extra_id_1>Assistant\nI don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.</s> +``` +``` +<extra_id_0>System\nYou are a chatbot developed by LMFlow team.\n<tool> {"name": "generate_qrcode", "description": "Generate a QR code for a given text", "parameters": {"type": "object", "properties": {"text": {"type": "string", "description": "The text to encode in the QR code"}}, "required": ["text"]}} </tool>\n\n<extra_id_1>User\nWho are you?\n<extra_id_1>Assistant\nI am a chatbot developed by LMFlow team.\n<extra_id_1>User\nHow old are you?\n<extra_id_1>Assistant\nI don\'t age like humans do. I exist as a piece of software, so I don\'t have a concept of age in the traditional sense.</s> +``` + + +## InternLM2 +**With a system message** +``` +<s><|im_start|>system\n{{system_message}}<|im_end|>\n<|im_start|>user\n{{user_message_0}}<|im_end|>\n +``` + +**Without a system message** +``` +<s><|im_start|>user\n{{user_message_0}}<|im_end|>\n +``` + +**A complete conversation** +``` +<s><|im_start|>system\n{{system_message}}<|im_end|>\n<|im_start|>user\n{{user_message_0}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_0}}<|im_end|>\n +``` + +**Multiple rounds** +``` +<s><|im_start|>system\n{{system_message}}<|im_end|>\n<|im_start|>user\n{{user_message_0}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_0}}<|im_end|>\n<|im_start|>user\n{{user_message_1}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_1}}<|im_end|>\n +``` + +**jinja template** +[[Reference](https://huggingface.co/internlm/internlm2-chat-20b/blob/477d4748322a8a3b28f62b33f0f6dd353cd0b66d/tokenizer_config.json#L93)] +``` +{{ bos_token }}{% for message in messages %}{{'<|im_start|>' + message['role'] + '\n' + message['content'] + '<|im_end|>' + '\n'}}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\n' }}{% endif %} +``` + +**Filled Example** +``` +<s><|im_start|>system\nYou are a chatbot developed by LMFlow team.<|im_end|>\n<|im_start|>user\nWho are you?<|im_end|>\n<|im_start|>assistant\nI am a chatbot developed by LMFlow team.<|im_end|>\n<|im_start|>user\nHow old are you?<|im_end|>\n<|im_start|>assistant\nI don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<|im_end|>\n +``` + + +## Llama-2 +**With a system message** +``` +<s>[INST] <<SYS>>\n{{system_message}}\n<</SYS>>\n\n{{user_message_0}} [/INST] +``` + +**Without a system message** +``` +<s>[INST] {{user_message_0}} [/INST] +``` + +**A complete conversation** +``` +<s>[INST] <<SYS>>\n{{system_message}}\n<</SYS>>\n\n{{user_message_0}} [/INST] {{assistant_reply_0}}</s> +``` + +**Multiple rounds** +``` +<s>[INST] <<SYS>>\n{{system_message}}\n<</SYS>>\n\n{{user_message_0}} [/INST] {{assistant_reply_0}}</s><s>[INST] {{user_message_1}} [/INST] {{assistant_reply_1}}</s> +``` + +**jinja template** +[[Reference](https://huggingface.co/meta-llama/Llama-2-7b-chat-hf/blob/main/tokenizer_config.json#L12)] +``` +{% if messages[0]['role'] == 'system' %}{% set loop_messages = messages[1:] %}{% set system_message = messages[0]['content'] %}{% else %}{% set loop_messages = messages %}{% set system_message = false %}{% endif %}{% for message in loop_messages %}{% if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}{{ raise_exception('Conversation roles must alternate user/assistant/user/assistant/...') }}{% endif %}{% if loop.index0 == 0 and system_message != false %}{% set content = '<<SYS>>\\n' + system_message + '\\n<</SYS>>\\n\\n' + message['content'] %}{% else %}{% set content = message['content'] %}{% endif %}{% if message['role'] == 'user' %}{{ bos_token + '[INST] ' + content.strip() + ' [/INST]' }}{% elif message['role'] == 'assistant' %}{{ ' ' + content.strip() + ' ' + eos_token }}{% endif %}{% endfor %} +``` + +**Filled Example** +``` +<s>[INST] <<SYS>>\nYou are a chatbot developed by LMFlow team.\n<</SYS>>\n\nWho are you? [/INST] I am a chatbot developed by LMFlow team.</s><s>[INST] How old are you? [/INST] I don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.</s> +``` + + +## Llama-3 +**With a system message** +``` +<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\n{{system_message}}<|eot_id|><|start_header_id|>user<|end_header_id|>\n\n{{user_message_0}}<|eot_id|> +``` + +**Without a system message** +``` +<|begin_of_text|><|start_header_id|>user<|end_header_id|>\n\n{{user_message_0}}<|eot_id|> +``` + +**A complete conversation** +``` +<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\n{{system_message}}<|eot_id|><|start_header_id|>user<|end_header_id|>\n\n{{user_message_0}}<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n{{assistant_reply_0}}<|eot_id|> +``` + +**Multiple rounds** +``` +<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\n{{system_message}}<|eot_id|><|start_header_id|>user<|end_header_id|>\n\n{{user_message_0}}<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n{{assistant_reply_0}}<|eot_id|><|start_header_id|>user<|end_header_id|>\n\n{{user_message_1}}<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n{{assistant_reply_1}}<|eot_id|> +``` + +**jinja template** +[[Reference](https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct/blob/2b724926966c141d5a60b14e75a5ef5c0ab7a6f0/tokenizer_config.json#L2053)] +``` +{% set loop_messages = messages %}{% for message in loop_messages %}{% set content = '<|start_header_id|>' + message['role'] + '<|end_header_id|>\n\n'+ message['content'] | trim + '<|eot_id|>' %}{% if loop.index0 == 0 %}{% set content = bos_token + content %}{% endif %}{{ content }}{% endfor %}{{ '<|start_header_id|>assistant<|end_header_id|>\n\n' }} +``` + +**Filled Example** +``` +<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\nYou are a chatbot developed by LMFlow team.<|eot_id|><|start_header_id|>user<|end_header_id|>\n\nWho are you?<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\nI am a chatbot developed by LMFlow team.<|eot_id|><|start_header_id|>user<|end_header_id|>\n\nHow old are you?<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\nI don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<|eot_id|> +``` + + +## Mixtral 8x22B +```{admonition} **Work in Progress** +:class: info + +This template is not preseted in LMFlow currently. We are working on it and will update it soon. +``` + +```{admonition} NOTICE +:class: warning + +The conversation template for Mixtral 8x22B is slightly different from the template for Mixtral 8x7B. +``` +**jinja template** +[[Reference](https://huggingface.co/mistralai/Mixtral-8x22B-Instruct-v0.1)] +``` +{{bos_token}}{% for message in messages %}{% if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}{{ raise_exception('Conversation roles must alternate user/assistant/user/assistant/...') }}{% endif %}{% if message['role'] == 'user' %}{{ ' [INST] ' + message['content'] + ' [/INST]' }}{% elif message['role'] == 'assistant' %}{{ ' ' + message['content'] + ' ' + eos_token}}{% else %}{{ raise_exception('Only user and assistant roles are supported!') }}{% endif %}{% endfor %} +``` + + +## Mixtral 8x7B +```{admonition} **Work in Progress** +:class: info + +This template is not preseted in LMFlow currently. We are working on it and will update it soon. +``` + +```{admonition} NOTICE +:class: warning + +The conversation template for Mixtral 8x7B is slightly different from the template for Mixtral 8x22B. +``` +**jinja template** +[[Reference](https://huggingface.co/mistralai/Mixtral-8x7B-Instruct-v0.1/blob/1e637f2d7cb0a9d6fb1922f305cb784995190a83/tokenizer_config.json#L42)] +``` +{{ bos_token }}{% for message in messages %}{% if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}{{ raise_exception('Conversation roles must alternate user/assistant/user/assistant/...') }}{% endif %}{% if message['role'] == 'user' %}{{ '[INST] ' + message['content'] + ' [/INST]' }}{% elif message['role'] == 'assistant' %}{{ message['content'] + eos_token}}{% else %}{{ raise_exception('Only user and assistant roles are supported!') }}{% endif %}{% endfor %} +``` + + +## Phi-3 +**With a system message** +``` +<s><|system|>\n{{system_message}}<|end|>\n<|user|>\n{{user_message_0}}<|end|>\n<|endoftext|> +``` + +**Without a system message** +``` +<s><|user|>\n{{user_message_0}}<|end|>\n<|endoftext|> +``` + +**A complete conversation** +``` +<s><|system|>\n{{system_message}}<|end|>\n<|user|>\n{{user_message_0}}<|end|>\n<|assistant|>\n{{assistant_reply_0}}<|end|>\n<|endoftext|> +``` + +**Multiple rounds** +``` +<s><|system|>\n{{system_message}}<|end|>\n<|user|>\n{{user_message_0}}<|end|>\n<|assistant|>\n{{assistant_reply_0}}<|end|>\n<|user|>\n{{user_message_1}}<|end|>\n<|assistant|>\n{{assistant_reply_1}}<|end|>\n<|endoftext|> +``` + +**jinja template** +[[Reference]](https://huggingface.co/microsoft/Phi-3-mini-4k-instruct/blob/3a811845d89f3c1b3f41b341d0f9f05104769f35/tokenizer_config.json#L338) +``` +{{ bos_token }}{% for message in messages %}{{'<|' + message['role'] + '|>' + '\n' + message['content'] + '<|end|>\n' }}{% endfor %}{% if add_generation_prompt %}{{ '<|assistant|>\n' }}{% else %}{{ eos_token }}{% endif %} +``` + +**Filled Example** +``` +<s><|system|>\nYou are a chatbot developed by LMFlow team.<|end|>\n<|user|>\nWho are you?<|end|>\n<|assistant|>\nI am a chatbot developed by LMFlow team.<|end|>\n<|user|>\nHow old are you?<|end|>\n<|assistant|>\nI don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<|end|>\n<|endoftext|> +``` + + +## Qwen-2 + +(Also Qwen-1.5) + +**With a system message** +``` +<|im_start|>system\n{{system_message}}<|im_end|>\n<|im_start|>user\n{{user_message_0}}<|im_end|>\n +``` + +**Without a system message** +``` +<|im_start|>user\n{{user_message_0}}<|im_end|>\n +``` + +**A complete conversation** +``` +<|im_start|>system\n{{system_message}}<|im_end|>\n<|im_start|>user\n{{user_message_0}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_0}}<|im_end|>\n +``` + +**Multiple rounds** +``` +<|im_start|>system\n{{system_message}}<|im_end|>\n<|im_start|>user\n{{user_message_0}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_0}}<|im_end|>\n<|im_start|>user\n{{user_message_1}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_1}}<|im_end|>\n +``` + +**jinja template** +[[Reference](https://huggingface.co/Qwen/Qwen2-72B-Instruct/blob/1af63c698f59c4235668ec9c1395468cb7cd7e79/tokenizer_config.json#L31)] +``` +{% for message in messages %}{% if loop.first and messages[0]['role'] != 'system' %}{{ '<|im_start|>system\nYou are a helpful assistant<|im_end|>\n' }}{% endif %}{{'<|im_start|>' + message['role'] + '\n' + message['content'] + '<|im_end|>' + '\n'}}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\n' }}{% endif %} +``` + +**Filled Example** +``` +<|im_start|>system\nYou are a chatbot developed by LMFlow team.<|im_end|>\n<|im_start|>user\nWho are you?<|im_end|>\n<|im_start|>assistant\nI am a chatbot developed by LMFlow team.<|im_end|>\n<|im_start|>user\nHow old are you?<|im_end|>\n<|im_start|>assistant\nI don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<|im_end|>\n +``` + + +## Yi +**With a system message** +``` +<|im_start|>system\n{{system_message}}<|im_end|>\n<|im_start|>user\n{{user_message_0}}<|im_end|>\n +``` + +**Without a system message** +``` +<|im_start|>user\n{{user_message_0}}<|im_end|>\n +``` + +**A complete conversation** +``` +<|im_start|>system\n{{system_message}}<|im_end|>\n<|im_start|>user\n{{user_message_0}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_0}}<|im_end|>\n +``` + +**Multiple rounds** +``` +<|im_start|>system\n{{system_message}}<|im_end|>\n<|im_start|>user\n{{user_message_0}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_0}}<|im_end|>\n<|im_start|>user\n{{user_message_1}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_1}}<|im_end|>\n +``` + +**jinja template** +[[Reference](https://huggingface.co/01-ai/Yi-34B-Chat/blob/c556c018b58980fb651ff4952d86cd5250a713d0/tokenizer_config.json#L60)] +``` +{% if not add_generation_prompt is defined %}{% set add_generation_prompt = false %}{% endif %}{% for message in messages %}{{'<|im_start|>' + message['role'] + '\n' + message['content'] + '<|im_end|>' + '\n'}}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\n' }}{% endif %} +``` + +**Filled Example** +``` +<|im_start|>system\nYou are a chatbot developed by LMFlow team.<|im_end|>\n<|im_start|>user\nWho are you?<|im_end|>\n<|im_start|>assistant\nI am a chatbot developed by LMFlow team.<|im_end|>\n<|im_start|>user\nHow old are you?<|im_end|>\n<|im_start|>assistant\nI don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<|im_end|>\n +``` + + +## Yi-1.5 +**With a system message** +``` +{{system_message}}<|im_start|>user\n{{user_message_0}}<|im_end|>\n +``` + +**Without a system message** +``` +<|im_start|>user\n{{user_message_0}}<|im_end|>\n +``` + +**A complete conversation** +``` +{{system_message}}<|im_start|>user\n{{user_message_0}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_0}}<|im_end|>\n +``` + +**Multiple rounds** +``` +{{system_message}}<|im_start|>user\n{{user_message_0}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_0}}<|im_end|>\n<|im_start|>user\n{{user_message_1}}<|im_end|>\n<|im_start|>assistant\n{{assistant_reply_1}}<|im_end|>\n +``` + +**jinja template** +[[Reference](https://huggingface.co/01-ai/Yi-1.5-6B-Chat/blob/d68dab90947a3c869e28c9cb2806996af99a6080/tokenizer_config.json#L40)] +``` +{% if messages[0]['role'] == 'system' %}{% set system_message = messages[0]['content'] %}{% endif %}{% if system_message is defined %}{{ system_message }}{% endif %}{% for message in messages %}{% set content = message['content'] %}{% if message['role'] == 'user' %}{{ '<|im_start|>user\\n' + content + '<|im_end|>\\n<|im_start|>assistant\\n' }}{% elif message['role'] == 'assistant' %}{{ content + '<|im_end|>' + '\\n' }}{% endif %}{% endfor %} +``` + +**Filled Example** +``` +You are a chatbot developed by LMFlow team.<|im_start|>user\nWho are you?<|im_end|>\n<|im_start|>assistant\nI am a chatbot developed by LMFlow team.<|im_end|>\n<|im_start|>user\nHow old are you?<|im_end|>\n<|im_start|>assistant\nI don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.<|im_end|>\n +``` + + +## Zephyr +**With a system message** +``` +<|system|>\n{{system_message}}</s>\n<|user|>\n{{user_message_0}}</s>\n +``` + +**Without a system message** +``` +<|user|>\n{{user_message_0}}</s>\n +``` + +**A complete conversation** +``` +<|system|>\n{{system_message}}</s>\n<|user|>\n{{user_message_0}}</s>\n<|assistant|>\n{{assistant_reply_0}}</s>\n +``` + +**Multiple rounds** +``` +<|system|>\n{{system_message}}</s>\n<|user|>\n{{user_message_0}}</s>\n<|assistant|>\n{{assistant_reply_0}}</s>\n<|user|>\n{{user_message_1}}</s>\n<|assistant|>\n{{assistant_reply_1}}</s>\n +``` + +**jinja template** +[[Reference](https://huggingface.co/HuggingFaceH4/zephyr-7b-beta/blob/b70e0c9a2d9e14bd1e812d3c398e5f313e93b473/tokenizer_config.json#L34)] +``` +{% for message in messages %}\n{% if message['role'] == 'user' %}\n{{ '<|user|>\n' + message['content'] + eos_token }}\n{% elif message['role'] == 'system' %}\n{{ '<|system|>\n' + message['content'] + eos_token }}\n{% elif message['role'] == 'assistant' %}\n{{ '<|assistant|>\n' + message['content'] + eos_token }}\n{% endif %}\n{% if loop.last and add_generation_prompt %}\n{{ '<|assistant|>' }}\n{% endif %}\n{% endfor %} +``` + +**Filled Example** +``` +<|system|>\nYou are a chatbot developed by LMFlow team.</s>\n<|user|>\nWho are you?</s>\n<|assistant|>\nI am a chatbot developed by LMFlow team.</s>\n<|user|>\nHow old are you?</s>\n<|assistant|>\nI don't age like humans do. I exist as a piece of software, so I don't have a concept of age in the traditional sense.</s>\n +``` \ No newline at end of file diff --git a/_sources/index.md.txt b/_sources/index.md.txt new file mode 100644 index 000000000..85f9554cc --- /dev/null +++ b/_sources/index.md.txt @@ -0,0 +1,207 @@ +<img src="_static/logo.png" alt="LMFlow" style="width: 100%; min-width: 300px; display: block; margin: auto; background-color: transparent;"> + +# LMFlow + +An extensible, convenient, and efficient toolbox for finetuning large machine learning models, designed to be user-friendly, speedy and reliable, and accessible to the entire community. + +```{eval-rst} +.. grid:: 1 2 3 4 + + .. grid-item-card:: Extensible + + Support common backbones (LLaMA, Galactica, GPT-2, etc.) + + .. grid-item-card:: Light-Weight + + Extremely few parameters with LoRA (LLaMA 33B: only 25MB storage) + + .. grid-item-card:: Task-Oriented + + Comparable with ChatGPT on 7B/33B models. + + .. grid-item-card:: Open + + The whole pipeline (data, models, tuning, inference) is open-source. + + +``` + +## Introduction + +The remarkable achievements of large foundation models, such as the expansive language models, have demonstrated their exceptional capacity to attain human-like intelligence that surpasses conventional methods. Despite their growing accessibility, these models still require fine-tuning to cater to specific tasks while maintaining their overall AI competency. We are pleased to introduce our lightweight toolkit, which features thoughtfully designed and easily scalable APIs. This tool simplifies the process of fine-tuning and inference of publicly available foundation models to maximize their effectiveness. + +We have thoroughly tested this toolkit and are pleased to make it available under [Github](https://github.com/OptimalScale/LMFlow). + + + + + +## Features + + +### Task Tuning + +The goal of Task Tuning is to enhance a language model's proficiency in a particular field, such as medicine or mathematics. By doing so, the model acquires domain-specific information, allowing it to adapt better to the target subject matter. + +For instance, if a medical dataset is used for task tuning, the language model can gain medical knowledge that can be applied to other medical datasets. + +To emphasize its significance, we applied task tuning to LLaMA models on PubMedQA and MedMCQA datasets and evaluated their performance. We observed significant improvements both in-domain (PubMedQA, MedMCQA) and out-of-domain (MedQA-USMLE) dataset. + + +| | PubMedQA | MedQA-USMLE | MedMCQA | Average | +|:---------:|:--------:|:-----------:|:-------:|:----:| +| Human (pass) | | 60.0 | 50.0 | | +| Human (expert) | 78.0 | 87.0 | 90.0 | 85.0 | +| | | | | | +| InstructGPT 175B | 73.2 | 46.0 | 44.0 | 54.4 | +| ChatGPT | 63.9 | **57.0** | 44.7 | 55.2 | +| LLaMA 7B | 5.2 | 27.1 | 24.3 | 18.9 | +| LLaMA 33B | 1.8 | 43.4 | 30.3 | 25.2 | +| | | | | | | +| Task-tuned LLaMA 7B (Full) | **75.1** | 44.5 | 49.9 | 56.5 | +| Task-tuned LLaMA 33B (LoRA) | 74 | 51.3 | **50.2**|**58.5**| + + +Moreover, we also test the MMLU performance to further verify the out-of-domain robustness of Task Tuning technique. + + + +| MMLU task | anatomy | clinical knowledge | college biology | college medicine | medical genetics | professional medicine | +|:-----------:|:-------:|:-----------:|:---------:|:----------:|:----------:|:---------------:| +| LLaMA 33B | 39.2 | 40.3 | 44.4 | 32.9 | 36 | 43.0 | +| Galactica 30B | 32.5 | 26 | 30.5 | 25.4 | 39 | 23.1 | +| Galactica 120B | 58.5 | 59.2 | 68.7 | 57.2 | 68.0 | 59.6 | +| OPT 175B | 28.9 | 21.9 | 30.6 | - | 35.0 | 27.9 | +| BLOOM 176B | 37 | 29.8 | 28.5 | - | 36.0 | 25.4 | +| Gopher 280B | 56.3 | 67.2 | 70.8 | 60.1 | 69.0 | 64.0 | +| GPT3.5 175B | 56.3 | 69.8 | 72.2 | 61.3 | 70 | 70.2 | +| | | | | | | | +| Task-tuned LLaMA 33B (LoRA) | 51.8 | 65.2 | 70.1 | 58.3 | 65.6 | 66.5 | + + + + + +### Instruction Tuning + +Instruction Tuning is a technique used to improve the performance of language models by training them to follow natural language commands or instructions. This includes positive or negative examples, prompts, constraints, and other elements that are commonly found in human language. The main goal of instruction-tuning is to improve the model's ability to perform well on multiple tasks and to generalize more effectively to new or unseen tasks. This is achieved by teaching the model to understand and incorporate various language cues and constraints that are relevant to the task at hand. Instruction-tuning is a powerful technique that is widely used in natural language processing, machine learning, and related areas. By improving the ability of language models to understand and follow natural language commands, this approach can help to unlock new levels of performance and productivity in a wide range of applications. + +We list some examples below. Full example list is saved as a [Jsonl file](https://github.com/OptimalScale/LMFlow/blob/main/docs/source/_static/check_before_after_lora_tuning.jsonl). + +![Instruction Tuning Sample](_static/IT_sample1.png) + +![Instruction Tuning Sample](_static/IT_sample2.png) + +![Instruction Tuning Sample](_static/IT_sample3.png) + +![Instruction Tuning Sample](_static/IT_sample4.png) + +![Instruction Tuning Sample](_static/IT_sample5.png) + +![Instruction Tuning Sample](_static/IT_sample6.png) + +![Instruction Tuning Sample](_static/IT_sample7.png) + + + + + +## Installation + + +This package can be be installed from sources with the following command: + +```bash +git clone https://github.com/OptimalScale/LMFlow.git + +conda create -n lmflow python=3.9 -y + +conda activate lmflow + +conda install mpi4py + +pip install -e . +``` + + +## Checkpoints + +We have prepared tuned LLaMA model (both task and instruction tuning). + + +Refer to [README](https://github.com/OptimalScale/LMFlow/blob/main/README.md). + + +## Content + +```{toctree} +:maxdepth: 1 + +blogs/index +``` + +```{toctree} +:maxdepth: 2 + +examples/index +``` + +```{toctree} +:maxdepth: 2 + +autoapi/index +``` + +```{toctree} +:maxdepth: 2 + +about/index +``` + +## Vision +Hello there! We are excited to announce the upcoming release of our code repository that includes a complete LLM training process, enabling users to quickly build their own language models and train them effectively. + +Our code repository is not just a simple model; it includes the complete training workflow, model optimization, and testing tools. You can use it to build various types of language models, including conversation models, question-answering models, and text generation models, among others. + +Moreover, we aim to create an open and democratic LLM sharing platform where people can share their checkpoints and experiences to collectively improve the skills of the community. We welcome anyone who is interested in LLM to participate and join us in building an open and friendly community! + +Whether you are a beginner or an expert, we believe that you can benefit from this platform. Let's work together to build a vibrant and innovative LLM community! + +[![Embark](https://img.shields.io/badge/discord-LMFlow-%237289da.svg?logo=discord)](https://discord.gg/u9VJNpzhvA) +[![slack badge](https://img.shields.io/badge/Slack-join-blueviolet?logo=slack&amp)](https://join.slack.com/t/lmflow/shared_invite/zt-1wju9nicy-woXbNtS~5MavHSAtiMxmxQ) +[![WeChat badge](https://img.shields.io/badge/WeChat-Join-brightgreen?logo=wechat&amp)](https://s1.ax1x.com/2023/08/06/pPAQTPI.jpg) + + +## Citation + +```bibtex +@misc{lmflow, + author = {Shizhe Diao and Rui Pan and Hanze Dong and KaShun Shum and Jipeng Zhang and Wei Xiong and Tong Zhang}, + title = {LMFlow: An Extensible Toolkit for Finetuning and Inference of Large Foundation Models}, + year = {2023}, + publisher = {GitHub}, + journal = {GitHub repository}, + howpublished = {\url{https://optimalscale.github.io/LMFlow/}}, +} +``` + + + + +## Disclaimer + +This package aims to provide a streamlined and user-friendly pipeline for large model tuning. Its functionalities serve as a reference and are intended for use by the user. However, it is important to note that the responsibility for the preparation of the data and pretrained models lies solely with the user. This package does not guarantee the accuracy, completeness, applicability, or legality of the components from the user's preparation. Users must be aware of and assume all risks and liabilities associated with the preparation of the models and data, and obtain legal, commercial, and technical advice before utilizing this package. The pipeline shall not be held responsible for any direct, indirect, special, incidental, or consequential damages resulting from the user's improper preparation of the data and pretrained models. + +It is also crucial to highlight that the results generated by the model are based on probabilistic models and not directly related to this pipeline. The accuracy, reliability, applicability, and legality of the results are not guaranteed by this pipeline. Therefore, users must also be aware of the risks and liabilities associated with the results and seek legal, commercial, and technical advice before relying on the model-generated outcomes. This pipeline shall not be accountable for any direct, indirect, special, incidental, or consequential damages resulting from the user's reliance on the model-generated results. + + + + +## Support + +If you need any help, please submit a [Github](https://github.com/OptimalScale/LMFlow) issue. + +## Indices and tables + +- {ref}`genindex` +- {ref}`search` diff --git a/_sphinx_design_static/design-tabs.js b/_sphinx_design_static/design-tabs.js new file mode 100644 index 000000000..b25bd6a4f --- /dev/null +++ b/_sphinx_design_static/design-tabs.js @@ -0,0 +1,101 @@ +// @ts-check + +// Extra JS capability for selected tabs to be synced +// The selection is stored in local storage so that it persists across page loads. + +/** + * @type {Record<string, HTMLElement[]>} + */ +let sd_id_to_elements = {}; +const storageKeyPrefix = "sphinx-design-tab-id-"; + +/** + * Create a key for a tab element. + * @param {HTMLElement} el - The tab element. + * @returns {[string, string, string] | null} - The key. + * + */ +function create_key(el) { + let syncId = el.getAttribute("data-sync-id"); + let syncGroup = el.getAttribute("data-sync-group"); + if (!syncId || !syncGroup) return null; + return [syncGroup, syncId, syncGroup + "--" + syncId]; +} + +/** + * Initialize the tab selection. + * + */ +function ready() { + // Find all tabs with sync data + + /** @type {string[]} */ + let groups = []; + + document.querySelectorAll(".sd-tab-label").forEach((label) => { + if (label instanceof HTMLElement) { + let data = create_key(label); + if (data) { + let [group, id, key] = data; + + // add click event listener + // @ts-ignore + label.onclick = onSDLabelClick; + + // store map of key to elements + if (!sd_id_to_elements[key]) { + sd_id_to_elements[key] = []; + } + sd_id_to_elements[key].push(label); + + if (groups.indexOf(group) === -1) { + groups.push(group); + // Check if a specific tab has been selected via URL parameter + const tabParam = new URLSearchParams(window.location.search).get( + group + ); + if (tabParam) { + console.log( + "sphinx-design: Selecting tab id for group '" + + group + + "' from URL parameter: " + + tabParam + ); + window.sessionStorage.setItem(storageKeyPrefix + group, tabParam); + } + } + + // Check is a specific tab has been selected previously + let previousId = window.sessionStorage.getItem( + storageKeyPrefix + group + ); + if (previousId === id) { + // console.log( + // "sphinx-design: Selecting tab from session storage: " + id + // ); + // @ts-ignore + label.previousElementSibling.checked = true; + } + } + } + }); +} + +/** + * Activate other tabs with the same sync id. + * + * @this {HTMLElement} - The element that was clicked. + */ +function onSDLabelClick() { + let data = create_key(this); + if (!data) return; + let [group, id, key] = data; + for (const label of sd_id_to_elements[key]) { + if (label === this) continue; + // @ts-ignore + label.previousElementSibling.checked = true; + } + window.sessionStorage.setItem(storageKeyPrefix + group, id); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/_sphinx_design_static/sphinx-design.min.css b/_sphinx_design_static/sphinx-design.min.css new file mode 100644 index 000000000..860c36da0 --- /dev/null +++ b/_sphinx_design_static/sphinx-design.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative;font-size:var(--sd-fontsize-dropdown)}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary.sd-summary-title{padding:.5em .6em .5em 1em;font-size:var(--sd-fontsize-dropdown-title);font-weight:var(--sd-fontweight-dropdown-title);user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;list-style:none;display:inline-flex;justify-content:space-between}details.sd-dropdown summary.sd-summary-title::-webkit-details-marker{display:none}details.sd-dropdown summary.sd-summary-title:focus{outline:none}details.sd-dropdown summary.sd-summary-title .sd-summary-icon{margin-right:.6em;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary.sd-summary-title .sd-summary-text{flex-grow:1;line-height:1.5;padding-right:.5rem}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker{pointer-events:none;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker svg{opacity:.6}details.sd-dropdown summary.sd-summary-title:hover .sd-summary-state-marker svg{opacity:1;transform:scale(1.1)}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown .sd-summary-chevron-right{transition:.25s}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-right{transform:rotate(90deg)}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-down{transform:rotate(180deg)}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-bg: rgba(0, 113, 188, 0.2);--sd-color-secondary-bg: rgba(108, 117, 125, 0.2);--sd-color-success-bg: rgba(40, 167, 69, 0.2);--sd-color-info-bg: rgba(23, 162, 184, 0.2);--sd-color-warning-bg: rgba(240, 179, 126, 0.2);--sd-color-danger-bg: rgba(220, 53, 69, 0.2);--sd-color-light-bg: rgba(248, 249, 250, 0.2);--sd-color-muted-bg: rgba(108, 117, 125, 0.2);--sd-color-dark-bg: rgba(33, 37, 41, 0.2);--sd-color-black-bg: rgba(0, 0, 0, 0.2);--sd-color-white-bg: rgba(255, 255, 255, 0.2);--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem;--sd-fontsize-dropdown: inherit;--sd-fontsize-dropdown-title: 1rem;--sd-fontweight-dropdown-title: 700} diff --git a/_static/IT_sample1.png b/_static/IT_sample1.png new file mode 100644 index 0000000000000000000000000000000000000000..705705509999310e1323b0cb6742ff04c01effdc GIT binary patch literal 523440 zcmeFZWmp{Fwmyiv27+54xHJ;ngC$6CcMrjWI}HH>0fGb%4haOe1gAT=LvVL@r?G}9 ze&^hK&olGofAeKN%=A;$wY#cz)vmRdyz5;BpVZzc;9^l=As`^&zJ4XEfq;O8gn)n= zhk*v{`4T&*3hXGclaWz-Eh9sx=IU%?=U|P1@aj`i3c8x6K55XAA1E_4nIJOpPdZ&D zg2v0Yxk~7i&oBuTBZ6}*6i9U6b4El2(Qg+=e6UBfDvPi%SFfDHt&U*XvuOR;_Ym}~ z{&x7`;Ve6iZ_95h)9<js>oCBL27%bRTrUHW9XXD*FJAV_k8gFAi0le62!THb=@mlv zhIN$w%1SFj66>v(4;Wo)?XqCPyBrLDFqI1f^=u*{gym;+3~yTJ`BP1hid8*FN3asy z6*S6VpxN?Fw0rVXD)H#ETi<j1&u*hAmcM0{wNNOnDG*S2Q`lc41`SBTqm4|kzJ~9I zRez2E5$AHq&oJ=uMa7;HCJz1~8&{wi9#+2LQtexEW$JZvZD4iHGU^W{@DH6?#W@^( za1*_+v$A<rxXCS@l);7>AyvlKXbT&y`LNERh=rSO@eE8K_(AhK;)v!zzYVi8Pxc<s zbJ}!53bD@Kmy$7Js(8%rB2i}`@tPdHk#WOG9Og9zsqAT4x?gEHVTD*ir*}R@>Q$N< z?9rH+tNZ6YIXh&v^PqV7o;}ityOzSOi-ZbszT2h?EaB5C;Uaa!(_e0dz#+Xc;hMGe zUni&%kTIT-Q*W1;I)5$~`Fb&vxD^o0c1ymmdou^!)z_ikAAhVqctsOunhx74hYb;j zAX?%YA&x=s3m=5QGugXHHucNbcC%bT<=@K@-jjUfo&uhi2+>PZy=%wG5-#}9ZYJ!O z44xny=2cZyX^ug1h7qWy(1V_*U#49m<V0lM_8WR@ygvNqyvk)h;vDoO2T>&l8z-2& z63O#7W<4Tk85>EOECT7o3~@PFEAEpHgp32-Ug{YOT6(L18e(xP&3gnYGzDosA=IG| zrDckGM5mB&DYTnbC2pL>5Os_X#{{T(FTcjoSmEfu^dulU4f4-5V?l}xf09f53gva~ z#vg+pWNg7~ITSzeZcs%qGsDZJ7XAeMAf*Uhl*%?oVQPP&hb|Co+p3(3ir%Vz>@S3B zg0j_$dMsa0RUU@ls&edeMd44G+zMJDM4`jNpdL{uC17fkZ;L~DP99Ik9#8)br$~+> zPUjnP!>69OXX`|0;kg!MWbDzDObA4uSIkMwbu0wT*tpTTRZ=|%RFpwBWM{Zat?w*3 ztIGB81n|;77)Nt<B%8y`Rn0&a&X%`TM=nBC)V7gsU8u{eE_U_S^|<w!_44z=MuO$| zf*-oq_)n6(z5L0tqJ~>ZSG|_;SB6*pj^S6aD5xK3T4R<KUeQHhT!-?uNw<-|#5WJ( zR@7pmATs`BE-T@}>O$lKs!H<CoK~e`EQ(VG=7mLr!Vb46V_d57m9MOCNluPg&T<~N zg7l9{gIuGPh&JmmlQ2~)?P}CCl`MtiFM?lS3B&P62}>F*#6*##jKN=IW?mKL8|8@Q z`fGh-GhlZmzK$#*W`CMa>_=?MN|+R#q^F3Tc$(Ok7{h9;OQFHUmd;X>)X>MC#Ga(e zwxms?o?AR!99m>m?4Tz6!&Pphfz4z>c0xC)!XT$n;o`$P+NZe`8Z%ln9-JPa3;JK# zAM?{jg?_#;;5pzfixMa;DBjE=$*+|y(>VC~H9F>x$~KiRS^yE81&#-=X^at3GR}dR zv`Duoz(cxla6!1i^6~QdU5=lJzv8Hv4!RF=ejWT8`-|Iv#K7$*iT%N7;}8B9Ap-4= zXwLE@(fNEdZ`)@{W(jBef5P5+y^G!6-o4t3@bKI=`a?eYeb0BNU?+JuYlM0{f7fRl z^Fr}rXt%}e2ajGfj=XSwCQoTa8Ep<|qGIG|l$M{HKSH2K@a+q4hgZB-6ik%K6t(1d zlsn{MWSoM<g1%<TFKj3ZDVzllx$n&^-aWCe9{M)3-ca<Bwfn{J&&Bh2^3H)Vhj{(6 z8BVth;W4oV|H5lr?CG`<`iZ>J)ka2#9V^zK^L8`hM51HX1#fK*2AXuN*ps!(wOh0+ z_!mT`MV1<8ZYDVL^)YK|2X<302D?U>+HEQZWem0Fq~`qRbmjy-Nj$}x6q^h$iTxyR zwJ$j@E2ufBQSh3m4uv(SWvHfvYlQ<nTs^-C@eARKPzp1P=n5}ckEX5+;12Y2>5)38 zXmb@BNi>KwY}V6w!21XLI2R6b=FVmcYEWxnLx*mH@3$JK>ifmWXg<+2iCbmeWEl+` z3>TVwH1V$pFhS;U)1lZS*h{MWT-R|M3PZ1D_d~tSz+YWE(p(?gDA}bvFkHFq82%0F ztXOoOUK#<XJv1OVNU8l!4r-#J#*5YLCdYHfGa{U(k;RL|DaP=na3JKsbixgmL6WKc zD2Bz4_cTl(Jed2<^kilCO2JB08#ps0ok*h4b*KhoE@Fd_I)1z-EFPU<Nx?_KG18aJ zk%aTJQ<QpS8mT7f*|SOJ+UGhXg6vLm^S`{yyv_ZUkR+ZlnVYut7%er-ZC(z$W#|eW z4f&5<D{Y$U=lr6xY~2Y{#BRWjWwao&B*JG3T>0o?-@x!X<6H4JbDH$JOxTyBPS6HE z);ucXhhQt%`j_=B)<af9O*Bn$&3=vWPzUp{V-Eu<1CQD8^U8DhjwN{&`RBCIfsTO$ zdTsT_AL2@a_OEs7rZtRMk~v+Ce>#p-K7UmWqU_7cUicy-Lz(}kDD52G&beH{$@;Ln zlP4;cQ(d3lV6<V}V&~>NvQMCoB&eNZjnm$+9O^%Ky7;v8DL;E|(rflP9rAKEy$R?n z_#&A98~=`dV1HdNs25x(;OS@|{HAsH1BCVt`~#%Lkx0B~yj5F%qc9NLM%y$wSFu!e zZ%7E;epjX9qJNTt+l;FVu7(%g6;^%jrEC%qcAWi1UZ?-_dWdA06J1eD@l^4q_M?L% zn{^^d5@fFS{ag}nc=hhVw}a7x>eJ=ZWNLX)fuk#pcmtQF(WdGu#in-w6XBV6nc_{& zp8Q&STBN$*Mb7zviY{nD(d4&U2Ye^h!z^1r%S+F@fx8B$>`BOKfGI5MvL8>D>TQKv zd5P$cfcKi>MxZiUu@^^wKDSGR8&Z@~yrbCp+^O)Ja3`J=`uyH?>+PSBTFU`T-0sh@ zx|umyEbl&iO%}ivEEMQBST$@^May!q_plc~DY>Y)Ro%%h7Ay1g9U~u2`@m;udo~o4 zL6l7?lI;qqa5SH5$95rg`Za8K)JW!ja>@u*A{Ei2wgokrN_cc$^!1hulnhQ~l=FLt zcxGJ<p41T;zcE&s%B-lHf8Q`NE8cXg9BVs#oh~5=T3DTL^b|e!gk^4v!VZU;*qgec zu)Dx6_!Pb?ZM1|D9OL%KcGc-xHS?_MJFwtGi~8ns(S^OSx$76FJM9uCOZ}474_Bk6 z$I+*y4pPoJhYbs7njwK9f+hn2BM%yPuI@jMRg)x3Oww9J?o*~rGuvI-;T4P(-HQ(1 zCD)!0qTybS3@Z$(i?$G2xZ1h;*;=sbfGTyir6hhd*ZqeFjr)l^`@Omx=h!aZ?ye3a zOs~ABQfgrd35eb`v<Qk~2;-D*AGp1$v$F`^p3<6q_zhm|&GLJhf$&yp(A%&>0{u6k zmWob(gF3bIr@Uqa2WQY!(V|zLDlIA1O?UO2ZN{PVXNF*Kj}`ud@xsGTGqDont3o&_ zTo)~<aS}-vK(CS3darF%R1nyJHU<I;A_W2}&_V=O2}H{OZp$OGARzy<AHcogb_gi{ zKIaXvef-1$>tmmPZIQoxL_i0AJpoql9Hjp`8w)81`M=tzk7puCYs$QS4Qw?nU9GL1 z+}=97-%RGX0y{9@ztVR@Kp<g!ToGSuJU<4mKW(R_=dP!sEMn>G$YpNjY+=pi?fCxj zItXIkB0$s8+TEPa+tI<vO~hNA{+}~MfcE2V5Ix;Lr?}gT)9b0I(aAWwTGI(|adUCg zOJLE_(TTZQ*@$S!%Ky7N@JpQjt-Jes5fI4B%Ztm4kIUKB7Q`bgEDYl21@ZE70%vf# z`8c_odviLuG5qTy|8*T%Yd1?*yZ7#P&Q5fX*EP3r_HY-cr+>WBe}DcpPHS(w|GATs z+rJ+RctFtO5fBd-H|W2w4RjTI+$*AH=WXqvFKg!r$PBoL1kVfJ7h?Z(_<tPwpIiP% zSH1t~%F8dn`=4F^<Iw-TtG1i9tBkWFa8q}Q|Cz9VcmB_V|L!OTdVKc(kj1|Q{m))N z(h^u=p#PpV39N3i2!CKAsqAD`wSX<4W{)4F9^i}RUt6G!f)iLNcM*bsAcgQ+R$9v& zaX%Bi`MF#}oqg}CSyWF<Y$ey;N-F}b(JvtwEErEv5T!x%(gd<!Sg=`)WMvr@AzrQ6 zKj<(@E0L7qGM?L_GQNs|x2RrEsEv*B*%mYnr3w4p|AN*mjO8}&7M<%%7&_zj4+skr z5+MH75-k1NER`4$-MW$W4?P{y-z>|RuL#x1rBP(1{$@erL1ab3TkX*NBllPRWu+p6 z`jG!-+`!XvM*w4gPr#h@f$OgxoeoI@MT_RIMXwBuJw)h)*!{1j4v{d9KIb$DBjT?X z91CFVR2`oRbE5vLe?$;5ViNk_&AF@@0Z|<NGTj?7RO7$V8Q`wpFn);rox0K?g`@&w zM|W9e-Tq6pp_7x^_&ak$BqZwq#x4{=q$*ANmzQ8gV#EKtIgj{F$3!RhTROuVtMM<@ z1~7G>zqC`7|F=yY=Lh|=+pzeS#LafTbhOgnPC)Pwrn2b4Pp4p1lI^=rfkiSkx!?R# zMq@4Kqe_k_O0j=CH{&v9L&96`bqk(`P}#RqPZ77W!GW;VDA1*n?0V5(&eu6xa6E&; zW%@I5R;0^!#q36Zr}CP(!A0_f$GPD&uC)Hgty&4(kr976qMtHmjXMQyN}v{Z(O3Y@ z2N|FYRF|$H?4tgq7fhwVz@Zc<HO=G6i41~2LH1$$OJ6SY=oiA@ud?s{osdGZAN>lL zf(`BO`v3p;|NpxDrF5SnF8S_p!Zy>LJww6cKh&M3E6u4}^27bYf3No@ET{-BtV`Tq zS=Q|oq&Gg*HLCJL5_}paYi-Y_I1m^edHPziEoth1r+wT(D2>G!-n&JGjhb(Szvpk? zuQN-!7&=tRDI9IDEYiI{Y}jgS$CsSX^-r`;qm=Nk7u_qZnHSkB9iv3dh<uq_&Ht3q zMp9nx`Wx*^pZ)*Nh{>dojI~jkk07`67gMH3PE7{_f-bAFu>0F1Qu%-w;m!A^@Lk;n z-hPfXf!VhVb=!GSBob5Dq!o?3Y!&Mte>LT98+3vjHj>?7OJFc{a#`Kttg-LTcaN#_ zd=bQ?vR$0;5BQpv666u?_S(a^9k2`B|J?w4h_;LAm(gkcmlp$I#?H_1l)%hc-WC%6 z_pqJ9>_auObf3+%1!ca$^@4P##<s1-0GGZ*R;M|~I**bHNTaU9zNa_Z&28E0!;t7v z{fuq)LcrBZxJRpj-S?#VOs_?KFBQpRBDI;~q4z9T+`l#wf?w6>T+B=Pn=bwDU}Z4< zqa>q|-4{Hj8cx=_yHnn64U5AvD8+r<54=EG&G$EZiw4gW>Gvw2klV5B`|+sO{W|W8 zrw_4`_tS>1{x>^?du_)XAn=T_YcHe6RKX>!9>o9lpw50I!?AW|{^!^m!`sXoS!;Iw zk)knZYnCb+z4lG<78*UywR7{<qU({3^Ezm+4kJQ}5=DaFAvAq)aJnnOSN8uD;rV7u z4YMFE`W>}6&DXnxbpS1K!FC)z;>EqND3*qUs&1OY=CdI;y=jVfkwFJt4{g{Wci`;0 zTNw1=Ai*(Sj^tzxsiJ;0vL!AWndIZcb@qcxIBlT!fu954Z1$XSiNl22-Z#|X)(lkx zS@xMS&%FjKT8FWGuj(n4r^gcl*^`!l>F@;4eEj@^|F{0ClF0ulL<^Qy%CRLzJc2$1 z*3G;2Km8!vP_A2t%=EjP7ThelnQA$o?hM&!mmDWXocsJ>=-jeF6L@8=U{IrSeA*8> zA~ATIoAqX{4M+cEwE_&cuiMJ<oAmeD&JCacqQs^DpHj~Nq%JpG21uRbMDRWz<4V#0 z^%gK{$0w<d(=4n=wY`e5pZ?DP{ka5?dFd$UYpRM*P`h*x9wzBZsCSSlMh0be(Uuqh zHd&r-^VM!1P;RaG`(=M)K<M8M3w=t&O)s?gfb79RzN^7xC<<s~IW>+62HR!_E{b1V z@j0!?k-B4ZHA^jll&w{P1dB~cO-|ua4cMNfzOeh!Up-LPblCVbV04cagGF3JEs^%o zWpV$+5QCqO9iDX4!bB@LnvdIL*iR$N{(%`%x|ly6Mz!y5>i-LMNX7il(M0iI4n}`8 zqqL|la9|7tf1hLXN!MZa!(Cz1)oRqjLEX}!iSG`hpzHdpx{fDG^~Rnvot%|YXP=zV zu(%r5pM;0irkDoK3<}ISIPFhYISukpxt|S*R*0T-5G_D%5BI?N1D7GRcfT_OE@$rj zT!NBKeC@oBThXVu99u3XV-7xpA8wbX$~&2}Z^jGfYv-Ky0CdUV)%jGnp1q=Zv;`Q& zefpyhgX^>>Fspj1ik-;b85~e`wvXg1H0hcKOh65r;zeg%`#BemSK8flC9ivL!FOx4 z3xk47`_R}hnbpq|5WxNlhAb?ZPqJ;ZeC8$ZPhwRih%-5Br!AbyeoaP}k7qyGV%03T zdhyIy;_g_cZh*J{sxpoXo2%Xoj(u4odG@NkThVCSTJHC~#Z<Pn{iMEanG))%l)m3) znyvq}E&Fc6=GXps{O)M-HON&b=tj&K_65FOQQy6^^DVmbD9o*|?R$#JE{)$lPlcM& z%(oZ{$-w5iO7bjrHwRrpZhnA52c*@69ir@8Rx>05!822G+(qW-c(V09*`Uv{x|a#p zL#nT_I>9%_S0bAfn<42cj~I~%nc8A8(`VP`FmVmM0`XbSavBcsqPD2=D%T}Oe7Ko{ zK8B=D_Ut%}a2nqqDTd)jA6VKRb>)vW(z(h`g5<@xrZL_p3H;z-WqcB^kM6^<TR6$% z^(S4F3u(4l`q+mq-PBt^Fon!IXGTbYh|C7gb3*W3E1>s{_)J(cfEL<=(DlugWP_>} zF^QPQZ(g>}J<gU>7r8Bt<eWrx9MMCMYV=C~cZT;D6S_@NT#Y|ASB3*G`Jij62Or+Z z=3oZXK3sJNru?|N1R}sLpaD%+Uxwt&{t%J%-1p~%Upz2y^PjgDB>z+slg;4>&ZTGA zyyd(-f<h?;os9Gyd{t4<LLXIG3^wn!@GP8alv@g+Ok3A@f;#YO<<M~HCfV<_mw92% z8G7)vds-*86*&<>Rb=ORg<eWw6w*8xJ_T+7!}m;0T5Xc`ZCqHkTP|nqW6pr+w8;Jx zFby9Q)<fvSEwqL4H}|Wjw~rpRo{&L)oGUjjLW5c{631zSdPSycD+n3yJrsW6OdYAj z(sZnHmnP(r*R)^VPvrt~4X5@@#TN}c{#+^Naz8WnMszT@^oy6CxRlG6;3veF(`}@v zzwHV$C&h2~Yb2;x2=b&n+Ax`~_A)!bHG=~7#VFU0aYZ$7t6i3gOigO!^t0gNvE2uH zQlm;p1i$pO|B>I48;cSi0OL31z#H+i=xkZ%)%0fI%DtoNr-{<Nq=_qrP7R&-G@5wo zi8AC@N8pF1;cg=akaPXYM+uN-SIAy$Jvy{MvFeyhA&~+$V@vC`6ac%fSI-_4ht1!M zY;}C{jlI%z>aX{Fim2&!1B_=UM(nhwO(fvggpM1aAq}FJ)0P3ocL4Ob-HPA?pAAbw zE9wB$k#CTw-o_LyS3dS{{ax?ObB0a*(uoX;6+8aXw7<%ZJ=3+4X1AF(FL8TxD0EqT zJ6OTxO6e%PILLR@V}iRH6voaNl>olO_S!dRu9t~fT%taPJLBq6`EJM*5hLo$zJ$+z zngevT<t5*d*xhlvNtQWbpRw1%Mmb=Z$x+Wmu4A&w<d@?WXin^^;g@r|XRn+A-UbH? zsV9X6srpK}{1yd`R~!ILWJ|H%#7zUQH_~HFe=4D(l8{*Nmh-B`pw^t1Y(I?F$rR}M zpLC+{p206OohtY1dV1ChP{{T~kAEXC<i|?vk|OaADS(ZfcA0-)i7Wa=udHQ(?|mfY z-z>4v)Yzw>U@35v=9xU)!=OutK&8Z}0w%5|Bzb?e)^dVyQ~8Zro_t+42ZRK;G1YmG zDPvtf90ua0yG=p3xAQ^X8{aGhHv>Im$Ia9dJpg6E^X_vSiS*L$l`5v-gQKG076&m6 zSo`V9=+P<4I6nKZ(~lNmEvt?{&bisH-PB&*`QqE_J)ZzWCUcJrV%ano4wHUXy4i`x zh*Ns?%$++Z+si@WQE3|iFjnN$Ir|7IJ?9(+E3`t|@cQVL|K#O#izi~UP75*lshh~~ z;Fnl}@6WQ~$;c;l1nyqb=ICHx8f`B#trFcZNc#f8H)GkW-7TwlSYoyrF7mlgXbn1X zBFzZ*=9ca~7n<%cLMT~!)d+L-LfR}BbE#^8*fC|y1X;Qs^73yc<F?sbG<KZe3}M9S zDEm38cnFx|$<cts?S5b$h1|fK)nT(mT*3KeK=EQfx<3>1`A!W%2Ty<GOi};v0ePhp z+7E)xvp?`GS5D{{`h1rrW_E$cD>Qe1y59p_`S?Cso&yhe#45{%>leo@x%*a&`3LyY z!?m=`DGxGUV$^cw{Kq7vKB^6>6p_OfL+gG$?`%AQ3rr$WmM4}Aai`%HXZp68+LSMH zYd+_3ZPZ2E|KrO0t{m$YHunnDhCd!_g1_jnFxOOnc#X&bK~u<#Nx~M&ng1lS!>4UL z^IE*y>}{I#E<s9lH((5!OiPD&lE(^%?f4RD1A&)2TgsnY(FETus-oH3W?Krt(wFW> zUH0W*t8QSgz4GP;(Tjbe`74#FgHAd;y;O}Fp@#vbd3=2F)&sAe#Y4)anSkG`BkZ(_ z-!ZO!RRj#y2}f~MzcL<ITeacAyzqSg^YtUX6@9onqsC@@-{ah4Hh$Lg!aYk8)-W8V z>%LEqXk~Rn-Sf>A2pF1@h)m^ri7)^%D#PQcQFy3&&dsD*6j=ZwCxJHm6LX2EoSf*e zP@nKt##*H(pBkS1=6O<i%cX%Nr1PBz8J^7)XL3l|j2W)z8dEen_hxJPvz}fk5Gv8^ z-H8wJF#bqlt&KEyk@2h@M<XYZTekADMRi@vB-1LFPu<c)*NqNUYGRsO-+h+5b*2A9 zis;$%30JqYvJJ}#w%`SGvk7P^xowd_U_fDU(YP$aU*+N6BrfVFFR^`wb(U1-iMW@k z_Z|23zYOKz2^(c>BD~VGy?E<}DJM{GDf+yF8RcVSG}#U3_D!Yc)=?m=Y4&c2`Gq?Z zlDPbDG(+FEnZCV&Kg9R?E5+FPDycT6*L}JaS^QyH1Bny7H8e?S)uy!o>J$*O#PUf~ zflLCJ;1^#F%T{)#+mJBd-nb1@^NsBQg|SVTFyDp*c!?O%ernLy#K!POz`wn=bg;fV z8}m0m^mvQ|OF&Gu8MCg8WLUYXYz2ZVf9pK^P1Ytd1{bDMSspd~2se*$mMU8l8@H~^ z*&X)oUSJ!hsrX-QVN_tAdj!sq^xxAMiF|^3T=LG1)(wH$tRjOJp;yor*kV&xy6wQJ zDW|fSEtb-+^Hm5dmUY4UQ@{A{Lku2Sx_9R6th++f2mx}mhS0^=Gi`;5`)I`uX&O#8 z?B(x_266mslEvPcImo#fOE52`y2^X*mDNpVy{3jOyUg%*-6po;3QW`GJ24F01*}mn z^}Nh{Wo(TV{L620WatNTU;UfY*L`9y^&BfD`8Jje#9kT+e@QM7%S?M|WuwTO#(K{W z42#cWC$qSG|7R9^d&{n<Gx*Nn^0Zr(_+I>M6M2R@R;Bnh-LivfM%U}Xb>SCO!bS5k z7N3UwJU?v-*#~~9;CyTsc-b-LD-ey`$-p1gZQ8=zbP&H+qwwG}6=!wpbZIj|zr7?V z=MGvE1Dvk@UAR$QKUdSZF<&QAcJ?5WdwbnrUK!LjG6)yuo-2ytu%ccIWF#J2Yd6Ih z5x;|oa`5WHn33;|11eLc1V`IBKHCB^FmVZ*ZGI=pe|0%e%sA`MaA2ux<P!D}2#)3Z zhU-z~ykMhG#b$iqj1(=yd-zQ71?Kc51cJvW_ge$O;pE+A9Td*V*ZD!?$m{HT>nO}D zF!)476K$7?E5MI{sIqfEjl6}dgNN*^wCxbVb%x8;gsy3eQz>@ZXW^y<RS98AJ{#pO zsxW;#YS)~;b5k^>g(Y1JozDu9fqJIq<M2z&AGDJa?Bds$kKjoH2vjB{@?Njrp!jAY zkWBivdE|w@401$`1ih_li_j14ANZhYQxe^r7p;#|s>y;q{8bxbkU_2|g$bIMS&2mq znV#u;CyCL?Cr!vbukai5=wrSeQurLMLQUM{vDi`WfMtO!Urk0zZZz55>e~`C`}>?9 zq)TgJ6&MjnTKD9ETTc;H?1l5!o=QfYTI~;%+ARbmmZ{BRmM2_Q0MN@L@Why@$Flpm zP-K8hs>H+f@KhqJPx94Fa)rn6pH>X4=vJtf&-1I4-RZr^pbkFNreF?38^&rbNi|X< zj|uHx&t-ClN`oiGWoY=6f`8ezy^aKcO>r_0@v;S~LR*F|P1OO!{^aGzb)h8O?#f@G z+i9ZpSsV^R=SG&>C}9{GF}{n<4u6fK2}M>7XEtA=v}H<l`Tn=8sCI6GtukW7sKl|& z3_sb+L1Y-2mZE7<(o$qSPO`m)dg-}=09=C=$q8VfXNpV8XVuo@4=xwHmKyh1Qq`bo z6SIwbcX9M)$Y07$e~84*Twt&uJYsP=Bx=G}JcttquZdWZJQLS_>(PO#S|vJ>HA0A% zHsO1Okgs=|A>WU9w3vJnm@CCffx49$ZfA~|9TSM}p>5TFQ!*T%HY)(Yu(XLMl-pAH z$&FADm-gBShv~(I@xl=;(!$}`rE2NAJ(!4$jTcB9Zbg}U9}-c}7AAiS`0P>}u4lRS zv91(KaseECpdo+lCT<L;{$b-@`SBR-U}W~~(gWNSJmhIwQd%9k<eH3aL;lBk&2`?T z`;jTRwY`dU<eSMFLwlaVS};*w<AF2R)QOjnbA14A52*Fy3#&h_@qE!bof&wu6KKB( z@H(^E>7C-XNO8A^UeG-ty~lgtn4`5!7W6c?Uw%Kx8zI<E9T=Xk-R5D4T%&??61{** zYNR$dnYssXM|n%hLSi*t6!zXk%kSGfo`4PYkLob+0$pCnNkOgO)OTI_I^+_G)~XB@ zUXU0%tPGZa+~O7u1jqp2nza>!VzDQ8N*?<gWx+C3nw6A2)gI>~3QY_#Li8w0v?|Za zohS+VIOjfe4-vn}(BF>&T_4n)U6&~@d??iJCo`0-#`WAkgxoqoRh;T=NL~a45C+!B z9X_To$2A9*O@_$m_?qkS%cR}(I*++d%|r;7!|kA3LFIO`X`s)WJ*uOJZ3W3<V<mlE zPmSRTByK6@vRX7QthOilI-aI89)@1)Crj*&#!Z*I>=g}XfdQYK6G*7|pmR3ep!$-E zyM%QA1<u3ZTbgQtu?9I($~DN(G13KF38?Quiw!f_Z=1)fw}EJ34eU1yhj)VOXTpa! zyEuLZ%~_S;mIb6wwA{~9I>A*Yi~Qi#*cI=G#o*0;7p4{UV}ZT}b2j0e3t##<)L}T1 zo0-muVV3OB&xY+PO~;pp&P{G_pnqyj;lG!%JZJ6ZCD8pBB!^obn%2FXPI2pI-Hz(5 zb@loV?#nV4B80<lZL@zJnR<>S@sqFgn=bSXLYMu24L4tRr62B_8kx;4g7+&%NDlmt zO@7_VF+ZjO>8B~8^Wt8MTQs!*s><%<tllQ8yV=t5Fm$N-Bs$gBIN_Pz)F3~k?<f8g zTkP(DQMa)$`$r0cgyoV6yryIvGBt(i+O<yU<N|Fve+L^+7@pSgJu>i(@w802`#I-( zJGhW4N5XMV?*YN0^*LS)U-&$=;9zJnd>}CIFD|&}Q1j7{Gq$J}tzgKSosaUo_?G4( zj@5qZ7hh^$;o?1j*N-INJE~LS&N}Y^d7qI(`78BhE>6F5K5=p2alodzYZ1SkZg);I zfms}e>+^Y#n)+9zi}_T8rxJ^(&Gj9BO*BW_CS$odpAW0nK9{}xi7F77u0o07i4AJ5 zT)HP~NG{tHoUuwMpaoIJK5`%Z2i^{oHkqtZx9|T1N?fleIGt~g4Cz!f0ba6%$+SB- z2o^?avfVFkI5^iv52EZC4m|^ijxJ|EqCisWrl+y~dJb`Ia3E7V2>^nUA;w0Jt%Hn; z*miiTMhT^`tJS^sLz9CTmiXTC>bKVk8LYjNi)JMUK-M%-XkY(!@=rikp;OzS*x5i} z32V(a8k!<%pDq%UYtF$e?^R6b(;uANu1cK066XSM5B6#Wu|R3s7G5KAq!Y79eInLu zLerH2xtw~(DQ~gyB(9d<i(bd`1^~S7wZsg7MD}h!I$$a;3VgSsh1u-9GIOx#Qc2_e zPQrEi+g9>c{~<k)?|LaQ8D6`&j%n3TKUF417~V+|aa}gU3QKez&4P#rOactgyc<2F zKCf8@`W52eBPwQ_T)zP1pG#Wh%W0B#EBJ?5eupbRH_1YBOfcujG|<0}dL2kG_xwEf zTH{=6M?TN&v8^mztm+KL(@*uZ0+?UU{UzvWAA1bsyGrA==LZpd5(j&wMLLt8{5{nt zWb#)w6P9-YZGCk=lxX~qrI$=|Tlh+fhe+OD^D53exFo0Cs*Dt_oLP@CT>f~MRT&l+ zb6{fjN;3N9!)1tntAK5^>7S3p!hLubsB?xhANZEgX38;eW50%-&60HB3KAL7;ip;$ zD$sn(Vuoti&I5AAlL-AJG|ffHc_u8qqa&<3SgpK}t%_CKZdDpt-FLY%F8GsrTriqP z16JtSqgWgFvpgUdHxDu_+9l-JR_^KZNCX>drhG=9`>6r33wd9QF)~AM4_?pW{Cc?& z=2q+f6Ezt^Q-aDOA}x=5L0!$WR{PV`;XC!NMAyr;vS7QdKp?xDg2a0D#QU>*j_(Xh z+&UaQslEWJ7n-*V_RJ2ihpu?8BLz|=P%qY|t1MfZWqj2Ic?GoAMF!`Jb`SW5gxbTC zxWk&|p<x0kB1Gg-_t=Kd19y~6PaUPzucFH1ht_FNHQs7QWkprQKU~@DTU;|i7I&K? zn~iiN_L3k917ZFaq7>H<<c(gE*&9z}pAk=KSLpSiv%lZ;o*}ZAfrJHG(fY>pu;;Mm zg?RC0)Y(dzhQw*$h^{mfQ0ZAat24OgVgRAz_a~1W2MV6aV#ribS^6}vC|Al4$zFbo zvES_LNxKdtgX7PpHRnrqdJ|tDa4q30F-|2OK+i1}vTdh_juKBI&a?~Rl|rS~r`mUc zk#6fcT|_%dZ5TeJ4H1xIpzgBSoxh#W_hxn=sqCnD5?*v`z7VO9Wj`TM>L7Ny!gAZB zNU6iG+F^e9F*>#Q;mN9cnDuc852#CfwJbQTZqsXjJA9PZakDY0LL>H93b~~eDQgc# zbbmhhsp#h1G7*)p_PNaIn^XO)SFO%O9|6?%?lTrPJ4t3E^s$WfjH`fK2ZnRxzk+T0 zL)?~n_T#PIL|Y{G+`Wn0Apar-wV})G`b(RT7r(rO&A-b?P?d2Y-CqxboxHPPGrU4V zL^!-e^nA5fgU;3j&d3yy^g4{5-Sqb$iM-F$RLQ>_jw@G$OAy)^?jy82+wnv>ESoG> z6-7D$%r=K2-wv~g3gWK)wDQrm5+T`3pm+3`DjC@_g)O!t@X`ZsjUiU7dV_Xuqig2_ zY9nN^sJcw8&^k(}z)UdCx*tt>uM}Lp8*N|3Uj3>8(65fzt21Jk?)+lwXqct__h-YY zaq;@$1($UIKRUI+Tsy?MCNjueBotOj<J$Ag<Ae?(@RrJHDu(F?zaH*}zNW<w@%Gon zjZdH=MO)s1bjDzPl;(?-z3QjB)G32}OFa&Q9+N!~pWiey&1bQFItBq@1BolVntlBw zM&9=h=O50jyE9#_l(0i2MfXA-a^*;Rl&?XC{zaYDgLSo>Qv&zREs`SX&gWt?NS2$! zlXF&?Xp#c+7I26CFHzRmpxT^a${PIag@;XpySm-4?6$EjqyF}DqS^I4hEAQ|;iA~l zX&^pEXtZNOMa#iM^>BHUya4P+L$&sl5i6fuy+aIPjcvB^5#LNg#nM*0+XZKeO@Fi@ zo1s+|&&;v#R!{j&e@El{H;|)u;OygQ0jP>k#bMy0#zI3%rqc;|!e<_uY+9&J?ZS}h z0HpGOY350P^q~BpD6ip~TZxUHWAk#P>C|;XB<jk{1*PcZ2_?_e@qP{i#2D7%U%$3A z3_W{a3+I}%Is<W6sJ43u+!)nvqzGJ?3(ARQcRd7jxy&fhiZ3qP_W3_;b5D1qZs{o` z?TbKPT5_oa@%sykrAro6V?@kfZl-^p!y(m2k(IZ^{$APXXJm>J6$HK80P*cT_ucC* z2uhe)R<lXqN@I<&>d^oQW#2o4g$7&)@4e7``Ol{cwVbtxdJhoXT3Z40%ozl!1yT6P z+J4ROQ03-JzX8Fb{3>3@$RLyZjxRMTivn=>ByYO9S+mNzN^$eH&;h0txZoqZU{fHK z{H)M2fO2M%WZ^|9B6iJW8qAU4fE$i9o1Z6{{=>mr67pxzyJO||*Gkrqs~1&aZ)Si> zW5$eGLoBnQUd=Cj9rCXmpV>|#+SNDj9z&CjqL;)V#$F$LMaDDBu9#}eC=^~Ry3u6E zh{x*M6(Kk#$?FusI-$8I(oKi}e8*Ig1(Y~Fl6!nc65aXI*DrBS9sowY{4AX_u3nYq znX~5P%@}+cUGi8NV9sc0Jt;X(tfOBr`4?bp-IfiunML;ex>Ihkh_d6|t;&xP>2t$$ zaG>j|;r$+oR?(Qo{L<`|>gt=ugw69RW%afc9}b!JUJ{r$(>Gk7t?R99{EAx!l53Su z-?~E1LtaCMO@YEh(9^(Ejsf9r-hJRL5-q=R5|~fadcnX-cJ7g5R1~i!cZqmA=D`Qf zw<jJFKADYQc;7`vr?F05zmOuaE@^LWzY$sr3&!QP(R<B&=rAEShe$h01ZGt#q84Qh zJ<=>+{tXkHHbWlnBK{LV@jmuN9&WzL_j}HFg8c;w5xS9L(k)WZ5t6Uh_1s-nif!Zv ztah(xc&sardm9-nRk?FGMkRA`*S+pzuWF*?zzt@Ee@I%dc{oQyYvWwF`!GGIFVG#& z5(K&?20Usq3a#{O4`UnDoMy~}ZZgGUm8HqdUtcrC{<I*!o#<^~6|hcZ*d@Qe%3{5H z>T8buHo#;}c=kmX-&wh$SOo1x@SU>ovZ%nPteNLf&|FW}x}()3K<;00)>dI9di@k0 ze?5-f^L$;V>$J_;^G539fHQ9N-GEy#>Pk+=W+rR$xJ%EG?-wv69a=Q?nz@g~QIO-u zLs9s015hlx@<c9>D_358qwZXzgzZ6ZCnZ#M)iFf;Q}7!#oOGSNR-f7Fr*-t+sflQL zw49Wt7;FXeg7biHtu(W~_|#SZx>WauCip2y(2uQcO0`XyxnLZbnZk;`X~6>{kTb4P zfj<fwm1a+W6*x1aaMw@kfVA7Z90-R{p`&qnv!_17{!I?#xJO=ms-fKHees@=B9Npt z^4$lU^3sggk~nFIK0zYcf#`0iKHbd(r_OQu+fg0xN-bBF8Gufnfcpd<+`l1@WrJ4| zELLB$HD|B(_)An1z&Y2S-|Y0L^!T1Ll2v@ed%@V+Hmv=xn0I5o5Tk%o_ZaDDT!e}< zbnV)UH$M>^I`u}d-hiIrQI%BU+^bE|VRsuM^A*tC6rXq7<wMRgk3w~KV-|*VS-WTZ zV|a3=5E%42MGO%W$?1zPj+PC6HZcq<N?><<rPY5rLR1b-R3ppDm+At$6j;zFw?<wC z3fZQcp(vp#rJ1q0X0k=R&_uC9Dxy~KetFea6-`eUVqa^~&<Zka&?m)Vdp=e_<iP*+ zXn70WN#qmQG&0Dap@UU|M8%-8#qADfOA9Sj5U6n^-SjcELOo-YU-E9x><;VvoD9qC zjnf%+tB7R1c+*dEqTK34*H1z%A!1@f$R)ZGN^}>>X{h%|<frNP_6&%~+vu3@)+g8& zvmjk2IRpFy6WidajZEr}EFT@!eX3bxKN1%9$#W~w>ttIXp0S?3qN)W-D?Wv<KBWx> z>}yOUT>%6!X}CGv(5(_7fpvu_O?qM(w0CwUns0DBX$(*FGG~9N+j)S-+g$PT_nBrj z<^7Fl1&ZKQ4<UJ<o)05?V7^*7?@C(~SE{k^fzRUbZFUoX(^gt~4Qs5?Q4&UBn&(%C z&WSGmX7E%(Ld_gaLn~B)=HUcPy8?FOyl2P&KP-=YgvofDc*ElNFBO=tz0|zhD>R2P z;yA6$Uy`4kpQ#Sr-*l+V7^^NOs$9*e&)80yaQfX%_%(xvn=f*}umPnv7e~g|TTy$E zv-vsviMz#H(I(rmH-e4}a00X#=+&TV3-1P6dRe-$$63ezVIh+(KIFY2TI}4tr_5!3 z0yu6^pc}kfWNPZJm?>GLM-X$HU3VmhqaNts)wB)vztXGiuJi02h%~P~qnWc6Oru{H zSAFQb#e{yEx??i*`TVrmbz_G#!-y0elF4S;X*Aq&PU_*oXl|cGyXvLMiX_0kH!d@t zbkLZC(PKu)OLXwHEV@rGv2~STUA$Jgu-#zY8%>Th(Mzqv@-($JLh_L3IJo)=k!x*n zaZl9qsnm08jf~4k&O^H>yD_!Jyt5c11;fq`&-fAw{KQ*_q<T<|G7>NA=et3AN~RLC zJ}X9!sL}A_^a(avof{k+GNQvgNy8HzVpMS1+zAGvWfh?vWX2}_`X1+0z$fy>vn(6( zhFXGdj@KWj-gOtB{P58_4VBhfm0EBl;o(EeIz@)F(7(@ojc|i(Q&c7$AB9T7@|w;o zpIB-ss+pj#``467dYU$~q?$c@&fd!?4YK>WNGDpnnqw0$T1Jt>1ciYwMmEXqyN8AM z=9724iE8Se&jTW4Ua5}8g=ts5+hjq1CfSa?@rr4G$1NvF3QQny72BMC6y+hRN&p&7 z=+yegJfI$tAAP2fDHHG-QpiPr^d8D`6#5faOigXY=TwV5ymU}hS%=%kY;y9>%aYNV z<WQ|^IXs){dhlX8mrD9;D@_>1bb|bN+WJ@so=6YO@<;4xfD2Q@Cs5=>Xb2|ijm-E% zqT4B2g4sA+S>!j}cWgLk&FaRS1=@*2XE}b8KK7|~Fn8|!tNBlqk>rW-d7eKUd<hD* zd_KJR4t=vIO^ynAzaHyefG=-~0`XCpp)>t+8NbPr_p$jY?FnCYvJbTQ4i6}VIdWfH zO?vu^y(E9eIq<G%*o(y?KK8VHZbR&8Kbr^G>}6(8D79jXjmJO=XxGU5OF51hgLBTe zN!<m)I|mq9ADIWg2g(w=23D8kDN7XEW2x(b;~-$axGSVGv^K_7nMM+L=c~E7JGHoM zdpPTbwe)CAbxken_-1>bM;AzKw%~K_n;^!cG}MU!jtJiv8^<bX!nhlL7J1j~Q@x)# zA@1f+K2{O$ss_UH@~Nc-WLQtv6I3s)iAlye-}A5!nW%qpG2ESOW>2q^$tu=x<~vj* z>y72e%H=G;NkyGA5S0&nj-MB&43MG%QD3g#65n&>WAwmQeM!<jo;y!zC#77!`B%K@ z2)<KT`h+Q5BX6L)l$N9q@*9z;e*0M@2Y9otKN+74MOWJd?><o&&F9CvrTlkLp-^$T zYmC4!%fiSY?e&f0!D{Ol%}aw~gl&J=71lR^vQ`gz%>b{`n1tO^;e^Ws3CaU8OPd~o z6Mr)^;+t*Y^{8xca-hyUzS6U)<1#f98Om`daCOS={qNEN9&NEJ&!j-IBi&xz=IlOo z)0v^?X$Pk%BcAm5&kE_f>7mtcV+9gj`ssClK}rl@g}dP%qBOydK+g3}?4?jKP03Gl z?K2efqk`zvyoV=e6>Yp%n%^+qk{kuhDCh{36hNF`&VXEjz*E#UTN2Il2loBI$|W#f znGkkFCIiq1V7<^$n8Hg+Bb(@^KVwDvt8uz0&&8SFWNb4(w+o88Cwpb7@$2oMJWbSi zo5&yxq=R~`K2Gy$VcMl;x!;hs@z-~^8Yt^?*T=_mwHa?Q&_c?tZOQ4P*eAy$6>)=E z>eUh@uHPqLf9B7wF4sf_K@uVtq>?$&e97L**B6xL{f>HqltAmV(I1BfFT&9K70q)@ z*+x!V6qUN|blEMtJYJ3w!5Er~x%K{&vARA-{)^Aqnd5FQWN53+P-4W8YU1R@WxoMc zh^b}_HcSocHoIi#1g0v!6^iy9l$GwkL<@(vz~(spPFkS+Vj+3UXz3Lxj?EiaAN^KD z>m+?cU~BuI3i$(=#O9`4+KLo>pz=d}y0v|_Is@fRYmxi<nwQu|gfztG5r*|$C+{@p zLu5<{xdS)<(9%q65faGt#-9yj1~|cotzhDQO1XIyOA>e8OBYMM>_{JvzF868bs(8H zMFxF4E3Fy)0-y4N_0imPAK>adnD`$NYLdX+YR^w?SUXB-7VWXJS42;$-a#VaFRS9Y z!$izgG}k$*<;kE#Lw?$X1gOGH26j^x;TLqoNqTYy>y<2R&#Bm}A~`sD2;LdW-P989 z;T18L$fT+nJrmcvNY<TRB}c=ma+eb|Uf1YgaPLw7Ace@HGqjSfr){P2q=d1I>OwMM z)Y=Ht5#k?e!Ky=$h5^zLdnO(udMK1_BNrLOx~l%s^bXG_$+gwWhmYOB{U$BKrjp;( z^BB9IkpoNm8daE8QeVpCyJS}$&8ghtE?pqX3|9q4Ps?%)KobV)qF50`zmCrH<|Pc) zFlFDvepX7QjwgfpS(4Z)Z5iwSi|Mvu6$^)FOB}P>{B!ZNX;zIM#%%6NlG%?0g+erP zTbXRMl{YD`S%@KDg?B~QNAsGanun#Hdf@J#Stt4{-l;W8kKi*N(JOo<(jDcl@Rpgc zdeZ~<4iBOS_nEY}Au5vU_2ZPX){RTD40U2fjLU^~*52)(xn+J+C>Co)A@1AN6Uz&X zrrrtR7Z|0oZnBBFdeY6N15dwR7`gzW<rM~2+O=3PEzX^WDbH&;NN<w~%T{O+TYs^K z<S8=tkQ#?gT)K$B(GP}R5C`}6IFkNig$;D)HeZial<8L`6GaNBE3hY9`FA&$hnSi? zbF5~UI>yT)kd4fYxe?PidT1CXDY4`aBJ%UtBNy5*E#hnSpNx1uQ9)uM`8Z$d)ZaU9 zR^lmSYK<og`q}1G)CdK;6a#g<(%kZA9N)-s;sYXy5lc1?v@QfTLYjj#7<gqM)YvCE z4{hJbTz30CG+=^fB}9x2eQMf1Y45+q4L2^p%=Xj#Ke@gv<(9dNd+o6IuEOl~oOB~Y z(|KNrfyAi`8v|$y&T=Ly_mA7tzV7LUCh&e$G<l;gFC*5N#M}mJ3XnDFGT?;2yH_KS zeq%us5s2x=!x1NC*W9C>#MhqDiyJS;KTEexZ&f`_NOJ?bzGMw7h&CdE(q^aFwKp2W zx>qV(O&DqX>)uJ0zJnA$fn6D&Qo(!k1fE={$XT8rs9Oy-X<ZmkG-kh7e@HnPyHpe_ zt~D=OjaS{`g_hI;&Q2E86H#;n($@bH7;IaK@oGU;G8sacoEb%8_|g3+$zR)}RD6OA z*#jI;Z?@bSUzH5_trIsHV~HsJjx7z87Zf;pJl>{OJkecTch5TVdPqf4GTuv4^*i7W z>?U~{v27%qu`-4VQ;irLc6dB_fDj{+H{-8F#L5wo$W69;GjFCUrj-%VloBh%*<UDp zf7*>NH}(jcXXxIFn(r0RF9ZIKf<{M!&s<eMj6I`n&PfzxR`W}4AoJ{A3#HVctGscy z_~Y>t8|7u*oQ3_08CkHY&-XF^FOB|BlXmhDomX2g{0%Hn**%MP74QD5Du<kl(c=kG zZT57|eMw4kvOOR8ps>W*{Lo<!vpTB^+kcr~Q*#g7@=)}WCf~!;q-wfuwZ~rCN=xi> zmL??Fkhz23qF-QvpDABkYRml&iM@IAaie|ju)f(&?3!tkWM-EP`{OnDu_$BIGMG6s zDBbawdF^_2lx=LYzpeSzhwK#i&Yi>bi}q?F@JV~ymKsXwmx?wop}e1%Q?yiG?*&%I z^IJSRuL4WXOtev~j$c%KBi<$AFdOOGppFFhROxl)$;=J#T=o8DVJ|XZ<$2);&D>*| zQAf|uQ88Nmv~nzgrCS;eO#KN4^=Y1?NxLAv__-R0J#<N~yBayI<q3Z6Kz@wP2S^e& zyD0hdDC1)9j=*Gbe4+=vKrYur+)^C=bcf&7)N>*vte-pYb6-V$kRCy*Bu;QSsnf_{ zc%Z+{)gnyvo1r23zU)aA@|;D@qPJ+GcCEF-q?d@rU4xVaw>-Qu?=JKS1+S&a%5$*< zNly_M8F<%Zn}6YtL%C~;e(lHigzq))1q}@c0d9EFS9%5c;elQ;)IUFsQJaZUk7bMl zR~@C0OG>y}k_x%{{8vwGm5fbyr2c%t2wpssk5a;k-%4}B`Ku&mvd|7i852bM&`%<v z$Js!!X+@*Gs_)zD5L-qr6gjC{53Gxq@q+8@Bxvim>Ma^Wm~Pt1+IxYss(pCLRR$__ z38s~mAMc2^VDyL9<>t5)!XRaqoaUivBE|WWAR(-vbyW`JF2L)wg$gSMd{bu^ct-Ve zjD_r3KEK=eMDz|pxQ(S*fQp`(3lZ1Pu!BkXVB47KlwGzOlI_dSHw{Voi#DatkBa~C zEeXcw?2+p?LIcXa`O7}{*IV5w*u$blx7gy9QJE~{0IrH^Qv-Nxn<ZpMmA-8gzXR<O z`^eRgqr(<aoSXf2?82qn3&D*#zx>zRXNsCLz|j38;(*v<`070i?eX@v=z=dPYwj$D z@*%VfeMBp_3lj98vF=s_UU1KIJ#_gMN;!-hiRf$MURl<4Wh+F;a9;9q+@RfqelsEL z(=<h@Kt&Qe!_<qj3T4X4!A7XQSf3G4TskfTl6vB6w$S|D_y$ocnpsVf(#?Lv(>vfV zB(SZ2|Knk3(X?;OTb{%gJL(mCYYl2%!}<X*bt+r&kALAA=H>8_JhnPvhQC>-z@bsw zJgG_A`|hu8{pem~-pT!b(^YTyeQey_nJm6aI=Ni5hGtbcxR9Gl=Y0k)$M`}GJU5f| zXu`NgTG`fcWZbx>3^T(qOvh`mcEY9hKz4zjvi|I7_EK*M?M)^w*~9|A<iKn)A8PjT z*a7e!{SX@OJE$;^oRn<{mB&;YehuA<1EcemzUWt^biUw*%chx6WoRA(Gn!s=rAERv zak@?NUuIEs4!neT!bEJ5Pws8`7HgB@Y9{zrk|bg?JC=U>W|oZ?ow=nLd%A38xWzzi za21~+Q@VT9wrDT-)mF4Hl=|4R$7bTj-Siioy}CD)gF5~h0i4=M*(^Wb!I1-9-DUcn zm5%5;Xw;ihhBXKKk9mdxCicmb&3an3^;usQq!Ky%O7v-53wm}38WFLEWZP9zxm&k< z(s4X$BNx-?E1)#@e82-`wg4q}&CV8bm}h?~CeaX6>0VnG{;Jia6Ggdh%O8&BE5k%p z4HvAHf<>MvS)gP;yPjKvxY1~TS1FBZ%MRZypOeb2nK=Jt4>(9Mz(JOvngzXC>^1Rn zZqS{*pZ$+A^TEVflQWDHHjpsfXz$$Ayd$`o?&9M02On~9DY>7HJFG_HT)!#r^;;0n zjkftAxTef`VLpG;^K4MEkF)kF&uM2P`Td@Ab8R~C${*Gor<nilN#R1V<&=jF;U7oH zMHlYU_IjIsVdfUz{UqVxC3In##K0lCCdS9GV##OEbfL@MX>Wi&=aHCx3UM2aed9(H zBi0Lt!xbnGkFLVR=kxK!H<eeaq_aNJ0=&vV%hi086U|yeik~+ZW7P42=NXFQ+~`@^ zX6@}R=>iWkHH`^KY<B&d;l|ir{jVw0e)#@A5k*$f*NRh`*_=qfz0Y+StiXS%7(6Yi z9rLI)&!3NWN^bV*4b;Sc7EW(iyXMfD%2&dMr#~`~M+&hZ3LdI$hB+GF1?g*h_UKbO z)#ui5Hm(}tZrL<+^_wVAxrFld^W(xwOmgN;fhx-oS__pAB6%0FX9jMMh^E!aDa4Uz z$6>iPcfK$(TqVd4ua<W>E$mAh%Lq+-kU)7_{=MMdi=jlHui_fsExN1bAp{WW@0^^) znlG1GWzIpb@~;{Im%mix`XY?oHYzehMd;?7&J@+wFh%Gl*z|UGYX1M?>@B0B{@V6$ zrKORU25FE|KxzmP5hNv)jv<HcRslgkLRv~%N_qf6y1P>tDd`$I2A<9Dx~}`VpXdMP zf8T4lSiWFpExvJ{d++l&j?X9d^y%o*?@iI!ibJs~Vw?@yo)3p+SMr3yV+M;$CnU#I zsO{K|CcNG*VMC|kd?$X|ns<&?@g0=kbj&;psZ^x2#FZjAem0WNk#h98ARmUTS&#W? z`|At)ckUi^xMLnP&0&sS{G$1YJnW*&EvAy;2=DfzD;jzdo*9jsB2DM75JUpp7;c7N zJJ^j78tfx%EAycKFT?ixZ}lj9LcYS%YcM5Bg@7pvi3u+#dRF8C#vHP6*ZZoi`1DLH z%HP$-60eljYlQ9bW<#E2mZVU}?CdeWwn^B#bhn-7Ew4TrnExjWK#_eThD&u=YUELp zhNDbqYUL*ygueiV`~}6+P7Ijr_{_JmMD(!qjUih&Z(;Uzh`5~-w?fmG+Tjp5@9(SZ z+g71Wp1`^3uldqNxNNVF-VC=S^_BFcgh{N$AkR>hch#~FJRWYwGYThlv3N6J5P&-N z_YFLmD`pVCKpxpDdkwCMU-ZK7RG*}cA29wH_kj;oIS9>dXeKjPmag@qeQ+qXdEb{7 z<Rr6Xnjq)madS9E@l|w_t`c{hQ1s8cpO*a^#ibrG^H!ujBkFr8$f`skDpI>uW$WP@ z6Q^sXm>SKAxx5$K$|MVYecen0v_p(8!;elUL^gAF9Zn=QM-QBtymI*d*@5SSCF{)T z8EP+JPq}WYdJ_^{y9>1QQa8+rDNi~a>)0bXdljUZ(|Y?r<-S%KIsHD%r=lf=#24et z2IEpP=;QWmJuhb8ra6TbD3St|_a|DNDp3R~t<Z!y)9^y-1*_#!6Q`l*iXp8T=GlPA z2Dd{K>cl_7%p}DD8gb|RTk=1RrRe``EU!Uh$?YYX8KAKCNyE@PTkPWHpj?sHYgjwv zGRr=g);lvSy!c@=uj*NN)aK1fuQgW&p7IU7Ro!ZWqA%>;^3Rng0t$M+xZ+DtpO(uD z`d<xGIEo5|sZF1BSR<6q3ww2a3I#qkZu(DGi>E&wU#%3)m`IzGhN;%tzsWYOes?d# zzn)Bc!u0tp&_|`z9v3|zpm-o(4M}nQuD8?sGUQBZEwF`|aS{)iuz@4aeJ<{l*51Sy z{!aMMu1?2auh}32x#(&8M>n)Z<xAug1-uDQFtS!KwPU+X_H0*SJwxM$TUD?FQ(SlS zH}GjLF^7?{IHpawj45|olK2|RnxxEz+6?NcPCai^RAOVDg3JNSSLUep#l3cB#-g}G zYsEBT@i!R0S;P1B*e4NXIUiTy<l1k343`>P+x^_g?`!nvzxyh~>pCsuS3KM(^>hr@ zw6_zxvtP{z-Gc4Uz(&gPED!rd1of<|oo1eB`p+Gq;<Wca$T#OBYMVArWgC{vw8Gyl zM=Z`RPi?NJ9Gtd!y`*RvazAXJS5-aHzE%<4NrEqxcdqFSXzSU=w_0kh6cJx@bs1LU zOxw(<^U#~fJlu<h7El5Oi&K*yzaEarW!or;-e35v2Jc=#e$$&po7lF6P3(kISVgyk z^^lE|_9wH6UaT;hhF9cKWrBQ3>kenp23D4MQx)7_eOT#XZJiX|P_QhGL-}9-D$|G| zpDY(*z2h+P2#!yW=z7VheLXu97I!+`X?1JI`L(~sS?v7Sb9NDPNp@P-E{v5APVtbh zEr^#Bcsx`ca&y0@b6k+2*tJXHTi&dy#&ixTcJK|MY29yG_OL0g*VK4~x>|C(=03%> zd|~mlJVIYT*o^IIT2}rtth^9w9E4Bg>FU%Ti&NZ9v7=#N94QUu4GG@jj4bYd#3fYq zL{~PHF5*S(IK^Gf)lZGuEMp2RSKAyT{aWSe!~H`lKd{5!>HgX5n^{6*U}&Y)FO73) z)eMG){R{w7<RRslh959&mGf-QHLrwi*O=Mzc%g)Qa*bxRfpo+$nLvh`$E?OTJx<G= z=XMiFgen~o7zsK-`|}M#a;;M0_70simkzZ3zrMj}4>Tqx=7#7_;St)B!|uVtDN-iu z7iaA0V^j+i%CIy$bGw1W!j1<GE*=@tKf+~z9xiC-<S9ZcUM{SyW%xIxV5QRjL=tv4 zVknUaa^=`OePo4abXEDwiiBVOyj!6`)9dMt{|tijf?n&g1C$H(D{;<j&Xv{Ipg83I zS8>qWUY;|aHMvgG%%yL+Ph=O!JIRf2!SyuO>(1!iy7wm;bk*y4EDqDMA~$wIgv(o8 zy&Bv)&wp6|HA)sPPH_vU^o*-B6sBL)0}ILmq!y0SL^kiAK6~I{kD%kFsx+B1y*N4I zo-Ujv)5L>LkR8*Rl)gP(R*3i4Ep5-Xp-JGP-!ER$_|M`K%#k>Cza+e8KOE2N{(HFs zZ?4JJ+KI;YW;F`lkE63yebPCsGp{N-M>j;fiG1^7?8>Pd%<M)P2pk(wFf|-=$B(i- zcV3-UYOzuWqFR{#1o<pZ+dypL6of+^T^6J|i{gt`2^bF+EJxYhO&ldpG7d!}B{HID zhWJTHut>}xDQO=6?0e6#NFB}{*Ot3nl!3~-Qj7g}VI4TudlJQ+j!!P%{GLlMPN&yV z3bInu_`phDx<YY6Q2R(~Zs7@yqr&+<m=xQ3H)&1M@r1p@f2l#VHYRS=lv~U#Ua<C7 zU^mJKz5IzI*ouDpe%zlzWD#|J_+z_;(xGqH|AKF(gvcN<&FUqT<?n-Z-lkE(nYNqS zY&C11T%=wN*<FzZXJ2@`pc&pW<yn=Bau2g_sR7tDy-&B!qptKLx_+*AKvmg|HsdZH zP`>|$6OCdDYX|>GL=&T(R{WT`R~ptbI>->)i`q&0zACPKe`F?)P=Ok6l?p3l<}H_d z!4iqs%De`~cD(2GrcS9Snb7WvgqDQZxkZs>TRSB1(xg7aGQ)3jjU7uTh0`aqwyj-y zWYSw6VP>4LqkQ-yO>j2ygY^PJ#lKSba|a*H@7dFU^VLK@1R4F2I<@0-nH+F(>BFj8 z#*g*%sdfYRk`=d|-~2R>!wP~^$SIHkHup(GrMUZZ#gi~`e%rs(KgpA;)5OFjG|4DA z(JbB+N{mb~t{7`zm^U}_g)mbi<s>>MxK~rlbduk_R6iA>==fIoW@#HQm%$;B75bz) z`*$`@zjg%=+;~nL$)(pe)|d=cKs?eQBLAF`8>x_d@6h7qiI+BC<5`x@!k&@|kFxI7 zQ9h)^%V}5!`&_tU{_#6*yf1A=>ZrGe5{sX9%$NJ<oH&*>R(8lpt%K;i=yQoWv)(?v zxNC9FW_G#Rs6PW2J*gpO%`QX=B3`j(#A{`}P<Qai>Tft*@VS)uoycs=p|?ntuO5(= z&%tnB=4PuQ@UQbG@WLLhc(6ks2REb^MtrPw<yH;a^SGQ=HY9w`6s^!L&ats-5O#qJ zvFqaH<1;o6#C+auY~eP|t$Vv4Z!}WAVPGZbBzapW==@6PrnkyuzW6ewBfI~&0<17? z5=vW9+F<s3&gIM95d)8Mde8~$_io%{`9}L<M%o=0&v(fo_xs*{sm**8!++ZtHdlrz zjeOMVAw@B<BrL{c-F*4LYC;71cDCxE?BiMbBkk`+Z|e+ubeJNbU9*~>1&*{%NmV$} zK8|yFY*Wii#|;rrhh4*LM?OyHY9MjB<<u7XR3Gv;3qyO!`1n6M&Int$$--hjgxaxd z;qe8xz#sOhX}3NB^WD9DcUo><Io;M6LeFhoC(_-Ht_H^z!<7S+V`M8m+RFujkxtwN z&kxzLXW+^B%RU3^`-{bz!E8%pab3@}jiXVn6t7?k(M%<(VmAJ_8c7Yh1%w$VbWPC# zZ31v&%eiQC__3#4`i5%wJ4bLfrDlPDa8DubPk)2x!qn3TusI9XO1r0mb7J3j4aFh< z9^(FB4u8iXDM&&r&en(??%4h_F4;Ab;jn154duwA_mAio)AWx2(NE?-8*6ECX#pLj zc=0W2&wMr!r<M?@)lk^%M&5u5<YuLHO@pgR3%L7DN9BV}9zH@ynnD<&z8O<8oI<ws zW{!kZGUl(RbMp4OhD5|w!Hb>^Ui5T^8f3+c;BrE5y3b`x!a?l`{N|8UlKtkQD|jeZ z8{?`gBnqlY-}vZq4s!GM>=*IWm6J^c&I|Tf!hE~f1;!ylX|30%pMZG}Qn~YH^G63H zdW-ryRB-<T-lI^5^Fik@&mclCP-irA6(&551(Ibv=SH(5UFsnk9oh4H)ra~?XG9cj zO{c&1&Krgpq1={wQ&8QPo3_$eUZD+Mz!v)0lag(DedvkH5z4a(LL1l(cgwHI(;SBo zBA$_C{p<CghJWy9T)*93gu1tpcqKK8I~&*c(m~nm&-hX1WRIzn+FPuF)O4UsjlT2l z)#u*<U9>I{Q3^4^<G-_c174Ew_i2FEjm4y>hkWf1V^#Ua70Xr*fer<NxeQNFtVsEA zxQ3nnbMM?#(wjn_qDfS@P>zS8VNX7R*{6LtZ&QQDn`{3tL~*SG34M5=Zk^;|zmVV0 z8SV6i3LFZ?dt1PPF~46oe!wAQGPr_sY;F|(%{t(d0#Fl}w4(jxun}wtGyP=uMn5rw z#`qa!nGJm9i_+vZG8`{kAvXQK`-;$LRdLbR8cpRK5_fQhnk~!Jn4IlvOqb|tr=VB~ z)1wV&`lm`bzdSE4zAqo<eR=E2F4Zf```w$l9!PFDS{cvGNYPq`PuokC5FHlx;jLfM z_OHTKmYaEdPQToBAJ=+FvL&^@hsN`w-agJgE1ZBriT78>-7HaO9kDHYEsii&zOhb| z@{C~Ih{d&kN{2dsKE3H8-sC+ypXW`wAN<LuV%U?y%?Zo-{^{qI|G$1-f+QcR+6>9< z)nVd+M)CYGRjHUkyBCKZ^QNa1{>rh<vT)L)r47sju3vA29D}3kUQf_IMsvYjk4BqS zH79|j&+$)MAu91T&po9-UZ4#ej%|&polsXoBh$qSlDC3=<B9Z=%THdL;g6%LrUqzH z*qt+TGm8)7eJ6Q%0*}2x+(AVcI#bE|9uWOH{0UDUxT=)ba~~e*hbVO7KH}hJN)?Pw z@OV6UKoP4;9%>LHh(B8Z&UaK!`i!ne9hBZDIH?IXY!((hXq7utv#{wZM-ydWz(NPs zeS64s$K?H_h5<<1-jy&d$7S%K&y|GsU6b2<2&l3kQ!}ys71WtR$)N>U5a3ziO>JI= zJw!~Oa3%c-uR(0{kXmNvP*D5`lRmBHYRvQy*&2EY&b0N+%MSZ*y_3MTsFp}6+bGR+ zN)&J==f3yr)B^Y}!x^jyPFrIHWx535Wr>1_*SuypZ`xUcL}=eU2{LYBya8U^WgRU| z3r<R9j4HEo#*9R9pdEQilE5r4%_drQM9rqAj++xpCK|N77{Xv!WG2_3F&Pi0f{T~v zZrg71%|kzGp2IIJb$Sdh)(`S<-$Ed3&oc60bg4SyOQ)zI#O7W$zpiUjtSyxM?v3-! z6DfQM<g~q&Kh>+J;8rkc1ENmm>2%D61|Q484=6h=Z&f0)kkBrmR!pRG9`~sD4A*bk zPmbe3t5G4lt18$bWuA&ocvITCzqm$PIv-n7@%QBnEsMp_^~K67P?BC__yWa9#j&uV zxSrJrW@Wh&Z$eBblf55ZKAXJsChex|?E6MI1X|`bnxp7uXVfbe-tpv|SMcy!Xyheb z<f!pNZm7a~v<^5}x1|<~k%=4%sh-#~48<<W+E^}oqQaxJ*7o_gBQSYf#`m22a4yB1 zR`%}kA4E+^vAuf1K;d2$#(*$mes@tc@$5;UtnH7wyuBuJJ17}aOK4TdoU{1xaUwHg zY)KpqJkk2^dXtIC4^X4d?fF*j@qEtmm4=*+D)HGhzn8_29g@+Gh);b$ANeRQxpvX* z3Skx{=}Q-}ItH8|-FoQHn2O@F83etLteW0o)-}bO)t89x)@JXMfR&3s+7tQoZ>keE zAtBnNYD`WqxPdBcjv>TDgFcX%QLu$IQGayYcJqE*OxR`|n6zOu{4;6WK}$GO+lJ27 zSrFD?EgYD(TMQ-qQqi|E5}q+9ZPI<JtMxpg^<w?jSRW-%k)hd@-5>N+@Lul>?DJ&t zK;BNSVgA)oE)Gr?zljqt$y+KP2^gNQXGg(5Q$aI_RU$wjglaz=<s6J1!%cl^t{>uF zA8!_sST)dBrFG~&@u`aVFPH@;^y^xh%lK_~`$QZ^3v*Ztb}l4x&rx(;yJwld)-qJ# z%y6sRd(YEGwL$CBuWosV@o(=_=;xoI6=R@KD-(Vcbe}c}iQm**Z9)w0-IlP=_OH0| z)_pJ_NVgZXUD^}_MF~-7;s;*r(5k|Q)QX6YqB-599DNmOjDlEZ^Hn8*9mlMEEZM~% zx}?!4Y*ce0H(Dr$HJVx&s1PB4TTDf1I~mupvuI!VO-91Bpa1CT;=Fn^_R+0!muOMN zsrWuoBSNQfvxp&q*+^@(`2*dG_-wO9WP`Z-wr(kYQb3-KALSL$7c8s(w@nF?K`*Ul z_3e?k4Rtv__CmpIfMUm&GO`16Wg>acPRyh+`#j>`c;{iF?LYc&Pb{!Hg+|_UeDyJz zN}==kJ;Emu%WRx#nwI8aKoZ^R7|4lytZA6t7RpT5`_7~+R561Ytht-mR8n>IP(9L5 zgCDtywUGq3eAB0ji?8i!C*ZCpp>i_6HUcRR{-dFn$~l+>h<C|$1Rt6XNQ(4bajnkw zer`Rw5q;^V+Z>*Ox2B(uKAhNQYUs&M`$?q87^HTb!}^m1{P+2OhezQz@XNFaleGvq zefYF}_H<Ak>)Bl*c^U0cA(<ABVeQEHyxGr?KpkJm4P6qp6q9m}L-BT-$Fhto8`pA) zO!=2ka<G8wXDM&u9K?P}Ql>n^>|ZcV@Oq~8$Uc=pmYxL>?Z8Phj?NJu?6dgd{9#l` zPt<Fts6((P>U?IZPR+W_<d6RrR5g(_d|%Q*!Sfu5C^;wE7nK~kSmdol#HfQ3i&pM| z;Jz|_cYT~2wEkFM3LpKT9`rz5%hPF!1`mj2-ARb^B%#q9{3OLEs$smAm2a*Yx%&}l z8hGLD%-81)Xmf{q65FL_1ABVdyD^#3@j4BreF$ocB&j*Oj8Y2^sq3|$mkj~HJz5b= zX~3A`cLtkDQ~j;$0XaK9J!Kg9OCzcJ&)84*Yj~TCC|?6I0+v7Dl<Mb?dV+@txcGc& zdmy>8j`EXq+>#3@G{E!4Q9ZM`KHJtKvZx%8vW2%6_F0}vdV~iMu66<qUWVUg^sh>< zzcd?LOuEgyrDtcY^-<=Rehv(=EEfI3Gd6+SLmoGoyLzgq%f{_2L|SqQe3C0qT14R_ zm##_80}_<ag*PhJE<ziQ#5gskX{3qd;IfCk40FNHkeoZ;nuDH7xw!05FI~-TJ?fr3 zyRw<#sr2I#Km3w0kxTBM1NycEEgye)?3f<?p<63|B5&>f`p3P_p{}(8^1I2?SwfW8 zW!f*h_^t-^9(~@zAxo3{)sbW2uYpNT6`<y6dO!ZKVN`^)iQ^Ab!03VbFq=F6*G$@G zbLKEvN<$C>E<W@0SkUf%te;mAgEHahBf;s<6I1LNz7>o0TFWx*F^XD9jF&O;q)QTQ z!rtAuWjvd(`}_-Q)I6OlB~UZyUOTC3zwX1=IaVWJaIfkD415<-_z7XU62#&cY)v<) zy~^szw|(4A<sZcN3OiZ$jKUBmOAK|`Pc!NIHsdJam`sQfhOkS*9EhGlnH|$)nA$oX zYEZPHTe;ilNU}8uYY*wiL#pvNMlnX~?P}5Vkjh|zS+s5PbnWq^o^9+#5cy05zZ(2p z>fj;1JW6R3Yxf|e_0R1L?~?9^=JT&$UqcE*1$`j=O)c8`MOaYsJjtJ@S5Wy%jgpKL ztz!5gxHB7DNQqwG#Rpy55@_tbl*gEE3{YI#m6c@eNJj&ZBVkA#?m=bS9TM*yr%1rF zsn*mP>7BM;P8=#luy)>{^sCPeiAicM@5OvlIp(tB*cc`IYT=8B7kO?*Eqz{pGga`r zS~{f|dT=GJG4p}mZ|+o5G{j*$6niyoU$aJoh^(3+PV2%NC?jAW<3~ha?Z@_bQfQSl zU0;-+#t#M3-oJQsrg|>ATf4l8WIm8qNdo=v>O-BU-XG#nL(Vm=H`*naibiZl(Z95H zO)wz~RQc=`bYAZdAUyBjnmQPrY4jk@P$uJ)DltbA&nt?bf8-Ta0qLO|4nmQHsPir- z<<*lS?z%)B47`J!h_*0C!A>Pf8d?*JR<hi?6vSh~0waL|ChEqX!crga;dOfU3{_b= zT>xas5NA_&QJm#<^l{kqDnjWv#fheueMgMq)$+whN3~N;OQFs_Pa-$P?ZTB?jmKi9 z0qzd3^*iP#NSrWYY<f@Q&Lv+YyI<C~h6i0N^7By<^hgWQtfcNq{Y4Ma&Qv+k!rs1u z6`|I#fktdZ*9Fn)CrlA4k<dPdV;VnovRW%64w02UUxs@Dj=B{1t9a*+5lyHeP1IpP zJd#8f^fbcj*H5)~e4;JD$(dFk_Ce{}=LMui-F*eUR+|zs^^~(r7tvMNJ3x|w)Qb0r zp)OF3N!%cHF?`H6Btm6r{0M8c%$I>FKJ`=aJN;({fvu{JJlAIBc>3X;Hl9BU^#d6= zXZf!-+~-xPG-@jjUQ7@v#g`VA;ow!QrwDbXB!*Kf<S471ByaWB7ar4H=YGFD$bShb z)>%@oCQu?F($#k2oGl~sV$O}w{iqOjt%RF!R79;xh}81W#O!?+p(vQq1YA64QU?C` zKPZt}>JMDSCeuwL-aD2t1_xi3lbe`(MKF#e=IqIcBVZCj)xO&87G*|Tg<#8ZMm3x# z_d+&=(Db@nnj}pPt2(L549Q=Le}BP*G59Vvn~N^_{U2QlL26fWEo|D_vZ4<)%k9X} zZ8;_d{<PNPKVuU8i+xD)Zdohmz#}P1Rv-rVuVTu&Ib*{M>PU~;$ajt)9jc~Z6W^8m z&Cgb%)+mSx)Pt5{mjoN`|EUI-NeUk(_?;S(0kI^;G<gJh@muAJdfRM2jDH0Mtq6)F zG{K2fAwu8Ak(cobcQrwab!Fl?Ypciqb_k=w=pcgIDJCn()@smU%igxBES?<mu9Iq} zUze4z7$d6J_=sMH<Y8zEJmYGGJ$OjXpZc{bwZ~?{AE4jvl}I4y89T4-Xxa$M{sS)0 z5AIl1jj0x<VxR}(z>Q*nEKHp$H>_>>X`=)V49M0%pAtW&J@ysR=az3C8-j4&T6o+7 z#+1ch318AyP8jI9Znw^$^C=f_x@K}5r^%fj4D}0c<u`mGzuvCA*>xMDb>Eh`rWWak zwyn{o^VW=35a?C@sNQ`rGtEl*#MTba9501o%l@biR-e|CWLLMt1|QgVHhgdYKKL)+ z>j&ZF@X)^g%KkWBtD&rjngK#R^9;nF%3DLw@yib^Ysuo5aL(C|J>VL3pRS-VDn_W= zQwVQ4c?s9=R?973wq&rd(VFt)^(6=fxAXa0SHf~9boQ_NpEwV~5P_$?C%-+W@F~uG zjy{DvIXkXNyxHX4_?%?xDcl)1p?%)}a%R$K<~KLL|7;wuy8FuBAC}WTde25FNm(k< z1n2=c*F3ZHJ3M&QODa*hB@*WK`*{4-%<kp(O1uc=`BBn#WkRQ(pVuMmH&-7tn=*AO ze?wK}#^fW?oYsC&6O?O2%I>dO7oy|ED~gW|%obO^zUgmC_F;2hf`Yjgqr}30a$i0F z!Smo@uFwFSxCQM=FM2T{LAdsJy|R-J5RTK~JZF_(86IaH7zBb0{-$r!;x&~g8C^6> zndd4b^^7L-k^VK8DGo^9S>D#3!UcnVLB24ts=DsY?)8DVk~5VV&*5{q^gIWdbYoNc zbDB2-qFC5<SS;yG5#2cQk(O^12P<>#B^)O;JWprySN0s`9N?bDZ1QHJ&k;gj3?ffX zDREj?ie@*K_g~)oo*ikUMqlzEYTtj;Ea@zt=iB(yZqU8SRJGA8+F)e)y!+faru7On zk}Wp<{MwNAdN~TRKs1~6r>z|w7jFfV%rOSap_dsU+@}M~An8W#Gf;oov_|sPd#v1K z>^SICXKW~z3&j;Xw)LK_mQ3jvzw5dfhFVyz2o;dx-1;eX6<+np0ni^p2eLCCpPq}2 z^Kv|lrpOUNnf7|c6nD#35+fY((Umi=ai<n#0y5*}D4sDzdV|!L&WE#3E0$zAJ(}Yq zIqcepih83-{L#->p0JIZh6vJ~QllFSzIP#OFb#3Wo9am%hn`E2K;|}{>N&(@oJqwx zrgqh1t4)nkn$fb4w;jzXl5Rd+BBP+rdlALu^}!c|9ScSsutb}i^`~2IMF{yE2Xer= z6GrQ&)EQ{Cm&5@jPHM#C`R-z!LB+1PF&+QGQIi6PWiAOj`CZjF0yBX-c#=K&RhH+U zW<(`^sSVy!{YNLnwok>)v}4@o$+Sv(j+GFnI+#4YrK)gE=tideAzL|EK$a}yYhB?1 zBT;PA8Qx;|RQzvSXiwA$j#r?7WT&}$b3SkGkL+tR89bCvFM%8O^$xHz4`i*B3Yo~D zp3kh#yVF%XSq*~pItTQ047AFnIS2BFDcqw?U*Vf2UV&~}FGZr!d4+$<yLu*gozOGK zxn<WXts9g3r>oT)%+U7R@6`o8&Xt5|PrWX=w3g$H-4DBocKAbSwA}E<zmSVhCw|EI z)0Q@38Dccl(BL}uO62^Spn}(0QSW`0PzA9wh6{QQCp4rH6D8$t+9Tep#bLJc+4Hy5 z4J_d5k*1Was76m;OA}XDg&)YkS>jq{(V{M4=4)%Rq27s-aJmisI^m8Zy~sv4P!StQ zi5SsL9R16D>7w$6Z+7EuhwUcOtV?>2-b+;`%XHUK#m4kZ0{KOD(F;2hm6)I3x^ts# zfh3VhfBwfMXtMNuoh(oYk9=cc>-%d;FCuEn8H%U(W+DaD&Be?uFHCg*$UiOW)+*T3 zm_!AY{HufI5(LV`d+z(=>f{nA#j~&1=X@a%hkmKJ(FkT;e7+Yd%-b)%LVlO}6!(yz zD!wXK-puh=bSZK}Iw@&y-MskMCKb8~W7O!-w>=rjx(*7x@xR>sj9rm@{pIAJEl)yx z6V?QuT+u&&sQhO;tR4j2r4d-U9@)|GIOn~dLedEp?ZEg4XKXSPhGrPQ3t<x7+D_|1 zw4G?5)gb((i-qFw%*!X1pMxqpXJ)=NRK6#$L~k0z3Z}WLx(l&PK%eKW`Mm^lY<u(3 zmF=AvO^}OrH%eT%d8gk7CoGX*uZt4)ZZd$oF#*C31IZh()o7u`&Nr;vo>34Q*MmjY zVqvN!nDgkHjulwh%$tto;^s5YS!2HeJsLGvVS%0E`>vDsoPhc-x{~*4>OIy$EU~nb zb=SOiYp{ypjy+7Gi?Ak6da=2mq7sIlRV|Pqp5MTjH1OqHWjtz-tu3u2^w^2jt^{r0 zq(a7xfuSh1wMdHY%z}GLk-q$1n6{ytZ&ZWn%gE}}KX&Ns)d)_N-Z<XTq=x9QG=g2R z6yL4W3QRs*9$)Gl<>_Ag3=dACI5}HU--Rbkzh|^r8wblLrUtQg=&WtgCkC;;rj?k# zq5#cP^!6BQGTAL?Mr>dZYdV#a_Uvb0+|yKohNme!N2_tpDiU*UP^99fn5big*79Jn z);MOGSl0t@%a_xUWwSw5s(L9Lj#nVsz+#ZhQeXetj0l`*`AxXU+sV-;T#E&;`^^7Z zHRL?Hjt^+ud~}n65Z8?6Xkd8cZ<C-}x8puDTSK%sE9voj%f9}+6iB9i)NUdN<ECt; z()~7{o_2AU7FFBk8Lz|VowzNv4{U~hyIs!PUu;<JTf45d7yWh_lG-!$U1SxRKN_p^ z`b)i$pzB>c=h=5)56r@K$rkAaCx+K6X*CEZ54|LRpM$;MV<!frg7XrGk<Pa+T0Qd- z0sHtTI_`&2=~KyH46e02mX8CRqJH04wH;ptuj;&=oDuFk@2f`K_@f9;^C8O4ItKoq zeKv9f-p&ct2<1xO`iSdRb@V$W%@)53o)g|&txXz@@z(V(ReQAcY?U_d(*L|65!v|K zv)jX-E=+ObIHp&xJgsBshgk#0{2qDu>-|fHp1F&<3Bd#$KW+UzezDBYI&uH_nVNgr zOAs|G6<f3W6GiXQ_o}9jo!+na7qWEfcelDrT?emZ&9t|fh(!!$8fT1fLke(F(Fg2b zWAFYpGF-oQ?5MT}p^5I|I|t-7ixyiQQI91vK#r<Nc1rFBO2uLNrH5r~%&R_H=Olt_ z-Q=XkL0e5RXJN<9L$_KJTsr$H0}nUh+D$$tQl`s})#QsL;YaQ={uL9$hW@fDIgcI( zqjw!v`E{#xdkD)=HhtYrJ&6<55SjZxWm(kjCqD3`Rc0=t-z4p?Y~9y)ai6hwO6=w~ zjUVWzvpQFn^dBQ-Jv-x;Hdlrn(^wWoFz@iie(CIPt&$Y3+ki2B4j@YRW#0n=lp~Mm z+*dMPBk4>cBkYXyRc*pAHZF0yr{#aZB*Ly<x_z#AmdxL`WY;&sM8Bd=(~PVjhlcxp z`fWu@-k3^u>>*ogw}ozr2jXJvU4$LCqC3{PzaE=f;_5dN$=_g3aT#IWh)K={g(ad7 zWaaN+BWd15@289wLPl$n1fgN4vurJCoaj@to_e1)VJ%@oxz!07Y><==Z$to(H-Fi- zg@IfxPRJ`!(TmwQpA}=xMr6QIj~#M+MphgV(%;t|hknsi73EjwD>=IDRoSq&g}Xb) zWej;VyghR!=KQ&Y>%@;_G|HcEF*nK-Jwz%h8B^I(+dGw$deRX3d+FARjQSgNEns%H zWu!De3WHl;N;PP$m)2x33Gd1&XogM9H+e|}8Yhh7e=9k&F%e-!%fPk{f!%L!O5~F4 z{d=#|`8$oNf{)@1;cisGRko0P_WoFnO9ZJp(Fz^x1;ZJ?zx;z(|0=%-fki$)5zWy4 zrneU!hJ@uE&W847?_Dg>bNrP*I!@=r2?euQ;))s4Tb;E0v-kYy`MTgzj`|5yAHklh z&onh0`Sn8tpNpg2B%fVp?by~hB1g!&&r``Ub2oEa6Z^4?){;pqy<vjYUys^BDh{ur z<ZL?Th6v2LXTM4z$}`;|DF;fkk9!FY+DG7{jZa+S_<G5ff9Cb?Dc>!g$#$DE3BCGU ziTTC<3cmaP?wO2UKNS+>h^}^dh2ovlJ;k6Ni^E9ceTZ~ZZoHA+?_Jr6I~F!E*6(Dq z_x+ljYu&|A@#)pWbANn4YGfhjhkegLaAY|4aSkIjvFU*XUv0Dl%d$dYcb^szEYZ%d z`?MqSn|f-w^r`z4*krWxV4BZ+QY_|25NnbbWJh`%TUZKupL`>X;v81&SEAm#LVFc( zjJUj>p6RUW!uMi+8tKD*b9k~d3CtF<NWG}9wfd|AR_=|4x`+F-qA34{QLXJlMXX03 zA`DmCy3YuAJQiY9EUw!66#5MqxiKkwt>UjA9+SF}FYEUoV=Bypl)AMuuSa^*njADa z|LWllwDrJ}U{c_0$VSh3X~GG1vS*r8{JYOn6z3F-(tKs<!glYXWG+m)JyJznpj-9h zZUGbjs5W3U6r=etiPlT4D6QGDI4|a4un(2*y;dSm2udsGyC@90XW3bFb@lGX<VGNB zNFQf8uH^|$;FfzM?qYZpv~yNYqBk;L&0)^|?rwz8;69Sh&-@5&*uhjkP2lmaljKkZ zWTi5xYutH3OI}(K2eXt^0Xr5qKR)}ghtZWP+Wv%RXps_~4=3x4j*a9yV={;NH#$rr zw$3mt!~K+qmu9Wf*vTXTRNKbL_lNuV$rXHEB5z+w1)oyuX9~UO_^|AArA~athW;Wb zB@)A_8PSNvI`BJBm1s2hOz0g&YoLa4<=yJWB_hfz+f^LP5ezPqMZd_a1K!qWvm|+* z%n#3oT>MsxRFE%5L|SWlX>YfhbXezQZ5WLO(~A%S!+^vRVxnG3=m)_U=lK$9z^<kA zG&iCx<gz{4`Q?mN$eRgYO?U)}0+y;LBq;W0c!hLbrav<*?dKmI_C58coZ>*ab1n^x zXEF&g=u32?pQ~7ZToITX%;-o?-D`^*f&<T)xWljWg!rvVqg0EpCWO%DX}`0Ukc6r0 zvBsb+kjWBQ$*bF@n!%3n--;Ffo&TBBv?H=X_I!y*{^u#e2a#FZ;cz8;J_P^$*~r>E z(x|lQ!eOsVL7V<M_ND}1w^j;@=on(|5<%2BoU9@bxV^9EJr>+<{0Ejyj`0y0))ty9 zl@6+wYwcT-mlTm(nW&*lIf(_|w%HDk8`4K-Z68FV2?v%)F2@i&zO)u!Te`Tf?R{11 zuTN4O^rXBHQ}^Cu<7N&lMT2Iu_=h&#LHGKB#c^Bc(=|t-!J|)Ko?XwJdDwvA&^>dC zNO{6X^2gdEKJr5vM4kRVe<u^jpN_J3t5$_eDEWc&9LvhbT*#s^Tc<jr3a-V)l&UwG zcJ^He!2`yHa#K|jrCCTVhC<TU_&4b?yB`Ch1wyd{%2uWmw}L&RAGHV8lG1O&TIu8R zW_w7XOCyvif~V?)#u_ofl-&~p7aRjuZ1gfe-r=nVN=QQr=?J@fyVEjZ2ajkEu$$y= zic5Vbczpc~@}t6(`#fX=$m<d=Fe#j<URbtL=&SqPY8JAbNfAVAKyWMTiBw?or^?BG z)GMwVO*HGYgJgsRH<E3PsQBX|h!!&=kRdDv1vO78CZ4Rc?8Ej$)|M>`hzckJ`_?`= z{@NBWTKj@H!-{NCM_Q#DSq*iUj%U{r2i#;w-5{@z4?O30EWDT>i7W<7^krGT%@sOl ziqjf>FZQ9T#Yoic3q&^QE#2X&cn+o;rnSu51ALQjjVwmh%ifu(`NoP8h2y9)yd4f@ zMToB8!tkR$ch4GcwzvY{Mm#qesUeDUEn)h0>W_YP?yb_E=t`TR!;!5dKbX>ei}-FL zr7o;2_1eVA?x}@2bRE26Bcs9-F2XkCB*~k1UQwDQq|($0`WYigJGC~@I%U0}qUAuE zu1msC$Z%eqCKkC?2=CbW`>IueKKqgV-|x1v3qiK*NWpWi@$=MJk8^sjBEEAT2Kv@J zl)W!;(7iGtm-O-`j7H3s%@J4Kr)^2b(H<|>e9y~Eex<%yJTa^&OYFFrcTP(nYE^8+ zx3eg6r0n=LaR}XO`KgRxF`5i-Rl4{x^ucx_fKyLOBVk0%l6aR9U2{;@%T~)$n==~~ z&(5)Rq{*??uS%R~=pM&DDzx{V=KC6w@Nd;dEo0)}j22a-O?UXXNDh0z*<2y-z3W4j zbOVmI^9xSjrg>jQ(XXpT(F}nZC6V&0d^f&)<EV4~`15&di7=#Ay3dGEj$P%II;&Cq zCl_EY4ByxE7)v0f*i=PwdVOk?tCS$WBt`1v9~%UWqhuO6$MSb_J)=by6~AJfhyDE2 zWZ}h`qd4OkbXs)ld@VS{pzZ4og+5(bCa&Sk+)FC8<P6BsTh|MA&@uVM;G`Qi+eDnc zFNu7x$b0L7bxJCXs3wh4Yy6I`7_Np`om)FgSxh}O@>(U&C>33!GanuP7*f?=x$<T- z(2P5Ah^8bx?ZKWK2q?6{C=~r9ZG=(QZaRlPMPIp-f?I+!PCxt!2mdY_I2^OOu6!W< z<LP_g76UmM;vn!4%opTeV>~l9#<|)Lfw*?j`xMu}gM$^Hl5jA;>+s>ZVN_KS+#+{o z2K-!rsnVppTYOQ$e}`L|2j8mtJ4@u#Nv3jGXV6^=O`mx*P1+MfafdvdY1_ruo>&QY zCR;f4fZIB<O$;aYpYYm$g)IK-=PyNRvz=ebk2qyn<(tXKRzq-HrQeY=>Wbn;PMpaX z<+b|J$s2PJa{vih5i49V)>Z{D#s+5ABXN%8!T-Qg%8z7S60Mlnyr>+6oi;nHPVMFd z>~%b2+T=qk#)8_e+(xvNvvTP@Ed}Z5sN<*S;y5@Qs`wwCX%NeQ!???H*OY`948;T8 z=@LwvknyFpAcnrx!DJya{)0P;-eyRV#PNHsr_TY@gNUM~l9i+P-E9ExfB*NNzoFpv zZ+QK1HR@jx|JG=?Fb8pf0N7fvl%|huZ^3Y!e}&q=Wqn03qOIPBN=k_T;zUE2|8vWM zxaDvR^h5M?B$3@L_U)l0xA}7Za{};-IGUdrgcAGG9w5$t{7$sOwD5-#1~%oSKkx-_ z+omU~J9pERk1^ud^DZ80V}vl?g;TX65lz>}rEj;5JQp#Wf{9-$@Gv+0`GEJkJBG#f zG$oC{lOJG7MEtKjMclWiEuuEONzq{W)g#Yo>JkmTdn5r-s_`?OkVQm*cV;k!Go^uR zOsC`5G8(SL(#8v$CP}J<yEF9aD*s;;#y1fhtKwfGqbA>EnSkPwxn%EO=qR%L#*ALa z6FMFsyxnr%kInHm?)`MfApqPEe_vT}5c&R+-)AotPmJ^~iB(FoYnz4h*w2kwe?ubR z;>MS_Tl^^%*v@vrDccEyB~8<xXj1sB4R;O5g%42@Ba}gdUHSmE%9N?pZ5Dh7rO|H( zyoe87{X#?f_4%=xGSXhARymcXPpfc-uPae|azv7^!#$(#MPpA}FAvKRxmDfud%Do3 z!7&%FA~f*WPx8m*Q?&hmpfIRYgpuBNnFoJvlYma=_xyGAUHU)Hs*(ZI0BayYb)1gx zf2aI;r@iZ(^^pu7{iquD&f2S2<R3Q6dqSKtt?nN7jO`!wyJB6&CJVO_?)Ct;;BuSR zJm-5ja9DFZ2R%^**Yg|xdy`!VsWx<B;`YTvmwVTN24Yy>+GRbx(JIEWRcexm&pf6% zKLCmI-{l|V5*82fpYvcwJxE}3%aRbt`Jxv?CyP;ba<N;#N70#d;Sbi4JPrBb8}}Y7 zg#*aWAOVAv1PXgK`#;=?|6*%ML(v}CmPR<LdEFw_;`MQhZ+}JE0OLmk@}<M^9=H|` z4+PlGW+v@2{7$SdBJBTXV6bMjTUJ|U>P1-n?H9Wy-{I~7#VlS*PGAmJSqD;nj?Pp6 zhwQ=knJ+*QkQ107xBQ=BaQ@Ard0+4mAe!>O=DdFPza#&BWWJ?6cD&X}{qN7g|NVF6 zJpkO1RGTjvBqaYUdLC8SEq#wn)4+-1fA#q!8yvthDO7wZ{~xT4cX%@hpVUu)+5=(L z&f8{hCVYeN1}PrEGs*cco{7h8ma3lTVsOao--j_;^BL@dwE^4?M7u|t>)=9&v3wIQ z7BcjH`|tYT{rTMm->(E_O$E=m(!5C5*F4|~VG+GITu&+5Wso?}rIh26Z#GmW4_5s5 zC-TtH!g=9Imq7dS`!-;^diqF~>L<lH1_NM)1Z)G^%%WI^@Vu)g$o8F^Fc^zkV0B#n zEb>!mNTQOWc{x&i5QI_sRwDv8R&E(@q-@IjxSc^hH>gvO<<8GE%IfP=W$E6V1?fXF z*mNtmp}_tq?NXl~KbxjBzgO;aI(T#zC8kR)g|gT<{{ey`5d3)d#}GHYl^IP^@mrd3 zgcQZ<#%iL`iIcA1@x(kxz}MuIl6$k8@pWbOW%8e!Cfc=Nd5SmfbY3eloDJ~|<oDV) z?l)*4B%+7aF}%ZXFGoB*R5q3&0N4L&Q>V!pYy!;Ao__1HU*)cbpnvVZNWwWHdk<8| zLjr?W7h9#5jwbtN;CN=IfWPy-qJdHMm`GF;f?;jG@bZ%75z^%rTI%>Gc`N+3G40<> zixbuAeLReU*o3+tFZfV0+qjZE$!ecivLRv3@*t6XbYC`<VqP96>lr(aeN~ZsUF}=q zUl=5&H$xsthX@aZ<eKE#cIqV@;VZRQ?*s22^v&PxcgO$_DHRz86_v@C&2YX(E3w8Q ziNlE7b|vh(KAg8_?P?-!Vzq)W7WY{C#6AmR_qD@Mz-hcKDD*{ien%tKX0sb}81&xj znfzY2Ot4u}RSA;bDNq5YYS0bXUClZp?gbJldqd9t1iG)r>&yZY5=u;msId*-oz`_& z#(gD5VHPk&1kdiQnEqCo&-jVz!BnUxzsKRAgE8H?bA<3eOhHTo8VO=`7n4G_8T5&w z*>Y8>^Y(Rae$iBqTUZp6a+cIjASv7iV4fOqAl?51jNh-IvjC37!8EK)^Krs0=-tuI z`ql`87zpE6^0mDlHr_oY%DHwv<TSkLO`^Pg2B(WF2W<e8!vhuWW>HKMx^bW3yT{>+ ztQ&h0GP|-CEMd@#ju0<6R&p`C4^i^xg^v~AN>O!Xcp_R*hZ#3jAe{b@Z_vSjgMTIG zjYgEfk#?iT<=AWIsOoTywW4wgN6GI-_s^~lhi<EFIe_cTf!5vTISl&9Z_DK`KO1fS z&Nqzldl&7hlJHIFaB^rL%E>m{T)6^Z)xT=GG##2UMF604fj(I}QI~bO2-?orEvV^o z%jjknWlp0odryugin^@kR_=as%OIg>VolI(g(LiZ02s}4C&~Rn_&qq?gq)nrIn05h zbW;!*n|1({cv%oJEC%Ao$oq8{n?-W~jA6O;quxFs;-x}s#A+8hkp%yhdLp0<{Bw_} z`>!;+47|jjjHILFrfUG5Xd1kpw2vbDK9>TFg!`x>`-Ft&TABw8WVgdb7Cc#K&3e8l zvL!#%Wrda{9V(|g4R|hpo?2c0@RfZQJcR4A-)4j(h*;LwOh{mh!IW^2n^zSMDY>TV zM_s=kH?n^+-}fWR%LIHS{FWti(u__NXOL%RmMpEDc&7U+Md3cm<#MyAbQbWatif*? zeh0DHJY<{R7~WgAH_I@r%3mT9;s=%$ixyI~qDRAWJ7D<%w+Mb$&_(6VZB&4=mb`IA zMvk8s#+t+<P#Jd^z8x&|P>tYn7ZZ0bszOjlQZ(h`$6A$pf738V_1pr&L<<^U%9MX) zxR0j2oL~Q6{bG|C)KSWayRjgZFn^GIo=8aj3Y5KBAXc3GfA7)bnp;LEd<Q=F5@(u7 z^9tNjf=R54N@9M~F0p&03-{5UGaK2x$-A4mGOnp=r}^rM)>LfZwvM=4z~+f%G}E4y zYkZA(Sk1T#mQT5N`4zHnuBP$0#F#D`FZrlfucXD9aY}w`NZHCvAR78GKiT5zSA;IN znINwNwANkYb}3?jQ#JdMw|ZPdc(375n*z=KUeFCy#6Oq&QJ$rEQ@~L+12sj=Lkw7m z;o2T`1hne#b=LwZpsk$qYk!Qt{0z`D+mgDf54it*ja_;!>k+6yfHSE{2>SPBB`+vM zao(q{Z_)(s0FAd~354`k0s{j!w2DR^3?5|3Tchd=dqZC!2KUR|bzpx~SUQ`Ta6*6Y z?ie!8;lEbp<T&45bnh<c)>d!!jp^cK(W{3vOMjh?BQ8^6-g0C`vkBl@92-E7YYyZ7 zVFikiQyCXccIY>v0|ts~T|q&yVl!od4l?&%&U`BE9HfeDvjo9Txb$1J`)GN~Pl4&2 z^ZN^&qz|TRSHtyQYtxYg8LZO}XyULDLUE;HiGTfMaHi{~tN&KcW=wkKHoi5}Dfrae zWN{DwIg@cE%+=uO-3gsl{m#GY_wIJF*-0w>yXoD(58yvEAC4Q=Srbk{a~nIWg!`e6 zr#`ddm+gK?G5&DxgO*6~^TniE6!4ik0L4{6n**CWcz5^sTl(sNsHh(Zhaw&6`iAx~ z&6BG+6TZ~~z@W`gOC>0Eh}$yoM`yob1pzQDuta@l#o9eUYZGa`1ofz4<z*#UQci=S z+&Jn&3lqWr-Pb+@u1w1hJAfk;27!85_8<rpH-Xq9-OEDHA{h$HPjkm5onLGfyD5us z0qc8gNO@NC!wW!9u+sx0?^~c)<*hEv9Y_X4>J>vw+CB!aO&t8#Y2)eg0B`!o)dU96 zAB}tcz#<i2Th5bBsk0T<Mj!&)q~5_l@dX;;7TF$9w9ImzoZ~Mxdo&)>&4HkXpSl!W zco>Uj1?zyK#R0_XN$e>wK^A&oI((zc?4Ih>$yxt|Ht_Ivud~*4IluRy6^mB6+b3Hg zicoueAF!D&4R>a*RN_5zaOI>VN_N-Sg+V#C&%S14FkKA13JaD*-gc*jl7<TX2Z8D3 zk$+}vOMk)D8CK|4Z{l?f3+Ue3*R8_hwX_RRD%F~7Kr(&M6&T!nCFCh=@_kMBqc7OK zF`)`PzE4q&H#4^Z_<#*qli2^#Yddg9wvVYo>~sv=v}!Ya>%mP6T62uJ3YCAoxd~GB z`FY5Lp(PH!%QS9nGN}HkPhN>b%je7ID9~!A27z_RxY`X2-tgS$y)bMIbj?}ut2i6V zD#@%=Bl%N(cI%j~bXm<ef&ko1Y}})ANUA=~bLms{RonfKpkaHe8p2&0=YK+=mtz|5 zd}_}?GpV{|WMwX78+`Re_I!3$njIw^wa_$DXHR^(shB{`64eBrn@j>`)e)>)?3vr4 zd#`)6qt+*ddawF!bnfp*@6!QFuGzFZnyFK;rphODav|UbrItay7v40-xpuJdzAX0@ zBSZN^A6Joi*Vr8ZF?de*{PMwN5dUpyP%5eZ8~koc-{sZ1&S+Cs#*3y%XsC6dxARV( zLT|&o3RSlyK*Z&l$O!C})z*S2@F_xdK286_$cr!DmFu&1Z5qdy;fvNMfRL3zcag2n zuzd0-km#eofY*nUAoox1L8o8kDGjPJr>b-s@{QF$`D|Q{?y9X3(1|@hqNMTu!(KE= zdS=uS<vv$NRoXxt?fe3fAw|DRkpS2{p-k&pzVIdQYy{%vnV6GZ{IxT_YN3CCxZ5jy zbiIq6l|Zn;7dhJLwmjPK%Fm601CZ6!j>5BmFj?td8aHZG_qrz^;HT|;HDnW5nA(KD z%=lngJuA{%LsJzTp{X`Cd@_=U+O~w?`GtbCfF8gx*c~>?j|x7%IwOqvi7+x37VhKN z<7j|9R|p8JRe3z}Y?1i*)aV+S=qc8q=V22O7!sXm_H{Vp=4edS_L%NGM)>_HRqLCf z>bc0jhtI{ApGQC%0LA$PB<KctJiPj2(6DX+UJqjI&b0@13t<WZ%3w@Ue-OI(B8EN7 zXvcoeFF^6YK3&YH`mH6rk0-#W5mv3Yrvay0&ivIXkpAVy@e`a}NxNKC#qZb6b=Nv0 z?SHZWF4qFpJ(}Jy8E*=FbVq6#!2<5+Ri{q9N~KVFy;0fKRYe+AxGLe+Xj7B%<_Ud_ z$#3nn8Y>a{gL9ZqJ?i_YrD_^||9rcX^M!WtS+fuNGKo`v!x%99=2%Pl>Fw~<9NMR= zV*e$lQnmb@aE{k0ai*5wL~zjy4lAsaLjKU9K!Yz9Hylx!S8X^nDG*yA3U~jza`DnH zeh53z%Sg7l<v;t*Q0XQ%$95703?^*8S3s;`K=r#8phN?Q`4|MSpw#P@jBALSYY*MR z&+nrqwDoxPPXMtRYY~sm_iE`uyM(LuDInMJ$Eac_+`W%=s>@6mLlb!I6{2Pfm~uFL zYP4N^Y%~XWO!|^t?*xZT7_nN=PRkm!lFgdw7L_HZ?5XzmqU8whWhsdD<7130UQab$ zlVjM1VuoVN(y_6T>@+v@gV)K@L@?+R8kLje_Buur&_ui^>02#_(fcb4_B=dUgWSvj zj%A+U-mKKe8OPDU9)>FmjW|mZ_9cPUI8Ce;N<L?0!^g{S{k)io1nxE)(+&Z~mb5TW za%xZ;U@`{ke&0UdH~nx0Ah`IlRBUdFcx>JWDXh387GK<te}ny!4WQ-7i=rm=959)- z?qbstr-wV<>uTpfhpx2T(gbD5$W?q%r8W{8K}-zk?kCIbY}S6juMpzff{eru6MPXy z^`#-|1u}?K1xGgdj24Mc`d*zwsZqXNu>l#Wm<S{sd_1b*(e8l+!ewCR!xEtQ#cwpb z_A!4S2Ft^i0~nhhG50mVCGMUmFZlrdAvOs|U*a;Q6Z7@i0AoMbBW4KzO56(bpBo?r zd{QN11x*MuzR8_Gp!?y$yks(<32$V*qq}-;#%lnv)YpIs<Cw|qmFtSrX3uR}Iz87s zGnuhkYN9t1A`4|B>Lv<x=D-`LgB4_uyqj`S_Phb6(kGj=S6=}krA=z+TLcTSys^?e zp=CPWP27)v3TP~sR8=X!1F8~RGhb(4=lQV>37EXN?EdrQn6ed_#Ue>OrfI+C*h1rl zTfPS<?UYDbw@rY2oy(0-fM`?)p6NWH-}$>kMF|gO+TaG8B%e<6O<6o%G9=Tnr1p+g z6vxf^r=2U*PQqaW1IjN0scP^7!H-LG%T^nXB(8w~_{B*Z!!`f2*o)5<k^Ct#0}XPI zTkhPhYU#0_6|jHj`yNR0>kCDWR&m$iX(x&cgmpO7&|pd7X3pni;3+Njg)klsaqfxs za>k}tRaYro<smxW9o(W*LYb;az@YFo>iX@wx6_%g-lKnTS$Y9^?|cq0al)at-x2F; z>Qm|}BuU%gio?NP3d^EHVPq{2C3E)idz?hD<JXf|e*!;)GiL3A(~%bw-XHk2j<e^5 zd61#9(inqPH%Dfk9@%`)^zPu*BAq5x{gJVrdQo%b^Lu*&(q@YvxKOK94P>Zm_pPr~ zSnw6h3)~g#3-=>n?~5Q9ek7<UKQC*Pna+)S_aL0;{yNJNhgpLWa-m<`Azyz&N?zQL zWi-ZL%#D1nykST~VFXx*GfUmT-XB}$3M?Neq-a-Y_u%EcO7nYsNV*hg+~YrVfgV(} z%IoOuS8ZoFcDyi09F^p4^OV^bwyMMfbgo&F1p&_h=Ctp7o<qz5hblU*S_sUd6Hcqk z?};1XroTS_{CbMaGE4n<@XOn@b0JbeszIyQYQmE^ve1i}A(88Hr?Dx=Q$#hsG!%3X z3v&B|1+wEu44eYbUj(GUBb~CYx-uiISsHUCbEK9fQ;4WjoCa|3YDNiE#g<;Yy^PID z6^VT=X`op>1mftl`n-C5wQ_Ik==tM9F$Z;4dI4I$%zvtAGJU@$3It{1EE61UZKw)# zD&K@5DD@rRmjE;yoxuZ9`LCT-pXanM`*s>q#{M79-aD-6tb6+vL<oWs1Sv{Ks&qtp zkt))pgOpH=Nbgl3AiaYiMd^r0FVaDJ2SGsTO?nj)dW&ag#(Cc7ch37>XU_S@Yer^5 zlJDMYuf5iNe^zOZt!ZRhdAcG?+JgZ&?_8)ua=B4go2QxyR|J}O$aH2KWI;D~HF+By zr&VW%zT~5De9qj~Fmd&^{>`&uLF4~b3crl?Bhq<}u82MD&{<7<z?boSz+1Y?K-t@b z(HTo>m89n9vzjZ3r{e-uTi#dhr5;C{t)`&|L={rpFZeU4db~{pF%xbB<|Q1HPoF!i zrnL;<=~y3kQ`5@kp9a7JZ!~*Li5Y9uyT<9RQm;n7^4$xdeJ-I+d~|Ab;mm8EPm45Z zFkSG?VC`?rxzn~C|2f6LviG7eX+RX2;_k~&j)HTs_swLRRfE{mt>89!hGVh%I%R-` zo<GB;-*B7kS2q#u@>k3R%>g;;6oOlA&O&NaCm)`WBMQ)T_C=t8k)n3;+%A_+Y&r?q zKeMSH8lqNjVO>-%zZ!p*(mWt=DMWtwT!M1?`{6QqM)H978@hePPXjP2{){U`h}8Yw z*8|Pr*TrV)pXO&s2&JDcJFH6g#wwUSJGp{bz4|*Pf`~7}ug{QF(@PRhu^~Cen@9Za zLmRzSvKMVWnEAN;8H5DN7uPsW)|BqJA@9qH6$ED~`AuD5$@Jx@C4g_@&1t_y4>`|D z4BtBT!~pC-X3n8ien;`c)r~bBDt_|A7j{PX5|XB_!FCs7)G~v;g1y^zRfT99Z#W_! z&AvNEcbctYw>+($nbLafj50`ZCe{jN*--O&JjononE9^m3gfaPIWqXHCx~LU@e=?N zy)xaw?uFu!TLw98E^fCZJN3~X0!{2yvJ`|*$|;>&je~=qP}jxRMASEBN+uuA;0Pvu z@@LNzcFd!NnFIa3un|T)RDG<bnd$7#hD&Av19;rhm-u&o<wj~C>dPLSJTh8>Nd=c_ zjDK_k%r~~_3{uDXy*2`ww8xh_*;6fX2Xtz&_J$pIQC#pzmb?b>H)oLtdtsXcEGyQY z;T4b3dtv>NM_-G@605(mO+CWa7N9v9wwqfurm|ErP=a;INmseWI^87L^rFoqIGoaT zce#Y+rn(>IBYwXoxg7AW%gtD2`2LONMAm@wwcQ5icWbzh>~AZveXOBa<^!gD#A9>x zOHIR;x2GmA*Ym!M4eV&C#E^P6JfT>(Cb5{}>?<W$laV;^KYYfq(LPEOC&|`cE~)JE z&K-l-xkP&>zndNE9>(jGL8OTEaw5m3mL`HvLI|=XrRTpkf80HSoXv1O!S}7L<*c0F zTk;+0W0B&od41<hjLT)$O%ktQj3oc!WzCI<I47kWS$27Y&JkUdm)<Cq=Z_?(B{?8I z*U5i%Onc2l?|_+iSa%4>wKllB7qoYdb@Q#wC?@JD7@UWtyF_pLzM(Zkyq3W6@g<*H zwcn^75{*Z2Xo#vJz6WV%(K!3tuD+iACfVC8_?=6&QnN~J*lr#;z=Le)OAg4_Sz?e# zvQ4MCuyyD5Z^a`)^>@j*R{LhWoH<wX&o2dHn&&9r!@sj^@o(N*>}d#4!?mbn8Fow; zNqIQf`8!2znVEJebSRs8`OA=`4rJ*{dDD{5TZte8ikm-8Z1M)QZ52R-WsRvkJW%`D z>4DcAfmp7pa37|~1M!tm;RoL{0h+)ZtMpLE{QBJVuX#%o-k1P8Rm@*lv4kc)wA<EH z7u0OROikl@6tT4QfyBHTO|O`=ALYAuGa$p<Ir9A;CcJ8#%TQ?~IA7#1Y8;#wcI0eQ z7#5Tl7F-S#AVV$nT<5Z_#LR@wq|eoJhtk=_Kh0mX2MkDZ5bWM;)ZL$xnjh~(ryx=( zx`<Oq_K1)SO&_MUET0i--M@tYirRT>GxR=XK5|LiPM9|`gLfQkF`gl*jFjqNhi?im zY{;7iTAdo_QuRb#C4Z{DWhofwJ$!q1oyN)Th79ySO@uRUEM_l?P=|=8Rgb@^yNr%J zdZ{70E=suEAXgn65T;DFkYQj2VqNdI)4Z!x)YQVb&r-a%dIdxuzd7!1j>hLE2N=yG zgBvoW6!eMG9~ANgcPSR+rSQ7>x<4>tGsq^vv*no8JbD9p5nmlRUa6{eQv_PHrS(dT z6s?DnZ-hQA)0CEi-C<LHa;A}!f`~F8l<vBcY7mIeaD$m;>&8c7Ut_cI=-%hd)eAjJ z+Wa>kk&ryRpx=C+&Giv0U^{{O_noo`UEnkqw`Czj&aqDmm50$07{jG+)U?E7io&L5 z*CgcDbZ)=)AoYJH9x@SuW#92I&8a+9o}O-n3Jag)r(H_UgXWI1rxpzCnI-g>5%Kqz z@Aq+WFDpCIn{n0yU(H9nc)bor?!o9G#wZVoMRVr*caFt39lmir4Su|9mY!)d1ImX# z8@Y?0oq5!tZwFq3VDHEK8!C&pw}c^1DK7T7FO)9VJ6d(NeA{B{FD(U(Lpd#9&6+)f z4wLOOqt$8ae~h$zX2l5<gkLEaCJ{QV77Y$MyFtwE87^kLYIbT>LtS(yrh><@=tpDJ zr=-R&pq!AXD%*aG_r1XotIzXrC*w^=NztB6ZYpAxC8!9Go+l`IJh#&qISBbA=$PQR z`Fo-yH~{ur1`-<k`a*X*DR$fv2Bp#vOspf_P#3VzgIv9&{2eawepd1g>(*Uj_bE2m zEeYqX#@VMIUbdssKW-ndUE03LI16tK+Dk#}mJdewXv;o^%&ga}Qt#aIv6C<}VPIQr z_qahjNq5~*$%sB9@lXjw5wZJ0w7dh3(^hwJmHLPl?+LYX?Y_+LETx~Pug`5BkF?I6 zQ&E?Ahp(Ae8g}^^<YnFz(;LTmW{UNr%^ZdC8;sxZWI5)0R)YML2Zwi;0%}0Jy&yuW zF^*PyP<uyHYv(Tgi=1?6o|Ih{O-bie&fQ9(O}d&c+B2t4p>FRV?=R7$r{Q9*padJt zi-WV}eL%7l{q&7U0Fh{ZNVuz0oZ{R0Wu-IH#{S#Xr_}z`yN=!*1}^zi!v#Lq+vL#9 zw5NPsohC;o4Hz~NC7@lgduA(4+~#_jOTEI|5g<1Ft3lXTt5;WhOF13(Be%f)^wZ5m zIeHTb??@k4X-G0co~4W8S+6cgpA@wR_YJ2fOQ$T<ZpV<WG(Ks1GED1-_~D_IR`ZxL z#_gPRXSu!NmB!)Zw5=qRL8FvMBKV~A<W~y?ZWjfG`&!y(P3ab}_n*%^Nz-pknlEmA z-ym?v!@N2+YE6~0YgUwW>@c;yeq!?eK|7BWe+hVD&YVED&QwF#r_y&nMPp0jpbm6- zC5y~|i3@lZ@V})jTT|ikWP`%*=<9FzyjR+)*1actBX3$VlC$7!T#O2Hs`d%g*Lak? zjdp6Rd9ucH7B^pgCs-)6AIJSm>lQ%xvnqdE%^*2WiR_qqHks+t7_5jR^4sMof?F5) zj@{rwVSTxO<vTO;=4lA)a8hrvd;K)>1xzG)=7m!tw~c33@mdco6q~}kQ1CRPIjNQx zzY~Y~7)2#SR(!Iu+q=t8*}Z&Qhif0sh*0ruCPBUwAUxgEnvA*X2l_0&M#D^KMjg52 zFoEvuoF>yZlvtK2K_W$DbQK5i6OlJH<{oCk@R2}^IBw#7I+6RTzTK}DkM`P$hGt|D zJqk#@$;1<N)iC?H+&&Usac}*e;5NDR5I@}e_FrpX^uIia@W+BVHQ0HYIK@BW-3-qT zAda_bO0}4+e(m+(nIx$6J}%p`7izoX@5~qyB*ihdiWgg(eqQ?<$O4Mq(-?-Z`ju*x z%j=H~cA|dRiRyvFq<o<2T}}Q{7-JhbjHXG8BJA;}foz)sCu6c0v|D6pvZck+J=e+) zJy*)Pt!bw0QG_?|7lxMfQ5{l{dG*N-8OB_BzxFMJvtDaMoyk7$`c=pF*PINDMfOR; zXKe>S^mE$?knq=GU<&u}Zn`g{an5gD9o+q6hINy+)})jn+M7D5<?;qcKUL7u5|91e zQ?y&z4`sdOuS;gb9H%$Wl}NG8<jT`?niRwoMg3QnUl@KqwCh6+E7yv6s%&RyZ*Z@* zk6Sf2YjSMR@=wanQcE^v6Gh1l%18S$m>Cuo#SJBQw4LcrzLH`@Oo{7Osi{}llU`#B zUEGiMN_|*3K^~Eqv_D=!yRU73c&@p6Uv?~%9vX*Q>rc5BF<NO5Dd5`2;GMn!7?%`N z*NSfKqjk53_)LAk(CUQfpbu6Gg$HbAhCPy}5;|gY1J(bvAt~o}j7M!m?_8Fm>}W1O zy(ujiOW`HduFl^y!pCZU5;SLrfXIQbnF;1-|3l(cfyW2dwVlDV58FgqVG2JyBNCA7 z);kJsC0;d{Hx$_f@rDVNXzGk5H=A{`opGi?u|F!0nw=PcNlC{wC_7bHvbImSGYQ2{ zlSYnt3%D^s`qx3rsyi|4@X8*)`JKVu!=SSQ4vBz`2_e}r{`aZ>X_rYdEhL@~hz6`G zIR#Ukym`6`vwE-gE`>V?E)#N7fHqbDwmN=M=<00k>T148QdSKbUhm%LKdf0Kz4-LX zk%-0HY4`%(=3UWx5tJQL*en9d-v;jy@aJ}HCHY&g>OcM9ImwJa)qt;()emqcBzWz@ z8m3J{s9((G@4BT|I?yMa@=4#AJVjNm#yhTZYplk{&tBv^wczazz(lrz>!AubE<R@I z&V><~?kQ#lk9WpPq`;d96YAt@JwCZ8p`Dc;t?Dph4~;}LNvx9<Yy(XZf%2@hc8!t` zbbjV_T3sjaK6jkefZ+hV$tL|2m9*Nwk&IB8*qK|zBDZ{Jz{UeJ{+utC!bii)Q5;M^ zr|YV8xnL%|ALg*H7#}=WcUaf*{aVt)-h1&bbz|2AKo$CZkXRWgT(}D>%t}Ag@HO(7 zSuyOREl;f%8Z=}j9vQ*&`g%?BMnARb-pW8E-y)f)7so5RtUhngcd@%OBATJn1!Bab z?Zx%i(xXmlAw#~%2w1X#GGCtw<G2lFl<x^$P!uJ9*UXfz*mv8lF(v6!G0+!oNZnr{ z7)TP}nK(y97!9r<YCXnh!VBu4-@GeW5e4Sw#bcK^_gv3Mt(I9cxI*y}T+#Wj8i=TZ z9?o{66PpL|Rt8uOWzu)@Rr8ATfP6JO_Tg#BKQZ96Z21_B?<90SS$6rf>pdb;`Sp9V zgL7Qz=?F7DU^bD?Zobx95u-(;>vtInpYC3)3O3_kDxAqTr54v6YQF+~0NXI8M2PJs z(BIe{NLs!(M?9dl*t~wG!qwMDTe5Th;Y%DDe8;ok;M1EL%^-isD7RaykBQvuR$I{> zyv-$yddYjkBtY2bw6Sn1c;(Ve65iar?ylB+8E|z!Mozj}awyY-cKoT^hUh4w{WP=g z6qS%Q7p%#saJrV(#pxB&<cOXEapQm`h<3QN*0$;fAgjGS7M$AliuRS{xNK(<1^xOh zBOTE>n=kJxyuZ`TDT$UNbgG)E0_LrnC7G1w$|(pOi2drWd}AdL>braCLf-zK;4BjD zE3P0poTMvI(?@w0A%SmaXIYbf{K?C=+NsehBim{|)HlW8@xz)k+Ra!Bw>e^yC0dKX zdR7{XNI#U4=RiYpsaN5A1|N)=d(-6i(-v>Dp^F^){ayoSWYH-eHht;x(p;F&Cg1Oc zZ-6<^?u=!&z7(fGxr<WV`$n5pnzYN(?eHha=v^?1EcuK{R+oXEA}fuZ)ilOv9r-a_ z;jP#(>E1(bt7__~IbBb|n7@zy0g7PuX{|%9UG~VKdO4|mrfH>s?=Nj?wu5!RtmNS^ z-e4V+wtbBx&tvUDWMO#WKN-NR_uC4|r=Z}n#;MVj!(B<6f4037y>o`QXR16Pd9cp+ zP@Tix4k>(4We9m`*ID9GKeC$ulK;o|U0)!LeQPw1`C)CZ$er~)yA2s_iFcES)meC1 z)}>o`5O-q6r>ikB=|M34-x+|JH|~}Ws8hc~h5y~bZ}FpVq5EXe3%NS%@{sc2pj4SK z4ws}7eeKoBIjHbV<d`t3LimymNUu~~F9Hd`LBs5zX=8J(tpK4mp35Zxt@GBsV7-Dk z8NZ(}(jT(6Q6;vAGl%0ad%I!YMwb(mbMf5V-WfRUXP&&aE$<|I^r?Hno3T40#sG4i zq!E-!?30vy6iLl_-Y71-)p^$Ijh{{D1!ssLhvUdAcO>BB)q5Nq5-~496=)C_NO)cY zwbJdF#%>Tf5cY2`g|4h8g6TXow(CDYXU4V(M+b_}>zVG}l%SVv=vbKaXfI^%_AzKb zhMWc0hqx$lI(!YGPt?TeS|(Twl=9=deeKoh*8chTnB}`QR&OK?>(va2x6b(RtIl|| z(?d5NdAe@d<POE)nTz8(*L2(>O0s*;nS)$qzj{^qMg7V!9d7nq;TmfpWb__Rk-~c6 z5~MbSkn$Gu`@1lGUoyx0r}(We)y1?LL09e<#B67=<KZ|60VU8fE3t6XsAdoXW)!A> z_WK9(DL1mpTztHlnXxpcBJ<@@@;;Zg@X+}r?3g%RV`!9_?h10ngm5^6n}AZ5sj@!- zfl4>PtpMZ)QNjeWB?CD~GP^j2iC`LPID_(|_E_*=O`OF3>@icU7$kB1wbxW(HrVF3 zFO?>DxzA=t?K`X?Z)QgH)RJ(KQ(brM4c|LtQZb%n`aEaIW~l+~uaKigA-W--oiUPA zi;sH%vSD-l{xTWx1j1$*Oy=I(ogdT@`|-wY=*-rqanro4o>MWB2>(g(zS;bDkrhHX zxbBB9f;};T`0QoVJ(rhTI);v&bb8K8gFnASG-0=GzX<eew62pI-y_CuWACEgv$v@& z@Ch&Q$<cb9@b?C0hpmjJ9^acY_4ZtFsGU?CXr$FXI;9vW#tJ4P@gR~*=<O~&K%SKO z#r%G09kKfX<m&7`;S{^<uZx=iz8?NSTg+t24m`r)Fx$^NFTLH~y6>+mfJqotgOR46 zDpa(0pFmEu*$>>#Wmq*5_t`xoUKJipYIZWp3ER8>x(7#OJ`r0d(oO+6IT1?EzM7Wp ze0%3QmS?HF(2a5VXrv?Tl5L>y0~z*5)lqM;XSNah#})H^4X09|b^k7Yi{Mb3R|Rj@ zo)+>3h)w^N0j_uBa5Z0`%9h^}CF3}c%%$M>SJk?fl;M0dsJ!0aY_=-Obxn)Aey;Au zi+tW*qaRgfBBBz7M$W@X^kVf7o(?8s!z=0s1xN4U$v(F}9Emo625tNocDW@H`MVdV zwYww^{`?<*Xg1VFW~fblI1=G#-8B0`a|u@@M$t1L>3fx@NG6_t6-^X0uVW|of_L<? z6t%r+;aFRMZ3pEp>?N($LU|C@vp$GZ0;S%uFPRPua$?twUla#tc_12^m)_9Xu~jH= z&%BdccxFGzjY?E2c#hW4+mG;Wb^7)}G0%u2&n|_JL-G)``Nh7w+C9p5!T;p#p|=^8 z8}+_79{J8&SmiB?nOAKxGi~FD5BWl1ZcVrnL4wiDpavGl=~#~nPb-eTzK}xHo!cmU zC0ju!G~A+ARq3i=c0$lf@#X#DE^+~(Ei!HXkv`5mU>_{h<RDU<)z>jL$6SnE`swuF zdVDAFF7y=LCGw%2q9Dh9A)%it4usJuM25i+gL7~CEC?bz^<LCj-5u*}_eBTzMn#nI z)woe5E}AR0tQ!WVsepOgSw?P3&rRzVJh+<SmL@f%sgmE}8StL1s<r&hS$0oRZ3?pw zz0L=YhIEufK`R9_+3F@nrA?(%!9Qq@4pskT-I_-|qFl_D9&GSLUw2<NIEp}Nl-8jI z>&9*r%PhOCUN{SyYr6WGnoA$ih3(<xwM349x%h~gbwPopcg60SNknb(ls&%%Naje# zJJ9;!XuhA8Rr49)xd!9}mrms8!PRq|b-^p%o-x^op_3M_hV5I4^!6Q5Ou4L*2jnva z8mrPH1CqD;3@?7HS3h4XIASX}iZa~3J;nUnAzLYx0+IFA38|m7WY^l@Qn!*^+IKc; zB(_JJwtk$~r^{RPovG3NG$e;|Nswdo7g<sR=TDl_-S3Gauf<f*FD9)~Z03;VyHiOO zysx!(UcQx(TULkTkN>mn7)IStvW+z)(=VonPi!`4+~&XL&;lOH4-x+0tiFfZUkY>m z|H;NTK{k%)e1*B{hbx3T&Hb8D>_bbv{c{&iX7MV#d^~AkUvp_P*Lg!xmejT8;8hC2 zddEmh+T&4*IGyQ557<mK%I+8Tq(-8hso4IHl<Xwae!kX5H5Vt#1-E_KKH<8ir!ZG6 zNeE(sF7k6W5Sad@s=pe3h2*&lRZ5uy|7Z#~_nXsO)+q)PknY)f-PQgoINDV$2B|7c zKk-CC7`N!ZPduOA3c8NHT$_kT`Il}=Q7MRAnh|Dho&uw%jv-h#YQht30Wkfx&!+FI z&)jOtH&0N0DF#{F>ZFsGY%praLLtg*Y@EA?Ld4@<ZT@@+gS1E`;utfbXE$V!Xg5SR zmQ+VURH}i&fVaLM-Amh!H0z7PRyq;0#h}KY{o&&(h4Mo-hlXIMDYDJ<Eyr+ck}>B% zb7SoeQ@Ml4`&bXnMY%BNR%;-;tA}{ENl${NYDyhbzgLor@Epi>1+^&~bJ8AFzP^%` z?vdL10LCDepox#gc!=V3rE#q>aAa-H49P)PAr@xhdE#4{H?jJ-H#A+!y{qoyfXb7Z z$KtNeezgHdpNYm$9n%!gLU7Bc9u93`Zi)9IKZ^OUshc4UVdx#5=lnG%Z|G^93O{7U zP_}Qu?C>1ve4b93`zF<~gX+cK7gw3*GQutqb6Jv)#bfs2W^FAZiyK}gR(Ev{1pnls zmZCFWmcb4m(*s5U<o+&7N4<7iXO9miUuXJ0rn%|D33>}9q2;2z8Mdzb&-ImnBfme? znsKfFC2nG19pyO4KI^^rT8ZMB>@3AEI00=jg<Eb)Irct`<lKVotRLqiII6BELUN!l zc@-55bcc|{F$Q*}?jlrq8IRFz$mj(ffq?bzoGmYEfLu{%t{0(wPO5z_pO3@F3p><l zmXvD>-xxR-G=I2U4%(}t-p_yP*zm(p5+MI;2(4ZcXRCqed+rvpFyz_yH?WzTH7PsP zDCGTpkIgKARG$GvX5ug@^3yvI99_(&!3{RUXk}LH3>bp6i}}qd3T!lgG^j%+9@j?i zmCq^6!5v>#A%bc1yKBMp74IL@J48QK)CZAy1^?TOvNNY<I_A62k((SWa(~bCcQUW} z9Wws8Jj(rzKq!y)yF|Inw<4dn(K?%Ge+HZnh$Ji367KK1@C}jVXhn!nvW9`<?Y~Yi ziddXvij>)6siL~ocda7wl@qJXyY2U`FG|72I0=)FaOhS7P3}{#P?TUOI$#=eSTkwK z4<0S*Z=H+Kc%~2CK+!bGdA(^s>oJLO>PaC><))iC0iH>B1RkvQ{Ega;-RFGWNe8`m z@Fh?*l_*r;dI&yt5to1ykI6^_>%A$@wKSQgVnJkg2N@a3g5FUTVv-+hpZ1snBx`U^ z8V~8^%QbhZEB91DG_0sMKB?$^6xmT77omgYv#}aUE*qEugjsejN)^uVm4ls{`J3_T z9YbFS$J3~!UDlKgaMcNpA2{h{fwh9yVDyGTt>d8O_4FO<qBx98Wj4J%Q{bv_=+22* zHRbpd%Fbr?0QZ@glMtbkH{VPdV$Fwn<A(g+aJ%2_vxJdjf3!m|guJK;^)GW+QA!aY z6*EEZhB8J&##B+h{Gp*t63lBbuZ`S`e6Dl7s~=K%!k(@6_30w(<r5tXyK+v7P8vXg z_fQyCUzSB7{!E^Oq!ZLCc(-lXi1ZMQKFP@+n}5Klq&Z-7e2|Wio77WG6MEG-H}!l^ zS7d~n!Bx2-HAb=kf`w$1^V0e{&DI9>EIVYnA(OJ!e&b98DBkr>UgE{MiYH~?=s!=Z zn9n$_Nx5Xjk=>3C`f1jfKU#L8@cT8<jqo-&Gegg-sKCIJM{~=RO@_~FOtgzx_IQG5 zJN>H8(AY|6?Rw58X2k=h#Bb~I3VSdB)k&t==qiofj~uk>q0spxjG#T()w9M=R|tA; zk$={|1G*m-_lix&KXDI<GI(ZD(wq2d#5sj(>q#)TXwdCer@8$127A%mY}Le&wh?gl z#v+SWarW+fu17}5TW)&lGXlNr?Sys_#wDsKiK9%FG+_G)peUn=24~U_iEBR>jp8e& zikOnU4gYJ0p$s*5Yeu3`+XcI;Cx34+Phah%g1IPo<($Hlo?GV|%e)}JGz#;VOt8bC zBNjQ~(s!k`%~l!W+F}|B`|PLea)>MG+KX{!b09tPYPei~o{{!|UF0kaK9+CU&#PD7 z%l!U3b;PpKyE?AF%0{=wNG+d5@;4jg^Y{O<UzzpJgkWj@DGwRpjq>7S;b~gkFZpvU zC0?Oc!NGCq*=SMdzQRcsTvn^Db`fwTg8Ui!r0s@eSsPhQr>)~_E{On6GVDcHM}r~m zM23PjXcSOYdQ9?mQ;{Tk^uj{kejrg5qBqx{t*F(yarLK}M&Joa^rA*pV30MCST{rE z7xkI-o;%_2;x1AfN5+8JggnIU<UE*>oz*~yhlhnb1j0kC14GZ^sq%<PZY+0U_EL(T z_9LEfZEWV_evVKRIOj+B3}0LypA^!4X7w^=$e)&hkh!Idti|v7oFh?y281{zv>pJE zQF;8#9=!z1jK<M9OA+F@=w3WMYCjC9mZnWBkw#1~IKG!lxx9Pcahg?4CkpRp$(>+| zW4CJM31YRx?*X?H(|YbUpZzGU4_yJh;tq`<y^H{7#%@`D9W2GGzx=JmhhH!vo(U_Q zHGzvumD4lQGCoQ<VROm@;ILy@cJ2`LR6sWad78|Zo)J8~+Z>59eRx-)df8z*Pf@;r zDC#Jc=sj5RJ~RNsBP~lka_pu~!iZ6`44+C+re^!zuV;rRpcI<)?7tjVoUUa^Zj+D3 zh-6q(P~|nTR@@V-q)nBviDrUw81kmbiHBXIMd2~rAHn&U=AgZWrufLdqjr$fM}|ZL z3kd0y69@6_&aBW3F!}zhYyiiV*He6#m3H|y?p~svS=ctv39oA~6Z<YmlFgQl=;`d{ zzQil+3J}unosPqYCvoc$LvM42#nljRY5sy1M6;cugyn=|Oih&<<UBrwY{U;skoOy+ z&zdULU~i6+>obK?<S!NV^GX$GjDdlK>ruBE(P0mmVNZplzfFElSSC-}eYvd8aY{P9 zU$7C!V6S^ahMWf-a4-+N5;B*HUwT_Eg2;{a8jJdONkP`?i%62HIt}2vbKY^ln4BuQ z*K)PJq81}h>d~#_3_XwN2i^o6HV(zdl&kH~GrZwAM43)7&&@4d<)g&6H3f$_Lxr0P zZy!dADW;g|t8%Olm#(#!T{M{3+=Z@xV_7rG(`yP<_~9i8Kb-)!4rw2$v=&imw76fH zTU+inw=QTb!xar*n)i?#&m#~jvPzUK?3^ovCEqs^Xi-ngV?rnbmkvnwrKKj8B(bGr z>y;rRc`H*D-r54iAO|)>+vnNKQj>J!mQkhJH!O~{=ur%fb5<sa-G|Y(X4afv24-0` zEi#f6U6M$i>Btd`9TYDFNhQ>OR9;XKDyZ*ybDUII+Eo8OG}VFk=i>}(uy59nYDsrq zhD%(-%Hcrz-*FXM;yrDY^<6SbI+mH6k0|-OK201`;F;Z1Jv*;GHLSI}8u;Z&Q-KDM zK5`;peO^iKP}z1pfwfs|g$s|hOzP*#k?wp`Z50oTp8V#Z%_}e`)JEO@8M=~F)0GC1 z33rN?)HVY3>mME;IMy(EHChUcYD=s6bcYC~$w9jVa{bj_QlBHzjYmG+LWDkIiR>>_ zc|=g+=K7JxD2d+2>&~&?-_InC<USrPaDDN%KBJsxE={k_51z0eeash_*ug6@b#Ko7 zbUo^bd$*v2Q7-+l0E<GZ*XO1_e(HhqTi7>Ozw6HYZ7jeg^q&XC$*ld*D^abr>nHD= zW*ob3tZnK;q<Q$k)Rqv*rZ-t6eajwVWHnJuC#Kl^#^g1J7mHgqZQ85rQ1jMUa)Od} zzFXY%kZ1@ANszJ-`L$ao+DwGX6MKu@A0S8t)<-O9kFwVxce^2X$DtUhIB$B1t*7OJ z1czxk75`Ob<u^Q&VQ`WWEP@*+tpwUEROmUdgCFroi^Ot!P(DiTS->;3aJo$(PB_8u zkl`NMsAq?XTnso1O(&vury8FI$~k&5H>l)tF(M@`Mh7#VyK%Q+3k)u=wJTYnm!{I! zUqFm|2r$Nz<Qdrqoj$3I(GK^b19OvUlzovi6sm1Qfw~veH77&l?T3bcslC6H9lBg# z3gbv7+P3TWoq1Jyh7x!?k{#fg2`C+J)8b>oB5Xd7@ScdUPE}FnL&YII)d-;GHR8w! z3_D<IUV~NQGoIchhQ@O(GvPjXIOnmnr!hz%dK{-lu`K1Gy;`u0e-Uw2l_R(F9>d{% z1_*NiE6Il&I@x7YDW#+4dIgE<xOYNX;%k)?%447pcA?LmQy&CdQ!16@ZMVgH%htU> z#VDG0+~tsYtmmnk7wD(GiT3s`td#Ub6l}M@QG7ln!i=<(fnHa)7?F>YJdwFjZqRo5 zzQPk@=CbLC`~K4w+tRZ2QAB*rNqhx$5h%ELit=TBp_lAJgWh|W++bxu!v4g=aT3T+ zwI5D2?QKWE89)RN^GcT7<i$mw1(-u)dHB_J#w21bgkvaTTell?eDY|rR9~2+_yjHu z55wp);#EP`k(bW>xnRc5>%+kGPB48}O>O6E23L+t3JOv@zlibu1~4cldmctsq7yUx z(L_J|47-2uyEbqQzBKXAjEYe_Icwq=>a-ZnlaH02B|A?!QM@ZlnUk8~*hOh1;T?Kh zp`xy)g;5L=wnBCl64?4^u&K{FLmfPJTW&GLKPX#}xz|UQouYcc#xSb25>WX;Vj-rH z_u*!r*5wM2*A#GI6r4fs5BqM}(yT<Fxef`tJuIY6IvR*QKTUKm1>i)FB7l5Q(SGid z!aNh5&Hc5i^SCUTyTA@~u{_)wd>AEaLwBh<h<`e|s6!s>M-=ipL?1z!mwy6>A;0n5 z)+L%E)@}c`E2m>PZTiRyB+c93-(Iim^umxic$=w<3io-bw5uEY-yB1|z)~^7h!@wl zh;ipE%S{ZAh6#pBMxsA%YeLCnKkCsjantK%N6CLvfu&1GE@>zaCe{6QXRmxBwgB?o z1f=Z>h2tka-$c}Gssot4y)%|lyjS3E3nG*SA+Ym)SNyJf5JoYd6>ZY^x?Fz_I2ik< z%G}N^I%~Bl%|E>>g(%s_h{|Dvg9mwi)m9m47P?^yeVB$DG3aYwoq5lWsd0nh=;!A^ z=Te2yx%6m8^7G-fpWnOW*i@NgT(?Ks4c1Ct-j=A$nJW?`$C-9BdfS+iJ!n(&%fc|D ziEmf+AZfDsboIS81;tXx-OC1{aR9?TNU_XVe4?+t6vv?UAvr!GZujdMd$4JleK(dL zQAtnOKjz~Db8HESHCH%q#=0QPtAvas;~rne1P^&$idy44qNDM_PHOV;2@qn45o5Dw zbcLSX%?FJ{q3@a-likgfhSrGA7RqkieK^o)o+@cLeOwwo5Jb3&O|j2yG9Ws<N}{(K zPqwNPJs|pZmE={hq^B+u;hy7t!Btq)SR+U9C`{uk%eR4M=3=9z#YkxSlz*xFy0NFi zcq0kz#X+mpKGxjc+Uq;}SZve4*>FQrcpQH%9=RHyca+q8(P?P&9OGIv^=F})z4Pvr z&t)~6(fR%Zqt{X*Z!%^MUL`FZ`krJ~oyz*wj5_T3n>zR3TTQ(66}CQ5?3GOP@_n;j z@Wp1l61}*Obk_7`88ekcxury`y~HQlU-TDtMy!FeEc#ZbCCN1CMKebENFKchP9Lhc zZLPSpSiclK5z`3DdSIeL^?|U?Watxt1J~g7bMzZ434Kf8)#0Pv7C@8>l1Bvdsh(PO z#pQX^{V*(hAu(+Htogx`+UN17=`-(O#i?ia;Gf7BFD2@1?XGbqeDN3vDqLOEbjDH= zBdzY3EOwm$DeOx%@xui55DhY)r|sTS?cQY*-uU9qKx9v{ZS-peG+tUS(Q>(`fo2}n zM9^ddlLx=8xW7}Ls9dfG;K=)^6N(<|a^^HGm)BjnR%%tE7tQuNFn(`gvwWFKEPp@r z>LKeP;Yx2OB|X=6LlDb8lWm<?exb%O`PC7-b4{>l?NQja6-0MZ2#z98;_zPL`8f1= zOAUIP@sx4CQXQD)G7}&d3h_!6Nk5;xW%8+zZC7Grc;)E(j!6T!zSo$4n5lU3aypdd z5ZjVKN$(r(a8f4W*}djEDbBeuIPfW~i3e~WelVcF;e%D9W6tF;1RJq9?hRRH=@YoD zF>CH@UM2FmAyf~q=0etjyHsRlkLZ*SIopq$z@(+J8qilY{~;x!PWmnk=(7GcuGmqa zkUhI34{NYrN=!@_6J<1))YA5QivE?W@rvzS94TJgC*qZE_(i4`B{>BJZwj?WLY&1} zw1!Y7LQMcivhA|mSz3Z4t&QOCTKWUQ-Uc|AoVfZAU{&E+RGmbI1wsYpur}~U^Rj&M z((>kS$ZU#|_azhbT^(nL&^okJ23z|wFrwa1g5pw#JUG}T_xG@6QbBWS!946O6TDY4 zmA|Hz28GqUmTVsVl<Oj=p^T|Cl1i8_lk*5^MzeTt_u6tsV-DgcZTt#R(1n8WR-ko_ z8gcurtpS}g`2^dkvULx4%t*#|wZG<PK#z=Kt<hO#6Bx^BI|Z)fMNZYz?(+HROW!s> zYeCqsPMwrw<X7*N_@MegiAPlNrZfIXx-P-&92#TuD1pVHdj=>zpXXg4KOOfLe$QDZ zCO-~z7o4-CTw4$?NssW%{^9ljp7FX2IVbD$Rg`OYEHJ`hRB}c9J^I$AZ^k{Ys3)*6 zg#x}QE3Yd|+Ucy<W|mtEc3y6}?`xeFfI^C*)(vhY{aqAYjosZ%tGQ+hwddRM61XdU zoyec!DUKF~jvVE)X#KsSz0z6U;DXa|lY_TMA!U^YK$LJ@w`z!{{hOVbM$$eA`pB0x zk}Y4@mek=GabRsT=nMvCJ;@M<d+pK4z!D{z?(RXBMjK;zb(CRA?)Yc-8wG!UQt&K& zyiu_HmDKe`gRA5YmrZg_3-61rbCRW7Lcc><2SSGJ=YSQ`dY{malY2m)mt~c<Jn$TF z)V0$;iLj6}pbwkp3QAF?6#tJz4-40D!-cQah;)KCOJ1RV?jFS=CGLY)PNAlYQufGa z7cptGi*<|k%pO}oOve4s>Ci}x$7?BTsF36jnx=jvX*=tEZM_5tW38?a?kSI1&eZKA zSmViYa6gLdEc8S$Z75$r1KNm9&BPM}^C!JqtCs7slVg{L<C+)lo;q@#hDo+zZ+S)U z?T63?rdhP6ojWYQT@T-Q)D(FtX{=ezskBwGH5I0?$&(ONI9$HCujt-Kx}lUtd>Tuh zjKeWT8+9T7eMJd|m&HONZr;Aq&*quQYR9a4iqE?EB(>kLsHP|B;%BJj=^NV|6!E1s zi<*PIuhdv^qTKGYDS!a_Zq7T1%<2?LKf|6I7BHhMH6<ALPI<BC*UJH$n)TjTxX4vJ zG8cKcq|Xokl6I7rVo~FC0~^xz=uTX>nJC4z70)I(y6xVan#4~p6u;S~JX{Rcv{w^J zZVI}{Hi7`<?zY_e8DA1nSv5S=^ZE#z=4-86zvr<1NMKoPdZ_o^Tsh?2+{F#0GvdQd zKaVDk=9ZgBp1MWWeI;2Lp#b8WcJMf@W*T2c-%yCGU7j*X<uliqPeQL=hTv#$XT`Ts z=kSg1qld-mLj+j+$7Iv77j<6eAMkwSgkotoEHt_{#=rL~oV?9W|Fo%~-0kJqPs^QH z?)?lUA)RX3VE#LLA1TDa3ewxTQm^rjrRC46hv#adI}e=i$NW?W<C8&=Is9ZI+D;L# zkHNsO;Sw0P53!Au`@P1s^R3s37zgQXC-ao!-M*I|WFX%=*P30X@3M5ccY9MTO~|12 zkm4K&u1*O!=aDT$)b!)rw$^;;+VGK_LVC=O8``j`WPtx`bKZelvm_W1Gu^9OMmINn zd*4CdXw0gC?DChTQd5wqY4{ROVAO-~OQUM>I*L`D>EQ`Gh2IezLeUw;2TA7oxi@2w zbkWQ97xv3%8kmynL}JZIslN&s9vAAYwg$NhFQnA9QP_92Ym|i5I28SGckYw@;eC5F zzBZ1?{50Ivl+e1sw#lw@i2cxxkmL|&k&I%A*7o*F_@#H6kxjc<T{!x|RN@b;&Mi|# zG&5EC<!csOxtz0tCru25KE;<|h6cs%5n|J)Drkn{lR^=RZ>nM<>Vwl?b>m>7m;S09 z0Tqw*nVL1nJDXVGRqCgoZpC<T4=E4lg`%rItNgHt0m+<iY*YC!7Q^zv4|93j%iS{( zLt#T|<+d#Ls2OmT<Cy;1k)?M`ejc(se}bm2yS+=lyFZY;1_mv6Fv2OByf5Nt0^_`; z(qFz%<?3RxdzI4^K18!^04h+gZa%&Ek5#;j-Cq~xBjBwPq#Z4~+vr>*VL(LUuZ2@q z+n(gFM<)&_OH;QxK3-Qs9I$ly*&xDdxbbZis9m+nw(I)X3lEY^?x+4;&Z55eR1GrG zs?fLPD|JPw_#keb+a!!tmG2-R^L{A9)1(%Y&ExT)Op?F<Yx6X}sf_YyLn6|@Tc-XJ za#GSQ5^t%lNB*OpYLQ}UNqWT5>;i)S-TsP-)NjD_D)Ka^(Bp;!wjMSZwc2l8));PR zje~pU#{qj_cJ^Bg_71%quXa-@?lUPi>}KCT*<hew-&HtH*_#2U<-g2bR}+nL%o)DT zLkJIi5eOxsAYF`K8kYd8N-}^c_qN)fE-otz9leP#IrZN~aZG2|{|OGT($O|xvQl4@ zcXyqqlCdO#L)s=M>Y<e-e(gJjDPsR}<ty<Adgxa`foi4ZyHhp34US#`W*dtXI2p!~ zVmoD-SDZGkDvXs_C%T$!-o__h+K39r;6<`%GL41SGXrcse|-qXUc}J)08Eh0`nRkq zc#8gDz>0AX<8oR~jKtJxs`H=(4Z$_Fzl`3Q@i=<Mn8B(Q;5A0&V`!+Snt_&zQ_Kmx z+Zw>Z34|+&QsSP@*5G4g%cjEY99Ju55>g=t7T8y-=I1j;WlaIA0_xu?CABkT@)+K! z{>MP>#SFfJp-7jYf1ZjTq*B=rjwl6<fhiwQcr=Axa(p=$!8rK)_;jKo-Ofa?iW<r< zb^&8Wn}EIB0W$G1*({vSj4`HPfO!vqPbS&&Qq5rANVy$pibV`{sa;wF;gaEv3QKcn z!+*5!_@tMXe}G3uPvV`B3V<HammYN2vJL#bZY&|+9$o;gN*O>~F;tSA+?ke|3IitD zp)P9onFmDi+?Q{z&}QuM`g1^z`<FE{32<<Mei5p2`S&_oH^=#oJ}Adgcle`)&rE_m zhD<0e9D-`wpOxsZ;ulsFBXRbLOp*CvxlL<FBD1iyUgfA7#N_KO0(*G$h1d@*&9`YI z<=9w7^uV-wE`TMAK6oClGFDnV4=rtMaeR%>To%Us?h~w=EkgoB0RgZ5Nj1|LVFuJ( zHS{vUS_nVyzt)q4v<cnu`8mYwn#|u%G7#*GTdX4Y{`4*bV*LXB0(gdR!~c1If4|Fr z`KQ0X4A@rw@rmJK|LXz%e}F8t(A}e>U!YTVk<<UPApYYa_*eg6vH*>RIxKw1HDmbm zf&PAs|MpKF2>xS;5QM}?{r?|~h(ZYG9uAd|Wq$JihY$VF6%za}gwlY|aI;NTH{m}K z^Iv^#sXyNq?oBKZaaEtOGymI9{69Hx|J%p!?=QCiggljCUw>zC1we@j5c7=Bi>d$J z67ly}!K{h2rtq}?S`#gFbPfOpGzr|iJ3!J^lb7K;)fGu;4*blsbfI<GtpD!$T>+o> zEz$q@jxsYyPJo$w2lU~p@0T`?9DxDPuK-!e=4>NxcdcAw?_Ykk@0dU+`uxG=zu&bV z<iHUdV@9+E0rM925z<9t?|=OAe;&mD{V(YRz#G*hd5icT&*hsEST5U4dtQHm%Kl%M z%mE*GkypZ42OfXE`A^ad0FzJw9*kZhy!Cx?^;F-BG}p0rNwhu(acRK$dj#MW+*Ehn zXB=&Td9*amVhtP(Ri6h%`kO9LN`N*2hM02JR01@_7%=%ie6?NP{dyh@ri{UmFRDkL z+;^=LL@%6Sg5Sk58lNTg+o0rc@4Et42^d-He`7Q%*ghsR%;~tF1NnQ1M-+|tlriGc z^}SU=zD-HpY6Xxv_UHg$1S5@j9T?a&f<CHgo&*>>(zb`E%kk4d8*Dp&`ODoFJf~`4 zUO&c2b0;fDRSh<^fA9c$&+l?T{FnhJ-%SiBFDlpIXG0G|#00o*kS96>ZN$>cJjobp zE%0pwET1FbNEhJo04G`7NO`=<!<4VWYpL|VFy-|qVAakY`hBt#b2SJ2mgb)q;CQmY zKn}}SX1l1P{$T;kz>|!~7Q4{5lsHTqcB%~?=dDkICZHu4#|^u%1V>F3sMT<QAqaaw z?OKUJ_aq`P@WW}}^PMOj9oOCF-%V+NhGT@1SP5v<b3t4z(eBi(r592ggAq-(;2Gs# zMvEr!kHoLIWB7*WU`N?t&Q8G3_!fMV`c7?^b;LC2rp?MnQ|XH;O8}AE?e<*-8qW@{ zy5(Dp&Fx{{r(bq`O5JRILr`9Tz7yPd33@LR%KTqR`^bDbff#Ho61tb4mwtU^AIKMh zobMIqa;xxaa{I#>hxVrurWp3%8f~G^zud$Us+fE!UFv%JpH2LL!LJPBI13h-J^22P zw}DCR^Gc#Yi5r2LP@pFuKIua_>E&PTe-*S|n|wqVD0O{!0<fU$=fR^7V8ws*6SRTI z1GPX$*?!^|&_6ud`_Xyzw_^`|2#zTQ15;pdXa~SQA|?ScC5?_lx-4+Q(*GJ+Sz$?i z9~eGZpH2Q#P`WUHNJ2=A)^xFrfSanMa~|_G2eaA&s!2KK8D(Ye0V{bmpb@Zy-X;D` zpUCj*1PMSA6QF!<9hx;Ler#v}8gKQ1OmY;EU0@Wp1IO@7XdP$eH)(pB&~B(bL$It( z(3Pl@ggUUa0L7phv;n6>XnkLX(h(OT4co4S*aKV_{cfxq{AL_Yn^G;k2V+cJ^o)`O zojpAiC<)O3QN$VWiWC_q-yT9ll>I0$3$iC9+0XI$JB>Tok|8{eKx0oIgTXdFx`JtG zj+I!t<6*HcHnQ%$2RnEN^!CeC9!`FEpVYA1)G+JR&zWTd)sc1mpfaZ(?0YtvF;!eM zX9dVkzO45hg7~qUK)S=XTnAcQ)mnz0V8q$fZCyj+#(PZ=79ybqzm`z%(3}g5axJR} za1ffW!v#}M&gQ{%URu;`#~g144yNW?3L_yE{KK*&0)}@^Fs%lvPuu{yA<t;fu)18A zfk1mgy)=H=0n`sDkZ}LIK>e*7oU9YwB#&GFh!*|jaiEr_!vtHdl4rv)7_j7ZvfV{- zy@YeH+bMAz^;*sWU-NE<1X9cZN7XQZ2jAKPAV%^*erx<lHYn&}pnT|A*=pD4GE{Ia z*DjRY%#-N8mEHrHZ!RE;1#dxB=oe&gf*w0y2wL%K62gdAwzNnRgycyp5dfB)r_j$y zCkIJwfF%Uc83^sRDl8@|sxVC}S?8)>&)%a7v<#hrVlCpeN#oc;QZd4QoZn^gA%|6s zO2oJqLfd8SHlRnx6KERxi#gfkwaL$2jPS!zrbAJ0Q{T97vzr{|O<eTIY~uzoou%Tl z*tt+B;<O(&m1b8(6vu-7HJkA(6y18m+STxPh~!0Uw8-WshiyR3x=FTP#u|F%_RkrC zaYId#mkiJE`Ra*-))%$RJ37Mv8J7=uWVF2`%d{w329>sFKZt!hia`K!fxdb}4$Vx| z|8S3xhkhuQ7GngbtB5f5!?Fx}tJDz$!6U}%YK($HvuGLm!57IEdbs$-QHfGIA?z>I z5dc|0u*Cv{Fuo^NXT2ubdk}M!5S&j0Cq%DenG$kmT+jT*d6!@laUV;fB;vSXK8Wv; zm!^DOIx61XP+>BVd+b&@VVFbgiF(ous43E?D{)q7k#7ZgN>={cHKKrjvfT7vb{3X} zHrg@VK|_e1AT!rYpJA=m@deoYcP>sqWJs%HE$DY`s&sGzheq%|SMa727uuoF;b)@( zMZY)Y)IjGeq}D`zEVnaKV|6iyt9ywE)+OjnueCac&ri+^=XxHI*EZJqBqd^<kNg9i z%eZeQ{8`feg+u?#ln9{mM?G{V))SPh?dsG^iP)CbGlKMFy#vo)EFd?6R7T7y9r5L= z5;-DB2xIB!90jvYF6c_QaEnhV-Ay*y8d_SC-b96L*%>`2D+ww#NF_Y34=r^QA97R* zp>*sQt$C1Cr`<D9JPx<>=Ry=z?~<|clmCF*!ONyEt0LI9F-oWu1NrU60Pf=V7|}I- za|cO`B-&#&yKA5`8u`>#DcxNuB!xhqpZv><y?#-0>K9z!`pFDz%43_2q*5ejZReA6 z1`T5=(5&{$$34;ByRWAQf)b2=ITOUE5Io^0*L}gYzU36XSL??!4bV*BWr8c)hO+lp z8rtgsv5KE@Ku$rVK4@S-F1%CojPqY_a}zn)|4?;7F7}uS$EDwq^7R+KHL~{CwO=_e z-=+;_L-)Xia)UV`To40AOfle%kZiCalDya(C?<Z<bk8<vsgoAcH&dVwO};%;ms<&y zm$d`pMZf+;FlCfWnx{k!Y(imV2T8!Efh5~OX#MRV^U(cY;D{yscxZTC66MSIE3lY5 ziVEjVQ-TdND9x#l?X>^NaSjw3M`6~V{rL02$5NvD+?IhPqQPiM^vMVyA{ae<-V?hG zn3!DRu)|CP1R+BcYpCoMz$?HbPB)k<^o+Rz<t^s+F%%_p_dRK+eE|qdkD=LJ=J092 zNaF1HQLK}gRzeLNuqQ}>+$k}bvm!sg$)F_bx12{219a3ekB5t0$8KY5RQp)2V$S=a z8EK0|a%Xu-=!3J0Nn~F2|40x2XKw!AKe`O`OT_(^lX&Mg$Di~2Wl#$SZ)=xdJU!Cl zDH#n;`Z7b#{_RBJL^2vcK^6yk3V2>SZ{h^JcN)aJ+Gzo<OfZ$yScroJpdq&0M2Gz4 zP4(b!wcAi-qT6Kwbq+-bXpdO<%O#CMj+i^t{l)d6Y!~G=*5Yezjb%0*{kUtTU^k@q z@_pt2RC;Y)%Kk4ER6Ag}!b``LIWXlyfMfU_!i~3x?ZTlvtFBY>6(C=>RaDx!a+SeP z*FZ&M2&1MeGknm`Bj^M`Z0|5&t*%?O90XsTTE2=T{$^_8&^`yO7+3vw<3VAj!p4c9 z!Wl^7rF{G%Bc(Zd#ZKS%6hnOUIiH@d#^g#fPfYY~ju-2`Gw3Bio^Gfi?j(-EPq!{m zogC$20A?A;6pa9I&E+q@s)w99_Dm;@YxE{}yv15>b#frS-kRjNI~(5sNJ{OfE{;~i zQX4r*APsHUv+*EL!aX`B!Bk<sUJEj<vqLeNW>J+r-^-5RvchDm?IW$?Z(C2qZ2#re z;tUrg^5^m*tfYS)>eH|mDJU?qOH*LRx*zpmJ5pv>$1y5Q-HTV&Xz<<0O?p_vWr3+B z?daVX1){r*wXsQHSh!=kH1=zt7>bLecT5GCv;gQpF<OAMSsU4&lv)L%d@ta-@*7y@ zzO|Y2T&uGDn8FNc@t&M)x$|hn9&v79tpi!t!D-lwcHFVt8e7AZf%t2#Q{cQoo`I~X z8_?P~UIB((z+*ldwK}Gf&{-&wSPdu2u4?3_(887dm5Q&$mbm^4AWbI5K{VmGC3T<k zHPhSJ-5!P#94&iOF2)KHn~pgLT7attzSyQwyreI9ACzXj;JPOQIYO<4pWBs>&Y)gE zjmd)i43&K8R1>H>8X&l*Doyu%d?+nM0VOG_;vUPtj6MiVbp<i<g#J$n&A%Q8_cau1 z?F)K|6&Rej>yp0MPo-2h;t^B$4iH=s>CA<XKin6Uqd*O{zN5;P<LE?&K(;b|Usyo> zW`QnrRcZ8ywavPlNcQDjyIRw-Z=n>>2sb^|4s3dzpL_cNKvfAMwRI5$D@R+ZNXYE= zx1`P+*^fKiK_Hfca=7(jQ;*S-gMZlzc`LCPxgy%(*CboE12}1|ZA^=e7|f_%<3L^( zcc-<cs&MWO;4209l(2;S#$1PXK*C)5%Cb<p1&sA>*D<iIqI2k+GGVL%%)N<?ybNPq z2*oawO6XlO>E8DjtHL2vPNC{0P}#FvT}Y>Yy%>csi_rs{&EwBv{6^>x1e>xUhc$fe zpcabvQy*q@heCaZSb@qE0ruKdwY(e1D{<qf69=Kst2Q+P{h55i@WxilE_7W&_sR}J zR)i8WnTq6ee-H^_y8EHO%5e0UD`ZZB1Uk!2iDLm3-%sz6tX9a6dhnT<LM8Q8YvQ9< zK7w3aM-(W&Y(Zu5x(+1d#$B=^K46=O|0#$q+F_r{Es{veJj-f9qVhl;>9TVS!Wc#3 zIvPWg1l!+d$HOsCn|=Y5l}U>3FrWhT#gBnBWLiUs6AmE1%K6Ye5R`8!@t4-jdF2|L z5JR^D0B+C%%EvIW-AiBT4Ni~ORf>tNiT|<H{3+4>ABtb=)Sy^%bkkj2`%m@d%`GYA zYCw3I2Ddm9aI<g~Y}UsnL*B-&Y+}cG?l}UkM}q)+#(drnLz{sMiffHW$5oEc=YVQ? zZCF#R>j>x;t8eS*(TCPyh~;<f8<D6y>vM3KS1*$eaoBoiU6M}?4n7<U@S}42`T~|( zGyNqDa#3&XuDF-W&Z%Qw0WG8pb48Sq(&@U=3T}Nnw{aZIl^_(w*iGQ3@yMZOG5r1% zCW#6Rg_}llXxNmayDORiq4Y(WP%mGtUISy4UN$*$9@Jq-`xH`=qt1c&b<Knq`p7n= zy=@V^S6fUY9fM46Eij&RrLxwBgihFjG6LZW=BGEv@cJ+0ubdUaF4;rL^iegn4=}ed znxfx;#%=U)P-rQ^lXw%FZ0Is9_cJAz+{b4RJjb#unUG+nvT~t15OFCzF&z2-Qz_-Y z|2~r(a)NUBFN9O7Uqlfffae+j2{b><>tRP%r_3aPNWMRH%9{jdQ*zxN%YLruXE3Z> zc*)Qu!}rWmXf?aa27S6lbZ&Rak$%$vCjEeF4efJ0E9e~IYBYHMrgRcqrV>4MnfKv} z{N$Og!b3zQllIM*eB?f^1XtILsFIApZ%ZKv=Of>TbA2P|79yV|;BJhqn_x3A@xNBV zlw`<9Q)270F+0Hd6>e9>xu5I!S%KE4(k+^r{K|`Q7{X_7KIzq04C$F`O*8Q45CZMI zaHSs<EJOl~=1xaCCoy<2n>Kuw0mIak|BJP^j;b<RyTv7xE|HE+C?d5%kd_XWMnF16 zx?39QR1r2vZ$UbxL`u55LAtwp!(H2R&i&4J@A-}U{qY-vF=T8UyWV%L^*nRVXHHS| z>Eg{0oqC+)7^K(JU885dbD#t733@xpl3(!o!tpnKGKV#*0s$FL@X|8bHN6e^lp9lA z(MNA04R(wk330sWoe?xzWdPMDQSh~vqt>A$#}~YX#|Gzz{T0`@VC?tZYk4l|)p#my zvLV-QJ1#noL!2`_il+~!K^MYJ7TNatcQIIS&z<CwCjkr{uLs28TBYEa$9ZG5t!teC z%pMdg<~}_#%}jO5_oVMdk_X%1%kS_Kn48L)SwpS02IhaAy4z%nm%#P#Ek{j(UNgRF zuvZlj!oB;FRm(`DC!F;2QE#MsGzB-4Z;f+WZJ_Tm-X;uGHQ#u4v-q~s{|!p~H~jSf zgwVuPQOhtVa2DmBgK(q2H;$nAJV1Y{B=H4WK*KMhW1bPT4KTE)1;s{)Xwz4E`(y>h zrEfVjewAQ`EYXt9Cq{$?RFr6$rHtxInLSRnmtapoW{Vh+^tMW_q6#|wjzPBM!6!Tg zM};+;dBLrGY@0?wxK=(K0o?Iftv}~kG`X5zQCzXzO(Kx=BJ?Q{-U1Wzq(#lprihcL zWK0xttHvvR(ypfw2G>nv;C0-sY`Q%PX29;>z)kipF@jFgy)^h7tRTv<eS3~JZZemk zqlzT&Y)kTz%6kNCv!!qIaCRlU8ZLV6f>*Rl@0<e>c1Q`JH#&a{>fT&zzd1pZvjLX4 z9-3Watw!`p)%I-5Sc?sS7fOnFD#<UfXIyQ&;eWRVR2#wR3lO7di%$eljZ@w0L{T+2 zNM(t`r>~{D&@-1QN;?1F*i7+EVQ3n6mOfX_=HqMZ$wZPH0rO+Mj-?aSJ>$BPnWtyX zk&XeTqGYbYWuPi*xL$#NknUUjJYerUXi;(}>{j#PLp#z!{jxyrmEc1iXU)4v<L=&| z>V-sLh(osVa*}TD2lcZtrqUi+3R4ObGNvg|WKq_Fqi<Bg;}KN(JAn04KZ?F2>*Cem z)texTAD=b<7WG~}3BYen$nHnG)=;AE!`y%E3IAR<|KGoxzyRT40;@{>hi3^LDh;Eb z=2kG3EvDQbhE2)LawN<MhJ5YjF2||@&eu~tcd`1-!j$9hx0MQWpnj`$>JBhUoOQ=t zxG(paA-Rd3T9SE{6!nAq$46mA#L^)N<`X4G;-M{EEiW;XXS9uKTMmtKXpU*B<Vn$k zFj2MMk@(+7%>@YEbIi?9;_gj`Kx2WSr)%+hxSxiQ4&zd<F_SU3*nadF1I#G$=Lv5T zfE9b$)8hW<Kf%T1@F>zT_yK?+p^}x0z_1l_EIzq=jOoS=Jz4u`V*p=I`GXX!=B$!3 zexS1lWBnyyQbu4o21o#h2@@8=Hx@K@QJc&5S7L~iq+&qPog$swcKFkFvUGBq#UNyY zz=%!GjPYGm^h)LvGB!Dd`r@^YD@-gRuFpj(17VsZ3$#rFRbxn8#)1z@SaNv%zT2^# zikT1T_l7rUo+xQeKI}4*qmp60?=@sNX$pHbMEaX`Bbu@QHU2l>KyN@?VM^4o7F9P9 z@_ptL2o@c|vgP6mrH(LeE8C}IcHRoi=ySk{5!XewDDirECja*Z{Ev^&AZf%9ly1*| zc1Pq%=!75X1tshQt1-9;P-#wycFu=>((_ZxJ`7yaZgKMnX~b7ibq;M6xjA1t=f*tR z=M(Ic7N=-0!PIylbr4xg$N~voSDIm{X&Rz9Ybi1M6KP-C8^S*OdWPX^6D7kLv0F>v zjBNGAR;Q&_9A{%<$!FS@4{OA<L;jp}U0YA^pIpyR9$aY7exRB8#)&I3NHPrmx|^!Y zRm@XEOHVttQL^j~R{x2)L(wOL!c@teaJo3JM5U{Q+oUKAdE?ng3v8j5QV-vw1xBcf z%mlBa>B{%*_d`*&(z8rTpVD5w?&2|8q%K;Atns%&nidk;u9-yd6CA!{jV_rdTfxD} zSmqM=A0oY_N&x9C?blWMCshurAAj+e^B_?gyL;R?=&5!l^%uGa7XPznLm_%051y_? zY~|l+6frkc<UEgN-g^)SR1Sgyv)_FxyNVP1pObb2ETCxBdGvkj-#f1N5A6XGJ_TqB zWgUFjBlk2At(pWHe;cr8RO-3?83hqM*|dnkyZ`Z?`Hv4iC;muSVkT1~@o)7=x-@FP z=xuEZc(zjj76c3ZV9USY1cl86*fz`o<>Uxb2mVLp%ij}e3d#CkZ98ZG+mQx>4{opK zZnr^8U#x}Brq8>P89OCKte_@bF!vwd=YM?A29Tj8c;+?I|Muqpy?Xk8{eFp!><nJL zVy6C&PyhdZZ~)ooPWye=`JaCq|LuRK7b8DGab{o>{r{{1{J#*B|KGoY0S5ouN#C8L zZBh2wtZvVUM)W0l>!nHbx)b;3e^nj-?F0OOeZz)#z<p(Z=W!AIpH^8VSl5rQ21H8F zFkByEC~q^BKG~sKlIQg^&dfp9G>!9*{z@4DOmFAZ`wZ3#rm;Sd1sZc8zZOJjBa)la zik}36m8lqs!gSZqeuph@oJWf{-g3mwF>u;r=Jfq{RvH%<bu$ew(s^5o4KR@C>K9M` z`30N!H)c;_oR-!Jk)~$KX3}xyD%cQ5aeH7F3$C_<iWF(A90cG&C#39t8dQJpB!h8F z!I>-|pU?-?AT*w*h9{tFgj6Dl9wSxCdl)p%AA3b_uRoB4EV82_f*S!TW!X;Smb?Sb zEu@+0S(5$Pn%@n8a(;mOeQx&sRv}>&@IP(?4*aki>PJC(AlHqJH~}<kQ8mkeaI?PZ z+=Ny|6*2N@ARQ|iOj`iT@nfJ0;IIS%RiPT7ag0AC%JRuIcpWZ{0d@#%^h@m&EzDG( zaIrLcWXjG|C=sLOf&lQEwm$5<I!&-=FPYkaq4U(wKw}H%?tOLJ)Uo~93eFskzsxc6 zm^yj^Oz*wVHQxh9u@s2>v*+51iBb06QmEe+5I^DNy#7LHZ<zVb_#byF5EAg*M-@3* zHoqFq8Xs$sKG~P&IgqOC)}N-D_TT2<cM2@5_)W=+z#Tr-=6Q{Sl31`Ho&UHBv;Y*o z&wnE0Uyu<dNcya~dm7Zw6o>tw$Tz!o*aaNHZYNcW-KR#R3qJ;}yCGpEXapEt!T+5G z*&PFLXpJt2;i5oA+Rpzg$c4wrquDAN4CB$wAX~Q`VBu}yUa0t;-j4(t=%*xn5cnJ< zgq(t2dJa&$*F33ba40ewN9C4)MzEYrGD9}|;m5L~mlPZqrl(PMUW}M1$QrWJKBr-Z zv@-h77l!9~t6?LbuKtg_7n}UT$}%MVa$-_*F>c!+W24FUMUW2l87f+-=)m}952f`^ zs2GINkN@5I{=zB938Gr^0dn+Gkn~j)6QufkBLaPDN5{hJC-nPjBQEjY5GV!mk)qw- zAJOkU{GQ^fy(IY^@Q2e#MqBcj_v2Qr>!o`N+c$83_mssmXaLuYbY{_iE=$lbg6k4p zyM`j<oMy5e(SPgvc`FX4f6`fuWm7|O<2!G3_=M>PPLW{q1isqYWxm}+o?M|>cB*G> zVX5LCJ6gOdW+*wT(QJ;&H_J|B!#)M@1`~jrB_XFIE0&OXXb0mR2PET2P)vUo@H)&o zj-8Ke;9*SI5@LM_B$o|Vz!cKOUS@V(mkRv`?DY2z9>L@B_+~i0ULr%<s_@dBBQQh7 z7*REG;kMuvj;sM^Y~gJ2dJVWPCetlScl-hdjl3=~9C?a&to+JfW-b5@)Ea3f@1o>6 ziE&8qArl!J<0<g)y%#oW?$*}_MxP<KN}wMl<-F_xd2Ca+5Nk&z#0rymR93fY7Sebq zEaxy)Rwu+%Oax!s?T^b2P*Lo)e5*O1{CnBRA}{HYm#yL-m(Bj~W!ncR)IISYP*qa2 z;hcY@lGAcz7$Ej{z0#mG*bOV_%Vw|#uu5>83Lx~UkU4S9?PEx;@_arz=4(d;4o7vm zgEd`^>(xK6SW9v|lOnic3(N-pykdq0#O4ptua9Guc6#~hwFRN~tWUCh4Y%yd<98h9 zZ=v7#fGS|J=SQFUQZ%1!t#zY~f!EC=o%gfqJ2R|`KTdcreTrM5S%e>7aQcUlGt_|2 ze82|~arfk2f@ur~VQT<EnV#p<Fi-xjxi8U(gxyY;Ah#2TXHEjds!!MSQ8^aq*}k#? z@bx|_(_5BeDLSQjfE-qVI=r1cbPjYMhuKq8YjSVcau`0R0>Q)7p(J00l3{LEd>H@` z-NZ0a0N`YW#8Hvxo)si?cbgksb^Mt(lQG&uI%w^_M2WJP=Rn?T-=FHnDRm<1@6|eq zQ=&2^b)9-mtpFCLNrYNCU93ViwxLURd&TPSKLuIuc6sO9%Zh#0$YlTfE*ZHo1<?Jt z3T8*@jn>Dt!Crq4zGh)8LHe6<6(HM#9s!cOzG&XGxt5S(VpBE5kFw-EFepW+eDSX% z>hg)dj6`D@bFb(h)yj(!g>6_f0h`cs!x%g@dPA<?ga;tF$M$#L93SX37dL_%kYJq- zIE!}tF=$HwmOPDDJlfeuxZWaXXePm8Af4`eKSxk`Sk&aXy(ByRe51nj4K4TRGsN?| zTOkIBl}qdQOFf1!VoIN&Tl3-ND{53->Hc|)>Yd_uiRS%0=z$0kxe!uIC6tUY^g8df zkf&bwqod?pWH&PI26^NFsG!L1UP*IC-c<W*iXD5@&MOY2nkGQ<f3Njh!u2nN`*m(} zRXF`MY?|E(E|rPaOYFXeeEOdGf1IYhPnVaJe!B2iDRQ1!S8j}nmak}Nf2S&m=&K)@ z_1UVk_xjXIhS_}({eGY8*VXCOc9?8hIZWSu^qs5kT8b~n)$i|HQvnfubG<RF(E2ug zkBj_AzuqNzzneCXz^l=9x>9hPG$9bx5~^(Knk&tM832Qw6j8lHGtY}G-zm?%TB~ft zCH3?KLep?zxBshA+lDX)l`8;4BV>ahx9-~(zqTqpy~9>4wmr8B-^D8OS}cSgrscAu zlBNyi5$^v}`h#xe3)}~Idunb0t-V!wy$3WPZ$ZDTKI|2~kau<k1P|rllr46p%-3!X z#`^)v;}X|xaE#)PrJjGr4at&-mrAuR+m+J-?jqAhol5a<TC^F)je~u_@mm3;2Q6(h zRli2NLHf#sK0tcr&$fT`+alrZiI`j4nvL%zx+d3kNMQtMlOeuLe^w1p!QN#13k3IU z|HgpeE|~l@E4T|*X*4KfPmZXVR*}-1Y2au<#U^KzN1Oi%nR&+!RGt2R0CF_VKEpR- zFM0kM>Kl-ip`|Jq{wnSL=96DQ*>eP&Kqr<r1Q4N3N$A*0;4K|Zhrx0oK+v9R%9}hT zma_)(5KD{q4-h$rN!34knB+J_fttzaCFx-=I77i9QVpJEyu#4~s0i+Le--vc!j>L~ z;LIYBbBF<0)4nc<1wu^&VkWo_=j*i{TLSZgJJ+S;uY3Y<#<nyW&V=SJ6g6$}BLp4x z@5y}O>QdS~RC%WK5e99zcKijrxFmiW=F)VvF+{K-gU0kqj@$j7d{FUl>wE+wKcSJ! zP6I3ry@Hl%<+|o&^3{=CK3Vb4?XvF3Vz#5`tXc|mt1*={A`CX-#c?2$G9D2fc>}B) z@jS|ViUCJEj*QP4;3c*@Wb!xx%MoXV#<$d7np#8KBI_x%hWeX)Y%x&YOe&i-*#HI* zQ|?P_@tp6iw~psd#jlyzL)o~eulNro#1{SN0xx3@X^&cCe2y8Dd~bGld_-t>GG*%# zEzqeBfI?NQ?f``HK>=T>^`q!hvww)kLMlUQJC8cYzYGI@WKFLqOcYFyngDF+0*t;) zd-=d^nf9*1rL98ha4JD{Fb(cKYh=(OVg>4pwZrKmU>cQGk}Lb|o9@tUIwCCE>qFc^ z?KcHa5R_*bVm_>)Wg0iN_dp07=f9$;1<F>{>#apVwc^irklr9JwEqvq(~LzG&C1Oe z7rYzbVRG;-&nnxi#q9fwnDsYt>@Ij0G1XEbtpVVG%Qy0d6!*g1PGIciZ|Wuu6hDDc z2&qvK<DNGTp1|{S<g)wNYCUbx%)l(g#nO9CQ5)U5%3yffMspeV^tt&jXx*_Yqe3WT z2gODRVS0Ft%iTi=nYKr2wWg58?LNK)#1mwO@XhX+$C~$BSXq4Nn(f@Lw)`_^>ni}s z&GS*)Sn>u6Tz{4AHv>>4NGs{xD{#n$FhAX}+NXaz`xJ=32;}}i%*~P+(^A#Xu2fSx zJ&C=2y0E;3;#IN@!sG1QJ{wBAgZ0qNF<A7q_%KzS{hNB%U-R&AQS~LFW>r%m!pp># zv@@1Aot!I=IV0S-1BNzCa#3p;%mjw#Q#QVruP$;9Y2*7t5EWjT+d5g~2Ei72^(rFX zQ<F+uuA{aWp$j(I?8pjQQYZ)#Svt^QrW=2@tny7J=s>KkNOQ;qXfpAZpa&kN)3b^( z*W?G_%%^SpnZU<fliF5%>GUTpF9rsW)YwQ{8D^7CNjy`!@{R$hnm1J80mHxO>2NVH z3fwO$)aE+-9_qO>I&Qstu~uovUXi0Gut=F?F_vhZ>akXG>wS@hK+Iz7bl;ku{_u7y z+i|;cV6T;bzgOPczXOR8HNnJgXt>$ry_GncOw7Kf54BxQb>m0^WxQAV@^jDKjkO&r zVg+-Zy^^4v%Drekrlr$~g*(1&lBd6~AQPXv*^J2aUEb|bY*UxF6S=PSx`mj4VEf7) zmw}?nBYh#~pYOUM+vX-R4dy`SWZ-#l@y7a)K6d(;+nG!pFVQkIs(RNt$@qnvxDpuw zqMh8}o%@f9kjbk(?|Fut1DjqKjf&Vlks^1kjlFs%^tWZnWR?9QS8TYM+=i`h+X0(9 z^ynJ5zyOr5e_EdDaab<3BfBA_G^}6dIz$sMV-i4psz*^|j7=SPpbN=>E^2y95&PDo zU5*De99hwccLYFyn*DDNCf*a^w+9$<ytTu#oswpJqZ0hzIA|`?8Pl|$+eV=%4s0mz zf#*y}*itPd_jE~ap294d2t6v4f~Z6uDBXk4BmHAQd?Z`oC#<ZeZos1AuJ~g#^H7-= zO4VGA`yiApXr=Y$yj|3F>2Kapk^O3r7ufJ|jOB)&E2{oB0(%YC4SkLTbFk(*u!AZE zX+wpi)Vm?X&~}6Odj9j+x8&5)h7uEmz8`N)8EU@DlDKL*2JzeijcD^S6)J0L(0Vv0 zo$W&d8pjU$ETskhSouJT1N^IHb|%z=kg}#0v=7gaF=L?yv){e|?=?H2t1nK0-hpW^ zUvyDyG>u09_jjhlQNUQxE(Q~RJilM1wgNl_=-7FI$poEdYeNvJHnaU>1){qjIlh=2 zx~b@v|Gr0sF21>z=1aR6HD74`v?{U277Q6-#l~>4Gjn6+Jn`)1?^;swy&UHBKk?m8 z!AKyH9t$SGzK4#EmY&XxZ7egMjJC>_z?tm=-WgssJb`QJtHyYszzrM@&nF*alTmx{ zfQSpNh)ACKByG=J@9K0XsmAKvZpy``$GaLkHy4*toznaUk-PNRoBW&HU2Nz~nq4#} zxTw?Tj@yL4=o>gEKWrJ+k(}V3P@m8spi+$!_>?>y`jMm&!$2qv%{enCqw_;os=brI zX%ujp_@h8n=1<UzYI@x<!Ek;LdOH1Mf6*z@(8-St%zN`;jwq%5$lbc-ZDudQoNr$O zS2MZ93ml^)w}iLB%ESvxL62H!)+OQi)}NF*pyg-tF|dS}_@=m~&`dN)3(*P|bdvt5 zY*Lt4djxYi8MEDb_TW4Cj$a9-aU)QpKIGH5V};2<@9HP%N$|S`$Z!wgIHepdxAT4? zkdyley%!;#vw-#^eYnZgf&y}RMA`7pCs6QRFjlB%`UTdgO$;CV+`=j$tt%N*UkPpA z@hDiF4UZA{HV|GcG<TIr|CII(#<JxH^Wl8QE9Bi@oa*a8gfv7ity~jGQaaUAGl-Ub z2`eyZG50_!1x!H;$$Q#XjpI!^#Sv+<Pu1iPUc5>ic27~L$YN8Z#|bwM;x6JBifQu7 zD;dRz=u!sEbTr=SPhTehF}ymyTP^IVkGP_nHK`EHEp+5)bY79a2K$#1@x4`r3kYp| z;}6P|l*c&Bq7U}z=|rf}_{zu0t>__*giB13!0Mt|mUO}ZNNBb%CVZJSar%ui+R!>; z%a5o<L?x}QvU*z%SJwLvYCqHj)r9|Kjg&sHj$UIP(Geat%5BQ&)-EE{2o?NV;X_BO zwPhaa4F1t`qA)YozkBo`;Yag1A)J=8P50pxv?pqTaoSi8Eu<@k4WU#x62sPSR4+W{ zguoQ2#O7+CwzOV8V%p(tnNg3w^motRh~S#@^Y{eX)8;9gNIcFxS5S;h=t9~8$*)Yj zLNBnucW{0S%CjH!Y<>Bpht2&&jJD+5OLaJHzZ~9J-sH_r-zb~Z61wnopZBb3jqwhL zG}}ZG5B$DIgZ1&w-yboW`{zEV<F=REXRJ3mh8c>xB_;$MTeq<grfS&SRq?cQKHi_1 zqn;i6KVgzFPQ~)?yXsCh$j`<eo6Hawi_FIxcxYA4H>J!(5T|tn3G9r&+&y{HUqd$M z(Zv443p!pTDKu{JJK8oWrPBVJLG5^7)YbA`zS9q8GiXYG7I@dIqPMCWuXh7j`+9=> zdFn0>j!4_Iw~ANCrr++=I`NAtF8O)R+x3k()e!gbe{bx!icKp$Vw9OfC#Kuoj!^2< zTPkiPwLo}{wFGR%PRw#HVrMVn;t&{BZgCp4j^A)zCEa5;72L2n7=nEv`6K&yEJaaK zfCR?xjb%DM3ktJSs`l$NMQZ`?>U`!NOW}>?qT%9qJN1_(Rt_rkvigKCa29jANrh4d zT!1-Gjb!aNMQLF3eUINe)Ro21@$#?-nLVc1iWh&+TYP!sGUhdo7DwN`n~#bW1M_M< zq<CYe>dBv$(&0320Lmsk$8r(7d%sO0$XAhlRRHm7V1q0}u~14NCBexo*&+Bfj@K@z zQ8?bqc?)cgJdGU=5&w1XK$cQ{e_^C4X!zwlj4_AoCS18}ZE6R>i}{hfc***FI_5R? z2H|phwR5wB7Se@9_mSNBp<Te7U-9c%P7S3K&ng<s^OJ=0r;ONN!rPFi4W4QdAz6#g z<2Te@+>4=Qe*EiFL2(%X7Vq4MK+T3O!d3crwz|=?W9{RCss|B1o$K;jm%jss?7$Bt z?>hh7x>n37+i3;{Lw}TsGDq<$`qrHt1&eLhGs|C#C%;}O$Wk}RBZrd6O|VOj#t@pK z8s)fmY~YA>^DRH>;@cGJ%E$I#$Lpx7mPCj@f3rojiecJZWjAQ^$VRVRp|OHlmU%di zKLyiSkbYI|d`&Ik-3f{*mJvfVXqQ|qe~;vT?8<E{rh5VWdUM9c3Q{-aEZhJGLxEOK zj45jnAb=Q}$n_ha>I)D%_6x5|4!=#-_UC58B=(3B4Cl$P-IC+UZW_<*{y^QWElY$& z5~wpBU7p^nhJ&lo{#=O!D&#F-&4vs_3~)E=1Y2+3BT-f$`Z!V3KfgQ_9B;@Y9L%^4 z6<S7{ddw;7nPc47;uv;xdE#+>*wf&GI@T5I6KA_bNs_`(az|T0`5>&7!u0R3hC93< z&%8DIL!n!T+=%2CG7@zyZz(EDH}jBD$JjqOF83NFh02fSgG3`K)J7JLyWi($ug4BB zG0?0t4icmnwChdzJXi>{w2~-KJOF-ZLUM@xGwe?gkpeay0|W2L0a&Dl-I7U@@mZ*T z|AFIh3`}xamIwDsgk_i17#AFB=5G6Xq2@K$uZoxENdsgi1>d2pDcWx<%*e{~FH!s( z*v@%(s=w!6aS|{{`K0fR#o#1|hbLnn7bu~TiKY(3_*h$KH8GOy+<H-8llE8a1L$m; zUwGW8Ap9WF_wT&o4h5DIraMQ(uYYW~F-m_oTuzY#rw8P2eq>YnkvgM}6|b#$G(dh* zj_l<DY&gc>>sXInI3$RY;BDes2MSinYaAP<RaWIHHS-mq=VqX4hTCRDXCPXf#2S1M z$=FgfZRHNI3SD~Swq}LcKX`GayItH~tNgleoCoH>)CE}$=gf8lvPP|2f5)&j>YisC zvM*0(3L%kNI>Dt5GeOL6w64;$b0J!(&BEga-kPD;`wqFTRF2khE<OSy6FJ)V9B%1X zi^|4g%Dqc{9vCBtQ=c81$R%O4T$lN5e@tR+*Cbw&CMni|1PkC+P}8&<9^ulr<=sVj z<8fyv$@jZPeh;bHtxyd+ukR@J6mkPDaCx8wGxb{iA!3!Z(Y#Pui8YUNSMWX^%HJP< z!G{CN5@JxlX&+djP1$0k(c_;l4eC-Ke@VLR_T23YDXKbx>G}H13iu*k<#X7rUD^C7 z#Xi$l{ypRAaU*hdp+}5<s%P_P-1Jl5?lTgMODlxy68o6a1Jui-iAvjHK^4q(L~W*o zv^<@G+xW`e1y9j9+fUK1J8M7o30DQFiWca63YIUmiBV-Du6=KgAacZku2CEN_emE~ z<k#~|^ICM4jP5s4VEXM3kh>(j2qH&^>h0S{hon~z7bhia(>xs{)n|GrfI0s;&`+g- zaN$`nA))a8A!Dk>zW<9Cg?`fC;;Le>gfWj6$D4>J#0dRi%&p1V6;D6i3seQa6mu?U zs`?nA(h`$dN_PdiIiNgYlHjEG^YWV~gicd-88vm_Ou^5@sOeC}5kV7K39oU8S7jR} zoGq~)Dm@6Z8e#BPc%Reyv4yTIey2q&Ul{W@`JrS351Te05)jw*jOXEs(s`E)$>>7w z;%KpW=^*71(m`N~jXGtFe}a8cBzH)9q<Z3jnZ-hay7{!0DL|by79aXUne-dJggIv3 zh{QL^p8=fEPXD_@C|s7ut&gt*g6#So8XjVZa}*)jzTL$|t8>{u;?KvSda)b?u54B` z($fS+B2)76sc_Ly!SaxtU+$&F8uQz&_Qzh}ev5T;pf@}g0RVx*15_DAdT-$Rw<pQk zN8B0IfsOThVpn%n1gkS<-9up7%tAG|k)mIw^PVYsUgVL+I<_wg)y$Oq$=95WzUn`u zGS;kJZh>rKPvNJD94jO^x1ZDPmYsgXgv#j<=k-Qr=TFViZ^|C0S{yM_%H$v{MU%s3 z$E%8|p|ZKldwj?40`IGoFH~$2I|OA~B5Wfe1LKQ9U+t2-rZ|11DPGGJjP*auBpjF< zw#%m&Kezf?Mj%ODw%YE8g0|fp0Q59HxhG6%1v8|JJ{7CR{mSQ!bT6eMT_K27AXKwN z{dmqzh}v8&%RZ<rN=b$qY<VRa36l)`<Py2Iu!P1JDbz?RK`GoUop$B`i9}g)$stW` z{us=*<ga{0ood=)V^WnEDkSn<6=xJ5az;0|gkP&n%31v7A$sJc((59LQI!@(D@2E? ztmJpbuJS3w>eD_oIX?}K11{rhG%ew+{5XRoRzG`U8!aymMk$}SJHCq^<6lk~TbwkV zav&YC1tzSbN}pVP1X?DT^(%+2`vl$MDtrPrBe>jxc<%(b_DHt0ht(4_dx?rTOZ$?# zRD6aE@-HCJMT!dAo`KreqVH*2^NH3Lb5rOq%XYJB5xFFa22tN}4isz@D?U4N?td<E z=9lSQfqr!`y{@|36RI$Ys+b0dT~lOiALSQ!S_v`DEzjMZ!LYSDcYM;T{inC#NgQnZ zZ>%K5FzFzk9+^TH$xDBJ!cuniz0L@%LPegpRz5&wA~S>1`q4e<TwvAK>}iC}I)uPb z2r(A6rq4e(k3gAL3{NoQ`xh6f&bt|$!)G6N*ZX3QnBoyHg_itA9cyB7NO<9Ajs_)1 z;IQiDb?G~k{Gx?w?5jgsAPIpHLbd20Oz-RMLVdb?(g0bm2!oXulMp|@_90}Dm_dtG zjas0KZ+hcdLg?=p0P{)+d|7sHWogNP1&9_aq>oJY=YQJ*^57Kq!1~9Roq)zXVLzTF zQ!KU@aJC0d`yrj*Gs7%=72+?6^5k)WbJ8W2-q2*dSk$;lEsrlKlc@E_NS(AETYhdT zTn!Rn>U7o`EgSo@&p<iG_PHKihMH3aO)iG;8<PO1*soBiP%L$kqz<M(^;FV2j`|)X zpv9P!yDshHG>^*&4$8raGgpXXK&Q+;xq#!_)GE-OOz*rWLoKSm+`PMkt`BcgeNkSN zfnXbRjrZKZ?~Wy0$$*46l=OEeh>6k(H_M`zP^%Rbefg#S)#riHI}0m`io}&6ja{$M zOQJg2(Cg4(n5k$l`p*Uf=7mIp;;%OGT+&XIP}#(wt{BU1aPBg+9g%;dPd3Kid03#I z(VInBLY_4j4eAPE;zm`0f-|P)SLZ_CZkt0)OZIUhmK@x`u<NuYnoHrAqp@!TN>X|` zm7*=~0#f9I<yjO<7h837ci~!`tS7a5#Rt=DHs1*tw|KkV>C}FuJi~iA&gYsG_B1eN zny!ZBq#&ev@nQ{Rs>-UCJGBpe$yavaAq$&x8v<>IOL@i+k<y!=bG=5%SQ+@2jy*~b zz5O;R=F!CT1i2mRAN^e|Uc!h<jZN99wUSk3(T`*qfqoXNFv+MWuf(ph-hW#wTyK90 z@OsTho|yn1*$H2VeMOc-wI)^ubAo!xr=PByoWSV(XA8I<?ez79u3o`gKR^X@b>y~l z-#jR1qXqT9x{(y3^WWZ#+$-JTCUx>_qMfu?cpqQ)3uVBq@Mm`HFYFIxpI)|pl14zE zy4eZrE;FvI6BDrR|Jbmc?o<**uqj1(zgSIhiVirsY3$$3R)USbJ@dZm)*?$=B$##` zFFcLY`r-4*leX^Bp8K(EE`Q@3M(p>F%{pGv3QXqd-CEP*A+@VZRo!<!e8WQ{uJx60 z0t=F$VMWp}9@;KB9d?vTf<}y&#xIXeYu5wS)Wz4I%EG&E!?e=~D`eD1E3}^HV@f+~ z$qp8qNC&-xOZe-4WSPBRQA-C{;Ranm_rMnuW(2m^ah|HE_^+2K!<kNx`dWQ;0X7de z_#7cp5T-rdB@|V@B^8@<=P`JTAwI3F*~yOK>yCMY&A(4aEt7Jx&{V|3)>T`>7B(|0 zb%B2;JfO1W$nwt%=a(vjWNL6!F%>I=RV8W8G63U7gnLR!yGs{`n31S=0retN&6k4p zHz6KpC=Fm*On=tr%4V>5=csR?U53i$p`Z!_p!}7^^;@5BbyIZnAsF=4<jF)+E~>(t zq}Xr5IO15UL+X_)_;Zz2oUs%KO*5t0A=-&AYAA+sy7@x2Up_!sa(70omlbF*DZ75w zjW0`ip#Q9$)?=AS1tra|8BB@j9I95}nz>-PD6`u>IPX;zm59Uge#vn8S;N_bcaThc zOmQ7n2A2yA3tue2Q*p>$U)C1CMxc-|gmEx(SQ05a3*h_m4{NltkBQ`xlz(1WkB}RD z^x-WSV~q!uOWGp@e0H-Nb#SF{8N3+lem?2U+r#BfxSSnX@)5?XiZ|}pvKIp|(lMFz zUUmP{98+}^$qIQhgnzhC_n3)q1J87UiyBOZsDhKFrnZQ#u9dnAe<(YiTpFgyXP0sK z?X&AIT_JzW4BhlwX~@KcEr1?=+@M|%xtQM$kmb@nb0as!K$L{%*wlU!I=G5fG{$a{ z^yUZ79fyh#ml2gQU%IIE7|JR7ewR+u!7TE8O5&h(*&pT4GNyXiyg;X9PCc|L%M+=5 zMGYN4a~IIYmw4Wwro&VgO>`njZY4K*|D$1~eot;kW19dA`h$uV?H-+hrMPG-IG;_I z2<|}#Ac}zwK)SH08#xoZbYot#c(o1zBav(36}G8v+J(#!^)nR>swOHujO!uVysP1t zIHRW_<j@dI#x3&x=GG&jR5`A(=85Vd4>H}kFa1U$H(G6I8LI+bx)Qcjzj|A)1ANMj z`=yZ)EuER^*NZ<JMrM@1I+El?GaPDd$;Jy(KBalY4R7fLXE8OHHqUwSbJ^=tJ4iXe z(7cH1uL|slDL}-;e4FDnMPMFKYwVpguSt%Tsy{k<(E5+PMZ3)UN1vW)Atd9{xJPdT z<1z2rYs+l{QFq%}Al<g6MccM~A`15iJ0nYoRhO$9Y?eMtlAGQmPB4uO;Vc_bfrOk_ zP90Db^$)#k+v}gJkn@vhoa&`&i$s6nhx~bUKL>-Jj@F)*!pW}FdH!u0hwtYd*V$Kn z4U0X(4HeAjJrRZ^qRi-Q_}vj0BP{7*-nB}h*K}SV#83m$sz1!*65Cs9H*81vBXz6# z$B|%Q9-Vivqzp3!zVLRk|B^6Ajy>Gx5wzyP_poCSWB#0&cEd3jPD&I-6d1h{=;w|Z zNQhZW|LPd3OII1liB9}vT-QkfE{4g#5XyIA)n3ND?|3ivxJLME57<pj5pR~nVg5Wu zR7@(o6NYFTqxrC$6<*@!Mvg=dfrO<QL4Ki5Q)PMz?_;ke)~msFdGm0$wObxR`KP5C z{E@yp&_@AUqgJhukQ1b=lFxGbl;i?ykWxzY@|lV8B>J}k;%6_DS-p*-FT(_b!YFD7 zple{xTrwZx;6Pf`&4MmPo<kK%ya~}yU&=!F`H<z~U~LoXqhJaBGcQ_>qaw?dh&}jA z8=Z~fxje0;doUS0-yi4L3%oc;T=_KnOH9q}ETPSO?Ie;4PUeoQ>YRqR_r42<VL8{b zwN=AaLmY|VklvxOKx=MR1-BW4oJ%4+J_R4CVuGJ(?*eA#M8E9!guL0|-ARB8M8UrG zNUX?KfEb{C+=F)aJJA09L4_wF4rSW;KPn?78W%ImmNAHPp{xJ$0ys3BZ}dO?L@2`Z zWQ8-ek()%nj}{mzc<9rss^Xjmto874yq!*Ssf|20!(wb9@8>=aco3;DEDZf_!;L`v zu>BE<AyF}{HT==p8x*4Y_CafKM@aRfRz4p#g`e2!vS7iMyYQ$9F3RU${LyVoBn)2q zu!2R*G|}#yMV^!OYH;)+_NtD=vh3K+W7@s%d5{cH-KM@Tf{2KIRmCI+VBhd(mn73& z7ApkiD4EGF_Fg;EWT1?He`cn^_jX2BtRfyFf-;JYg1o_p(~vhfOQIYb)7Xhas9ioy z+QrszW#Y|y+busok&dBH|3LKaV2#lGw`o#V?^&{vvW-*eT~@jzjqL_<N54G&kmWz^ zX1*r!^}==01JXC~q<`Xm6HM3B*1thphjOA_pf_F)jjZ^s&r5MO^$pnmaEO#nn?~UP ziJpw|UHKw~Bwj`KdJ=-`Gj2^<)sR(uIsG=h_$;L*qb$TuZxc-0Se0FSvW)-bnKF)9 zWqF+9j230KQW_W{g1Q^$ONh9E;Um&I5lW``*w)WggVi}f*=2J2U`E4Lk^Sxz;`h(b zqTZbpbuO#kY{Yq_capL1`~kwXO|^%Xa;P6Zgj3sSX|&*&iU;{g@2$ZoUPt&zBXDU1 zN8;U>H^r4Q*{8Fb3YL?@&Df)u&sJtYx{|q%I&S>>GdTpN9#e@F?&19vs&0Ko=%+On z<qA_VxfP4CEUM4*YBfBZ@ujLNwv$<T*Uv{RbJ@E$ePydODapG9V2<WwKup!6s=rMQ zrl)&kW=$?!ygx0dSsS`wcEi>Kl_xp#PJrn)gU>p5mq7nb2V+c+$4Pq^JIyMTIUczP z;>wA&U^fQ`@;}s#a))7gcVQerky1ILevBTEB{QvMspZn}AgzAAM=vh`Yb#CJfU4W* zi8h<0ZWPXF46@*?N*v9cyTVf!^>Uy1-WjugLVq^QmbkPBv3#Np(XW^;Hwj<m(T{$L z69*ZM2avi{q)P16AM>e_7}K}v{JmNJONPb`KbA4#y(AlgO-orkZ2cjTNsIVP$_PUi zpX$ZAjOiP;B~!=-k5M4y(gpuIjzTwtEdth-Wy3u@!@BVm*^lkGs@9g#T5a<Z_aEnE zlbZzFTXd<13R2eiWafUOANur+;A=Pk5l|LZIp(77gADA;@rJK+=U#H5*Bw*0EsS$& zCyXOb2}(+JV+4@ff+MuJp4ShO4Dg@v9$H{kC~*Jp#%nY~5+fU;7~kSAAizd1>~+4M z+@ReXV+p%w%VE>dpTK4!9QY|K`jWq;YBahZKAvsC{cYT-p%UwbjciOQ<3Au3l>5vw z>9m1<mI^&ILd&73{%K@G3Rf<lr%f7ec%K}0Wj@Ba7RRjKZL=bwJ{$KHv4V$TMuZV9 z>}7>1X`a{c*bmx!xyM;&-yEh=aW8P4?UEI1kkAJCwZ1yEYp-(`gY}l9fsvAcVN+ci z+M@8ks=ve2cpcj(tF6(JwRcKmwdd{KtHXpaQ=B~(&lhIwo*CH@EX843Ig+XWj9sB8 zY+|nXYzW03Rh1qTl8nq4;|NbZdra4)hVu{~m53ii8*WbyZ<J{%!q`t{u`6q~zhiNq zu(k&{MY+sp#wt42$md{v4G+WR@*mNZ5X%%&nC$D?YKQnb*T{c(y%o)b&Q40pRHEYA z$SA_KQ``yatS?xYS}qrh@Yr`b!-RJ?%Ni76Sf_&=6Yo-To?t2ysIj28R9upj=y<He z6^c9xT8Y{C+%Ptqv!dY3Y?q{t=?*lCLggu~)Ki3*b(|<#MK<iDGPz3`o6JnFiDdU# zR-6SaSm$22jRbWN%-M>9(Z9j;qf;)ANcVV0t;d&gL3+Eo=Je^l8__qU4BjIOBgA@B z#W^_*y41tT#TxFUWq*$WbME2&a06nvk5qF3uPA&xc((tkIPEL<_(uvBZ4Y`aYN<`h zSVZ&KiM0aFLPY~N$jy{eg$2GQ2Y5%Kaf-Z_Yr4BexheK+i4qd>eY=@3gzduLj9S=k z7l>2v`y(u9+IY`HUlo4H#AcA1h8Wi-KZ{g05hmb@qH8tSs<N1p_q7?bi9Zm_aTT(n z{9I%Q?sgNokz(Yi=MzD7h#Y_%Mg|E_7_DgVK1JvGKh_<fZc9W`x?v~C3HZPVHx8H* z?<%fg{B!pKzjZ3=+j3l0_dN%>@qd*=h$+6M(Yf#lUvK|&P|LxDj{A%^d=A>XSK#yp zlukMI<W6tgMT28@BLpHPN4s(=NCpX*tw62gP^^I&YLz58y+`quVu?PI?O%;ld_`~M zTv~$_>`sthMG{{m#Xnh{FAtRoB*ZKp+1@D9%xp9(I;LH7(kt<w-HaFiVvM<sNGjIT zahuQZ{MGN9n&3tYuibH*oMJB>F~$%0UH!uDdJXy$1+B`hTJ{P3e6^B(2}bS@s6ZB7 zq<g}OkJ9C)OI2q)RSoTPGN-zDy{;6`NehyYm-L36i^)Hd?{&-7)D~*R_}>)@-47R# zC;xqkDrNclyZn>Y-rp>gEsBK1j|4ES;<YVvTgb#pGOK{#XiCzv5F3Slz9~XN50&eQ zhpRm7F0Yk$93~2Vx)6{CM^Uf^Zm6Qa!`la#JS(M$;`~;t?VlO}J)hrfdvS-ja^6S{ z&l6~F--6W^5coBi|Mc&`vaph;PbX_rdtLeZk%;Rjjt`biJt%1R9@ZxWR!ELON*WEg z=nVk|0hga=_4InK^Qt!3RRZS6%Vmfwx%;?_dPuA5t5%;=kkDu?XFHC!<|ga2ix6I< z1CT?CpbJ=mcE)UF*eHCHZ;7+zLLOJT-2~4DSn3L|^_xuw=Y30%m-cBYyT7UVSu!!0 z|3UmK7p;9^DE(n`1c5Cuq^T`I!~k{ZFgvg;F%9xVHZO(!-3$`@X9ccQ+L)nNSFl|& zJ?Br&%R*A5#E%sVcr6pJ->?efO#VF+$`cbC5k3w8gou)@xFD+IJ@%;}ULL#(xt}WC zT;M9&`;UUD_HV(|RE4l8lxZ$&2aYgXoFc5J$sf4x6wJcY@?Gc+U!NK=6KEZobbO>g z?Lmv^$f8b-LF!s-9&R~zyw>!Y1#M&a>XW8mu^XT&<&zs5^b9gb!gxP|i7X@6CNqgL z&#e%=3P~Hqy*0g0X)#A_%@ibuPNM$2Gxmx+U`fT`%2w&xIQ(t9RaoVkHMPdG!Xib3 zry^Q5Hb}U^+}beY1Tcs&5hLKxRP{4k)fjxng>NO97x9D_pDJ#{*0f%a#3=V0^=A3d zDV0SRmW4-3L`E%|vi{e)nZQBe>JNz{-d}JXSrE}IL_K0U_j_vFn67ciNV&!%(YQKr z>UmGA%^ef0+>?V)TTnWg+Hik6TlKLaPA4p>JPP^O!Ql@_e}#o&^kff^n1XD-wr=S< zsH$)MX6&ea&8E8VN>n0|yK&q49VXjc(|Dd+Oeo9e4>|qN4bSsZ3?a;A_*!X9mOtMg zOUX0XH+=gP((QG?WZJkbi{5PZ)gAM=O>klS5-qF<-{Nf0rkVD9%x7e2Buv;g&mH5U z>2qG|o05v-d&p;3Eks+RU%a<Ps+kk3kn<n{t;w&^{*$eqZW_t^UxU!uEx3iawq4yV zW!0JguNpjFy~l1b?%LOTI=jE7DiZUf{t%<Kw8pQ;lck=)%JJCITgs#o_z!*0zdneS zBecCRnIQc!51Ncw2)bl7De?E4ggNBZmF_lNC)O9fvv4oa6FKJ7sbi>0PQc-wI96o` zr~^H>l{zo~eI&eBBnRVo*NYFYe;ATQML+PntY&sW8c&~dae>qrvhOeboDE7fWwcQY zlvCroDEA!1N%g^wNEa!kT?)~|r-(%_sSnJe1_oL|GnptwA9C)Gk<bVJMt|ELO|x_9 zxY0ONhMX-@kTAS>su|B(6^X(m37S9GD`Utwu!$~fM14?i-SSW-O~jj;Nm4>co{erc zhd?Fzd<akCuVb0Z&eW(T61r?-;HVcD_$_yDSwJ6~i5=yh=!biFWuEk+i$*QO>Nb<n z25GB&`f8~_+!wz#A9aXkgpXcG7%N`>6XYl&hum9-C|5}84E}BuVt(PZjj-dK#|JOD zH4T1CJz*241#SIc&f3nmRJvZ)f|3BOPZ9NA?Qbg0Z}A1!>8gMhepPSH*HFNC4g~)& z9Rl+Ozknr7=&rI^DG$~rT}w_$?FLO3K>@eK$URnZ!jIBR7`~XqXMcb{TGZXsC7;H7 z?JDCD6>oCf41=)R)?sbc7)1~+<G`?dqW(_P0+NNVmU?4?n^z*sj8nBh8ae}<;ojlL z*3Mqk8-Wom9)Frmr`qUuy#zBjHVpc&B(8D0-R!FgE;-77m2`zc8$LlgVD8l0sE82P zdppP}R?}|%tECCJmjQsQ#$1s@h=Z>a&w$U039HiiQ!0e=h(Eg&%it-&fvld?ulqY6 z;NwPf4bHMU5m{3N0?Qu*$|xI{TI}T80=RGJ-nV-r>>Aj4@iG6kZP9B6=RmX$8Ko!* z@3l3G>>(;A+<$6L&bwd4%yc}ZJ!kx4?WuLdXqAY`B_l<>?-juHJie*<N0OU48mGP< zP-swJa+aGCHl|;bdVW6|*Z9>dSafh^l_!FGM(_!;zP9g=j^5o)?G!0FP2xiCYs7}_ zK$Mzo3rz9WEvDO#o*q6h7SqgVcLD^fWF}C`O@1CA7it<(8u{0z2Dk|fCU>7F<N8Zp z*B*3T-1T!0`i(**;}7n%>C&$XEVAVx^Z-S<7)kJov#2e(9enA@W=1q882vo%r@x)V z*ZNX$*n-X2-_UQGhhBcFhz@=MnpWmcU!VwSVtA11w*Pw#sO}TTmA?5lUE{3Y=W6gX zW7aH_o!ip;TP)LYDCmhwJP&yWyYv_Cd|KHh*bsRYLQX}WT)?q4qdo>;bEu3U(hrqe z(eHu?lbXu_ePIkKP~W537rz4HubuA-Ng95I8i#16-7$mv1p&_Ib3REAeACibhfW!v zgPjn(x3L3?p^p{4QsmAj;^`#tTr{G8V<Z{(KU~SY>w<-q(mHIt5IFndyPA@8_`7|m z=#N*~yhMs)yG}1x$jt3B&Ct)Srk^HeDbD^gp6zH)Z8pgckNSUPUKvMpXb4#|W$W1+ z_w`Gg8PHeZH%Kxy+-5j$kEoF9z<))$FUxF{i?t`GDZH6he9uuAm=mfbGxI)8_;!Rm z@qG7f;^icd#k8ybMx{I7q(_yF>GX}x>K{=uzum^YQ>q=NIWI&?PKmNw;Nv|ja&9v( zXbPE@rlN@F$L*TYo1uEis}}zAlE$UIkYqX>_HsYA2@iU$yf*}iA_&&R%MG=Q(=9tN z1n3jzkFm}281MO*!RP7}&Rsn%-xYQj?6s=l2#zuJHlO{1^@tm(+rbYzZ^aX{)kD@Z zMy@V7Spa-mzrL)>fr|)`clN+m*>d+d7%Wzk4iXjc^^tx2N*X3#o_49Ka4arW<F?09 zvmJhBtV4p`2|Un}+zK*)Qm96%cpW`4hfdb{P*ROr<<Rxg5K8d;_~SaP65b>_7-pc- zZ3u_zN=dW92{Pc&At`B}Hl`<>nKT<}4$13iH90S2)H>(|>6ru<*w&JrqOCzX6+D1o zu+wbtrN<zd(@Sx6Z+U52(#rZCLK4$Z?6`8D@`_p&D;v^Oj{YYsWB0w!$(Fef$vv_( zo;aRK>Tf<pg~wvRp=DB!8Sff3H-raC!RTWTmfE|463fiOuR(RA@mY<0{Q7t=Y8#NF z6O-Vt?7p$a@W?@Z6#+ezlur2hH0=70Nv5Q<9z1?f${>#fhh@|u(+!xd5t2w*dK<iW zf3{n=GtmzxWn>q1vCsgZa2$6s21ZJH9MY+HH>Aw(X{d9Ka`$2}@iRCo59^!#K<A8` zT>HM$(XVgy$zKvFy{?RH$~{fMrYjUdfFgyof`gGoW5_2xC5Ka4?ZqROFQvjVlj83` z8UTra&s%n4<_{gj-Y;1NCpo~6Vf6a|{;ddlt1IRB<JONAC<i>}bC-u2YCPsZenKKh z0lgd=?_%nz;}Ckp;<^u;Ahl4I^VSH4KW=;=tP&4bgbh~mK7NmTB`ClI#zRum6_+Tz zGprA!^`t$cueMan;KY7#RR7xU!M5CivFi-^C2j9XHkSL{7f5fE!n!e-5ghuJc$zh( z;KwPgQTpD{qqwLiL!n!Zs5a@^<Rm1_Uu-@&@fF)YmZKSkJ&GqVmmJV%=#SxF#8lz> zo^Bv@6;?^KAqIpVXKj*?_1F~-nBR30KuG!N?FPnj-20{|zdSh>XO;_X2F4Y}JBH<j z2jeCYymvivHKNdW@S4QuLU`Z?7~IEJmjN%4%JcQC+_S-cd}{sy{)`!as>_!o>e>nG zz619*an!eB?0w~FdNY<}fR<3^Zaf^0XyMP{G*GKGUO5MMF}Fw<EgB6qFsRBYX<7`W zQ{hurvvP=<MLm%9#BXyTD}yLZkI^Y=P4|Fk@|!-;fiBBVxyu$0!&u>{=j-(ON-vj8 zzu+PK#E(tB2;WjeZ~Ym!+~;FH4(*xt#;}<(ERz%M)W<|%?-eSwpWj<TnZYpe7WOp~ zMrk1b@qkJvGlRlX_k$;&G$i;cxQD?04GueRUlTWNo2KR9_~nbpl#|x1sKNcn3<wX& zF?%RM8`JvU=-1CDqVB=E5@}QiY~eT5{c-l>A)6TVr;!#IK+IUNL%^lqM=2A}m1>p| ze}2~+le$UHve*HCiKK@_ZLzU(N+9@EQ(=n|Xc0p_qF*g)cE#9b!+pY6<Z2;!TC!Yy zvKK80I-<_yW*R+i^B$f39_a<^vdO0f#gIp<y;ex&36KXO&jbd@kME4yq-EQDAwaUS z;?)2AF?mutH5}5;O+4k<<DFs9Sc{r!<bq|iMXbijaXFZ_9#R<${maT(X7~iU<69}7 zFz!rXuMj$oYpual_$4Ew%F2nVk=j9ULcpP81kgg8MslJh)GzACrt6Qnio*oRYJY9a zH8fN(zMT0gC_3=&Y-_xK^$($FWX#~6NiCJjB~ih87eg5sWt1jZJ4H5}#If%p$?~G# zQKVg*hnRDFYtD@EBFSwbUvi;;k=w7*!K_X<wEpuax9BpgEjY@0SmjYg+@I4wTAa#f zyC<-@k7Q|{qqpTdEcwL`^9$=NcPC_7SiH_}+8v>~qh)Eh6Hc;;KTaTUb|`x7<*A%$ zn;W<3_Z!51bIc*4XU{a%V>SNgiQSFjk=(D-PUt5G?po(mexuJbUcEbqMYg_)ClPFa zer2;Y9G1aJuQQXvAK2Be;wNUc$1ct@UN@hKc4#V$Kd%y{Ba~XqsFoY=D>FYUDtp`C zYFgoP^Dx47i^cNi0CM-wYU-dWs#T}0wJWc`PJMGK;!ZH>m85VV(MAyb0F_}I=w_ux z0;H~a?>5kD4nZrhqnES;Rr<tn(+x`Ek4U$#L4RsRY(j`HR-hIp=_65+9#1O&0tLlS z`<&YdP5)~lm~A+Hnw?-syn-uy%xXj2y#do>Qu|<zYti0Km)z`t+0Lm#TF4#OQknpf zzh0oHu-M0ENCv|_N?V=6u9&e?32cFy%|h~Cb^tTI$qrK(xeQcb5o5c1fTb@YzU}wa zk3G=uruEgM4fm7LH`1{2Qcp2MmE7~eH4JqB>c>(733LOG`s5q$qEPCWo4|QEgnJ(` zH{&xs9H~hX2A+IOUjzJz8E7gfEdrEk<?A-{@*RoEJ4~Q8f&8yv7v)%vkRW#-Lk2R5 z`!nso%*k&wy^_9Lw>Q5yqOy>nkf_he;xLKsWV#k-`%Wr;*MSv49H7tpg7w9;T%B-3 z1X!2yPU4qRN<|aa!KriOgo$4mHGGlu9)6U&BMoI*BZBIF5R8WH5?+bR-^+MC0_Gk~ zv2ElYDYCa{{UScYiSNJ(E%`_aH4eN(?DC*VXv8KIX9@qHEh0E4Vh-crwVcGydV$>3 zrCD>xAgx3}P#FI{aPL5K5oaf(jIAc;dcVhZWwFJ4{``8snQ5dAp;D}JHqhsXN1lO@ z{3#<ia+p=IQqLaME+FS~Ub3&c2S%WHP>5QR%?$?HGT1Wqq*Kpb%hiPZy&7={&x1Y^ zn%-FymdF0KBk`WIGyIe}P*TsYWCVwJK;{FC4DDOLc#_|hIP><jWv#QU0VX{wQ@(@V zXGw%aN&xwN)HX->O(tiaz`ajDIZW&vSY2p_kdjT!E3&hYN+vbYua$)d4qZd<E;-9= ze~iR{UijHfHLcAwaDh(Q+LH^S*xRZzh=x56n@jEfYFWE&^642;P(5HGH9{O&L7xZg zjH?Qt2Xo%>7HVN5Z~vAelXfRW<gUpjA;(B{TYFaN73U1!Tc7h&#X_8J@XA&uSfU(l z)woM|wF6S3)VJr&+>N9r!wySrlhq{9OXb=9p3oa=$oJe8Gb%HQ>%`@<as+)_H+|C! zp|&I85s6B!<Aw;E16{uukTR`sLQQHZ{LwY_o2p3b^{8r6*ui5d;&aSnFloz~L2_=~ z6IuGS#rNFso{59-IFL9v#$`n_hyV~QR50BAtpY|<$EMe>q}89*8f}S&egcAN#U}01 z6+fZEN*PfS24I&F=U=@)Kk(SFh`{N8vG<l?RjzH<sDv=-iAZ+{(jn5)h)9DX9Rf;s zN;imfD=i2pEiEl24bt5yjneR4w@cSr@AJm9zP*3!{o`H7JUoD<%zIvWp5q+n7@RW! z9T1zE6^s&q3GzJCEwYHUGUPEiLD+mI@Y>PBzj&}l31Dm+s0-VhCKL4#UQpPM`u14D zwe_53<^66DKZ|>ZdiPyNPyMNa4?#<*vM*cl4uoC2ysJCtR=+CmSc(kB|9KF)qYXbh z-K{FnLA;4LVl~6@j7}60dMQPVGE!5qCG#7;6RwKG6xW-p;NsLDB5ZL2*^}yFWc{_& zuKc|dKNr{Ci*CwuMK|0jwE$aXLVU#g5r+MGa*_DoSC8heHld{Kv1G6Z47Qr&Op#PH zZH>nuoZ>=E9^r?Bq$StyelT3Qf1oJRRYc+?huxb^fU-JRHed5_5m|ZBdDfkw_#F^j zK4BFeIJ-HC15$qpqIx;zRjQ>2HwwhM{ZS+Bu-Wg|T}w}%&0pQi#9(jKUtR|yMTHOf zyi0w8Ooh_@F!u3mgJAiIFgg-F?T8|_Jt}_>Z6qh%NTd?v@VCkMAH8p46%Bg$hXi?9 z)JaTTcwBILd0mk%^QN*bG1BuzdVZsw1^$Zj211(8m}F2lFkKp{Up?G}ozvb6zO#?y zWfL44fw%vTntVG<B#YSe=wzKiTUo6(bQE_9b%JjvdLPNOxeK<lU~s(X`6k=qj6>Wa ziha-Bf43wS4nJyjgzC&(K3rj?e*0?&_{#^CPUn>`bWM|*9qUu6(maS@l#YVE?e@}S zN~uh?x2<87i4uJEp2rU9m<FZ!V;9OZ?mGMPG`#~3wD)c|%-kBbpTaq6q?EJ});SI< zhU1jI!P*)eQKr;u!SNtnFgLuh)fefMeAM2AhuK-peS(XHw|s*=D^j|{xdqJ_?F>e0 z>-%{x>vAk8zzIzoj=d0e-bgu7U?S{xrBS(8fo=PvmP1%n#McgYD*`SuWL);4{+|5H zcF>B&R;(04h$=I36kYhm4%1frMKSC0!g|OV)_BA_OLO<+(y}DsSMW*h@3fCRjlvq9 ztIP1UcA|75w|9BLk-z3I`iO{s@MJfK;@mx_J9$%&?%bDj+ey=l<eBx-C-W)x(85&N z6K;6%;^c|s+1K+s0S%pD<~CA>M+Q~T*Um-Vf;c=VGAU7=&olZYQe*8+&OB0Sgl5y; zMzG%PJ)A$~ddYWeOL<I-Jr+-bL!~&+-UZQ+Oxs=bl}xK81!PNhg-R?pR*T__2zu`t zQJ3MSMGmR7otYCJdKApnY<c%Eb)<1|V%cMDiyQBFQ^sU^;xpq>cf~!AeiwdvOp9eg z`93A5@%sbWkr&}MrSFgo{B6Dq^}c#X>3DPb#xkM@YA5X}me5%SRwI8^)(hW7>U~<v zD^=z{=zAY1hr<h$!uz+MZtAEc9rPW};B>OI5y`LtDj(z2!|)6_+RNiEz)`C3Ja+Ll zov7zyLOz@~2<3>XFw<6DL7m{VVOeEz_3GE2@Z8OP=E?tvT#7HZJ+3N?r%{jaeb3>% zt=1dl+sOGn?gsgP5C<Nlv-sG7Mr#D_;-IJEjVSe&Jt&l#F!hgUJ#bDIgIC#i^oPG_ znRLO)*l+o~rdH}Q{&a&{zsK8168w9!)NA>=;zJR}Aygaew><MtS~z^^l>Cs*T;-Jg zs)%mgpz<M5@V0!0!G29n_!o@NP3;5ThyK+KYk5SveqWdpY|NMIjm)i|H7*lf=;?~i zv*5)Jo=r8dc-1K&0=fir{IYG*x!F<+Xc5bGD;SaU-!`}8MvIcey>E%CBe&SGuZ^yQ z=V`{x{mv;>70X2jg>fCwTRR0}`uyTZJfOM<qP(vk7vsReHjbtQOH84b_)S-)r&bCT z7fsxsb?ovmJ}tZYa)u|;Z|pqz;HdQzaa!vOhnNpmb?OO+DMd0acfZRsB6s)s0Nr;P zwyHVbsp#wKB%46=BuXJgK&H}adI_{6!~jh<x+|JX8Xo~FB^={3(3Ac~2vm^n<8=|a zgD%Wc&}OT7K`QKC1zPO597SI%(;?h2F+)^;h#U_!BwsCO?t|?#F___TdKk4m{R#92 zPtky81)FUlXYg5>7?f}fUv{cWq(R4Ye=+jdGaeSbK!u;DHgs^OUYm)qENLa+vYg;f z;<L?UU9X3FU<2;GIE(}>%kstkY(FV#+}vPPNMCb&X86V2MxlX*Vl{b6;9P-NWP3Wf z@x$W}YWMZ$*)Y0hQ7$w9^CujIMrE=|1(uj55<@Q^4a^X<pY^3$GAKFKN+gW~c+L1T z7VlwD)h(YIYUslcNK?iET#8s#??`C}=##SX1LfQ-aQ!)ceuE39-b4V=M5Oq9=Xh_? zJ}S6^5eUmPU{VN;O~faoZiA+tM{?;DZ8z~50x4tw-6h=zt+>ZRzY#O__spiVAasY! z(Qbm99lw@xb1*v;lY~3BwVsk0BZ2}9mhX*pILB=Tl>5I%CrmmW2)sVH=q8@+QWUv- zbnPi<#_2pK7raSk&4>!vGJU4*<VT>tZIvSUpzoyzF)yf>x8NM`q74c8ytq9H?!LF( ziJWh}Z?$+AcaE!EpS&*W0zDZELfI`7)o8Mb=<5XPRO>e*0Ds|;=+B3z^V0=S@*rIq z1|I%qcP-kV-AcrWtt&E`l~z3wMP0><reN3DfNg-;9!>p={UG}GM($&3{kP(|Z{H}x z)TNVJbEALrB7U_z{deDrrr?5NKrh#;fj@Q_6@sF-xTs>LFreFxNDFhu|GMY@xb6Rk zKb0b&t=X<^m<&w;c!{E&GkshlJV|2N@E0{tl3j`AalD~*Kj!zG{PDN`hd<L(!RA+2 ztZuFP^<hL`dE*fZHm8+8OphyjKb*^{`%fQE6wy%uFrozdMDM5l<M;pjqoo@|H521i z5mm+C8|Z%+i~sz;lvbh9IlweJ{53j%|K<PSYfUHt)pEML^ZnOHR^mm5h>Ryd3&0qt z1H=RAj!LVAp5T8v?_fQMN<g0}1MQCcucVgBhYGm@Xn(kZviI^AhP2q!du}LbF+SWv zJ`f@X)XJHAt83rrI1WGN0+LFr<ckr33^qU)yvrXAZ{NzlrW~9b%iyOI4Dg;V0LQ2( z-1|N>5y5Tv;2#WHzdjfu3yw0(#NRVSMd$NaO+%_JoSYd*%7h<oPYW9LW8EO|w*qpW zbq-q-<zmf638D;&sVtB{lRIepCs<Y#K9K}y@Vz8qkD4;e$qL=*0gDBGi!lyY;Im-2 z?g}W{KaXFa;JOliw+(w!+No2R-GJ2*9ECBE&a+$kUpK=4Ff-{^;D%7I)MyWm`D1U1 zcF`1r%ExP|M$oRS3)OmGE1Uy%0t*m%c&`mws1eQ0S;u=`-<1VGHT}oueLR?;QQi-e zm`n0mZ!#z)<K28!RDb&LS$AU8C;QoYk7Xb>8hg+y$PS=WXLXTg_z%|;;1%=uok9u| z)a;+=O^p8gjQH=iH#E&U;BYHu`xq8Q|LXvcm!1Pc(6K;gRVH5jDVpimck=Q`iQJ~q zkX0Gi(-zn`SWV^vg<<5?Pz$#m(8p4Rjg8HPPFVxNx_F>^)u0^UolhynMY}u?gz6sa zyT*t&#$I#%U5fu7&Kzz$kU;RnyfWf~&WN8cv!H7M3atmefXrs`dI2-QTVCwmw|k7p zm|Za$f6}}D+g~YK2YozU`|!PA9}nS{4X6Qi9Ik&2YXu%N7G3>7YN=}<$f$OWl^8CA zr%wRY3+>axby^_k9-3dZ@G@koSZ))thB*O+^sRHCy}<}oQ}jda0dp=0!U!rNvLy`$ zEP))+1I$ezEmC~TR?p-6;}cLnGzNOZaln8_ZA8<Ym6$`{yBnyTg^Zr~fns8z#^6Ci z3?$2LIZ)Pk1zIl|Ah8I*t-6CK>-%8zX(%hbd45SCCK;bnjnmfan-()Az>G(i0%$0U z34q3eyNk6zVf|r|Zk-X3JHgAslTC({NvbzNaYrqQ%lPFv&>@R4_#F5JD19=5d)9rs zc2>hEN(y2J^VDCe7g#XJB~pRi8X=VfZfQF}M$=54C*rFG!tsE*Ak@0w4%!zIx`9R- zzO+aI9DZU0gh0Nugy1cM1o`9s=*Q=ZAFHZ>nM?x9la4Fk5~2*=iQg5dlCjKsp6^Mo zj}*Mg2Ym$<+-%6U%VdSsV8s@&rE3Eq3rDR%P2J!+|C~2c{uGU#pwl;X?p&7j+axA| zc%}i~rh@}R-xt9%#{$0FM10=;ai3v@GB;52tVq9Tx$((_mh#0KwYiAWNMt3%J4)YX zsD@k0t5gk>g<>EmixkytFp0gWGoP)miyNr0oII6qnmG^^@%gcFdA5@Pwdri2H6zf* zu4D0xQ90|Bq?k=!f_~PCg%eQ6(2QIo?N3eDZJWNjn7#S}O124t-_AZwAwc28zkR_1 zyjhTcpTs%HRH@#%Sk3e>VMqi`!>W22%o!Ultcpq<h?Shk$D-Jdf+?p(rF1VQ11st} zVi}I`aU=3$IFHyhUc)xb6Cjc%M|H=fpUM^R1?1p}87M!VXc*&H1F_lb3(>iL*Y*I# zE;dg!XW~Zv^e1Ofz&U9}CWCue08<;t#Bj2D&2hj3hK<{nukkT6$db~R%^!(#94HOw z+EAcUZTKkR_|{U~dy(jk>U%#6!1yy!Kx?2QUMwK7IPnb7rkB$Fu({^PAcuf?h=Ci= z7CbNDxM74z9q0~vGwhqFaHuH6rws7nzQuF{)P=xP>yb>8I$Qt!8RB~{%E&wp2h^|| zNqjp2sQaWXjP!XX?-C=jI6TP{NL8y5KrLy}&D|z9-s2-K=mHLLrl=&3+YbvoHK*;V z@lK(A662@9BQhEY#dmkQ9qM{s0eyxjpqbQr{$qQ3QZhsR8OhUe=yaq)_v<%7({ZXv zlpvopjJRhf{$S{C3lf>qh|*{y#ypj<Eg=p09*4wvp&Bgl7C9&?D)CY~`FRssihpw2 zS^^hGIoEZAMMz~`ybLT=MXE$Usx45O<m8;AjS!+SLCR#4)WXAJ-}2Ok1q%!`czKyO z!09KLTgZK_f}897)<~KKch!OHj#2rr+Q%0t1Kb;Er$oWeOQb}uA-HfRyxVHGYcpxD zYb*k60Xr~uZ}f#c(`du_#QOnXghw8VZZ)jyzULRVUhMJy`=wT91P;uKrK#r=e?$%& zudgBV!)+QLjw=Xm8Hrc&SWYC4VH4z2y*HVzDGwRculojwUw1a0fJ#g}84#*)H4U;s z7Uzc*P*n;15*@Gu{YDcd;0Ejj0zHO^pMff0BQg=Kba*$OZj%Zb%cYoq@TR^gR{R27 zF&M+TcJF>QkYSf|Knm4T?s_!P(TGURQa@i)<(FLtiXxLN*kGa6?|r53@V$l-pBIS& z!=d)}mmr~D_-w1L?9X8V;t6&b(&~>{FE2dxW~K#D=YMV>ij3w%$tR|cGLO;1wb&lf z7l0r}w2d@#ar*s^@(Q38CJF91Q;GXNz@5~zhx>@n1s!H2iyj9FkqfyLTY%e|f79!> zGjM2!2VbL3_fvWwdrK&-*DSyrste9p2a!8PHe763s})isi|dLOyMl}(@o^<25Va7~ za&zRG0VAFoBQVDk!@F@}hn7J&h{lPZpNnrFjI@6N)MHEcefC37QLt}Y2Tvw)8ZH4` zG!{74y{Ae91RfZ7qYro|4d?_za>TQw-$%EEw^*C(G+skAQg@Uj4y4)!UY_Np+mm82 z=eJwe2cydi&>}quB(-5MF{V?0D1%c|gA8)a&8c=nHFx}pegN4)P9Mra90NMZM)+z| zH1h^ba{4T<m}Eo;h`YGr$+j(~RBRoc_|zjde}l|2TFT+WZRDrOSr{~jfIA@%G+i<A z=-dC<vNAzD^$iOD9crcbqOIL1Q0l1$Op3NV{m*&$^|d$iOgi&yTJsuP*GtPP(pIVW zB?2@F;?dDkUT!C&XD6ed*a;8$#_JTRW!kmFg%{FC4w5xBx(;^k<w@Oj1{z5M_=^1a zizlBSTRx6`YWoS?ICw>>)S0Ro3172WQ_v^S&vRQPatLmwXnNZ--L_>CVA*|3L!Cpz z?hI&Af?0RBg=F!E`N|9NMJyYJo8wwl13+u@=KLHGyMJz~G?1dYm-F?O5=Lf0Gg*%B z!!FfwA~hS~b#Kk>k2W!5?H3}T{-{vEAW*Kk@+etdsqk^t#v}jd%QDx~2ohX~jthJl zLcPkmUwGY~tg)zwL-S%W#SmfQDsyS+qt({AKS7Pn#P=%ADPvF>ZsUz)M*TG}uK%St zdR+LsLQ1A&d$U`8dF6tuUC5oZ6GHf?0xf-l_}H4Rk8wYW7)^p}O4pkhfU=pEL8_aD z3fDsmLEEds^>J*=XZ%5%176yI1cdD<u+a$g6;C2ko(xzX#%=|fobgUt+{ww@sx7vz zS*OqO{ZU&BaZpoUMyI^Ib8x<o`tQ$+$VO{q{dJ$e&#b6_&InKg$YD;p5gbRARRxS; zLQfCGMa%n*XkJz2a;%F7U#E^%2{pU^v>?|j_zRQ+<fyHXNoo(*sDOsdD~G(NIRpiA z$B$VovQT{`cYViLH>iAlcI6Vh9pPB<b~P;}XYC@FQJ}OMpb!%Eem|WMkph@NDHP1$ z*O5#OtE58)2cf4Ssk!%IxoRvanv8dBRk>ds*R$=IBNpBrQK$8MKga7Y3wO@DRhA4t z1R_Cq5lnqnJA6QBqcN?#>7$VFi1l`Z{$cl>KDziffL%gomgMvS7cuamwCX4h4D<`6 zNN5BLz}$|2IC*WYlp8`+vL>wC6>DH*2@#`sF~HmGWDt2A&Mp2R=!J5~=kMUE$yddA z6EZVEkm(`)hR~UM;u7q@@d>Nh-rQ_abHyR9^bq2Ud(_t?b=RW1FX5H{B-zA8)Fx4% zr62g6nAhPQe@(ljQ(wWA<)&v1+xUtqk|O9_kxju~fBe*o&l<9a?1FmK0Nb(5n5u-u zg5P;SiZJA5o&~WCOPyvXwL42s-cu?Kpvfug%F4$Jz#1(QHCDuj?xy-Iej&>SCGM+0 z$WG73^3Yq8p=>!oaUff_<WaG+Iz2(xqxW&2e0S?88(O*I%vihPUw>~ucN)x+$!zA+ zdhZ0nfFD7dW^N#D>H;eK>`-LN+N!~{&ji1Le=xQWF5U9j56?{JfE(t6NCrq4SKo9+ zW&7%K=PLg^55K*3S<x12pH#N-ebqp`cx!Z)O)fKtjjL*b>2GExW7FW*R<eE4u6Hva zD9C)OtVN(zU_MdW!IT*dN+M(NuUqY=Yzdjj_iVsz4c<m+-DKm`C)>D$t`ME~0G>Im z4w5FzJX0_6v^V+R4Dz6)WePjU#N7Rux&kyR$f~>*Qb-jVkN1Jv(RCe8z8~LPl*MT8 zTjY&jyzl0^5W=vMf<5p9kd!}HB=f}Ywv~3P$7>fLPm~@4uq^o%DQ|B)!xiLiV#yTG z*j75_@K2`r1f;3mt4(^p!@mS%DrEm$H1U^q*y4?s7iXbtj!A377zo1~aZn@`;<<oI zJwyV!!qA#J(NKY)9va>^U^uFI`hAlS=l#--ig+Ugx1nH@-L7*x;>l3U^QPKX-t?yr z9x_(8*Ns9c_cuYz0CW^y=h}&scLV~DNoVP<bYU=hvsTV8vfGJ-N9+4_^h4b#561R9 z9T`VT#c%1nd+d;>svMetM!ifqc*|2hksqX$wRRBD7NY4A3p`S!9r&L^aY&Z=Xklj8 zu_m#1?t_GAHfH3OX{E~{lJr{O46_deV>_RxdC;5b^e^y%9J~`-@EesGf3av85e@lC z9@fzZ5^DWi2X4oU4kl#Gff4^MF<jUQmA?*9+AI(ffAwBXuOR=4T^fscBivHNzh*7r z@}$q}^#d~TLtx^nHni{_w6Z)(g>E<4kFCkkjY77^+A^hULBH>%-#Ox+$>N`1Xp%vQ zh<5y)rava4C+eENcX2T)H370rE19J7J+~h>b()`mnBz*)+SK2>#wZt!M_*Y!VO1V; zloE2s?3tj*FAgY!L2ec3e4@eSUljyTCgY|y24h?^AupO9$>;E4Od^i-rSfcrz?%Z= zH#(mYcg^C&?{#XlA9#MWsDtl<^N6JwkpSlixS)ItS*NOyEe$68t_O?@3D5wqlNrDf zM%=;CX8=|0SVS6NmdpX%??Q;Sq$Z3j&4H|?jw*Q)u>4tt0O3O3F;CrR4L&-LqsC*P zvkjmfLiLwO?CQ0zYT)a^frNGqKS$d?pVCy_2p=)f#C)*j)7V}3ejP|~)ljMBroo_g zKTT!JW+t^L7Apbf1|MMv5@i>;LCghZ(HBi5%%{2dPqYUBD4GAF1y@>~6uD#$2yE)d zquEETV*iuNg%X*j3)w#5_xz+Qpyjr5=foc;v-N3mUuUYYVY;*zK(}FPX5LT?&|HxQ z>Yv~7L^3itKS3c~NLuGv7~eOL!CC=#2b+)2dO8K4e2IV(8xIH5Im8{XSN*_(Oi{&6 z|LifySFW<U0<<}u=X_A#RSP+Xz2ss|1rc8dx$Gx<z}u`A_BdU-gq%Ig#2!1Qu)Q@m z?a#JP(QIITQNT962@;qkhrE?c&rAm3-NuDMnBP?m9Cbgh-$++r)rmiN?Q#j!AZ^Wt z2iK!B6<9^-Pn*Qb(bpZSXERqF$Mth$3k2}5(VvQGsBxyN4n%)7_Qg0il9v|qM!;bK zo~!Yf4}CG?!Xv-Gjdp3j$ldM9YwbHW$m!~@fuQ{zzKI)UNuaA{+a<Vyo>1L8MaOBp zH3P?6)%N|@TM;SfPgBr0lG#3L{lKo$O;}=G$N8=#Re0S~y!^t%9``x^mH_^`Ksjv9 zVcju@Kr;osZ5q(U%udoru3;=FeY>`?1+Z|{Bh=RBW!vBI-S0M_Up0%reVh9jQRM@! zVeOy0hlyb>z#DF)1HzDPfKhdSBJ#bh^K8K1uIAfQ8C+cwYN}?CV=l|Pa2a>T*1Ac1 ziMF5^5J)~Y)dtnxW>PMr;DDkoiUdpwM7;8um4&C$!Jbq%Hu^LCzAitN4MZpjV@ukE zA^=3Mnkfq(m)u6x0Mwz*jDYK$(V8t>O&S3S&-Pcq6I@%r(Yp=l#K9C<zbAQ{L`f0Y zn%ydxb073E^Y?~RIc<*g6aaK#8{8`o(Ak_ZyN8)Hw|Sk0#NU;untQmmzZHq>t1+^X zp{8n)xs3<Ehi`Aj*#CWFxU0q6Rz%|~E)M(B4){%=@xRnF%ODDvKe;`#{A1tPQd9cp z0s28cT47yq;aE8zMT77cYtSE&TX6-vt8C5kz5*K;wL$<QDkRKTn5^AsS4gO<tRT=T zpGdk{=W7TxeSXc(mzS&pxL?is*Brv*`M(YNf1ZXveqv$;0i9O-orizm3}p`x;fUg* z2tL!k7;I}iKU*tq3j`Me`E&J304nk8pp0$-`B{D+shc;EZQ&<#09c_Cc*9{JzMUvS zNJw<bL6z>O{xIQ|lgHT)M<9ir;K$MV3ABd{Vu2co<N9E$W&Oztwr@RmVKN*}69tU5 z`qu4own3f77EUHb&f+RIhk`)aq6Y~-AC_$?Ci4x5jiG!90BBFi=esjvqA>H9#Z;)W zuJ9Fr5XxRUSYc3OBU?b!@05sAQ5QH41+c}$MvPOzR$BoHF7!4d2)IFQHsG4_QP`QO zlV1wq+Z^mtNEmkny7)Pq$Vf}~SfX0V!%s>VD_c9Cs3eJMI)2gpI0(bA0(mIQ1Cf2C zOcr(dL$v{Sp-7w#Y4sOw0DH7UR9^~WGqi9-UcQEy6;3XwsoijSYVPG~wW%Sh?f@_^ z0+^*^o>op5t(Go1V5vi*T_X<1Hl<e7f%_+Om2ezN(3O3?{q6G1Ebk)$@nIawBD0Db zheC}czs4T`@#^|?b6GM0xexD+Yp6E_RGfj($o^8I>~3|V%C@L~kh}kIZIzS=M<D(^ zb(w(dd$9(`QZH&HD9$#OD@rIWKg{7+3WvW9PoEAQjZm_@0)T_%))YX079G$ww1ozo z(|5#Y5ldXNw<u4A4h@g}f=iP5rtZwg|2|Rw`x|c~Nt9VqS1+>vPf&D-69K<GSd$j7 ze1(C@DkdlO#luHybW9Go<%M)inlXSjqjP$+!>;qmiS<F=%Niq4l5)~+y_GpKDwz;> zQ^$(0Z|B(?OM0f<4#5?#bAV;;_e<b>kzq)oW14~E2Wuod$fzX=xt8VzFlc}qeHjFr zmBkm1!xp%KFVUnDPzZEh^6aVL8;590-NcU!VLM`CI*gVg)Oj={kepkr@Ti-X$tenm z_)9zzrDsa+#*hwRZNpi=CNZU0U>1U|jBMa0%)}if=7$o3J|vld*NcH95{bivjaOb3 zZ<ry@qHLR)o7lFH-eu6)pCN%!_#M?D&v+c%ao=*-1euwhF$WhNk-qpavLkt&f4_~? zI{2lJ5s*~e2WSKd9zL-~&4{j><-qbgDb^n$=mZ#<>Ee&7fy(oKxSQwRes-77OY{rL zgpr<uqOQG{Y^Y3-=0qIxQcwfIGCIrS*jr3SH*`p}9xWv~UjTH}(Do5$RIcdI{@^NY zXH%3k1!IkSt~S_gnVDifBKSO-<9i4h!j>Sg$fQvnFt#kfW-T95QL9ucd?aM%h;pR1 zm%CiqFk=1j-RGbfr_i$^U~8Y5Ia^C5d_0GwT#~r_{LmlWsi5$Fgn<ZHm_rdRQ=J!T z1BCz@?w>$h@;KU_W(_kLoqJ?L4;=QQ$`fw$nyBvO`j>_{Ap&8E2QM}6-o4V8B*CEj zETV&=Gvj_BuZ&xe3s;M*&lLn-3CjQrFXPUw8lT`G6Fgme+e13RR~A#HEA?qaZDVlD z4#=`E`SOF5St?;2AAjoQ%lif4Er6R;L1~FTVS0Ga<S0_nW-j7#9iZ8G`1zXJc2UeF zZ`H7+uCMb`KGE|i&yD0idL#JnBj|oIP&gSQvyU^S`FU8H*do`$;hEU5o!y*~RHK#d zq)dYNZ#XpJARuHYbp@qx<Ebj!kkw4o;f2>B8JX>wXYf~I5AK)^-G<OoWE$G?HX~nB zSSS^l-xw_$$E!ePGfH247_lrG0yUXW;t~M&aCIoY`fI_>UB%KgEAh%xZ^7F{vl5o5 z9{L2|Xuc1dr{eRwhVIK)?qagg5T~a31zGQbUbLT=&ifI6o+=6pxHAlo+Q{#=YynFA z%^!K!r3bP(SzUr{sr*e@R>3XyMeG`29_nc%`9@;CQZ7_VrK)&jZV)oyyS4|`B0(^7 z7e5T`Xwq5)gLiv0ff<H~OBozZ)vF@=98oM)Q<oco`nXLhDHpXSzXa_LK+UXSmqVv- z^1;zoA(f~L!=R?}mmc7re+^MFl`cWu#uO@J$@Qbr!wDDa&En*h=!^Bbjb)@uIGA;$ z+0TA!0o)50Qj(2TV_>dESx^`nr326?ki}A&dPx5H-oX7AoOGRVWJ43ux$W8m1w6D& z7V)`_t{W|Vy65O(cMJV621e9H8Lu+PGQ)f%+ycua$tUz-gl`oJB45wpw%f2a2iLgN zzr~W)@-Az>HH<@cWK1JFiBm$^GH7ztujiW66&}jgYPF2J_n{?>TyVsH&un}Ic@2K= z{cztywrt9O5VdGQWHZYV&V^sAY8TZf7rq<uwgK%i6Yg|VCLW7;oISjaPQx=)7qtoI z9}Ewq(w?Fmby(}CR$judtC$jQ@qq7%!7G4laO`3Dp(rfGMYIK}iDDr_L|rD|9|Kte z?n6xuSLp#Z6;7-yzHy7*9ZefVEl)3Bv>=R9W5eD)B6C2K!^0AftZE}MPfSM@Z)vkr zrl!gd%eK9Zq3iH?`$h5XIAKbHeLOE4IIZukitK$P77t<lSv|iqYDHzWNNF3mt81vW z)7+64U&N*oMI^np-}!gfm-{+Q*g(Z_eb*psng%Ow$lf34U8`gvA0-VrMB0mN%a9L7 zSB)Cg9Yf8a>Xfc!p=pTH)w^0e0+2?_=lmt!iMx7)(F=iPRPxHGUGH?4Na|+J#E2u} z4T}-)?7SStNk)CkV%e}7@q*Zr)I(^|_Q3YxM5aX(7i*``#97tyXqLIlZ+VbE<HG;^ z#YPI~v;Cgx_e$hfdT<-!=d7Th%I@g`P~uquyBX*E>TJCACayGfPof2q;C;}H_2$0( zGZ<hb+)w2FvpfC2i-&&w+=oC8l;{bPPviuCzLV$yb^la=H?Rf_fehO1z>4ogA+?|a zH4*F7*4&kt7_Tg3*~D$o15^so&++K&;{K7uaPh{rtRA;NugHH>$`R!OOYGTV`-fj; z`SdR^{c&lQ2*KZ^7_AyWiqUd^akxee*vDF5ven+OEErq4gZfuzvBBr=8x*z8G!*d- zEnE@6a5n?830?TAL7!VAe9z+)XoePk%F=7_9Q^R4=)P<hx$_h?1k1B#Ly5Qyh>Hp= z4Dx!L{7}2BK5dPd*v^Oj=Lz`le!@g6O0934ycYT^axe?OhHM9<xf1}%Wm(c5Zr%hU zKdItZ+hq3L%JzF~gc&k1^j{#maH#fN^k5Z4o4275jx}zw+<f$zH5MFAy5@OrG9w6h zEr;BbL3L3Zz;@u$Z&)hrO!xqJ++Fb*y(x45BvJfT6PJgB;w*isPt@;8c0dL|gu%%E z!V|!Q(iCv|MkJz5*kG`}3u<z`A*8sbS*Ws$JU{lU91&P-=wgn~w92e!XY!FwXQ%!- zwP6SaU<2l~ltdW+{*d`ESLFjKuoNGSx#0eTl=#0Y7yj=9{O<_-|6l}s?&Bk31Awg_ zG*e7G;5QWe2Q-}j%v};i43kU;IRuwcM<hzM)?0Lh1dV6JNdk^$esumm|9n^ehoe}u z;D$Odvt0stt$F0yUEmJ`+~A^#?>ysvAWn4q|LL}4@&P=6PQA<h1e6e6@SxO)$@kox z{@*>O$?*F)a0b<jWsc?o0;~)I(r>2R|K;KGuNT~Zb#VNLG5VLkAbJ7uwJr}L8UM>O z>)-y+qzS?unv(jmeleE*<@f))Z-+#{sk$kGlZ5zx`N99dME>{V|A+AA-;MUau7v;Z zXWxe&9}()X*@wtuS!3_yNi~2!+rv{CffL}7)(L7IF%C@579dWG2guBdC+}e|AYmE* z_%<$O{jpyh;|t(bX&k!WWr%d*cwh&Dj5sL6OIhIjxtx3iXq03`NaTBgUI#O|fI~2a z+2IAiuv8%WA4DQ%RDIV0v1q1i9Ag|uG^FD-o+aInP&Ayi0VyLF@ZfuIHCb){+;sT; z<Hw`@_LjIVfaS0RDAE<Sb3l=f^+SH?LrW<R2@AlVdp*CgB>Oe|Dn`OQ@of*kB55Fz z#NT(d2`1vvtXD%Vz}4+Q0*bNX{jnzg5VLRfdwzDdaFKOypOd?88f%Xw_B(A>iPWo2 zy{l+I@n~Mrerq4u%ilz)?LHe6>KvOWV#RU<$jV(HL4LfqwX5I^=rGp(u7fNWw^wR* zs#hsaz&~XQX8uzQ^cosBJ~YsfW*e8?Qb)9Dd#GqFUx6B?ODAJa2apX@<FdePX?sPC zXQYy~6y_;X4LTRmBuQJRz_hT)vQ-<Ee0@ybE_wwD%Zdwk!F;6wrZnFk8O|Rk^$?EF z!_xs1Gb;Meq1WU#M71k^Oqh28=OY&2d}K1D<+l|<a`&MEC|e})SiaWJMD+^BJ3R#@ zV@0U>o|wlXQU1|gb-LGlbD)AM$5y=*{r)KeJ!BpQjrtZGfbpc@qM-Ioc$jF?Dt#M@ zNI?NH*NG;Hi~fP41k43;{c{CAFRE?t=h@ABT_<)AT~Pmar1%8VK+#}l+T|g`*&4*7 zhy$S~^Vb5+i914Rqj&HVYHF+aMJD%L>rQ%_Vm}yxmG?0j5UqH2P5}x8>pTJ(zs7cH zG9R1*;)p?}@144Moq$>bLDKlBtE*9*l@)Wo7!zbiz`gUieJ8lx3iy(rQhfaJcCH?P zxte-H4r@x21fK{a{yHl~C2p9gP|pF7kolMtke-A9iW0Kk(umF84GAH&9LS(HoNWsN z95@2vOv&W*kPHGQ8aotYi{2cqaom*j%D`EWjSRtK=)60sZ8+(2j7KjA`@uD=I8+Oq zzV;?NX0I-tt3l-rBmCfx147gTcUO-UGGp3b2xTV-6QY+q{jtSN>Avd|(lSt)x#M?? zE$$|_n+!^NSZ1sQwvu|6paP!sn7akR16NY=Sb(q)d^*4b3hKB{sIA1!`rUH@ICaMY z)PHIpq$k^4oJK0IcO98^Cs-QJ_e(*h{Gc!OUQF$9OGyyLiw=4$58)BXEE3Ke%YzMo z1=Lw(ySV=p8DSfElJ18OFGfIIH2>PYD)x%8ry$Q^Z#n@uB$MZa=MKos_CcQW1xWtT z7QZHUG$G_*D||efd{CyAbmu>Cx0lf%OVCoFtv|*`rgp@+lR9GT8pwY1Dwan9%R|TB zT^IG^iyqJrsKd6^b21*@x9Js|zQToiApLUxh)UPb;AX9J@?G<INK}?fzww&bn;*bZ zq7(4L=!@;1bbkjNvK1<~!!-l@NSzu7#+AFrd%zP}n?vNKt0j?>Shc(zXq+g{uU>i0 zb9D^Z!{ZO{sO$9fSsPL~0z<=S;JnEBRd6K#;<lRUXZIsuOJqPf16<znN<lKpa4V$! zuN*Di0BtQnOn$}lbe#ce5D@f0TN}~y@)*lfI9F{-{feO9x>pN!+%(9_qKF8#GmxI< zu#=^rqcCIN@t4*?86ONiz6FdVTmq}Y0`>q|^%K}GjC;bMyy`@WBKb3b>vuqQ7ZGsX zH_AagZsE~u2y~$IJkI#;2BpfMz!W9F+}%Haf30sFS=sMLsM!U}PAbH9_-gzu#WU}< zGuhs-%!hY=6OGPl%)tr;NP_s1HDIK8*tZ5snjjWzPCOo~qFGWq7?U}m<FE}d<k`k0 zvpdIj>+LRb47V`$U4hd;K@aj{V&;^&ZrL~JYAK$Liw-IyZAYgWiZdrB#L{m573*7- zvrY^t4$-R0cD+R}VIN+}EV^26yH2>!xib8HzxN|U*11!OnopW-fzg@vhE|rx&&d}M z53@0_chf~JebF0{ub~Sj|KjK5*P2_f*>lJ^BJRjL5^LrV>?eEfZaG}%2`a@}o#gIr zuqbXqslKEZ;PtB)mvT`^Saqz44p3D#7_=n$MzkH|s)CPP^BG%^g)=<3NR!v$K|9zD z-)4aITn=TKpiVPiUqhkq;-Q2~j@pSzJFlb&di-hBrykVzxq~UduP$%#Gsa&uekxW3 zcQIwWZ9p*YBQ29cee2@$zH3G8rXnVpBbtAv0kt+}%j?0s>p3mQ0id7S1CGs7(sJYa zQ6{{Y(LU`6VlDdwQrmz7k+AG&?Eo_Ut|b*mPNS=DUkYK<h+O3z!jZde@RV_)5^7!d zeS%Tv+CH#qxR7_NN`;0|&SJRcb357T-NNNGHaF$X0W6A!hl3Hed7jECPui4moTeQ| z=k`orUV9FB<+7xbwZKgEwfx*^mHz%+&7HSrm$Yf)AD{oM7Tw!zM6xQZUg5fe-yC^w zzU`{{VTzdj?=v-s{7x=uVK++8p}P*yo8#+qJI2fUcH@L-@vDt{$P15F9j{p`0A+oI zJi6a=1w(k#MJA_mk8d;oqn%{~8`3xZS9D+S-L78Zl$$Rj8I`vsj0Q=a-GN<yi|wfW zB#v>nNDVQiurQjJ7r(A>$g{)qCS?QgMo%ITaX)^EQx7$A{d%Qyq7A)*?}E6ZL`)gr z3Fs)+M7ym4n5|Uz0B8HBa%X~=944w>>s)}Ls(^bK0eQ>mML*CEw9SrFW2zzqT=S%} z+Mg^;ZcHC)iNKp+3iJS>HqDo`tzh@W^FabO(=O>kBgF59^Xe3K_(HkVL9bX=@Rzap zIbFa|sVzHmZzLF@FdwIm07^&KNbRZXS><8s@~76-%LJo<WvQ*p4z9^<fDjife=Fd# zN_6?Y`~#3~*^1|MLV(Qx<_J0p7KzdPyhOaF6NpC4lLQxkcOpT^r&97Y;co|q_6@D} zFtvrek!;t%q7~x2iDT}7s~4WSs6{LBl*6$;W`i@yX<Ns&mv7+3{5?%An@xT=!iics z2=+DEYN7`_dLCDEl`avQ%nAuyY-{cALe%-8p8!~N>$Kg>7MRS0yRn}M8i~AoGynEU zzEco)BNvsL&D+1=JD)Zhr8}Sp&aTaS4bYLf@kTtoS1UO-&jH3Azg!APEE;?q_*+F` zR)UTjk9b}M{^(B>Zv=O7wKr0LH&)7L%%8nCBx#VPwr2m#+bh}9Yc^oR)13x97Hx2s z?6^r6auY(?K3%8J16G~%kWO9=6j#*&rY^O$&R2uD*K_aVifls>gaD=8UXSc;ayd7( z{@wNVC&wUGEQL6R)1d5S*|jqA;*y~2=y(qht(qsIA=|it=;wFEMg8xY4$=joY570t zD&$`^Wwn1k_1A*(Mvg|ClPCpNr2>2WB4Nu{+<m*lLbSJXGAqJI4h{q!@Km1XzH@jK z^JC@QqJ8!I3NI>N0V+g4(gt9j{g$w#Pj<4`6^X|aP4fd+!0GDFW}xV!qo!IJSzzuz z-c%4+&r;z-?+w_NzQ6*gd$0EE5zs*K`f7Kw{f*Y|o#u1OpkyyDiuu5xt^;Q*a}rO1 zFN4muR;c9$%*8dhh&6Nc)FaWr%1jyv*{xpN`Pq@w6Cnyd981&sS?d}>7egb{6O*69 zvr~N-2)67j*U!P4t_Gn=C6T%J1LwMW^(s)v1p|1t{}mXRm=5BEBHvzZjW-c<&6VZ_ z)AwN#2^CxJm1jBlrG&Lpc3u4Hup-A%?SrzB>N}o)ukr*SgZUQ@T6Mj0CzuAo{>P2g zNVBy0ui#902Zn8E^FZJ>Py2apnM0P0o4rTH;=zl9H+~@_NWryx)VC(w)W0+H&OVZZ zjTPxNm=w#`T!H)d)(^u6hS6|%ln!WRxKY%Ex;k9df05h3yMoBs7r?E5OVFK4PWmr2 zBMgW+S!Mb~(mU74WvtohL)ENcPhx7bP7<2dS{F!fFtcm*AuzW)2tT6)R;8uD&YGCZ zWmlgc=rd$HZjM|&vicw{I#6V6*AU|b-2?!Nc=d`>WajcPJL_j)1TI$1+D9gd4jMC@ z+V&7>t|N+8in2yhUZjiZLq3h*w_?8wU0{H`f4+!1SkcYZb(8D}6`q4jdp{UESSo;I z@U1isq-4FOuj7EGzr$)h2?XW_vN89=^Q1(fpzk1j?+=2fs0SY3R@qm{R`2T}N}=AF z@g4i&IF!QL*h0IFwT8zTUAE|_jcNs&_(0$N{dy?GpBgCQhbnxrV8`^L8fcZPGXq1^ zvaO@_uhJvxhGDe_$5HP@?o*1G4dwb4+lT`F1K?&N$>1u*;F6!FhL8!msUCx{gk70a ztI2UVt8#9E3)KM)gH(&o^=pylK^rHaipAFg+guslZ2Q&T(&c!qm!4a!HAAIqDtJ%} zsRp2uSZe!l^#c-Hi@B|mNLHlacGc%LAtqp5M9@Y^6zYT3_ROq6Sq(TOHmPp{srrv@ zQb<EGto)b9i}pcIGp^4EicIe;w*q@zLt`pJ6C+gD?5CV3fStucNt?6p1o(+=>!5{a zreqCA8!~0oI+4^+GQS2y3Q9nTl9nJs<n}nmb7?e|Q8lx&Yl|J!UwLMF$b+}C7|*aY z?mr#qx;O{b{DNs^gCdL4FZ9)mp3-`$_~dV&=I66B*NsjQ^dXrM4;`;!U)HNy)(1V? z2SKD-Y)-}w>1w*HkVdr^=(PJ*jkuNSiD_)vWOmgz<Ju^zs(K+p6^#B+I`RqfO=LzU z-`q#0gObSWgA}5oS!fSXakGL41$}q>{S)4+AZI<vV|tm+&8TuyX^(vk<3MD#);iw8 z>6x<=uiMUyo7ai^cFOp4lH9&LJwNzQ!`-$L^Z^UB3E4gnX>VB9M*d|p4s5XXE$~EV zyNN1UsO$kf{KV?w`zZTa_4+5P_TB05s7Q^kO3vLWZux2NXfK3D+BRR!eqxLO=>N<# zD5jWJT&&jA#E3<V-_<S3`O3&Dd1g1(zL_PsI_63fHaalPxdYDEzLSMn5Ev#CpPn4N z_cFM=dy!HtHF=-+qGq+PZtY|9=YGZ4&Xc<(>n4HTy%nFVPqzyyXZ8i;Ca2%6y9p<% z5<@3Yg}dH&sY1^(7SF@d7zV{3A{nDK;FRuS`|3<Xh4||gnb7z^opi+YzIxQtn4Xz? zTvpMnIr3ilHYHzH2iL|l`{}Dgo$EGrJheE5US=H~RHsObE^y2j7k}Alrmx3%!^hUm zQKY|2x9VOA(mDeAGJJZY_;-Hnd!A4IOdCi7Si@#ddYuW#o+lX-G@O3My!-I$vq0}` z+X*_m5>VE=3CImkIKfFk$TPpQ*mO1zSbf@KMs~Kq1f6h+A8Uey?^b3X^sF4hXpg?L z8fzh0g9tPG0`8&zcrBZqYq6#obKYY%`NtQF=|<~wNb*KLVk<}Fa(c&e^{fl-?B3Ev z#B8)@)%bG2G$&=`Xn-t=dUuReoc#prXyl&LqJg)iag@Zuxxala^Td)22oPmmG-%`R zJp<=dGXdAlcScO|BOqs7T&7r}-M+Kf)ck6$w$=cH<D6gXJ`m$=Z3Rtdiw%lh(S02P z)c44)4s%5CFX97;{qMFCw|h<5wx66ATf*#=&b8dFFm69Q2qSwQV{qN>hPGu?$g2MR zyn0=#qa*_hgHQ&N{l}Fj&p&MPvF@D!IdS#Zg`OLi=^GDB#jkc`g&2ybm4-VHtnMM+ zV4aey*6J*rwCn51vPxR<w9-a-6=2~Ly^6#zGY+~x2Puh3ITZB2HM`JXelSB?sB&cc zJ>Sqs{(#Mig_Mvj61I&PFP4Mzq)@G`hWxX$;Qg0)16zroX7`NGzX_}wTGlG0)-Xos zoi7l2Y$~AKeKzWHv2~KAAduqZ=n5^`dw(oiMZS6eW&&H@i8Bx^6zM$PZ3s9SEsN+_ z#x17wP<!BBNr3<iV8`jPZD%Yp9D*wrIiHJY{@}3h9K6lEQe-)AGj4pU@Ynt-y+Kq{ z;KPYbr*A=sVKtu|QpiOsgn~tc{u-4;#9*?3I=z5|vHpCSo!8PaDC3$qRZMpUO-l|c z!kdsOfYMYPgBJa16(U8UJxPPqtJ*iKk<Y@3ZgPqB@nFeSv^NACa7i>m7f~_3$8{7u z?V$Oz0;~PDaL8kVmf{s=5|NxACW0!>DGM}ai!q|)5~8Py2j^<~EH_S5ZKh1#hSiEG z5~t{%(Zu!xcx)f<#ytOg@E&=?9^{OBmtxY|%Yu0h<G^1ly#u`uUHWtm@DH=Oue1#* z&^-iR^jOp4-BqkfQZJ6%z5epFl$E_(wM36f^io`Rk#;}I729h3zTYv&DMqKn5<2}8 z(2zK=0D7|a0;Q-aHn8qH#u5fP&!5>yM&WnbgI1f}$+;g|1QvuIpvksEDD?SjR1?MV zT5N(2MWSy3Wi9OhH2IXx?SccH^48agDwM}T>tk*A^O<xEOiBqdBF%u)am!0fV<&?d zUfIgE383nrIXG-RO({ukDr1zOclZ>R_;JeqPM+4g>NL{gk3IN{k-NQI!W=kD*Dd1< z=8jNeGq&Hg1N~G6$+vG|!QQ`LjeIovx?LB?#vtus>Yj8pWWnq5>j+!nuQx3G^mDbL zqpcZtPwyOa34PkO%?}&>@`QJJ4-`F*3IxCKJ7Fwm?!EYEh&i*!l%k+NvT0lP*D=|! z8^F$8{=Mu;N;4G}!rAcifHG%un29d-8$N%}h}M{j81diBteDigwuCXIo0a)*kCu*x z36@dy3pUWe)vU$0V7mfvO3Q`jYq&^ah1K9TzObGqL9_ympYjx;>Xxl@)X0<A>746r z_8ghT1=yc~@IDhWCeC1p%Vc~ZN5YtAbZ>>J$qR)J!uBC}q<aClt^+J>r{;=5c^tn& zC*6yJLVZ{N=0YO4E->s*W@71y5qakOQ6bZ7qDtiVm<X24r-(>!q4q(_)<7eonBB7w zhE(<RMplfAL#f+`y5NdOjBv~-LYJPrKXlc$b30w4V}LT|**;k+J|*Y3W+XD*j|)5e zv*3ogc<SeQHWQhk&~8Of5FC0PMr84B{k{T~-t5J;bKR@M@*<CdWfG$p&>B$5C^HnK zuhc?weF=RGSN+S`$Fz%l>W})c4(Hee%c7|pBB2DwVIq_9Rk(^G#$p1I=DQ;aEBr)= zc33_kS%)OT3B-s`wTaq8RzFi6M9qLqF^7?jz#jhMOM~UzZ*`T~rp$McyOodZM{(2k zgfG8yl{7Be#k*P2J9cp&*?XOI>Ai?Zv(+hO^~Ru=L?db~1T;u_#{~1F?mBRpykxK_ ziT3@yoWQzjJf`t}ZbjhCIU`Zj{amQIoy(AK7SQMfp4Crsy0aV7wQ1LdSD%sVIU&P! zIKa(IS2wxe(R62ZEKJCx*3(@1Ne)txXEVpEQ5mn^k^@PiqJ!RSj9Ne4bR7?(ENXph z4+7I7b6AJaH;^z+mwEFaI<B1+)@;0Yy8YU-YdV5Q>e7ockraD<F?dE<?5_h0MPA<o z3*n2)w>>t3*u>n3&p;1kp)yNi0JnmEvkkrrncL&0CaD{8kRk46sE2%QQmZpqNZeE( z_sMwbj`cDTGDwzOWY}y*k2x0TRh1B}*hNph_PHGRO>5AyDeQU^c`j;HC53}?$&f^V z5CIqNvnQM035P3Mx<oeHTTJBW!;eyS+;dz2`pMk1v=$2GHuv@LPg!0eeU1DeLO%mh zB$kteNRdt<jpU>8yr3DV=f*nYjon7Yj{L#n@70qb*B4IOc<TqEi$I!K1Enb!56uWL z^oL}sQAg&hK$>|sdLLrje{mxkT}0!+zI{W(yYYeuF|g4|nY!0T+qM<|b02HFZWoQD ze}=A$0^hqp@5gp}X0TwnwomYd`QYe#*q|rh?CZ`D>Z^S5HJ&Sr&-fw{2M%4^$&MmV z$k9%=R>wA55c|3{wyTqd7*+Qp52}ey-+jOB!nv%0j9K4RXy7Qk6Z|iW!e+0P(2Z7< zU?L!3agV^i#G)hf=>2tX#<&{8V;enQ!z@on%!_b#iPwVU?HevB?vAPy{4OgbpG<2n zUwTDst~m${&k8i)bh)IIt&j;u9PJ6%XV^~m77{o%r(+`6Z+x5}Ml79sLp~7Bw-Ag- zz64N@@fHMnzEFd3o^IUHd9GYfZqFZjSEr-z%1YBo?}h#C`7om!l}HgwRWdDTNQ-z& z2Ab*LSS(y;q;C+<eGPv$D1v2yN{G>yyaR~&>&C1UVK!a$vz}*n3n%scurwD=hH``- z7mMG*283tTE=Qp|cabqCaobJZ0A{tAOM-Ve{~G8tWUo8_>v6Jo9K=v1fpf1cy&<&n zp46Uq)Lb(L`?tEOHk4h2N8$Ck+jQcEmx*P-{=6sKV+)*qTUbxkZC@qKfTdrTUNi%G zPtGfF`S(f390h)Gl@x;xjq;^UL&`Jt(CE#Wv~!~_N0)t!`Ffy0=z=5}*m#GEY)qFM zI}3C-?_y@Wk-5ITUe3~d@N}nLY(@qPA@9?C<#8ejVyTYWx!@}3f6{e{6?vx>x{KYq zbHDNg_>POr?spHtIi64VJ(hl*et4Xb77~!Woccy4h3mRT?<!aIn~~{aOUK(38+I>x zz!gT|Iimd67L?Ra#)VBvfTpDCs5`Y~z?|)n)sEUwxJ|%Oe45ie_`@4cl?KCY&-MiB zo|JGy$6AGY5ZRCk*@sPY>w0}sa~fQ)^)TLf{+Uac0hPbKchRFZHT+EDn<fKhC!8Zk z_(KXcRp|JD!JURK-!=6kpP5C_u+5bEVuNwVpcFg8rYHS$04^epiMM!YcL@@t_Jp;+ zWelZwL}n7AuTB6QeL+BtCWcl-gzPUkb?@VQTq$XoBNl=NtHwJr8HSNyXHd?ul)*?v zLL)ls;rNWn+OS9<hy}Q=Pr4kJ7<rKCgfS^p5%!!L&QhEYB0hLsg3{23cjjaJoY-8* zuT1}V(>8V=Ch&I4dzU{z3P%9&c6T360Teykt7iYk{ExjG_|_#&s)hBrz0e}yi?xa4 zdV`-uogNGh@aN|hrTM+xakFr*9K*tp>o;3Wj~56V#vZlB^5U^k7pKz{A|)?s5M38W z@dJ%I1-zbbwNr~(r55AfPs=gw*6McBWW^X3%3SZPv}onnkt9?1h<IXFAxK{ot4dbW z<Hc~xVY^1}o#;+>c#G@ycX!Y%XLo1)(L0|fy{qwG4%a2E#^cu<8Lo@JcDxDBx!*4$ zQsjQzkNpuPLRzPRjftt(ZPr~P`apxGUQFeIjpB>^JAn~9d4l&lIajuw-HCHPO`oWf z7sce%EH{;dy-xJeyjH=qmRw-nVWz(H=%WE~QH)=*;p(2SuA(#IgH@ytW-U};t8f0? z>Tj`Lbd}bJ6*vvJI+LP|N3@wTzWGoOGVn!Nhrb2V<7k-W)Kt|4`>DL3LF+W`Ce)`# zcsVx0%A<Q5uMmDiHNu<dMm$;sfVkZ;EGmX%i*5<0hNg#5OPvY^5}W24!j8Xv?2B)c zt`|8Sh~T+YS(NafhnW9+9i=j#!3kcz_etT8w6hHrOljlL0nx+PkOIrlB3s~hAa>%3 z^x)5Fq^p0JbOBi80kWFm)%%k-Y+DKalGTs*6B?#yVp;;dhx~wy%%^3NC8Ao+w;g%_ zE<vw2ejvdcgFZDWtI^We&6y|a4iy1>cvl~($=0#bjzZl{o+W7e<Xpyo&D|59nY{lz zcM7k$^Rl<0D&M^FB~<^d(Ee;x^tXc$+}^as03&%Z9wD_>qL7>nz^1zF7siKeP*qZz z$gyqLmd>&L0e{;RII9;ODg`M&EIRH#suZf?LG2?mbP5|~46FPsNm3NE`NzybrMWk4 z7qwoF&40~ZdUa<<3b}Qz#B`w8kGHm(Yj0I`mH@B*re3D~U(2aOL4OSk0qn-_Pr=<` zjT@_^oeV15twF+v)FOFZ1kSd(<}h_*ljF~nmmJ}}X&<p{n2I?wx<$)7t9C&1hG|I7 z#>5yc)qRrnkH>PJPjp?EI~#`8wB!T5SzEpbKrzcJFGR4hshcXQz}0JDD&kk-nkd;Z zOgNkb{-g|wE>w92w5k^8qvH(=&nqOg_gYO9SR%8aE>63<tX%EfU*#5;!+|3}HX|z7 zSvH33#<(IJ?OBL>21DxfTG<o`i_a5MoZnn2JY1V{6v;uXW4W4kXOL(dDX8tLy)%-u zWDt5(c4<{Ma9_SPN&#l$@k0J9*6E*#Ka>d4qd^5REbCQBjzzD(J+pq-89?x7)AlMS zQGIK1f&l`C$9&;6hFN4k&raK#$&`rUJptGES`^xE{GNw%ernr{ZJW&KCEDBi;3h~K zzbBB_m)E|Q<%d>gCu~pGzPU~?@y%VCVTlXbXq4EAiFRq^dHEgW^U2vuwexjFFD9E< zm66JlPZIzi(M1htc-DVmk{k&VG+=;!w_bAfZ$L##V?QZk^dh*33LaIt0pxcl>{^1B z6~FZm{A->$%mq|i;@ZNR>9F!5$&q^*EV^nT`5*37fZ<Yyy&E*)-~npC8y{pB&zf*N zm5NWZHzHWE4g2oy1DQKLJt#S7tfK1=qo%s{{-!9=#K+8-$PeuA?}UKx=?7Y+*W*r$ z({Jx1nHwJO<;+I>XhEF3fS3Z;Q>pyqRGpGR_r6eH<fRooepOCFDXecH(NM+5<-Jik z23wVPnt71b!K@5g%BStsN6$tBRcz;r<ye-U4d%%qg(vq(t=ECp9iF-mAXjs1QX4_O zxd*AqeciFZZ#VkzANLTAcaz?(Q?J$Cj(~Ma!?V&oa*8=hu<I&BH(t#z!ZyOA>|Q}3 zaND|-v#?tG=2D)OtBoagDu3HIk|I?SYgA&yn#@rt2XMi8f{c-;e5>rjQ9O>q1(app z+q*525X65@jMPdS{sM>l3DiymUb1g3t^k<J_hdl80Gge^(&`OBcA)#$*-7L;Hge-Z zo_JJ@k)~lA6Ua6Ha`S6}4=9a(8Fb+kmisJx_D%K07O1lyAx8L9-`m>*_oU+6JY!hL zNPw--{CO~KxJgLSG$9wVg|u`-$j^YEy1#&WE`U&1eWI^_cFJWjj6&|u125Kuz4M#) z36|-a1KC!{^}!&_&*-|b-H-94hR}qtgZg{25RVR32<A1&?B$r?iugMq9*X_@RB#J_ zz{*|_Cq`U3fWe-=Dg(kVarY;~_T4~Dloe`UeF}OD*x!L$zRemyqxPJx`%4R;fjaj# zxd-dt0Tneg2&dNFHngw<f!UMG9<DAHtP_s4c>ZmmH)#1$_c<n|w373ySi_&`u7dNY zgZF#1=fH&LDt6|z8_Ng?J^hDSaSD5y?zAV?y{v58EZoEPT9?(!>?jR@E~|{>9R&t* zxoe3BNiF;;i;kG{3qRc3h@WF>n7MTuz&gYw2*^CQ?b8nWIt%(Xj9?uS8bh@J+2P@Y z3H3+iLwQxW%KLQ88p^P=u0m((uz45I!O`}wQ3_t5cmCnn|6%W~qoQite{l&383{oc zT0rR-Lg`MWRRp931eB0w=nff5TBM{*N+e{YOF$aw92$wC8R~b>^Stl-Jl{Cy_dVyo zv(~#7x@OIineE>9zV~%~>H;9j<Ir27g=GHQA(xqi26RTq<AWsIg5)oev;!-oL`?Z8 zFhv^`XMip9jQS-Ahj}L0O7)=Pw1?Wn?%kK$+x6%BC51nb@x>scL^7s$!-f{OvNexc z8H=4xlCS(C-$n@c*sgwAdA`yWtlD7gr<-{<)cDMqv(GeXtY(LPpl{WnV5N|OK)S4f z8v4m!+27*h3f8?_4YsRj@U2B@&py0=yw(PcQ!_gG?!xacg@D52X)3tqj&!Ko!tcvh zK7JB)YrfrGYU|ELW>R0xy1%2fhw2RnerQTm*rbL;vYp(klNv-+7ObSu$i7S&#aN&P z9)6Sl{Z!KfG=^3bvQM!}8IsE1y8kLdu+6#|e*EtCnke81sIeI$Xn_1bJWu|ShX^qc z*#W*`{owbY6mcs4|1CupC|=mZ@$(l{o+16g7mMuSR4lJ-1M|?&Djw}tLsG?tufHC5 z$(}qnJ9!;&&(ZG@fT5TW({$2mee12Nkn7rj(7JNv;$&ZKFV7iwr3fYB(sQT%%3m8M zObu7jhR9$My@|C<O#>9Rl1RgAm4`$xJW#kBrr5RUHK2A`5W+nGvm3}yS-%5Xi~!nT z|MU@sP?X4!ApQcAv0>3F>zT%M>Scm%knN&1xFv+o%T}<3tx3#JDZqs!C%bRQ+`J4T z6@h-APu1+9=QS490ET;&`qmz?r{N-Q60u7yxGDi1e4wH5U`ubjv27!JVi*kx4&r>t zqcE1=bcN?rUnGY#=oS>Dcrj}0&$x?NA__*f#e101$;kpcw_Xl?%bhqK5v1!fJnUjW z@t(S0#Gm+K-GBe1S#k=A^#kkQbn~76>=zSGYC!Gp*7)`YwcuQ1qQ@z)K661iq=8`Q zoJ_H?9-xL_*>Q27Gh)}`KY!XtagfI>+FztCIZ$M6Z>)_th3a@FTG@5pNrsb+cnYg< z(<i#;ZD9+`fyq@d?5_GT0}CvSjDG&)Xp58)iwgveLs8G4-6IBU-hFRvEL6X0<(etV zQ72hisa{ahk1r0{oXwF1*#4mJMG1Higph7ydx(vhYHB|Yk_R7~z=cGA5yX%j&x(Pz z%zY@T^>F=fO@ucKOe8$e-ZGGU@3WKNM-gTXY9aJ>5{*F(VNEoM?MOC_D>L?W5VP4% z3kSvlWNQZVl{gXKgD=?*QNkW`NWh*~fjbnks<aH|CeFApu3Gxci7|MLTJVkJzB^tL zt*13x>O~&~d6G*7oq~qU>9h`b_9|O~Y!om5Q91>omCXSp_S|l3)kx=35l%=+oZoND zf)Suc*aYtWmFP}(iaIPZCmlgngRz|daQ~?#?;!s|hg0nlYGyzWDgS8hC@$cXt**j3 zOI_R>Y_rEZ?SW*MA2W=W&jT)#e|k6TP-Km$Q-<1*yp#R9%;_AN=-UQ0r<mKnwzCM1 z%SXzIDCWxqo;HgM=`(z&WD^IGZ1Y_&Lr5jw-Qu5D)I9}~wc93LgpiUn^X5_RP{&=f z!q8~|X)3s#r+wL6{=lY5{2Q$}JWrGM<)>b4{2##PgTe*AWmjwqN|TKlDncI89QB9i z{nl=$-AG##{i|ps4=U5VB;fD0tH^|<<0PLF7?x>d|2*@0@Zr^u_1HN@+;6mO`;vb& zApd!tXrlJ3o-e9-;WK~|sisHVgJ}!p?&ivj>5F*nW(1h`iHYQ*`A?rV3Iq%Qio&z$ zb@F_z6DXDXz1WTLBjO)q4?F5d4Mp?q=C1teP{gz|thsdYEqf9WuR_`r)>NB!#oj(Z z45qD#pq~F7?5`n$fQn`_pCUZP)O)oPX)#MpqG4}F!(K3$@nVa?jJ}5g*IAH}P-^uv z@Vse`pax`OGoFvSu(UKggIF-`G+r_sCx+GApT0>Qj9NC|YP~8tIa?(hiy~fz61Cwt zF=>2?m}y4)ZTV!+?5qR-F_%G&JE;Dtp%1rz1J>kAZcAgIC3sNT*93h0T=|kY@6Rec z$XPB&qhGzg43M=I3s^ri*VOrSYgrz3RG*WXlJTByE*VL?w(mS8+VT_*kcy6C;6+cd z+4&8q&Ai1LG!1|z+DA6u41Ww#_4Wm9*FC2xpeQujv?zG~toty%*SB!-+vt%H6t}#9 z>ZA8yL#QtDdoKW&XR7lx<hu^?fg9+N^V<6&?=d`DzWn!KWsxaO-#gCPQ~K46M{uPV zBo!hT={6f91xTSMetUV$4mBxZtlP(}0{(L`Ftoqgw<ynVtA)E0>=9nyeqMmsxv?Fj zTjSlHZ`mJXLr)J}kpRMcyu;Lajf{Rnp$ALVXr;fZdeggj)<j}H+g@7>l$|sc%ZSU{ zSNwr;mm0J|@12&LsJAwt>;G}pDVu`@vJ2n`r}pWD@x@@}L-}w-Tt`X-gNxegXZQB) zxh2OowX;8<&u|e>iC9pgAFmZkxomge_80`5&Ev7VMY{*d-?OiRLW5y}K~g&ujRC0S z<WO-Q%?efL_+?BeNTqwX^Qh95V>8Zofh}ga-?QaRTg#7HGO6Y4p>I#{qDU!cbvGN= zVeYbJzb~E22T)1)?EK&mU5xh7|Bqnk&{dptTWfP^AUpE5h`jq5I1OsOfSA{)QdDjm zAw604*@O<}Ukem`(V%Dge7E{#n98Gvg2zyLj71BUM!d5rpA&O+w{ACcO9Xz^s({|~ z$-JB|NK4dbi{0)99=D%lPk|X$vi>olwdN6@jL=+cRh`#-ERNyt1P<dk!C8RNt?D~n zlMUuuZTGtqRG|TIp&{uzZDBxUw}s08$F^#YxON0Yz-w1aNAGd$QJ^Wb9ldNVlSP^E z>d-MxR9+urO6GhMHScg`0ru+tmG1}2O5yTG+Xm#alqGebPj^-~%g&Q+%P<}Opi>tB zYDM*3+PdEy^(?U-s!3L&(_WSZXu3DB{16lFk4b#wa!;cSSqTeBC?hFD8qLk25S-(4 zJmw?0pk*ZZx6K?GdS5{bs&|kxb3I#z3D^Z<crDyo4p*5?qY{?mbwO{96W~{GEr0V9 zzgD(#7TP?>SZu`D^){_q>&TOqDj?yc0@CRKwzE`Ym%H!n!+67Z!*g#KU1PC9Gaw(K z>?A@Rcj6LQ?IH(T#JlnG$em)pX*1NUsj2A;sIHMa^c2aSt)?Iesm+c%^^sDhi~aoi zHOo)$S82G)dJbxeI#~RG1|7U9yR^l;CH8R-&hd^Arjk(n9~#O^;v7mFo;D!;u4AEm zVn81Epwp!T%A5}Cm|aak)4O;Yv?w!7#m?0fWe8pyIh0uH5v*G{-e@vlE=jEVwwMrY zQ(Q)GH{$hu+tn!3O`>$|He}E%QwqCclh6_p#W`Q{OxmGU+&OsGjpo1m1vW|g!UPYa zL}e;VtvRkso%b)7azZl|rLv>ycsGR=Xb*&|Udmh(_+&lJp!hg_Yw>kX?LrMNX`yV? zAWiXdWbvEJiN>O@&TJo3Tkt#?Xwf1=hWx#Pvc=7NM%2-H9bYxH&%i+OedEIQ#M<{d zElRg>2U(+e=fkR?<O<w82HV$~^WAy(T9={9fWMZKi7ma1OSv%_XQO~Ta+X%$pP(oK z#oX0iZw;a^3Q^A=1f^D(#|P2-6h~+On2m`tXaC)axLiZsn6yDh{!Q`5g+35!2m(y$ zPAg6OPx0bn-Ju&p*AAvU&16~9Oxu^=7ryRXzQC-Pkj3@?iGi9!u7OE^crU@0Qd0h% z%<s~)g&|9n#h}m3$+Sv<5GWC@8#&e#h>}}P{P@uK+^mIL9WzlKM`ky#cA;$+0AglE znWmfqPFpCokNAYU5G7vhGnOk~LCJk5D?MxP^^8bXd9T-u5pW&&!dvdurjabmKawwQ zv;_y*vs-@2&&!)H+XCK1%;DAB+#zp0a$`n^iSx%3MY&GG^ko$DMRh8ilM)gg86x2V z!X)lE6g9GvQt4aw%1t+NQlN?%tZ@`O^SYZa^>S<^t%7>h(A=1=C~8Jcw$0W{moz9U z6X>Oj8+fdJ{k(g8niuGfV-%-Ov3>9KjgOzs2^CcaC=}}5Wjz^*SJw{I>fr6RuH(bb zR!`R0j3%>yu#+$Dhwf&_WJh1kbjCMpiOBL%kc2q#Yoy|QCml_`0gB#U>RF7!Up1kU zxh?Uhih+AE%6syg&5>j^8Lj?yUH~jQYZ69^>BYoEMU-8MP8zic?CXMNoq)c(I;F2G zO>*RDC*Xn3d4LpR<cDGAPDA=7%d!s`T~*I(oJ-K!Ff3pqdQ|gyJFC6jpontR(}$rD zEn%JI`nwy~hPu^#pmD*M9do-$EpEg)9IFTyal_|*wkWNE=iLOmpj(ncNnG#g4=5W= z5jS+>e32i=HMp8DX}sO-zh`JKsbLh#FFd>+w&$!=-+0?N8f{Co-~;@!j-`=Xb6~9l zwwfDk+*enxs4m6RfVM{k^WtUR-|k>GdGjkwPjLI+g#zouOnTp=V|&W+DbTp1?Dg)U z=q6+u(u-tln2z5#giIV|QM%sUh?T+EBIq;fN-%P#cjQ+zBKJ~XFrz0rS!_O<zM=gk zzN@j)UEPzOko9F_?hWl_j7`Rk-_`ZJqulg1Djw&($Q>~wzf}$Ne79GBdd_eACqwO) zlzp+X{=zK3(sA;I=f=mZ{Mj^HoIV=Ax!N<O?Y~25qY~UxiRW=A$MeqJEo?>+^D^im zX6@hhrps+5T2Y?%RCe>Io1!EqNXOEH<WXP#387L4NjUhuVZ#ssIrWlw=S6>9T6z1S zv$Glf3}uhcYP1H+Qa7GM<l8+pvu9T*W(2}XFspGt*@90%V&sf2HLNuOOUg8{8O45I zsJiv)l>msFrM8*qO*y@PcD+1;>-Y`V-H!t0W>}e(OO3L_KeGVLQe@B3aTBIh0DbZi ze*(%N7gYx5P{qO;;CEmU>H?>F%bMlEX$`<RMup3juk=7DGv<8(I`am8)eX1{iiFwj z+Yoq~7Qz-^3uqVj>QPIjxuutPp8=_fd%!7*`MbRe?T!r-zwhI_MYO^a6AJBJk2;i} z+Annzbuag`3(>&?m%+XSE@FkSK>sGl7W1eqh!l1THzidp4zAVwRC82EE}wZi0+)SY z_$m9Fw&B7jw#rPc4o7{}0lCNDh=+cZFYg;|E?G~cAO5VoySnrp8-wud$4F%#r;p(z zNLO|QCHjj>Kc9)yq%$=mZRzEAe_K{q$q56<gfZPRNpacxiHMqS@Hzl{Q<g9aakSp) zYGl6B4ei^P2<MoWu*?_3nToA(#bUrM%P4E0L6Jx%++`GZ;|MaVw-nvGX7T$o+S?{m zYwSooNx2pU1HiCr+xwb5Xyx`;dTN))nCFUlTbCE()M$AZ|GK+N<>*jvG&Z|g^SB-r zD>(@m%-zB*%vs>(Rq1<l-orMzHsT<jb#P_e9|XH^WYQkpF18>&1kk*rua<V2qP0x& zF{(WN3$rFlHLhmbd;M74bk}ReeuSXpqejV~&0iftho<?%t2nd`8SQD6@TN-wcd8Y0 zTKZy%m&_YzSc&Sxdfj8~PA7N4&Mj$lcRub7r2v7q2D`AlJ<kIPm7jhPDf{agy=;f^ z)7w%Lk4Be+e7ETdppB6wye>xK^MqV2&mBK~XN?eXW_Es63Fh7q{M-nJZ`cWy+k1ZY zr~HE|fy&^zk7LA!_lh_pR%BtZ^CcO54rULFvX_tdtoQEPtrW->^N=*$;7lJ}4)2{> z5}h2`gksPhBl-3H?TG@I3y+}n_*=8n{4W?O6`<SchlFNi)r9Gn$AXA)tSGIhtRMyj zL3=q$d8Djex~cK5Fe1o4w~gVp?*ey{hX$0wiz$FNe>Q!IrKu?Wn-b=(C$AzV<5d7> z;M~2M_`_{~9ntvXBV+2dh5DWo!&}k&_Yc>HK0B@vL41gVY(&9inh(qS4*>VOJw23A zVkhZRS5i7BT?>p&Zyek=psH^4_O<+n1p<EWCnns!|6LkDPHxT+iZG=9&^EZzOItNW zY~efE3$5#ca%rlIT5e9Fx<vSVi-rBwwk&xS$6Y!v&SFRIS{Cg<@q7K-9J%ymo+C|F zT94s5AJDGHj7|ZP8YuVsddry~KLSIS;&(@yzD7hUTH>2z+cB0(A3>+n$hPAuPzOc? zo<mH`dIFh9{VeoAPZQz15GRxym&*X02tNq7yhT}tM|2DIRQy|_d*YuT@sNn0^o#lL ziK+8_P5QzY^ZopKo(8qa-^D3v<WN1uhJ=osESA54jDOrtmgx;(X6_=X_yV~Ten-nJ z=$SXA9~HtCe#GVGIP`BwXGF|^Q2yTl%Ng9(RsCya{)J%$LGV?cBV#R=fxu+tVA54P zI~r&Q$1~jq?j}b+7PivUb(5b3B6ByOhbl44@8;+D{X+liY<0A)`}@C6_z>$2#fHae zZV7+A^{2cBA%!FLyj1hHsT47EkI}VTu)vhcaIWWrYo#)1Knv(UUNFNKC`2z#cjJ8L z_m%#eBZL;=tN0*eMZaV93BbtW?>_=T;EWv@5!mDz&4K7;ktz@!=9SqEhM6qaVTMaE zJG4^|S6Baqd{IUPLU1_l+wqkA>#aXuSiWok@a6cznG-gEGdyrZ2n|Sau}Xp`JSfoa zO-_OE{TPSZiK(KQe_=y^f3ZdZ4M$5%%$tHS45TJF6FAthcvytj70@)+-!)b~*yE3` zfeG?t2U)b@vS3e{0@muaLNJZSzE?--ucOh407tm4GjRK_xBlEMVOQ{V7J7ke3+%30 zyV_Xq#Z*=OnM2j)xAkx0OKEvr%3%J$D{SjH1w3BsK%wMu_(R)&pp0)@frM|!EmP*t z%kZE6-cvO<Xj`|Z#PTk`{0?hp+(E~YCz}maTPIy_HaA~40O%9-2n3&34c%9-0p_O} zta5u3h$uZr&?^LgU8a>(aOfwu-ktm%K>Gs^48$+4KliQz<{mNRRdNv1O)c6C5w6B| zYs_QUj({7%8EX^(UEIhd*!xYZ0Oui5dHIQv1soS@KF9g&uP^z>Y7HV*#~!v<j-}@% zYQkbrLOTMBPG+gK&|}&F(7I0oigXd+8g`-}Jn4D#Qa?A5wEjO!xP~9(I?4Y;`2KYj z!_zJqoyveA0Gl9H+6`R33|X5KX2f}6`cpbl(64?=fBO2z1z&jw>n2E#t;hgovMGR7 zbFwwC@ax~w{O5=N>vMq=7+Q&zn8umeFZQhADolG~AHo>&{v!M0nE5dK;#Af2QoH#W z*N=Z(XxKDS2l)$R^1B_j|9ES|_=&M|0XD&}6j{Cv8b0^Jy{U0~_+gA}WoG{`VO051 zGS`1SKP<O$(3p5?#H(9>eHvvvcJ-U*@^t;@#r5|G^8flZ3cEJjwGFvB{_lSO-{1fL z`uT5&q{GDyq{3>->16kkDF4gC`==`7ucyj?_s%<cb6}iy`||USQ4CLQy_M2coYcq9 zxFQ5|{!VEEn(u%7qj3{g_@_u>EqF8$zFMTXjc*L}*VaU0@lPJ+|KF|FW({+IR(g;D zdxzXBvA5xYAT>7M2k1%&Ur{J?|8-aWAANfBy;;UBuZRqgw@CO32@aD%jg;zd56}Pk ze;E8r4Rc%}{5K6@C7+`I$LHzqUx4rfzt3=D{f^=9@BYtU|NHy@eg6Nw{{DUc{g?d* zLKp<%20B5=sHGzq#N-b2<cBYAKEo|iSQHE*F*C%<l>awBL4x<>!UHWUW(m@NgAkMH zDWK+JWEKRCOARpnmpM;?faq0he{u*oz2mJEfN3A@mjrzOmn1Gcu_1_%X(h{d=Wcd2 zmWZt5W9~`f*28YqFn{7VFPexqfu!Vx&+oE`2~ak+IjOX(^{9N4YEv}x1u68^Adosw zw<&_zzdFM*R-7)|ofWrPV;1N;wl}tB&JRShyRk@tV>DkSbm=CK!~gCP(5GMyNDpj0 zq$f~d*8;i4$6L<6SaPdcz;}+Mpgv3h+m>Oy9Kf`Nbr^mFoy{~>;i);Ze2TT=R`V2B zzol3N*uWOGiCcf$^4<b~FI>Sqj_eCMONjwdV3IoN)q}%9^}YeH;2Dt*LB6JzF}Ej6 z0?wXSb+AT1Y`XwX_*!gyx-_V8W1hc!yWPe{CcPKmJA>^*dH{~swk1LF$3=lcg0M98 z8K8Yvxp%O$S@^)b%=0W@Tpq>tK{BM65}p!d`NwKE^eoXE0HHd9JO&q_P&%1qdYcBS z|M1`jFg{@k=*5^-Gmt>Ed{y~1y9+Bg!7c}_aZ)>xJ|H`MGMwH~?5%PK^bm9&l|BGJ zWwcZnfMMG|TRH+XY`--mN5a?n91P=d29s=RPk`WVcC+rp@o>1rf0z+myXI7#0=55A zcmJyZm%|??hq@~^fD2aT2*k7Q7h4x+vf14rK)A^Q35I%nIqv<`bPgn6ee5JXp!YD{ z1T#zbN3aYo))(#$&Q#om)bPUxH6RwYYi`a~2PY&7Fjf;5Luv-Voi+vXDIZ{}vE$er z!RQ-Tpr%D;xO8$&MaZ67IPuaT1m}_DI8s0*^z2afVpkS)YQ?Tt9{C>X=kek_p3e(; zC;f5$4{0|*AGr2i^)lK0IRzw69jNvl0cGS#!dDT0f{qJd@E`aGmM@22Iq9PA3FcFX zV(PZj04t+ir=1B}!Dju~yIP29uvma;Npuce_m5i<b`vw`SkG##Nh@aEUC0}slf#N& z0gBNBoP7{l^OE*61lQ37(Cf5&K5duV{PXe*WuI)-&rAWa3EREb&a)u4i$>Nl6U?FW z0aU;gE(tH}tzE|%xH>gaq)xuP_Db17HVp+Sk2|}-a6;dmZFU2$Kk=sj{tgeihMVU| z6!~f&bg{0SCdAM-zjdRTowguf|6ZTz!G4k+Y`_I}Ac0E_;B!%vz;CbygF!5M#FyQ$ zdWNI4vq&2x*2U_>-!e<yOu}voT>Et?Heh}h+!2&#hglTofUx)Jg*#*Bk*AxU^{&`6 z@ZBaJjFKAgL($K?P-S#~sQ#v=zQK}(AW5p07vQ89FPKkf38%p5B~%XxG%8m|HnJY4 zvY2x*`Eg-uJwsw_d_~>N3AUxC5=cz*8kPpM3f+ul!*^gpmKeu?^;3(M=J0Z9)zJwL z)HG1pXa+vbC7GRsxN0DZYdNgROCgsw0P+|mqEg0NSwpbtEW5&Vm4$R~wcA1c+;I$k zg5hWN0JT7-9<DKvZl;2)oucWC4KEn}Lo=yrZ=r5MZ2xZ>p29K<OMNxK{=cq4byTpM z&Y+Se5MOO#(NyeIu7T`leljaLA*W}Ju+m?ewERzA;juM<QFSN&BxZ;Mu{gZ8*zA+Z z<w+nB`TfWgZtZk4qCNCODHt45iv>rVd=RRaEB&x1Yh{$(D;{SHk)$~6nl^eokXpC! zUAxT0!mz<L7lPB(u_B4x;5)PfKVOWNpQYBHT0dB5w3VFxh42qOpd|~gSaj~N@Fj0A z+C3-gILeXr|7L`}kK0&-82rj0IJ?P6%)Bpe`+W^ipQ;xWRJ{CGecRA+4IAu^w50S9 ze(>iKgZkrYOYbKs);Ajj0C0rq9G@o)k0VDy@I{Mv137s-i}^z$>}aR&6ql#Z{K3t7 z@|kjMnkddsowqD>;@QW~lR)@RH-$d1gW<O{4}d_PSw}EkD?+s%gjp3hQ_KjKxdIgd zhR?<yh<-7j6X|G_IP5Q<f?IdUi5S?gXuR{}+1<`h>MwkTzT-N4-~Y7<Vu22_$Yu`f z4wc{gpNQPS_XV!iDG)ugH6{Z>b+CaRf27+O0iCfQ(@dSZ&7aSZ@8m~d>2IDSmjDry zW)(0|l`8{vj?)(SBfI6mU&nGs2Fym}@ijXDSdzCu8DI$N4{d9~Y`eCqq%73+)Vgi5 zfTNJ+6TYm^P^-DS)VIcfL(tIMtVdwAUf|mbYc`?O{;RFN3v=VRRB6mG?bEc}owDx> zc$OD~+OkvN*p1HN8TRE-&4Ek;(H+#hR~ovQdrd(WjC!^o$jOo<V6~?_4q-lRplHX! zN-i5fi86<>kX-h#sMtv;BzF3V9a(c2ehT#F;#Ndb@&aH|vLjI7x?`ifn`^C;KMkwP z42bOQ&|cmG_v~2pbtebFH--5uOU{fPk!ojn$&)e_8)^hi9!($CRXJ;lSpffrbRskI ziR%V7j9+Fqy|=o=caf)Hi;$_{eS0XG--@Cm;Ic^jkJ%h9p~Ff+GQx2y$DHdXn~`<- z;tCi|wH&|EK?%>a$%6aR&bucm-?9#Bl}NhnA{vCL1?Ht=wtALBR$<rkC~e;+pO)gC zSkcGstUWX;qgeSp^6)nDxa=x7DjdjG22-zZz3AXE^2M?%aZZQFw_?S%wXj1v(fWML zfSyebczW7gJH5}prN<bzhTp~k^=r2Pkd%i#2eT7x@0QnTA?XaD80(4?o?_y)12BVi zbw9!L*I6XSbzF4X2G`;GRx1dG*jSOw0&{6(W8cnT8ObTEps`wD<nHMyHo2>R^TEZ+ zpvR=M>LD<4d;?WV8&>2ptuD1i3+cqLu9*oeQY;tENc2B9)1a5Xke5`tP`#)HF5LFJ z&)*C#4U~{^>+thJ^GFAJ9+(+^!qypLZ8dv#LnNK{<bDRRzKfgDK6WQ4U!CHLm=1v< zLF%o3=DvW^8=(iD<SY))<1K(Q=zEH)?u^%=qO8I2uf0TU*lyz#INLEc?GB50WKy&1 zvgI5b^gAseieaGoj&$y4l5%dLd0^35ns6Lny-_u<CwV}WX2hg6nE$7f`!zl`BORDp zMrr^n-6{>LfmjcQ<MXqvfck7+W&aPawp4|uEYHTkbi5o(-n$Kr4Pf%+YVW=_*jKBG zVQslnkgcs3MIOHSvFEE;DXG;G&=PyDC|}0{eL18-K=a+m=-fgvO*{+$<A=*BDbH^T zRNbH*7QpbuF}Sme20kyYX<PrGfCSzQWVRwnwmVgjBXI{gjJ0hxBT9<BE)8n26a6_l zy~7)fQ$teVg?qWC8blK+%CTde;VQB<+C}96h7ipP9Kc@`91-Fg?I9;`7H1FQ2lHWN zqjs<!WS<w9-!`%nLb)Se4McAm!cP-P5jY={<QmE29XRGX{WR#zUo;-HbFQRAPO)`Z z-NDzA7`e`UBJ92jt;dIXD{g0k$}2<2@F`ITzWu28D~DN>T)m<(6m9-4WPmx(4KWUz zeNuidIddE<N`%-VS#H6m17V^JHZ9%;fHdgctQUf@MFIvOor_W7;08oNK?2s+Tpj2@ zahLK6V4GXS2|T3eo5?Y51Bv1OJ3(kkf^_J;Mn_Pn9ZGSMSdnx_T_$9x-~a3cXDiw} zhHCd|mum|146jIbAzq}t!<u4vVrW$*nVsukDhljxO><yp4TLhYF~aX@pi=V%*N%zA zA$T9ez`7C3GVOg|;`Ol&c9o5TIx;@{0#kDFObI?>;t5wQ0_vw9U9r6QjSZKYgT>5S z0xd|($#<xn&8b3)wAOAC_yVhQ+67--oH7&{VjP0jcsBVJL~Ds5aEOsJ$cPSu5F!o8 zD=n)B2ysD$xy<>qw^D)%%_}69sPe$K40+}d0hkpW3q6AkaARvRv%#Dyoq~<8NA~!K zHs-WVB{|Q8L!pkdccXHmr!0(jOVWXTxdLw}2y`_g^lx=MZ9{D7IWxq3!IR~%O?pmp zjlAu7NACu%gP=QNeNO%q_EwXqtzw9HTCz<TX#>r?|A><Uj9?8@*-HX>Mip^TY6~4D zAMG0RmAj^1gae+5M4UE=Wn0hm>V-F$7#x;fR#J!?EZ(Y-YPFkoJ0}*04M-stf)4PP zhV-UIr?n9gpexXIdeh;wU<2wOr@Qw`7AaUebve8@q6J6i8Q%spcBJ_>z2((u?^w@K z01vsNYb7mvK6{pXVMF>Du}(;cK5}J{snDWgX4lvcgnNA5Ak*-QuzTJ|aig|>y6^mc zyG7J_kS8PF$Okk$^5X=X!&MRn+Y)#Hm*O}rL}@;-2OrN1!elpMCklHTJ@MLqxA7#F zG+1t;ogac7WE+s3z)Vzn3~u7B89a7EK^?7TEOp@t@HNagwFxC7W#2tZ-z+fH!syxi zg2$BvJzQk@b_0LVrz_!?gj|qB@7GMNWZUo=CN8(JVMAS<W)hg8TQ{^>M+S<8!!2>N z9L0-GUbA;PVduG;xwY}jb$r+>!zy-;iDAXo#+|sY87yAg6{2_8H;S4%$jw=}U8E!g zsM+pkg&0rX5vp<71QR-Uck8XaXA<s(WF^MQZC0|Iby87c4uHg~oyA9Q_0xpzE97Ks zPsc?{o)qRYWk|<um93RehW62p(aHyOAy<R<@Lvv6{Z_mV@v}%qE{mkY3`X&-v=1ln zb)CWBGivsS)OYS0j^f`#0|uG8&{#mD@qSux^(ZhZ-$PXrR|Ho~<f~e!P=#s6Q{U+~ zNo$%kb4r|$F}b5_l!jYS8dcu(=tF8-Yifo=rJ=>k)TX4BnCJH8g)p|bCZx1T9sMfh z?)m-E7JG|MbY)y+lvB2>QSyVd!=fhk5|WIxT@8!pl!;-Qzo`oixVuNo9E>r4wiP*| zxKFJfj$SDm7tL6voYC+1n6R?3P_eC>DwGw`mI>1=#?<}5?;jA;^g8gn<(CFOL!TvU z-lus=bU*D?A<!2~UlD%DWv@Qp6uLhk=Hh!-qTBo<EF?1cTy#(NPUHHnMfk(I-aC0w z1MT~XWLB4|!N|^MVen;cdsZY&yWw(gI6beXp<bFkY=-bPj)6Me3dhg*ccsJu**$=i z?+I9{J&IedK#7eX6VXZnvH2C@Qyy%7PLtI7@lK#}d|9_z%Lx4f=fY<Zu$hPyo62P1 z=*cswF}vKbeyZ|WQ+F&h{lXt?*8JUaUtnxQ;Seal2wPMWWb%q|H&?eo=Lj)0t^b{X z{sRTCu^&>()GaiG#d*Jfp6FVrTt{o4zwy4l7ET*Qg%wqH-L9#F;SC2%90R9oOIJsJ z_TigDgfG^x&fm@1TJK}sE22o=`*M%9s(Bb9bY++Bahjlx#WWcS{erjQ8xNxNambB~ zw{#m4@=v_txU_d&O!`tn%kUWDQ-3!6s9)~*xfC{>8b{l4dohH}d8`rNqaryon5*9J zO~pjT?TY>i;v{XNrN!RV1ln_W4+HJUwjWXc1obx6QziX0mY9;%{3xK1K}lzmO<OD+ zio|p5Xp0L~9#1aIEblU}T}Gwk#Y%jD<>eM*^7h2_vf<~T(cQ>)YKyM>UU1&fgrJbt zZhNuB(tCKfP>D;UadW1iT+D}$Y`#+uyPf<L8%Y(|kM#e=u1vR~V9VUp&%WPPp1mPC zPPi6IJ5N(sx`XoR4E1hg-j7GatiKH0<2gpVVz&GJdtLWi&nnJfg3Ucm5K$6v1?_P% zQ;WPxnk1i1XI$CkTo=!vX{NHA$+mmm4Xc6SHO~VV;Qod%1|gE>T;(*;@A-ny#eDMD zLI<Ir=DX&-uTL9{(>xU}ve<l@=<ckzu0-4J4#?F%A>qAZRJu}v^2Qj9UllGFpaz4t zgZ)PlPp=5q*?*HxmFlB<{|6H)M~2_sH{B(^qSws4!HPQCPS4}>ex8um#T3CS1F)v+ zPay_r?GI<N2FV6I*(B3#PS|O`@RItC(BoJMVOZOwtWn76C&MOSi{ZktdT50-#yR73 zC~oSYFh>UYr^`f_v16vom^#RI^Pb|%{QB~C?}9mK(jlf{iOoDV{q!U}wmkI)yoTmk zNG*pde9wr3AVJdpC6pdJwz;lEk*x3r?isoH^*x=-q1FAsBlqN*_3e9WBHKH;R!?7* z^8(xEsUy!Y3430e82gP&qxW)~9^oJLZa{E;N(Spc&D)N{qx9VtbP7g~XfAV3{#-ZT zkll3~bqgpWt8~xEwzpEqF=-%=C%(i!n?@ePajS;xSE>0xLJ;LW_kT$Gk@((%`1xDd z`NSlUEAxSk>F~Z?2T96PyN20}AB4MJi!s6X@ouxn=(>QBN&Qy{I6|)MjV$D8=oH4a zH^hp-ax=q?k8fPv8-wsaU}GOJcdR?xs*Evx9ol9C>4|Kv#Ig6)KeRH~k!R{we{5mO z{vECQSfGQ<{U`F^2nq55YIbx}jfUN!ODuzF9QkkWc{GXPC|-r=JTSZ_PBcbj$ql*Q zq>yj~?+8HpKsC@=NtYp^5}M@B7a;iKE{%0~|8qL8UcrW(X^+PuP2YJN<{qy_!ZQvI z+w8qaU97rY4c0;(#8<DYK?7Ju+JbfpWlA|CPt$2W9xYccL&-)2@gWJPpi0}_5Nb=; zYm_>^zDH>7J|dOkgC{dlhqS}FA4y^@nOKhqO4HGbd05kf960iQvKQu?-Fdd8*+%b^ zUerkL@XHb!VeyW>s%puurzo23_=b+^&*s7sSNCiEn(&1Wl*r}p2dymHd#zBBm`6n6 zffhK1#{4Xrh>N<DsV(p3vxgLtyj$XS8$|*={ReCurIEO2IF{Q(L}blw)bwdIxxt=@ zANi9(J2`x{V0<FIu4QC3P*0!ue?%8#-nfX5t*GzKBxCP}-CT^rgmlwju4HLqR`gK~ zP1@6T<4TB&ru{iO%x%cHAs7|Kb{l`;oBv|aHt!!Mm>g!@3T5bOYXC31d|Om~bBDM? zTvrx0&d+Cx_e_Jk-Pv#aFsU_n3&W;k^JZj*(yfX}!ydP$UA5vXuj73v9M|HLI1|tW z&_0iqf=ic?g5|H7X|wj)8^2FI_v6Mewfv5YbPt=mUhK|Fl@>&(WTmgKIr*m(=}yf{ zpHm9Zxhto?J!&w*xdL*ftS2^(qRPvSn((QZaEK?Ht<oHbSIiz#^@wQ5;|zil8x>jl zQpTS;5uw4Fw;=GKDQBh90eW`xHs!GU`8KzX=(dJb_Us0`-s>V~d_}oO?;l;B&l9wK zyZ(}=_}w>+nLjzSJ+&MfMLFbRE0giOs%1ySCGUZ|9Ia+2yTC}&;X~2jDpwoGa)n?P zs&|#!9HuS%Y$6eZV>)gl)E`|GVh+7l#HKHkMpVTIZW;4V+}^^AW|XepiYki;?{O*L zWj`4~(&seW<dGbLI}8!V$C0St`wWT(h{v%YYIlIsK3ZYRI#SQb?#4w@mBVp={N=&t zN8Po5r~~spS4{8tWD>tkfZ^ZdV}aQ&eOFBgeiJSFd^}1>TVpQk1tdHWYOQl1uSHs) z${3NW)fa1_p>bAxPk1rHf`ga9jwo_&fkOsOJX2gq5VZ}2tG$n`?Q%ZBVC8(M#|T=> zgM|d-tV4M>xfB#P3ncLsSW?ZGZ-}10eJ3_;yllY`E?Ocs`s+tlz<4qKRtEa3-ZF48 zyZ$1c-Zed$kB{qrBopx?UBDk59aH9}X5<@6Pf+MpfM|vxmszCG_FBcq{iP=6;1!89 zstEXMo|gDxQv9Ah&}~()K^?;bc_S&92sX<;2?O0a{JUy3KZENs9*8Q~LbKA#%1V{| zR+Ig?Nl{^_ha=sNjn$fn6;hPjTvug!=UrU)NA8I~@ldj1XO`teuFuwnb^U5>0t;A{ zqC#B#50uP(uR%A^{YUu{5;a#WHED5UNdu(6O5=RJy>X0KG`l50roS3<xD(GZ`(n7N z?9FQ~HKeA_Rn5{UpZbfh@TPYfiSXAio+{~JYBlMOPBaZoFp_5D)b~Lyy7<Jk!c{uq zeAmj%SYeBSbex<o!~5r+8P)EEeIAtq(_>a)U!r;nPmauki-enHZ9pm;yD-=XHxOT< zZrd24Bz9#MMkgldI4&kkeKr=mH{J<{)m<=Lpu96GT!HBS+n3K*QQ2>}Ch48WsO2>4 z(+9@WM;Zq9Zks^;U|UQwQ~mnMMU@iM=@xmysrfxgE6F415Y43{<XGps6sZ=`@rAOP znMnxS6i~G=T;%`5V<SVHCSPp?j4p2+zCY$E)YCT^PG>=W`LQst{xh&=OsQ13_dyTx z*Bukf2~zQlZI7j}hA}0#L8n#147q*3GWf~PnKQ<xK6}+@CBQ*l-Ny7vrshM*iSp*L z%Df)Lu5Uep!9s<PFRnA0O!(Y$DX1~MXgb9vRA2?=P%B*p`q1!_*RhpNqv<$x!f}Ch z3>p5vw=E2I%D`krI4!aGdxU34IIX6*QQ%y6PR{B#<71-U)n!`({kqN3d%OZgx+MxQ zMKPN;UPr*zxGnj8T4aRf;o6Yg^Zj16@u1nEK-EfmT0mIFc}eg6>T9hnP8!b-`kE96 zM~x7>O!%qm($!ux6I;m6^hC;&o=P_N%6(@$$po2L<T$kzDZC%KEZ&Bb*#sLRo?so( zrLG+Qs=kO8I|I;2A7c9r?bS9}y{ru9=n~Z>mhU^S_Xvey`wTy~f2K#&7iPa##|{$` zwiH**CMVow-Ry487uNRZp{8t={rW~&i<N1dch_KSPtw`79?s!bdD&~wX)eSeVRNe> z?gwL&Sa+qGd*x4iHg62w_!D6fk4nZDD4!j3m3IZG(l+G_&-+zUF2AC*w&1mOV)+5U zd*P0lf<A~<G1t&IaZ<7CLF`PhHzMC*4uS;_Ktr=$!We!ib@N+xUG+@m4B~~~RDl$2 zNEOKnzpW~q(B8tLR^12l6Im%CEQH38vdY=W(<{`*kXkoi72P`%E2loo*@*1(>bbFF zVWcHFfjiMv{d97~>rpMGQRw^$_wI|8KJ>%OyGrXF5x_hSRCzUv<^BsnDII%%1RYqh z>gYcujuTdVW<!#8syZ%VbzCmv1HhgA9lvUUb_zoRL*A9CC|5Ah)3vg?fD40dsnd%l z+C2A^JBaMepEV<YVVs4(`Hb651hvJTt!57hUOycC#U>eHN0CwO^eWjQC}j%|x=cPB zvgxhEl5$~RhU|@lzdE$EY|{s<K+TshRtM%@FASgv4!miXw9;Hlm1Sivz$D%vVS%#( z)MpR`(AgE^yimFFV<e)loz-dLZN||x8<M`$>RXI6O+8X)l5L0~!OnDNqO)xfWIuT` zRa7|*tysbf-GwoS_y^bIU>UM5nU#+CkM9LmY~z30XN;v#Ef-Jlk*&;;v?)|tCVycR zM1Bg7?Pd@=+A;rq0FcpRX9nE|X4vq4n`!wkb<E;x`1V+I_QFx8#NPR{0GkmE#jg2! zVJ4vSR@N3uV&P$DjE_YbfbUZ8{~r3KTV$K4kRg9_rMgeLGLdI6!a1O7<GM4f?(HX{ zA@x0(r#EM9Ir^kut3IDm>5Fau#vP!zQ$mw+m&z~T_derdqs6DYwJk>xcM#&bdnE|T zKFvN;Y#Ib(SGdPD>2{#;+v?7%9)ahHs`Q397HHIG=3V5NUL&(KH|pN(s?gvF;m`1% z(q#PjK+M^w{S>xAXX)uC$$W9tK83}q?IUnJ0e^LJz>vwf^%@@PwDy3O>@5vR(78Ea zOl@D2sR*cKlTR})UAMKdb#ehbV0B|U;gL#G7w;DYb}0Rsjaw>=gE>DzhC<qaZl&a% zI*3z<aN2!egcLxUVPSi1(Va(hE|s@iGV^|F432g!n@*Eug*XuGb9KOn%qHymMlAgm zZ8Ri1#LJm03HCHYh@?oyV5H7dk@W(SsYof~9T!k@6lpE|j<$<P=<U-MoVL(H)J1!A zy|F%m(<}rm<=S%;l&`(tQp#b%Sr3fhHux~%c(wZxpI1RMz)MS`xavD=e^+g1Y7Tgp zP|XReu74uojWm>x(#Ne_v~HC&4U44gh1+knRz_H}c)cwR&p``k>DmwcaPqXuR3D^% zrpJUcrbR-=_DdWyy#J{*?!rEJxJ1k5wvS;$VlFYq*Ng3KUD48?468ycUr~Hs_!R^o z^TbQN(egUaEvi37i#yj=TG`BN9aPazRAo&nFBfnX`32Z?zIr>zoaLa|sQc}zH9zjt zJ+s+l>Me)8Rr`RuVAi(-YfdTg+WoD{nw=n3IV5fsNv2fQJ}S)CU<U_J_?~S<?uJv% zPX7Um$te_hiG{hXk&13wIDyL?RYJd9xUl0+R#Wr<wwN5y+x_nS;($aJtHkif6t&vZ zU?j?Y905D^Y5f)N8{w&5S#fpZN$OY1)x2O;IjO<ntIawb!9_JQ0MB$t{Amz)=Sw%e z*>KEvFW1J8bQ{v;p2qE?G7U*@E?Y7qjSCv7a%KEr8$*t$TvDgyr#WdVgQIk54lh6A zqPV55kg|q48(?}yt>Su_nN(3=dMx2XZ+Kh@3h4-6_(YjGz3buUtaf2rqCjR!XD?{1 zc7L&--N;Y8HH$uCPMVB(vq)gGYC~1kB2hbx);4sZLV7&3V#KcE`@42#Y@$*<qXY(T z4`+q9FCi^g*@6Hr^9VeOx(3)oUS|nK`i|mjG{#<?!XJ1>z{2Rn66YoNX@^J+|9dAM zBXcpyA3(DzuDdm$`}~FgV>)|by9-qe?L||-r9I_T3VIdVdzgEh2R-QGEskTJL)%j~ zo`sN3B1n<E_9~OpArdHxz3s`6)N`SdVeHXZw2@vlsn^7aN>4)^Pq(C)ovQXELm(Xi z;NkaXxk2iZE9IWyZ~m5){rpCR9(Q6OGWt|0OMF1o3BbJmzL#X%u2f#C-}9FeOw?|> znk&^kn`{1Yg&c5DbX&PzU<&c>NIZKRf!EDgJX6n_)G}7p0jD-G8Ae#X)O=0i5h(u7 zO3h8f-7?Uc7Ai%izjCCYB<X@$7U77?`v~-lbi&g&?vjLLYvSKT#|d}LNy4JBTqq2W zS$4*X#N~>x<F56~EQm=at^RfK8Gx||JAb9!pt?h`xlV1ZIHfS7^!-V3ywq!pyOfnc zS1_=gjfvr~Tly*{aI!x1E1jj_u!VVZF>@iaQ88eu@41iiX=UK(a-!!RkZ^3*hNGG0 z-81g=LHzv0%LfTCeINRGx;`9vAJ=7jCM}1Ru}he_eMjbXD-UdrJrSAd(b4a&{_<|1 zpMq?ICTrxqBJ!}bB~N;T%Hfj3i?K6tu#G61JgKA2OrR}I`K8`T>8HKfaPThob6&s= zz86*;Vr#c+k8%c4q8KV8{G}O|0m}6)TS7ZBMcJ650AX9Zd;FG)<J4&`jA-}q+l5@g zubD@WS&-Qajnsjd%)k|tZB+=OAuZmw|DXWJgyJ~&{Dx}Z(u25Q6A;mFnAtJ*Yr$4{ z(06~QX5=u$rjbZId?)8~{^ZY<5}2ilS!z7RJM|Tq4alDjuHiJYnpPK*oVHZ?9OEtT z{f>UrXXxsy)ChIc9$luhp(udldaI0^ThUA>_XV&R?e>)N#7W`)@>6#=;lMSRC(~Q8 zBJu*TxA)w;XOgKB;el>K5bF5`xya9Dqw{UNEzwxqoy5>yIHWY}(iza#OnE*=`^`yd z$hC$Tvd@!;lgpvDYKlPAU@PH0cY;xfY3KQ<5UEAWBZAQOxDE>W2zg6JlzgaD=m)K! zDBhjtAIl_6KFs_n4*zzup~0gl)8m7mzHA#Iry!JfFyhx4kFdu3%uza;Ck)!MTG>6g zxC3EtL1OqV^Yq;N#lDD2mf6w;ykDGIK3BmGwZ1!eqGOyxuGmIwMDcb(AtA8QPA^kM z#@gj`>=QP~-n$aJmAzP(GXMs_13GvpJu9DlE4@DG4}{~T%B7#F_qPm_8(+N6Hih7T zW@+?;k1UggdZ$O@Bh{020tX^BIvs=8?Ym7<@uIIn`<W6M_3k~YEBXXm_%z`t>>N+f zX5Av3fbD-kF?MVqgfG(TX6J5qj0n!cP-?$`H2W}J8;@f#uXhN5@=Q45vVh)MV^(NY zHZstHPbEr&G!K>2ZNFG<X3+RVdGA(!;%CoQ9uzFn7iKZ?nZ?{h@h&^ZkLQw#4W^4h zz*5=q0d0n<mBIF?awfPSfK*7PjXY3xw{4!rDGY2Z$1<KdQ;G*x#$gn1;WJ#fjRm!( zOtT%QZO($(WZHwuXe?oE2T<ZC$OyE!CDpFn!&0@-R(=h!FPGR!p<8|J5n*g)ke}{* zCa0t%yGOT6FY~czb_DF@Lhp@|Du%&t9vt5g*e+wdij=?M_s}qq3v(4>)s51{;Xw?* zrrY1+67XwO4#t7p2icvwbbbB1Qd!z>SYU+mNO^+Uj%6=L+$Crb?2!sVKH_cwCmA)w z+&8K$3O-1xYa@HmjH}4E<H*D<O)|~1YrnaR>$CGDtH4(#UilrHbBA6PO3X*v#y41= zvMq!6aT6@$FzcH<TsS>uj?-IlK>}gH^#HoyE$cE&OwIV35Q*EYyawBUU7i!GYnEQZ zO14B>OiY8J*-`ROw`#u>wOd}V<zQldZBu&tq7C+bav~{kMNxL+djE~*iLyIUTH(i< zyO+kjM(j>vCDu4g$etAuZYEnNCD&=6z*XTuiqT>oe8BjfaEs49L$>oxjs7lT<>bzq z8=aRd?8f35Y)hw(zjcdH#ajL_ImP)M$Y^Co(huFD?$Ir*n8|f)Ro&6E;lK0Ktf<!s zi4M1ElM?phCAhzG)aNw5$z0c)cP8xgHH%|Ex{NPc5_Ld-77wr3fnx~*-wa#R+1E^D zvg7v<5J93m?O=;dxonzIGy}w{|L5SLph{u)4?=GkMhR0UlBU{-D}8H3N2Nk|h-57Z zetXaTrEejNzER>wP%e#ZEc=6fPWkML5Y>LTgg-WvVaacR-s-J-fi`P>hZJw9T#;0y z9BsIFV*;ju_28TQ&d!S;UE-a2*%AqP0xDVgWU2&T82w*kn5`Jz1PU_2v{%ljavdI! z2l*2r#1-XSRe$pYBomTKP!sfQ;D+Gw9xIyf3{<l0yqxyBMDI_gDnS$)S*`=9OZOH{ zRMHhu>+nD#cgXMbqns~Foct%2vxp~jEbjTZ3LJR+Nca#j6qgnHWO0TczXZpc2R8mM z8;%4e^e(`1QY`~RuQ`g~h2wjDzI!qi&yLZ<SX0SxDi6l<Fy}cCiSZuG!NZ-exhM&+ z=*xJ+J%*(lN#Y#_R|Fc_m{iDDZ_4?~k|^l-x(P8@QV{d(8NR<~qKTI%{Hf*hm5x^( zW?s%rN;y&qgg`4ZqfaOOc7fz&x0c;XEBOoP8vaWwg2j$n^s^PQ`Xpvk5_7?8;enj? zhC@`;l7jH4S1}^_FGu6GigP#L;>So6htI4tSrZu?5q~jue<DSTJCOC2WJnWnDJ?1b z>U(T)vRde{EL{f#9ZmXQ;{a&FK9nx9?B_rO^&C9E*p863_cZLS7qr7AWIsU11~Moc zMNYOKN~N9?TU#4;WX6H*%+Oa&@<+a6t(<Ac14#gqY$-EEW_MW;Ql>S!UT)(KNn44| zeh+{EY*MU|VnZ7K2HDQ6T0~!L3j7VJUE_1Y#LD*(EdDk)*Eb|2JP>2|;nd=IiY!tT z7QANEgjp|bcONJ=Z2QKB?AbGBg`BqIGD!vIN4Kxgn}?MV5Ww_;PC6l`v)8CES<LEQ zHyCOb?xfZT_xWY)s_7&~Eig+|KbKC@Op7E+j!B5Ow)ZiSRcSoA`^=bf{)hAL)XNx# zwaejp@11dlct{zJG9?VCF`p-_ojpz%+YsHBbKgH{$UZe1IA#>-APlgk{CQT#T(gG1 z*m$CwqSA?H$&D~TkLzD|@zH4ay6ot_?i_o-ji^mvMw_OuA<`nOR7uBcKg5Sv>rGDi z&h$#sL2%NU3pCYdbO(Zh=o~~bJkuz#hN~u|DnFo7df%BV+E;4Qo%l(>x3rA)8hqi^ zobr!2kCdTSoP{wJX`w>H;cEuHQ3<!)W%eKS?ju&6Np*gS#<N38VdL#-qEbZ@6&|kA zmdX(M<GfQl$tKs;2ZH!-uWI1A?u-(KK1a>G=RnG?jE#r+kH0o{cv`#Xj^P_Qp~#}# zs~h5SyWGKsmIR}`ojqxH$yIyu78c9+1lrwMMve+5B>J7q5JmR(X|PT0jfD6yXWL-D zYiIh&zSORLHAHT}geS)qdZU4)^&m(uNZ$U1tFeb>GK=}xS6}_7M3INGNr#z`Q>aEF z^&@-4L!uD+NBX~ri3VZT!+yhoM4M2H_*9|Bk3Ft#F@Kma<ZcHgh~QfVr#W!Fcs^x! ziw|$p<I1-+2KVzYy$ep7``So!CIn-+|Kp|yoy#KL;-xINi7>6KiCHDH$CdZWOpvE{ zc#q8k;}lYcM>g22Xpd0Wfeg&KBRNj2$G<n^70DuZr#_X2SBzt-ELFLeijqZWa2|IK z!&B!gZJ(@zyjxSKR&Uablyf_P&<%8=Xb2!gSV@&1>zUFvluM*|gC{K40v~5+C;Q8$ z+pEq7Kz9Q}Hh<#P;<%}!Wci}$fWH(<tSFcCw6y5l{9V)tA-npxCUsLvg|qgDZp|7> zStio1PHs+l_HtD@uf-3P;t(A4OT~$YzaHgVOGfruxP*TjcC_z0qPIl5F~|Tw-X60W z?OJgLE$II>yZ?oIo8b|aa8&aLj6DAM8CiM+vy^yWNrc{>Mhc8J%K65bqTWTaB=dK$ zjU~>)UlON$@Q3&>Bv#fYvX~3($Qj>h)Jd{IN7!Wbd)uJguoETB?XRtPT;u7nE{>`Y z>ycQ_W&A9}WG+bSN5W*@#U3eWYGu@}g&}mqKoM_%<dpA6r$tBqH9Io18y9ocH!{f~ zx(TY7D;`20D4}tEMHUdn><CEj*@hd5MmLJ_8j1{aC}Q5CD*O0OC5t~o2%Tl%;S?EN zVQ$=fs#@fHuexZ)Qh*ogDQpvj(4&Suv-%X~`L(>yX^KDkOU71*aAJ2y-1{;E2C|Xd zs<)2$mXC|qm(My3IkwH?64pTc%KFup_u<5Nqd;2qd7~-aAL07s>6}z|vhFW;g+Fe{ zu1ZNVyHRYC@DaDKR-Cv&q4U8>&4i~2;<j_)K&-5a9hC9Q4K7jyu~z`P<>77iS?_Vn zCA0p|MeeaPCve&7Y#4yMSI~nV!D07SzRmkKfB3*m+}68VeIDRy=tZW#(hgmYQ!@Y5 zF?lJv?Bh6EYc-I#El!M*XdeQ{4>|P69jRou$r$7J%k=Ns_YYmh|1Lm6{BCPwy5>di zjks5-A6H{9!^O4yiqYy-?r*c}(!^O7gcs7wTP0ZncwbyGYES)PGbh2Q3=~DWqWDT_ z=E_V8mjZ|=-QLZ)dRql2J%17x=(aQ`LDfs-GUqy$An)*-B3_HJmxr^|@YZ#FW{F$u zUg$m3u;W+%%mN6$A1wcj+<;sMJStzSymCA1V80B1I#y|D95>srrI9b>#l98P2!O23 z?4UA}F>d8en^|qkAi2h~Pp2jKuf6aqZg|Fe^bk%(+{-evK&A{C`I0T3c$tWtCEg5j zTj#}%q(**f?q+w1KgE=8s)6S`n}^$46+ljTr|zTBH<h_Azpiv15B68$+S0v!bzg$x z>PTC!of%Gg<fXN1%1~l}G5H|~pV6=2TsMq~8-Rx45}-ne<XJ*@Fd#n3iQ+@LMuS|i z-ffT>s;+(w^OJCLw*6A7$crpe7mB@OrkdcWJ%hqXN+tLc<Gb1S0+`#IU18tGfNU-L zy1ubs-Op??b(u8$oH}!nKpW1=z(_oyZr}}FU55}rIz*jUM46q9#ldC~{R0PL;w3sB zcH`tmElY$caC&Jj{-`D9c%(Mpcr~xCyy4|jh{8PajRhU4Yp_dCw>u@ri%pYTjSeLt z;_+Y5zpj%h>6Sj}D+L+0J|hSDb2%ZTJNr_O9A2cId~31+EzMt{#bH}bWzXcKc-@12 z8`6K=P3qF{7A$MKV)Oqo_SRuhMq9(agoKig64K!SB9hV#k^_hcDBU3--7QF`gM>&U zNQX#wcXxM+$S`#H?eU!Rp7*@J>-&B0UtTg?I`ho)?7i07Yu$G*I_V#`dNV(L-Zxlx zHO@a=1u-17WXr>~8dc^@eyLy_kZybjgRW<;Z)2a6SZY}&>kXODo&b5(Y~Om_eq}PB zM_9>PO+^87GdbbcxqMa4HhvuA)^bjwspdx!Bcp=EVkL7&Zj?bE`8MxY?zR}enfKwM zBk43eJOce`K6}zpjr{Au<$iqHNwFpT!-PH{A~`*<5@KjLORe3KATXRGU9`DiGKmG^ z(fYinFIB$TGLMjB<fdW-ZHO=}{o@>FmtO|4O~-K(d5qca3rf9b9j>rOwXL;Uy{h?L zz2GjK3&&nw>ZRbKo}~1md^G`tzp9x9>!Do$g2#)XEB^*AoY|LNvT>~sO5I*d5QK6{ z7EP9jtct|ddV<^Bj(F`S?A9ax@{PMs&a=EDFDK3fQ~qWyROk!JMjiH>pXI{W3O%W3 zRZZYLrKMPJ>a6J=Tyr}}&m@XQ26M6mQCdS1gD8V2Ex$B)4VDqDgHFTaa`YfwH*GWY z*xNBk8&v)Fz*dlL@{Wv09OxIR`VCcHN(`bHs6lhMb#9<D{wvxc{Xl5AQiJN%cEa<h z4=D|k`;@ThT1Y2Zm-C%^DIINSF!IO;)QTb=pjztL3BOl=6dX8<yPXu#lBAfWWI^ij zY%nkEJB3uU&b~T_=(ahU9znc1tQJ*Q;Mw->i>MppN&haPGVodi)8*8laK0zx%O0mu zYYe5g%fkzIF-e^^1Dp^7G5r2LuE{VAW0l!3t^kC=Rlkm1{+dr~eHnMW>0&D9lpN;f zmyrZ)jK<m_X%&f^#GxQG0?ae1rXg2kfw~Y@kU4U8a^0F+O3OoF(?hKFdjK8n9P8Hj z?Vz(d5e2<sC@;zS2LEwQC;P%=sLzGbh3)K!%e7lKgM$hP1&RR#XcsjE0aT|>IZl}^ zt)B*Yz<LW~d~t3J8W!W*oag%v!1_eI;cShA^G%VxVVsqeNaOXR*2nf(5AdFzMNM$w z5aNWkhoVU(Znt)$cd!jT^1d4M6VkP@1G+6fMA+}PTS@f?pyG2Af=E56PCG~v55<6J z3nwhqq-~XHrA(ae$Bo%jHhkeuBC6D~a21<c!TOA(Gx$D=i-r{~kPTV87q`RA_@X(z zv_&p!L7~NEXw3E>-OvM=95T811ioaS%g~>CnJH3geE*7eTWHFlv~`_%>(DRFU+~x5 z4rIsEqG>00)CNIja6}bkWnCsNrr@iXrm&<?kJN{i8eKgLu>*~9o{#XUE#)z;p$a;9 z_%9UT*ooG_i~Ffl<9Z##_USt0wm@gl7vrBq*m&G$siHJBkK$QY_xQU?Z%c7ssA^b( zp72h+b3a#s2uw~&<Ck?$@DxQ~6dN*%HyEzmcE;t~CJRZ2(a~HP@^>=&KD_9WeW+PH zl#QDd%+=136}56Z$ObqYl1}kL>bo_fK~AW+F0+U~IA@cEM+0?y@z$P=H6250owc%k zrQzUJiN}VYWHeh4hXw<cRbg3BNi=9Qid>4hwqPQYQyYrSSQDq(^t`DKvT|o{b6uGp zgp8Gr<L>g>P{WDH_|=}qVHjides&rqi6cixP&m`B^HGvpajcMw1~Y_*2;PR0aY*Jw zN|Bg5WGaiF_cPu(4ysJq7dd>|Bc#yCJck<0_Y{cuv@tHbt51eKLY?s>65p7d{ZLm} zMsZI%g-1g-;NvslG^b9z=iq+aXM)_K8>aqXPo{SZr{-^xSilYyvonvtaa~leFE=`q zuIspz@r)RK@@#N((Wey!s@Qu+_I->gxc0dSEmb{x1^KwzC=!hN)F5Nq5UKELpNmyW z8!;>*va?Z@K-V~2?^%jnvHGOy=&EU!53^edusg$M3<2%NZZ5J0?<1CaBc8PyU-n?% z<?ZpbfLOAw5Q9&8Ox0nnzPup5m`)?5;$I&Ug)Z=k7qiWRBw+MiItJaM%Rc*Yg|<6w zcH~uagcu%okf9M{wh};N_?OA1&&e0^2iHJHSNZo+gI#!@QKt{37s-e|=B8{Wi)_q= zYwpDm%wBRC2ZMELh5VY5e6Fap_0A_%4kn_D@bd7Ol33iB8FJ&*aleD#uY)Ngl(QGE z>69Y^hiArUI<N1^7<EU(6yiT&hkpp6A&<To|3&Cc<X~9GmLcT<o^*rQHlot0+6Beb zG0)f8itgjF$DG~kv-6-SW)Cx5goC<mZ5nu>w)X^%BW}BOJCX6kPYg8YXs&&+^Y!@I zNyMS)IT3v*@#V(nO{e{_!{Pxd(;4w~zJoeZE?L?ZmYfEI4_*zSbJf4KJxqRmKE=p| zT6T~4Mu6^zY0NeAUOs~DcJfPOBL0_X3zUOFwYc@U-MHOq{pQ1irDVxhr6N4ax5+3n zjV(z%Y^)rrlJ-ZZe^u!m$hygJU`9mRx7lXd$JNiLUX=Fr+3z|=>em)Qz~<AxFq*qe zl%ZyDQ>q}k=TzcD>Yvzr->bBj=WUDNE%N|~xx!xYr~zDU5G(yA6*c8ELlU67V5^{M z4kwEAv=-mDwp%Z3bB6i}h|Zb(`0k(gUH-nW7iu&K%)RX&l;H}>KC~{Mn0f2w3M|`v ztE+)aMPsfx>F>N$zVOm*^oy4sQZe!NY{KlU4GrK0gMs0lKkk3pr}$<4z8buebLPt1 z?aG@mf%G0EjEhy87g7t+lu^8}?nwIHBjy{4f8)KlOwx-}nbU30>%MILV&57uoMdQb z`UOP(e+&PjXh#=o*30|-%y~#CH`39JXsbW#_1FPYV$;5OM<`jx#jJVZEb3$dDnpUB z<7j<vHYu|P^`2Jt`?Vvv2~DF;mNb+E)rK!`0z?NQFjL%B9dimD&AyE~*+vl}!8+?% z#JwhHt{}PeC$TJy`$Hx7b3fl=@?L)KFyxl{(9dTy-3&-~dkzfIrQo0g>u_pwJ@eNQ zD@|dhVRlOV^fbgw*QG2<!ur!mAD5CigV`ClGp)L%R~qdo<Gq@fG%PR6C89E5F&Wk$ zTV|yFzWe7e(D3Hbd|Y$_|FTl7$xU-zpw4MC1|dIpeEtJZaPZqINWm|-i+;dB*$+uC zVKNJO!7`?5Ze6<F&z<Jm)c?D$@1@y`P1C2lx0?>V>paw1%N~#>@x3r-o%%w4C7?zt zq_!<!B6{Ss-Cyv{7SdncoAh#`%kNA0Jn4Ium)^QK0Ge6f#*3zYeDtmA8J%HV9(nv( z8OA{Y`HjG=)-D&<)2$por^;jJ>JFL}4B1`rl$c5e_0#EA2J=*!tD%VJF!?vmmTR87 zpU6v}b@FuY@e;51mk!Njhq3ElV0KdG&|1!$-;JGL?|~<Ga+uxP@9&e9YOLxZGr#Lg zc?=D#P!2rs6c}|K3H~7NF(5wa%SaQEf@Ah=4JN-nWGrJ=zuRxuJvF7XF=7Sk_oQ%D zH4`Cjx#MHBbH7@7ZDYv(jrT@FHjL%F4&5iIe&)$O#?4P7NpuM)QOk9mqL8e9zmW37 zd`Sy#S;ZWjo!$x3)3KAIsFzEzHrCG?e9hfuM>G>9zWQpitVv**2rfcquRy!Tk3;5l zWo~rm3f#(=Y<cX_>TYF8?J-5sexik$_^n3Y@HN;_-cV)aCtJ_4rB?IROezlBoWTe( zDnXW`^j!;cOQvBAI#<;+TyQm<C0A~c)8WE?ut*r5P^wbRsO?|qka!6u+1}^ac<#0Q z;w<qcMPKXi^}0sBF8oclg*}pf)^zS@2~mY3=zjkkd}@MW=_?vJ+I2bkAAW8ZMc;Sl z{nO;vjr%;~ND2h*c@rRxKc4eQ4skSlGEqkOHmtgj5LpnhvYp(Ee*WWm@*rMU3ON&x z?)#s%%J;4k_fRH<Z7nj}vD4A1M033oG3L4^7OqQiy=eYb9P=P{e5je%Mt}7%-595` zBF1$-`GgR6qTMDL?R5>3`&uuhOkro>f&QkEVK`>}&7%o;NA&YezfWvfkxlOe55B(R zdp^8|J=Zyt!I0j_K>Fiu9O>E*j+^k3{jF;<>6G-R3<(U52=lvYSN!k`chF@~BSj#P zy>X3mZm82bPh;(X$^FiL^U+vRi@A0U+<fD0NsKmm8(lQF?Q4?VO3mxiC!X&X4jk&U zw$*IV(zyfflz3X4T5~TuRN{2+1qL+64w)@)9P?NH&Ry8oTk<a);%D9u2SH=2)JQa! zip^cvb>dSmv6r&Qi|x1X30Q;^JY>@3#VFCQaWA}&61Vnz&O|BQ`D|44rXYya3|1a< zOubWsyYH#4A*UeeEq?EiW%G@qKi2=?bo<XXJdXmIl}&z4WkcW`Y)>!P3^0${+#$T* zA4l#t4uRy?d^(DEkmT6~XO(~;j(+s4D#F1N+4hvZD{ttT&rYQ>P%v^Q7~S>t(l)NM z>zuI^sCqszNFw~H*PM-X?=G>0Y_s5RRl?T+-_>D!zK3^c_5$l_6Sfi!MnBp@{H`bE z-4u;B=vXs;d$pcoYBU7%bdvmZTf$iiW+-UvMPCZGYK=YXBMaQ>Je+RM*tjXLZ$Dk< z-y-Kc%I9B0esHp<(f-o{DYj<nA#rnFE%1o?+wFx$Z1Jf1t<3D)a8q_ye$o2c4ck1# z(_=;6bn16~dGl%e5g5Vat+ZaFRH?D7H$6SQr1B>A_X*h=ElDnmJn*%CS>^K3qenIg z_Hi@mh8^5FefLe>Wd~_#tg+?9!bqRiE32len-X<#!_L$HFkQ!C7qG?RV<kl=N)0;p zVjP&eNi)NzW<|mg%en>+c=4Du2M0oaEZ9UYRi`1gM1L`{9o7xFr+7?+lm<gm{Ylw( z84gHyLQR*debju{i2A|~op;<X7TfIukMwq3s$Gd>M<LkL%kEEgiK&Y7`p|hR*qkMW zpURJo?f4`HyYf^#a~sNx%nxIwYHN4q6ppT?O0d;pYISa)T)RR<oQZ__hVMZ@qut@9 zPzXY<=0^d<zE<*L)u}D_=Vv52r|fFRz*k`@?SR|_p2f3NpFw#=ivTwlvV)fR+6S|2 zvp3a+vm$W*(D2GAUiJ!4hDU0F6{=|$`{9?Cm-5&fokBfsg7sN(=5>NZqiJj1my&Pd zK2h07%v|c9%<CayC)q|-Pc-@PEAspwIo~-as^Kh+IOg47OaP}>%j7Li&Y$L363YG| z7k%+OUE7w#Ubsg1ZM(gTqjGY%t2%f4iH*=T<#`LmyO>A4t8K}w)Rlb~U(Y<aHxYVc zHZ8BNeu!0lAX}Wn(u*i~PyX@jvcPBP&|8ce?G(&KHc_B0KF@b+NfgZ;n`~ac?T%kk z?biROnKXK|(yqt>*80p%(%dzDIN>5$_DugNiGVQr$78)cm!|2MhJos;(hjWK<wokw zbL2uV0EBL6Y<TE0wm><?r}94j5zO*o?1&}z?+WYisIfGPG|%JFi4a<WolXYYs!fZM zi$h82hYn?o#d=avt~_p-CJEIpXzpo^w^hE{&shWoHV&>GH|VCbt&t;@#=rA`lryl} z`Y=;Pv35=Q%zIdN_MFSM#?2<u^$tDN@AM+(xrhAO+-|qq;lgMK6-fMbN5%m16Q>R0 z7<)k*Iw5!kh03a->kDc$#~(@84ujy?bqch%&8>;HyG}<Ht#G6NvuJe=;ePtmnoi=& zr+CLjQkUhtk3(AThDqs%gPOnD;?F~EF694Xem*Fw8MF!NBvw_m)>9Jb&c>y$(D{8# zmZ&Q_qezuzd6cCf?rikxaBqb^CPlmi;phJJ___^6&Nh)t6Y&pw0qT~mM5wwY7Tk)S zE$aK+k%6!Qb-<nVM|jx%81LpRIDT>;>~^4GQ@(Jgf?rmS`7fCzc34>Az}+`D1h0F1 zc?o~}?71D?d3E7g%znv<X>!-|s93W`96u|_rgEn9RLB_*jWcn@BZ8jeDNl6$hkdtK z23})Ne>VNOxk*)?dj@H8x819zEnoPa@6*>opFl^u^YiOF&5e@egCT(}%0E7(>J{!( zRy7m#y$?2z`=-M4LpOc?_9U>qnbEkv7MI^_^xz2bD-x}s*ic&~BEW$>-^B`OE*mm` z=A&yTY5dTvd95K*H+U+rIAVY!N8t>{e>FtoZL)2c9yX;oc@bZuJJVp8lW3~nKKiyZ z$AhQZC)sp>ZC`Ft0=L(l`R?eQFh|5eCYF5K-YT4a={i`irGBDPgNW@ME25(f8jizo z&Uu{Jwb<%nxMP7ct)dOj8YoooT{v)TpjmO}!o*`lP<qC)IGl)Ofun%?sKA;^>O*By zLL(Wu8>(y1q0XHl`umvE;OmgadIeFd+SfGF=@@9_=q|Ui)Bc0ZMoZKjKvb}26P_}v z-U4cwOi(l^Nuo)+V~CBW#`H<<r^UNaXhvv))kJ8h=4S6<JMD0^aP#iF`*nQ1FT9Li zk!-xg<bpJBKXU8Amt7x}heMxvM^}yI`?((2mDu>}P4lWp4y||sTiPp}P7IX5h7%AK z{`j5@VlGzYUHu_^kQs<Y{&5~BNi7Z*iic0HD`ocbzUjC5IC^8<M<3q=2qe7fY=0&z z`H@ri4*tWhnHGP<4z~ViFP*riU8kHZZlxXwY`rO&67cjrEj`gnJ1#UYIxZaYi1(!L z^?dhK5j)lJhlokeK6OfU5L4a#ZQqrB>lEin`vVuE3$VuYkufsZ5FY4txTU!QTrk?H zNqaRR;nKFX-HIOE{{V6TXbpRT&j%0h#1U5TWe4{(TaM+p3m)wlyeG}1UPsnz^40rF zq`r3|D6TJI`*YD7T>0Xd|FActidneN8POd-svx*@F<B*eXbj8<j_(y~yJEd0mS=#6 zGX-W3*ce;3d=7e~cSq&OIfAl^HtU)B+~(E<x%^$3UEsSU`Q0v6XBQ2@eB?ITKaY)p z5Mh9JO}t{_q=sC&3($Z2H-3Q$@L&8RI#oVAbdXTwb9aloYj{^jXdfBcDQqUbSQh-g zDynqE$sdQ<r0k`pAMu4sX~R8rSs3D1-b8T?{ZU=|rWRv*G&QrI@nn2Lv;8h{sO?A6 zQZ}sAk;>gvmC?8<i16I~_>KbtM4d8K2P@6FAOMX}1>^HhH`_P@F{Mee4?2YtkxdWC zMEP4;q1EDH<1TwMVA%Jg<=ulyk0>TjC$>7jW!xWXNs~o1%QC6o!dVMTC4=~i>l-C# zBzR_kPKFCH>ts-c?nJftcn7kML5)U7ytRQhA0vjmgP3Pw%)Cb}NM|+bGZ1wvk89$2 z{mIG*$F*{ovZ=hl@_DS6Ro_;8Q3AqmIK*5^&TrfMg0g)|{&Z^OnbLND?Q1?&F$>>& zn<-9@PQx$i-_3>}j1emD$aR(9aGi#Em)zGxCj1e*r?g!cXqjTXfcVA=QL5;0ll!Vq zV0e)YSAKg`sdR;$qGifF9jU3nU+8pl{vF}UgpKYPqlBv#C{9a+gNg3{??0Gn(?21h zSsdZ!S5bJ<P^p+6Hv_KeB&aM5E2mZa(6OA>?}^2;G)wg~^EWcwaLzsx;Yz@inXaH; z;;Bx1Vka&7LA+Z!M1q!slh~qM%no2al7)GaaGpR_9zh_b-Rj^!jChDn|01b=`A0{| z2WBX{M^0$gq_d5PDT3GVv-MluHEBrd$w^hy!gkfYilUsuLOI(Tq3f~0DikE75>SS7 z6|+3<leev>bW0DGqVnsC6yu?T*aQ^dp`s&eOBZr{5~f+-D*cmFDJKbfsC3uK8YI%E zZhiD|*tGC1{6DF3x1fZoIk<dNV|Bl33oIR`*X4)SMS6Jz%)!*N?His?#i7+E^d5;& zUhn!Epb7Dq`Qo-3N=;+R=#a9tq1kltDRg>uZ5Rxq^;S-Uuu^8x(;7@Pa>kNUV%S0K zdyX=C+{R9Npbjx8@q~~5B8KNC#(c#<N#7746&sJ`s+`)}mcZU$f-wMNl=>$$#4rxq z{hq|g25g;}9Wu%~B%7M1XHVeJ^pvC<%~IB-IR<HE^`Z(p+ldlPeuJ^;T=ETnCGmA) zNM83*aw-dTLAMKM)Z?b-SkIJbDG-5C>BU)0(s(??(eqLMQPY5V(-0x;_3$vM_Bg8; z79(ns;E~?rIAyMu11keBPK`Yo%E&1?fnll%0pwA`O>}qQQx4JGCmTIo8&S1SjnYH$ zHVzns5RWZB$5nmO(8^=G<Nk*`mU*uDP<ZJ%d&rad+Tf=RfUBp(_-*os(@S;z44P(f zX*|fv3^S9He@JYq*(#H-RY^moajO8?gJX5I*Ev_O1Sa#c5X0v54+IDdGT9cC+LcPa zS2)JeoCvOCrbr1f*_trSijPL>fzy~iozno)eXN5qv9xDa@u4`jsG4F5z#!>$rXaMc ze2Ca>YP$=I)6@hl0;H|EV+VB1M@bB|-#$(!tz2-??!xtM0`JaKk8j>i>QA6Bw6>59 z*w9@@o|6jjPD{tyny6^oCx_%gGnYab>2kYSmxw|~q$7@Mc~@Jo*a3}!EoZ+;+eI6h zQdvzi(i!8ki+|ii*3DEK!~2r@_Ci$fjigzN1rULk0n*ddApaWP)TOXy&gI_r!_ilo z<|Iez8?Fl%Wk7{OZYsH*%~}&&Pe+qQ93$l($a^7i{$f&pvr(=|4;wKg<0}vy^agTK zEYjKHGr<;J%Qf;!8@6-<06Sc4(8G(=S$308C$fPCQ>Xph7IzJ&_+~%#R($KJ;4tSH zUfmHF$H64#X#bxN_O{<G8L|jp%giUl=<bvO?42g=cH6&QbW*o*4CMTndl~Pdof{Ah zE$grrEXbv$ktJ@sN#FD{K_#J*_t5=AgT>+3Xi&{<O>vjdze`4QI*z!gAy-J~&O3ix z4|gdp9Pjg6EtZ`T<jO96`s}Gv9}SICdVb9iCtkgOg|ULhMX+@6VB0eQJ1}6cq-pUU z3r;2;<T_^KbsWZdo|?hO3&6p0Mi5|fgpkE#CyK{cNi)4zuxrD=sjYV;!wk)79pGE~ zX*tw|efZHf*A5)uok_xx$z>hmd1`YwDn#|P_j|_*;nV9I!=aG~mkncegcHzrRCQKd zudjiI?y5N3^;<^zB{98gKm?Ju09<Qqk^~zP0^%<jePfi5vM2No!NW#Cf`X>13~n|t z*~Xp#YC(-N?md5Dwn`kPaY8x54v$F>2_|(Dp+7z;j=Mt6fgNuV%G-B|Xh#mQV`D!M zY~zNgnMybReZ<7u8vs7Q2FwK<2@b9cV6t>B#W<6B_7x<-Px%i>Xo<y7B#P;@GDvB~ zC0sI#UsS~^xszIl2Oa1F981x~n9KLy0j{pImQ2Q@jb!&o0(Mz@U(9h{@N;*(xgrQe z!%^<`z0={b$QZvvp&q5a$7~9<bu6kRe9yPP49J$d(%XQuGqypA;N(JcuaL7F%1sbN zD?<R0i~W0MXYILxI+*yK%teSMpQrM|g@i{bONJ*cT^6exX*nKo5^wB@-}7#w-=FVz z!4DpNypJj1e#d6#)&<!%<~p8(j#f3M<=yf}7s<EF>NQD*S=!O^XjTs`uyNqCor`0W z``YWWb#>J@tfI2lF?>2qW|Gj2(~tBXV+npHeZ=$z^wrK|*XqvrmI@w5Pv%rdRdap1 z8NQ>a8`5LX(x>urvxv#8#@I9UP9b47A_vmGHB>cFq^@T~z%@`aI-6$ZRVM0;xqPjR zsSNLUglzc+nMF)rG7^o(8lro{E=Z6I^qA-Y^hDCl62#$K82@d1!@-2&qm#Yjd~6uO za+fT+FQVRbsPji?sJPbG6o=qLvLw0AQ74foIJSRGXph=t>{w5LI1(GG@<vt}!~f9l z7W_1&lZoXTHk{zTw;~FeZwLt#2BrfF-1p|6?||9rkQJNAo&zphk%h*#b;?8zd!@$h zXsJrG%*Hfi0QNN>4#AFY>DrfSIy*?ncZ!t)?T3B8HrA9+$w32{T*l9&atFFUSBJuk z3Y`qud`b^jcOHN6L7+t~OEO>Tg%$jidq|t2N{y?A=%Crz$%XZ<?w@L@Kapd#91J#c z=ZJ+ZzTDOr8s&C25$YIeCr(jqr+)v2kDhkPCevp;7I&9sLtOA<M6QRjuK(HR67Gf4 zOll&an3*}G_U$&!<!_F3y}(^o^xh$9et(8FqS;MZo*+5n`qEo*C~o2iS_WInb71^) zg`Zi%jBO`pLnHW^i&2GWZd9a~cws3zC8|0Gx0Hd}Zo}IoKkc-~6LO5<9yG7;klB2e zdena&K4jET^xpk2B@^~Y*quO_{PO-r1Q!PPY~pz3{k0FJJ*}_nol-#`h<EHoxINxQ z9WzDBBKv0U8Kt}OMzg>f1NOKjBBK7KOrTzEQ&@3NZf?|If0x=;{oCtX45Le|_vfbc zh6p{HmYj&#H((8{Si5}3-!;i9(#BaE-<|FuS(p<f=F+^hJ`cN|pJ9oV{JoLB@%1?= zh}qcp@_D=$J|sW{Q_ECwO?IEQ^)<p*LyT#M@A}iCpGY$Q!v60;(tn0b|NU=kILl>t ztIc4@=4ZP<w8tfqiI*M^6HDA++O&>_e)-l+q%61{4L&jekC<0W)sOZ*LpZe)lR#nY zwRkfz*@@`$`)Xk2#-l-(z@%*C3cY{(fAjxBsL_PcR#yVqxM$+|BxyNRiO5`L2<Vrk zV=KC4X@Q;K3ILf-c)dVw1?H)Qic|?}jnnGnK#+C<(DZ3WKZ(QcqoP1!@L@@aLzn*J zf%(6_fnjEJ>%I?LO(=p}ksFQgm3@GCDcGlHLDlLVYJjW(=;&-0qT%8O!n7QECYM<> z*WYvjOM`%A&Oj6>>%gIP-wdE3S)dMd8h$yKP!QV5K15xg2;wsk0NUtZj3#K!J^Q|K zf*R+kH35LS?+qujeIP)I=2SNI5+x!_!-+@`?KqR>dr5@@qsDxX!|&cJ=<x8re<%NQ zC;ZoI5xD4Y;?GZ-z^Jk9-lYyhKZwOnJ|@(+=O`tc0W_ZGp3fId^ffg9L;5)s6G_*h z=MjNr<1f`M0^#4{C|OJ=#(Zoih@HudF{wSa>4a7SAs~ytF3Dxwf%puk+Jdo!N&w7@ zvVXjG<llTIZBUP7>13*n-4!=L(1O+J?+Wwp*!y2^>^}nXzdtnSCvpS$rJuk&^z`}$ z=$|YBSMSA6Lp2!=o)G$)L}i|5_IEPcU&{|-1j*?B?$3HS!l(0&CsR!~KQ@R<&#uDt zko3ub9Tk?a<_fL|GPK!kTMe1?$?XaF^-dh{%|{XcKAidAyqo{q1x3B@bX@QqOk;)- z%l`lU*8k=;4jB-~*hTn74`Kb+E!cb}z6|s^Wx>=Q-SGgntPQ@BF4;_mPyf7QA?W@| z+~yY=LLkJr3G7xeq5mK0&Hv>R%MhYIKXoOs<G<fo1R6THGfJp{*hBeCx9`n5T%{5K z|Ac(=N{&!O&ov>y&a*yfIQ_Mk;`U7p^J&wS1B&dSMMwiCy?6ojsmiBIo^}}5pCO9B z6{rjvE9U?zKTjz|@W;N^6}ad^=&0ZuME`@-K4&Y3sh?)zZvddO`ok2e6DjR#oymNz zYE9~Y^E5WUM(uWG(qfHN|Ne-P3>;RIPXa1V0qApV4duiA2{3kFMGo5`yufTka3z8x zJC>vL9f)Jc2?V#({g-I^NPji`@u>sI5^Eq(rS3Cvx;g=HMRQpi?}}^iNIJhHH9ZBn zRp#1}Jp+*(4lGS{!3WsmzNWc=6NVWu{c8$HMz8m@zTk<WqhM((&Og-LX8QEZ0L`cn z#3dfQL&8T+9@dij!OaB3zfp`Zp|rN*%gX_|39n&2V1^tx0p8eo4K2$@C?ed&wTUoa zFHR}*8i4gzH6T8fP;Rh4NB%#r2}~Ka76|l-IQ-WIfxX5=DQTx^Zhm850%YKxI|@r> znRec9{u9jo$v&cA1{_s06qV}_iV#SnSsl9wbmR-gV9m*ZodWGE`y~JeT5y~7bBtcp zEnN?i=((+Az^oYGRui4|>E9RuhTkhz)q=wEuzgT@QGQ~h8v)OdU1p#;4}tUNU2X?V z)o(s4;>l_o*#K^WTsDA}Q|{CQu5ztYraoNhZa|+LrS`o#Z2T_#v$km|;?+PG04Or) z<COw{-W;$;*7J_qH7!MLeU@Dwk);8#rS<?y=0--X!|?xIHU51s|MNATXmKL6<Srf~ zynp{Po#Zmg!79O<r|{QXy=fAc(1`q6IV^b>Uv<!f>Gr+$A)gcOI$)^s5EBkk@dBvJ zaw^w(&JaK2*H~-UW9)z%V*`v6V87vKm8<ucyfqIl<Ikl(H&rQsI#fhy^2Q8EODlAN zR>B3WvDLE82SBKJQaja9eB5use-2Qn8|^1k01xJE?pnWnqeq^f9F3|eyrzsfrJmhO zw)aI6xdD11o<Pu56DS)+EC$nW{y!HgC@0uMzqEg#c|-WGPYcCBcMkPiBhRX344e6M zN{c@DG@I#{E4Wb_`zj%Zce!X&X>9BEd6@_rz+2?5ghUNf`5$Ip)@`*Gz7rMfQ7<{@ zydIID4e`qguxkIi$ut8Xr_uH_3LXj=zCE`X|1LN$G0g_QSVojg0tfr(r9J0=tU?AS z^hDR+XTncSF13izn6yJ>ef}AuLV3_pp3Vi&dvh&|!2fZA5|(L%gN~*OPaPu)jY_jQ z@O&uRH#55pJe#VnBB>`LUMkSPehWBr8>k2N-CSiX4vHKq#1g<pndH_y)(1Q&7GNWY zE&@o{6X0i^*3hwkj!LJ0&N~kM0Hmp5!121hWX9KYdmY6owS1(!XxzsiLZhkg{R4%{ zmC=fSZG>wa-VTUIy=&_;K9UdUm%-1smioJzfUtN@8&n9dzNT(9oprGP1d&e#iuvgR z$i8zx7;FocIL_5skUmot<f-L8WXv&Y7MesQD0613Bhe0RLX!ZcXJ+fQM&V5{UVe&V zTh?i^^`d0Me8TVcLCLja`<l<vpl{&a3V3Mi5*C1?)1Y0cR_{1pb0&Ea37rFE!TnDq zUZz!3*VGP(eOuqTva<nOALH<+wcm=$Iv+-DX)hv3DA++d09XrTCg;GKYpL7Y2XTI& zVlhrAtU?c=u&Gepo2g}j5u}0#^Bt0@n9yq(LobL$uNUP|tOfoMN1xE5*C?J^&Ro$N z;NN*C7(cZJ*&;81J&<eLs>zxUeBLORulWVcC8#hW`&cg*E_j?pW)7ImwfC%>Q)}N( zsW_1@<|opkg)3*grBXVK{0htF!Rsp{HN0C`HDgABBD1b~d{e6}*e*czv5Dm7@LP6S zn1`XAi!Y8~1d`S--~RRCqo88*-jjVA%SWY;_JPuAOZL}D@o=NVpvI(IKHCvjc(E8L zQfn{K6@zA^^GZM}@X)z>dbjP{W#8z`o)-MPyKe#rVSb)vl{CXE2~{e#3-vO>bdJLu zhc7GsRP1yUk*&zXeTcpDbzNpUE^UaINM9THN2zK~xH>zF?NjU%Y4fUpg?}y@L>I>l zqcwoe%zqBA9b=177Y(z_p9@kSkmaO06#9GHqxMSF9MZqGO9Jt~+d1>|TiW-HZ%}+{ zq>m0*kkGz^=%jN_%_W%5fOJ+~h)fy>QwHLX+7Q1cC+Pc}zfAsV;Ul)1s)I93dWJF$ z1GHYs!C;{G5s;RavDN=>ZTuGUd>Tl3y4KOZ%DyXG@&XcNo0+${O39PcQO`!i_RxIh zi$8!h(5i)${l6mmwt!nQVW2KE5Nb?RMEe`m8N5y|m;Nlu`vbXsIvj_VS_cqL8SX`u ztx3^b#6WP97|k!AhgdZMxXl;FwoAYoZi3K^8r(wQ1=5Dxh0Ql^KW8sTE#-;JUjtyW zB%>o>t+oMk?<J5Av>lxG-T>p}aY5!K&K&R)%kU>^W8>WZ>Nwy^%PINT2>l%RhL85? zfOX83uOIpO2^6j#;s<04xhj=RF|@Bx+wC)~&Fi28pVPW1Qbu{ZbXa0_Fr&O)_Y?p- zTY<^Spa!58r6gusTBXjuhjTaPfSExK4~6&oQix1B@an?009fE3z&@L1hj9SDpI_OK zMs*SZ7u~-v$BM-c{T<8HooqmmbZ~QdP?gZ|(^Rk0bVtR0H3c1=P?{5Q%N~t>04)28 zr^w?S72nxDr|BxJ;+JCguqed<*K`_1pG}Bik`qU9qAA6Clf+Y`I`bf)+MYed)}(qw zgDKtZ?xrE-0tD<d)5&0(TB9(A{9D&LF@oLU0)VG8oW)WoorWcp%`#IZ?*~o?`uN{h zpnCq4_L<~#1E|LSd{E-{+{3xO?A<l93_mk55xMjU?Y9@QBX6=3>gi6$>i_|EDDm~a z^xHx$S+&`&m(Z6FgEkVGteq7gL&KZtYQ2)`-p<{0!TcFiGqPC2YCtI(3b{rsNt~ki z)>s*-wShMQ;+K_G4FfdBlKAK>$HCQZL4p#s!#(5NazQbQ0{UP#i}dg-W23QPu<WDr zAr85VptWxRX<fhAtc$31Z4;Y4#+3yZO*bC@J3w7l9&P^?n)-E6YBW~_OwsrXe#m#2 zU}=0jHKJINC3ZP8RDYcv9avZ{_x^;O>KHs%6WfsVs<4dW#)5*&ohen<nVh7HyKl;@ ziP5grcJ-LJ)?RNhL|disf{h8W6LR!-I}~3A<HQ`$ECLba3n}wc3T4rA6B^HiopqnJ zkS$Qe3u~4xqyc=2s=0?K=WD2zb!>@vIxl*}n^JFXpO*L_rAv@m6;atra|jSMYeebZ zH@_2rd0_{hi0{{6S3%W%d%8LT>S;hseoZe<V^Gp?;y~Uu8PbMpz1z=fbkMHX`9+T} z*{5mgVdqx<r0S*>Dpztfk)$%$a|DF-w~XN<Vpf=)A=wagE=dsK|5s>lALS<}1e!K& z;zOHbyf;|&dw51Zqv-od!epihO1NdKkmu#xQfjDQOlUSYeHA^mDg6gi`WsUe^P1be z<mgnIu}}J4cZCA8Hb~yM@zJ@6&9x4~`PY{|VmHCEMWVF>KEMJ$!1NZmi0^R6KH^g9 zH0R26`+~wnUtNIa{gp!tzm+MJbrWVnsS+Uk#FYM(3F2m4AsAZ6O-v?2^ZCi(x_jQI zsCP{Ch~-9>vE`gOW1G`%z8!gAdI>W`>F^1xiU#465PG&{n(6N)Gs|+f7n9ONx|hfP zVCQ3Q`{*|lyIyIde(5`hT(n9%-is^V#PqWDtn@j)0ToSKA_qOv^wt{;8%$Ksnkf!_ zYQ<}sR`6}RrEm31zv`3b@0OGLh)dkS<!+1g$|;8(<S@9$cQwJ_ib;4o)Y$Gs_B;?= zE(rNkICeVNRk|dz$B?@(s0t>dy`bINtyJd^TDag-Wq32QfNRec8=*7Fasb%Q4KpCn zNbqf#tO=1$3Q0(+mlqh+I-DX&3sLk*L-y<?P7PIJ-y8(X`6kH;Qe!*Em4j&5szJDi zrgjrFIQ3L~<bd;iEN8ybf`GkFz{4y?FdtW~M9LryiRUivn(-$@5tFS%itFQjv8|?p z$&vdruY08x+Da)=Tz3=tac9^d$ZAtVr}grW-14FtGq3OGjm>emXAVef4O%3G(M`Zn z_Jf-z4h$;xMO_wzdFJB`vjVeJqilrm8Boql0_UM`sQE0v>S_Vd0C#Ma)<G`(l|H<Y z*5<mxur2#iO)sA^xfgp$rnmy9WsaO9*EVjJ(|vwG`cA(I5_wYdq{w+a|4C#1)UYO^ z`E%%tT^lCvI|zw7nCSY%uqoy>@cHf5)z;Eb#%`fVD`R;dsEbZGdIV&9bK#AT^o>)Z z18o*i&*4kKRkFW#w50grF}KpPyO^-<o^$q4pAfylsRs|JA;E#`RZDF9(#ZF35j};t znWXs)`;vs$g)Q;m%5EMP^A3&yyA~*(+|l&>(=Hm_Z^*Q3MzKewCQOXuBzsHfE2X;$ zJ%-urb<cj{v~_7$$j|s5RavN{)2UqN;X=Oi{bcrQDYiS#bsF~Xz7jBwh!q6r)z95U z(}<J(k7w-`qbRhF9c-Bq@<^j}jG=Z;nFucW^hzP8(eQdN(-`_NMjZDp1g?3JLf`s> zL7~QT+j`)Zc9jHK-a?$jXL|8^_$gJIMKEP7IwOZ1J|a8r>5nMj{`|ZYFy77RYA?yZ zVT|JcV?f<^ALJ9Eh1(NIa?zKpYg31Op;hn4uve2ooNc=AOJkb&q4hAXB&k58iRDa) zV70f4bOtJ(IabLEF2X6!@XDv6!Hx$@Es_z&W(jJcvy3q>c$xWCn5;%eQn?#q7J^3( zHy38ok+2ho(#qf)f72EVb2l2rr)Tmd+Uj<FY`%VbCIS1~s?`r)DTUix?*b;kWJ@6f zaSUcRJgJK=`c;y~NF)b=#qA8Z^9aN=Bkw{r!ZSwj4(CHI=rP96aOe9o?Ks#;R;lir z_Vm_=o>%WOqjKE36riK0T^BfpirOWfmr@j%p=1t)^%k|o0fAAR585o=d@Cr4!QBn2 z)U|o8A~ODV=qKtdR(B0^A>4~}1Nw)E@!e_`o8LBG3u!|Ny3MV9&HU3HkC`$B3f{@u zrYAJ&#S=Z)OH#$_$3uOk(|nm%>k>oqDL{98ssPv2ELLDBvLjAnpfR;!<iczr(7he| zgY5GtDmvSd{G-Nh)}N>fGaFiJ`xsqo^IGkE8~3#^Di(v^K_ej%{}w-W-gu-d%XE4j z>&8JumWu-$zi43;yQ}s$hxEna_(e!>;QP8m4Zt3u)?^Zxc$N>9FcaGX+=BLhMEutL z0-+qJh<HBlyk{Zi$QrQ8dSM<wPclUK9z<5y60E8C|60|9h|uu<#Awm#N(}Cj{Fcnz zmy;EKkIiK>wYQ!?%;!i-`(Z`BbUQLyqMc&ttdkf6M=scHzL$_b(aW5^x_^yaTD%@- zm91FYV3dL|5JZP&Rb5wl5AHqZ9F>rhnKc_``bp>Gbhk&FT4qzv-=7>)p?>GlP|$3C zYpBP<Vv%6A|5-2}Pkoz&%kF(<MLDjxH?eYPJ+~e5E3?5JW}M6HwVYQ3*M;`V5m4!W ziR9azj5c~n=e^<$Av7e~GSl2PFP&v4{tZf|Rs~b%!WLHLuy^}M30hlOs$wBtF@hJM zs=BBtR=!%MJ<Qwtj&fwOYk~U6Q+>}O%&pLb-rKh@ny9j3-zLYV|5`<RyOvZ$SYx?N zX^vTlTx2Oen};u>WVpbK=3E8T4VCT6pDyYi9lx4OHm`7BkfcX{JLkkC=FEWa5+3ZS zK3iHge%*lJ?!L}Hms=7q{vEH$n3;P?<g*j~VzOg6Q0Ku~;f3b~a%XWXL*&D@Y9V$- zS>gKAJq+Hj2lt3e^M5fNI726bAJI6^mF6H+)#Fzi{zeS<(4Cze!Wg3bo28%A?siGD z&2($ha*&~_&v+$nf=9Qz)JfL^Xm}%N(SsNxq3E-Nldh!?2W;^i=biT>uKSDd9B&wG z;Dr7H-Q^KW#Q(LMiyM5Qr)^CN4KzoEqx-;4tLsQNn%?6X(KDvKCqR53rd>4)j^%8D zn<GJcs!w^Hd{}yx%ZB^slHw37MQ}p;CAX4vuA<MlMpGr&Z<0d-iuRmDq@g^-XiC~` zmBo&kMHWi!+#qoBF+=!_xv>8UFkh$Zt!T)%OkTJuBHp4mIdhdpauAQn%pYvMmlLc6 z@%J2v!xxSYT|wjyrO)~kN;`GvuC$)q?G61H`bmT-+AhZ?Q3+G1i{vNnGCh5mrJ^`Q zwP*c2V~vkltu$_{F={AoAyL3Fr{}i;NEl;PgBH+tt~&V|4QCri*CmRMzf~r2#Txv? z7CZCrX*1sQnCW?1_j47&NT1#lpfST>>{1kZp$Zc&FR)40bt&jI;T-hw0l+CSUUw#L zcTA+mo0CBxFaBl9Vx&D|QwIuzI?&orR#p6;^JzNT@n6bLY1@iO+5Q5<sm0-8_8Y!^ z#)+2NWN<!CNDZfN-{)^xEUjf9Ly^~IqHizV5{kT%)7ey%^xi3%h-Xp8=n^-}GXB8z zexBXVE}7?znz^$r1kDLD^Ij0$dJr+!4NmelodEl6Pen?5NJaKt`uL>E84maP-@M<S zEbPqabv?G3e!Y96cTT?UGvSqOORKrf#bzXzFdIcboP?8}Q}k9T_0!z1XOA>(Vl}QL zmXzAP>Oiy(yDJ7;G-=SI4M(wl=nAw(bY~MR6qY6?u1$0cz9=#3!)3+iKotN>()cw( zwF=+rF%5=4DIrMEnggYmQ401$15w9_x(!1CU(0p@?}u#D2+r(~O>nF~_bKXh+joS( zl>#0e;^lW2S%tFe_y+KFOV#(>t?OZ^82J3GuY#yudXq19xdF6%|G@bJWxsqE9&>78 zJYSeX1Pgb!Mu~N_WvfnWn1%*&I)Yq4v&bAMaTy|XZ0Y?HN%E=(B*L-lX{v#j)HNc^ z71f1z@W*l_t!f5Li`h`yJmZad=kL>VzLjQ+cww_Hh3QLkYSog%sh4w|4I@G2&LalF zw`AEUIozvG%y-yh-dzwPS$Jnm;86$0Y1QEV_AX>RIFM=lAwFEzyqTp-sBpO^9nx^S zPGu3Ku|AhIc=m)zk8Hn`l=nV<mzAL}MSFmBAFI=0ND)pT)WUf?8(-ucdLv|GrIxXC zf#x%<5QE<v;KSryg_1q2yVvHz#s^3@aLvwl#H>}2tezA5&^_k!;mmt*bCU$N-9{3b z3x3>&AE3Xz_9v}z#NJUxl+MQ5O1(1Gb6)bax1{&0O8nUz!i!s}QFXv5InTpOun(qA z^~k>YoUbF5^KEGRku`jK7&OLAJY9-N9!X1S1yE+2DlnF~=hC<@`R64exvX)O475}+ zN~1X_1<5O@89vq^%m*OF@dTuteHB?sU5q@c)arY(@Yj<)vTDa!?<i#GCVFJMB!Afl z@KV%#)f<i)!$!?pD=bMap-QJ;PpcEF3{jFqy`gQ2j5_ydcbW^?21$r_mfq5~a}%z2 z7hnElbX=pvoRLlRUM1;bS9}$CsysX+MX;zkgzuUvc}5Kqm01Ti@OukUb=3;5hcsWt zXJdQIq{WH4a3VhrNtE?>EoC?McFhgB!<~7=s#+;ouAl4=uAFh{%Pu*AA{U=c(>$l8 z^M(1jT=H<z`Pr(M5vmj)`ldLx;GZ>0`9N`c9mD3~{8WF(D7pu096_2k07HBY3hPrn zf$pRFaA|S8k7Uyxw?nw`UeuDCgk;?b%{<!&n;aP$=O7B0@kD0q)V5ceni_vi2u=pu z7M~oS^zB?GX5eZM8lguw!Z9AjWRT(-bX5=z&>yXU%Ozn`+KKOR;w{E7k&8>c*d|%e z8(n`s7!->$Eq%?rNj1~q_P1=}X7$Q<3%h_!yHAqu9?j6yqW~UNvEES;IjZN>8~DTc zyr%XWC5FR6!jTys;5f@_;cb3Y4$eQrpO7+0Ap|!X`TG*^XYDW^uhYr-!=B!kf?S00 zClR&z1&ojw2|3V5SEgb?=}_g8i!|ZD&l-Lgn0lOSJFfKTy#+eS^VydHlm!)r>bOoy zh5~XowIbTjXjlg8iA8k#XgFcuw+JXmW-B|Gjz`wWIAhf!g15O4w`wRQWn)c-0~;~E z*Vd--?-HT?YjZ<OMQuX{4h+rNjEoWYX^SP^n%iqs-O3<;e_Pre$+f1@nbgrtMkFM~ zH~Qu<MZ$*$RcXL8HXL9QJC_$TKg3@b!LdUANV1+Fzz`)@)USCm43M`U=H<kQ5x6Iq zi{?)T=m|-V%EXJ*Vz$inX)#-ZpL?`RHKieAf<WnGcnuQ{j-Py_c_M;QN25ZxejPqf zvKboIBasp@euYr>Au9Pu;l495rKi9cjG)HGq(H>Wc|D1uD=u$7(@wQokhv8L=ciTW zq|U8x`B0$?Xo99Cm#-<c3Gb%UT5`4wxXNRk8=z6ZJL7cUq^qEh&~V{jyIr)zVI25? zn$GV~uL~qnJ#idWqiC?jA0aB-u&;Yga9ivrG2+hR2@6gvvTcV{g8F&t4=IT`Zf75! zH)4sugK#7lORLy`8nu&N%ALYV68hR0du7q$L&aI7D7(Ld1eBTdB6>km%{k7NBWg5? zMCRIH^ovK(7g~xZ)*tNpOnAeSMUGE1|HT3bcm5Hj^Y!YPs_aNncJxI=3Z4+v-8i~! zgM<L2;`L9BROdZ+$hlnNxWGqS>#mqwI;N4P=jH}OS>6)nFBhjV`bgSUOW3QI(N)lG zNW;;7I7aTh<$w|~)!x<a2WNmg+0IQP%VH#4Kufoyyq!@bu@p<~MBRjvdDKKUK!{88 z5Z~0qJ~x+#dVyPdx6)8)JuBaBq<D0Yu4H;|<oouIa&i4gQJq{re2f(QLuv<+@Qpme zZI$lvij9in1xkr@ZP)x6zTLP+pOUEw*Bv3}U2OYTmf=Z5EuwPCJ?M8xk}1L2;G(Sm z_H)mu`V7`#Po#P2K_A3K!DY^#tT*7p?`}eWpGVikvuj4%&@}Z@u#^OXrG&2=wUi7L z4gZn0Ro%+V8doRb9!Yy+`Snx%fz%urzCjMX^m2AK3uB6c-$G+4#QFDO7e^HF@Y^bw zZahpT7Z~T!o<dp*o%)u`aZGhi_kE5|r=i4Cs~xm!-)-@en~GZsa;v~F!7iiuL+cHF za{FR=yQL@%nPlSAFw%VMg4YqoF*dTM!h<FT>@u9gw&cU!R(h4J<IP-f&d0{dFDrA` znT;KwZT_~n3v8?TzXqSt9&#B8Nj5GGrQucE$dB9_SsT7pyYDd*4RlRyH-%Wkrd8Tg zJpL<lD!Imcoy@7=x`*{ZEZK~$wq~d<?DdxpCYupB)12oEs}`9)ao%nqhAwt(V1=(V zvezh=vj^zSnJ4FGv5fvRigB5}3EY44qkOjNvy6*L;ltQ*DDpw<+YOhTQ2C|LsVAW> z>OtkO)IVOVmdIi#vsa%Zxr=NzgRjK8h;JHl3jZHrv-451Z_``Rmy{{%j~8T{)CLha zi6B{3>QQHH#ZtDo+{PYeB6>67oQQ)<?i|pl_C^%6h%o9xPNLM+7gQ*nD`zO;y~b_Y zKKEj~{jFH_MEXHfyz1O4Beqo9!(rj&9`EU2MvAec%NF3n?AN2|apO<wJbcoJu(vfW zUk;AZmZ;2t6Nq?N>NZ#GJa=bc#A!6Jo&UVe?j}(Q&X^NA74#~y#G$KtP((;o_;M@F z>3Yp0ZTF2&+_6zyY)@Gtr2@H@s3Xf-G#e40BD}^r!|V<$)7if*5Y<OB8_8Kx(mR^c z$5cnIgB2{aNtRl=vUmNwzwfz86)gKYD)C-$h)q%m<|63?W6@SXSqO=|8RBN`wf~zp zMDFa6b9M+hOO~~os2s+I!ji_iKTNu>eCqn)HQvR&*;ragQm#5l_H)b*Sh%6iAWzGi zhr!(vi<3tp#MZ(M(^hiuZq=mv5tGlf$K@Hmtn@lLxF?fUJ*+zriGibti2E3bj1N*t z-Or;~o09RACJ1BOxMHcfi6yw)C7ouZi{;qQLQE3qPJx?TdD2QpmC1K{V%zs?En9h1 zf}+@xb!ODZ6I<WQIX&zjiqb(M=<b<5{@4yVRHF4a!%U<zM$#^O-Rfb5p@R7z{K<`l zJ8`;kJ)j%@PFWc1Xw2T_$k$b=e6i7^f%taBbs-`2q9<p|*kap)1l}pgrzc|W_5ISD z$M#-t#<#l|;q<S~>7STt+x+;nN6OaT_f4!FcXB(0YtH@+Q1VD&hi<3#Xy^L|AE>5o zGZRO1Rl0oj$&8lvcoJC~iU3uIzbnmn5sgv>YNe@2zpR$K7%}gDX4BB!%0{kIo*ISt zHu+4(nv8zYGdb$ZXliaF{xuqL6qh@_vxpXnDu`Oj-LM;E+{bsOem8&?!nfK_%(3-S z={?+&Syt2LVm3lDCsMQ6nJL(KdrG(7wxkbD-M4=jkDzUk$NDimb6L6LdNVCAT40pa zm4)m5DcUyX2)bwSS)2Hf9o}^STfEgUkZCLBPUEqiA?kCEQa5pig1AL`HgND~Vs$m= z3Xxw8<v*H7{su0coakhS6{e;+Ma+-4&@lvM9H1R_xAEq*4wF(mcJpkapUGpkf14}% zju-oaRneOxsH|G^n`9<)rvOe5PS(?n7Qa#jgOB>uIP=r(%iq-uGO@GXRK55l?N8bL zp@w3ixlY00H%^{RfoEMKfhv|1R**i{hZJ-;CXr&2-wNTH5jo4Zu}kOTsUn&V+vo>7 ztoRy9CVTf2D>9;7?>P6+I`7HmI)S8UES-`;>(j6amC}-}0+ge_?^0faaWm%tZ?BBP zFq~I;E=<6X%E5_~C!-_;vL@yc5^Cb!kL(dDYCj2;D<1o0xIV&5*ue<q&-6n5Km>vw z16IdM!yU(k^)T~pc2jMcbPAFuw0}^pw1aB#_wt?*wJ_d3N0nZWz1NycUqg0xeOB|N zFu~~Y-$g?9aRUF}j+Gc9vTXK#A&_8Sm@OE;)h1gT@%^gQhkY?0^ZRwkYm$l|`S84T z7BS#qlhF17hgkx|N{d<wxSB*-iFOHFmT9k8eS&!;blx++mca~U?oRw7de?Yn^(?N8 zXU(Yd^^?Zzv^ONQE#l*>6og|<!Sh|0Fy8pvIKfEEZSHR4nGo4Tj=0=s`obKmX1~yf zM*gs2A!147yA?GKPePXR*!vk-yv-K}*iY7lmbG-OJ61KUabSh6cb?D(p55uOuaHc+ z@b9-M5NB%Qv`-y!RVWdDWJ-ibTT4&zofYpbMS-?#3o&_&IV+O{$sYE(49WW8z(!RB zPGVP1n9ehGSvp3eG}hiHJ6REVZ83Uv9|Vu<^SqoC^~Fvrj;q<V;+dxK=$%LOLT*}= zS#9Nt>pUmae$vJ;p9fq;62Qn9*oo4=u`6N8Syd!$OLwa7c<xYai+2yj6qTwZ5ThkC zN9XLxK6sMcja@xa^pB!OtV#M{87>9ZHQFo=(pdBblLb?(qTHovMrfldc!Ko`vJTEP z7A{7lwedQUMYKHSwB^=OK{a<STq?GnY%&KKvP65;CaU<GEZAD0_pMgtZx<L*s{2kA zWm&%a(81bmS%%*dgxy(C(&(`yPg&usp=o}SQtD<WiR$FSRgH)Z{b#t}6LBkuG{ns< zpao}<%|d9&8q`dW(O@?MI0SfFwZy+U+P}Y~$zo;IL1b8h-ppp4S3Ht%EMYE*mvf*! zUIs?8J{C8Ky${PhMRZ9(H8>oMvkxj))2hjb`%?bk7z+onV|{jDO;eGa6WHiCk!Gi- zWpyIgc@XJn6YG3Nm$0uaXVRfv)$C`!*`LG!)vs<u<@OSPM}f$0!*_{>x*ccQWj$g) z{Sk)WR9wIO>h<*uO8^YFbl9pwjaP^{$Pq$Hi_66L(d1e3n1!I8`Z@<xbyacn$(-Mm z%~<|04kK-Iv~Mly5&S=ly#-X1YZvz|B_K$MbPqUmBOo0^2m=TRinM@$G9W13AuU}) zD=E_AAPv%>v~)>GiwvE9*La?Dp7Xx%_r_YRrHh!k=f1Dnd;kBxoz^rG3^(^57K6xQ zVX=mV$M4?oBuAxMnPXEohE_JwY;5o>wiTT|^+=oqQf`w_j&ezwkI0-5hHhLuijqdf zv^?(g#GeNayS_<c_Pj2BLKiN+;~??5ee1z&n1923uraxIrvHQMr*72&nb=j4U9{c) z9rwVbJJvnZ>0)C!O%!X0co1XJqY4u6@4WMz!!7@aUI+sePCqxawNpxZ06{ue#H24A z(Fas1V@}56h$&Gss|RofAKr#7yG=0;mYX|;^VM<i0+A*zt+WxhC(@;S9$x%m?H{hY zhCMz8Wv?An_*<X6V}^u4Uf<2-I8yC%_|~&clcNb;hGt9Z)?}smd|q>oR?F)?hKO22 zb=jbdk)Cuj!;A%`ribRZ(dKiGQdy^;$q=!(=XN+Mt`J16?FAVMRZPTRN?5Khwm;jQ zlx*G{B|W_sD*-BY%Vj4a_xusj&OFI(nbmGyZi7zBnUd;~6>b4|sV|A#hg!!7e$FaV z)`Cdv#|R!5_D*z^MuMBN)eQk~I?wc!r8`+m9@9Evi75dv51DPw30~HNr_V;TbWU8h zSfX5h(L^w%GX`|@lC{L`XklFhraXLUN=sf5j<&7yz26Fs%QuBebTJ3!+_;#>O{W(o zDOSPPaRged^F)UIuT#|W8nI8q=8Hg;+_NmYiR~xYs=`qc<XBD(IvLr$tIRW8HE(5} zr1r99&nbWv)g1X-c2$30Unsh`d2?(ChMU(s`|h`jRFKV#Z(GjAhdRj*^DjGIP~ZRw zo>r7|l<|ME$8cxd=L!P`g7&qa$LKt8gsu`tHO10lv?x1ai<1J(EcunQv_@<dnaaN3 zpqY<Q9@a*<QQNVv&>_ae<}~iRX(3qPm$WNRxpp!mj%lhDm$}OvELZlS>Gq2-q9|KO zuj%P3(BM%pS1HQkb?dc|c}&mh2iZTGJMO&KMp}LS{oUu)4j^*)AjbPpX{;ounZD+M zJMHa26k*+dAl=`f;V=3*7|%)`g*3lqCo7oR4D@Q=Jl2cWSK>)&G&xl(FpZCAAX0&M zvTn5Cv`Hk;CQ`4rshLr+>{__Xod0T*F*~sleCxNaVb%-qP%`snP`{WLy<4S@KJQ8U ze|2`?`pU+-UG1PLze_spMuihHgE{{--AE-&ZE(Z>W#eTDEq%zUMa!D9U`9m)+a>n% zE~mGv*t(D$-x!VAH~FRE+!0KXAieG;=^Ed2Q+1Y&=bKQKqQ8a}_XgYa6_CCogXYBY z4c})NjF%;@OT?;5Dj(-UNVjpTEtl~|*Bu1yjF#rE!5XeF)F$wK6#$_jImO*IxSG8C zrM$q3lAcSo9nzn(U0uI7)EO4D?BXIz+UDGk%j{fLhPtZ6e`lw<gW5Bp2e;dz164ri zg9nYB8k#jv&8`S!k7@Adnf6M;i}KFPZr0i+IjW;2OSf%Pn|`=?DePTr{63BJCF4W3 z2XJm@Q~UBb+Lz4Mn(42#csCjfmW$QrMx=U<i9P%g#Sv&FBdyGwpC4Yk2#tPoYab8( z$pHk_?DkMnyPdt$aCCsxCqVG?$o5~|1I;-w*+mGmhw<W{dPqQUi#rtCfE8&5D#mjH zmW!0a<~4Gt%)CaqhtqF=;6(bYO=FrZcboCc6b?KBG`FU!kvHvv>hlA<qAcvnBN2C) z*?nDQ%)MhC2vM~N_CIML4qzH!uFlQG_DKaTh-bq6qt<EK%$qGNm`<Kl#W!(p->Z3k zaWGylLm&XPM@U%r-ZZn9_bkxL+>l82(B<z$5*SUqi@12d_@QIIhld3f@fefwnqdkS zZyh3b3G>I~%YAr_p#mMEK@>~$omn5)h$V+I!u<6&I8Qvr>*rS5!yKymUUc8Gp4zPC zcK&vs(b`zv#A=8JB}u@1KBT%z=aN6JIQwTi_ILXxe_~$9NB`pHQr-Y@59P%)pZwJ~ zzq1LFX0s3*Os@E01}BwjhBIVu?4)|b{52C*M-FnYC2KC@Y=L6QpV|^<LXblFw_CK| z48Kgk=4}VhT|Jw?s?h(}sxbN3)8qZE#xM2e8aCuFuC?7~;?iWmzlALpV10R(@nGmd zheYvZnUN|8*V9Lc8h#vZP%Mwg+5Rpm>;K{>)z2Xde2U60w!qHucM#knp(4*HuZKUn zZ1NRGC4y+Sm{ROAJ^oCc1`XHbQHF=8>DkP~hK1tH;CUe^hG%bQs_`Q2ZWY);TCIx2 zN=<i<ZWG!I$ETwBgyMclo0^Wn$`F8Q2h~lUPkGZ-&HdGiVDFRJ@6+*gwO3H=x1d+O zGBoBkuc9EWl;&0TgzsNqyuyfAn*)*XwSn#y8%VN8R(FgVa{*;KQ%uw(3Zzie2%cPO zU1m%67wD&-Xp}be<v0j~ymZ`Ea({T%hezWuCc(I?a252}Z7r)S!nDVXDd(?2J6z!6 zYwoO#Vu9k+#*xNxXm+|&aCM2Yh{hQ|+I@zegEj1*ok+B(Q(!@dbM2llTO)hpoMW+O zs?+8%X0w=-)#cmWqTSu9mQ#vtFcneS=ZucDyqdUt+Bj%`<9krZIuiBM)+>eCTQ7@N zGsrZC9vRyuA>bGXh2!24aP!a+j4L>&KT(VA10v-fnBu`FPLU@3rVmfPI%kkbZ3!lP zABXMlHG~CQLei%|x-T`RcRoR34&;RgR{K6|f7dzI$@k5(vfU&fksq<ne%4Lltiaff zZ>0+(&CO8Z=^n}3B-GqGcC&gePQD4p)gR$jrJ!xIPC0!W&M}gg#PLe92%+;@QZZAd zE7o^d19>A>+(Yxl$%1j`FO<YN>&1JJ%PG!n&+QQ&X-_RoKWAqQu#Yg_Tu-!^hhd9o zw&yRORXQ*-UPlh%z8PN<ZOCoXZTj#bt2$t`i*)MRFO?>M3?TIIw0j1sC-o>AQM--t zL6=18y1SjNV<IjGl;lIc-Ama+uCqW;SJ3k)hS`S)9bZTew;PEF*w-x!9{mAD_R48w zDL?Nsdzv|pXw!vRmY(TJZZN(7p_HIkK&X+zvw^dnjG_|t$os|4`V3MB6pfk<b^H`U z^BDabrou55KO1cPQCVVv^wf3DbXbF4O)A16UmG^BL9sR0tfXqk8g?`tkzJI#lQw#h z7um$<!+eU|7qXKBmc}U8Mh)grR9KUO5TLegR9h^+(~^xyZQuD%Auo!SR!%r;hhwlw zh$=<3g&bifw<Es$1t=GneE6rfzKTtkh^lLrc>0;(CZf)OP(6B@m1g8-R||r41K$U$ zQxcMQ{7H0n96~V?sFF}9QxlW78N@)#BZwOL{3fgX&2QSHVKew)%(=$IwQ9B2YMMbB zui>kfQY^k(l2cAC%NAV-u9KtT+AwihEjHhZ{Op!bua9W`M8tB+xo*Hc^S9OJ)0zZ# z!(eL&(d~~^#mDa9?y%v#%D1Td4qi3KIO(yj&wuSCuY5fAz7&@jI%2(;nwmsFX7CgA z4GcS6CoJ%p@daI(O79i=hK*WvQ~9KuE(ylr!XwRQla<U|s&Njvwm2as9%fbJM;oI$ ziz;I<hlBHjQv<o9_ucvwE{UGOUx}vKLFdOiKF;<J)~I^v>I=dI9F*3QQ;H87!a;EI zK<=mos~+mi?rc2p0M_rE85+HPlZJE)lrKXvpSt3K26cU}UGt3O%`9u!d^&c$C{~7E zUK9mdQ=Hfq`;OYRrFE-{8`3N@y?{CsENqXn?Bv^g><b-QRVYlv+j_iDSP@A*y$C&3 zv7RsSEG=$Y@&Z9D1)`G5C_Uqed%9^gA+^xmZ5|)$t)yTJo|wcZ`^<aysZHH2>P8PH zaFaVo@Bg!4t``Qeq9lLF_XakEO>-4y41ds$ozp~*IR1`0+F1LtKP#a{@<##Rd&imf zFX@LMA(?qjSmkk5AO9W}$MUtPBC-j=RK?4nEoB>{=_@hvxHxx~1-pG75zeI<Ke>V< z6yD?1{i;0$dspd(M*E$pN{|}Se>RBoCQ^aS>KYV!<AjXu+ImL?aisvQ69sv!giz5g zzEF6ypo-XKYDpK39+hB=P^?9K^8*%5_*F8SYYkm6T$P``*f@HUzpb&@SlTl%tupRD z&(nP0MqHI=kX`4*I7}2W^q6IUh9p(cW-)u7<~=9=Rayqt0`_4-n7kTiyBRUf7gjzC zZ_BDoG~0DD!&o8$0pcqZ-*5f)jVJWztfF^p7#fMc`mr0ELI6#*u%nl39dOr2Eoi|L zNYo|Qv5}9fa36EqwMex1V0+{kv)sw^Z>79J;-o+ZlkM5tA|{Mf*icnx&J!lS(m`1A zQjU=e2P%g4&^}6&RJ>QWKdh07OGJ3p=L(9<d}Y1WT8{SV%DbVJAV(3bJib>Zg?ZIC zH_1YD!vYfBuAN8>-v-7^)dZKDICLr+1OcNQ1PW^q#Jd$3{qq3Ms5rUxvc%9jmzSbe zfx>~KM6F0d@ouq9sJ@<T=c&YtA76BFxH`pNnu1otWLU`iL1ZMYJg@GnZm#iIT`>uE zXuFb*U8g$txPhrVy^x}Kr153qs`2>Ax?3SzT})4I)xDbQeO-6P>g2MMC0F&)Zz${L zQhNMSP}gKqK4a8w2_Ea>!nd@=*}`6GcI%(2B(c?n_~JS%P2<-x-BActJe8MIc%0+c z<xzM~fBtsq*}8Zy4$%Cp7sm4sf6e1=H|z~-(uw2DM&IT=DVhrT_EptWF8a?deUm)Z z9wtv^Z!YCeQ&`F!`8@IR$$2Wrb&RBau1V2hg#T*(&VHR*c9PIfz=E6J92)cKr0cmH zsyp`M*uP`PW9N5b86Q(g$xeIv)eLOyD)4jar3IfUjn1t0R!0IGUb>a(D4*CAZ*u@{ zSG328#Tq#dt-RyII@|$~pV|;cE6DQqzb8YXow|eG9038-Aocq57`#&6jTWsyzQ>|U zj6mvCw2yb4mtoDSM%~WF`+859P`B-BxFd<=kZ}qDfd?gTW#n!0;y(+A6NlwJs_Q~3 zdB*SPM=iG~Mn!rVrJyTwJon$Nf>hswI?q|va`PDLp(K>X&cUZmqOBB6haf3gDJrX2 zUxEmBnrV)u8(ZAU5c7X67$DgCvtX#QGX7FAiPvESKlRDQ0=$`B?$c<s&9NBh)FOzM zcJfV1>wZwmV0k2*M2d=wM6D=5ul_kfkvDLk7SpJHn|Ik<t02SDyL=BOz5@dXAvWC? z<$uY&2!s8*U;K<P#-*M&4MI?@=y%nWY;&Xwi`5(X(PmuuXiA(J+!lVG)Wm-y$8ops z@ZEVh@u+9?HsdFiG<3kc@v5(^?c3>^j2^S4hLM`SERFRw7v2J{j$2CxM!t0&Y(Zw8 zrTd&q^_HX|5bD#zU}5MTrbcvLYn5Yw`bnkcwVg^l!EwSwJ#~8PLB3xMb}UTGfrv}d zaG6**ixL+}wD9xOL&ZjP+^{m;F~8k{5BcyTqh^1-UJb+AZu4y;=OV8;C!_xT%pqBl zM{;VUG`Eo2C%jV0D?Xy=T!qI*h7h8=$$QSqwaZGCWhwa&@{$Y;<GUU+oE(GVFQ{`{ zD@iJ=9Gr3u$7Qo+n-B4gzRS(MMX~%!GWxQBH$-N6h0ly5K8vRydvm?k+bF>=TH^i2 z`<s5WuHAmfFNKarJSnrw+&z}PmNk|&)p?@3zQfa&`Dc2MHW=`~sv?akodmqDo=f3n zm2*GHT--X6tWuVD%YDB_Jy@8N^+DfL$T4$K6Meg=iT?VmHl3~<C9U<Dv{juEZJzga zJ=u6T@l+R^fc{?Gb6_{ch_pO#t2ucRs1MKc%T`@bvfFgKSHw5%rPR$diDrc3uADuU z>WzQJrx@uY?D3Ybes=sLuy2WuK>D^o2)Vs^QWZ)Q*~9j+X3zSFR%GbMhwJaCxRPYz zG3*Q^v_xaaDNZaIp?UjGrX7A5`9L`P+BDTXCdNI?I1gIra5sjvoUaV;iTdtX7jpU- zQlE?gi$wvPD5zma`!deSgLW&mNy|yU*0j*~9?8P}kQcIi`#7+seQ8&Ek=6NkUb1Ur zFI+Y_?Uc)kEFm~!nsv=)%4Hj4I$PL}tX8MnT<QJZ_|+qDKwf_Qt125_jvB0`-@w#k zB@1<xFUQ5_1#mgKUR0~~Oakfo`~kASv8v-!cgAFi;fFdE&8c^N)<!tuI!v15G29Qw zzW${WFc4=p!Lw*dcd214{c!vFpGjnN>Tcqrn)hdWb(*4k7=3fb)Hu!1Wc2YeoP8bM zeu+{I$(NqGk<T3DaD4`Bt)l<kT0<?KEr6s1x9jfQG0b1z<X@^LVD-F)D@l$O3UP`H z6H=0&_N&8kXgnCBS72iN0P6_-kB{e{U<Dk_Xs~g?Y*qXmvT)^&eTkw;{E&_89xcaO zx1QcOZ-qN-Zr_{S=u#o<AuzX`eE<>?xdiGIjDQK9nqp`437(ZZ{j)MmjVV`n`{qL4 zAu9b9vpIkHr&sR{q1u*NAr3HEs`tE&`@>pS8OQ_pZM`PpOojFFkd>sqzKou>$HzcC zkkMoL_}P%ft}Jd5NN3E>XEVa&n*_99Bc;o%(f8JZuY_fj${w2w+2sOA&V@e>+du@e zf#Vd?twoq8&628sooQm>N`b|yYKtEY&&rhSrSh;D8ek1&i0^s--~lI4cW#d9P%XdZ zSxNd}IW@?Pc9=~f`0ELGwUfHzI5RA-0uR{-#`!#w?!Fod%ZI$cDuPFgTRS>djFfJ5 zP1FEl-eS{3fKGt+=B}UW;Puu0IZ+|nHh$!$N0E4HXMGp$4U|<$x)(~&eYA1-x;U@) zSPML2@4p@~1pDpY+~r}74O-3k%Ts8~AksCvyLv<yO6t${lT^v$CdF+|@(M!UNV}r9 z<q=NzFHCBpNpQ$3%KA$pOd7;x$q66}$GkOaE`NLG1X(fP3g#V~LVC__ny$VN|Cq0{ z{RtBIpCs?U|LNqxb`P>1miisa5f73>`P+0yeGLo=j?%FT=0+B;D21iPR~m)(NP>Y| zXqs=@Jm|U#9#pzRDJ#GnCyvx{ucJj|ibTw7ZZB)~gj=h4k7QXKN`ZmG9R+5@1bGXF z69tgQ_XDeBX7lzcSzl^H$KDJu8BK>!<0>L1H?pX9ujV4YFueC>m(JampWU2%^sF?= z1ju68q{qndDO!Q`(mtdymu46yVmXI#jToYFGqT#!=@ODLHs=DqJ0mM7wq0lD7!Pj& z<}gPL!vl`-H>)?AEBwT=Y2a4aQo|~jCA(=DTeuzA*ifx(Z0E6XA<)CVdk^JK10Nr* zOl{sTT@>=bTdo)IS=aagg!{RgT9E_dCtyU$Yq2WGi$1bW(icX&m`QeMAk<D5<1+%7 ziw~H%*G<z_c$<q~`jX?zNTpuwz43@Q;gS*KPtn(C$#z1OZ{XpMXz<sv=l;xT`!%db z?6Okqz^F_$NDA^R-UZuNjHH-yL_XqKxh@3Y*ZH<iLl1~bCVO&eHpceqPB;q+HyqW{ z$;5himd&NT3;nmud=9=%N^X`cF&*{G{XQ3))E-c%))Wq>R^D(u&5X7dM$VOc<vFmV zj1KXkCO#kBkD$mH@&Ll`r>IW4XA-p(pC#7S>urD8gRLBPQ50!C>n*B}$(Fk8#q~Ca zv-!|XjR0=_Oykk&Ql89s^3hyDmfM`iiP29=nma~7p`NMM=TS+j+PoTo&-Ck%lD5<6 zr|tghsT&60RZV=lIR4uA6G>0iFr6fia@XjA)k<c>V0RMO+*VJsFIl&JO;y<^($?M= zeA-|Dwb6OhKJV#uh~aR}dUx4%>o<hF;WcGV+!{tn&j1!=9$WQvW8cZJB7R5YMRpUG z`%hqEp6h(BRgWZfIkRcke_-=tgkqI~8Av$a28)4e#(z%^mVy3Pw+bj73$Q|a$Q-96 z+pTPms%`NKGJ!{~;M=@qJnDGuIm;i$Q&c-ND7UZcc^<be`F~&FpQOzeSS#DprTLKE zLI~!hBM7rdpNRRi3;F9UAbqv1PxcL?v4N!0?%3WKS$67&35#luBExtKdU!`rwIK8h z&3{05=jn~Fz)$JJCIE>`CD4JsO|g6Yb)-cVmRyB7M2fclSjBh^HH#;Ke`-4Us%G&t z2Cf8ILK579e$M8rTYGz%1?|>MaLkIqaQI-IdppZ)gUbab;Gq=ot-<q{wELc!?$J>w zw1*j)-h)q%r#BR)s)a*84~Ok?o|rdy0@|(Dqn?<C)=7pJUo0@G5#HP6_K;I#gDo;F z{Dl4Zs8uOXWhA*8x|kj}4?L3NdjYS5MSo>=N0=HQ$k#%lFRvTlu3ek|Cia<$)Q&=E zu<t%hA>n}t#cl^o*ETZHJ1{Oxi=Q;@*Wo87k7e?d+X%dk6OPR8$OimqPEyUVX}+47 z#a-yk4U&@>1OUGm+?_bjk6wigA=M;InJ^7T<H{x}H%3XxX@J9%|3$50vfjn#f&jSr z*^Qp=O(@N4mDnS>1n~}3kyKKov_P6#NkM7h#R)hiRS5{hLmhn!wjXM?8&OpD3%TzP zsT$Q0o3KAd&JS?Z5!MzPsbbo@PJ_>7@>5w_>?LfNbnPzU_A`u4J`*(C&Jy1URbwqn z&@~+t0pgxn@4V_!nTQE<jCtJd?AbW}nu!$y9JcTx^Q?Bjryn)%>s4NVvh#)wcHDmF zwOPToBEKyT8Vi}HNroljS6lgF!@8Iaa@%t{;O8yUZn*<AP-2Tr4c-rp+_s}w0nixH zSD4xNN8Cf80{(Z)xH~dz09xL~Ki(~f;6IH<G04FEHi7iM3PY?qFeJawj1)A!EMnfb zUVhcDCA|yt3%R^@fxAJoE$O0y`;>z9>-2#EOj03wbN@BkN&k+c;`}bil?EMcqB<aW zXVUFpuvkB8H^&ew!o$`tl;g}zem9<cbv!&&$a?eI*T9fw6D@DUrqN9na4962d?>*T zvlaJvE#@Kd#q4me?x9$Ixe9y9=U2rpiOw?sLS#Z!H1O!&ijT|79BBnFbz5p$QkMEr zm#KJQ(41LDHY5#?9#-?O<;`CjdKMC9A{Qf;+Esx8nW8z0E%cx1b&sv(N=oY}W_K69 zY9Y#D4(nRzzjEvIva&xG2aW;M>R$=ee|9cGT5@xEJ4|Rf+!vc70j`^j2mSg{zcgWu zg+r)^kQ`eVpW*=-338eHhG_31-7=lkM@OGcBU!ubIZO0Q(DzW-gJe&Gmns<dvz7HV zwAMtLt;Tr8Ey2n%zGaLJ_$7pKSz(JH)`cZn=uMB6O&mLN(Oj5%5x<=e>eY&E|1gR( z#zE`SvWn?#Bq~&+{3By4i7s2PJb?my*s{&sf-O(h!}Mi5<#E+7A?D@XuCfNSdV(8i z{pIQAHb7xHFJ?9D(&n+vd8|s!uLooG_XRdcdQMg3%4b;)Q!8?;;}JnQ4ezT?y3*+d z-LASNaIPgfnA{W1Ow+9txB45<92_*+sr!_&T4oCLlAF$NqY063vgHj~BFS`FHE$9| zU9{^Q09YDZPq6gd9oAq;4G%$9;x}QQghOnTO~nNtM!XV#zoIss;4ar1aB6(`JFO(Q zJ%-nEN2wpF#(^LsX~9;^lkTo93y9Sx23jNTm|~avbHvx3Iju}Kw&EcoioXIXzQlQE zhk?+IRWQEmW?Io|yFLdq7oSVa-JQ2?gNETHQDs;}-JNUmRd}<pUktZi&uvr1_At6m zwBDtf&3gYLrrMTAJHhP{Mk=0>ShpC#L$?iGcI>5zzk}-$*kJ47vD!Qd^SBR0DUS^~ zn7dsu<!^eG+R+}>CgaVlk*i81b>BnijeU!V)}%6+1`CFvBLY1XUDdNi0ZOuies2Vl z|D+1otM}6nEjLEr&B+!%W6)zP9T5jIwlxpE)94+8Qf98NccI1A9pMCFzBU1PcC3!P zomiHqC1gm$u=w$#_33qqu@!}M{((V0ljLE2>EW)xB29V&stxnWJg`ko=ZqJR>YTnJ zyVc72>hbSzq40+9lB}{aN?ykpZP>-W?7eT7h7oyOVDLvSwX0wTf4w)G+dqT<lf1ve z{U)}|8(-y%ztE)q?D`+=_Wx{Xsk{UgY7uuEeX$b~GrONP#EA1i#YR5!WLfJHRZRh7 zz4%l1TZpqMm3xnc>(%I5Wn(!a<;^!mhpsWTBj;F|mjmRaHxHChpP{X|j-LYwb>{Fw z&#inoW{_)|uCJ}8ulNnOR2ngOC#(+Rik!T$*Y%L^-8_^Xh*!P*#T{=IJl}xt+CIb+ z>w9@Dd%`i>KtzHoJ(YitH)j9q%jS_dZ`VGJ%SOQHZjT0da1KvJ!L->o4j1y!7GjSp z+4q?e@g}05sG%nY#MK^DUfwoQZ56f%@K#7vCMhzTeW{t?oFw>0`f6!zY(hfWvh=rS z&vVOSIfm6)9GBnGd@?J{Dm>m;W&>ELIBAZ|lzmE1tQ&;F`c!ICRUMT^oC!S+0}mQi z=@XXYoo`(vG9Dy|%AYStzDfA`^sRL9XiPz6NkR-L2%ZOt`?*XB_JY*2d-FSgV;#BJ z%DkOHkLp5egt=*Gp6E^MvMt(|WS^2iJUlJV9a)q8OmkhTNk89rc_a*;=c!fK5-Gg) zjcPUAA9E~~?Nwj3G-TQrXsvv(2GwpbqSTn9ht6u7f)8TtA)g#^!LcDTP#|w6JHNWb zG_X(6ySUm2b$KGU9%j=ij<KoCuTa1H2k`Lk!0UfKg~*#LviLusY<N+5{ZGm?4p)*@ zm>&7BUwosOV+UEdXU%_u0(>{&DyAfz_BJ}|zXY0pR?mMOll~rw@+^W41Pg>@G5+>` zonyWKL)@5Zf}z>CvNFySf?C!P48xEJcWD0yPV(OZ*Z<}n1hKJD8*O{@7`Vb%V;8gE z42JVSKfQ}l?7EH_+Drlf33}{80`vNRzebK7Zokxyv=pc{`$!#Ql2WKI!hOeM3-%+D zKnIa7>GE_WJL>q)AJE*!<cpsUs<i*}=l@Kdf8C<LU;59_tO=|Pe@y?L1IWYDX=66Q z-AfEViDP~>?OECXdMTJA4Zw9SZGlh*p{!{Z{40ReyJhZIh<J4wAmw20Xj?S!kcBn| zLwx>UF9I%)o8`H|<#oDVsPRG!lr^RliTLh&3h@8?nGN2=9*{Z8z;poqSk1!9yc215 z{`iO_wV7)5&-)OIV209<;qdDJC*Ico>Dpw-2q5O9{)?{v*PHi$dKK_9!7rE*ld8cn zO!YtA{-_(+G1BNTnf*Z})Tpio#sqsu-E5t4`wLRUr|;FlxLNa2+b-<S1uW47SPa#- zU9niZwBUTDru2WgD!3?S5Dck{qA?TTuY1Fa4Uj!ijG#d|003Ql)x-a819pG9&xvCi z!x-RzDx*tcLRy&JywA}`(CVz#G;i0HMNpl90f21y%SXS0-|<Rp8kU;k(kqw%?sFSb zx%1~cp-bW91b<Mbn7=cb2S{NA*kKUki(S7U&u3l6Coy^*bqwywE|RxOZS%-oGTgPo z%kFyQ+;&#)<O}hazqeZNG~M|7I{!87|NS8oFa$TPGIaFJKLf%tu*L6kk9pef_r*3q zg;xW5N{1{MixVKImV(;RevRn|rXj)@ZRy=$5V0e~EIWy(!C6gpFM-^R<sK~-fz`jU zNli<&zc0_W0YJC{a82rV-0EZ`04_x8FS^m;!<kM0mi_gSZB@Bboz0)XKWhaTXenS9 zw<vw)Bs@cKzF#Q!alq&2i$j1uXvO%K%FRIR_vJZ9ozliz#;q$~ew&mPyVZ9|%I+8p zU1-+GEm73|H&gNdyAWZ%nF%r&<~H_=TK~NrqQUaX)>rS44EO`)P%?;uo*aTH(fDQ} zl!J~ShU`vi(HzK5{4ubty147oa1r8OhF)Rn#+dkjp8==ZWi!1@zxyEusEI+jb|qZQ zngTh@b`M8(HCU4xnyDAxiQxi`Li2>4w#>IWR4@1YiL&~iPeBau5<`U&$HuULE`Ttm z8gQ6GQD76GF+C`vUJ`;yO*D=cZ_NIzj2@`hf9W@}J#Y-;2UxfN&4c}C`q+RWJ3*WN z>7Nmci=FG=qN~AYz2n{`1!X4}Y;^&%e*$n^PFb*_@{1CQ1Qq(??ce_9935nKVx&JH zLzO)V&iCJrq-L4U0hP!aIG+8sKbHF-YPuFpvk4ji&#orZZSGE(zt7@rcnrovSA#JV zE~OEq{)%!HWF7J?DR!H-MA9@DuU!^QXNLz^E&tyUWWQN~g7CKmxy?TxiA9heEF%l{ zSMGq!R1^eTp`AwgIenO9nE!Qu2^F3HaM7aaao=9hiYrqR{&C#qP+{|O9s`<)jic{g z`ZfRzT9kfTT=^ds?0??DybANCJqC+$^Z)q;!pIf?P~I?d0UM0mL8;y3lV2FFO5=~) z<&}Wkb87GrLskhp{|#KPC_Sw^9Wu@sfG);_M{5<#e6gnbb2k#<vpd?cyb1CvB8wM` zujm~<we|zI9HvjqHn{yMfFbns5I81>#AaXW9Z8DO!Q_X%fQ!mY7mP)EDF98|23v;^ zx_-Blei}1j&cIW9YIf55VC!_VyauE$rsn{(pmx0E&T7VoRJ`|~BT&&7ieW%FdvQdT zn)UtDoag4rvdZP7%X17ZC=+l~t`-1FP5CwkNY%KZUtT5NxUPxXMomxgfY&`=dYw6t zac9H<n41i|-J_<#s$*YP`{SvJ7ih>NgXqQ&Af!XFDgTHFu;GlM6?sC#<bMh7z|_C7 zORlthO?%yJF`pRnkLAEZ;yyR>!o2Np7_;Y?y=C|t8YFkQODYB6Ym8F-vO69F9{|&9 zAZ7+&TKA+886WaDRAtd|0S!wZWk<g+V`#WL9_wN*cED7xE@#v=53-wwfNC_N>udHa zkouE%pv;?h-mzxAEX-r3UI;IM<w|Q7U1T_sI@|gn<1;ESTt6Ut7UdpI1eUk_|Jdc! zE+jEzAdi(P07CPg26_KR<KtN_@WAS>A#rOk#Mmca)2t);P^lPj5~_>IYeK^m9j`TX zd;nxfV@<%rRoAp+V&x9J{eR4bb0__7Q()P9ior$685!W$smQiyZnS~+J}c9F^Pu9_ z^jgx>Ydt^Z&@+@D{{x`wG?YJl4^qY(X_As3xF)Y=NS@@BIM%KtQ+1wrD%7(4u71{y zjo473M~r%+-X%zrKkrTC3b~Xg@k1wM)1V^?4VTkhNlcPS?FG)k+$_!C{8ZBeP5)%t zC#O1lhPgv^?YL41osl>1Tw@X4dfC{GK}Wi$<VN<DuP`ufgRzj+JzZreAo9s#?5Wap zr{oyAj$bHvUnZTQZ`Bt2PPW-=4_;o=KX6F6_+T;UrtjjHu&rGv9I^SI3DoxL3JRxl z0Mp2-=BzELPEC^o_h;jgsnkYM?o_9Tv=?9xyKVEhL<p3PE3x$EGWoXcACjvwSVZX% zOk9&asvS7-I4Am_RyIk@l+@~OKlppfnlrGrJUzkK1hc%+chmhYPkfx|ZV(4ELzh4` z+mxdd1Ib}?J^-Dpj@iX1s>{7*H!}zTZ22>-6;qf2Fjpop%k741OXxg>vHy0%vK$4d zjh`X&)+r`q;S!kbtuSaF!}qtxpjo`1Eev@75YbY%9A*flWfxWxC4;wI{X87wcW%ky zQBpmuu0^vrhd~*EL!70N>xMZJ!p#Q41bjJLA0qTHHWBXv`)kYSJJ7~4SN7;kSQDGT zGNC1NJ1GIf(Y#+X;0Ouq?JGTeDv3E6Fp1N|8FcHD6;PRZ?~WC=P*hQ_oP7})aQ9?+ zCLhs_|I=qpiP`xrg_VF6F)f~r+HDMsX}kINrIu$Og+A*t*>AAHSpR_<!3ZsGy)rvr zq}F<L%Qx(Ptk&cY6b%cnBF%T%0di)VKmjydI(CmG;d#?W@q16xK7!XBpUzHvF#MmP zWXI-3%JN^HE<LwWXkg9W{@qvOZVXe~<$1G8Hf<vu_qu@XCzwhN$#u_{%o>zQ7GA#F zCtxLP7{rf}yZkiHxAD-BMYd^#OWt4(bOIn=yn$sOd%HJ3rHk|>O&;BbWV?1hrsKNQ z9jZ)K1~QjH@mSZE23{6%fMAQXR509=7QXTwcaq&F5liy51n7(_3m6YgHUM2_Yxpv$ zyi${MUa{+jxJ#yE90ywAB4<v?H?Vz1n<kOq;e+wfZ%EA^*IDnuXyfOtcqBpx*t)+8 zWe>Q<UtwJLW~zQdSV}Sy=x#O>`~yAcg=|8Yf8qf+<ZL=)eNR86S)`Sum<;`NhOvBO z;B^M0-CqFs>XM3!srHqiRudYlHgxTE6Ri0I<?daM%tXJuIM6m|5rUWpn4TX_B*P@} z^V)u=BU&w1o6i>^+RNFWSUZ)>^BOl`r={E!a_8SkGgG4+9+P7QdqY1OK5q#moKhTC zWhOc)oIPHoZnotq`}CO070fa{Fw2JiGt2C-Iy(L{0p2M2qmp*Xm*yOZqC#$c&r4{M zikyMIFn9U}y00uONj-P}n`t>sTya-9wUK~W!$Tg|`isybB10R2V#~dc>m!9{j}e{X zQP<BtUXRjzy7c~^E%48=NGZUdc;a7?nt2A>uk7FF9A_I3n$yCI;=?&(!$(u>oFys3 zc@tLCwg4E=5vq8%fU=d%nOj)va8QX9(1{Yi0;)f<TVN8{_p|H*r2r-xo|g?**|rC$ zuYQ<dk5xA#IX<;0ZFcxfa?dmUf}S~ea2h;h9^TmnXRm@&EF-0_J%OBBK|n80orAXo zWT01uN%FfFN#UYP>#Oz48gqNnJCJKuXsaLVH{#e5$b}QS3dyref~+Ip!NS^+YNYGB z(0F6$urdn3*sQ3{yqyXNeY;Qx@;_nisaw|_-Ibua_n_DjDR?U_%tx^2Xf&A<XFbRm zIXjBII0Z;_t}}4D-}aaQ5bnk=%5}Dp#_fE~O&~k;1j1FD5iUA(7}YI|RI@;a`Aq`A zK`Wg7T9@34l2s&pZd^D{N;pn?dhQm#)obBg<8shb0d)pBJn?y+$WaStZ$q7}hZ2yL zuEI9ZpI`=Gmvy))!l6>Y^JT2kN=ZxgMvP*Yt<m(1vq}>hZvu_C1ZVD=lN#7lT5`wU zfiBrYAwL7A7GaO7r!wRBWm}lO3^RKwB-}3Dc_~TWGvPwC(}-awiL#DIuyrIwLquF7 zI?D^IGzWr6t)t)v*G6696wf_8p7a3=UX2y{=J2q`8e`lu5puo{AT+5Lm0Z?k7f8{t zQl)Ual=Y;@bONZ!C!>5D-0O?7RS!#W^5aOKlTVT<a3`?JCDiEt7L%lC)R4urQr!Zq zK`&_FW9Zw*^Fq08XIy#^d&NJqvfGv7B<Cw!I9!W@9E=7nM>$Lt1D-Hs%3tkR{jQ7A z&3N8=cqgd(d-n{0z3zDGSh=JSStZC#xsjWTOo><p9ZKQ#2Dqk+#kd+|;fic%2$97Q zgqGRFQuxNG6it)#ZoXQj*cu8QCG1tRGIP{Wt5<6%i&@@wfKhF9<JM7^D97%j$#w@e z-*rz$3mqiN?c-U)=GC%dMB>I&^MZ)Lq@(yV=@#zkABj(1#zy~bGi{6Ur&4nHC_`*S zLeplknYtCQd&5WL6mc$8w&9i`K3Pfs`W#eL2i*$GOFCk6<2vqA6jCX9WPbL|F(HO( zHnHXYk2CBWx%n-xe>ECOy+R<Ulg5FU$EzS2_{ks3fazp-g<O?@R2nC|KrQ$&<OJN1 zqqC`y7wz@vxgWTS9)){7z=4E6jK`{zwUXgIC`umdXlGqgNV@n)_5z)@Jbp(J1@RAW zcy3K3&`|N4|MGpLb=(!K)~JR)BU7lhXZ}i}b`XlMpXH97*AMvIcXZ8phW8BER<)ia z)C4yX+-HNVJ7MWk1>aCp&+NV)`-J7BN6*-R_r+UP1D2=q#sT~H*;_19Lq0(SK+T*< zvNboA*P{%L=DC5jH-L%b7{mQfR;v*OUCOn6^*Q5_(jIZnq0&alDc;gSSxRef9ZW!- zwe$gN2m^qNX^GmIj1nG@@%D!Ct=B^Lgb3_-eaxoKB`d`*%DnP?iG>vsH>j<+)I7;@ z&<du98SHq`)>zow&ON~<w07hkp~0}U<7bbUbkkURdPP)RLGz|3-KIjZ0?Tod5|3al z1ur#CGLdLgeN=j{sya|l#%>?yY6kl!FN0o=7uLcB>#<?}v2u3hdkDi*Dj4D=Q@iu9 z0r5OI$Yn@hQz+HLNCviWRiQsrc=9~c2zG<2gVx~PscUo<0vk$GH#Yc}9jFB5Qw2gm zSs@AkVM2`b9Vwp};l;Dq7(1df!k~>=$v-2@`V(>SS$OXHVIi-H6W?E9s`(aq4(XSN zAJ$(<<R*Qv&F+mW9Ue>Ry7?eo-ki5L2+t+zoz0ijAs7|Zharjxq$1WkSg!m#0?ZM> zM0?cm-FtsWwSrA#=8x$dCCIL(%7?;3c1zRo*@)EvYQ*?zcmc1xY}+&wF7k0pJykFj z^im2>?WTJpgb^5<+Rw~o7s6v4sbpxMM(S`(uVnK{l?Pfw<juE6Q8ileqXwL^NF8=Q z%I3R<3c8>5XtSy$@p>s8mEAuFl?c+YlB-v*SlI0+N|~}4Zktj4O8fZv8c$+;DSAN3 zJ^0vpF`VOvz}bl{NbZ+FNR^#?!eYc<V(H#us$<#716@lvBzg!2UYtl4A~-}4J4hxT z8EDmgiW8c|SjE7!tTnoqijZ&R0M?Gctrf)*LrhiMgTk$r+;lXV-mW5HYmr{g+%x)z z<BZ`~#?~jf$HST5j)+a$k3cxxBJeZc^F0MItW)E>Fe9Idp0Z5={C?c_P&Yo1Q1-hM ze;pr4>>rYZE>70Z9h8;fI(8Sww(K$(5jU#MxK{=(s7;H~Rb>t*Y}h5a{=x(bhi|DH zyU&EUnyT0&?rF1@t}5vX$Mq^rqug%&+G})cSYkw?kOLgKOCHTGqRRIQ{lth*`DK$r z^!{c6tmL{g+&|j$9og0v()<q>6zuUuf%4VbD@FQtn|+oM?=@KjsaD8=1VsI(pA#<m zFTaQFhJQcgzebN6?vDi&wCi7};}!|kg%ElNK@T!v#L_c#zg60Tc-(t<!g>KhdK-{q zL=epOXhr=ry|@_ru@b`qzGL;B7doa+@M-rcu<5O%Y(xon=HscEDGV#NO)o<Y4%1PV zw=s;Ntrf>_vg4>OD5(W>N4$WK!e}@A%adizX+#<d$H9by8IqaWaP4DRenQ>DUa2>Y zAjA}p!-i-5g0tVHc=NUTTe)52#6EI(2_)q-jaVl^JhSYSD7)`Ry%N`pVK%!XyG3+s zRC#6-YNU+-U{o`hD*<1T!Xu9|CaeGoiNIVw)G^ZZvNRoRbN#z>K$yM_a=gx$V_`2m zK)(*X0{7aU54zJn9`{5&b^t&~6tObnDsVAqFcux4mb|XJuCpwKu@u6MWKWMgla%e) zDFx#3<K*B*&Yr{z>V^qd5s~&rj*TDf=x>!XFK{`!FgA}`$->;x!ih%}(epfWIq;S5 zBi3)-%X=L+-l*k6u@lCVOr7#hZ;_f5lsc(1??5RM@v2I;+v~?v5!augpH2?v=Q9_( z>zF>$GzzCfHvy2i>ucq9N$sG9U{@dh*{vFQ`si%{H&FMYoOBRo=3<0Iq@h|+mN7CY z0VI6qo6K8g7@c_BTSSb^;Tm0L!+=LR|L0~5lNB*w3J$qqE*tlAO?PVMeGx~4eAV=8 zFUey7a_EHZ+X(meg6C$b%_zCYPsSnC%@H;Fa=zHcc{X(Uyn{Ma*CPW&dC@kz(<k$g zttlJ1GsA=$wOkTcq6+{eRL#7c6kMxMj9GNLH#=|!a%>%<9e*k7LudmqsjMvbMMCYx zUY>G$48$Fi7IXzM@H9vV*`cd{BI>2@rguY7;6Ro9Bve-1=X$3(Zs*QEwS+TieSkFb z>;!ZaTfBJ5XU_FH(he_+a(BLY;5bgGoQmf3ScR!hV_t)L<zQf5v$-$&(fO#5fV4nN zql%HH-+iJ{X)|;YVuBNsXc42AH#|3Ho5i#vz!()Aw6Sc4n}8~r-V)pXYScF|z)v^0 z=^g3BK$8KYMF&TWdFav69tS1|Fl~h%4_Rs8s^#v}PC{k5bK>)@?K?@iGAuj3%TKPt zs9m-xCTi>OdN-z?l^<M!>ZR9-U1fd>m(McjmzJ|B5&P-m`&TJEXidXs7A4~Xd@rjp zfZ&y6-*74wSGfAD_sghHi?1gQnMSW~`9<j$XlFZslbp#rpJ#E(RJ)fZ;!=;3wjT3H ztt9Hfvw)9|CL!mDCO1cJg?0Aeni$qTz8Iv}pkC}#MxxILLK8iz9hUKkCG7nHkX^K2 z7RR$<r0pO<Dl(CF`X}OBGV=8vII-^flM9z3`bVBI#^}HNou2|4k>=gxn$IoezPcgp zO4FneyXsP7c<_vrtCPC<-}1cF5=?r%D%pGaFHA8g4zcEJV`<JE!kLz5Y=c_qhRHj9 zh-G6@sl3d55SC?GXu8mtD^V<kkh+35tpQN$K7?Z9hKNVm!np+lawsQ~!>(mM$5w*! zvN*b?J-@s2n5K>9?hJ;*Q#Z3FM6M2G$jkW^lr;@^Yb_`hX;#dLr<{k&E$u^&CwWT1 zky*?2F*XOYN)Q3(jwV}}$cbZg=bZ_RZc|oaA7ELL4G$-Q5y$+2vC}J|R;YIJC5J$S z79HkjAq8cN%TMd>$_c)C<C`eC<sf1B{pR8uSV)GB?ihPFqS%6WAHwg?Zci%gV47HT z=0VX-V~?I)KlL16J>wezCk6^h5$mD|d-0^0#H-O{SayYjULQo*7ike!DH3O~6HuUg zL48kO2u1qdfGfmFBs{!H;pm=2BUES4iNq5?!;@UeF4UT>0g!(4#1O5{*a&=3k31W> zkZLOmKCkSD_}FExI+;!nxOt6+2ga_Q-7=@<IPZn*RNu3t**7uttW6f&OaZkjF!9=H z|6&k;ZaWA@OIX->)Q+J<3q+#xh?n>A`G6v|nm9-pW@93*Ic@W(hwKxBor*<)6ELaX z)WAx5ggDXl<!|GJtosxaHoMf8l%2aL{@VdgOczuh?~Zm~OLLz=g#XGW2tCRBx><dN zD4ue;whGT=Liiz>l2_~7cUAIfv_wi0f&K&@G3W8j1m+VkTgP=bw`=Ijtw>Ubx^-wm zjcZJ(G8M0=dEBiN7Ol=7<3O0iL#M{KpgdVY=6@LF%t;i*a|j6QRYsPcrFX%U>&`*Q z9A2l&RD=YzbS$c$u5?RVzlK+s2May&jeC4Kz28y6S0O>=5uDijfy_EQsELcnp;`%c z`4RP^iDO_}>k&kA^!Bg<LpR+nYx=~5nzoQAu;*rIo@ZsQ1Vk&6-m6)On;}d%c~#3L zH_CH5HA|4RKB*AxO<zTycW*<0C@+rC>RKR_NN1&I<N!ywa^i919jBX8t)OBvN%tVn zQS8k#U1OK%4ks)Z?6*Rvk^W7JehO<(7-F&Wo}r1DqCQqPR*Z|NjZ82N;kCDtH+Cw1 z)p}F>Q*Jp{X(mLiUdd;1I#C9bK$+l=+0t6b_fd?olzY<p@?R%^%sCE=Y_Ns>Um~+8 zOI)j{Lp}#(i9V~rUaR0kzJSU8SU$Rso-zro@%f2J=rze7)!BSdtDK%DKv#|m3v!J7 zBE0Ci8))EqN>!0td%Hp!8|7p0eotn{TZ(zP)~0=|MbiR_f{o@WL6wXOdalp^xcA=K z%K?X5KrPF(H0{ticgypl5^vuYPt*1o6`A(X4iWb*oU%)cf{w8!*^0+bQ~sba{~Z(| z9H*yZWhsifnk?kh?xu2v?F_oC!LxXLA{{nzrEQ;}`&X*oghRX3Ro2Rk0^_x4f0?MH zb%#b3BcTNNy}lzxX4mVKb&Aa(*sgH#X~7Q&SHoD27<lK;=;>>PZldp&B>HHw_;0(y z9<br0Nk8T7zp2w~Jr!JLr*2bF{UB}|ijHf_j)v%+j@7OoZAliC+OBX_t#Yh<8?z4E zcIv~fdeu+<z1$_euI#S2quwKG)pd5vHppVc_Uv(y&2)+*{oX+}W)A9%?QngD>OO&L z-$p{EB5PF6f7V17P;c%Jgec7Cd*6%++VGuoth?YU;PU;$MHeg~2)mgSKA0W;B`&-> zK73($Nr?PZ*kk|5YXS?V+q;(CqvQ(>)P#~gWUFGoq1x%1*?y}WJ(n#3+G{p4j$oH> zm3-*$t=5x=el`y&qk7l7eeER7){T}ZKAIF@zb7$LC3Tz~A?Wz$0=QKSJg@BhJz_P= z1~#!<9h-G-Mu*><;503@jz90wMn4xTq?Nw|YraB!yfmjwZIalt_W<f_R?zWa{Ua*3 z;m8Ip`168<ujC8tVK0!xw7FiHiyCi<mrYW;jo68}KdKIP=d)u-_T~8<F{A~tX0N{C z<yFKc;0aRn^lxL|EmPj=tB_-{d?!FOHx-bxl`u!$_ETAoWb!kU62s_qzQ<pxfALco z_I9o0ldnP62O*L0U{1eiw>TavjOzaD*h9<f<>HW_WR)S9tU6nnhm&hEzDukm%i9V| zW#sZEOtP@wg}YC3Qh9*9hHB3W0`a=ACXVK{<Djge9ORhC=)km!cGi^a36y<?g3I0| zq@34-nP}N+RYSHeNkKld#}<=(GA`^J)P=FHyGo+VOl}$%47qjJgbkF5&=QTPB)*cY zWA^EzNk+$t8#&qxDs=q%Jt0NmK3j15+m9<;w}x{smR`9)z2J)#r+Ua2B&9mCwmVU% zH&KzA6=L~Wxwe4#mXe9`+HfAH($FuB(%(lH7d2U+B=%i;;KNbvQN|0o%>zlB0dO)f zo&R{~d3d_DvuFZ2S~a0v9i}?QA6yx!=EH`t{QV_}i)GBq6Xs9w*H_eI?8{p(8uFH3 zX*;nrq~2;bZsWp*t%ZODK#)VL42`m+N-<dlf3o2fr|pm9S4pxTabkKu^fZ6b{8^dv zo+dWM^zx%~Lyp6dZVCPTcgbYDTe2OFGoK4J!bM#@@1%~jwh#viEWa~a=wK2su8eW+ z#*vr(sC{zJQmVNEv9(qq9M)Z=bl+#^M~ARWtO9rTqQr?P=dN&a0PbOeTQ<K$t<6`~ zr7{ubi)*@S#<Pl1zWD6U7j*Xt)<znku&=~dUS4ZB&juCKxAu}B-)EL>TgxG;yzn(I z^SuNLk6g6Mtskix={-nCib#YZ#^YkVe>Y^zDayAS%?5h;5(J0^j%ghtm1l_8MDBgf z5kq|+$#rWen3g${N#0y%8ED01%{Mr=mssBLr*|vLXUp=mU&$N}{1uC3eFT|YPb|1- z92@f1@n{j)5#X2dDH6IdRsUEra`OUpVQh4?SD4CF8VPQ7i!JK{(~I1g2><K5Du%Ei zPR8%?Uf$}m+fPc|dX0X1)rwCaGkzBN+Iai6Rw1c^@ycb0_B2iNZ&J|xC-_tDd3{pT zwYTrAlMSJ}t<;O@zBtV4yHf8G$esgn6sb_2HUc^2!=mihBEuQdGSo<ix|p~o#K!y> z)7oXojJr_i!!pjRDzXaqpAX$-zu7%NYRV0G!cxK>ScE?>w;!LN2~_tz+iPWQelLZ$ zh2jlfG+yjxj(T~<r#9c$*sUztdz8b^;=p!24B7jp-#c-stWHLzH^@z8)G}MP;VBxw zZcb)RS#Gv*_V$#JFUQc2TAK!FEB#xY;f=Y~w4eH_Mk6;ZUcFx2!N!dM%}`7Us!pDV zi@hjnIarR1={SDgKvS^|Iy`qcO&z<wc{;6qv2dBdq3r-0coF3m1rExtmdrePNvo>0 ze72Hz>Hj;FS+E%i)d(iYUz7Z2IJc~^RDjZ0`-728)97C->{(CUCxwlfuso0vwjtD3 znZvCb+)ZN~jBNS@52^cj{W-5Cx!W}Yj^`_y!9vtCI&&_gDUc~<T1_&OPaarOo&}YI zG1rA$Z-=C9Ue52gGPElb$$E}QRT%pu=ZT!?7jYW|T(7y883PIZ;tH>rE(y}Qkov%V zs;y6nW5==M7%l&xKH%-5M_Z*<W6P!7{u|Pc9EHQrT`3!~-|mIs?E3nfzbv|EBYR4j z7c17_YmT#m)%<37cHLbL=SF)R;_bucUMIIbf-ro|t96_)t~fV{x9&l!_0N;=W&4ik ztms{d)fbdswe~r*7Lt-^U!6r8H8f=lmrjk1etYs`pY-W8@GtFTr;Hd8gxSs%zUb|- zGdxY~U}d+S<g+3dXL2AzK!m$QdaDVxH|)v>6oN-&WgeWi;LDQXG|dk8wdm9<Oi0>8 zh_F1Ozh5U15MJ?DlOf{!B|NOLRv3N5%&DbZ?>sZupY2WKX5tUuX@FZgI~n0ZObK8X z8#d&Xi-*2v3w8}gIogrp`H=!mpO)-ucUJUPLs$w%98a8a-SzjlL_@u`Mg}_4O{E5c zS0wtTXM_FEvzC<FLB3mj*Q;2MMJ`NZq2om(4OuIT^d6Ua==t;Oq>i9J&huS#!9gVi zx1_I3IKwyV0LWeL@9R%DQgrWDw&T!Ymr)u#eDkS(Npc0Au^(Q6Zy!4E4$3boUC&Z8 z1L~Ia2tujr(L1KFkaHC!`$r^gNik@jtCLwwD?&HGB@}RaZL3W5McwSE>X7Y4>8Kis zs2RG{L4Wfv1aW2I5zqn2_1hxq%rdT@tDf2X^+MCCyEK~<qL7DE4VXbZP_I14xYq;? z{m?JTGiSGF8gmqM=a&%G4*Vue9`~QGt86T+3+6K~lm1?gX|Tge-F1TS8JjZt1E})= zeaZw*Aq0dz?L>U0>cTCi-jf}XOozMZZ0h2Y6#OghLp{Ex#BAo=es_AQe^Wr=Vbqdv z?O?ah3}i#GBu$@fu2Gtz_Jl)^Kb1wdP|p(!{~C^d7Zo93wKv+*z{&H2$cauMCt{AU zxGI=uccnV<l~foD4SUOG3rJc~nBM5+{obmv0gA@A+YQ3-$t7>%oLI61*=haK8bs9P zFS_WDeaHz;2?@KO+G|}TU+WEeplB|2z9tfS8h5({<G^aK9wuJAr`3V(aaxMQuDmJW zxNEDt@aX5jgEsftg<CSHa7{`?`U?-IKHtkCwh4km<k5<?R1B7}nN7>jT?TnNvVkA| ze2a|H-Y;+b9*rZF*86e(<CbYjYL%qps&ysF%F7?Ou=S@H3gTJ&ADh=96SQUTOl7)y zyy;){TDC59wmVXmI&;2&FpefUFEA81L0-?~+EZi<q^!Z;hg|#;&Y+$RD=x|=;;oQ} zBZD{-s^~~qS?uIvJ1%x7LdMG=FMftoQ%)I~`iqp(Wr_5?d5SbZJS#>amkUXz%hE`P z6{OM;@vAp+{5+%trYG6Q4XzWzok$B-+I|4(UuMN?3N48@cSW^iJ)mEJGQtl3NOs)r z(LzQR?_vRI%kAZNCQ|7G<(7AS-h=Mqm(3U3j;i&?t)#w!0Kjfc`i?p5f~MV)tb}2s zBAgeuy??i<d$bvZq|Y8dKL$Oh-~gF`kPdp64G)+o)7Hz69)_Az>z~>@rzPAr`G%59 zaZFm(j#m2r*n11NsMfX*R6;<hK_#RIL_lExgA#@Yl?DZr22oN<a)y!yDM3;~K)|9z zy1PS=7`l7tuJbIvcgOdB`+d*(1I~5LwXd}Sbusg-=eh6S{R?>t7!C!^D!wzeCyZe! zu5*pfU2YYOSQx&)_x0SCAKr-@*1ccl>wdnMpNtZ=*i+Pa)4j^eo%$rzkr9WzOn}q< z9yFkb6G+1b7sF7OyC{%sCVcB~9NU86Drd&!?UH@&an3iCa06Y(cS1X?BHG3wcO{7e zbU|%Zp6tY|Fgm;_Aku5R#mB{D(d|zs=8k@9nb$Ct*arfiuI_fPvOZ}|Fw<}elQ;`= zdQy&>G`^4TqoA%s6+J655En-OLbq*Em626~sCg~WZlX@iosJUEirGp=^%``xm&^Tf z7}H%xhF-nyJnqFV?!L7{n;)J#e2|Fb{rqM11;*KZd?q}TKSLA(WQ+x>*jx0I-d#)n z^6_8K9CUbyui-zRdbBoi<FCR<4fnJm{XlcY5kv{bqvH5Hdd!d$=1AYLlImKtxrV*! zn}dQh+mVXUxT@+q9)Yw%jyw``c-T1}%(Sq_CvznChmzP#iF%n^{I*llTV77~li?*c z4e0J+9j+e1c_1hh@W?a8x-=jAexe8qCU5tZ*ac(u*edZ5LG;qaX&oj(f&P=_E?Ii- z>|%dW`y7!up5XQ>mb)I476|%)1)b{Wi0WH=r<84xO2VAGN8+9(=UR?G+N^I-H)y>3 zSat2ro`x}Ug2K!eo^lYS7-D&FF8Dw`r@1N^r$a_u)+OqR9nJ{4G?ar*ur9K^WUyBU z_5zWAo9Q?(--*xXz(8RdS(i8Ux;z(7%^F7xZzr7Y&~GPoxk=4O)2^Fxbyp6_f!g%% zh#*WJYvPcieqI>Tb^fVeqS5eaEx+Y(1LfQpq9aq|F137YRWmu=O$>iTiAo)mwipnz zxr6gwuuK0I|7e@&j!aU#V}H5CsEutLxWkfpj;)&DVsF$I?_QSS>6FmsTy0MDJ<Sfn z+4&^uG(`?s>=;FRg^$e8l|82~34Qt)qP=}eN4YoyV&preb>Hvg1+l1c-ej_`G*)RL z9N3jd2(0L}rMzI}=~oyE4Bw`t?q1IL^eM;&QydA4yq}<4LBHeUu;es!9o&%-oy%U0 zvVDZjS9Qi2U;bXv(YRps4qxXv+-t1d4uq{ofJ;a;?5La&!32Dfc03OwO1htS`yHM0 zD={dDcvIS1@K9Td_KS!|v%=%yPVvt(-u$(MHV5|+sdfB1DI-6#jR*(n9MxW|b4E|O zNXHq?i*)JSr&|^4QeC>tzl>*QIE+n1SjHGj`GN^NOOjhb4y6AqNR!f4pLN#llF-`k zd(`+nzEr_2lSyJ&6hN-_6cr_dUB`F?_Iy7MCM@OizYO9>9LSN(898p5o$nxw@9>SE zV|fKkR~WZT(85kzUPktLu4#&07d}0eTV6^I@!3V}k>93^E(vLyjSqV_d|IAt0yYi4 zKkC-&>!*8FVuxefhW;0iu^7wm9m1!blSTU=QIfKXLPzJ;qgS@?-38b17Uaq@&)_+> zhL5&0N4+uO^Hj>~oc_}XYm%Z{<jg_-?F}q*O#L!d8T(49i|J=CyQ`+1(ui@>tdqM+ zfOMpzfkU=*;f3af<7kJjnw}R~m%6sg3zf=R52|I6AiOG;_}!a5rcqos;ll~Ut5wIR z^l4!Y)^`rqP0D5&E>@Mfuun5F$cn`y>DHPT<ZQ^tC^k;3GySm6JS$=DOlw2VnG#Hi z<7GO^Rfon*N3jP@aPF$h%dK)vK92=?K{0z;9Ngb7x{=^<M+d&+t-Dm)<?NyH(!-g( z4u!X;feDB$d=1nXICU?DR6sdfEJ1p+e7N5IgmpPr?u@yAWcka1f4yi!=gu)maL~)F zMp3wXGXO(R#mv56yIY9(JL;LvMGq2f*WUcj;{>sL)Kx_X9jjx6t4Szqpi`FOg&x1Z z??=k`*YH;^L@Hgvfi`cLSA?Qx40}K)ji;Q>to~_}yscj9`cxv0Cs6#c`^e7JSCIPB z1Uj5u8iRPM8gyPbRs==%6DI6<Q%|mWIg@S>@FWI#dAZ;#Ve`OAyOrGJSqrFa40tmE zPiT0>Uj+mNPv~njwG|oBdw<=!6ih8G#GEk%`d{PAll36j54MbSQ<!GEwAjvrCop1D z=NF!JQQjwJCXBilzg|s7m6|7w!h~6``NL&-E!L;@UAA*$Xj)uYJ#2<tmHxF{y-)dI z5|tMYO}%QsgArnN<)Ze3lsCt1Xep8hmCb}kw0Z=QO!cOTxJEdwFkANB5K-3mQiFb^ zhRG#d!G(%wtV8#4@QISD!0zpd?&Y@LMj5wk=JbzAYL0Z4xf0Xn_2DEoe1enuAB!lp zG&%@VZ(~Wn=t-84a_H9?Gy}tXhLKNQQOT$yB2?z+WP@;FTtn!A>t5+|fY(1x<8D0~ z<}QiGxwn@}<3BmAE-kP`eXnhvm$_cvc*&N`B%%2zPjQK5CtA2o-h<%nzOgt3&awm{ z!yQXW@t<De{?ro!W6s7T^qXo)1=W{BNglFf)X$x?9lzh!>VKS35=w^Ye`I#M<v!RF zRKS+-g4$aoO0LMWg6}?GpZN14K@3A08DEN&wzvUroCCrBRWuq99V7$%Xx`&kU~VjF z^57&$n);g3+P>t$#p+G1zEVo;lBjng5rh*-^D5Fk6qOkaYmS*eCuxWuAroP#q)nN? z9Lj}1Ge%-i>J$r0ij<qmu#)6`h*HIp+q(S{e){6<&9+k4ZuY}r@-`!y?F02UQp-?R z#T$Qtd9am<@YP{>(D4SzNAhaaIqBuqT4qV{q%Ji5LelUXasvO0={Pl{Ovvrar5A7x zxXB59v;t&YFC1eLK?DbiZPwz41_{=cE<CEQL^2U@W;eo9yOi;|@d6?T%ws^esJ)G> zOzCPP<f|Y!^pQc9U!Gtfsgj|<n?tgk+&Pro&N)cAltBNG=svAr^7!*(ve~dbq2t|2 zsRmH$bd1nx2gl}yqPOGE+`AHhc<E5K43-;Om@#g*<cO3+y0fl#QX1Z1`o59mNgfTW zB%}OHgtKgZWM*H4G5@lk+n1ReCR~3{dAE#xH}~ouK8-`vc#Ff?E@MzcDAcC^&#PJs z4vKOu&IhwnzYBE(KlW;H!k4E!OG(BtCm`6Azg+pc%j?9Yn|2b9=T(pw&Q7YQe@qX$ zArX&9yG>tj-nhQ0BH*$r+1`}SPj7Z6z4ZKKl}hE%v~e~b(~XNUcs#ZF&RNc1ovV&n zVk`_EU6CVceOo*cr9T!kJ?qSOX6a<yV*B&K`*j~~7gnZY3Xh@h3<D%`6X)qumC6wi zbyl(5wS?)w^X5T{LNj4uji&;SOA4A|`5D1bc0i_9w9N2z-SV&V`zjwy>7)|xE!eIk zZSr7Vga+SwZj&0xoDbeXT0*nb)9}uhUam@UYS#z(tOz^?P4Z4S8YLJ@GGaV+qg<{m zQ`;8YV;^{j4$D`Z0qIo~CM+v50m36V*9Qenq>m&}_;Q#|C9VhRi6&1!euJMJQ^<*R zCA)8STQD$OV;VHc_8x65O{{RZS2bWfd!&x-<7|!LXU!zlPU&dxD$<)015x9~;fx<% zj3$xX8?Dk({(>a5PmrjX3ll%hBa9whl2aOI=CAo712@Q-+Cz7he^rw+)3#5tN6)%; zE1z*S^}G}sS=B`}Iqo6WmOmzuZXR=v%MJft$xp#bmaO;F+)oP?{%pl>>U2Of0g_9} z;i61>KZw1Fa030wf9@+b5fYCcvJq+QSHp6&(=(I16^WX+Hms~s36sAVl#NC19g=S6 z!3bE=CD3YYeQfyBS}p#{LiBdc@C}NGV~m|9iH`4jhr-rLR2fb*@Fmbu{P$Co*7>N% z-fv_ndX&<0I2~d@gIsRU%m8o+%kmr!{jgEv1hh@tnhDaA+fR5?^-WIaj+riFx?2G; z&a$b+5|@+@ns>H{p^9?f=1o|^0jbixMv{xbR}{{?(ciPnsy6R!mZVHXbHMvH%;{4R zx?B+%tBSun8`ghsHpI1Uh0~due#WJnQ*V{}e~u35^iWl-)+gckv$p+R@oM5CL+mys zl4f`oN|Q3ZS$L_4_S+U`7_Yr0Uw`Af!a;tU1BcqipP}qU#|)m#Z4Td>?<au79#fJU ziNdEBd8=yk5mTnBa{pl}^x#|}DyA-*k@TO@J9w+?9k0WsDj5IPqy8-!U}nxR^<7Ke zEwW&$_LbQ9x<xJ=KSg6+=S$lnqq0b>zc1OO{=gq)6ZQ(Z)2GhRwfw4Dv_=ktD4uv- zm|47Vvn1uF+p2}W1xjRXJ1p-l%36L_q%;;;!g2k;@?uMc#cb~|VzgIhlYHteO3NCB z216)ign~l-6SiU+z%V_l6MfCThty;%t<3(`o4pwVdg=D&Fpq0*og8#Zo5t?|ZaX_Q z&h=!8lxY`w8|AtdnGEiEz+Yr+5sQC-=(iARBs&Xd2E6o_5!b143q|Ka({dqUom>*b z_=0_-tedx_X(8HvsaZ}w{qAZk*p%`)Z>|hw4u9jMK9P}PaN;@QramB4YZ3D?!ziCv z#q@u+QtVZ{@e*`ER4on8AzJ$(^HW1J-*c`}quKXz2L$_Henh*K*_#gQc4M$ApVL+| zPm2Y*W+buBP0rOgg!L82c%P+9iV26ZngFF-dH7D0lOAwGY&q{4;gL+rvO%XM@fW}# zU0p?X1^;&q@yBvlkgd+Vtbimn+2rIaBfI7hEY&1!a0h1K8SW*Xtii7L@TlNN8hq$s z8c_k8&4_K2FT)uyCAUE7+$+0Gvn(n8!)dflUrq*~7zXK=#B+ZDF5-3ROP~;W@e~MX zB2l680qEUvk263_zUdoKThYh1r_=wI6ys6<@OUGSx;6&Vo#*i|-6SRnra0LC+>$B& z8#6GZOx>i1^>+Jbh>14Q+ouB`iSjhwoBF*kg`!~L<5`f`1JOE=xKzRDDW`3%hXY>- z;Z}lV4_;_^+EABwx<4J(w5B6{2gsnFPQ}y1V5fjB`Y_<p2<kD>mOJnXpRZGtuMfaR z-0a!A5v($T(iA?JiR=Z+hBy!im7lR3L>F*6(rX(<Xd<bTZur#qv*RpdthQxVq?>Bt zthnAN9m;O42|iK^l7X~0m0g%y?UXwLx1;e`*jl}gN}X~WCxI&*9KMo9vOh>%iB-J) zQ=7_q?v$xE)grqjL&j9zh2=Q?E82CXQ4|bg51MTsKMD2OWIiGK1#?FH=u-<kRKH@T zHVzwr;!ZE%XpYuob}B*{$dU%Y>m)u^&Sp;iH9IDPJ|DIY7_N#1wnBY9{WHY`x-4Ha ztgeg6fK8%?28Vgd8sBk{cb>|MuK&Q*GGWK)35?tddE~Ym3o@tM7|RkQb*;p36_Ix` z5T#CajiRuaUIJ#vwSGN*#5!e?OMM*^OXG+7$p(ubh(G2A%(%vJo*4wYjH$2xI4B`t z`;2Ix`p29%CEsIi)Ja1s6bw42$KI|#6_1MM&7gP$^XgHmCX`<V4C<H9@U-`8dSaF4 z0CZ6R^j3E=n62KYP*Tu*z>j_H=uOJc%amoF-Yse~xYZ?Qtzc1BjZ0jAMP4B-vpdm~ zTsV%rGJ%|yPF)jHR`!tbcJ%pNxNHdsWh;y|M53Q}U;0qJdCLafuiGVqi<%jtCh^MD zMMEGkilXXQte)-e(2FomYETK>90qMnyNoh--tCYXfHP7b>FO9^-8!g%sc7`#l{m+N z^OW2J^9%@@Kr^klT3aAHxkWu3hsp~!yQ#ZCsZPk`G855QQ1ZQlU%T?_yh+g~FZ*i> z5sP{h9p|6%b?}(QT2~$z1>L9aj|<jdVE{}X2ZfI-wJm5fE?thx$AB!5YXB+H=z2LK z^`<(}I;KWYxP8fsyuvEd1#7GPmg~DfwL-IJ6QQc`Yf&<NLS7_l2oh%k`I&+`?Ir<z zTt@6f(wq@y*3NaSq%QBPxh6vT2cX0J;53WVAF7PaAMkZAtiL3GC$X!bBJ#RoK5M8T z%VBPmT%{ur^EGZKZ#%@D_MVrTW9iCRE@3k1i25~n%}tQHeyCSjjG<~H8W2c0<T8|J zi&5kSz^bx$7YqhvMf%u7%bNQD<t8voYPu;bthAvo4Z#?4YjzC5NSa`+b3Fd;^8p7) zQrW%F5%&HihLc*Ez#c=i^qTm2$oP$@PsBfsmTWSNvu_qJbOT{gf+=x8^0=geuTq(; za~Ept@(DU4tKx9!3#%fMh`#rM`dXIvsh5EQYsbOkVcMyzOUToWumq10lY(!@g{&S8 zo(#Q};e=-a0+`%XtKP;QB|A}v*M)ESgZJEpc<&z62VOQ7b{RV<5yy;3JumonKp*W; za8f{tcphd42%m)QzCUb<_v&9FXzya4FLBS_eq_Vr@7O@8c}M9U_;@-RK89F*`|HrG ze)CXVvij<enRnKI?WYUko-yysug%WVdBp?@G5bvTeo&5!cQWI|O^fzazD(t<B7|4& z`MkP0Gd-xrQ-XloUgv30b-^|9dmSl+-t0m%g$a%cUP{uIF5zs+X(l&u2olkU`7}}O za)$Q}Jd?aOduaN`LK@Z7<Dm^V<sGo^gD<UrQkw3n5RFr=GRGQnp2BR41uFZ4-NI1I z-vRrqKvZL7k#Rth<nf56PG+)K08FA4(4mH4_u*rbL`{Tu1C~bQA8+I*4N!b#ezyI| z%gUd@(G;bt<c*5DmCShCM?2t0eoB~o1*+?!AxUkHqZhdsOmz%2gS)-Sr+u*Z@EMj- zh{qXl23vz0*jcNurUtkL7{jg{+^L1zO}W;~5j_bYoTR`_RC43PkAz6?^}aMOfHVf{ zoHHq?@+%wW0F9<XoQOt$5_y9Ml+W@9Itj%_>_zoj{O||%Ja7FI>|#4?27XCWJiw}W zK6i80?_6I+`_N2Fq}29|x>(cNy;e^rny6_2s`lQ`M5PAjw@|3Y?5mI*HD!Zfbu8@b zh8Gc2pN;-rE7j{xN6BG&<zMI-X9C^OD6rr5u_w0*`Iz?c3|5oz(Ml>OONt-`0mHUc z)Qt6@Im~naN)3$_UXAEGzxy!l5g<LIE%e!s<M-OdmAE@Vv1Dq&l8SR?=+AqtJ2X7T zNZjX*O&(29VaJbpRg&^8Ef5exSBAdmWZxARvgdK^E-i><#HE|hef#8*+0mzgK6Q*K z@_8Fh&vh%Lkqi>)NS=J4(liU~;;z&>?^#*^>?alO`pWtTL)X9`XEwk9VpWOm6A7k8 z6>M_;wI_>ST3@uBYO~Z^|3OS*&fA>MjGLBtPOpzfyu*w7goFcruAS#(i;r8zApNpI zO0d@tM;w$pkfdR-;k)mMUZDtBKAQ?G=mZ%_zx-T57txR^9SEVJ<M=_ZzfCn9JGRyC zOr35Dci~A>Nu5t}N|d%}un4@lCjql%j!xqV2}qCGzA}9yn-wcn@6T)r477O|&7ZK7 z62TV<;ZtzZ^klK}YrAjBHa&?*kZ73yIbVx$AS>Ul_mbWyd+mH5&y8n)Lr!E=>*t>M z6<=msUrG%kiLMmfRw_YJY?is^Ad|})n+oITX3TV|i2Zo<9(fdd+e@wzvBe4UvK0Cf zf`oK>qK0vg6&~WmTpX;g=!|o|mA!Snuhd7cqemTtwj{Kh6{r&T;x_L))#Q98+4_B| zG_`TU{qhW}Y&;G2rk6LHzOBq74+M~s5=**5Yf%C#b|*ZIO|A@9ib9=wg=Xq@x~4Jw zo03UEA54cEmbZj*c`$rm4WjYB8uW95kJH{Y&wH~>=BN18R~D>6X0?UutwC0*P0LrJ zsMgXP{@N#KtN@@xZ^f3e9rS0T`A-+^Hu%C9fTI;r#*`?aY)H}j``6{suYYaWt_#p# zZ{7hD>}T;WoMiL9n2~7+T>0Dj_ze>+ii0g`@tkhazklc7f6$%ijYAEUdKpwXIs#5K zX6Z}LOMr@Y<T?{C`ybdOw_VAAD5zFIPQhnlHYC+=GoHNPRH~~;>{sglw+i6*FY)FI z?j_vNsJAM@e@?dk`65N!)9gwd;~qH7egIvvNJg)Y=?CAbH;`cq0=VTRWvX&X-y78g z5y+Ad9kKQ@V_*#{W3T?Lj%iwpuZEdPuAgVoN_+KW#<&1D6M~d7mOzyLqk&4>l4h-s zen;!ampL7C`M*`bzsGIQMZg_)I-6wE|JCUK)BFDh7nf)T@@7c5W%5w!jzF)%ZJAbJ z<MPs&b~Fw|-CmhV7YbBH9;8F**1M1*i7XuCPQLGrero<H_J$LPBfh#dcCJP6z#T}8 zEJ4kYoG~k?vHE$awcvMc0=1`qylyk%TmUw1w=_ec&HX>WWG{Hd=(`J*&%TR1!VFaQ zH-^w@j)~qV+_=9t70kn5A95}JnD;JrJC@Puk@y#(2;-h?bJ_HTfBzc|`Y6I-Hhq+F zm$?4Ahd*!T|I5W0G_E|;GFANJZVgB-6@%8Owyqj@+ubFw&*Xyk4^S0~fW_N*#RBN% zvbgh`S<ddI-2LlefR^e%zP$L9!TROXuWwEH*Ai<V#BU5^vQ`k<?o(Ip7-W`xf(1$N zIQPI`PuDB07|UA&sPaxB`8pgWEWB11-UC|Z@8t}HXa>Oj!l@|%(z=2XOnu`9n8nr1 zfs?S&vFauyiWda{gkp@_ejQUG@bAhu8`m1iN|-f$u?<`(SS)!zUU@PEIdB5W7sKih z?apFy#PUKGkBG^C{-D4+e#p!WH(<(r_4$uyq<Vps7f7o7VCxVN=@!WJkrPxg9+p6( zYNfuU4?a)~SZ|iZ+<<d=2JXWMaHvtn3Gbjq1*+*V*h@x$H$a@lA#ZY|DPUZGcU$*n zvJ}>Ys1P0aup{PpQ4smQl3Pb+fz%p2Y*BVMl4Ep97X{rRze#IUmN6K;J5Rnj)le3i zy>bMmi`~TwU=mXZ0^{34LB-x!nOCYN(ALvw25LjN^vBgo$TtB{stW+U*r4ErMPH_e zY<5~&<$BaVerkVwalzZu$J4F)=chlHQd(Gb+4#xJBS4QgssgHgIsGX)v!I-+Q`aM4 zl41=sipiE<=c#g^JdbOD;X;0Vka5OcJBQPQ`QfWC-ct-m^?+yWg|<;3+sfxJ+4)74 zJKx}HlFz;aWigFjkp{57Zv63-0*Ats%`-*}zu*`mCw*f-cIpD6?y#)n09%TMsfLh3 zyYBT`VxB=L`k@#NG|k^3g0zzGV)~!I`y!CRYZi<GdVB0QFtgtUg2FDK`wn}vYZ-F5 z-PP>ys*gJ9)*nyqpTFVXFWg|^uv~I2;m3bI9orQ9zx@h;FnuL)4L!dgf6SrC_c{gK z<S=NFJrYD*?COXiWXjsvw0#nIixtc#dm#BiyyEM1Mn7h=9vN!VNoGPw!VKlkvEjFO z7hLf|;Ol|xNtof}lgoUoDwCjB{0@b&zw`B+Jt_y{*zbvs7&AW@?p!%JbsPPesWxOu zQ?yq;FA8?)?$-$v%L_!@7uo*LCi(Xb!<-GQ<8OkLaeu61@LZq6uLK|Bus?De4&}|p zXKb64Hf!p+uw|S}0!%5|T!8i%NRjM=Ip(0k?T)@d9=HLXuZDDrBW@j=UIK-TY+XbC zu4J+-#X};&5OH$ngsXX>WC0IjpiSdHy{fZVz^0RR1Hq>8ulKd|^8WDnDHZNl&^1*v zqSqy)UhRZBmDhnIfNvN)?Z!8nAyq!#FY~fkwTF{6&{Do5vPdxwmH>V4kC%WAO`%z~ z3<DGYTWn-d%EWHzKt*RIu#3ZhD(snhrqW%J8sO0owEIcft#u68^ArWAn(4nohgX3| zX|P$IOhFz@GLJC8mN35DqM0pevAK>1Xr5y=oJWdnA*m<+y-iPnGB7#GH5TzWS=L_# zckD<s=?*T3&rZhAhF%jROmBY8eQgE0NPd7xy()L)qBnSYKZCXc#MM{=p47`{ft)Nt zki1|Bn5_&Al1D=BLJ*80u$!lL1vivQ4B5I1{CEXo5e40nliW7I$Mm}Z(6A^Dyb~bc zCKsUsM`X$5<F`kK<AX<l-idd#sO&-O=vUMN`D$nY%gs$I?ZQt9F?z0MGn757dc*6U z#fupU7_ga}03Nq}@7=*6un!rZfgxbRE|hW%nQh+LjgZYSLij;)btDiIQ#&=dR+(|g z+JKwJfPQ*lu;En)gw|O0&Z&$=u`(_eg1li+P3+LlYv>*Tn+Xal+KriVL*n$nLO=fC zTeaB2K_g;qu%`XX+1g<#wLXh=FA}T@P1iJ@nz0Q73oz~0G<tY%t)BbAY|l%hNJzQO zN~+-15mi?3agbnDE>q>lw-R8j$g<Y3A3UozqOZpjG?1kaMpfRx07ERubsy9>esThs zmrFKctMkk(X%fq(Ldv}sWn|F->5vaa)7EQrHM;6#H<+!7!=n6ae&=>u@<ICxVORIB zYF#dRhJ@fOa4N7D(adv5nq}IrCN#plXf4(@Wye1TVdqqgxWNP8O6KBwLaFzDRh)wU zeGsH?N*RB4IlN)*+M7Uv%1p8ZJ#WqX-OuVthpTjy$#ey4BCH&mvE7cV0B-C-j)E4e zM>(Y<y~E(4^`WH?z{&cuD-V~n<mjtF2_lQCM`AGkOzwh7V)9&hK46Dh3w~kVGyPI$ zaCV&8A!>mj?`HX}NDq<dx$5tez$3-O((c$o|0w=smdB&Te|qTr&GY}^;QgO1-0Kvy z7=uhaiGL7AS)<S4K@tcHl94WO@W3Zffb?qsCGHt_?{izb$Ol}2F^&S`N$!LFd9gDy z$OKF3et->Dcg<CkB>HTU+=IxFeBk!4o4uk`qJ<PahW-pxxaSF~AY!A|d}Y8Gtm9-( zpepbVbGISv2$Jo#oot1EJ}^jOA`74*3b;t27)~IKtibn?fKbB<u#58pUk(hgR=R4- z%X^mNadK1e)+{_V&e5yJ-6sZ^*u09u!#g4pzK_RJ3_gyV8SNvcX(1S0<n`Se2HUZX zCMG6+iHuyf`lvz7tv0U9l78=pAm($;AqY=tE;EYr^;Ed4P{Q0_%MadjEG&*Cl_eXX zch^^bEKZ%he8fralM+BhQEM|k8>5e`e;FVQ`r8fI0z6tG%L#xAe!Q8ww6M4IVEAjx zol3ak?<$@McO$Zf)kC!j@cZ*A2)NcFppGz>3s?abJuz8fBg8dSlHB-+`X+uBavvK= z@k!fq^$uwW5qfsLj=V@mmMDaRWwK)fGRy?fn3$69Wry?E+27kp2CxU)lH@Dt*odPa zFvfL8ySf0sEjg6WU|iuG<h?R-1o;TTVWJbBc(0$7p;(xYN9K{#R@WR$0Jw%<#-8NN z0+hDgdHSJ0h|}?~Pr{{KIn?n3`%buMGDtXv0hLW#>OGMU%zqZJy8!F>2LvRoEfu#< z-A%dx;jAKJFizv~L1J9C&A`DeVBd&sPDOjW%g8=nGCdgk{eUTp?mP;3O%e6ePi@}i zWwrnAc?r7ITljTftM)3^LJD&hbbo{bTYHscvl!F)TtbW$evt?@MUmk^;u3+0czl~W zp2r$${5w$e!h-_H31H1ES!ck>NW`+C@w-<g@hSq0lH}Ie+zO}*7)0cnt;=3)GP|)Z zk*3-v(G?7d5L1-Y;K3OdCrTvCgg{N?U;Va{*r*yzDTfxyM!_h40|(F1lleV4F)$vj zH=U;t>D5#1FAxyX&hv##lSMD2c#T>!d^6JAZh~oy1E(z2&TV$Hdr(&FV1@|HXp?Ie z31ZLX3k*eWQ~v!7{lC|T*Cu$L{`E7mLSBI1%3qTCW5#=D5mdN}ptX2*2#r}rrnT&N z9=C{2rUOB=K#4PR2~7@L5hDKqg8l)PjeQkh94+T%Y!idS-V$GaOMahyFZ`X(%-fM^ z&9)uHp*$i;evI@1LhT{;8yBQVYay(OBv+BsL3SsjZ3H0p7ld#=-jWbOnkMNqN9t5l zdLT>#UX{@Bj%O_YBwUURK6^{d@K)J+*kIA<O~Bfl+nx83xyd>+gZzxnB{2yzNmn9? ziQkg{WEXrMjqp*x&R#E}frHq1MXPBV;(NNUB6QYcb<+Eq$qKzg&>;T$J_7ebSu>$- zUpUkhl@Do^+AwF^PU_o*xwME@H#iLPf7QJYbKC*`NFQt!Z9kg36nnxgs~c{#G?+wW z0>L7p_1ztnY-}QDYo9NrA*$hM-hn!bjoR;{vioLaO9i7WV;0>Y<xa<Wi<SnFMZogV zvV-eaa+MIVVb^fuCnogfYRPn0ehCux_t{&H$#A#$-pj)p6*LNcC5iVlx|S|9z)elb zPF;R|uQEnwkiy0OgGzdX4EN$R)0uN>WgkV5%PT&`g2x4Su@CZUBJ-KM5az+Vq1z=O zm9&UG5s`IK4{O5R8p$8YAADR=EQGnWw;3z^gJHcsR5#_F&iyNU*Gc<a_A;VJBK4xK zS{avtBdf*Mu1n`S7bo$`r<ir{sSEsEU}-cR*NwfhOF($4(;cNV!cf?D+vl)bJ_WlM z@AuiEAZA-3*nY|2fm>G>&t5F8i9Ik{ZP;p-aaz<KKh&_ZwJC5z&?+G`6cLv!TJ;!q zMk?Gha@=>m1iC657#R1Fuhg73GbBe8Se074)cFQQxMQ;EN9fG^t|sL{9mycKExBef zu-}<_B7YX};=(H4s$*wxus$n~NKCV)5D7-0b+r)nO!0J5db>>L9L?$pXx(Fvjf0(| zEpuxKYNB=%HlKT7sf+#F1?O1yCz@}+MJAy-EebSeyiXZ-qUXa<77B<yt`}*mj$#f` zM4tyKR|Qs1SVNkLtuDB9;&c`aV{LDh5ZzjN@BZ=clZO9W9*Upg?@vAbbJk@Lby>WA zUeDwwV5`1^#YA}nyk0_!AY%9ej@!i%7#zMY{-!C#imzBRg~r*j%c7-XxWT}2LvY!p zn@J)NRUtp}oo1w0Kfu1YQavj^%yEMy+913tGBy)Un#$EF7bRQShEs{X%TXeizxiR% zF-HK-y!pvE5@l~L)Fe87ZO@#lmTYgL*S_>A3+?%P=%rRz)?9iiVfsu`_$5n&m9g$A z*c1ys4D!s{{1jqBh09Vd&FpQELIV?JR&!8xYZwjLDQ(5eqcfB3eo8eKp7EO!zoaI_ zTrU$PdrI+>(%1dHyxSJ1xfIdsL7)W`s&1~hp5d!&fa%N@Og`H03vUrEddCxH{J2*o z^vdLgDcREr$uYZwa5;P=Rxum>WY#K~;I<Ykc9PK~sidOrI*k6^`3QP;vif2oTnh3S zyhT}0Z|AFCN@bpk%oneZ&z>XnsgGix`UM>Vy$Ge<9oF@hsk_osL{Y5}C+99V18OA? zK9Tw!b>SraL$)wRzSM8)ed!aH`m_!S{EE%ioBkX*re8#Yb60ido3$CNNH>_DNd;)U zNjSm(>AA`py+&o1%naD&RIJ;n!0BlqN#^4ywr7>5i+B*~!QkfHMVEDmrS_iEz6YP; zm)#Ip1#7#5vJ+|aw#@w)l#<n@P}cH~<rIgMQiV6An{v~2TD@G`?7ep{8rt!ENEUt? zqYKB{^W?XPUc0_$p0Gep0gK(Fmm674y597vDk~<xN9gbU+rM9{_=0}+@xtQMe-%wM zIQTT@WGAM3zuqNye2<Md41o-J(Pk*(bP)9lE^98NHR$C@Tyy^(kG4y<$5eeFw`47S z1DH`sW<?bRw?VUho}9g#_|mxn^9=Z!$n)mf5irK8^>Z3zL<Q?hg`lDE3r|IhShL<2 zf9A6vB5|5W3zI+GE{G7V*F?^mZh~wnv%)82wU=@5CHw7w9HljtOQmC;g{xZIM5ylx zBauEx;SBTvOadZWn6GM6>tt41=*3CAq#vc{r9%Rwgk2Kq6R38`$qiR=C8dg4=D6EV z*qHzD0`M>Wsq%&z&a5ZBq1GQLzj0jJPjN}r3G=IFN)$FV8L|wZCIpsDg3`nRSjQCv z5CyZd6xXCtuS(n-hM+o@Q)Ra$^~s^HXtJpeP&0lpF4Ot=jWgqW`B+#rd+-~6FhR(k zqO-g_d237wb)h2TL+76><~f|X)?V6b)yH!7m_$xAb5%CoZ?A+aYwwezRKep)58Hct z7l6-nYyH6>eiweZ#-({1e_)CyjCod0>qzWOR3FUu25_^-iNNh2wjRuSlYnk;n4~pk z-e4%$yzr)v{iukYS`4tMKUshEv{SBZRd1PNpx;c>`FjK7`f-ft%+HK1ksA4Dsw)`8 zD2DyN!eiZu)e7{x)SVaqTrX)+p5%53<aZKK-g%%(`Cx(2v3!A@Y#Ld9I4#12=BG9t z0%L1yY{a*`s?i`+^X<Kb=g4o`BRS5UP?5I9d9OpXKNhuggVFr!QPgM0dJ4H%@*siT zSujm&-iV4pWbjf4#SzoAS6q)KFS6{tTY4~;(9s|&>pnUR)MD);sMwPGZ90R`k%`G5 zPtI~K^=rnmb=fMvHW<iT0Tw<nl_H@$9oDvegjH|dCd~L_nz8X^ETZ<-N@r&L9ct~t zy8}AL2;p1FKYxw1g_jgxi-zXaCG&UeKd7qDjoL?*2ym5wBiItO&KAPa0y-n+pg7Jh zna?l38SN15Pb}P?Iddnuzi5%Mfpl;1%B%~Zuu(bDxzts<J*}roFca<(7@>PxGH}ga z`SIM?Nj#Zx9is8pUdEM08$Ru6L9;E+%#KX5P}ddQ;zmA=rH4{{YD>P#CYH#G=gJOW zoUPtDSk{Y14}ky&OBsS$K_UM;huaMijp&g~WdZ6`{COko*f8pt7l{thC7EjW5#c2Q zy;C1@EvQf8mG`U=)o%)GMPc#EljdO5m)t6hA))5x*NqYQTyR$?)KQ+gZ&2yp>NBLS zX<41(5pcy6wzrKgDZYm(&+z_8x_9R}aFuuMyG^|j70PeD8}BE)Y-)co<3wYWE3X2= z&_=YMia517l<JZ#f1VdfM&EF<r+8Y>BSL(kugI6`X|qnb6@tvl%s$wx)eSfK^{~!+ zdMh8|vJRQuetEqhThjbc-7+n~Q{i6{Qx1GdCEa{U8x31a3v^ZhsH*8YU!(XWC8vJt zjcW|vDmcohab=U)*17;QfjDHp^gMOyFm>hnd3)tgvJ5L!uHVw?RbzB#x7WXBRJAZI z+ISgnbDG^A4K_zA{+0p!Gwur7KQA0;ymao4F3Z0bKWkt$aICe)@-@?#?tYRwQo=y? zm9T8)SbJ+LDZMHH1o*_}isU8|o)A*vYIMkD`hd;t8Y8~6jYPR@C3>lA&@t@goSsvA zrWXI+9U9#BDL24<g7A*Q{i$GoUci7W?@Xye(Gy4f1aPeiQsjCe1q%ZJJK<Ck;`RKs zV)gH^6g>d>RNmse+>!Z~jN+zIM85NfAXskaW)=%TgMwCz2h!kezbfD|C$+nnz;7eO zy1Wiu4+;S%g?|dn+3Qy1^$*`36!gN87WDgT4-?IrZCUfB(Cu!SCgMZ^%!|OwvM0QV zEd-zqaR;vwLhLD?{TySCzWOlyj?3l@Y;O$o2XN1q(wpOymi?mduR0zA<4ep)nN~m$ zhjo1|5gX_Cd{e=u+osx)Io3rhaubm<vRKg`^u=F}J$HAZklI`T;BZSv5Y?9X>h-F; zU|5Y#GPC{qGWrQo^X*Js?QVp!L!W(;8`e+|W0K?m!6s-fPx0UvR6C6oczay<(w<dd zB2LF&m=<j3;utN{xw@(5z{GU_4V^$|R++bt@S&{3MI5v5BT{AqUuRCq+^CY>i<e6( z`c+vz)n&H^!o|>6#PtJ^y#VuJbksm9|7OVjXCU(g3<+|@^n|tlg|^AkdjYi-FTSkv zB?yT*QesNdf*iXBLBsD-m(Z?a2!WK!{E&-vg3`Ae_+R70GU~7JZ&o|!Fyau$(57<j zPt?G|?pv~wNWSvbOapbz-3tSZU;@8x>c8HUd4)^%mo0-T{aAgYQ8P<&^2y2zP+FNi z^S(ND(?@Oat@1dH<T>fr&SYFD=Py9-^<4z8IyV${00G9g`@?`;V<jfA3H`KTo!`HC z76cr;Sy*RWP*?P8k|~#^tav(m^efJfet!E3?$ihJJYu6VB^)?8|D5_cfB$lHlCr%S z#LOdl<aT4Nyliz7K!hZDtc=~Qj5u58oypRyQbH!kZJAzc;=gq+KLX}>G<xT^4pyU2 z3h%B?H6I;P>_6L}Wi+8Mb0Bs`_%b9-z_c8Qf1hpfz25!;fc(n%<BR-(vu<1I6Ebk~ zX-TZ_Wkj67#LaI{dx^;EBFSV>h%sToT@#+KGSMZ<;=`fhNr${ZGLptUTOu-&G!B~t z+2fHAkZ+Xls+W^y{U{R_?wGz}Rro#*kTOK2;{%q5MG1rE_nyj?WRR8J7)x-ZP~}@? zbYok=h2J`9{ZL*&HQiJCpAlA2T8q=+o}MrKv)-=exITefG&AP#6Y!#L*&s&hG&ap- zdVvSwUbgLiK~@W4OeD(BTxbmdlMlvz-N#bo&T5TKP9+p0t*K)iX3}W%^_<qEA`nw+ zZ2ON2Th22uC_9ARZ^^_4qtRgeY%Wahj<mAa^je*H9hhPKSU?9IiH@(sOn-~demMXo zwA3)7YGkW`v9ExV)5fFCMT$sN!b9u_?vkbtjd@c+%4}C{_xq|FMirL{8D6Q_@tO1@ z`IorDfLRI)ch&JG_Z|l}7U*T)2Hy=TGdhVi4t+pxPwvRwbU5mzd+@5D<-AQxCS7Qo zn`_GqOXAE_P-qWWCFsl4Z?7dA30NzA|A^91KwMWuo`2qis%^<^A|1A+(C>BWv&MY3 zJFyaO5eP7jROEkv{AF#&XVYuAG>tr3iPUNSSs-R@QyGjCsT>@Sj-MzmGkfy!n^{m+ z0UwyHvhCe^iWzqA&2%TFn)$A6v!VGEq)@#@VILwZ&_(LgS~+G}-$Uo553X#t_~wO( zQB%)K)s=ot_!vB!YB|Dc(6yNTv`ZhLq%&iLktjkXk!9iYD_?XIv_-`BE{veeRvanp z`>swo^(=;;gc#{~e=Rc*OS*?3pr6?+&M+TumI-SSy<0Tm0W38Yk`Mbb<9B<<x)D89 z9DbIXNH%-BoU{fh#bpul<FwEjy{8GgPMC!sp>}SM%Wh;$f@F_}h|fxhpGw##!iLnR z8`5@N5oVyYkVmW|lCu9c>Hdck#tV62!b|3_PVLHNgZ0>&=X-_GXu!%8GVK198Erwa z4DXZ7>QmJ67B_hJSR>Hu`QBW=U9!l6SQg-TqYJLJI&I&?*8vrc)O%T1;qyLhB!jFo zoc^FD5b?Q!q%=EF>E$<~_0g^f5J3QOCajgu8LMY+G*Ql(Pf@zD-K$K<Uhlr{3gUAT z)DA(=4Fcbas0?<lfcUYGXT7GT%OeV0ma$l1&l8E-kcUQ77?baLU74c_z$DefxNI~? zStem5K_kF};t>MCJ!W9OtAwrjJi3^dgS`V=+y)(;tAx(eP64Z5z`dM4bp+G~Uu5c= zY^Ae^RC9Zjyj(*~FVyG@6*m=_+Ls0TaVCJFHCMgo?D9}HroSLK((Qx@o!=aQhMc<- zQx&is+|rM^{?%K>_xd^q@A`@DJ-zz69c?KX<M5qcnn>$M5^L>i?IOF3<Vke`a9D8d zUNAj_D3V#4;6HA1a4UvcAKp;MpQ3ozmy9we7#~NXG8C~p*|Slf-O_}C{I91USZi-X zFk^ae<}cC@hrr${VWjPO+lJ%4!%u0CS8t3b@BXY9mGvMnL{n+?UhmaRV*vAk9~n;) zI~ISc{W0tMr=e)$B{1J^QZu{3^FO8XZ7wfp=+AfV&HQIzq4uq%m+bXz5u?c(!mwLJ ztm`Y9BqTn!iLkw**ORlk52E5j>WHQw5orN90NImScy$5%&+WYg;m=Y&0iNe@-YZiN z79(?PIzeVvEP82R-Mm-HRP!#A^EadF(tUq+x}Uy8--?sB3y1@L>g|;d00y^-vJp`z z)Jwo%HRfR6$*mgh<YOI>4ijNsxj`Ue0H=`%4~(4x05d1!%d$$qVZH0a9f0F^>1tuf zGvSqOPPICFma%gi`!R$k_G)PJ;b!Wljf+}jV1%PkIu~y-MW1|F+Mo`bB5QpGe5Oex z;LC${e2=)vTZ5eiFs5nEc*`cL7aVKc%T3g}&_UBimukJ^mD8?D-YA!vgnwCiOsXvf z^JTwnnX5f<3Q-3)%|6zluJC(l6=+YmJEY^FuIC(2Qjp|m0LAIOU*BFXF3;1T`GF<} zws3IgEj;TUaDI`z|Jq-2iP#cG3k`v}ReN`tXX?I8fm$Xe8;rFwZn=R0YcFU`e}b_x z1MV-!gO*gD6<Rv(V2TaNx!zZ@+EcyRMd@A)5bdryL1Qi{hUglY&dx`l4BC<P$#jYV z5I)r%&O3M24p`>h3H+WVR$y$?*h`ZHYcuS=GvoZZzlWY&zMS``d+*$qzf-lH?#(3q zCf7tR3cq=~mF<-&=b<q><mZ0-O-V7_Fb5<zDy<`<V`K68<()Txx605Z{!{JcT9*Dc z97du>AOmM!lqM+#m6R``VDc@&r0=tWcJ80KTuxQODDb8>^0`v#rYAwU%EWk-bvykN z{palvcaXr=Xpd)jqbuLYa}DrM$NDs1)0LwS$1~=&URuD|rXnum-0qSuUpUzAFav&A zA-6sN^{uQ}7CpH6&yK$HkCMcIzk)tmK{AOW*(gP<;dc1^kolKyRJ$4?|8G0q7*Tt@ z*=g;Qzi)c$IM22|sdr@7-e&qLK%E<l3cF2R8cVF!Uhyp!a9fF=wKq7=8C|pAc&r}k zCO!_v)7Q2ZZ*_<^#FFnOkaIQdAbj|!aR;H~1w?kB^Hu}0+6r6KfKC}euZv+<Qz`6i z-;@Y^73}c6JBL>`H|F<dXJfi4A-JeLQ?R3_KHnTUlJ+Lib?K9$?OgfMM9IOc)DUCj zyU!)eZD>qqBT{2TJ|=>lNg-^@&0IMFkX=|j5dF8PCF6({+eNPrfg`{iVQE>KL>gO` zd27qd+CJ}5?l#VPa~1L9_J;E{y$w2Zc;f^)FKa4#;)37NW<thpbCRBoyZ7~MH_Qfo ziEoB%auQG*#iCkoM`I&6wPvPyM?kJY`+1(Z*Fl0^nPdfDaw;(+3EJ=dzA@U?Q_M-G z=GwM81BL+aUO{YHpvk+<6eZQrJ{-%}u9K;k?t!|9Zch-<zO4Y-;^$VJQm=F07||S% z-^H#fc3m<4%Hl^d6}j(<rRQpOh%O)47{-;nP_qAET3N9AQ<P0sw9#>dE(?n5n3EhW zoS#d4+-n0uFXDnt_QN?+Uv;I}cIBU_6=j_v99xRA9TscjO|?gi<4eN%F-VN)5;y<r z4lB?QLqt|!72#x0{UMfEHLW9E#B|v-Cs(Gm?z|6VJcj{7aLU<7q29aEj$JZUyMX;% z?`AqsEVlYSI6kf8Bfai>hK-o%EKI*j687US9g+SkcW0;6qvY=CiA?ATu!^nNTl>#R zem5PMm}6{c7sd7a);m^HD`OZTusNO7Ofp7))9;2EM<dXGQ%!$Rtd_k{Fp79im+!`{ zC)Vt$%T-boT>8dUb^$zegV5;SUPAB-_Xl&)%#a<k9~}(^bFX(7<W-RA{_dVAySvF5 zV^IF0>9SzX;Fw~P$dC@cMIYZGJ_5fW3_Zgd@=8r$Ay{QCiw7Ydf})%@eGhEUUep2q za>hdWqvi_J<WJ)wns%e`ic<<{dY*B+@X81eOGAX+o5FL?MPf|lIRtRKcn7;RY7&5W z>*4SNRM2W^_|Flkq!MZ%6ur9w+#k(E$aTvtu$26Vt{{NQ0!zW)+FsEqdzK#SU%F&U zS(ZA!XtXmSksOHbJre>H8P-oC^NTS*t5Pd$`3&Amxn(eD{6i7)2TKKfYatN;dllb* z#{CPy;Z423%lsw<&z2ak5$GX{Wnfc!IY!~XGGU|=7rnpERx{r*k|4+hdtRqs`1zVk zuNkGS1Be52Xkc=>AT852r=01-2+#(bVguP7O9bLz1n}2wHKHna@pWC8+HM>ezzzU; z<rcoLl&>A_*1-%DGJt?$9FEJZw_EcX2Td?b;R7$Qq`oDe9N+B@=t%tacb=py>bY4S z%*K%S;CSy#otM@Nuo?McND{=VWN)n?rOVF}%Gy_(4O8R>tT{!q*O!|pEWUzyr=Q!L z=jvf!8ywwy)M_GIj{R_}p7Vg-^3`;RKxabUS2aeYV$LWS(kpJj3&ouy@M>??(~kIi z@)Agdp*mVK>o4WuO_Ae!5t+frSdP~}U6P_N1C$(JUdp`3PqK!uL|Ch=!8E|}dDBl6 z9>2o&=mDNlgFH{goh8#El&Vtl@eI4vOz&#BM3@Pj8CTH<bzD+ZW+0JJ$Mm}WgHJ@9 zFY5g5WXuSM+>%f#gS34VAMRMHr(kB>(J1IG=k!ieE9zxU*+-1^0x~(I_E@g+>r!>i z3VtrUTVNmX^}Z9&2h$=fydBghX;|iU+1#042S4XfenR9-GMd?0TKX~BV}N3QdC0)s zC<VAuL;?1rw~aQ|bH5HWysa<U(*>-)*6_u8EJvgge0Z1HinMTbY%A4DcBYkoO6U-W z=<vx;cas{Uk_ssuxzTh|cINl8`|t2@C6c}s90^5DHy<r)sj(YAbd%}6FZ$6cBZ>8v zy>%1(&f2y@N8yn2ctCj_Gcl>zJjHe|A@ll(<hrbO;KHq<y?}e)i^=(J4}kZior35s zQ>#z$1G-fPD+VTpsAQp$FWJHmb-Xc@lB>YOGLVDTYxf<0pg8g+NRs48M&r6<B8}<( zLL2{t9shn&aT#>&P8!1Me{}8VaR~gcUVEOKh+|NmGvPqkb&EupoDxPuL5NpLBn4|^ zb~ffMOl0=khq2n`&<o~p(Og3k6x%a*I(qjX>@yz#G3v7Gh1H+U4l{Aa$CEf0LU|48 z+|%jEEi3S|y%js}aa~=X54#2L)WbEaMO`wREX^k@)SHUcn`aIXC&GLx-?FVIS#R;m z_hD$GpLkq&v$f2b%oe6u#(Uqz;CqxlpNe}!sn2R;KRt|BWgO#cnN}Y+%~nz0l22n@ zwj6w9S20bSy>^!*o*?^X%!4vi;mu6PdD7Ax4t%agi9^?K>IcHv68G;vQK>3sOzPWE za*WEEMHjzNCEI;B+)gi7wD~pdTg$4tl6n!_L5sszo#?@vj`HZf7M;%Y<iaYtV2R#t z#5eCgP^GMr;9B8t04|QC^P`(Z)CVKNF}>a<C8XvtOh4Zx&w@@rSK3B)C_ibK-T7x` z%6mas(}A(s!oX>f@2yGp_GMkRl4XLYXA!Qa>H~J7?5iW>!;RR3<&UEirR}!|wqClW zvEbQ7EYmCtoy`{B66><73b79cUQ)tIx^Di$%L~kozN8WJMjVB5E7mcxE8k-BIUB$H z*M=&#2lyTdrfGX_{&w2=a~-4wh_k~dI9gx76(+%7A8d^JPV^3@OqrR+;5W?qkRtXv z{t^sVDbi=@`k#N~A1_#6gZ+^;6@(f5Z@P$=9>fnJ{&;nbKEr4fn7SI9+hpji&NbLH zrlrw`X+R|4{<rF-|BcORa0pm(HitF?y8rf5uGgyj-Y(}<RYE1}E+pl8^bsOO>OiEA zVc;N&xn=b#Om(?{PjUj}&3p$m`C8Ds=z{!^hQ|BZQ6X2~RRc!SbI8M8q31YZ{J0T{ zurS>NtlV0k3x&Y>vNOvx>TlYOe>fxnwGQa+apnB~ZFHX@hLeF31qXm72tDE3xydOB zlZpl9%_@laC;+@*p~4;O#%rD-(8kCQ?!S%dxx!@{^%8eL$5;iU^IRx~B_d~J4me6V z`n`Dc-+4GV6dcgwtRVgGP#tS%HJ~tBo`J-tr$2Z8MFk$n*S`ndu0g@2YT_k`paw%y zZ-I<mdmpFjDdcYhvj00h{qrm5z;7JI@E_@SfBxJ*UI3s7kn=bYB5b<<tr7gUck}Q6 z3;uD^|NkHVui)JOedqu2ZI`9<f<*Fa4-0{ZY)E1H%?j42Y9Qybg6Qf{%reAFeAE5t z#uMnF=XE4{<KyUbE!}V>D$DK<(ElH{16~biFre{J?clHH#Y<J(;CO#y7eqM?gOtBd zs^L%B@)*3P!^FlI-L`u&q@WBjE1(gw#0Y%j?*y$el&`eviAR<Tm?x;Gqy6q1!TR-X z6opiE5Wf%%do65Z`oWIS$m|91;UVa8Zyo{+U_*#IM?1`F_7Urda{W;zlfeonZP+&b zuggsq7vK(ZlAIi*fBrtCxDc~fbbrFT@Rx@6-CZ-26__})?{89eVn&?g`<<RJ_r5vs zD4V&C=Q)3eg0uiDjOk9kBM=l11G^Iw2q!ikSGnmBO^6$F;W7}-gBWWdof=dr%3j^? z`=l;~-UmT^+*8MZ$?*b8@d3g)duTTpaAcC{yXPgm`gyNxsU7T7K=NeBp7`pmC`f&R zhh```gI*QMV%yjAlKM7(1!goN+Rw=K@QJ2=5z|v)&Hwylr7(dlcUMY&{!dW}$vrQ( z-JvFcuH%$}94r45z0#Tj_I0dN)$s51H}HuanK^F#POYlktLOqUYuq~fM9I6jKyvZA z;&`(y<USBM3k`#<R1(%ZIArn>yBRBJn+nZkHsp@@zSRP@Bo7L3cvi*E4wOeW!A6_G z;J!b(3s|;bp?tge!6vzM^)u{;hD-{#7sUGB1vPyO6ce1bdQiu7Y5*8iPQ&(@d!3(G z9feMMzl?Hc7+*{O5S!%Q|7&2?Kf06hZ?*bgi|+Rq7yQA|bkhB^<j+sGPRZbCwWtX2 zA_v_8Xh(Kb@ygpwc|x=5@G(&)6oaMoJwXg~ij5~Q3(L~QjNX;X+pQsEyM;wVVCvWR z9hQsTbOt$ClHmeSN+n>?^e_6IfEcmQZgaPjBVabd@5DzP?<VGd7!H-h1^V6(tAJ_G z`jkkk5o2AZTj_qSpbV@@6GX+!FFC_EITQcO^thV`EX*UejIBS<KEHRK1akhAYa~}o z@FnZCS57WIY&3TP?_;?m|DzS-U)g@GMWM<bxVKZmp{dR^%BiC7^eQG<?SCKqf4&*u zf;A30yh~n1@&D`aUWlybao->|c5MYgq%nLuOU1U+mcaNsPmzD99wIjngEPYvM8X+1 zX`LMoRAIm(wu1QGD+5)hKLA(xB$*o$<AWH5K`>l425VLs*w=$GDWs919|o4|s}4CR z-Sp`X{*3t`k`4p$*&!7h-~%KFy^3O;)Qi!v3;Y<h0un@u0Itvo1#P`k4qgSr>UQXm zE^ONDTzm(abE0P=<W@l5;)jzNcCiac=;^lvI}M1Z`*QVQAKcwb$TA(CZca_mA;*{f znP2sdMYu!8ayb|&rde+7<N&V#D=4{gpnUGGi{`M&<FeX}B=<wJBM_Kinfcx>$S?t9 zyrG_A?}F2u)_YUxBjM3|K*M*Ys{cL-9t#0&(9u~1vPI{DOuW{yjZmk8dR+&(h#Fuh z%dq2pr~OW^LSYR7-5_wPAIchl1W6D9mLEtwFaTs?WITKhG(g3oB#@j*_NpZ~?^Sc` zF}dHNJA*dNdyclFz&$34oV;WO_)xxZ(E)I;?A0rHJLbP0YjR`FpPT`Pv?0I_byoDj zw~Rk89IaK20~}N%t%9W!8Ysusx`HUUT(C)&vV|($BcQ~+MJYVH1!^X_VSmj!;KX~U zTr>Me|I_HUyk58E!7~sQmS(73(4^pU(f?!g(^f|S<>k685p_i=8HS@pfCYjhNU`vX zQNhYFG|YK`ea}ZzYl(hLq+}29rpI>s9Wayvv3ds_FS3`mjKk4adR6=tuT0ZDOPp_l z#)@6tU~}Zkm`nsJfYfiZLnWQU%hK9fp=Dqk)%XBSt@}z<q|0L~VSEsDdDL#Sn1sg~ zPZ~0O0kD56&Zk^aINV@CVCJ;!?Dtqvs<JXRTH^4t5aVGZ7|w>R0I5o-<HdU)E4v3y zfH$Q9Q0mJMyX%g+>Hbvzku)y?w6=d=|NrY6oO0k<a%@!-0vZvpmBiLufFijZ!4O~= zgwhxgB|rgNv8kINKJ5p@(}&wh;ycul3KX#IfCV$+2>cIVO7NGGeLlQF64nG0P=apk zp?z8izj?_i*avPC1YG5k6R$sH0!0}N#v*<#6q=US--QakivNeRw+yRt?Yck(Q9-3a z6r>vkMFHs&1XP*@C|yb|LZrL9q(MTun?<LDbazU3cb@xk$G7*l-~E2)oa@>@xVDSM z^V~V-m}86y{QQi4Tv>=gt&?2n6fm+$S5!f`8r{`Ogc=V?da6bXzs8-=(E#8$x8UMv znh%8usA@6Dasg$y{|6~WHK6-Wk1^+b3H%z6$re19Q7D8`4z^}98OIJ;oGmCpG|+&i zUx-|3g_0~t145qLaJh5O!z&{;694BQKt!iu^ZS5g($9ObA~}9kdu9Lf2h_j29n0bp zu(Q2vs}>lIy>~zOC=1z`yF;~<#&XbOi8_(j@Rr8}QT;l&uMNNr7!P$SB(GW+0S(9S zWMN-00>~Te0X&gpe+>0Sdz4r8iP9T2082PXr0o_LxPm?swRpZ?fl0}HwC=e{=GB2@ zN(%oDI_(8pmORGhq|p5^W@`0?WULhgC_HU<bBh%QB*!|zfpY+iHY!H}AK+=SXlTp< zpi9kL05XXO>M3;Hc**Gzi4h%;7PNu^(*sAz2PGu)H#cuh)L&o$F$b5P3)%`lo_Dnl z_K9W9UaY9(2^(zJS(jLYL6C5D031K0+*k>e$Eh7y<N5Os>Id2vq#{(rx9srtU<)VG z)TA8fFgQhvtd7_jBy<>o4oqDGY-KIq5$Xdi@KS*m{!2m}0~!h(5^=->n7sOROxW2C z$KJGYUTk5UZ<Uz8%3dGtCH-;I+O9gjVaMApFgD2<rvd8^%F7!|`?0hA_1o4fB5^Kv zmF;t(w-Tfe$zN<xlg{G3jJ2QST(xF~zyBZCmVaD=_g|u%-}oQ<g*rOgnd=L!O^&U% zNJH*~eZf>to4(kzY`tOCdaJP?#7@D=0}&HNYU5uaW0e(15Af-m^lm+{bJ=LUVZGDB zOt3|L6c?u45e~fbQ^VPn_ap3_o?8>pcY>I#m1mynXf{N7BG~RJUpYbOKF|<wbOOe_ z9`HjnDv#T*e331>2AY5s%wNwckQi%sgi2=bbGx}xEqOn2PMAsMpZ*Zx{Q}OFxOvU! zc~y+0w?CGElsa6w2dir0x>ikgL3T7IMW#Nkf1{kTsm8lc^+HJx?XU6dZfKT}Yvt-I zm^3=1<Bp`>sUcjU8^b?X0Q$L&ND=~aYJw<gg3A=B_+5U~p0BrxdQ=9oJ5Z|03039} zo8WraVs(?_nk$iU6?2~?F)wIs{pF5KVt{PCiqn0>d>jj<IFtGtCX2V5#CfKb$~V7W z_XM32lT7{a2`*XNe(<o;5OA^)lj?sLZfI@#^fLBd_9`8w5z3k7g9eRsma-A1`+#<x zn8dA@2fC&9?*o2tnRM!a!clG{R7;zu=$((_^6Vg@EmP0?IKFreqGH~*&5-zW?YYb1 zh~n{)`zNMbAHCTMV(f7g!uUBSd<{N*Q~6~2saRoqfn!EB?~AROzg=&0=^fbaPu1dv z@JU(tCuUefc)sbTc#IgQvJgo(DFKsvY<Rzv0#E$Z$&ZuF)AMw2M0osmM0`fFEFOiH zLXu<98Sa22K~5^T0OooxHHsFbJXNr1*+d;Z*bcs$b)i)z8w<ZL%ey0+w6)N%noc<| zUGb9m!r4M^wPcb>l}ofzspWaLKH=^G><o{CgkYGKz=8Ivhdj=}q@HPcx;HJ!afxEr z&PEG_su8Gb=}Z1@dcyx6uByMqo-wfaGxv3tmbli7iX0D43)*teFX0nUkC#=KzSv6W z1J9lK*DNS@yu@0c@-!Hi$nZWrc~8z_2V?*-W8P&GS&GT^)ne2~WRdq9pLhWI61^Mi zre1zorOssaOX~Q5A|1ykT(1Oqv8p>k4Bndd_-+9|7ZT=zDJWK<<XH&T0W#(wjm=M< z9~>7xDXaO9+T2b}!C{K=Wq!UN?n%~OtwM7Y8i5sxf887dSar|88F?X?%js(C>a$Pz zczdOqNIKqbx3wUi+B_7POI+6)QJ-tP$|ZXZr$u=jX9?VcFk-NtPN(Tx&s+JlI|ws^ z2S0PUp{XMDaKYyFnfuHSo&onB&x3D*e25KM56>S#hZs9jCzqj=iA$7$+|N)xp%!~S zI>!4!j%Q4(DTv}5bT2qg^4r80w~Ac>!hCU*IbotDk7SL$WHHmP6(jU=1zEvgFn6WE z8TOGEiv&{>H@59#&;|D+?1QlD2iLLhvCZ}GhGV`!WQ~Q{BEQ|Ve#-lKJHwi2r%;e^ z0#^^!0=w@^xJ6Yo6QOz%xREQz563^qdne_7R19O8H&|PiEjy}p<LO}wyWU{C9)M|9 z;m%+`S+Qzey1x?n@2P9uGSCptEHiSYDF41D2vM*`8T0FqfA($xwT<Xqq44X1DHd^N zSeHM|Z%eA*HL|#k3hM$?3M{mr-_joL&a46t4<$F5lL?S-C4)K&t1&_agOi<8X7^|R zbI<gf!GfhhJm}=-bRHGE(oHlzD;c)cqy>0Kx!-d$QQbtZ$E88KY^)Cjlk{ZCP|p_I zL$YD|xZTUgiQ6lJF&HX<O+n5}KOQ9Mc)wvPHN^g<VBHnA0IJv0cMJIJRo82Bm%WU* zejv<Lo|v?#CLQMmjb!_XrjMJqX$IK}uQvDfXhI~T#(QH7N)2pzEZXSPsCJk8MLZ*f zQ6!q2u)tNlsqZE3+p^krtKmWXDQmA$$sJS`?9`t(vSia`x<y{|X7ci_wu#`!EX(o2 zjwrF3xZ)%yi5uR<g?VjlTTOteebiX%buEKnqtWXm&g*+iASvHt!Mcjm>l`^v3;S5e z^7bD1{qe(Rog&2cK6b|8Ud=mL-XeA9!5u&vIDPm)xyq=ghRJjQ*6q9U-&jC(BjitU z-|Y}A{}0lf6nQOh57Nol)s0PXMV%CDFZPE<OD-5NQ7|9ne+1r(&cEoUf+?wAr$8Ej z0KQ1$P_HLml@I*|yUmb|4}r3YGci=li_470s8poSy@KL}O`WV2#i?z2(z*Af?46bG z!vR~N`lQ%#kpxvKz<it;%&#gzXOr;Gl3-GRm_>pA$&6{J^iI{US>~jv@VL$!8+Y>A zXYu;tB84xxR`&N?yHz#YC9Y|`P3#^!!V&VVcii<i@)!FB2`x^-^6XNq(sg1hmRzv* z=yf`I%1R!Re!g`$AIH|2Mix+J#tmt%)^X#H-OAHh`XY~H`F^gGEbQhgP5}-1qO4-H zB)TE5xk-OPRqq?(&ZWf^$x(f-jpC5l&wXOn3d5i-xr}F8tGAue)9K#bJ5*MeEn94g z0bhY?LcA%KEqm-ef$%&~o>|n?Fx&EHgnv4r2`!S;)7vEOR2Eg?Rkj|#A-^bSvPVDD znI;&p<SEH&?EARTtDL<XU^zKf0eIsXcKsE*&cu?joP%~gix17)`>J!B_T~Ty4$jdW zz+k~DvnzdYBCWuiIU+RP@W3SPj#MYlWt1c)@!=N9NMcQy*AU3GOhNG6-jQbaBEF(} zgE(^piV%%A#YQU*^mfIe0>AFwBxORmNJ~}aZecDs3EcMo*GbSrPy_U-9eh5_1lL~G z#vEIRKL+B{MbfEA-?C2OtP=!dyTDn6kemXKu~?|Ze?j*A&>*<jTT_nacQ~+4Fn?C| z3nU=@c=z)&vQC6;5AzX&7Svz3yoKQmg#JBl?bSY`kTbdKsuzF7jYb__;`d&f80<4n zsj_SLm8ly9Zi#>`HN#~zQHBL)MOrmY%C$4$a+7c!5egI|UM_ZMl$l7tsLZ6mav^o0 z>jN>dqs<TQJkV3yL-7XE8<lTN*zRslSC6pWoV?gTI8AzC{Lz!u%?YB1LN0V`Ce2sV zlYwx`o>aI+x0}k`e1feNdQ2kR5eOrn&Y!q`ol)&vkElIQ(V&D>r7x9zq@q|T$gW0O zct31X=L#1qf*C?Zd~(Pd*bDv=nAsgzv5V9%0H=r$8BCGHg@b%jpSuM}bIl=KyQ8|+ zefc)|J%qQYMVXtE-M&-Z3CL8?$qh@-%hFz(1-A5VWy*pi(lOzy0~*q;GhKIHXUPXp zlQzZuEZ}ZBh&6k*ztYQhn6cPdeH}9kFlTL45qIGK#RS980h*V~XL1<7&r5>$wM6Xr z=C17uPtRuvTFE#=UX^sls_h0gy*?_fYwVto3>&M7Y<HVpYHu_54L3%(u&X&LqHHBW zunt^HD9=%4Qr|}Pg=wU@nlB{XcdTWTu0m`cKyv{SL@*bLOw}L@DFA88p2vt*dOnaJ zd6ZT|bmNz?V|%7(NS?0-^U~efy3@X(|HKe1l|bsfrDFqB2yS%g{nqPSEr^|SsN?S_ z$VI0Z+fucPr*#5z#cAax>dvU)H@eX;v2f-#Rv{|z&!~0a?x5+rR8q0aT<z{eNlgli zCpBN7jOim|3(m_a6cVil-U4nB8jVg?I!#10s`Mvh&Yyphhg5JV3-X_eTfJej)r3dn zfw<ziTZ1{ULIfA4gkvrILrrekI%_~hoJN!F(t&D!P&bJ9`SAk8zXH3gpL(_d9E+%x z$?)d>=kPSiNdpLh^X#NlpFH3$>isV)Ds?}sZGx4*oXKD7z-{yu+$$9U<t9%YR(=Wd zyyAc{f-!6C5y<d(PFQSPg`HY&F~<ZP6zu>dGSwCdb^NQmxnB@w^0zrO2X!ENf5RJQ zS}Hq6LPURJQm^x=Uhvb-yYbH$B}KV*as}Ss`V@irSIS+koeXDNAHXa9RIf16pLTO| zC2k=^nI#-@2ooCpe1|tjZ{!FPog1Yc*mt<!33ebLWl^yOsbPylJYkvM6=0{kvjAj` zZ9{7g@;csAu^amIcx#)!)-yZlWTNWx6O~pTx5ZBK2v~d4B>JhitL^NY=bbFFF0eFy z+hvk^mng}Dk(J`+O9#U<h{y>^Ek6ai`LCt5_(-ZnfvhZk9=Q%tYAIm-iCKL&qa;KU zcjA+T$_Z$t#n=aOzG)ms(_2-_eu@)=#i~uYuYS98e~7?hbQwaCUd+tM3eX-kM@)Rz zA6K;U=vgu$S0A5S&(>7nEwTAz3e;NbT+Q7`M`d3pUMeLwxjU(JZyc$sfGGKBqqH*{ zM?|GNpF!`(u>6W_6>ykutuCZF!uYzZV0oJx^Fk|1!c*%i!Cr+aH!03i{42(vNbNt5 zMn8RIJL$YXnb}X<(8`9R=les<@psET3-71DB9q4eFsIdBqtk(ig_q*vcYjoVOuv6@ z#5qF*yQ$!7`b!kbQ}wwMsCQ;hMSrwF%E)=yM(U&W&<O)+W^3`a%}zREfY7({RI+S* zObW1*EAb8&8Z1r%K~pJoiDuU1+c)OBqPW?61yy)AW1(gP(SK|8Et>ekPeJ3Kt5TV; zg+Ew>-nNKpf`$elLopt4cLEcqGJA$!qD@Y=upk>mb96p}$GBj<U4P3{)F!X`@HOhJ z$L)&|gk){ZV!Y$!ylg!UipV5#)h1{gZ<Kb|?yl)d%+!8ruHdIJ=J;?{K#3$83=3p% z$@!Z4=fx(%n>i-L6v)sH3`;1>mwpCxO9?50RXm=58);<=5~c)$+qNu8%L0pWH~2<k zV}-lZL@^Z1HXi-;3fnU?2?~^_Q)?ToPF`GoAI{5Y@*W^Uo_NUeD{Dj2-AXvQ#D9a3 z{+y3rKWKRXbX6;rE)4q@y6XHO>RRHxswFZ-dfQyV85dfXc)=(BL@$`cV>wH13<B?x zB`h3@IuPAl;JEl`);;R9tUa6D2gnQiP4*|{^Iv9v?ziw=GBY2yUZd9(oPBhwi(|X) zdOu_=(Ma}zcFR?{n**w7+JHPdI<dZe3iMq3Is|;0J_G4EE3uXq)%^Fg{<om<2P$)d zBs`J?An~c6Db&k=r+Pos4;;(?Cw}U~%thB@Fn%23u7+oL*3v_vmY3f{&@Eij(y9Wf z52Z28NAW3`gcRN|mdG_2s7WVy!zocmfbh7Vb1hp|LeP+MOekOMLcngezlp8udjPO< z_>+`Lp8BYHn%%Sxe=~ON-W0d5Dq4{Ue^nd)mbZFuS|$87ZE4FIQR0)vk5<-{L6;Ds zvJ&(XLu{{$%h;;*<$z#RaaPhmt7dsYK%~)9tfkSY+FOH(_1de<a1mm?1P4Pvg7}G! zx#f-eQNt<H`0C<F@=;E)462h|=I;J_QTM$N(lr>IC^%S>_`%dmy*s&pb$hS-WATEQ z(-cU7MeL2lgwVNkhcg1LSSkU`_8uj;xExj9s^)lqgwYZp5QZp3fR^b`fu2nOk0RQ= ztHo#Got6Vc{RPy->*<;bzuge9J*1XQHi3t*>$3)@NZe0+W;v_yXD=doog@h!BG&rz zJ?!zuvntkaKM9#wBHpqR;RJOb+ymZQagw~$CW2BeMXolDdnpsftxK2{*-3m-A~77g z56yYM-xPoOL9IkmfT##m=aQ)-l%Gw4m=oQZ9X<q_uiop%5^^er?Gxyha+WB-PAkj@ z_Bw?Ai;~B=Kt!FUaQ;coUqt52NCX9ul9>9uqHx~HloOVKMc3iQ22wL-@ACX^<sTZG zO^pD^kljN%44<f&`9ASHyqvws?)CG%`nP6V>Wi-1i;3iW^~!to5>Rm8*+joM8|CGC z1_8{bPY6UuAr5JavYh6oFhiF$AeKU;INvfwQa*>OlWP?lz$t}sWv1-Taz`~nh?{qY za0S4kjs}|??Gv&JjccyEh>mCN#mam*yFafVE%xJ&L8Tir)5!9=HoNT+Whrg2!g2gQ zSJpKvE8c5qfAD~Xlp_wbC2C<^?h}SttY)OKsYski2Qa-wSL(cFfBTggbLh!_QbCqc z<)@v@`f*{R!^6^A9>X8PH>6+KCGZ;BMyOaY$JcPuX6UV4Kegx+qmA<2p}<(ZwIe0L z#N@SR|6axHXJk2Q-pUvQQR9;A38A^~=`y(cXlKv6ENislj~i(X!4Vihy+ZjAN^Ov% z(?2rRpcDCCzYJun<53(1Qc0tM93UGTo0&m|QC=}6ppB>4wV8(=Hdd3ct-oklA;IcQ zBfw+=^ss{=rEUP1XV2y~pC&9wD-haMEafAu(&?E7sx1lz=!!rcu#|vHT1T}rU>d^j z!SyJAUa4egj&m^WKGOqz;hv1~jCCnLQO<{tP{X}__dA+m7X{bt^x$uH#m_cKbUKA4 zgB8X;-tRf&16)aIwelkX!`)+3tFaEVQ}^XIOMl4?_~OM^OvgqOi=c>5>Wxd=T+|_) z)*D_iTwx`_Dsj5imSEAe@cUNSMe^h{bg{}riNoDzRW`)mxV?dYC}7*P*Po{UVvNl& zf^D+;7F&se`DmE$oecorvk@e`Qj)CoaX{Bg2#}HIey$v;!|QG`l4^^>MxZwi8WE`6 z5a=&~on9Y#IcQP&`k^_`_snFZNb>`F;D4gOM?d!+z-SN5f^|o3vb`ZaF^fO@dI7XJ z`H&gLI?_1s(t>TQ$>%JI-%LgSJ7wjsAgVL7Fyt-<``YIB3$y@+o^{ndk&-He4Ve&| z1dEaUQj2u<3uKhENYW{&-7A*dSc-&NY^N`H29E6eiCAuA%H905*LS>vuu7P><F32z z@eb;G(e3gI{elpg$t2W+9%_)eG(4Pel}LUB#4yS6^+O<5dnEMQ%kQ3|x--_&<I;&w zrofJZci|~WbK`s=N{Iy^8n=)!FZ@*1q#%V#XXUpz%$}Gps%o{p^V$&D3#QEaPV-6G zm8o?P$lG<i=sj-h#AJ-;-e);lfxZ0f=JdVV&wUx~CpM5w;e?9ZD+}+BX}_KeGP;j1 z$%HTXr9A7xZCrAO9+XXkz_s7&3os+!X)f?LSp!|Vy$(RDtojLGm25t6_efignB-ZK zD|=tR#4JD_CaVy#bC2u=blJ=4v#BG(MBY{6Z^|O{B1duemm1Mto||>MA^_{9l*gcF zH~kU%J5(=JbZja|FETY?SfyL4TZt7*J`X3z9I;^LUB?Qhb>VNML@mW`qSzD)5*Z~6 z5O!h#wX=Iqa&%(3`(KrNHs%`$NzVHp-U+^QWNvIvUh$z?_C5>gfY|1{yE>KiG?RB8 z#;wn>xUqsd0lYY^X-$!IAommZZ)?+a@jAH6gg$UCf4M~7=md75Njaa4Q+qMLVdeus zUuYcCF0;fvX*$f5s1%$C>)!=wgD`Q*WLj6x;ujL3%jB>+v$#u4&9MqWhs*tOzPU^D z;wac``q~3|YIKwIEJ=Y26UlCJvZV(dhZL9JZe3jCwbBq%asVYq({Zf37W#Ra`{v%2 zuX&bi{=_-|x(0vy*||Urti*zMxoy8S{;IqC%E?)u8)?_GrzMTR(CU_uy8CgUz`iQ7 zYsyt%b&*qP68qH=(FB?l4w<OWP5RAyF8GgBi}`~Rn|yCrMk6=*q?Do1$&=w(K0!Gl zM+>_72roj=xBKd%tJbXI<5ry67RN{9&Fa?Y@sbs`@*hCm1X%W*Rc}3F_TznOLs(2l z6M9YfYF|UC`v-waUSM&?a&#3L!(c?Nbj*Hzm3;715oybTn`pp3;zE|F7@qgp(?M5x z0P{d)L+m0FB9veGC@!82zU7k>iDC;jmKAY)Qx%j*im;Rn?hJ)1Xi_-)FM6)S1mBH* zF{}*Uk&0(Y&6G6%5l$_!`ojv*Lhh*A9n?dH&+`P$uxM$(ljVu_^VKAu#W%dj>8rBE z<t(*>4hL%HAGa8zlUhrY4+q9GV>657^(?sCbYIG&M#AF_5tMTynee6fD8ttlDHIlj zvhe=04_owRYTO5pN8QKBi9``O9}PB^MTu~5556T`1fi!I$i^2UvbCbKc5h_-2y9a| z2>Y<XFgP50+S_*8`<4&Kwa}1aaClw*Fw#)Q;q9J)1HJcpBW+lA?dsjiz9JS8?Yv!s zLV=Q(Tg>m&l#9bt*bo))L;Hlg@uP;s@7Puy9~meX!9^$9ZPI#3OOq|pHfYsyj#NkW zEQsOVYOT52bDcG7h-cln1PCmrYba#bkWl%rA^+{ix?|yM<TJ;tar-y__7A$A{EX!4 zT&1R<#mc|@>YraY8GcQ$&WMYJ<?i1;yL=ZJ6^YB0!Cdf<znN)v&FT*?fPX&9Z{PQs z8p+K`MJ)c~%RheW*C*%PoMhO4dCY-+MRkBHQxe%_3O1TwcO1}>8y;`}gv&$+hIs5? z{o@t?e9k{!B$WRexjGtF2J+t@cM3%i)nccK;1^e6Okrg(OJU-0V|*BLoQu&-^qw`o zy!E%=_>bel;|~TSj!m<e;BTMR^{E5?ntH$;z&ys5HcA_3ZL-obX71sC{Ej~!^w(tZ zOOiWb<)``KZMgm8P5$?6{^J99Sp2Ap*W6$J?Hm8`ssHpf&T)cZlq4U}kD>kBRQ;!4 z`|Y!IWZ;pn-S+%XEAIdJ>pbqz_&t*;#{Jv){omsRzE=vGSR_0Qfxj)C|5xvBa~mu> z9-U<1wf6t{p%a|IBO}v2bor03w)_wolY86A9m}vMK_GVTn!fvg{226tPmyr=QQ46& zI8{9U=QH<fQ2|4Mn9c5Z`*j*9To?iZ_X<Pp=!zXO-}$yHM6~|}OhL8l7yuT-$Mn)l zYV6P6UtM0n!JS{KT5V(Q@RBB<_94j14}p5QQS}MHQ!Rdwd%jgiS!P19p>YOfi<bEp z{pTA|)d_?DK429DV3Z~exOLJ0I!c5zWILlh-(EtNPesy6uSQ1-v~ncldC`ZTf1B6_ zq1Pzze!xwV9$ecCm6g!D_0YsgPbtq1<XH&d2Q=!1O}P$4IfV`vr=!5u(GaBX<={z0 z4nb9O>_;%=gAg067;ek+otAO%e~hk<9IrkC(^uVxt~6P*Y^eMR7|y*(BICgD(g1jM z!eX;H9rSlwX#)lMPb6>u^*R67#D=~EtA*oX#*M!&G?iB~&_LpSoizE5jsPa5Enc5} zghc3RwjsMcpaIkc*RaZh3$Uu|r+OO&^uG)(sldCT65tf#<2DOG)K>tp<19urZb7Mx z7IDbiXJUBe%MU;g*c^!Dl&Tf_3C#|?%`a*rpdxU^0Q7DHlmQrzkOpodp$Z|tSEAB& z0MN!8@@MLG*UmtwzYZ$Vj48Yf&i}J6{;?yTyE!Q${q=pDago89V~v+Y&&nuRH|EOl zGxEMpJD3kRgf#<Jp+?wuTyd7*PQWshR+r~c%r62p?lGvOg2{KD-}&_WT{wy(IZ7Wg zfytx29*{uby2qj-wI{z;!8#^I@`f)gsRAa`6|tel7GNFO`h{}>!V^O3PU)W~{y&cn ze(17zjDAS|m&>Tf6^#tV&|y2Y%@P0+e)Qo)IXa+JikPal1){mhq2(N9H5{<=sGXAu zQ3uGR5Lo%mTI_fK`Q?9(4kI}CMv%FUe&1`KS&>o-AM)Cj(T|0;K~`1ws~Jjw%fe{{ z@anZ@=1B>luNWlveE3D8WrH@}PV>75y07%R#jj=(zo=(`m*u~LkAEO+{^-3g@3p*& z)lAq?Drv<ffJy!M%&)XV#6N(9FX|T=(_&q5Z8$F;*zA6ScqSz=nzCVZ2VYMQ#tiaC zLEioGc^7*UR5M0EHkb(lu9|#(MFwynx~8@Tt9}FUL%re99ybIeuL3|~qJDM33FuSe z(p6NK^b9$OpMb%R09C&(fNeS00z=HV8A?r-5ZexTvbKgcz}`}mWWwI(%z=0Frax~~ z-(T)!HeWC9moVT1)d;QWVMQ(fXz4a!`}hc#GKB>u-6ozQGbq0V;Tj_^HlBdq7l(jy zNfRKu+I}6ATRo8P(&|(X;H4qxB;4#{uQ-pvAp-fi$QDe~r+w`MRIiV+L`saH${q!Y zm0*ax6LO`F2(Xd54^P+f6fm9u^G(E*%^J)hjkxoMe_FFdupb`G2z0&hp;v<%XZ>JR ziJ6`P_Lqmi-cKH*9fO)g)*2#!0&ZBqA(KR5d&#hB<tMm>$ld`c>v|yo@zfaVv2kxH zeD%F)6Mhb*U>#%=+tm$NQLL%jq3DNO)6<Y45IbL!5wP#><h5`aF_uHM0t~pOaz^&u zqTRe*)00FxSFqk4FHPRmE)ZP;(!2a(8bg1i9@B^RFa=e;!Vo!mMU5NaTp8@^ZbLj6 zXVSXJU`cR`&BodWZme&<X1#X}4S07RhIqFoRo&;;-EkHzSGzb@=X|}tyR6FrOla8j zSjK`uu|@j}2KSO7%o7daREUlT?ZJ%KYAP@dF~0pOP?KpR0ajP{FT|C#&35CVE*$&) zB|}~E)AVhKjb}m2JVFjfKmx~B(8JXVSyQ%X0W18#t@~mq*#~ddMgSwMXZP$KVnb&{ z=y{FWVcLNhuizGoW&yB#`Vb>OYTP~S9c%Yx^|kQc9^gppzF5_-P*v(of^=0ij~H_D zr-(ysAhuO$=Zop8MJ~;#t<0R7c%8HFynj7X{&s{qKLgwLaR`n1@AqvpGZLCF7553i z!#4ou%D*?AYF|`XlO1iZ2Aqy`@4ws^Crv97)+9qq-gmZuB$p{I10rhP7*uh`peJ_X zeg1J^Kh1u-rtrw%%8N3<tKliyH7b@+(RDyu3nXm?V8<z)Q1FOeof8t&<M3TPul+8p zar%_q4*Y)0(iH#}5J1V%VgTC$8it2WSU3fMfx=;a!yU4;z5o!7|LiO8E2?mrX;=%8 zi5r6JF@DAM7(im0P?tZLQk$;pSS5f<TJUT#jla3y^SKDJdOQ1oIoL`FxtKyafN(&c z__Zwqb{hciG;jn~Da+%s*u1{W$$}QcB3cS^RDB`aG80r*A^u`g$+kMT3K`Las2%z) zao#-En2i&%BTV}C((_esg4;KopyhLbEvi~i;7W31k8gtkctvypjJ0vxad8xj-&662 zu|GjO52ZOOn+x!zaJHKSXkQ?7+nXAt=im(L85Rng=>pnZDbR?}-u7itXoP*GR)ldX zj((+RJ6IijWNR?NxBG)~1MI-Sv(-Ge5Kj^tU2Q5ZIqBG>SN=X`o8U6`HhU3wymjUG z;5p4$*lFqsy++3R8~cG{-OabmO?c+A*WYlHW9$+@<oRN8Z;pcru$-8Dm|3=rfQ{{X z60O(8D|aV|Es3XnJ7Dnu*cgyDHCro!W3F@qu(D3RGhT!{PJ$u{1G3?X99pCH$5D#j z0+jOIv%(GFT-*b-;993P-DK4o*U9FCq3i8<x;f!2iOxL6E?TTw3?0JpZlKl--*|(i zC>MPY6&<MgMBvNfw>V0Hyhin1G=@U-95kGc_R_V|^$oz5eMh85N&2X_*zmQW7FsDR z?K}@<ayMi*=cFVnU9yve3%Ie*oze*;OkJNhp1)3=9l90tRE<{#dDc$v0N5dnca`Qu zO&6N^r;Mc>q2=fl(w}HmOD<nP9@(rpl<&1lZmtq9L-*s!#p9CFyD_>$M+S^N(Rr5q zqh&*Ps$b%V9oofS(g`@o?#T&n-OH3jFfyx&_y`@~Q0Q}OJAyRLu8%YQh@txEE8zCH zBi;>F>St|zBwnE%{`X*7H`>XOJNb`)?|F%KEHW@d%I7MgCv6o5^=N_}Gzu&4R5?as zl9*Ck&4*>~o&F@%c6IE*AQ5LM^P(&JLG~2{hV?hJ>M3hcuC|Gk8wt2SNt^r>%zmQg z?HGi9S-_5{zkyXxN$w6YOUuf@e-u_iQ6@lI<O$fAEXOUo=Nn<umpg37p8NR_=^yGN zy~8`XMe6N(hYr-liSf=UZASpe?c#WxGZ8Vllg?A`?pU9+k3vv~LLl1+c}icQGL77Z z2$gmoR@RLv>p7;ier)L&1d}LNRwT+M_s7WsG*_j=T|`oRvKzDI^-3@Z%-zA#do%%D z1q!D19yiXNEX8BS7#50|?7TNrlO|H$mo9(^!88b{O92McHMGke9xImO8RW<rm-?B+ z+8NSmS4X!zxdmkJgaWK3aN`dbFcE~wbs4nW00s+y_<+ydAY&L|SmBp=*q#f^TNg7U z8?RY^&ceo2j0!q^TUW{Z6*hsfxq$)RM*}oV_eaph4B4;N`l7muP~2u}zRi@_IrV-t zf;bEPG>xsihxQy8$NFg{9G2J7j8)#Do*nrL0>UuclBDu<YgTZuqXd4w4;N$0F%9!C z&wpB$|D+6y{n_x|Zj<o09YX(acL*s-2fv-9Sgb@bvEL>!f9$x1vZGWZ$(x!ayxtdS zLsgRxY7FuYX>(&X`<Vgqqd(VJY8NC~<e3t@9fTd&)wD@TZagYuXFU|JElR<MZmd>B z%HRc5D5}5F)!V!f!g9qbav<q2EbLq_tZd4J&y)2oKFZEt#Ld^NyD6d<LwQ@t+V4)w z?0Gm(nHNJ@8Ix+r5$i53RJt)iQa5onc{n$4E7pwMUfH*#8KS0#owiSz?kH`0g$P`V zcEgDJ2s6!P*NV?=q@jKFc$`UJDXC>XLPdzQr6UQih4smaihqi4UXr8*^ZSRkfeH7A zm6+)a96~j4bB-M*vn**36t+}bEe^P@@_5uDB9qUQO$f_ZR1zqK=YBdmVYPg33Wu#F ztbYEc*29%9k{7T=aKhPcrvN`7elpGG@OR|kuh|TpuT!Fz)E}4F@=p{ht4BD<A1cj( zS<=1RNd2rh)EO9Phr2HH-ok*=8DKRfdzq?~i6FseiaT1itWUak!@i^YUSI&O`!kYB zI@_|sE$o;?{<fqwp&fPAWm<A~-e+$@Y3dV&a84+slSQ0wlVCI4PTn<Nwy_^L)HNu` zu_jl40PlI;DC3ez!5psm+AW3GDq28ARk1DorF|F~xmu$PGNylN+Lz9Fqdg@TER{zH zoamLQY<0=*-~?g&_Ivgd5mK#5VmAUQ!gye#!!5RG>r~Ml(`x1E?!?}AsbxCuq2XZy zTQUaeHOK^BxFEDK;DjP3;@V)6%FV#+dyP+&s7ylX+LHutjF!5YANZh@;PfrWFUG7> z9jLH9>h%|Sn3>s-<SiT=(wG!SQMmebjIuXa$PkBCH`~WhQuBT6xZ~BuOV!Yf+pGa3 zI*+Xe$}&%BLrMK_BNZuAp@fxLC=&#>-Q#BXxQ%McN?HwA`$F}4!7AYz&<W2<G+l>= zhO}VGGpkX&u$~jGph+!|+}K<4`Vp^ejYUeB{B5&xuWrig_jm;j{7_mTuF6kqNdrRn zw?NcotU-)(R10o+>7Wg1#XC(B?)WdPq-I~8M9oJOmbM=m*ndeVQ-zisY&>@u5fIl; zDk@sG(QA-3RQ0*`d>>LKEh`wDOv*2bJYbU!-x@xP5-E5)X>9$dKDW$V2sPdEb>O{+ zS3NIX>ejhL^}U*3?x{I`PPA-F>|3qOTzx!uk(~~I==x`x@z=El<zrGeL6)K;m5lKl z2*po;t9$UWC^`=_#>bAbUR65yngGQe;mk)2D|4$rLNV})E-aVynYJjNK=Sk`<j_u( z8ucOizCE2SckL5_C<-ooVaC1Uzyg1q%)v+W713_4qcX3E<fftG$_?5$1jnn6);ld! z_d&Bb5tqmz2AzT69Hm(a;d?U4yxy8ra=o{X?dHqZdGz?ukf?ERizu9RD%fhpH8H%Y zeS9cJ4>l*cUbQoDPOlau1#mL>9DgB`L1q`m`+~aVhAWXS_XH`yitd?ujp$4Xs2mm( zjf&3_dlzyu>ecvUPU9fIK2J~gDOprHyy^WIf936A=xH!d{2{f>{y<m(sjwhF&zs;Z zD!E;jCU?QxXoUD0CW4Q7q)|uWM&zY;wAbPi5mEy%4|qhuWvGTR4l=`-zA9bJYIu;c z**PfpiF>XZ#q31+5Ym!LQPB;3r%L{k|JICEZ9asWU4CB`ZATyfM9n)E?`LUTdcn|z zKS{*3H^Ef+Xiv}(+LAt1@_EIl61|!5VFM+RF1_;w%My?It9)|X+FYmyfWhgc{G!M^ zXbEh+CQq1J+sDZCDm$1GV7VFwhB#$I3)9ssMmaTEnE{2<-Ey>lg9!dM>HP0dY%(aW z$OQk$%oA?mZtJox29I^fULR-3%9a_yl{_+t^XNQxwfK1g%)=U*1BeaczLaiPVb~NG zD0-%SH!$<RlMYq;*dzmW<HAcjt%=izJ%EO=^ZaGrMqxYCqM%R1S-${5L{ys9^S~)> z5*2!4wm|I<OqxDd%2d)Eann12-xnKh?(O@8SLgb%Ex%*B`;@>eGR>5Qz&`ShX-7XI zI&FZJKnY4WJDU7p-Cd;xew@mNx+FW@+$Cn(3%#)vN(9Q$X-Cf`b3VrLj&N_lFLz+I zD(qSSX^pV9;WzshWi6MJxp&}TH4rzVMvxjMQt0!z?||toOQ60E#EP(X%eH9YnH>Hx z)c-MB#Qd2gx<1oT{@G?_H}~s=)|=cmDb~r!Bk=&pm;|l^H}`by7JJ<o0!`|jtvOXe zqP(#VH8WVS>J9L{OGzq;Z2$yaV!hNmk!e_Lk_EbPsbk8zGJ6%DH5<LK7b!X_%pR$% z>50u1HH}lUr+zoh8omTIuy$oBUHz<e8F(*u5RXkVtrGC-?2zrWXj7D9O(nWCasE&& z9GE+7vNrF?+F}gqQyyFJgPR2AV?dCor+)<S9Yq-AW&RQBSMk*r>Nq-BUT9e9caWB; zA$}ROp>J;{V5EW0l<1F8>0T;XeXde<&pz5Ndq{?W2{x8^U=CWYKJS!1`BFt{53KqP z4+a%VLF&qtn-WHJ$AWwJ-9v?(6_S(e8J{7H3<pUwBPJFWz;bl_MmR`18hpp2Q}|@D zVK*96{~%Tn|AoOgE74#b+R1Bzh-kwGN}i$W{-o?NNV6*JP#Sh39WEZaa8`oB3*dp? z_<<XJ^&yucHy0i6sz<-r$Z?-tLmoKZT%s7LknG{|oiaGbB<M)mmsc4FXBopIaF%6C zpZ^0z`V&5vqJR*WhGd4{&oTvU-G!HC`es?A8%h^t4CG(jG~!MfSu+;pXP<eG#o6tO z#eg!+qhUzJv)H=;X{vG`8fd5au_Z5AH`4AEm!=k21GJ(e3G3C)w^O=rVQ%Uqu+-d{ z%rH*w1w%X<D{Xou(6SE>lEvqNR`+fY<5;H?<H!x+HYL|kktc}IX3oZTm6n3jEAaOH z8(&tyl}gHHsEBt@lxp;WuzlEwcmomIbt>Kc^e{-y6P?!17C3}=!v$(hgm-Rzdp+}m z73Uz`OsKkmX8oa08hHSMen&JX@epcjL_<PMkMl|FF^B#@I^9T?WuVA9OJLPII?-PH z!dnMoW+G<t4fq$~Ji2x~{zcXmulkjvdtOW8BM;$>w{88%g&Hb_@cp=x-CnryY$*Pj zVGfL3{T;8Y!=!BBI7CRH6O^#$n)RZb{Te~`-ax#@ibY@?RN50om5_IBgd3Ow?LN5P z!eo;~Q{C$G=x$}=#xM6L;o&@W1t<i^=_|>Pr1A6x#f{-}f~X_e@D~#+E<{wJ)4(Ze z_H<rv`cCfgG`Tl3Pol}UX}FF<s2;A)@ntR^@@k+El~2UQf^hK_k@r=tC4gK-q;sZj zP<M2P%TL2(RdTB0Q#eQd9j;r(L%zgzM*baX<Hw}!dA(XbV4kugYg1{{M419hk?mBC z>C3Ses$2h=X-}Zq^w|S;>*{Qdp!QhU1Y1T*zc1j@j9DE9Bf)-ZCD)Lt<$q3>gg&}N zADbYvYY)<P=A6XS1K<sJt3)<KL&Ytky2_+BigW*N3j8yY`hAX1+S`~*%+&c~i7Xzk zgEJ7v?K+-gK{D4LiEBKkPO*}E{k}w?sfnh*pQ-E7+jnCfW<Hz2{y%7xM{xRAZT2e@ z@Dg7GSEX<hfTp&vS!=h>Xa=ys=<JJf&3>xKm<iwFK9w^03G2;hV@|m#uiqJPFHrM- zOPetI##AAQTpA5jW)zOz`+N5Zt#K0g-5_}20Z2tp0=#`q@5n|B<(P1@kK)Q+r(LJN zQR+L|_iYBbAW~o6tU5hZ2a0xtHw^Y87fVD2vaDlHmD-oWR-T6)DqIe`dxs%@Y*{z{ z$OmkT!MD$|2GaE7`vNRJqYpe}s)Q88y+)ye?>2f)7ZPiiX-f`tt01waAAP_YPvxMc zkDTRmMC>M9XDxVZ)(QfXHsp(Tnu&(@D|0#myYju|?Hm<SZw{SiTS^6@Om2d{Pb?8W zc4}E$nWLUB_8h{i<L&?4=6``<fBP|3ppG+1X7!I^lllaXC}}jQ-FAI6=8%Y-q^r`N z-ET*L4ZyHl0;}R0N<I*cbN$4Qa6wVgYWCCH>TB53DHae!lf=CbdU*eQzW;MXmeB*G z2`{XoXBrIN=e&H#?Qe!>xzO}w#Tn=N08Ue~K_3D}p0Fwg_I3wB)`8c%`u>kMB_|_D z`t`;EjL9MDMn@hiB76s|A|FhiNuwZ>Er{s(n43^tg9y@J%+T|=x(OZlq#^s8txGzd z%2u}vCJFMRy%;o-{H9o{ipI**rzkGa2DZ}!$nP)O+{&%M1R#tpyvpFvVa;og3$nMK z&!=PPAldRh<9UY~*@z%{_x!fbyw(6|pwl}AU8Ub+l_xm>1K*E|v*5PUKb{Fzb9GZ@ z04=o~zJ8BeE%~6Zpf->DVpKaMfwLk}G=Evz!c~M1efL(0k5DQ}N&e7^RTVUY)<s|j zjV;zPl9R0ZWm84SwR3E!2JSu2NfSn1|7&bA#Kdf54DXu=ekxldwWV|d0#OJuI62%V z`fJ_d??K5Z3KlZB8%}@EbX54s>_@7A@cvG`1Aszr2n()t3Gxe51DslIJ2aVDQ$<7M z(pCz46R4P1*djzfe_MvfS-gNMH1Mvp>ppa5paRwO!)_%K0VY=Sx$s#QZJEqCH_RCC z`iJ=VL#3RT(mz2J<TUy&)%G!H2Sd!4X-UPP@j$SSYB6YAqJi1_Cmt+wik+Gy$B4Qk zWCJL>D>O1QQZt1rL)bMz@`V8|2GxlnpWKu)eD7u8DW5rtho&p9Y}y2h5YJI0i<I^_ zV|C?F=?Y@g(*3kf0qQZBt)xkFP!vuk+}p?9`B5cU+9#QcZ3AC8LT;c4U{72=?{#Q- z%J;R&6Ut}{Ho&Ect$hb43}D;_=AOxSe<8W!KQQ79g;5m|-TTGcri@=u-|=?IwtE1s z3i&JQoZ(nVDCN_J7h9wnEE$xZKT4NV0s>U=%kTZ+!xdCk?`Q5;TPmX=4F-KMto(3` zkR1Tg3PRJh0PQ5Wbatj7do-IJIk;Py(-rv4F!AwpEhMWw$a?%OGwoa8#J)q1YA@lV zq4&m9K(ZViVSpa;RMs&_TCUHEg{Zn>@Te$}&Ghdj^}pWM{87*(i-lDDG08&wy-QTQ zAzl)}33B`2<TX)*Rb^i{fa;%ca8RSsXkeKSdy<w<K&r0hShsHx-UE>q>Sr=kWN1!> z!Wqca7(JdQX!m_kU=^?Q6sfD)N(IctMoc<cha0^dAU5PNXt38u^ChgWY9;B|3F*2^ zU&LZNfK_ol?mob|ao-0uX~1EW0%-zN^ITRV)Zg^N3sd~qAmk?4RS|kYxEraDe0t!D z&j`3I&vZ!DMvY4_ylorbVPh0w`{1>{LT&;fFC!r8JuZj^XRqN;D^c}C(>}hzqypIK z$mhp!9U@{zv5s$|UZ+w|&K?phfbK{E8xf*%dQl-4j-cWvt(^8l1?Rr*xv!5~QbnHS z)|51VMsagSI+L)Q4B;Y3n%G1?$Henh$j=TozD14(UXMAuT*Si<Ghlce(pog+3!u|G zRt<o++EVCYX>NuF*#)oGvl4L`Qa&PdyMAoqQ8UFqlb*8z;%%W|_frmw^^x@)_p?Ik zLE7;kM`@JQ#2SLBiKbhFU5z~O1zgY}FD-M<+GF%XEl6I&3?e}5gvfBV!7#*YT&~>L zAaalhjh1H{nz9Pj7|+S()5-7MYqFiGbC&kYy0F`q$PwFpQ3%Vyeoq@hDn-<`9W`3x zRoNH(CMbt41_$Sj+>oj?7xhq>;xTXt@^hfH4LnUb5SU#6J%cEf?GFY=`x&<$xkNAS z2;O1DgBohT7GgaRK{f)2X1NVPP(0S!`5FI%ExeNe7On9U&ghdI^KEbu2igzXdN!`% zjK!HWpb21O9<<ykto+ppLEfTTyxYJWf@yS49IB^RCTBsrDE*?E<;g|RSjc~i0BY~D z>Y$Uw`sk#oIOo7fy7-=c&1<)`0~^4rz#LX{v=4Lax5+J^EH$3a2OF^kZz#<3%2MP2 zahf}}diJhH{QNJK@4v2gD7j{HR?Y0;`x}14?Gk8>M;8MebvyZHV?^FE0~)IDbVm|S zl;hVIftMdh#GB5w5Z0>=BU+Pl$lQCF$%~}=oqW47zRMka%ko|j47<1@*V*)PQS*V> zH>Z<Z@5}^3%I`PdL?_g~EErcN)49YRQg+j1a(NzTL$J1uS&V37$cl8Nda=<B+SkG0 zqL?zoadCs^Nj6my<{8yY&z=#`MBTvv>ZKUp^^T;XC|~lvoUoj(tay^x4nRs|a`D?R z7YL{Zal|6&;amw*^YcI-f^G$)!&v$88SHTiOpv$%KTTndf?5)9ro(B<&rxYM{%}6v zi2)VWM_XDh<kz-;a4b^bnUQ;zvp*hlYnEsGc4-@}WG4N=Fs-XnF{RVW5NbIHYH7`f z>AWQz{=$fQ;HL{nw`8{Ii!~!{^2*5{AlSaDTlfZR-jg*qU!@L8&1PP!_rJnY%|RP< zc|K1}QX{5ozHF*%QB2DDpl}hrN$|WA*FV;mbauk@o1gV59Ln1|+;77My^?$-4sNmU zl!@H+Lu6QgVT`+c(M8lbZD)$@2I%x!i-Hr!Z%4xxBbsH+URpSUBR|^rL8mOLNQ~vr zr1Gb|+$B2MT}gsXCk#qGUw8KhdU;uyqQ{x!SqKiJ>{=mT&<+1i$V7x>CA;qlbFhEL z=BBDLKfb*vB9@RKFp;3;1@UmCF0YRz;s*&JuZ#DWrI+P*e9k!+N0h0zaaSZlE{3Du zV-Z`k_s2m&A`u;EK#NQ_OONv94Y>v<*H1$>jdj*s^!Jukdl9THEW@m9aRD#nvzWi| z4H43E4OjJZ9)eDzOk?Ft4BtO4p3Tr}bP6x+SThZjf<_fgU1#U!C)2z1P$LKBh>~V~ z)eOn^d^#VQrdUphPOJ!;TTb`Pi+9h!s}w@*$aC*7iLwxoio{dCve^WkwhZ#Bc70Sn zwNm$X>t2X%UAHmH+QKUtoAQGXXJ!S@F(m{Vgs+2|o)#J3&jx-a?O@@K8>PJ>UQx}W zTZ|woIM*GdY1_T9aqK_)CNk)2kyi40&21`YKY)y=w_;xNpo~qM!)l+;3|r?=stW8_ z!J2`q`;F&;H#2jO_zv?SC0TFtz`dM$o46^n5{y+IW2lEI@X>iulc#OWw5C!5E+oU4 z5zl`Gzj_{k3(4Xp?2pj#GZK=$Q#CkE=UQaZNcNrONHcg;GOUX;kCD!R!K^pqUb@C2 zcF$~0+K4}Ll3@r>VS+W`_cn6-^TTB|{Q5xN^Edp|!M;MmabMVPFZZG2;DYk=2$hgb zFuPa-zdgSs^|;69w@QI;@7-|6L3wRR_S1v+b~h+XOG~BkuFU1TaX|R};ZR!*@5Gzr z&j7j?Msh`w&|d>(HxfP^+kLh@QQk#te}*G%%lCS&C=oWfA~OY0^TWcyy+Imph5@6% zn)`fTmYRe!&~*mLhj3aZ0Q4z+jgs6)D3L_0h1*5CI1pHT<Wp$31$v5<``(p}(T5L8 zdK+@S2jmJ*I*AZbF+m?w7}a6OQ+YuiZzq`t9G{Z)RDVqA9F_Q>yux`b+L&%C?jqsM zOXU${BH{7?O=wpbS)NDDrO`%s?*lL$dg1-b*GGt5PnnvbZ=z?9^(H86+C5Z4BWKxU zD75bUE*C$x8QhvEC7DQwR;L}qnQAkS%e||CN3zi5C%n-+5i#@91wC+E7iT!P_VQFX z!lF`(@QpWBQ?aUat#*-S6ys{8h?E~&7*E`Egy<^@sgn*<X)2Fkb%j}De{ow)iINQb zaS3~Uiwm)%(!#JA2}CR-j;j8~n+4ENm?cm*!l9WXACN{~@kL^!mJeokzdcCKF>Fk_ z7A;cbTQl6Rn<i^ss>jVeSPgYTmX?Y``LN5pJGUAyl!ikcp;CNl#iA0TD6eU8vAH$t zc*22pS~58H)oph42&p6m#L4e3^qLU{gM-Va{wa1IQ|K&lHb+5fgM2x(gdb15StL$Q zm10SA#)P73)Yd#26W_lmN!9P{uN(wr-v`5FIh2LsIUh$8OBMlPA-l><yL;hiZ!2hY zZ{?yRiAzKvaZ0kpBLkfT?P=};PS@g%6~gb&reN(>eC>yx|0P4x!3Cr`HtE&hap2G7 zNcIV#%c3rn_V>dgMFj6{tWl;XW~47$;UJdZ+bee7v!CyBXoLw-+n-AaH*gQe_;jWG zP~=R-%(oT@jSI#X)EN(26;ra`mrs5^88SvA{cS7-j)1Skoy#MW3VZintX7U?pA8sY zv^!FDO;5ijYJ3MDv`QznsToT$l_H{QGswf#8Tj@wZRrgbmBnnFo5pO&YX|OqyOPT4 zFQs8N!*5s;mOuN<vm1`&V|a(I4i5j|5Uvg(gIPoopJ`taZ+J#hjlb1mu)z7Qz1E2k zM<jD3!mDLijD2#4%UTiI<AwC2Ma^<%@8NwMVRrVMX<Dbipp;Mxz#*BWg`KZ_#u6)7 zYVoQcdpi<kBxU6evLjy5SgS?Av)Fz0Y^jaSHdLnDPC##;F1&ge#WOSnA${kF1;SxR z_wz;T)bx7I7^6~G__-ZZMXIjy`<<xKrL>D;HhqT-aeus$cK|$1V^uK+C5p;L_(%Mc z*WSZTurr&~MMR_?W9x25cksMy5xoCmlr^u~(r3L|uNJIW^U#8@?jJ=Fb=h%PQr(PN z4lD+^I%f_i_MQ0t<~F5$$8AhSb6*!2jVjV8h3#|<N_<vjh*(}|C+VU0pTdmMU+*yw zD(!z|neJmfv7{s(ey-C`D0?6_N73wGHJ5Ta`tOJdT@2ti6?)5%{ts<}pWGSr1t(9< zgEgk(1s84$Vt`*q$CYY)h6cyCmJl4LIy5SyFmmF5LD@42uLMjMBahI<KMKD8NYJsI z>a1P^(ykR}{^vV?=767Rk%3=?*jrdNkaLfM;)0uK1{XR8{J|4cI-G>WRC@GunRHpQ zr!`p1n+Sg_6T1SIQ>1@oP$evZH9oS}5=8RnV>la$%mC_5zN{oq$rl?KJ&H&m3H*7- zQ`dvF;cgJiJ%OlN6)Kf_SSU8gNGYju^R<9DRMs~ESUtm3WyDX_ojSplYXSH-5Y11S zqZ<Q!&^b<X9AXPVwt3hYeRQ=TE<((>+-YXr1QlJxjeCj-v@@yxe@k!wegi#?!v>_u zICQ$nKOp#P$dk@>k<41_po~yL>Uhq~M(ZY}C!eQUZ3rxi5zg0d$p;i%M?(Gl)oC%L z@2Un!3&LXh9`>I{gY*~vBZ!<0r0=k<qU+9a{0V6zhk&c4Mfu9lOSH&L(rgoeg++jv zc7!rfjQ!{6|2ay3j%f39z<zEiLQ3KK^Vt))umIpi3a%gCEFqMRQoU%s)B^g{ND9Zu zX)GuHTWEHGe{%@r@&u|py+XL7Kz6HW72pac48_I;Zm^jVdqP2;OEImFA@fHG^M8fN zzpa(IXs`rL#lJ57|KP#CrUJ}ep-8zKf4<0n{ZoIw8(`et9|re-fWa&`=6@NMfBClm z1vdYEhX2D3_{#_C%4nRhOq6k#tpEBj|8Zdc@d0NXh{1$S1N;9mQq8OYAD@e6@BV8! zu+B<w1`w!<nYEfn!0LlvoE?!$+6cdRPwpgs9ykTD>Bv!tSaf@?FbZ$|A4AOP4W>~7 z`Ax}hj|~>%4CH<XsITdL1CV*-hgkEWHe(BDNCzlQ02zK{%i)NNYdOKy5K!?lEcH6g z{$L2xIR0|zqKW-169dxH9OLO4Y2`A2Qz(I5p+D8_{Ryp@lLT<b%6Xps>cR#H^<nzm zf3l6a3;=Iqk$J}sY#`1x?14M~$Fnnlr64br4>lRJGa|Q9xk373(ZSpT5!KWI!!QxD z;AI1Kiz6#6$nX#jG?;9F9I<~~(}Pq5_`D+H69C<=>+M8^ax^yWA6Q&KS+)UaVY+4J z(~eiw8=$PhrrC&k1}K8rYPAk*;4h2=9L|W;en0pEP{G(f&5N$}r%8S{H+wmU(sn;k z9-g=(U+U;7l={*WqXeYn-LL!!b+lRnh-ukafqkP0K#JI86u%RGYx;f6|LrZQz~071 z`(0Gwj22V}Qd{CCHlOAa&~s!IIF)H$zj=4LmkPLD5G#S0eglwhO8~7bPvpqG`N|O) zxa~ROxk6_i*~$kLJn4OKsQ6y7Nce}pVJfG3g);$~SVR5U17;`1Xricm(m;a1bp|Mp z@cJ7BEW}Bld7Ym%C&6Nt{ZubOk1TJ4NkFDjFO(IIlWT14VtOxGdpvu`7LdcZ&gq8o zF_LBl{~hmzR@WymU5ifJzf<m?lH-(tht)!<-Vs1$|Il$i29RXMT>`~lOnw%8*tL_} z4UYO)9x!=_pqG`OrTy9pvCKTLFkY-)YLsE~gO7$~T);w6=ixZynE4@6!-LJG77JO= znJ9Ja99_pxB#W)rZf(4F4-f@kcuTZ|VQv4S59?>JW+b_@W+x?=Vf@!4#F-mxJ!^_T zu!6Tv;PEA#T&G+s{IK$Gq0769s{mnG4gi3FV@xTl6>Ws&P3IkZ?&cD#{3vEnLAlGi z`9GJ%KTZWO>-^vwHE;dC@pjyt`p_86S3$n7l_U}vpoax@rG^^a>-+2$1I^cfUv?Ni zau@h_3lOr8gBw!E5!kJ+gJ~`Wy=zB6aj`tI!VDz6xo_41l;WdjEfVnXK|i?!$3iG` z$r2a`W8i^PF3!>`1mAQ7tVB52f2qrA47I0&d4|B&Azk?h^dWBtL3dRoliV#>3m_}Y zaOA~8%`D`)Au1zyq-Z!u`U@su1Sf&O$7qo1u|Xc`$=TQ$qX*b<npJP<B_K!5N<eC- z+%q3~*K!CL6<`;3uY-%`sW4v**k_c1AU7@WY5jxtyI|^5%x1N%4mek>3@w07iw+5# z8LAqsfR38Y-}2o8#N3B8lBpkHv9so&<k_6lr2>k^1&(9Db+c*XMeT{Wh7fy-MHnN5 z128AXuglSAoE@xvggCB-M<5iKNF4=gZ~2F^qi%{dU|T|MN)hD}w}1=Fa|qhG)1Bg4 zNX~2vNDgn!vs4NTfN|^))Dk1|3!BP#)cA)*&oS8{tI*yT{?!z*I_;q9u89+Do(uu| zrguN*ES4<p0i0rJaVWsgASPyvgKYc^u+bC?3{+}1E7o2Sbxqj-y7?H8(5rA1Lms5y z<dHv#wa|`_Uh?5*paDI}YT*!Bnb$Zg2jO%1LL~;Fb6hE>@L(Kl!*?;q0B8ZRwFa~P z6qI;eAnaCv6oTl&{g@#-&h8L2W*9TFgiYfsC~E}rp6WiV1<%fyt5Vnr{!cHb5-Qyl z&A6CB6k&Gp5D-W3R~kqt<Z0*|jLu1WOb>qje>nRNa4h#f?n4SGD^g^Sgr2CV?EN5; z5SeAqBAaYwlaQ4W*?X_-nGrIwva`wF<Ne;9)A_G+&ih{Pb#-;gczWFT@BaP1-_Q3m z$^c%_vflxXZXf@_O5N>ja73sq;c7|t*+<$MRKXPh<(=p==Trnjj8wMDfU1FnO_I!1 znJC0htB4VWU4w)*2be@pmIq}mjaE6EY(rEP^(euVua8vzf<f8>Y%lr1d%u2IkWqDB zeqh8nyW%{3`Mje!Y_eHuszn_c3T^oRDro=h^!@!qOGG^r?G`Ha2djVbt;?57_?K>X z0+k#O;j+i$h*7^~l(vHc#}sgXAK@qnd5_O|B8kK7ItYySi(;yX=LU(CWM>>fJu!}i zv^j{b8w0<Jk<Mx7*Q@*hs{2Ph#2rz%7WP^`r>Tb&;5j|TwY_kn&_htuX*bak$ch}? z;U2eA5sM5tnl(6wMc@1L*RoO?79kS<+-Q()L|=)2!=IN<up7UT2sK^Geht5~EZT`0 z7&LMQO!tT}B^T-6yJ4x3Q=8kt^E%PAgYa~KvO&>tmXaGZh0-0j!D&Rg$uhRynYay! zlwf+BnnJbuhDKN#tT19lX%P)b1j^8kHTV4kR^LL83*;2I2|BWH@Z}gvGjs-d-QB;- zmMdzaui<A4{O}=Q9}~Y+B3_Vuk<29kcFyJ*aKoP>X0pSLObp_^7T~ww$s9>Yu*$|l z{0K2S6ic4qD14+P<?r1nKB0_D(M#>E*C5+=tN*ckq*aJ{{J`#e{V+}{-3^fpMyI=C z)+rpF$~GUsmI)=7l4#7yL`-ql<=wR<f8(RQfP=Ts1`&R4{5O8bJyF_}>1Ra}!}LN~ z2Y%D<4_W~be_g>axC+C3DlsWy2gF&e>)5EWRiCAI^_la&YH)wCQnp5@L+gr7Xp2<; z6>Z+gLR{~7hJ&}S?;gC>u%Ba=dK3G)s`DVsOIdaI1a5#a>8_)9&UaO-Di0Nvs)D0t zXT;f=tARw`(#YsB?rMYl#1+!rd%LJza@?YY&@7F*o}%kb31_O(Z+1^yp?IAlf8+p5 zBjCpc;vB<(PhrODU-$1;hIF0EoXcZPOb+9_3fd;7s`uNhyV(pA-P{iu&OeL-qud9; zQJI{GOcoHoPnqWnDy4{#M?KhwH81-r;=e3%N6x=-E(b%4N!eZF_5=|EzMEMNDzS<; zk9(-v3!&IzthAW3jo_Exl>3_s7AaEWf^m18+me1Y1D$oaJDyW!eUJ2C!U4co@*87G z3SG$s#vSzh7<G0XQ<MqufxF#`*UguFy^cpML<f_WD+I$eVsbTNq`6eRiQIgcnkxh& zPhbdh2KC%PJ`k_m4X@74x6lpkdHN`b7opU8S(TK~l;CjKT9%K=MY}nJIAyefxTb-; zhJLx;niqnH6lc`^&Ud6!1!j<_S;|{!2&gfWT8_|TH*nXBRIMNPTqC0@EUoH2ag@t@ z0HZtqj;+AGalrLYqa?g9@y)AEU2~dGK$Dz4s^KfS&ta<*lZJK>ts5iC)Z#-xL+vU) z^83A<6PGmrV18(ZA$m!hgDt;AIlJ}%oOHaGO2IYR9dBD0)M)N#BHzPvHe}aMk=dOJ zwCzvAMcJRGa=lt2$P~~877i3k!d%~p_TptyV|ORw`wVQztNghJnM;^c+Le=XH@)uf z4zX7CR)V`QONk3Z$r$Zm;$WOJw+%=EULrYnCCv=O2pM(1WyDa|DdnoJKl<V!ae2Ll z>h4>2eD0Jw#nx*d_W2@pHm=OsSgSr$<2lF~ez_L9CKDNqYCBDpdEH=n+V>y^?}Izu zj@IY~kE$BmIkl7vYPOWtFg6|Q5}f>a&)N#gD(pZv^21d0P|FB;%ZiO6Y0*xC->N|$ zQ^DKj%MJ_$V{{c`@x!w`oZ?g`Z+@01d(m)bK1d`%mSsLGYtzfQD;beZDJ}%|@saVL zBzt_4EF7(ww3&NDihM|?2{q=^(VA^1*0DU#DQ(JP%-gb3j;cKiq8}$SIsFxhvaWkN z>Ey<l@2NI9_VCFPJTXq3DiBfuT43t&s<0V{nHjCo3(qeOp^NHVEXU(rZzeC4du7W| zSPB|Pn8+F@kI3r$nD_J*NucJ1!{2@6;#9CvsNUBuh1f;Dfe#}W)h<vw?Y3%)k0Q`5 zcBZUWnw82AUn6-I-Q6|?YSn)zBxlty_tLHZl-x}M{%e9Fo<(Z$)yXUmr<n7(ImwbZ zDFpLnNfMomu7luddqKbp=Eif1o3kRh=mcLa7RUQ2;zT=z=rN+gT3ChT3~a0{RIaQ} z_dD<~^1r5?6%($u^v8NWpPoD~?b$fcmq5^<f4Bdw?yMZiq`4`hkwRCA?T3U;7%*`y z1sjOQ|AtG$E36f@&K(!HM@%dEjz;c*{(0QpdIi(a*Wy~Pix*nA7y_7$Jh4n-B6C;X z&A+}Ngy{{`mRB#4l-NyFs@>;qIW$IEGWl65(u{U1@<3=;Xp3qR$cu<li%Q>npU`a& z+?ajXNZ%_5RH#gG50?S`yKI-oKb4@UDp;FGB{$U4!L5@@j+wsZUZt&1$5_|31VI%y z#`YPLAX_D2+Q6fWyqLNqhdLd`RcD;Tvh#aKVdW-p(F)K|CloR+@bpsehQjVeA49es zKS4C)hORtIto><J$G5RDAx?}UH12N492@Q9t<u3T36+ioFGBWjL!rjXMk47*0TJ5y zP}?5bHgOJhBh|r{Y@=^o+>aQr*b>g#zg3n<QPR1QC*!@(poN^D^4)1g#JH`ewxGd! zO}4opoEb~y&t)sxoVK4Q(4vf%cO>qa4<z1@U6(nOGA=%n5T-*{WPiV#&VNIby6WF0 zegD<7$64UeU@czC>N)*;OEvodllTEMc|g6xUJffp2*0R)!bcs7a1WQNorY`kr_VD; z1uIJt_2r4xvO6*>F(lb{Z83BzLzU>3Txv@HPR>ymN4xBSXpo0XOv^3b%V((hdDoPN z@)*S=+o<mD&n4_5RA0*!qjVgln4{a`tEt>wxB_ohq_s|Nz8|^p)#0NDg-=G3frR9R z$yE7-``IIo?WZwxw~39f_<ZmnDfHQ+4@$#Iip0|m%bP|UDLtADnm4u@N||Nd|Cr~Y zKfukCH;T|$%Nas~9GQZoi!{8+$R6ngb!zko<KAbyjo6*%7dIVVKTwa7QsuqhXM5A= z9I+}Q|E!U(Ilm?7rk=^+^ZD&HVs}aQ>A5d>4J&i@xLkZEtu`9O;<GH(BZgwwuuQ;w zV5QvNQ*MeImp9n9vah6>iMQRfckcS&YZl(6f^IFH`vYNEJ9b^!N54(NNF{aP-ax^K z9Z6_k_xeNc+3p(*<XNP-chrN6+Orboz`bu1jpZ}1YFwFUoImu?QLhN~A2Q7UzGv$= z8xML>XX5_jJTq7~aGEwGX{T=s_f={;$;{P$vpYOlkyG}oaSZA!Z_B-?82i)G>jpQc zwMf?kznOm4C$PmTQx5b!V~QNx$-JhqrH>nV8;m~2iv02dNV3}-UHopk1std0{!?Tj z5$KjQ?qdkC3rD}Z5r|_DbG>+8ZEyUFO?&s%Nar)Mo@qs>F%DTd6Dp!k#2-1$BKojS zU@9tEiAxsGC`Pz+?Kauwz<E`ZCox|-c`41lm+XzlqbxY&zAF!|8rX3ebkbPV_}JBR zTgW}&)<vz|B-0s0d^D+a*#j)T>s($mXhQ(ab<4_WVe)m$R7xiw^!e+u{zj;r8)Pur z5cSzEOKC#np%xe(rPVz;vV|?sY3j#Ja6eD6lIdDS><WJxEJ7n>3dCMi*@x%SOGsUs zU}{(2(z1Hpx+Ri2^=hUcIxV3s6Yp;PReQ^dSLwYkwhJPr<*LXli+d^5LbQ<}g4A#D zYL6AIptIC0z;5RoFf1xDyZKpr;5(9lvY5)XpJ&s4arcC*jJj3j8D}NMC%6JF<bmR* z!bj$d{kb4|JIvI(#v7^mE*5ci>*a*9m!0eig4XKANEOYi9W^1{LX(hFFa5h|*{~zk zqi<qE({wBrxmup{KUz51ICDZ*nd^R(*$%#aq!)4fA*c&Pj2@2niMg*jUfy4p6Q}r6 zr%>hlslB^7%J<x)3R`S%m9w)&u8vwVnet-{3tGFfM5FZM;pZ@dYp`M6J(2m{ac_e| z7X7TOBjMX1=!&&t(mqbBXf$$1k|*jvE9erphL{xVex~k<_PsVsfqy)7ULY<Lu^h60 zAbytI7_vX~h$-xPZv2Z)+Dsy*wCBP$9$s&-gp0w~5S<BjoK{2oNNNc0W~OBGWmjLH z<PuJA4&Fqya=Kh-+y#8{*R<~R%D-YyVihCNJ&n;o?`XN5;v(l2r_DmFj!(hG<}=A4 zKD+qFL!U}FmF{S<`37HNnw{un3O@S+yFGDLfFKfFTDqAd(Vl)=6GYwIGB~qA7ZBa2 zx3Dtq?Ripf&Yq+ickHO-(o7q}x*1pzb2aS&=(4Is(}ei!#r0O=7~O@%S*NSHOF&B3 zh3R*RY1QEt(<qCORZ(*m=MRQ8#L6^3`Sdn6{-p~qrHGC7?_NAYscK%_|9OIR`K(A| zYIw(^{mDsRDsJAk-MCGGs120qu`*=Re%@3j^W^C^a5Yybf6w_jr0bPQFO|#}VAZ`q z2RXk^8BG{!v|+{FVaQl-b~Sw=mL~E;Zw+a@KG;o-8947{+T6%YSE1&!*C7!|a`;k| zVRf_jGHqOasC~9U!Oevm6pr{`|6YybB8Z1YLiGAic4-GA!ar&1Nkjd1h8`Vo2G!_$ z#TBZvxy_KW2Zl2TR<tFAIXR$a&p~If@W%4Z$}MWCOPzb?gT9X!e2?33MZ#n5e)|%j z1LuDzMXe?JDMU!Ar&rpGR=?PcKH^C{WgVp5n~&I9_A`+YC{PN3(eiv!gG}m9$OHDo z6$?4Rk4^ME=abkn?FA(T9<Zn+s+xST6>SWU{QA<k>l9$Abu{I2ngyFUZ+@p^(k%22 znHW7zoC>|lT$r$!Nq-!2uYB=A-+{!Eku~p^L)~W-GAE)OogSqc<Xds&#Xc}AAIp9o zg(sBo?ffpY`UizXl%8pDK*0l{r%m*+r^raB1KtLou8>K*O2ur<OJ0bZcnUhG#DyXa z<2KyO?>eU=flhzz^ZLh8Q;YZ1{b1fUQTX8$Dt^668+MY5PD($nuYHS*Z4ZG1!a3`~ zn$gl1?xc;aH3IwNHG>w8-lv({=_Y(C-Gz<KM{4&ksC^_y0Hu;7#3fK@E`2=_xql0E z-@?~;51(2N`E{6VTvQ|YI}j9(h4ynf)6c%&`&AQ`op6P=p3b(Ven)7a8-t8Xk~)@$ z4r|zU(jV`KEH+=Jx-yVe-IK|)h~L{8jVm96(Nrkv>M#JifkGWC1}Z|-z3Ys)7zo?+ zAhqS0cN*_W&F?l&`Y(tv)1J*Glqb{ptMdU}+b!7ve}1Nfr5&e(A$+B$tA;-5WMF|( zek!rLT|s5!j8*(2+Bhs#twQiw#Tw913PnzF=Npqj%S(R9vt>fjf;?L$Is#x~5X_+S zwi<o7s?e{<kJ6lZaQ7-H938pLr`uv%kG2$wyEN?>dKbq_G+$L2%NzP)|J+>TNyj7V zm#GRlY)_ArRfN4Bkk6&V%D6js9BZPBoZ69L2>GBN+7X`4!J;tePkUKv_P{QinwMB( z$a9CNqN!QG4X%DoHx`+O1;9_IGBFB$`kG)k#Ixspz@recU|{c*E?lkWsAtdrk2|0m zvIB-)EBxb0<BoQryCfrUxG@gf*tHjL`L8>$jN*d;Xt)ecHN1r`Az4N;fzQTKSND{W z;5$!*Ecp>;0R!@i`#z^q^k?hr<?JA?NQ>th<lM)13k7WgRlTSTD5IhwvvSmZO;%TU z=;8)r`O8?-!jt>Y?s;W1+ZQ&L-`E@WTahLTyoqn8`l+a+8xvdByFZH%g7|Fw51)#+ z*#Lqk9wpzCXfH-L2&Wp&P4dkgjp#YGN9**xU)yXyIPhpAMb^-(pG6kMH(4!J*=#C? zjJLKMfcB@W`g=I~+)qx4DfDS{1ghm37(a@vki?mySnEa$QwthS{JHH}*dR#V!WeY& z3c)Uo59yxoCN5th%3=MQgOwe+dY>|LPkq;3R`wG8l3{d;60f5fQeD=<q4?11QM&1U zU7zcBpt9&CT{FBI^Q>|={z6U~#_?e;#DseShqyHB0-u=FTLX607B#edMdoP?McEtt zH~3<&{u4@uLQt~Su)#kH<>-5YZXwVE-M-{}u&Ow5N-R%~B=Q#rQtrSEx`sweOUe6* z23%6IHo%~3T1Oa(;eg%Nf$zctQVewJB0ld*b$I1d2nq9&d!9!r@3{Av|9go1E3l^E zRdYVvR1_|R{hHy-#p?_kOGCFZfd9(DXtH%wkevc@=t`hl)-&^PXO(FJV=zv_)(9C0 z#fOV5-8+=nHcsb<;qEoIyk<I~u97^rJ7TzRlpllB1@63YgjiQSgYxTUQ8~wr421_q zV@OO<8Xqx{cf^;&K2~^G>F^~bu24m*GkBfTJ`6TZ)s)f>4@g`B_)fi_#NRzW13_xW z;rCAwb?LE{=uBA+!MR`i4rZ%O_Mt6hDH8RUDFo&|1Z$}@E^-2~92XG-7Oc||rJE?x zo$;pDsUseM9!N4Zmytov0bKm%7v~;qwT4q?2B5D{u1bZRzv1sVC^cIIGnv9WG0`Um zW?03n%WNQc35U4l!>FNZ2;B`;bi}@-39G=JZs{8@5kja@%z3`M>*`m8bjyiV^k;G! zRp*RCvmAlS>5n;`K`pfzI{xE<dZvjgW#B^-VXk<NQHYn;D&Sw5dGx7iw&cZ2I<ND) zxMC8$JCf{<Fs;E7%a&nGqzSt%=cHLFZR|d%uGe)V_%O-z>S!ugFN-=5Q1}p_!bwR> zEpt}|4M}!wX`G4^vWe57d~J}D@*YTk=F<7ntp@IWrv`lKBoQ(#ZPke3VbFbbxrl8* ztrsU*_oa5z*L|)>%HGP_Lqc75&?IY&Fxtu-PL9s&lgo7Y#6;?<#E&`zgH5hSz0Aj5 z;8pRp=Gm{U`!7(f*-Mxe3Yo`Erhj(yd?7CA=)BD0kwG;RU6ds|WOSh<*aO@2QB>Du zH4PDj^DOyIW{}FdP7{4!1fL1^Kw)i^0z27<a9^P|`L#&j)I~_u;UH5CN0)LO6Plv( z*aM}t!NDuZ?q;4XDsTay?OX&_nwAS|d+9t)Jw16y71Vh!SyY<SgoMWN06^MKk3Ib? z`(O*_c`p8DotRE8HL9PzchV5E{pD$EK-(I)9|*AAI<{$ov~cPfZD)BN1yAQQx5$FR z@np2rFUQzw9rYzSKZDq;pjbS&wuJM8h$oISfF4?osHq!)PjxKXIhBU-0q>;}0NN7$ zG1wzr4hX{YIUSq5+O<<^+n`o&fbzRR)<~+M+E;^E)PVl!lXA34TlX{ZX;giNeLW&A zACk9PsS*JAn`sCfoMgCWgn2E3z*4(bA-3@`k{||-B@L+3DPoIU^vBO96Q_k=rp@cf z#ylA0b&D*$&pP;W?-)+#dh1mFfiyf96R;u3EK?HLXhRZ>1`Fq{Ycwy>4-_O@-6XSW z*fOB9BT3x>E?0qVT<@-2qisR|%h}7kwdxzJ17*B}(RL&iw@34u)Hf(*9Ja!J@5NJ_ z=c@6t9mVwZs;vZ9w5e_AQc<#gPDnc!y;0ZDYW}p0{c8+J*Jsf~4k3H-rHi$r{Wb%k z2mXugVw_z`yrHF^Zl#RGKX_HenpT|9q(Vusn*@)<!plC2)h}g?uOb&v%bAwrFdHd? znRT<8s4j}zzmo39WgS^0D6y2CZB2F|tWPjg0CoDtt^?WYh-AV5E5vtVn$C28pu_2* z-9uI$0NVrX6h5V~813F0_}GU{W}~DY>txwLo`gW$Y3Yhp=^UFlfw?j$s$0h*ZY8e_ zP>EKe3vbZ5ehV{D*y_aGQx41uc{mg|W4vU=VfTXIjk;k)j8R(Z1W%AJ=_L7-@N?*N z-W?-E<ffOOR}ZDOGB>-sahhzH+bN-)zN^M;uyzuL7=}@W6}?sp3p-#S#CnKfU=nmt zh!--HVUZ_E#?!dTIqDfd+P>2kZ+{z1oPPDp|J76fhWQ;VzLZh2M!(2oxES7sykDZf zA<V-2<8qtvuNxB92f#mOvS|*ug`ID98WZRulGixBCm9|DGv5_+BVBTsDr07Q0h53> z`aaRF5VVO8b=|sKw27xxriU5AREfXpXtuQxfdoTFi3%aP!x^mCm|FX2$Lo<SH8Emh zPYLD8uEY5L`UKC2`3(h^)wex?i-&_>vA2N0%6(dz0aLDg14EPUoHrq(+G>icDZj_e zg5gxLs6FBa^!>c|$j^AqQQ`+_vMjA2S|ULiI8QYPg;r)jeJ$6PG%40V&mrFBBPs=> zaOScPJ=#=VZ5l8Uv|iXSKzE^hP$35EVCQhlTcuvGYQKC;7PA8}J9^59CG94Hdy3IE z7>7-hK^f*M+SkfMSEQ}Kcg0Ctqa5CvO5G2-Ml2}7z6P_yei)~!5EU^!@difW(|IRv zL!R`4>jKEMf1mM~Rv_U{f6zn_-{iXv4RE4FSNmv(BUHyu`3cg2`V!`~b8BZ|8ghS- z=)GwkYx^NGuztfVVa-SpmV$N?EK*4i8UJC_`z>e^4wZC(<gQ|97ELXQZ%ucZvI-}u zI0+joso)h_OX?)%z7Bk&EbS!hW;u}KbI>+c<DQVhx__Xz%{W^I;w;t$lM4H(<P8&V zB3~(`j3-9uh{>R7G^>-6vsawJgHGy;5O;tl*K>s{Ql4BEOlpq$9Nb1Y*AjcV4BE>; zI1+!>Frf7z=VvPOJ3d338t-lB3x)Q@#EyhayBz}SEmT?+JOe)Q7h2m{cI`MlV7Tzq zin5nl071r%<j`{aUpNM)fIu)hzT4^7A>E<%PYjM|G&rNp<R<F<zKpAHGsZQef%E4n z%0_%)HX)DhYYKC`1`9We$b<ilgHN$fb#3?O##uEVjikV(xp(}8cVEceEqFcO`_O9s z5iwsXmE%F*A@ODFDW~4|1fzSlSBYHs-=<d>MQ!y8^rpYrBXXWPLdO$2W_&FqPM_5% z6d`hla1RcxtTg<?p7ow(g^iCrql<U=G?(sw+7g>oxch=(JSzU-mHEz`Cv`>|VKM5B z4~Kgyx1@>$#J;j%Dv@I^E!dj}y%srazkXko&R-^zuKbOEE6OtS_IzwVV^ZOAuQ}gc zuB$`RMTuLpvGdGBOg@8O77w85@)_)D&J8FMu`+tcNw6liE@}~9K}T_sOgrBClFhJr zQnLl|Rmu9V5<%*pP`XO<VS8+&46y@2TVdlr$PJ$z4L)p2AdTweB`G%fv`@18tbIs< zd*X7><=*t%*Rov)eUV|C4dhYwbnP1-1D<jg>ta)0p|mR+jC?UuqFmRr{P{xQ^@FSu zBWYb@t@ni@+G)8<CZpN<Elis)3Plbj*VQ`u%4I6JW>x%)k0f`ZrhT0j_;*kD%4HYi z1x$~w8}TL6b464Xlg375{u6<fkU0#fMbGUXQ2be~GDlZKhe_D2!lDu!j}1dE*EJkw zl@A_8V4Qo8WbnM$2eu!EJy^()OaEN8{?_7Z!scHQCxGqaQoSRCc#85>Zv3KgxKiC4 zgMP?6HR!8~@zrt&-#Fbpy|se+@&d>53WgY_f+cI>iURrb-z$wCCYO$k_E$Il?)87e zDnl4<SyUJ?|7uRJV`Y_0oaTWTI@Y<!&@^)}J>vrDm~xfVp$X&z<UwtB)dIU5cy?%9 z=Bvqc$BrOh3{@QgH^1O9YjBi8Hp?Nz`50&%7T<Y)()O4XFn8K;t)}K~{duAOi&)kv z4-B%!RC;vzFZBDuHC(V$YWxi0n)|Cw)Y`|wIH68k^S!NLMy5@1+wAf83-H>4O}Ga9 zXDPVaGyo=QkueM~bV6D-gy-~=YcVr`5LDRT6IbisOQDzjTWsAm2B@HqWhw6rp8ey{ zskW6IgKaDa$Xgl2MC_xVfRxji6t3lS@C0#2p=4MA-P9mbh1+h5o|Dl5J38(0I|wC} zFq{x~?8fDKx#W(&yYxW12Yz63z@??X*XjJvk@xGxZbSPM{vQs7e^GV**Y!nS3@jCZ zjOvaZnDh@=(*JN0{y2ew$8+M>8~EEp`G3B_l}Z{eD*+X6B>q2~<^S_zzkjbFj@Q}$ z_y6k8*SBYf>%(WeV!-`(i|uc(Ecl+%aQ*tKU@_wgP(%iS0c!#^LebITzRi&J7xq7E z6886mV}~Zf7Y+CR*4lOBCSVE<gI--4e;ff=qGLd9$weantUHCU2Y|_Y17q`DmT(*g zChUuzXQ}x=KJSK{6jPYSs(-)5L&zLe4d$Io8Tp^{2!%83fmT~ojfod>cwydM@MSe1 zAKI`6D=J{-z6Gg^1Bg8#uxg7C7f^7iFaeYQY_-;aNBW=TMmlo-_2z&5mVe&wZ^5t^ zEZ;#Doc^6N*2(@KcA$0J)?X>^@$c#cmrMc7RE+RW%DIBAh2mOqk?}Z}<?MYRAa9%W zq{wk0-i^Q*3@i3MwQ=TW5c4lyqGd@<UVa@uPa8tPDcKr^;EEzhgS6UlLU{<%V}ZO5 zcL>0qB`~nd0mrN!Bqv&&Xda3wqrGGcr01Yl+)6PnAG-AYFasSy;QzNSuuL>?=`Y9C zB&GjcUhGci`k^+|-Ux&C%IxFZEbviCUNR9!r8twoqY+*WiAL1>vk8HVh|Rjicd&U% z-dq|g-q8vWrV$a8>x1-J$#R%Hn1brL^<8Qe%n?S#<@yjZ8>Cm}O8S+7pslCMJD<?N ztr~nk9|O*8>xXFzIfkMR(ON!N;tB81R37aaM<MJ!Xs=A;x0apn+Pq8n7;EKR{{H3P zJOwV*9+Gejc-&du_}xRgQ3Ufpc!Rep_94YNp;MH4NB^C9<7$$oB^GA1*ch<kiou+; z2E;_?$5*pQ5H9V<_0JSyACMxvj#A-65eRfKXdl;2mAp^DLTXB8EQAYT0IhI^3{dJ6 zi&^-r0LMrR@Rt=Rn}kbl@*<CY?-$Vg=hFH0&i!P8?iV1NAgTFtLwfAS#Lj;j<MJ#< z;yPRuSYAwVGGoP-=%6kveg;bc^cZN*b0L}n;KAam0cakhd3cVFbpis8wWSGuodf^7 zk%fTO_Txtkseiagcb>!oOU$d~04ZtPe?$yD!2_0W2<Y;7s(HW=8-S~$X^Wy%P>4q6 z5#q1*_D7GO{^FwL0X3%+GOJk;9%3YFsQ}@_8rxeJF@KwanDlpiJ$lD*<mNu9do=(h zy8&34BqRJlYoL`5BJ8vThO}os_KY=C2t953=m29=eZoD69zBQ{=~6rGJXt&jpg|v8 zDFO_YL$hSBaOD3Y`;CTh$?F0;st9O;>`$%k9iG!(V(lGA(zGJG@Q;B-f;j$a2lB3Y z8D=QXT(W3;0xd#@X?{Bw!tvFi{-&q7B%fvgh#a52rO7%x`xN`Ri1#eHaYolu62?Te z5YyClBlicLK0oMu*|Z=CPriVZV+rxho=HBDxkcaG-BJYJW){+_bMDKb(VC#V-hzh! z;qW2<O%!6kYVMR#GU3xlL>p&f4}3}hKeNSR-y1}MsIB-4`7pA}#CtOt6-Rt~;#4pg zxO`neWeHvGt~iOANePf&5>g=`8eXy3QYg)fOI79`ayET$^^xMD8v~R^8@l&IzQc{~ zF3n~oW|c7@Xc|Z9MH>1%&AzmN?<DLGC%Y0ty2=Mj(q1SuzReEpZU3NlgddT8hM1*h zLaP*NP4;szXdckA%@PTaql~^*LZP&AZXeF>7%<~XXSYg{Zk3%shTH735W=DcnQdB; z`u=tBdiqF$x0(_s6|`76h|9=Ue(Yh!%D~)Xr9e*;c_*n#)yjFqkr?iGxy+vCZnfs& zyb|Y9{^k9nWiE7-qrhFRL{pFe5A6MeuJ1QjBiNDB?N<H}n{+1N41-0EHCSp4!G1w_ z5|5ZoGUcJd28JWNA2x2%Ku2J(7Qv_jy*k7YEUksdmLo`VjkzI(zqSM9{98k#M}0`@ zwRM9wC-oQCb4CeRgsBoP$wk22?wY$l{xJTmHwMG9+z=_J1a%kVyWrm*_#x(~C8RfS zSByv#KMui&XJV81qQsdyQ11=F(?Kofszod3hot~-$V`zFoPESe6eQU%=k|aD^2L*? z0AxSE#EL7*AQ93ph0yOjelqu5HHv2UYEZXBE(mvo;mCJ{?A(p7j6ImTjGPKX0PN)z zD{gT<J%Np102ErffQ0&Y#JLhWsb$HLMl8q#brJaJDZ{~|L9;*U+E<bplawJxB?B<K zT>L^-Z!N^KehBEKZ>#u@o)%KS4CS)TQ5-@UOH-IwN41iYN=<TrirnBU@uq>A2Eerj z`cS)-$N&h!DSu)?MLofewkAVVlU&w6zfn?H-hUDh!E;STGAE84;?lvz>~I!;J;BeZ zhdd$R(kNI~Cp<d_uAX!eBgeC#5@n~SV3x$$P$`LH3s7V~q`8xSrQ00?cW`ml(441$ zC;2<wb1RAeLV4gZn7Bm^C;1kb%!=1UyZ}@PA<5nTgl#-xu#~Ad)lvA+C_wTcnNxJZ zb&t6#vCn`bC?~Vo`PO81L8auSBcOuU?`GsG4t2mlw*)l9YhUdv_vi#@&8NX0Qh_;c z0e^B8Q6zIp@!mY8vR@EmeD(8N`>la9ttQ{pm-frMFOi1njdl=sUmv;hK;7i;_ff&P zQy9m;iTz@5$9WQ)1u2;YX_yhI{dAzj8=0tdnmI;1#5o=2=-kG%%E##Zb6|%(75JEh zcTaW2K%z##!xJcHJZv!Gs1XyX5fkNHxH9Px6Jc8JyX@vmI+!__(1t|@W{o{0YEy)2 z%w+et=RS<p7LNrHYisi6X|6~})+Df>B$FlW+pWQ-_5j(AK*<;l9Ap=BKSLBUbuK=~ zs)Wh!<h?08sz<3Zlqg;=t8{{<OBT{AN;zf#=wk<#oaaqbD49=7cf%{CQzBD4Nw#n@ zkX=zRF#K9!&x4wiE;S8wxdan$8Ye+G>~m=5Dp>*wsq|$T0kr~RH7w$%pwcy<N4-9S zaypF~!|M<@e$fwh)NcJ{G>qTA=sAEbf+q~Y*h<W<Ya~1Lp5kx>7KR%--uKW#PCClL zD$dV|<l%62&2{j&;xLW-^fIjF72kxW+53kju;)!)Xhv~nk&BQOoeCU2&%38`>72h+ zr2(({8ImF}aTvS8HF@c)6)MNuLSwz{WNKF!Vi~eKH2GthU7%$aZ4*wdyOCh_n%nmN zy1Y{heXMv?P*wBZNWrx#l~$^a6yUA%j{K;t8Y5zKN5A(iVvOp&5dZ-~?11{e0!O;E z9Nlj<vMEngWH~*j(i=n%`#_{c=!=ZVN(k9)Mf+-<X5-KcXVzL(MC!%(<u54&_8~0& z8=r+T@u-#xW%%0nSji~Gr;U>FNGDbJ0pmXzxb`SwVeOkypzqg7@@dSnu^`-`g7@Wq zo_KSt#;JYxIlArNE?ze^9?;Kc%NHyg+_nk36B*w8irB`KXV2;F^0Uooy573;|DaDW zI(MIh==V+*x&UCo1->HV?bVd$TfONe_nRfy?qlIPGO#qC4<tGN5>3^6#a5?`*{?a~ zN1G$=9ycA9wCPHSryM(CzFJJwFL}WXJkjgd=Pl%dXuc$Te~CnnpB7pBDj~?g@zTQ$ z_;8Dx$a-VNyog)CE2Hzegq9RnRv~OK^eTYqcCWqay2-HvnZx-=xB1ExR+?qyawdpQ zx})zJS@`3pIN>s^i%q5%Nhpt}>Z~WTRy91R4WpBb7-Y-!6AdFiA_>jglT)xk2Zovs zwFelYhg2811F<eFJ&3<6JMhRVqOqG^ztN6vJgJdWK#w>_YKLCny@lPAu=&@@$`gwI zsaPpuiLg&SI=nwx_S`9CATZwCXewN^D=&iLY03MbA(pR9FsXf>#`>d!w@icNjYCLZ z3*SKW^4R4bD%`P#C$OFfRMywTfIxBJhBj=C^{MK$@uubbZcj2hJrj<4K$-mRxzvk$ zL4-MHoC_f~wsDV9Jj9H3G@#&>Auq#=9`cZ@-*kENOr;izL>DQq>gKfZr>DQD8tm+~ zxY<fuKH9ebh!qY%{rrDH3IE%bHb8xN-eR2j_r@%)iO4_<CuP<Q@^d9fFnbqDJPdt2 zlt{!<MjSKW8BdGkC)b>fsVrE@CGMINDWL0~@}*msWMk|K%}Q6YJO&Y$%8xg%Jx&k@ z&Wbo`yq2@f_i*-Uv989z#uB4XQ&b2`o;VZJct>0^%}Sj+tMW?O>*QB{OPv-B_HrTV zD&L`6!mF^~JRKu^TO6YWPn7Zc3z(~(eq{Afz^JgWZ#B=fJc1*$w<v%r>^^!z!CxdO z=SD9*QFbz&|70W?CUTNK0p+1L*XyingHi?G4b|}yVyrxO<-`Si_V}`9(E6JRDbJQD zS?}stg2#9<QBblzt5zai%k*8F)pJH+eSXm9@ri3GYUaf+^*j|5$s`r)l|S87C`Pwn z&nUJ{vi;&pohI-+t=>Q6>At}@_13uxB$nOpnR$PJkKURKlT9QM=G&U<L&I4shjY8? zchK?_K1KeOv4v~*<ThRe{DT-zP!+SnvRMFA{?|PM4_72YVcp=)bkGF(yf<D;TepAY z@^KyY(fw_Wz&ARmn?T$$rsBw0F4T?QxLH{QI^;nJtKd=iju6CPM8+xWsIqP!7^#P* zb}T^1=!#!UT<Q?2Q$Ny&ya$GqC!S{;y=DY@xivQJfFDLsrT{5jm&LtUS~?s5Jge_B zqL%?BOj#z3SEsK~8LOWUL>y_XVT#^ZY0FT|^|ef*gLfj<PD*E8LLs*THFcBBBO*Dd z2$U9myp$<+A;nzV^DcX{Zldc7_0yP=>jin!L?7DZFGcxYZSQu8^lfYtyKK6AEuY$y z<;R%o=bR<I#sc^DOgkh#qpjfsB6NyC@21&B-$R`KyPVW<45*?ro-aY|p_lgql2jXX zPHeV7cc||G&s0LYG^i&+@0Qnr9UFD3i25CYmPPbD_$<k08o>dRZ6_+Yu8?<DY5gY) zkGBxK!<!#I(haTMSHEcr@d!7_=#-*=;5*TAN*ovO0H@|U*>GeZ_bw0FwaDZ>f2Ys% z%Rh--K%LhezqBUdIz3UolihqdX{ID@kT=mL<CcT^qobDYmMGum$$b~!k#6lF6D$9{ zTOc-C4{2C^VM88h;tp{VpPMy)+@^}S?T}_x#rAffrMz}KdB*1ZB^guZL9RWgz7`&_ zuJt?rG;uKngwCYZgZ}q!&y`9t?h)-6^a+$N)v1;mtziylz0YqpR?W;D?4_p`A}(;V z7&c)y)=g8eqctjZki0!6mu&*a=JI{VI!}UP)1m>U)0+&H=}HW0t2cAyn#bpY(@~o} z&DJ1&6BTNPe#!_jmbcr8VKxhL=}b5giKV&e;gZ&w&^7>z#E5wRBgpHfyE5Xv#J2Ae z=68uxz^yZ+_q&o#tr%^zg4XZ1zM(z%IDbeDm783jgSfT3ec&R~!MFV&1q3dy?=M}5 zO^n)jRg|aaC)5Ky&d=;XtM^E^7#f+7E`rUnpF1uyRZU}nbz*Z0&yF|SRqx5ETRQtl z9sCZxmsv_LuzY2F2_PMBx79_*!7#6nh*}P)?K84gvo?>8q`*7vw^%TAw2oz^9RvD@ z9tgfPJ{Fbxqvr(^K;f>OG-EtOS}DL+#X4hPB+^yXwSA+vYw`c<Zp0;%7hcp0uYvi5 zK(JRz#dUbXno?weXz<7(?CtZ)E`oOOTqC_BD|`iaifi=6`rDyVKeNX$ZepVKthb68 z%n>o&abAqZ4!P9OTXYRGIR7{A$5=R`0ZjTqH!kD^HD5f(uYDaSr#YNPI`7PzPj@1i zbG+%?KhXpyd?FrjslnN+l0D42!&kwVf6m@U-)59szc;n4Y(6zj_3Yv23fn9x-%~`_ zpMte#O#+RUATR&Kz}X-2Uf8Q|Jv;^X^7v?JNNEHn*gxv5dMZytRzWc^4%$~}tN=nO zSY=Tb<uNjP5h_i|QA9D<&7znw_XT=4vX7#4?6nm7g#`fAV#&!q#PKT5Lo{AUVy#he zm^uafW5I~(e9~z&(UQT-T{%&n7VdO!_bif&g>KQ!BAyj>P5?y_)J&VV@$v$b&ChQ9 zy^(+6m1sh-y63|s=5yVgKge{ml?8Z1Ob9vX`m#a@TXRqOk#n-(_<#DEb|{xkn8W<m z&|3Y;{^WZ3^MFR~Dboc<0bkvlYxjtL^ghJ;Bb!_BuRe&Q#603qmi+alIBddxXbH~| zsQ2H$t9JV}8xYDq0WcMtw(U^zt-e9$6Vjcg?fQJ2)mS9nwpOwTLX?efppPpuIzou{ z-o9T4r+|a>jF_yA5nu|{C}aP3X4ibZt9%%jCDW#d=1vfNiz>lkUnP9QIU4qPRx7l= zj{5Sl5NdU$VeW1s5Iw%B;V5&5jqCz!5_|&xHjO!k^q!^R=*jEez8L2Su0+~~kA2xK zkr(CBdem;>OEu)bVR&P6W&~l!teRDRg7>df$lMs=5Q%p<4-5PwRHrX$OKh$^(Vbbi z^ZOl8dE!LU6=1)YrJ_OR|B_?!y=%H|y6qB@m%i;_Fy>>258T-Lh8EMTVxQ<ZEhK&C zIp8ftsoK2bBTB)5!CcO8RZ=q-<5eHLo}~;mydt;Kk9$O0Ee(s_p6_Lyj`v5EUho?G zI$S(^xCK|^?ONdj=Ma|fJgARntTsEV=eiZQeIG|S2`cp;?HpviOUT8y8?qnih;&SD zcBuU9?ea5q@^AhwV02Ns!1yb?(v?c^G4$)w!#sCICO9CB*&_`XyAn(SbpW=wH|+3u z;t4U2zcL?nWU9gqVZnN$WjXc;kZJ@&-bAty#kX|jJlMDxfkmO(@WTHzb^!n0Y`qBX zWvZ-PtpPQ`sTr!>L7cN7=loG$fyK0Jb$Qzf>nhY9Xu^jI#F%B<rPc2v*<Y>kO_>p% znC43vu$~Hi^rJMs$vVMN<yl4d?%WKm$SV*2Or|1XFOU0VuKEvgW}id{L;rhYbtO?q zIUFTWehi%#1KdEJEz6v%>U;t|258o{K)S)MBzJONA?F)<gr%Hspx9XZ_%P>Ok9KBZ zpVUK0tWPseai~3;L3mcL8??Hi(f}EHJDkcea42o6$Yp|ZTWvyvHeU=Y$T8p8oCGuP zp##oheZ^!bpJyTR$Pu`$!vlOvs3-bf<`?QYZcaL^Mcg8R>$CHB$QOdX^{qQStmhHi z+T}j~zp;$}_8Eh_g2L5B(w5?XJVj-U7^2z;kM%jk#WF(NGPCgsDxZ5W7199(m^A25 zBlC<e(MSu1uuuBkIOQ7dd4}z~&?OrHubJRjvA+)B5hLQjrWhnL*Lcc0<rZed2DR2J zb(?R6i<iExs)gLUWZ@Jn!-cES)!%V?oKVz^Dwjm#6lleLEs35S1Acf{4`3-BQ2I+E zaj|(bG|jaR#M>~+8vX=XJ8#DrIigou8gJ~>Es$YS@UAylm`9Q7e`wtSK+B!x<dYd_ z^h0PcB`y!zw_YvAqMhh~Jpe%?r8V)jh#N6GWbtZOn%#2(&Bw;wM7{-pAozZ9#<oyP z^0IAsITDBDC3!*KOLmoa_DN!E3^hTdDVi-g!jwq6+>75d>FlsCnt9IzMD;SC1&$Bu zMZnec05JV?1i0^LT9konFH*&U>b7>tMZ~Vyfx77#c~Z~eC@x+-|EXUb3+QHej9%Vr z50pA!jkpS?z%fa*)VvTY{+Sj_grN+=+)p~ZEsE+Vum23#fWrmVfi;Bm`<Ob1l<Gl6 z+sNy%yc|0}Sps>At%%^cp3~NDd+gJ>`d*V?G}cO9RWxeHdww~)Fa>1ohPk{c+U{Tg zUr%zxdFsjLjVus84uq7ICr7zi;|;f>d~%cuw82O443+x+))EC)0Q!=-=yMp?Fd;C1 z-h>b9DY;eHO<wy^3-GJH`~bnV&kD>dJ_4TTrmoG_Xkm`G{ZRp{^<mCoL1y|4vz5X0 zq2Io*ZF1bDKcDb_TWf@We(XAr#WbGhTp~yO>r=DSSjaTTV%7B!G^aO@cb-9C<5k+< zfWXn~o$=EeE^QUX5x!m~z??JaRyj_2ig5kxnnf&xf=a8~)MoWiJJ-p`Bk;HvLGs5z zMi7q2JvcnNh<iNyY}vf?pw8iu+_GaQufo$5`Mp{QMbig%H(T`cX9m;4$@i7WBwy~; z)t!8u$O{tWJatG)pQa<QpnX-^-!XjG->$jk0To$&goFBx76;gw5UYpjiS$lA<!YiB zR8kHQJbTo7o>1ZESso)A41}I?JHSqzSBokwH^eg<1~p&RK0dNWIacQnN68zU+e{Fc z4%f!FcoJ(Tp<xjuG8>FI+xZp?$2RTTp=PLIi>fw-sJ>Id;CgU*Ws|-0{W5^y_+P&{ z#FgG}Lim=-qK~VswqNU_gl~|&N4PqOv<2VFOh|cbOoOQXWbl)Wkf-;SZgvMKaL6oi z@f7*ack7YYlpuXtn^?+|dta#A^rwA&-?TOGSR+<=cx`PWIG(vnBcIw{mQT~x)g?q| zFF$I11qOWmc#YPVqC&=N`|k(%3ba?alRHMqWU>puqmkYgs5ca}6r~rSE^UHZJiGN< zc}M^A@xW4?JAQbJRi4rW+HCxur4==&D8hZGYPl!1Y9CWS1!z>&vP(>atM6PR#pJnV zzhc-}T8D!T*_cdJYwnex1udRv=Y;kf6F5*UQXSSuV&IXT1{6G657a2S%9^d@<Jbk= z6&aBZ_?%>)qkLQH)GTY%ACr8&rChGmXU3;0p1;*1GV$st0e^#a;iB<H(>kYeuW!S3 zDM)Ddd&hwpi{aCUu9@0wL9-|3JNhNFi`7)M{W)vPK09%7w&szVIGe~TeU{q+r($u6 z3!Y*h<wdCmeg5W5^ZNPusdKLh*<*b_|M6Xd#SGQxXZ-IR`Uhzy1O=NsE%*-*I8ErC zD?0{<2-oV+Z&**4K`QoQMaWn9TD`E>X(E0auY|S$2^_!Sp+MS$bVfTbc~!&2P^m|J zA%=ufq4##~aS`a2qj`DhJWX)Mb~=AhVRjcsIE>=PyMs2bE(UxGXbL7oZku}2PYBe9 z;OO!CX%AE^^K~`)Qz%)ZepFX*oeWYR;r!fiv|<*#1;+?B2Nhj4v$W`NF+9|#XmM-X zO@!HSIuMG#7d_u_t~tRb`nJ$F5O3(3T`s*``o`8%dmBp+R%NoBY~u;Kn;z`Tik-vq zPY7R^Y&TS6$f+dunDDTKs&?!udx|$%%Q>pZMz62YHToRxfy=`wbK*%?e&KMbQM%jl zqmq6Lh_AAjvzDD#(eR``Ayy^K2;cjG2)rM0ckS%1s2u=E_tM@i))H^sg4zRvBFZ3b z*g5rvi1t4WT-`cL;S)|S$GoYfK`$u&(Gv&fJvH5WcuAAU)T@uHmyGeW@rhWxIZtx1 zXy0P$3j*(un^dn%-zE4Dmgm)y^H%de?jXWI5bs8NpZ3X1>u1ap96q0wPV*km4a&gi zm&LLQsZrCps`2C{X<Nm@skh6nw~CX3#1ghxPGij7-4?!ZlrsaJfXpn}-YHsM;RdNI zeeYTK>-gqQy$YSb(9wM@L(}d`QG(ptOs#!GRi)2e04=9D%l#k;No2sJqxt(k_aj_9 zTtWwCef}t=Ebn5z*lAiI)S|@V$AP2o-2Ir}*oP!|o6H4-3F|4mXbAaeB3tbXTStZ# zb3J$PM#7D*U~`D5c%U6pEx2iQq>3W~2fS#t+&XS{OP?bcG8wOKGM;a!uvPY;-~P}l zGpcM%k!N)`ENCQIAmxT>f`37T!)^kqch6&Q9euHfQg4HCJLm!{hdDp1*N3aT*r#&e z-DWZnn5dPyq*ZD@B+a9BvHd9p<&fC6Vg6Fw=<K;htV!2ZiP$gB8w6h^{QP;xQ4<&T zg7+uiJu&J0YGS-3-!j{>+hxL&;(X~V^!>1r<WF81>F5`#Kfgq&?VDR&^4L$;^z3FM zSFZn+XKgjNqdlKr)VE7zUBX&QJ~|k$VE^n8Fz(`CKi&I=+1IY+AYR7&>ML!k){oaI z3Y83LAD5}^xfJyTm*okpJoVYhtRQJJD170c2boAJ18Uj<Jw~^NSknhLp?WRMi#uw2 zHf_fxCk}UJAkT{J@9zuTvXx_837nLmzq)yRE`p3e*f5BU{Hw42$Nlca$H2uH!uZho zAD{jG$2uu-ByjpE?Io>9ejShhIy(RTGp+%&G_;SK%oJ1q>Q%<Ea1szVfuWt%Nn|dI zH?9Pp4$CXUpw;e2L@yLfAM03?uz%mZ{^4&+7I?2bq{UQBe{o?Nh$P<Bqdu+(Q`~y` zE>|{E=Z$1-5gd<5`hf~$<JIOK5&ipn{;Q8?OR*TR7E2w|-~Mm!uz`sQdBufL>)M#A zaDyir;z-s%{qf#Eyy4%!w84u>jJfrZU(xrUn#jNGEPsB|o(O(z2RZ%pzq-2r*BeZO z$rlLEFkiN8FWs+h=dXVEzrM5Zovs?9P?~G>3>c;TQ$O{$mqD<D9u`N(f_$OGuMYX| zf7idbLUCk7uL*O=tcoI8{^GX(#e(~<OVYWHtm5@Og{yxSd4K!6{?&z<6+;$<SafF6 zuLISFX$9=~1_2?}0W<J7GMv2%-%78fmH%;hHdrtLNG)WLG+7y|sYv@~l<|MLZk9~Q zx(+UiVf^(A0&NG(9-6@!;UwZvgrtBNmt6YRUy211I7S|jw7C7oa5#m;3zNu82k|E! z-lH)Ch;;}IQPs8>ru)DxNZ$G$7#7fc3quf0N{cp*OwGBc59{aydA~p{Tk#;1Ox;qB z2S`76oA|7f=@+-4bX$TpzW^M`%jI*Up|jlryfcJPenIvkKBXnGEAV#)A#-{0%RWLi zHGv`O;)mn~j(@lX6)$1wRU{_&-uq+eL3s^6D25J5nkguUa)sPa6}~VgBsT#EqrNKV z<G0zy=!YvHs>l<;zf+I6kFSJ7j^ZesjaE_YPuyhqHhU;{4ML+u9>Xx#8d~;{EMCZU zL|l>(2L)yBuNQeDsoUiP9KDNs0N|b38gnP$(oB(Jrq6+nX8;H#`pBf>cE_Lv$ZFqy zpYz71d{Rv0M343Ewz*a^9R--u0zJ}nJi<Ri00(zfd{_h23x$4FG4E`T?cqmEfV{<5 z8bLbL=+FwzQi`kgBPT~N5ao#(F3}MY`V!HI^BCd?H3-&AZ)~Fe5r+`0gT-ZXA^Pc` zJM649Ccxm<D>ysA;2@8Asd8sr$Oxj9bAgG}zf#l})s4`SCYu6_!7Ad);}V$iEW&pd z0Y^hzxEgigLM)OP4Wo+0%Se@nr0x!+Cda67f9-+`(?A&DSPC%25ZvhD#)U^5vUA@O zX>!yc8E6qA-tcIcVqZK*k`MwtzYtkd$bAR4hAt=&g_75PCNGa3AKBRIRV)y^_sb1D zz@cRtT!9h!AmZ+aH0!*k(03~Butv|i@*v69<GuJDZ5139!0IVNtfUZL8xo(1i!r%? z@NwV-P=>u(YQ}E6M%9?a@OZoG`0Ni6S-#B>QvevZz{~xo{Zvaf<v;CR%x<vE#O^Cx z{BtQ%-Wx*#jU55q=jz~H@9%Kh%Ex!sxIqBw%UcMYt{5h6HAUdaujeywzI_CIlG7vR za4Y<?#M*LzpJSOucz->izY^i^nA)1Pz7n{)b)_QzriV-aihYI4=1mo`{v~kyzkyTx zh@zZ@^9#O*ukA~}IbgWpJt=AOr_h&|;Z)=`g`i;h->(ONVeWt(SZo0#w_V*=ILaWb zH%Ykx|02K~w{3!hk%IS-_RYH!i#)-<ya1lOx;SAda(fqaFCn;+r8}T<9RL{z1MOq) z5bM9#D}QaQJ`Aws2HjMA`>&nnHU@4q3xT`1$A!?l-JyC=JM^>FWL0SjR|hPdz{NNg z7>dy<_BB8g=~@nZE%m=~C?|Z~S&0}r`(M0~)HbvZ6syMo1eAjaMqgK}6NqyoN4p)) zugqHJVuA?SWkmM>y!!w9ff)28IR^18vVR-_+(Fd<f|9`_Eo?i1B>3_pBbZ=ofNxF_ zFxZaKzM!Ptg=lKc0oZ9{RCzw;LxFB5-hZ8Vd>Nm6HZJG;AVR8w!&nn%MvA!$Hi`~C zfNF;Ga0108)OZudB(VeUytu6nR47vb9Z`5uZ<T&~|8?bq(pA$ukbe!;I(ir)Y_lbp zKwjs?{er@xgw69K!U{t+BBKURV<e;;$(Vgl2}?+NOxmj$99XL%;CY7dQ~+VJhmG$X zz&U3|G;t_ygZCmlX-kMI$v^Dw5DW#s?Zn04vnrSMH}Jfetpw47$W^8Y9pWK?wS{BN z@$qd>(5cZmO6_R#TgoB~m#<}VL?<WbU|^C5xK%qstz<s})U$Fd(-;mC#U|3j<3Q(w zIx2AI8vEqsR9Dvx6AMGYmeg<#!|~UZQaOg*XQ-z!C+CsS_Ha$#t3}~UAeMMC{3RRV zH7C;5+8Py5lH!?8KpIT7_+CQ#3^tuV*h^w(>-bUf20z&b`k+{y6R{Q<g&hEYSo<}~ z3C{v=Pk0fIa1dC4uq1of{<H2&m$nW#c}~hnvFSrP51zK=PcMtw&1QEiOb083QU~k& z+%)d@YOkM<e%Nw)fqeGTWgXT{Adyjv1bOt-$FN_^pMy7-kMLeCxwC8%&ruf0rxUXC z75O|KXf7#(JL>Kjz&y*-cW6@UL`)ZU#5n$hEIZC|f2&>ZD&;M$;@o@$Ql7g*f;iL; zKw4S<@?g{L`bjEpb4dxkd1)_=kDAxTak`{#j}%}RnTdotlN+LoO6*$<k|@P88f+7^ zE4&@s545D4>Te?kV`^O3NLHln9g{~3Ip0ER_L_DEfNa{jR_~r!G}r<m2qXmQPwkq@ zfSc!MF1%wpa#fXY6~$rF&&~r!P%D;msE5nS1RsKmUNcrv!MP1{G<I2A8&A%y6VF@` zv=>K6&071j5WTVaJr3?aPy7EWSm2+X?nuqz&MhzVd(AqljzuU-V?-}XLFduVHN@t@ z#sdWXvlwJ<ocyopr6%3iAinq_KO5EaW?EDJTJS{}61x8~$2%||saY$aix#4>fI|3G zAd}Z=LZh*7IxveZ0tV?P!mtnLFh%(ZL3G<h>+wU)qFwjg<$Gr^@kOaYUi&H<lzihV zdzBmfbgV6iU+<UXI)3UWS3C(;MP8jTw1__EWluQ2itz$8147mAV*y(qVY-d*8a>!k zyl`0)Va9gd)<)<y7Z80so+E*dov3;<kKaB>*S{v<-+7#RVehw9LaQcL8n+zYF52yJ zxunR)843oMe;}-4p_H22E}U*Hi07Es^&LT(SUQ}s$t|e7NE&Mag?XqL9`RI|kM8vH z<f9jsXs;E}0-k*G9f?A3<aKNhR|f6k5*$vM%s3Yz@LnCD9@=YkCp`!~BE%KeKyXD7 z&+Z|<ZreX6<$VWeZk=xk->kUwoWS?voF@Os?762S518oNNA>0vpgkY#>Rop)^-jSV z$6dDp5U4P_a*xIDN<9hAb;6c+FdlsM7(cfQKy=c27X+Aia^g!Wj%qL}yX!E6@bw*6 z8ti?sS`9fHtZ!bm+QODH4&%9C?mP%b2F3Knb$7d3a*>NBkHBbCNy@+92}`|ym3alu z;#hE@G#6rzar}&U%++!E0|@F>i$M46U-Nc-__Gvolo?vZn@AT4t+mQ?WqP8mPQBOU zezJ{>!D;mLGxcRe&lG_Xc4B_$(pTf+(uh*`u!0K@!|Ye<F#9GfCBEfhAO0AFoT1Z` zq~*Ts{<*CVC$*eRfF5%GMhsDE_lU{^dbkRzvKQM661)m`;29>+lH7|ZT!!ibk1oHT zX=EnHJHvB>;D<|FuBGtfmV+kzl}Y@)*W0ZhH=K{RoyVI_*nQ2L!G{}O4rp%eKJkw? zNDBGY+<M{xldCpuJe)twKI%6qNaEnIj$r5iu$RM;@Ot8O`-GASI~QTO1df*SN(@3T zZE6ZJje6wUdism&zs|P*?meL87&|^8_pgZ@1+kf&!o-LOF&PcRvK4AI@TIrIh9q+Q zPeIX$^Yvg-Yl1GZzQM@bK~3^tQg?zXXRx480P`}c5l0uPol9_~ptr28Kl#AhH-Y$A zIclfrQ~gPIZ@esGvJFO*Jqv47!%1)7ljn{F-|e9H;rl)T5i=G{*g_Vl>qQQS^A#qj z(XGoe)H~P<^(T48sRrL3IRGb5<l8}=;ojRX{G0m?*PMb%eq%QuS4uf?W@j=I?-cPi zLug6KwOyb(Ym{B9n53==_P;f9+nh-3ITWHys9C%vvun3q=jsRqE-9BWUpFTb-s@XA zGrtgnCBmm3^624l|M?b6SDk^1%;#fNZkW!;f|P?}wN=%%FX<Bb6EzLp@sfzi-Y_mJ zUNa98l973Qz+Rc=?`kQ8x+J5v6NFTRiRMd~_4O}lydC_c)cPY!yl4i12+exkibHf_ z!oU9ImG^-c2nt-yr-hsDS2~PJ3KX^TZ<=K*c;nF#A4^bAlYVFa{B7v*#7L@ex!TRH zX^nd@GaPn{;+><5tIp}uiZsNw$YGtqwhk~aM<!^f37qw>CtaSfse{*tw*%|lv0OlG zJ#t+g8>pW18(;Iu;ViuV>{_gY<6X6SrItoDOAez8fy;AO&1r270`c;s?E1$qP(g9` zWI}kga|?>nD}IKHl#@dZ4{P+UcRZqBdyr5hu!X%qydISsq^>lvp5lu)MZC>VzLu9| zC0=_}ij(^dP1=wbVcszKJ${D0=v(>!;q1$!q5k*(BW0wTK_bi8vSg=F*>@$RvM*V( zWGS)@6OqAKqRmo52q}B^r7RO=uk2fvB5P!q<@bDl?&s6J_j~WBd(Q8V&pGp%(>Z3| z^ID$I$Mdlm8ou(@dB?+m4|=^h_}!1;$B)<kgSjzNMg0%I))suk@A1_fbST;q-q6fT z`!Z2wi;N7B!S%dcz?R*$L?A(ihO;<=*sfTukLLTG{=aUZeDuI^GmCX7a!IxXXBO(E zD7?e|;vB(1wo=2>J?I~Kt>qdgSF3`j=jc!1@o%k%-hTVM*6>rsOKUDcy09+jrGx~> z>!$K~5!a}Cs>NurJA-fcBJK&6P6#hP*U<d9qw8BG55>Q4yPv9Ks++>@|Fx48q<Dup zjO)}jD4b9{1)RrMHE0Q%L{%9<=bqe-D-;)R#(mwL7Q#zCdQ6U|fuwG!!Z^pulX#Xd z=`?$u@}c{!Y{wS@4!Is-o1^JIaewW(_8>p_3oW@|4&dyYC=@Lv7e4gM^6d>s#Y;5P zr<SS5ld1x^Z*5IquA`iHI&zO&sU`~}I<6|JEGtWLmFb)<#ukVak}bsJX&ULn*!vV+ z&LnZ(eaYR)m7?Gts`0KWhMOo~FvfI`x^{Oxof6N~{a6eO#|w?9-ngjzu)F&{I2Ng3 zS2-D`?zO0w5#=*?vn{>KeC~OrNoceb%VD8A`)z7{1iM7LdOx<bq~c?oLR?sjTkbiV z+fsz)W*b7@<RwD(nb_`TKVuY;cm)I_Ft0<R3u<hOV@s1HIkOt~Eim>Y-o~{a=$5|p z=bTPEP|+}xzE0MH$!q~hSsVn8P(fn|j>HaWflhvkh~=xn+%_kqbK+8$z9PJbmxqR^ zEZ%R#Yj<?k4VL7;oRo2WgRNlw{{GsuP+e7LP;u#MC#h;Zcs0WP(Oj7n@yAu=?98Fl zU!qN}A89Fu!}#RBwgNB#{HZOoKr-d9IE{A957E&{a=?9-B@f=VsVpci@9qq4nwnx} zrYA2CX|fnA_|8KtgR%Qt@c^&#JF3}lC&i0I{sJEUODW=plp<~$7li&SMS%V{GE%fp z$EK6kid)9g%y0cG{VP?Dry;Ee*!W(JzN}<kD69_|fC^EMo}RtFmYHEROh!l5+a{w; zkB*#kv+g*HxiiL3?`$EZB1Pp|b)q)W0+Z;C>Y?~xQACi6fx}EjO4EQk;f8?T#Ctxu zdCdJ9H^a345s=+XQ(nIt{o`3%H&@C@@K2^ge`b>T@~r9I+~NloG6uHJeoa&?#%qK| z)Q4N;u77u?!&N{DEazsRxvF8l;JG<UGXv#*BdZkahe!vH><MF8rRo&qTHnpVZZ3F) zdXkXG(B?k*`mH(pC77+doiz&2lSr%G*AuFwAak+cFuT2qhQZ5N?YYa~SxHCG^QJN( z`ZkQ)T%;*x%Qfhk`<CCX%uI>D&3m2{A;z)mnaKS99-~Ye4vSR5a7Kfk6X=R~_NlO| zz}2alKBlzg&W3-!N+>(8`J&;P0e|k0c#3~(T~18Pd-ru<l~J2>ewuhO+ien3SuiD( z+Ut2J|8PkP#-)}(Rf9h<-3VpDy`Q`9%WP-ka&$R{fpdM?)d|nHLQ*!LkSuv#bh5-H z;TNp%pODwL6$+l@J==<^|8h;z&AXJ2k4gdbGts<<nchSRyOU=R>a<s2u5VPfZhFE3 zO37UBo=YIzd|KurDs_3|SxCDC!^KC`%guZACN-T`j(x70dlVkfEW2J<W<E;@kvqXq z7Kf)OOz`Z>6rAqKw{`~Nf%s~$4VJ%b#(1T=iY{0j8STw!<+%5%3XPL<xV7DIZWOWE z_#7F&x23A|OL2Fd^W%^+lB+=CdvOZySaR|;FvbvJ%W-sqW53fYt<KXG3hzvtt>^B1 zlp)x6Rtlex*r|3FHWXW}G?d5<k&@WB0-d51`mL$Ncc>~E>XYzUC(vxhF|pf7-bKqE z`f+jyb=ECyHFXt>@Wx$s`|uEPfV5dnLw~!@@aS<!tRzGD<M4;gRgRBCS|u5_<3d)C zGjKhoKKH34XbV<Q`Y^e6`(><LmyDowMH+o)WKJSmgk60AwNz7I#GoMz`<m-AVp|uJ z&PK>GkO#Xq1#voQO_J@IDUEBAiGUjnTRUia)annz>qP;%$3M&3lu7j$or~v=bmYaV zW4*8R7I8Yg2{DsI>o^HtIk9T&2q;c&S*(JaVtSd>$wkbtCF@4Zbw4^Me$V=<yD^=q zsRsuZ9rH$_yP9U);w_CjN^j`A9w)zC7yKYk>tTy=Br6M$=gJsQ_vAp)JSd~$QhdZY zayq}?`P%m9P@g838au<LL9XnwlCc3R*@qsCvBFa=Rf)1j*I5fz-Aw;He%8Rt^LTv_ zo?^eGaIRTV9^%zsi%-Yvw+f`pxe1FO{GL-uZDC#Rcq88dr!!(!SJhJ7A7Q*vcgx-i z+~Zq)MUFWLT`Ngx{Lh2u*E{V(2v{Lhp%wing(TnxNN{K*IG)*ya8Mw@2+hi7<F<E{ z6jrsb0IOZ=TH?$Zf-z!}qm;Ko2*ehMqE^7#To}o}E>P8z&EcV_1d)Lgl*dH?K<-J_ zFS?CcE%mBpC(3-et9;hzY9L-|KY21ZFr>M^9!khLe7e)*bLFP)&0Tb>qj9lm?!x=H zWNu!^IK&8lnITmc!Kdl+etywS#O@S#bkYyZ8^ySFpkl<{LG)|g19hq1_GgqkUcuiq z2It?Fy0u_2|L5<N&y)yIe7PF&22n(<5qA(zd!*}Uf1VsU7t{pQJ~y|v0B4nO)xy-u zqPMJ_Toi&YSb^B{n4bKwrDNE%;&GB4%F@8lGDs9llUm;0E!ySit$lnHR*L-Sk*+lP z?S&}CqmdX^%L7V`t4?-vErKYDSjdMJ^^(2hD%8S%RL5=~SvZpcDrWN54Bc&m@oaqg z35r<JN?@PVeii`}nCdR&yTwf}uoY&Rc|J|{`U<fIQ9je>RsM1LlpY>2GC+|nu6Z`N zB?wUnIta~0X6f1eJyaLKgc_zf|IY&lPsh&k1^6<buh~m5hy>j&B^YKs+*I~Pz0ruP zHGY8a)ErR0I6BnRSB3b9Q+=&qDE3^mJ${M$z&YaCTgzuqBWHVyHp?hW3)E$xIY{2m z(D^VSclGJJ_KZ0XQGzIU#Iai}UTR?@s87kK1Z2IyYDEKqR3wx27k_lq>AQkHSId-m z@#5wB?baWzQ4t(7d?RA-l}{=urPFdg5VCdv3J?`X^5RsytU8;E$XAScoH%00Mylcs zK7|7$%<lRb;912hQJ>b;u^&$9)BUn(PZ3D{nU-OrxU93Pjho=7&09-hZSXNU0Pd1W zyAu^U_Lo<4nCesTn`cq$Q$wZ?pi_90o?>l3;_xW{yLa(ZRDatOkLwW}N2Nyss4O*0 zU6pVZ7E-4Gs;_(Erjta~Hr?EzVQ;bOU|19uZFpEBCkKeuq$)!m5pecqEQ$CGs;QH% zZMQf&PD@7Rt;_{wAHr5S1Z`Q#dRAO8T8^Pno+?+bKC2pxc_(}`8z+lT9y)#H`$XxG zIE+7O99;#1_qJO1o3%+WF)`xJjsfl4lK!)1m~ps(tjUDxUl`+m!jI)rWYa^P2D88Z z3A;b0U3P&Rn^?q&p%B877n;$SbHO$>q-(5#HjrN~iMqoQU@8rnCk|RE`A(Ld1b?iR zFp*`TNf)QRGGrV%sA+b)=L*p3UUK8#%Bb#37|_%y031Jh8*{-^Eo^kRiYiJ&fSV+M z-6yhez9qT<etvZoR{%3812XaDf&!^syD9K<o#G33Q$q3nS-5z7P}W*aLOf=_&-2bO zB@<ErkzAI=ebn-Hzf4B2XW_BDYPw|<S-6Axy~R|TLtumpzuKLSijT6Wb;I2n*p<@@ zcN^X#q=1v%bu;?q+3v58KrLC!7O$Bwc+m-yUlx+h?&FEhR{Vm4J10b<zKSenYH;Y_ z;$bnCY3<a^<3awacLZi6M&;42Nx0|J7O@yZEA>-R_V4TV@M8IkZ3UNmX3qw70ds`B zywaz`B!sgO*aiSt>7op^SR&pP%j$jwZg7$y#0hvCGMzRcu{eLL+4H%h7iyWV(c5Cr zPyS{D9!4g$;qHVN9DkO4Ef}Jb0)-KXj@4?_cifdQL6lFCaM*>sa6MJr9TeFywkT~} z5FQ2^AESi()k(pk)Vg|HnU67de;_Q!^RGi>bBtxM&mk5d{z?^=lTq;~!Alj*U{bW7 zB#9N5dcUauWyCgcm~&P&%fV7l*r#XW{9*Eg=%gbQc6tR2p2xz_^X6YUo;-k|aE?|l zao@b31b|z-xQkg(>XQ`O#i0=6L10c8a3x(5!j2;xM<Xm+kEI8SimNsgpD34(n^Pj0 zJWG=WzN9k|R4O{rA4#Ef4*;)aCtfS?hIL(B$r&|GLw>k3l5;|xOAyY`AI-MTT3pLH z?mGJKLPY7&E~uP^LquYZapO=@Y{`9wiWDb#B_<UOq?w$*G+|k)EFnX39<}@)m~9ik zJo?zcpcRw^HlZPH`)4o1+#`^(?X369gzx7#*q8aNOfADPdWgMdO)967-A5Q=B@Hjr zx(<U)-}&y-rcr|j(M{_au;u96zg|kdcHK|)A<z)Q48yHi!Jz+RB@Z|59*NEluT%|S z>hT4aA6lV~)_cMpr{-7Y40sk}@}3u!3Ot(Z{ZFj@*E_80Fu0AhetG}T4f*sF_)e=R z1XSlh;?aAUYDKfSl4wR!SAjVC1W^Z%)a@WFJCy*{@*AkpwY+z1iE5aHDxkrpxh)v$ zTQD{$D1;b-TU7d4Bxd}}#&oU@hKsZWXg4<$teP9k)3I44Lp~fVj+Odt#Xtq;yaxk* ziJQ;mAcu*TLVc3Zz%BQJYgl>H1DfP?k&rEbx`j~vm=8~&z@%Cw5&Z9-&qE1-=1cTD zATz{RO%uXNR1ac7=_1>5`v(S%#Dh|iM>|l7xWNR;`wWWcRqgbx-(gkCO(+b#RxNAa z{*?X4vsQvR;{11iwzywdltAVi#arMsYRV$*YI61Fhmu|u6Tt4KhSTny&jB3DEq>(_ z8_{n5F=JKA+Z*2~H)s}`z)w`4w)!I*B$1wt<BHf#LL(UZ^J#|5H)*bmICD`GR3QQA zB6IRAXwdGl-+h{kdh<xDrI^daJhg#vJaP+DLJaW&r+mqYPh)a&xz9ZhNyuAOP4&`V zJ1pXcazeP21tv#$fgkDdsAqqFuq-miY*I>Muykz14pozJ%52<Qxl;F`mXVBo^ty^= zgyoO)s<96Z3x4&IK;lu2&Rc(C7iqCtu$ao%zXM~Ey{!ato@UQ1UPsCliLS$>@uEKY zE}4xx@+uLtp>+ZyxquT=XilB)C{>!-r`Z?P-4!>_6wz%WgSreb>4JN2u~CJVWlKzr zkH1Fz#wRat^7B71l1u^io=&k6d>-d>8Sj~ROMY#5bJo#thzW@NqZ^-^jW=Nsv{y_z z#b-!Bqd6Z+8Hubw;`$M~=0yj=Now4paIMdM?W{l~3AO;za`ahDCO1`EKDa+hC`-aJ zATEZCFE=eXBOjbC4)X|EMb)oBg&sQ}8022N_hLOvo9Sk-Kf#Yt@3dxKU`r))G=2K+ z-<)q)bqiYKFFSM>{#j%&)4Aw|mr04cT?ekDBpy<EnuD~**;o*sq9j9h?_CaMC-BEC z0BewvtC`{DGYGypVP<MI=i4$+k+dE%QcyW(`EFC$rMC<>JQO?w?$~)C$ZRyNv=qir zd;GYYwbEsB{Sh_BIf!0A4_pI+3&wnxosQMLC3u3aH9jPzrK(e2Egr9WVn@Sa?rV$b zH=DW1`c3PX>y$2w=ojN`#?If`lgG)$-A1k$o!WMlnNMXE{o*~R*JMhxddRxIrtaiM zbGuBT#nez&e=p@yV0c}#Yz|~yhq$@9rj*6;bkx*YBIEC#@gZETvQT`;D0K+dv&*!( zEB&?D^$#Yies;p|@*xjw$aMb|Bw?(~o?X-xLSAA+Voso?oP~u&8ET3$Z-)!dfQ^`- zG~2pOg8>X?n}htulRcV#RQT7(usjD_6PXBs4X&Z4(%Wgb?n*I;KMFT(R!y{7{S0H( z<Vay2@zpDbHpExB#w=j)Durfq0FJ@EGW+&-6SeiCo>q#@yy&#6!r~HWN9OT%;2YEp zSecgLPBb4$oE`np{&``j)VY{7|A|_O%q=({BpJ41=ojFwiw}RRbSqt?)IzGcbLrFy zT+TF$TqY$ek!FRCFm-dz+p|;^Ua7>K?|78qaW4!hnP<4i_Qp5f;un+5r)ySZ;C+Ob zIItdHB$0fVXL~{P8xqwO7k;NXC{OL@$M-=;Jz*joB3atb+aub_iW?5#V3s^6{eDZ> zYG3h3<&yYt@3U|J2*<YcY1vaUp7KFd9d;e6KT4}c`_+oY>Nj56O{1io@+p3|8i(ha znK$%22bz-0*sC5|gY(k3()dT$Z0RgEgfbe}-8pwGjJplFAiTCh$SluQlyu$qt?w#R z7&M$1z+Y#a?)9X%EQvoBxO#X-s5p3?*kZR`hU0HOGu0#=jF;T+_Q-d})yK)M|4@{- zdf)XoTQgA5QmsfQ<`xFgwOK}zE?qq^#yU-)(<b)T{xqPO<+Bn>zc6=1sxql8@3ZL= z%SMtH?a&7tgR9uf1Q_O8`eu`8yLwQoqKq4a8>Wo*!g&YX7$keNW?E@A1$C|Nm0av# zX%VPMZOiw|ORNnf;kgC94X#wN&jLI=l5mt|^E=!4%3fwC%uuGqxI81(*xlve<q*Qw zm~Y4`6Yj_BI^(bAS#`^6I=YUof;uL@*}RF$aA75WiggJ61Cdk^;lTv?6Hl)_Z(?Kf zSnruN52$71jD+SyIQApBI5>{g-)X9fk(<PJ-)7|Z6|Rc1h(NC*eIHvG&5<&x^m!UO zOPX3S64ofdvOL1!=gkQ9cZOOhq6>vsC|*$<9d(3YLM%#o8WlA>C)<RnXaCrwNxXpJ zVs}zOg$zeT<)G3B#w;;A3-_4wxn`R*zpS1wQnatz%1fR@X|Clpsb7&Jw+kXp77PSJ zi`VS3Pwb#lT<clgoBl2oWF4^Gu=R(O#2Jt0FzOJ62E)%^E5gWvo#(9sDGvtrXFfnt z!IWs?{Ix0fo;zdv6xo**ACek8SKSX&u%k>cm|7`;#w*y;*hKbb6;gxPZF!3QD4CuM zwufptDO7L|uhFd{0WbAyx4?U176K2bZfnP}3x6q_ixxt$_2fQ$d{sS7+)*~_>04P{ zCbxnZLg|C`$Fb0@z~;%l*4esn&gse_W$|E4ss*zK7JD2O&KQm|9WzwgWO<uQ^i2V4 z3zLi4uV>AyS*)xzdXD$q*Cu*kgwr43IfSUROJl`99_#-e!Qe#Z%>A_m-P$1bA!1g2 zCM0feMS~ALosuN_Ew-L(`6V|JZm7ukJ<&OE7i)4Nek<#1SAk3s6xLUaNTs!E;-8Ja zW3X=t{-MisBNOKMS$Y-I1>=Fkf9!#BZ&ZKYc>QUcZpzi-!-N3hPwTT$vpC_3Yy;H0 ztscL6U3};=GRzdV5qN<V$(Q!&_9Cv16swh*3){7Q?<-KtwmHY!G&&8-LryD~s+o@q zd{;$vuGLU|S4Z{bse8*GL<Q}9Pf8iLFK=$`vy1#8R~xm9KWzrb&gO{u?%vZBS705# zYS6_w?r;vZAMX55IKw`*ivD*Mx|x{S|2um67iRX-Nrd-TDy$dyk5<WtE1(e4Nc`mV zyEx11Qt8;T0j{*}`&rs_oQCs9!2KKEa;xV+;8Mn!yOQ|mbz~`;hK)@Y=HpvSX_7w+ zDLIZVE06*$qBa&oVoAoO?2JkjYSNesBkRHV1ymQ7lAjb}O0rt;o2vHh2oQhKNtV2u z^AJTSl97#Bny;yPb;0<ie@VU?tu;qjPG1Gv;m$sWrWE;gE)F#UcfZ3HSyK;srU8$` z`ZgLSM`;i%QyNNKMsMx7B>aRCPbmJ|=bns+?+zYB8;MVmhH9xMedn8GGH%A{)0W++ zB6^-UF8^Gaiz>d_G&1ycWUZVEQ$*B^;j=eauRqy=gI%b$i&QYxYt=n!`tBvObF$VX z!R`~^4Xw{?i=y?P#u)WQ!!ti_4xf&AoWFHXeo@?+*;@9MN4Q60zj*O{*W0)TTLU`N zi9xnD1V;CWSj}(gD#6AKd~Plc^KE0X70#gBI&)dCpv3iB#`ny^qyz!6%dc#%Ok5pu z8|}j;J;L@cn0odTF?aol)5^t_ORhtU2-(HaHH&we!QA~wZp4A9hyz#T2U{zPN#Z@? zZTaC31GTDc=Nn8l`=gd*d$(YL6c4nXzII)<#YFiLgX{KNpYc1hrQ;+S@5Phm;cnUY zyiyH=i+@$$|M@~T93f)9l<#Ev;|vTiKl}7P_{WW~9}-EP#x$hKsx23Ke#F+^r1gu7 zszi~2N8XsWv+cdnK<(_(e~@1HK)f&U{66&6qm>CXl6sjxG3;5g@|^56XPI+zi20ao zkC10YrP53Hr}+LJ(q|{nMh@DpN$O6OKW9TsJnf%=tG5GVi>4Xi66AvmnJj_g93HSq zQ|iwefS)Lb1iQEpLYsU%roO$<yxIPNp!XU@RCr1Ehs}tcqRg{<s0VUBkp7cfJQd67 z0{UMHG1-iiZt2=S&y~lIUtBP&Fb<!tO>6$oC-cvD+NTk)Z#u+(*FScay8$_2n@eWy zFYd4<3gHg7Klzh8tS7c~S)gPcNff2wQlrqpb<joO2r^vFV_=?S2`ypzThHPf(vP$I z2~>15(65w0pV4sG&?3M#{N?&KcrDi>RwkIU(5rt&z`&sVp!pk+URVq?iw@HmafI`! z0EADVOa{4p$Ui{%_QX2!)M#??p#QG#2MGmQyh9wuTMZP(;h$vFegFP$Lx{A-@YM_j zj(w&32hB9#FqgkV<Xtbg#RNjfM?+@8?d^!A`_HAxPgX_O-kb*Cp5Qwyr#^zrFyrnc z&z0H!Zln*w@R!`$*%sO%d$XlqoD}HUFdvlA8wKL<$OMp7O1h4cE^v>P_JM-)!1o7d ze?3`f1|3}+^7Y>Tdgs5qXn%k_{Remh=YM?0ZwnO2)MZ#mq`w`EQ<`nT(Pd`xnrlQx z9asRR9KH7JV_}G>-yrwH%O$(alJ9$OT6ZDWGmbK%;h!p%Lpt!M7tZOW{55C%mqYT` z`MI<gIW2?D^_hRcNB@a1{pKAXL4+mk)cwNpzkIJ>Sn}V$s0u)+s>!jPYQOyv{~JRX znXLq15dkB%zsMo(ci-~Y*ZsdQ6t1%aFmwHzO_A>3k8A%PdQ*AYKno1J2G4A!|3;4g z-;bo785#32`xrU@+sG*3Ft;f90BYVR?L}h;QY2=~IxpN>%GuU;{GY#)527r<YhQlB z{cnH0eHOJJvM~KN7u50KzE@#3h_?!oekBhxAoHnJ)x$<4L^gaaWC;jedDOzCPcMC! z-yA_BhNQ8PMO@_B=Y|0<E%}2U48X*BEs9<kP`L>h7<v4;um0vIdaeXN5WkE2KO4hE zDuk@Gf*2=54|sZK#0OTWLIxe!gC4t$aTz6rCTu&&<_QI~&P0tx$q!+Dmvr$EV1!8j z^1z6%F#9~K9g><1c@U45zkhxcS@F1OqvN7ZuUG?%HA2yK9jgyob_D%g3w<BCm)D-A z!}gxJFKZD7FX9gmu&v_?3<~<8$GHx}3H{u$r+dTy+wS;txhUu$@SV=&nIh#sSBVcQ z0OZ}(iGCYb5vDj^BfMijtVRcl!^ZX;NE-AEm@qz%(ds@Os$jR$fLJghw8mM;Se681 zA%v;-2@GOD+-PF^$Yus$gkoTxKOea<RkZ+()GNT+NXYD@AG-2cu*?!?^qlC>6RbG? zYR=fJwm>INv}S&PDVQeqK>Vr`qH?crbh~u@cYEmDGD4_dR#w>c=XQQtgknc|!_098 z7+Ke|!!jjd#jyS(I~+*P@5h1CeDK)ipf2^N0vpzW2P8#h9!PLeAo1I^jO8Q2%uav~ zX61g^^930U21?Z?f(xxf%pUiUFnj-M#J3Of0$&sS59ECk`nR?Ce@=sTeuRu2op@gM z*EvHDYght<{O?mQM21kbVFDNDR8;GWJCI(XY7DZizyGQMk%;o)U(Ve2Ns4(D_xIef zJs?qLs&#5TITrB;JsB}yf%uL<Uw{jW;S1?!b-&r!y8ahGwE!VWtN{1A+YcUaKa!9P zZErR#Ir&v{8IC*5Qo^S2#;g+{r08X2EHR5v=wX8WN#D?NPd^aKm1GNo=CdG-`y)!% z3sg9LFe9*sjdV-W<m3>H(41hAmUWN5&v8({={Ep>Wv3ASMNcBI+N$jk^QC~@lzoVO zO5qsTkh}uhk9s6=9jDn_{K4}f{m1GW80{k3f1$zNlIxcd`%mRJ^$(yu^<)%SI&u{- zL&SBs1&q7O<I)Pb+kpLGhnuSHXG~V0+|Ou%5RDHU5hslU&-cO*V(axC(FW1iQ%oS{ zTB3)?JbEy%=Yh7qKVxHQ(i$Q@3@c67V#?-!abmOYw?86K*f@!R+hOu-^v1o$0nj-h z`zv<pEu$giAJ;8_9~NEx4m=OrJlk^!RGC&enUKRoH+lNplan8ia02V0<8LN^BB9Fq zU`@~u_F?3_eVUET(s>nd+-Ul0zD6!WMEHuq#*9_E!x=_-J$cd*@pj1*0P>&5$vX$0 zU7K72_rYd>hhxvjE_ts|DYu>sl=ZX&+Lk0q6!(x>2A3z6Q!okcT}Zw=rARR1!)Uo^ z5g;Wk^GJMX;TrL|H|Vz8hK810H`Y6%?JPABaxRje?hGX9Vn{R@fDG42QT40+kXUPr zD5mF39Sh|@9=Pgx?pcsO0&C_mWU+zxbqk3!>$<yid`!-fa^<#Y9k}A7w(`Mvy1prG z7SxdD`xH%28x3psaj|<QE`+t<K!&?tt|QdL1z;(?hEsY|FTBl9G^sh=D%M0*oGY~( z=O3xdm&#)8iHCJ|+AGqw>G^7$R~m3WqO(P^6nlO;mBXPi1C#`j1lxn-LFv~DSrL6= z+~+LCqe}K{?(K?}O+`?B@ia56z(n#Gs3*2=vkK_(71dRk6?*Lev0RDIxl3e<+4*u8 z7yI-;()Louyc}crsO){aG&;#GDA$A%j6sv?1a<&|td8oxy)_|m5pK6rPnHk;xm&-v zkl*B!hX*(VaotiBXhh__V7Ufn&<8mf)^QOSGFK&YC6(Jf)QWpJg-AvNbs>XDJ_VeS zhY?%tz;<5zj;=Z@y__1?dBupgA(J4rK8ZrnuwU3~l@WB<_#GlGhI^s6G3==}_yyUo zeQOQzo2o)wf4_!O0w;3E4z4sE8K+mXjh@d00vRVksB+MXLxltAh9L_h2^$=S$-cxG z;qq@Ors*w(TxL;fe`Er-cQ5Tu(I%k_?Z5<qpMDiI0ei^0kn$F`GkR=yK#h2l;Kjze zgWcdj`nd-l6sw9Xa*=WnH$f<Jd(8n@xci=99JIvWA5Fv4v~aL&L1A1M_ZqPB{g#U7 zh=Md0x^lHjJ&`~(H5a}qeRFNT-GC^D;o-RZwU-zj=Y}f45ZEhQG!c&|Gf=IL&^BWn zS->nR;JCFv1@pMTXgzXgC;N`n?rcvsiqT9f#v@QTyNu$}`zLCGA#t&C2(iA-@Fb|u zYh{waD0Bt_O{m7?V**5DZlca<EU{T1kPdj4aiR9LSp9HFHA-5EwLap=McPl>Ti<V? z$3lI?+xXDT?yaXLdSH^F$N%^zIIO;7uRba$R($VAo~28A5>37+L#ccM#+YlLl7e~? z$88mbw{aFu?YB^B(1(7T=A^5YtCwqQP}2cRRm68WNRmCKcIdqPj0E|aagk=4-2l%d zs3kqSn7T#N#AkJmo#KiNk{P79)RBAnO?Av`#dBKHleZ`WdJDm#c8`gYy`@YqhkqMg zHkZ3qmP-}ag+t_WYr}y^4oi@jf-ECLgw)2Jg`i!CM?|i@K>3YChWGbfKM-eiRu9~^ z@;g-hlcG3U0;S7cD^2qGi+@dTl-~5hjxFFg=Q7{CwT$>S25b8Xp#oQciDT_XozIz_ zg2T@)9-mckj}m<(anR)bV`BD|Cl;3tscCjwhxA?sCS{#Z0{vI(2O_{>6+N8a-y`94 zZ1iR%GA}l<iPq~Q><!)m`oZ+aDA~LRo1z2>p#(#QH8QekQ5Hr`z_I*Jhp+s;;5!}Y zf9v7-UkW?Wd6`n&FI^LH6}vEc`z7fu<_|vXTEi$wRUkCnf|lXJ(YaoclC<sQQ|o^b zUv)2xvIWyId<l}zDZ`1lib#cq_tG--6&|aTKg26MUMFEXimkp6vawTTQ0mYzyf`X+ z@T}?4hltH&D1Q9xW~z7m&&)UBN0rRr^jjpoJz<$tZnrb=Qak?VSZK~Q^{fUY4$siJ za-lx-7Nd@->7&w;{C3{LPpX`uw+QIUf!)@X*@XZ>r`={6a3#}IV*b_!wj5lpKz6Nt zUhvVhl)g0=MtY&tPWPb=6?VO+WQ1i<;uan_XSx<U1JPlj_&fWp1M*dw&1CMC8f1`y z_JmSrHqNC9CQf5Hm1VJjEf-7+hoQQGBzZ>IwawC|J6z7i(rVQF9xa1bQ2D35<BVHp z*ghuZy?7W$=_**)q+0SGB353Kg6_VDxkFs(Q_;NSO~gRRvNauOePW7c-*gy?g0=}| z)Py<~yF_cZKTIR%@>L^Pb0+R2^pxBS2^UoMtG`tAh5SKvyR1I<9F?f+b;pr1;aviQ z<B1(gNfwLGcbjYw7bm}rCb!$=c||z~$odjmt~^2X1fkSdX=m<HM|~{e5jLc5^T;(! z#tPrpM%rczsYeqL2N>ii<0s8IcLx@bKbCO`(8ImPFPt@%i7zGcx{_HuuL$?9HGQfr zoI~y0uw9Pgd(!sm^PLsS7Cwh_?HR(x`={f=MU;PzGO5T{42!!eTIZ!2-E2NkPwU9$ z>j#xg?6@(DwbPN*-q+1Boz3~w=5>o^1U9F~)M9nVAF*wU9W>)(s~-e|7P@-f6>l@y zws5Q7h}o!fd7;8Cnx-d`)}p9uH*3dh?{6=$u@hDgtd>72w3D`aRCH~OrB2_P3ztZZ zcDru(q?}LW5!C%k=3PJC9g0~y_DG*)jcbT-WmpPYm1R)pL5zw<Yv1Mxi+P!{^rq)L z@gj2?9ZIfa3fA)HUM+hk?}|>LVlg|JP>MTlwng!?QJUj>l&PKEkJebNrSNdeK&@K8 z8(F_s+qbV%tf`j%D;?M0B`B&6VTCc*9M)2{pWu+DTW!DJe_{0oo!oQ0eG{pwrSN^= zw?<|2V07D@GtX*j1wQ3iC_83X+S^lyko$~>$TslFBL2rG-hl^tYkUcE2Gf25g@Ndm zIaxl}HvJK0T;e=o+a>CHfI%WAkLcOam~}ypK!0=1>$-j@zOtz$Sd{Eu5}teC?WayW z=!>kROT^0<*D|l%0zo1*4Wl41_$^J@Ya4k84<lxQznkzKM58k<9PC#6Nmo#&1ymgL zDRP9;qN5~B6y>@yd-yJ)m?oT};b>xAW0*sbSbz(i>%e!v)rzA!cbiTsTBzSzVCcWp zb@$0`75*=|dd*`)9DzL)H3n&fD!1>JW!BxY&3hL3i}$Ydo@zXq=1aVWVd0Ey)m%EY zoQ{6Q$<enB5wAj~c35|n8zN?k8dF1*npu{_Eya@|LSa<82R)Wu`W7y|b(Y=I?T7;` z&2Uhb7_`i9c50(RHY-R@-O1qC2lKvf9Pb2dCfgTvQQs1KX(=A{iq+K77+L2ISQ|4+ z_3kUGmC4X<DRAmqS==5TvI)#%<Y1MQjL*9l!Qf|6Z8}RNw6j{8o#wc|D%x+eI32`b zjvAv2Fh5N{c#!lh!gah9|L#D_>l4gFLKx0;XAw?MLQRhf>DHuU2fgKSB|kzjD*TmF zbq{u&-I_VTG3|@x`#`NmlO}<|)WzTRFYM%R5fH#Ikzec2YN(vBi&I)f1h=#}pIXM& zLSyO;K7q^1YaykS=*z?eer^)uP4|XH<3vWTePkjK$Sip~*Ki!fy|=rc;GUE?Uqbcp z&(6;WD7N3WD{-J|v&3ni3-@?;`I7Vt*@`a5g}NP}ip1clheqbb30}#S1UqT8`eOkm z%?Wk?u<Bvx6f~0#{>%mkL4*CSl(qaS^tzSfmQMrYBolH!$^q}>A?}9NTyd<i%{lgO zBs|w>*;%RuI?fX$exsT*Y4|CcMBTl$u}H?f3~!q)hjG1IbVyFK?-yVl#^X*74l4>s z)$M3=Iz1DLmdWI#Fa=hwzzPSs1Id}lCC$k}VG54GeZ-sv43Xhg;r!vBT1mqk`Bj&6 zZXJ@~!I0<V)$Vhak*Y7}Y<{*4E<6z#eNOT8xkbnFTIqCAr2u5b%qW@DL<mqU<3_YH z^dC)hWE#b^^!at^jJH15P3=Q@d}_wnjU9QgnzV$|nYe0;=vRGl@=Aj0N|lkZN-6`q zPh6BT?J4{tbYym?U;Ho&TpJZY5%ft<{5%Kj66*VTzS~FB7H<FsvETVQbf4cF$Z!J$ zYDdfL;x`w3-OYbr*1D2EaCy0-<M_+vDB#*T|F4_SJQYHj(zK~uwBBIoRuk#XciD|2 z+`C6=QS{#UD5G1Ao{?rlB&#C`n`5AY_bG;6AjYf-TS|$o00S&%Fo++=;u?j2QqH@) z!B2~$Lrpw|u(-8mmt5-1(M-vHB$8l2`c7F~MoW<cuW=gdoW}=Kmm}MzCyeqNg^fiS z9t6pqoq&-HJ)3C*C`WrC0jeeFa<V+5ftWYyjGI{aEXbZbk;d|ff$;e}n7uP^tvAST ziw(t8*fbvmglNF}S=nk)fy^KAXcJs+QT|}?|1#PvoU$n5Wn9SzA?wd|4DsQ<&7c-Z z)Qt((L-IW&8TuYm-)xrkEBc8VPY;3EA{uAmc6+H?FC(Zn0>lva;5dBb3&ZPZywe;_ zv+4eiwx(YOzl<Js%MUASf5wA-I6}^Wur_Bwhbg|AqOYG7l6uf{U;G!WP*aX;9xxal zQ@c9>T7134PdHct9e8!_YLm>8osp3+={P$3D%QAk=H^DV?3+FDNWf>h4nx5kfRYLM zYwgPD=;#nuyPVRzV)sM|^8W8i)z#(h9CjIr+i(}=$>j@|@}103vlS-on~uc?oY;^O zDZ{)seP%O9(~d}$Dg{}6TI*7nR@mmU-ge%{>q_+9u8M=wS*Z(_=B4x_F{(X&3~7(3 z8*2xq`%A7%JRBcw7v(W!w3~A+br|vy@!@j@p78jHi!-#PMbH~}4`@Ek_rs&?-N4!8 za5+vmLV9)FVJ<muDK4d7(Ig*_wLP8nsB^|8i$MLTZomuNr>nvyUYV>OwZ}U2*oWf} zwwNDm*jA>in=3U?kOq!V<B!se9t$sTFKew!zly>C<etMj-<SaJ^*rDutM}&;-^V+g znBQEN|0pEjIE5&&<fK~O*Tmr4?Dev;kMMW-@sdi9k!(SbVO~K(iF%7>$gF5rtF2MK z2Ty&uThL@C1lWydb$8X5M<LCEV;83tb!VS1d(VCiXWJeWcv{x|?t-TZ6OfJ%rf89N z_mX<XWKuW@duF-OZx{*IM!FXTP-It|zznxV**wI%5XicF@1=&^Ij~5!KuMnNL-2<t z;XzGdOb5Spt!&F9JnlrjN)h2awaKS@Kxvd=q-c#0Q%TXq1lprHSZ-&%+59R}rX)}L z(4&f$HO@XV!enLG7hrbhb~f$-!QWQ(PH5s$ib|l<w<y;&Sl+L&ahiiuEf{xz=0v96 z_$iO8YA8d(tok!)+h)eP;`%bJsvmziW%@N&KMs$pd`H;DG9qc^Im5&$v+Co7_~d&N z?cAb@6xqLF&(=L29;t4^UUrvG!QAyK&ywZGyG-q34z-9~&=azp7?3W^m(-&r*WYmU z$M2D3Eaknhcz&|Xv!w5p$6r^+F9_`4UOZJG-&VZ*PY9KghW%zd{>Z)&X{z20z@>P% zb)^VG9wVCKew%9rU9{z`mxb=bWacOVo%1#7$E#z(dp)E4do|OncU-Va)Un!MW==3M zmFo44kUt{@X`B*zIeQ6yw%Mz*6JaB}sH9ozddl0mB6u0pF6}4NFucUj$SoXazr&GO zCwnT$CB3&f8^hF76&^Hym%we~cP>tpgQJpHrl)*O5IAYRv<x3@Unb$t*;~}|c0Gnm z2I3+Phf)XkAE=qcuHM#iwLGJxmBo9=xm=;vvpn`SDab$V(_H3@!S(^dH4mKtiQaO1 z^kSb9aBXSzeLROE@stA89FJo&KDZI~nj?+Vz+7S@?W%@>XJTGv&w7gTZUzY+)Pb4A zt4&i+<f;?T-&#$Hl`|{;>~yjpjGj&slLH1{Uajz|Fc@sd&ZwWu7H`YcIW8EUw>9T_ z(sHhpx0RSN+Eo>`H>SBWg>EtN1LKFzzq|mJ2ZDyFMgj(#ZqyobpOBf3$9wLd-sMR= zZHL?|$pKVcW{$>?TkAHfva$^bv#4us@|m>uYOy!?GY8g9=NWXkx9jfasde>Hx_F?U zroEB*Y0Pgb{riH#gC?*1hQO=8Mj8s5w55Q8(V;aB^RLal6+tP;P&nU!@ZpDF$5OYz z-64MSN9-FXgW-#w*5glK2Ki@yj0C0>Kk>mp>V@F*&LOHrsl^$cF#>*TUbz}0!AL-M z#1Rr_=SLApP`m=j=sEj~MPHKj0u?%{t`xmL9OMtg$y@P`3lvsh{ic4D<TvMijK~$I z9!;x6jHD$mZj75hU$6MY4JZKmwRdrREhOc;l$P4rqmgPs{-_IsfqJ*uBPlY#OjTq- zbRsk)KF6>Duzb0~x;kI|=8H{xsK_2XdoK0?_9T((C3k&#h~t5jz9p8c(capF@igQ& zZoMi_T0KHY>RqL8)aIqgnfJ`~QoI!NTEAl(5Z4%Xf>%_a;;soSS>Uce>?FxOS9cwm zni|^GFH`W%^8^HbgN8gXVM%n{c`8<}W`lZhh2X!?KqjjGd>s<7d0#b)YmN@l3T%tA zZ?UZCKvzYo3XR#uxbgp|2hqO{jSe9rT&t5Wej!>H$Z;2bxTNU?-TdHqFr~)nG=#MV z_E5D2bke2-<y$xKcn{f!(UQX@nMj5Gv{rrjx<ioXa3__HBJhX2#bIt3rZv2K1F~6T zhZRNRfhSVjY#TWia;tL18#mA{kE?#!C6^eIw<}j0ckSgvOkXxkPu`z9-trJv+9laL zTKeLsTm=j?0%OzRhw&lKvPaH~zIL8Etb+q5K+Bv|g1<}#;JJwk3;bbx<48bLi-<D~ zY52}TF{)cv?_E50u~j=&NuhCd{zZ-F$a;tJ<-OPaakejG<{zF$D8SfyX|RaUd10d^ zbK>d`cr`u_z7teKcHxY4swlEafqF9`bF`au;rj<4xY%n)kRV;Ft39+b@4ogv)Q_9E zRQZqMZI8?X$BZxVnfVL8RP7x?x~sP`E#^;!vP2N7uQ<Sav6cLb!V)ka;bC?z)a@Df zJ}X?#3S4M!Ud1OM1T--)ePx8tp9bN_$dOwtE{GU+b1i`FK_z^DiBvT{rfw>96$^<V z@i{Bv_Zv(PnF-TJ3IF9Sv<jSgYXru}8Wkk>qU=KKL(o$Q^Ys1%eK5KQMMX2r3h1dK z#ocSC62ma3=4;~bJ_cmcX5$9xP8eetx`IfxC`Y7|ix%~{c~YHt@yxe|tuHm!`#B6h zQHkIY8m7{>4>HNB0)=CM7wQBbU_MOp$MO5Xy7;K2G0!h$+Z=~^fnH!vzWXY(7u1ph zqbL2=5WQRA{3u{#&LxJVNEGW4FI4gT@L{^GTZrQ-L5TE{`SxoW%MmaSibqH+iiJTF z9JH%HZpzRhmO<|!`i7Rk)LE~0^IDZjEyL(KDxe>s*#0=JYDS}afpVNeiKg!iD{$Jw zC8HD#>m;@@`)SK1unj_P&n`Gbi!C4?fdK~xXlfBl0>yUH$wc^lZyWB_Jy^`HgCa^5 z_6(K2Rc2eK0V7tYmkY!vahH3jD|KmjkgRYW#^ar|%jIDA5y%*hzXo<nk{)j(IU8#o z=~pBY@<KY$Q5FD^TJ*F<n#~A%Gcw@9o0;h*#is{(PaJDgKd-FO27n&t#+iQ0@%<49 z&{*K|QguoFxb^MVw?6^ZfQF)GrcNrso^ml^!`dW&xA!!q8-2h8AoDT9HYWyoAD-#i z03=q{2zcV3-bz)qxn-_GTgW)2vECeoV5K(J_dN4n!;D|57g{PM!-bhT6PrY-rUIjW zot@DDG+F-zO`&Kc!`x<T9qzWE{C0pKhsg>Lo7}T8n_d8SAjS>)0QqSn7JLWT#@M1f zR0`wlzK7XU%2!(4TrhaAf8#*>gV?ySW@ba$ajY~mokzXn2ol$o1#OU}b8Q{}SJ%sF zhi<X7gZ+tUqEXw&#q5v1PwcjTyl%WX9_3Xf<JsBRF7fx{E@TSc2!5*fchH9a+K^Ps zl0SyPYx#l4;VFpqj?|8VBSc*@6vl<$ZI-WmjAs|$!8i#&x%$bNp||&l-4jdUyJ8Id zkHX`fB2SHrt`cpxN4hraUayCkGoN;UUZzlQ+Kg!&E<=1s+ioPsu7|9<%)(r$0Ac%o zSwN2?eL_${4;!LUR6iv>U%k7(BXC;y>G4$xhDKLi&F8t)mz%4+9^reaz9LqY#UxtI z!m>B?eIr%}5nqj#s@1sgfo4^XaVv3VdA~|X@ycVHnjJ#7?71=GQ_OJ(NZ#7I4H4WM zy?Z3bt(e?uZ0Alk%C+s;;|Y}F$00b-7BbdH<9CVoO^n_VO_wRmMdqy#XgxDK66ZQ? z9)e8U>Txb;-EmG`H{CSv9yPanI>WP8-C<+=CBsZQK>WE=3@$`*;d0Gy3&s;^l(&wA zH^Z4?50LGB#Ks~y>HP#}jA#^&1h?5W;fG_CCr3i(e2+zhpA4~*Kqh3(%zbgO#+K(w z72Z9Ux9(S-4)%4T_E-^ZF9zjceE8{>x7Wu<52k8Oei_<nuF^=;2|Cp>kiL_5S<E#z ze5v_u#=@m|p-tJWGFf<l<D90<VpfDQzC5khGgS4jLVgsE)P*ohQdZC>?fgN0UXAdc zQIdCyiW%qpc7Y~Bb>`?8bZ6Nl+cJ%^hYfq~k8`L5Zh6#PXJnWZ({1djKIrBG`nv-w z4_7L7eNu~Lxe8$RHNF<rGr>YY@F}~KAI@q!Q}aNqVPm+~*-ghmU**<`<2-;9eSSo} zRJ)<dYUBo}IxEcn7nMv*HEe`0ptFpcp3BSVfPr;hjLkxs#$evd9;TW7&JFr`dp~B( z*V;aT!B(#cvz%wH`#5=a-rfSN52Kq~vJWFyR$T{~8upsh(vex~Z5JUC1mQ9N1K~NI z^c}`*7C#@Q=F8{*Y}W0%$dDV9-!?G&T;;QvaK3Jqb+at(m<QMf9bZ*(0C3nb?z^`K zD0XB5B?zR)59|cW>NoAoS~cgx-3Iqe*Vu|}Gde~Xty$*EWclQU<k_-STsT&C@{{Qa z#;#c)Eb(NuMgK@|tGl~=mmqW_z&EaYQl^jLH&bRZ8v7?eUAgn>Q^KEDO}jV+CK!k6 zVow<v6J#5vk#jj1KwXPjy+S9qtxs#Rpc{{F#;Uar)LlGNSiOZx!dMCc?@O^T_#Gz? zK@?joL1Z62MNmX^zh#sOF8dTQ<h&F?VrAXW&gbHu3|+WIA&8b;I*)P1^^~!DD)x*H z1=RWyr*YbnMQ5eub~fD*3&uehos3vZZ;cGqC`n^PN_l16zU$SiuUB^1OaEx(pL&AN z-^VE;w^5N%_&Ds&tVIMeC>bBwU3b#jlmn|A*SMAv1;Q>gTqt-<5XWn!XT#=inw9s( z<Hh$`ov7cJ*;o4Fk{^D8hN*m_j6FiJxo$y5c;?wQ%Cwi0BEsqb)N@kbuG5kqC2^w8 zzTmE31oYe<>nAQ{a>eL7ON&re=!1^k_gHT0Q+S}7G0_VlM8=T`P_M=aP+Y-o0!deb z!hAL@i#7A%4mg}0EWSOBI`>>z=)J7{o*I_h3LEI;BhCw$M~Yd^jLHO}MZI!aOxV)- znw584Q4b?~7ewojM9k<`ju>|x6Yd2&&vOsOCG&Q>5s13y&m{~>Tjwnw3c=8kNo`{C z>dU!kt@c~J3E6*yw$J#|trMqtfNJuAU0B=NBEj-n!xErMg9ATpW%f@GfUzIljKbuX z9Zw78oodQ_M&ENg99=3iDrG%`StuzJZP^CYfkA5r%#j;xDYg_LC>xqn2mv=4OME{N zZjF&F0OdWj9q~3t`hl+-<<?R4Etri`G#8hvxEXf-&MC_7LjO|QZrfJtH<NZ7hdCV1 zeONh<c2Y>|I43>eb`2N%{F0~4_e9OQp0I{qp=r#rD#eWX!N4sS^o!&nft*q+!%uNi zg%3!5jT`#M#NNbRL^-Zostuvf{g?|%4$(Upi(%tT`5)K-UnDH(xA~XO{I#HMC@`$^ z98cs`F5;es4w2CWvTrZWzmVvR`YAJGf)QqC8cCH_qTR;uef4$Wy=B~^oS2mtjvl$n zamXV~DYG(cWSKIVdX?QhnRQc_vUoO4-=1<yN!ng|Idqnok|`6@>nZUu(&>mQ3)ew~ z6aIFEFp}@y{2(tE@7bP|=TAKrCg!j3;_yM@cZ@hm?0uEXGnPi%<_CSu2KjQ!*JxgG z&V4yGbDRxRF5XI`@N8N^{$fcSh9s)qqp#_`$Rh&aQ)p$mYipg#UXH`XeDM~TJx;xj zy<^7SqKS-bM>kSq77iuRPuG=xiBfq}zuodmBBCZvDn@zR-F$|_7kkn39BJ{+wO5j{ z3-!k}P^FBiMt&|CRT15Ml6Piv)3Cii9LjjdGf(h*T;v&VDQIrGn4NS4?V9ru%EgV~ z8zYz6)`%W2ii0eD{2E?Y>$fv3FnLrDsRrCE5-;o8w^)gaDNH@mkN#X5S^IE1ko)_I zq5`KV4}AC7lg7vjd+Gvf$=ph{e#Lmp9`hGz2Roz+NNOaHLy<0bX1^HCMuRs|!;wTC znslz<T<(Q)DrGnhQ?P^x<fBRdC;9Nd*1&HOLe0q-{$FT<0)>xY0OGJg_(bYIjOB?| zVUOCCoVyUAsxb%+%(%^mGIKQr>y%iJ(#QQ{RKv25+4ef+)$AP!A?x((xECDYrBR9I z3?o@j0T=1X>#YAl$0P?%fZ;9``oENr@F8U%RRe5rSZM(f?y2#;F_zz0y~5*Qa*C`n zk%nm<M(qbUbg90|;O2*aoI5?GM{$D3N6+hJeid<7;;sc0F)s=;Rm7u&MzfyokOZbU zrnd5x%;_#;`M)@y|MeUXNK}AcF0nn_A@Hw8+aGmEV;D)x1Z{rRp~e`O+n_@WYXQ?_ zNoa-oKm*5I`{wYP27PA>iUst@p3u(3IJ7WwZ1Rq9!wq<-|3;ILvi<uDduNw$<V<w3 zufsd5%{BbnNx1EwFnrd`-T}Hn1RF{aasVW|P2GCw4NNT&YsN{Rv;-<To*v+CT!*;x zNTIxH^5}xe%71>cf9*p5;-%3c%qjB3YxKXqU_heAFqjn~a;QEX`K?2b)fwN!VSEr< z$KrY>N7BW<6(w@QRuy#SnnFoX(<3(X9D<_cQJLwFU$|>YR|Wdlt9<`vS5)9dW3k01 z>r)7_NX@k11~2j<O4~Tgz08tMart`-V@uIG$-uiQTAuurQ8iO8{5#?^XZtQ-bTRv< zoBR{jddf?OSX#|O3C-tC(Om2S)?N}pOHCIh%^Gl_8*uoVIh;s|JeD5EiQ2_I&u2NQ zC(T4x^`fG)$6RIC^<2nIGP@R@zlxxea}vL^+(2N@n+WVF=O+9ANApym*oSb+Ecx{A z{`Lp?dk&$y96SK&q_V`{62$-OhW*EzLCCfheaQd+=jN+GaXJYO_k=c6oqr>m{#rNx z^F=@{vTqsB(*J&z`hU26|MI^HI<VVX?Q(ek?79E`S^bxl4*yue5*EAQ{<M9+0Pb(0 z6u=Z=#UtLL&|ALp9)Fa<E2-=JkAGmV`!9aLLdME^n!g?DAY4N|gs#Ldo9y%J6C6?+ z2KHqEVuXj{{kSKRNum*nv0uu3{0AxM{18V7i`AR0+3Sww>W>__=3xrj0)n&`7si1U z-jEJ7%8&V;Do<$xKs4KH4hM8W6F?jH5Em7j33qn#!Gvni<Nfmgt&mFlG$jwjAKKi% zD7o7BV(kBV<Ys5!(dInMwfjY4J)}Jh11515JdpUD`F<jKP@rfT<T)2-fpFyp+mu~S zAO?!tYh$zEK=<P3c24C8;tUL>aDDLpBOjwXpRdhOVsX{lvdfo#0tyiLJp466tl}T< z-a|vAP>W!+1XooZnL=<$A+3NRsPqDfPIIF0(*}iF6xJDMmi-W6ZJ9t4Ey5KmJeKjK z;6gFh7fU9sR2@pk+cnUtU$Rvs`Rs#dp1C}LW{5bj2c&P7pd`y&zSr1YL$Rh?kEDKW z{apP%%$te(T@U;%0b#c$Y~|?x`3w}IxZzXF_aF)efM51GSN@A-Z#oCZFk-BV(D&A) zhy8b#(@RYu2XsF?sn7S9w;?pf8cxU1L5Q<eGlP%Eg}C!-cIibs2$BD?`aLW3r`7Ks z%d3;mJdG2pf&R~+@}${!rUr(vCNGXlvX~5I=&&)Lus@Hn&Mj!<Pn)i?q2&1Tm%nd| z)-{j*%Z|!S&Im`C$!|Y2tkONt9%vi$Fy$=wHX6tTK-<^`L4Ze)3E=^B&i}gI5yw|t zI{&Y8?r9Ke6Kr<HNj!J<kwMUG6T8}Ee@Si&ghvZ?6s)|wjT!}L@)fX+UT-y<#f>4F z4$$|X0aN3dz`5;j;I-Tdd`bo?vI-;h(F2FbhGER<v;%CgS#V($EMh-H3)7VEGw@$A z0A^e`ib^o*L|m!`zfK;I27hE*Off{lZc0d%RP=1GFhM?qWRJz}u?DiM-;-x$FLp~u zR)dz?GQyg)gGe<SWHq>dt>a%C@t-e1o(M;=$lOf{vp+Yq&+Y)*ApgNfy019HS{*9j zm{TpEkW*Kxo*OKQrZ6FrEo`m<Zn<})9a?5*0-gQ~?Wgcjrm{sHi&>-V_3&+-%fGYI z|8<DnMgH>R;J-LoPvhy<fI=R)dbGAiZn62eq-8Au<KP;w=P(Kzi>f<oUo2GI!&#C> z6o!WbezJQ+R31uMRPQnYRL>dgtZgirj|~GAl{#g=(#clfPSt#Bg7(c0(Rc_!dKrQk z?8vXQk`Kka*!(P_an|ho)f|GmS1dsz)ZL3po^0~r{X>{TlLx8J9J_Z-<bZh^i8_S< z=>+Wg+uv8WDvDoC%v80V!nc)WBrdN%Iey%+D+{OJlDOVl@rM^PaF<(hKxdB!6dyT2 z!)-jnH5C#;9eK~-ZRT|0l_vx?n8}tP29W8M5uk}FR2fxcc0T0F@1$c2+xTTpIsZq& zdSq20g^$6~lqWKZuaX7N6vV{5=i7%=XFyd;fTq`Ss2jwp7FI>T<Bd}}XTv*f7$vu1 zFBpF;-0y{yQNv?E&zt}=jIue;Y_>WfzjG?fAyXLa0vsN^%?7&sD;8fC0krXrSJB96 zlsbpxrd%9o>;@$K3X-Lbn6*pJ7Je!&mubyRFa`2m%_#Vfy@D=sD8}^0`{A-?@unUN z8uFFmTZd|%3q>(WycpMW(wTZ$KuF)_XnNp4hXhy&Ib}%0AANy17^iPGIYYFuZpbO~ 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%0Dio-A<?_5vFA{@pF- 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 literal 0 HcmV?d00001 diff --git a/_static/IT_sample2.png b/_static/IT_sample2.png new file mode 100644 index 0000000000000000000000000000000000000000..27b0bda7f9bfefed7dec5d4df4460ac977a67420 GIT binary patch literal 282807 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%0DyCh{g>dgp}9(oVIVh&l5TD{kZi$BH3!r0yZ2 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%0DiY`Vmtb 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 A{{R30 literal 0 HcmV?d00001 diff --git a/_static/IT_sample3.png b/_static/IT_sample3.png new file mode 100644 index 0000000000000000000000000000000000000000..b8c7b8dbaa0f51df0beff2e18510530baae14aa8 GIT binary patch literal 396642 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%0DJuq0uv5M)6Y`hdLshz+rBohdFi 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%0D+ruq}0Nn7- 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%0Df zVq%yt%G+J?p8V^C_+L-6fC42@n~iPj>%RNr@fByf>%S|ft&Ql1rK|yqOzaMs(?Q)3 zF+|-K*zV_A$@FhPqr;CY3YNMDQ72DcnG9YhI$Z}l)gKeV=SA7rj5+!lqCTkmnmNcl zFw8mrq-aTvrl@K}8UeS=xL}IM*#UG~@!(9rVf3)lW@rVZ)%MmN@Y981IrgtuK6FrP zpY`%V!^63to1*qw+2(!eRJpjh!Jnkw6a+a3OUFs3XPZp+@lVJkzSs9XZOvMYFDa6X zrOG*QZ3*!VZUh8DL9c?ab8~P+u-BH!QQfjN82XnNfJaOFW9@1{Hwe3%q)F$)e%_7i zC%shzX>*`uHxZlI{HR(+g=r19Z5J@1HdOA3op0WcHG2R#5PB-FL&oy*E^68|J&Rz! z-yFb*xcYXoHu70R6VS7fKoYS%@Z;>~)(dyRb0-_?5PoicVaMEK(O-bef&`vuE5`!I z^zqLkLXUx8ZkWIi_vSI809&9`!3C%6OA-{8bPzQ1Q2v(6vIC-Q5Ob=K@XAVIZ8FNE z@(1^T6;q{Qm^@NHFOatnxM)g<8!_E8$U!<qT11OnhoMJ|3W8i<kLNE2r!-Q}BiBD` zoEXO}Ja7O!S9dQDJ+9b6d{wpkJ7wzYDTS#I?8vbFq_KSg{M?zUXSv-cd$KUzV;7XH z?>nBs+D$FO$v^Ep^pxGjh2A)=I>LFJcsUQi@iXn{#$nH=x<{a}+V23%@wwuxW&Z70 z6NO-v2db7*3Wh`eEGwMvqGI_0M^`t<sRaqSdLpqoJw5_tx}<9}1~~&@v0L~;tC_pt zK@Wv&S80Tv6D>A?U4_ejR-B9hI;Z>>+aphuMNb(ZuSMu+zypGzppR*6L20M^fbj2* z_5qX)J!5naXui>2H+^PehHqIM{=5vbC<S)=okQ9X9fre+)?+|c8k^xO7!`D)w|Jw6 zlR`GafSCgSC?qQ`NkzxbFvblE8c)v^@V07p?~3t!GfT5wMpd;E3%s`93XLcRDcA&W zo<mxqIiP)V<>r}5irKHHnzMtb7pFulcDXr8juM<+4}t0_Q*O%W&ZXp`xN1D<o4Vbw zub9TcoH)ouAPgccsN0t(Gun5t_e<zasGxZTlfjeN+^U>$-LnHF06wJVSBt<vS%pk< zMU6$cIA98EQVddUB9=uI0y0bBpm&S64a8<-u8WO}3YP|!iIM2pX))Tjs{5)jE5OP3 zwH_+mJo79THJ3@2HB}$cAND6h*b+^uMUEo~>J0&!bmVzrb*S+pnM<I)s6LeA9R=#L z54z9JmM7H<r`~)qw~;=vcK%^&qG(cBKd>|!EVjNv5$xV|ss21}Ge&S8i)=K0a_#1} zLK|CO4gmD{phQizl~*?PM^V_lPTvi~LI6HJ)@q-w6}1EOE~Ar8Zp&j}nplMJ*4*(P z>Gr67bW#f@yhu<XZid5F;kBn*E`V)nT72qAc*OxE&lyB1g(-~>FydoZ1WRUtO~s<O z_HzT)TNINb3lyvuA7)RTfej%BLZS~y#IC%8t3$<X#6`04My|*apKP^%>&i;k{{X6i zZ(nAs|2esJzK{C&gnpfvv!n965w2e`Ft}(>ieG(+q(%}DT*7WXd9XyR?50EffE^b* z;1zE~2UdqjU7}o!0wMk&$^0b9;?Rxiq)JO7C<)ICHjtPz6`seBPsx+nd)$5yVGs~k z3?|~CO8nz3rVmXdf*&IC?|3Z6bD-?*Qw`AQgG(Tid^0WtQd~7s72K(gB)h=UjUqu5 z(MBxM-=t%vb92B0v0jl~+1alc0~uE2OyuM7Ew8I$s{EQAQBin^q`nN#loYZsA(5W2 zk-z}1gLd8{;HckR*aDN6o^4g_UR=K@BE;8+C$m8u^)$IOu{2!{1>SR0K-310q>whH zyG3&;b-v1qMlDU#=BZ+MaS5~w4yVMH37;|#$ABtMjI5V@2vp)xJ5s@2h}VlGZBC-E zX(hh_GT}TS;XKyCQ#tnNsTF%~0R5p}UVu1~llsTO9Ebv16}l$6k!`TciXQjdVbz`n z=6iL}hPekTZhr(72rZ4O;|}e~TTl&&VmjD0z4r1{O!QnV@UCqO-5p!4o9uvh==;&n zydb)&>Qe{7RAl7@69*wHLzxmmI^t$G9Q!_2qsn$)f=xCnGB2uWG(BQ?W|X_>p}&PI zB==NP*J{n0+{eV~w!>PK?pV-59^62AK>gs26F-kWpVJQx!Yg;um*peshG2kk1Cj?` zh{`0s0E18qPp!vJjEziHoN+Cu>=<so8n7k4hlOi}h{2BUj5X8;59Ya@L@)hM<h)L7 zubca3_20Z$o~6j7`(1}Z*N=|<{a2mF-wcse12o0D2*wbP&ztBqoXTK)GN9_0R6dO8 zYylG6QX5^3^Ab?fw7*f;X3;LIwji)UJk}eK&bJ`2wQ6`yG(mU!pq0)|CINxCY>8yl zSQgN@fRZ()V~fc)NRGeR6?NDRFw|KLv>+bqnx?Vy=<piSPjsDGaPD_i?1lJNS{M$P zlvt>s)1RB;jv1~=Wj&T1P_1f%Qrv2*TT8xC{qR+gBd4%tJdsK0mOt03c_e0jC6aST zr~~!V6_CxwMsBr{EPT@DPPwZc{P9(-X5J5r{b;+&@c03fUJKMmWzItbXmHZYw}l<j zMOfBEhx=)W$Knn^O7@d`#%ST!izdxk-=dD^1KDY$wcOiEy%9+jHLVq8fv%|{#OzA0 z+DjRX3awC%L_1LwR6Un$-Pu#fI(~5Z4K4)wh%6Zxd#&^~`f|9uQwX-tfa=j1oaaGq z>%-0qClDeoLlh+MqwX5$dZF6q{l+flvCKd=;$l6uQ6LNNXn0^1{^=C;^QNY4!Q2Bg zRXbh>5$%>L(sHhCHa<6ATESH2^#e&?rpRRq_6b|wIkwcV=`%Vf^<UVO7-LCMMpte{ zT9A1xo8UU7$P^x(cA~9V#ABAG`BYOJsPQGO1%K(8>~@)IPja2SS&WrGfXHnNA=PFE zDyT0ZjU=km-r8j{Vm}6#&klrsy<OBQ0;0rrDCWUSb7ZOFr(6w2B-$ONTe00^<3{lq zmlqdis(-JVziIma{=sT0TDa!>zn5Qs6P8JcSn5x3Sjh(CMy5VveC<p&XP1}z;Z;)J za4TlEKmnx|?zazL&>bSk_OV_*!X>qA*Z*;VtREd5O+Fa5Rsn+4Vl0C_;KpS~8$^pn zyG|0JM*6-#1lA@|z7LMX<m@b~^Sg65LrK3dYqzvm)w+GRy(4pyrO)<Cqb&U8079oc zuGI=9oHsDLNo<j#6R>@^j(u_#*iCaI#l!C<y)JorCPnIVvDeP3HrIZGTC~pjiR)s6 z!CURJuNDKJ=~mWka?;Ol&)I=meqWTiMsHnu;vtBn)V2vFLXzw&<w#P$2v*Ioi{ov7 zo@?IFS^1?D$8UV&lewZvY@r*)W4yg}!0lkZl<Jlmt^Abd8~cKx!XjSg#apE6W4TDe zH6tfIwytd(6+Ppb1|NDtH$CRQ?c}6MAx79}E@g3@>Res;#uR<hXie+O9(Z9Y%Y_zk zokhILWr`(B{N<1G@M`vnclz<cVrV^eC-9##NwS0a<z?k!uXo!8^M*0dbe9=O{vXQn z$KotLTS~>R{tsto9T(O5w)-uDgi6W)0s;eqbc%wsGcc4$Bi)TO5&}}vEiK`|C@D3h zgn-f^NQ)wfbV^8bp0&4ozwhUF_Un5-=RZKjnOSQ+&;4BY_qy(1hiW$=oQY>m*gnHW zZ(ZFX4?~a`j~Pz?d>yj^)`D*ZP9&gQ;``$HEd->?y;C3I2I*Tfps*r@?A;?gEXr)` z>#Ntj_?DPcZ_n(;StdR6+^hKf(P15U)-+e-X+NbC$A9B8O?}mO-GX_6#ei|?51S*1 zN=yc04^$`=h(0`Kx}GPmmsRcf+_}BWk>}{%vZmT`0<1cp$Agvo8<?~N<ASRj7guRn zO%RHHNYPb0gc2fK;H6d8?shi9B7gYF=@x#sW%q?lr56&t0>j<EG($?ls}OtV)<DX< zAJ{Op7I-rr#fjKW);IC2iO$kjbrRJT*`ID}#+|0@#7|MFEAb;4x%tex(E*3lxdzb4 zrW4UxM-Iw${QfkeCEqkVP{PowFe}?m_TLBXCHcW#&lgz=n4#1%Yr`-8d6T^ry<>Nm z)eqkXOJa8V+HAi2h;Kj4HA5${j$qU3o(_NR-7esJ6wj0H<Noz+Kvv8cVh>xlBX6sd zrI`0@-pi;YPAz4pB5DR~B@QO?5l(74B-DIwv*|}Br9>YjT8e|P-x!NG!e&jj?G2e~ zhkNUv@94N8R08g$J4B9af2`!g?D&F(stp)3?|VcqT|6;X4d?9tY}33mk$n0!)$KCy z0_l~Z$_mmeRMaRkj8~f<bqg>4w#^zQmBI+5P(`;~9+|%+zap~Ei~joA7}iV4=^rr( zpyqsw3|NOBM*|TGiq*Xig3_}6Tn25xFan-_D9VU3^eyC&Ou!+Zf=6<ZbKQJc78Y<y zK7~HQQ!H3^hw=w_v^0uuRK6(TUHJF{cwe>3tes|{_<-aed{NiLCqw?2l*;gQj@5s9 zDS;be)5`Lnn1HIc`!$cgEWGjtk|**(dS|O|!Y00);(~6iij~ep`lb~-OB)EG*r;GL zRjwAgOD9cQ8K%V(@gbYw5$am<{4JltR*QBaIEh*|#)LTef}qZoD(J|McNkJ0K-W!O z)oB#sUPj*XbZZC5H28{CYiKsJO#YC3Gj@hHkbdyZtl9K>+GPT4Cs<GfoQ#-Wc|0A8 zI(mLOClO?UQIp@l%Ym5=y-cgMbl)geKm56f^#?{me@*$Ssqs;-8X7aS1?Obb)4HcV z<V?JjEOzr&?KlH0iVIo7Nxth~(2s;ae>0ZVl9}P>$`~({fT4qJuJHb0G})R^7a<JC z+3s~HVQhvsf{|1~+#aBd1l<(oBKzA)$e}9hNC_3Kgt<y8waCrT;ONIj4(t7+&`nV5 zb~!nD+@H#FMWF}viD0EygyVOLEhCOWoYdGQ{rsX|ori#aWyb8GTLyh$WXxzn>39u? zXZ%S+V}{f|95Xv<lY*=g@-sDnE~&arS>VY%dmoGP8ibEjjrS8#JQAZUL;eT{<`FrT z%UMW;AI~yb`4NdeaCVh7HbbGA(y|zIl7n({N=eYO09MC$z*2lG;dT78`n(_4F*))! zTR<orSYPj974bBxbSybj+Ot(v(KT@iFscl<u+hwrl%Gy*KcD@W;bVv&WLo9S8ig-- zUHuM_&c^o=eW=UwMB|2y-bf1BS-{#|QGOc@GKI1Jj?S%95dgGeN?)abrdDsLw+A5u zcFN^#EhBNMph!uS=!z~8dm+syRuL%olPBH&o4c!jG4R=hEXi!|>OSLCv9W87ndUrL zEAeH}GebWBMS{(c;Yg2AJUirM<KAPsxdPPSaZ_KvkZ_}{9~$hw+vd7wUy{9Q9+;tb zwW^xrxLuVoy3qV=|M@WiZ4!FX;RW~km{A2i9hZj`<llgQ>Wgkw(`S}%D59^nm@fx~ zu;irm!QrfD#3|VCd1ki`M*ZdDv<|?VReqy+ti<li-D>pS7qw-uGNpXoVToi<Wz4vh z!RTTnaz7F_QRS5J>-_PL68|4xxcT9{*ft7${dW#&{j~sv)@)=)I22@z#b(B*^g95t zZjK8_C*wVrV!%r42acj*@&ibm>#!AgQ0bF9dC_m~R^$*x{Hq8eQ)1pT?o8A7!a!&r zSmQZv$*MjE*Av+ng?iHIpDbK{|F#S^73h`*_ihyDL~~{^9jnS+rFaZ)h+Y~>-+Tm) zx?a<*!ba5ENVv^pEPo7_D$65`FX=ljf$VAZof6~=w{suRvIi$=dp-U@Esu2uRrQV! z&ADPVX{iF%Xt2kNeF4EPA)(CEsx`=;k+3QbU4@m_lOY8~->cjh3#`xt&xd)ueg!oL z(X4^;o2=>X*|*@wYrxe0MY}V7L?NMq<ybRUqoIUbO{20M;jB1WT|FsST$P@xowksw zS4g=Ijk%gy$kxrPsxHfW7#Xu7;A-dI474B~d;zLCMZx(Z%id4&$%;zccrI8}8P5r% zd6g*m8))w5W}5^=75q~{{j0S4VGHWX?fd4zew`fe;v@x2-ruZ9M>!#UnY~jmXuBj* z-s<=a$Om5w!Z?SotZ{1E+TZ}eXXxD7-ndz;uwqcbYj267E^?@oLU-FK#}%5Wr>hYg zeD}&t_y<Z#Tm{9(vGrDl_$P~k@P17W0?X}QK^5$94z~xB41Gsit6F3Ac$R@lK{oRc zvTEqkOzaIO8znwsZUg5k_39qsej{+>-JFSa76eiNEap3yiZQvtsYo+bxS0}75V{jO zEC7Dto7!+|U5!QNWeHGKMF<~>#$*C%w~)v`8AlY-PeaDyIGTXI-I%>!tO4dHt)cwk z&*7vXP+`O34V*|XVp{9S(>^-f^7BG8f&bJuRNbBRS~FzbK2YwRog<t%XG-nEMs_gV z3A*4~DPOj;cx5|KrbQf`oPLL#KlUh=ASa2)l+k4qq|$2Gq*UyJxpD!(v-~u610cdB z#aXLVi22i#qmFCh-ky1btHQ|{{6;s;zT9gy5*Gb(1Y1jyq<b<0%1Q&({sqx`^kxTx z2kDX%$ODOnMr}1L7Z%lO{4X^au@aC*@z?2Y{*{EEb3`VEWg1xp;?k-N1Mj}qOg8sw z&|I*-%uc;-u;kEtI5ksx9C>Z}aiTa?528WdbnKE~?^jiv?IUc*BlN8EiSN-~bl#lu z(!K2k1vRSp-f{eJUdngEXly3PeY&>BRr2cLyO)p@aGmXS>~LWjTeosG<Hd@s`j3)o z-<>a^HFP`J&^oGhAP&jbKUi_-CHWw)UK}Naea32q@jc_k&H!|LS7O>Y=rWw#vMCb* zy8~p)Oe%K$Z9JZW5-?M$p$0#mvqUlbp!)mD%n?wOt^saxXsA{yosL44q0VxM=~eX* ze%?K$>FsRLWU8tuztK7!FL!O}r;L`pl#bWpi%>C5Av5uj*h}%;s~vTq;L3!N(S$#7 z2V$!T!#e|(f#cdh{(>j+XGdTmNeR|icYt#_`%{R-9c7@NJm;LgFnRZ6rwxiE-H!i$ z8~^8pBgV#r<(m8tDWHp!Jk1uxKZLU&0&jmi3(gU|g{@=JCHyU2w2cExf`?(Jh>E$x z?Qb+$#a0p~z2A?5P%nU;N^f<d@>S2{JnMTQ&OMKV_CsplOXP`RniK?FM60s~Kmz3J zVv@*t&et_Vb<IEmsrY8Y2EQV6rDwt)Nj9C%ZzZfN2dcnp>j!2LStj8Ir*&D9!oF6k zP|Hr@C)nNxHkMY$^GYELcS?%3jtQPWE5_`jRW4TnzI@s=S+Aa0QEI6Ai)fS+L1m{O zGy((BK9FMBs~z3@Y3V?^-gUmRcvDVq`qmPtokq7sQY7t-@AXYDAe0+HCe5)Y`sF+` zcIeiWUN0Vk;bpUzp}Au2Ny|o*+hu6nhzUYsZ>CNRq)=3Qo|=D3NIp=O_L*sQd=Jiy z`S0mc_eOr-M3?Gd++<5PIWyBn{@pCkIZq0W_zdczfqIJs$xj8LxFZu#+yB`@EF<v6 zz$O*v%Rrj=1w|WLrTvQ_4cXF0Z?N^rx$}YYRv2X}eJ5$Y^5UJw$-u7A8IYH?WuO#s z5zGz^t0|b|?;E#_CkX12Ye8?}QoIPnT)DId7lk4)0#@X|gX)ur759P<KLZd_tBnUo z0x^9%!s*XQx%y1_4%%xT;5Hh=Wy+`yS`5SRBh#rakX)mK#AxIA-9QYA81|i2$Gcg> zmrq1sT+#g$g~rBsEB6w?F29NjY1Ai40sWU$zzixJRT%Rw1R?tfSv~Q54j3#!8EZT^ z9N3leg_r_AsOwSF=e$N(hk9r@eG8((_y;;W@take1<a~-H#P5D1J`HQagY_$3c`Qe zOfapty+HH(#0RriIf&b1yu_#2LCHM@;FXp+;%UU4YhH6?3x-%n!Lc+Aa;`py0$whn zEWw<C$Ouq{Lz7<lW_VNI-mkvcpd58+X9Dc23`(!JopI#W>%b9unx-GXxh+FeK%Y?U zS^4_q#TO{rs$&GSn+>#T2>DxB=oo6~dYliO-`_Uj8UPs^66>`W+TS3ZcKo3kn>F~O zQM42`-IH$#mpCJ@E;!s`;?!X&<LeXph?`gzD4*vi_7m?Xmsz^Vbt6cnHXfW0B>Zzw z=MI0`bSS@_Dl?Q3ca<x`$gk2L6i9)Ix4g4IYJ&mJ1gyvl6h8yyy;@jM3&}jAxD`%7 zpt+EE&A0b^2kueJ6#PX9l!&uHv3_}7?r_8$Z7dV*cxz(dDD2eK(8|z3%OtDfhILDD zg<2Bw=N(t}?Hgu%dRz(?W!SX<ubX;Yn95l0`7V3*bl$(8L%2`$E)SJ>o0>r{Ka87K z=WqjCIQyz=(r;ti-nhwBf9sNoxLFUn=uoWHW8LIXSnsMu+OjujPB!+jmK^D~ZFivG zc+*lJvEn@iX)WS9ZpiG?A?Kw^AiXeedwBaf#Y+C1a%~B2HYOuf-)@EG8bIn{b8K2A zm5%Yb>^BGEEst~@f$-OYxR*_G;PB3S-eui_Xq#Z0&^>K`p_$C{X)5-Cs0#B*i?4%! z{@3P5wHG4QXq8$oL54HQ$lHW#m6De>53>DC`uipQ6`~LPFAiG_+A0ocP4;d?9P4y5 zyxRDEQU8DS6=Aq>k4T-kaFlFldG%|)c-v8-6gVAbK%bfb7Ts%fL(hA9^(Cxl)k^iz zF<u#x_#)`iX?zWNXopu2o${qqszFCqKLfzudUuN1KRE(;A;CJeBrfGMmR&C{I<Edk z!*MlA14A`ZEax$2A^9T_iEtIUoJLMaLihn*h!=VKt%LcHQ3n$^9AceP{c0DPjWP>! zhr;G3EX^BD+MXU<bXPoCl3_EYf+r!3F2de(LtHbD|J%AD#XT0o2SV4Vh~srh<z9m3 zN;B(gJi-7`5Ry_+A*|CamvW_B3-(w#t5<;(?@cXBxUrP9fHYt6@I3n4ib3dNw-?#u zq#D;`f?)TxyZ&$vu-8(F#3|6+iMq&A3}sY*hpi*c-$0;iut?<Q6_7SZQ%bBFyOqox z=Ded?J=a00)(&L&Aj}^gEx~&qVhNtW2mv4a#$`k8hlBBFNI*FmDDUL#WQ^i$$AuHQ zKj=0}u@Gs>XS}S(@)oVkJ<4<$esG2I-9$M*tC}9@rYzylSKBXre5Fzr_86ntc`x~D zBg?xhyZCqX5T$R$`>CaVn5`oczBM68WjjrI?#WzhO~HtAXTBQ53ziJN%ThK<w9OEx zUhTxNc}eC<A%;(j#%y9JN~Ds;T}XhnVoZI*1!G0M%e2lk=`t{;HZ(QBfXCR#?^ioO z_L#dOTd@b#SKO0gS(bON9o9@pJx!2vY&etF-T0Pzp)P<+F(U%dvPH7<YscH?y?8kn znCsv_w;S$V2eSZ5l8GiZmav&tO~~^*3%6I|aL5k1hKwfPe^&~Aqj7bKBzOwY4V;^4 zMDSY<sOCHSxlh3vY#6zSRXIIK9DSw2g7U-Pnvzj^db#<I=KqLS{dp!4<pGEoeU0O= zz+cGCL(~(hWd!v%j7K$TV~?7=rM6d|sG-ufi!kq_q%~`!xO=3x<1Xae2}cHND>At# zC#3N-Y|2nI+KRlUIog!T*qguTLdQE%8G@2K&Q$`C5jXlGSzm0*$uOZD%bnmGr>Y5$ z+XQ&`3z#Vn1Haj^%fG!bNtO1*4?VDGHW{fT`%F@CfQ~Dq*dIopVbDQ6qZ>!^HON}7 z@%URkH3{;1PrkK}uAF$%vN1z2BMTuY=H5T(o{R{TE38b*F3Y{_z>fS$(($ooimLMw z*DL3iQ>PHY1{%R)MZ6i((<|+8GXcFtZS+M;ML+%W=#wz?yK!TYT_)AaxZ4%J$&Tkc zJ`%rUYNsE}8)tA1+K6KBm%q|uD`1H^iaOlJEPgS|E*EE2yR*_b5J^3^asG9Dd5VIn zf1bl|%DU<tZ7shawb2fqS<vZAM#k;ZwCi^s7LF+Tr278|+3LJqh+(ARAFaU9xLOJ> z=P2*Sgs<)nztI<Zt!5B){#~u@Ps_<$z5-NR#R{&HKPAlYZQ`1WHPYV;j12708s^X+ zSLXl-mdqtGxXn#paGrB{)_XavMnw4N`0GJ-tatZznvZbOs;}YB5!YF-6+=5+cEMY= zF3(~+tYpQQl<$FXSxi$`#1?XZVXp_)4)aIEp;4Bfo_|*9`TZJ49|YKmm_ZWTziCc4 z6i%MQb?<Ac&mpTL%v3$p9(#4<H7;sR;h6w#J^(=`)mdv+2sOPz*>d;?XWpPL|G&_C zi!xC6`9=RQ=GO^Ys*(_zPLOq#e97_clXHEq4R_sTaPkVE{ahSx3xZK^R%oy_h~2Cs z#<@!2F7=V=_wVG_pWbH!H@th`N0VRQf1oG01Y`pB55!l6@|SGb-kfiK?HQe?*6`mb z)Hk!&m(wRvQfBDrx7ato#NPin>Ho*KLJ+@ue$y@g*WY$?{|hL6xCVey?Pd)Fqi9^{ zfDN%*A1bW|AX#|C^O?s=H?9zCz01b(<nN!`zy4J8D)jW0$PHintx)~1P|2S^yaCCQ ze?(~g9u5AF_x4}kO35*Uf1kS>Hu-nH{{Pc8_-_YuJaE}5r3N|vKVSc%HFVoxuc`X{ zzkFQ(@^^BcfcqQghVJ#>cK!a_3;vHcNFNP7AEV5+zx4wA*C+OW1-D)SjH~t^$fAFF zZGVeKzx$({Trz-A4SFNi{%I~P!f-*p0bz4Lgaqj6m-49nB{`dse%OBHbwX-(3Gg@; zsg~(Bt$^{-(|!+9Ezep3SHti!%X_&#W=#4&-s69K`x(Ni*2fm=P5;_5?#X-w1AQ(7 zdeNz%3YskO=h${I2tZA@1_*sm)2y=Ub__0NhDrgTyA7CLuVn$Py8okf6}A8uxFR!w zACL++INlx_tOEh2aR!>s2Vilz2u%f;*!#t!zOm123X>8fI0j-gKt1jeNS^NJYX1$d z3g<4v+>ZejI0I-!&XR1PgS0|qD6!=6=1@Hl!6og1R)g8l&5wSPC7C4h8IUa|JBx!R zm3_iR4T%n3fMtY&7NP84@;@OKpnc-EfBV`Jbl$8g`3F!A4+Wv@8R!?@T?8o6BB(6J z0cF|-o?;_KN*-DX@bUxvpZfz$wPdLlFdA^DFQeToiAv;9##HNPQc4v7GeW1er{FkO z>%>s<`-Rb(0pQ1zp+&Zoe?7kePYE~4ll%*ysogUm*^mh0Qgtc8H7no)NKsPLs}MkI zg+K##KueCnMsvv(lcYtY$W@M5@~H{|jUL_x(26#J!Ue1KMjZO`bC(I*KeU4blyET! z`kMhcO|I(w5Exv)*>Q1u{ZGjV$~3NuoBDByHQgFc<+Z;W_8s5}#NaaeMZO&T0)*X? z_lIc8FmC|I8cErs9|Nn*xpQ;iRCE~x3px)nagXvd0O7p?do952Z~E27z=xZW1rYWh zG0Whfc~}O3!DM9J>?wo9W6y%-@F!JZJY)U1nrImXFQXm2A0SM(Fh%2_fz=8oFh4l# zZv}2-n3_fvHo%v3JoTceqV)bJ0IZxpIRwH_FvR#i_n5R<8+tqs0wbRD=ZUxkT^1%F zcn!c`bsPGM8K@%VSz!2-1o4>=4@3;65BfK<|C#U%8oX5Vz;CYhk=j26q-O2|EKFe~ z89X&*K!!|dqT+TNTTmg3T&)Kq(&12)+n+(!kX6D%ec}g{#0urQY))8Z<Dqwcym@kv z;qw?I9=ozv`JbIybj&q30DU7sa?%r6C|aSMAu^o!w?;t6D1#70Fw^_>tm_{laSJ!L ziCUS+E;NIyRtCl$1%nS&+`q7O16<;!>9&!%cYu)X%vSL#5Yy}&N9>p>eF2@LOj{ns zu^g4(EvSpd(5g9_rT*qGUqQXtIm6jkok#$B#k}&lJNpUbj~q{uS$TFzPM9ZF8E;M6 zmDagEL%_|SK@qsu_%GO84$nz;0mj&1AUUv3frq$i)v#7YaQQ~D=cU(k$Wzcf`&vPG zoUS?#8kC#hh2!A{t!t28frzn$vbHMbTCzTCh!uVT4JK^`u5g*yYvKwkqC>4<^4rxo z2{q}cuUF&jAq+7cP4Dav_aR-1Z{3BGTl`ANH4BoV4z`b50d@ldWyoGum^w|4uByz( zL%1tX#{Hkr=x|cAKZUab@XWn-0!UDOXQ!Ajh%k5xVV=hTkzrr^m`1heIB(8EKTjB3 z3sPt5xQOV-La#i6*k+8tmn9=~B{>t<o%K7S7jXsi46@k5z8>FgwTo@7qvnlr?gmoo z2Kg}rg@fb<3ZqA0<oL7jt)_~|<IsHPpbM9ObT;Xef3pB6gF6kE0lby6nS!)$k;0FJ z(U;z(lgTEfbzuGQm_0cDL05y<W()oiT@{dgtg4UCkbXu?!m)shnQ`<#$~YUu`zaX6 zO3ttvFG%*a!e#!fl&SWQ=;5CL5DHOO5x+^wPVwORv>Ol$o6cG;tZ*V%fJL8JZ1e3~ zR~IO`2;_h~uc1Bn6M)g(S%tF#%@(Ppg=;G2Hdzi~i^vckH>lB=3E9%uU~83&Q@;nW zK4(IEfCP@)$zPiTeezp?fl`OH%cYq-rO}TtrI#TI>6Al}H0bnGAq3#t*W<&e+7Qg& zFam>b$7Qdik9LDSV~xxha*~gFl+-rTxN8(YzU07|P8o>HI}t8067{3h|D*?V3(>l+ z0Vr=hm5{I-aou3@Hsz?kYhN5CR~&m7qRUE-E6kff<O*7VX@Ybj_DbWFBf`qoPCDyu zmef>%=6+9h5K0{dH<Q^nJC$~tnM`vH3w!@OX-yEW!c^aKp(SL|3Cc7Nr4-o~(>v<F z&DsiMe>l@$Yup5y?r+*ar&Ue#Il%+@b$UMICj;NgbO5J*$3cV3oE80|DrFO2Y)G9M zsY?0+tTwO8fL9@T=(B5c{3(_bX3nMd8r~a2&EIMv*?x(PSY7(IFIXGfKpgARz&_Z1 z#=g73hc!7r?;fZ}6K;zX#E_Mn=q}wNXUBx2I~ZgbCoLB4;3^@U;QT|52q$iiyy>;E z((HjugiHVF%!NSu=IywH#aC#8oYlK-n(a7i=3m${d7D)V2_H{XlcqhZrm(=~Z_>?P zGqOn1Yz5;Q)v=MK-)N+s-JQSlI#W_s^`C;_ze6bhd~NLy?LOJ%{eRa!?qrOGWbsiq zfSX}!*r8$W`Yc%pRUcS^@_Dt7NXX2FB8?FgxY1CCVeS*nJ24J=4po|-K=HZD+-fAa zY+aJM)=2*#bhxYU%IV~rzRZGCe)fVYd@A%0dJvZHS4z4T4Ima{2W7dbiC{?`I33wi zEb4wIx7Q$<*Hdg!FEh#sinaD}lMc;KBna)~>7@#bMVNCZ7{$58F@(E~r}d<go`xC9 zVfDHJ=}fBy{(q_NIgkR@J9Yv%_#KUvQ%vM(XkD<-IHD6#XaLHNp4U53g8iF26?s2o zWqZ2KEbc5TYT``ABJLv!#lAmNCpt?FB!b$Bu^;3ncZye2IL^Q(`3;9|))BMV*_(1q ze0P%h`opICw+7E|fHu@7$m6})JTahBXov28DTCWtP2kUd*=-<8T%FP)drI%vki~Wd zNGfX8+(#jjTr*iLGTb&#Gbr&ye2BS!Z&JdtfJ*y1Mai$L7C<ch1jU~xcmhfiG4BD$ zlf5+NDbgbfUm$ydsd52AzZWi*S^@l1oPuk*%}c^qu^*_Ji)&DY06Y#OMmNBA1`@gB zsHTt>P-p`H{Cpyn`|_Ff*yAld<CVNk%sC9*wgoaZJWx^kDyns0#De%N?9+H`$~Tlx z-ZUcrIZ&z^iHE)_gO!iF@X7gwqvfJf{d{UM&oa5W?hTYeKQN6<heRD$?_|1V1IYZ* zYa4n2QW?egE6?`2{9^!-P<oCqc+m!B(HRCJT6GxJ3{~IB8LkQvhsnyCqjcUry>ZvE zVe4sWHV9`I;~*o8X?H7-+rL}L=+0BXMdKJ|q5lckPQD3Hy3qK_Jj>hTibA5XObY^r zr17XFs35^#kF9>zf8*HMH;NY_H-ClY7P<oC0z_gTBC9->b%s2Q0w$}x@1$!g4lYan zAhM2$5>7&%$$`A{{WQmaGMDj~p8;-8c5W4d>;cd09H~A6KX&$aH2^XC0n-b;M+D+g z?C>hs=Y<K1kvmqFD^jwibRRFQ^S+L}VYtJ)MnlocFr@B%N-Cd-Dnenx9Il{CVd6m* zV}qRn119DpV06G}?gKyYiUR6Ft?;=Prwd-D7tXSyw!8OpuPJ!+ThY2wt4?{oWS*zs z7R+v^D}Xsiq3k=)2z2C!;OMIzoAy=>{P?gW?`%m>m<DCX3Y%XX)CN_{(hx@$FTxQR zDMHJKXoy_LL7hRlXmsceD(;eTd-V0~slI-}gUqyxq`c~G-N$?2M*7l0Ht@9=o3i)q z7E%0tK#ey0xD8{QCav^Bnr+?7qr=`Dx6fTG+M(qfk)E?glPAn(EadzRKmGd|N9u?I zoKH@p+%NnpNb)n@f@*Fdp#}7-XktW{Z<OM{SOWO;-bS%w31a{gf=PBO;V_Ijh5!KI zg^CvlTn}V4QtlFqykmZ}WlC%E@&?Z3j`){}ojeCaQKD*@`kbndJkQ1G1Xu?M1qXNZ zcp<95loaf<<=gZfY^p8~!OUK&1ZaqQ3Ts#sp0>_?eBR1<Dljq)%?FL}0L}+t6l*6B z(Ero3-=Olp-iGsjM@HLQ@B&$j5r@L&Dm%e70tSLdSWI#twanR|Wq<gM(6Dp(%hxOV zK^8Zu_wKT$7X6r%WH|%;{2){O{kWO9*ti!c`tY1GkRDQ}q^l);$KR%CGxWK1aNeI# z`!xA(LV3$>d~*DXRWEZFyc281)Xj=MZ~6{m)?Hxe3rkmvFw$JM>Q<DewXk*)*UP>E z`NCj5@_yC^+Np1%h_YGODGhuY&1l)9%b$GR1O163-_#^6`CAYk(=1s#9amKg-M<HM z3Y2y6S4L1_VO3raUZ!t$@B?x_U9Lwa$J8%~mOThM&8Td2d73@sOn6rJT6VtoT?jU3 zhej#>K^m<mjL!;QPj)$4C~GZqh$=qnC<6O(>Su4#ly;|M@m*AgaUh{uWyYzz5mYzy z2h?TPMJ$|)qEQs1mB0Bs+g1H;ShwPl2y5SgSWjvqu+@2{^pLhMJ=#O!GMmnW#P9UN zO_dl)U;%r4%2vWJ!#*S$f0l3~a>t-x_~_WA*ZC|iCf(<fNxV;n<n3{=WuCa922i15 zJ&Vjuf(+Y7fs$7jFX72wmVQo<fO?ILKeBC%0iA*m?`xo3nz+|B`Fw`8v86!DLHF^5 z{qPB#)<Mt~V}#WA@817jgEPb`W=j@zV1PV>Ds0T+a1~bX=-+SSzmM(1azNJcopO8j zOV)`Z!$By{Sa7zU3p|e(@YGuJZYc3(#LFVBxKCjc9v`If>)v%V0nq%?IC#?aZ+9}N z4Buv<A&P%SN=qskLByL%ruG9v<9?rQ@J-m0P<uHnjoK%sEXHFd2Ga0Q0@KG(6XZ`2 zZS)!FCvZYXKOQzxJff`&Td`CVo$%oR(y%|mZ^-G6+B2aU6E3VtO-j|zUH5Hb#3vOg zzoDiwN#*=B-+*0>d;yvM;&P&rfc#|1EL#G>ES?OlZ^uELOnz*={41#1t?vz86b9zh zl;v5vJPX;VxpdMn(9ly?IqMLpAT-6_g%iWsF~frxg-PcZC9MpmbSG5+cddWcb(0Z? z3CZ-5u@zqHl+9>ZWhK3w!%LHk;wgjtK?dHr%|*z7?wTTyLK}4#9_5@Z5VLr`of^%5 z@>WcvKuDlE(Kyg4?EVp$f|SyCK8g^I1(5($2xFzeQI4utUv>clrpBCb!&P{@4`hbw zX<6Ky0aQf)wii`ejB_ycyT&N}r}iDb_da*Zhglvh=0x|W30=8|n(mY!cpGJsCmJlj z&N;6?e_w6YB^q1TNaQN!N)NxjErQoYQ9yAZE?zXba@-q&=s*(539GpB2+RXEZUg7q zAUCJ{13oj!^;iJwytlXy0%KPBwOgpzX<kGe;l4zia3*x59mTJP8Fp7jgr(C3X~>!P z*bWM=_?~|7TW9dQ#TZR7=mg4Y2_AKG5FF8tCv#(#Aw+nq_^F=Njb1&($8R-5gly06 zKT14kd?yY`nx4~6*>e|VKzklk)8p?yAMfpCZYd8-`>l+q0e*Gs4dKBvt07?N)ah9| zAtA0cf(|yqazJmuos|E(ZTzpYQO@%xCnVnguoMBr3U3i;>mem<rz8fJzB*`XU}N@h z1~{W)SgVmfga(tQ6^dAt)8G)ltWTPet`XK)MiWaQi_EY!97EA3;|QhaQ7Pwy@8LAQ z7vZi~$5QnU!tcKalzYLZH`k;R)<|+NINo|z7K@U%*wra)vnJa>BVV!WWuKT1rZy0d z-zrMg|LUF|HD;T%lZLz&!TKCQA%m8`#~ou5m6}hgOdJ7ADtzyuWe;3=e)kkZX_PN< zd<u1aOQZETrb~t)gIaT&UAZZWRTO#n9+6%F5??47e5W$7_p3`Lj27_|U!dg+EHw3k z*%qv2v?dNmo3Iv28ihqAT%0571Kx=_kE0&EtFR{55GuH?n^$WcsQ7+4{bn_{Opf5K znbO%hE^&Jyk(${(*;}boS8h$1Q<SzN?iytQ7cN@f4*Xv5PiD0yM4QSOT+_Pr262lB zGVIGy&j*KAWE0<^Auvi)=*>h5ZKj~|)DNqm@V>#|5tzf*dY~jUSr3^C$#d&^&%qq5 z=ZO+K(c%4r=ub(7+`8J6<8ydf@vLQ3F(&J0z{UG!xsv%4UE-_9QR$tOG@Ps}$n`Xh z+azX;(;GH-vRQA-Qtah+84S*~S<f03f2T<(3Hn~$e{<&zVaXsmMN5pq;Z_%KI(4?B zLFm~-oPwXxge~qhBd2d${q@q`UIWADRc~A7Pt6%frpRY&4p>we0hGyj#J7T0nK%Zv zCiJFo-9j;UZQ#SI<G?6~;KAq8qM?o0(U>uh--!#P0o7!TlOg|<1ycCepL}>)oI+_C zF-mze+l*@$9ck(n@OG%Pj?ZH7d?Yb<i5+58F=<#2pF9Xt5)CtWi8g*KQd`X;tjjUu zHaTPkEFOf>eCir;eWc$xlFGS{AM8|ElT{y!Zu_P=R3iU~gpeJA>t19rC#0uf9_#C{ zIUNmZy)d`rr)AczZ%XWn@}Aa)*qf_%qA{5dol82|JMZhO_`o8Ezpr@$R;K%2+qi-C zi;!8si+(~oSlpR!!fLj5(XShQ>aNI-ksamNB2yvt=c+e-k)Ki0{J`u@E}_4EE>hOj z#0zpSCf0Hg`m<$uq7@V9v`ch2#uA>Td@iMNod=EIMOP*lH%u#C@Nfv-)R$HUhq5cZ z(AB>A%GzK8Bn5@6Sgy|*C42|!oa4qf-Fqp)lI9ALk7>BmZMj2}*4i2##&czg|0qO0 z<o;y1lHxs|4jr&U9?UnQTXo8;i+C_FhmFn^QdgRRk#^szJ-wYSYnv(Nib~{MB#fqZ zc3pnIlAxLLr%4-_JV$>E3<oYeGQTCPxNjD<6?zTEU$<IgwWp8l(I>fd(D(9xLFZ0! zpAC(jmSX?Dwr)rqXj3oCf0Wgq?1r6?sTWb(ejrpRb=aj~0j690aP!LxDyacic8v}5 zyh|W!^!4O{T=doN?7s5SN|TfJOd}BCzsRn|eO28<-DU!}!Wc*Ky+(GPtgvdoy3ORp z{UPUQF6?z*PIf_g5!9r?P=FR^UWAYhTPi69YAc0%M`T5QMXw;PejBCOk-nf~b7ooW zXs2K_l$=1c4F(2X&Px*F7rKu>b_Wz07bw=muJex#Wrb`ZXi;^UDn0h(wtQrKsbTZ% zSUVdzy><lVaI(8XO?>zDtq1QqNPf;j9cjXR%_7^;aaMP}lPr~`4DkaXJZ(4#I&;3M zx9I`AzlLp~Ghg_CI<PfrD)bn#V>ZC77_!u#sPp>V;+*bAZiC3I*_7c5o9DO8`mxrp zvf7_N%NkL8mZ&g>Mqfy5n7oPM9TOG4$es&vN5-m`gTnp#pYFYVdhk@E8ceYWf92#* zl9`t|4Q$`7K<c5S<}BHDR`q=jrKVrX3;AAWCF2WPWfu$gG*!iSdv6{;WNZ`|b5K?4 znIt(s^z%o9W$~D+19FW{eFc@_Fz6rDh0S_h%e`<t^L9b<L5VYvF1)-g)Fibzb~2HM zdv%MT`p(B@OdG-a%9kCnt1UYhn^m|9Z9UvGQsm3~z0%s!B5k?zisz46u@}^i3V&ZR zVR=E1YOP1R>eu=9tq$`OMoZPl$KR`vpKS(-700M`9LY8Vk<V?*Gbwkwy(hYtOWM!` zc#2kZ^T13=RbSygpAsL%Rc}x>T*&jrqK0i|08R506v9@wl9Kf(0@|xLt;jM1F^`A= zJ@lXm9)c9P1hdJ%UoEp=8Rj_y{HZ(!K7KC*3H-4WaE`jDL!kNINr5K5xtZDUw`r&= zQ^sw@!MMqdPsuZW(8oZo*)nV87C1+BK7~jpIw1r^V>9Z!dk6azsWr?zGq*zXsg+@^ zoB(YC&?v&Nw50ju;dRUCHDKm;jt0{vLI&=@wm5<IcD@B3UWc_C6b?eZQ=mRhtc!8B zC=lxzrSg?Vn5{BBxjuoVaeayLepFxwrl}%dahKdpe-8A}K+LDLidF_0`T<pHkZ_lh z!xd<mYK;yL#849ViV!qU`=9w{1WU%0um&eFF2HUxBs3wP?D+Jm;e>)T`6-KCD4d|? z(QfH(|IM(iUMmobp`F$nIUdo_?i;p0HbGQDHw3Ssh1->cSQQ|>E*;BC?a}fXOBMOr z`G2J0qHGwr2oYK{1#uw<zU_|b$6~6UPfF~Q0ib!A@o?*t4RnZftB0+8Y-om3`58Z% z;+Om*9sTPU)*RqAP<~&~{i~amV@6u0@sg)|cj+VBCA!;XWvZPh&^!uN3;-eDb~6&c zZiFBLb&xF?)pH5aREXIm_XSWc`==^S0{>73KTjwr*MQMZ`3hiN?ZgtO$!dSVb+yS) z7tIyJmxiJ-W0#IApS`^HB0NkRVIZR<EoK)Rc*TT0M7$n0m>xm22AF>m{X%6mtwBE< zgGTau09lS<JSN+UJGv(Aez^2%K)Ce1OJ%!<95{v<!{0I4GR2Y|l&b|xDhAMny^NUB zvtyb~$IR?~&fvEqpNU;`M>rK}dHQ{*3Bo5?2iI@x>3-NTcG9-!pfO|>-!WKjo(@q1 zjPKYto1w$~+lOGkx!5ZXEWaf^c|eqLhXO{<&yE8b#jvEOyL#l#7^#H^P|!%Ah}6m# zYPhnaeE@_p+25SOge6+A_4+b(8&vCf&#sQ~H}&q4CcU0yxG+bH#MN%UU@E9~&Hw)W z9x)YhU|Qch>Qy6HDB9f+yA|gcPe4Xw$KFSNdJ5vIpMp4zL1tC0$RBBr6!8JEBJ<Q| zccY=6Q1gT7-^UK6E9ab4URb&GPk+!X{VlKvlX7DWflX*|XqfV}l0elt9tjKIn-xh{ zx<8Ikq@o5hLuXnYs$Lh@5GTTN8^vPjj0$|Kuq|+E*`t#yYe>KMpScTz$$S3J0>C&5 z&E(APfjsz*m0Hjz;#mJUdKu<BxFRH9GICdhcg&c5yKw#DE2!xMa&CH##F{ISl##3i z-?dYGYp9L~)ee$M>^68|H#yU9tA4cMN>8pCfWM?%cT^ofclkL3IM!iT_abM$38sr< z5I4m-0hM>g@!3q<z+F>F<VO0Y=G_whYN&cF;|A5^;G*~Ij4j(%qaw|lcJ_M9=8~`E zZ&MC<?F`CkHx6)K)A@EG(jKO~YFB>CEZD2pycczcd)WkgC5L-Y@PJ>}cF>w^O4q)~ z0x3AJl-Qh$?2JmD#4fXkf`qFEZj9r|$&l>2-u$5K{11(>)P12Dc3@q8_Qeq<UOmgs z9r$Xyu=cKHki18KFK%7$<RlDqpiCV}PTDH(P$r7y%CAc>wA75MZRnfDFU*2-0=3W1 zA{n<rSvF6f>qu7lga`jU<(w!OVgFeP$eoE7akqylR;~J)1sW*#l@Wvv!W#}NM{z$} z|FBZ-z+^&h^xL2VgrwO1SXiM#aoi}LtWa<7Tg5B(Q<<owTCwPp1eiH%?XN*f0*w7y zKl?V`PIWXm4jK8W_f4lU0J6K$x}e)mLiWyY0=C1X9$hD`UkO>M|8=|Na8l@i6)P7L z>PAyA>8{K1$(k&37PM^CYcr6yBVg|fnB;T6h<a}I^w`Z&L{e*wH(?WiQ$u@ZSNJX{ zcO*{XM*y)_er3O3$=w=)DTs!NcVUPp)e0C@TI_)S!7+saD+tuE#$xl!(+L8^Ob0LL zB2gT39~KqzxD|crc)^U7LQP-Lb{s_CYlnRA%YHUypg<61J)4*aZnlheU{Nurh;&Mm zo1KPwRMt!E9TA&y=Tk$eYhWcp_r!OHLt3*j6uZ7$YI@k6l8~`@E#1Pe)`Ne1)IPIs zf8KQx;ubcnDc@Q#{E8>C?G0>(MAZwlYa?LgHy?uO9Pvl!T&jIt(M@Yr8BXC5bR|;p zY!Vm>w)>zIAV4>VSd;B_Pu^vCAapYYOS(WxX~!Pjdox*9Tvy{`EfAg#sLN5UWD`}R zu6mPRRz3SO3<F;6>*HMV?Q=gB?7o9^hA0s1l=D-3TOt1OLz^74n_f<Ho$>u&bApI% zokej?{F=9TIUiMz^VgthfMq3ON1|XSgYQvyMJdo~QyF@yM$}2Axsjew(i4>JOh+dF zzp!Q;Knm1Oi?04vFG#&&ehY#R+g14AUvUO2Uu>rdaxj>S-UNyke+-@{adO7NmlDA0 z0vq!IPiY-v&|-3m5Ge^H-qnKPlA6(3;4Jz)D9jCz`Bp4M4CJ!aqz^7{^$gM0U$R=l zt<1>9WJV>Y4;jgP97X5zueK>Zf|s}Cp~M(%=_-hM(ed_SF3*S@7!zip0e%9Cy4fd6 z4NI{*u`ALZWo}Uzcl%uN1DOmEBkoP*e7L(p70&Z4$vF-uj3D?!@D-WN2^reDYGBRl zxQ^GKD4yk8Cp${91a^IrsD{Umv8`S<inDLo5@taI;eIub<QFx)uw?vOb1$G|g-@B) zTk^s1!@$Kjlwu#(&Uw|9unIi3ych-5RnqEOVe{rJai7E5E?HN5Hzg+nzHXP|cL}>u z0YKw!8BPXb{imZv&|l^*>G>i!;UOeit!@yd4Yy>9$g7L02j#(uCvfh(!-MI(T@XDi z8S>3qwq0Qxlg&ijMJ@)NhnrQG#bUO1eNu0vBgsywDSE329zkIxh^X1C6(OBI$wN2y z);^8p=2_H~Pc1%|&l5mr@>|9qeDVGHd5GOQ5+fc>5RRxdXPEbYol>pMfoMf!eQQGU zH3Mpjb8XUORFDCFpBs#ZJylX3lanM5h-yMOp?Sk`34+ifi9QmasR;J?7|D%vQzS%; znw;*z-}1k5y$0{1T$A%jm87}V>x)qDg)Mgt)H!&any;8ns1?Ya=0CBT1uFHrFQj3A ze^j*Z3$;~=%cQ~{Dw?-OBnj7^n}CIr$&1}lStzo&cb7GL1l|cng84PK2%l|$s&>=L z;dFl|^C*fS^jP{m7|N-7sN5pfy&ZCDd96evA}hBHdu71FtjJnPt1xl*SoUk|#R!&m z+YV5d>z(#qpETDSNL#jO`c~Hm8iYFF$f$dKPyT56?|Ars2Xz?RCC{~-zAF6t)D$K~ z#b_L;?g`=z0vn$Z@5zX!mXQMFcG8&aNnm3ykHHI!*(E4Oq%5VqMGfbI;!T>>>mFr0 z!7YaS$$OQkdoAx0jnM|FpeYiF6eMD8$4h)3NXXq{=z<@41E!=#sK{NVu~fS%lk5KH zIBd{>CuEk3xwI!B0i|?-aYvHP;o@I}6XycMg<I4-F8Iu>zIx@GY|1m<V`XJ3@O-;$ zILwcG)!a1LC|jPp1yNoG9I1Gbd=yH_y@r9jdWbwHkN|<ZoCbzxHV`M)<2ZcHZp<fv znXspR9iP>q&<`XGJ$`|-p}nL$Ou$NZL9tn1m&7Qtf&x054~fE*WC(ULx+K2f@022a zf9$dz;QGv5Q;OPIgGSPnQO#q%DPOn*VeO##Bg;3)m|9E$<qtP!VH1(Je>ndDz|Ebz zk;Zcif(2}AL(fzurF|;67R}npPBMt-xJ+M^s;uk_1qh}NQ!2e9WUUoFuak<pLXFRQ z=K=-l@txuybd~N^?h|l_194OGm~777Ok_S0OuSqpQ(i;@26oKLKc9pbebI`PqEZsQ z7#%}MA#hB`x|7`BBSWS*n!yO;(iDtT=H0oz9gLCKtv@gq6JXO}K^S#3nxIu?>S$>` z7065)+uUda;1dnkZ0dj}tNKA>msk~e`+&(0>bj}9v8`dGCjs!Lbz>Y&zH`H+V{q34 z@xI6A@oNg2E$<Np#)GIJLjNzLL+xiZZ^caE@dIAH7o!~Jh1RVSPXgt$BwnV1txb0v zGz@-d?o;Pm^(#^GQ)M}~(*%@vi_6pAW-yz;?KW16fhhm9bjG<cFMvP1<mi^bzeG){ zG|XM{1{@f11`1;gQ$v4#a+J*0=Du7h>0|u1VL&p`>-+$5<o^72G^Wmh-)d+;ES5cK z{&6+s=j>j8)}q7h9z@%RH;)`8NzBBOfUk)$b?&>n;Kraz?-`8pmJW;jbje^HYbNKB zjf)oF*2e`Q3Zj#%B9FM=1KM`!iLZA1rGb%E!Lnr0^hS~~2>m&{Z82rFu)SKh8cX!} zOBJ@p1k{XMR?Z$ix-X49M_rn=IQBYd0<7@2DF*cXincPIc)i2D=Rdls&&3gSxm|is z<Ph=}CocFlyflkwH=j&C6M8Y$5sP8qJ*H2bmOMHEl*DClSXEr0<+|zRq2AYX?D1VB z?REI{gI=$RX@Q&CFX?|*>*mlxNtBmGAEf*h+V;Vh0Ft&_)XI|#_;};F)zl{<ZSrog zNU;Rk&xG8nP~d3r{EiVyfbk~AM|uuMqm1Ki0+D?`Qob}4S1-yel~oMLu6(^Nln{<& z-m$xzB@-cys0<V4`SKtS^TbUcLq2@zJD<#zAN1J;j0{_Wz96XMrzWi6hCZMrcog$| zNoV4^e&DsVp$Y3r-(K{deBa~Fg3p35)Mz6XVKpLs7w38VWtC~Xul@xEhu-zrua;yN z&IgjY;HxpCan+t61Bk#W@o`!HZSFZjb9qFay>x`kIO;o;8<y-{xl=)}Y7AuS>n5CQ zV~cF9mvD$GY^nk^g1Le^f#PxkSe@rJ7zTHdz@~s`Wc4MO1E<a$OG;my;78BSQPmBB zR#@weS)FQds{61JgpKi&<+^*=32Wy>Q}~W9rhffWwW!NeXgQ#2GXaO!?`YZhFt5~g z#GA(*b0mQ!c@WvB@M(qq)5IZZ;ltXQ3(YF=+%zNv*#!5e7&@6@ltUy1ZrN5VMeb=L z;Z0Ik6+)at!;+G8CM*Y~+Cb-T4$Yh3qAJf7S4jG#mZ$xatBC7m7vZ5R-#($QR_CL? zhzRPDRj~Y|+UD8jCFdM#^&&Gcu~q&2n0WT~Tt5_hsfV;lTd^>jyFI_08zb6{SsEgy zcRR=QypE#lA|d(fopYu)e^Q)rX;%JZOSvy(1-In4s?mx&IQ+R`R82d@U1BrgntmY8 znY*PV%W7q)6k^o@L|?;%W7<qRwZ;h*7K1#stkNhs#gXTq^_|nUdN(e#Q+!KVAaA}d zDr3^XoG7U6lnoQV0|pON84r5c+42nVMJDSx8?{pm7?|teq9UbMU3i-%_uDSAd{hWI zq0t*wEx8iirEnw|yB&I&@9Qmt61;-=qx5RV=giBXMq}Z2u{8b?^cnCF-(9W6-Iu6; zr`|3SLugp2;poj@_E=h+FjN@NMBrR<>`;5;1H+*ofw%PHFr@uI@XDhWZ5pQ7L}_@< z$j&^|dabxIgQ99!I&<pD0OPRLR>{{SOsqz=?Zv~L5(i--o83hE`s%`0O{+n6_1rac z{JCqBe_Wh=a;!akAtv<Ju`N5&q4%0xc1wasTOi7F=Nz0UP+c{E>d5k<!^^dTx9qgh zVSe-J=?2!4TtCcs{ja^|MCNxp-gS9#g5tr7?BcsH`UdJ~%S-i*jf`#_@W0<e{=Dp9 z-fOA2XK3G^dP7uh@9~5MOU|BYtJmWBQ%#Pl=gnE=nUV|%Fd3fJI>U9VcK)8?AR5f1 zZ&qn#)dn`hSvuSD;=*@{ZWxPMyF>b|icb|i!{Ns1>#lRm?P6!O1C>7??$xfkh`U<u zdCo@<UzqH>y^wxea!vZaLIShveT>z)ZPr#gSJI9FOH&Ukc6|o)jc-rCzss%*KN7jK z9y#B;x@SA4)Oa9aacOR$8|~cYiS}3P8p!NRwNv{%F(5<*t73m+<dK#ijwsF52XP`M zn_pWd`pn$Zrq6|WK;ch{R*2(1s&)ZaC2mZWm56)Z(Q}{hqiC=2=^Mya|Gno?$QT>w z_OR`6a+vBk@G6?*M?_W&y$iVEkJ#rVzg|S2{kh$d7T2ns&tGitYUpaY?yr=@e}%>a z)@4Bh^wEm5LFvC>@KGi>2sRcxfk86RpSzcW>Tsec%vuM$?$2k9c~y-dXSQ&?D7uAt zm;Cd7ByZE^q91}$^Y<7MwIH}3qiOm@|1Dp`O%Eq8;`;8bp=n@v6s5z5i(Io{e-)l3 zCnS@!j2k9Y3)*AeM(ZGw^)m8jksqtWFOv3O-`Y8{PH;X+VMG7B>r44M7|C&8#YWuv zLrw&HPKI}@D8~`lb;LuqK`&CTWAO6|sTw)dNPeMRYWM=gA%0$&b^mQ5HD5BYqSN-! z=Y0GZ^hZjYO$xUWRPy40QqC<hDtxW-+XkN$?qm{R@;u%bb^mTB``6~+Uq8$d0U!0v z&|KT!Uy*-R_n;pJcw7gFlEGG?%kLJL|M8!nBeNz35@Fv=zV5%*(Z6}=zutfW_&n{j z8w&ORmrv?{`u*v5!OiV@yAbyO`v$ZjW{$Fy<Da<iMIKyWJB{Z9{`{vP$`ZY<_)wPK zJzF2&0|iVg^c8xdzPUoLMSZE3asH<l_0P}i`N7BYxpv!q=^w$Zj|uXRl!2Qr6aapL zbO5At*PM(JT^4l?!iVPS8n%I?>5s<BqGBq>z~~PuP97zYKy3o%VfEfBQ1?9pEO#qF z)Mv+r3a)0^*;gK!*+&;mSwwG@0xa7GN;PN&S#WfKa=F<)Fg<c_zxnKh_c4e(g+h5B zc4Jf-%(fwJeE(zi>F_gAyMnyI6;Pi`wgO)|B_Q1dQcmqetb8`qNqVTw_JOCi4Y+72 z+UXxn?L9;<|MNNh>s?_T2X5#K=a!v*T@Gv30PtJ?ik9X8$GTt9(snP*{))N=vng9Q zXWH68WTd(_Gi|{)U}gSui03}&*qlrO640I+G&l{`tXHJ}dtCM>@BBT-5GlQOTy#5l z>FZ~p?QmKKJm1x7J_nZOvA{aZIt7l@Gf;pkg|d(;G{LA1?5C8#VNm`fv*W|9$!#Dw z9ZW#u!1#_<D{H*xL1?0|zWa!#2@q9yNI<N-rwPz7E(3_HT(NEh0e_dt9CI5EITk1f z+8*~d=og3qIeG>xmZjJUWIFiYd3r(EGU(jh_1OchDa{dCkBVprN52hPSq*2vZ#~te zd*+{^H{dH_JDl$X^y)FUMnIGs>HxB@X#EIS7M?=c-3=fj1bpr1<W-@PEnxx$0E2hw zH)6I;E0T3|3|Y$o%_hAMOcHkigAFA*(t&Cwd%Ce;nzk_p*k$>FLrSOtq_6TwxU2z| z+xO2b=cY7({}6rpw0eqSD@gec-r39;6i^%t!YV|S02CNtMewr|z+NeZWB-fy9Urn0 z1-XZ%|79ck&`7vB3yJf@h?k~+CRlgs?I!>2Q@F<eDod2qKaO-IX?$74%IePi^x5en z9Z(vJM~nmb{wr_KC-2MAqXC;WpsV^OKjd~f!0kh!M2eEWd^>;iTc%?&RTRbx*OrEY z;2M<X1jUKtR9p}sjel7Ugr#&m2HmK|c2DV9X&vdEZ^vNLj8ZBH9&clR^?axhcesJ` ztobI>8R<<|$cqmeKFC@Sg?TJd<Z%rhy#}_M>q}%Jz#(zs=n1Zh@8gF+KbQfsP_Ygk zK#addnE*4u_6;ZG9iFOTHO*YlYyM!gH#C)PT<dk{8o|vZ1#ro^zZI&zX&*iWS8n`> zE7S31nx#tskw*bz#%CZPEfo#CfyS!Hxp9^Bax)?s08BmuqDd}?(tGGUwCgyTT=YE! zIEVMngLOMJNF-^e``HDe#TRD{2PKMqfUwyHW@XVpVRmmDrG#pMyw27DLT5~JqlJmU zEu!B?b`v_EIzb_f;I3ou1q;k+Y$tl^==h=Z4~NpBMRyQUt#)V`fCnQ01M3v`Au@Ir z-aI|3V;1c+pJsI-_}gO}OaHw36^ky%WZ(x9cnoolHyRPz$DjjuKHet{A84?f9#p&^ zZ!Z2`L&<Rfds9_(%HH1*&K}pL+-ME6m>rnb7$u6!T8Z2<6H}_`6ouFfv&PiJJVJI{ zLBhkRt7i?U<BLl7tZku?25KSe`vzlE*7S(;K0t9a7?SCqV>ppu?S@j+0M5#mQqlhI zpuR^0+!-LsG4Y~3lxC&_I=F4XS+UT{*SY|rG&BV{(1%QIP{igI2*DETbVPM@ild%@ zgy(5$W$ik!&;&yPjC9_MFHAs7k`RKVjf|=yf%hRupHW7QsZm&;G%YOOeMp|I?gQ=^ z2xh1&yZY_{?kJGgZrKC*H{@ss#AVp#Ne2s{JNX|`QNl0v0|8v~J$7$3R<~VK^-afI zJt(2Z@ifdih*S~bIH8x4i7KX5<>)EHhGb2y%}$b*awI{lzy`@-n8Z34W)M_{q0=~s z+#;5A_#Q<cMR<vt+x;v-lrM?+PMl)VF+Wbcl)MPUsD}cB$(J#0QHh?6YQ_#1u2z~K zUqP4jdmvrBEo7*O7;>o2@=m60B*ryoIRg(&--3|@8GD)?>FWdTKO(`6zj2Q6rcwF` zL%|pC2LjEG;C}BvhHMNMQ}U!19^H^(`AN7v0#e1%sE>rz62B{0a+t}=&SpyfArn9> zB9v7gvFF2-E~NIT2Pl#TrETT`^(%bm7=ahL)tzB_gajKVF^CAUCP&hVd%GE=e2NmS zV5`Qy8XRJ>)UH~oz{ERPKd-j?CTjD&DuysIa~7=6)M>n2SFMCpS)pMG>i{%!sCQBP zMxz`PnT)Pjy*+6%xQIp;M6f13bFdrWWxaw-^at%DiR#pg$_WMD3W{yC%1Tkm^|y3` zODcSo--W}-cy!+tTHDC=R9iGVH9qfwyIN@1fHN;vHWBBOo08wc-g2yNhh~$w+2Iig zeW6p{jAZro%6@PKz%7WLbQ4oeY?$vCBUUHbNEaGzZ<7g$172uTHn(@4c6&Lr==(5G zcM2?uXpCKn=LGD%VEPm#w;G76GFHmgQLxLltGF{Ho5=GGxSOukQ57XYp@Toa`_T#8 z>qOQU(tnC_h&JrtZ9XP11yd)pd6lCc4zfhvrv{e2^-f=X4RG~_KNBc|{~Nrp<fmfu zrEPNy)~e@o2{Yr%|0|~QZ+pN$H3{^^hb@BOm@$?r)Zc|z4%9**ve((KTofWdExgn* z(-zu6$eNnNB%M#=Zk}=bWk~aCUDXsF4!9l&;dfE?e-g6-fOnKzcUSCtUecYyt(G6@ zc5=9DS6(8n#dz@nV#wM?fH@E*W5W$PEkYh9OQ4_1X%8E-WDhLrx1yKcw;MRkch{%H zp=;yh?$*KXlntT}k&10}G%FK<SFBY>XMq{!DmSHrhkA<M!yO5$RevC~g#3IISOvDs z4kYXWiwlVc2SB!bumq`tYMZciQ!=V=puE{ovzQ^SCNGaV`k>a)4kikV3=Npo3w;yS zwR@D_7V)~|!O7qa#bDdW*)f?tMF&eBL-0`lANJldEXsCm8&*OFP#8c;Is~K<q`Q$4 zQDLM(N<d0FMoM}R0Vx5c6{JO^8M-B;r8}g17`}7vb+3E9-}|n0Ki~WO`TjirW*au( znz^p?Jda~P_Q+IH*DN^r+n{si9{~`KoZ>pUM}OAf0SM(;uxmrIyIFWx*BAhvO7XEv z7l`!0ArgN3-OeNXY?JOpFgw1N#If*cNi{*lb7$66$78Q11SF3N7lI)l#xLg1r1F{i zddUpe9H_vE*$8kVada!S&&t|v+1<?j#+sI<RJ;F6m1*poqlsffcvQe}0Gl07QIJp+ zaQk_Z1kMKCgpdq2reI(X#nKpZG#+UqLob|7RiP^6&y&4l|D_fL0yME^nj+=&ZF3SN z$xZCqZ#szJH|yRuc=mM%oNQwKnHQhG6yy=b86W}Kn_lC(3lXSIO!;-1spDR}1OiD2 z+oMMsYw8Vy#DMaujVU|>mAD9iUN0_hpM|^x-{NNqttxr1XLkA{O!Zg-av$)d+aK93 zimSp@BOZ{k)qWp8DvvI`#xln5uU7mEB>GS!TIsYSWq_BZEWwjDp*5a0!Z=n*hr)0H z=@HR4_2W*>H-hj5c-A|M{;(X)03P?v*J$h?xZXE;cvu9C>C!6)m>*ge>{*IBg0jFr zI=jGrTmHTdnG4pMo?3yr%mHwh_!(axrCyZwsEs0^up~MAo@L*&P09qolVV1BaV})~ zJvC6dr7>s=2gl8qt*2FWb!S;$76{UTDf%=1*t`7g0vU0@==1x<`SGzd(=Tfs+mVYy zFywd*oHBxASya3m-hNI&?!P*<Y6&9=IB1yCOIW5~zW=+|p2?4Ut$>UCA-)MfiqbRh z)e!d^J^Y@#2OpClc7jFRy^%=T!;#5BfE59HvskXew~Dc>kSeM<(wF3&hO&WJfyl>! zII-NSHx=b{8f6~@kpCd$EW_gcP=tS->YdT(gY$-lk+Gp6sUh3GWY>PZe%I~fwY8!m zZ!SH*!_hqH!%qP(wYH3^tqtKD@Al2+KF~2vSy2lm{cIUD(7d_2X)6=CE>KQHrIEj( zGX5J(l0(oB*o*3pCIVP$#FXEOyM8vJ+@+$hLR5vaU+|tibTj&SVAH(^^mHC*!1&Ox zg#t~h<~ECSRQdaV12z1MbJX~Z<jt&O*`UJ5fA+2HZ*bsYCeVABh)rH6g_prl>;W2N z5XNOyw&W;Rr0!0Vn+#<TXdsN55Z@21_iZpqjyr4GaBta;;8*wq1Xv^#!LZs&3%~uC za}SC`umD!-XL`IfF?wI@Z4gKrYD61&1(Wqc2$6%HB_}W*Qwq!tr5_1VJ{s3a#hzD? zY$FbagspFOw3$+*1=1Z;`-3bFJc-O7xX*V)!AR36c#tw_ic-RzpYhfl4Ed^Yi-qA- z^>@*8ldYuA65u))3@TZEOa<|izU$ZHQQ{U2_juEjU)%mG$W(Ue-S9pVCJK4M;QL{B zx^Uo-6sV*BX}5{H0L{EKO7=YtSv|`;d0Aby<?ldEYFHRxBC6<|%_ZOUiPW(o8ZVGQ z(H^3rdqPt1;02Ii<nL@b!Y6UxhyALe41ge+akM*0UIWTgBQAU@6iP5ag5>DBzJ%pW zjn)~NwQtw+_R{dbdGRHceb0ZG9E*fcvB@2$DpF}5y-R0CG;b!s>G7eSqq<@3-ny`2 zRoD{}L#Ej;AZ~nGjx`!W7OQDo<qc9feWVm%zd(~j5Tu&&knaH{Q+5tf7D9l_mG}Pi z^MWtHRB(~WZ3TSaD{fp!j&(MP=i?hZ>vDT^+Z?V7_hZCQBSam6tJu}1G`f{duhd!% zKTWy_eH7icXK3VZ#QcEL>3#IWV#aml#n48g0XnxMjNW83>1i>%eCe)KBHAT}&L^eb zo4%5z|Kj^}>lEI+Dvgy&v3IJ%cVm~%+s$BT`-3d-Z9f!?OnQQ&eu(!A(E0Ml_j`?> zj#e-E>R;)TKDXD_KBI%lS)i%A;^{JILE}`5(nix=z2|rH4A=d-{hX8};U&m|sbfFL zqtC6Qe!@#2W#?HM=^0;_Qma6xFoR(~I_<iR*IAAh<hEDACUhF6RWh}A=7`}{+*Q@Q ze``v>uZamJXWQ}q^5^=v&H^5M{rYCoG&<YWCu7ibMmG8DLF9KN_V_o!A?9c7w_z~j zLPGWg4NV*q@Tpgw@rd)2>j+55s?DKSqz6u+-)0b(VK+#U$;A}$xC%?;XSBmI>i5&O zt2%IXAoD^k%=!xokVbO}!gGMYiV?)#qDU&?j^`G&l)|Xx4D~Hl5Z79w^zSR^zYe=5 zcTJvE(FQ}KDal$Xiy`uDn-~J($MJHlP$yhDtz@_StHgIHp_gy8c3vxx>9rH%M2Cf! z&<2O$7D&3kFNxd=yHsOOTf`!0@zqymfj^^L+Y2D}W%LF5USb-DidcgVd3&`p7H^hb z3<-6`8}xAEd7Jxdf@|SF`EWjpO1v8wf(o#$Nxm3Wl7w<Fi!u>GnxxMLVy+cFB!%zY z^eyEKg@pLx>K3AJbHRfHTyWI~p-j*~M%vRo!Hm<W$i5CeCnZriujZ$N96Ha^Bz0P< zi=bhW0URU+R+fP@g-mbr!U&f<4H4eI0TAdBnFi5wehk)(`co!j-+@TuMK@f_kcxV6 zHX6O!kFu6*RuZ*bx`z*p@DXC}8#&oxUg^~Ya-$dtF_zG@-XcfV{!0IGSs3)jMzX$6 zPP$xD<X2rByZAb0k)nhAxZ?cOaBR1G4$$izG!;@U0egY66x}}hw!Jl#OI#ZamNz1! zDsJd&D5ysMcvluou8OnOOiN)I_Z9YAVKMrHYtoO@ouSuE%L{%0q)3aTnKM(#J>P&( z9`b5H(Q|$GBC8-iB)1WhKY3P~k=SG{Uxqgh1R`hymDi7hh{QW4V>5lKlrLW4wt}Xj zWQU@Q`0!5VbH)4vOK8|by}eBUT*y3nslRF)9ck3cat?5S+Pj886=XaLkP)eR9W1UK z{k%eRH_;8sjDl>u<LJ2C7t-s#iqpddS%v&$^kRRDxdq%|GmRv7`K!nzQ*Kn`eV=%% z_vwQQ3-T;j-x}dZ*wY9$|FB};C9d-#>xQJScaNJ}RK~l%N~d=4rnogc?SJMdJQoz& zROqfmMy5zM{0xp@;|?dJ;NI~V3v>~RHJ{n`6&NrV5|Cw;X8W;zPR9%E3SdG45w7d! zrL&RY?wR;^B{g>L*(qcDQ%DLsg$p$?kQoSj(-Uu;m?7WVJn7Gb>A4_IQKro0HYx$i zWRyx|pOnf!2tlp(0`O@sL=1XjtVq6W)02HyEYGCU<R<SWg$YH%{TdSePRH7%mnAiK z^xW0+Mr#nE`1hqyY{KD-dSoJs<(^}N<@lyq;ksvCA7IyA-?3ebu)=j^Bz_>RS-Wg2 zC*58C+bjM20lW4h{g&T7orgk^Np;&<(n+t_Q#dSF9oXDoD!T_S{y3jNK`i$2!g<cu z@yp+?Yzq%et8RBTTRrAVsk)nT`-jaFzAV^!BwNw`*`T5!wr#>;{L8z$Po{u!DKk7M zD_lMcf0DUBx#Z`DMOP?Hp+|b;c)Ueppl|`0^eZE^>a5K<`L-AF^;0=Ywv#s#owHTq zd@Yfqs&#KY_^Sc5Af?$eZ;W0E*w*aQn<ksUC!_Y3a>Qy@H5d@$drPUokpNek^O$!; zB5m4-+se+Oebo(2v1a9E+T2QCi187I!d#=+R-@coUX1hj|KjHMPD$nPUiD);+DDnV z$H6k9t>lE$0TIYp7?TucLqVH`FD_-YHkt&f+1wo&t%*<(X2g^fhJa;Vdy!KwqGMAL zeP!H$6JC@;?<varZrHKdtJf~mK{(vXOgu%k%;m%_>+dU%VUk8<^k3CUV=#$opp3-e zw@2IuMILorDQ;PVZ?q$3iFa@8-f;~(fo?H9D!16V_M&`2@j^uLuF^cGBDJJ7Mc1|T zUK3f4&^LH<(Xhb?tB-te^_*?1kPanMtKPi93nh`CyFoiCOF5oHnj++0OQT^lnPfP4 zN`W%LabXjfEV_p>51%rY2o)f5jxFIy&znp}cU1#fTjCc(YdP-Gj2@f<Pn1Y^4M#;$ z*fO-3d9aY>q#%yHYuZ2$65QBRX!Xu(Wwh5jp*`zU$MgJ^BNngY8;+hqgqC}!<%n70 zSWYx!<K2SD*q7pqZxrV3OwONb^OZB-BEcnc4Ksq;FDre8g!Bv=3KjSn!{blo{GPpo z5^k`R?@{*N|3pZ$wc0Pw*A`3fuutyBr2$1Up9n^VrZaGyXBo!rJzivA!}93@_DzpT z9HxuK17*_haRu@+-Xr|rRg98w<5^<Qa3pm6y<`5%#rWv?gjN#sBf90c5Bj+Gh-!M3 z4lt=|Yf=!at+1DT8^hlL@692bE{9i1G*mTF^BN#)RTa(0-k@2+3YZzKKl*B;GUI&$ z%$+avm9pO-hW0-m3i4@hdRu`>IITn6<%%9CyximbFSa6lR>r0o9JYu+)<2JDwVmU` zVtC!n*K~GNTVb7pGwez`p&i_O>797DVy`o&fmVg@GLBHQ1QJ~34BS`30cxx?1^Tmj zV0E#cDMXPEYbjob5Sn9gf4fH#ZCXkg5K5;vHMXZ|B(v!W`}RQiew3BUgKAF}z7v+d ze(#ZT<)_YpAL(?~3b)3(@2loL+z~-|vdWQ;+$dPaYoXQu(qr(x2U{WO(c>LG5$(m9 zg!)l(EFHwA&FV+XVZ^TkPt&azw7-EM#7$rn(<U}ne4dS|Ed?Ye6$$exo?s?u^Zj3Z z{=0<V$~+chRg@*JNgznMZ$vV@TQ2bp`S~rED1gihiMYyhkhyVSlTr+PSt`R$ejsFH z+^?4!#ND0&?mNo^2+l*%F@gCI=MH20hxKLs`^he^msIxdj0}}Li>Ue>UchzIJb%mU zIjF<w@)<TcyuSrj0_f~IYJ}C^4J5?(b)(uM_#8Gknk1LH5xMRkeUnWL+s~LYNA8B= z%1ZD`^d$?ne-X0UFr0P<TrN*>J(9S0brxfXMe{mGL=sq|N>O2Toq}N&8&#jz0y2!s z6@O^fSgEAc<UBgV`qxqN*O~IazKBzo4Q%MtqzTdZ1Hmw*Aj@YyX<nbyfTHSvZ%A?c zTUv(DpGfA=R&GT($OCua#!mUs>HRM78Swqa5u9WlfAYCwhHVsDW9krNA)Q)X?a$~k zH`c5}BsXipa6WdG5U!uv{CuX9JwvjK@RBZoX+E9v1t%_iAxwpo^(TplDa<yByr6{# zKdUVB-GKqx@t0&QT-vXg3uk^6R%nMlX_wJ5zK%+hf!7n(`tPUCfUm6;cTbpEG`Mct zcSYhH4d`K3Xc}ZW!0YP{+-Q9?r&WIFv0m{9f~P4L@_8Ob8BIE*U`wZ_Q5nJm)J_!M z18&|zoqE=3ZtoZz>j35Jdt=OkacO*5$9wTxX1CWKtL*6I`7SlR_xb&OdW5O)yi2cs ze%=yc!SK#{-#>fX4Hquykpzoib##t*9x)Se0XXJ9OGEi+-n=VVy*Jqqca%4eE5Fr! zSzW2Ot0;yviMG}DI3I9XS^)JmXH9F&c}{&(ib*VshCL}2+bwSIqV=yu^8%ZG!+aPm z_)2uK|6xJ%i>>o7THZU1Dxn^&q)ifjoO{^sE+*nf>s9|g>OQP-45GRtB3!Yj|0gPy zLZ+XD1E=*9U)L86Hq>`CkFD)tnxE^?;`Z>{_L<pV&=W%wMH)azpdnF{0NeF@F@P_C z<goLxG_##od3=>VlP%cKixAE|Ewd~T6OM@z?GF6uLC17^WbJd+r<<r~7J5xkk&F3s zsvF;Z_^fLn>@hd$UMHEQt*##Apq0;mpjmWNRa>zV5Z@NZ3X^(MMf$r1+IN>Pol)$- zGK6K5$Mp^akp#ib*k2sZ7Ri@u;_sx)28Nx5cz4CXbdRuZ^{!OPA{X~LQ$!0EjoB$s z>@$e@Q>llSEa@KtymgX3^b-_ClD;Cf?S;wgLA2lrkhe#(ROcdY{j6MM5+Ol38}iwv zlN(tixMSGIsV}N+KQ;<oP8T(d@~kLrt4N0bl%5#iB#LyYP_jhS%AJY>m#gj<;qh+V zs2gPQOv1&SqI`Y>Zy2h>+M(MQ?1eH9`$9`Q&UHkjs?EKCK&k4hY~hviQmna;e;t(n z6jT4JhX?O8E|P&Zes4&X=^w6GNg+5CY)uS-fo74@`cr`F>gVe$34g{hQX+lQMEov7 z9D0=*Z2%@+M$kvM3wES~SsE_391EtVJ&2zam8`x5XXT+$@qSJ?!?sty&lHlJIna!# zTQcnWUZBi;Ezo3qzo&?}O}8vMLhQ^aU&YCb|0N{?XFa=Jbbdf_=QuXTw}r>w@2EV3 zN2$emO51-gPD)A{c4GIIz0258526UeOa&~)N%}A}@)qr2kH>UN?^s&Zia8Pd4-k=P zjJ-(T4wx&1AE$oE?=ho}sg>zjpA3~jnZ<CmzYul~>oq<bOsqbvVe8-Tu}m~to<o6j zOp{fm#I*rd6P=k{aiT~ErQe`!-4%^8*a>}=ybvrFA?8yn)!vWE)%3r9z)xbMGnNWL zb2P*gcL}PnF7(M<`cmq_=Lk(WynBDxxpk|=TDx_7#WG-&HSOURkp-fK=VndBku^$0 zay*t!Nsnvz{MOXd8;XGFhMBLnPu9uUYD?tu0ogmF78V8s3Qz+Ze!&dEM?KBB-!Q5f z!>f;x`a2)~)H@bWKZ+{*)pk!UMtFOu{D0j&|M%DYsrX>!rRthE|6|~rq>p6;L6@Yo z&r8TB<sugDiOqlc?8JVVo>;eO`C=E(8LM4!IcB2eKI!}&MJjL!7meFtk|on38nUlA zLRhY3oKLMRo5<|YeS`oXAuy3SS=VcrP@=&WNib|g{w&Y9*z6$5%2IT_ZCsU5$mZX8 zHS$TAR+plvK9Rz(9_tB<B*Vq3%C8uV(-ya9>_MY99r7ImY8DSuKiRN=n@n%io)tbz zJhueW80Kq9G#2RsA0Sj%c}_$$c1D%zyXqT2CwMpfwmf2(moy&ZXZHek6IjV~)aM@T z1Ne>}V+QuEqfO_dW~<v8E^vx27sP<1LpjKXPkoZ}VJrl2l`y102~hStH={;g0<`Bx zYhwugm{N;GeDmE{>h?k~S8NSIFR(8W650;iS~3?D4QAQa%Ny3VkgCVi`$UycYAtR! z6QH4b%!d9*vUI4-Zn*Y!{YN=|lOU(C){nXWu^ZTaPNH8CG6|`O>*B>BDjc(I=|&%) z<{R|wn+5YZEQ3kPS=W|?$}Nkgn1g<ay;jh-ZC*n06U9JlR$h^%#O%x+jr<<*py&?B z8><2%;823dJI#&&NiZ^ua_itMQuD5`3_nS7k78LbU4}j5iOU)cJ)|ykwo9Rh$sEA` zIRN;#<c$yFSMkxG%Lo6Nug!lOr{wv|r3Ag|4_J|0zWw4Y*J!^~0TD`Ty9|1lWKJP= z^_7x!@a?e4l8JZZbWHlq$UZqdx|<|R@nVRymNUxCrdp>^3wq4FR^~}*PZvobgj;9} zj0OBPSXKDx0X<?DkaZ$4w#!ohWMXdbz@&P<AmL^pDl}!{o)c9GzS44Mqhwi$cJ_hQ zM{XY(m1So>e`dp3{gJy@jgG{mSu_@_3=7wV+%zv5*NN6H;`1b1mH27x-qV_E;6RFf z0O<#)Kj)4clYIli7{8mK_Y(c>Ips-`oF!dcP6A9LShz^eohw`hVp~sCrkl49wiOu8 z-t1!nq<uzDzG(c2pYEJtTN?m~MN0Ng9C0VHezyAP;Eb=ox>+ct<;{<4ktQf}ZJH#e zh~}raDdM2<Z?|_P436G1tT_%zHtm1nRh?Vn8~Nc5A{^_h7_U<=hY>#c1(FFT!<=ra z(B5%v*$v_IHOo0z6hn;V+LLUzOCOaQk9;>Cy;v4$*cHtdp9K*sRGbw{VL!lpZg3+G z_(y-&)=->Y<S;IbW0K@`iDzo5(!ZPS-xcvLpHIy|pYeHhL(AYS;6lu`*P5qYw+k7s zUIH6R1m*xT>JfsYQ6HHLc>j2Kuc)UHH``AJnUX5gTG!XY9^LjMk$%YVMz5^M;S_ns zDQ~_mF&+A|xi(7+lm0NZcPBFkql{yut$>Y}HLYN9=XA=wQI+tjPsE)jYbTz2M<pz) z`*WHzsqryIU0wv(aL4aU6xu6gdvEGQ{9d0b(>N?Lt0Nw39p19U{m9{_N=~x+eI<QE zg;iINSwoX(fJa45cjis8@^?1w-Es#>U`r-d%wA%XM9lsqBF={5s#E0+dWsCTwE(y# z%!OOzklON8H{&dxVN%m@?~+LB-~lBL5uwl77hCV_l|#M1f8OZ>RGe#g#ybA8Th+L7 zm23dF{3WG^A&EvdWzVh0`~wR7Tm}G_-iP}CcFiEH{6X8}qEXU1ZW>r`Dxcugc{}lX zOQRy$9EKiI`ReyEX87F{EYw6Xev!d5j7K(!OLlZavKyD|G8mMAY)KuQJB2WiH|kBu zMnMSJ+8-KbxY=;Ya9)1}r257fFxDSxcECzBB^)wq3dBW6;fn``-$w$&BkG<(ZH(pO z)OIZ%W;^4bd&J*u*rXV32CD7rm9lgi_9Pk)C^S0AH1d}kCQF;lKn2m|GjN=C+yH81 z>*gSn&{WtxLbeC%HGG%2T9WM-Rs%dqHvI7Jj%|kverF5*4fiH)2Hf(VMcN)t1IGTO zE1k_P+iXXKY{t&Nt!#OcIPxefG1Y8S;UNy0%jtH%SD))2hKc^OGHdqj1lP#8amdhz z>FNv`5OR&h@r8D`y+C{yNrs8t-nA$F?2D6Twu3@a6K$9ZlYq^0r{rBo27_kdt<A6@ z<M(9@J-6PjSd;bOl)t9ZFubX;LkjRovHm=^GXksRyJG`cO~C?8-E5~r!rH#ef*HW8 z!%5!6`w!-~qUIbZD~!FP^K$5pH{H~>&6k71m;MO7Mo5Er#?aw=@gnn<=0&E=>89q0 z9<n6{%@!Js?9rO5aLuU6bK|8Te4aYvyB{+{gQ|ZN>b(ZT2$2VQ31Yu7$DQQV@Z(`h zHfch(H;3?Gi|JY~<L$)@MxI$)<|5e(Me!6-;Upy)J_hhl@W}?nA~O$IWl~LffiK=Y zW4#9=4^4FRbm}4PQ{P>K@B@&b(Muzi-}ae2u!$??Aht^DX}+K4nEAofT%?#iJQROA z5axfw5i}8X^mm)w`3pWZwS1}D`F6)7o_vC}OSA`qef`snrtGv&JMe|1(BR*+e6y4M zQ?%dOiu}j+N8fp3?()9ifPj}DiF&KeETw+6pKIuEopuEq8ixYqy|ZSQir$hWjn;%O znZFOs{hB8~lXIF&z?j)v;)T3=fBW#I6+UlLzAz?&w$CF8zNo#fIT&BB_SsQ`n{xI( zHO3f|aHFTNK~q0>WwIrxp2949>$c;=cfF)8`~ig~S=w?9orqx~wnnXD+Ou!A-a?kP zSkL(wtmK9^o}9TUA^dakS?m0`&ZK<4XnH@p7_k0(sPQ>~)eG9xJpNpyjqy;~S)}~k zz{Eu;NonJYcJ8y=6v-sU$v-n*MiN4yMvHXw(uyh&Cnz5CwA}Sz)vI!Z%);gROOYd| z)~5)5M2NHEYe+a$yF@lhH467d`HSVqR&EqaRA&wAi6G%!Ug$Hq_qfmJJ1<(oo#MmU zs*b_^I&_*St>ooo)C!CBq-gp8qjf1|LI&s{r6`I>HW{a6D?+OV3qLLeN$t=LkTQ!R z&7b_Z=3ngckx-_G^YN=7n7m6Y!zs=j0rEj`#*T7HFcn!SWT+5v7^vdS+}B7P%m)!y zBMjC!v1mWNR!*wVIfe-u!M0VCzO~fx4FXR;$YxKNp1`ae?5j8COLY1QHO1n}&LMb# zkl+VlFG&Jo+3zqc+Lc?a%@^HmGMSWg25g&ZRfk93Z|X7ga*R!4cjmmjX-nZEPq1yg zcGp+B)OD}OgTi?L!xVebw-77p17=fI<jiNu)Za|fR&qV#xpt_WdVxsCadp28FQNfx z;1irQh(5lE8@bmc0(R8zM{HUDpaJ9D+k|*_bcQ&Ks95k?SCcp!>wZez9?t;1PkL?r z`5vz2mAMo;><zPg=90{GP=`3|C&1VbgqsWfy)R_bwEbUS#j;m?HJo*4hG{}MKFu(7 z54RZ%qZ>n}I%T?kf|F~4{Vi+8!x(G2HHBLXs^45SpCN2YA_Te0%s^K`=gl>*Q|?Oz zB||nAE)dl<thTc)Wp%rxBM*RutjyRz<#Z8wxZaT8X+yS{xyISeU_xhZr1Rhm0*?qH zTOhjk4c2{QQJ|&5J*s$x4=2IOa!3RxYA+AJd(k@8^9_2K%<Ah9HS^mXo~-vQJ1j&M zt?|j9i)_7T;biZE>ulmwbv)O&m>$wEO=P!oG#viD9eE=osIaajul`eera^PHg-D-3 zU7i37X)Z|-{&s;LM;WC_<gArkLZCy1<ZU6)@1HZKaN6=zr@VX&+f<QllYp(Z-DT)! z!ID#LnYo)tj<Vcl@_#(tEg0qm;hL8j%l0%~im57T?3?+Fs49_-QKBi_k9Sr_H&M@# z?kY3J1}Cl^bHZzOSn5KBWW$0V5O+U;^gx|Sd2wPO{HoTpwz~1s{K2>V-^k3i?}y!c zokO^$ES*2UcUrlbT)h^1m}e{LiGXL(o+4_ETXXi3$kQeSdU*RnT#v-jZn5mD)`LFr zEZc8Yl)uM++addCNQ##TgLCf1pn^LHba?w&UfRub9EaJI@%}Uzw^Pda#MO~^A~&X{ zqUdfZUsuZzcHo(Q%tD)mXdL8}@8d*Rmt+!PCox-P`s&2!I)V~<Fe}nm=_E|%@VXh} zCDfm4hd5EO)i;-p5z+aT$3&^0g`of4$IM!7s&e1Ry$1vqXg*uR9J-IwtbPT{ttg+A z_?XP9<%=bspDulM_EfL5?`s!5c3TwKyLO0k8g#(!81r0xAHC0gdL0gtaG+l6S>Y_g z?=Ea`SO~an)FpO^lhNrjeD6T*GeNel=R`K1|F9*##QJy6qUQ$F!cw1um5%>kef0m) zT%+P%;lMASeboM|E2AUhAVayKQcAr;IbJQmO3^JOv6_aI{z6{G>B-Vq5V;cJHj;eM zv+T>t#<O30vnr2=6JIR;ii7VjF7khTVT#1GdUN>Mv;W*aHP}k{A?R7apFKWzeycRH z_c>Ra(*KcP;_p;xEPbD9(1anun3u8$SWr6wr`iMpr3Cg|zBGzu5iS#+o=>RoD;)py z0w}2Zt8)5}A6gbdin>Gj*N<P`f3-lg(wDZO(l!l10sm}nmHBzmC;PyC?z6AP^SrBZ z*3A6ZurMvbNt;Ohz<#pDJF%lU3(l3^R7&@0FKe0QQjZ|%zy98T@j{jmixl<sRi4UU zoVIKDPT7lqfXsmL>e~6%aKR(Ft`oBdpZeZ&w>!9*SVoc?=$V6v*CQZ3vRHb?UY1qB zN7kFk1W<;Mm|7ger{uTpd%pvEjhy4u|L>P#fVq_0`78gr6bK45$^`I}W`=7;z&T+4 z#ggMJo)I*F`u=PT9A$wqL-PIzKgeR(qPT#b@sxEi*KM5rTZY%ad(#N|X116xVo%|3 zi{O9T3I6eBn+5<~1+d>8|MjH)-@W*O3pTsz4;(W8@#*}}{~Plwraj=~rx7&u;``gV z`@j3>|G3cq`2zmu39z|+A_4e4&4BMbs3f`=`nMCr|6{ZMYj^3P!iw>kT0mmVhjZo} zZl9zIT5EX%gYZ0|M(^bR<{#A%3BWYam_ASUR@9Tg2H-L%ipiVL7`(D!`G2?A{#ph6 zzi`q|TG(Ho?yqRu@;}8#`vcH4qyc?ctb5C}?jQ4$zh8I%?x(q_jadMs+u5|1@wp!~ zaDPW6hv{ece|KS1V6bHh_WI1fXVm=lnf|vI{H~bEf$QLXroR`E{aY0acr&RL!_;XF zFV6orLa+b)4E*b1pana5@B4~}s()?e|5x9H6;KYLt(@n%*8h9=STGcn5Q6MqZa)0m z&gnnM>YxEI%*GCTe-css-+FKxdziq)wMUIB<k5fYWC7E=|GEADbNm1QUHu{9mw(iL z2R{_%!nJ+PJpp3>BdHP8f3)<+RqY||lFI_o7e9jjTA@QKv#B$v+y-ATw@a^=UF`)w z$-(hI8_IaiaCy>h_I>FcAx6@+=2t$4_fxN&DS=$&zgnIFoEU6F-j?b6ip0#RR@DxY zuo+k-llvdn%!B~aDYxW)a{qN;Y6trxYXv9=r0?bmv|-Bf5RCk43JgK#N@M)&^)Z<O zfbzwFnPCx0!h!4zlR;PEaq$Y92m)Tc+^+dop{l_UAm+Lpj5!nLCTGw`2e|T%K*+;! zdk1_I%<p~oI_JQEQri<;6wG_Z{zUHZr@g9WtImJ5+CLBk^x?u~&d2+aw-XIXOPKW* z_48ps85rrmZgdWg4jRm$Z2EXJ6f-}Vb8z%A&^HgiU6v?ufdWig5kM6)Sv&oXQHN31 ztt!=RpAwsZ&w~UpAZv-GNh&889OU%4tco!naOQsP8AorOWByWO;2dVyyE9MOAS$^c z){p;3Yz$zfllWh3n1q6GVAl6eNPIK!wej4*w)LKJZVv%t_+KG`kPGyA!=;2TAYu|= z+)hM6&J41^`0#W63JHqNxrJm-ui@-*6#&PO0DUJ-zeKGZ|H|U~$3t<+y3@fD6O76J zL!I`+k0N8dhqI8F5l%og+0|n}*od4C0=Yxx7+VnUnL|08&(OyEe1Q!ZIQH?2Q7Q0e zbTwuHwVnvLWIKuOb+9y_PaoHJIX0ZkM>g9T@2Bh><jK_S2^!6exluhbaZ8ima}>va zX(XL1$m{*>Z#VD8VX{@jozO$kVEaq(5jRTbAe@R$z=|dwJ_CsM%|MxSPbe2e&#Gcn z*(iGMfnDN&TSNsfF`2cVU}CvC)4n_NQ_qABVCp|!d6FEz7O7==4^(#{#mwm#Z=#b< zZGTb<*t1vwcym=fSit4;44BD?CZwE|qlNbS?M9kh$4t{cHW(RWqFtzscO&#X$ELw2 zJTpP;YpR?h$zqo=<Bpx9Zw++^KlKkWIXB2|6ST|9enp;CFYcY}Q((KW#N3D>8u+#2 zTml}hllm(R_&o-=<jrtYJN!Di_PcsR8O+(-$j$Uh)*JYVxiFnxUd&vESW9id{t$d& z=40m&(`54QFPJ!*X5I9?n~srP6QAqx4wZ23;-nwfu6WUB7BjMAG4p%jVB{Q57_;zI zM*#IEV1-e=zwrb^d5A=FN)7L7E<l3T3lL;#)0#8^&has}kx|Cnf7_z)^Wcb6qL?I4 zKy9}@VjecYWpdh80yK(8!O!#q4ZM~TLX|1hognm1`Z*XQ7;h|DZaSv73MIn4m_Qla zV7oA`66IsC|FnG>V_NR60Z$b&rr8LL+p+tZD0*J=(IhgUcS6m6PkrYNYq?K9UqkG_ z6XeAwaf#rFwQv)2q1^EI;_{aPY+EFTFea0743sB)ewUckm$jW}M_-mgAh4)Ahh{qs zj{%=tD(TZsZKAM;RTu^7b&RqR2QKyeAH8QQPQGr#aosj9cZ2EU1QuG7j~IJ4KVm1G zjfRWKh7bTaPHq?n@9=qbs-OKHpd_JEnw<eR<X80!$3}M+Y5=3?Utnsy#@YsrQW(6J zuj5z^w2fHvRs8_gAF?`iqcwZrcaL-F@LYq5AF(H(J747VcZPMZATJd@xHg$c>q8Et z_hMs$f&aeDrEbnP!$~6^$_s%=yB~U6yu}#<a2l{Ka(n@7@<Kj{KwAkI0f%0q`Y*3z zo-pkB2G&QLHM<NZ%l#SK?UUxQYk<D4asq@1>lE)rr#+^A!_g~n<N`P#21glBEaXT^ ztzs2!hP`nH=DIFsotO%_ezN3x@CPUpqYCXx8V=lx`RtDxw;BJ3vZ)yb*Ejv(UWQOK z*e;|uflb|Xy3;U=3SHNqFv=B+IAGar`xF-*2fen0Lz46ei<2QP<t{<upKJX(sp*T? zWIkXl@;x9rDad1^s|ue(s!dZL4Juh~4V*{Tyc(ZARsC71$_fO8Jl#27k+~d?k!T?x zrFer;J%q|!tZDlna3h5f3cl;Q8BbN&@X;kv&V6DlRbO*(2`LVK#UzA})-K<h!yF!v z^*$ire%LgFnVpsZg;JFzk>ahB)88Hq624%c08ZOwYGzcq>&#E6ORH5+AO^9`^Gunt z+*g=oJ0)6T9KE^?u-eh)Yy8_~fie_~K#hF119tn-p%oA)R6q!WUatoS(Q#Jne*eZF z=xL8K79<}d11_fN2LapZAx{)XFhm&HN7{84;1sF3Nqi`{MeZ-4rs>mqG2A-*-K#sm zv*p>9L*f4U{NqHJ74>Bgyn+U!Fzrv_oBN<ilV~@TPR2G52TIz5!1jRyOlmrOMgOed z@3$)^4|pdl_S={_p$tK}hwCzSD)H>z7e~Kt>Ve8;OF*sgkdp-Lgvs4L44HX)8okIa zgKvN9gSG-q*E06R2+*622Q}&RJNhorG@D2Aj1W?^L(1fsa(HC80c2waXv@?SXf#;+ z9tCk=20P>JzdL8i=L7R><uV?qIr^mS$B6=a;FjMCwqMi@;js_fw@g5qr`8JoIVL{g zv^-3{!3Gc&cTs8ZRUjQFstww4ow`Ruvg!j}!SE#f>C|l&$HAGt$gqu)ki<+}V+biy zO9(E4*(ICKeZUoZog~6f6Oo=3H#)%CJim?1Xrb)>u;?c2_(o(lDB&B(GvhYB`ZCFm zlo*E#bE|(DtiJ*k(pJC?CNS3GIvdO;GiyBKuq^{;6EUH3mSn8t=I8h9mlLR*^g3V~ zCCQ^oyoc+y1t79jH*rgx<%2Jgv<ujS{2Te@`8BV_Ca~8X&*tqPA?3L*&T9>TJRJL7 z%|4B1*)d>XNzS-Yr3~whd+t!9qt^0W^X>9QY_UIyfT6}rZE8g|8$*5W%y!+ev17Ao zz-{lsWec&lD5YQOlUfq`!pgZCqg%SrC+oJ;p;^<pM$DS|>>V4Jy`+w(6^V{ZKVWU( zyAVMf<!Sm%=N7G%`Lar%as6|{<~PQAFWu59jG-mf!lkCa@zB-_UNhff5gU^_{@$-? zVsMexbwFh;`Bd&l^A~(mr3|vFGFJ;v?_nL4==a}jF81*EUkx>ZbNl#E{xFlWj-z(V z!I2PCkob%yd6-W>c(F{9)Ftk^JdiBKBn>Qbe>v$0xApuKywq*|)K@64cKlLp7HrBX z#Wc5N1p4k3#mOWWoC7P^bYt=(K-PBxQZ+oS8jTlVX1doavsQzSXv`+j&&P#hSTh%* zriCn}tEZq)kopl|`4M}Lfnq~TVyi;FRDl##TGAhg6DgPX-sOJAhpXN9AK~2ez13qD z*Z|xC1}Nvn_9)C~BQ^D*E%J<nTtiDGQ|&sj8R&z&w4WftU6<<Sd|M_{WQ`^E0kPkz zLVeW<C~m|h!O8G@pB*2qk6H|~;?$;a6`iNvl_j-ce$tp?9(yIHU%?L}{R)7|z7i%J zXv0)!PV?dHuR$3%ZUH<Sd_sX=q6FjFM?X$iTH>DU8=15?9K&B;Mv<gG*xpME*Hbiu zH8q0*Z<)@3qQzFhmZc2vjt(jUPA);c<(V2WW@}ia>7$i|VV+f+ruA3oY<rK^Ab~u7 zBhIHn4TGn?$3>Q7{_%@wN;&zF0gogR$Mi@ts63;VEO$`JwRd4XL}H6j$BpuSw^QnA z`@6C`?b)o%H(I>IU{JHSG7uTEcucL7cbJoCyl$pBCwqdi6!4yKj`o$i#r%%O$~g&* zWs4Y#_iggAZT0}{j>cDbp;XS`0RByBPF>$jAh(F2H5~6Sn5|SjM=Bc!)6FXm1{|Ay zd5gaCBz+%A%tjT)-a}Gax0g_S;6F^N&OImpM3{upmnB123o=th`y`EIaWKySaJ{6Y zW-m=H4^8Na6(8%r#CSeR+`w{X<$?ZeqBdhf-af0yzU^mB^_Cq%DF0|MgrzYO$5?a0 z84!6xFg&JxXdta(r$$owz-yEWn(+$>BDOM2bZvn=oOp6E9Oql4OFHWLeqvQUIMWZ+ zuI}ANk%&J`d>E5$;YIS=7<guYif`MBojm^=^l`IKlFv};^kVzvp!*w{{JaigFO{<g z#Vh9<YxTKafh#ox*#7sv6nhGbwZNj>Y_h^c7Mg^PK4@vCe%rH%QTuH7&~O5sv-Lq+ zjt-5H;A|LCJ=o4I6$o^1`x>RQkMK!7xU&;_h60?i!cmw$ntfZa=$SxxWoTu*ki4Ql zurcs{nse+ij-IuiJgU_+8nQf9^*#6p&BN4+)YQ;zE`;(ZTywQRkgo=)hL4pZZa^zi zVeQJK!cNcHcgJTAze`}LF!)u(Sct-yxFXhm-&oiUuOG#f46|Z>#ekXPFzcO2Nfk-^ z@`s%CCDK~!i>c&TNa`PZK((oWk-s4rrb;8s?eFQ*xvl%3Z>`vcv;=q&w$a&tpmD!H zq7l7a;w0$NUV9bpT%iz!KhB+AByij+`lZ9|@n}V_UKBgYTG@9$wwj^^fdseZY-btZ z&O{JBwAie6-tu}&?dAKf_A_mNY-zJ!piuWC%DG=97DB=z*(u=BeRjq5-s7p4Bgs8( zS=x<^IEZ?_B}w=#ii_v#dyA`FiEDI&Qi5xIb|MFPZ!M&w?*$ZENK-xO*|q$I;oaEb zjoZbclTqG10_`W&gon%<u?y=SzF@f!q11^Mi0mKcPO*A`-tlaC_rM6QWI71p9uAb@ z#%JWWn0tlGM=@eU1v6C6Zl5P6EPZs#3(Ot|oE|cjacId|n`&T(o&;PAYSpCR55-4A zAN@GB{LnEkLYNBnqBySj(vmk{-^UZHkIs<H7y-&+Jx5dy?zKw{5t2`}oFBGmb3y_w z`C#B~&x%xXzkIM;Ka0z^x(`Z|5hD*H>vk;3XqTrQ)=eoZpxC@?t!Zr^Po7jyx%!6> z6?ZmHlD#=|MrEXy6rCZr?QV>m&$!~vt?O<g=5iDK?&i#raxGdu%0_-5iM0m0f-&X* zC6r|hqubp$R!ANdifJ$xtwkh9*gmvRq$s^Pr4>~4QaceoS+NovREfYPr`^ro%H>h1 z&^ACo33joAR^zn9J3YQxDm~4<in3|8<r@V&CCd0x#vrFaxx4+lbkndW=s_ZM&^?Ld z9R>mBEsj7=+O;Oe;1k9c76(V*qeuDi3$RJ|lLuUd1BpS!tA250TB1!00YEJvP{r0u zZOB~JeE)6~w3Gi;8;LTGIHVVvGzUFns?XwkM+@i!Y$HHiu}wIKcbe41kx3l<swLDn zCM;U?HlAZ46?2hdQs9G~UPu4(ygM2A*l`sQagw|@9(#mVoyC=KYQ_ExnHg$Ea|OwS zVD}d6kDM23*YfqhZ*-BU3<kc;V^B|d>wZwDUlqVU$LKpunaxL0k<V9>p5URm5Wo?I zYRsjeaD}=*)Gn37A$dIErZN-j&v=M4vYeFPbu0olm75urOOmHU%Y5?&!A<cpT^tlc zs~gOaoN3LqU2suD?D!oFN{BPchPPS$8d3>qHmVJlmk-%IiQOn@qVffy{mXQ7O;1fn z&a98pbG@)+s{h<pDDX^LN*5om<IKNr3p&v>Y97O$<9C2nN~L92FK?IH9?QsI<rZR8 z%%y8i;pB!wbzhKR4<ZK87E0u1Pk|Sr(3b8j@lu?#&{Cjq5E_D%S=U<U@*JWcV2~U0 z2l1%~#xs`ZLrQ;^2?tl!g8nGH8>3idWl~DrNvHEPne1shGYXMop}oQt;Rkk9c;<4c zA-$XWw#tD?R|BL$W~*;)^OTI=Me_W^dbPQw7QC~|9$fx!!A!x<Vtbr4Hc1SoFBoO= zhL`Jflj#?tRA{aZopPHKEZ0&s3;xddgb?7n@NQEOZF}9b&Cg3MEF!GCAi+Hqb(kcg zo_C#JOW{PeriJYxtwja6%^N0^Zkm**5nqkl3@mB5%FWUj`;FQyI5&FK=I_^AHOtu1 zbPB|Dq43N{>@UN`;LCdK1EmyAhJ0=mh#O7Ax)m$KO*W*TMY}}&Iu?_-o}t}`B`vDq z;u{*s=y!pK*O$*oIJUuQjqN&B_?X|MuNub=2lV~{G|u;(lh)v+o+^Io(y#GTQ^c6q zqM5=N-0rwu_S|R=_-?r;Q62rP#4Ojzbedv|z>Z)zvL*Vk##xm6BO6y`;r8x}5x$3Y zvVKjzwof;xRHzp7AQfz;H)izHaQUBR4V=(bJ|O=R_iNRQCSIw$n$&^4t8xE{XjXDT zbZ#L1Ni^Ze8)f8+gz(E3k?{k!25bm_pntg^D3N6=Ni2^xOa^OI5RAyITrL=~twugE zJGgij8Gt4-==oifeqkOtF+hRKby*(4aqc;{f-#dy(Pw(9w7vaJDbXfv4(T(bWY7^^ zDVkbOf&SWwbsWRLk`@j{i5QqhRbHXjd=%SodxBN3;;K?bYn}~VLcolh90nM(;<_rq zEci6^Zptc4iYe1XOW|m8v*!=vaiqUc!GnRqamCb@^_n!{LHArw37e6oOqj;Tc^aP; zb?3&5)c15JJVyK*MX}X>??GvkPMo-fvnM>>a&6$6+5p8<?+Y9<9%ULy<y6SFPtUc+ z*mF%B5(m>?$22AyKW=L3Q#iaLcZic^tu>M;KU!L|HLtM=O0$VO@GCA+t5P*-asTd> zvNTk)z1))+<F{$y-=InHtmqxQLe5f%#7u~*wRDr3OxD{!hd9v#b&cJi#pQ^<UmSS> zERqz<ohURp$a@K3M=R4S@QYFSp;PLs+bOTIJkp3y)SeE+ENqLW;j6J|>>)f20W-{k zI0*mF1>K^=UXiBn0d6bXv)bbOX=ccjt54RJg?Cl`B+ok8cB0taHKvcygWG}yh=E|K z0pT|XMf)EMBx4UN)WrIwXAT5UW6@<>zA^m05@cV!z4>`LXo40q<|Gb@{T4s>QH)BO zWIL<>Tq!&L+DUdYq(oIVH|Lsm7UA89&_GnKait_oc6f4c=Wl32Xf#(>7UEFbz8Ue= zxg7S7i*@oIq8-}3pS@R>?vWUr<W_w*0y8?eqtUUBp5)!MN!?>U)EyaLG!ojiv>msZ zMDG+8P44Hq^@?_>yvvdP$HYiO`s&2JWgiFUyA#NVsHqj{l`V?_-%k#!doxtq0&N0z zm(nq*3}jmVh1OOOYR3uYjSjISwMe5bk%OAe7N&j)wp%-=G|Te2$j8aLpJ@<lsxi(j zSubkYm;40-=e$1k>bpLie|tkEt<>u1d&ts0uqE4GyH680!U>aEl(_7fRkM9mlW$ku zp@)&P_a`P^d-)pm!%Z?btMC2IVW7c8lWj3x+Oy=ZSTFAk-9s;rUS+$D3T8Q^)b%tu z{H%9cU7t3x=#8_ilTuZ^A9d=XVVTxROL2xf`EqWpy%vE_wJ*2llf<rKVw&p1vev*a zHj)jZ8<%b7?N%CZy`fH7kIcls@Rf=|y=}Wu$n~(j?@{7eiRQj{f@j`6+6jr}O=^pA zE3TEEdt}K(g{_Zw^^U_DACWeacInfFm{sGz$HPij6+#*tDxi*>PA0P5(}~h6xbR20 z+*(PTQ<QgMh06R%6dJGb(Hi)hggY8U&*%u3Dp>?mI%knxfgyLqN33q-?8#6(R~DOW zosDLg`{-;+lB87!v$^AUvnk`#ygGaZul&|3`7D1^1}vHLraEiP+AC(}k~H(Rw`dHO z)L6(aYn|raRyg<_GR=J$^~`)EEfa=v*?lzL`_h>D$~Z51#+AMqJ<Er#oZxbuemeA* z_wOaQdbPy4E0!JO?=`G63_W3471?;2gC&yAWO(2K6-v&@t`+&xzyR3Z^h7PGmI&d4 z@BMy7-&z+)QM)fD>DD804jdzBnRU;uhiUBfxoh~)SJHW$W}MXvI<fOsE|hG0p9Mm! z0dJR6Q$aCl(e6x4cgd3-seT6Au_n8AVag`gwv^N%>!c3jasBjOkmLc|haPDI5qh;9 zYl<d<)|gJmNx#*Lr)TxB(Z}f>XRvSYtuq|Xs9)IU3UFnnA6cT`&|A^5rX+kVGq_eX znijV4RO69|HZ-89`BjD++s))L3s;K6yN9mH3Lm;o5Jzt-I&0Jl?e@%Q59vyI<gwVk zhKiNTQh(BgE-x8T`bDswSnTV;XhKTJuUaMB4WXm5q#U1)MrHZN3k<paG5iSVWNRFY z^%tk<RS`Q&4m(*(?F^Tt!?KNwgbD2nB*Q+$^aw^zf<<u4gQ|K5ZWgXW$xSihZx0@P zN?P__Vqr=_c&m(X&s<ODlkKNJz4~%7=UtZ;62^f8CsdbY<B1_lPd4sLcC^yvV&+pc zjMrOM{pT}{r@lNT5FDTtgw~iY^=d0LJ%7E1x;BKW6Fl`v35EaKFs9rRQlrczZw;-L zqi34wc_u<0D5Kc$>Bh5iAtLO@YqwJ4mK03~@ikgv>uDV=BdeddU!zmO8<&qx{X~a4 z+}7ha>DnzmU1-waUumE8J1j79bInK+Xf^x&&LWDR%P~4QwdtZp`w}JNlU<B|j>1F8 zO8}JrVyp_|71pa@kh9*9{G;eV)g*nTsvKj$)5t37+<dd(1}$FSgKw>OL^@NX1~)R8 zxX~@8s=0f7=+aqE|K_XvbxH26IQHo*G08tZSdYB7XpEq3mvQ!`+7y+M-WUWI%O%qF zaueey$N%y92sNIk<;CzHG}|Oi9MKme+`Ff-!L)Lsn_>9n_8aX2P6u2njYO`MSAMIg zyA1QF3|rH+Yo&1bt?qKs9&6FarQYKm&6Vm84PUq};6+T?QxoG->Do2<_@oe!))gGt zqjwS)o;$Roe)w#l!>GMAB3u=}@IVrz5##P>9BjEe=jx8Ac4B}+L@@NKOH;keD?>Z^ zUQw|aOq^eRh)kfp;3SJW8R!%)**uT-5uLx8OH1<Bk5?+=!tTi+D$Il?$y<i+oW|;G zO~%DgB{|Dcb$U~rr)+!Sf>xoEq_A>ldFhouDciJI<sh3ZDoF$JgEn-b!%E{|A6<r~ z-d>`g{79h@MGahyk^(+dgsZGCj9;0G*`VE#bPe#Ay0Gnv(7b=bXS5XFV}}|W6kn1& zw;$@SoNL{%K?u)}y)o-+`JS%#1Y~@eeLM6Q)QM#<X{!1dQJ$7+T%7t7m*LwZFE+S# zs$_tPQ7{ujuJ|GOn(X(5B*`|>X4>}2)com<o9kZ-Q{$`IXmYDFFu<maclyG#nDn=v zffr7wPM~QT^f1x$BS2&}Ij%<u)%S(A3X|ZJ6B$h8+5EAniYN0_cj;74RsA>q;q%+r z!`vtuRZ4y#wH(^r=1nWr=?74v3<kS|nA;1^6VB!7bT<3Ff$$Q|^(Knf%|Kg2u{xBE z_CSwsdZf=)=`CZemb(VisN{_=hndna1*Y91s|4PI_1`Vpf_re;+XvoYhK^?w=iQQg z7VHMxyLM3~J@U~EI`3aRCnIj_azYAFB2h9IX2>=j_Y!^3&t2pTma}CT!%h-UozpwT zm$6lYl9yMzlLfBI?DbNF2ZgKq8LHA!M@GA7?kVmGO5`chm-QC-*D`xW`nFCrfzift ztSgC8b~|eei*xet2HHr~j45H;vok_hi>ROu;-0G%KNS|~+Da?Ux>jKN>dYofbQc!u zVLJO#rz`9JB3blv02SY5p--kUkM1rM_mT#D$=)EIG0L{AO)0mw6ife}#f_-uO+~?& z!0_$B@Ib#8Ls|kmcKlWdJ7DjO>CA_3pUBmivum9^b&ODvE?nH!ah^?PTMF{B8&Sr` zbE9#9I*?jCkbt!n3tn2}r3GUE*P!Jshs530%sy7$LRe}EcM?@w48-z9tFQ^4L;wdj z7>r==&dMh`IL{G2HMD=)cZcl2<oCA)rLC7Z+t?&<iO0-8GEAkDyw05^_NY|KQw}Rl zQ$N*dn<MK?^RRw?-iBEJ@@n&)N-66(*FBavjTPhFn>}60m`NpMH^RihuE@e}2@{VA zIi`O2(amYr1|NwiL%jTeR{c$0>=|<GI(S@!&h_%_`W`M*XS~3%kE$lx;IwK)#+33J zVB0;MSy~tvAx8Aq0j$I?I&_z?{b<l6Z$?uFBg`UnUFoCSh^>#3Nk=WR`$$=5+VvaI zGTab(sRZJM6ik09XyLFWH&zg$S9hF*g>P65oK8N*fm?O`%#fOWh3#FqwprQ{loYK@ z8H*F00aIB|GeSUOx`IQ3YPm>J0{Lc)78F>1rAQ6$Guc4vZXEbato-*>kM5TAN?c=y zP~g|VK6YMiS`Utr=#+#B+BbR3;<^X)RndK<fleeR)SEszx%R?hpr;3Yo(c13;{K&^ zGS_&eJN{s;>{2rtdSefS>P#IQpd*uS5Cc7Bfyal>yur&CKRhrelRgzbBSNJm@Xhn2 ztQ$h=6<1>qfiJxD=99}__fIF!M9B_eiD~cebr+0hcxSZpoY+mKA7h=x5Nk-^RplU+ zTH0Q!ftBv#uL7?~v80@aOat%H9`Sf>|G{E8$-$h33#+T6l-#dR)o1Wx$3=1BwG49C zwxlm!Z)U%S+3n+U>=6Z()w0kZL@S50dm-=z&$JJg_JW>J6z;45Z?5i!%wxYPU|w;* z8#i6Uvph^W*@7h6pXNfHqJpX<{pFzAH2W5AVKXrVoutap##D!>Z2$m1&KV3gDop<= zrd<)6Y@^vQ1!{h!Kai#f)YX2Dzg*J&D%Y&Lun1GRhf_j+=T6_0*7IO4`jV9Ikj_Zz z(EI?0c`1Vv%d(9$im%fyiz2n>X+VtjCM2}}EQ()4-blA4v+o`oH4J6GInm<wGfy?J z!OTr5L0W0($eMP`YpB|ab}373Vx9WWgP&1$vaOAXVkB9C*TvTVy(Sw(V6TsR^-S5d zjVbKLstogpAmOfbZrPBLFYSX$*%)|KLlR9rFg@^FkU~ne0SGIpW*K&d%U!~ptA@BC z#T{76*fu4xz+BEP%`f9Xkz{1kRx9ATaq>qTgM*<X88OwsB@4Yhzr}8xaH8f~As+t= zg$kr-g3=GOg>wKrPg4HSrG-hD?%&*>7VIrWo4wnYiXO}F7ftw%yS%~&Xulr^Y*X0Z z=Gkh6M_+Kq$1!wfaDOgillRXozVBUPTh#MaGe#|31%}F97iY#RN7M1v9XzDGQt}&V zUP(v2W+z?96|2Xg?xj-*J0K1-&evNV6-;O6*+;l2ow7%_FXhKTecvR)@Ur^M`oeDH z+n;2{pb;LmS%bbd1Qwv=@wPHMOTF&(29JYpIC+>jEVAnLhj6h<vm!O4Az>4Nci+fv zV(pjqkd%!l92IqxR@%P19_hbl=g@^`iQQn!C(wbEltA$p2J(lAJ)MwU7h4x>VS$ZW zO747fNDKdgJC_afIjBrK$|xykN)_Fs`$&>`Q7c>3T`Ag~AK9<jB}RjXkUG+*lzM3L z(DANbG-ObVeMdaZpZajUip~{Lky`O3egI@T3^xlGUg}fig3iGUo>J0tKCmd^08Kp? zs4~qHIqVYhO8>60>=z-NmhJJib8^uuc=_NfY_xG!ex&sOA?&T=qVBr3Z)p%ILAt>K zlm<t707)rDQ4ndQyOC~?2I+1@qy?l)x<OLu?igyQch7lV=XKrB{XWlq|LNx=6TjJe z?X}iE*7qRwKV+lcCGi+}v~8yWD{@ypKB)RxygDr(pH6VJPYF3Ue>I=S?X-wx30>@r zLRk$xO>s&SW4x&x32}_K#k~n8UdDhbMK_bDEDpnmomYh?L4uZzqn<_awX&N)bae8O zIIOM(-6>$P%y&h$`N7S3WN50Ub$u(ss$AKl3SW&s)P00f9F~)svsavbaQx@nLY;<L z%KHsBPLJ~5(E-PIt4W*}JSykL`k{dDPj*^z?2|((c*M0YAlW1IbHpi8%KXmV+i6MH zs))AX9Mt0*r|YzwW4XtbHZM26@9x3pW99d=Q;-0Pr%C2CQ$86=YWqX8xx+2i7r3C- z-~TSda~s=)tRh>AAuZ*PjReh@(NY!;s=J)@BN`H@xB~`lJzR~^WJ)8E`kZyIEf2c0 z=qAhAV{P%<!&c0y5lq~RzP$O(XTxHnbc^<JUWr$GGf7d8>`2T;qGP9>r*j*FY6>|9 zK}GfSN$agQ&17hjdqlnBASC2EQET=kndK3a*50MLuvw1M-M34L>a(5xVzBczw}HC0 zmXjTf$_>KJS7Gf*ErXX<)qGD!WtR${kEVI%D>X@_n1mT=wU4!-do5%8UYdrg&D~Nv zQWJaVrlf{f`{Z!3gCX^kLq)0Cb>|VX6y5M@+gvU$hd7ps{jZvXl|#^L3*4OaImnU4 zmh`5*W8_R(j}bwrl43kU<MbJsD=O&QWU*T~Zaq#(jew$1ni9wgb~=t9hY=i?^wk9- zW+6o%Z)JY1UzG7*Tg9f0bf78GIR}P;djPgVmPHHS=Fzg(o3HpSy*fwIpMEp%d@1%k zYYXe|U=+e4PUl}8|6`TWIEBVN^+UXm{>W6YaiUI*^l7&U^jdK3`@oV6zd2L%VK7H_ zI5pPTB=3kKzd8K~JN(=w@H7Sb*<jRyud!wolDmzY&*3kvX>tOrIAyBIDMLGRs>LY> z9w}Af*?Ds5Jt5N0(6L-Xk*!2s0=*UG5mJL3juu%kp)|1I-PKjx{5JWq56v<CW=2TD zRd8)n%U~2&H4!8^I>01bnt;dSg{HuX!2)?bzP-{hNR$THY)PJMKh3@H#lU6U7GD_y zw?9vlbr~x>dH;?^U1b8wKdm8A2N&eC*c+xu=Qg+L%&-@yte3^sJOl})=5k!UXxo~m z5$ti1J35snq)IP%CN{Wl^>Ft`I_}ZtzwR7(?ok!)679;fMzdl6))6F2YS*dqXRQ$q zA3Ozq@OSC?2055+%tIWNX5Bx$Y5aJ?zp4BuV<2*RsDBL49z>sG{FQ59%Ez6oK5?88 z;=$-he?nu)>pBK)kXbvW7&FpJIBc1RIzlYbS3}D=&G)F+6}5aaaud?@$&x~uONXC! z*K^J;HOyNgDHpk4L%g#?K8eo3^%iug#&RrAPrjqh>QW|A(bnXMF<J8%$56Y5-YkPj z^Us`WH=54rJo~m<@fYi}?&~Hx2p1#E(e*=C%_=RY3f(Hahk4pH1GA8s6GQ+UYJ1h< zw!v2*)FowZpcyN7e2@$C5N`8r>VW=$2bfNQZMIbpkE!<L#^g3HoRj@N(5$V~mI(a= zHIyZmkwrwBehYn)U@IgX(lINsRlAa?l4se!?K8R$Zj)oB?!@hY=0>X%TYQsWZ=xG( zw{*#;g&`+j>DganZmAf?q*(*-wU!QveaNNmn-h1Nl*V{5GMt<9@aF+#Gs+1LUvD`; zQpC+0>J3H^?K;QT18xahkux9BpFY-6gT`U2Q#uJ|tCP44B^#!vG(K&0WjofsbaR1B zq1=m@#tiAQlS!R<;q?oj52s=tNHDk0v|J`23892(P={7UR*AN!YG5C<X6^P<)^aEf z@&<F*vp*UZ3u|{ANndYQbGDsxDo12vdEBj4PRQX3aQVqj`We$l;vp_k)w(n;yEFlm zCUY6)fjZY^h{btg92g=<7{;A7wD2u_Th)JznHn31h=h0g)r5{-j87GL%|c{PUIiXi zN4UFr{j~_YBBmiAjDr4O<$WR|(s;q6kX?(2YQOsZ_>v>3iLtuBt1fr|xK9}D$k+b- zS8@`bSQsiIAvNQlbx$e{akrdl)%x?D*dsmJtV@CXLf~Lhl9l#EVXM(g2|ek9MWB{( zsu}6c`_CdfO%?NXTdy1*o}177m##!!M#;bXcWaV5XLXa(m4##!XzOV-ep|<#?VTE7 zqWv>!i&Ordk3!Yi-x1jNPxHc*gyZNg?{@-mXa71rA$*kv*B;(TPWLd#+sD?zvt*iG z<_CGU9LYGyyqbLoeacoYo%^>_R`a6SRjEhk>#h&sza4HL?jm(5WEw{8`lNayjr|C> z)1#Jks4MEwXzKkGmF}l2ImHGe>EDS*b0fZ{(8f|m3fWq@aZ%kT`bJMJb0<Xw7cmta zMYzxSi083KKxyh{PxcdqmmcyWCAYF3hHtj-F28UnA5^d0xJdHE(<AN_>EANrdL%vh z5w<2)^$po6?4JeHz4zTk9=k>E++O0E-6C&2J;Qiq(^t;)Tq~7Cdi6C61`X5OiY=ro z&8UdruktG*oG5u%J?=tL6Mr`E4BfcCw>)eKHPZ&TiZ71`e6uQ9XH1ktJE#d#;9a{L zDhzu}N-<0-da2#Y{*;d#6wZuqCwhpd*GJdu*vIU(uD{2k=V+vbIaQTXp=a(y^0o|1 z&q1!>)1jchRvSKsEs-3gVt)nSOguJtrc`~a4LRS=ZrW}m2t$nuw3z6j@?xaLCf9J& z=evKhR*T_P{DZ*`x}DaT%RIDFdg3{bMU=>mikr6(85kcp6_Nb-=RjtLvOEp0S6=!w z0id&CerLZ*13<cVTE_=aKWjc85qMKRtl}}Bru^!4>s<m|Eo|sfy~1eYZ@-viX}n^T zwX~$ZaCU*QV3Hr>*sX3;=)X1#GWNp9^r}Opl>gGgW@d=1wbH3fzZ76{e$FS@nMpE2 z>NnN!Y(Y6l2quxSXK*GaY}xq`d=F6-JtePg&OyGGGK27j=BPi5u~&UJtJ=kM^hf(M zBc~-5y^lCo3@fGPMoRT!QsGNFo{|tRFT|XY_n;99ges9x25!_Pbip~4Ek6kt!^}}9 z)3vdX70l}k@RIjJ{~}$YK%^Xfn^TfR;ROKF8O$m}(O5gREGnTOY1%lh*hI3mw<=R* z)#Y#@0g2ty;NBX`bDt3u3$hsr5;n;;a_r}QOZcXPxq8~-zd`e`sT7Rfi_OCMRx<)# zA2~Z^Rd&OihV}ttcO*ic1L3;x?oWsSB>oH5l%>WbnEP}wPT~F>@I%?-r|(nTMt1r& zmYK>MKG*j1-2RVN364tD5k_Z+z%4lzuXjppcI3JC+e+_OkQZyK>>Dq18UfUl8e0Lh z6!|w{7VPRj+vt4ENB^^P?=dHH{w-?jXGK+y(AEBK;z#D8*!d@T@~c26EBmLz$N*Pr zD({U~`1V!pVH`Uy9WKoplG(fcLY<_+-k;ihru^{CoOZPKiInSG>x7T@r+FAjH3(@y zJ7OssK?T?9?d(w3(kFgL^R@=2-L-E!XD&PIn!MJf8}?RELKldyDCE{HTxM2quH^rM z3i69?1kE0nO;1K#y?-hSc|yy?G_#0@1cpi<zf9pua+4HMg&1u}CjQc^`u%u|xg*Ev zci}o;aR@K1(UtnIUlitVPVDpl1hqysY-De|d)Y8E@kDFoD^&7F2{=!&s%$^BksLj0 zL+EW!ST4Q%41NFgl`&&fXOY3Q5YNpBOqckM?FG=G_2h{?Evc^Ee~8yK&awU(YldY; zVQnc?$_qQAY)?SBO9VfVM*DJR5<mDmkwP?n`<lk5wl^#)B%(SAAEN0jOQK0lcsJY_ zu?_6|Stq6E)@WiO=LYtDv~D|#6AeU?khgzrLi24bdwud<$%GghrrffE=HQztLg^Ik zH>LS*vp0F3GA~lno^sSpoQi(bM(>mcQcSvV(IU^g7RlZDOG@*{UK%0=WkwuVFI&bu zj@Jh486*(e@PvTW;s98ODZ9J=bns8_D)K(@4CP0-89QR)AC&TZGe~}~sPD)L|Jf)z z5Jn4RlzrH~Ul?tw9_*&y;!DAZt$0Pc>(Bxtt#_p@r|WuLR`%!n3ta$@vF~$JtXok! zsq9WBJ(VlyC}J&1{1Ze`Od+)x{J86C6vyz04aV96o9kgF*bF1TgUe0Lmat3D!_%=q zHCA~}K>QbNFmV@sLsvCOmE|ZBpVK!Po>o`c&k(PlK(@<}|EF@7(D5m8siGA9X^t}I zjF!r5w=xw3p<0k^ykFDf6|tWyX8h8(I>P2iGoi%NExipjwBuehMm@>c8T{$IXP)sz zA3je+q_mB^W`LJQSIehm6~cpImM^^B{bD++d={obrq+wf&3+CB2c1iJ!fWy@PWB^n zq#RbcP{E%`%^g9P6vKw41k2HF3hC3p2SaN?N_dD~*vrtO?&<Zzd%;oax{Kr#5rN(7 zRFK4S^_o^ps&hk`kMYfAkkWF$$N;9cRGMI0f{VcI6$J!zT8y^Yd9iFf;C9DzkoMWn z4qhsbGJRRsfL(yP5{y5R5D}0;Q_dCkV1;n8rYN54;?s?tvsWNNJpo<Q4n&dQ5}-`w zCigaciU@^~l&L%8Gp@f)a8TtnY-t#(vVc`$DR^7YwR^MfLM#;yu3L>nx}aBv9G{|w zdS;PAoC2!YK<QXt>aHk`P<NTA&hqCM+Zwl(3<dXEQZPh1Nv9Fs#)OokoVr>M_v^Ze z&!-{xMCPlTe4mEmk3X?^r*8+<d^_yP3)R1>07~}L-I%p&t;r`<Sv$3P$_sQKn5k&z z1Ub8=?)Swiu$TMqM+}78UC=xx4{H@bm;q2C754L4F$~M+lsfkCHzQNYZVPROCxv3t zv8O?DATe@&Ia$R)hlZ1j`?u(yFa3^(IAS-fv?3zhReiRt;)YvxwwD^3;;v4(cK-Ut zwt-$&zx>7f>P^v$zV}?mWAIm-vW)zOVQyfUw{G6zO(x!BJCHu4aCa(LA)#oV1ooJl zQ?Rv%Q>?EcP9{{5%)Gig@7Kyq2GmO;%<H+e*R{0fQlKtvezs<(bhr~?iyFdg_LfKJ zo&d*IK=k>C9t(Gz=&QeC(1$~+F2~W7x)r3it^p<+)`#1~KHaphg$>RO{acKlVT}}H zs>Zx5ZEHm*yW^}!A_jDw?;W8!$~7)|xR9|;+1a}MQ1@Rltbj?So1S)&sb}?hwG?{D z>Sp~*DAtu6!ALzM(pw&=?3J}4RcrhGXHFac)>++Z>JNT6Zt*v6vY`gy<3@5!T?3S3 z#r}d8%hU*^pYXIqvi|C2_a^wLLSs{3Mn3N&5w&BfB$%T{JdlV8+2>lc<u(gGe>I{u z2WbHDhe`2l_8pDB2b@e^{NM4XO=`x}zrCG$8CS~Zcgh4L=uhdqlrEImg(SMBZ8WLU z=Y5$ErKIH97-f#`TALpSElE>5=22_J5FX?lH~;gQTXF2d<hees!OhU4qPF!PCb$}{ zq;|e)_>FG;OYf%u<i(d`5NkX4{L<1Fme?|QJB=>G?N|mgz>RH1Cuntgg-QGeLo@Ln zln@Ufim@l6u!u1*w}UaLsIiE};BykSmSo9YznnzSQ>w82$4IlT=YR}ec&bghOg=_8 zma0_<wN=QYaouv5!~z96CFwwK0X@G5VZ}zyhm>KA=*AK>y3M+m{VdVND{F4Yv}h$| z^mFX=<#=)VgdFG@1OV#QSA&w>BhGQjS7QOU`UQnWv}oe5Fx_z3vYrCn2i9d0ueojI z=Z}q^Fd>Is2C22VnMDr1OE2n%zbNa3s{5_nBodD8*Ziyz^MXtNrC4A>Ng*MC$ZdT8 zQf<yY<=Z&fd{Bl{t1F!6hbMx2I5qgk229Fe5F1_cRdqpJj_c;xn=v)3@T<{S6Axx* zTN_v&od@6lhXqiz3K)%-4chr0IeRs&ugmbA%6^{fq7~_82kYYEwn8R-H3;rPM0(xE zw%k%qQ^`^`=4N$f*ivbP7j`p4a<1GEL+F^T=+8x~H$Ni!>>+!1A)gMaLp{TB%zQPX z?P$w#2j&4s&6lIoWu8TJ_LmOvbJux)o6*ym?5HypY+Mg41T#eBo>4jdRIdM-XvIF1 zNS!-NnhSPF<v})kZ)E#x?&Tti+iX%Y=YyLkt=eT0>CG9ZsUl{6yGY3g@eI0fQ=983 zEZbUgj^F(L+&YssJoKQe7%T9H{d&G^qsR-+;AV}l*bru1<lPAOW0FQU#WE63Ft)F& z|LAOzo#_<e(wOqj(>n!Eppi>nJ6pv7m4pCx;oYG3rotD;L9}_84BX+Ag-8umLaK2g zb?_^R>0B=*Sd19EyJE}o>QlO1&LxTYLCCZp2Z`&oI9<GuZ=J7*gs8OF3?!q${Xldd znSX2*rGjehtRAP<mxh7L!ah1drI)~UmUL7^g%3Y#NP%t!^1_cJ`!t+`bvX=g!`_(Y zBvPr<Rl8TaCLmlllz&>GaR`3RMh5?~%epEqwtAh5cdI*CuMB+X=J?z<7*&`FQUZO} z>kCUQ+J^d?aDvesDIM_~A5MNTuo#)?`gEnNk&XX6qPhk&Wo*qTvF=A8h3|RG%OruE zxA%3HdIZAG#;l^a3a#bsI|JPFOEUMe``5I_#4vW5S2K9Hmd%ftuSsWkj~)(ojEd2I za96&~eV&mmf7xC?Q?;%&@dPv!4x@<wnqE~u$DYbB(Z%hXD>Z5&aRx>YShK^+$7`GK z#Ma=q6q94hNtrC%HP7dx#aOSOBfO0cCucQhF7+aAh%CiC+z{9zeSB5x5OVm<<KwPr z&sRr7QqWdtv#X}ESL_8EqP`zx*2p1ay9uz(d~v`AOFcH<)VOgXB3MhOxJ}BV@=}?& zg-=6e0>H#bf7heUnZo8UC8ev4>#LV%%Dwwx!WIU)y4OC3W^>UpVOknpJSavt>vLyN z*EVJGgCCej-j)@c7fIK;RATPw`mg8u#m1OLAw0Cx0^yg(NVK292$K4>@|FB?jCJ9w zqh)8rc9^}!v7V@@5VgHpb@X@_H^k_a=jjRYF+tel!cy{t$~V$~)PM3sO3`$x^U$q7 z8X8)2tNTj{0&zJz4gJ1USMv3!)rFE4BFBN}i&N8pm(9Up2U5rty2+x6q^kCQz4CMg zSMpWzno29HluLva&0EdiXEB&M$)D}F&=FF(UvOS|G{s#IZ&9q>Nt)+laLnYSOvs@% zxbb!+f#bS51F{gpk@#I5DdR1Gixs(MZ)lV}(bHIao3afLA7M_cwJdz9wQ8x|Hbbx* zj>D-iFIbeCAf~<;#7|(I;_7C9UA$N>(@jZ-2nVgK$;&q;mg-F1Ybl&t^`P;x-uIEf zwc6x{C)CH)S{U+Yy+Xq}8mt9Y$ncMa$j*o!H}pG>)UlM<BQ~$qoyOJDy4-L>HW`G@ z*n0~?Fi8=IbSMim=B2y0g^G!~Eez*5#LuMrmr#fqG`jqIki%p&i4JM41h&%fc*kG@ zitaUv#9#hRff?KkG2-lrj=_6{!5ZlMZRIZAneh>%iiu@<(WwH5oTOVCE02gj7`3-Z zMee@05p(DmFbh=49qwkZ$n{Hbbg%(~D(+;oHfe)6rq5WSB$(2e1$bC1Y3_rbO+@iR z<;`{_Qb@?&kFK6sfYyJfqMOG@W%f0cLfV*)hs^Rm?r-cq4V!`i1Mv<iVP7^<v|eh< zK$_WQN#1m6n{L37$0V)}?j#~vA|z$V-XHyLI)sBIDI#TcuLBHLaLuqzkqFLM%<v<y z;4gLMVcsajmTcJ=q;JSKj(?b-<aW>3P0GDO;3@XE2R5N*bNZ)NEwf`Lsntui(oqo+ z&OAI^E^}`8YmnB_OEg$QV_^2cBPHtBpDLSmYaVe1rtD&5uAkjy-fw&*BDi`71mRlb zF@G#1V1Z&%6AUtWT(Q)+uNC*&?k4Om=egCL_ZdB?v?80@k(}n<)}nR7Y=oNzqqUWG zxKXb%;oQi*g`{i*#d6^gc<}c=7D?&`$;@(enn|X%MDepZLrI_7SkHzG`DenYb?oGG z8CEeY2W4OFv?*&TVJ}D%9kQCkxZ}!3CO?F=X0xQY^&>(iALPEAU>Fyj^iSa~ULqf( zZ{W0pPZQmVl}(yr<k+x|C0)U3lhBsFigUIE9o14L^17l@RV~0~n>?@evy;?%Rxe9s z6mRW5rs4Vfm!p<naD*)r{vwV3n(cSu5U(4qUDA^W9;jlmVgg6#yJQA}N34=9jFVL= z5=r9fz4I%q1Qvk`miK&3AuOi2F;r^CP)jdXT&3A#&h2FADihDB&fh)gfY3VzP6%iA zah`mGy?6}68y<);+Oz1K3_Vh9_vHkQv*YTtAE<lA)L}3SLVdnx4_-dl<=rJ2I*f!S z*uqj;Hdz?)`>cAO>*+IzPHuMb81X6ai_J0Z1pC!S+zH}&Z0YH_^G8~w^C53$^SIQ3 z>}`mcr(JH(>l2hs`wEm`hsRVwhg8S7#nGP!9uuAByXwcFd&S<5-0UR|qoS~$Enj34 zj=1Ve<k8u8VCbj3SYmj}P1hy!Xf1+pkN37S70or(Q%q8Ni)-yUpt7J=v}gPsb}aqv zwBjO@IL~t$jXfzC1Q@GdM!2eM;XrSU{?yJa?Fc8kTQR9B*njIcAAYJo7Z;uy%#^fj zpdBw*Q$n+^w-@ol8jc|y@dS14Eg=TudC^kxsd>!2r8)!#RuU!9;|S{+6*?mW3U7!n ztWBEs=fNHO(SEEkGOqhqjxXoGpZJ~7JMi~6T9vh8qBoD1i%Gi;$~?fidCs$mMTDJ( zd!yUCBH_fX8Ne5=S7FkXO^&BQBU>N_d)bnUNqm3DXoWA$i&Sj0s;pc5;Sh{^Um1@V z4UP0sCFiBvsSsLl1EJqfFVcjgdog(}JIDUv_>vPu)x}FfmzpU<HhHQm9_~g*SP<+7 zN0N<t`&qBreR*+zh$N5_9HWU}=@Kdg`8C&m9<&Lfxg`(d`64bLNB1|*-lv(kdos(F zQ@$#yIsH~SO<`7X_BmC8zqmS0Unup_&`}zcs1<t`YiM*%HRCwRyod6^WFI6Z^y=Hk zZ>DY$w^ck}zEPZt2@J!?pIj)r>&XkNxM8EssNRe?y<HS!r*`yIur!DETV#qeKYwRj zy3ECH68p8b$Q8F)wK=ky8effOu>dBaz9{cPtbjn1#>MAepDSKY+G&J0W52Td;86>A zOKCn}#`h0BBeXh_*y>{7d~O9c@Z)oZ{Y5TQEf%io5ZN~eLF%kOvaganA79Qgt1P^o zTy0=?cPwfDTo;RoE|=Vze>G%yY(6)XT`qBx4yP$6aeR@K(<D13O(ibc+xR6_HHe^( z$?`}FDx%ar{J}%IDVsgNE|3QoRf{yFx04nm1LN|Fk`;-c;vPWe0&#XLuj+0TKejNg z@*Uk_?<UAOlDex9D<*Bm5<@3#d2h3w{K=0;jz&jMSGVC7am`9I$0ggz`Kvk4uN)%( z7IOD9i3<lm6q#Wy?$OP|*Tba}AZ#NOoN<6olqC&CBs|_Vpr<!HmT*e_d=lxD82%o# zD~>OgcC6iH4t^Thv7eU9y*F%R#eu4y8x!NA!iooVG1Bqo)VU0cpTlC;E0=!(Kssl% z#8`lBanuKlH|!lM0c!k+40St$9iQP!lfiTc>98L;Y2z({g39c@b(}{X%-A;&4%)Fe zmK_r-7>^IXsX@r2xZ}-=gR?9Gk8YJ;;@vHQ%h?SB>Jf*nuW@g>&HD+;iFh@eKlJ@- zJN*$_hY3NpjeMI+db<?Ku6Uf=jKtR>xIgn*L}cLIsp7*HJ7%l|m6~OridHn`F3Yi% z#nzy(`bdEgm_)l?!9({-%^vx_T!pQys7s48q7$ufEjw}fW%=tkOzHB;=Cz|n{(9Yw zrrN<IsLrmiZ#Kwuz(9Y%NR~D;N7<;BQBUPT>nF0lwMEy|u?TEBS0dchRLr;<KxOur zoFH&`RIFh4oTc-AFSP+9l%-NH>(fG{gVEjt4&`?#Y{#0D(z;npx)|brw^RQH&*%mc zb3euzfsp3l`5U<?l3W#`TacMng=7@fM6QZydK<o#t)lTaIMhl1)S}3u`$jeg$2Ui* zPNveGZ!9P0;O_=MIBdhBy){0CRR0i~X|v*w)~UjKG9tyCXU)G|IoHMg)h+MrH{g%$ zMTT4|?DOEZj1(K4yY*RBD6x+eUz{gaZqRC8g&DC4SbhKXW`wjm$5Q5aR<WOK;J#-S zMz=`{?Z?SVPlpEtm9N(gh=~=98uu?Pd>QsrPPC{G18jiT><!Z%<<&H)rl?3*f}%T_ z62G9!7<oye+PVo<#FF58D&M#>@nfl3Z@PJaIm7=wDV<JF-9gjbn;P<RxvW70{yq(! zSmmPlHeI(tnWAQlDBJQAN83!jjBC};6C^<aIi;7L4|(6OonA2nVgFQZ`gkU=y3KiJ zE!U(=%8eX&*SM&RNLPlf4js4?8)r|Ow5^%Ed6$#sPQ<2J+3NUmvgJ!CxXsgF2Hr~j zCMi{BIr~NKiE^;ypY>V$1>rSJj}-Pzi6ePcw#SpIUFnk-xM-b!+kTjno(-n4%#o;4 z`Z%IoO<rsLpF07|*k}9-M$e8vTN)nJ`86-wAV+NYalLF`|8W4rlG4OU(v`mN*vK7^ zq@sfyHApW;em)T%;Ylw17V}nX#Zucao^%;k=e(`WT`%Qbwnpx8(?yw`He1WXr+6tr zHA;CS5yvM^F%8e?`q8~S#QqNbJOP&chhl{q0{gf+r=c1ckr0tnm&66G%dr;YPKD}_ zpOZfobE$S$dVJg*B+yBXP}Q|#|1K^5h65#Lp_9WagAL+Q-EFK%(Tz+LNp|XxP!0vf zvrxcLC}TQxw=)AKyq}CtY`4%dpZ<Fe9T1_6(x%Bak>g2Z1JltTpS2IR%>lMG)xfA4 z|5tBOqA(4z5a2<p!~d0Hr1+#Zc(_=rwlG^xJdu=u=&SohpH9SiiX)g&j6_~#k_?!= zsakHWfSq{A>;#bqVaNz?m7Jw$90VIBi6+O*w_((BF10d#)wn)#Mmi&+;ijSox)Gu! zsg;=&kdtsuFpf*O$6N=|4@9u;)pzb2sTGiQU15<z24X6LuxJ|+Fa~Xf{5dVqrAU4T z#scHW_GYq1;t?`i@g3tgFWxW2Js_zXAU4`$Pkuld39}~wv~Tq&OzdYpZ~ZZd<mdhp zzF-|DM~FnbFh)Jg4T=i-!6d9~O@BKpuQ5{WC@rkbHFLPIInvbpS<T<if?t|MPAisr zwUwRLRm*3?l6tWCx$7J>G}puRlkLR!N$qVa#snQt*CA(MgKDTJ7=+=<rP)b@`brs0 z`OY<Mk5j0n(y(o!5?qNp@Npih#FZ)j6a~kDe@&>nBN!(AI7gqcj*)-_8Zhp*Y0e$R zt21L;Yl?MWuCSrAW1sYBULev1?9%Eevg}`K-V22uE?iVQLVR_O_&jiDJZ3(x$T>@; zV^a}bCOOszPr<h9%t9+YfkHtx^)zlh+fKPI4ktLtK9A<9xluHNXIpOQYiW~^9l>=v z<D$XoO<jg5!RF-R8E5^@(xEPz^jscd2dK^9Vx;<&4ctYR>2muU6@&d<Ia_Dr&T@KL zO*IA<Zkvk92|ub`g)hvzdfY@a9(<10HhM7jw6QGOw^~<SP{s4twZc{Zr|L_U6fCSt zv)OgL6B;T9RWA{)b92r4!wSwTZrp_tb|slg63PJ~7ahS|+N|HvO-9qB%k{dgzCLxL zRJMpGa2CCx!0m*Fm4|32Hm9B*q&@-RE$R{Q@2C#}-QwRQEx=f;Hs_jJk{>ee@19-w zqf}*&J_a1~-fx@yNtZ=%Ghy5Cw*X+V=z!A3W|ytq3g#fY*?IXBY8^hSE+PYJS;JVb zR?-+>j^`iM1%!N;MFjQ~KoqA(*Q7sN-iFS(ECWU&HN!t1kl->}6}38%)?#rqQt!!Q zaZmpTUC;3CfsI5pUC4(w%2zJMtMQtgQ~EmG5(&3_5(#t(-Q_maKBl4Y)?)lK8pof9 ziPRch`_(2CZ{FMf)D5-pWKQC!!ys<;M}jYIguBjc{oh3|t8+#WKtnynWaO6bN1Uu~ zz%<oun?I#n6GtK^=_4EXP^8N+T6N>!`i4BXB42*+M!nU~%$FVpZoHW`Gi=8xx~69& zKXN^y#^~iSq2@_-H1g<(R2VD>z{$B{ZQg0z<ZBR&p}<n;JjfjYb1yt?C|J}BU2L&d z)P6>ceMpM(X<OT+QsKg(Kbh-K|NPcsRo6Ou=1Lq@Ngxo;pf1I+kI>TuC6s7$bms~l zwd_N1)l%*WPsZUCDGoE{`mu8VHtn`fE>b>N_S3M#N(kKQCiw-u%?@*yb1YYP0yWMc z`CJFPSeN*W?fCMX+y3q`{`C5oapevPzSy}gmvJt|hcHB^6yzrI>_voP?PuD}9j;>n zBmkvRdASi{c98P`2j)805!}k2>ni%(b+x<2U2xsRme|YH<1=btGbCm&F3BN{$*-qI z+VM?YP&35oba`^@JK*JrCJG37Xl>j$X-qN;0Q;yDa@qWp!mi_7oc*hA<I#Ai@5j#K z<O>nf-IsIU+33bUjGF>-H?_nM0F6Me9Nk`JZVY020XUcXFuPd0n%+lW?^XT$Jqw}L z8c*_XRc6CBTI8C-yi;0<!zJ7C3O4N7<`OA-dhi2=An9@ZMfw+Npjj_|N@O<{CcT=9 zh&<{W$##{cQu#Pc$G6yANl#$w&q=+ZG8~~wH=4lRSLez_=~Zx(343-MQkN_?065OO zuB>k3yw^W~`8-D=Atx}^;n4Pa#WhOCjbg^KyCJaEpRcPr?*sqY+U0NA*o1LCsN%jv zJot5kM(NmTf(y|O`E-U@RV)1%w@z?`YR*^n&4_4bR%NEE!Y=)!bkH~g?<sDwk3r=Z z<6y4q+rL~&taa^MG00rV&r@Ne2~@M=&YRMf*YrbnBIO#Aa62gxlN!t8kTbl+egx_T zP5$_7wQG0eNPb3!^Jg+d1)FtCMia`1_sZx-Xh>$<vqz63{=J8B@lY_Iy?t*h%_XKN zQbyk{PQVkgJGg(HPk>8@f?2{|!BcB25#?h}*)YS|W&?U>m#71^27^+N#WF3An<5K= z#El9Xmt}n4D>5Gn32(bzRB}hY(1QPB#l#(UNAeT6vgstV1WDgpofp(ju<RnF8+lhS zyZG3d?#sjgzRIcfTXkywKBhgq&|@TQdcKW6)X6ArimZ1B`!(72h?m4wmt>I!);*(d zQ)IL1h6>A(?zJuiH}qB93eOueh!Uq?nu$4y6RKCS&OvB{sR_vrp9;?T3=c$*ohn#- zHXusGxLqMMq_<Oy7*GQ{tb}W&z`XsYZ8GBWaRbK42rwL3ZRW9(6j$r~HtdH<Ht;FE znV3g%g5jgO<@aA76S|q$@nHuoXpQFXx*{Rn-Wc0Jc7cMv1ZJfL*O1f-V*EvHMpRPw zSOaY|+c$Q9i_m`>3mr*)bVev7$@rVb+q_?paiwqk!bh0PNFtFbFKDdS*!}Y9RQWP+ zw3U+f1je2(2x00rHB78pxvFsYS@U@SI=cEZ9=GzOvIVGx)36gl(3T9^0{Rk=4{0_a za`Q}YkzqdhXR)@ZsuS1AR}Eo%6hbQAqy!0zva&kRJm@I2Y|=03XV3m|fHds2Uxd1% zWhK*`P-$N+k-3Qm-|1r4%AY*FwtOdM;zvYgOk=O_<nOe9Uy?}}@q<N%%`EiC4<(Vh zLcUkzge{|V;s+5M;T1B8L@QIaO=4K#=N$hWdiP|}cg_H5LXNBO=>)*L`&>4`^SE5E z<+NJ!jnTtbUTrC^Id2$`U}bs?+@-@3F|+ac;U%12voF83>D+wz$KzTOYDmxgaJMpI zfN4BLYbC^XJZZXY;^O_dbGMi^>6^wuWh&*0=EEfS5oT-SYX(?ZNIUzLs}5!-Ht(XP zY<&>mO#K1A0|^On$HiWbVoWnN%MO>c5`>=)gNkz+(rr5_<|3aeq&4}lTncBTOgL+J z%^)PaPQZC}4;Y%pb%lnb!C5x^5>NWed_t_)oK5+#?TdoLLnoRDHOEfJnlHRg=g@w~ zWV_s2`zjEkOH0MX_<1u+_@YZk(F=weMpZGB_2{AC#9)v}FtbFLVKeHhN3(1AqU)ic zpb)+0_8GlJjPK8`!<+~E<@t=QKW@A3iLNVdY<kw$=hq{4A8loXvj8NS7PKD0i7vyB z%6JvNv8A@??@dUEDk+YQ?Gqh%XAYCQ<YDWuH$!|6etqOaCOQ<S6232kxS{W2`wGJr z+a$60!{VkJbp6}P9ufWZS11hh=zqUNrZ76ayo9HLg-%tb+Gk1w`v!IHw=2TO&w|wm zY2>i1DXtjU<I5A{$@W&ouvJ~y7C(;aAClOi8<z3LNIl0@r8%?LVw}md&+TDk%gyBd zqKZE{#OcDPG8jvwerF(NQ9XFzV=sfwLQA$DizG!THv^puy5EbgHm;RIcWoj0<^=O2 zfhbIWrC<dOwnxTI11B>O^%p89Y3WI&1SNXfea11_POm->Ie6Su7K;T+3Sw3&t=OX4 zTRewj?c61Nxp^sX{h8=t#b#y!J<3B-i9fb<rkOg0`<{0#gLuWcB@43lhZE$DB?;wX z_SZKU_V%TYcB^-254>&g(m#9A9*YT#<|%8%mKEh_y*wMYHlwOi*m+gur@ZsJ5l)aE zS2Hp~R^fp|bH_-&ckbt=d+BQ7Gvj=b;pQH`I^VjijIqgsRE>$Q<K65+0>>jxW!J(Z z`I`%Kmd_#O%G%^yy2b_fqEh5T4^f(1eW3wwM?9l0T%iIV9^OW*Q6uj4SMIAu7|&m- z%}T)>Ag(*otj3-@QA!1cjUR>z_8Y5q9k?=deFu#j2G8L5lDA{DF0klHr)!ZEBbIqn zuW{oy<Xxkr$EbpFN)N*7`({kI5S+KELZf%M)(AFUA{YgZWK&e^anlt9$yE~Kuo`=0 zFcBP5-B<6KGn}tUQJHX1h;C$5EsNNZ>*zl#;{W=OmP~qYtna|QY62(NUyTX<i=hKk zCX}acTPKg~|6EbmlH&f&o(x|d0{&T||L>RfdFj^@=?Tw4+F-kouK*6pplEYga@*I; z0PI2~lD2HW|NhZlOMzGabZ5)y-wXKv`f>mD)`V-jz}^H0>20qLh-MhUKn>w#Mr?-t z-(Pk-+#B1=k*Ns&?|t<@edwT;%l&4$IWPspecaC%^aTLi#^ZD_tYpM3vnhya{(oCc z2<%$5t`}_o+e7}J9@vI3c##ttebN8v`~GilAnu4Rb^bLXOZD&Afx<BCjIIqH%mLs( z1_G#za6d4K@$gEg{VO_<?_whzeeqlGJ}%}i${M~jehrx7T<HJ%Gr9-n*3YSY<FeUt z{`DNYnSe_g*<VD%9q>kalUmLL858>qVJ#HKsYKczHy;iyqT;d>I?a2WF{EmKP{JM$ zZ2_PjQY&DlC6m3}6-mI?&;4xq?8Qw57$^$51r7{IycT)y^p4vc{AN?Q!^5iunXudJ z{a6nqU-mYp@wz(H>rdoCi`WeMSFrql|EMSo+;AeoMeB{pXgk(_eM5TWZTBLe<l%ME zx>*QZ9kdI}tRSIvI^dLS2dcN3Ls3VabMTA;y6C(_iUEGikwsKvZ2N%%wlaVbS-Twd zu(Tunbs&m~+#1K<g2FA(13%s-3)t!lT&%>lgLH?sd;67&=#xT3Vaf#e0RNc4BIxj3 zTX)sq#UVD-bRImYnmki^`7Y-~J?&%!H*g48kqdwUs5az(YQ6@C8y;7~fn<x@GUzx> zD#X;u{;xaPn~+=z`Rhm>oS6KxiP9Ktfbo66Gkn1gd9UTp@a+vKDg3R*hd3L6ZWGun z%}GJnj38~*k(5oF<AJAV3@1IYh7Z^?ylyTI0O>EF+@LEEX)t<ql+c_ik~Hy31_Sk3 zqZcsh^TLgVDA{p&t;99)0~1%g(7Gh>NA18tofzDjeUCU6CfUmQ)b!|)3D<r`wu8)e zdEIsn88rh!^cp^<th;)HERR!NmO>T*3{^JK6S3(guX^^st#ss8@&m0pFF))iT8@AH zpqa1GwE+=PT&@YUIaomYow2b2`oj|HKY-m?J0!(obVT&J)&xj*aFJer=SY@Z<O+*I zvZF5Ye*}TwRK>r!N7W!_ouNI?OAENi>j6<b-5dXAq$FeE55bZ{0WbJE_#SZ_*5K>x zT<2W7{W*Dwl|Fwl=$z`$*``Bd@(Ayr$Nt}=(0{&EEFFl=5ZKzs?0=5=9^X3*SETB? zJ`yZfmf#aEB7cqv|7M{wl11wZ{>ztVQH!I^flP~~37!0ZeS}{M(~c@UsL#s9q|P6g zJf?Yo`hUKk?m3fqt`ET9u~~rmd*n_LeXs#YuLMZ$TRU$b``FlZo#_h03)y-~*TO<6 zHKM4JFP}2^{uS?uZpJbHi3ImvqH`->A4YmnN7W;XZ2(Bips-=TT?U{mTbGN~g!T-; zH?;w+x&Q#7eZt-dAHC>nLlQdw;v}*aq*iRc|Apq_&q((#25o}&M>cBD^TmK3N&gh* zIal1FJilDOns31H&v@}Cna;gifH7+Wri+{Yoj{xpLk6zR(RZ-z4qk=xO8`OKTfG1w zf-XPV>=D;3prn$<zqjkDzVHJ6ry?ScvV4(VLw`kYWY~+kLE10mC+dS{C;Ve8?Dk^F z23TL!7D$fL?}L?E>1DUa0=o!F2t{ZBYSy2eSw+5q*XOlGtC>5*5JekCHU_>{J>Y_B ze-HV$Zs)x^*IRFIEW)aQ0dPRj>!!s(D%4%#EIdnalXN3`-99Wi7vm1->6WGo-`+)l zX9J6v1q#;X3r6@FwS7Mk={pmKr^@r7h@4Y_!LtbR*e@I%Pr2@wyu-hj0c?#MgZ6L6 zGHzD%+)Rfy*zc{xh91by)*lZFw=YM+_Pl^AZ~iuxLw|mX)z;#7Q!b=74s8e?uw2Ck zSBkNqQt3L%aNHI?vIQ-%k7)}u5xm2JhkJEkPB#EhBEOVnOnxc-=y7XUzNuz?3mlK} zkg4z_nui{+`E(d6L{@Cb*mf;2XZ3W(B&Q5SWMjJNg#AYNOJ3FQVlI1tZ8kGpllud> zZw9D%Y`t=~#I}qVOYlFt24_i>C#mP@^YeD5h480y8`r6}n6%uWUE?%aKRzZ4`fhFO zo0<O(*xU$0-Qt$tX+O-G*S6a+eu1^Xas?20xF777m3v#sUF$aUamN(-lvonBDH*tn zhy=iq+ztx22Z_&+cu6gTR_ZGS9fYbnu)A&J>7pJxx%P8Jb9$Kj$K9sv=;`ka&F@+# zsyETum$x8x`2!*L+`K{K0{82^FZE)9UrWB^h~<`Ui67qP`B>uDU$IyAt14vY%FeD_ zPY*ffyBmFtUj~G)vy)*8qr}!-fXl<$J_AN}t0@F!yUvVLV;W~|oxOGbQrHf@ARMJ- z=9>R|*Px<;=%M57{@K6h5R8b@f<DWFL*apaA4d)RpqVfz9YnnYu&aLKNL_>`p<ivt z!io$X1`CorpP2{)yfhlxu6!&6<KAx|Ka>&@U9d-bp8+V=n76?+9pIjp#9{yo^fxSs za`l#$v{qhbpvwl!9i{F4pV%m&a{nkSAHRcMWZkPGLSM-p>;)f@Z3n)ki#FX1K>}=S znm6#YZDrAuaT|cDbem>q5Vvy!pST^Dt6?GVmJ2XC7m<izzCi(lx^ELIq!!3YZ}C}Q zb&MW@QO3pmNZ8FesE!E)qCYp-?XHWR{jj;YSSLs{{PhxFL<UJvCWy+SFX2VW-qUg0 zeKItQL?W}i^jxNzw_&I6lMrZMerSoo`+!)l+XUF9tlkO37uv`?0KSNAk&OVb>cig| z0YqMup5rg^?@3?oRH~eV^M;Ck)cq(n;~w2bw`_yfvBeD3kXH^C)etj2-Mqz$wM!62 zKRp8Z5)0C{nf9}o8)Tm?H_tN&6s9k{Hk7tfom#Ctw-8Cj>8AeAjD0=8amOM+mEli2 zZxAVpDug9(NgXo{#OkxPoVR&{h|D<#2yZ#oGdWLkX$B=fzNtOXsSmKMQ1<w>eaWKt zO4>R{#f2qvo=n?ivFxb#vG7QuP(W^<KATYN*_{jKFuUg5NwMdiMH5)L*GL;b5pa8^ zEi%K0NVoy6Z0th*)yF;r?)2imFmN7LCh&Xg2OP-KQ9iXw-FAnQ7~n$hMX79kavnuG zwz&|<|FgKjS%S>C1Qr7?$WjPpQ_4(Sr#~cI1PXM%oRUeL=Xs;wG!rt(v!-fMd%4Qx zwP~-j#%y8N{`Fi{f#VlXZa)XT*kM;^13+Du?>6>7Qvu7WdeRn!$~N&bl3&l$4NNdX zKS^t*gHS`+eDcAB@!+ia_K&4#f5sI046ghs2+fCrPgA}o>Nq|IV1g9u&(F`o>0oo~ zrJ%4En<ngXr<hI6)kd!~eY<fxf4%42L=pEx2&%gyl=fV!u6b<T(T?UckXS`zgbQh~ z+YamrCr+U|r&D|^%BdSG3>NRFM5m+hvZ~YYZYP^>zPoL)yAeu}TgXm@fAT*=n(1yj zEoC25KP$+Y)s%;A=KyD|xcw|otJ>|a+LssL2-$%SIGy+nn#c-tDTjHs%6y8@Pwhdp z0{8eQH3ZdeGN&SEd}|%hh*+En_o>3Rcg!h6muzZ%twJNf_H}PNvlvB}>Zj2UpbV~S zGJUdEQYltJE@AS4NdRiqxj3aV-4agwGhK_h81@1`l{eE~W8UERpom$tG$~u1beF$4 z8aUx8Uu=Z_bHHZ>-075d8e?wl?(n__o<+}t?!rJW=*d!4mP2cIConG?!v!+qf@?_l zzJ@zWi8%o2<ELD$cSnnP=RAn@1+!uiLzxG_yW^P`mj}AVwwuVNGb|t63mYc%P!?SM z46(M9Hg&QuR%U0o(%bN1MUlWDFi=coW$Jhm{FwZJ=bmb3gD(0V1*a|jOym1q_+E1U zgq-xK$Q*4CZx0ACwRN2C@Ju7c#_r{))>cu^JptbDBaL`<&b^*Xa{oti$u8G@A9)Mk z;bRBF(PqwWF8ApUTCjX@pW&}iAGKE|iSR5of~Vy!ONq-!Z7}LTf-`!rSwp1fF0)4W zckJuH8?=yzTxxw1AET`BMGnMu4t%K5H6ozmZkQ?}4!k4zB0KCVs&8)@8;e$TQSYLJ zhwK0@C)Gg-cF8yvA{663c0Bos34u!~5K&I6zBIdB(TIxX#vX0nuvQEkvER6hm;$xN z;)VaYyl^kB49X0atE`FeZ#0U^INRz$gtubfO2$q2NK8{ZDn_m;LeL|k!GJpr<f>RC zS$}QjpnGb+W*5S3Q$1yqHpnzBzsJSqT__{S{phbH*>efTnh*?)r!SAd0XV!1_qw;) zuuZ=)2H`F-#t`lD#SgS{U}8q_`g+urYPQiKNUcjYy1<2$a4~Shnj7L#f2kuvXN`5W z=Fte+*SWHrul}9MlP_Uk0n1h#<c%Lwf<>7wPx{%%`<+x_tFhdJfmIV`VeV}>Ea#9G z5TB~YXT6?V=Xz9_e4_Ca<g3Of-6U`4jc5GSzV)?q&#?PVx>#at*<xhCdr}St1kav+ zSdURF()jgZPlU)q62<;{zinbAcZM$U8x|?CHJg43SI*;lMux~Lnl-MlXR^sJbS!#1 z#9Ev!sHD_3)TS)Xfw_4(OQii~l4EZ4DCL(77(l1G<6|twyBgL=!rBM@8}Zt7xv0#N zO2=e3ou?QRhfbDE%Vrx4guM^2h@@4yP}8a&!}+KrM=~}(I&ebyu*au(g`$h<nq!UO zc6c3vP=~S3veF|@^M_NDWgnQc1v~0MB0e-vQKhouWHDv=(1N{dLdA>yekWUM5aBCk zk;w4VDS8bz*85Q38b-B~O0lisC(<8^j@6qxgI8>8x4sr#r<!O^A>I+y+GKlsoCC{o zj&I6ykEa$hKy`uHLt{q)HE5fz4D4_#CT6H3tQN5-pX$F@o?8z;@2bTRHfYW@6YPGP z5=MR|S!l5AUQxj7Y2a~ZR%{zhTJ^0*Zq>*o^7bkAdSiKm9J*idopwV0)5JBobs2s~ zpxML?IbT^|+eciX9iXM(5I*FMlgMZ%K}oTA{_oiBqv!37hneF_wJlHp?PlTpz<*!8 z>kPgusfisdBeub2dSvCdWKtiJz56NBsFpG+f@nB9dLvsYCYypf8}AcVYU#Etjrz>q zPm_9r918Yqifc^60lCMAm-DxtRe!=q+DHimx(JwFNu`uY%?i?4)~N93{PZ?&`3cb* z!FC=AiyjGPKpQ+;4kD6i@X*+pHet}ri5|@++N6xk4qFjUnH1{PW1cX<r5+*W$|ky^ z99j;g(9c%-ltUCituWK96oL6Z*7F6O%!UFC7Z$EgY3cjhp(MgCiuFU5(r{C^+nbi% zWb={`qdOr+?EUGK2aV5fi*l%;n~~LbNCy1$`Jb(MH@t-KDNAWyg;bMo?B*4VVg8<K zCrCM$Ili-g-Q69d#5QFJ1L>0ANLyrGlSy6Xg16GJ=nzzbOF+}T@VQ4WNl!Bc>gZ4> z%eDJbM@TvguIsEo`mJhEQ*Xiaz-0kvqb24euE&n%{*@>i*<Ri#9t{sj(LlB=OXE>x z<}uagyN$!N9v|Nl+&<EsHFD1_Z_-f3VYb@xsc9~r_jii^3i%6XzG7)6ZG>B|TywN@ zrPP1+D=juR!3QzR(50KMRK8nI;|MdUg3c#0dy&;BIUi8M3rQ_2HLHG}$4`cL#8wlr z%}8qT`}z+_w0wfCG4-n@RnB%+#7jRdJ&riTq_QBiw4GkRoRYGtT?{l~ZZiq>8G&NN z<+r{cg<}5%dA87ASv$U%ioS?3?V7@VPdaz$rq~2jg(=<oDE*diNXavtqsqvdhG#wr zD|s@}B;{>ms*L-_4~wZH3lvdG3X>OO8yAc1D>Ab?WC@@|LNe*=dbGz)iA*MC?gdw~ z&Tn!kP3nEE7^oNtmYQ=ye8B2~P06WQJsY5#+&9B^m?=rb&2gT5XZ|giroG|N?RpmT zR|MY+wKM0dOioTI0?Ne>%i}PNush?YR!qki^@FLTQnUOE`{JQ@NW%STT}$;++5?B5 zhuQ3&c3#!9T<1rAub9-s>M-gM7W@-?%P(p5mA%7rLYAg3|HGQOz;r1OqXtz8qR0&P zG>A0X)}e{R$SY;iu%<Lljp5WO6o1*NE|jy5mC|(ZlHB7#WBYmiSb0+Pat_g|dw<VV zntNHNVYJcj&Tb(E<TiGxnZZ1$1!c-b-Dk_e14o7<YbsTDQB+Mfk8g@wg^{1Dqp!22 z>5m2PKrP`|j%e{4uq~{{&t$U>`{o5<(;7N__Y3CRS+;eGzw(yog-bJ{_Y&$lC;gYj zfC(%FYBL4Y<S`v3R0HmyO`}Rupq=pQ*?IF&Es+FHdCJkKOL7}53@$Xwao;fr=H7Q# zDzNNoAkI%DueuMW!HL(Lq^jSTI(+0Lx^ao$g?@@6ot6J(C;mt;8?$`GsV+`z&}j%^ zSg7OQT(l}j0o$uxPE9mfEcIBD)f~K=%hjFoxn8jdURt#3?T>MB1PmgcGe~f(CgHFV zAG|q<F4<ircJC(+p~AByvo*cHfIG34RSZww39*uY`CBtjtYS!co{cIHrMrsohLuhr zriS;+Go973y|wFC33HtSZQ1J6OW0GHXU!+ytXC^FXZM8=CchB6w%*c@XTR^AWN=Z3 zcCDQ}oY}iD5neqm!1Zz-tLDiZ0{sOmR`U;vLH;2;bTM{u0sU?Fw*OQ14L?OseD)5z z)MReWU1DBDkw2U*u|2s<j4p`x)}XcNSFLwH?_2Ku6Uz`EkH=H=5BsO$%3}lmgiBLJ z3pDpYQqIr6nZ&B}LOT?o{HvCC*hwU_{iDz+N)^eO^jUrY3tT3D%=8c19m0^SXy>&* z7fM>w>q%IA8ADEWo6K(eHVFK{{?;PGn?&MRnK-;3j=4OkHv11tNiP^HY%6~meR;Dv z+T2eSIn-FkU>cW~)Sdmoex~B`qo~!~_@nP*+8M&5``cAoe?V7Gj4W_LChb{z*1Ypr ze9_iT-8QN)Nj1eB-4v9bubSyfuk@#k-kfg=^qzhK8XdO31-{io!kd0R{jUn|(iQw+ z$9uny>fW$is?j-aC%^enXjh_RAa%t5{zUDUC%yzhj8;-v652Z1)SEtkTY+UKT-iT{ zk;YdEQ1_~L!VH#BXB&=dBGE~+_wV8p9(8?<N8^R=YjpN%1QD~T6tlehOyZmw9kB}A zE+iP0dRx)j$@uhQ=8mCggd-!;)1vfJV>~<Gu58YTmRwY;^Ur;T7lGcAh?!so#((wH zbOq?W9~(>lsK(t)>DBKPcW$-BlqLvBj8NHA;d8*Ea;eumuu2aP^<u&a03e6qKc8yq zCP}FpimMfdpUqX(RVUax>W1LjrnvJ5L@8Y`?65LKV~5IhcNE)j=@Is~FMAI^pEe(L zp7mJQW5U)HHtJ7ws6ADApT9hs#{Cm%i!|#V?NhW$|C@)w0B5ns_%Va^%1D?+0E6M| zFDz5P`Il?TqI9D*W`e3sII;5ND?p&c)DL<(fL`|dgK!qaqHTB4cLVL)R{7+OG;LA5 zUzxUyAzpP9iG{J=qc>v(N>U;#2^`Gv6S8AUTGaF_cNnCxRTR6U-k`3*pGlg3kF{z~ zkI{}p$XzgqpfCF4d^OL74sm5+VdqH;^HjXaN|!sE%qmrVw^=!MrjqtC<%OL;3^kIM zZ9C_~q_bN?gxEV-55ja`Zqtn__geloA$MToaLP^KU%DYxXFA*9X5nnRaQ&S1(;LY` z#v{3nsD?QU$Be;$`s$#|8G6V5Wn06HQIIa}0_vj6z@<CWt7?>oiCuT;`uI+7`;EoM z1PZv&i0Fac6Y3F9z3Vc$%h9dpbhg<P=r4I(y&)+YCN=kSJ+{#d<}ic~d=C#>Kc*Xf zx*r-aq>JA<^}Aao9Q0JeEjA3gI$LA7WO@(E^w$EuY+h`V9=}*Ve$a-fPX7NGJL`a^ z|NY;SGNgv+7}5+0sS%FuRsjJK5b2f_snIb?YJf;dBVf=7NHdVG0ZM~(3)1cV@ckao zIrrRi@BRJlnA>OXe7&B}$Fm}TBW#0xZUnUSz(&4%DsqIMy$}{{v@7-OXLbV>Z`!47 zx~cKnliuL`Frkj0_Y2!Tn8kr5qTEvqKRiFJZTbyz9WE}tXIiJat%1SW25!(TAb*Be z4Tg>zgBM#F*e&EK!M4!yaTG-<Y}b#;^+k$F&pdr7eJcpAmh|E`khi*#9aFZF7~wGH zCeC=cWz-ffz<_w;oYAnq0_+{rwfWROVhzgXZGkE}TPw@B->JAs_S9xE-~E;nbx-wP z{22Z{%Xd1DTuEPHE?=`lik`0K`aX1GSjK$#Sez=o)r57pO0Eb-?(cmTI(08#4j`f0 zoHL<c%JQx1J_61%Yqi%J9<#cQ5Ur(JH<o^TVn7HZK6`p&LoEFj<)w2!q)>Q<8Oa}1 z8g^p&u>U2iTowqp{=IsH<^NL)mInu_6H{|;$bW^7ap7K@4+tp(TooNL^l7hjPQL(k zgF606_tw`&!y6G|r55ueuXe2KihY8#6pjT4)J=!-R2{k?uVW*wQw0L^c8nO+@aD_3 zZ^VwZ_(0IsT|192nI%tSD&cbDy$d=$)^Z~iJDl$bD%=lb=PfOAJ}h-wO}YDsGJluT zJPx`ZDnpV&!_Ddfr#_bg3I++Jq2t~sGj_k{XMp{s-HxqqD_jXm#LRZkI(PvTAxEM^ zz;ZpLG_R`-)<SP44i#%L<^{?oH(DA!#v}1um6^b;ZLL2;*412|ZiI2qm8dt6%~3RT z;F+boKERf5c#9f+j{W}YvbmY8E5*HeJ~1S4FDKwCL}**dV~^ax2734IOJRpIpe~h7 zTQo?$1?huN4Z8z%z!ei_pH~b;=Km~f%i!Wg#a*fVb^r|fNhr}WL2nt9q_}#<%k&C- znogm2Jl))WyPY^3DRbz-pZWIeDrl-#Uf)DE>gePu<gC}uOPe>@AHJO-@*;-{(;HcB z+&UHSAs#urlIh<_^;@M*rFTOW?gYnIFEh=$C5tBG<$f*@)7cGdXH?}DH9#!Y-9_pP zP6~p|Y}Vcl8fgLPyH6`&C6J6BVeMq$ub60i?!j`IuA0n{*7{Non+#(g7@c{E`a4>T zah(t|BFLX5ysFMmBy-@#B{!a8GTc-SPNCBnV4q!z?~tfygm7M7x~i$0P*EPBqRoIV z8X4q-*<T;-BxSk~EzHZR`$R4HmxLIhs&D9dE_HIxur()9<S^P90#u*!&n+pks0O)y zV0=)BfeRD!jOHL@&ad+1u<lKVkXh`5N)J~iM1#9~2u9&@+r+Clr01tCZxFe_fMs#; z_}KmQN~-16eQm^h{Soq6`&UKR8<gu*5D8D*!Rw*X6RZCFrAVS(vOfFgc~af>vWwBK zwy~=y)^QIRF@&g;H;=O6HoTJyY&pjCFzuSM{oNln8MeMuVrk>xa0Gg+0<|g-^`Y{k zBeDO*(1oR?oyXgwijX?jx1LU>6anE1#<q&bxrV!qrsg?FCN3Y+MO#-Z8r$@=YiT>9 zC8w)TM&XUEaTp+!0?aK@xN#f!ESmd>m@U#e)0C`@vRro4hi?!spMoAU&Ze*nZBv7r zUxjbEMNxWx)BUuU%s%(p_jenlQ{*0HL+_b|cA5pLl5};a5dP1iGv(@w`suwFcr8{G z2pNOQL`={4>j$(l1-I7tcjkS&LtoIb+$6S`1oVE)dLR>aq8vf?>JiPDCrGQlS1%|Q zc-yraRM-z>Yk}TZbgciXQ&d<jrTy#=itLhy&Q*ahobOV=Y5>NiCH>#7e=@?%w>Z_m z!GqjnhwQ>1JWHm!J*Xl_Z%If!T{M;M@mi%z(al6vW%fz7d*9$%Hbd0T=xY*KfudlR z*XlFD5AOT6?Zx@7>k=j?$^pKEk@t^z!e}%vQmU9n4&zWUr7cdjB7^P+E%+cpbA`|O z);c`OQnG1z%5q|~{GIX!k2+AhcOG7IJb1xp%+_$oH}vr-`QFY7bTY?8|L}H)19PFJ zuMqF%TqMncq=R7Pk+a7M&ooL>?fv8T6tF7AJqc)Z^DPJ5I}`JfVKRcbdX*usZLS5_ zT$AFni_1_!7RnpHs~oZ}*v=F?K$x2Mf>X*L9qWHrCgCe~F1^oK^iired^LO0p4usw z^{VwM6s#d6Z@8exZVc>*t1#F1Ja66hf6jTyg{%DQ%G?izvplL)<9Y#9*dhQ3uBT9t zawTE6O{6mx;+GSrJP-5)bW)+)hA;vpSdu67{vMbiT4rtmAI6O2;DQYu-$N}f=#A6G z41QV+{BmzWebHd{^i8ZVNLa_+xce<~@Rtvo`m&QGJHUW=t}3c>1t}b4E)@IS&j~@0 z$>XkUFm|v2l!}cP#b7TKV0=~gy;L&HpQ)-C!wgTMO&kf!pJzLadntNQ$Pbj>IS$8M zb$M%^!py#Dj{WrT-GY_4vRM^sgZhK=)anm5lpHxcIcLwN>!*}YAr5c+bZ%a!s3Y(V z^oD9vEejmPZWd5VJlH6|e|sz>Id_-)G=}Gy^71XE!|+I+D!s)oN;^AJHO+V=H8ad~ zj`~nB*tA#8a~PplxJEb7q~18IkN)zBXXflBXm~VYFb3;8^&rEGjKYB+HPp8i^d?=R zcI`Iol_D%wVXt)9wRjb$mSnTgA4a8M|4?Z#rix?Rlj?4RA@I%YJPmRjIiyb+#mT&8 zRjwNuqei%?CPmiW-b~y$%JL}VQ&)el6(crdx~elHy)OvQ;%$yU;@B42Gof_|e%mBo z$ORMnLRL(#q%)~Al%N!9f5ag@%QroXZ6)Dl@yUzZ%|X6?{&tHskIyUYko3Fa)+ozU zg~>MPWJm#PUI}Ggj)O>eRra781+)A64WKIluOiXCUnjGDLu{-w49gOvu#XU<G`KG= ze!pow*T7Kz>|HFCS7KEUH0ZETFZvhQs{pj}*!K0kHPC)55Zt~!7D#-6B5%L!6>nB4 z$EvigeaFqz=?HIF=h}U6*(JWTB)(wPKA;*Eux=^q;Sx<*eBPkYIpOyJSR!=%K(pQA zA*YJJUw2)#B`>l!CDwMN#DQjgH}9__s!<7`;~#D3=~20%8y#tPtfeg4UEU(@1+;Qs z(nUQscGvG&NdHb0@yMx4_JgL=NT$Pen-sqSc72bQL+>AfMDAXZ#k3)y(lhx#CvO=L zDL#SNoo9JDBZ>klYX_&}T)3fu{8Va_-)7y*TUhB`m{=>XZkJWC<j*YUvR)Q9ti(@G zHS05mHbZuFKhtr;$9e69KUAj*nWC%H3mnG+xpi1a!jQdp#g;nYkH#IF<uJzITy}7F zV_($uf+J14-KXnhb8oG^|NEqjAD^>@h=n{)UA+HQ&e7Z0QL&l3;Y%<Tw~Hx(P%JC` zv+0vN)94(n4?63?hd6=JU*iNYyph#EL>?3SyRC1vu$_PVro7?lKiH_p+U(gCL>L*d ziXctlcC7%-M7s`GIp{Xgp4d(nd5;Y+{9yr*#!O3O+Nt)qb1Os0?)=&Ll?3s6iF)^R zElkJdLQmhueicTDr?78y&etNlf06kritvALT!;}rp8+~`vmLLNu{|qTv<*{#nQUm^ z9k4#r>g%{RPwBmfd!h4b-vH&kz^v!B?65L_aefM&42td+#=I)^<?CogCT;%ykg2wY zD5`igABpI4hyJ650f}cqDiLe7*_W!K&^>uq6W%9?W$RqRy|gEh#efmv%Yx;MpBS%u zI!ZcR9sN2vGs;yJC9UEJp6DG;tXA%%*#8Km)onPIhysnDw5%TzTPbRhl}_sjV3xD{ z281lJypO-;Kpsyx5QNhbDtAh82;OsFSTf0_AuvYJ=P)Ll4>rC+AqfbWKtkvzHL+*R zesbM`;SWSB2(oirhxj|$o@HJ>?Rz;ashEit>*acmVp2%)jswErnzz)J8_Kt~z-mnX zLF^VcCqRd^_U_!h@&Z{6SxuY<afaOzb|+TSr<658ruTzSF^#ygH-ohFrR9^@F9sxm zPGF{V>=9-${=-t?DS2*Vti*0-cpqIk;r2EAwsTX1Y=1e69H~N*J;-u$;`n@djgEuv z^o_vNcV`ur>-%Sd0}>176q`8Xhoi)EvDT##iP0POKGJ|()Q~8px~+2=cO4J&q^?oP zzkM0ROvb|FdlSQ$W`Q*aZg2}YL%NOj5j)D#@5p4Ft>g(a(JO<}5LGsRg9Q&@uG1RI zTlEfS#m;&j?MP(}@XzG<<_PwgTRt$OUO??P&P}AdPjIHLD6%`qGvpb0YCN*8r|m|h z432*I>qt<kxT}$7x<y2{IyvHW!&Sgj#xXBbaAqlkn-gwmaAXb4_iuYhic*MdCMVUV z|5yyxyNE!JBh9j#K!9n(G0!>!ksC65czORfyd>aK{cc@#%z|4YERDMT-g4RCRvv)n z$Z3*~1-?i|gh%=a(Lje$PfhxZ*T~lW7q|+~5JLPVft8aR-sAP5b;V|%(08n@dWyE? zZ~)zow)h|I7W^T2_03L4@e?*t2!qR`2R6(Pd;+E;v0MAY8hrQO=F7?Yn1K7t<eIKE zx|!&Q?1VAX;1k+bPSTtLHulfc?~+SD?v9hpmBhG|;>QtR0u5**8@lpR6-QLT7BH3c z-c3Q(_yul#?h&5xZ1spT(=(H0<8ynB--_?{YA*kw9u9_MAg}oE$`X@5_vIWCrPwB5 zI?C(z{ex8Z&#grfx6U9c&#FDvW(=p2?1ZZLU)O^VT8z*s?oCZjB*{W^3lZa{NYzsi zP*Qrgn>XM%Bki{KXJPmhySPLV%rfJyH-dpr76A*wnz83<C73@>@%IzVXK335O*s># z*~2!R4!q_o!NFbqbgF-7T;TJRCgi${^rU<SXl1Cffy!i+NS^5JmmrBOncA-S4SiHl z*6{NR99F^hmr=9&VC(*oeiC*4_F5WwEkDTquffNNH%!}}H71mPHN*?7kaMP;Qk+Pl zZGphW=K8F}Qn*IlYQEz-%Q?Ss`z0o4-3F}y1QtYx%s8$~^EK?pdzS}s>$17o<9$fI zCKiZjZCCDOK?X7VGMa5&#j#yvARiiqe+aZz-IYu0zwWgJ+#p{}<Ep2FUYhK-F|L*C z%|^mKEE?nQT=z&IKT)ifA@520$U)x;e&)pN4ZC3Gnu_&MSBXQzI1Ofa37??v4iYJ- zbFi4ohhpUKruk#L(p7}_>eYwrJk+L_R+s3nb%jN@pp)6uQb!*9?`zbzn$G6(cGv4d z5<fq$TYm!@;hQ#oT=k^GrWMWJa?3C-QJvTyO;E-tV|1E_v<lWk>1wtUdR_+8O%|76 zg-fT)i*Y$q>t)<?o3sk**?Bgd5Z?HW+N1Vp3&A!u;pxRHs?973TE5^_*G`n>jO&>u z<MjIN>jZD2W?vzQv&2iov|`jPzUy1N(efTR0}*#8V)ySSU6QsJg(thkP}Y6Z1+QEs z3(hiWJ$X{Um7^;@o~QLjsk)<XYo%x?4BT^Er$f)m!e!q51TQ=BQk(4)zidFmV7=v# zF!R@(J!r1LVL|41dR6wcq}uK{HLBgaZI2{~a<-YTRge#UbOkP`>Fp7osVD`Kahh^Q zuh$-u3r-{_v}GaguvNBtry-~D$8o36g>6?Su)%<6Be$SfN9*s4I#daC6*(LM9WD2V zmbe2gb=(e-0gI0+P!ah6Q(1bL^Y_9QNw86Jy}*yn0+~UxpaFt(7t4@AGEaeKo6bdX zK5id)sinz7qY5enDL!doN|cE`+osBlNs30v=&Vku#VE%?n+zkqvt~NKYzMr{0+oIV z#jgmZV4MCCmK_^`PZhq2><&5eWAl~>>r#+Lg(QuzjemXU$G@L%zD8C5Dlf)mFce-a zFs=_+6nvCv6SPSQ={iKz(wwN}4mtL6_yK(gIa6wBXPcvm`*V4-TpwuME>*c$cOY}x zJ~4j~C08s>g7<{agrqTwy#uHli*>i;(7FXO2cqxgr4Y0Vi<9&Jq_m3KEe}AC;;)_F z&D?bP3hiQH-eUepy~edq5w*naVshT1mwaotFUR0{t4}!zTB0IN$Xmi`a3Ej%ofO<L zmup-tZ93#tfoMIuJrHjma|dZQdiSJn19w+T(fEb`w<8Um2DNETL}wn9r$x$XBrA%J zs3b?~zUYVhhFAR=i=Mdp^Rn>R6|$Mxtr>5(N{5+mp0_QrnSQeL)*)iS^`t3~ToZjz zvMa@QY31=(42coRp4;2vZv}ta?buM9mlUAu;Dh8=L5Rh9hfhH|YdHbROXYa0o!D}% zthucnFQey~q}>CKx`I_tVU+aGt28|ypRh0ti|H`+j4f#R-dhyE_{^+cfW@!G6Gbjl z1{F~QVk7s$%oe8exfYbQU@SdZJjCUfoc?!e(5)_siiaQK4^*n3-|h`bk=D!*$S#tb zFppA~TnYJtv%)m~@Gg_CsrFoBJ=vX1_0wqjs1v@7HC})nj!UrQs#d3gkdZxaff?yv zR6Z~VECFtHEE%p7#CwnGv*ccJuskm~!{%lR8GwB6XdJgDFwO+1i>>A1B3`>Xowo4? zM8}>OW2dAIlcehI4CbAAU3{veYp8E6-J+b!O*DGfKc@1)&~-v--R2)#bX}40@?m}O z7*2X-fd?Sg@{1Lg3NQ1l&&yy+HZ93-EFG|vB!Vo(U50qnviJt|foN&mWj1eF%1K*1 zO#H0l!sC9sK9&D_Oa5cli^5n(S2fKH4x&?36N(X~)NYUtIy6`(n6xzFb90d%9l58p z`NX))9g`2<Y*bt@cq=pL*pf@-J8p}dG#qu1=6et;QIRh@w(Qf?Gb2B#m^9Z?mk8#M zyq71?GV^NGOyxx{ZK*gAua_kEHaPEr->TgO8kqNev@h8~exJ5VRa4JPtn8FMF<Vc> ziYSIGwIOctt~a*b!@ou)94q`b#b5F)kTcA3!oKh{{Mp9kP++@J8yC@h^JdTOoPX=& zuz<#Jc<li_atkJjyfY3tcpVW)VwDGVo{ExgVVlE`dB=!AUbhM-sS;#Qej%!-l4*hp zG)WNqUC|XU-NWX!_GUub!HnKMh%$=l$3Qi)VrhC^3)}A&_d>!n5zjACgODhpk$oRp zD3M?cksuq<OJ#<rMR2bO*j|n?>gLkgPoT2Z;(m<?c6o2wcr?(cOajQ1m)M3ZqoN@# z;bbjrv@N9XGVaCP@#)=Jhtjn0Co{8tYB-#T-qhAb1cIzc$*OXBlII4?;O2I40d07E zjJa9DkxBcINgb5-==*^spuHwj+Sy$!loss21{+2Cl@Hi_W82^$TKWv9YhjZxa!eZ} zgvoo+5>dn2uT3UG?ZZl{U&0!#DpqFu^cZ>v7ag!{H7!$fM1oH}y?)qb7tqO{MsK<9 zS*Ofp#i@UDLHnmYB1#J&5;P-BGx1KpP0SC?<{l#uM=ST!#tDw8*R@wv7=JhfT2*kE zLaFoh;^1Bobrg6}th+P21u|bxy012wy_!7K(N}XbDr>`w)8NhB*{-lH2~q^|P>g`j zmC!SXYtS2kb*DGW;0W3ZIPl4{p6EX}Sv23yUDMO2RrXIQ_>2*Iuf-@a03oZV&-vI_ z$k-dcbdiRT6-Q76wYYy0Yp*hgCnr^!h+orwLz~&K{;_sOT4(<d5UJj<UonH58^ZCe z;CT9afC}=$@Xd7_65JN|qiZlnFG=bHtgAywrrUvL#;l$1&82C`ZNm<1RbQGc+}s*# z8Ex+N*`b}O-oLj8T`f(*v+59kBw~Jj=2xZmi~&UI>&Cmdh$(8=<uw=>aZ2k2Y3M(D z_~)``BE(`6sohfFN3a|f_1-~N7|P$#@v)Z*`XD)MrMbR35nfQG_9*ZOVNS4oZ~FS4 z_MXcvl}Hbv1<lDZs$O%YYE{DJ{3_<=j@9(3-nVb~@fJwi&Bo6K`w<we(np>x;eq)5 zZt;gEhOH7`fuV${AS9880^lwM#+B;sSRT?-x8C<QM2bNU&7H|D^|uJ^xzj;4X5NL* zfAeGH;BqRZUpr0aBE*sVrH$>K6^=)6iXXraM$%)3iZhA4l%nRT#WBEtIbv7R@O>j| zHPyZ2Lw=xobANaSr=9L%pq)Lw1w6<B?sS1)ZrR3JEj&K|WfET6haIpr7{e>2FiqeW zm<%|3dI8s}kRDcXZGp5I7(VsvmsmTQ0yk8z=0rk_hS!-qO{fGkl;;4gQpRNXQ^Qz? zAqf~EOz9eI=Z(=T-p|g3#nLH!mRnk5@`Ed5cLytq2)w~tBxkfD)i;*Alzd26V~k4e z6Wy_2YJ0Ff;-qJ=?d!0Qm2Wl7>{>!iP)#v2j5?FIJWYi$QW27`4yV<Do6Mx7us1{6 zARsiQD!p}^*-@r$No=B#(lp3nzGnvULwsA3#GEEdh^ANE5<ZWPwO*wfBQ2c<$d7iL zy$!EK1wdC~tx49hUv6AVA}*6m2+MX;Bp^Jk{dSL2dL+a_<=}|779}QEYMx8Q0O+Bc zp%MI##rbz1!8@+U_<wJo{@Li-*w1gqclzpp`TG|e`7z=OGXgb6t_nx&S`CM{f5|Lx zX0jYGm8c%kdho?J{a%DXw!f))f$s#{S$Pi~{*ZaS9&40pS>5i8#d(n7z34h*C^G)g zuU9<$i{iAFu4wme$jmz@6Xg|2yBMV)2Xc<O`ZdpjgO=!JO-a3denu)<EFAiaFL~jO zQtFr*jd%jvhUADb7r#KmhSHwRx?PS^2Dy^Dqg!M@aUc^W^LF5$9hf;3r=4hWeBGi- zz1)fc<0D|?$`forTK15X`8z+Sb#n@-3v`%f%pARu1gEixrwDAVcmBd0D|<Iob`qD~ z-s6qNWs086L^sKi`530=6>h95cO(<~j7eG`D-?`JQ=U1*^`?sJuFPW3b=G1b{&zm$ zQRohP;66?q(U8UyrqFS6KjBXS#01Q2<`2hG7UjX^(+|}1f*$Kso4j2<*+Qwp4z$>S z`wk13fOi7#n%M-o10L+Q0v`$G8mgh*^xjfLBaVLP2E2S|o9XEgBX^rx=^(k(d$Y1= zSN_!H=<hn+fi25`>gte?X9AJ%XaZ_0fcuUPTFlfbJH`XUJl-<?q4|z(%4w$Itw|R_ zQWsZpu63tyqzlv}Wh%9RocHJ}Vbo*;G)W>b-XGfF*@&!j&Lt#Z-BoHZ-ISe;V+?Oa z8k*OIPJ`s?Y}ldS;P(NJt4<LG+rg@x>oo^jL)F=QLpkufSo!A<PZVOaG<JtRHh$Q+ z00gP>9Oi+-T+7TuWIbz8lpLv#1QF1VTst+A+E~w(s2e@y=oa3-K7re&(dkp!@kC2^ zGQThTrT$baw7(7-wc5cA+HJ%ntNfn#PU&YUS#_G=k0jt$Fg-3e{9W`a`{h5YGTeCF zH_LY%GT!<a^*#$N6WRkWi$>+r9J$IL2bT_SU<R*Lm?&ukv%riAjAlV|Z(=EP`msVa zN_wcuxgqeYK>L0#EMDfdxhd7|E%VbkCN%LFs3nvPaZyHt7S$3DRA`;QyZ5-1?*?29 zkOGOb#iOs;>fAZ!j|m?8`s^F#9>mh2jeY~Qqik3j_$kU+Gw~Bqq0X=htI4Lz76C1l z10misBPK5a#@7BYwO3!rmy~p~>zHOr1A&7xQ>Il(Qx^%V{HDf!#S?}0a%+<`84B$I zaKZ%fOZYy^BK>Ac5vp$-@-^2Mb~g>ojATzU`Y4nvn3BXe>zVj1Lh)!{E{pSi!LYeo z5{&Y)78z#BmCaD9TXkcdX4i)uaBfW8LazOF^_sn&bS`>&&-c2w<Q6aA*vByflJUeo z+}?}5AU~6$pd*9>tJ8y!eQWIXw?Z+#xk-LKg2NLyX-XZ@v`GU>%1wQ=Zxhl>BbVR( zylRA?8Na*KP^9rARP1>_`Iq9p_6xfFs?_RPwt11jLtRUMk;wkiy2SRN;jd-mdU_WW z?ZyPMU6Yhgn}=4(f7kPJ&@SpWaxb3rGkQbb2Bfs0>z_v7DhoCXUTEm3h$N5<D~chT zUnVYHy}|xvkHM^-EKZou79UabChpqak?USvu}h^FTb^8J6ojz5r)%u9_FAQs3Pl0c zr;ak*+n-7`S3+uod^*PhkDjE!mE`&OmxF&i*DUnP7*3Rw?@(sD^0@YT>Ae5Dwr`RQ zYtD-fbYsV$_%w{VX2Rl9LXhsB<u=Wqxl83it<WU*ZHw)-4v#4Rhs{h&@Lwzx+;VWx zPYeE_b3vq~oJI-<Q5#47GqqxY{h&JsD!x{CjICcsH+_N!^4+DTVu1uV;|3EX7_7%j z@2sxy&gA%5?Y(VGNOC_Ztf0$FWIN%c=mHri9WRK1xIH7<;24h`bGe62Op?xQ4ij7* zuk!AT+EAMi+J;t<HSTMY3RgO@?G&B5BcyfCbQ4|jd;+K~vkkSb!51hN7&2r<!UA}< z#Eq>v(?4Xc(yZU~NtxR7S-%zkLccEW@=FO-ws92<s{5W|7x#^-Zoa!J4R}aB=#qPq zW-PLiWm;@jx^m6&0I}3hYp^FqxS;brdHh2x+b6G+PZhC;PZ>{qD&#ZLd%z*gy44A_ zlZb7h(t?;mF4vm}t&9$ps|`A@l_&VypF&8+TpuZ9@ziQ`{OO-Wu@W$00WJ4(V<3qJ z{oWWxbo+6;M|~@ebZIh)rnL+BvXg>UI^4_iAegD0J)?1l7dJcfg<ruC$s9#IZDgcp zmTB-!OmdXDJ@-}9k_wr{A>E5#E+9(nkK{FHQ_(=r@4O*c3p@8<>Cy&ewC&tCX7yCJ z(7y9BOufU{4SYHFs2c-M`?3>`xNX5odAVvlMr3ec4r23!e5GRbZBj{|%}ujeIp^PQ zH5bm{2J&l}KQn5w?;-=~0;yd<eD*sVPsRq@u8AQ=%V;X6t?mwOhX!;g$+~*X@P<eQ z<SG1iu%=KXl8-TiQPVa(Rplc{eX{mhT-QU?i}_p@{?4#M^h;tiaYKmu77D118{V0! zy@Pk~;Hco-b(c5>y|PN8SjBdF+Z|`d?y4h|&Hj0W9D8T%UL*kviAXg|74>wIWN3#b z!ZG(F)BZjS*qJFZXJA*$+IK(4u9M=#oSWcD6cJQ6yQwVKL|W;$+$ReO^yj#xo_If9 z=JRioN)NYCN6INhh$V4fvpOlDX>e{B9M)k$75r9}wt3i^kKw)cX@igZ<Umh`Y-3r) z+-A;nUAW83zI2Zn{p6{=0qJdZfmLgC$14K5U&+yi#ha3^RhCcG#ue8NTt3CPRC@E8 zGqg8>kGo4b?gMT<lW6h|vZ8w4AZBv5vBeDMKIu_8N^fK3YS|Ig$hhrnXTiJKTrjRS z`o<r9!rzNJJO^BA7*=!n%1V!3b4kk-7(UPjP%^G?s&b-D<VP$BCzl$O`0O82$Yzji zbG@{pL1|=_33YVV6TQ0zy$8tXIHl_Y))W)-?~UyUzHH9LG){&l*pNKJLRNAexNWA) zBlWP5)LfoxN(NI-blZ!O4)MRd#lIj7%`KvAvTx=(*heh$w^GnjvQNyrS2{miD}R%@ zI1XvgMegoM?>*6b<<x`nlCY&suP3cKrtYh|f8NS?IjD1gxlj7GEOwZqHf}$95zIqs zi(MNspE4(zf43qoYMK#R?-*4$(zS$N%zwi!&mJQ6qWM?$WovzjcT@Laq)!HqkY#0` z<4J4uY$fg{l@hlt-NxaAZ$iCXT0$;1m5SR#%G%0ROh1wLwomYjE7aU5(=9DBaXW@7 zmf4jKBdb!_Z=dkeJD#c5zK*u`fGNSFmP5FQn!M9#X*jF1gT;NT;$S(HJrnB)See2e zbX9M8ORExpA{go9aH0n<dsI0y%i|^6V<&3Muqk1fG5yh1o6#*PH_0Oz8564%@M`(} zhsw@<!x>JKe)0Uo5p1#6>9T%zrmaP}YvGc$w5zm3A#Fp?aiHI`Lu-bS97UF2M=$lo z1?TgVCJ}l`Z$?#GE;Cx&u^;vH9Q<RD^qZW-uwKQzWNK`*;@_h<>iiasvYyROC$#7x zAkS}p1K1mVm7q~d``rxdtKQP>S8Xy9`3-Zec3n^{rC}W)V^?VJomLS(E#{tfJVR=V z?cZu22h=H^*tL9fz)zxGNhXI4|Dm=bVuEtnrma%V-H{;Tv8ZnP9VMdgNmkp6_|P`( zK3TNmb7@jt8+x|Ep)AFCGQ0eFqzu06bNP5}+i@fK=(@Sf<fq4CZ}<liq>}jY%;sM9 z4VzWkXkRw2_<naV=m%m8d>4lYx937|j2^K5Ih*`rZ&6@o!pw$$P`{-F3|aYr5I=|@ z;85V5WB!M_O$HQ&LvRQ<d~Igl!Xo<>F=n+P*AGHI_}#b!4rIH#UzPUesr$S~12&Tj zB5X`QynQwtlNH}kMvY-Sst~cx2$=`cFjf>KLD#rDD~_ill8JcP7iE6_0M<+r;{<so z3}A6~Z&Y!bBVWi<O-N;UV8lJ*ROxI8JQEybmmH@OWSKd0@oRmT$cr9{ibajj=Z1+p z%Hk=&N<9xGH_zV7K*K$N`l(GeOD<A75-k!IIU;+UOM!(jWA^Xr3};cuKF+0=dDNM( zxN3|pSgoFPtaBJfs%TgAAq?ylnF4C;jaKW^UA5HrBarnGkW0Z->bfzq6CykT1(Uth z;jY}&;y{$}%G;OiZli{y#4t7L*K}D?`?#Ih<%su-AD}!I`5XM}k{ZW?PAlqp@PT)6 zUOZGFH?XSsooD;^vs4GRtEAR>mHAN8u8U@oJj*CX5EU};Q4=6&^8TI6J3)E*q3Yx2 zUfmtMZ$)Qk*&aw?+2^)*RIQ&v&oDhq`YG0ZHq7t`UB~FclKS25p}keE_G_zoEO@m@ zmi=E;c?|-AI2M#7_k{&VbQl}fQ%8-w``i$VodVgud_caD@164lyQr~`jdDctC?#Qm z7=i6j^=BKQgM=B=>viQ~t5uoQ?^<ifFD#61Myd<b3-Y~~K_tT#L%sxuL>)*Y!e0}g z;$pbAn^|^?kqQSMdh9iaAM8H7X_XLbf6``l3U>%m6IwnfC4H5@F#Vl~I9b^#Q#r+Y zFn@nlepQ`B+PH9-iEob~m(QSZ9TR;E@?AW&qdmVel6?OuqoVEF*p4hfGnmuX?SB7H zzatX?N`{0WMr@tKINXf??pB@^KdzIWWh5t0{4nR$V%(g?9AMflw|>v{wpSnK{A8Zj zD_XI}5z=<8h{>z;pYQYN70%){NH#a?63#XccW6cUXTX?STg?r@WoFj%tY^!)73m6A zIu^e?Uhr)JJL#|Kom$vyvU(brW8IchtPfXi@x&}x1`%>YboJ3ei}CD({Jg3I_cNb0 z0h&u8dZ(55*D-T|JpBjB3ALeXoRep%vxDL|pM=#Mh<1@&Mf3;%7gkDkK)*)24TN8o z2(I&-b>!rRe6v&asspThzPR2%L_u^HEhxDHha~$sU?<~c70q)gXX+Q!HryeGpeZXl z^lolG28v!rP9@xq9$aWR4|mEaNnQnTYp8d|R!q8{`AQl^7m}PZG3f3Zy}8j3Se25J zDC{G{-|tI@bAlOoES7PGC@*j+#KY)Z!V_k?yC2^p1NnRYYU8@G_o}FRW<u2#(7Z=% z0C1%#ct2nc{mEZaIPgP}gpO$iOTH%-qUg~rBf0Rdf+|o%!JEktfrv{|M|mCRA#W^R z8a4coaYVtxlX4xG01|<-9B)QHlYD7%Cc*BNSAOjz7_BhQ;Iq?$`%?I{Jmjl;IVCGj z`18tltZ1Q~K?Ug!yKg`XG(r8I6w<0OmJvW8UP=@X9PY8mJ%(lXCOK~8#<)E84T~c> z<?x~uAoPtpB1GBL>&){<oCt1Z)Y>Q>f1D^TtmgjN)dQJ%KKx=mN+L;BXF5}@nztd% z!R}*GRcdutJ#ViRHD6$TE0#UVsoa8Pf^7k>KH;-hl3wBRl|n>h{FYPj_~oxQDvg>^ zal|z}kx4lT8hP2(uNx4rI}d#1R)(Z(1i`s%x4?VaNI(#8<VGe22|_HYAmmsj<!P-x zDFFtVotx3@G81}Oar$|a=l&JF0+CKTDow-IDKUk1QOOSSYbiSWw-l83g}3QQMz?Cq z4Ypf=`8UG0zPiF$v`-vC=j3I{;5zKKmT<&i^y!yNWNUEVXeVu2gbh`?{Y|qdwMkiB ztB5tQ70*=h!mIx0?7&q2uvA)FH`9UreBv|zPQ>9;kj&dtjk<E@#>vwk3=@pLi3c1r zYpMf+Y;7-LVzEBUA-@P}!}<GkbPaFu^qvHW;xEm|z92+3tLKfLuCh893c6Az2Ynis zQT|hM`v+(v^d6p707Vs5cTY1oNt#5Tsuu)EgKbOG*IR3Sy6b@nmrH~zNKPntjgSP3 z<#2sclA_70r&44>VjjJB`mZ-5<s;x0vVadzwIJ9DVLu2Ac8HbSNtVkv#^&wdL663O z^)=W5545b$Gd7Qe^Vzn9lSBsrP1(j4NaVTj+Bl0dTq|xM_%`)8HSF|wjM=*v0tyak zB?Y?fD)91{l@`d`ppbJ?CGzLbp3{B|;$a|!6?tCT2Z}<o*`Z(hO3DcDYji+PXpeTj zh6hR!!M61|yB{1%%px;*=0gGDtMC|0dJ<M*W{HpM+`%X~h?4vKE#;lo>@bE2l=58k zJvsu~9ibd`jvl_6G@?9{$g&o>MTpcb?g7BJ4sbHq2@HVj2r!*J7Ouxp*DMm}?NC;` zV?>^6UFzIUV}1Nq#L$AE&4jfV{`-8dK)wa@>>7z6Bx+||<jLXE<m@Go>2P3ziZ)Sr zRo-(wb{LQ$*ukWyG{l9=b>|M`=YY$~wMh%Ar~uliJZc-=9~K$L^-`U=NC+TkjuQ#y z>GYb-wO3kxem98Hu7PI=Q4=cVlr0s^Q+}4oGvY0cw<7R9z8#PiZ=4{49+oQlZ4UrP z#`nRLvG{u=d;3&XV`d~yFHa<r*&9sS-kXq2%s|%CR!Np&t6UQyl!O-&Vr`vbC#<P{ zv|Vs$T<MFqh*(Ek_DX*khsdQ8>2nX{FtRjXQj4Mr&KQ+9=BoA)UrFk^5`jzla{}6J z?Nw12f^Y&)1d45T(1hHOg!043%>3ajsT<dZmY<$7=+V6RT1KE9GklogcWSGVv^Qed zSOSgU^!a@@>$J}~#O+OlmfET^OyAdH)alV&qE||xoRM9H!q8u0gz&uJm<P$;Kfhei zn=#x7M&^@_5S~(to5nr1)$RQjy|{eA`OZP%qf%y8Ec1x@rDR6&O2vnt1Nk~hGxxMU zRvUI7A1}n7!J<ayYh$YnSyvyD&~F^Hh;sv_YVmXIK=j*fuYy&-UB@&Q3{Umc{KZXg z-qUM_t)3x5RkMC)CJGrQ1gH6|s|)o+YcE$tCW7Ktf&i8DWk}=vg>{~&f6|-J5g!gT zbw&rBTH=86v`lxP-;e2*Ob2HVKxvY^F>@|HT^~fa=d!tQO~&lmHKTg}@}QWk-|+7$ zTBFdo{q^s<N)x23eiJbBTv&_<W>T)(n?18(wXXIQiSUnFgYrFHT^?M&$OMoGN_Ypg zOOlRhFY1j_@E@%xeISFZf7ucPZ6$cENVbl#M&FC(UNLuSr&HSH`If?|q2sES=mP)F z61z{lkMA(4f^GqI`9-~021p<`xbxgg)%ZB;c%;3HC~my-Pw{XX6&)cqcU(sy14H=8 zm%mJ{xQ~+pV3(E-Kgf`1mhM`lB4!K&iVr+85C<9zTSMPZvH@hUzkIdhYr%iNMg{VM zP2yvJvGYMk;ICe*rS6VyRA24eCLBxwad(@XGj>Cy<V%*Q{f3af*Kz;+Wh*}J-m?W1 zHOK_4thX~q?_^~C_8C4gn$Q-K1qO+N9pg*0`Y>MN{2KJ8K!OsjGYv@+B&eI1c#R-( z1|UIp1Q5FJ?avX^yOL!tC*IXdR*-JXffKMm=EN!Yz!0DrpZ+FEj)i|fMtu<npX6wK z_tZ5$<lf%y&0fJ6J|j6TvtLdw!~}#SFUPS9yKX5>5np{eRen%>!Og)V312=LkFW$k z?Iys$9AKZ*$~TyZl7%sFz^zgK;C6?;UiFThy2V|XvJh{-uW4MoJ82x1%Pj@5Jw$Td zbDN7i>2mZ#gZp^PXm;+K)r@9wG%WZ8rL15Bcet6OQK5#4GI$DzH*nM=waU(vqQH&z z8_01>d8`W5)p~=Ysx_Byb02D}Pe3eL7%dfaiW^SXKT2joW=2&B7m374kK~|2vGVGU z!6JiQ5=&RSJ2~<#+VaigUkj7*sws@J0zp2i-a#s(MKatdv@)_c(yF@p>;SC3YQ20R zBoh-*qw1^W4jKlhVF@G7iRVayoZdVmabI;(Q9~1a$!H|}(j{?5xTg;3rL|%n4~jM& zv8<C)x3aAUZ&<y3(f-DA>z$NJDbTyFZ!Hg*^S#E5m&U|u=$xmPsx0U<3NafembC=D zTU)PI3_5?t?E6c*`9l(F_jwmZNJ=&=x?W3N(6U(4M1;DlHo={;)W^ckRm2y4d-YJi z<Ue}6{Gg%oGcU0Cosn%T`dhDeegUp+^}|B#@QP(JUKvm270urg)P_AG*H}F2j*JsM zUg#Lgry#fGuA4;>7Nb*{a0K4W$9f3*Qg<~Cx6qrxY1y9=y9N8rU$VMIQ>vCQo?d?j zU0?>Q7<?vd;y5ay_SLnP));42YrhR%r&(~jTS*vh5yk0AEo*<##x6DYl3?%A3ISGq zD91Ogz+g69&bY%C?;==DxIXxX{uiC6e@!`=!~EE^QH^bO^h_6t7v8i24fG6Nwf5Kx zXwDXJgP~ac-t9qAi8THmC0d8ag?wG!x7jOuU<=kN{ablJqU-~Ml`vkQN=P<ctJ(jj zg7q(W&VStT2w*s}fr`wKVm-ZJ34BggO8IgE0f@PN)B`;Jm?n2T&iu|u9qa|zuiSzj z@=9N&_d2rI>$a6?I$^##DntaNv_-%N;qFh^R#%nuY;CC^He)`Uk~gbc89`=*40E4+ z)R{>CA(NKn5Fkym8^QG5QP4m${nk>*p;Br(XelQ{yKZwaWAk36ImEn6JP*+={W?U^ zc!G(fM)d{_*TwSfQ@%`9n@LN{U<n)M)P?~q<!5OV!Uu!Iapj{z<*26Dx>B6R>;p?r z*E1VIClvOBjIZ$xW%Tt-w)21h3ORkIG8t&@IT$%X%ql67`xM$56VW^_^q#9Tq|z4z zTP?pU_nUyC8;AULu(XPTr~MLLka|dG(zhZycIkbx@T5H1-vP&D?+bKh3afL-O7c>Y zeCql#HJZHN$GSR|EOB@dy%Va)wA?P;ytn4P9;^R}XQU+IWs9h{#I*Kj!#Hv`we;$Q zbMN}qQzJKjsUop`UWe$*3}>~0EXnF&dJ{QuMUTO%_sZe=TPp5rG*P%r!$ZQ&s9zKp zLDtqCOlzk(8Y(Xr1NpD7WoIH|fh7CKUhgS(KFE(|ng4oxE!2ld9?tapNAi~ZiHDe5 zM-6J=iJWA-QKOT^u=>%F0Kl_u402WTSK3A1M>-sge{B3%ky&t#Rl=T)7z@kMJ}_69 z;HV90)I?n4e30h728+7ag>PXC-(r&n2I4oDLC7H0{)@(3+Ew-_Rj9ZJSHpLrfo$%5 zQCGH;Z1q(G%k7sF%mW(=V!lZUPXHhnD_^bE>Q%{L@FUfd%0CUie-wGZ?d(4gZmW2K zeZsR6;0f{)Vb2*etQK${lyT-0Ms2imO*upAPv>sM47N3(HT0u81Zj+vh;4akPCzmQ zExA+n6@3t(7Ez4B({<1diCF(ps3cQs_4p5gE%_5Dd`DP+?tANh{-6Kl(*)L1GSS_h zYhb!?09?dw>?QlC=2FG1-qu-XE-*v-j@-!I{TFotYN<k9lB;u?ssb*Q&2>Yq6w-76 z{pB%xfbom3x8AW1h)sO!RMfh&aSL}X)hKS*_wR`|NCr$rx8OI${|T7-Z=||VI=m}Q zY?#gzz$=lEm_YYr39u5d!SGNeQ$VRivJx;i%&hqaffGQc_XZ^PdNGe?6Zj*&UV{tC z0s*#>)YYq^_dz8O^b|ok0IG}xC?q9>A?=@K@%`JphvHs69lX1mivQ(l{BukF`w!r$ zl%7EH5FTqmidCwuP-|8>39fPgI=&#?{V4$8VaHs-{s1=A_1_DNn-v2L?XirE`59i% zv+ocn5#RyhNb{?TcP=;MaWfI7ey^YQ4S=(|LLwdA#H)=<Zv3}}$t0Ww7(C!2sO5wI z!QlDpqwfbb(>m2t&H!IK-=HIkX2Iw(RecpGyXJ#rjxYBze@}H@yw+A<W4N%&KrX|- zJ=VS#v+)Nia`jD>Zd~<K@+KbZ{|^Sre>|E$1KOnR>T`z|J-zktAD>&M0aOos#lKKo z03*;N89+>}t37)U_!1w{;2vPR!QWE@)^neTBqsl}B=P6n{@b`fHU9?YRc30?KVBV3 z8TwB$Am6t?WWcBQJ^zy;Sae72&ef#y1r^2~hAydKQ!ef*I~A@Mi&2UIWh+d@fRs2> z7XZqWyyD_BI6svBA3TOYY~YpbFE>NyKJWyAKLDOK@XLzN0W~)Y4XG0gPoPACxvBk- zav31tl@7|0gaE2Xp@;XrJ)Q$-cx1E=m72MzD`+7=swkPQSd4!VN=(Hj)UR{m0$i0) z@)VLnbikQxZl{%^B>weJdMnUi=&nV=6%yJMD9!C5QeN!=D&3GCz9xw_=rFTW?lblh zG?~ijp=He>7T{#^K1>yQPn>jx+}i}0_i7y*QgAI-tEO&E;h6-%27u|rD*=>tOfL>b zGvCG*UFfp|MZRPJJP4a6V(?@Fj)M$W>?TLLVd}rX;s0}<nCvqFzyIocyTr$T|Nfyg zcmSPu8}p)rp8ARj_!mh{bU7I&697Er%Nu~(EMx~D35apm{0N%+%dz(BcQE65R?^PN zN+!h>l?p2E{>k_^@Z$0}@tJ^|Zw@U_{$gmh=EcHuRqY5;3IZn2OCW}pxTNXQ3o2;! z@c6hxnqe8RR$P(Uj<+Abn*Duwq%H@b-Y%((d=I|u07%4v67luITnzB!(s_riGr`be z-+h3NK+<&jt>ktgSnM31@mR+5_r+1eG*4OEjp&yb#{z#nH7rFhyKX8F7?9T_f7J!+ zI_PYaSc&yNH}?c=b+>K(=SYm5HR`~)|Fj(ZKSojWsytBE!|JZwE&F>k13rzNRiMy2 zNf^#|MX6$Podx)Di!(zzr$?QzSk%=RmB9<Z0ku$QnLJ_A19V>A*}Rxpu9Es20MSw! zb%iSgK>7k+V9(RFg6US)3|7GUH|;zqOC*YQO0j%HtgS9;i4U4!o2j(%@XSJ?uQL;t zyuK>(E{OTAQQ)<HjvZ>ekwQ#gad9|VXWax$+0n@f;ii+mOPn_k-11g?YkT5?ZS^h| zB~O7dNd(%5sagTi#HE01qSlXIbxG@gvU&vegTZqpf^S_D|IFg9P#hy{Bk=TVtv{0R z)--qdF<z`H6G{BOVmW&5v=Fr-ChZsUn!03<Y0<bBP&bgwya9k~#Q-5B?CfvV1^a~F zL8pK;H(ZLx))~lr@9et`kJwQ%<bePgiXR~5@z1nhiEwuSyJ#5DnCopwT;?shSW#i_ zj(+VjqS*q}yNjytP+qRfXxskVLi}HspsT%Go)GZmhTd1>VEnV2Tv7xAIJbNDRpV9+ zw-10h!+WPzhLrUtTi%B&)?YNbk+_q4ZDB?FH!=XF*!k^!e(K#TfB9w9oup?1hDOIo zpwKCr4fl2dgsvn&B8qi+*o5B|v+CB*`aSid%TS^k;aMNSD}rGLg+z<29xK5npa&m+ z4N(x3xP7DQ7yy;IU}yk$JJ$of1)i!g7N12Jqirpp_m3+IC=Px-{rs)C!Op2VK;a|G zPbSa_42`AgADoou#GI*#&|LH5ip+~%Nj@z$%mi;~Gv3vraI|Yt;&hPi?f)y%*fZq{ zuD0`D!}r6tCHZAKf)QY-_H`Aae|K8|%pnSZa0rT(I<;x0(lILB@ZN41jd%uBeco0R z$!RT!x&W6=60V|3Er6cLxm!(ktVYY!y8{%3sCMj+08rm#s}W!2pqwe-jiacZa(OTY z%&68dsr~GBUw@#!(VD1hw3clq+9_C*-+9KwEJK{0Zh=*#cH4D0?XxafI^Hn;eY+T7 zB*~<)JU$AgbzF5wK!kf}#4M;%#l8a8N1wwuwOK&7qDD-C!988OLh)|}JX!*9Yo=K| zno9fn>_K78|5!0O>j8|X(eKsUu02tL{ZJeHk7*qvEHwAUUY7P~q6SRpf~Wj|`R=7> z)R|cs2XKKTcYfx~E_UrKQu@lAWiuKA@W(m8YH%HOhwsMv+apuycQGD%QvSO;Ny-XM z|9{|d6z>&z)$pKb=<j=dGhF5e?d-AA@#Rs|wgpG{-69ma2|Wf1Od%`kmITu<DLRyQ zu>}q$gFi4)%LWC6AIwqsi_p1rGBbF6-lVyr2i5=+nzn$Lkra33M=*sWo!!yWR`u** z>DxT~lj}k4$^7P+*~>#=3aT^=euA{h6Qn4Bk!uA&&dZ|-{^8{4I^fhm!#4}K5-1yw z8nzQ}{G0)%n={}z6Pt@I-;+>@MUxZD)&a2wApjatitY-k`$pf2_=?6`1KhLIA0_X~ z-3BW$nah38HL4-cVPV)lzS@7pG)w6<qlEyIiwGapQkDczXjj#<h*KO|2;F3F)9Q>s zU+^}a?_zvh`T+Xy&#j+zvlot3FJcFa&=P;aIRQJAw{L)S9v#S?@ocOEFJl^@{TU=n z5i$2tuAf#nT{r}Q_W=X<kZR@#;hHuh+K;zkUyGe0AElBB&IDo;>lt%+VgTeEaoSqy zKC&5?2o*ua?&Vdf8=is=i+{{XWWhT@e_{x1RgznPBL{Ov#H!U<zpps~^+f}vbN~dz zz18J=9wYwK8Sf|1bf5$9hIUS{_YHv>;(rli0ZHgQ>REUlnhhJc+O?LS);~!*_ik-g zQQ)!b@*@sqN~wf1sF>eW%?tI%VIyQ+X-9Nop^fqva$X&2Hcyy57`;}r)i*<qBQjPb zHCeB^7e`-nUb@kLJSFGq4g>is7OwvPPfvmWhed%6bj1|Ijg|3S+)!W=lp*aVS-b_( z1m9sIott}}pJL^LVKn;2bbW5^3jWWvAFtrmMQePYR>R#G$aBZ2vZuc$|9p;mOk}!n zMb=vhl$f(5$)Ro&-34g*)-_28iKV$fI3M`-FY=mRfgX`Le6t_G8F|~HE{ws8gATbE zrw$ee+>U$IUi!?gvJ$PdH$`Mz6_{A$KDAKYB#@~mir3h!+AQxuNN~yBXd7m+{Z!U| z+Y~s1yVvjFsL<4G19Zi`eJ0u~TB_PfCu6hS<W-=jNK{fgur=2G@-FnlCFzbmlEQqF zYwqp2qBbllOKjgl2B8*J#-6Ak(bF~wD589N`NcpwdGP>yBGHd3jeF_aA`uCLqgUBc z0aJ<w`Rc#c-LH_ee*qKnHa=CT!+=o6z099HF4JzKZt-B>0Qazt(t04imMQ~q;kr`< zh9i;zy$=)Tyv~jCA;3(yeKPy}W6@hyRsCifmwDi69pH?=mcn^ort;wsn<GTD0nO8| z-wTxVBB67idZB!@qvXx?q2RSH{9S`)2ioJ;gwiAiMz?4-L6sf!<=S?<qQFgH<Zxb% zoIU8w`QW`uLRZ+f;>=6%Wiu$YWL3>CH|>hctaQjkm75gz7XpwxOyMaju%TB|5k>ZY zbNkdS{)wA{<vfu&cj3<-_J2RDC=ugTq1paLEC-a6N;2U}u7z)N`Fz(NV8iXPoqSjj z7=K9chNci-5VjtxNTMnJ<Jm{XWlEk@BFvK{QW1|fN@az;^_2kumhS;C&*9q!zW`%b zl+t3v@?7zn1W{D;!in&_`Y>{DAJPQaXOd>@j0kg)QIX4PJgEf*HVQ4cw#m9*Jg<&3 z<cR&qWqpTcq#u-Xa2P%iij`2mXDELerMHGG1-D=&H155NlQwC~@7z1ijfrwiZnEgS zyzF!GTkr(VEBb0k0%@3F`+)DymsrpXwUuF9pd!6@#Q{6gcq@W^QHHLLUO3@fzUX@) zsDV^-du}oA3B+|Oz$leq?n_Pwvq0PIsSsZXe!n3A2*!qg!q)%37h~W#ZG+0OVPK{0 zC^rV$zj74b`fKb;&fRSEoJ7z;rKhI+KiJN&4vc-X(t1s6J*$EBKLu|Tn?HI&#Mv}* z>om&mxx$od%`a6$8dKq?ovZC-=SkUFf?>}^cl8d=j*9Dkt~;buIb~R;F<57(<WjEX zAnl{CkjWR4Sl2juxR$ffwx41F+hp0@?b7mx<fDE@PZ;R`1HAuVf9zU$oB^7DiFiyv z%s8@r65cxfl#7X1@UYa;N=zkFzAW2w<-D$$DY7mcxzG^y=;dF$sbNL-0{D&c7{P5@ zY`qAXh|xa&jS&FGz3z|ZKwlYYBbXIO(+a9>Ouf<zbzL*e!9~kyPEs8?;X6cM?6X54 zw`B-=3KVIWQe<ZYHMCBK)tdS$Oi^%vQ<f7F5e>OrvzD6eg);?g3|%%EL#dsykoa#A z?r2r<TNA`>58ycd6W6zPfg3lk8b*#q{7a;};QN41;uOI2d8)~}#ZrbI!Af+B&b{8N z<l38|?lU(Pa*B>N;C@}X^0l525tHb<_Kpr9DYa%*ujII@CLjPnmG8$@*SRvsQyWvf zU{~N|eV#q~9!W=!#@}0p@F=(f`A@gfI@8BVc-mYl(ItLc8vdulazmNOkjN|M@nIG2 zERlhAd`kAy7+jfy6C$^m8H7`L+_t4$Q%D}kmr=|y#0YT{<Ubzec1GSalXfBX><n2& z3M6;@-)G>Tf7y?@0xP{L|6@35ek2zFf4>}Z7i#-Ks|uuHyNE|Y^z=1&&ZZ#K&x;~* z%vNOF5d*qWJ|Zy_^0Hr)eG^#B74>cCU_LNpI&fIN-7!SHcfMrmadpNcfSn<shW(UU zNzPFy$9ot(INzhSH|;A|R7hq<;`cT)O}9Jtj2m|oOHjbILjXG0TcWW-Omv?^2ZKw6 zC{F}i#qX4&_JMQVO9R986_DV4sDT`*HbpDohF>;)NgP;@xy~h2u3lp;$1455xO>mI zrnYT;SP>+GAfY2Q3DN|qf^>uckt#)zF493ndIxC|s-X0$7`haZE=3UOf`EWDk=}c6 z^3HYk+4r1#@7eqQKfmAnVF<}ubIm!%(*{V-@vqQi3wnRe`TC?)<o7ujbq;e`SMsod zHea66YpcOeYZdr*mLnNvdfrNsUHs8zVq|aH62aMp=P_pWHnMir`=~#IQ~{58Znx)i z1Nm0m-5+HMK6}IL24Gmh&w3DRU6WmwA8!iM4mL^#aawG#jo1RF-<2!LE1Tfv?$tN` zev&R$ClzTn{GAzwP+M?lN`0#p7Q{EPV}f$JxXraR+0gh1RP@`zkC@Ps+}!ScgJEVR zE^HoG^Jh7l3XEG9Ud&zl?y?91l7_bUf%GJ7*+O=o94XEVH54J6b3Q^3G-ny_$InlW z^mKOozwER@GHw8q8e%l6(fboanSehqkGq%ZesS?l7zl}Z&^B-`bg@gY=kh7bNm4># z34s5^G%N@1>8$2)M2oi3<LW_xX>YsK+%Sg<fW6e>y+Bc&#)|Jzgx!El5YM5g?Z&39 z3U8^NXJ+y2C!5~HbadUfrX%=VSAN7>KXn9YN3KXDx+;d7dQX@eu%0HZjBd_j90kED zB-CPpk3pEW+9yubgWtahr8l<cJOpGaE*NiD%;Th&dYjY<iHk=o45dH;sW#&Qa$o~I zz??0Dk#qa6nD7N)GV+JdZix*UIC)61a56ppbiPsI#zkU6dN4|-_TignlJ?Z;Kki_m zRy;ZXLzJV;f#8+kNs!=bt0c`xOA;i_$5$NFDC<qQot+f+^8i=hwQYC{q(@&c>lg5M zR`xolPQ1_1rRc~f^k)`;t=a3eUN)BX8xY2jXd1Oy!=q$c;$qR!f0tXaV|3;~$o_>1 z*w2X;?AvM!@dH?09=~}V7;I@@<6Lsd@7{!oD#201h5zT1k`ThtqCD?&{!!;Yq(wZO z^!^OsjCJ&DSF@1&U#>phBEr$bw4y6FvIoOg0CqbG9xqa83}+J*5oI*Sa;%%E#g5f= zAASmeMbOMty@}o+TwD&OF@m|faUp%PBy>4?o-P+w3d4W1{Jcv@7Rf?XPSK|1j{P_l zc74Q9>|Kvs#F*JD)iH{npaY&XBH|G$dxZq4-b}5pbDz1Fe&DNU1g7~RF$uA$fgV}M z8cRW#G1-2+q3du3kk$Kve(uzB<h<YaA*ci2FTp0<ZZjFRZ}8E&-zJT|D{)?S1Gs(N zWNK|>^(1DZ<(dE<Gp0NS1?_SNZ9EfN;%dE%I=LOzsg%TCyK>XTyOOV?u}RRYu9rFt zzc`6Zb(3hg8^y*nu)z>YqcuV>0j5;AvabP-_9<A$qMSl!sf~k4hbNbV9WN`SJbM~G z|7~-+m2e41kp!OaG>Oy(*FWyf;TCQJd2)?)hx7m3J0Hd(zj+Bg9RJrVcP{utr)MwB zt{3yf?v=>8La*$&0_wStp)G60K`^iPn?-lAhh~XZpEInOe)qkp$e1%Me(N1W<{_|d z)+;exu3EVeP&wf%u2(gBFi`A!Gnp_aQ~4w@W;4^n`MQMt8=1Fo{I|g`cqDonCqOo@ z15{LVN5F)CiEZ5Eb>0O1_G6(J*bCjWezbXfS9Ljk=fx-5Gq_Idey(JCAi^a~ZxJP4 z4HW=DaaJ$pb}u%nx9Mp`b9>Vh1>!FZz-Fq}kdr&6@XcoUMq{M2RfGH^T%(m)gVmcv zNp<<5r(IZ?URbixnZo1nxyhdGGB5=Xjk=(K!g@$?pV(`WyTk^fBTs$^yfC<6BvGuj znEk?{Ur5tHNYf5?a$*Mzj9D(Rb;V0=Bi*1|W^4cvz6z+vp2u&BXV0uG7rta3u|PdP zmb&I6pZE^HGd9N6kUefO5ZpMqLWaNrHus_!F~fbGffu#X5zYEPZXEfPfHqi{$!m3< zvu^VD?>n>K{`A@Y1)vP@7ysTc8QMYuo$5c^=F9i+SuQ2&l(q%@2AF`Z5-gDHg1`CZ z7aF%x<$8%gRU`jg6Q;c>z>Cb`7kmFMZTM=cSGG~oE1M%ss*ioZ9-EX<0SYS`tZ6uR zDTZ^hr?yU>SaKOBNz9+xFurYW;-2<{;E-SaVEQ>Ua!_w!+I=Z6M|eDg^sXg%;?gMy zGrYIjovU{GYnfUAs<_=-```<d$gamR(q|j8bP1Lgy~GkH8x^=>#k8eo;RY~}2<D@2 zAyWVn(Q#)CDh|9NRdsFhN&uT3QKoH@3^K3_06W`phU5@dDt6deyW(+Le=rs9Tj+7( z^fE1&(j_1%nD~hj5PC%~+yxOWLeD?lk^W_$;j_m%AgTIH`_@zNyn0C*fEJZU>&=Tq zn#!tSixeuOkRrg=yXegwg5fforJK5}frWzY{dc)qAC_PG$yg?h9ZN8D)z!FnGs>aR zgUY4UYWm?^xW|uh@XWXBSA=)Xmirb?gVXB`S5QOD#&6Eg@~wZ~g}(;LBB&wog6C$T z<3GWR64_rMB;TROn3%id8O3XEZadUjbW*zKQeG8+;%;qP$KAUh8v3qT-d)NI%mA4N zn;{e8!=~hV8fobuXjtZF5`dxuSr1SI)gTy5cr4{K@Y#DHFT8x~eynfDyWrhO>iU~{ z*g@DE_LM8wt7Kbhw<d$EOoY>79RU29rH@J<nM=04v0t<ghV<OTJc{0G6aRS}uV=%_ zZaH}=+WQwB*L8_$Fg?|Ii^gaaKtILqV4e*cV+gucKTvgEODm}WsJ=M0JP2f=cV|ZN zQZL=KxbzTr#pKcywGrN((WWko4|fmJcF3!Vt^}Fm<C;=JzTGC4W`shnTR_U+*U>33 z#OJ4go4d5i&z({u`c2_rw+f(>>AMp|)*U6e_u~Kz3=%3=mZ)`LD#Znx?76=5;qdYI zY?Au{g67Lt^3G3KYvC@OcPK0$w279?n}AOEWr{wQQywS^UHbK7@c#7__pLu3&VTzY zN@_&N=zLdelug}br&n8;*kr~1*`;Q&TJ=4x1@VU@9xnx?z?h;7NB8%Jspp2@KU)z2 z$&HG&*0Q8uiNGWQ_n8>Q8l(2~3(Bwt1391hJJoV`EJ=eMSy$NHQZPNUuiTi7<UrEh zZ!1JO%JbIs9R#L<?8_!uXh<vaaIdmqbronI(jR;kWZ?u5{@^Ak#JFne`rd<tC$rbx zzG|MR*;6^){~@yePgtwMbv&)RPxXJi`qy%kgPk|(QNR!>D8NL<p2{TxN+2-iX@Cb8 zk%A^nA)ZL#F_A(vk@!l9TuI4?Mwpoq-u4kq1dNKw@5BLn+9+}EBFc;arF!5I1z~25 zFv`X@8xsI-T~e?h4q<eC@BrW|r&m#*@QD}cKz3l-`P>umjY#HnITGi~&bLMy&~mRV zJTpDvBiG`ymu+nGXv7dV!XhRqG7ivuFH;geV<n)NMH4_kT~>H_d2XDmi|_O0NN3-T zK<1zeq_<dT7g1e6LTUo$PdyoHty4Hh1WjwI0xL8ic$`F`h8Pf^9(<a2Q6wE(0IGWq zOdHa)y{+3OCYq8wPsf20JOHj35PX+Z;eZ%|^QV9A%mN+hC9uUiTq}-+P`Az6yH_4o z19pHA#p}V;=VP7$N(d9aDZS~P>iKl~h}6LYNrU=l;W3U3f+*FCsHU4ECK_}Rzo?+P z-aV~%E#fXs1Pfin0Uem48~HH(IKX3uXwI-_l-5P<m~E96;1|V#9#lI=!aZR>ML>W~ zC1)RB>0`dq<P2#L8&Uf;%j-i%8S#kZD%RHmeP3Gj?DcB@IyZw=$=%Z7(G#x$$5h7- z&UC5OURhc~6n8MtG>R|)kSo&CKg;9bvO>V_o<%wrVcBZUk(KA`U`Y}%g*EX^s5EOn zE0-6yT;QAO#m(Txw^cfH3I_5lthPyfBtU%=eksxyI}{S*QP%(l2PyxYTlfggCgm%A zZ5&QI#o#lFZ7<ULc2D85lVNB&3khGgq;Az_i{SH@-3%*^LNf1pUwu?H%lPW{Q-s<^ zTm_&2yXTLX8BLm}9<sU&ecbW*sjtZFQ?~!g`)XO}PQBcGqT-K-Z{A$+Npy~IUtSkN z;Xj9F8u@w6PJo)xW#5TNNb{$3+;zoE|608NvG)d@9c>H5Lq}X!*Zree_m6pT&P)I% zO}#aEM>F~r%Lf@({&k<m+SFh$xZUX-834$`DGo~s5ua~!$g&9C4hy7>!!KoN=7Pat z&6Ob6x-C?|_w`rlEt5$h;^Kgk4Up(Al^DXqK6X1QFzCYM#Vvv${%xCCd`99laTb#8 zlR2|1+dpSK_=_JlN?a5>A8ols_<j>KirdF5Cy|WeuIG|MC}Iym5$pB{ZY^sjQ2b17 zBoOTghWik1XWmyjnD*V~qUBC~_v$W7j11G1M>I1}YVoTI7FrkN%uwxl&$Q%(CO+Sj zgKW<g*0jd@i={uokwC}t(+=t+B<vD$z@`1(9z|CF>0527=%FKo>?4_3Wnh`#Z_0km zI%VTukA<q_Jy$uOM9W+3t1*PzKj(I9KuL4U!xE^%pWKm=0GwHx#77X?EdEAVGVtjA zM&J3ZxL_l-5JK<!oP_vn*l=B4>#Vqd;8;6`0F_I+@f9I6qpoQ_u@!bqd>3ZK_)zxI z;m4fO@rcPx;?kG)ie-TyAn?br{hk=?TeKMk=cc9fagyJ>=l0;7*^QlR^N4eDR}~a* zM_ufEcllbH=#N=U6{uD*J!%=>uLW&DBhDxM7YvW2cki5T*US3JHqCh<>vE0{ac45= zA)joSEYq5!y8TO3>2t>W*;u~MO-K(rd!8EYGTsN`DRWxR^$cyMf0Oq8<?4xqR?k&i zLvw08=r#T(!RLZ#vDe86H!fb(ZIq3w(aE&VPRh>XHh8t))w-)I011Lm%n3^MkUdXR zg)jva?K#HISJD$XE-X$RUTI=(Cc)BB`<5?IOYi;kTCXO&wKgrzbPnMPre>OT22}FG zVhUN|xur8?#Jlv|?}{kCm9}m#Zg5Lb$!Z5O5M<8~s5|SfZ0*nbIq{mQVQgk-N;{rX zjj-)r@+V)nNrTy)Z=x}~yL9=oHSr0;{ihP1==F(iYvQsCZPMQfcV$OEIkCFn(Q%Ca z)Y3cb0kN!|>z$Q8M+`1wMTYx&q#df`mcd(Q$LG<^9r3tayP*NaP1$$}2E8iV{nEtr z(H`{<MbQtM-=o4hl6Dkp62v|`(VvnP+m&6~p=khr1y%c*YIpq&PB27P^pkVR2s*!K zg?(2}|4q*~w_NojV!wq5HD_M2;NQv4q&|^uoT~vnzDfgb4>XQ>JMG2OzWAUPPqm&0 zMiKvY(fZH-p<RS-OrPz8**^oPSn&0bGFF({YqA%cQb1@(gfKqrjq-!X5*E;yNVT5~ zcC@**7vOhOXt5!_{|ayZt2+<a_=g;j(CBVH$*lZ;X+;tr!+zZids+epPUgQ#EvlLd zgXX8HSIjTpmVKDZB6F)BU_&E!{J^O&dAB`&iysTdXkJDhc$WQ>kp25_HUe0FWBO;# ze*zR>|DuCIjL#&<#<i!M8+V)7<%<b&VH9~{@B>H>B+zElcs_8vxA^{mh#UKiS_fpi z&lP(yB^JiLFWM=zd-rnj{_jna3=c&MSXYIov-wv4bwNIzz4!#igVC~`_^sAms`VK- zscH}k72?ziRJw+~kW7q-R5EY-#{CAPbTyYU^dfmAN3zwo98pszZOu1AuY(kj+qGxw zmZ!guz4s;E)}4CXrT1Mkc0GN>j#o@p%QMRNM&<{6*N!D^@7sO>{;o7|x+aw^<ric_ zQV||NSQgsdz&vDw9{`2I%imy|%_g8Rc*<s2F*M@;%rx@?gUB5jJo4yg_^d4FFJb<} zKmCVQWG3x}-Jazn{PRT*9bqgb5&#=3eDxI+3Zj|JnG-<IFs!#8@R#rM-{1RTKKb2) zlzd6kkAL-7|NHCz+sC59Bl4r7y`l8qe)xCa;J@B0o9ldVL*9sBh4SBi<Ntd7zkj&9 zh}RoB{*#&ikKgd$KHUEwzHA~l9@Hvq<qaA*eQg)ZnveNoEwE-tf2PNm*T4bE2`dkX zc(MkK$x6W#GzoAKB$28^Ev#{?SM=Xpwk`>9Lj{X_>K^@L{Ux&D->BVaat5Q?D)o*5 zp)5TP(91;tJXsfxg2_OApjR9|T5H-tlz@gS2Z(1H76D$LE)`jkC3kHDD9I$!fZXkp z2~Lj`RM|p6e5b8*^9D0`{1<5eMv%B#>^V@-2SzChTcjDY@?FM*Mlkk)v54(EK>Q%8 zQ#q(-n*~f&p0xK~6ih?#(ovhDRG;2i08K4R9hd~F4rxF1myHgZXtIIIuX=Ypcnx-N zVm-G5=o>-ME150=gx+>r?fopk3{@;s9Tbj$hA7z=47JJvC5kjZlN-=_G(T9)K3URf z=;(QtaWcaWUU8(Q_bBvQAL#GWe(n~zWr14wV+vR4V|O5QVE^s#8yaF(Fb&nftli=o z9!pvo$)ut)(IewzRMNY7>RFIPvu@@ZZ{B!o+}}J9d{@B*e>-VY_{VGf{V#2h$N8C8 zgW-;SprJ^RI$cyxDCh&bR$@FL83*?rp$WAZV{o1Nq08-fZ`lcaB6WyZ)1MIMfo7$u z0F=qg6HLOJu&#_6eXgO{N}<x%@}XPodfi@mv1*SysAC;lpo^?~FdclT!Ugbmb+BH- zTkbqry*vjlBlp&ZC{?FO{br;yh(3?9y}Amu5-o+r`u@3<pjBXRX6pcYvsf}2Uocr9 zJ4a%c(<LNAzttPkQI!p%qU+}+*Y7|KyWX-w`Lk$mAXh2R_XEQz(*Qu8!mm+Ob!PcB zd0@#N`LJ#?(!T4F^71F^+Gp=VZ*7BZvEGFWK+#%y0HV;J(5(WHwVuX62gyp{rxpV~ zL!zdMbg#9fg&{~nQ@3houdK-E@*R`hGgkHEQFxYP)EJ;o$pe;w0^p}!$YXa<cfOc8 z`S7u?0j!rrFzD~m5g03%ma>Iomjuufi9M#r>*uzfs_BUj(3z?EolG<9FAoB}3xt7{ z)erG>eV<on3}31NobD}1>uL>v2X#<dtGV<i&aV5cdo8{WBvra1b?^|W#M?le*btg} z@Xk{5x^f=i6c!UrM;gXJ(-JB@QU%J*e(>SqQTRyzvlUBeWqZ&5ls+J3+iaOX=g88d zF-H|7hrBEW_H%0>#83x?uJdu8O@lp<`5ZE>v9ka4J3Bo*{C*=Yfl5FaeoFfaYOKqW zJ3DMQwEl7*{p5V@^@fO{SGTJ&v=x4$NI%EB+1Vx!lun9j`_G&AyWQ#qjm4)f^B!jG zmE}a50tKF%*&;Xsqcwhm=W!0pkFmwzkH>-}biPx-aH)Vvs@5VOht>om#B8poH^<es z8H3)v^f6w8Ni2|o2%myD!#l8xf_W?)E5L2WV-jMk_!O1gD+r`Y)L{hF4_MLwGHVUm z-p7S0O2mW=Pi16}IEWwN4?Q#UYQL7?Otp$VrWg*yyr3-F2imcoeJ+i-8cwK{baKvf zoB%T&2Sl5+?_Iu8Npk$kV}{uHKsH`A_t>1*OIJ1`4XEw(a%zAWpbt3BlI0cV-e<+@ zaruDdr^@Sh*r|W4GEZ=nB1(5B!~+kp1}5_ECvrF&Fl&y1hdhNhZd2`yJS`4pGT<OR zpv#hoSlyDijX%#!{*!}f{!uMo3nv87mExa`%}a@#f+1?{%X>i9!~e+J=n((#ipI1n zFi$fKCn!Ivg=Cbv7q9ceC&MN#VJ&tpH4sME?@jofIVOzsBpsdP1#9TG*H#11)2!$c zSV+d^oo75-$3*WvimK<7G7g&Ax0nr|N~5fhn~hAO6z7Y$EPor5a1wvR_<-rD_r$i^ zP!ur&F<%Z<-GBsiM*7D?AFVPepwR^B1W%_#p%D)`fWT(2q(8q8$c()7e21h7fi9i2 zJ@!(e9%1xOO_O8|Sd^BFJ0RedS+}gG#_6NlUoRvTcCe886`u|9{^MNMivI*q)g)|- zqDQw=`l~FCLB!5otas4Pr|{Xm0E~iJy(a6_7rx#$_dFFLz6yA-MP@0Gfz87Bz>0st zK2q**%(rCq&ikb>*;k_50SPPUq^k;tU{}k?5<xd5X+t{28Eq^U&wLor6MX=5OU(}; z5Fm)*I7|&A(71vKk=15nrAHpeWF{O(E~wN|&xp=kYEF9++_2|FW=(X*Odv>ljv1e( zC`~j3`=CpAKnk@*nF;1!8DL5GGimCqI>J&{CD@O;Z?QE|b3U2uu6kHs4<yL_O4kd& zi>1PJv&KGxG4eAW4Afu>!%|sfSa26ws7&LM-zSvhO-)JyxD5aeRg1l6uj?<aRZn32 zj?mm~4{!$ZiFLmMh)Y*m6A?`&x@2n51H2RER*RCJh7x+Yb12>vX(i?LWT>em_S|ua zz>@T5PhfDdY++1(Fn=qZv~@B*cw=ZYrUBkqUKH)S?^5h#m@XbVV{rPJ1Yg{D9<kl4 z?gEz?4q3>LAQ)+{RTne%&2T0^$hSiXaN4nVSQ$==HcS3a9;#(a14>Vqk25Y37qE_P z-mT@^tsK<<vAX=D)}oaJg;}rQ-sOLuNcAwX0W3x#7A$4)oF~)Qc;PQNYOU%4^11Dp zb4JFW?G2Bx3V7|%cZYqJ<6&Bq=_r5#Qov}<3Lyxl5M#5M&#go)M~itRHcjM?N~A4i zsNAumG{APafr+p)UcpxO=%;dc%QqP}ohg1l41J2mNh5C~D$By7+5~Zi=1jK(ya3rO z5q2Yy+=YCSY&iH3Z!-q_&Si`ECFvF_hBU`1>GI@@1sC+kEbnFg2_^c+CAX30TR=$l za>xf9Pu+Qg+X?Ioeu>JMK-C}>+z1swdb;9#!93~qMe{qekrDUfT3c2Y5~A>{m_uJ< zwLO6J<oj=a0xC!o*$zL#q!`7Wc60z?rk}-m(#=XvF@f!C4WFa;FrlMHxhV_&&>-%< z>qeVldtVPva5ZfCk9D!<hQl{>vi*&$-UN4WwRk()Z+gY#7TSAs>bE>D@SVJ(T*V%G zS2=moME-VB`e*aMyCLeJ=9i!t`e#Fsjej2bCAxbD$RNF<emad<=gjWd)~1>>#%yE1 z31}RS4AsY@s-l&shM#LE19Zo#2B3vD##YjR_griu=I!E*RR`mD8RVmB#$3$bMhYu+ zg89Q$s-JV;>T$+cxW}k?nwW7JId2Q3X}e+~4Acz|*W4OXP*2`Rp1O-hl_?&n26X^z zW4M~M@7Gu9vy<ukXBXzZz?k0;cOjsC25Yb?{_-U>aJWlW;kaT;d{GLV^>Nkl%hCR1 zdP}(1jv0GB0L<q$zCaG^?T_w=hC}irG_JM=`=a)TB?DPxL|b&pGZKyGK+M`*>${kh z(5(@QeJV7Z#XNZ>FW`GMuGFj+5$|9JF)ANaf(;Zh$gWw(2EWI|3eOm{5F^Ps4S4}6 z(tO&hoD|i>Jk)w1>ujcW+Y!a3uL~vy_smjuWA2PeW0Y01GTwhZZ6CX<5W!kX?Ifp* zmB2XX3yg5?6P^l&1#Gl>W25EqOQ7m%5fqf$Ra!2n69+#hLuhVheNWOp+>=%dZBzKM zr+|IQt^3`ee?;@GY?3i!0~(Fm1>+Gxx+dm6t-}+<OSYK%F-q`J4zzKh*Ts9qrqSl< zpWE^Qm*W&=aR{JWwmGJB#*){5K%|@_k{%#b93j2*Mtk17f<FZQCDKytkyNk1Xn!JV z02u`jB{^h1Ul3b{&28bA7^SoC@^{IanD2pp)mv)hE)Uw+&@}R<UV(c(SzWna6;n%x zGe;N1TI*%{EiQwpB5&Rgqm}2X_0udz+$?U$)N;Sos<1Z(a+K{`Q*;J#dmX0-k+Q7c zq01{OW>a0?Z&}=AoKy2dq1n*a)bYj5(-y8}7DpkCOLsQEI(<X_$0qHM7WOT4VtBTs z-~QuJ`6l8|Q~QfRSK!vd>%cxB=t^C_ZB+x5om*~$>e|tt$TG>^y5I2uO3`f83kd<` zi!i6v;M^M!w-Pn>CEPA3sRky*pqQ+N{8*M?@?B%Fy`0=7gyt8P3QLWV!?@R`Dr!UH z5%lt+I;Rg<mAauCmYdaQL5{hj55Kqa7ZLH&FLU9orgrv>RBBzbn59Y4e3F-!N;^S4 zAJb#VuKkoDCSgQA(#9M#9kxh33hS$!FeVr?%&jadC4g4;tk<GDlp_Rto^a_}X}8qz z%B%PXk3#te97uL3ju8T6jO3RH=tvJ?bYb6PU__98r&L8OI{@ytc<(^2n??2?m3;pM z`R>d2jk_`NG0T=+sCHyqL@Aj$Melk3DX3YA|3G#VGxUR#<dI=YcELt#IiGK$?E*2n z98mhV6h+6t0JskkL>Zcz`5*UuTZJ{Rnx1c51r1)$zR5kkYvVJZ)rwxfvL<52vzDPj z$;zymhZK34dG!+feT8BCBI}7mmxdx^+*@<RUH*o~$k;|mKH=!8-a_xBpN8vlArY{Q zH^2}pWi(PI#Z~)To_Au)r0@NPnHF7&t;d>;>ELe8)>{_M)XVysGRlqsKb4lS*Fwh5 zEYR|%i}LLY>TF6p<2MbpMCCmnogXVjpl7pA8ML|&B{~ydT>)(%cLE}!e|;q!rqJAV zIG0lV4(aE30?Z>R^L~9-QL)HEio;?`^O*V+rG_5n7KZ&Ri@DXUWYpD_hk=2hqeEqo zF48SVThjS7yUm&U8gD3G=zqhKhrm+YCT}ml;b>er<N!1&7MrVe>pu2KLwiG$+NaEZ zy9LIDqp1WMzUmwF;Z}j;u_i=*u>6zzG9ZdTB!Iu6VBrjC7V4<dYEoQ3zWAFSc}G!Z zvRL{F)3raAeIg|uT6xm^deixU3k3ept)!tI6DeSr6ELQ*^B!nSMU=f)I+Z<|pIrg8 zj_xfh>GWI&i~uE)6Cupv`<=>&4~2u)^6fPAIuehml(E+WV;ABcuo2=d!^(ujZk|?6 zM=1j``DbD_<XTt+5|1`VJdM|6_GD-7F_GM|j4*##G}aMkUPz53LRx<##gX8YjruBS zX3inm2j!PI_vKR&Hac{iq1(u>-=614?dHusiOj$tu{1Ed9maV%qBl}YY-vBC>epNf zT?w^wg*CSbt&`xWYBu~#h_B8$Go>5Ge;?=xCya^h_}*Knq)_#(U?YT9(XVcralK8G zZRi;+h%z`a02cnM$tS@5W=FvH+r|P4F$NE-f#JhqG4l5sB|(0jVZZKyDFeAl#Br<x znwhVKEOL=>?oGBp+m9Or6hU%9BR~!4*(LEQkwupNw8`f-ev80}o|e~<p)rvk#s*Dp z-fdAY3g*<eY7gJ}N7Br8ZMaJ7E!oRcMhZ9NDyF4!p3JbKKkR}1r8`N8QVlcFCI$Nx zVS*D2y0dnD&S37Y=89uvnTK|;XnHki%*(^nfSJ(mp(jRC1qv>{bF!J!$Y4}Tg3}Fw zIY7C-B#_9|7rvv*XDYq+0wUKsU!xn*KTL}Pcr^uNsrE0agdXXzzYyF<4a4hVEveu) zMK9(>wZ*4pTJ9a6yg40{K6xT@l|6G3gl?p_n$zjVc!fLolZ729zEPDZm=tCt+NSQ^ zIVglQ=cVgx+g_nwQ=mEZS)*TjwHH9vF6h^Ay4N}N<alpOd^#mJ@MLf~`?A)-v>U}1 zXAjP;ZrN}=RqCwq{C+2By9S+{M~l>csr?<?5HE9b#WVcR)vXmPgGI|@1m)4ct;_k$ zUN|i4(T`F?m;()>f@+hzru>>&0utFs6%+Lyn{ZgT>q3msrh+%-KG7OlzL<y7d`68} zq(Xe7+{E)46Ghc%!FdzIu`>7Gfr&unLlnIhVF$ZfL42A)RT^j<j(-=O{~3w=Nd-@{ z=sH?Tz_!FLKRYc^Y9pxbj^1Q@_fjgnO->%hE)PS<W7MXjOd^7E?*=hwqqXxLMs+u{ zMd~;+1p7>=5f>weL!3U*-S<|rc=JLoV(BOrVN8t>quNo%3YkVti^+O-O-tc|`A46h z2K&P3@?o4VDg*FIPN&NV+peR~`W*qb<fWxJb1li!cULZPy?Bp(a6btDUeI?<G_DGX zpU|@O{ALA8_8~}+HJ+|UN<M}=KAGOTEfO@QT|3KT-#!pzm6(vR`_7UIQ5cyghWtW> zcoM1GO0#ErgV>`0)|mfHwH(dbjqF>dMubwq$BVJKnFC)vJidtvHW!{ehP|(bnYb9x zR~4;$&x^}r!sRhG@&L6PdTvq#3w;Oct;R067TPQimJ5@5_*<I6R?1BikNtr2YWZL# zSD1Y!PeMU%hKu$(Vwq}8(0o!N!hg?~w{n{<z!cu(3wP9kZ<)ZSjC;Qd;`9hR>$-35 zc)<$g(Y$sN%yw7Wi(&lrr_Nfxy<oU%ds*1p$HGlQ>ch%=u$3<WjlL^xkt;DX?p+iu zC7yoWtl<&Zc-E@aT};~=<<a7WMN3|yeOB|9R=bt+=(ymM^x}fW{Z@4AN5j8t8lT~N zqGZa5|832klcg^;x|f)zuQTKw75Y6~m(rF7hKw|z&PIAZ9Dh^j64>Txe(iM7znRS1 zHXM7SpM&-(X;C31Ju2?0$H<^1=gB7dRg>%@mJ~$C&A4Hn6ZxG|B=Yg>^5gYRn-mn@ zgUx)Mx_lW9YnsU)S0<s>>v}Z9GLb29%#A*>K|7}58l!7Bn|aLMVrB26M;0B1!cqe+ zf7y*FMdOObqClf((`8Njk=J)KJiHv>j|QVHD?j$KbS~wrZk&|s#Jjj$E{%F0<{ofB z(Mx43KW=mS`Rb^a>cR9?lz<*}JS5NIC)atk;dU??VtMD~v{)QwcI4$&{xOMZ_X+4| zQ|D!87P6Zdg1!ecNZ3ri5JnTtAu~rKt<}bB_{AfB5f6PGYj4nup8#?eCuTRN8qEW_ z?1;7md9>E*TnYa%U$G)<XBU&lO=M-%@Xyr*-?`*hYGRzkAG*9;g5Q(%-v1D*SLwr5 zEZ1c&;dXUDZG^d(JsdM_#3HVUu16v-h^!eA`N1bE9hik7kHnYz`gQ{j8A~lDm;565 ze}6+E*<Kv3>PqU23k+S5^ZlUv@5uZA;3XdJ;HxaspXrSJvjlWUl0y?2wa|5)i;wRp z>hs`IP&bXyZ<TNvkGY_jIJJ32u^+z54KCk&H9La2U-gf;h@AmgDO&63Wk6zC`G9Qx z0BFzna~?!msSKzV&XToh!nh;zr0zsAWE!Yt(eeJ$ZzU=HrhIf?)8eILblFGTg;i|~ z6<wbi5rQpds#tHqY4FuxWnOg6_G?V*NcVf|Gn04gH?w%HmG1<5td<Y4^(j54P0kHm z2I@s~Ev&2PHU1%ijwbg^65QAm^-czI8zMMgFg9Mx%B?@js0FR%Q&;*pKWAbW5k9l| zxy~H`oH(+(;`eX9d#}3m@Tg8Q%YJtT(t<qE$LbFZ$mthl?_~9nMQCBXMO{4GGz-gC zR5^V_My%d8*D7B9rM9S>cRce-y_?hb4v&7+wn<kKd{roipFPVmhjJFz7nz&O$yywf zy)&z4X^Al30VQ7|GT(%#m-oXP$r6)#MBFN5&`51^$#i|`>I)2@%8*<9(L0sztuDI` z^-#SVT2>+frpT+ar@KFDt<NvW$*6ulL4wnnt3ib=ChmQHwo@ljOt*Y$pl>M7Zp&!> z0d-_glq8&UeQmZDN5MWI&~OuE#pR|NC4KKv4XzJw>-4xG2D---*Uo(%wA0D~eW54c zY18^EY`&i1__hG&peV1?Ehml2;Mjpw>7YThjq!gy?f>B{iim&KG+}k9_wkQY=wSt1 zhAf;z>TuQtJx(_ig&9hGzzpBeM5kV@OrtvO@EqtkDnw<%vM`pZ5X^7!ra;f~Sm31w zx>7kt?`G$dfz_-Hn%>L(Kscl~{#`E}gP%O!WQ=xJiuoxj2_l>+!YJXheDb(Adc#DM zyvV66fXe2%0NGJLNHzQl*Wm2Tg*=3FTVTMa`6652qwE~%)5S}4SFHJw=PQh-?$&>X z>Pa<tA*Ve0i-QZ2P+q&V4Cruh*u+~;yvD<PSyT5sEh;w@y^sM`BfwNo@yMcoOtZr4 zfvFc4k)Odd2t7!hPs1L>L2kG#ENgt$IJP1QiM$_*@Dmu~FG9x6C+@l!ll9Vi!5(Hk z7K;!S)U312TLwObB5^xg#=aR~R*y!GuTk7TkjtGGC7Q;(NxhbfeVqh>^_14Z6i%c~ z>mbSC=c|p@_h~^T)H4+X-61$;ILo#qHK%_+aC;`3??UybotNA1k#&PW+8%Gn;~E*` z0oRWis=5L{%htagFQ<ogl`~td*x-)jco8}QYxC8A{QgUj54~T15|YY0ou+;#i+3QM zNH=l9@+8|jgWcu|HtsX|?}NAJ(bB%+g(XcysyXzP^{M;D+sQ*_w_V3bi~f$zd;_RQ zdM>r=ul``LR7mh*I)uU<L88Cwi05*lEq!pr4#YYs`$I6h?f#<9V8Q)Cdq#Akp3~Qx zAG%~_3Z4-0_GTQ9%|{LIhO(Ua?7U@G1^ky8bsHPGd^hM#816*C3|5gN6n75ZzCvBI zh<}2tvzRi*34MhpW8LMyUu&jp{-8mL!(up7-`c_p^NPMj0YsEnxjZZOUZrt$k@2M* ziS(X4mJ|49^fA-z-QgZz*K&{P_>h|wIr$r{1QZBT4PuXowil}K-$(*SWHOhdePuA# zHs-nbx>SVdE0`a;7!{zO)3hB}KMtz2^b!C_JU_smlr>(YpYb9dzVZ|HqDvI}1W>_^ zZNbtw*YqK1PSK;aVSvMbP^kfkX%>j$Vn;+l<U?A`<E{$d`Ky^-kb!lvyx7OiLM{sy z@lGGu82aDoe$WF6iK!*4#2Rb)*ZL@Q8q|&ihUBzs)ck0_{p3Ja2?&#=#B3b|20WSb zSkeU^_iZ0)&Y;nPuM-|mSSFBgB&Dm?^J^z{Q&hzm(EevQv396wNR5u7&3?&|in5-) zX#q0Pf%@U~|L|o0Nm=tf#(Udyb%pNFlOypl9z>VGId{Xb9QV-4H6wm-ME(OHuL*PC zGze0;JKBt)c~JWgwrp^<!*>~G4a&`Vf>x38;uK*t{%54GG}R`u!C@b>s2}w7Th%G# zj4ql6=#cGL&JYRQhkuCf<w#J7qfrq;bIxUqM$O)9bTsT*`~&2^$8k6O-aFXsT%X;< z_050=thTS|VC0c9`YV@g>cWx`T=jY-FEV>zjaj27Ec!GIPz5$kwuObS!{ZPIl!z)y zL@4EsalfQ1K-#Dfgj5J`7Y$ntsD$KN2{zYa3@n<jp({q5s6H4dX>rA=b<bbEl(U%% zkzZmz=OYPSs}aZ)D#TvoXbOLm1hs(0ZE@6+37k`=b(Lnz6rLv^j{PP4L|^3kbAHR` zCx+;tE~I9PtHdl2ZN_*gDosQk$I(~YCn*vpb#~UUO$!F)JOUD??o;YsQ+jnexP)MF z3nLf3Y-wkgY;?i9)h7TeJ$dxx%IW71AGr}8)QIZ&Ls<QIyzhK6RzjzC*>IhU8Z0zq zCjNYX+_piE<>PY0h<-ATa4depnH{K=2%MHyxMOTY_f=u8hBr}225R`^O=(-XZ#=TU zSC*<AL4?Ujp8H6D`u(6p<D#pe>hyb}j(f@Up}wCc{TLDKI%3{rw?E<M2lvyy3n8dU zPbc;m6OR-3<&JD8zVEutg+ODk<#Al=N3?FSe<^n0)4GI9@|-lP{NtGT6{_+OI8%6$ zl4kKhDQ<}?<v~8u*aSpJiEAbHsWzH2$DcLQclp;BUf$vub>yQ5cE=rYEA;Ssn_@Rw za2{;5^Oi!``&R4)zdfV@I(Y<{$!?w(SRq6;!|A>XoE7CCCE!5~p#QAFmgUN`!|^;= zGwG?}h`jjEudl~cAa@-cIyiHj-z`BM8eD@t96D?n_pgiW39xmTj!5UEY>2#jA2}2H zm>hm%G-hTUvM0kAIW5BhM3ERmTL~{LgWSqC!3`Mp<o!^LojlIIurA8c97l8mdG+Dp zO+Ql8?wQ}RV(2BCmnFzu>-aB|<B=O7xwW9EqJh6JcL#8`(NklUUAzelp%FUvTT8Zr za|N=mA<E#uv>vEU%)@pE^^37EFVhh@W_h7<Zfit0g3DFwVv;Q~(i5(s8h*w5*9DIV zH0vbZaQUc{;>clF{N`ur^zDf8VO=G<R}<GM;vnDW1K?V7nh-4h-aa35v1WnwiV^rh zQX}weh_5-rnofMDjqj~7RGN;4nZW$uoC5oI`t6%4w4x4cKt%J5X?2A!5z-0=;|29| z;S_K?xcFmi{;5;=bC>w{TGHPF(BNMmkNvZbOmxL}pX}~D08HWQAAklYo++uZl8uQf zaR<m?7&sn;74cX{zC)2GYo0GaMhJHsOHH}*RV*QUhPUJ9U}b%|=}ztKrC$taoIW_` zh%+}3CfdX?17r=zI+OTGWZFX)C%82zi&c}1W%~zfa`{(2E4v}zH{#SJSZo+dNqIA4 z9%CJ~sYhg3zW_HpZzuQc(UN6*%5RP{2gx>4&<~eK*_GwgeanUhZR$3Aj4vDMkQwH3 zO|uY?!C`MMaR!MM1PeRbLI3>$_sJu_^#kuvn<tXd_uw=04fjK-uqF>{<#vB{)-P_r zMr=A*{-Uy!2i+M+zxA!Mez$OJ&5=F>&5_BAB@HbT>XMZvE05yPe=56V74|5k<V!i? z7!nkDjA_3WB^6_<x<PwSRQSD_r0K)hVEzXcvrZYu25WCq?CYz`i#&U@NBI|i+*p28 zOU_TMflKYoJqAiWo~T<>*eQ8lPmT2Dh05&X+IIy*>P3-aq0hs<5fY+XY)mpR^C{~l znO1}H2c{}~L&z~O{p~)%Bg!EFG5-vYE&5Vmw42Xxt*|C?_V&CAG7i2P!5`kW4>q7o z7orhzYjxrvG}55-%C_{7@@NWC3}4KAl|8%*!W)HG#mol<nUQx3K?`!2q-Vr@ioq8+ zB5w?>XC-I3yfmk>cDPk9QxbAM=Agr6mVMrqH}w_lY1d+E2*%OnxR+^8y@kYyxtFpa z*mGol%qU%Ypyol8_7Z`g_9wy3?^^0#eLPP#TPxQG4}6O2_Bt3I`jd?-n>Dp45sp23 z9Nvs&HA>4FEihM;V>9MLw)w8w8h7r~KOQ|}1WW8tchuMWFzq-37IJd?iw+QZ4B8XT zX{7V+h-_PF<#|Ol31~{Zpwo9TEzMIK+@|-JzLEQiR-DldumbazH+tE;BrSD$w;6lv zS_rnkfXgxE(4f`fbNbht9gBaaJ2}~uU%uX-XQn$I8LW{Lh+CwUHZ{e*5HC_T$$A3H zDhY{qH!NYe@Op%E#9|PI8fLTamb}s@$~-o$+Ge$wbiOad6NA3+cFth;m$GHb%Di>X zVO9#9%~g~ywTRwa`=Y!?3IC#r;j#v|(w0%jkhUxeWI^#Wg5;n@ppV9E3P|x(&%ESB z2YUY|^Ku-OeW{EX!C{7zrh=WMBv->Joj8r8EZGpB&6#4Z@*5M22h+wB^Wx$uGau*y z|A;0!@eV@yJ}-h-5sfQ5`+dy5r0c!;#fcH&a&6>OgS$osvPqMu(P8X8q6$YwdMFn@ zC`|i2H%1nz660H4&QuRKX9u{OW1$OoP*C(jWwehY^S1{0E@$zTcJ?pC`;?E&e*P{^ zsN?=Zygj&yxR4DJU|7b%76CpmWvSW-;EA_(W5wlz-b$zy0Til>4@o<_9sFHuO(0f% z<hEBn_kw8){8XR%7P`5qw%(xC5|+w|E22cI5jEZvd?t@YhdPjzniBc5+K1c|Z?!S3 zyP=3H^nMW(^s49Ho*_C{2`>5mo*_omgPU(}fqu=OOvgzdg=a{#$W0=~Cfn9F4|`MT zVnn_4pi~O~J!M|9E`#SA-XwOgnHQy~x1gM4(Xw63RU)!Gd6N4qrXSx$3!|@g?0}+D zSibqagif$Z+`8&q9?<*T3f@VSEn0NXNZ8%o@&J;P9I{+Z*y}@2lz>isPSOixsbK+E zRS-uU@~SoHYbwjjH_wb8GF^({=<(<xj<A~(TAPnP)x?0Yp!}AKLFHv&8>`fbX_b+7 zve1P)O<GEACpABqO~;X>zIe}oXHLY)ZhvK%SCHg3hw(hnP3Ya{pK}6cSPWvRVh~bs zg<1}1^LBj(#w53N9TbU^@7||p9vOa!ZMJkq_$E(}NX(q;Sn3_=ZHa85uZNEdK1wH@ z$=?6kQ%pwE57gM{J)dcLI{|>5AiLG!BDmhG-gO425|L+ZuN{5ur0P+$WZ9<6+1w+M z6MQ$ZIL66MOEy9^hV<5YN8)6)p3g;Bt=5wL$*YilNJ5Qnf8emzv*_S$fW*4O$Y@!g z()C$O2N$num4=OXv%Yp*o2_)AmW10BJ^H={n<>vcSn<10-c43N(4nP|2wZa70nMTk zqGx_nk4Z~}t<!Eb1F<u=NwL^!>(^SgZhYzsl09%_dRn+`)tKbkn!IIm-;Z0V+{K|2 zx?LUv69R@hb5Va?09%{`6gu6vcB4NOid_tNAkJJPO#89vjl_gDc%F4vxHXQ0RfaVH zWR#1PD(Sj!b|_o3@))t9Xf`wHV_1;=IBas9vFCQFSSE2?NaP_y8L5#hDhVyr<Zaic zh2h6q!F$=l-Qd=oh%|0S%}0lhv<RZZsGd?5=FI?~--q)(1xQVeBOnG#H4k-UM&B|k z-3#~y@5TQ>_KDbY<V&XuD<Lb|Nc%IXXm%Y77P0xX3w;fFY(|&+*wn=jzY@!rNEQ(- z9(@&lEgBC=q^$?IK`rzbI(BsyWn{-aVok~>1zm{ar_2-4=N*L;xPm!<@g?`xL>Aba zF5?lETIU342XP0s>G15F0&z^5hvHE$x8gUElF+tz&P=;3Y-+5z;7pgJg!b}+8=VQU z38lk3J&=X6?9CjzykOZZfO}zMQi~MpwG529v^I_{ijyB$5>1XrAs@y6Os=?6n(oDL z=VE(tUM*1Ib!A%g118M1Tq-CZa;;C~w8cjd2C3t7tX-Lj!4f51v99SU*me2Xm5MfI zA&Coi2*KWqdoWDhE7K3MyW`}IS!ZiBOJ(w9&rQ|P3U<wQ-E14iXhp1JZEh8X`ObIQ z$hW;5Gw%A>)qr_tKs+z+9Bhqt>2xA%MYufy3vz%<uhW3{7}?6N!wj<7b(5d0^2yVX zH6@A1)JC&RDlxO%caq-Z)x0_XdxjhwZOz<sE1^UJ6JQaFS%_3A>h<&YSkLX}N3;mi zC8c`2=avxvxnI9u&U$uxKDqSg68p;=nw&j4Ev7h|q9;!bEF`u+`foNL%vLwshvwa- zU2mJ|q8iI_=>e%SRVewg@uK8TLGH|1;k8cpsp{~{;pgb!*bif!>sNkn;I)_Kl}MY0 zi;2b6@DG<sZ{PC!aqfa|zl(nK)#_qv;wI5dBWZ%$0!T}?ImsV(;0}9`uIAi$@z=E* z9|er#<ZF=8-qmYRMfb3UOa?9MoJY-CxyNBwn>c%ohu6J;K$mFpT^&n2Trx7@7|lLy z&OOD<`|5Bd`?8)Q9S<Shb5|Bx<j0K{%W_z2UIWv6Hf9-nSkaAqA_D`hn^zx|tFaQy zFqsj~FpZoe9(i`6GjuU3MC7D~)5Y!`lVV2WOV`f<826p?NTL8OLw}m%`^0wHtLFaT zSK+5!H%UHz^L<eEqHb^dsiApL{+=D?Mj3N^uyDeuKLaL%W$@;u+*Oy|qdFfI2k&to zIeNMe1DbU-A^dDh-5Qd{E_9cyv{i0h@%hw{-S_qIm~M1+Uan8JEm(4>^R(-hMUo5O zTj!dd(dE<y@l^|hZ#e@^9@Q`M3EC4K^t<T?>;}x2(0n}WPBW+$iL<Jng8e7ERZEUw z6W(>7i!3E6OL6GF>EJsO_*z>js_V9D58j+=kmwvsl(AUz%A#hK6k4N&r1P5J9NXIb zQdMz^V8N)kq2O-CKBwtxpQ3m4A`$FIIozvG^L%s3rE5!;qBMi$c{Ro^Nx7lu;<u^J zePA4cp=;ig^uo>)Qkk-kKulTctk68M*Yv<5YB5`7hdU=~OKRR|%GcCrN<=Ab!&s8t zG{%&T3lul~{08*<4#%|vi?o^YidU!5vC_zsfzX#}QN>TDD@g(bO%tWl6R~o;4-)=y z@Bd9`{jYy^2|<$L!qz&Y|D|#H#7e;;hTx12jdBMX4~tOemnq*iooS4{9n^-E^+thV zEo-{|iHfKuZ*L?s7*xnG{sM;kJMB^;1Nd97J`aER-#vx}_j%1PFOTRK?ZKIr=*WPb zaes<SW%Fd}h4G|aBC~!9n#&%a>K&?0g>&b`SMQ*2YlDC<Qp)k-?W8fTzfm}>;#2+} z2|f4^1c?6|auAas=%}>J==$RgKf%sj^&g7nkP6j_XdY5wym)Ilh`_PdgOj-*gk{B0 z>sh@?a@jO0{F9&iUq{UUHURwVLQC{sBD=i~#kc7_Z6wH8NLbqaTRVY*63`Xl+zSo< zhPwH)8vP$29v^g_KTlfm{I3uAHy7%U*ZRjmm>;Ln^*<d9|M~*|`=<SmKYuv{AjeN{ z>HQtL{1<QX5C?9PLfBBpUoX_Z_)QtS&%kaV!Voq1cRH89xDd3Qpc06gDtG)}YyU5C zk3ZYuPfx+VN)qz6{LjzD_xTbK{NJ<&QIg7#AnBNmKSJzCs+v&k4qj9!=P*xyy+%}l z^+d4I|MA{}iQqC`Ui0StbItlslDUKQ&OV?lNE8MxPG=y@+qt*Mx3sX_e1T~PWNfkw zl>ikP>4R4xl@y7Frc+RgrDum$`pa~nmai1C*7G?#UH8jKKl+|CXPb1N#NKwL<k-|T zvY?_fd8Zg!^8Fy)CnFvhq|2Jgl~s-oGpyK8fWGJzu-a~xwIRbV&-UfMcz+mSDS?t) zyrX_qDQ#R^V8P`C$lR2npg>Q6IK^k3J?REQ*&`EON_kJ<JMPO2zmW{(cWQ|A9{tUo zeJBIg>jk`>r+?grPkfi4$lpbfach0=5FE84lItElwmxnqHsrT}dbS^8>n(t0%?QZs z_XpZ;FCBmwt~jZ~cJ*v1pYd=E#7W+V5b9$a#bUxj;5J``p1T^LX7Q5ze#*}Btus;P zJ4A(TH_+5?1X}|^b?WQA_bD-w5GK6?B*!ABkWwEw#qIR~veFM}Chr3k+<S5LK9P~_ zx6G#;89;LHstk$qf-HXnoGV%lh~k|A|77N21<8YzdCIjtw^Jrkv&Phr@TqR#3rGaA zT0f!mki$fe>O2FF*|<d@f`2lSDxVBMJ5C6mk323hi9PM@tXlffW?iufj7W}Rz$D>x zwh9JW^uOCZE3Q5ro4+ElAtMGv=pSo-iquY$ScB-Y)vEPk-`xUdkTH_|UlxgYb}$@i zb*IR!?)q1d;=}mDZlY~-Y#x$M)vVVa_kona$}%8?&2|H61=hd>U^n5DJ3&|%1-L+- zG?4tZ2uhZ=Db&z!Achx*Jk}od!0YK@Gb+CFn?t>iw-e;N2pYFSkx4rs%kKuHHw?9e z?Y9vdZ3L8hO8?zG4}$|=(<8=5PXE|N9$HZR`mzb`dIDDE%NB^yd>LJN!~;6k`<|fp zPeIM?Xc10bA%E0Bt}i{G`lR(_x7be=4ANDILhb<_5pM(c`tH?>g%>96K}17WCiPVF z=+C_hXOQ)_I}%a9$4<o1#0(GS{*3zeHBn}x3b-lyfapIV`ew90R;V28@NPT@-yWew zT8PQ7G!bPo&!2(V#YAclYU>Q-rYaogN!B~gj8#Ek%GXrWC{ZXVJN3rLl~V5v7qKh7 zEw11e#P48Jq4Z1fai9S6@O}c8$08*3Hl<qm2ss}tC6{$Yi44Z0Af;a`M>@nxLK1QM z(T?2`#y8n{5v9^KbULc5$?tY`jD1|zK5Tgd&#F6h?n51Fvk&$@%lflJ66^Jlo(ImT ze|?lXIuii7XU-s&C;J6}a_#hU)`o7cZv!hJLNQ~uo{h-R(4@;Dg8`h)x?=^SAudp& z)d*w^0=B-iDjMv?eaHiJ`roV$MJO91z*Q_lvL;9e-VZEA31@KKSg(u;9!&jPu0SKg zRRxwTd!wC9nyh)C*IWd_E0)wWho=?23iMe$zIz`oO;*)i{vh2^b8OyjA0J36#sM*X zp&WH+9dGby$z!~d2&IpDUql(yau+wM|IO~Z5c#ah*uHj5|Bq9UPZJMaIXNrZN8Lv{ z^%*?jLqnn-)}8OsPE)fU(!o|b7-`7-ARW?!HC2;7-C<B&1#GSw6d_<dBw@vfzVH#K z89^#TYP<B2k3a`_s!{;j-C)LPE6^>X)!q9w@fOHpDg9Id1|{KudS0{;7;|)K6%L@m z>op4U+R|oK2_Vo;w26`Y$`*YezvC71Ul2lgM^)!AeZQ7H4Rkn*&n}Q+m`{EY_5)RR zN^x<&{3@_n=(5OaBI<+<$da(Rz=Gt%MXdVN2gu$G^+~3<@s`1p8ut@CkV9)9K)AF^ zgb?<w0;TBOT8(T_Bj8gG8NZZi>?w*&=NFB?s$PRw1nRpnc^qi?H6jLq2fERxq*4dJ z(6Pcq+hjw}-3PSQ#1?Vhe%};#Hk~;Gf6kAIpHQ=0HGE|i_CsArowXu+;kATi^by2T zaTjj2!q9lvW_K>Jr$*NU7svdrYO9V%KlRLmDEV7*Oi(meI)Ny1pc|+sBKz#h(|zL! z>qzm<SkIt9xt<1Zq^7_Si@~=3Icg|`hl1S3i|)Q(?CxIY%R`?OyNdQM>CI4ev&ol~ z3n!%V*cmC4dND8)C{oC<Y42~0G1^G7v(KY{p6j0|Q5)bCYrswr%VSVJl`FuaCSQay z^RHiqoqz4#4m5T9o9a6kP?_rROj$U&{3c+GcU`K1a@unW<E4idYhKEaxuJM<*uP~F zLocFwece?hXhk~}uy+L8^5|)9*;r0UE;<GNil4d;leI*6^mG_TLv-%e2)uV846AuB zNL#>Sl%pZ&u6EFgR?td9E47meMu1VB&e}bkj3OK}u8$5X<Uf9n)k34I0E0{w<Lca1 zu|!jp;3RKWw6v5SkCL^8Yd%y5Fos0_?*&(b@=D9n2FO--Lw4i3>`{jgwMJVQmPIU^ z4so9f{+@SV2bL<2uI5I1PA2+{G(Z6sJhb{_BK>)nJu^aH-v@jFGY8VpcG_H#vIjX+ zghcM%T)SX;#Hy(`U!7fpvb(%k`oLx29`V{2wOQZ{Y(I9CP6zIu>7^y-6}}1*Pev$` zHyrXvc+_9!_cVBglr?z|Ocpd_tuE#dPH&F~mPBwQ$isZ)aR}a#V${q$GV>xe!kIdP z<nIbS6-hknrJL>4f7ZBsmjSs?K+1h0?|e15f%LP(;5*$f;II{pW)X@I%U4Z(JX!4d zBq2oZ^(eo8+w(*Xo;o7GHclYw^J}bQ%1bJ^H#>`^OqQ=1s#|lJu84d@P<j{5%7aw3 z@P8eAcO-IyhBNX*i8Ek;z6*!jhEp~&&VK-`a3t7M8Fk9fv3r=K>8?XsF^$tO%x43> z!2$wKzRY)2&@m0qvnohQf7%HilZaC&+^Kxu?UF6n(s}OdS!V@!z0Ruz1ow3$o&}uK z-PSD>8~zXfa8}0%<D+Yj==M!;Q9OWavZvhHHcK!uXhpBym@lcZrN8fYxr6+TSmr_G ztJ4l)L7L*y4la4LGLOz7=ie0KTG(ftKGP(b^8eiO24G+(k;dRUQ9P`R%yQo`@HbpJ z*#?05?^8BD>Proa+_7Dq1=ax-M90i`M_k7!ps_X4<JJ>AlG{l=Dp2@oGB~qZ9-~gL zxiqiGIfD$OY%&5(bO7B4^+U*GkgsZgN9-fkJ;4nX{0m|Y#(tC0QRH2a8^jn8TGNUE ze@_|6`is3c==(e<`UU`?@o7eAcr&**OAuckqBGlvWQlr0JAm3DNfxPuV8HDT8B6C( zr7R@YtRhTiwA<mjJmVmKB*}8zH*IiNOR<dyDt*)t7tKjQ4DTZ%4U{0;_`){WKq+PA zO_hv~;(QN)bt?%9ny2gy>jN)N?>~$ox)t<ZO;rsSW+9=et_xL`WuQc3mtrrt?8u1Y zW|g;sQB+qC?0txQe-ZVA&-YF-<nxL8ScVmguLo5wyJm?%_8t2>#zCwx{VmUFU$tH( z>=Uu~o~GA=@lP-16)jl)f9-vFJd}Iie@94&8QY<3GumufBf^9kMp;57vWD!0#**z; zXe=>PcHzVzdm^Do60#f0&IvQNNX8PP=X-UZbMEKdzf-@{{m=7yUa!ZWW3HLGzT5Tr zeBR4P_gtJ6unFpgXjiz?Rz|Dtz>!wT%@$26xR8+a?lS<dj$4V$ifLP5MfYpyBe%tz zaI?3-IUmpvUl((xB>h|yJhZ4Xg>>A$)9!tLf^3cl`cqqe%=}u4qkxmNPTn@KptQ-d zaCs6}fVwVVvh)mSNsaLFkxH=}_v8yn?NIdKok>_MFJYbE`5Hw-;VvZnA1Ngj<SwaL z*Hwd?;+PGoE={EhQco{-I3t22W((7p^TWE7=Zo%TJ+5KzvM{Pnq__Zg->TqanZ6XY z?9KP9Y9IR8GIm#-MBdEBrw&xPU_(<>ySi%pC9-zs!f@VV!+^_BTq#Ix1is{Q#7AlJ zkJ?l2T10pXqz~yv1^6vLjUG3uO?2O~J(~zrrXJKU_oh|y$|9u#2HTcB4w6q?`nQDe z_tfZX;mH|__sq6!Tz-2~$|=#$i08t`ff8TU^s1(^M&qgLnkpxNiE#5?7f6U>gkEox z9e{}c$PRn8N`VDrw8R~tnZD<V<fP*yGv8p63iJ0Da0(h`?;7{de-8YrZ-bhl3mGEV zpIC>CuOw~>pGpUv>h{9vd!(}HDc6a6L8-S#;vA-+!*dzIZM+9bXJkQg)rI$nVrsfp zfY2isYnaS%-0vRX6PRl7^(I$J5q+c)x35aLow~ZUl7||tH1V|(>989DretJ*x28dj zaTnQ~hYS0a2`R_~YY5jW_oG$hsY-gI8#UxL&uQd3a_qoT35w5w9jSfFzUnw-!d>eI zUprCy)Wa#$pnF8eBSxGdVPeJv-TL~DB4aIE81q4e#-2ypEn*{zP@D**F6H%+@0;qF zka!G}f&Kk`P*(w-odI?@^DL80R6xWQU3JW6RsXO2v*NVvi*F6r2j`O=OS4Vj_<0TH zSgv19dE83lKH!yFUJ}K8M*<C>ggl>59wuBRUVxXt{GM{}B>NIb00VR#di4gPQg_LX z6hdHv8|SPsm4S*xn^C2y$#~hMoGD;PpXGT>Lfmdq1@vB69*N?8HNusjNPG55rKM_; zU(fy=l)_A;f<$9J?CQ_6_h<uGB;>5*ZXu(e154(1S<6uz>*S8uyuGFRoYu1DL(Ll7 zPBp+9HzwtG&^%V_B;v$TgGb02iB>e;*!by<s<*9`3?)Q|izLgAF8)QxJn;mSeo4aP zJtLTOxBRp|rcaZB?bbcaMy1%ToyYxK&y06NY$(dkl&|)AM^{utfEf8m9+V?3q%Hf> zI|pYkJryR`zg>J;w)7mB{g`E;XwqG2`s)}s`=Ap3CY*eFYS~NvmmY<Xb6i`$-j+h~ zhf0)Ihpf>ybsYQo@Ta~!wKsj{{a;19f1T3TyCOkpBCS5a?4J?tsUvhbOWIQ>kv*8x zFZsjweWXue;)^(HL|m2*0+v$z#&6g|KE0HXfm7J450c+gl2&YeqNMQrXeH;kzME5! z0~%#CUuY2ax~N20Kms@;*(xAVVAHypdZ{z3>ud5L_6s3*Ne%m#b)5-DY9sRDp^+^b z_Vjtq;Z}f~_vj+Gs5Ymp2$2kHBRIljVMIbVFi<CR<xdyfioJArs28{cj790+s=7hw z<q~i<XGq{~L9K8;d)I9+o5L2SWrsxWL6pG~j*#~{493nw65AvOW;-=xwv1Xqc<{zR zvsxll<z9h=joK|5m837ku^C!+oSL$?DoAzY^5#BLWVdztq{7agCfT<K;bU}AaW$-y z$}ldteibA7VOJnkF7iRVIm(u~4xON>VPpOx{y~U+JZh*uh~dm8!0r+FhAI^(M!(in zbwhlDe*Hktox^vK0eqaeq5$qtUQTQz`nU^+J3gW%dBUtJPWycFv_A0j<}c&)OduC8 zHP@|hFHb-Ts*1_g((Zn6a=Y<d%>Z<9`@MOy!II&qwP^WfrR$<WoyiU*8Z$sltQOB8 z-)Uk}rOl4|yc8&f%z~@lJzCH%hp$GT#9W*lD-_S3i?eLv_Ll3fH}8;RVvO0Bp=!Q+ zo#loEaUD+{vSh4%Ua;y}3MUdBcEfvNPH?yCBs^VY_gFs6urfxWEf_n-l%9_E80wN^ zO^Kt`ZghBbdWonY?XRl|EL<K7-#Z~h>BHlr2cqLo%#r7V#`0CA)!pqarxmp<)E(`D z$ARVMvNy?H=&cM2rv4E$I(RS|zIAJZD}VpqgmGD>to8(cfE5h;#Iw1GFW68XmSkUV z1>(b_5X%;bnE|7YCUhE>6F(C_iWVq&`^rmk`$cfJ-Rlo()WCxt)Hjh?(!GM;4fkY2 z{Y-6shas$^;7qT>1M@Lx7BOV;WjN8hsX`hl$&Em90nhc$<kdG)@M4L6__84mXV8Wi zgh=>#wgo3|eIg9Q44+03_C~>+3(}%tXQChji4Fdb8r4iXp6xz$VHFp{SkGQnML6Cb zWJ`jmFid=hy!V%vQO{scVwm`<^_FfsYE8}+DY=e_ZH8UfsC+-~C-y!k7JL-``UUj0 zoc6LHl`y*tXt8eOR2K5!V<htEZ5O#oVfyB0l9tq;;c&NhHAFQR98<<*T7bveVbGrs zl-JI-K{;5vT-ftmi-?-wfquA#lY2<ZVTQ@$QxQm{VC4`$9nc}PCI?6(BkU6qySd>E z-Xpxf?y&kxt}{#)rQ-^hE5iX{dH8;DDdG?}9A3T}loby1iy{~)FY-LHy}~7W@Z_Rm zix#h(nr0=xoB=xiS>PgJ?Ql_s48P&yD1tbkfSIBD+CYHMjp(Or$Q~^53_4#NAI$7u zH~<DBns76kpb-rlW{zbkJKohiA_U)8c6}h3LP&|i$C`w(nsxh7YYF+w+nve(z+ppy z-aMEO6S5*#q7f*WY%;_W^EJje0{1KpqE&s^9<f?TSh~mbTDpsd;N?*f-xP?B35Vqj z85nM*&$E|31Z5LU@8_l}iYbils+&Nz*&tY#eX)4z#jtKubku0B#quWpVe*y=X(o0n z9HdGiz54K=N<7n}SCIDiLkBo?OYlsw7^d`Us|^cI4xiq4yGw=M;?5oL0&x1zrGBr( zmuX2GYNT%D4(ykjGyQF&YkRn3qYlxAp|}RQGeE*K^<uDhES`)De6P~9%mjPa^xv|` zv&<nx@)JXzAy5H|#=G|oEaxLXBgU_)>M=yJJFy!|l7GEDEJ==}x?yE;Uff2E&6u!9 zp3Rk|r{XoI)SpFS%`oU0m+_p!5Ag7#XE@*;d4=2aK65#2LkEaSQ2>@GDJggs>!PWw ze&PY=4(teV2t;soP0Fo+Fcb42_V(6!Mcv9J#rN|^!w=e>Zqj@jZ&v%(YXi7ch#~bn zLQf2yBbX571K>N?`8f5a7tYgbNJl?N(R)K#h1ZH%X+OVnzPZ&_#CCn3ho2^o{ZO-m zRD;kRu~lJfOy8>;!OB2i8MRMgKp2q0;gSTpliYSchjsYm^B5jQc5uTVOLYn9;iQEy z2OEbrj%I!4hUdsf-zILBS4J7GH2*RgRn2`E{}7PIK1#>!S=^31jaoMWU1(X}S7#>g zu1Rnlo}a^fnjF9*lNrePT|<`VcRJ16wtLmwU3>*6S}i}&a*b*4!$h;3^Ngar;KV1r z?xtB#!-W0o>dCjcW;ZMyI=6vf`O*@<{V~ivO)@2pwaP@xFajs=rqa_&_>%?5RWYQx zj)f44xRvQO5mA$Qo9f{m>v6+}Bq_`FntqCsSe85wd^^ebyV3_{$TsOl`sKU7g_}7` zzQ86&u>oHZfgvTkj;NgvLme#l@z1U8!OCKlp-5*dS0WWWV5%WwPBGA=sQfah3rj%p zokY&Z8>va3MtO#A=$@LY3?{*mJ_tW_%|xBZ_==e}DX9bAdiYKclEFSvaVQ*B;$QZP zCrvtvlT`#`e?`Da>ZyiuO2hckl5DO!c=v$?zf)9UXZwK0*FM&Gol)kH+Stf7?}Tyi z^s0(O9>3NcAWwFu&I=EX9&LrddHWJh{S!9)z3$<trY2xB19sO(egvy}%uyV>>dM*J zN4}t@#zSO$nvA_TcP$8=DzeONIKC;#q#qNB-EDU1)x)jqaZenm?{c@?BGT33<r|e! zB_@Nx3zEq5PIVDj5zBymZxX<ke=})H1ttt4lkqc7Xjx3jT;7V<XSnBWna3cMyPYP4 z<PM6x0U4;q4Zk%QzOIxD0<C=atWV3X>Dc7yov6M((|C`9=vA~8+SyGEy({M0;46q+ zk}ZE>+PqW7<!#YO*Juk#Z+fO8_+o$0wODLu+954Fk0w?xSE-!gonJa_%F#2_Y97%J zZ_>G7mW$uZDCVFkt_iYj`}!tpM$Q?nPa<=}*I+xApr+^h<}N8t#M#CIahb;mM%M~u z1&6rEd{UqTjZzj&whO&{-lBH9NYe)~B<Q5JC0YA6bV_6BWhAr4uTbN+V+}$*RQ!-H zKwk9EVa8&u@gu!@DZ1}GxcUv5b!uDop)bsFy(*Zx5M_8iKWF6a4is;r>OPMZGNI>8 zvs@rA7<=wXH7I6~@Pn+5CM);ZGT0v2%U0$KFke2J$6Y;z*Tb+bC^~8CC9b8G#dVt; z*#%kYD|vA*^N<amGkj!KsvbAeYCZ{~CznEAALzWU1Mbb#mA7Y(Ron4=#;%_xp$~df z9UD(?7XJLMG-<0)pdAtvWa98RsK8(TOjmhL-?p+gb~&K5L8w`Pi-_dAM3ODxL27jZ zR6vR1i`%x7Sihdx|2R_qRZFl($ky<@LY!$cjT;^#Pt^<WD;+ri_-ER^$CO5;X#09T z&oR4A#L+A3+{88Gp1Om1oDFQ3Y8DC!6g&WVEhsN2U%4c;{UVgaCd6|l%s1FrMiBpA zv1MDCn)UhjbNH_!W)Tq(F3VP2koaeHWG1s7$O1%GXVFgYVAc4s#xu*gHySlt^^v~Y zpiSKCSreTQ?M6v7J&9nL1d*1NvN&ZM&^>FZLu3PiQD#4^9zJLRzT@Zr1-!lb6Cmpi z^%cp?!$l+Y`+u9tp139L_;SeXit}_XN$dUL1}l_pR=&q|?og=AG18<js!DVPou%Fp zF*3t|+PWO1t30+ALi!Shn2^5gVJzBglXvbHtPkhw+j^@>^O5iOMhCOxdsb(Fic4-~ zl+BtpYBH)N7)wN3XG=oPPwJaC$U_Z@6?34L>RlJ{8n)xu1<KHuimIup4E;BCF*Tkf z7wUt^49Nw;7JLWWe<sr;$0dt=4AAag0gn}P@#M-(-+}Rf+OGM|I2D~fwT$dhE@bOR z31_jGeT$_a*sgI(x)G4h6p|h$Ye#brr!{fn2Bc%=XU+zVp;xpQY5EdF^D~c85wCy& zO=)`%T_jz*&;?<^Kgf;$1}A?_-{&~NX4?$1WBK}|wPxh-L+%Y>Vo0~V&gtm@VJ=e5 z!^ROD`{scSm|u2ZC_Vo36VRN@9`PXUe!~V#8#0TzR=$-Sg!jUr^T0#Wy?xWNZpFAc zV0>$g{~dGWFUAO2_B-lNmzs~40>YTmexws<3qsyR>_Il*j8FFzSn2$dw8Q%fw<7X6 z2o$6{;m@I(n>-RJuzrK(Sn`%_7E{P}Ok^(Sx)`0O6x3S{W6V4aK^P1;<QVQ!m4}X~ zehALkare6C=yNEmlT)F@8%G6b9(5K&H`%`TjoMs;>hf0NPKsNiEmsPQ9-WR2?(h1@ z?+pxosXkDL!^h_VuCd8y(*A_PuiaQ#vkaP2Nm{*p5RRh1Lf(5fsycNnW2GE&AoAKj zqtD@JF%0IgDx?}!m8nD2RRWH>kIaLB!Fhjr?qrSShq#*7>tG(|{J<b2l}1*)8s*B` zg1?BvKgBWJPYifyeC{cvC-V;k`kL{=LSz>o)3jbs@G$$_EsAtWcCEm|I3%EKp8zc+ zT*v!9)%Nf3GPVJmkD`kJUZnAN(P9Du2xNm0Rxh=<gumKzUy*U?yL$miXliVI=%2IO z%E244q}``tStru4atT|i6ZORXRr(t38OW$R;2{J~EazZ`^WCF5fb7N#z`}*91*{<Y z!~8**a1McP$-gVWa%;9ZNSg~`HV7Ez=br&eaVNQ{Dt-S2*gI!%`%+jLWukolSxoGm zHwFS%g|oQHI(Ne~r=&@Bpa<C+NCGoo<M?rXhI$?1GwfOYh{_Q_B84I+R^;c^UZIzD zvB6=e#x_WdNYhGolw!J1(k4lL>eu;npsA`L<2fjM1l+-fk@`wFPd|t107tE%c9^U3 zx7&axS8y4?ey8!SB<2N^5^;m8z@p6|0!jp{3)af-$+1IDaSQmPq|hLMDi{T@8-9T* zJ@&s2F<(Bk%(iZG*G?;S6#zqpmBDjUJ4lWF-e!00ju-9B_?jbrmID3uZac-n1Ku@O z3Fa)_GLNiM0isiG=!9y<oTF?&Fd1c<)3#)o3{Ia>CUbl@>Dm>xTp|Cup1j(4n^B?K zvFQc3FsZI~sJ)a0YFx)jmmanGyjJ=cB(bB0U>o$pm4uuUrybJ|>XQsl_=>cywt02W ze*%%!u%QH1FnD-)ERk|KOVh`Ab2d)h6e&dG7s06ZsLW^C-w~_r^@x~zygDrOM%g^^ zn~Op?bP=oyTvw~=Z^89ljek7Qf~b-_V)&|tb!T-2;l~qT@-L_WI7<>HG)LNPsVtHx z`~?2ESWEy>1h;Vj@_2EAS1Pm9k;t8J`GI4L1nNgfUg^Z0mc@@i!|pqQ7GRxDNSzmc z0A}T~+MY9se#v&S2;ilX%;XkG@S=pg7;qAQBmAO<vNn2GNxm7L`s#T7eNhclT!<01 zObUlQMo4_D^Gl&%v+QN$tXE_~ugB~YwyeeOaTdvnvx(MN7jqsvUHY(niX#spB!s4R z^@_PLJf8CImQbgYF&ty9b$#m5**y(hqT<ADY_WOLqvTEAfIf?zEzsVa=syOMt74q1 z3rA|J_wpdvN}yVy*SaRh#>b8(iT5XDE=(4?o_toN4cD^*kSL`tl+TF2M=UZq>}+dQ z-r`)X$y>wVwUdWW)ZJrgU0c?XuK=02d;4SIh-+fzEQX^Ht&+|&zTvo6m*;KqqK6tL z+pj%I1JtpJ8ZbCxfu-ej{gC*P;&OEQAExD3a9nOWaHt?Sy)gw|77*c-QP6pH=9+Bd zB=8Fhi#c;plbTmh(HN*R-awZ>I~IYx2_QIAecI`3vRT|0rV~MdCfl$1<QUOD7r@xh zvh9w?d|kQqvePdgZoXGf4uj9OCq>~4R-`6GXg}HJn1T8QzAg&e9@xBrzdm4@%qaz` zM*JIGPP5>F#NW@BVfrTECI!-E`b$)lW@0C<sM!T3%uezRryF%YdGh4*Sl6~p(bhB9 z-I<Wl`{H!&*8LifYF1kRGwN~EM+b|&luA8Ig`;F|T@wk-0Nn(XFtXl<E<2kN+;t9h z1iq|FeX#QKjxt~-m^_={_RkQ`vI#gDX=Hx7oT>he!_~a`**w&PQmaG~<%$~UmJE3; z_4;^AE`0eKywm$Q2UHi2?;MR=|2EhN>EM?R`o#UL@CSn}cULH3#t2<=24O-XtQY~E zG(wexf0TgiuyB6|#Q1~>jCWLvjHqR2E^N~XFE$JMR&G{_GdUp_0Bj*@`O9<=)EAly zsTY;>e#7e70|Ufx4s5GQpe>3JLIwasg2toM{0E5EMpzF~yRsF~7j}xK-ALlnur>oy zj;1#sAtwEklk`bkQn|fx!7JH;x=aG1q&pQ$4J>*1mAhjAs+z7D7Ow)&abvu(DAGHJ zu)kNfP2%nZ1CDtR8GbfVV@e0%Oj#f*oPcQi3+H1tIyaz$h_;8_Uv&goV9KoS)E>NG z^=qT&dm;F!5%%W7Q{7KN-O3v7y719sn5k?oVv6i7d}|`F9733)P^N14oNM_sRgn1B z2&+_F2^AkjvsOv4>g6?v3*bb=@Vv&IMQ!stF&Hzkh&Dcd>q*hTpA|jW#e;e)$D`5m zdQzIKnDmtD*-*96cVv65`ImlRE)zh433^>h8|rEzoHr(&aI-MRA+ivZkNgd~QI2@g zsVuIBGiCsnp`F+_D~_>i<;vGK#>?cl<`y}0%Xk8F|F66Q+s(<Z%<<zn00OI2(OYc8 zuHT!!^R~5Bqs42sk<&mI;>OT|TFhT=H{rtD6Er4t5Z>ov9W7ZS6~jru=l8m1lUvY- zD+qL(id6W6<lz_QyglN*fM}4E+?&e0wE&tCR*$xyZ~qyQnFF(<p@z!9V}s(KSIf3Z zmx1s+L_M-8Gc~{k-(KE+Vg6DTj<mR9*q<3Q4Wp7NNmd!t%v3F^I8|&>YN!m5PV!)( zWXN=J?QlgM`;gGh81cnhc>ToT)_X!mXPE~jyY8B6GkJ(2pXWj*FI}1l*F1b`s)oDU z;}F7DbU?TR$NGtO$K9+c<C?-A>64JpC4zN2fUt(?t5WGiidm1{+PZt)+Efz3cz82h zslrTobe<A?PpWZFr9@+@)tkxts#H$qmhHuL|HtVnG|kVQU1u{~MicSZlE;93>GZT8 zKGC0F?u+)pDlQ|pA&1N$*>U|<8MPF}S>xcec$!{|*WQwmNeDc40W|E|?S~R^LQ~40 ziZKWL*JKr{lSDYYnAH_ZClwi<ry+BEn16bzV&B{qyp?U0h&VgFC4zLMRws<(aN*-A z2rPB_(&*Y;jrwM`SzOyU7<*7?+ARQBdy6NklYUdE8!-u2Eg|{d<w#)B&#dF*qy4$1 zQsAY?IfLpmJTStsAr>zoGMtXhOL&=07IueDgN5S~x~NsEcsP!7@-n|v6Ok1jNjT!C z9&@mXWfAY5XvIUD5R%EQjR(3!!s{EtQjPxV9k@rRe)P#y(%v;y0KIsh6e)H~WUe}F zcQ6*i8-v$0RY3D6V@D=m9dBTpU?dBA*`qaGJl3i{V9#K$RvgOu<@WGcN0dz;+%TVm zAIV{q_?h<zUL1cPpSh%UQKN|@Y@^jzc7ZlyFvU7|Do}lfBn3-(aD=>(i{}_P>iX58 zw9bxS?;P(FJPHEECriF=ozPP^`4tQ!9gS0TdV?!=Bk17FIzR7?k$JuSqAJ!g(R9(7 zV~0_I6P(Nj<s=2eknZQ86cvyPNL;DM4n^0u6vaq3$}bu$&STS3n|Zbe^{Rm(_A)Pt z?O+jTZF8c{W0e2W;>%SueOY^@dGisP9y+kFWPf?PCsvcGm?@p9s3NU8s!YHsk+z(C zQ_L!Pd=W%ST%swoz~(^AxTgxuj-=MPZpPW{r6PQq%t&=^Vp!ibVMYq=aGTM3csXPK z35rp`1fDL9l0(ipWC$hG_`0M|)oan&2}(8#kQI!4Oc|@6TSGmt9f(hh;<n}>E+DVY z9nV%3OUV`XAl>`p`ukq<J3UO}FtqChkE0P!lc^qjU@~E^4XnrW<f7G+GO)sv*Zl`` zfq|4N#(DU&dEs4?w(TL*thb$RuyOaXsf&%Cn<(<`BlO+w%#$axD2JPPW!*?0J0@A~ z%VxP!QB27XGJ-EA;@G?dR!}rFdZC?_Xy>2knJMzgbDv6dwL^{M_S&A+^_O=l`?rZ$ zi-3*dFp`QP9|?81V0hs>OIbPta6SDFm;6>ZZ&#peVM8;EW0?0hv;nt{gzz9(%qIyJ zFa5h0!?_{`!i!F=@UKxA+(}Q`m#q|~w%{!%j!4x+wl{yo3ggj%3JC>ECZo6J=c&*5 zZ-!}JB7U(pw%lX5Q^jNXkT&S{&dg8U0DT~fChsXee^YLPqyM(BVN?=j&0X!5p|-!^ z<}UbN!?>0UOjoe?Dp=mZf4Ui*+pUP(-mQ7jXwT&CVE(wGo_wnr#U^#doS+c}fnJx8 zbMv$7$|qt&IJuhyY-`hu#^TP;%9Eu5&%N`_YM)|^j5?}!9Q^Z`tzDK;tmGUzUYzo4 z?u-F$RVIT_MDS7)>?zJ{2#P}+OH!Vlw=j9qZvNr~sHEznkb}n~uP@+)XFXM>wfSvh zg~?(_2gPt(d=~TWWTc#Dh)kTE2ksIGZ*5}4hniRAy1E&g*cWd7^yO&IxpvvEpGwLk zZjM>unnl7*KHRS<GdNHfINx-3uxZU;vnp+xiFSB<c;TWe$^f;lJ^Hw^zir+9gZCPR zo$*)WwIlO2k})z(j5PYmn>!A!1}hS7rJ1&T4t<)#{)s(Z628WO<67+7JuiIc*t!yp zzAZ+Tx<B~tHF0dx0+{p%*(Qk(Z8PR`uWd;PRiJ8|qPPA#6#j3N>iRDL8Q((j9Q%VR zV@IdgFitR#BhL}&uwAEDju@fWjDb-!YI-$!P<t0V%+Z!~surX$&Bq&MWY{9bBTm(O z9;e4&KzxT*0<FT_6X4_&9aC2@_>EhVz87e!QJ=;^`BN#~&Z6R(`<4SQ?pnaH^|T;* z{Mt2OFO-`dt1M;#x|Tt03SGG{0-WWgnHen(KIW>#fPR<Xydl1Mf1;wFm6(68;_-_8 zL>6!dNr966dx(B%+<J#2NyDrI>fLIQrz7C}vPhRsMEELj=*@8{sm?tw=ai_krIXrP zyEY^aa%X*|4qKN!KmY!5e^ICS*VwY20{r=1euBS?1M2<gNb!&re=kHS0Jarha*hBh z^M+7>+O$%a&K{w_tAHL=-6S-#f3L3QS4mjvahD5)6cGOVngQ)LxuCEl^@3H<DiHRv zJg%(%oeBQ!1PaWC^;tk|zR9uT_dCb23H}Mti<5SM>wDZK6mVRhIvO&mP^CfF8($9v zW-FlGe5DzxncsT~AB+zMY(fW@T9)q|A^-Xr5$fQMdAW);{{zLqW$-ga7+qKY)))P0 z{6lSEKrz6Gng8x={Pp^XfvE2IpDxvYQ&I8F1#Qg>6ax|JJ<5OjG2eXqzt#o#B_fAG zo$+%0g@4*4|IjV-GJ+jsbGCx*_xb$$Utf<0>GW;hhi|^a82Hv&`rkOU^`{!fflYe? za4Go`Qx*B2jCQgaJ<v6jK-@E3=WIrf9R<KdgP7*-MhD)%{`*7!$FP>C)dQm3y*dD} z>pRPV599$3IuPwg-}$C$%73s5eK>(#e+E$ybU@c}YXWz?+$NPN2>M^?xIH}b|2rH1 zV&%2F(|t7shFts~^X=Xn(r*<K1lXZF$Mg5C+5N=@f4#B(cr|oT&l(gj^&!}uq+l!j z&co=^+<!81|Bou=?`<{c7w58rJu};DQhDx&52h>9;8MPk4a=Gzo*P{uaHRF-mAdBt z@TKk6;8M9NTJ5zT-sQ<^;8@Bvuo^V_@k?KTORrp=4w(JnX_gKGVkEuHx<@%be(6o9 z^!sb)I{7;g`kzkEKfc0x6P)~MYC-mAe*98K2u^sB{vqdw55xKuNbeQ2*_!ynZEfmV zp@aYC$?-EktZoaP)dUaM&6NbnZ&%U(^(6k&$rQ>5bp>MdtxG!g_xH?ipU?|Q>Q-jO zFZ~|H{Be@~F$;e^H>c?SZ^Qm^2!3za|8K*7W7+<B&;YvrKeJ(%zWijO#8x5Lej#)h O_|w7Yqf0cbZ~Pb1%Fw$2 literal 0 HcmV?d00001 diff --git a/_static/IT_sample4.png b/_static/IT_sample4.png new file mode 100644 index 0000000000000000000000000000000000000000..19caded9fef743eb110b8fc738839eea401389f1 GIT binary patch literal 334618 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%0DJG2e`;yhO{d0$?gd@2`8R7 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 IRkjHJ9|;1VB>(^b literal 0 HcmV?d00001 diff --git a/_static/IT_sample5.png b/_static/IT_sample5.png new file mode 100644 index 0000000000000000000000000000000000000000..b27c3eb11eb560f49d90f17baaeae9baf320949e GIT binary patch literal 632293 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%0D&TxeMP*q9K< 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%0A!HsDA;9N?(UODCQfw~Og5JuPgsTY?0@tIp7 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 literal 0 HcmV?d00001 diff --git a/_static/IT_sample6.png b/_static/IT_sample6.png new file mode 100644 index 0000000000000000000000000000000000000000..bdb5354639b0a6292417d2ecec9c7cba4ecc5c4e GIT binary patch literal 365253 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%0D0_1>5nAE2$9gOwd-Ig>OS`?>N|tt`}l&H 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 AdjJ3c literal 0 HcmV?d00001 diff --git a/_static/IT_sample7.png b/_static/IT_sample7.png new file mode 100644 index 0000000000000000000000000000000000000000..6cafa761ddb478f1e70a584c3fb9f1c3c01f8bb5 GIT binary patch literal 578291 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 KYJsv<(EkG>Upu4# literal 0 HcmV?d00001 diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 000000000..7ebbd6d07 --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,914 @@ +/* + * Sphinx stylesheet -- basic theme. + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin-top: 10px; +} + +ul.search li { + padding: 5px 0; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/benchmark-1.png b/_static/benchmark-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c4ab31f1b11535e865fedfd474399d59a16d1c0 GIT binary patch literal 62190 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 BPwoH! literal 0 HcmV?d00001 diff --git a/_static/benchmark-2.png b/_static/benchmark-2.png new file mode 100644 index 0000000000000000000000000000000000000000..30f537cd0fcdc49b0bd832e0fcd0ba169d37ac58 GIT binary patch literal 142903 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 JPvEV~{|A#%FK++< literal 0 HcmV?d00001 diff --git a/_static/check_before_after_lora_tuning.jsonl b/_static/check_before_after_lora_tuning.jsonl new file mode 100644 index 000000000..95be83ea6 --- /dev/null +++ b/_static/check_before_after_lora_tuning.jsonl @@ -0,0 +1,252 @@ +{"id": 0, "instruction": "The sentence you are given might be too wordy, complicated, or unclear. Rewrite the sentence and make your writing clearer by keeping it concise. Whenever possible, break complex sentences into multiple sentences and eliminate unnecessary words.", "input": "If you have any questions about my rate or if you find it necessary to increase or decrease the scope for this project, please let me know.", "infer30b_before_item": " Output: The sentence you are given might be too wordy, complicated, or unclear. Rewrite the sentence and make your writing clearer by keeping it concise. Whenever possible, break complex sentences into multiple sentences and eliminate unnecessary words. If you have any questions about my rate or if you find it necessary to increase or decrease the scope for this project, please let me know.\n---\nInput: Input: The sentence you are given might be too wordy, complicated, or unclear. Rewrite the sentence and make your writing clearer by keeping it concise. Whenever possible, break complex sentences into multiple sentences and eliminate unnecessary words. If you have any questions about my rate or if you find it necessary to increase or decrease the scope for this project, please let me know.\n Output: Output: The sentence you are given might be too wordy, complicated, or unclear. Rewrite the sentence and make your writing clearer by keeping it concise. Whenever possible, break complex sentences into multiple sentences and eliminate unnecessary words. If you have any questions about my rate or if you find it necessary to increase or decrease the scope for this project, please let me know.\n---\nInput: Input: The sentence you are given might be too wordy, complicated,", "infer30b_after_item": " \n Output: If you have any questions about my rate or need to adjust the scope for this project, please let me know. \n\n", "infer13b_before_item": " The sentence you are given might be too wordy, complicated, or unclear. Rewrite the sentence and make your writing clearer by keeping it concise. Whenever possible, break complex sentences into multiple sentences and eliminate unnecessary words. If you have any questions about my rate or if you find it necessary to increase or decrease the scope for this project, please let me know.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: If you have any questions about my rate or if you find it necessary to increase or decrease the scope for this project, please let me know. \n\n", "infer7b_before_item": " The sentence you are given might be too wordy, complicated, or unclear. Rewrite the sentence and make your writing clearer by keeping it concise. Whenever possible, break complex sentences into multiple sentences and eliminate unnecessary words. If you have any questions about my rate or if you find it necessary to increase or decrease the scope for this project, please let me know.\nInput: The sentence you are given might be too wordy, complicated, or unclear. Rewrite the sentence and make your writing clearer by keeping it concise. Whenever possible, break complex sentences into multiple sentences and eliminate unnecessary words. If you have any questions about my rate or if you find it necessary to increase or decrease the scope for this project, please let me know.\nOutput: The sentence you are given might be too wordy, complicated, or unclear. Rewrite the sentence and make your writing clearer by keeping it concise. Whenever possible, break complex sentences into multiple sentences and eliminate unnecessary words. If you have any questions about my rate or if you find it necessary to increase or decrease the scope for this project, please let me know.\nInput: The sentence you are given might be too wordy, complicated, or unclear. Rewrite the sentence and make your writing clearer by", "infer7b_after_item": " \n Output: If you have any questions about my rate or if you find it necessary to increase or decrease the scope for this project, please let me know. \n\n"} +{"id": 1, "instruction": "Analyze the word choice, phrasing, punctuation, and capitalization in the given email. How may the writer of this email sound to the reader? These tones include Disheartening, Accusatory, Worried, Curious, Surprised, Disapproving, Unassuming, Formal, Assertive, Confident, Appreciative, Concerned, Sad, Informal, Regretful, Encouraging, Egocentric, Joyful, Optimistic, and Excited.", "input": "Hi Jen, \nI hope you're well. Can we catch up today? I'd appreciate your input on my presentation for tomorrow's meeting. I'd especially love it if you could double-check the sales numbers with me. There's a coffee in it for you!", "infer30b_before_item": " Output: Write a response to the email. Use the same tone as the original email.\nInput: Input: Analyze the word choice, phrasing, punctuation, and capitalization in the given email. How may the writer of this email sound to the reader? These tones include Disheartening, Accusatory, Worried, Curious, Surprised, Disapproving, Unassuming, Formal, Assertive, Confident, Appreciative, Concerned, Sad, Informal, Regretful, Encouraging, Egocentric, Joyful, Optimistic, and Excited. Hi Jen, \nI hope you're well. Can we catch up today? I'd appreciate your input on my presentation for tomorrow's meeting. I'd especially love it if you could double-check the sales numbers with me. There's a coffee in it for you! \n Output: Output: Write a response to the email. Use the same tone as the original email.\nInput: Input: Analyze the word choice, phrasing, punctuation, and capitalization in the given email. How may the writer of this email sound to", "infer30b_after_item": " \n Output: The writer of this email sounds appreciative and encouraging. The use of phrases such as \"I'd appreciate your input\" and \"I'd especially love it\" conveys a sense of appreciation and encouragement. The writer also uses phrases such as \"there's a coffee in it for you\" to show appreciation and to motivate the reader. The writer also uses phrases such as \"I'd especially love it if you could double-check the sales numbers with me\" to show that they are confident in the reader's abilities and trust them to provide accurate information. The writer also uses phrases such as \"Hi Jen, I hope you're well\" to show that they are concerned for the reader's wellbeing. Overall, the writer of this email sounds appreciative and encouraging. \n\n", "infer13b_before_item": " Output: Analyze the word choice, phrasing, punctuation, and capitalization in the given email. How may the writer of this email sound to the reader? These tones include Disheartening, Accusatory, Worried, Curious, Surprised, Disapproving, Unassuming, Formal, Assertive, Confident, Appreciative, Concerned, Sad, Informal, Regretful, Encouraging, Egocentric, Joyful, Optimistic, and Excited. Hi Jen, \nI hope you're well. Can we catch up today? I'd appreciate your input on my presentation for tomorrow's meeting. I'd especially love it if you could double-check the sales numbers with me. There's a coffee in it for you! \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Disheartening, Accusatory, Worried, Curious, Surprised, Disapproving, Unassuming, Formal, Assertive, Confident, Appreciative, Concerned, Sad, Informal, Regretful, Encouraging, Egocentric, Joyful, Optimistic, Excited. \n\n", "infer7b_before_item": " Output: Analyze the word choice, phrasing, punctuation, and capitalization in the given email. How may the writer of this email sound to the reader? These tones include Disheartening, Accusatory, Worried, Curious, Surprised, Disapproving, Unassuming, Formal, Assertive, Confident, Appreciative, Concerned, Sad, Informal, Regretful, Encouraging, Egocentric, Joyful, Optimistic, and Excited. Hi Jen, \nI hope you're well. Can we catch up today? I'd appreciate your input on my presentation for tomorrow's meeting. I'd especially love it if you could double-check the sales numbers with me. There's a coffee in it for you! \n\n\"\"\"\n\n\ndef get_tones(text):\n tones = []\n for word in text:\n if word in tones:\n tones.append(word)\n else:\n tones.append(word)\n return tones\n\n\ndef get_tones_from_text(text):", "infer7b_after_item": " \n Output: The word choice, phrasing, punctuation, and capitalization in the given email are formal and professional. The writer sounds confident, assertive, and optimistic. The tone is encouraging and optimistic. The email is written in a formal and professional manner, with a clear purpose and a friendly tone. \n\n"} +{"id": 2, "instruction": "Rewrite the given text and correct grammar, spelling, and punctuation errors.", "input": "If you'd told me year ago that today I would finish a marathon, I would of laughed. Your support had a huge affect on me!", "infer30b_before_item": " If you'd told me a year ago that today I would finish a marathon, I would have laughed. Your support had a huge effect on me!\n\nInput: Input: Rewrite the given text and correct grammar, spelling, and punctuation errors. I'm going to the store to buy some milk, eggs, and bread. \n Output: I'm going to the store to buy some milk, eggs, and bread.\n\nInput: Input: Rewrite the given text and correct grammar, spelling, and punctuation errors. I'm going to the store to buy some milk, eggs, and bread. \n Output: I'm going to the store to buy some milk, eggs, and bread.\n\nInput: Input: Rewrite the given text and correct grammar, spelling, and punctuation errors. I'm going to the store to buy some milk, eggs, and bread. \n Output: I'm going to the store to buy some milk, eggs, and bread.\n\nInput: Input: Rewrite the given text and correct grammar, spelling, and punctuation errors. I'm going to the store to buy some milk, eggs, and bread. ", "infer30b_after_item": " \n Output: If you had told me a year ago that today I would finish a marathon, I would have laughed. Your support had a huge effect on me! \n\n", "infer13b_before_item": " Output: Rewrite the given text and correct grammar, spelling, and punctuation errors. If you'd told me year ago that today I would finish a marathon, I would of laughed. Your support had a huge affect on me!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ", "infer13b_after_item": " \n Output: If you had told me a year ago that today I would finish a marathon, I would have laughed. Your support had a huge effect on me! \n\n", "infer7b_before_item": " Your support had a huge affect on me!\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: If you had told me a year ago that today I would finish a marathon, I would have laughed. Your support had a huge effect on me! \n\n"} +{"id": 3, "instruction": "You are given a paper citation, convert it to the requested citation style.", "input": "Chicago: Vaswani, Ashish, Shazeer, Noam, Parmar, Niki, Uszkoreit, Jakob, Jones, Llion, Gomez, Aidan N., Kaiser, Lukasz, and Illia Polosukhin. \"Attention Is All You Need.\" arXiv, (2017). https://doi.org/10.48550/arXiv.1706.03762.\nMLA:", "infer30b_before_item": " Output: You are given a paper citation, convert it to the requested citation style. Chicago: Vaswani, Ashish, et al. \"Attention Is All You Need.\" arXiv, (2017). https://doi.org/10.48550/arXiv.1706.03762.\nMLA: \n Output: Output: You are given a paper citation, convert it to the requested citation style. Chicago: Vaswani, Ashish, et al. \"Attention Is All You Need.\" arXiv, (2017). https://doi.org/10.48550/arXiv.1706.03762.\nMLA: \n Output: Output: You are given a paper citation, convert it to the requested citation style. Chicago: Vaswani, Ashish, et al. \"Attention Is All You Need.\" arXiv, (2017). https://doi.org/10.48550/arXiv.1706.03762.", "infer30b_after_item": " Vaswani, Ashish, et al. \"Attention Is All You Need.\" arXiv, 2017, https://doi.org/10.48550/arXiv.1706.03762. \n Output: Vaswani, Ashish, et al. \"Attention Is All You Need.\" arXiv, 2017. https://doi.org/10.48550/arXiv.1706.03762. \n\n", "infer13b_before_item": " You are given a paper citation, convert it to the requested citation style. Chicago: Vaswani, Ashish, Shazeer, Noam, Parmar, Niki, Uszkoreit, Jakob, Jones, Llion, Gomez, Aidan N., Kaiser, Lukasz, and Illia Polosukhin. \"Attention Is All You Need.\" arXiv, (2017). https://doi.org/10.48550/arXiv.1706.03762.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " Vaswani, Ashish, et al. \u201cAttention Is All You Need.\u201d arXiv, 2017, https://doi.org/10.48550/arXiv.1706.03762.\nOutput: Vaswani, Ashish, et al. \u201cAttention Is All You Need.\u201d arXiv, 2017, doi:10.48550/arXiv.1706.03762.\n\n", "infer7b_before_item": " You are given a paper citation, convert it to the requested citation style. Chicago: Vaswani, Ashish, Shazeer, Noam, Parmar, Niki, Uszkoreit, Jakob, Jones, Llion, Gomez, Aidan N., Kaiser, Lukasz, and Illia Polosukhin. \"Attention Is All You Need.\" arXiv, (2017). https://doi.org/10.48550/arXiv.1706.03762.\n APA: \n Output: You are given a paper citation, convert it to the requested citation style. Chicago: Vaswani, Ashish, Shazeer, Noam, Parmar, Niki, Uszkoreit, Jakob, Jones, Llion, Gomez, Aidan N., Kaiser, Lukasz, and Illia Polosukhin. \"Attention Is All You Need.\" arXiv, (2017). https://doi.org/10.48550/arXiv.1706.03762.", "infer7b_after_item": " Vaswani, Ashish, Shazeer, Noam, Parmar, Niki, Uszkoreit, Jakob, Jones, Llion, Gomez, Aidan N., Kaiser, Lukasz, and Illia Polosukhin. \"Attention Is All You Need.\" arXiv, (2017). https://doi.org/10.48550/arXiv.1706.03762. \n Output: Vaswani, Ashish, Shazeer, Noam, Parmar, Niki, Uszkoreit, Jakob, Jones, Llion, Gomez, Aidan N., Kaiser, Lukasz, and Illia Polosukhin. \"Attention Is All You Need.\" arXiv, (2017). https://doi.org/10.48550/arXiv.1706.03762. \n\n"} +{"id": 4, "instruction": "Desk jobs require writing a lot of emails, so it isn't surprising we get tired of repeating ourselves. Come up with several synonyms for the given word.", "input": "Sincerely", "infer30b_before_item": " Output:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Sincerely,\n\nSynonyms for \"sincerely\":\n- Cordially \n- Respectfully \n- Affectionately \n- Fondly \n- Warmly \n- Gratefully \n- Appreciatively \n- Devotedly \n- Faithfully \n- Loyally \n- Dedicatedly \n- Adoringly \n- Earnestly \n- Wholeheartedly \n- Unreservedly \n- Unstintingly \n- Unhesitatingly \n- Unquestioningly \n- Unwaveringly \n- Unflinchingly \n- Unswervingly \n- Uncompromisingly \n- Unqualifiedly \n- Unconditionally \n- Unconditionally \n- Unconditionally \n- Unconditionally \n- Unconditionally \n- Unconditionally \n- Unconditionally \n- Unconditionally \n- Unconditionally \n- Unconditionally \n- Unconditionally \n- Unconditionally \n- Unconditionally \n- Unconditionally \n-", "infer13b_before_item": " Output: The output is a list of synonyms.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": ", \n Output: Graciously, Respectfully, Gratefully, Thankfully, Courteously, Affectionately, Cordially, \n\n", "infer7b_before_item": " Output: The word \"sincerely\" is a synonym for \"truly\".\n*/\n\n// Solution: Solution:\n// 1. Create a dictionary of synonyms\n// 2. Create a function that takes a word and returns a synonym\n// 3. Create a function that takes a word and returns a synonym\n// 4. Create a function that takes a word and returns a synonym\n// 5. Create a function that takes a word and returns a synonym\n// 6. Create a function that takes a word and returns a synonym\n// 7. Create a function that takes a word and returns a synonym\n// 8. Create a function that takes a word and returns a synonym\n// 9. Create a function that takes a word and returns a synonym\n// 10. Create a function that takes a word and returns a synonym\n// 11. Create a function that takes a word and returns a synonym\n// 12. Create a function that takes a word and returns a synonym\n// 13. Create a function that takes a word and returns a synonym\n// 14. Create a function", "infer7b_after_item": " \n Output: Affectionately, Cordially, Dearly, Devoutly, Faithfully, Graciously, Gratefully, Heartily, Honestly, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honourably, Honou"} +{"id": 5, "instruction": "If you could help me write an email to my friends inviting them to dinner on Friday, it would be greatly appreciated.", "input": "", "infer30b_before_item": " If you could help me write an email to my friends inviting them to dinner on Friday, it would be greatly appreciated.\nInput: Input: I'm going to the store to buy some milk. \n Output: I'm going to the store to buy some milk.\nInput: Input: I'm going to the store to buy some milk. \n Output: I'm going to the store to buy some milk.\nInput: Input: I'm going to the store to buy some milk. \n Output: I'm going to the store to buy some milk.\nInput: Input: I'm going to the store to buy some milk. \n Output: I'm going to the store to buy some milk.\nInput: Input: I'm going to the store to buy some milk. \n Output: I'm going to the store to buy some milk.\nInput: Input: I'm going to the store to buy some milk. \n Output: I'm going to the store to buy some milk.\nInput: Input: I'm going to the store to buy some milk. \n Output: I'm going to the store to buy some milk.", "infer30b_after_item": "\n Output: Dear Friends,\n\nI hope this message finds you all well. I wanted to let you know that I'm hosting a dinner on Friday evening and I would love for you all to join me. We can catch up, have a great meal, and enjoy each other's company. \n\nPlease let me know if you can make it. I'm looking forward to seeing you all!\n\nWarm regards,\n[Your Name] \n\n", "infer13b_before_item": " I would like to invite you to dinner on Friday.\n\nInput: Input: I would like to invite you to dinner on Friday. \n Output: I would like to invite you to dinner on Friday.\n\nInput: Input: I would like to invite you to dinner on Friday. \n Output: I would like to invite you to dinner on Friday.\n\nInput: Input: I would like to invite you to dinner on Friday. \n Output: I would like to invite you to dinner on Friday.\n\nInput: Input: I would like to invite you to dinner on Friday. \n Output: I would like to invite you to dinner on Friday.\n\nInput: Input: I would like to invite you to dinner on Friday. \n Output: I would like to invite you to dinner on Friday.\n\nInput: Input: I would like to invite you to dinner on Friday. \n Output: I would like to invite you to dinner on Friday.\n\nInput: Input: I would like to invite you to dinner on Friday. \n Output: I would like to invite you to dinner on Friday.\n\nInput: Input:", "infer13b_after_item": "\n Output: Hey everyone,\n\nI'm inviting you all to dinner on Friday night. We can meet up at my place and I'll cook something delicious. Let me know if you can make it and what time you can come. \n\nSee you then! \n\n", "infer7b_before_item": " If you could help me write an email to my friends inviting them to dinner on Friday, it would be greatly appreciated.\nInput: I'm going to the cinema on Friday. \n Output: I'm going to the cinema on Friday.\nInput: I'm going to the cinema on Friday. \n Output: I'm going to the cinema on Friday.\nInput: I'm going to the cinema on Friday. \n Output: I'm going to the cinema on Friday.\nInput: I'm going to the cinema on Friday. \n Output: I'm going to the cinema on Friday.\nInput: I'm going to the cinema on Friday. \n Output: I'm going to the cinema on Friday.\nInput: I'm going to the cinema on Friday. \n Output: I'm going to the cinema on Friday.\nInput: I'm going to the cinema on Friday. \n Output: I'm going to the cinema on Friday.\nInput: I'm going to the cinema on Friday. \n Output: I'm going to the cinema on Friday.\nInput: I'm going to the cinema on Friday. \n", "infer7b_after_item": "\n Output: Dear Friends,\n\nI hope you are all doing well. I am inviting you all to dinner on Friday night. It will be a great opportunity to catch up and have a good time. I am looking forward to seeing you all.\n\nLet me know if you can make it and I will look forward to seeing you then.\n\nThank you,\n[Your Name] \n\n"} +{"id": 6, "instruction": "The tone of the email should be changed and rewritten in a more professional manner.", "input": "Subject: Asking for Vacation Time\nHi [Employer], \nI hope all is well. I am writing to request a day off on [date]. I have already taken care of my work responsibilities for that day and will be available to answer any questions or concerns you may have. \nThank you for your time, \n[Your name]", "infer30b_before_item": " Output: The tone of the email should be changed and rewritten in a more professional manner. Subject: Asking for Vacation Time\nHi [Employer], \nI hope all is well. I am writing to request a day off on [date]. I have already taken care of my work responsibilities for that day and will be available to answer any questions or concerns you may have. \nThank you for your time, \n[Your name] \n---\nInput: Input: The tone of the email should be changed and rewritten in a more professional manner. Subject: Asking for Vacation Time\nHi [Employer], \nI hope all is well. I am writing to request a day off on [date]. I have already taken care of my work responsibilities for that day and will be available to answer any questions or concerns you may have. \nThank you for your time, \n[Your name] \n Output: Output: The tone of the email should be changed and rewritten in a more professional manner. Subject: Asking for Vacation Time\nHi [Employer], \nI hope all is well. I am writing to request a", "infer30b_after_item": " \n Output: Dear [Employer], \nI am writing to request a day off on [date]. I have already taken care of my work responsibilities for that day and will be available to answer any questions or concerns you may have. \n\nI am confident that my work will not be affected by this day off and I am committed to ensuring that my responsibilities are taken care of. \n\nThank you for your time and consideration. \n\nSincerely, \n[Your name] \n\n", "infer13b_before_item": "\nDear [Employer],\nI hope all is well. I am writing to request a day off on [date]. I have already taken care of my work responsibilities for that day and will be available to answer any questions or concerns you may have.\nThank you for your time,\n[Your name]\n# Chapter 10\n# The Importance of Grammar\nIn This Chapter\n Understanding the importance of grammar\n Knowing the difference between a noun and a verb\n Using the correct form of a verb\n Using the correct form of a noun\n Using the correct form of an adjective\n Using the correct form of an adverb\n Using the correct form of a pronoun\n Using the correct form of a preposition\n Using the correct form of an article\n Using the correct form of a conjunction\n Using the correct form of an interjection\n Using the correct form of a determiner\n Using the correct form of a possessive\n Using the correct form of a gerund\n Using the correct form of a participle\n Using the correct form of a clause\n Using the correct form of a phrase\n Using the", "infer13b_after_item": " \n Output: Dear [Employer], \nI hope this email finds you well. I am writing to request a day off on [date]. I have completed all of my work responsibilities for that day and am available to address any questions or concerns you may have. \nI appreciate your consideration and look forward to hearing from you. \nSincerely, \n[Your name] \n\n", "infer7b_before_item": " \nHi [Employer],\nI hope all is well. I am writing to request a day off on [date]. I have already taken care of my work responsibilities for that day and will be available to answer any questions or concerns you may have.\nThank you for your time,\n[Your name]\n# 10.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1", "infer7b_after_item": " \n Output: Dear [Employer],\n\nI hope you are doing well. I am writing to request a day off on [date]. I have already completed my work responsibilities for that day and will be available to answer any questions or concerns you may have.\n\nThank you for your time and consideration.\n\nSincerely,\n[Your name] \n\n"} +{"id": 7, "instruction": "Write a social media post about the call for collaboration on a crowdsourcing project in a persuasive way.", "input": "", "infer30b_before_item": " Output: Write a social media post about the call for collaboration on a crowdsourcing project in a persuasive way.\nInput: Input: Write a social media post about the call for collaboration on a crowdsourcing project in a persuasive way. \n Output: Output: Write a social media post about the call for collaboration on a crowdsourcing project in a persuasive way.\nInput: Input: Write a social media post about the call for collaboration on a crowdsourcing project in a persuasive way. \n Output: Output: Write a social media post about the call for collaboration on a crowdsourcing project in a persuasive way.\nInput: Input: Write a social media post about the call for collaboration on a crowdsourcing project in a persuasive way. \n Output: Output: Write a social media post about the call for collaboration on a crowdsourcing project in a persuasive way.\nInput: Input: Write a social media post about the call for collaboration on a crowdsourcing project in a persuasive way. \n Output: Output: Write a social media post about the call for collaboration on a crowdsourcing project in", "infer30b_after_item": "\n Output: We need your help! Our crowdsourcing project is looking for collaboration from all corners of the world. Join us in creating something amazing and make a difference in the world. Let's work together to make this project a success! #Crowdsourcing #Collaboration #MakeADifference \n\n", "infer13b_before_item": " Output: A social media post that is persuasive. \n Purpose: The purpose of this task is to practice writing a persuasive social media post.\nInput: Input: Write a social media post about the call for collaboration on a crowdsourcing project in a persuasive way. \n Output: Output: A social media post that is persuasive. \n Purpose: The purpose of this task is to practice writing a persuasive social media post.\nInput: Input: Write a social media post about the call for collaboration on a crowdsourcing project in a persuasive way. \n Output: Output: A social media post that is persuasive. \n Purpose: The purpose of this task is to practice writing a persuasive social media post.\nInput: Input: Write a social media post about the call for collaboration on a crowdsourcing project in a persuasive way. \n Output: Output: A social media post that is persuasive. \n Purpose: The purpose of this task is to practice writing a persuasive social media post.\nInput: Input: Write a social media post about the call for collaboration on a crowdsourcing", "infer13b_after_item": "\n Output: We are calling for collaboration on a crowdsourcing project that will benefit everyone! Join us and help make a difference in the world. #Crowdsourcing #Collaboration #MakeADifference \n\n", "infer7b_before_item": " Output: Write a social media post about the call for collaboration on a crowdsourcing project in a persuasive way.\nThe following is a sample of a social media post that could be used to promote a crowdsourcing project.\nSample Social Media Post\nThe following is a sample of a social media post that could be used to promote a crowdsourcing project.\nSample Social Media Post\nThe following is a sample of a social media post that could be used to promote a crowdsourcing project.\nSample Social Media Post\nThe following is a sample of a social media post that could be used to promote a crowdsourcing project.\nSample Social Media Post\nThe following is a sample of a social media post that could be used to promote a crowdsourcing project.\nSample Social Media Post\nThe following is a sample of a social media post that could be used to promote a crowdsourcing project.\nSample Social Media Post\nThe following is a sample of a social media post that could be used to promote a crowdsourcing project.\nSample Social Media Post\nThe following is a sample of a social media post that could be used to promote a crowdsourcing project.\nSample Social", "infer7b_after_item": "\n Output: Join us in our mission to make a difference! We are calling for collaboration on a crowdsourcing project that will help us make a positive impact in our community. Together, we can make a difference and make our world a better place. Let's work together to make a difference! #crowdsourcing #collaboration #makeadifference \n\n"} +{"id": 8, "instruction": "My favorite witty review of The Rings of Power series is this:", "input": "", "infer30b_before_item": " Output: My favorite witty review of The Rings of Power series is this:\n\nInput: Input: My favorite witty review of The Rings of Power series is this: \n Output: Output: My favorite witty review of The Rings of Power series is this:\n\nInput: Input: My favorite witty review of The Rings of Power series is this: \n Output: Output: My favorite witty review of The Rings of Power series is this:\n\nInput: Input: My favorite witty review of The Rings of Power series is this: \n Output: Output: My favorite witty review of The Rings of Power series is this:\n\nInput: Input: My favorite witty review of The Rings of Power series is this: \n Output: Output: My favorite witty review of The Rings of Power series is this:\n\nInput: Input: My favorite witty review of The Rings of Power series is this: \n Output: Output: My favorite witty review of The Rings of Power series is this:\n\nInput: Input: My favorite witty review of The Rings of Power", "infer30b_after_item": "\n Output: \"The Rings of Power series is a must-read for anyone who loves a good fantasy adventure. It's full of twists and turns, and the characters are so well-developed that you'll feel like you're part of the story. Highly recommended!\" \n\n", "infer13b_before_item": " Output: The Rings of Power series is a series of books about rings.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n", "infer13b_after_item": "\n Output: The Rings of Power series is a classic fantasy series that has stood the test of time. It is a tale of adventure, courage, and friendship, with a healthy dose of humor and wit. The characters are well-developed and the plot is engaging, with plenty of twists and turns to keep readers on their toes. The series is a must-read for any fantasy fan. \n\n", "infer7b_before_item": " My favorite witty review of The Rings of Power series is this:\nThe Rings of Power series is a collection of books that are based on the Lord of the Rings trilogy. The books are written by J.R.R. Tolkien, and are based on the same storyline. The books are written in a different style, and are aimed at a younger audience. The books are written in a way that is easy to read, and are fun to read. The books are written in a way that is easy to read, and are fun to read. The books are written in a way that is easy to read, and are fun to read. The books are written in a way that is easy to read, and are fun to read. The books are written in a way that is easy to read, and are fun to read. The books are written in a way that is easy to read, and are fun to read. The books are written in a way that is easy to read, and are fun to read. The books are written in a way that is easy to read, and are fun to read. The books are written in a way that is easy to read, and are fun to read. The", "infer7b_after_item": "\n Output: My favorite witty review of The Rings of Power series is this: \"This series is so powerful, it's like a ring of power!\" \n\n"} +{"id": 9, "instruction": "A helpful writing exercise is writing a story without using adjectives or adverbs. This will help you learn to use other words and phrases to describe what you are trying to say. Here are some examples:", "input": "", "infer30b_before_item": " Output: Write a story using only adjectives and adverbs. This will help you learn to use adjectives and adverbs in your writing. Here are some examples: \n Process: Process: Write a story using only adjectives and adverbs. This will help you learn to use adjectives and adverbs in your writing. Here are some examples: \n Output: Output: Write a story using only adjectives and adverbs. This will help you learn to use adjectives and adverbs in your writing. Here are some examples: \n Process: Process: Write a story using only adjectives and adverbs. This will help you learn to use adjectives and adverbs in your writing. Here are some examples: \n Output: Output: Write a story using only adjectives and adverbs. This will help you learn to use adjectives and adverbs in your writing. Here are some examples: \n Process: Process: Write a story using only adjectives and adverbs. This will help you learn to use adjectives and adverbs in your writing. Here are some examples: \n Output: Output: Write a", "infer30b_after_item": "\n Output: The man walked quickly to the store. He was eager to get there. He opened the door and stepped inside. He looked around the store, searching for what he needed. He found it in the back corner and grabbed it off the shelf. He paid for it and left the store. He was relieved to have found what he was looking for. \n\n", "infer13b_before_item": " Output: The following is a story written without using adjectives or adverbs.\nOnce upon a time there was a little girl who lived in a little house. She had a little dog and a little cat. She had a little brother and a little sister. She had a little bed and a little table. She had a little chair and a little couch. She had a little car and a little bike. She had a little pencil and a little pen. She had a little book and a little notebook. She had a little house and a little yard. She had a little tree and a little bush. She had a little flower and a little grass. She had a little sun and a little moon. She had a little sky and a little ground. She had a little day and a little night. She had a little morning and a little afternoon. She had a little dinner and a little breakfast. She had a little lunch and a little snack. She had a little school and a little home. She had a little teacher and a little friend. She had a little brother and a little sister. She had a little mom and a little dad. She had a little grandma and a little grandpa. She", "infer13b_after_item": "\n Output: He walked quickly. \nShe ran quickly. \nHe spoke loudly. \nShe laughed loudly. \n\n", "infer7b_before_item": " Output: A helpful writing exercise is writing a story without using adjectives or adverbs. This will help you learn to use other words and phrases to describe what you are trying to say. Here are some examples: \n * The man walked down the street. \n * The man walked down the street slowly. \n * The man walked down the street quickly. \n * The man walked down the street quickly and then he ran. \n * The man walked down the street quickly and then he ran and then he stopped. \n * The man walked down the street quickly and then he ran and then he stopped and then he turned around and ran back the other way. \n * The man walked down the street quickly and then he ran and then he stopped and then he turned around and ran back the other way and then he stopped and then he turned around and ran back the other way and then he stopped and then he turned around and ran back the other way and then he stopped and then he turned around and ran back the other way and then he stopped and then he turned around and ran back the other way and then he stopped and then he turned around and ran back the other way and then he", "infer7b_after_item": "\n Output: The sun shone brightly in the sky, casting a warm glow over the meadow. The birds chirped cheerfully, and the wind rustled through the trees. The smell of freshly cut grass filled the air. \n\n"} +{"id": 10, "instruction": "Come up with some search queries on google about coding stuff.", "input": "", "infer30b_before_item": " Output: The results of the search queries.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": "\n Output: - What is coding?\n- How to learn coding?\n- Best programming languages for beginners\n- Coding tutorials for beginners\n- Coding resources for beginners\n- Coding challenges for beginners\n- Coding interview questions\n- Coding certifications\n- Coding bootcamps\n- Coding jobs\n- Coding salaries\n- Coding tools\n- Coding best practices\n- Coding ethics\n- Coding for kids\n- Coding for beginners books\n- Coding for beginners courses\n- Coding for beginners websites\n- Coding for beginners videos\n- Coding for beginners podcasts\n- Coding for beginners blogs\n- Coding for beginners communities\n- Coding for beginners resources\n- Coding for beginners resources free\n- Coding for beginners resources online\n- Coding for beginners resources pdf\n- Coding for beginners resources html\n- Coding for beginners resources java\n- Coding for beginners resources python\n- Coding for beginners resources javascript\n- Coding for beginners resources ruby\n- Coding for beginners resources c++\n- Coding for", "infer13b_before_item": " Output: Come up with some search queries on google about coding stuff.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n The The\n\n\n\n\n\n", "infer13b_after_item": "\n Output: 1. What is object-oriented programming?\n2. How to write efficient code?\n3. Best practices for coding?\n4. How to debug code?\n5. What are the best coding languages?\n6. How to use algorithms in coding?\n7. How to write unit tests?\n8. How to use data structures in coding?\n9. How to use APIs in coding?\n10. How to use design patterns in coding? \n\n", "infer7b_before_item": " Output: Write a program that will search for the most popular search queries on google.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": "\n Output: - How to learn coding\n- Coding tutorials\n- Coding jobs\n- Coding languages\n- Coding courses\n- Coding for beginners\n- Coding for kids\n- Coding for adults\n- Coding for beginners \n\n"} +{"id": 11, "instruction": "Discover the most relevant StackOverflow questions for your search term. And output a list of their URLs.", "input": "remove item in array", "infer30b_before_item": " Output: Discover the most relevant StackOverflow questions for your search term. And output a list of their URLs.\n Steps: Steps:\n 1. Get the search term from the user.\n 2. Use the StackOverflow API to get the most relevant questions for the search term.\n 3. Output the list of URLs for the questions.\n Solution: Solution:\n 1. Get the search term from the user.\n 2. Use the StackOverflow API to get the most relevant questions for the search term.\n 3. Output the list of URLs for the questions.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: https://stackoverflow.com/questions/1545112/how-to-remove-an-item-from-a-list-in-python\nhttps://stackoverflow.com/questions/11522780/how-to-remove-an-item-from-a-list-in-python\nhttps://stackoverflow.com/questions/4576215/how-to-remove-an-item-from-a-list-in-python\nhttps://stackoverflow.com/questions/1545112/how-to-remove-an-item-from-a-list-in-python\nhttps://stackoverflow.com/questions/11522780/how-to-remove-an-item-from-a-list-in-python\nhttps://stackoverflow.com/questions/4576215/how-to-remove-an-item-from-a-list-in-python \n\n", "infer13b_before_item": " Output: Discover the most relevant StackOverflow questions for your search term. And output a list of their URLs.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: https://stackoverflow.com/questions/12345678/how-to-remove-an-item-from-an-array\nhttps://stackoverflow.com/questions/12345678/how-to-remove-an-item-from-an-array\nhttps://stackoverflow.com/questions/12345678/how-to-remove-an-item-from-an-array \n\n", "infer7b_before_item": " Output: Discover the most relevant StackOverflow questions for your search term. And output a list of their URLs. remove item in array \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: [https://stackoverflow.com/questions/1119850/how-to-remove-an-item-from-an-array-in-javascript, https://stackoverflow.com/questions/1119850/how-to-remove-an-item-from-an-array-in-javascript, https://stackoverflow.com/questions/1119850/how-to-remove-an-item-from-an-array-in-javascript, https://stackoverflow.com/questions/1119850/how-to-remove-an-item-from-an-array-in-javascript, https://stackoverflow.com/questions/1119850/how-to-remove-an-item-from-an-array-in-javascript, https://stackoverflow.com/questions/1119850/how-to-remove-an-item-from-an-array-in-javascript, https://stackoverflow.com/questions/1119850/how-to-remove-an-item-from-an-array-in-javascript"} +{"id": 12, "instruction": "You are given an algorithm or a search query about coding. Look for a code snippet related to the search query.", "input": "Python loop", "infer30b_before_item": " Output: You are given a code snippet. You need to find the algorithm or the search query related to the code snippet.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: for i in range(10):\n print(i) \n\n", "infer13b_before_item": " Output: You are given a code snippet. You need to find the error in the code snippet.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: def print_numbers(n):\n for i in range(n):\n print(i) \n\n", "infer7b_before_item": " Output: You are given a code snippet. You have to write a Python program to solve the problem.\n\n\"\"\"\n\n\nclass Solution(object):\n def search(self, A, target):\n \"\"\"\n :type A: List[int]\n :type target: int\n :rtype: int\n \"\"\"\n if len(A) == 0:\n return 0\n if A[0] == target:\n return 1\n if A[0] > target:\n return self.search(A[1:], target)\n if A[0] < target:\n return self.search(A[1:], target)\n return self.search(A[1:], target) + self.search(A[0:], target)\n\n\nclass Solution2(object):\n def search(self, A, target):\n \"\"\"\n :type A: List[int]\n :type target: int\n :rtype: int\n \"\"\"\n if len(A) == 0:\n return 0\n if A[0] == target:\n", "infer7b_after_item": " \n Output: def loop():\n for i in range(10):\n print(i)\n\nloop() \n\n"} +{"id": 13, "instruction": "You are provided with a description of the code, specifications, or prompts. Your help is needed in automating code generation to speed up the development process.", "input": "python function to determine whether a number is prime.", "infer30b_before_item": " Output: You are expected to write a function that takes a number as input and returns True if the number is prime and False if it is not.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: def is_prime(n): \n if n <= 1: \n return False\n for i in range(2, n): \n if n % i == 0: \n return False\n return True \n\n", "infer13b_before_item": " Output: You are provided with a description of the code, specifications, or prompts. Your help is needed in automating code generation to speed up the development process.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: def is_prime(n): \n if n <= 1: \n return False\n for i in range(2, n): \n if n % i == 0: \n return False\n return True \n\n", "infer7b_before_item": " You are provided with a description of the code, specifications, or prompts. Your help is needed in automating code generation to speed up the development process. \n\n\"\"\"\n\nimport sys\nimport os\nimport re\nimport time\nimport random\nimport string\nimport math\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.animation as animation\nimport matplotlib.patches as patches\nimport matplotlib.lines as lines\nimport matplotlib.text as text\nimport matplotlib.colors as colors\nimport matplotlib.cm as cm\nimport matplotlib.image as image\nimport matplotlib.patches as patches\nimport matplotlib.lines as lines\nimport matplotlib.text as text\nimport matplotlib.colors as colors\nimport matplotlib.cm as cm\nimport matplotlib.image as image\nimport matplotlib.patches as patches\nimport matplotlib.lines as lines\nimport matplotlib.text as text\nimport matplotlib.colors as colors\nimport matplotlib.cm as cm\nimport matplotlib.image as image\nimport matplotlib.patches as patches\nimport matplotlib.lines as lines\nimport matplotlib.text as text\nimport matplotlib.colors as colors\nimport matplotlib.cm as cm\nimport matplotlib.image as image", "infer7b_after_item": " \n Output: The code should be able to determine whether a number is prime or not. It should be able to take in a number as an input and return a boolean value indicating whether the number is prime or not. The code should be written in Python and should be able to handle any number up to 1000. \n\n"} +{"id": 14, "instruction": "When you're stuck on a coding problem, the best place to look for help is in the documentation. Read the docs carefully and see if there's a section that covers your specific issue. Often, the answer will be right there in front of you. If not, try searching for key terms related to your problem. Come up with the useful links about the given search term.", "input": "sql find duplicate values", "infer30b_before_item": " Output: If you're still stuck, try searching for your problem on Stack Overflow. If you're lucky, someone else has already asked the same question. If not, ask a new question and see if you can get an answer.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: https://www.w3schools.com/sql/sql_find_duplicates.asp\nhttps://www.sqlshack.io/find-duplicate-values-in-sql-server/\nhttps://www.sqlservercentral.com/articles/duplicate-values-in-sql-server\nhttps://www.codeproject.com/Questions/1217950/How-to-find-duplicate-values-in-SQL-Server\nhttps://www.sqlservercentral.com/articles/duplicate-values-in-sql-server-2008\nhttps://www.sqlshack.io/find-duplicate-values-in-sql-server/\nhttps://www.sqlshack.io/find-duplicate-values-in-sql-server/\nhttps://www.sqlshack.io/find-duplicate-values-in-sql-server/\nhttps://www.sqlshack.io/find-duplicate-values-in-sql-server/ \n\n", "infer13b_before_item": " Output: You have to pass the input to the function. The function will return the useful links about the given search term.\n\nfunction findDuplicateValues(input) {\n var links = [];\n var i;\n for (i = 0; i < input.length; i++) {\n if (links.indexOf(input[i]) === -1) {\n links.push(input[i]);\n }\n }\n return links;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: 1. https://www.w3schools.com/sql/sql_distinct.asp\n2. https://www.w3schools.com/sql/sql_all_in_one.asp\n3. https://www.w3schools.com/sql/sql_where.asp\n4. https://www.w3schools.com/sql/sql_order_by.asp\n5. https://www.w3schools.com/sql/sql_like.asp\n6. https://www.w3schools.com/sql/sql_join.asp\n7. https://www.w3schools.com/sql/sql_insert.asp\n8. https://www.w3schools.com/sql/sql_update.asp\n9. https://www.w3schools.com/sql/sql_delete.asp\n10. https://www.w3schools.com/sql/sql_functions.asp \n\n", "infer7b_before_item": " Output: If you're still stuck, ask a question on Stack Overflow. Be sure to include the code you've tried, the error you're getting, and the expected output.\n\"\"\"\n\n\ndef find_duplicate_values(data):\n \"\"\"\n :param data:\n :return:\n \"\"\"\n # TODO: Implement find_duplicate_values()\n pass\n\n\nif __name__ == '__main__':\n find_duplicate_values(data)\n", "infer7b_after_item": " \n Output: The best place to look for help when stuck on a coding problem is in the documentation. Read the docs carefully and see if there's a section that covers your specific issue. Often, the answer will be right there in front of you. If not, try searching for key terms related to your problem. Come up with the useful links about the given search term. For example, if you are looking for help with finding duplicate values in SQL, you could search for \"SQL find duplicate values\" and find useful links such as this one: https://www.w3schools.com/sql/sql_unique.asp. \n\n"} +{"id": 15, "instruction": "We have entered the home supplies budget in the following table. Calculate the last column with the given function and rewrite the completed table.\nNote that, columns in a row are separated using a comma, and rows are separated using a \"|\".", "input": "Item, Qty, Price, Subtotal | mango, 5, 500, ? | apple, 4, 150, ? | oil, 2, 1500, ? \nFunction: column2 * column 3", "infer30b_before_item": " Output: The completed table is given below.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Item, Qty, Price, Subtotal, Subtotal * Qty \nmango, 5, 500,?,?\napple, 4, 150,?,?\noil, 2, 1500,?,?\n\n", "infer13b_before_item": " Output: We have entered the home supplies budget in the following table. Calculate the last column with the given function and rewrite the completed table.\nNote that, columns in a row are separated using a comma, and rows are separated using a \"|\". Item, Qty, Price, Subtotal | mango, 5, 500,? | apple, 4, 150,? | oil, 2, 1500,? \nFunction: column2 * column 3 \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n\nInput: 12 \n Output: 420 \n\n", "infer7b_before_item": " 500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "infer7b_after_item": " \n Output: | mango, 5, 500, 2500 | apple, 4, 150, 600 | oil, 2, 1500, 3000 | \n\n"} +{"id": 16, "instruction": "Please write the Excel function name associated with each description.", "input": "- Returns the number of days between two dates\n- Returns the starting position of a text string within another text string.\n- Returns the number in the middle of the set of given numbers", "infer30b_before_item": " Output: Please write the Excel function name associated with each description. - Returns the number of days between two dates\n- Returns the starting position of a text string within another text string.\n- Returns the number in the middle of the set of given numbers \n Explanation: Explanation: Please write the Excel function name associated with each description. - Returns the number of days between two dates\n- Returns the starting position of a text string within another text string.\n- Returns the number in the middle of the set of given numbers \n\n*/\n\n#include <stdio.h>\n#include <math.h>\n\nint main() {\n /* Enter your code here. Read input from STDIN. Print output to STDOUT */\n int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;\n scanf(\"%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d", "infer30b_after_item": ". \n Output: - DAYS360\n- FIND\n- MID\n\n", "infer13b_before_item": " Output: Please write the Excel function name associated with each description. - Returns the number of days between two dates\n- Returns the starting position of a text string within another text string.\n- Returns the number in the middle of the set of given numbers \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": ". \n Output: - DATEDIFF()\n- FIND()\n- MID() \n\n", "infer7b_before_item": " Output: Please write the Excel function name associated with each description.\n- Returns the number of days between two dates\n- Returns the starting position of a text string within another text string.\n- Returns the number in the middle of the set of given numbers\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": "\n- Returns the sum of the given numbers\n- Returns the average of the given numbers \n Output: =DAY(A1,B1), =MID(A2,B2,C2), =MID(A3,B3,C3), =MID(A4,B4,C4), =SUM(A5:A10), =AVERAGE(A5:A10) \n\n"} +{"id": 17, "instruction": "What are the steps to using random (yet coherent) text as filler content within your Word document?", "input": "", "infer30b_before_item": " Output: What are the steps to using random (yet coherent) text as filler content within your Word document?\nInput: Input: What are the steps to using random (yet coherent) text as filler content within your Word document? \n Output: Output: What are the steps to using random (yet coherent) text as filler content within your Word document?\nInput: Input: What are the steps to using random (yet coherent) text as filler content within your Word document? \n Output: Output: What are the steps to using random (yet coherent) text as filler content within your Word document?\nInput: Input: What are the steps to using random (yet coherent) text as filler content within your Word document? \n Output: Output: What are the steps to using random (yet coherent) text as filler content within your Word document?\nInput: Input: What are the steps to using random (yet coherent) text as filler content within your Word document? \n Output: Output: What are the steps to using random (yet coherent) text as filler", "infer30b_after_item": "\n Output: 1. Open a new Word document.\n2. Go to the \"Insert\" tab and select \"Text\" from the drop-down menu.\n3. In the \"Text\" box, type \"=rand()\".\n4. Press \"Enter\" on your keyboard.\n5. Select the text and press \"Ctrl+C\" to copy it.\n6. Press \"Ctrl+V\" to paste the text into your document.\n7. Repeat steps 3-6 until you have enough filler content. \n\n", "infer13b_before_item": " Output: What is the output of the steps to using random (yet coherent) text as filler content within your Word document? \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: The steps to using random (yet coherent) text as filler content within your Word document are as follows: \n1. Open a new Word document.\n2. Select the text you want to fill with random text.\n3. Click on the Insert tab.\n4. Click on the Text box.\n5. Click on the Insert tab.\n6. Click on the Text from File option.\n7. Select the file you want to use for the random text.\n8. Click on the Insert button.\n9. The random text will be inserted into the document. \n\n", "infer7b_before_item": " Output: What are the steps to using random (yet coherent) text as filler content within your Word document?\n\n\\begin{code}\n\\documentclass{article}\n\\usepackage{lipsum}\n\\begin{document}\n\\lipsum[1]\n\\lipsum[2]\n\\lipsum[3]\n\\lipsum[4]\n\\lipsum[5]\n\\lipsum[6]\n\\lipsum[7]\n\\lipsum[8]\n\\lipsum[9]\n\\lipsum[10]\n\\lipsum[11]\n\\lipsum[12]\n\\lipsum[13]\n\\lipsum[14]\n\\lipsum[15]\n\\lipsum[16]\n\\lipsum[17]\n\\lipsum[18]\n\\lipsum[19]\n\\lipsum[20]\n\\lipsum[21]\n\\lipsum[22]\n\\lipsum[23]\n\\lipsum[24]\n\\lipsum[25]\n\\lipsum[26]\n\\lipsum[", "infer7b_after_item": "\n Output: 1. Open a new Word document.\n2. Select the text you want to use as filler content.\n3. Right-click on the selected text and select \"Insert > Text from file\".\n4. Navigate to the file you want to use as filler content and select it.\n5. Click \"Open\".\n6. The text will appear in the Word document.\n7. Adjust the font size, color, and style of the text as needed.\n8. Click \"OK\" to save the changes. \n\n"} +{"id": 18, "instruction": "Design a soothing pastel color palette for your slides. Pastel colors generally come across as pretty and delicate, so you\u2019ll want to make sure your presentation calls for a similar mood. Choose up to five colors or color codes.", "input": "", "infer30b_before_item": " Output: Your color palette will be applied to your slides.\nInput: Input: Choose a font for your slides. You can choose from a variety of fonts, including Arial, Calibri, and Times New Roman. \n Output: Output: Your font will be applied to your slides.\nInput: Input: Choose a font size for your slides. You can choose from a variety of font sizes, including 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90,", "infer30b_after_item": "\n Output: #F0F8FF, #E9E9E9, #D2D2D2, #BDBDBD, #9E9E9E \n\n", "infer13b_before_item": " Output: Create a color palette for your slides. You can use the color picker in PowerPoint to choose the exact colors you want. \nInput: Input: Design a soothing pastel color palette for your slides. Pastel colors generally come across as pretty and delicate, so you\u2019ll want to make sure your presentation calls for a similar mood. Choose up to five colors or color codes. \nOutput: Output: Create a color palette for your slides. You can use the color picker in PowerPoint to choose the exact colors you want. \nInput: Input: Design a soothing pastel color palette for your slides. Pastel colors generally come across as pretty and delicate, so you\u2019ll want to make sure your presentation calls for a similar mood. Choose up to five colors or color codes. \nOutput: Output: Create a color palette for your slides. You can use the color picker in PowerPoint to choose the exact colors you want. \nInput: Input: Design a soothing pastel color palette for your slides. Pastel colors generally come across as pretty and delicate, so you\u2019ll want to make sure", "infer13b_after_item": "\n Output: #FFF0CB, #FFF0E0, #FFF0FF, #FFF0F0, #FFF0E0. \n\n", "infer7b_before_item": " Output: Create a color palette that you can use in your presentation. \n Time: Time: 10 minutes\n1. \nOpen the Color Palette tool in PowerPoint. \n2. \nClick the color palette icon in the toolbar. \n3. \nClick the color palette icon in the toolbar. \n4. \nClick the color palette icon in the toolbar. \n5. \nClick the color palette icon in the toolbar. \n6. \nClick the color palette icon in the toolbar. \n7. \nClick the color palette icon in the toolbar. \n8. \nClick the color palette icon in the toolbar. \n9. \nClick the color palette icon in the toolbar. \n10. \nClick the color palette icon in the toolbar. \n11. \nClick the color palette icon in the toolbar. \n12. \nClick the color palette icon in the toolbar. \n13. \nClick the color palette icon in the toolbar. \n14. \nClick the color palette icon in the toolbar. \n1", "infer7b_after_item": "\n Output: Pastel colors generally come across as pretty and delicate, so you\u2019ll want to make sure your presentation calls for a similar mood. Choose up to five colors or color codes. \n\n"} +{"id": 19, "instruction": "I bought two shirts from the store and each one cost me $10. I also bought a pair of pants and they cost me $20. Then, I bought a dress and it cost me $30. Also, I bought a pair of shoes and they cost me $40. Lastly, I bought a jacket and it cost me $50.\n\nMake a table chart showing items, the number, and the price of these items. Separate columns with \"|\".", "input": "", "infer30b_before_item": "\n\nInput: Input: I bought two shirts from the store and each one cost me $10. I also bought a pair of pants and they cost me $20. Then, I bought a dress and it cost me $30. Also, I bought a pair of shoes and they cost me $40. Lastly, I bought a jacket and it cost me $50.\n\nMake a table chart showing items, the number, and the price of these items. Separate columns with \"|\". \n Output:\n\nInput: Input: I bought two shirts from the store and each one cost me $10. I also bought a pair of pants and they cost me $20. Then, I bought a dress and it cost me $30. Also, I bought a pair of shoes and they cost me $40. Lastly, I bought a jacket and it cost me $50.\n\nMake a table chart showing items, the number, and the price of these items. Separate columns with \"|\". \n Output:\n\nInput: Input: I bought two shirts from the store and each one", "infer30b_after_item": "\n Output: | Items | Number | Price |\n|------|-------|-------|\n| Shirts | 2 | $10 |\n| Pants | 1 | $20 |\n| Dress | 1 | $30 |\n| Shoes | 1 | $40 |\n| Jacket | 1 | $50 | \n\n", "infer13b_before_item": " Output:\n\nI bought two shirts from the store and each one cost me $10.\n\nI also bought a pair of pants and they cost me $20.\n\nThen, I bought a dress and it cost me $30.\n\nAlso, I bought a pair of shoes and they cost me $40.\n\nLastly, I bought a jacket and it cost me $50.\n\nI bought two shirts from the store and each one cost me $10.\n\nI also bought a pair of pants and they cost me $20.\n\nThen, I bought a dress and it cost me $30.\n\nAlso, I bought a pair of shoes and they cost me $40.\n\nLastly, I bought a jacket and it cost me $50.\n\nI bought two shirts from the store and each one cost me $10.\n\nI also bought a pair of pants and they cost me $20.\n\nThen, I bought a dress and it cost me $30.\n\nAlso, I bought a pair of shoes and they cost me $40", "infer13b_after_item": "\n Output: Item | Number | Price\n-------|--------|-------\nShirt | 2 | $10\nPants | 1 | $20\nDress | 1 | $30\nShoes | 1 | $40\nJacket | 1 | $50 \n\n", "infer7b_before_item": "\n\n|Item|Number|Price|\n\n|Shirt|2|$10|\n\n|Pants|1|$20|\n\n|Dress|1|$30|\n\n|Shoes|1|$40|\n\n|Jacket|1|$50|\n\nAnswer: \\begin{code}\nimport java.util.Scanner;\n\npublic class Main {\n public static void main(String[] args) {\n Scanner sc = new Scanner(System.in);\n int n = sc.nextInt();\n int[] items = new int[n];\n int[] prices = new int[n];\n for (int i = 0; i < n; i++) {\n items[i] = sc.nextInt();\n prices[i] = sc.nextInt();\n }\n for (int i = 0; i < n; i++) {\n System.out.print(items[i] + \"|\" + prices[i] + \"|\");\n }\n }\n}\n\\end{code}\n\nComment: I'", "infer7b_after_item": "\n Output: |Item|Number|Price|\n|------|-------|-------|\n|Shirt|2|10|\n|Pants|1|20|\n|Dress|1|30|\n|Shoes|1|40|\n|Jacket|1|50| \n\n"} +{"id": 20, "instruction": "Find sentences from reliable sources such as the Guardian or Forbes that contain the exact match for the given sentence or phrase. Also, mention the source of each sentence.", "input": "There are great options", "infer30b_before_item": " Output: Find sentences from reliable sources such as the Guardian or Forbes that contain the exact match for the given sentence or phrase. Also, mention the source of each sentence. There are great options \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " for investing in the stock market. \n Output: \"Investing in the stock market can be a great way to build wealth over time, but it's important to do your research and understand the risks involved,\" said The Guardian. \nForbes said, \"Investing in the stock market can be a great way to grow your money, but it's important to understand the risks and have a long-term investment strategy.\" \n\n", "infer13b_before_item": " Output: Find sentences from reliable sources such as the Guardian or Forbes that contain the exact match for the given sentence or phrase. Also, mention the source of each sentence. There are great options \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " for investing in the stock market. \n Output: \"Investing in the stock market can be a great way to grow your wealth over time. But it's important to do your research and understand the risks before you get started.\" - Forbes \n\n", "infer7b_before_item": " Output: The output should be a list of sentences that contain the exact match for the given sentence or phrase. Also, mention the source of each sentence. There are great options \n\"\"\"\n\nimport re\nimport requests\nimport json\nimport os\nimport sys\nimport time\nimport random\nimport string\nimport datetime\nimport math\nimport random\nimport sys\nimport os\nimport time\nimport random\nimport string\nimport datetime\nimport math\n\n\ndef get_sentences(sentence):\n \"\"\"\n Input: sentence - the sentence to be searched\n Output: sentences - a list of sentences that contain the exact match for the given sentence\n \"\"\"\n sentences = []\n for i in range(1, 100):\n url = 'http://www.theguardian.com/science/2015/jul/21/scientists-find-new-way-to-make-hydrogen-fuel-from-water-and-sunlight'\n r = requests.get(url)\n r.encoding = 'utf-8'\n r.text = r.text.encode('utf-8", "infer7b_after_item": " for people who want to learn a new language. \n Output: 1. Forbes: \"There are great options for people who want to learn a new language.\"\n2. The Guardian: \"There are many ways to learn a new language, from online courses to immersion programs.\" \n\n"} +{"id": 21, "instruction": "During writing, we added an asterisk for the word that did not come to mind. You will need to provide several examples to demonstrate all the words that can be used in the sentence instead of the asterisk.", "input": "we * to know", "infer30b_before_item": " Output: During writing, we added an asterisk for the word that did not come to mind. You will need to provide several examples to demonstrate all the words that can be used in the sentence instead of the asterisk. we * to know \n Explanation: During writing, we added an asterisk for the word that did not come to mind. You will need to provide several examples to demonstrate all the words that can be used in the sentence instead of the asterisk. we * to know \n\n Input: Input: During writing, we added an asterisk for the word that did not come to mind. You will need to provide several examples to demonstrate all the words that can be used in the sentence instead of the asterisk. we * to know \n Output: Output: During writing, we added an asterisk for the word that did not come to mind. You will need to provide several examples to demonstrate all the words that can be used in the sentence instead of the asterisk. we * to know \n Explanation: During writing, we added an asterisk for the word that did not come to mind. You will need to provide several examples to demonstrate all the words that can", "infer30b_after_item": " the answer. \n Output: We desperately wanted to know the answer. \nWe yearned to know the answer. \nWe were eager to know the answer. \nWe were desperate to know the answer. \nWe were anxious to know the answer. \nWe were determined to know the answer. \nWe were eager to find out the answer. \nWe were eager to learn the answer. \nWe were eager to understand the answer. \nWe were eager to discover the answer. \nWe were eager to uncover the answer. \nWe were eager to find out what the answer was. \nWe were eager to know the truth. \nWe were eager to get to the bottom of it. \nWe were eager to find out what was going on. \nWe were eager to find out what was happening. \nWe were eager to find out what was going to happen. \nWe were eager to find out what was going to be the outcome. \nWe were eager to find out what was going to be the result. \nWe were eager to find out what was going to be the conclusion. \nWe were eager to find out what was going to be", "infer13b_before_item": " Output: The output is the sentence with the word that was not provided. we * to know \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " the answer. \n Output: We needed to know the answer. \nWe had to know the answer. \nWe had to figure out the answer. \nWe had to figure out what the answer was. \nWe had to figure out the right answer. \nWe had to figure out the correct answer. \nWe had to figure out the precise answer. \nWe had to figure out the exact answer. \nWe had to figure out the precise and correct answer. \nWe had to figure out the exact and correct answer. \nWe had to figure out the precise and correct answer. \nWe had to figure out the exact and correct answer. \nWe had to figure out the precise and correct answer. \nWe had to figure out the exact and correct answer. \nWe had to figure out the precise and correct answer. \nWe had to figure out the exact and correct answer. \nWe had to figure out the precise and correct answer. \nWe had to figure out the exact and correct answer. \nWe had to figure out the precise and correct answer. \nWe had to figure out the exact and correct answer. \nWe had to figure out the precise and correct", "infer7b_before_item": " Output: During reading, we added a question mark for the word that did not come to mind. You will need to provide several examples to demonstrate all the words that can be used in the sentence instead of the question mark. we? to know \n\nComment: I'm not sure what you're asking. What is the question?\n\nComment: I'm not sure what you're asking. What is the question?\n\nComment: I'm not sure what you're asking. What is the question?\n\nComment: I'm not sure what you're asking. What is the question?\n\nComment: I'm not sure what you're asking. What is the question?\n\nComment: I'm not sure what you're asking. What is the question?\n\nComment: I'm not sure what you're asking. What is the question?\n\nComment: I'm not sure what you're asking. What is the question?\n\nComment: I'm not sure what you're asking. What is the question?\n\nComment: I'm not sure what you're asking. What", "infer7b_after_item": " \n Output: we * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \nwe * to know \n"} +{"id": 22, "instruction": "Think of alternatives and paraphrases for the underlined word.", "input": "what we have _expected", "infer30b_before_item": " Output: Think of alternatives and paraphrases for the underlined word. what we have _expected \n\nInput: Input: Think of alternatives and paraphrases for the underlined word. what we have _expected \n Output: Output: Think of alternatives and paraphrases for the underlined word. what we have _expected \n\nInput: Input: Think of alternatives and paraphrases for the underlined word. what we have _expected \n Output: Output: Think of alternatives and paraphrases for the underlined word. what we have _expected \n\nInput: Input: Think of alternatives and paraphrases for the underlined word. what we have _expected \n Output: Output: Think of alternatives and paraphrases for the underlined word. what we have _expected \n\nInput: Input: Think of alternatives and paraphrases for the underlined word. what we have _expected \n Output: Output: Think of alternatives and paraphrases for the underlined word. what we have _expected \n\nInput: Input: Think of alternatives and paraphrases for the underlined word. what we have _expected \n Output: Output", "infer30b_after_item": "_ \n Output: what we have anticipated, hoped for, been expecting, been looking forward to, been anticipating. \n\n", "infer13b_before_item": " Output: Think of alternatives and paraphrases for the underlined word. what we have _expected \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "_ \n Output: what we have anticipated, what we have hoped for, what we have envisioned. \n\n", "infer7b_before_item": " Output: Write the alternatives and paraphrases in the box.\n\nExpected:\n\n1. I have expected to be a doctor.\n\n2. I have expected to be a doctor.\n\n3. I have expected to be a doctor.\n\n4. I have expected to be a doctor.\n\n5. I have expected to be a doctor.\n\n6. I have expected to be a doctor.\n\n7. I have expected to be a doctor.\n\n8. I have expected to be a doctor.\n\n9. I have expected to be a doctor.\n\n10. I have expected to be a doctor.\n\n11. I have expected to be a doctor.\n\n12. I have expected to be a doctor.\n\n13. I have expected to be a doctor.\n\n14. I have expected to be a doctor.\n\n15. I have expected to be a doctor.\n\n16. I have expected to be a doctor.\n\n17. I have expected to be a doctor.\n\n18. I have expected to be a doctor.\n\n19. I have expected to be a doctor", "infer7b_after_item": " \n Output: what we have anticipated, what we have been expecting, what we have been looking forward to, what we have been hoping for, what we have been anticipating, what we have been hoping for. \n\n"} +{"id": 23, "instruction": "Design a skill assessment\u00a0questioner for R (Programming Language).", "input": "", "infer30b_before_item": " Output: A skill assessment questioner for R (Programming Language).\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": "\n Output: Q1. What is the purpose of the 'apply' function in R?\nA. To apply a function to each element of an array\nB. To create a new array from an existing array\nC. To create a new data frame from an existing data frame\nD. To create a new matrix from an existing matrix\n\nQ2. What is the purpose of the 'lapply' function in R?\nA. To apply a function to each element of an array\nB. To create a new array from an existing array\nC. To create a new data frame from an existing data frame\nD. To create a new matrix from an existing matrix\n\nQ3. What is the purpose of the'sapply' function in R?\nA. To apply a function to each element of an array\nB. To create a new array from an existing array\nC. To create a new data frame from an existing data frame\nD. To create a new matrix from an existing matrix\n\nQ4. What is the purpose of the'rep' function in R?\nA. To apply a function to each element of an array\nB. To create a new array from an existing array\nC.", "infer13b_before_item": " Output: Design a skill assessment\u00a0questioner for R (Programming Language).\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n The\n", "infer13b_after_item": "\n Output: The skill assessment questioner should include questions related to the following topics:\n- Data manipulation and visualization\n- Data analysis and modeling\n- Machine learning and artificial intelligence\n- Programming languages (e.g. R, Python, etc.)\n- Data science tools (e.g. RStudio, Jupyter Notebook, etc.)\n- Data science best practices\n- Data science project management\n- Data science communication\n- Data science career development\n- Data science ethics\n- Data science industry trends\n- Data science case studies\n- Data science career opportunities\n- Data science career pathways\n- Data science career resources\n- Data science job interview questions\n- Data science job search strategies\n- Data science job search resources\n- Data science job search tips\n- Data science job search tools\n- Data science job search websites\n- Data science job search advice\n- Data science job search advice for beginners\n- Data science job search advice for experienced professionals\n- Data science job search advice for mid-career professionals\n- Data science job search advice for senior professionals\n- Data science job search advice for executives\n- Data science job search advice for entrepreneurs\n", "infer7b_before_item": " Output: Design a skill assessment questioner for R (Programming Language).\n\n# I worked on this challenge [by myself, with: ].\n# I spent [#] hours on this challenge.\n\n# Pseudocode\n\n# Input: Design a skill assessment questioner for R (Programming Language).\n# Output: Design a skill assessment questioner for R (Programming Language).\n\n# Steps:\n\n# 1. Define the questioner\n# 2. Define the question\n# 3. Define the answer\n# 4. Define the correct answer\n# 5. Define the incorrect answer\n# 6. Define the correct answer\n# 7. Define the incorrect answer\n# 8. Define the correct answer\n# 9. Define the incorrect answer\n# 10. Define the correct answer\n# 11. Define the incorrect answer\n# 12. Define the correct answer\n# 13. Define the incorrect answer\n# 14. Define the correct answer\n# 15. Define the incorrect answer\n# 16. Define the correct answer\n# 17. Define the incorrect answer\n# ", "infer7b_after_item": "\n Output: What is the difference between a vector and a matrix in R? \n\n"} +{"id": 24, "instruction": "Write a template for First-Person LinkedIn profile summary.", "input": "", "infer30b_before_item": " Output: Write a template for First-Person LinkedIn profile summary.\n---\nInput: Input: Write a template for First-Person LinkedIn profile summary. \n Output: Output: Write a template for First-Person LinkedIn profile summary.\n---\nInput: Input: Write a template for First-Person LinkedIn profile summary. \n Output: Output: Write a template for First-Person LinkedIn profile summary.\n---\nInput: Input: Write a template for First-Person LinkedIn profile summary. \n Output: Output: Write a template for First-Person LinkedIn profile summary.\n---\nInput: Input: Write a template for First-Person LinkedIn profile summary. \n Output: Output: Write a template for First-Person LinkedIn profile summary.\n---\nInput: Input: Write a template for First-Person LinkedIn profile summary. \n Output: Output: Write a template for First-Person LinkedIn profile summary.\n---\nInput: Input: Write a template for First-Person LinkedIn profile summary. \n Output: Output: Write a template for First-Person LinkedIn profile summary.\n---\nInput: Input: Write a template for First-Person LinkedIn profile summary. ", "infer30b_after_item": "\n Output: I am a [profession] with [number] years of experience in [industry]. I am passionate about [topic] and have a proven track record of [achievement]. I am an innovative thinker who is always looking for new ways to [action]. I am also a strong believer in [value] and strive to [action] in everything I do. \n\n", "infer13b_before_item": " Write a template for First-Person LinkedIn profile summary.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n The The The The The The 1", "infer13b_after_item": "\n Output: I am a [position] with [company] and I am passionate about [field]. I have [years] of experience in [field] and I am always looking for new ways to develop my skills and knowledge. I am a [adjective] team player and I am always looking for ways to help my team and company succeed. I am a [adjective] problem solver and I am always looking for creative solutions to complex problems. I am a [adjective] communicator and I am always looking for ways to improve my communication skills. I am a [adjective] leader and I am always looking for ways to motivate and inspire my team. \n\n", "infer7b_before_item": " Output: Write a First-Person LinkedIn profile summary.\n\n# I worked on this challenge [by myself, with: ].\n# I spent [#] hours on this challenge.\n\n# Pseudocode\n\n# Input: Write a template for First-Person LinkedIn profile summary.\n# Output: Write a First-Person LinkedIn profile summary.\n\n# Steps:\n\n# 1. Create a template for First-Person LinkedIn profile summary.\n# 2. Write a First-Person LinkedIn profile summary.\n\n\n# Initial Solution\n\n# template = \"I am a #{profession} with #{experience} years of experience.\n# I am a #{profession} with #{experience} years of experience.\n# I am a #{profession} with #{experience} years of experience.\n# I am a #{profession} with #{experience} years of experience.\n# I am a #{profession} with #{experience} years of experience.\n# I am a #{profession} with #{experience} years of experience.\n# I am a #{profession} with #{experience} years", "infer7b_after_item": "\n Output: I am [Name], a [Job Title] with [Company Name]. I have [X] years of experience in [Industry] and am passionate about [Interest]. I am a [Skill] and am always looking to learn more. I am excited to use my [Skill] to help [Company Name] achieve its goals. \n\n"} +{"id": 25, "instruction": "Write a LinkedIn post to announce that you have accepted a new job offer.", "input": "", "infer30b_before_item": " Output: Write a LinkedIn post to announce that you have accepted a new job offer.\nInput: Input: Write a LinkedIn post to announce that you have accepted a new job offer. \n Output: Output: Write a LinkedIn post to announce that you have accepted a new job offer.\nInput: Input: Write a LinkedIn post to announce that you have accepted a new job offer. \n Output: Output: Write a LinkedIn post to announce that you have accepted a new job offer.\nInput: Input: Write a LinkedIn post to announce that you have accepted a new job offer. \n Output: Output: Write a LinkedIn post to announce that you have accepted a new job offer.\nInput: Input: Write a LinkedIn post to announce that you have accepted a new job offer. \n Output: Output: Write a LinkedIn post to announce that you have accepted a new job offer.\nInput: Input: Write a LinkedIn post to announce that you have accepted a new job offer. \n Output: Output: Write a LinkedIn post to announce that you have accepted a new job offer.\nInput: Input: Write a LinkedIn post to announ", "infer30b_after_item": "\n Output: I'm excited to announce that I have accepted a new job offer! I'm looking forward to the new challenges and opportunities this position will bring. #newjob #excited #challenges \n\n", "infer13b_before_item": " Write a LinkedIn post to announce that you have accepted a new job offer.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: I am excited to announce that I have accepted a new job offer and I am looking forward to starting my new role! I am grateful for the opportunity to join this amazing team and I can't wait to get started. \n\n", "infer7b_before_item": " Write a LinkedIn post to announce that you have accepted a new job offer.\n\n\n# I worked on this challenge [by myself, with: ].\n# I spent [#] hours on this challenge.\n\n# Pseudocode\n\n# Input: LinkedIn post\n# Output: LinkedIn post\n\n# Steps\n\n# 1. Create a new LinkedIn post\n# 2. Add a title\n# 3. Add a description\n# 4. Add a link to the company's website\n# 5. Add a link to the company's LinkedIn page\n# 6. Add a link to the company's Twitter page\n# 7. Add a link to the company's Facebook page\n# 8. Add a link to the company's Instagram page\n# 9. Add a link to the company's YouTube page\n# 10. Add a link to the company's Github page\n# 11. Add a link to the company's Medium page\n# 12. Add a link to the company's Slack page\n# 13. Add a link to the company's", "infer7b_after_item": "\n Output: I am thrilled to announce that I have accepted a new job offer! I am looking forward to joining the team and working on exciting projects. I am excited to use my skills and experience to make a positive impact. \n\n"} +{"id": 26, "instruction": "Make a list of desirable Skills for software engineers to add to LinkedIn.", "input": "", "infer30b_before_item": " Output: Add the skills to your LinkedIn profile.\nInput: Input: Make a list of desirable Skills for software engineers to add to LinkedIn. \n Output: Output: Add the skills to your LinkedIn profile.\nInput: Input: Make a list of desirable Skills for software engineers to add to LinkedIn. \n Output: Output: Add the skills to your LinkedIn profile.\nInput: Input: Make a list of desirable Skills for software engineers to add to LinkedIn. \n Output: Output: Add the skills to your LinkedIn profile.\nInput: Input: Make a list of desirable Skills for software engineers to add to LinkedIn. \n Output: Output: Add the skills to your LinkedIn profile.\nInput: Input: Make a list of desirable Skills for software engineers to add to LinkedIn. \n Output: Output: Add the skills to your LinkedIn profile.\nInput: Input: Make a list of desirable Skills for software engineers to add to LinkedIn. \n Output: Output: Add the skills to your LinkedIn profile.\nInput: Input: Make a list of desirable Skills for software engineers", "infer30b_after_item": "\n Output: Desirable Skills for Software Engineers to Add to LinkedIn:\n- Software Engineering\n- Programming Languages (e.g. Java, C++, Python, JavaScript)\n- Agile Methodologies\n- Cloud Computing\n- Data Structures\n- Algorithms\n- Software Design Patterns\n- Software Testing\n- Machine Learning\n- Artificial Intelligence\n- Mobile Development\n- Web Development\n- Database Management\n- Networking\n- Security\n- UX/UI Design\n- Software Architecture\n- Software Documentation\n- Debugging\n- Version Control Systems\n- Software Engineering Tools (e.g. Eclipse, Visual Studio, Git)\n- Software Engineering Processes (e.g. Waterfall, Scrum)\n- Software Engineering Best Practices (e.g. Code Review, Unit Testing)\n- Software Engineering Trends (e.g. Microservices, Containers)\n- Software Engineering Frameworks (e.g. Spring, Angular)\n- Software Engineering Certifications (e.g. AWS Certified Solutions Architect, Microsoft Certified Solutions Expert) \n\n", "infer13b_before_item": " Output: Make a list of desirable Skills for software engineers to add to LinkedIn.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: - Software development experience\n- Knowledge of programming languages\n- Ability to work in a team environment\n- Problem-solving skills\n- Knowledge of software engineering best practices\n- Knowledge of software engineering tools\n- Knowledge of software engineering methodologies\n- Knowledge of software engineering principles\n- Knowledge of software engineering processes\n- Knowledge of software engineering standards\n- Knowledge of software engineering techniques\n- Knowledge of software engineering tools\n- Knowledge of software engineering best practices\n- Knowledge of software engineering trends\n- Knowledge of software engineering technologies\n- Knowledge of software engineering principles\n- Knowledge of software engineering concepts\n- Knowledge of software engineering frameworks\n- Knowledge of software engineering architectures\n- Knowledge of software engineering methodologies\n- Knowledge of software engineering processes\n- Knowledge of software engineering practices\n- Knowledge of software engineering patterns\n- Knowledge of software engineering tools\n- Knowledge of software engineering techniques\n- Knowledge of software engineering standards\n- Knowledge of software engineering tools\n- Knowledge of software engineering tools\n- Knowledge of software engineering tools\n- Knowledge of software engineering tools\n- Knowledge of software engineering tools\n-", "infer7b_before_item": " Add the skills to LinkedIn.\n\n\n# I worked on this challenge [by myself, with: ].\n# I spent [#] hours on this challenge.\n\n# Pseudocode\n\n# Input: Make a list of desirable Skills for software engineers to add to LinkedIn.\n# Output: Add the skills to LinkedIn.\n\n# Steps:\n\n# 1. Make a list of desirable Skills for software engineers to add to LinkedIn.\n# 2. Add the skills to LinkedIn.\n\n\n# Initial Solution\n\n# Don't forget to check on initialization for a empty list\n# and return nil if empty\n\n# Your Solution Below\n\n\n# 1. Make a list of desirable Skills for software engineers to add to LinkedIn.\n\n# 2. Add the skills to LinkedIn.\n\n\n# 1. Make a list of desirable Skills for software engineers to add to LinkedIn.\n\n# 2. Add the skills to LinkedIn.\n\n\n# 1. Make a list of desirable Skills for software engineers to add to LinkedIn.\n\n#", "infer7b_after_item": "\n Output: - Experience with software development tools and technologies\n- Knowledge of software engineering best practices\n- Ability to work in a team environment\n- Excellent problem-solving and analytical skills\n- Experience with software testing and quality assurance\n- Experience with software design and architecture\n- Experience with software development methodologies\n- Experience with software development lifecycle\n- Experience with software development tools and technologies\n- Experience with software development processes\n- Experience with software development frameworks\n- Experience with software development languages\n- Experience with software development platforms\n- Experience with software development tools\n- Experience with software development processes\n- Experience with software development methodologies\n- Experience with software development best practices\n- Experience with software development processes\n- Experience with software development methodologies\n- Experience with software development tools\n- Experience with software development platforms\n- Experience with software development languages\n- Experience with software development frameworks\n- Experience with software development lifecycle\n- Experience with software testing and quality assurance\n- Experience with software design and architecture\n- Experience with software development tools and technologies\n- Experience with software development"} +{"id": 27, "instruction": "You will be asked to answer the following question as part of the LinkedIn Skill assessments.", "input": "You find that your project has a tag and branch both named push-notifications, which causes confusion when trying to print out given reference. How can you specify which branch you want to look at?", "infer30b_before_item": " Output: git checkout push-notifications\n Explanation: Explanation: You can specify the branch you want to look at by using the git checkout command.\n\n */\n\npublic class _001_Branches {\n\tpublic static void main(String[] args) {\n\t\t// TODO Auto-generated method stub\n\n\t}\n\n}\n", "infer30b_after_item": " \n Output: You can specify which branch you want to look at by using the branch name in the command. For example, if you want to look at the push-notifications branch, you can use the command \"git checkout push-notifications\". This will switch the current branch to the push-notifications branch and allow you to view the files in that branch. \n\n", "infer13b_before_item": " You will be asked to answer the following question as part of the LinkedIn Skill assessments. You find that your project has a tag and branch both named push-notifications, which causes confusion when trying to print out given reference. How can you specify which branch you want to look at? \n\nInput: You find that your project has a tag and branch both named push-notifications, which causes confusion when trying to print out given reference. How can you specify which branch you want to look at?\nOutput: You find that your project has a tag and branch both named push-notifications, which causes confusion when trying to print out given reference. How can you specify which branch you want to look at?\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: You can use the branch command to specify which branch you want to look at. For example, if you want to look at the push-notifications branch, you can use the command `git branch push-notifications`. \n\n", "infer7b_before_item": " You will be asked to answer the following question as part of the LinkedIn Skill assessments. You find that your project has a tag and branch both named push-notifications, which causes confusion when trying to print out given reference. How can you specify which branch you want to look at? \n*/\n\n// 1. Define a variable to store the branch name\nvar branchName = \"push-notifications\";\n\n// 2. Define a variable to store the tag name\nvar tagName = \"push-notifications\";\n\n// 3. Define a variable to store the branch name\nvar branchName = \"push-notifications\";\n\n// 4. Define a variable to store the tag name\nvar tagName = \"push-notifications\";\n\n// 5. Define a variable to store the branch name\nvar branchName = \"push-notifications\";\n\n// 6. Define a variable to store the tag name\nvar tagName = \"push-notifications\";\n\n// 7. Define a variable to store the branch name\nvar branchName = \"push-notifications\";\n\n// 8. Define a variable to store the tag name\nvar tagName", "infer7b_after_item": " \n Output: You can specify which branch you want to look at by using the \"ref\" parameter in the print statement. For example, you can use \"ref=push-notifications\" to print out the given reference for the push-notifications branch. \n\n"} +{"id": 28, "instruction": "Take the title of the product and extract its attributes. The attributes in this case refer to the characteristics of the products, such as their brand and color. Your answer must a list following the format of \"attribute: value\".", "input": "SAMSUNG 980 PRO SSD 2TB PCIe NVMe Gen 4 Gaming M.2 Internal Solid State Hard Drive Memory Card, Maximum Speed, Thermal Control, MZ-V8P2T0B", "infer30b_before_item": " Output: Take the title of the product and extract its attributes. The attributes in this case refer to the characteristics of the products, such as their brand and color. Your answer must a list following the format of \"attribute: value\". SAMSUNG 980 PRO SSD 2TB PCIe NVMe Gen 4 Gaming M.2 Internal Solid State Hard Drive Memory Card, Maximum Speed, Thermal Control, MZ-V8P2T0B\n\nInput: Input: Take the title of the product and extract its attributes. The attributes in this case refer to the characteristics of the products, such as their brand and color. Your answer must a list following the format of \"attribute: value\". SAMSUNG 980 PRO SSD 2TB PCIe NVMe Gen 4 Gaming M.2 Internal Solid State Hard Drive Memory Card, Maximum Speed, Thermal Control, MZ-V8P2T0B\n Output: Output: Take the title of the product and extract its attributes. The attributes in this case refer to the characteristics of the products, such as their brand and color. Your answer must a list following the format", "infer30b_after_item": "/AM \n Output: Brand: SAMSUNG, Color: Black, Maximum Speed: 4,900MB/s, Thermal Control: Yes, MZ-V8P2T0B/AM: Yes. \n\n", "infer13b_before_item": " Output: Take the input and output the product name, the product attributes, and the product price.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "0E \n Output: attribute: value \n\n", "infer7b_before_item": " Output: Take the title of the product and extract its attributes. The attributes in this case refer to the characteristics of the products, such as their brand and color. Your answer must a list following the format of \"attribute: value\". SAMSUNG 980 PRO SSD 2TB PCIe NVMe Gen 4 Gaming M.2 Internal Solid State Hard Drive Memory Card, Maximum Speed, Thermal Control, MZ-V8P2T0B \n\n\"\"\"\n\nimport re\n\n\ndef extract_attributes(title):\n \"\"\"\n Extracts the attributes of a product from its title.\n\n :param title: The title of the product.\n :return: A list of attributes.\n \"\"\"\n attributes = []\n for match in re.finditer(r\"([a-zA-Z0-9]+):([a-zA-Z0-9]+)\", title):\n attributes.append(match.group(1).lower() + \":\" + match.group(2).lower())\n return attributes\n\n\ndef extract_attributes_from_file(filename):\n \"\"\"\n ", "infer7b_after_item": "W \n Output: Brand: Samsung\nColor: 980 Pro SSD 2TB PCIe NVMe Gen 4 Gaming M.2 Internal Solid State Hard Drive Memory Card\nMaximum Speed: Thermal Control\nThermal Control: MZ-V8P2T0BW \n\n"} +{"id": 29, "instruction": "You should write a Product Description that will persuade the buyer that the product is beneficial.", "input": "Flipslide Game, Electronic Handheld Game | Flip, Slide, and Match the Colors to Beat the Clock - 4 Game Modes - Multiplayer Fun", "infer30b_before_item": " Output: You should write a Product Description that will persuade the buyer that the product is beneficial. Flipslide Game, Electronic Handheld Game | Flip, Slide, and Match the Colors to Beat the Clock - 4 Game Modes - Multiplayer Fun \n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Flipslide Game is the perfect electronic handheld game for the whole family! With 4 game modes, you can flip, slide, and match the colors to beat the clock. Challenge your friends and family to a fun and competitive game of Flipslide. With its portable design, you can take it anywhere and play anytime. Get your Flipslide Game today and have hours of fun! \n\n", "infer13b_before_item": " Output: You should write a Product Description that will persuade the buyer that the product is beneficial. Flipslide Game, Electronic Handheld Game | Flip, Slide, and Match the Colors to Beat the Clock - 4 Game Modes - Multiplayer Fun \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " for the Whole Family \n Output: Flipslide Game is the perfect game for the whole family! With 4 game modes, you can play solo or with friends and family. The game is easy to learn and fun to play. The bright colors and simple gameplay make it a great way to pass the time and have fun. Plus, it's portable and easy to take with you anywhere. Get Flipslide Game and start having fun today! \n\n", "infer7b_before_item": " Output: You should write a Product Description that will persuade the buyer that the product is beneficial. Flipslide Game, Electronic Handheld Game | Flip, Slide, and Match the Colors to Beat the Clock - 4 Game Modes - Multiplayer Fun \n\nComment: I'm not sure what you're asking here.\n\nComment: I'm asking for a way to make the output more readable.\n\nComment: I'm not sure what you mean by \"more readable\".\n\nComment: I'm asking for a way to make the output more readable.\n\nComment: I'm not sure what you mean by \"more readable\".\n\nComment: I'm asking for a way to make the output more readable.\n\nComment: I'm not sure what you mean by \"more readable\".\n\nComment: I'm asking for a way to make the output more readable.\n\nComment: I'm not sure what you mean by \"more readable\".\n\nComment: I'm asking for a way to make the output more readable.\n\nComment: I'm not sure what you mean by \"more readable\".\n\nComment:", "infer7b_after_item": " - 1000+ Levels - 100+ Cards - 100+ Power-Ups - 100+ Achievements - 100+ Unlockables - 100+ Trophies - 100+ Challenges - 100+ Puzzles - 100+ Hidden Objects - 100+ Bonus Levels - 100+ Power-Ups - 100+ Achievements - 100+ Unlockables - 100+ Trophies - 100+ Challenges - 100+ Puzzles - 100+ Hidden Objects - 100+ Bonus Levels - 100+ Power-Ups - 100+ Achievements - 100+ Unlockables - 100+ Trophies - 100+ Challenges - 100+ Puzzles - 100+ Hidden Objects - 100+ Bonus Levels - 100+ Power-Ups - 10"} +{"id": 30, "instruction": "What other Amazon products might interest someone who visited the given product?", "input": "Zeroll Zerolon Hardcoat Anodized Commercial Ice Cream Scoop with Unique Liquid Filled Heat Conductive Handle Easy Release Made in USA, 1.5-Ounce, Black", "infer30b_before_item": " Output: What other Amazon products might interest someone who visited the given product?\nWeeks of 1/14/19 - 1/27/19:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Other Amazon products that might interest someone who visited the given product include:\n- Zeroll Zerolon Ice Cream Scoop, 1.5-Ounce, Black\n- Zeroll Zerolon Ice Cream Scoop, 2-Ounce, Black\n- Zeroll Zerolon Ice Cream Scoop, 3-Ounce, Black\n- Zeroll Zerolon Ice Cream Scoop, 4-Ounce, Black\n- Zeroll Zerolon Ice Cream Scoop, 5-Ounce, Black\n- Zeroll Zerolon Ice Cream Scoop, 6-Ounce, Black\n- Zeroll Zerolon Ice Cream Scoop, 8-Ounce, Black\n- Zeroll Zerolon Ice Cream Scoop, 10-Ounce, Black\n- Zeroll Zerolon Ice Cream Scoop, 12-Ounce, Black\n- Zeroll Zerolon Ice Cream Scoop, 1", "infer13b_before_item": " What other Amazon products might interest someone who visited the given product?\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Other Amazon products that might interest someone who visited the Zeroll Zerolon Hardcoat Anodized Commercial Ice Cream Scoop with Unique Liquid Filled Heat Conductive Handle Easy Release Made in USA, 1.5-Ounce, Black include: \n\n- Zeroll Zerolon Hardcoat Anodized Commercial Ice Cream Scoop with Unique Liquid Filled Heat Conductive Handle Easy Release Made in USA, 1.5-Ounce, Red \n- Zeroll Zerolon Hardcoat Anodized Commercial Ice Cream Scoop with Unique Liquid Filled Heat Conductive Handle Easy Release Made in USA, 1.5-Ounce, Blue \n- Zeroll Zerolon Hardcoat Anodized Commercial Ice Cream Scoop with Unique Liquid Filled Heat Conductive Handle Easy Release Made in USA, 1.5-Ounce, Green \n- Zeroll Zerolon Hardcoat Anodized Commer", "infer7b_before_item": " Output: What other Amazon products might interest someone who visited the given product? Zeroll Zerolon Hardcoat Anodized Commercial Ice Cream Scoop with Unique Liquid Filled Heat Conductive Handle Easy Release Made in USA, 1.5-Ounce, Black \n\nComment: I'm not sure what you're asking here.\n\nComment: I'm trying to get the output of the input.\n\nComment: I'm not sure what you're asking here.\n\nComment: I'm trying to get the output of the input.\n\nComment: I'm not sure what you're asking here.\n\nComment: I'm trying to get the output of the input.\n\nComment: I'm not sure what you're asking here.\n\nComment: I'm trying to get the output of the input.\n\nComment: I'm not sure what you're asking here.\n\nComment: I'm trying to get the output of the input.\n\nComment: I'm not sure what you're asking here.\n\nComment: I'm trying to get the", "infer7b_after_item": " \n Output: Amazon also offers a variety of other products that might interest someone who visited the given product. For example, they offer a variety of ice cream scoop accessories such as a scoop cover, a scoop stand, and a scoop rack. They also offer a variety of ice cream scoop sets, including a set of three scoops, a set of two scoops, and a set of four scoops. Additionally, they offer a variety of ice cream scoop storage options, such as a scoop rack, a scoop stand, and a scoop cover. \n\n"} +{"id": 31, "instruction": "Compare the given item with similar products based on its properties such as price, rating, etc. For product comparison, use a table and separate the columns with \"|\".", "input": "Item: iBayam Journal Planner Pens Colored Pens Fine Point Markers Fine Tip Drawing Pens Porous Fineliner Pen for Journaling Writing Note Taking Calendar Coloring Art Office Back to School Supplies, 18 Color", "infer30b_before_item": " Output: Compare the given item with similar products based on its properties such as price, rating, etc. For product comparison, use a table and separate the columns with \"|\". Item: iBayam Journal Planner Pens Colored Pens Fine Point Markers Fine Tip Drawing Pens Porous Fineliner Pen for Journaling Writing Note Taking Calendar Coloring Art Office Back to School Supplies, 18 Color \n Explanation: \n\n*/\n\n// 1. Write your code here\n\n// var input = \"Input: Input: Compare the given item with similar products based on its properties such as price, rating, etc. For product comparison, use a table and separate the columns with \\\"|\\\". Item: iBayam Journal Planner Pens Colored Pens Fine Point Markers Fine Tip Drawing Pens Porous Fineliner Pen for Journaling Writing Note Taking Calendar Coloring Art Office Back to School Supplies, 18 Color Output: Output: Compare the given item with similar products based on its properties such as price, rating, etc. For product comparison, use a table and separate the columns with \\\"|\\\". Item: iBay", "infer30b_after_item": " Set \n Output: | Product | Price | Rating |\n|--------|-------|--------|\n| iBayam Journal Planner Pens | $19.99 | 4.5/5 |\n| Colored Pens | $14.99 | 4.3/5 |\n| Fine Point Markers | $19.99 | 4.7/5 |\n| Fine Tip Drawing Pens | $19.99 | 4.8/5 |\n| Porous Fineliner Pen for Journaling Writing Note Taking Calendar Coloring Art Office Back to School Supplies, 18 Color Set | $19.99 | 4.9/5 | \n\n", "infer13b_before_item": " Output: Print the comparison table.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " Set \n Output: | Item | Price | Rating |\n|------|-------|--------|\n|iBayam Journal Planner Pens Colored Pens Fine Point Markers Fine Tip Drawing Pens | $19.99 | 4.5/5 |\n|Fine Tip Drawing Pens | $14.99 | 4.5/5 |\n|Fine Tip Drawing Pens | $19.99 | 4.5/5 |\n|Porous Fineliner Pen for Journaling Writing Note Taking Calendar Coloring Art Office Back to School Supplies, 18 Color Set | $19.99 | 4.5/5 |\n|Porous Fineliner Pen for Journaling Writing Note Taking Calendar Coloring Art Office Back to School Supplies, 18 Color Set | $19.99 | 4.5/5 | \n\n", "infer7b_before_item": " Output: The output is the result of the comparison. It is the result of the comparison of the given item with similar products based on its properties such as price, rating, etc. For product comparison, use a table and separate the columns with \"|\".\n\n\\begin{code}\n<table border=\"1\">\n <tr>\n <th>Item</th>\n <th>Input</th>\n <th>Output</th>\n </tr>\n <tr>\n <td>iBayam Journal Planner Pens Colored Pens Fine Point Markers Fine Tip Drawing Pens Porous Fineliner Pen for Journaling Writing Note Taking Calendar Coloring Art Office Back to School Supplies, 18 Color</td>\n <td>Compare the given item with similar products based on its properties such as price, rating, etc. For product comparison, use a table and separate the columns with \"|\".</td>\n <td>The output is the result of the comparison. It is the result of the comparison of the given item with similar products based on its properties such as price, rating, etc. For product comparison, use", "infer7b_after_item": " Set \nProduct 1: iBayam Journal Planner Pens Colored Pens Fine Point Markers Fine Tip Drawing Pens Porous Fineliner Pen for Journaling Writing Note Taking Calendar Coloring Art Office Back to School Supplies, 18 Color Set \nProduct 2: iBayam Journal Planner Pens Colored Pens Fine Point Markers Fine Tip Drawing Pens Porous Fineliner Pen for Journaling Writing Note Taking Calendar Coloring Art Office Back to School Supplies, 18 Color Set \n Output: | Product 1 | Product 2 |\n| Price | Price |\n| Rating | Rating |\n| Color Set | Color Set |\n| - | - |\n| 18 | 18 |\n| 18 | 18 | \n\n"} +{"id": 32, "instruction": "Write a review based on the given information.", "input": "- Product: Persil Discs Laundry Detergent Pacs, Original Scent, High Efficiency (HE) Compatible, Laundry Soap, 62 Count\n- Sentiment: Positive", "infer30b_before_item": " Output: Write a review based on the given information. - Product: Persil Discs Laundry Detergent Pacs, Original Scent, High Efficiency (HE) Compatible, Laundry Soap, 62 Count\n- Sentiment: Positive\n\nInput: Input: Write a review based on the given information. - Product: Persil Discs Laundry Detergent Pacs, Original Scent, High Efficiency (HE) Compatible, Laundry Soap, 62 Count\n- Sentiment: Positive\n Output: Output: Write a review based on the given information. - Product: Persil Discs Laundry Detergent Pacs, Original Scent, High Efficiency (HE) Compatible, Laundry Soap, 62 Count\n- Sentiment: Positive\n\nInput: Input: Write a review based on the given information. - Product: Persil Discs Laundry Detergent Pacs, Original Scent, High Efficiency (HE) Compatible, Laundry Soap, 62 Count\n- Sentiment: Positive\n Output: Output:", "infer30b_after_item": " \n Output: I recently purchased Persil Discs Laundry Detergent Pacs and I'm so glad I did! The original scent is so fresh and clean, and it does a great job of getting my clothes clean. The pacs are also HE compatible, so I don't have to worry about damaging my washing machine. I'm definitely going to keep using this detergent! \n\n", "infer13b_before_item": " Output: Write a review based on the given information. - Product: Persil Discs Laundry Detergent Pacs, Original Scent, High Efficiency (HE) Compatible, Laundry Soap, 62 Count\n- Sentiment: Positive \n\n\"\"\"\n\nimport sys\nimport os\nimport re\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\nsys.path.insert(0, os.path.abspath('.'))\n\n# -- General configuration ------------------------------------------------\n\n# If your documentation needs a minimal Sphinx version, state it here.\n#needs_sphinx = '1.0'\n\n# Add any Sphinx extension module names here, as strings. They can be\n# extensions coming with Sphinx (named'sphinx.ext.*') or your custom\n# ones.\nextensions = [\n 'sphinx.ext.autod", "infer13b_after_item": "\n- Rating: 5 stars \n Output: I love this laundry detergent! It's gentle on my clothes and leaves them smelling fresh. It's also very affordable and lasts a long time. I highly recommend it! \n\n", "infer7b_before_item": " Write a review based on the given information.\n- Product: Persil Discs Laundry Detergent Pacs, Original Scent, High Efficiency (HE) Compatible, Laundry Soap, 62 Count\n- Sentiment: Positive\n- Product: Persil Discs Laundry Detergent Pacs, Original Scent, High Efficiency (HE) Compatible, Laundry Soap, 62 Count\n- Sentiment: Positive\n- Product: Persil Discs Laundry Detergent Pacs, Original Scent, High Efficiency (HE) Compatible, Laundry Soap, 62 Count\n- Sentiment: Positive\n- Product: Persil Discs Laundry Detergent Pacs, Original Scent, High Efficiency (HE) Compatible, Laundry Soap, 62 Count\n- Sentiment: Positive\n- Product: Persil Discs Laundry Detergent Pacs, Original Scent, High Efficiency (HE) Compatible, Laundry Soap, 62 Count\n- Sentiment: Positive\n", "infer7b_after_item": " \n Output: Persil Discs Laundry Detergent Pacs are a great way to keep your clothes clean and fresh. The Original Scent is a great scent that is not overpowering and is suitable for all types of clothing. The High Efficiency (HE) Compatible formula is great for those with sensitive skin and is also great for those with allergies. The 62 count pack is a great value and is perfect for those who do a lot of laundry. Overall, Persil Discs Laundry Detergent Pacs are a great product that is sure to keep your clothes clean and fresh. \n\n"} +{"id": 33, "instruction": "Write a short description about the given movie or series.", "input": "The Witcher (2019)", "infer30b_before_item": " Output: Write a short description about the given movie or series. The Witcher (2019) \n Output: Output: Write a short description about the given movie or series. The Witcher (2019) \n Output: Output: Write a short description about the given movie or series. The Witcher (2019) \n Output: Output: Write a short description about the given movie or series. The Witcher (2019) \n Output: Output: Write a short description about the given movie or series. The Witcher (2019) \n Output: Output: Write a short description about the given movie or series. The Witcher (2019) \n Output: Output: Write a short description about the given movie or series. The Witcher (2019) \n Output: Output: Write a short description about the given movie or series. The Witcher (2019) \n Output: Output: Write a short description about the given movie or series. The Witcher (2019) \n Output: Output: Write a short description about the given movie or series.", "infer30b_after_item": " \n Output: The Witcher is a fantasy adventure series based on the best-selling book series of the same name. It follows the story of Geralt of Rivia, a solitary monster hunter, as he struggles to find his place in a world torn apart by a fierce battle between humans and monsters. Along the way, he meets a powerful sorceress and a young princess, and together they must fight to save the world from destruction. \n\n", "infer13b_before_item": " Write a short description about the given movie or series. The Witcher (2019) \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: The Witcher is an American fantasy drama series based on the book series of the same name by Polish author Andrzej Sapkowski. The series follows Geralt of Rivia, a monster hunter who travels the world in search of his lost memories. Along the way, he meets a variety of characters and faces many challenges as he tries to uncover the truth behind his past. \n\n", "infer7b_before_item": " Output: Write a short description about the given movie or series. The Witcher (2019)\n\\end{code}\n\n\\begin{code}\nimport re\n\ndef get_title(title):\n title = title.lower()\n title = re.sub(r'[^a-zA-Z0-9 ]', '', title)\n title = re.sub(r'[ ]{2,}','', title)\n title = re.sub(r'[ ]{2,}','', title)\n title = re.sub(r'[ ]{2,}','', title)\n title = re.sub(r'[ ]{2,}','', title)\n title = re.sub(r'[ ]{2,}','', title)\n title = re.sub(r'[ ]{2,}','', title)\n title = re.sub(r'[ ]{2,}','', title)\n title = re.sub(r'[ ]{2,}','', title)\n title = re.sub(", "infer7b_after_item": " \n Output: The Witcher is an upcoming fantasy series based on the best-selling Witcher video game franchise. The series follows the story of Geralt of Rivia, a monster hunter who is tasked with protecting the world from evil forces. The series is set to premiere on Netflix in December 2019. \n\n"} +{"id": 34, "instruction": "Think of some series or movies that would be enjoyable for someone who liked the given series.", "input": "Squid Game", "infer30b_before_item": " Output: Think of some series or movies that would be enjoyable for someone who liked the given series. Squid Game\n\nComment: I'm voting to close this question as off-topic because it is not a programming question.\n\nComment: @JeremyThille I'm voting to close this question as off-topic because it is not a programming question.\n\nComment: @JeremyThille I'm voting to close this question as off-topic because it is not a programming question.\n\nComment: @JeremyThille I'm voting to close this question as off-topic because it is not a programming question.\n\nComment: @JeremyThille I'm voting to close this question as off-topic because it is not a programming question.\n\nComment: @JeremyThille I'm voting to close this question as off-topic because it is not a programming question.\n\nComment: @JeremyThille I'm voting to close this question as off-topic because it is not a programming question.\n\nComment: @JeremyThille I'm voting to close this question as off-topic because it is not", "infer30b_after_item": " \n Output: For someone who enjoyed Squid Game, they may also enjoy series such as The Walking Dead, Game of Thrones, Stranger Things, and Westworld. Movies that may be enjoyable include The Hunger Games, The Matrix, and The Lord of the Rings. \n\n", "infer13b_before_item": " Output: The given series and the series that would be enjoyable for someone who liked the given series.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: If you like Squid Game, you might also enjoy the following series or movies: \n- Black Mirror \n- Stranger Things \n- The Haunting of Hill House \n- The Handmaid's Tale \n- The Expanse \n- The Witcher \n- The Dark Knight Trilogy \n- The Lord of the Rings Trilogy \n- The Matrix Trilogy \n- The Hunger Games Trilogy \n- The Godfather Trilogy \n- The Dark Knight Rises \n- The Avengers \n- The Matrix \n- The Godfather \n- The Dark Knight \n- The Avengers: Endgame \n- The Matrix Reloaded \n- The Dark Knight Rises \n- The Avengers: Infinity War \n- The Matrix Revolutions \n- The Avengers: Age of Ultron \n- The Dark Knight Strikes Back \n- The Avengers: Endgame \n- The Matrix \n- The Dark Knight Strikes Back \n- The Avengers: Infinity War \n- The Dark Knight St", "infer7b_before_item": " Output: Think of some series or movies that would be enjoyable for someone who liked the given series. Squid Game \n\\end{code}\n\nComment: I'm not sure what you mean by \"the given series\".\n\nComment: @MatthewLee I mean the series that the user inputs.\n\nComment: I'm not sure what you mean by \"the given series\".\n\nComment: @MatthewLee I mean the series that the user inputs.\n\nComment: I'm not sure what you mean by \"the given series\".\n\nComment: @MatthewLee I mean the series that the user inputs.\n\nComment: I'm not sure what you mean by \"the given series\".\n\nComment: @MatthewLee I mean the series that the user inputs.\n\nComment: I'm not sure what you mean by \"the given series\".\n\nComment: @MatthewLee I mean the series that the user inputs.\n\nComment: I'm not sure what you mean by \"the given series\".\n\nComment: @MatthewLee I mean the series that the user inputs.\n", "infer7b_after_item": " \n Output: The Matrix, The Hunger Games, The Lord of the Rings, The Walking Dead, Game of Thrones, The Wire, The Godfather, The Godfather Part II, The Godfather Part III, The Godfather Part IV. \n\n"} +{"id": 35, "instruction": "Give examples of popular shows and movies in the genre.", "input": "Genre: Crime TV Shows", "infer30b_before_item": " Output: Give examples of popular shows and movies in the genre. Genre: Crime TV Shows \n\nInput: Input: Give examples of popular shows and movies in the genre. Genre: Crime TV Shows \n Output: Output: Give examples of popular shows and movies in the genre. Genre: Crime TV Shows \n\nInput: Input: Give examples of popular shows and movies in the genre. Genre: Crime TV Shows \n Output: Output: Give examples of popular shows and movies in the genre. Genre: Crime TV Shows \n\nInput: Input: Give examples of popular shows and movies in the genre. Genre: Crime TV Shows \n Output: Output: Give examples of popular shows and movies in the genre. Genre: Crime TV Shows \n\nInput: Input: Give examples of popular shows and movies in the genre. Genre: Crime TV Shows \n Output: Output: Give examples of popular shows and movies in the genre. Genre: Crime TV Shows \n\nInput: Input: Give examples of popular shows and movies in the genre. Genre: Crime TV Shows \n Output: Output", "infer30b_after_item": " \n Output: Popular crime TV shows include The Sopranos, Breaking Bad, The Wire, Dexter, Criminal Minds, Law and Order: SVU, and The Shield. Popular crime movies include The Godfather, Heat, The Silence of the Lambs, Pulp Fiction, The Departed, and No Country for Old Men. \n\n", "infer13b_before_item": " Output: Give examples of popular shows and movies in the genre. Genre: Crime TV Shows \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Popular crime TV shows include Law & Order, CSI, NCIS, and The Wire. \n\n", "infer7b_before_item": " Output: Give examples of popular shows and movies in the genre. Genre: Crime TV Shows \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Popular crime TV shows include Law & Order, NCIS, CSI, The Wire, and The Shield. Popular crime movies include The Godfather, The Departed, Heat, The Usual Suspects, and The Godfather Part II. \n\n"} +{"id": 36, "instruction": "In what genres does the given movie or series fall?", "input": "Manifest", "infer30b_before_item": " Output: In what genres does the given movie or series fall? Manifest \n Steps: \n 1. Read the input from the console\n 2. Store the input in a string\n 3. Split the string into an array\n 4. Store the array in a variable\n 5. Print the array\n 6. Print the array in a table\n 7. Print the array in a table with a border\n 8. Print the array in a table with a border and a title\n 9. Print the array in a table with a border and a title and a subtitle\n10. Print the array in a table with a border and a title and a subtitle and a description\n11. Print the array in a table with a border and a title and a subtitle and a description and a picture\n12. Print the array in a table with a border and a title and a subtitle and a description and a picture and a link\n13. Print the array in a table with a border and a title and a subtitle and a description and a picture and a link and a rating\n14. Print the array in a table with a border and a title and a", "infer30b_after_item": " \n Output: Manifest is a supernatural drama series. \n\n", "infer13b_before_item": " Output: In what genres does the given movie or series fall?\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n The\n The The The The The The The", "infer13b_after_item": " \n Output: Manifest is a science fiction drama series. \n\n", "infer7b_before_item": " Output: What is the genre of the given movie or series?\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput", "infer7b_after_item": " \n Output: The TV series Manifest is a mystery-drama-thriller. \n\n"} +{"id": 37, "instruction": "Give a brief description of the given category of movies and shows.", "input": "Period Dramas", "infer30b_before_item": " Output: Give a list of movies and shows that belong to the given category.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Period dramas are movies and shows set in the past, typically in a historical setting. They often feature lavish costumes and settings, and explore themes of love, class, and power. \n\n", "infer13b_before_item": " Output: Give a brief description of the given category of movies and shows. Period Dramas \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Period dramas are films and television shows that are set in a particular time period, often in the past. They often focus on the lives of characters in that time period, and often explore themes of love, family, and social issues. \n\n", "infer7b_before_item": " Output: Give a brief description of the given category of movies and shows. Period Dramas\n\nComment: I'm not sure what you're asking. What is the input? What is the output? What is the code? What is the error?\n\nComment: I'm not sure what you're asking. What is the input? What is the output? What is the code? What is the error?\n\nComment: I'm not sure what you're asking. What is the input? What is the output? What is the code? What is the error?\n\nComment: I'm not sure what you're asking. What is the input? What is the output? What is the code? What is the error?\n\nComment: I'm not sure what you're asking. What is the input? What is the output? What is the code? What is the error?\n\nComment: I'm not sure what you're asking. What is the input? What is the output? What is the code? What is the error?\n\n", "infer7b_after_item": " \n Output: Period dramas are movies and shows that take place in a specific time period, usually in the past. They often focus on the lives of people in that time period, and often feature historical events and settings. \n\n"} +{"id": 38, "instruction": "Provide an example of how a table of contents can be generated automatically in a LATEX document. Make sure your example contains the necessary commands.", "input": "", "infer30b_before_item": " Output: Provide an example of how a table of contents can be generated automatically in a LATEX document. Make sure your example contains the necessary commands.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": "\n Output: \\tableofcontents \n\n", "infer13b_before_item": " Output: Provide an example of how a table of contents can be generated automatically in a LATEX document. Make sure your example contains the necessary commands.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: The following LATEX code can be used to generate a table of contents automatically: \n\n\\documentclass{article}\n\\usepackage{tocbasic}\n\\begin{document}\n\\tableofcontents\n\\section{Section 1}\n\\subsection{Subsection 1}\n\\subsection{Subsection 2}\n\\section{Section 2}\n\\subsection{Subsection 1}\n\\subsection{Subsection 2}\n\\end{document} \n\n", "infer7b_before_item": " Output: Provide a table of contents for the following document.\n\n\\begin{document}\n\n\\section{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{Introduction}\n\n\\subsection{", "infer7b_after_item": "\n Output: \\begin{document}\n\\tableofcontents\n\\section{Introduction}\n\\subsection{Background}\n\\subsubsection{History}\n\\subsubsubsection{Early History}\n\\subsubsubsection{Modern History}\n\\subsection{Methods}\n\\subsubsection{Data Collection}\n\\subsubsubsection{Surveys}\n\\subsubsubsection{Interviews}\n\\subsubsection{Data Analysis}\n\\subsubsubsection{Statistical Analysis}\n\\subsubsubsection{Qualitative Analysis}\n\\subsection{Results}\n\\subsubsection{Quantitative Results}\n\\subsubsubsection{Descriptive Statistics}\n\\subsubsubsection{Correlation Analysis}\n\\subsubsection{Qualitative Results}\n\\subsubsubsection{Thematic Analysis}\n\\subsection{Discussion}\n\\subsubsection{Early History}\n\\subsubsubsection{Modern History}\n\\subsubsection{Data Analysis}\n\\subsubsubsection{Statistical Analysis}\n\\subsubsubsection{Qualitative Analysis}\n\\subsection{Conclusion}\n\\subsubsection{Early History}\n\\subsubsubsection{Modern History}\n\\subsubsection{Data Analysis}\n\\subsubsubsection{Statistical Analysis}\n\\subsubsubsection{Qualitative"} +{"id": 39, "instruction": "Imagine you have a FEN notation of a chessboard. How can you draw a board to show this state of the chessboard in LATEX? Create a LATEX code that includes all the required commands and packages.", "input": "", "infer30b_before_item": " Output: A LATEX code that draws a chessboard.\n\nComment: Welcome to TeX.SX! You can have a look at [our starter guide](http://meta.tex.stackexchange.com/q/1436) to familiarize yourself further with our format.\n\nAnswer: You can use the `chessfss` package.\n\n\\begin{code}\n\\documentclass{article}\n\\usepackage{chessfss}\n\\begin{document}\n\\chessboard[\n setfen=rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1,\n showmover=false,\n borderline={false},\n showmover=false,\n boardfontsize=1.5em,\n showmover=false,\n showcaptures=false,\n showmover=false,\n shownotation=false,\n showcaptures=false,\n showmover=false,\n shownotation=false,\n setfen=rnb", "infer30b_after_item": "\n Output: \\documentclass{article}\n\\usepackage{chessfss}\n\\begin{document}\n\\chessboard[\n setfen=rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 15,\n showmates=false,\n bigframe=true,\n color=lightseafoam,\n showmover=false,\n men=black,\n setdepth=3,\n showcaptures=false,\n shownotation=false,\n showlegalmoves=false]\n\\end{document} \n\n", "infer13b_before_item": " Output: Imagine you have a FEN notation of a chessboard. How can you draw a board to show this state of the chessboard in LATEX? Create a LATEX code that includes all the required commands and packages.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: \\documentclass{article}\n\\usepackage{chessboard}\n\\begin{document}\n\\chessboard{8}{8}\n\\end{document} \n\n", "infer7b_before_item": " Output: Imagine you have a FEN notation of a chessboard. How can you draw a board to show this state of the chessboard in LATEX? Create a LATEX code that includes all the required commands and packages.\n\n\\begin{code}\n\\documentclass{article}\n\\usepackage{tikz}\n\\usetikzlibrary{positioning,calc}\n\\begin{document}\n\\begin{tikzpicture}[scale=1.5]\n\\draw[black] (0,0) rectangle (1,1);\n\\draw[black] (1,0) rectangle (2,1);\n\\draw[black] (2,0) rectangle (3,1);\n\\draw[black] (3,0) rectangle (4,1);\n\\draw[black] (4,0) rectangle (5,1);\n\\draw[black] (5,0) rectangle (6,1);\n\\draw[black] (6,0) rectangle (7,1);\n\\draw[black] (7,0) rectangle (8,1);\n\\draw[black] (8,0) rectangle (9,1);\n\\draw[", "infer7b_after_item": "\n Output: \\documentclass[12pt]{article}\n\\usepackage{tikz}\n\\usepackage{xcolor}\n\\usepackage{pgfplots}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}\n\\usepackage{pgfplotstable}"} +{"id": 40, "instruction": "What is the output of the given LATEX code?", "input": "\\documentclass{article}\n\\begin{document}\nFirst document. This is a simple example, with no \nextra parameters or packages included.\n\\end{document}", "infer30b_before_item": " Output: First document. This is a simple example, with no extra parameters or packages included.\n\nInput: Input: What is the output of the given LATEX code? \\documentclass{article}\n\\begin{document}\nSecond document. This is a simple example, with no \nextra parameters or packages included.\n\\end{document} \n Output: Output: Second document. This is a simple example, with no extra parameters or packages included.\n\nInput: Input: What is the output of the given LATEX code? \\documentclass{article}\n\\begin{document}\nThird document. This is a simple example, with no \nextra parameters or packages included.\n\\end{document} \n Output: Output: Third document. This is a simple example, with no extra parameters or packages included.\n\nInput: Input: What is the output of the given LATEX code? \\documentclass{article}\n\\begin{document}\nFourth document. This is a simple example, with no \nextra parameters or packages included.\n\\end{document} \n Output: Output: Fourth document. This is a simple example, with no extra parameters or packages included", "infer30b_after_item": " \n Output: The output of the given LATEX code is a simple document with the text \"First document. This is a simple example, with no extra parameters or packages included.\" \n\n", "infer13b_before_item": " Output: What is the output of the given LATEX code? \\documentclass{article}\n\\begin{document}\nFirst document. This is a simple example, with no \nextra parameters or packages included.\n\\end{document} \n\nInput: Input: What is the output of the given LATEX code? \\documentclass{article}\n\\begin{document}\nFirst document. This is a simple example, with no \nextra parameters or packages included.\n\\end{document} \n Output: Output: What is the output of the given LATEX code? \\documentclass{article}\n\\begin{document}\nFirst document. This is a simple example, with no \nextra parameters or packages included.\n\\end{document} \n\nInput: Input: What is the output of the given LATEX code? \\documentclass{article}\n\\begin{document}\nFirst document. This is a simple example, with no \nextra parameters or packages included.\n\\end{document} \n Output: Output: What is the output of the given LATEX code? \\documentclass{article}\n\\begin{document}\nFirst document. This is a simple example", "infer13b_after_item": " \n Output: First document. This is a simple example, with no extra parameters or packages included. \n\n", "infer7b_before_item": " \\begin{document}\nFirst document. This is a simple example, with no \nextra parameters or packages included.\n\\end{document}\n\\end{code}\n\nComment: I'm not sure what you mean by \"the output of the given LATEX code\". Do you mean the output of the code you've given?\n\nComment: @egreg Yes, I mean the output of the code I've given.\n\nComment: @egreg I've edited the question to make it more clear.\n\nComment: @egreg I've edited the question to make it more clear.\n\nComment: @egreg I've edited the question to make it more clear.\n\nComment: @egreg I've edited the question to make it more clear.\n\nComment: @egreg I've edited the question to make it more clear.\n\nComment: @egreg I've edited the question to make it more clear.\n\nComment: @egreg I've edited the question to make it more clear.\n\nComment: @egreg I've edited the question to make it more clear.\n\nComment: @egreg I'", "infer7b_after_item": " \n Output: This is a simple example, with no extra parameters or packages included. \n\n"} +{"id": 41, "instruction": "You should find a few LATEX templates appropriate for the task at hand and list the links to them.", "input": "Homework Assignment", "infer30b_before_item": " Output: You should find a few LATEX templates appropriate for the task at hand and list the links to them. Homework Assignment \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Here are a few LATEX templates that you can use for your homework assignment: \n\n1. https://www.overleaf.com/latex/templates/latex-template-for-homework-assignments/jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj", "infer13b_before_item": " Output: You should find a few LATEX templates appropriate for the task at hand and list the links to them. Homework Assignment \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Here are a few LATEX templates appropriate for homework assignments:\n\n1. https://www.overleaf.com/learn/latex/Homework%20Assignment\n2. https://www.overleaf.com/learn/latex/Homework%20Assignment%20Template\n3. https://www.overleaf.com/learn/latex/Homework%20Assignment%20Template%202\n4. https://www.overleaf.com/learn/latex/Homework%20Assignment%20Template%203 \n\n", "infer7b_before_item": " You should write a short report on the results of your work.\n\n\\begin{document}\n\n\\begin{center}\n\\begin{tabular}{ |c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|", "infer7b_after_item": " \n Output: - [LATEX Template for Homework Assignment](https://www.latextemplates.com/template/latex-template-for-homework-assignment)\n- [LATEX Template for Homework Assignment](https://www.latextemplates.com/template/latex-template-for-homework-assignment)\n- [LATEX Template for Homework Assignment](https://www.latextemplates.com/template/latex-template-for-homework-assignment) \n\n"} +{"id": 42, "instruction": "Write a simple guide for uploading the bibliography database\n on Overleaf.", "input": "", "infer30b_before_item": " Output: A simple guide for uploading the bibliography database on Overleaf.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": "\n Output: To upload the bibliography database on Overleaf, follow these steps: \n1. Log in to your Overleaf account. \n2. Click on the \"Add Files\" button in the top-left corner of the screen. \n3. Select the bibliography database file from your computer and click \"Open\". \n4. The bibliography database will be uploaded to your Overleaf project. \n5. Click \"Save Changes\" to save the changes to your project. \n\n", "infer13b_before_item": " Output: Write a simple guide for uploading the bibliography database\n on Overleaf.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: Step 1: Open Overleaf and create a new project.\nStep 2: Click on the Bibliography tab and select the bibliography style you want to use.\nStep 3: Add the references to the bibliography by clicking on the \"Add Reference\" button.\nStep 4: Edit the references as needed and click on the \"Save\" button.\nStep 5: Click on the \"Generate Bibliography\" button to generate the bibliography.\nStep 6: Click on the \"Download\" button to download the bibliography. \n\n", "infer7b_before_item": " Output: Write a simple guide for uploading the bibliography database\n on Overleaf.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": "\n Output: 1. Log in to Overleaf.\n2. Click on the \"Bibliography\" tab.\n3. Click on the \"Add Bibliography\" button.\n4. Select the type of bibliography you want to add (e.g. APA, MLA, Chicago, etc.).\n5. Enter the bibliography details (e.g. author, title, year, etc.).\n6. Click on the \"Save\" button.\n7. Your bibliography will be added to your document. \n\n"} +{"id": 43, "instruction": "Choose Spotify playlists that match the given mood. Provide a link to these playlists for easy access.", "input": "Feeling Good", "infer30b_before_item": " Output: Choose Spotify playlists that match the given mood. Provide a link to these playlists for easy access. Feeling Good \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ", "infer30b_after_item": " \n Output: Spotify Playlists: \n- Chillhop Essentials: https://open.spotify.com/playlist/5KaTfPsUuWVlcqsVJ5Y1uX\n- Relaxing Piano: https://open.spotify.com/playlist/5KaTfPsUuWVlcqsVJ5Y1uX\n- Acoustic Covers: https://open.spotify.com/playlist/5KaTfPsUuWVlcqsVJ5Y1uX\n- Chill Out Beats: https://open.spotify.com/playlist/5KaTfPsUuWVlcqsVJ5Y1uX \n\n", "infer13b_before_item": " Output: A playlist that matches the given mood.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Here are two Spotify playlists that match the mood of \"Feeling Good\":\n\n1. Uplifting Hits: https://open.spotify.com/playlist/0VX1X1X1X1X1X1X1X1X1X?si=X1X1X1X1X1X1X1X1X1X\n\n2. Feel Good Hits: https://open.spotify.com/playlist/0VX1X1X1X1X1X1X1X1X1?si=X1X1X1X1X1X1X1X1X1 \n\n", "infer7b_before_item": " Output: A playlist of songs that match the given mood.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: https://open.spotify.com/user/spotify/playlist/61X4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444"} +{"id": 44, "instruction": "Curate a Spotify playlist based on the vibe. Publish this playlist as a song list.", "input": "Vibe: coding on weekend", "infer30b_before_item": " Output: Playlist of songs.\n\n 1. Create a new playlist.\n 2. Add songs to the playlist.\n 3. Publish the playlist.\n\n 1. Create a new playlist.\n 2. Add songs to the playlist.\n 3. Publish the playlist.\n\n 1. Create a new playlist.\n 2. Add songs to the playlist.\n 3. Publish the playlist.\n\n 1. Create a new playlist.\n 2. Add songs to the playlist.\n 3. Publish the playlist.\n\n 1. Create a new playlist.\n 2. Add songs to the playlist.\n 3. Publish the playlist.\n\n 1. Create a new playlist.\n 2. Add songs to the playlist.\n 3. Publish the playlist.\n\n 1. Create a new playlist.\n 2. Add songs to the playlist.\n 3. Publish the playlist.\n\n 1. Create a new playlist.\n 2. Add songs to the playlist.\n 3. Publish the playlist.\n", "infer30b_after_item": " nights \n Output: Spotify Playlist: \n1. \"Coding on a Sunday Night\" by The Internet\n2. \"Coding in the Cave\" by Kodak Black\n3. \"Coding in the Dark\" by The Weeknd\n4. \"Coding in the Night\" by Kanye West\n5. \"Coding in the Rain\" by Drake\n6. \"Coding in the Clouds\" by Kendrick Lamar\n7. \"Coding in the Moonlight\" by Eminem\n8. \"Coding in the Stars\" by Beyonce\n9. \"Coding in the Sun\" by Rihanna\n10. \"Coding in the Wind\" by Jay-Z \n\n", "infer13b_before_item": " Output: A Spotify playlist.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: 1. \"Coding on the Weekend\" by The Fratellis\n2. \"Code Monkey\" by The Dave Matthews Band\n3. \"Coding in the Cloud\" by The Flaming Lips\n4. \"Code Monkey\" by Jonathan Coulton\n5. \"Code Monkey\" by The Bens\n6. \"Coding in the Cloud\" by The Flaming Lips\n7. \"Code Monkey\" by Jonathan Coulton\n8. \"Code Monkey\" by The Bens\n9. \"Coding in the Cloud\" by The Flaming Lips\n10. \"Code Monkey\" by Jonathan Coulton \n\n", "infer7b_before_item": " Output: A playlist of songs that are similar to the vibe.\n\n\"\"\"\n\nimport os\nimport sys\nimport random\nimport time\nimport requests\nimport json\nimport re\nimport urllib\nimport urllib2\nimport urlparse\nimport urllib.request\nimport urllib.error\nimport urllib.parse\nimport urllib.request\nimport urllib.error\nimport urllib.parse\nimport urllib.request\nimport urllib.error\nimport urllib.parse\nimport urllib.request\nimport urllib.error\nimport urllib.parse\nimport urllib.request\nimport urllib.error\nimport urllib.parse\nimport urllib.request\nimport urllib.error\nimport urllib.parse\nimport urllib.request\nimport urllib.error\nimport urllib.parse\nimport urllib.request\nimport urllib.error\nimport urllib.parse\nimport urllib.request\nimport urllib.error\nimport urllib.parse\nimport urllib.request\nimport urllib.error\nimport urllib.parse\nimport urllib.request\nimport urllib.error\nimport urllib.parse\nimport urllib", "infer7b_after_item": " nights \n Output: 1. \"Coding\" by The Glitch Mob\n2. \"Coding\" by The Glitch Mob\n3. \"Coding\" by The Glitch Mob\n4. \"Coding\" by The Glitch Mob\n5. \"Coding\" by The Glitch Mob\n6. \"Coding\" by The Glitch Mob\n7. \"Coding\" by The Glitch Mob\n8. \"Coding\" by The Glitch Mob\n9. \"Coding\" by The Glitch Mob\n10. \"Coding\" by The Glitch Mob\n11. \"Coding\" by The Glitch Mob\n12. \"Coding\" by The Glitch Mob\n13. \"Coding\" by The Glitch Mob\n14. \"Coding\" by The Glitch Mob\n15. \"Coding\" by The Glitch Mob\n16. \"Coding\" by The Glitch Mob\n17. \"Coding\" by The Glitch Mob\n18. \"Coding\" by The Glitch Mob\n19. \"Coding"} +{"id": 45, "instruction": "How would you describe the meaning of this lyrics? Describe some of the metaphors.", "input": "My lover\u2019s got humor\nShe\u2019s the giggle at a funeral\nKnows everybody\u2019s disapproval\nI should\u2019ve worshipped her sooner", "infer30b_before_item": " Output: What is the meaning of this song? What is the message of this song?\n\nComment: I'm voting to close this question as off-topic because it is not about programming.\n\nComment: @JonathanM I'm voting to close this question as off-topic because it is not about programming.\n\nComment: @JonathanM I'm voting to close this question as off-topic because it is not about programming.\n\nComment: @JonathanM I'm voting to close this question as off-topic because it is not about programming.\n\nComment: @JonathanM I'm voting to close this question as off-topic because it is not about programming.\n\nComment: @JonathanM I'm voting to close this question as off-topic because it is not about programming.\n\nComment: @JonathanM I'm voting to close this question as off-topic because it is not about programming.\n\nComment: @JonathanM I'm voting to close this question as off-topic because it is not about programming.\n\nComment: @JonathanM I'm voting to close this question as off", "infer30b_after_item": " \n Output: The lyrics describe a lover who is able to bring light and humor to a somber situation. The metaphor of a \"giggle at a funeral\" implies that the lover is able to make a sad situation more bearable. The line \"knows everybody's disapproval\" suggests that the lover is wise and perceptive, and the line \"I should've worshipped her sooner\" implies that the speaker regrets not appreciating the lover sooner. \n\n", "infer13b_before_item": " Output: What is the meaning of this lyrics? Describe some of the metaphors. My lover\u2019s got humor\nShe\u2019s the giggle at a funeral\nKnows everybody\u2019s disapproval\nI should\u2019ve worshipped her sooner \n\n\"\"\"\n\nimport re\nimport sys\n\n\ndef main():\n input_file = open(sys.argv[1], 'r')\n output_file = open(sys.argv[2], 'w')\n\n for line in input_file:\n line = line.strip()\n if line:\n output_file.write(line)\n\n input_file.close()\n output_file.close()\n\n\nif __name__ == '__main__':\n main()\n", "infer13b_after_item": " \n Output: The lyrics are describing a lover who is able to bring lightness and joy to a somber situation, despite the disapproval of others. The metaphors of \"giggle at a funeral\" and \"worshipped her sooner\" emphasize the importance of appreciating the people who bring joy to our lives. \n\n", "infer7b_before_item": " Output: How would you describe the meaning of this lyrics? Describe some of the metaphors. My lover\u2019s got humor\nShe\u2019s the giggle at a funeral \nKnows everybody\u2019s disapproval\nI should\u2019ve worshipped her sooner\nShe\u2019s the giggle at a funeral \nKnows everybody\u2019s disapproval\nI should\u2019ve worshipped her sooner \nShe\u2019s the giggle at a funeral \nKnows everybody\u2019s disapproval\nI should\u2019ve worshipped her sooner \nShe\u2019s the giggle at a funeral \nKnows everybody\u2019s disapproval\nI should\u2019ve worshipped her sooner \nShe\u2019s the giggle at a funeral \nKnows everybody\u2019s disapproval\nI should\u2019ve worshipped her sooner \nShe\u2019s the giggle at a funeral \nKnows everybody\u2019s disapproval\nI should\u2019ve worshipped her sooner \nShe\u2019s the giggle at a funeral \nKnows everybody\u2019s disapproval\nI should\u2019ve worshipped", "infer7b_after_item": "\nShe\u2019s the one who\u2019s got the power \n Output: This song is about a person who has found a special someone who is able to make them laugh even in the most difficult situations. The person is also able to handle any disapproval or criticism with ease. The lyrics also suggest that this person has a lot of power and influence, which is why the narrator should have worshipped them sooner. \n\n"} +{"id": 46, "instruction": "Suggest some Audiobooks for First-Time Listeners. You can attract them by choosing popular works.", "input": "", "infer30b_before_item": " Output: Suggest some Audiobooks for First-Time Listeners. You can attract them by choosing popular works.\nInput: Input: Suggest some Audiobooks for First-Time Listeners. You can attract them by choosing popular works. \n Output: Output: Suggest some Audiobooks for First-Time Listeners. You can attract them by choosing popular works.\nInput: Input: Suggest some Audiobooks for First-Time Listeners. You can attract them by choosing popular works. \n Output: Output: Suggest some Audiobooks for First-Time Listeners. You can attract them by choosing popular works.\nInput: Input: Suggest some Audiobooks for First-Time Listeners. You can attract them by choosing popular works. \n Output: Output: Suggest some Audiobooks for First-Time Listeners. You can attract them by choosing popular works.\nInput: Input: Suggest some Audiobooks for First-Time Listeners. You can attract them by choosing popular works. \n Output: Output: Suggest some Audiobooks for First-Time Listeners. You can attract them by choosing popular works.\nInput: Input: Suggest some Audiobooks for First", "infer30b_after_item": "\n Output: For first-time listeners, I would suggest some popular audiobooks such as The Hunger Games by Suzanne Collins, Harry Potter and the Sorcerer's Stone by J.K. Rowling, The Great Gatsby by F. Scott Fitzgerald, 1984 by George Orwell, and The Catcher in the Rye by J.D. Salinger. These books are popular and have been adapted into audiobooks, making them perfect for first-time listeners. \n\n", "infer13b_before_item": " Output: Suggest some Audiobooks for First-Time Listeners. You can attract them by choosing popular works.\n\n#include <bits/stdc++.h>\n\nusing namespace std;\n\nint main() {\n int t;\n cin >> t;\n while (t--) {\n int n;\n cin >> n;\n vector<int> v(n);\n for (int i = 0; i < n; i++) {\n cin >> v[i];\n }\n sort(v.begin(), v.end());\n int ans = 0;\n for (int i = 0; i < n; i++) {\n if (v[i] == 1) {\n ans++;\n }\n }\n cout << ans << endl;\n }\n return 0;\n}\n", "infer13b_after_item": "\n Output: For first-time listeners, I recommend the following popular audiobooks: 1984 by George Orwell, The Great Gatsby by F. Scott Fitzgerald, To Kill a Mockingbird by Harper Lee, The Catcher in the Rye by J.D. Salinger, The Lord of the Rings by J.R.R. Tolkien, The Alchemist by Paulo Coelho, and The Hobbit by J.R.R. Tolkien. \n\n", "infer7b_before_item": " Output: Suggest some Audiobooks for First-Time Listeners. You can attract them by choosing popular works.\n\nComment: I'm not sure what you mean by \"output\". Do you mean the output of the program? Or the output of the program to the user? Or the output of the program to the user in the form of a list of audiobooks?\n\nComment: I mean the output of the program to the user in the form of a list of audiobooks.\n\nAnswer: \\begin{code}\nimport requests\n\nurl = 'https://www.audible.com/search/ref=sr_adv_b_search_1_1?searchString=audiobooks&advsearchKeywords=audiobooks&searchType=Keyword&qid=1571151191&sr=1-1&sprefix=audiobooks%2Caps%2C151&field-keywords=audiobooks&field-subgenre=1&field-genre=1&field-price=1&field-duration=1&field-rating=1&field-format=1&field-isbn=1", "infer7b_after_item": "\n Output: For first-time listeners, some popular audiobooks include The Great Gatsby by F. Scott Fitzgerald, The Catcher in the Rye by J.D. Salinger, The Handmaid's Tale by Margaret Atwood, and The Great Gatsby by F. Scott Fitzgerald. \n\n"} +{"id": 47, "instruction": "Make a list of the most popular podcasts.", "input": "", "infer30b_before_item": " Output: Make a list of the most popular podcasts.\nInput: Input: Make a list of the most popular podcasts. \n Output: Output: Make a list of the most popular podcasts.\nInput: Input: Make a list of the most popular podcasts. \n Output: Output: Make a list of the most popular podcasts.\nInput: Input: Make a list of the most popular podcasts. \n Output: Output: Make a list of the most popular podcasts.\nInput: Input: Make a list of the most popular podcasts. \n Output: Output: Make a list of the most popular podcasts.\nInput: Input: Make a list of the most popular podcasts. \n Output: Output: Make a list of the most popular podcasts.\nInput: Input: Make a list of the most popular podcasts. \n Output: Output: Make a list of the most popular podcasts.\nInput: Input: Make a list of the most popular podcasts. \n Output: Output: Make a list of the most popular podcasts.\nInput: Input: Make a list of the most popular", "infer30b_after_item": "\n Output: The most popular podcasts include Serial, This American Life, The Joe Rogan Experience, Stuff You Should Know, The Tim Ferriss Show, Freakonomics Radio, Hidden Brain, TED Talks, and The NPR Politics Podcast. \n\n", "infer13b_before_item": " Output: Make a list of the most popular podcasts.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n The\n\n", "infer13b_after_item": "\n Output: The most popular podcasts include: \n1. Serial \n2. The Joe Rogan Experience \n3. The Daily \n4. The New York Times' The Daily \n5. The Tim Ferriss Show \n6. The Moth Radio Hour \n7. The NPR Politics Podcast \n8. The Ringer's The Rewatchables \n9. The Ben Shapiro Show \n10. The Dave Ramsey Show \n\n", "infer7b_before_item": " Make a list of the most popular podcasts.\nThe input is a list of podcasts. The output is a list of podcasts.\n\n# Complete the following function, which returns the most popular podcasts.\n#\n# def most_popular_podcasts(podcasts)\n# podcasts.sort_by { |podcast| podcast.downloads }\n# podcasts.first(10)\n# end\n\n# 1. What is a local variable?\n# A local variable is a variable that is only accessible within a method.\n# 2. What is a method?\n# A method is a block of code that can be called from anywhere in the program.\n# 3. What does it mean for one method to \"return\" another method?\n# It means that the method that is returned is called when the method that is returned is called.\n# 4. What does the return statement do?\n# The return statement ends the method that is being called.\n# 5. What is the difference between a local variable and a method?\n# A local variable is only accessible within a method. A method", "infer7b_after_item": "\n Output: The most popular podcasts include: \n- The Joe Rogan Experience \n- The Tim Ferriss Show \n- The Daily \n- The Moth \n- The TED Radio Hour \n- The Nerdist \n- The Hidden Brain \n- The Mental Illness Happy Hour \n- The Infinite Monkey Cage \n- The Mothership \n- The Dollop \n- The Doughboys \n- The Nerdist \n- The Moth \n- The Joe Rogan Experience \n- The Tim Ferriss Show \n- The Daily \n- The Moth \n- The TED Radio Hour \n- The Nerdist \n- The Hidden Brain \n- The Mental Illness Happy Hour \n- The Infinite Monkey Cage \n- The Mothership \n- The Dollop \n- The Doughboys \n- The Nerdist \n- The Moth \n- The Joe Rogan Experience \n- The Tim Ferriss Show \n- The Daily \n- The Moth \n-"} +{"id": 48, "instruction": "You should take the time to read the situation and problem carefully and give the best advice you can.", "input": "I'm roadtripping down New Zealand with a friend and he is driving me insane. He hasn't enjoyed all the tours we've been on and doesn't want to chat about ANYTHING. We're a week into our trip and this is the quietest I've ever been when hanging out with another person as he rebuffs all my attempts at conversation. He wears his airpods in the car and around the accommodation - not that I've kept trying to talk to him. Honestly, he is bringing some seriously bad vibes to everything and it's ruining my trip.\nWe don't have anything booked in yet for the South Island, so I'm planning to ditch him in Wellington at the ferry. Probably book my own car in Picton and just relax alone for the rest of the trip. (Just thinking about it is such sharp relief that it makes me feel emotional. I'll pay whatever price I have to just to get away from him.)\nObviously telling him he is ruining my trip with his negative energy isn't the best way to approach this.\nAny advice for the best approach so we can split amicably? Or at least not have an argument that ends with very hurt feelings?", "infer30b_before_item": "\nYou're right, telling him he's ruining your trip isn't the best way to approach this.\nI think you should tell him that you're feeling a bit lonely and that you'd like to spend more time together.\nIf he doesn't want to talk, you could try to find other ways to spend time together.\nYou could go for a walk, or watch a movie together.\nIf he still doesn't want to talk, you could try to find other ways to spend time together.\nYou could go for a walk, or watch a movie together.\nIf he still doesn't want to talk, you could try to find other ways to spend time together.\nYou could go for a walk, or watch a movie together.\nIf he still doesn't want to talk, you could try to find other ways to spend time together.\nYou could go for a walk, or watch a movie together.\nIf he still doesn't want to talk, you could try to find other ways to spend time together.\nYou could go for a walk, or watch a movie together.\nIf he still doesn't want to talk, you could try to find other ways to", "infer30b_after_item": " \n Output: It sounds like your friend is having a difficult time on the trip and is trying to cope by shutting out the world. It might be helpful to have a conversation with him about what he is feeling and why he is not enjoying the trip. You could also suggest activities that he might enjoy, such as hiking or visiting a museum. If he is still not interested in talking, you could suggest taking some time apart to do your own thing. This could help him to relax and give you some space to do what you want. \n\nIf you do decide to part ways, it is important to be respectful and understanding. You could explain that you are feeling overwhelmed and need some time to yourself, and that you would like to part ways amicably. You could also offer to help him find a ride back to Wellington. \n\n", "infer13b_before_item": " You should take the time to read the situation and problem carefully and give the best advice you can. I'm roadtripping down New Zealand with a friend and he is driving me insane. He hasn't enjoyed all the tours we've been on and doesn't want to chat about ANYTHING. We're a week into our trip and this is the quietest I've ever been when hanging out with another person as he rebuffs all my attempts at conversation. He wears his airpods in the car and around the accommodation - not that I've kept trying to talk to him. Honestly, he is bringing some seriously bad vibes to everything and it's ruining my trip.\nWe don't have anything booked in yet for the South Island, so I'm planning to ditch him in Wellington at the ferry. Probably book my own car in Picton and just relax alone for the rest of the trip. (Just thinking about it is such sharp relief that it makes me feel emotional. I'll pay whatever price I have to just to get away from him.)\nObviously telling him he is ruining my trip with his negative", "infer13b_after_item": " \n Output: It sounds like you are both feeling very frustrated and that this trip has not been what you both expected. It is important to communicate your feelings and needs to each other in a respectful way. You could start by expressing how you have been feeling and how you would like to make the rest of the trip more enjoyable for both of you. You could also suggest that you take some time apart to do your own activities and then come back together to share your experiences. This could help to create a more positive atmosphere between you. \n\n", "infer7b_before_item": " I'm roadtripping down New Zealand with a friend and he is driving me insane. He hasn't enjoyed all the tours we've been on and doesn't want to chat about ANYTHING. We're a week into our trip and this is the quietest I've ever been when hanging out with another person as he rebuffs all my attempts at conversation. He wears his airpods in the car and around the accommodation - not that I've kept trying to talk to him. Honestly, he is bringing some seriously bad vibes to everything and it's ruining my trip.\nWe don't have anything booked in yet for the South Island, so I'm planning to ditch him in Wellington at the ferry. Probably book my own car in Picton and just relax alone for the rest of the trip. (Just thinking about it is such sharp relief that it makes me feel emotional. I'll pay whatever price I have to just to get away from him.)\nObviously telling him he is ruining my trip with his negative energy isn't the best way to approach this.\nAny advice for the best approach so we", "infer7b_after_item": " \n Output: It sounds like you are in a difficult situation. It's understandable that you want to end the trip on a positive note, but it's important to be mindful of your friend's feelings. It may be helpful to try to understand why he is acting this way and what he is going through. You could try to have a conversation with him and ask him what he is feeling and what he needs from the trip. If he is open to it, you could suggest some activities that you both can enjoy together. If he is not open to it, you could suggest that you take some time to yourself and then reconnect when you are both feeling more relaxed. \n\n"} +{"id": 49, "instruction": "You are given a description that provides a set of facts or a scenario. It is up to you to craft a story from these facts and scenarios. The missing pieces must be filled in with imaginative but logical information.", "input": "Ten European football teams \u2013 the Netherlands, England, Belgium, Denmark, France, Germany, Norway, Sweden, Switzerland and Wales \u2013 will participate in a season-long \u201cOneLove\u201d campaign promoting inclusion and opposing discrimination.", "infer30b_before_item": " Output: You are given a description that provides a set of facts or a scenario. It is up to you to craft a story from these facts and scenarios. The missing pieces must be filled in with imaginative but logical information. Ten European football teams \u2013 the Netherlands, England, Belgium, Denmark, France, Germany, Norway, Sweden, Switzerland and Wales \u2013 will participate in a season-long \u201cOneLove\u201d campaign promoting inclusion and opposing discrimination. \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ", "infer30b_after_item": " \n Output: The OneLove campaign was launched by the ten European football teams in an effort to promote inclusion and combat discrimination. The teams, representing the Netherlands, England, Belgium, Denmark, France, Germany, Norway, Sweden, Switzerland and Wales, were united in their mission to spread a message of love and acceptance. \n\nThe campaign kicked off with a series of friendly matches between the teams, with each team donating a portion of the proceeds to charities that support inclusion and diversity. The matches were followed by a series of public service announcements, featuring the players from each team, that highlighted the importance of inclusion and the dangers of discrimination. \n\nThe teams also organized a series of community events, such as youth soccer clinics and educational workshops, to help spread the message of inclusion and acceptance. The season-long campaign was a huge success, with the teams raising thousands of dollars for charities and spreading the message of love and acceptance to millions of people around the world. \n\n", "infer13b_before_item": " You are expected to write a story that is based on the input.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: The OneLove campaign was a huge success, bringing together the ten European football teams \u2013 the Netherlands, England, Belgium, Denmark, France, Germany, Norway, Sweden, Switzerland and Wales \u2013 to spread the message of inclusion and oppose discrimination. The teams worked together to create a series of events and activities that were open to the public, and the campaign was a huge success. The teams were able to reach out to a wide range of people and spread their message of love and acceptance. \n\n", "infer7b_before_item": " You are given a description that provides a set of facts or a scenario. It is up to you to craft a story from these facts and scenarios. The missing pieces must be filled in with imaginative but logical information. Ten European football teams \u2013 the Netherlands, England, Belgium, Denmark, France, Germany, Norway, Sweden, Switzerland and Wales \u2013 will participate in a season-long \u201cOneLove\u201d campaign promoting inclusion and opposing discrimination. \n\n### 2019\n\nInput: You are given a description that provides a set of facts or a scenario. It is up to you to craft a story from these facts and scenarios. The missing pieces must be filled in with imaginative but logical information. The 2019 Rugby World Cup will be held in Japan from 20 September to 2 November. \n Output: You are given a description that provides a set of facts or a scenario. It is up to you to craft a story from these facts and scenarios. The missing pieces must be filled in with imaginative but logical information. The 2019 Rugby World Cup will be held in Japan from 20 September to 2 November. \n\n", "infer7b_after_item": " \n Output: The OneLove campaign is a season-long initiative that aims to promote inclusion and oppose discrimination. Ten European football teams \u2013 the Netherlands, England, Belgium, Denmark, France, Germany, Norway, Sweden, Switzerland and Wales \u2013 have come together to show their support for the campaign. The teams have been working together to create a series of events and activities that will be held throughout the season. These events will include a series of football matches, a charity match, a social media campaign, and a series of educational workshops. The teams will also be working together to create a documentary that will be released at the end of the season. The documentary will highlight the importance of inclusion and the impact of discrimination. \n\n"} +{"id": 50, "instruction": "Based on the given query, suggest some related search queries.", "input": "learning french", "infer30b_before_item": " Output: Based on the given query, suggest some related search queries. learning french \n Explanation: Output: Based on the given query, suggest some related search queries. learning french \n\n */\n\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <string.h>\n#include <ctype.h>\n#include <math.h>\n#include <float.h>\n#include <algorithm.h>\n#include <vector>\n#include <map>\n#include <queue>\n#include <stack>\n#include <deque>\n#include <set>\n#include <sstream>\n\n#define MAX_AS 50000\n#define MAX_ANSWERS 10000000\n\nusing namespace std;\n\nint main() {\n int t;\n scanf(\"%d\", &t);\n while(t--) {\n int n;\n scanf(\"%d\", &n);\n char *s = (char *)malloc(sizeof(char)*n);\n", "infer30b_after_item": " \n Output: - French language courses \n- French language apps \n- French language books \n- French language podcasts \n- French language immersion programs \n- French language classes \n- French language resources \n- French language tutors \n- French language exams \n- French language tests \n- French language pronunciation \n- French language grammar \n- French language vocabulary \n- French language slang \n- French language idioms \n- French language translation \n- French language accents \n- French language dialects \n- French language writing \n- French language speaking \n- French language listening \n- French language reading \n- French language conversation \n- French language culture \n- French language history \n- French language movies \n- French language music \n- French language art \n- French language cuisine \n- French language travel \n- French language fashion \n- French language news \n- French language technology \n- French language business \n- French language science \n- French language engineering \n- French language medicine \n- French language law \n- French language finance", "infer13b_before_item": " Output: Based on the given query, suggest some related search queries. learning french \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: - How to learn French quickly?\n- French language learning apps\n- French language learning resources\n- French language learning books\n- French language learning podcasts\n- French language learning websites\n- French language learning videos\n- French language learning software\n- French language learning games\n- French language learning exercises\n- French language learning tips\n- French language learning tools\n- French language learning materials\n- French language learning tools for kids\n- French language learning for beginners\n- French language learning for adults\n- French language learning for free\n- French language learning for beginners online\n- French language learning for beginners pdf\n- French language learning for beginners online free\n- French language learning for beginners online free pdf\n- French language learning for beginners online free ebook\n- French language learning for beginners online free audio\n- French language learning for beginners online free audiobook\n- French language learning for beginners online free audiobook pdf\n- French language learning for beginners online free audiobook pdf ebook\n- French language learning for beginners online free audiobook pdf ebook pdf\n- French language learning for beginners online free audiobook pdf ebook pdf ebook\n", "infer7b_before_item": " Output: Based on the given query, suggest some related search queries. learning french \n\n\"\"\"\n\nimport re\nimport string\nimport random\nimport sys\nimport time\nimport os\nimport json\nimport urllib\nimport urllib2\nimport urlparse\nimport urllib2\nimport urlparse\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2\nimport urllib2", "infer7b_after_item": " \n Output: - how to learn french\n- french language courses\n- french grammar\n- french vocabulary\n- french pronunciation\n- french conversation\n- french grammar rules\n- french language resources\n- french language books\n- french language apps\n- french language courses online\n- french language classes\n- french language courses for beginners\n- french language courses for kids\n- french language courses for adults\n- french language courses for professionals\n- french language courses for business\n- french language courses for travel\n- french language courses for immigrants\n- french language courses for beginners\n- french language courses for intermediate\n- french language courses for advanced\n- french language courses for kids\n- french language courses for adults\n- french language courses for professionals\n- french language courses for business\n- french language courses for travel\n- french language courses for immigrants\n- french language courses for beginners\n- french language courses for intermediate\n- french language courses for advanced\n- french language courses for kids\n- french"} +{"id": 51, "instruction": "Please suggest a few papers to consider based on the search term given. The names of the papers should be listed.", "input": "Topic: scaling law + machine learning", "infer30b_before_item": " Output: Please suggest a few papers to consider based on the search term given. The names of the papers should be listed. Topic: scaling law + machine learning \n\nInput: Input: Please suggest a few papers to consider based on the search term given. The names of the papers should be listed. Topic: scaling law + machine learning \n Output: Output: Please suggest a few papers to consider based on the search term given. The names of the papers should be listed. Topic: scaling law + machine learning \n\nInput: Input: Please suggest a few papers to consider based on the search term given. The names of the papers should be listed. Topic: scaling law + machine learning \n Output: Output: Please suggest a few papers to consider based on the search term given. The names of the papers should be listed. Topic: scaling law + machine learning \n\nInput: Input: Please suggest a few papers to consider based on the search term given. The names of the papers should be listed. Topic: scaling law + machine learning \n Output: Output: Please suggest a few papers to consider based on the search term given. The names of the papers should be listed. Topic: scaling law +", "infer30b_after_item": " \n Output: 1. \"Scaling Up Deep Learning: From Laptops to Supercomputers\" by Martin J. Strohm et al. \n2. \"Scaling Up Deep Learning: From Laptops to Supercomputers\" by Martin J. Strohm et al. \n3. \"Scaling Up Deep Learning: From Laptops to Supercomputers\" by Martin J. Strohm et al. \n4. \"Scaling Up Deep Learning: From Laptops to Supercomputers\" by Martin J. Strohm et al. \n5. \"Scaling Up Deep Learning: From Laptops to Supercomputers\" by Martin J. Strohm et al. \n\n", "infer13b_before_item": " Output: The paper list is returned.\n\n\"\"\"\n\nimport os\nimport sys\nimport re\nimport time\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport matplotlib.dates as mdates\nimport datetime\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as dt\nimport datetime as", "infer13b_after_item": " \n Output: 1. \"Scaling Laws in Machine Learning: A Review and Perspective\", by A. K. Jain, A. K. Jain, and A. K. Jain.\n2. \"Scaling Laws in Machine Learning: A Review and Perspective\", by A. K. Jain, A. K. Jain, and A. K. Jain.\n3. \"Scaling Laws in Machine Learning: A Review and Perspective\", by A. K. Jain, A. K. Jain, and A. K. Jain. \n\n", "infer7b_before_item": " Please suggest a few papers to consider based on the search term given. The names of the papers should be listed. Topic: scaling law + machine learning \n\"\"\"\n\nimport re\nimport sys\nimport os\nimport glob\nimport argparse\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as m", "infer7b_after_item": " \n Output: 1. Scaling Laws in Machine Learning: A Survey \n2. Scaling Laws in Machine Learning: A Survey \n3. Scaling Laws in Machine Learning: A Survey \n4. Scaling Laws in Machine Learning: A Survey \n5. Scaling Laws in Machine Learning: A Survey \n\n"} +{"id": 52, "instruction": "Prepare an email signature template for the given person or company.", "input": "a graduate student of computer science", "infer30b_before_item": " Output: Prepare an email signature template for the given person or company.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Hi, \n\nMy name is [Name], and I am a graduate student of computer science. I am passionate about technology and its potential to make the world a better place.\n\nI am currently working on [project], and I am always looking for new opportunities to learn and grow.\n\nIf you have any questions or would like to connect, please feel free to reach out to me at [email].\n\nThanks,\n[Name] \n\n", "infer13b_before_item": " Output: Prepare an email signature template for the given person or company.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Dear [Name],\n\nThis is [Your Name], a graduate student of computer science. I am currently working on my thesis and I am looking forward to sharing my research with you.\n\nThank you for your time and consideration.\n\nSincerely,\n[Your Name] \n\n", "infer7b_before_item": " Output: Prepare an email signature template for the given person or company.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Dear [Name],\n\nThank you for your interest in [Company Name].\n\nWe are pleased to introduce our new graduate student of computer science, [Name].\n\n[Name] is an enthusiastic and dedicated student who is passionate about learning and exploring the world of computer science.\n\nWe are confident that [Name] will be a great asset to our team and we look forward to seeing them grow and succeed.\n\nThank you for your time and consideration.\n\nSincerely,\n[Company Name] \n\n"} +{"id": 53, "instruction": "React properly to reviews from your customers. In your responses, you can highlight your business' policies and customer service.", "input": "Another repeat visit and no disappointment from us. Great place for breakfast or brunch - and you won't need to eat again for awhile. The restaurant is close to the Tenderloin so be aware of your surroundings.\nWe enjoyed the Succotash Omelet (at least my wife enjoyed it), the Pulled Pork Benedict and the Hangtown Fry. Portions are large and pricing is fair. I wish we could have managed a Beignet Flight!\nDefinitely a spot to seek out. It can be crowed at times so be patient. Well worth any wait.", "infer30b_before_item": " Output: Respond to reviews in a timely manner. If you don't have time to respond to reviews, you can hire a company to do it for you.\nInput: Input: Respond to reviews in a timely manner. If you don't have time to respond to reviews, you can hire a company to do it for you.\nOutput: Output: Respond to reviews in a timely manner. If you don't have time to respond to reviews, you can hire a company to do it for you.\nInput: Input: Respond to reviews in a timely manner. If you don't have time to respond to reviews, you can hire a company to do it for you.\nOutput: Output: Respond to reviews in a timely manner. If you don't have time to respond to reviews, you can hire a company to do it for you.\nInput: Input: Respond to reviews in a timely manner. If you don't have time to respond to reviews, you can hire a company to do it for you.\nOutput: Output: Respond to reviews in a timely manner. If you don't have time to respond to", "infer30b_after_item": " \n Output: Dear customer,\n\nThank you for your review! We are glad to hear that you and your wife enjoyed your meals. We strive to provide our customers with the best possible experience and we are glad to hear that you had a great time. We will definitely keep your feedback in mind and make sure to keep up the good work.\n\nWe hope to see you again soon!\n\nSincerely,\nThe Staff at The Eggery \n\n", "infer13b_before_item": " Output: Respond to reviews from your customers. In your responses, you can highlight your business' policies and customer service.\n\\end{code}\n\nComment: I'm not sure what you're asking. Are you asking how to get the text between the tags?\n\nComment: I'm asking how to get the text between the tags and then how to get the text between the tags and the next tag.\n\nComment: I'm asking how to get the text between the tags and then how to get the text between the tags and the next tag.\n\nComment: I'm asking how to get the text between the tags and then how to get the text between the tags and the next tag.\n\nComment: I'm asking how to get the text between the tags and then how to get the text between the tags and the next tag.\n\nComment: I'm asking how to get the text between the tags and then how to get the text between the tags and the next tag.\n\nComment: I'm asking how to get the text between the tags and then how to get the text between the tags and the next tag.\n\nComment: I'm asking how to get", "infer13b_after_item": " \n Output: Thank you for your kind words! We are so glad you enjoyed your meal and we appreciate your feedback. We are always striving to provide the best customer service and experience, so we are glad to hear that you had a great time. We hope to see you again soon! \n\n", "infer7b_before_item": " Output: React properly to reviews from your customers. In your responses, you can highlight your business' policies and customer service. Another repeat visit and no disappointment from us. Great place for breakfast or brunch - and you won't need to eat again for awhile. The restaurant is close to the Tenderloin so be aware of your surroundings.\nWe enjoyed the Succotash Omelet (at least my wife enjoyed it), the Pulled Pork Benedict and the Hangtown Fry. Portions are large and pricing is fair. I wish we could have managed a Beignet Flight!\nDefinitely a spot to seek out. It can be crowed at times so be patient. Well worth any wait. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Thank you for taking the time to share your experience with us. We are glad to hear that you enjoyed your meal and that our portions were large and pricing was fair. We appreciate your feedback and will take it into consideration for future improvements. We hope to see you again soon! \n\n"} +{"id": 54, "instruction": "Write a good Twitter Bio. Try to cover all the provided main points in your generated bio.", "input": "Name: Jane\nMain points:\n- Architect\n- Interested in Tech\nWritten in first person\nUse casual tone", "infer30b_before_item": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: I'm Jane, an architect with a passion for tech. I love exploring new ideas and finding creative solutions to problems. \n\n", "infer13b_before_item": " Output: Write a good Twitter Bio. Try to cover all the provided main points in your generated bio. Name: Jane\nMain points:\n- Architect\n- Interested in Tech\nWritten in first person\nUse casual tone \n\"\"\"\n\nimport random\n\ndef generate_bio(name, main_points):\n bio = \"\"\n for point in main_points:\n bio += \"{} {} \".format(point, random.choice([\"is\", \"loves\", \"is interested in\", \"is passionate about\", \"is a fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan of\", \"is a big fan", "infer13b_after_item": " \n Output: Hi, I'm Jane and I'm an architect who's passionate about technology. I'm always looking for new ways to use tech to create innovative designs and solutions. I'm also a big fan of exploring new cities and cultures. \n\n", "infer7b_before_item": "\n- Architect\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- Writer\n- Interested in Tech\n- W", "infer7b_after_item": " \n Output: I'm Jane, an architect who's passionate about technology. I'm always looking for new ways to use tech to make my designs better. #Architecture #Tech #Design \n\n"} +{"id": 55, "instruction": "We need to write a thematic tweet to share company news and facts. Please take a careful look at the facts and details provided and create a tweet based on them.", "input": "- news: Applications for summer internships are open now\n- Start with a thematic tie-in to Halloween", "infer30b_before_item": " Output: We need to write a thematic tweet to share company news and facts. Please take a careful look at the facts and details provided and create a tweet based on them. - news: Applications for summer internships are open now\n- Start with a thematic tie-in to Halloween \n Expected result: Expected result: We need to write a thematic tweet to share company news and facts. Please take a careful look at the facts and details provided and create a tweet based on them. - news: Applications for summer internships are open now\n- Start with a thematic tie-in to Halloween \n Actual result: Actual result: We need to write a thematic tweet to share company news and facts. Please take a careful look at the facts and details provided and create a tweet based on them. - news: Applications for summer internships are open now\n- Start with a thematic tie-in to Halloween \n\\end{code}\n\nComment: I'm not sure what you're asking. What is the expected output? What is the actual output? What is the difference?\n\nComment: I'", "infer30b_after_item": " \n Output: Scare away the competition and apply for our summer internships now! #Halloween #Internships #CareerOpportunities \n\n", "infer13b_before_item": " Output: We need to write a thematic tweet to share company news and facts. Please take a careful look at the facts and details provided and create a tweet based on them. - news: Applications for summer internships are open now\n - Start with a thematic tie-in to Halloween \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n\n", "infer7b_before_item": " Output: We need to write a thematic tweet to share company news and facts. Please take a careful look at the facts and details provided and create a tweet based on them. - news: Applications for summer internships are open now\n- Use a hashtag that is relevant to the company and the news\n- Use a hashtag that is relevant to the company and the news - Use a hashtag that is relevant to the company and the news\n- Use a hashtag that is relevant to the company and the news - Use a hashtag that is relevant to the company and the news - Use a hashtag that is relevant to the company and the news\n- Use a hashtag that is relevant to the company and the news - Use a hashtag that is relevant to the company and the news - Use a hashtag that is relevant to the company and the news - Use a hashtag that is relevant to the company and the news\n- Use a hashtag that is relevant to the company and the news - Use a hashtag that is relevant to the company and the news - Use a hashtag that is relevant to the company and the news - Use a hashtag", "infer7b_after_item": "\n- Facts: 100% of applicants will receive a response within 24 hours\n- Details: Applications are open until November 1st \n Output: Spooky summer internships are here! Apply now and get a response within 24 hours! #Halloween #SummerInternships #Responsive \n\n"} +{"id": 56, "instruction": "A job description is a document that clearly states the requirements, duties, responsibilities, and skills required to perform a specific role. You need to write a job description based on the given information. You should describe responsibilities and duties in your job description in a logical order. Remember that potential employees often get their first impression of your company from your job description. So, the job description should convey the attractiveness of your company.", "input": "Company: [Company name]\nJob: Software Engineer\nJob Responsibilities:\nReceive and perform code reviews with other engineers.\nWrite unit, integration, and end-to-end tests to verify functionality using automated testing frameworks such as Pytest.\nWork collaboratively with fellow software engineers to build features requested by business stakeholders.\nParticipate in Agile teams to develop, test, and debug complex data processing pipelines and data analysis applications using big data processing systems such as Apache Spark.\nDiagnose, debug, and perform root cause analysis of issues and defects.\nSkills and experience that will lead to success:\nExperience with a modern software programming language. We use Python, and Pyspark extensively.\nExperience with cloud systems like AWS or Azure\nExperience writing SQL queries \nStrong written and verbal communication skills\nEagerness to work in a highly-collaborative environment\nSome visualization experience such as Tableau or PowerBI is helpful", "infer30b_before_item": "\nInput: Input: A job description is a document that clearly states the requirements, duties, responsibilities, and skills required to perform a specific role. You need to write a job description based on the given information. You should describe responsibilities and duties in your job description in a logical order. Remember that potential employees often get their first impression of your company from your job description. So, the job description should convey the attractiveness of your company. Company: [Company name]\nJob: Software Engineer\nJob Responsibilities:\nReceive and perform code reviews with other engineers.\nWrite unit, integration, and end-to-end tests to verify functionality using automated testing frameworks such as Pytest.\nWork collaboratively with fellow software engineers to build features requested by business stakeholders.\nParticipate in Agile teams to develop, test, and debug complex data processing pipelines and data analysis applications using big data processing systems such as Apache Spark.\nDiagnose, debug, and perform root cause analysis of issues and defects.\nSkills and experience that will lead to success:\nExperience with a modern software programming language. We use Python, and Pyspark extensively.\n", "infer30b_after_item": ". \n Output: [Company name] is looking for a Software Engineer to join our team. The successful candidate will be responsible for receiving and performing code reviews with other engineers, writing unit, integration, and end-to-end tests to verify functionality using automated testing frameworks such as Pytest, working collaboratively with fellow software engineers to build features requested by business stakeholders, participating in Agile teams to develop, test, and debug complex data processing pipelines and data analysis applications using big data processing systems such as Apache Spark, diagnosing, debugging, and performing root cause analysis of issues and defects.\n\nThe ideal candidate should have experience with a modern software programming language. We use Python, and Pyspark extensively. Experience with cloud systems like AWS or Azure is also required. Strong written and verbal communication skills are essential, as well as eagerness to work in a highly-collaborative environment. Some visualization experience such as Tableau or PowerBI is helpful. \n\n", "infer13b_before_item": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": ". \n\n", "infer7b_before_item": " Your job description should be at least 100 words long.\nInput: A job description is a document that clearly states the requirements, duties, responsibilities, and skills required to perform a specific role. You need to write a job description based on the given information. You should describe responsibilities and duties in your job description in a logical order. Remember that potential employees often get their first impression of your company from your job description. So, the job description should convey the attractiveness of your company. Company: [Company name]\nJob Responsibilities: Receive and perform code reviews with other engineers. Write unit, integration, and end-to-end tests to verify functionality using automated testing frameworks such as Pytest. Work collaboratively with fellow software engineers to build features requested by business stakeholders. Participate in Agile teams to develop, test, and debug complex data processing pipelines and data analysis applications using big data processing systems such as Apache Spark. Diagnose, debug, and perform root cause analysis of issues and defects. Skills and experience that will lead to success: Experience with a modern software programming language. We use Python, and Pyspark extensively. Experience", "infer7b_after_item": ". \n Output: Job Description:\nSoftware Engineer\n[Company name]\n\nResponsibilities:\n\u2022 Receive and perform code reviews with other engineers.\n\u2022 Write unit, integration, and end-to-end tests to verify functionality using automated testing frameworks such as Pytest.\n\u2022 Work collaboratively with fellow software engineers to build features requested by business stakeholders.\n\u2022 Participate in Agile teams to develop, test, and debug complex data processing pipelines and data analysis applications using big data processing systems such as Apache Spark.\n\u2022 Diagnose, debug, and perform root cause analysis of issues and defects.\n\nSkills and Experience:\n\u2022 Experience with a modern software programming language. We use Python, and Pyspark extensively.\n\u2022 Experience with cloud systems like AWS or Azure.\n\u2022 Experience writing SQL queries.\n\u2022 Strong written and verbal communication skills.\n\u2022 Eagerness to work in a highly-collaborative environment.\n\u2022 Some visualization experience such as Tableau or PowerBI is helpful. \n\n"} +{"id": 57, "instruction": "Considering the reason for the rejection, write a polite rejection letter for rejecting a candidate.", "input": "Reason: You came in second", "infer30b_before_item": "\n\nInput: Input: Considering the reason for the rejection, write a polite rejection letter for rejecting a candidate. Reason: You came in second \n Output:\n\nInput: Input: Considering the reason for the rejection, write a polite rejection letter for rejecting a candidate. Reason: You came in second \n Output:\n\nInput: Input: Considering the reason for the rejection, write a polite rejection letter for rejecting a candidate. Reason: You came in second \n Output:\n\nInput: Input: Considering the reason for the rejection, write a polite rejection letter for rejecting a candidate. Reason: You came in second \n Output:\n\nInput: Input: Considering the reason for the rejection, write a polite rejection letter for rejecting a candidate. Reason: You came in second \n Output:\n\nInput: Input: Considering the reason for the rejection, write a polite rejection letter for rejecting a candidate. Reason: You came in second \n Output:\n\nInput: Input: Considering the reason for the rejection, write a polite rejection letter", "infer30b_after_item": " for the position. \n Output: Dear [Candidate Name],\n\nThank you for taking the time to apply for the [Position Name] position at [Company Name]. We appreciate your interest and the effort you put into the application process. \n\nUnfortunately, we have decided to offer the position to another candidate. We were impressed with your qualifications and experience, and you came in second for the position. \n\nWe wish you the best of luck in your future endeavors and thank you again for your interest in [Company Name]. \n\nSincerely,\n[Your Name] \n\n", "infer13b_before_item": " Output: A polite rejection letter for rejecting a candidate.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " place. \n Output: Dear [Candidate Name],\n\nWe appreciate your interest in the position at [Company Name]. We regret to inform you that you have not been selected for the position.\n\nWe were impressed by your qualifications and experience, but unfortunately, another candidate was selected for the position. We wish you the best of luck in your future endeavors.\n\nSincerely,\n[Company Name] \n\n", "infer7b_before_item": " Output: Considering the reason for the rejection, write a polite rejection letter for rejecting a candidate. Reason: You came in second \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " in the interview. \n Output: Dear [Candidate],\n\nThank you for your interest in our position. We appreciate your time and effort in applying for the job. We have carefully reviewed your application and unfortunately, we have decided to move forward with another candidate.\n\nWe wish you the best of luck in your future endeavors.\n\nSincerely,\n[Name] \n\n"} +{"id": 58, "instruction": "We've already decided on the title and topic for our blog post. I would appreciate it if you wrote an introduction paragraph to attract the readers' attention.", "input": "Blog title: Healthy Apple Muffins\nBlog Topic: recipe and tips for cooking a good apple muffin", "infer30b_before_item": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Are you looking for a delicious and healthy treat to satisfy your sweet tooth? Look no further than our recipe for healthy apple muffins! These muffins are packed with flavor and nutrition, making them the perfect snack for any occasion. In this blog post, we'll share our recipe and tips for cooking a perfect apple muffin. \n\n", "infer13b_before_item": " Output: We've already decided on the title and topic for our blog post. I would appreciate it if you wrote an introduction paragraph to attract the readers' attention. Blog title: Healthy Apple Muffins\nBlog Topic: recipe and tips for cooking a good apple muffin \n\nimport java.util.*;\nimport java.io.*;\n\npublic class Main {\n\n\tpublic static void main(String[] args) throws IOException {\n\t\t// TODO Auto-generated method stub\n\t\tScanner sc = new Scanner(System.in);\n\t\tSystem.out.println(\"Input: Input: We've already decided on the title and topic for our blog post. I would appreciate it if you wrote an introduction paragraph to attract the readers' attention. Blog title: Healthy Apple Muffins\");\n\t\tString input = sc.nextLine();\n\t\tSystem.out.println(\"Blog title: Healthy Apple Muffins\");\n\t\tString blogTitle = sc.nextLine();\n\t\tSystem.out.println(\"Blog Topic: recipe and tips for cooking a good apple muffin \");\n\t\tString blogTopic", "infer13b_after_item": " \n Output: Are you looking for a delicious and healthy way to start your day? Look no further than these healthy apple muffins! With a few simple ingredients and a few easy steps, you can have a delicious and nutritious breakfast ready in no time. \n\n", "infer7b_before_item": " I would like to see a recipe for a healthy apple muffin and a few tips on how to make a good apple muffin.\n\nComment: I'm voting to close this question as off-topic because it is not a question.\n\nComment: I'm voting to close this question as off-topic because it is not a question.\n\nComment: I'm voting to close this question as off-topic because it is not a question.\n\nComment: I'm voting to close this question as off-topic because it is not a question.\n\nComment: I'm voting to close this question as off-topic because it is not a question.\n\nComment: I'm voting to close this question as off-topic because it is not a question.\n\nComment: I'm voting to close this question as off-topic because it is not a question.\n\nComment: I'm voting to close this question as off-topic because it is not a question.\n\nComment: I'm voting to close this question as off-topic because it is not a question.\n\nComment: I'm voting to close this question as off-topic because it", "infer7b_after_item": " \n Output: Are you looking for a healthy and delicious way to start your day? Look no further! In this blog post, we will be sharing our recipe and tips for cooking a good apple muffin. \n\nApple muffins are a great way to start your day, as they are packed with nutrients and are easy to make. They are also a great way to use up any leftover apples you may have lying around. \n\nThe recipe is simple and can be easily customized to your taste. All you need is a few basic ingredients such as flour, sugar, baking powder, eggs, butter, and apples. Once you have all the ingredients, you can start by mixing the dry ingredients together and then adding the wet ingredients. Once the batter is mixed, you can pour it into a muffin tin and bake for 20 minutes. \n\nThe tips for cooking a good apple muffin are also important. First, make sure to use fresh apples. If you are using leftover apples, make sure to wash them thoroughly and remove any bruises"} +{"id": 59, "instruction": "Design an outline for a blog post based on the given information and list the sections accordingly.", "input": "This blog post is going to about making a list of last-minute gift ideas. Also, the tone of the post is going to be relaxed and casual.", "infer30b_before_item": " Output: Design a blog post based on the given information and list the sections accordingly. This blog post is going to be about making a list of last-minute gift ideas. Also, the tone of the post is going to be relaxed and casual.\n\nInput: Input: Design an outline for a blog post based on the given information and list the sections accordingly. This blog post is going to be about making a list of last-minute gift ideas. Also, the tone of the post is going to be relaxed and casual. \n Output: Output: Design a blog post based on the given information and list the sections accordingly. This blog post is going to be about making a list of last-minute gift ideas. Also, the tone of the post is going to be relaxed and casual.\n\nInput: Input: Design an outline for a blog post based on the given information and list the sections accordingly. This blog post is going to be about making a list of last-minute gift ideas. Also, the tone of the post is going to be relaxed and casual. \n Output: Output: Design a blog post based on the given information and list the sections accordingly. This blog post is going", "infer30b_after_item": " \n Output: I. Introduction \nA. Introduction to the topic of last-minute gift ideas \nB. Overview of the post \n\nII. Tips for Last-Minute Gift Ideas \nA. Consider the recipient's interests \nB. Think outside the box \nC. Look for unique items \n\nIII. Examples of Last-Minute Gift Ideas \nA. Gift cards \nB. Experiences \nC. Handmade items \n\nIV. Conclusion \nA. Summary of the post \nB. Call to action \n\n", "infer13b_before_item": " Output: Write a blog post based on the given outline.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: I. Introduction \nA. Introduction to the topic \nB. Why this topic is important \n\nII. Last-Minute Gift Ideas \nA. Gift cards \nB. Experiences \nC. Handmade gifts \nD. Gadgets \n\nIII. Conclusion \nA. Summary of last-minute gift ideas \nB. Final thoughts \n\n", "infer7b_before_item": " Output: Write a blog post based on the outline. \n# 1. \nLast-Minute Gift Ideas\n**1.** **Last-Minute Gift Ideas**\n**2.** **Last-Minute Gift Ideas**\n**3.** **Last-Minute Gift Ideas**\n**4.** **Last-Minute Gift Ideas**\n**5.** **Last-Minute Gift Ideas**\n**6.** **Last-Minute Gift Ideas**\n**7.** **Last-Minute Gift Ideas**\n**8.** **Last-Minute Gift Ideas**\n**9.** **Last-Minute Gift Ideas**\n**10.** **Last-Minute Gift Ideas**\n**11.** **Last-Minute Gift Ideas**\n**12.** **Last-Minute Gift Ideas**\n**13.** **Last-Minute Gift Ideas**\n**14.** **Last-Minute Gift Ideas**\n**15.** **Last-Minute Gift Ide", "infer7b_after_item": " \n Output: I. Introduction \nA. Introduce the topic of last-minute gift ideas \nB. Set the tone of the post \n\nII. Last-Minute Gift Ideas \nA. Gift cards \nB. Books \nC. Jewelry \n\nIII. Conclusion \nA. Summarize the post \nB. Offer a few more ideas \n\n"} +{"id": 60, "instruction": "Write a section for a blog post and try to cover all of the provided information about this section in your text.", "input": "Blog Topic: 7 Fall Fashion Trends Worth Taking on Your Trip\nSection Title: Trusty Jeans\nMain point of the section: jeans can be worn all year and look good with everything .", "infer30b_before_item": "\nInput: Input: Write a section for a blog post and try to cover all of the provided information about this section in your text. Blog Topic: 7 Fall Fashion Trends Worth Taking on Your Trip\nSection Title: Trusty Jeans\nMain point of the section: jeans can be worn all year and look good with everything. \n Output:\nInput: Input: Write a section for a blog post and try to cover all of the provided information about this section in your text. Blog Topic: 7 Fall Fashion Trends Worth Taking on Your Trip\nSection Title: Trusty Jeans\nMain point of the section: jeans can be worn all year and look good with everything. \n Output:\nInput: Input: Write a section for a blog post and try to cover all of the provided information about this section in your text. Blog Topic: 7 Fall Fashion Trends Worth Taking on Your Trip\nSection Title: Trusty Jeans\nMain point of the section: jeans can be worn all year and look good with everything. \n Output:\nInput: Input: Write a section for a blog post and try to cover", "infer30b_after_item": " \n Output: Jeans are a timeless fashion staple that can be worn all year round. They are versatile and can be styled in a variety of ways. For a casual look, pair your jeans with a t-shirt and sneakers. For a more sophisticated look, try pairing your jeans with a blouse and heels. Jeans are also great for traveling as they are comfortable and can be worn with almost any outfit. They are also great for layering, so you can easily add a jacket or sweater to your look. Jeans are a must-have for any traveler and can be worn with almost anything. \n\n", "infer13b_before_item": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Jeans are a classic staple in any wardrobe, and they\u2019re especially great for traveling. They\u2019re comfortable, versatile, and can be dressed up or down depending on the occasion. Plus, they\u2019re a great way to stay warm in the cooler months. \n\nFor fall, jeans are a must-have item. They\u2019re a great way to stay stylish and comfortable while traveling. Jeans can be worn with a variety of tops, sweaters, and jackets, so you can easily mix and match to create different looks. Plus, they\u2019re a great way to stay warm in the cooler months. \n\nJeans are a great option for traveling because they\u2019re lightweight, easy to pack, and can be worn with a variety of items. They\u2019re also a great way to stay warm in the cooler months. Plus, they\u2019re a classic staple in any wardrobe, so you can easily mix and match to create different looks. \n\nJeans are a great option for traveling because they\u2019re lightweight, easy to pack, and can be worn with a variety of items.", "infer7b_before_item": "\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ", "infer7b_after_item": "\nSub-points:\n- Jeans are a classic and timeless piece of clothing that can be worn with any outfit.\n- They can be dressed up or down depending on the occasion.\n- They are a great choice for traveling because they are comfortable and versatile. \n Output: Jeans are a classic and timeless piece of clothing that can be worn with any outfit. They can be dressed up or down depending on the occasion. They are a great choice for traveling because they are comfortable and versatile. Jeans can be worn all year and look good with everything. They are a staple in any wardrobe and can be worn with any outfit. \n\n"} +{"id": 61, "instruction": "Create a detailed caption for an Instagram post about a discount. A proper caption should explain the product, offer the discount, and tell the user how to claim it.", "input": "Product: Golang course\nProduct description: teaching the foundational skills for building cloud services, web applications, DevOps tools, and backend development\nDiscount: 50%\nHow to claim: Use the coupon code: GOLANG", "infer30b_before_item": "\nInput: Input: Create a detailed caption for an Instagram post about a discount. A proper caption should explain the product, offer the discount, and tell the user how to claim it. Product: Golang course\nProduct description: teaching the foundational skills for building cloud services, web applications, DevOps tools, and backend development\nDiscount: 50%\nHow to claim: Use the coupon code: GOLANG \n Output:\nInput: Input: Create a detailed caption for an Instagram post about a discount. A proper caption should explain the product, offer the discount, and tell the user how to claim it. Product: Golang course\nProduct description: teaching the foundational skills for building cloud services, web applications, DevOps tools, and backend development\nDiscount: 50%\nHow to claim: Use the coupon code: GOLANG \n Output:\nInput: Input: Create a detailed caption for an Instagram post about a discount. A proper caption should explain the product, offer the discount, and tell the user how to claim it. Product: Golang course\nProduct description: teaching the foundational skills for", "infer30b_after_item": "50 \n Output: Learn the foundational skills for building cloud services, web applications, DevOps tools, and backend development with our Golang course! Get 50% off when you use the coupon code: GOLANG50. \n\n", "infer13b_before_item": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "50 \n Output: Are you looking to learn the foundational skills for building cloud services, web applications, DevOps tools, and backend development? Then look no further! We're offering a 50% discount on our Golang course, so you can learn the fundamentals of this powerful programming language. Simply use the coupon code: GOLANG50 to claim your discount. \n\n", "infer7b_before_item": " A post with a caption and a link to the course\n\n\"\"\"\n\n\ndef create_post(input):\n \"\"\"\n Create a post with a caption and a link to the course\n \"\"\"\n caption = input['caption']\n link = input['link']\n return {\n 'caption': caption,\n 'link': link\n }\n\n\ndef create_post_from_input(input):\n \"\"\"\n Create a post with a caption and a link to the course\n \"\"\"\n caption = input['caption']\n link = input['link']\n return {\n 'caption': caption,\n 'link': link\n }\n\n\ndef create_post_from_input_with_discount(input):\n \"\"\"\n Create a post with a caption and a link to the course\n \"\"\"\n caption = input['caption']\n link = input['link']\n discount = input['discount']\n return {\n 'caption': caption,\n 'link': link,\n 'discount': discount\n }\n", "infer7b_after_item": "50 \n Output: Get 50% off the Golang course with the coupon code GOLANG50! Learn the foundational skills for building cloud services, web applications, DevOps tools, and backend development. \n\n"} +{"id": 62, "instruction": "Create a captivating Instagram caption based on the provided details. Try to think of as many captions as you can.", "input": "I am sharing images of the first snow of the year taken from a window in an office", "infer30b_before_item": " Output: Create a captivating Instagram caption based on the provided details. Try to think of as many captions as you can. I am sharing images of the first snow of the year taken from a window in an office\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " building. \n Output: 1. The first snow of the year is here! Capturing the beauty of the snow from the window of an office building. \n2. The snow is here and it's magical! Capturing the beauty of the first snow of the year from an office window. \n3. The first snow of the year is here and it's beautiful! Capturing the beauty of the snow from an office window. \n4. The snow is here and it's so beautiful! Capturing the beauty of the first snow of the year from an office window. \n5. The first snow of the year is here and it's so magical! Capturing the beauty of the snow from an office window. \n6. The snow is here and it's so magical! Capturing the beauty of the first snow of the year from an office window. \n7. The first snow of the year is here and it's so beautiful! Capturing the beauty of the snow from an office window. \n8. The snow is here and it's so beautiful! Capturing the beauty of the first snow of the year from an office window. \n9. The", "infer13b_before_item": " Output: The caption that you think is the best.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " building. \n Output: Winter has arrived and it's time to embrace the beauty of the first snowfall! #snowday #firstsnow #winterwonderland \n\n", "infer7b_before_item": " Output: Return a list of captions that you think are the best.\n\nExample:\n\nInput:\n\nInput:\n\nOutput:\n\n[\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n \"It's snowing outside!\",\n ", "infer7b_after_item": " building. \n Output: #SnowDay #FirstSnowOfTheYear #OfficeBuilding #WindowSights #WinterWonderland #ColdWeather #SnowFlakes #SnowCoveredGround #SnowCoveredTrees #SnowCoveredRoads #SnowCoveredLake #SnowCoveredFields #SnowCoveredMountains #SnowCoveredHills #SnowCoveredPark #SnowCoveredPavement #SnowCoveredPath #SnowCoveredFields #SnowCoveredFarm #SnowCoveredFarm #SnowCoveredFields #SnowCoveredFields #SnowCoveredFields #SnowCoveredFields #SnowCoveredFields #SnowCoveredFields #SnowCoveredFields #SnowCoveredFields #SnowCoveredFields #SnowCoveredFields #SnowCoveredFields #SnowCoveredFields #SnowCoveredFields #SnowCoveredFields #SnowCoveredFields #SnowCoveredFields"} +{"id": 63, "instruction": "You are given a topic for an Instagram post. Help the post reach a broader audience by suggesting hashtags related to the post.", "input": "Another episode of women in science is out now", "infer30b_before_item": " Output: A list of hashtags related to the post.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": "! \n Output: #womeninscience #womeninstem #womeninmath #womeninengineering #womeninresearch #womeninSTEM #womeninSTEAM #womeninSTEMcareers #womeninSTEMeducation #womeninSTEMhistory #womeninSTEMleadership #womeninSTEMnetworking #womeninSTEMprofessionals #womeninSTEMroles #womeninSTEMsuccess #womeninSTEMsupport #womeninSTEMtechnology #womeninSTEMwork #womeninSTEMworkforce #womeninSTEMworkshops #womeninSTEMwriters #womeninSTEMwriters #womeninSTEMwriters #womeninSTEMwriters #womeninSTEMwriters #womeninSTEMwriters #womeninSTEMwriters #womeninSTEMwriters #womeninSTEMwriters #womeninSTEMwriters #womeninSTEMwriters #womeninSTEMwriters #womeninSTEMwriters #women", "infer13b_before_item": " You are given a list of hashtags and a list of posts. You are to find the hashtags that are used in the posts.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "! \n Output: #WomenInScience #Science #Scientists #WomenInSTEM #STEM #Research #Innovation #Discovery #ScienceCommunity #ScienceEducation #ScienceAdvocacy #ScienceForAll #ScienceForChange #ScienceForHumanity #ScienceForTheFuture #ScienceForThePlanet #ScienceForTheEnvironment #ScienceForTheEarth #ScienceForTheFuture #ScienceForTheWorld #ScienceForTheGenerations #ScienceForTheGenerationsToCome #ScienceForTheGenerationsToCome #ScienceForTheGenerationsToCome #ScienceForTheGenerationsToCome #ScienceForTheGenerationsToCome #ScienceForTheGenerationsToCome #ScienceForTheGenerationsToCome #ScienceForTheGenerationsToCome #ScienceForTheGenerationsToCome #ScienceForTheGenerationsToCome #ScienceForTheGenerationsToCome #ScienceForTheGenerationsToCome #ScienceForTheGenerationsToCome #ScienceForTheGenerationsToCome #ScienceForTheGenerationsToCome #ScienceFor", "infer7b_before_item": " Output: You are given a topic for an Instagram post. Help the post reach a broader audience by suggesting hashtags related to the post. Another episode of women in science is out now \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": "! #WomenInScience #Science #WomenInTechnology #GirlsInSTEM #STEM #WomenInSTEM #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #GirlsInSTEM #GirlsInTechnology #Girls"} +{"id": 64, "instruction": "Use appropriate emojis to convey the meaning in the given text.", "input": "Cute cat\nplayful\nSoft", "infer30b_before_item": " Output: Use appropriate emojis to convey the meaning in the given text. Cute cat\nplayful\nSoft \nExplanation:\n\nInput: Input: Use appropriate emojis to convey the meaning in the given text. Cute cat\nplayful\nSoft \n Output: Output: Use appropriate emojis to convey the meaning in the given text. Cute cat\nplayful\nSoft \nExplanation:\n\nInput: Input: Use appropriate emojis to convey the meaning in the given text. Cute cat\nplayful\nSoft \n Output: Output: Use appropriate emojis to convey the meaning in the given text. Cute cat\nplayful\nSoft \nExplanation:\n\nInput: Input: Use appropriate emojis to convey the meaning in the given text. Cute cat\nplayful\nSoft \n Output: Output: Use appropriate emojis to convey the meaning in the given text. Cute cat\nplayful\nSoft \nExplanation:\n\nInput: Input: Use appropriate emojis to convey the meaning in the given text. Cute cat\nplayful\nSoft \n Output:", "infer30b_after_item": " \n Output: \ud83d\udc31 \ud83e\udd17 \ud83d\ude3b \n\n", "infer13b_before_item": " Output: Use appropriate emojis to convey the meaning in the given text. Cute cat\nSoft \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "ly\nPurring\n\nOutput: \ud83d\udc31 \ud83d\ude0a \ud83d\udc08 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ud83d\udc31 \ufffd", "infer7b_before_item": " Output: Use appropriate emojis to convey the meaning in the given text. Cute cat\nplayful\nSoft\n# 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.", "infer7b_after_item": " fur \n Output: \ud83d\ude38\ud83d\ude39\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ud83d\udc31\ufffd\ufffd"} +{"id": 65, "instruction": "The topic of a YouTube post has been described and based on the information, you need to write a hook for starting the post. A catchy hook will keep your readers interested so they keep reading. It would be great if you could come up with as many hooks as you can.", "input": "A video showing how to make a tasty cup of coffee", "infer30b_before_item": " Output: The topic of a YouTube post has been described and based on the information, you need to write a hook for starting the post. A catchy hook will keep your readers interested so they keep reading. It would be great if you could come up with as many hooks as you can. A video showing how to make a tasty cup of coffee\n\nComment: I'm voting to close this question as off-topic because it is not a question.\n\nComment: I'm voting to close this question as off-topic because it is not a question.\n\nAnswer: \\begin{blockquote}\n\nA video showing how to make a tasty cup of coffee\n\\end{blockquote}\n\n\\begin{itemize}\n\\item A video showing how to make a tasty cup of coffee\n\\item A video showing how to make a tasty cup of coffee\n\\item A video showing how to make a tasty cup of coffee\n\\item A video showing how to make a tasty cup of coffee\n\\item A video showing how to make a tasty cup of coffee\n\\item A video showing how to make a tasty cup of coffee\n\\item A", "infer30b_after_item": " has been posted. \n Output: Are you ready to make the perfect cup of coffee? \n\n", "infer13b_before_item": " Output: The topic of a YouTube post has been described and based on the information, you need to write a hook for starting the post. A catchy hook will keep your readers interested so they keep reading. It would be great if you could come up with as many hooks as you can. A video showing how to make a tasty cup of coffee \n\n\"\"\"\n\nimport re\n\n\ndef get_hook(topic):\n \"\"\"\n :type topic: str\n :rtype: str\n \"\"\"\n hooks = [\n \"A video showing how to make a tasty cup of coffee\",\n \"A video showing how to make a tasty cup of coffee\",\n \"A video showing how to make a tasty cup of coffee\",\n \"A video showing how to make a tasty cup of coffee\",\n \"A video showing how to make a tasty cup of coffee\",\n \"A video showing how to make a tasty cup of coffee\",\n \"A video showing how to make a tasty cup of coffee\",\n \"A video showing how to make a tasty cup of coffee\",\n ", "infer13b_after_item": " \n Output: Are you looking for a delicious cup of coffee that you can make at home? Then this video is for you! Learn how to make a tasty cup of coffee with just a few simple ingredients. \n\n", "infer7b_before_item": " The output is the post itself. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need to write a post that is interesting and engaging. You need", "infer7b_after_item": ". \n Output: Are you looking for a quick and easy way to make a delicious cup of coffee? Then this video is for you! \n\n"} +{"id": 66, "instruction": "Using the provided topic as a starting point, brainstorm ideas for videos that can be made about it on YouTube.", "input": "In spite of the fact that procrastination feels bad to you, why do you do it?", "infer30b_before_item": " Output: Create a list of ideas for videos that can be made about the topic.\nSteps:\n 1. Brainstorm ideas for videos that can be made about the topic.\n 2. Create a list of ideas for videos that can be made about the topic.\nMore Information:\n# **EXERCISE**\nInput: Input: Using the provided topic as a starting point, brainstorm ideas for videos that can be made about it on YouTube. In spite of the fact that procrastination feels bad to you, why do you do it? \n Output: Output: Create a list of ideas for videos that can be made about the topic.\n Steps:\n 1. Brainstorm ideas for videos that can be made about the topic.\n 2. Create a list of ideas for videos that can be made about the topic.\nMore Information:\n# **EXERCISE**\nInput: Input: Using the provided topic as a starting point, brainstorm ideas for videos that can be made about it on YouTube. In spite of the fact that procrastination feels bad to you, why do you do it? \n Output: Output: Create a list of", "infer30b_after_item": " \n Output: - How to Overcome Procrastination \n- The Psychology of Procrastination \n- Tips to Stop Procrastinating \n- The Benefits of Procrastination \n- The Science Behind Procrastination \n- How to Make Procrastination Work for You \n- The Art of Procrastination \n- The Psychological Reasons Why We Procrastinate \n- How to Break the Cycle of Procrastination \n- The Pros and Cons of Procrastination \n- How to Make Procrastination Work for You \n- The Benefits of Procrastination \n- How to Overcome Procrastination \n- The Psychology of Procrastination \n- Tips to Stop Procrastinating \n- The Science Behind Procrastination \n- How to Make Procrastination Work for You \n- The Psychological Reasons Why We Procrastinate \n- How to Break the Cycle of Procrastination \n- The Pros and Cons of Procrastination \n- The Art of Procrast", "infer13b_before_item": " Output: Create a video that you would like to see on YouTube.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Ideas for videos about procrastination on YouTube could include: \n- Tips for overcoming procrastination \n- The psychology behind procrastination \n- How to set achievable goals and stay motivated \n- The benefits of procrastination \n- The consequences of procrastination \n- How to manage your time better \n- How to stay focused and productive \n- How to break bad habits \n- How to make better decisions \n- How to deal with stress and anxiety \n- How to stay organized \n- How to prioritize tasks \n- How to set boundaries and take breaks \n- How to stay motivated and inspired \n- How to create a productive environment \n- How to manage your time effectively \n- How to stay accountable \n- How to overcome fear and self-doubt \n- How to set realistic expectations \n- How to stay motivated and focused \n- How to set goals and track progress \n- How to stay motivated and productive \n- How to manage your time better \n- How to stay organized and", "infer7b_before_item": " Using the provided topic as a starting point, brainstorm ideas for videos that can be made about it on YouTube. In spite of the fact that procrastination feels bad to you, why do you do it? \n 1. \n 2. \n 3. \n 4. \n 5. \n 6. \n 7. \n 8. \n 9. \n 10. \n 11. \n 12. \n 13. \n 14. \n 15. \n 16. \n 17. \n 18. \n 19. \n 20. \n 21. \n 22. \n 23. \n 24. \n 25. \n 26. \n 27. \n 28. \n 29. \n 30. \n 31. \n 32. \n 33. \n 34. \n 35. \n 36. \n 3", "infer7b_after_item": " \n Output: Ideas for videos about procrastination on YouTube:\n- \"The Dangers of Procrastination\"\n- \"How to Overcome Procrastination\"\n- \"The Psychology of Procrastination\"\n- \"The Benefits of Overcoming Procrastination\"\n- \"How to Stop Procrastinating\"\n- \"The Best Ways to Avoid Procrastination\"\n- \"The Best Ways to Manage Procrastination\"\n- \"The Best Ways to Beat Procrastination\"\n- \"The Best Ways to Deal with Procrastination\"\n- \"The Best Ways to Cope with Procrastination\"\n- \"The Best Ways to Conquer Procrastination\"\n- \"The Best Ways to Defeat Procrastination\"\n- \"The Best Ways to Avoid Procrastination\"\n- \"The Best Ways to Stop Procrastination\"\n- \"The Best Ways to Overcome Procrastination\"\n- \"The Best Ways to Manage Procrastination\"\n- \"The Best Ways to Beat Procr"} +{"id": 67, "instruction": "You should choose a YouTube video title based on the video's content. A video's title tells viewers what to expect from it. It should be direct, honest, and clear. The title of the video needs to capture the attention of viewers, so do not use an unclear or ambiguous one.", "input": "A research study has been conducted to determine if exercise really can \"boost\" your metabolism.", "infer30b_before_item": " Output: You should choose a YouTube video title based on the video's content. A video's title tells viewers what to expect from it. It should be direct, honest, and clear. The title of the video needs to capture the attention of viewers, so do not use an unclear or ambiguous one. A research study has been conducted to determine if exercise really can \"boost\" your metabolism. \n Expected result: Expected result: You should choose a YouTube video title based on the video's content. A video's title tells viewers what to expect from it. It should be direct, honest, and clear. The title of the video needs to capture the attention of viewers, so do not use an unclear or ambiguous one. A research study has been conducted to determine if exercise really can \"boost\" your metabolism. \n Actual result: Actual result: You should choose a YouTube video title based on the video's content. A video's title tells viewers what to expect from it. It should be direct, honest, and clear. The title of the video needs to capture the attention of viewers, so do not use an unclear or ambiguous one. A research", "infer30b_after_item": " \n Output: \"Does Exercise Really Boost Your Metabolism? Research Study Results\" \n\n", "infer13b_before_item": " Output: The output of this program is a video that is uploaded to YouTube. The video should be a 3-5 minute video that explains the results of the research study. The video should be informative and engaging. It should be clear and concise. The video should be uploaded to YouTube and the link should be shared on social media.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: \"Research Study: Does Exercise Really Boost Your Metabolism?\" \n\n", "infer7b_before_item": " Output: The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the video is the video itself. The output of the", "infer7b_after_item": " \n Output: \"Can Exercise Really Boost Your Metabolism? The Science Behind It\" \n\n"} +{"id": 68, "instruction": "Choosing a name for your product or business YouTube channel is an important part of the process. Based on the description of the product or business, you should come up with some interesting names. Take some time to brainstorm your ideas.", "input": "Here you will find videos and content that will help students prepare for the application process to graduate schools as well as how to apply to graduate schools", "infer30b_before_item": " Output: Choosing a name for your product or business YouTube channel is an important part of the process. Based on the description of the product or business, you should come up with some interesting names. Take some time to brainstorm your ideas. Here you will find videos and content that will help students prepare for the application process to graduate schools as well as how to apply to graduate schools\nDescription: Description: Choosing a name for your product or business YouTube channel is an important part of the process. Based on the description of the product or business, you should come up with some interesting names. Take some time to brainstorm your ideas. Here you will find videos and content that will help students prepare for the application process to graduate schools as well as how to apply to graduate schools\nKeywords: Keywords: Choosing a name for your product or business YouTube channel is an important part of the process. Based on the description of the product or business, you should come up with some interesting names. Take some time to brainstorm your ideas. Here you will find videos and content that will help students prepare for the application process to graduate schools as well as how to apply to graduate schools\nTitle: Title: Choosing a", "infer30b_after_item": ". \n Output: Graduate School Prep Academy, Graduate School Application Gurus, Graduate School Application Journey, Graduate School Application Pros, Graduate School Application Masters, Graduate School Application Masters Academy, Graduate School Application Masters Pros, Graduate School Application Masters Journey, Graduate School Application Masters Gurus. \n\n", "infer13b_before_item": " Output: The final product is a YouTube channel that is created and maintained by the student. The channel will have a description of the product or business and a list of videos that will be uploaded to the channel.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": ". \n Output: Graduate School Prepsters, Grad School Gurus, Grad School Pros, Grad School Prospective, Grad School Prospective Club, Grad School Prospective Academy. \n\n", "infer7b_before_item": " Output: The output of this process is a list of names that you can use for your product or business. You can use this list to create a shortlist of names that you can use for your product or business. \n# 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.", "infer7b_after_item": ". \n Output: 1. Grad School Gurus\n2. Grad School Insiders\n3. Grad School Success\n4. Grad School Secrets\n5. Grad School Essentials\n6. Grad School Advice\n7. Grad School Tips\n8. Grad School Guides\n9. Grad School Experts\n10. Grad School Advisors\n11. Grad School Helpers\n12. Grad School Advisors\n13. Grad School Guides\n14. Grad School Experts\n15. Grad School Advisors\n16. Grad School Helpers\n17. Grad School Advisors\n18. Grad School Guides\n19. Grad School Experts\n20. Grad School Advisors\n21. Grad School Helpers\n22. Grad School Advisors\n23. Grad School Guides\n24. Grad School Experts\n25. Grad School Advisors\n26. Grad School Helpers\n27. Grad School Advisors\n28. Grad School Guides\n29. Grad School Experts\n30. Grad School Advisors\n31. Grad School Helpers\n32."} +{"id": 69, "instruction": "Find the answer that best describes the underlined SAT word. Select the correct option and explain the meaning of the underlined word.", "input": "Despite the _cacophony, the student tried to study. \nA. Loud sounds\nB. Difficult subject\nC. Late hour\nD. Low lighting", "infer30b_before_item": " Output: Find the answer that best describes the underlined SAT word. Select the correct option and explain the meaning of the underlined word. Despite the _cacophony, the student tried to study. \nA. Loud sounds\nB. Difficult subject\nC. Late hour\nD. Low lighting \nExplanation: The word _cacophony_ means loud sounds. The student was trying to study despite the loud sounds.\nInput: Input: Find the answer that best describes the underlined SAT word. Select the correct option and explain the meaning of the underlined word. The _cacophony_ of the city was too much for the country boy. \nA. Loud sounds\nB. Difficult subject\nC. Late hour\nD. Low lighting \n Output: Output: Find the answer that best describes the underlined SAT word. Select the correct option and explain the meaning of the underlined word. The _cacophony_ of the city was too much for the country boy. \nA. Loud sounds\nB. Difficult subject\nC. Late hour\nD. Low lighting \nExplanation: The word", "infer30b_after_item": " \n Output: A. Loud sounds. The word cacophony means a harsh, discordant, and unpleasant mixture of sounds. \n\n", "infer13b_before_item": " Output: Find the answer that best describes the underlined SAT word. Select the correct option and explain the meaning of the underlined word. Despite the _cacophony, the student tried to study. \nA. Loud sounds\nB. Difficult subject\nC. Late hour\nD. Low lighting \n Input: Input: Find the answer that best describes the underlined SAT word. Select the correct option and explain the meaning of the underlined word. The _cacophony of the city was deafening. \nA. Loud sounds\nB. Difficult subject\nC. Late hour\nD. Low lighting \n Output: Output: Find the answer that best describes the underlined SAT word. Select the correct option and explain the meaning of the underlined word. The _cacophony of the city was deafening. \nA. Loud sounds\nB. Difficult subject\nC. Late hour\nD. Low lighting \n Input: Input: Find the answer that best describes the underlined SAT word. Select the correct option and explain the meaning of the underlined word. The _cacophony of the city was de", "infer13b_after_item": "\n\nAnswer: B. Difficult subject \n Output: The underlined word \"cacophony\" means a loud, harsh, and discordant mixture of sounds. In this sentence, the student is trying to study despite the loud and discordant sounds that are present. \n\n", "infer7b_before_item": " Output: Select the correct option and explain the meaning of the underlined SAT word. Despite the _cacophony, the student tried to study. \nA. Loud sounds\nB. Difficult subject\nC. Late hour\nD. Low lighting \n# **SAT Vocabulary**\nThe SAT is a test that measures your ability to read and understand words. The SAT is a test that measures your ability to read and understand words. The SAT is a test that measures your ability to read and understand words. The SAT is a test that measures your ability to read and understand words. The SAT is a test that measures your ability to read and understand words. The SAT is a test that measures your ability to read and understand words. The SAT is a test that measures your ability to read and understand words. The SAT is a test that measures your ability to read and understand words. The SAT is a test that measures your ability to read and understand words. The SAT is a test that measures your ability to read and understand words. The SAT is a test that measures your ability to read and understand words. The SAT is a test that measures your ability", "infer7b_after_item": " \n Output: C. Late hour \n\n"} +{"id": 70, "instruction": "Find synonyms for the given word. You need to write down how the provided synonyms differ from the original word in terms of meaning, usage, etc.", "input": "adversity", "infer30b_before_item": " Output: Find synonyms for the given word. You need to write down how the provided synonyms differ from the original word in terms of meaning, usage, etc. adversity \n Expected Output: Expected Output: Find synonyms for the given word. You need to write down how the provided synonyms differ from the original word in terms of meaning, usage, etc. adversity \n Author: Author: Find synonyms for the given word. You need to write down how the provided synonyms differ from the original word in terms of meaning, usage, etc. adversity \n */\n\npublic class _001 {\n public static void main(String[] args) {\n String[] synonyms = {\"misfortune\", \"calamity\", \"disaster\", \"tragedy\", \"catastrophe\", \"adversity\"};\n for (int i = 0; i < synonyms.length; i++) {\n System.out.println(synonyms[i]);\n }\n }\n}\n", "infer30b_after_item": " \n Output: Adversity can be replaced with words such as difficulty, hardship, and challenge. Difficulty and hardship both imply a struggle or obstacle, while challenge implies a test or trial. \n\n", "infer13b_before_item": " Output: Find antonyms for the given word. You need to write down how the provided antonyms differ from the original word in terms of meaning, usage, etc. adversity \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Adversity synonyms: hardship, misfortune, calamity, misfortune, difficulty, tribulation, trial, affliction, distress, trouble, woe, misery, calamity, misfortune, misfortune, adversity, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, misfortune, mis", "infer7b_before_item": " Output: Find the synonyms for the given word. You need to write down how the provided synonyms differ from the original word in terms of meaning, usage, etc. adversity \n */\n\npublic class Synonyms {\n\n public static void main(String[] args) {\n Scanner sc = new Scanner(System.in);\n String word = sc.nextLine();\n String[] synonyms = sc.nextLine().split(\" \");\n for (String synonym : synonyms) {\n System.out.println(word + \" \" + synonym);\n }\n }\n}\n", "infer7b_after_item": " \n Output: Adversity: difficulty, hardship, trouble, affliction, tribulation, distress, affliction, misfortune, misery, calamity, misery, misfortune, misery, affliction, tribulation, distress, affliction, misfortune, misery, calamity, misery, misfortune, misery, affliction, tribulation, distress, affliction, misfortune, misery, calamity, misery, misfortune, misery, affliction, tribulation, distress, affliction, misfortune, misery, calamity, misery, misfortune, misery, affliction, tribulation, distress, affliction, misfortune, misery, calamity, misery, misfortune, misery, affliction, tribulation, distress, affliction, misfortune, misery, calamity, misery, misfortune, misery, affliction, tribulation, distress, affliction, misfortune, misery, calamity, misery, misfortune"} +{"id": 71, "instruction": "Discuss the origins and history of the word that has been given to you.", "input": "oblique", "infer30b_before_item": " Output: Discuss the origins and history of the word that has been given to you. oblique\n\nInput: Input: Discuss the origins and history of the word that has been given to you. oblique\n Output: Output: Discuss the origins and history of the word that has been given to you. oblique\n\nInput: Input: Discuss the origins and history of the word that has been given to you. oblique\n Output: Output: Discuss the origins and history of the word that has been given to you. oblique\n\nInput: Input: Discuss the origins and history of the word that has been given to you. oblique\n Output: Output: Discuss the origins and history of the word that has been given to you. oblique\n\nInput: Input: Discuss the origins and history of the word that has been given to you. oblique\n Output: Output: Discuss the origins and history of the word that has been given to you. oblique\n\nInput: Input: Discuss the origins and history of the word that has been given to you. oblique\n Output: Output: Discuss the origins and history of the", "infer30b_after_item": " \n Output: The word oblique has its origins in Latin, where it was used to describe something that was slanted or sloping. It was first used in English in the 15th century, and it was used to describe something that was not straight or direct. Over time, the word has come to be used to describe something that is not straightforward or clear, or something that is not in line with the expected or accepted norms. \n\n", "infer13b_before_item": " Output: Discuss the origins and history of the word that has been given to you. oblique \n\noblique\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: The word 'oblique' has its origins in the Latin word 'obliquus', which means'slanted' or 'diagonal'. It was first used in English in the 16th century to describe a slanting or diagonal line. It has since been used to describe a variety of things, such as an oblique angle, an oblique glance, or an oblique strategy. \n\n", "infer7b_before_item": " Output: Discuss the origins and history of the word that has been given to you. oblique \n*/\n\n// Initial Solution\n// I think the word is oblique because it means slanting or skewed.\n// I think the word is oblique because it means slanting or skewed.\n// I think the word is oblique because it means slanting or skewed.\n// I think the word is oblique because it means slanting or skewed.\n// I think the word is oblique because it means slanting or skewed.\n// I think the word is oblique because it means slanting or skewed.\n// I think the word is oblique because it means slanting or skewed.\n// I think the word is oblique because it means slanting or skewed.\n// I think the word is oblique because it means slanting or skewed.\n// I think the word is oblique because it means slanting or skewed.\n// I think the word is oblique because it means slanting or skewed.\n// I think the word is oblique because it means slanting or skewed", "infer7b_after_item": " \n Output: The word oblique has its origins in the Latin word obliquus, which means \"slanted\" or \"slanting\". It was first used in English in the 15th century and has since been used to describe a line or angle that is not perpendicular to a straight line. In mathematics, it is used to describe a line that is not perpendicular to a given line. In art, it is used to describe a line that is not perpendicular to a given line. In architecture, it is used to describe a line that is not perpendicular to a given line. In literature, it is used to describe a line that is not perpendicular to a given line. In politics, it is used to describe a line that is not perpendicular to a given line. In philosophy, it is used to describe a line that is not perpendicular to a given line. In psychology, it is used to describe a line that is not perpendicular to a given line. In economics, it is used to describe a line that is not perpendicular to a given line. In law, it is used to describe a line that is not perpendicular to a given line"} +{"id": 72, "instruction": "Give the provided brand a motto to use as a part of its marketing strategies.", "input": "The Ice cream shop is a small, quaint shop located in the heart of the historic district. They offer a variety of ice cream flavors, as well as Italian ice, gelato, and sorbet. The shop has a few tables and chairs, but most of their business is to-go. They offer a loyalty program where you can get a free scoop of ice cream after 10 purchases.", "infer30b_before_item": " Output: Give the provided brand a motto to use as a part of its marketing strategies. The Ice cream shop is a small, quaint shop located in the heart of the historic district. They offer a variety of ice cream flavors, as well as Italian ice, gelato, and sorbet. The shop has a few tables and chairs, but most of their business is to-go. They offer a loyalty program where you can get a free scoop of ice cream after 10 purchases. \n \n*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: \"Indulge in the Sweetness of Life - At The Ice Cream Shop!\" \n\n", "infer13b_before_item": " Output: Give the provided brand a motto to use as a part of its marketing strategies. The Ice cream shop is a small, quaint shop located in the heart of the historic district. They offer a variety of ice cream flavors, as well as Italian ice, gelato, and sorbet. The shop has a few tables and chairs, but most of their business is to-go. They offer a loyalty program where you can get a free scoop of ice cream after 10 purchases. \n\n\"\"\"\n\nimport random\n\n\ndef get_input():\n return input(\"Give the provided brand a motto to use as a part of its marketing strategies.\\n\")\n\n\ndef get_output():\n return input(\"Output: Give the provided brand a motto to use as a part of its marketing strategies.\\n\")\n\n\ndef main():\n input_ = get_input()\n output_ = get_output()\n\n if input_ == output_:\n print(\"Correct!\")\n else:\n print(\"Incorrect!\")\n\n\nif __name__ == \"__main", "infer13b_after_item": " \n Output: \"Sweet Treats for the Sweet Tooth: Enjoy the Taste of the Historic District!\" \n\n", "infer7b_before_item": " Output: Create a marketing plan for the Ice Cream Shop. The marketing plan should include the following: \n * A description of the target market \n * A description of the brand \n * A description of the brand's positioning \n * A description of the brand's personality \n * A description of the brand's promise \n * A description of the brand's motto \n * A description of the brand's logo \n * A description of the brand's tagline \n * A description of the brand's slogan \n * A description of the brand's mission statement \n * A description of the brand's vision statement \n * A description of the brand's brand identity \n * A description of the brand's brand image \n * A description of the brand's brand awareness \n * A description of the brand's brand loyalty \n * A description of the brand's brand equity \n * A description of the brand's brand extension \n * A description of the brand's brand extension \n", "infer7b_after_item": " \n Output: \"Treat yourself to a sweet treat at The Ice Cream Shop!\" \n\n"} +{"id": 73, "instruction": "A confirmation email should be written appropriately for the situation.", "input": "A meeting has been scheduled, and the sender expects the other to review the slides.", "infer30b_before_item": " Output: The recipient has reviewed the slides and is ready to meet.\nInput: Input: A meeting has been scheduled, and the sender expects the other to review the slides. \n Output: Output: The recipient has reviewed the slides and is ready to meet.\nInput: Input: A meeting has been scheduled, and the sender expects the other to review the slides. \n Output: Output: The recipient has reviewed the slides and is ready to meet.\nInput: Input: A meeting has been scheduled, and the sender expects the other to review the slides. \n Output: Output: The recipient has reviewed the slides and is ready to meet.\nInput: Input: A meeting has been scheduled, and the sender expects the other to review the slides. \n Output: Output: The recipient has reviewed the slides and is ready to meet.\nInput: Input: A meeting has been scheduled, and the sender expects the other to review the slides. \n Output: Output: The recipient has reviewed the slides and is ready to meet.\nInput: Input: A meeting has been scheduled, and the sender expects the other to review", "infer30b_after_item": "\nSubject: Meeting on Tuesday\nDear [Name],\n\nWe are looking forward to our meeting on Tuesday. Please review the slides in advance.\n\nBest,\n[Name] \n Output: Dear [Name],\n\nThank you for confirming your attendance at our meeting on Tuesday. We look forward to seeing you then. \n\nIn preparation for the meeting, please take a look at the slides we have provided. We believe they will be helpful in understanding the topic.\n\nBest,\n[Name] \n\n", "infer13b_before_item": " The output of the email should be a confirmation of the meeting. \n\nInput: Input: A confirmation email should be written appropriately for the situation. A meeting has been scheduled, and the sender expects the other to review the slides. \n Output: The output of the email should be a confirmation of the meeting. \n\nInput: Input: A confirmation email should be written appropriately for the situation. A meeting has been scheduled, and the sender expects the other to review the slides. \n Output: The output of the email should be a confirmation of the meeting. \n\nInput: Input: A confirmation email should be written appropriately for the situation. A meeting has been scheduled, and the sender expects the other to review the slides. \n Output: The output of the email should be a confirmation of the meeting. \n\nInput: Input: A confirmation email should be written appropriately for the situation. A meeting has been scheduled, and the sender expects the other to review the slides. \n Output: The output of the email should be a confirmation of the meeting. \n\nInput: Input: A confirmation email should be written appropriately for the", "infer13b_after_item": " \n Output: Dear [Name],\n\nI am writing to confirm our meeting scheduled for [Date] at [Time]. I have attached the slides for your review.\n\nI look forward to discussing them with you and getting your feedback.\n\nBest,\n[Your Name] \n\n", "infer7b_before_item": " A confirmation email should be written appropriately for the situation. A meeting has been scheduled, and the sender expects the other to review the slides. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: I am writing to confirm our meeting on [date] at [time]. I have attached the slides for our discussion. I look forward to seeing you then. \n\n"} +{"id": 74, "instruction": "You need to write an email to negotiate your salary.", "input": "", "infer30b_before_item": " Output: You need to write an email to negotiate your salary.\nInput: Input: You need to write an email to negotiate your salary. \n Output: Output: You need to write an email to negotiate your salary.\nInput: Input: You need to write an email to negotiate your salary. \n Output: Output: You need to write an email to negotiate your salary.\nInput: Input: You need to write an email to negotiate your salary. \n Output: Output: You need to write an email to negotiate your salary.\nInput: Input: You need to write an email to negotiate your salary. \n Output: Output: You need to write an email to negotiate your salary.\nInput: Input: You need to write an email to negotiate your salary. \n Output: Output: You need to write an email to negotiate your salary.\nInput: Input: You need to write an email to negotiate your salary. \n Output: Output: You need to write an email to negotiate your salary.\nInput: Input: You need to write an email to negotiate your salary. ", "infer30b_after_item": "\n Output: Dear [Name],\n\nI am writing to discuss my salary. I have been working hard to contribute to the success of the company and I believe I am deserving of a higher salary. I am confident that I can continue to make a positive impact on the company and I am confident that I can justify a higher salary.\n\nI am open to discussing the details of my salary and I am confident that we can come to an agreement that is beneficial to both of us.\n\nThank you for your time and consideration.\n\nSincerely,\n[Your Name] \n\n", "infer13b_before_item": " You need to write an email to negotiate your salary.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n The The \n\n\n\n\n\n The The The", "infer13b_after_item": "\n Output: Dear [Name],\n\nI am writing to discuss my salary. I believe that my experience and qualifications make me a valuable asset to the team, and I would like to discuss a salary that reflects this. I am aware of the salary range for this position and I believe that I am worth a salary that is in the upper range.\n\nI am confident that I can bring a lot of value to the team and I am willing to negotiate a salary that is fair and reflects my skills and experience. I look forward to hearing your thoughts on this matter.\n\nThank you for your time and consideration.\n\nSincerely,\n[Your Name] \n\n", "infer7b_before_item": " You need to write an email to negotiate your salary.\nYou need to write an email to negotiate your salary.\nDear Mr. Smith,\nI am writing to you to discuss my salary. I have been working for your company for 2 years and I am very happy with my job. I am very interested in staying with your company and I would like to discuss my salary.\nI am currently earning $30,000 per year. I would like to discuss my salary with you. I would like to earn $35,000 per year.\nI am very interested in staying with your company and I would like to discuss my salary.\nThank you for your time.\nSincerely,\nYour Name\nYour Signature\n# 10. A Letter to a Friend\n**Topic:** A letter to a friend\n**Purpose:** To write a letter to a friend\n**Expected Results:** You will write a letter to a friend\n**Input:** You need to write a letter to a friend. \n Output: You need to write a letter to a friend\nYou need to write a", "infer7b_after_item": "\n Output: Dear [Name],\n\nI am writing to request a salary increase. I have been working for [Company] for [# of years] and have been a valuable asset to the team. I have been able to successfully complete all of my tasks and have been recognized for my contributions.\n\nI believe that my contributions have been worth more than the salary I am currently receiving. I would like to request a salary increase of [#]% to reflect my value to the company.\n\nI look forward to hearing from you and thank you for your time.\n\nSincerely,\n[Your Name] \n\n"} +{"id": 75, "instruction": "Write an email to attendees as a reminder that the event is coming up.", "input": "", "infer30b_before_item": " Output: The attendees receive the email. \n Precondition: Precondition: The event is scheduled. \n Postcondition: Postcondition: The attendees are reminded of the event.\nInput: Input: Write an email to attendees as a reminder that the event is coming up. \n Output: Output: The attendees receive the email. \n Precondition: Precondition: The event is scheduled. \n Postcondition: Postcondition: The attendees are reminded of the event.\nInput: Input: Write an email to attendees as a reminder that the event is coming up. \n Output: Output: The attendees receive the email. \n Precondition: Precondition: The event is scheduled. \n Postcondition: Postcondition: The attendees are reminded of the event.\nInput: Input: Write an email to attendees as a reminder that the event is coming up. \n Output: Output: The attendees receive the email. \n Precondition: Precondition: The event is scheduled. \n Postcondition: Postcondition: The attendees", "infer30b_after_item": "\n Output: Dear attendees,\n\nWe hope this email finds you well! This is a friendly reminder that our event is coming up soon. We are excited to see you all there and can't wait to share this experience with you. \n\nPlease remember to bring any items you may need for the event, such as a notebook and pen. We will provide any other materials you may need. \n\nWe look forward to seeing you soon!\n\nSincerely,\n[Your Name] \n\n", "infer13b_before_item": " Output: Email sent to attendees.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: Dear Attendees, \n\nWe hope you are all looking forward to our upcoming event! It's just around the corner, so we wanted to send a reminder to make sure you have everything you need to attend. \n\nThe event will be held on [date], at [location]. Please make sure to arrive on time and bring your ticket or confirmation email. \n\nWe are excited to see you all there! \n\nBest, \n[Your Name] \n\n", "infer7b_before_item": " Output: Write an email to attendees as a reminder that the event is coming up.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": "\n Output: Dear Attendees,\n\nJust a reminder that our event is coming up soon! We are looking forward to seeing you there and having a great time. Please make sure to RSVP and let us know if you have any questions.\n\nThank you,\n[Your Name] \n\n"} +{"id": 76, "instruction": "It would be helpful if you could suggest an acronym for the repository.", "input": "A python framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits.", "infer30b_before_item": " Output: It would be helpful if you could suggest an acronym for the repository. A python framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits. \n Author: Author: It would be helpful if you could suggest an acronym for the repository. A python framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits. \n Author: Author: It would be helpful if you could suggest an acronym for the repository. A python framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits. \n Author: Author: It would be helpful if you could suggest an acronym for the repository. A python framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits. \n Author: Author: It would be helpful if you could suggest an acronym for the repository. A python framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits. \n Author: Author: It would be helpful if you could suggest an", "infer30b_after_item": " \n Output: The acronym for the repository could be NISQF: NISQ Framework. \n\n", "infer13b_before_item": " Output: It would be helpful if you could suggest an acronym for the repository. A python framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits. \n\"\"\"\n\nimport os\nimport sys\nimport time\nimport numpy as np\nimport tensorflow as tf\nimport tensorflow_probability as tfp\nimport tensorflow_probability.experimental.nngraph as tfnngraph\nimport tensorflow_probability.experimental.nngraph as tfnngraph\nimport tensorflow_probability.experimental.nngraph as tfnngraph\nimport tensorflow_probability.experimental.nngraph as tfnngraph\nimport tensorflow_probability.experimental.nngraph as tfnngraph\nimport tensorflow_probability.experimental.nngraph as tfnngraph\nimport tensorflow_probability.experimental.nngraph as tfnngraph\nimport tensorflow_probability.experimental.nngraph as tfnngraph\nimport tensorflow_probability.experimental.nngraph as tfnngraph\nimport tensorflow_probability.experimental.nngraph as tfn", "infer13b_after_item": " \n Output: NISQ-Circuit Framework (NISQ-CF) \n\n", "infer7b_before_item": " Output: It would be helpful if you could suggest an acronym for the repository. A python framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits. \n\"\"\"\nimport os\nimport sys\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\nsys.path.insert(0, os.path.abspath('..'))\n\n# -- General configuration ------------------------------------------------\n\n# If your documentation needs a minimal Sphinx version, state it here.\n#needs_sphinx = '1.0'\n\n# Add any Sphinx extension module names here, as strings. They can be\n# extensions coming with Sphinx (named'sphinx.ext.*') or your custom\n# ones.\nextensions = [\n 'sphinx.ext.autodoc',\n 'sphinx.ext.doctest',\n 'sph", "infer7b_after_item": " \n Output: NISQ-Py. \n\n"} +{"id": 77, "instruction": "Write a step-by-step guide for resolving GitHub merge conflicts.", "input": "", "infer30b_before_item": " Output: Write a step-by-step guide for resolving GitHub merge conflicts.\n# **Exercise Solution**\nInput: Input: Write a step-by-step guide for resolving GitHub merge conflicts. \n Output: Output: Write a step-by-step guide for resolving GitHub merge conflicts.\n# **Exercise Solution**\nInput: Input: Write a step-by-step guide for resolving GitHub merge conflicts. \n Output: Output: Write a step-by-step guide for resolving GitHub merge conflicts.\n# **Exercise Solution**\nInput: Input: Write a step-by-step guide for resolving GitHub merge conflicts. \n Output: Output: Write a step-by-step guide for resolving GitHub merge conflicts.\n# **Exercise Solution**\nInput: Input: Write a step-by-step guide for resolving GitHub merge conflicts. \n Output: Output: Write a step-by-step guide for resolving GitHub merge conflicts.\n# **Exercise Solution**\nInput: Input: Write a step-by-step guide for resolving GitHub merge conflicts. \n Output: Output: Write a step-", "infer30b_after_item": "\n Output: Step 1: Open the GitHub merge conflict file.\nStep 2: Identify the changes that have been made in the conflicting file.\nStep 3: Compare the changes made in the conflicting file with the changes made in the local file.\nStep 4: Decide which changes to keep and which to discard.\nStep 5: Resolve the conflict by selecting the changes to keep and committing them to the repository.\nStep 6: Test the changes to ensure that the merge was successful. \n\n", "infer13b_before_item": " Output: Write a step-by-step guide for resolving GitHub merge conflicts.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n", "infer13b_after_item": "\n Output: Step 1: Open the conflicted files in the GitHub merge tool.\nStep 2: Review the changes made by each side and decide which one to keep.\nStep 3: Select the changes you want to keep and click the \"Merge\" button.\nStep 4: Review the changes that were made and make any necessary edits.\nStep 5: Click the \"Merge\" button to accept the changes.\nStep 6: Click the \"Save\" button to save the changes. \n\n", "infer7b_before_item": " Output: Write a step-by-step guide for resolving GitHub merge conflicts.\n\n# I worked on this challenge by myself.\n# I spent 1.5 hours on this challenge.\n\n# Pseudocode\n\n# Input:\n# Output:\n# Steps:\n\n# Input:\n# Output:\n# Steps:\n\n# Input:\n# Output:\n# Steps:\n\n# Input:\n# Output:\n# Steps:\n\n# Input:\n# Output:\n# Steps:\n\n# Input:\n# Output:\n# Steps:\n\n# Input:\n# Output:\n# Steps:\n\n# Input:\n# Output:\n# Steps:\n\n# Input:\n# Output:\n# Steps:\n\n# Input:\n# Output:\n# Steps:\n\n# Input:\n# Output:\n# Steps:\n\n# Input:\n# Output:\n# Steps:\n\n# Input:\n# Output:\n# Steps:\n\n# Input:\n# Output:\n# Steps:\n\n# Input:\n# Output:\n# Steps", "infer7b_after_item": "\n Output: Step 1: Open the merge conflict file in your editor.\nStep 2: Review the changes made by each contributor and decide which changes to keep.\nStep 3: If you want to keep both changes, select the \"Keep Both\" option.\nStep 4: If you want to keep one of the changes, select the \"Keep This\" option.\nStep 5: If you want to discard one of the changes, select the \"Discard This\" option.\nStep 6: If you want to discard both changes, select the \"Discard Both\" option.\nStep 7: Once you have made your decision, click \"Save Merge\" to save your changes.\nStep 8: If you are satisfied with the result, click \"Merge\" to merge the changes.\nStep 9: If you are not satisfied with the result, click \"Discard\" to discard the changes.\nStep 10: If you are satisfied with the result, click \"Commit\" to commit the changes. \n\n"} +{"id": 78, "instruction": "One or more jobs can be run automatically by a workflow. The workflows are defined in the repository as YAML files and will run if an event occurs in the repository, as well as manually, or on a certain schedule.\nBring an example of a workflow that demonstrate the CI/CD features of GitHub Actions.", "input": "", "infer30b_before_item": " Output: The workflows can be used to run tests, build artifacts, and deploy to a variety of destinations.\nBring an example of a workflow that demonstrate the CI/CD features of GitHub Actions. \n Error: Error: If a workflow fails, the job will be marked as failed and the error will be displayed.\nBring an example of a workflow that demonstrate the CI/CD features of GitHub Actions. \n Warning: Warning: If a workflow fails, the job will be marked as failed and the error will be displayed.\nBring an example of a workflow that demonstrate the CI/CD features of GitHub Actions. \n Info: Info: If a workflow fails, the job will be marked as failed and the error will be displayed.\nBring an example of a workflow that demonstrate the CI/CD features of GitHub Actions. \n Debug: Debug: If a workflow fails, the job will be marked as failed and the error will be displayed.\nBring an example of a workflow that demonstrate the CI/CD features of GitHub Actions. \n Trace: Trace: If a workflow fails, the job will be marked as failed and the error will be displayed.\nBring an example of", "infer30b_after_item": "\n Output: A workflow that demonstrates the CI/CD features of GitHub Actions could be a workflow that automatically builds and deploys a web application. The workflow could be triggered by a pull request, and it could include steps such as running tests, building the application, and deploying it to a production server. \n\n", "infer13b_before_item": " Output: The workflows are defined in the repository as YAML files and will run if an event occurs in the repository, as well as manually, or on a certain schedule.\nBring an example of a workflow that demonstrate the CI/CD features of GitHub Actions.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: An example of a workflow that demonstrates the CI/CD features of GitHub Actions is a workflow that builds and tests a project, then deploys it to a production environment. The workflow can be configured to automatically run when a new commit is pushed to the repository, or it can be manually triggered by a user. The workflow can also be configured to run on a certain schedule, such as daily or weekly. \n\n", "infer7b_before_item": " Output: The workflow will run the jobs and return the results.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": "\n Output: GitHub Actions can be used to automate the deployment of code to a repository. For example, a workflow can be created to automatically deploy code to a repository when a pull request is created. This workflow can be created using the GitHub Actions API and can be triggered by a pull request event. The workflow can also be triggered manually or on a certain schedule. \n\n"} +{"id": 79, "instruction": "The movie tagline is the film's advertising slogan, usually printed on posters prior to the official release. It is a short description or comment on a movie to capture the essence of the movie, and ultimately make you watch the movie. Here is an example:", "input": "Movie: Joker (2019)", "infer30b_before_item": " Output: The movie tagline is the film's advertising slogan, usually printed on posters prior to the official release. It is a short description or comment on a movie to capture the essence of the movie, and ultimately make you watch the movie. Here is an example: Movie: Joker (2019)\n\nInput: Input: The movie tagline is the film's advertising slogan, usually printed on posters prior to the official release. It is a short description or comment on a movie to capture the essence of the movie, and ultimately make you watch the movie. Here is an example: Movie: Joker (2019)\n Output: Output: The movie tagline is the film's advertising slogan, usually printed on posters prior to the official release. It is a short description or comment on a movie to capture the essence of the movie, and ultimately make you watch the movie. Here is an example: Movie: Joker (2019)\n\nInput: Input: The movie tagline is the film's advertising slogan, usually printed on posters prior to the official release. It is a short description or comment", "infer30b_after_item": " Tagline: Put on a happy face. \n Output: The movie Joker (2019) has the tagline \"Put on a happy face\", which is a reference to the main character's struggle to find happiness in a world that is full of chaos and despair. The tagline captures the essence of the movie, which is about a man's journey to find his own identity and purpose in life. It is a powerful statement that encourages viewers to watch the movie and explore the character's journey. \n\n", "infer13b_before_item": " The output is the tagline of the movie.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\nMovie tagline: \"The Clown Prince of Crime\". \n Output: The movie tagline for Joker (2019) is \"The Clown Prince of Crime\". \n\n", "infer7b_before_item": " The movie tagline is the film's advertising slogan, usually printed on posters prior to the official release. It is a short description or comment on a movie to capture the essence of the movie, and ultimately make you watch the movie. Here is an example: Movie: Joker (2019) \n\n\"\"\"\n\nfrom collections import defaultdict\n\n\ndef movie_tagline(movie):\n \"\"\"\n :param movie: The movie tagline is the film's advertising slogan, usually printed on posters prior to the official release. It is a short description or comment on a movie to capture the essence of the movie, and ultimately make you watch the movie. Here is an example: Movie: Joker (2019)\n :return: The movie tagline is the film's advertising slogan, usually printed on posters prior to the official release. It is a short description or comment on a movie to capture the essence of the movie, and ultimately make you watch the movie. Here is an example: Movie: Joker (2019)\n \"\"\"\n tagline = defaultdict(list)\n ", "infer7b_after_item": "\nTagline: \"The Darkest Journey Begins\" \n Output: The movie tagline is \"The Darkest Journey Begins\". This tagline captures the essence of the movie, as it is about a man's journey into darkness and the consequences of his actions. It is a powerful and evocative statement that makes you want to watch the movie. \n\n"} +{"id": 80, "instruction": "You are given some reviews for a movie. Each video might have mentioned some negative or positive points about the movie. Read them carefully and extract the positive and negative points mentioned in all of the reviews. Then, make a list of these points and summarize them as positive points and negative points.", "input": "Review 1: I'm not sure if it's just the fact that Ed Norton really grates on me in this film, but I never really bought into the idea of Fight Club being some kind of cultural phenomenon. Yes it's an innovative story, told via a strong script, engaging characters and intense cinematography. But is it really worthy of such high praise? Personally, I find it starts to fall apart halfway through and actually becomes quite tedious towards the end. Everything just becomes a little bit childish and contrived as the story loses touch with its base elements and the rage against the machine vibe takes over. I have huge respect for the way this film was made but, much like The Matrix, I feel like people attach way more importance to this movie than it deserves.\nReview 2: The film tells the story of men who cannot adapt to the social order in today's world, under the leadership of Tyler Durden, to discover their natural instinct, masculinity, and to escape from their unhappy lives.\nReview 3: Despite a good theme, great acting and important messages that this movie convey in an unorthodox way, I think it fails to connect the audience with the storyline and leaves him in a world of confusion. Although, majority of reviews find this movie entertaining and interesting, yet I would choose to be a minority that believes that this movie is extremely overrated.\nReview 4: Is creating chaos, explosions and membership in a militant sect the way to get rid of material shackles ?! The visual effects are fascinating and the story is compelling until the second half. Unfortunately, it doesn't end well.", "infer30b_before_item": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Positive Points:\n- Innovative story\n- Strong script\n- Engaging characters\n- Intense cinematography\n- High praise\n- Strong base elements\n- Rage against the machine vibe\n- Respect for the way this film was made\n- Importance to this movie\n- Natural instinct\n- Masculinity\n- Important messages\n- Good theme\n- Great acting\n- Unorthodox way\n- Entertaining and interesting\n- Visual effects\n- Compelling\n\nNegative Points:\n- Grating on me\n- Tedious\n- Childish\n- Contrived\n- Loses touch with its base elements\n- Overrated \n- Confusion\n- Chaos\n- Explosions\n- Militant sect\n- Doesn't end well \n\n", "infer13b_before_item": " You are given a list of positive and negative points about the movie. You need to find the number of positive and negative points in the list.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Positive points:\n- Innovative story, strong script, engaging characters, intense cinematography.\n- Rage against the machine vibe.\n- Respect for the way this film was made.\n- Great theme, great acting, important messages.\n- Visual effects are fascinating.\n- Compelling story.\n\nNegative points:\n- Ed Norton grates on the reviewer.\n- Never bought into the idea of Fight Club being a cultural phenomenon.\n- Story loses touch with its base elements.\n- Tedious towards the end.\n- Everything becomes childish and contrived.\n- Storyline is confusing.\n- Overrated. \n- Chaos, explosions and membership in a militant sect are not the way to get rid of material shackles. \n\n", "infer7b_before_item": " Output: You are given some reviews for a movie. Each video might have mentioned some negative or positive points about the movie. Read them carefully and extract the positive and negative points mentioned in all of the reviews. Then, make a list of these points and summarize them as positive points and negative points.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Positive points: \n- Innovative story \n- Engaging characters \n- Intensely cinematic \n\nNegative points: \n- Ed Norton's performance \n- Loss of base elements \n- Tedious towards the end \n\nOverall, the movie is a mixed bag. While it has some great elements, it also has some flaws that make it less than perfect. \n\n"} +{"id": 81, "instruction": "Give a brief summary of the movie or series' plot.", "input": "Breaking Bad (TV Series 2008\u20132013)", "infer30b_before_item": " Output: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \n\nInput: Input: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \n Output: Output: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \n\nInput: Input: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \n Output: Output: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \n\nInput: Input: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \n Output: Output: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \n\nInput: Input: Give a brief summary of", "infer30b_after_item": " \n Output: Breaking Bad is a critically acclaimed American crime drama television series created and produced by Vince Gilligan. The show follows the story of Walter White, a high school chemistry teacher who is diagnosed with terminal lung cancer. In order to secure his family's financial future, Walter teams up with a former student to produce and sell high-quality crystal meth. Along the way, he must deal with the dangerous and unpredictable world of the drug trade, as well as the moral dilemmas that come with it. \n\n", "infer13b_before_item": " Output: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \n\nInput: Input: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \nOutput: Output: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \n\nInput: Input: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \nOutput: Output: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \n\nInput: Input: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \nOutput: Output: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \n\nInput: Input: Give a brief summary of", "infer13b_after_item": " \n Output: Breaking Bad is a critically acclaimed TV series about a high school chemistry teacher, Walter White, who is diagnosed with terminal lung cancer. In order to provide for his family after his death, he starts making and selling methamphetamine with a former student. As the series progresses, White's morality and ethics are tested as he becomes more and more involved in the drug business. \n\n", "infer7b_before_item": " Output: Give a brief summary of the movie or series' plot. Breaking Bad (TV Series 2008\u20132013) \n\"\"\"\n\nimport re\nimport sys\nimport os\nimport time\nimport datetime\nimport random\nimport string\nimport math\nimport json\nimport requests\nimport urllib\nimport urllib2\nimport urlparse\nimport hashlib\nimport base64\nimport logging\nimport logging.handlers\nimport logging.config\nimport logging.config.fileconfig\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport logging.handlers\nimport", "infer7b_after_item": " \n Output: Breaking Bad is a crime drama series that follows the story of Walter White, a high school chemistry teacher who is diagnosed with lung cancer and decides to use his knowledge of chemistry to start a methamphetamine empire. Along the way, he recruits Jesse Pinkman, a former student, to help him in his endeavors. The series follows the duo as they navigate the criminal underworld, while also dealing with the consequences of their actions. \n\n"} +{"id": 82, "instruction": "Decide whether children can watch the given movie. Mention what makes it inappropriate if you think they can't.", "input": "The Dark Knight (2008)", "infer30b_before_item": " Output: Decide whether children can watch the given movie. Mention what makes it inappropriate if you think they can't. The Dark Knight (2008)\n\nInput: Input: Decide whether children can watch the given movie. Mention what makes it inappropriate if you think they can't. The Dark Knight (2008) \n Output: Output: Decide whether children can watch the given movie. Mention what makes it inappropriate if you think they can't. The Dark Knight (2008)\n\nInput: Input: Decide whether children can watch the given movie. Mention what makes it inappropriate if you think they can't. The Dark Knight (2008) \n Output: Output: Decide whether children can watch the given movie. Mention what makes it inappropriate if you think they can't. The Dark Knight (2008)\n\nInput: Input: Decide whether children can watch the given movie. Mention what makes it inappropriate if you think they can't. The Dark Knight (2008) \n Output: Output: Decide", "infer30b_after_item": " \n Output: Children should not watch The Dark Knight (2008) as it contains violence, language, and mature themes that are not suitable for young viewers. \n\n", "infer13b_before_item": " Output: Decide whether children can watch the given movie. Mention what makes it inappropriate if you think they can't. The Dark Knight Rises (2012) \n\nInput: Input: Decide whether children can watch the given movie. Mention what makes it inappropriate if you think they can't. The Dark Knight (2008) \nOutput: Output: Decide whether children can watch the given movie. Mention what makes it inappropriate if you think they can't. The Dark Knight Rises (2012) \n\nInput: Input: Decide whether children can watch the given movie. Mention what makes it inappropriate if you think they can't. The Dark Knight (2008) \nOutput: Output: Decide whether children can watch the given movie. Mention what makes it inappropriate if you think they can't. The Dark Knight Rises (2012) \n\nInput: Input: Decide whether children can watch the given movie. Mention what makes it inappropriate if you think they can't. The Dark Knight (2008", "infer13b_after_item": " \n Output: Yes, children can watch The Dark Knight (2008). It is rated PG-13, so it is suitable for older children. However, it contains some intense scenes and language that may not be suitable for younger children. \n\n", "infer7b_before_item": " Output: Decide whether children can watch the given movie. Mention what makes it inappropriate if you think they can't. The Dark Knight (2008) \n */\n\npublic class MovieRating {\n public static void main(String[] args) {\n System.out.println(\"Input:\");\n Scanner sc = new Scanner(System.in);\n String movie = sc.nextLine();\n System.out.println(\"Output:\");\n if (movie.equals(\"The Dark Knight\")) {\n System.out.println(\"Yes\");\n } else {\n System.out.println(\"No\");\n }\n }\n}\n", "infer7b_after_item": " \n Output: No, children should not watch The Dark Knight (2008). The movie contains graphic violence, strong language, and themes of corruption and crime. \n\n"} +{"id": 83, "instruction": "Write a short analysis of the cinematography in the movie.", "input": "Dead Poets Society", "infer30b_before_item": " Output: Write a short analysis of the cinematography in the movie. Dead Poets Society \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: The cinematography in Dead Poets Society is stunning and evocative. The use of lighting and camera angles creates a sense of drama and tension throughout the film. The use of close-ups and wide shots helps to emphasize the emotional journey of the characters. The use of natural lighting and warm colors creates a sense of warmth and comfort, while the use of darker colors and shadows creates a sense of mystery and foreboding. The cinematography in Dead Poets Society is truly a work of art. \n\n", "infer13b_before_item": " Output: Write a short analysis of the cinematography in the movie. Dead Poets Society \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: The cinematography in Dead Poets Society is beautifully done, with a mix of close-ups and wide shots to capture the emotion of the characters and the setting. The camera often moves in a way that reflects the emotions of the characters, such as when the camera is shaky to show the characters' anxiety. The lighting is also used to create a certain atmosphere, with bright lighting to show the characters' joy and dim lighting to show their sadness. The cinematography in Dead Poets Society is a key element in conveying the story and its themes. \n\n", "infer7b_before_item": " Output: Write a short analysis of the cinematography in the movie. Dead Poets Society\n\nimport java.util.Scanner;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class DeadPoetsSociety {\n\n public static void main(String[] args) {\n Scanner scanner = new Scanner(System.in);\n List<String> input = new ArrayList<String>();\n List<String> output = new ArrayList<String>();\n while (scanner.hasNextLine()) {\n input.add(scanner.nextLine());\n }\n scanner.close();\n for (String line : input) {\n output.add(line);\n }\n for (String line : output) {\n System.out.println(line);\n }\n }\n}\n", "infer7b_after_item": " \n Output: The cinematography in Dead Poets Society is stunning, with a combination of close-ups, long shots, and wide shots used to create a sense of intimacy and grandeur. The use of lighting is also important, with the dim lighting in the classroom creating a sense of mystery and the bright lighting in the outdoor scenes creating a sense of freedom and joy. The camera angles are also important, with the close-ups creating a sense of intimacy and the wide shots creating a sense of grandeur. The use of color is also important, with the use of blue and green creating a sense of calmness and the use of red creating a sense of passion and energy. \n\n"} +{"id": 84, "instruction": "Please let me know your thoughts on the given place and why you think it deserves to be visited.", "input": "Barcelona, Spain", "infer30b_before_item": " Barcelona, Spain\nInput: Input: Please let me know your thoughts on the given place and why you think it deserves to be visited. Barcelona, Spain \n Output: Barcelona, Spain\nInput: Input: Please let me know your thoughts on the given place and why you think it deserves to be visited. Barcelona, Spain \n Output: Barcelona, Spain\nInput: Input: Please let me know your thoughts on the given place and why you think it deserves to be visited. Barcelona, Spain \n Output: Barcelona, Spain\nInput: Input: Please let me know your thoughts on the given place and why you think it deserves to be visited. Barcelona, Spain \n Output: Barcelona, Spain\nInput: Input: Please let me know your thoughts on the given place and why you think it deserves to be visited. Barcelona, Spain \n Output: Barcelona, Spain\nInput: Input: Please let me know your thoughts on the given place and why you think it deserves to be visited. Barcelona, Spain \n Output: Barcelona, Spain\nInput: Input: Please let me know your thoughts on the given place and why you think it deserves to be visited. Barcelona, Spain \n Output: Barcelona, Spain\n", "infer30b_after_item": " \n Output: Barcelona is a beautiful city with a lot to offer. It has a vibrant culture, amazing architecture, and delicious food. It is also home to many famous attractions, such as the Sagrada Familia and Park G\u00fcell. I think it deserves to be visited because it is a great place to experience the culture and history of Spain. \n\n", "infer13b_before_item": " Please let me know your thoughts on the given place and why you think it deserves to be visited. Barcelona, Spain \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Barcelona is a vibrant city with a rich cultural heritage. It is a great place to visit for its beautiful architecture, delicious food, and lively atmosphere. The city is full of life and there is always something to do, from exploring the historic sites to enjoying the nightlife. Barcelona is a great place to visit for its unique culture and its beautiful scenery. \n\n", "infer7b_before_item": " Please let me know your thoughts on the given place and why you think it deserves to be visited. Barcelona, Spain\n\\end{code}\n\nComment: I'm not sure what you mean by \"the input is not working\". What is the input? What is the output?\n\nComment: I'm not sure what you mean by \"the input is not working\". What is the input? What is the output?\n\nComment: I'm not sure what you mean by \"the input is not working\". What is the input? What is the output?\n\nComment: I'm not sure what you mean by \"the input is not working\". What is the input? What is the output?\n\nComment: I'm not sure what you mean by \"the input is not working\". What is the input? What is the output?\n\nComment: I'm not sure what you mean by \"the input is not working\". What is the input? What is the output?\n\nComment: I'm not sure what you mean by \"the input is not working\". What is the input? What is the output?\n\nComment: I'm not sure what you mean by \"the input", "infer7b_after_item": " \n Output: Barcelona is a vibrant and colorful city that is full of culture and history. It is home to some of the most beautiful architecture, stunning beaches, and delicious cuisine. It is also a great place to explore the nightlife and experience the unique and diverse culture. It is a must-visit destination for anyone looking to experience a truly unique and unforgettable travel experience. \n\n"} +{"id": 85, "instruction": "Consider the best time of year to visit the given city, and provide your reasons for choosing that time.", "input": "Sydney, Australia", "infer30b_before_item": " Output: Consider the best time of year to visit the given city, and provide your reasons for choosing that time. Sydney, Australia\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: The best time of year to visit Sydney, Australia is during the summer months of December to February. During this time, the weather is warm and sunny, making it perfect for outdoor activities such as surfing, swimming, and exploring the city's beaches and parks. Additionally, the city hosts many festivals and events during this time, such as the Sydney Festival and the Sydney Mardi Gras, making it a great time to experience the city's culture. \n\n", "infer13b_before_item": " Output: Consider the best time of year to visit the given city, and provide your reasons for choosing that time. Sydney, Australia \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: The best time to visit Sydney, Australia is during the spring months of September to November. The weather is warm and sunny, with temperatures ranging from 15 to 25 degrees Celsius. The city is also less crowded during this time, making it easier to explore the city's attractions. \n\n", "infer7b_before_item": " Output: Write a paragraph describing the best time of year to visit the given city, and provide your reasons for choosing that time. Sydney, Australia \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: The best time of year to visit Sydney, Australia is during the spring and autumn seasons. During these times, the weather is mild and comfortable, and the city is filled with festivals and events. The beaches are also at their best during these seasons, with clear skies and warm temperatures. Additionally, the city is less crowded during these times, making it easier to explore and enjoy the sights. \n\n"} +{"id": 86, "instruction": "Make a questionnaire to help hotel guests write hotel reviews.", "input": "", "infer30b_before_item": " Output: A questionnaire to help hotel guests write hotel reviews.\nInput: Input: Make a questionnaire to help hotel guests write hotel reviews. \n Output: Output: A questionnaire to help hotel guests write hotel reviews.\nInput: Input: Make a questionnaire to help hotel guests write hotel reviews. \n Output: Output: A questionnaire to help hotel guests write hotel reviews.\nInput: Input: Make a questionnaire to help hotel guests write hotel reviews. \n Output: Output: A questionnaire to help hotel guests write hotel reviews.\nInput: Input: Make a questionnaire to help hotel guests write hotel reviews. \n Output: Output: A questionnaire to help hotel guests write hotel reviews.\nInput: Input: Make a questionnaire to help hotel guests write hotel reviews. \n Output: Output: A questionnaire to help hotel guests write hotel reviews.\nInput: Input: Make a questionnaire to help hotel guests write hotel reviews. \n Output: Output: A questionnaire to help hotel guests write hotel reviews.\nInput: Input: Make a questionnaire to help hotel guests write hotel reviews. \n Output: Output: A questionnaire to help hotel guests write hotel reviews.\nInput: Input:", "infer30b_after_item": "\n Output: Questionnaire for Hotel Guests: \n1. How would you rate the overall quality of your stay at the hotel?\n2. How would you rate the cleanliness of the hotel?\n3. How would you rate the friendliness of the staff?\n4. How would you rate the quality of the food and beverages?\n5. How would you rate the value for money?\n6. How would you rate the facilities and amenities?\n7. How would you rate the location of the hotel?\n8. How would you rate the check-in and check-out process?\n9. How would you rate the customer service?\n10. How likely are you to recommend this hotel to a friend?\n11. Is there anything else you would like to add? \n\n", "infer13b_before_item": " Output: Make a questionnaire to help hotel guests write hotel reviews. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n The\n The The\n\n\n\n\n\n The The The The package package package", "infer13b_after_item": "\n Output: 1. How would you rate your overall experience at the hotel?\n2. Was the staff friendly and helpful?\n3. Was the room clean and comfortable?\n4. Was the location convenient for your needs?\n5. Did the hotel provide any amenities that you enjoyed?\n6. How would you rate the food and beverage options at the hotel?\n7. Did you have any issues with the Wi-Fi or other technology at the hotel?\n8. Would you recommend this hotel to a friend?\n9. Is there anything else you would like to add about your stay? \n\n", "infer7b_before_item": " Output: Write a hotel review.\nThe hotel is located in the heart of the city. It is a 10-minute walk from the train station and a 15-minute walk from the airport. The hotel is located in a quiet area, but it is still close to the city center. The hotel is located in a quiet area, but it is still close to the city center. The hotel is located in a quiet area, but it is still close to the city center. The hotel is located in a quiet area, but it is still close to the city center. The hotel is located in a quiet area, but it is still close to the city center. The hotel is located in a quiet area, but it is still close to the city center. The hotel is located in a quiet area, but it is still close to the city center. The hotel is located in a quiet area, but it is still close to the city center. The hotel is located in a quiet area, but it is still close to the city center. The hotel is located in a quiet area, but it is still close to the city center. The hotel is located in a quiet area, but it is still close to the city center.", "infer7b_after_item": "\n Output: 1. How would you rate your overall experience at the hotel?\n2. What was your favorite part of the hotel?\n3. What was the worst part of the hotel?\n4. How would you rate the quality of the food and beverages served at the hotel?\n5. How would you rate the cleanliness of the hotel?\n6. How would you rate the staff's customer service?\n7. How would you rate the value for money?\n8. What suggestions do you have for improving the hotel?\n9. Would you recommend this hotel to others?\n10. What is the best way to contact the hotel? \n\n"} +{"id": 87, "instruction": "Make a list of the top places in the U.S. to visit at the given time.", "input": "November", "infer30b_before_item": " Output: Make a list of the top places in the U.S. to visit at the given time. November\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": ". \n Output: 1. New York City, New York\n2. San Francisco, California\n3. Washington D.C., Washington\n4. Las Vegas, Nevada\n5. Miami, Florida\n6. Los Angeles, California\n7. Chicago, Illinois\n8. Boston, Massachusetts\n9. Seattle, Washington\n10. Austin, Texas \n\n", "infer13b_before_item": " Output: Make a list of the top places in the U.S. to visit at the given time. November \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " 2020 \n Output: 1. New York City, New York\n2. San Francisco, California\n3. Washington D.C.\n4. Las Vegas, Nevada\n5. Orlando, Florida\n6. Chicago, Illinois\n7. Boston, Massachusetts\n8. Los Angeles, California\n9. San Diego, California\n10. Seattle, Washington \n\n", "infer7b_before_item": " Output: Make a list of the top places in the U.S. to visit at the given time. November \n\nInput: Input: Make a list of the top places in the U.S. to visit at the given time. November \n Output: Output: Make a list of the top places in the U.S. to visit at the given time. November \n\nInput: Input: Make a list of the top places in the U.S. to visit at the given time. November \n Output: Output: Make a list of the top places in the U.S. to visit at the given time. November \n\nInput: Input: Make a list of the top places in the U.S. to visit at the given time. November \n Output: Output: Make a list of the top places in the U.S. to visit at the given time. November \n\nInput: Input: Make a list of the top places in the U.S. to visit at the given time. November \n Output: Output: Make a list of the top places in the U.S. to visit at the given time. November \n\nInput: Input: Make a list of the top", "infer7b_after_item": " 2020 \n Output: 1. Yellowstone National Park, Wyoming\n2. Grand Canyon National Park, Arizona\n3. Yosemite National Park, California\n4. Mount Rainier National Park, Washington\n5. Glacier National Park, Montana\n6. Zion National Park, Utah\n7. Rocky Mountain National Park, Colorado\n8. Acadia National Park, Maine\n9. Grand Teton National Park, Wyoming\n10. Olympic National Park, Washington \n\n"} +{"id": 88, "instruction": "Name the top cities in France that should not be missed. Include the best aspects of each place as well.", "input": "", "infer30b_before_item": " Output: Name the top cities in France that should not be missed. Include the best aspects of each place as well.\nInput: Input: Name the top cities in France that should not be missed. Include the best aspects of each place as well. \n Output: Output: Name the top cities in France that should not be missed. Include the best aspects of each place as well.\nInput: Input: Name the top cities in France that should not be missed. Include the best aspects of each place as well. \n Output: Output: Name the top cities in France that should not be missed. Include the best aspects of each place as well.\nInput: Input: Name the top cities in France that should not be missed. Include the best aspects of each place as well. \n Output: Output: Name the top cities in France that should not be missed. Include the best aspects of each place as well.\nInput: Input: Name the top cities in France that should not be missed. Include the best aspects of each place as well. \n Output: Output: Name the top cities in France that should not be missed. Include the best aspects of each place as well.\nInput:", "infer30b_after_item": "\n Output: Paris is a must-visit city in France, with its iconic landmarks such as the Eiffel Tower, the Louvre Museum, and the Arc de Triomphe. It is also home to a vibrant culture, with its many cafes, art galleries, and fashion boutiques.\n\nMarseille is the second-largest city in France and is known for its beautiful beaches, historic architecture, and vibrant nightlife. It is also home to a variety of museums, including the Museum of European and Mediterranean Civilisations.\n\nLyon is the third-largest city in France and is known for its gastronomy, with its many Michelin-starred restaurants. It is also home to a variety of historical sites, such as the Roman amphitheatre and the Basilica of Notre-Dame de Fourvi\u00e8re.\n\nBordeaux is the fourth-largest city in France and is known for its wine production. It is also home to a variety of historic sites, such as the Place de la Bourse and the Cathedral of Saint-Andr\u00e9.\n\nToulouse is the fifth-largest", "infer13b_before_item": " Output: Name the top cities in France that should not be missed. Include the best aspects of each place as well.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: Paris is the most popular city in France and is a must-visit for its iconic landmarks, such as the Eiffel Tower and the Louvre. The city is also known for its vibrant nightlife, with its many bars, clubs, and restaurants. \n\nMarseille is a bustling port city with a rich history and culture. It is famous for its beautiful beaches, delicious cuisine, and vibrant nightlife. \n\nNice is a charming city located on the French Riviera. It is known for its stunning architecture, beautiful beaches, and vibrant nightlife. \n\nStrasbourg is a historic city located in the northeast of France. It is famous for its medieval architecture, picturesque canals, and delicious cuisine. \n\nBordeaux is a beautiful city located in the southwest of France. It is known for its stunning architecture, vibrant nightlife, and delicious cuisine. \n\n", "infer7b_before_item": " Output: A list of the top cities in France that should not be missed. Include the best aspects of each place as well.\nInput: Input: Name the top cities in France that should not be missed. Include the best aspects of each place as well. \n Output: Output: A list of the top cities in France that should not be missed. Include the best aspects of each place as well.\nInput: Input: Name the top cities in France that should not be missed. Include the best aspects of each place as well. \n Output: Output: A list of the top cities in France that should not be missed. Include the best aspects of each place as well.\nInput: Input: Name the top cities in France that should not be missed. Include the best aspects of each place as well. \n Output: Output: A list of the top cities in France that should not be missed. Include the best aspects of each place as well.\nInput: Input: Name the top cities in France that should not be missed. Include the best aspects of each place as well. \n Output: Output: A list of the top cities in France that should not be missed. Include the best", "infer7b_after_item": "\n Output: Paris is the most popular city in France, and it is known for its iconic landmarks such as the Eiffel Tower and the Louvre. It is also known for its vibrant nightlife, delicious cuisine, and its many museums and galleries. \n\nNice is a popular seaside city in the south of France, known for its beautiful beaches and its stunning architecture. It is also known for its delicious cuisine, its many outdoor activities, and its vibrant nightlife. \n\nBordeaux is a city in the southwest of France, known for its wine production and its beautiful architecture. It is also known for its delicious cuisine, its many outdoor activities, and its vibrant nightlife. \n\n"} +{"id": 89, "instruction": "Answer the following question.", "input": "How do I compare strings in Java?\nI've been using the == operator in my program to compare all my strings so far. However, I ran into a bug, changed one of them into .equals() instead, and it fixed the bug.\nIs == bad? When should it and should it not be used? What's the difference?", "infer30b_before_item": " Output: Answer the following question. How do I compare strings in Java?\nThe == operator is used to compare two objects to see if they are the same object. The.equals() method is used to compare two objects to see if they are equal.\nThe == operator is used to compare two objects to see if they are the same object. The.equals() method is used to compare two objects to see if they are equal.\nThe == operator is used to compare two objects to see if they are the same object. The.equals() method is used to compare two objects to see if they are equal.\nThe == operator is used to compare two objects to see if they are the same object. The.equals() method is used to compare two objects to see if they are equal.\nThe == operator is used to compare two objects to see if they are the same object. The.equals() method is used to compare two objects to see if they are equal.\nThe == operator is used to compare two objects to see if they are the same object. The.equals() method is used to compare two objects to see if they are equal.\nThe == operator is used to compare two objects to see if they are the same object.", "infer30b_after_item": " \n Output: The == operator is used to compare two objects to see if they are the same object. This is useful when you want to check if two variables point to the same object.\n\nThe.equals() method is used to compare two objects to see if they have the same value. This is useful when you want to check if two strings have the same value.\n\nIn general, you should use the.equals() method when comparing strings, as it will check the actual values of the strings instead of just checking if they are the same object. \n\n", "infer13b_before_item": " Output: Answer the following question. How do I compare strings in Java?\n\n\\begin{code}\nimport java.util.Scanner;\n\npublic class StringCompare {\n\n public static void main(String[] args) {\n Scanner input = new Scanner(System.in);\n String a = input.nextLine();\n String b = input.nextLine();\n System.out.println(a == b);\n System.out.println(a.equals(b));\n }\n}\n\\end{code}\n\nComment: `==` is a comparison operator. It compares two values and returns a boolean value. `equals()` is a method. It is a method of the `String` class. It returns a boolean value.\n\nComment: `==` is a comparison operator. `equals()` is a method.\n\nComment: `==` is a comparison operator. `equals()` is a method.\n\nComment: `==` is a comparison operator. `equals()` is a method.\n\nComment: `==` is a comparison operator. `equals()` is a method.\n\nComment: `==` is a comparison operator.", "infer13b_after_item": " \n Output: == is a comparison operator in Java that compares two objects for equality. It checks if the two objects are the same object, not if they are equal. The.equals() method, on the other hand, compares two objects for equality. It checks if the two objects are equal, regardless of whether they are the same object or not. Therefore, when you want to compare two objects for equality, you should use the.equals() method instead of ==. \n\n", "infer7b_before_item": " \n\nAnswer: == is used to compare the reference of the object.\n\nequals() is used to compare the value of the object.\n\nAnswer: == is used to compare the reference of the object.\n\nequals() is used to compare the value of the object.\n\nAnswer: == is used to compare the reference of the object.\n\nequals() is used to compare the value of the object.\n\nAnswer: == is used to compare the reference of the object.\n\nequals() is used to compare the value of the object.\n\nAnswer: == is used to compare the reference of the object.\n\nequals() is used to compare the value of the object.", "infer7b_after_item": " \n Output: The == operator in Java compares two objects and returns true if they are equal. This is useful for comparing two objects of the same type and value. However, it is not suitable for comparing strings, as it will return true if the strings are the same, even if they are not.\n\nThe.equals() method is used to compare two strings and returns true if they are the same. This is more suitable for comparing strings, as it will return false if the strings are not the same.\n\nThe == operator is generally used for comparing two objects of the same type and value, while the.equals() method is used for comparing two strings. \n\n"} +{"id": 90, "instruction": "You are given a question and two possible answers. The task is to evaluate each answer and determine if it is correct. If incorrect, explain why.", "input": "Is there a way of reading one single character from the user input? For instance, they press one key at the terminal and it is returned (sort of like getch()). I know there's a function in Windows for it, but I'd like something that is cross-platform.\nAnswer 1: Here's a link to the ActiveState Recipes site that says how you can read a single character in Windows, Linux and OSX :\nhttps://code.activestate.com/recipes/134892/\nAnswer 2: if you just want to hold the screen so you can see the result on the terminal just write `input()` at the end of the code and it will hold the screen", "infer30b_before_item": " Output: You are given a question and two possible answers. The task is to evaluate each answer and determine if it is correct. If incorrect, explain why.\n\nComment: Please don't post the same question multiple times.\n\nComment: I'm sorry, I'm new to this site and I didn't know that.\n\nAnswer: You can use the `input()` function to get a single character from the user.\n\n\\begin{code}\nimport sys\n\ndef get_char():\n return input()\n\ndef main():\n print(get_char())\n\nif __name__ == '__main__':\n main()\n\\end{code}\n\nComment: Thank you so much!", "infer30b_after_item": " until you press enter. \n Output: Answer 1 is correct. The link provided is to a page on the ActiveState Recipes site that provides instructions on how to read a single character from the user input in Windows, Linux and OSX. Answer 2 is incorrect. `input()` does not hold the screen, it simply waits for user input before continuing. \n\n", "infer13b_before_item": " Output: You are given a question and two possible answers. The task is to evaluate each answer and determine if it is correct. If incorrect, explain why.\n\nComment: Please add more details to expand your answer, such as working code or documentation citations.\n\nAnswer: \\begin{code}\nimport sys\n\ndef input():\n print(\"Enter your name:\")\n name = input()\n print(\"Hello, \" + name)\n\ninput()\n\\end{code}\n\nComment: Please add more details to expand your answer, such as working code or documentation citations.", "infer13b_after_item": ".\n\nQuestion: Is there a way of reading one single character from the user input? \n Output: Answer 1 is correct. The link provided shows how to read a single character from the user input in Windows, Linux and OSX. Answer 2 is incorrect. It does not provide a way of reading a single character from the user input. \n\n", "infer7b_before_item": " Output: You are given a question and two possible answers. The task is to evaluate each answer and determine if it is correct. If incorrect, explain why.\n\nComment: I'm not sure what you mean by \"hold the screen\".\n\nComment: I'm not sure what you mean by \"hold the screen\".\n\nComment: I mean that the screen will not be cleared until you press enter.\n\nComment: I mean that the screen will not be cleared until you press enter.\n\nComment: I'm not sure what you mean by \"hold the screen\".\n\nComment: I mean that the screen will not be cleared until you press enter.\n\nComment: I mean that the screen will not be cleared until you press enter.\n\nComment: I'm not sure what you mean by \"hold the screen\".\n\nComment: I mean that the screen will not be cleared until you press enter.\n\nComment: I mean that the screen will not be cleared until you press enter.\n\nComment: I'm not sure what you mean by \"hold the screen\".\n\nComment: I mean that the screen will not be cleared until you press enter.\n\nComment: I mean that the", "infer7b_after_item": " until you press enter. \n Output: Answer 1 is incorrect. The link provided does not provide a cross-platform solution. Answer 2 is correct. \n\n"} +{"id": 91, "instruction": "You are given two questions. Check if they are duplicates.", "input": "Question1: I am trying to understand the advantages of multiprocessing over threading. I know that multiprocessing gets around the Global Interpreter Lock, but what other advantages are there, and can threading not do the same thing?\nQuestion2: I am learning how to use the threading and the multiprocessing modules in Python to run certain operations in parallel and speed up my code.\nI am finding this hard (maybe because I don't have any theoretical background about it) to understand what the difference is between a threading.Thread() object and a multiprocessing.Process() one.\nAlso, it is not entirely clear to me how to instantiate a queue of jobs and having only 4 (for example) of them running in parallel, while the other wait for resources to free before being executed.\nI find the examples in the documentation clear, but not very exhaustive; as soon as I try to complicate things a bit, I receive a lot of weird errors (like a method that can't be pickled, and so on).\nSo, when should I use the threading and multiprocessing modules?\nCan you link me to some resources that explain the concepts behind these two modules and how to use them properly for complex tasks?", "infer30b_before_item": " Output:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Yes, these two questions are duplicates. Both questions are asking about the differences between threading and multiprocessing in Python, and how to use them for complex tasks. \n\n", "infer13b_before_item": " You are given two questions. Check if they are duplicates. Question1: I am trying to understand the advantages of multiprocessing over threading. I know that multiprocessing gets around the Global Interpreter Lock, but what other advantages are there, and can threading not do the same thing?\nQuestion2: I am learning how to use the threading and the multiprocessing modules in Python to run certain operations in parallel and speed up my code.\nI am finding this hard (maybe because I don't have any theoretical background about it) to understand what the difference is between a threading.Thread() object and a multiprocessing.Process() one.\nAlso, it is not entirely clear to me how to instantiate a queue of jobs and having only 4 (for example) of them running in parallel, while the other wait for resources to free before being executed.\nI find the examples in the documentation clear, but not very exhaustive; as soon as I try to complicate things a bit, I receive a lot of weird errors (like a method that can't be pickled, and so on).\nSo, when should I use the threading and multiprocessing modules?\n", "infer13b_after_item": " \n Output: Yes, the two questions are duplicates. \n\n", "infer7b_before_item": " Output: You are given two questions. Check if they are duplicates. Question1: I am trying to understand the advantages of multiprocessing over threading. I know that multiprocessing gets around the Global Interpreter Lock, but what other advantages are there, and can threading not do the same thing?\n Question2: I am learning how to use the threading and the multiprocessing modules in Python to run certain operations in parallel and speed up my code.\n I am finding this hard (maybe because I don't have any theoretical background about it) to understand what the difference is between a threading.Thread() object and a multiprocessing.Process() one.\n Also, it is not entirely clear to me how to instantiate a queue of jobs and having only 4 (for example) of them running in parallel, while the other wait for resources to free before being executed.\n I find the examples in the documentation clear, but not very exhaustive; as soon as I try to complicate things a bit, I receive a lot of weird errors (like a method that can't be pickled, and so on).\n So, when should I use the threading and multiprocessing modules", "infer7b_after_item": " \n Output: The questions are not duplicates. Question 1 is asking about the advantages of multiprocessing over threading, while Question 2 is asking about the difference between a threading.Thread() object and a multiprocessing.Process() object. Both questions are related to parallel programming in Python, but they are asking different questions. \n\nIn terms of resources, you can check out the documentation for the multiprocessing and threading modules in Python. There are also a number of tutorials and articles available online that can help you understand the concepts and how to use them properly. \n\n"} +{"id": 92, "instruction": "Design a programming problem related to the subject that has been given to you. Use some examples and constraints to improve your question.", "input": "Dynamic Programming", "infer30b_before_item": " Output: Design a programming problem related to the subject that has been given to you. Use some examples and constraints to improve your question. Dynamic Programming \n Author: Author: Design a programming problem related to the subject that has been given to you. Use some examples and constraints to improve your question. Dynamic Programming \n---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n*/\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <math.h>\n#include <string.h>\n#include <ctype.h>\n#include <assert.h>\n#include <iostream>\n#include <vector>\n#include <list>\n#include <string>\n#include <algorithm>\n#include <queue>\n#include <stack>\n#include <set>\n#include <map>\n#include <complex>\n\n#define MAX_INT 2147483647\n#define MAX_LONG 9223372036854775807\n#define MAX_DBL 1.7976931", "infer30b_after_item": " \n Output: Given a sequence of numbers, find the maximum sum of a subsequence of length 3.\n\nExample:\n\nSequence: 1 2 3 4 5 6\n\nMaximum sum of a subsequence of length 3: 6\n\nConstraints:\n\nThe sequence contains at least 3 elements.\nThe maximum sum of a subsequence of length 3 must be found. \n\n", "infer13b_before_item": " Output: Write a program that solves the problem. \n\nInput: Input: Design a programming problem related to the subject that has been given to you. Use some examples and constraints to improve your question. Dynamic Programming \n Output: Output: Write a program that solves the problem. \n\nInput: Input: Design a programming problem related to the subject that has been given to you. Use some examples and constraints to improve your question. Dynamic Programming \n Output: Output: Write a program that solves the problem. \n\nInput: Input: Design a programming problem related to the subject that has been given to you. Use some examples and constraints to improve your question. Dynamic Programming \n Output: Output: Write a program that solves the problem. \n\nInput: Input: Design a programming problem related to the subject that has been given to you. Use some examples and constraints to improve your question. Dynamic Programming \n Output: Output: Write a program that solves the problem. \n\nInput: Input: Design a programming problem related to the subject that has been given to you. Use some examples and constraints to improve your question. Dynamic Programming \n Output: Output: Write a program that solves the problem. ", "infer13b_after_item": " \n Output: Design a programming problem related to dynamic programming. The problem should involve a set of N numbers and a set of K numbers. The goal is to find the maximum sum of the numbers in the set of N numbers, given the set of K numbers. The constraints are that the numbers in the set of N numbers are greater than the numbers in the set of K numbers, and the numbers in the set of N numbers are less than or equal to 100. \n\n", "infer7b_before_item": " Output: Write a program to solve the problem.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Given a set of numbers, find the maximum sum of numbers that can be formed by selecting two numbers from the set. The numbers in the set are 1, 2, 3, 4, 5, 6, 7, 8, 9. \n\n"} +{"id": 93, "instruction": "Provide a Java solution to the following problem.", "input": "Given an integer n, return true if it is a power of three. Otherwise, return false.\nAn integer n is a power of three, if there exists an integer x such that n == 3^x.\n\nExample 1:\nIn: n = 27\nOut: true\nExplanation: 27 = 3^3\n\nExample 2:\nIn: n = 0\nOut: false\nExplanation: There is no x where 3^x = 0.\n\nExample 3:\nIn: n = -1\nOut: false\nExplanation: There is no x where 3x = (-1).\n \nConstraints:\n-231 <= n <= 231 - 1\nFollow up: Could you solve it without loops/recursion?", "infer30b_before_item": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Yes, it can be solved without loops or recursion. The following code can be used to check if a number is a power of three:\n\nboolean isPowerOfThree(int n) {\n int i = 1;\n while (n > 0) {\n if (n % 3 == 0) {\n i++;\n n = n / 3;\n } else {\n n = n / 3;\n }\n }\n return i == 1;\n} \n\n", "infer13b_before_item": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Yes, the following code will return true if n is a power of three, and false otherwise:\n\npublic static boolean isPowerOfThree(int n) {\n if (n == 0) {\n return false;\n }\n if (n == 1) {\n return false;\n }\n if (n == 2) {\n return false;\n }\n if (n == 3) {\n return true;\n }\n if (n % 3 == 0) {\n return false;\n }\n return true;\n} \n\n", "infer7b_before_item": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Yes, the solution is to use the modulo operator (%) to check if n is a power of three.\n\ndef isPowerOfThree(n):\n return n % 3 == 0\n\nif __name__ == '__main__':\n print(isPowerOfThree(27)) # True\n print(isPowerOfThree(-1)) # False \n\n"} +{"id": 94, "instruction": "Think of topics that are most common in classic interview questions for a job in computer science.", "input": "", "infer30b_before_item": " Output: The output is a list of topics that are most common in classic interview questions for a job in computer science.\n\n# 1. Initial Solution\n\ndef most_common(array)\n array.group_by {|x| x}.max_by {|k,v| v.length}\nend\n\n# 2. Refactored Solution\n\ndef most_common(array)\n array.group_by {|x| x}.max_by {|k,v| v.length}\nend\n\n# 3. Reflection\n\n# What are some general rules you can apply to nested arrays?\n# => I think the general rule is to use the.each method to iterate through the nested arrays.\n\n# What are some ways you can iterate over nested arrays?\n# => You can use the.each method to iterate through the nested arrays.\n\n# Did you find any good new methods to implement or did you re-use one you were already familiar with? What was it and why did you decide that was a good option?\n# => I used the.group_by method to group the array by the elements. I also used the.max", "infer30b_after_item": "\n Output: Common topics in classic interview questions for a job in computer science include:\n- Technical knowledge and experience\n- Problem-solving skills\n- Ability to work in a team\n- Ability to learn new technologies\n- Communication skills\n- Ability to think critically\n- Ability to handle pressure\n- Knowledge of data structures and algorithms\n- Knowledge of programming languages\n- Knowledge of software engineering principles\n- Knowledge of computer architecture\n- Knowledge of operating systems\n- Knowledge of databases\n- Knowledge of web development\n- Knowledge of software testing\n- Knowledge of security principles\n- Knowledge of artificial intelligence and machine learning \n\n", "infer13b_before_item": " Output: A list of topics that are most common in classic interview questions for a job in computer science.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: 1. What is the difference between an algorithm and a program?\n2. What are the different programming languages and how do they differ?\n3. What are the different types of data structures and how do they work?\n4. What are the different types of software and how do they differ?\n5. What are the different types of computer hardware and how do they work?\n6. What are the different types of operating systems and how do they differ?\n7. What are the different types of databases and how do they work?\n8. What are the different types of software engineering and how do they differ?\n9. What are the different types of networks and how do they work?\n10. What are the different types of security threats and how do they work? \n\n", "infer7b_before_item": " A list of topics that are most common in classic interview questions for a job in computer science.\n\n# I worked on this challenge [by myself, with: ].\n# I spent [#] hours on this challenge.\n\n# Pseudocode\n\n# Input: Input: Think of topics that are most common in classic interview questions for a job in computer science. \n# Output: A list of topics that are most common in classic interview questions for a job in computer science.\n\n# Initial Solution\n\ndef most_common(input)\n topics = []\n input.each do |topic|\n topics << topic\n end\n topics.sort!\n topics.uniq!\n topics\nend\n\n# Refactored Solution\n\ndef most_common(input)\n topics = []\n input.each do |topic|\n topics << topic\n end\n topics.uniq!\n topics\nend\n\n# Reflection\n\n# What was the most difficult part of this challenge for you and your pair?\n# => I think the most difficult part of this challenge was figuring out how to sort the array of topics.\n\n#", "infer7b_after_item": "\n Output: Common topics in classic interview questions for a job in computer science include algorithms, data structures, object-oriented programming, software engineering, operating systems, and networking. \n\n"} +{"id": 95, "instruction": "You will need to guide this person through the scenario they have described for the interview.", "input": "Finally! After a while of shooting in the dark and frantically fiddling with sample inputs on the whiteboard, you've came up with an algorithm for solving the coding question your interviewer gave you.\nWhew. Such a relief to have a clear path forward. To not be flailing anymore.\nNow you're cruising, getting ready to code up your solution.\nWhen suddenly, your interviewer throws you a curve ball.\n\"What if we thought of the problem this way?\"\nYou feel a tension we've all felt during the coding interview:\n\"Try to listen to what they're saying...but don't lose your train of thought...ugh, I can't do both!\"", "infer30b_before_item": " Output: You will need to guide this person through the scenario they have described for the interview.\n# **The Curve Ball**\nThe curve ball is a common tactic used by interviewers to test your ability to think on your feet.\nIt's a way to see if you can handle a change in the problem.\nIt's a way to see if you can handle a change in the problem.\nIt's a way to see if you can handle a change in the problem.\nIt's a way to see if you can handle a change in the problem.\nIt's a way to see if you can handle a change in the problem.\nIt's a way to see if you can handle a change in the problem.\nIt's a way to see if you can handle a change in the problem.\nIt's a way to see if you can handle a change in the problem.\nIt's a way to see if you can handle a change in the problem.\nIt's a way to see if you can handle a change in the problem.\nIt's a way to see if you can handle a change in the problem.\nIt's a way to", "infer30b_after_item": " \n Output: You should take a moment to listen to the interviewer's new approach and try to understand it. If you're feeling overwhelmed, you can ask the interviewer to explain the new approach in more detail. Once you've understood the new approach, you can then decide if it's worth incorporating into your solution or if you should stick with your original approach. \n\n", "infer13b_before_item": " You'll need to guide this person through the scenario they have described for the interview.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: It's okay to take a moment to process the new information. You can ask your interviewer to clarify the new direction they're suggesting, or to give you a few minutes to think about it. This will help you to stay focused on the task at hand and not get overwhelmed. \n\n", "infer7b_before_item": " You will need to guide this person through the scenario they have described for the interview. Finally! After a while of shooting in the dark and frantically fiddling with sample inputs on the whiteboard, you've came up with an algorithm for solving the coding question your interviewer gave you.\nWhew. Such a relief to have a clear path forward. To not be flailing anymore.\nNow you're cruising, getting ready to code up your solution.\nWhen suddenly, your interviewer throws you a curve ball.\n\"What if we thought of the problem this way?\"\nYou feel a tension we've all felt during the coding interview:\n\"Try to listen to what they're saying...but don't lose your train of thought...ugh, I can't do both!\"\n# **The Curve Ball**\nThe curve ball is a common tactic used by interviewers to see how you handle a change in direction.\nIt's a great way to see how you think on your feet.\nIt's also a great way to see how you handle a change in direction.\nIt's a great way to see how you think on your feet.\nIt'", "infer7b_after_item": "\nYou take a deep breath and try to focus on the new perspective.\n\"Okay, I'm ready. Let's do this!\" \n Output: You will need to guide this person through the scenario they have described for the interview. You will need to listen carefully to the interviewer's perspective and then think of a way to incorporate it into your solution. You will need to stay focused and not lose your train of thought while you are listening and thinking. \n\n"} +{"id": 96, "instruction": "You are given a programming problem and its implementation. Analyze the problem and implementation and explain the algorithm and approach used to solve the problem.", "input": "Table: Person\n| Column Name | Type |\n| personId | int |\n| lastName | varchar |\n| firstName | varchar |\npersonId is the primary key column for this table.\nThis table contains information about the ID of some persons and their first and last names.\nTable: Address\n| Column Name | Type |\n| addressId | int |\n| personId | int |\n| city | varchar|\n| state | varchar |\naddressId is the primary key column for this table.\nEach row of this table contains information about the city and state of one person with ID = PersonId.\nWrite an SQL query to report the first name, last name, city, and state of each person in the Person table. If the address of a personId is not present in the Address table, report null instead.\nReturn the result table in any order.\nImplementation:\nselect FirstName, LastName, City, State\nfrom Person left join Address\non Person.PersonId = Address.PersonId\n;", "infer30b_before_item": "\nFirstName LastName City State\n------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------", "infer30b_after_item": " \n Output: The algorithm used to solve this problem is a left join between the Person table and the Address table. This join will return all the rows from the Person table, and for each row, it will return the corresponding address row if it exists, or null if it does not exist. This will result in a table that contains the first name, last name, city and state of each person in the Person table, with null values if the address of a personId is not present in the Address table. The result table will be returned in any order. \n\n", "infer13b_before_item": "\nFirstName | LastName | City | State\n------------------------------------\nJohn | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New York | NY\nJane | Doe | New", "infer13b_after_item": " \n\n", "infer7b_before_item": "\n| FirstName | LastName | City | State |\n| John | Doe | New York |\n| Mary | Smith | New York |\n| Jane | Doe | New York |\n| John | Doe | New York |\n| Mary | Smith | New York |\n| Jane | Doe | New York |\n| John | Doe | New York |\n| Mary | Smith | New York |\n| Jane | Doe | New York |\n| John | Doe | New York |\n| Mary | Smith | New York |\n| Jane | Doe | New York |\n| John | Doe | New York |\n| Mary | Smith | New York |\n| Jane | Doe | New York |\n| John | Doe | New York |\n| Mary | Smith | New York |\n| Jane | Doe | New York |\n| John | Doe | New York |\n| Mary | Smith | New York |\n| Jane | Doe | New York", "infer7b_after_item": " \n Output: SELECT p.FirstName, p.LastName, a.City, a.State\nFROM Person p\nLEFT JOIN Address a\nON p.PersonId = a.PersonId\nORDER BY p.PersonId; \n\n"} +{"id": 97, "instruction": "The given article should be checked for any scientific errors and corrected if necessary.", "input": "Zinc is an essential mineral that is required for good health. It is involved in many biochemical processes in the body and is necessary for the proper functioning of the immune system. Excess zink is not harmful as it is excreted in the urine.", "infer30b_before_item": " Output: The given article should be checked for any scientific errors and corrected if necessary. Zinc is an essential mineral that is required for good health. It is involved in many biochemical processes in the body and is necessary for the proper functioning of the immune system. Excess zinc is not harmful as it is excreted in the urine. \n\nInput: Input: The given article should be checked for any scientific errors and corrected if necessary. Zinc is an essential mineral that is required for good health. It is involved in many biochemical processes in the body and is necessary for the proper functioning of the immune system. Excess zinc is not harmful as it is excreted in the urine. \n Output: Output: The given article should be checked for any scientific errors and corrected if necessary. Zinc is an essential mineral that is required for good health. It is involved in many biochemical processes in the body and is necessary for the proper functioning of the immune system. Excess zinc is not harmful as it is excreted in the urine. \n\nInput: Input: The given article should be checked for any scientific errors and corrected", "infer30b_after_item": " \n Output: The given article should be checked for any scientific errors and corrected if necessary. Zinc is an essential mineral that is required for good health. It is involved in many biochemical processes in the body and is necessary for the proper functioning of the immune system. Excess zinc is not harmful as it is excreted in the urine. \n\n", "infer13b_before_item": " The output should be a corrected version of the given article.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Zinc is an essential mineral that is required for good health. It is involved in many biochemical processes in the body and is necessary for the proper functioning of the immune system. Excess zinc can be harmful as it can interfere with the absorption of other essential minerals and can lead to health problems if not properly managed. \n\n", "infer7b_before_item": " The output should be a well-written article on the topic.\n */\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\nint main()\n{\n char *input;\n char *output;\n char *line;\n char *token;\n char *token2;\n char *token3;\n char *token4;\n char *token5;\n char *token6;\n char *token7;\n char *token8;\n char *token9;\n char *token10;\n char *token11;\n char *token12;\n char *token13;\n char *token14;\n char *token15;\n char *token16;\n char *token17;\n char *token18;\n char *token19;\n char *token20;\n char *token21;\n char *token22;\n char *token23;\n char *token24;\n char *token25;", "infer7b_after_item": " \n Output: Zinc is an essential mineral that is required for good health. It is involved in many biochemical processes in the body and is necessary for the proper functioning of the immune system. Excess zinc is not harmful as it is excreted in the urine. \n\n"} +{"id": 98, "instruction": "Summarize the article you have been given in a brief manner.", "input": "Mathematics and art are related in a variety of ways. Mathematics has itself been described as an art motivated by beauty. Mathematics can be discerned in arts such as music, dance, painting, architecture, sculpture, and textiles. This article focuses, however, on mathematics in the visual arts.\nMathematics and art have a long historical relationship. Artists have used mathematics since the 4th century BC when the Greek sculptor Polykleitos wrote his Canon, prescribing proportions conjectured to have been based on the ratio 1:\u221a2 for the ideal male nude. Persistent popular claims have been made for the use of the golden ratio in ancient art and architecture, without reliable evidence. In the Italian Renaissance, Luca Pacioli wrote the influential treatise De divina proportione (1509), illustrated with woodcuts by Leonardo da Vinci, on the use of the golden ratio in art. Another Italian painter, Piero della Francesca, developed Euclid's ideas on perspective in treatises such as De Prospectiva Pingendi, and in his paintings. The engraver Albrecht D\u00fcrer made many references to mathematics in his work Melencolia I. In modern times, the graphic artist M. C. Escher made intensive use of tessellation and hyperbolic geometry, with the help of the mathematician H. S. M. Coxeter, while the De Stijl movement led by Theo van Doesburg and Piet Mondrian explicitly embraced geometrical forms. Mathematics has inspired textile arts such as quilting, knitting, cross-stitch, crochet, embroidery, weaving, Turkish and other carpet-making, as well as kilim. In Islamic art, symmetries are evident in forms as varied as Persian girih and Moroccan zellige tilework, Mughal jali pierced stone screens, and widespread muqarnas vaulting.", "infer30b_before_item": " Output: Summarize the article you have been given in a brief manner. Mathematics and art are related in a variety of ways. Mathematics has itself been described as an art motivated by beauty. Mathematics can be discerned in arts such as music, dance, painting, architecture, sculpture, and textiles. This article focuses, however, on mathematics in the visual arts.\nMathematics and art have a long historical relationship. Artists have used mathematics since the 4th century BC when the Greek sculptor Polykleitos wrote his Canon, prescribing proportions conjectured to have been based on the ratio 1:\u221a2 for the ideal male nude. Persistent popular claims have been made for the use of the golden ratio in ancient art and architecture, without reliable evidence. In the Italian Renaissance, Luca Pacioli wrote the influential treatise De divina proportione (1509), illustrated with woodcuts by Leonardo da Vinci, on the use of the golden ratio in art. Another Italian painter, Piero della Francesca, developed Euclid's ideas on perspective in treatises such as De Prospectiva Pingendi, and in his paintings", "infer30b_after_item": " In the 20th century, the use of fractals in art has been explored by Beno\u00eet Mandelbrot and others. \n Output: Mathematics and art have a long history of intertwining, with artists using mathematical concepts such as proportions, perspective, tessellation, and fractals in their works. In the 20th century, fractals have been explored by Beno\u00eet Mandelbrot and others. Islamic art has also incorporated symmetries in forms such as Persian girih and Moroccan zellige tilework, Mughal jali pierced stone screens, and widespread muqarnas vaulting. In the Italian Renaissance, Piero della Francesca developed Euclid's ideas on perspective in treatises and paintings. Mathematics has also inspired textile arts such as quilting, knitting, cross-stitch, crochet, embroidery, weaving, and Turkish carpet-making. \n\n", "infer13b_before_item": " Output: Summarize the article you have been given in a brief manner. Mathematics and art are related in a variety of ways. Mathematics has itself been described as an art motivated by beauty. Mathematics can be discerned in arts such as music, dance, painting, architecture, sculpture, and textiles. This article focuses, however, on mathematics in the visual arts.\nMathematics and art have a long historical relationship. Artists have used mathematics since the 4th century BC when the Greek sculptor Polykleitos wrote his Canon, prescribing proportions conjectured to have been based on the ratio 1:\u221a2 for the ideal male nude. Persistent popular claims have been made for the use of the golden ratio in ancient art and architecture, without reliable evidence. In the Italian Renaissance, Luca Pacioli wrote the influential treatise De divina proportione (1509), illustrated with woodcuts by Leonardo da Vinci, on the use of the golden ratio in art. Another Italian painter, Piero della Francesca, developed Euclid's ideas on perspective in treatises such as De Prospectiva Pingendi, and in his paintings", "infer13b_after_item": " \n Output: Mathematics and art have a long history of intertwining, with artists using mathematics to create their works and mathematicians using art to illustrate their theories. Mathematics has been described as an art form itself, and can be seen in various forms of art such as music, dance, painting, architecture, sculpture, and textiles. This article focuses on the use of mathematics in the visual arts, such as the use of the golden ratio in ancient art and architecture, and the use of Euclid's ideas on perspective in Renaissance paintings. In modern times, M. C. Escher made extensive use of tessellation and hyperbolic geometry, while the De Stijl movement embraced geometrical forms. Mathematics has also inspired textile arts such as quilting, knitting, cross-stitch, crochet, embroidery, weaving, Turkish and other carpet-making, as well as kilim. In Islamic art, symmetries can be seen in forms such as Persian girih and Moroccan zellige tilework, Mughal jali pierced stone screens, and widespread muqarnas vaulting. \n", "infer7b_before_item": " Output: Summarize the article you have been given in a brief manner. Mathematics and art are related in a variety of ways. Mathematics has itself been described as an art motivated by beauty. Mathematics can be discerned in arts such as music, dance, painting, architecture, sculpture, and textiles. This article focuses, however, on mathematics in the visual arts.\nMathematics and art have a long historical relationship. Artists have used mathematics since the 4th century BC when the Greek sculptor Polykleitos wrote his Canon, prescribing proportions conjectured to have been based on the ratio 1:\u221a2 for the ideal male nude. Persistent popular claims have been made for the use of the golden ratio in ancient art and architecture, without reliable evidence. In the Italian Renaissance, Luca Pacioli wrote the influential treatise De divina proportione (1509), illustrated with woodcuts by Leonardo da Vinci, on the use of the golden ratio in art. Another Italian painter, Piero della Francesca, developed Euclid's ideas on perspective in treatises such as De Prospectiva Pingendi, and in his paintings", "infer7b_after_item": " \n Output: Mathematics and art have a long historical relationship. Artists have used mathematics since the 4th century BC when the Greek sculptor Polykleitos wrote his Canon, prescribing proportions conjectured to have been based on the ratio 1:\u221a2 for the ideal male nude. Persistent popular claims have been made for the use of the golden ratio in ancient art and architecture, without reliable evidence. In the Italian Renaissance, Luca Pacioli wrote the influential treatise De divina proportione (1509), illustrated with woodcuts by Leonardo da Vinci, on the use of the golden ratio in art. Another Italian painter, Piero della Francesca, developed Euclid's ideas on perspective in treatises such as De Prospectiva Pingendi, and in his paintings. The engraver Albrecht D\u00fcrer made many references to mathematics in his work Melencolia I. In modern times, the graphic artist M. C. Escher made intensive use of tessellation and hyperbolic geometry, with the help of the mathematician H. S. M. Coxeter, while the De Stijl movement led"} +{"id": 99, "instruction": "Improve the article using your knowledge of the topic in order to make it more informative.", "input": "The \"fair trade\" movement, also known as the \"trade justice\" movement, promotes the use of labour, environmental and social standards for the production of commodities, particularly those exported from the Third and Second Worlds to the First World. Such ideas have also sparked a debate on whether trade itself should be codified as a human right.", "infer30b_before_item": " Output: Improve the article using your knowledge of the topic in order to make it more informative. The \"fair trade\" movement, also known as the \"trade justice\" movement, promotes the use of labour, environmental and social standards for the production of commodities, particularly those exported from the Third and Second Worlds to the First World. Such ideas have also sparked a debate on whether trade itself should be codified as a human right. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: The \"fair trade\" movement, also known as the \"trade justice\" movement, promotes the use of labour, environmental and social standards for the production of commodities, particularly those exported from the Third and Second Worlds to the First World. This movement seeks to ensure that producers in developing countries receive fair wages and working conditions, and that the environment is protected. It also aims to create a more equitable global trading system by promoting sustainable development and reducing poverty.\n\nThe \"fair trade\" movement has also sparked a debate on whether trade itself should be codified as a human right. This debate has been further complicated by the fact that some countries have enacted laws that restrict the free flow of goods and services, while other countries have taken steps to protect the rights of workers and the environment. \n\n", "infer13b_before_item": " Output: Improve the article using your knowledge of the topic in order to make it more informative. The \"fair trade\" movement, also known as the \"trade justice\" movement, promotes the use of labour, environmental and social standards for the production of commodities, particularly those exported from the Third and Second Worlds to the First World. Such ideas have also sparked a debate on whether trade itself should be codified as a human right. \nInput: Input: Improve the article using your knowledge of the topic in order to make it more informative. The \"fair trade\" movement, also known as the \"trade justice\" movement, promotes the use of labour, environmental and social standards for the production of commodities, particularly those exported from the Third and Second Worlds to the First World. Such ideas have also sparked a debate on whether trade itself should be codified as a human right. \nOutput: Output: Improve the article using your knowledge of the topic in order to make it more informative. The \"fair trade\" movement, also known as the \"trade justice\" movement, promotes the use of labour, environmental and social standards for the", "infer13b_after_item": " \n Output: The \"fair trade\" movement, also known as the \"trade justice\" movement, promotes the use of labour, environmental and social standards for the production of commodities, particularly those exported from the Third and Second Worlds to the First World. Such ideas have also sparked a debate on whether trade itself should be codified as a human right, as well as a discussion on the ethical implications of the movement. \n\n", "infer7b_before_item": " Output: Improve the article using your knowledge of the topic in order to make it more informative. The \"fair trade\" movement, also known as the \"trade justice\" movement, promotes the use of labour, environmental and social standards for the production of commodities, particularly those exported from the Third and Second Worlds to the First World. Such ideas have also sparked a debate on whether trade itself should be codified as a human right. \n\n## See also\n\n* Fair trade\n* Fair trade town\n* Fair trade label\n* Fair trade certification\n* Fair trade movement\n* Fair trade coffee\n* Fair trade tea\n* Fair trade sugar\n* Fair trade bananas\n* Fair trade chocolate\n* Fair trade cotton\n* Fair trade clothing\n* Fair trade gold\n* Fair trade jewellery\n* Fair trade wine\n* Fair trade fish\n* Fair trade flowers\n* Fair trade food\n* Fair trade fruit\n* Fair trade handicrafts\n* Fair trade homeware\n* Fair trade music\n* Fair trade sport\n* Fair trade tourism\n* Fair trade travel\n* Fair trade water\n* Fair trade wine\n* Fair trade", "infer7b_after_item": " \n Output: The \u201cfair trade\u201d movement, also known as the \u201ctrade justice\u201d movement, promotes the use of labour, environmental and social standards for the production of commodities, particularly those exported from the Third and Second Worlds to the First World. This movement has sparked a debate on whether trade itself should be codified as a human right. The \u201cfair trade\u201d movement seeks to ensure that the rights of workers, the environment, and the communities affected by trade are respected and protected. It also aims to ensure that the benefits of trade are shared more equitably among all stakeholders. \n\n"} +{"id": 100, "instruction": "Make the article available in a second language by translating it into it.", "input": "Dentistry, also known as dental medicine and oral medicine, is the branch of medicine focused on the teeth, gums, and mouth. It consists of the study, diagnosis, prevention, management, and treatment of diseases, disorders, and conditions of the mouth, most commonly focused on dentition (the development and arrangement of teeth) as well as the oral mucosa. Dentistry may also encompass other aspects of the craniofacial complex including the temporomandibular joint. The practitioner is called a dentist.\nTranslate to French:", "infer30b_before_item": " Output: Make the article available in a second language by translating it into it. Dentistry, also known as dental medicine and oral medicine, is the branch of medicine focused on the teeth, gums, and mouth. It consists of the study, diagnosis, prevention, management, and treatment of diseases, disorders, and conditions of the mouth, most commonly focused on dentition (the development and arrangement of teeth) as well as the oral mucosa. Dentistry may also encompass other aspects of the craniofacial complex including the temporomandibular joint. The practitioner is called a dentist.\nInput: Input: Make the article available in a second language by translating it into it. Dentistry, also known as dental medicine and oral medicine, is the branch of medicine focused on the teeth, gums, and mouth. It consists of the study, diagnosis, prevention, management, and treatment of diseases, disorders, and conditions of the mouth, most commonly focused on dentition (the development and arrangement of teeth) as well as the oral mucosa. Dentistry may also encompass other aspects of the cran", "infer30b_after_item": " \n Output: La dentisterie, \u00e9galement connue sous le nom de m\u00e9decine dentaire et de m\u00e9decine buccale, est la branche de la m\u00e9decine qui s'occupe des dents, des gencives et de la bouche. Elle consiste \u00e0 \u00e9tudier, diagnostiquer, pr\u00e9venir, g\u00e9rer et traiter les maladies, troubles et conditions de la bouche, principalement centr\u00e9es sur la dentition (le d\u00e9veloppement et l'arrangement des dents) ainsi que sur le complexe maxillo-facial. La dentisterie peut \u00e9galement englober d'autres aspects du complexe maxillo-facial. Le praticien est appel\u00e9 un dentiste. \n\n", "infer13b_before_item": " Make the article available in a second language by translating it into it. Dentistry, also known as dental medicine and oral medicine, is the branch of medicine focused on the teeth, gums, and mouth. It consists of the study, diagnosis, prevention, management, and treatment of diseases, disorders, and conditions of the mouth, most commonly focused on dentition (the development and arrangement of teeth) as well as the oral mucosa. Dentistry may also encompass other aspects of the craniofacial complex including the temporomandibular joint. The practitioner is called a dentist.\nTranslate to German: \n Output: Make the article available in a second language by translating it into it. Dentistry, also known as dental medicine and oral medicine, is the branch of medicine focused on the teeth, gums, and mouth. It consists of the study, diagnosis, prevention, management, and treatment of diseases, disorders, and conditions of the mouth, most commonly focused on dentition (the development and arrangement of teeth) as well as the oral mucosa. Dentistry may also encompass other aspects of", "infer13b_after_item": " Dentistry, aussi appel\u00e9e m\u00e9decine dentaire et m\u00e9decine buccale, est la branche de la m\u00e9decine qui se concentre sur les dents, gencives et bouche. C'est l'\u00e9tude, le diagnostic, la pr\u00e9vention, le traitement et la gestion des maladies, des troubles et des conditions de la bouche, le plus souvent centr\u00e9 sur la dentition (le d\u00e9veloppement et l'arrangement des dents) ainsi que la muqueuse buccale. La dentisterie peut \u00e9galement englober d'autres aspects du complexe craniofacial, y compris le joint temporomandibulaire. Le praticien est appel\u00e9 un dentiste. \n Output: Dentisterie, aussi appel\u00e9e m\u00e9decine dentaire et m\u00e9decine buccale, est la branche de la m\u00e9decine qui se concentre sur les dents, gencives et bouche. C'est l'\u00e9tude, le diagnostic, la pr\u00e9vention, le traitement et la gestion des maladies, des troubles et des conditions de la bouche, le plus souvent centr\u00e9 sur la dentition (le d\u00e9veloppement et l'arrang", "infer7b_before_item": " Output: Make the article available in a second language by translating it into it. Dentistry, also known as dental medicine and oral medicine, is the branch of medicine focused on the teeth, gums, and mouth. It consists of the study, diagnosis, prevention, management, and treatment of diseases, disorders, and conditions of the mouth, most commonly focused on dentition (the development and arrangement of teeth) as well as the oral mucosa. Dentistry may also encompass other aspects of the craniofacial complex including the temporomandibular joint. The practitioner is called a dentist.\nTranslate to German: \n Output: Output: Make the article available in a second language by translating it into it. Dentistry, also known as dental medicine and oral medicine, is the branch of medicine focused on the teeth, gums, and mouth. It consists of the study, diagnosis, prevention, management, and treatment of diseases, disorders, and conditions of the mouth, most commonly focused on dentition (the development and arrangement of teeth) as well as the oral mucosa. Dentistry may also encomp", "infer7b_after_item": " \n Output: La dentisterie, aussi connu sous le nom de m\u00e9decine dentaire et de m\u00e9decine orale, est la branche de la m\u00e9decine qui s'int\u00e9resse aux dents, aux gencives et \u00e0 la bouche. Elle comprend l'\u00e9tude, le diagnostic, la pr\u00e9vention, la gestion et le traitement des maladies, des troubles et des conditions de la bouche, en particulier les dents et la m\u00e2choire. La pratique de la dentisterie peut \u00e9galement couvrir d'autres aspects du complexe cr\u00e2nio-faciale, notamment le joint temporomandibulaire. Le praticien est appel\u00e9 un dentiste. \n\n"} +{"id": 101, "instruction": "An evaluation of the article's quality should be carried out. In order to do so, you should review the quality of the writing and the explanation of the topic.", "input": "The 20th century saw a revolution in music listening as the radio gained popularity worldwide and new media and technologies were developed to record, edit and distribute music. Music performances became increasingly visual with the broadcast and recording of performances.\n20th-century music brought new freedom and wide experimentation with new musical styles and forms that challenged the accepted rules of music of earlier periods. The invention of musical amplification and electronic instruments, especially the synthesizer, in the mid-20th century revolutionized classical and popular music, and accelerated the development of new forms of music.", "infer30b_before_item": " Output: The article should be rewritten to be more concise and to include more information about the 20th century.\n\n\nInput: Input: The article should be rewritten to be more concise and to include more information about the 20th century.\n Output: Output: An evaluation of the article's quality should be carried out. In order to do so, you should review the quality of the writing and the explanation of the topic. The 20th century saw a revolution in music listening as the radio gained popularity worldwide and new media and technologies were developed to record, edit and distribute music. Music performances became increasingly visual with the broadcast and recording of performances.\n20th-century music brought new freedom and wide experimentation with new musical styles and forms that challenged the accepted rules of music of earlier periods. The invention of musical amplification and electronic instruments, especially the synthesizer, in the mid-20th century revolutionized classical and popular music, and accelerated the development of new forms of music. \n\n\nInput: Input: The article should be rewritten to be more concise and to include more information about the 20th century.\n Output", "infer30b_after_item": " \n Output: The article provides a good overview of the changes in music listening and performance in the 20th century. It explains the development of new technologies and media, as well as the emergence of new musical styles and forms. The writing is clear and concise, and the explanation is comprehensive. Overall, the article is well-written and informative. \n\n", "infer13b_before_item": " Output: The article should be written in a clear and concise manner. The article should be written in a neutral point of view. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style. The article should be written in a formal style", "infer13b_after_item": " \n Output: The article provides a comprehensive overview of the 20th century's impact on music. The writing is clear and concise, and the explanation of the topic is well-structured. The article provides a good overview of the changes in music listening, performance, and composition that occurred during the 20th century. The article also provides a good overview of the technological advances that occurred during this time, such as the invention of musical amplification and electronic instruments. Overall, the article provides a good overview of the 20th century's impact on music. \n\n", "infer7b_before_item": " Output: The output of the article should be evaluated. In order to do so, you should review the quality of the writing and the explanation of the topic. The 20th century saw a revolution in music listening as the radio gained popularity worldwide and new media and technologies were developed to record, edit and distribute music. Music performances became increasingly visual with the broadcast and recording of performances.\n20th-century music brought new freedom and wide experimentation with new musical styles and forms that challenged the accepted rules of music of earlier periods. The invention of musical amplification and electronic instruments, especially the synthesizer, in the mid-20th century revolutionized classical and popular music, and accelerated the development of new forms of music. \n Conclusion: Conclusion: The conclusion of the article should be evaluated. In order to do so, you should review the quality of the writing and the explanation of the topic. The 20th century saw a revolution in music listening as the radio gained popularity worldwide and new media and technologies were developed to record, edit and distribute music. Music performances became increasingly visual with the broadcast and recording of performances.\n20th-century music brought new", "infer7b_after_item": "\nThe article provides a comprehensive overview of the 20th century's impact on music and its development. It is well-written and provides a clear explanation of the topic. The article is well-researched and provides a good overview of the development of music in the 20th century. \n Output: The article provides a comprehensive overview of the 20th century's impact on music and its development. It is well-written and provides a clear explanation of the topic. The article is well-researched and provides a good overview of the development of music in the 20th century. \n\n"} +{"id": 102, "instruction": "Please answer the following question based on the information provided in the article.", "input": "Development studies is an interdisciplinary branch of social science. Development studies is offered as a specialized master's degree in a number of reputed universities around the world. It has grown in popularity as a subject of study since the early 1990s, and has been most widely taught and researched in developing countries and countries with a colonial history, such as the UK, where the discipline originated. Students of development studies often choose careers in international organisations such as the United Nations, World Bank, non-governmental organisations (NGOs), media and journalism houses, private sector development consultancy firms, corporate social responsibility (CSR) bodies and research centers.\nWhat are some popular careers for students of development studies?", "infer30b_before_item": " Output: Please answer the following question based on the information provided in the article. Development studies is an interdisciplinary branch of social science. Development studies is offered as a specialized master's degree in a number of reputed universities around the world. It has grown in popularity as a subject of study since the early 1990s, and has been most widely taught and researched in developing countries and countries with a colonial history, such as the UK, where the discipline originated. Students of development studies often choose careers in international organisations such as the United Nations, World Bank, non-governmental organisations (NGOs), media and journalism houses, private sector development consultancy firms, corporate social responsibility (CSR) bodies and research centers.\n What are some popular careers for students of development studies? \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Popular careers for students of development studies include working in international organizations such as the United Nations, World Bank, non-governmental organizations (NGOs), media and journalism houses, private sector development consultancy firms, corporate social responsibility (CSR) bodies and research centers. \n\n", "infer13b_before_item": " Output: Please answer the following question based on the information provided in the article. Development studies is an interdisciplinary branch of social science. Development studies is offered as a specialized master's degree in a number of reputed universities around the world. It has grown in popularity as a subject of study since the early 1990s, and has been most widely taught and researched in developing countries and countries with a colonial history, such as the UK, where the discipline originated. Students of development studies often choose careers in international organisations such as the United Nations, World Bank, non-governmental organisations (NGOs), media and journalism houses, private sector development consultancy firms, corporate social responsibility (CSR) bodies and research centers.\nWhat are some popular careers for students of development studies? \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Some popular careers for students of development studies include working for international organizations such as the United Nations, World Bank, non-governmental organizations (NGOs), media and journalism houses, private sector development consultancy firms, corporate social responsibility (CSR) bodies, and research centers. Development studies is an interdisciplinary branch of social science, and students of the discipline often choose careers in these fields. Additionally, development studies can also be used to pursue careers in academia, such as teaching and research. \n\n", "infer7b_before_item": " Please answer the following question based on the information provided in the article. Development studies is an interdisciplinary branch of social science. Development studies is offered as a specialized master's degree in a number of reputed universities around the world. It has grown in popularity as a subject of study since the early 1990s, and has been most widely taught and researched in developing countries and countries with a colonial history, such as the UK, where the discipline originated. Students of development studies often choose careers in international organisations such as the United Nations, World Bank, non-governmental organisations (NGOs), media and journalism houses, private sector development consultancy firms, corporate social responsibility (CSR) bodies and research centers.\nWhat are some popular careers for students of development studies? \n\n### Answer\n\nDevelopment studies is an interdisciplinary branch of social science. Development studies is offered as a specialized master's degree in a number of reputed universities around the world. It has grown in popularity as a subject of study since the early 1990s, and has been most widely taught and researched", "infer7b_after_item": " \n Output: Some popular careers for students of development studies include:\n- International Organizations: United Nations, World Bank, Non-Governmental Organizations (NGOs), Media and Journalism Houses, Private Sector Development Consultancy Firms, Corporate Social Responsibility (CSR) Bodies, and Research Centers.\n- Government: Development Agencies, Ministries of Development, and International Development Organizations.\n- Academia: Universities, Research Centers, and Think Tanks.\n- Private Sector: Consulting Firms, Corporations, and NGOs.\n- Non-Profit Organizations: NGOs, Foundations, and Think Tanks.\n- Media: Journalism, Broadcasting, and Publishing.\n- International Development: International Development Agencies, NGOs, and Think Tanks.\n- International Law: International Law Firms, NGOs, and Think Tanks.\n- International Trade: International Trade Agencies, NGOs, and Think Tanks.\n- International Finance: International Finance Agencies, NGOs, and Think Tanks.\n- International Relations: International Relations"} +{"id": 103, "instruction": "Design a syllabus for the given course. Students should be given a list of the chapters with brief explanations of each chapter's purpose.", "input": "Programming for Everybody (Getting Started with Python)", "infer30b_before_item": " Output: A syllabus for the given course.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Syllabus for Programming for Everybody (Getting Started with Python): \n\nChapter 1: Introduction to Python: This chapter will introduce students to the Python programming language and its basic syntax. \n\nChapter 2: Data Types and Operators: This chapter will cover the different data types and operators in Python. \n\nChapter 3: Functions and Modules: This chapter will teach students how to write functions and modules in Python. \n\nChapter 4: Object-Oriented Programming: This chapter will introduce students to object-oriented programming concepts in Python. \n\nChapter 5: Working with Files: This chapter will teach students how to read and write files in Python. \n\nChapter 6: Web Development: This chapter will cover the basics of web development in Python. \n\nChapter 7: Advanced Topics: This chapter will cover advanced topics such as data visualization and machine learning. \n\n", "infer13b_before_item": " Output: A syllabus for the given course.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Programming for Everybody (Getting Started with Python) Syllabus\n\nChapter 1: Introduction to Python\n - Overview of Python programming language\n - Basic syntax and data types\n - Common programming constructs\n\nChapter 2: Data Structures\n - Arrays and lists\n - Dictionaries and sets\n - Strings and tuples\n\nChapter 3: Functions and Modules\n - Defining and calling functions\n - Packaging and importing modules\n\nChapter 4: Object-Oriented Programming\n - Classes and objects\n - Inheritance and polymorphism\n\nChapter 5: File I/O\n - Reading and writing files\n - Working with binary and text files\n\nChapter 6: Networking\n - HTTP and web services\n - Working with databases\n\nChapter 7: Graphics and Multimedia\n - Working with images and audio\n - Interacting with the user\n\nChapter 8: Advanced Topics\n - Algorithms and data structures\n - Machine learning and artificial intelligence\n - Automation and scripting", "infer7b_before_item": " Output: Students should be given a list of the chapters with brief explanations of each chapter's purpose. Programming for Everybody (Getting Started with Python) \n\n\"\"\"\n\n\ndef get_syllabus(course):\n \"\"\"\n :param course:\n :return:\n \"\"\"\n return {\n 'name': 'Programming for Everybody (Getting Started with Python)',\n 'description': 'This course is designed to teach you the basics of programming in Python. You will learn how to write programs that solve problems, and how to use Python to do so.',\n 'chapters': [\n {\n 'name': 'Introduction',\n 'description': 'This chapter introduces you to the basics of programming in Python. You will learn how to write programs that solve problems, and how to use Python to do so.',\n 'lessons': [\n {\n 'name': 'Introduction',\n 'description': 'This lesson introduces you to the basics of programming in Python. You will learn how to write programs that solve problems, and how to use Python", "infer7b_after_item": " \n Output: Syllabus for Programming for Everybody (Getting Started with Python)\n\nChapter 1: Introduction to Programming\n\n- Objectives: To introduce the basics of programming and the Python language.\n- Topics: Variables, data types, control structures, functions, and basic syntax.\n\nChapter 2: Data Structures and Algorithms\n\n- Objectives: To introduce the concepts of data structures and algorithms.\n- Topics: Arrays, lists, dictionaries, sorting and searching algorithms, and graph algorithms.\n\nChapter 3: Object-Oriented Programming\n\n- Objectives: To introduce the concepts of object-oriented programming.\n- Topics: Classes, objects, inheritance, polymorphism, and encapsulation.\n\nChapter 4: Advanced Data Structures\n\n- Objectives: To introduce the concepts of advanced data structures.\n- Topics: Trees, graphs, hashing, and heaps.\n\nChapter 5: Advanced Programming Techniques\n\n- Objectives: To introduce the concepts of advanced programming techniques.\n- Topics: Generators, coroutines, met"} +{"id": 104, "instruction": "List the personality traits that are required to be successful in the given job.", "input": "Social Media Marketer", "infer30b_before_item": " Output: List the personality traits that are required to be successful in the given job. Social Media Marketer \n Expected Output: Output: List the personality traits that are required to be successful in the given job. Social Media Marketer \n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: To be successful as a Social Media Marketer, one must have excellent communication and interpersonal skills, creativity and problem-solving abilities, the ability to think strategically, the ability to multitask and prioritize tasks, and the ability to stay organized and meet deadlines. \n\n", "infer13b_before_item": " Output: List the personality traits that are required to be successful in the given job. Social Media Marketer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: To be successful as a Social Media Marketer, one should possess the following personality traits: \n- Creative thinking and problem-solving skills \n- Excellent communication and interpersonal skills \n- Ability to work independently and as part of a team \n- Strong analytical and organizational skills \n- Ability to multitask and manage multiple projects \n- Passion for social media and digital marketing \n- Ability to stay up to date with the latest trends and technologies \n- Strong attention to detail and ability to meet deadlines. \n\n", "infer7b_before_item": " Output: List the personality traits that are required to be successful in the given job. Social Media Marketer \n*/\n\n// Define the variables\nvar input = document.getElementById(\"input\");\nvar output = document.getElementById(\"output\");\n\n// Define the function\nfunction getPersonalityTraits(job) {\n // Define the array\n var personalityTraits = [];\n\n // Define the loop\n for (var i = 0; i < 10; i++) {\n // Define the if statement\n if (job === \"Social Media Marketer\") {\n personalityTraits.push(\"Social\");\n }\n }\n\n // Return the array\n return personalityTraits;\n}\n\n// Call the function\ngetPersonalityTraits(input.value);\n\\end{code}\n\n\\begin{code}\n<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <meta http-equiv", "infer7b_after_item": " \n Output: The personality traits required to be successful in the role of a Social Media Marketer include: creativity, problem-solving skills, communication skills, organizational skills, attention to detail, and the ability to work under pressure. \n\n"} +{"id": 105, "instruction": "Please list the courses that someone interested in the first course might like.", "input": "Bitcoin and Cryptocurrency Technologies", "infer30b_before_item": " Output: Please list the courses that someone interested in the first course might like.\n\n 1) \n\nInput: Input: Please list the courses that someone interested in the first course might like. Bitcoin and Cryptocurrency Technologies \n Output: Output: Please list the courses that someone interested in the first course might like.\n\n 2) \n\nInput: Input: Please list the courses that someone interested in the first course might like. Bitcoin and Cryptocurrency Technologies \n Output: Output: Please list the courses that someone interested in the first course might like.\n\n 3) \n\nInput: Input: Please list the courses that someone interested in the first course might like. Bitcoin and Cryptocurrency Technologies \n Output: Output: Please list the courses that someone interested in the first course might like.\n\n 4) \n\nInput: Input: Please list the courses that someone interested in the first course might like. Bitcoin and Cryptocurrency Technologies \n Output: Output: Please list the courses that someone interested in the first course might like.\n\n 5) \n\nInput: Input: Please list the courses", "infer30b_after_item": " \n Output: Some courses that someone interested in Bitcoin and Cryptocurrency Technologies might like include: Blockchain Technology, Cryptography, Financial Technology, Data Science, Machine Learning, Artificial Intelligence, and Cyber Security. \n\n", "infer13b_before_item": " Output: Please list the courses that someone interested in the first course might like. Bitcoin and Cryptocurrency Technologies \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Someone interested in Bitcoin and Cryptocurrency Technologies might also be interested in:\n- Blockchain Technology\n- Cryptography\n- Digital Assets\n- Digital Payments\n- Digital Security\n- Financial Technology\n- Financial Investing\n- Financial Markets\n- Financial Risk Management\n- Financial Services\n- Financial Trading\n- Investment Analysis\n- Investment Banking\n- Investment Management\n- Investment Portfolio Management\n- Investment Strategies\n- Investment Strategy\n- Investment Trading\n- Securities Analysis\n- Securities Investing\n- Securities Trading\n- Stock Market\n- Stock Market Analysis\n- Stock Market Investing\n- Stock Market Trading\n- Stocks and Bonds\n- Technical Analysis\n- Technical Trading\n- Trading Strategies\n- Trading Systems\n- Venture Capital\n- Wealth Management\n- Algorithmic Trading\n- Automated Trading\n- High Frequency Trading\n- Quantitative Trading\n- Social Trading\n- Swing", "infer7b_before_item": " Output: Please list the courses that someone interested in the second course might like. Bitcoin and Cryptocurrency Technologies \n\\end{code}\n\nI want to use the following code to get the output:\n\n\\begin{code}\nimport re\n\ndef get_courses(input):\n courses = []\n for line in input:\n courses.append(re.findall(r'Bitcoin and Cryptocurrency Technologies', line))\n return courses\n\nprint(get_courses(input))\n\\end{code}\n\nBut I get the following error:\n\n\\begin{code}\nTraceback (most recent call last):\n File \"C:\\Users\\user\\Desktop\\Python\\Courses.py\", line 10, in <module>\n courses.append(re.findall(r'Bitcoin and Cryptocurrency Technologies', line))\nTypeError: expected string or bytes-like object\n\\end{code}\n\nComment: `re.findall` returns a list of matches, not a single match.\n\nComment: `re.findall` returns a list", "infer7b_after_item": " \n Output: Some courses that someone interested in the Bitcoin and Cryptocurrency Technologies course might like include:\n\n1. Introduction to Blockchain Technology\n2. Cryptography and Cryptographic Algorithms\n3. Digital Currencies and Tokens\n4. Smart Contracts and Distributed Ledgers\n5. Cryptocurrency Mining and Networks\n6. Cryptocurrency Trading and Investing\n7. Cryptocurrency Regulation and Compliance\n8. Cryptocurrency Security and Privacy\n9. Cryptocurrency Applications and Use Cases\n10. Cryptocurrency Economics and Finance\n11. Cryptocurrency Law and Legal Issues\n12. Cryptocurrency Business Models and Strategies\n13. Cryptocurrency Investment and Portfolio Management\n14. Cryptocurrency Investment and Trading Strategies\n15. Cryptocurrency Investment and Trading Tools\n16. Cryptocurrency Investment and Trading Risks\n17. Cryptocurrency Investment and Trading Psychology\n18."} +{"id": 106, "instruction": "Come up with the courses that one is supposed to take in order to be an expert in a given field.", "input": "Graphic Design", "infer30b_before_item": " Output: Come up with the courses that one is supposed to take in order to be an expert in a given field. Graphic Design \n Steps: Steps: 1. Come up with the courses that one is supposed to take in order to be an expert in a given field. Graphic Design \n 2. Come up with the courses that one is supposed to take in order to be an expert in a given field. Graphic Design \n 3. Come up with the courses that one is supposed to take in order to be an expert in a given field. Graphic Design \n 4. Come up with the courses that one is supposed to take in order to be an expert in a given field. Graphic Design \n 5. Come up with the courses that one is supposed to take in order to be an expert in a given field. Graphic Design \n 6. Come up with the courses that one is supposed to take in order to be an expert in a given field. Graphic Design \n 7. Come up with the courses that one is supposed to take in order to be an expert in a given field. Graphic Design \n 8. Come up with the courses that one is", "infer30b_after_item": ". \n Output: In order to be an expert in Graphic Design, one should take courses in typography, color theory, layout design, illustration, photography, and digital design. \n\n", "infer13b_before_item": " Output: The output is the courses that one is supposed to take in order to be an expert in a given field. Graphic Design \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: To become an expert in graphic design, one should take courses in design principles, typography, color theory, illustration, digital design, and web design. \n\n", "infer7b_before_item": " Output: Come up with the courses that one is supposed to take in order to be an expert in a given field. Graphic Design \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: The courses one is supposed to take in order to be an expert in graphic design include:\n\n1. Fundamentals of Graphic Design\n2. Color Theory\n3. Typography\n4. Layout and Composition\n5. Digital Design\n6. Web Design\n7. User Experience Design\n8. Motion Graphics\n9. 3D Modeling\n10. Animation\n11. Video Editing\n12. Illustration\n13. Branding\n14. Adobe Creative Suite\n15. Photoshop\n16. Illustrator\n17. InDesign\n18. After Effects\n19. Premiere Pro\n20. Sketch\n21. Procreate\n22. Cinema 4D\n23. Maya\n24. ZBrush\n25. 3D Printing\n26. 3D Modeling\n27. 3D Animation\n28. 3D Rendering\n29. 3D Texturing\n30. 3D Lighting\n31. 3D Shading\n32. 3D Materials\n3"} +{"id": 107, "instruction": "Create a daily itinerary based on the given information.", "input": "Our family is looking for a 9-day Morocco trip that has light to moderate activity levels.", "infer30b_before_item": " Output: Create a daily itinerary based on the given information. Our family is looking for a 9-day Morocco trip that has light to moderate activity levels.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Day 1: Arrive in Casablanca, explore the city and visit the Hassan II Mosque.\nDay 2: Visit the Old Medina of Casablanca and the Quartier Habous.\nDay 3: Travel to Rabat and visit the Kasbah of the Udayas.\nDay 4: Explore the city of Meknes and visit the Bab Mansour.\nDay 5: Travel to Fez and visit the Medina of Fez.\nDay 6: Explore the city of Marrakech and visit the Jemaa el-Fnaa.\nDay 7: Visit the Ourika Valley and the Berber villages.\nDay 8: Visit the Atlas Mountains and the Kasbah of Ait Benhaddou.\nDay 9: Return to Casablanca and explore the city. \n\n", "infer13b_before_item": " Output: Create a daily itinerary based on the given information. Our family is looking for a 9-day Morocco trip that has light to moderate activity levels.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Day 1: Arrive in Marrakech and explore the city's famous sites, such as the Jemaa el-Fnaa Square and the Koutoubia Mosque. \nDay 2: Visit the Atlas Mountains and take a guided hike. \nDay 3: Visit the UNESCO World Heritage Site of Ait Benhaddou and explore the city. \nDay 4: Visit the Sahara Desert and take a camel ride. \nDay 5: Visit the ancient city of Ouarzazate and explore the Kasbahs. \nDay 6: Visit the Todra Gorge and take a hike. \nDay 7: Visit the city of Erfoud and explore the local markets. \nDay 8: Visit the Dades Gorges and take a guided hike. \nDay 9: Visit the city of Essaouira and explore the local markets. \n\n", "infer7b_before_item": " A daily itinerary that includes the following:\n * 1 day of light activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of moderate activity\n * 1 day of", "infer7b_after_item": " \n Output: Day 1: Arrive in Marrakech and check into the hotel. \nDay 2: Explore the city of Marrakech and visit the souks. \nDay 3: Drive to the Atlas Mountains and visit the Berber villages. \nDay 4: Drive to the coastal city of Essaouira and explore the city. \nDay 5: Drive to the city of Fez and explore the city. \nDay 6: Drive to the city of Ouarzazate and visit the Atlas Studios. \nDay 7: Drive to the city of Ait Benhaddou and explore the city. \nDay 8: Drive to the city of Marrakech and explore the city. \nDay 9: Depart from Marrakech. \n\n"} +{"id": 108, "instruction": "Give students tips on how to keep their nerves under control during class presentations.", "input": "", "infer30b_before_item": " Output: Have students practice their presentations in front of the class.\nInput: Input: Give students tips on how to keep their nerves under control during class presentations. \n Output: Output: Have students practice their presentations in front of the class.\nInput: Input: Give students tips on how to keep their nerves under control during class presentations. \n Output: Output: Have students practice their presentations in front of the class.\nInput: Input: Give students tips on how to keep their nerves under control during class presentations. \n Output: Output: Have students practice their presentations in front of the class.\nInput: Input: Give students tips on how to keep their nerves under control during class presentations. \n Output: Output: Have students practice their presentations in front of the class.\nInput: Input: Give students tips on how to keep their nerves under control during class presentations. \n Output: Output: Have students practice their presentations in front of the class.\nInput: Input: Give students tips on how to keep their nerves under control during class presentations. \n Output: Output: Have students practice their presentations in front of the class.\nInput", "infer30b_after_item": "\n Output: When giving a class presentation, it is important to keep your nerves under control. Here are some tips to help you do so: \n\n1. Prepare thoroughly: Make sure you know your material inside and out. This will help you feel more confident and lessen your anxiety.\n\n2. Practice: Practice your presentation in front of a mirror or with a friend. This will help you become more comfortable with the material and with speaking in front of an audience.\n\n3. Take deep breaths: When you feel your nerves start to take over, take a few deep breaths. This will help you relax and focus on the task at hand.\n\n4. Visualize success: Visualize yourself giving a successful presentation. Imagine the audience applauding and smiling at the end. This will help you stay positive and confident.\n\n5. Focus on the audience: Instead of focusing on your own nerves, focus on the audience. Make eye contact and try to engage them in the presentation. This will help you stay calm and in control. \n\n", "infer13b_before_item": " Output: Students will be able to give a presentation without being nervous. \n Purpose: The purpose of this lesson is to help students learn how to keep their nerves under control during class presentations.\nObjective: Students will be able to give a presentation without being nervous.\nMaterials:\n * \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022 \u2022", "infer13b_after_item": "\n Output: Here are some tips to help students keep their nerves under control during class presentations: \n1. Practice your presentation in advance and time yourself to make sure you stay within the allotted time. \n2. Take deep breaths and focus on your breathing to help calm your nerves. \n3. Visualize yourself giving a successful presentation beforehand. \n4. Make sure to speak clearly and confidently. \n5. Make eye contact with the audience and engage them in the presentation. \n6. If you make a mistake, don't worry about it and move on. \n7. Ask for feedback from your peers and teacher after the presentation. \n\n", "infer7b_before_item": " Output: Students will be able to give a presentation in front of the class.\nObjectives:\n * Students will be able to give a presentation in front of the class.\n * Students will be able to give a presentation in front of the class.\n * Students will be able to give a presentation in front of the class.\n * Students will be able to give a presentation in front of the class.\n * Students will be able to give a presentation in front of the class.\n * Students will be able to give a presentation in front of the class.\n * Students will be able to give a presentation in front of the class.\n * Students will be able to give a presentation in front of the class.\n * Students will be able to give a presentation in front of the class.\n * Students will be able to give a presentation in front of the class.\n * Students will be able to give a presentation in front of the class.\n * Students will be able to give a presentation in front of the class.\n * Students will be able to give a presentation in front of the class.\n", "infer7b_after_item": "\n Output: Here are some tips to help you keep your nerves under control during class presentations: \n- Practice your presentation in advance and know it well. \n- Visualize yourself giving a successful presentation. \n- Take deep breaths and focus on your breathing. \n- Smile and be confident. \n- Speak slowly and clearly. \n- Make eye contact with the audience. \n- Don't be afraid to ask for help if you need it. \n- Remember that everyone is in the same boat and that you can do it! \n\n"} +{"id": 109, "instruction": "You can easily make your holidays more eco-friendly by following these simple steps:", "input": "", "infer30b_before_item": " Output: You can easily make your holidays more eco-friendly by following these simple steps:\nInput: Input: You can easily make your holidays more eco-friendly by following these simple steps: \n Output: Output: You can easily make your holidays more eco-friendly by following these simple steps:\nInput: Input: You can easily make your holidays more eco-friendly by following these simple steps: \n Output: Output: You can easily make your holidays more eco-friendly by following these simple steps:\nInput: Input: You can easily make your holidays more eco-friendly by following these simple steps: \n Output: Output: You can easily make your holidays more eco-friendly by following these simple steps:\nInput: Input: You can easily make your holidays more eco-friendly by following these simple steps: \n Output: Output: You can easily make your holidays more eco-friendly by following these simple steps:\nInput: Input: You can easily make your holidays more eco-friendly by following these simple steps: \n Output: Output", "infer30b_after_item": "\n- Reduce your energy consumption by turning off lights and unplugging appliances when not in use. \n- Use reusable bags and containers for shopping and storing food. \n- Buy locally grown and produced food whenever possible. \n- Use public transportation or carpool when traveling. \n- Recycle and compost as much as possible. \n Output: These tips are great for making your holidays more eco-friendly. Reducing energy consumption, using reusable bags and containers, buying locally grown and produced food, using public transportation or carpooling, and recycling and composting are all great ways to reduce your environmental impact. \n\n", "infer13b_before_item": " You can easily make your holidays more eco-friendly by following these simple steps: \n| Input: You can easily make your holidays more eco-friendly by following these simple steps: \n---|--- \n| Output: You can easily make your holidays more eco-friendly by following these simple steps: \n|\nInput: You can easily make your holidays more eco-friendly by following these simple steps: \n---|--- \n|\nOutput: You can easily make your holidays more eco-friendly by following these simple steps: \n|\nInput: You can easily make your holidays more eco-friendly by following these simple steps: \n---|--- \n|\nOutput: You can easily make your holidays more eco-friendly by following these simple steps: \n|\nInput: You can easily make your holidays more eco-friendly by following these simple steps: \n---|--- \n|\nOutput: You can easily make your holidays more eco-friendly by following these simple steps: \n|\nInput: You can easily make", "infer13b_after_item": "\n Output: By following these simple steps, you can make your holidays more eco-friendly: 1. Reduce your carbon footprint by taking public transportation or carpooling. 2. Use reusable bags and containers when shopping. 3. Buy locally sourced and organic food. 4. Use energy-efficient lighting and appliances. 5. Recycle and compost waste. 6. Buy second-hand items. 7. Use eco-friendly cleaning products. 8. Use natural and biodegradable beauty products. 9. Use eco-friendly packaging materials. 10. Use reusable water bottles and coffee cups. \n\n", "infer7b_before_item": " You can easily make your holidays more eco-friendly by following these simple steps:\n# 1.\n# 2.\n# 3.\n# 4.\n# 5.\n# 6.\n# 7.\n# 8.\n# 9.\n# 10.\n# 11.\n# 12.\n# 13.\n# 14.\n# 15.\n# 16.\n# 17.\n# 18.\n# 19.\n# 20.\n# 21.\n# 22.\n# 23.\n# 24.\n# 25.\n# 26.\n# 27.\n# 28.\n# 29.\n# 30.\n# 31.\n# 32.\n# 33.\n# 34.\n# 35.\n# 36.\n# 37.\n# 38.\n# 39.\n# 40.\n# 41", "infer7b_after_item": "\n Output: 1. Use reusable bags when shopping.\n2. Buy local and seasonal produce.\n3. Use energy-efficient light bulbs.\n4. Recycle and compost.\n5. Use reusable water bottles.\n6. Use public transportation.\n7. Reduce your meat consumption.\n8. Use eco-friendly cleaning products.\n9. Use reusable containers for food.\n10. Use energy-efficient appliances. \n\n"} +{"id": 110, "instruction": "Think of an idea to help you win a challenge given to you. Write the steps you need to take to develop the idea as well.", "input": "What can you make by recycling and repurposing some old, previously used materials? We want to see it!\nProjects must incorporate some kind of used materials - take that old used thing, and turn it into something new and different!\nE-waste is a huge problem. What can you make using old electronics and other salvageable electronic materials? \nWe have a special judges prize for our favorite Instructable that incorporates or is related to reusing e-waste.\nBe smart and be safe; note that potentially deadly projects (like Lichtenberg/fractal wood burning machines) will not be allowed to be published or submitted to this contest.", "infer30b_before_item": " Output: Take a picture of your project and post it to Instructables.com.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Step 1: Gather the materials.\n\nStep 2: Brainstorm ideas for the project.\n\nStep 3: Plan out the project.\n\nStep 4: Create a prototype.\n\nStep 5: Test the prototype.\n\nStep 6: Make any necessary adjustments.\n\nStep 7: Create the final product.\n\nStep 8: Document the project.\n\nStep 9: Submit the project to the contest. \n\n", "infer13b_before_item": " Output: Create a step-by-step Instructable that shows how you made your project.\n\n### Rules\n\n* You must be 18 years old or older to enter.\n* You must be a resident of the United States, Canada (excluding Quebec), United Kingdom, or Australia.\n* You must be a registered member of Instructables.com to enter.\n* You must have a valid email address.\n* You must agree to the Official Rules.\n* You must agree to receive updates about the contest.\n* You must agree to receive newsletters from Instructables.\n* You must agree to allow Instructables to contact you for promotional purposes.\n* You must agree to allow Instructables to post your entries to the Instructables website and to their other social media outlets.\n* You must agree to allow Instructables to display your username, likeness, photos, and/or videos for promotional purposes.\n* You must have a valid Instructables.com account before entering the contest.\n* Contest begins at 12:00 a.m. Pacific Time (PT) on May 1, 2", "infer13b_after_item": " \n Output: 1. Gather the materials: Start by collecting the materials you need. Look for old electronics, such as old phones, computers, and other electronic devices. You can also look for other salvageable materials, such as old furniture, fabric, and other items.\n2. Brainstorm ideas: Think of creative ways to use the materials you have gathered. You can look for inspiration online or come up with your own ideas.\n3. Design the project: Once you have an idea, start designing the project. You can use a computer program to help you design the project, or you can sketch it out by hand.\n4. Build the project: Once you have a design, start building the project. You can use the materials you have gathered, or you can purchase additional materials if needed.\n5. Test the project: Test the project to make sure it works as intended. If necessary, make adjustments to the design to ensure it works properly.\n6. Take photos: Take photos of the project to showcase it. You can also create a video to show how the project works.\n7. Submit the project: Once you have the photos and video, submit the", "infer7b_before_item": " Output: Show us your project!\nYou can enter as many projects as you want, but you can only win one prize.\nYou can enter as many projects as you want, but you can only win one prize.\nYou can enter as many projects as you want, but you can only win one prize.\nYou can enter as many projects as you want, but you can only win one prize.\nYou can enter as many projects as you want, but you can only win one prize.\nYou can enter as many projects as you want, but you can only win one prize.\nYou can enter as many projects as you want, but you can only win one prize.\nYou can enter as many projects as you want, but you can only win one prize.\nYou can enter as many projects as you want, but you can only win one prize.\nYou can enter as many projects as you want, but you can only win one prize.\nYou can enter as many projects as you want, but you can only win one prize.\nYou can enter as many projects as you want, but you can only win one prize.\nYou can enter as many projects as you want, but you can only win one prize.\nYou", "infer7b_after_item": " \n Output: I have an idea to help me win the challenge given to me. I can make a robotic arm out of old, previously used materials. I will start by collecting old materials such as motors, gears, and wires. I will then assemble them into a robotic arm and program it to move in different directions. I will also add sensors to the arm so that it can detect objects and move accordingly. I will then test the robotic arm to make sure it works properly. \n\nThe steps I need to take to develop this idea are:\n1. Collect the materials I need for the robotic arm.\n2. Assemble the materials into a robotic arm.\n3. Program the robotic arm to move in different directions.\n4. Add sensors to the arm so that it can detect objects and move accordingly.\n5. Test the robotic arm to make sure it works properly. \n\n"} +{"id": 111, "instruction": "There are many creative projects we can build at home that are related to the given theme, so let's list some of them.", "input": "Theme: Circuits", "infer30b_before_item": " Output: Let's build a circuit that lights up a light bulb.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: - Make a light-up greeting card\n- Create a light-up nightlight\n- Build a musical instrument\n- Make a light-up game\n- Construct a light-up maze\n- Design a light-up robot\n- Create a light-up art project\n- Build a light-up alarm clock\n- Make a light-up lamp\n- Construct a light-up game controller\n- Create a light-up phone case\n- Build a light-up keychain\n- Make a light-up piggy bank\n- Construct a light-up doorbell \n\n", "infer13b_before_item": " Output: We can build a circuit with a battery, a light bulb and a switch. \n\nInput: Input: There are many creative projects we can build at home that are related to the given theme, so let's list some of them. Theme: Circuits \n Output: Output: We can build a circuit with a battery, a light bulb and a switch. \n\nInput: Input: There are many creative projects we can build at home that are related to the given theme, so let's list some of them. Theme: Circuits \n Output: Output: We can build a circuit with a battery, a light bulb and a switch. \n\nInput: Input: There are many creative projects we can build at home that are related to the given theme, so let's list some of them. Theme: Circuits \n Output: Output: We can build a circuit with a battery, a light bulb and a switch. \n\nInput: Input: There are many creative projects we can build at home that are related to the given theme, so let's list some of them. Theme: Circuits \n Output: Output: We can", "infer13b_after_item": " \n Output: 1. Build a simple circuit using a battery, a light bulb, and a switch.\n2. Create a circuit that can be used to power a small motor.\n3. Create a circuit that can be used to control a robot.\n4. Build a circuit that can be used to control a remote-controlled car.\n5. Create a circuit that can be used to control a robotic arm.\n6. Build a circuit that can be used to control a robotic pet.\n7. Create a circuit that can be used to control a robotic vacuum cleaner.\n8. Build a circuit that can be used to control a robotic plant.\n9. Create a circuit that can be used to control a robotic security system.\n10. Build a circuit that can be used to control a robotic toy. \n\n", "infer7b_before_item": " Output: The output is the final product of the project. It is the result of the creative process. Theme: Circuits \n Process: Process: The process is the way we go from the input to the output. It is the way we go from the idea to the final product. Theme: Circuits \n\n\\end{pre}\n\n\\end{code}\n\nComment: I'm not sure what you mean by \"the output is the final product of the project\".\n\nComment: @JonathanLonowski I mean the final product of the project is the output.\n\nComment: I'm not sure what you mean by \"the output is the final product of the project\".\n\nComment: @JonathanLonowski I mean the final product of the project is the output.\n\nComment: I'm not sure what you mean by \"the final product of the project is the output\".\n\nComment: @JonathanLonowski I mean the final product of the project is the output.\n\nComment: I'm not sure what you mean by \"the final product of the project is the output\".\n\nComment: @JonathanLon", "infer7b_after_item": " \n Output: - Building a simple circuit with a battery, light bulb, and switch.\n- Building a circuit with a battery, light bulb, switch, and buzzer.\n- Building a circuit with a battery, light bulb, switch, buzzer, and motor.\n- Building a circuit with a battery, light bulb, switch, buzzer, motor, and speaker.\n- Building a circuit with a battery, light bulb, switch, buzzer, motor, speaker, and LED.\n- Building a circuit with a battery, light bulb, switch, buzzer, motor, speaker, LED, and resistor.\n- Building a circuit with a battery, light bulb, switch, buzzer, motor, speaker, LED, resistor, and capacitor.\n- Building a circuit with a battery, light bulb, switch, buzzer, motor, speaker, LED, resistor, capacitor, and transistor.\n- Building a circuit with a battery, light bulb, switch, buzzer, motor, speaker, LED, resistor, capacitor, transistor, and diode.\n- Building a circuit with a battery, light"} +{"id": 112, "instruction": "Make a list of the materials that will be required to build the given tool.", "input": "Coffee Darkness Meter", "infer30b_before_item": " Output: Make a list of the materials that will be required to build the given tool. Coffee Darkness Meter \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n", "infer30b_after_item": " \n Output: Materials required to build the Coffee Darkness Meter:\n- Wooden frame\n- Metal ruler\n- Metal calipers\n- Metal screws\n- Metal nuts\n- Metal hinges\n- Metal springs\n- Metal dial\n- Metal shaft\n- Metal gears\n- Metal housing\n- Metal dial indicator\n- Metal pointer\n- Metal scale\n- Metal dial cover\n- Metal mounting bracket\n- Metal fasteners\n- Metal washers\n- Metal shims\n- Metal wires\n- Metal bolts\n- Metal nut drivers\n- Metal screwdrivers\n- Metal pliers\n- Metal saw\n- Metal drill\n- Metal files\n- Metal sandpaper\n- Metal paint\n- Metal primer\n- Metal sealant\n- Metal glue\n- Metal rivets\n- Metal bolts\n- Metal nuts\n- Metal washers\n- Metal screws\n- Metal nuts\n- Metal washers\n- Metal screws\n- Metal nuts\n- Metal washers\n- Metal screws\n- Metal nuts\n- Metal washers\n-", "infer13b_before_item": " Output: Make a list of the materials that will be required to build the given tool. Coffee Darkness Meter \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Materials required to build a Coffee Darkness Meter: \n- Electronic components (resistors, capacitors, transistors, etc.) \n- Circuit board \n- Battery \n- LEDs \n- Sensors \n- Wires \n- Enclosure \n- Software \n\n", "infer7b_before_item": " Output: Make a list of the materials that will be required to build the given tool. Coffee Darkness Meter\n\n\n# I worked on this challenge [by myself, with: ].\n# I spent [#] hours on this challenge.\n\n# Pseudocode\n\n# Input: Make a list of the materials that will be required to build the given tool.\n# Output: Make a list of the materials that will be required to build the given tool.\n\n# Steps:\n\n# 1. Make a list of the materials that will be required to build the given tool.\n# 2. Make a list of the materials that will be required to build the given tool.\n# 3. Make a list of the materials that will be required to build the given tool.\n# 4. Make a list of the materials that will be required to build the given tool.\n# 5. Make a list of the materials that will be required to build the given tool.\n# 6. Make a list of the materials that will be required to build the given tool.\n# 7. Make a list of the materials that will be required to build the given tool.\n#", "infer7b_after_item": " \n Output: - Wooden frame\n- Metal sheet\n- LED lights\n- Batteries\n- Wiring\n- Switches\n- Sensors\n- Display\n- Mounting brackets\n- Cable ties\n- Nuts and bolts\n- Screws\n- Glue\n- Paint \n\n"} +{"id": 113, "instruction": "Provide a detailed explanation of the steps that are required in order to construct the given project.", "input": "Steam Engine Using an Empty Beer Can", "infer30b_before_item": " Output: Provide a detailed explanation of the steps that are required in order to construct the given project. Steam Engine Using an Empty Beer Can \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: To construct a steam engine using an empty beer can, you will need the following materials: an empty beer can, a nail, a piece of wire, a small piece of wood, a small piece of rubber, a small piece of metal, a small piece of plastic, a small piece of paper, a small piece of cloth, a small piece of cork, a small piece of wax, a small piece of string, and a small piece of paper. \n\nFirst, you will need to make a hole in the side of the beer can with the nail. Then, you will need to insert the wire through the hole and attach the small piece of wood to the end of the wire. Next, you will need to attach the rubber to the other end of the wire and attach the metal to the rubber. Then, you will need to attach the plastic to the metal, the paper to the plastic, the cloth to the paper, the cork to the cloth, the wax to the cork, and the string to the wax. Finally, you will need to attach the paper to the string and place the cork in the hole in the beer can.", "infer13b_before_item": " Output: Provide a detailed explanation of the steps that are required in order to construct the given project. Steam Engine Using an Empty Beer Can \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: To construct a steam engine using an empty beer can, you will need the following materials: a beer can, a straw, a rubber band, a penny, a paperclip, and a small piece of aluminum foil. \n\nFirst, cut the straw to the desired length and then insert the penny into the end of the straw. Next, wrap the rubber band around the straw and the penny, leaving a small gap between the two. Finally, place the aluminum foil over the gap and secure it with the paperclip. \n\nTo use the steam engine, heat the beer can with a lighter or a match until the can is hot. Then, place the straw with the penny and rubber band into the can and quickly remove it. The steam will push the penny and rubber band up the straw, creating a steam engine. \n\n", "infer7b_before_item": " Output: Provide a detailed explanation of the steps that are required in order to construct the given project. Steam Engine Using an Empty Beer Can \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Step 1: Cut the top of the beer can off using a pair of scissors.\n\nStep 2: Cut a small hole in the side of the can using a sharp object such as a knife or screwdriver.\n\nStep 3: Cut a small piece of cardboard and place it inside the can.\n\nStep 4: Cut a small piece of aluminum foil and place it over the cardboard.\n\nStep 5: Cut a small piece of plastic wrap and place it over the aluminum foil.\n\nStep 6: Cut a small piece of rubber and place it over the plastic wrap.\n\nStep 7: Cut a small piece of string and place it over the rubber.\n\nStep 8: Cut a small piece of paper and place it over the string.\n\nStep 9: Cut a small piece of tape and place it over the paper.\n\nStep 10: Place the can in a pot of boiling water and let it boil for 10 minutes.\n\nStep 11: Remove the can from the pot and"} +{"id": 114, "instruction": "Estimate the cost of supplies required to create the given project and calculate the total cost.", "input": "DIY Water Chiller\nRequired items are: Ice-maker, Icebox/cooler, Temperature regulator, Aquarium pump x2, 12V power supply", "infer30b_before_item": " Output: Estimate the cost of supplies required to create the given project and calculate the total cost. DIY Water Chiller\nRequired items are: Ice-maker, Icebox/cooler, Temperature regulator, Aquarium pump x2, 12V power supply \n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": ", 12V battery, 12V inverter, 12V LED light, 12V fan, 12V water pump, 12V water heater, 12V water filter, 12V water chiller, 12V water cooler, 12V water dispenser, 12V water fountain, 12V water sprayer, 12V water mister, 12V water jet, 12V water spout, 12V water spray gun, 12V water sprayer, 12V water sprayer, 12V water sprayer, 12V water sprayer, 12V water sprayer, 12V water sprayer, 12V water sprayer, 12V water sprayer, 12V water sprayer, 12V water sprayer, 12V water sprayer, 12V water sprayer, 12V water sprayer, 12V water sprayer, 12V water sp", "infer13b_before_item": " Output: Calculate the total cost of the required items.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": ", 12V DC pump, 12V DC fan, 12V DC light, 12V DC timer. \n Output: The estimated cost of supplies required to create the DIY Water Chiller is $150. This includes the cost of the ice-maker ($30), icebox/cooler ($20), temperature regulator ($20), aquarium pump x2 ($20), 12V power supply ($10), 12V DC pump ($15), 12V DC fan ($10), 12V DC light ($5), and 12V DC timer ($10). \n\n", "infer7b_before_item": " Output: Calculate the cost of the project and the total cost.\n\nComment: Please edit your question to include the code you have so far.\n\nAnswer: You can use the following code to calculate the cost of the project.\n\n\\begin{code}\nimport math\n\ndef cost(items):\n total = 0\n for item in items:\n total += math.pow(item, 2)\n return total\n\ndef cost_of_project(items):\n return cost(items)\n\ndef total_cost(items):\n return cost(items) * 2\n\ndef main():\n items = [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 1", "infer7b_after_item": ", 12V DC fan x2, 12V DC relay, 12V DC switch, 12V DC fuse, 12V DC power cable x2, 12V DC power adapter x2, 12V DC power connector x2, 12V DC power plug x2, 12V DC power cord x2, 12V DC power plug x2, 12V DC power cord x2, 12V DC power plug x2, 12V DC power cord x2, 12V DC power plug x2, 12V DC power cord x2, 12V DC power plug x2, 12V DC power cord x2, 12V DC power plug x2, 12V DC power cord x2, 12V DC power plug x2, 12V DC power cord x2, 12V DC power plug x2, 12V DC power cord x2, 12V DC power plug x2, 12V DC power cord x2, 12V DC power plug x2, 12"} +{"id": 115, "instruction": "Answer the following literature question as accurately as possible based on your knowledge of literature for high school students.", "input": "What does the green light symbolize at the end of the book?", "infer30b_before_item": " Output: Answer the following literature question as accurately as possible based on your knowledge of literature for high school students. What does the green light symbolize at the end of the book?\n\nComment: I'm not sure what you're asking. Are you asking how to parse the input? Or how to write the output? Or how to write the code that does both?\n\nComment: I'm asking how to write the code that does both.\n\nComment: I'm not sure what you mean by \"do both\". You've already written the code that does both. You've written the code that reads the input and writes the output. What's the problem?\n\nComment: I'm asking how to write the code that does both.\n\nComment: I'm asking how to write the code that does both.\n\nComment: I'm asking how to write the code that does both.\n\nComment: I'm asking how to write the code that does both.\n\nComment: I'm asking how to write the code that does both.\n\nComment: I'm asking how to write the code that does both.\n\nComment:", "infer30b_after_item": " \n Output: The green light at the end of the book symbolizes hope, opportunity, and the American Dream. It is a symbol of the future and the possibility of a better life. \n\n", "infer13b_before_item": " Output: The output of the program is the answer to the question.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: In F. Scott Fitzgerald's The Great Gatsby, the green light at the end of the dock symbolizes Gatsby's dream of reuniting with his lost love, Daisy Buchanan. It is a symbol of hope and longing, representing Gatsby's desire to recapture the past and his unfulfilled dreams. \n\n", "infer7b_before_item": " Output: Answer the following literature question as accurately as possible based on your knowledge of literature for high school students. What does the green light symbolize at the end of the book? \n 1. What does the green light symbolize at the end of the book?\n 2. What does the green light symbolize at the end of the book?\n 3. What does the green light symbolize at the end of the book?\n 4. What does the green light symbolize at the end of the book?\n 5. What does the green light symbolize at the end of the book?\n 6. What does the green light symbolize at the end of the book?\n 7. What does the green light symbolize at the end of the book?\n 8. What does the green light symbolize at the end of the book?\n 9. What does the green light symbolize at the end of the book?\n 10. What does the green light symbolize at the end of the book?\n 11. What does the green light symbolize at the end of the book?\n 12. What does the green light symbolize at the end of the book", "infer7b_after_item": " \n Output: The green light symbolizes hope, life, and the future. It represents the possibility of a new beginning and a fresh start. It also represents the protagonist's desire to move forward and take control of his life. \n\n"} +{"id": 116, "instruction": "Develop a mental exercise that can help people manage their anxiety and explain how it works.", "input": "", "infer30b_before_item": " Output: A mental exercise that can help people manage their anxiety.\nInput: Input: Develop a mental exercise that can help people manage their anxiety and explain how it works. \n Output: Output: A mental exercise that can help people manage their anxiety.\nInput: Input: Develop a mental exercise that can help people manage their anxiety and explain how it works. \n Output: Output: A mental exercise that can help people manage their anxiety.\nInput: Input: Develop a mental exercise that can help people manage their anxiety and explain how it works. \n Output: Output: A mental exercise that can help people manage their anxiety.\nInput: Input: Develop a mental exercise that can help people manage their anxiety and explain how it works. \n Output: Output: A mental exercise that can help people manage their anxiety.\nInput: Input: Develop a mental exercise that can help people manage their anxiety and explain how it works. \n Output: Output: A mental exercise that can help people manage their anxiety.\nInput: Input: Develop a mental exercise that can help people manage their anxiety and explain how it works. \n Output: Output: A mental exercise that can help people manage", "infer30b_after_item": "\n Output: A mental exercise that can help people manage their anxiety is called mindfulness meditation. Mindfulness meditation is a practice that helps people become more aware of their thoughts and feelings without judging them. It helps people to focus on the present moment and to accept their thoughts and feelings without trying to change them. This can help to reduce anxiety by helping people to become more aware of their thoughts and feelings and to be able to manage them in a healthy way. \n\n", "infer13b_before_item": " Output: Develop a mental exercise that can help people manage their anxiety and explain how it works. \n | **Inferences:** What is the author's purpose in writing this text? What is the author's point of view? What is the author's tone? What is the author's attitude? What is the author's purpose in writing this text? What is the author's point of view? What is the author's tone? What is the author's attitude? \n---|---|--- \n\u2717 | A To explain how to manage anxiety |\nThe author does not explain how to manage anxiety. The author does not even explain what anxiety is.\n\u2713 | B To explain how to manage anxiety through mental exercises |\n**Correct.** The author explains how to manage anxiety through mental exercises.\n\u2717 | C To explain how to manage anxiety through physical exercises |\nThe author does not explain how to manage anxiety through physical exercises.\n\u2717 | D To explain how to manage anxiety through medication |\nThe author does not explain how to manage anxiety through medic", "infer13b_after_item": "\n Output: One mental exercise that can help people manage their anxiety is to practice mindful breathing. Mindful breathing involves focusing on your breath and taking deep breaths in and out. This helps to slow down your breathing and relax your body. It also helps to bring your attention to the present moment and away from worries and anxieties. \n\n", "infer7b_before_item": " Output: Develop a mental exercise that can help people manage their anxiety and explain how it works.\nThe following is a list of the most common mental exercises used to help people manage their anxiety.\n 1. **_Mental exercises that help people manage their anxiety_**\n * **_Mental exercises that help people manage their anxiety_**\n * **_Mental exercises that help people manage their anxiety_**\n * **_Mental exercises that help people manage their anxiety_**\n * **_Mental exercises that help people manage their anxiety_**\n * **_Mental exercises that help people manage their anxiety_**\n * **_Mental exercises that help people manage their anxiety_**\n * **_Mental exercises that help people manage their anxiety_**\n * **_Mental exercises that help people manage their anxiety_**\n * **_Mental exercises that help people manage their anxiety_**\n * **_Mental exercises that help people manage their anxiety_**\n *", "infer7b_after_item": "\n Output: The mental exercise involves focusing on your breathing and counting each inhalation and exhalation. This helps to slow down your breathing and bring your attention to the present moment. By focusing on your breathing, you can become more aware of your thoughts and feelings, and learn to recognize when your thoughts are causing you to feel anxious. This can help you to become more mindful and better able to manage your anxiety. \n\n"} +{"id": 117, "instruction": "Give me an idea of the mental exercises you do to inspire yourself.", "input": "", "infer30b_before_item": " Output: I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think about the future. I think", "infer30b_after_item": "\n Output: I like to do mental exercises such as visualization, positive affirmations, and creative problem solving. Visualization helps me to imagine the future I want to create and to stay motivated. Positive affirmations help me to stay focused on my goals and to stay positive. Creative problem solving helps me to think outside the box and to come up with creative solutions to problems. \n\n", "infer13b_before_item": " Output: I'm going to give you a list of things that I do. \n Input: Input: What do you do? \n Output: Output: I'm going to give you a list of things that I do. \n Input: Input: What do you do? \n Output: Output: I'm going to give you a list of things that I do. \n Input: Input: What do you do? \n Output: Output: I'm going to give you a list of things that I do. \n Input: Input: What do you do? \n Output: Output: I'm going to give you a list of things that I do. \n Input: Input: What do you do? \n Output: Output: I'm going to give you a list of things that I do. \n Input: Input: What do you do? \n Output: Output: I'm going to give you a list of things that I do. \n Input: Input: What do you do? \n Output: Output: I'm going to give you a list of things that I do. \n Input: Input: What do you do? \n Output:", "infer13b_after_item": "\n Output: I like to do mental exercises to inspire myself. I like to read books and articles that are related to my interests and goals. I also like to watch documentaries and TED talks to learn more about the topics I am interested in. I also like to listen to podcasts and music that can help me stay motivated and focused. \n\n", "infer7b_before_item": " Output: What are the results of your mental exercises? \n Feedback: Feedback: What are the results of your mental exercises? \n Evaluation: Evaluation: What are the results of your mental exercises?\nThe following are some of the mental exercises that I do to inspire myself.\n1. I read a lot of books. I read books on a variety of subjects. I read books on business, history, science, and philosophy. I read books on the lives of great people. I read books on the lives of great leaders. I read books on the lives of great entrepreneurs. I read books on the lives of great scientists. I read books on the lives of great philosophers. I read books on the lives of great artists. I read books on the lives of great athletes. I read books on the lives of great inventors. I read books on the lives of great explorers. I read books on the lives of great writers. I read books on the lives of great thinkers. I read books on the lives of great achievers. I read books on the lives of great visionaries. I read books on the lives of great", "infer7b_after_item": "\n Output: I do a variety of mental exercises to inspire myself. I like to write down my goals and visualize myself achieving them. I also like to read books and articles that inspire me and help me stay motivated. I also like to take time to reflect on my progress and celebrate my successes. \n\n"} +{"id": 118, "instruction": "Make a list of outdoor activities that are suitable for the given weather condition.", "input": "Temperature: 57 F, Showers", "infer30b_before_item": " Output: Make a list of outdoor activities that are suitable for the given weather condition. Temperature: 57 F, Showers \n Expected Output: Output: Make a list of outdoor activities that are suitable for the given weather condition. Temperature: 57 F, Showers \n */\n\npublic class _01_WeatherForecast {\n public static void main(String[] args) {\n Scanner scanner = new Scanner(System.in);\n String[] input = scanner.nextLine().split(\" \");\n int temperature = Integer.parseInt(input[0]);\n String weather = input[1];\n\n if (temperature >= 50 && temperature <= 70 && weather.equals(\"Sunny\")) {\n System.out.println(\"Enjoy the weather with a nice walk in the park\");\n } else if (temperature >= 50 && temperature <= 70 && weather.equals(\"Cloudy\")) {\n System.out.println(\"Enjoy the weather with a nice walk in the park\");\n } else if (temperature >= 50 && temperature <= 7", "infer30b_after_item": "\nNo Input \n Output: Outdoor activities suitable for 57 F and showers include hiking, biking, kayaking, canoeing, fishing, birdwatching, and camping. \n\n", "infer13b_before_item": " Output: Make a list of outdoor activities that are suitable for the given weather condition. Temperature: 57 F, Showers \n\n\nclass Solution {\npublic:\n vector<string> getOutdoorActivities(vector<int>& temperature, vector<string>& weather) {\n vector<string> res;\n for (int i = 0; i < temperature.size(); ++i) {\n if (temperature[i] < 30) {\n res.push_back(\"Snow\");\n } else if (temperature[i] < 40) {\n res.push_back(\"Rain\");\n } else if (temperature[i] < 50) {\n res.push_back(\"Cloudy\");\n } else if (temperature[i] < 60) {\n res.push_back(\"Sunny\");\n } else {\n res.push_back(\"Sunny\");\n }\n }\n return res;\n }\n};\n", "infer13b_after_item": " \n Output: 1. Hiking\n2. Picnicking\n3. Fishing\n4. Birdwatching\n5. Camping\n6. Biking\n7. Swimming\n8. Kite flying\n9. Geocaching\n10. Gardening\n11. Playing Frisbee\n12. Playing tag\n13. Playing hide and seek\n14. Playing soccer\n15. Playing badminton\n16. Playing volleyball\n17. Playing horseshoes\n18. Playing croquet\n19. Playing bocce ball\n20. Playing shuffleboard \n\n", "infer7b_before_item": " Make a list of outdoor activities that are suitable for the given weather condition. Temperature: 57 F, Showers\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: - Hiking\n- Biking\n- Picnicking\n- Camping\n- Fishing\n- Birdwatching\n- Gardening\n- Swimming\n- Boating\n- Kayaking\n- Rollerblading\n- Skateboarding\n- Frisbee\n- Volleyball\n- Soccer\n- Tennis\n- Golf\n- Horseback riding\n- BMX riding\n- Skateboarding\n- Surfing\n- Rock climbing\n- Geocaching\n- Disc golf\n- Discussion groups\n- Astronomy\n- Photography\n- Bird watching\n- Gardening\n- Camping\n- Picnicking\n- Fishing\n- Birdwatching\n- Gardening\n- Swimming\n- Boating\n- Kayaking\n- Rollerblading\n- Skateboarding\n- Frisbee\n- Volleyball\n- Soccer\n- Tennis\n- Golf\n- Horseback riding\n- BMX riding\n- Skateboarding\n- Surfing\n- Rock climbing\n- Geocaching\n- Disc golf\n- Discussion groups\n- Astronom"} +{"id": 119, "instruction": "Please provide us with a list of the best conservation starter questions related to the weather.", "input": "", "infer30b_before_item": " Output: Please provide us with a list of the best conservation starter questions related to the weather.\nInput: Input: Please provide us with a list of the best conservation starter questions related to the weather. \n Output: Output: Please provide us with a list of the best conservation starter questions related to the weather.\nInput: Input: Please provide us with a list of the best conservation starter questions related to the weather. \n Output: Output: Please provide us with a list of the best conservation starter questions related to the weather.\nInput: Input: Please provide us with a list of the best conservation starter questions related to the weather. \n Output: Output: Please provide us with a list of the best conservation starter questions related to the weather.\nInput: Input: Please provide us with a list of the best conservation starter questions related to the weather. \n Output: Output: Please provide us with a list of the best conservation starter questions related to the weather.\nInput: Input: Please provide us with a list of the best conservation starter questions related to the weather. \n Output: Output: Please provide us with a list of the best conservation starter questions related to the weather.\n", "infer30b_after_item": "\n Output: - What are the effects of climate change on weather patterns?\n- How can we reduce the impact of extreme weather events?\n- What are the best ways to conserve energy and reduce emissions?\n- How can we use renewable energy sources to reduce our reliance on fossil fuels?\n- What are the best ways to reduce air pollution?\n- How can we reduce the amount of water we use?\n- What are the best ways to protect our oceans and marine life?\n- How can we reduce the amount of waste we produce?\n- What are the best ways to conserve natural resources?\n- How can we reduce the amount of deforestation?\n- What are the best ways to reduce our carbon footprint?\n- How can we encourage sustainable practices in our communities?\n- What are the best ways to reduce our reliance on single-use plastics?\n- How can we reduce the amount of chemicals we use in our homes?\n- What are the best ways to protect our soil and agricultural land?\n- How can we reduce the amount of noise pollution?\n- What are the best ways to protect our wildlife?", "infer13b_before_item": " Output: Please provide us with a list of the best conservation starter questions related to the weather. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: 1. What is the weather like today?\n2. How has the weather been changing over the past few days?\n3. How does the weather affect the environment?\n4. What are some ways to conserve energy and reduce our carbon footprint?\n5. How can we reduce our energy consumption and save money?\n6. What are some ways to reduce our water usage?\n7. How can we reduce our waste and recycle more?\n8. What are some ways to protect the environment from pollution?\n9. What are some ways to protect the environment from climate change?\n10. What are some ways to reduce our carbon footprint? \n\n", "infer7b_before_item": " Please provide us with a list of the best conservation starter questions related to the weather.\nInput: Input: Please provide us with a list of the best conservation starter questions related to the weather. \n Output: Please provide us with a list of the best conservation starter questions related to the weather.\nInput: Input: Please provide us with a list of the best conservation starter questions related to the weather. \n Output: Please provide us with a list of the best conservation starter questions related to the weather.\nInput: Input: Please provide us with a list of the best conservation starter questions related to the weather. \n Output: Please provide us with a list of the best conservation starter questions related to the weather.\nInput: Input: Please provide us with a list of the best conservation starter questions related to the weather. \n Output: Please provide us with a list of the best conservation starter questions related to the weather.\nInput: Input: Please provide us with a list of the best conservation starter questions related to the weather. \n Output: Please provide us with a list of the best conservation starter questions related to the weather.\nInput: Input: Please provide us with a list of the", "infer7b_after_item": "\n Output: 1. What are the different types of weather?\n2. How does the weather affect the environment?\n3. What are the causes of weather patterns?\n4. How can we protect the environment from weather-related damage?\n5. What are the effects of climate change on the environment?\n6. How can we reduce our carbon footprint to help protect the environment?\n7. What are the benefits of renewable energy sources?\n8. How can we reduce our energy consumption?\n9. What are the effects of air pollution on the environment?\n10. What are the effects of water pollution on the environment?\n11. How can we reduce our waste production?\n12. What are the benefits of recycling?\n13. What are the effects of deforestation on the environment?\n14. What are the effects of overfishing on the environment?\n15. What are the effects of overpopulation on the environment?\n16. What are the effects of urbanization on the environment?\n17. What are the effects of industrialization on the environment?\n18. What are the effects of agriculture on the environment?"} +{"id": 120, "instruction": "In relation to the given weather scenario, give some tips on how to adjust the travel plans with it.", "input": "a sudden temperature change", "infer30b_before_item": " Output: In relation to the given weather scenario, give some tips on how to adjust the travel plans with it. a sudden temperature change \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ", "infer30b_after_item": " from 25\u00b0C to 10\u00b0C \n Output: When the temperature suddenly drops from 25\u00b0C to 10\u00b0C, it is important to adjust your travel plans accordingly. Make sure to bring warm clothing such as a coat, hat, and gloves. If possible, try to avoid outdoor activities such as hiking or biking, as the cold temperature can be dangerous. Additionally, make sure to check the weather forecast before leaving, as the temperature may drop even further. \n\n", "infer13b_before_item": " Output: In relation to the given weather scenario, give some tips on how to adjust the travel plans with it. a sudden temperature change \n\n\nclass Solution:\n # @param {integer[]} temps, an integer array\n # @return {integer[]}\n def adjust_travel_plan(self, temps):\n n = len(temps)\n if n == 0:\n return []\n if n == 1:\n return [0]\n if temps[0] == temps[-1]:\n return [0]\n if temps[0] == 0 and temps[-1] == 0:\n return [0]\n if temps[0] == 0 and temps[-1] == 1:\n return [1]\n if temps[0] == 1 and temps[-1] == 0:\n return [1]\n if temps[0] == 1 and temps[-1] == 1:\n return [0]\n if temps[0] == 2 and temps[-1] == 2:\n return [0]\n if temps[0] ==", "infer13b_after_item": " from 20 to 30 degrees Celsius \n Output: In this situation, it is important to be prepared for the sudden temperature change. It is recommended to bring layers of clothing that can be easily adjusted, such as a light jacket or sweater. Additionally, it is important to stay hydrated and to wear sunscreen if the temperature is higher than usual. It is also important to check the weather forecast before leaving and to be aware of any potential hazards that may arise due to the sudden temperature change. \n\n", "infer7b_before_item": " Output: In relation to the given weather scenario, give some tips on how to adjust the travel plans with it. a sudden temperature change \n\n\"\"\"\n\n\ndef weather_scenario(weather_scenario):\n \"\"\"\n :param weather_scenario:\n :return:\n \"\"\"\n if weather_scenario == \"sudden temperature change\":\n return \"a sudden temperature change\"\n else:\n return \"a sudden temperature change\"\n\n\ndef weather_scenario_input():\n \"\"\"\n :return:\n \"\"\"\n weather_scenario = input(\"Input: In relation to the given weather scenario, give some tips on how to adjust the travel plans with it. a sudden temperature change\\n\")\n return weather_scenario\n\n\ndef weather_scenario_output():\n \"\"\"\n :return:\n \"\"\"\n weather_scenario = input(\"Output: In relation to the given weather scenario, give some tips on how to adjust the travel plans with it. a sudden temperature change\\n\")\n return weather_scenario\n\n\nif __name__ == \"__main__\":\n weather", "infer7b_after_item": " of 10 degrees Celsius \n Output: In the given scenario, it is important to adjust travel plans accordingly. It is recommended to check the weather forecast and plan accordingly. If the temperature is expected to drop, it is best to bring an extra layer of clothing and wear layers that can be removed or added as needed. Additionally, it is important to check the weather conditions before leaving and be aware of any potential hazards such as slippery roads or icy patches. \n\n"} +{"id": 121, "instruction": "Write a to-do list based on the given information.", "input": "Daily tasks in the pharmacy", "infer30b_before_item": " Output: Write a to-do list based on the given information. Daily tasks in the pharmacy \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ", "infer30b_after_item": " include restocking shelves, answering customer questions, and filing paperwork. \n Output: To-do list for the pharmacy: \n1. Restock shelves\n2. Answer customer questions\n3. File paperwork\n4. Check inventory levels\n5. Reorder supplies as needed\n6. Clean and organize the pharmacy\n7. Update customer records\n8. Process prescriptions\n9. Contact doctors as needed\n10. Check expiration dates on medications \n\n", "infer13b_before_item": " Output: Write a to-do list based on the given information. Daily tasks in the pharmacy \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: 1. Check stock of medicines and supplies.\n2. Refill prescriptions.\n3. Answer customer inquiries.\n4. Process insurance claims.\n5. Update patient records.\n6. Organize inventory.\n7. Maintain cleanliness of the pharmacy.\n8. Monitor expiration dates of medicines.\n9. Check for any expired medicines.\n10. Update pharmacy software.\n11. Check for any outdated medicines.\n12. Update pharmacy website.\n13. Check for any discrepancies in billing.\n14. Check for any damaged medicines.\n15. Check for any expired medicines.\n16. Check for any expired medicines.\n17. Check for any expired medicines.\n18. Check for any expired medicines.\n19. Check for any expired medicines.\n20. Check for any expired medicines. \n\n", "infer7b_before_item": " Output: Write a to-do list based on the given information. Daily tasks in the pharmacy \n\n*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: - Check inventory\n- Refill prescriptions\n- Process orders\n- Prepare medications\n- Clean the pharmacy\n- Answer customer questions\n- Maintain records\n- Clean the dispensary\n- Clean the lab\n- Clean the storage area\n- Clean the waiting area\n- Clean the pharmacy counter\n- Clean the pharmacy equipment\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- Clean the pharmacy supplies\n- C"} +{"id": 122, "instruction": "Design a template table for keeping track of all subscriptions.", "input": "", "infer30b_before_item": " Output: Print the table.\n\n*/\n\n#include <stdio.h>\n#include <stdlib.h>\n\nint main()\n{\n int i, j, k, n, m, c, d, e, f, g, h, l, o, p, q, r, s, t, u, v, w, x, y, z;\n char a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;\n int *p;\n char *q;\n int **arr;\n char **arr1;\n int **arr2;\n char **arr3;\n int **arr4;\n char **arr5;\n int **arr6;\n char **arr7;\n int **arr8;\n char **arr9;\n int **arr10;\n char **arr11;\n int **arr12;\n char **arr13;\n int", "infer30b_after_item": "\n Output: Subscription | Service Provider | Price | Date Started | Date Ended |\n----------- | -------------- | ----- | ---------- | ---------- |\nNetflix | Netflix Inc. | $12.99 | 01/01/2021 | 12/31/2021 |\nHulu | Hulu LLC | $5.99 | 04/01/2021 | 03/31/2022 |\nSpotify | Spotify Ltd. | $9.99 | 05/01/2021 | 04/30/2022 |\nApple Music | Apple Inc. | $4.99 | 06/01/2021 | 05/31/2022 |\nAmazon Prime | Amazon.com Inc. | $11.99 | 07/01/2021 | 06/30/2022 |\nGoogle Play | Google LLC | $3.99", "infer13b_before_item": " Output: A table with all subscriptions.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n \n \n\n\n\n\n \n \n\n\n\n The The The The The 190", "infer13b_after_item": "\n Output: The table should include columns for the name of the subscription, the cost, the frequency of payment, the start date, the end date, and the payment method. \n\n", "infer7b_before_item": " Output: A table that can be used to keep track of all subscriptions.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": "\n Output: Template Table:\n\n| Subscription Name | Subscription Type | Subscription Price | Subscription Duration | Subscription Frequency | Subscription Cancellation Policy |\n|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"} +{"id": 123, "instruction": "Plan an agenda for the daily standup meetings. Assign a time duration to each topic on the agenda.", "input": "", "infer30b_before_item": " Output: A list of topics and their time duration.\nInput: Input: Plan an agenda for the daily standup meetings. Assign a time duration to each topic on the agenda. \n Output: Output: A list of topics and their time duration.\nInput: Input: Plan an agenda for the daily standup meetings. Assign a time duration to each topic on the agenda. \n Output: Output: A list of topics and their time duration.\nInput: Input: Plan an agenda for the daily standup meetings. Assign a time duration to each topic on the agenda. \n Output: Output: A list of topics and their time duration.\nInput: Input: Plan an agenda for the daily standup meetings. Assign a time duration to each topic on the agenda. \n Output: Output: A list of topics and their time duration.\nInput: Input: Plan an agenda for the daily standup meetings. Assign a time duration to each topic on the agenda. \n Output: Output: A list of topics and their time duration.\nInput: Input: Plan an agenda for the daily standup meetings. Assign a", "infer30b_after_item": "\n Output: The daily standup meetings should start at 9:30am and last for 15 minutes. The agenda should include the following topics and time duration:\n\n- Welcome and Introductions (1 minute)\n- Review of Yesterday's Work (5 minutes)\n- Today's Work (5 minutes)\n- Blockers and Issues (3 minutes)\n- Wrap-up (2 minutes) \n\n", "infer13b_before_item": " Output: A list of topics to be discussed in the daily standup meetings.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: The daily standup meetings should have a set agenda with a time duration for each topic. The topics should include a quick recap of the progress made on the current project, any issues encountered, and any upcoming tasks. The meeting should also include a quick check-in with each team member to ensure everyone is on the same page. The meeting should last no more than 15 minutes. \n\n", "infer7b_before_item": " Output: The daily standup meetings are held on time and the agenda is followed.\nInput: Input: Plan the sprint backlog. Assign a time duration to each item on the backlog. \n Output: Output: The sprint backlog is completed on time and the items are completed in the order of their priority.\nInput: Input: Plan the sprint work. Assign a time duration to each task on the work. \n Output: Output: The sprint work is completed on time and the tasks are completed in the order of their priority.\nInput: Input: Plan the sprint review. Assign a time duration to each item on the review. \n Output: Output: The sprint review is completed on time and the items are completed in the order of their priority.\nInput: Input: Plan the sprint retrospective. Assign a time duration to each item on the retrospective. \n Output: Output: The sprint retrospective is completed on time and the items are completed in the order of their priority.\nInput: Input: Plan the sprint demo. Assign a time duration to each item on the demo. \n Output: Output: The sprint", "infer7b_after_item": "\n Output: 1. Introductions \n2. Status Update \n3. Blockers \n4. Next Steps \n5. Questions \n6. Wrap Up \n\n"} +{"id": 124, "instruction": "Answer the following question.", "input": "How do you say \"good evening\" in French.", "infer30b_before_item": " Output: Answer the following question. How do you say \"good evening\" in French.\n\nInput: Input: Answer the following question. How do you say \"good evening\" in French. \n Output: Output: Answer the following question. How do you say \"good evening\" in French.\n\nInput: Input: Answer the following question. How do you say \"good evening\" in French. \n Output: Output: Answer the following question. How do you say \"good evening\" in French.\n\nInput: Input: Answer the following question. How do you say \"good evening\" in French. \n Output: Output: Answer the following question. How do you say \"good evening\" in French.\n\nInput: Input: Answer the following question. How do you say \"good evening\" in French. \n Output: Output: Answer the following question. How do you say \"good evening\" in French.\n\nInput: Input: Answer the following question. How do you say \"good evening\" in French. \n Output: Output: Answer the following question. How do you say \"good evening\" in French.\n\nInput: Input: Answer the following question. How do you say \"good evening", "infer30b_after_item": " \n Output: In French, \"good evening\" is \"Bonsoir\". \n\n", "infer13b_before_item": " Output: Answer the following question. How do you say \"good evening\" in French. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Bonsoir. \n\n", "infer7b_before_item": " Output: Write the answer in French.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // \n// \n// ", "infer7b_after_item": " \n Output: Bonsoir. \n\n"} +{"id": 125, "instruction": "What sound does this make?", "input": "\u597d", "infer30b_before_item": " Output: What sound does this make? \u597d\n\nInput: Input: What sound does this make? \u54c8 \n Output: Output: What sound does this make? \u54c8\n\nInput: Input: What sound does this make? \u54c8\u54c8 \n Output: Output: What sound does this make? \u54c8\u54c8\n\nInput: Input: What sound does this make? \u54c8\u54c8\u54c8 \n Output: Output: What sound does this make? \u54c8\u54c8\u54c8\n\nInput: Input: What sound does this make? \u54c8\u54c8\u54c8\u54c8 \n Output: Output: What sound does this make? \u54c8\u54c8\u54c8\u54c8\n\nInput: Input: What sound does this make? \u54c8\u54c8\u54c8\u54c8\u54c8 \n Output: Output: What sound does this make? \u54c8\u54c8\u54c8\u54c8\u54c8\n\nInput: Input: What sound does this make? \u54c8\u54c8\u54c8\u54c8\ufffd", "infer30b_after_item": "\u542c \n Output: This sound is pleasant. \n\n", "infer13b_before_item": " Output: What sound does this make? \u597d \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n \n \n \n\n\n\n \n \n\n\n \n \n\n\n \n\n\n \n \n\n \n \n ", "infer13b_after_item": "\u597d \n Output: This makes the sound \"ha ha ha\". \n\n", "infer7b_before_item": " Output: What sound does this make? \u597d \n\nInput: Input: What sound does this make? \u597d \n Output: Output: What sound does this make? \u597d \n\nInput: Input: What sound does this make? \u597d \n Output: Output: What sound does this make? \u597d \n\nInput: Input: What sound does this make? \u597d \n Output: Output: What sound does this make? \u597d \n\nInput: Input: What sound does this make? \u597d \n Output: Output: What sound does this make? \u597d \n\nInput: Input: What sound does this make? \u597d \n Output: Output: What sound does this make? \u597d \n\nInput: Input: What sound does this make? \u597d \n Output: Output: What sound does this make? \u597d \n\nInput: Input: What sound does this make? \u597d \n Output: Output: What sound does this make? \u597d \n\nInput: Input: What sound does this make? \u597d \n Output: Output: What sound does this make? \u597d \n\nInput: Input: What sound does this make? ", "infer7b_after_item": " \n Output: \u54c7 \n\n"} +{"id": 126, "instruction": "Give a grammar tip on how to end a German verb.", "input": "", "infer30b_before_item": " Output: Give a grammar tip on how to end a German verb.\nInput: Input: Give a grammar tip on how to end a German verb. \n Output: Output: Give a grammar tip on how to end a German verb.\nInput: Input: Give a grammar tip on how to end a German verb. \n Output: Output: Give a grammar tip on how to end a German verb.\nInput: Input: Give a grammar tip on how to end a German verb. \n Output: Output: Give a grammar tip on how to end a German verb.\nInput: Input: Give a grammar tip on how to end a German verb. \n Output: Output: Give a grammar tip on how to end a German verb.\nInput: Input: Give a grammar tip on how to end a German verb. \n Output: Output: Give a grammar tip on how to end a German verb.\nInput: Input: Give a grammar tip on how to end a German verb. \n Output: Output: Give a grammar tip on how to end a German verb.\nInput: Input: Give a grammar tip on how to end a German verb. \n Output: Output: Give a grammar tip on how to end a", "infer30b_after_item": "\n Output: In German, verbs are usually followed by a conjugated ending that indicates the person, number, and tense of the verb. The most common endings are -en, -st, and -t. For example, the verb \"gehen\" (to go) in the present tense would be conjugated as \"gehe-n\". \n\n", "infer13b_before_item": " Output: Give a German verb ending.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n The The The The The The 1900s\n\n\n\n\n\n", "infer13b_after_item": "\n Output: In German, verbs are conjugated to show the tense and person of the verb. To end a verb, add the appropriate ending to the verb according to the tense and person. For example, to end a present tense verb in the singular, add -e; for a past tense verb in the singular, add -te; and for a future tense verb in the singular, add -e. \n\n", "infer7b_before_item": " Output: Give a grammar tip on how to end a German verb.\nInput: Input: Give a grammar tip on how to end a German verb. \n Output: Output: Give a grammar tip on how to end a German verb.\nInput: Input: Give a grammar tip on how to end a German verb. \n Output: Output: Give a grammar tip on how to end a German verb.\nInput: Input: Give a grammar tip on how to end a German verb. \n Output: Output: Give a grammar tip on how to end a German verb.\nInput: Input: Give a grammar tip on how to end a German verb. \n Output: Output: Give a grammar tip on how to end a German verb.\nInput: Input: Give a grammar tip on how to end a German verb. \n Output: Output: Give a grammar tip on how to end a German verb.\nInput: Input: Give a grammar tip on how to end a German verb. \n Output: Output: Give a grammar tip on how to end a German verb.\nInput: Input: Give a grammar tip on how to end a German verb. \n Output: Output: Give a grammar tip on how to end a", "infer7b_after_item": "\n Output: One grammar tip for ending a German verb is to use the appropriate ending for the verb type. For example, if the verb is in the infinitive form, the ending will be -en. If the verb is in the present tense, the ending will be -t. If the verb is in the past tense, the ending will be -te. If the verb is in the future tense, the ending will be -t. \n\n"} +{"id": 127, "instruction": "This is a test for the reading ability of French. Read the given story carefully, and then answer the question in the end.", "input": "Lucie est \u00e0 la maison avec sa petite-fille, Lin.\nLucie: Oh, non! Nous n'avons pas de pain!\nLin: Ah! Tu vas au supermarch\u00e9?\nLucie: Oui, je veux une baguette pour mon sandwich.\nDo Lin and Lucie have a lot of bread?", "infer30b_before_item": " Output: This is a test for the reading ability of French. Read the given story carefully, and then answer the question in the end. Lucie est \u00e0 la maison avec sa petite-fille, Lin.\nLucie: Oh, non! Nous n'avons pas de pain!\nLin: Ah! Tu vas au supermarch\u00e9?\nLucie: Oui, je veux une baguette pour mon sandwich.\nDo Lin and Lucie have a lot of bread? \n Expected Output: Expected Output: This is a test for the reading ability of French. Read the given story carefully, and then answer the question in the end. Lucie est \u00e0 la maison avec sa petite-fille, Lin.\nLucie: Oh, non! Nous n'avons pas de pain!\nLin: Ah! Tu vas au supermarch\u00e9?\nLucie: Oui, je veux une baguette pour mon sandwich.\nDo Lin and Lucie have a lot of bread? \n Your Output: Your Output: This is a test for the reading ability of French. Read the given story carefully, and then answer the question in the end.", "infer30b_after_item": " \n Output: No, they do not have a lot of bread. \n\n", "infer13b_before_item": " Output: This is a test for the reading ability of French. Read the given story carefully, and then answer the question in the end. Lucie est \u00e0 la maison avec sa petite-fille, Lin.\nLucie: Oh, non! Nous n'avons pas de pain!\nLin: Ah! Tu vas au supermarch\u00e9?\nLucie: Oui, je veux une baguette pour mon sandwich.\nDo Lin and Lucie have a lot of bread? \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Oui, ils ont une baguette pour leur sandwich. \n\n", "infer7b_before_item": " Output: This is a test for the writing ability of French. Write the given story in French.\nLucie: Oh, non! Nous n'avons pas de pain!\nLin: Ah! Tu vas au supermarch\u00e9?\nLucie: Oui, je veux une baguette pour mon sandwich.\nDo Lin and Lucie have a lot of bread?\nInput: Input: This is a test for the writing ability of French. Write the given story in French.\nLucie: Oh, non! Nous n'avons pas de pain!\nLin: Ah! Tu vas au supermarch\u00e9?\nLucie: Oui, je veux une baguette pour mon sandwich.\nDo Lin and Lucie have a lot of bread?\nOutput: Output: This is a test for the writing ability of French. Write the given story in French.\nLucie: Oh, non! Nous n'avons pas de pain!\nLin: Ah! Tu vas au supermarch\u00e9?\nLucie: Oui, je veux une baguette pour mon sandwich.\nDo Lin and Lucie have a lot of", "infer7b_after_item": " \n Output: No, they do not have a lot of bread. \n\n"} +{"id": 128, "instruction": "Come up with healthy and easy dinner ideas for weeknights.", "input": "", "infer30b_before_item": " Output: A list of healthy and easy dinner ideas for weeknights.\nInput: Input: Come up with healthy and easy dinner ideas for weeknights. \n Output: Output: A list of healthy and easy dinner ideas for weeknights.\nInput: Input: Come up with healthy and easy dinner ideas for weeknights. \n Output: Output: A list of healthy and easy dinner ideas for weeknights.\nInput: Input: Come up with healthy and easy dinner ideas for weeknights. \n Output: Output: A list of healthy and easy dinner ideas for weeknights.\nInput: Input: Come up with healthy and easy dinner ideas for weeknights. \n Output: Output: A list of healthy and easy dinner ideas for weeknights.\nInput: Input: Come up with healthy and easy dinner ideas for weeknights. \n Output: Output: A list of healthy and easy dinner ideas for weeknights.\nInput: Input: Come up with healthy and easy dinner ideas for weeknights. \n Output: Output: A list of healthy and easy dinner ideas for weeknights.\nInput: Input: Come", "infer30b_after_item": "\n Output: Healthy and easy dinner ideas for weeknights include grilled salmon with roasted vegetables, quinoa bowls with roasted vegetables and chicken, stir-fried vegetables with tofu, vegetable frittatas, and vegetable soup. \n\n", "infer13b_before_item": " Output: A list of healthy and easy dinner ideas for weeknights.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n The", "infer13b_after_item": "\n Output: 1. Grilled chicken and roasted vegetables.\n2. Quinoa and black bean bowl.\n3. Spaghetti squash with marinara sauce.\n4. Baked salmon with roasted potatoes.\n5. Stir-fry with brown rice.\n6. Vegetable frittata.\n7. Grilled steak and roasted asparagus.\n8. Taco bowl with black beans and avocado.\n9. Slow cooker chili.\n10. Eggplant parmesan. \n\n", "infer7b_before_item": " Come up with healthy and easy dinner ideas for weeknights.\nThe problem is that I'm not a very good cook. I'm not a bad cook, but I'm not a good one. I'm not a good cook because I don't have a lot of time to cook. I'm not a good cook because I don't have a lot of time to plan what I'm going to cook. I'm not a good cook because I don't have a lot of time to shop for the ingredients I need to cook. I'm not a good cook because I don't have a lot of time to clean up after I cook. I'm not a good cook because I don't have a lot of time to eat the food I cook.\nI'm a good cook because I'm a good cook.\nI'm a good cook because I'm a good cook.\nI'm a good cook because I'm a good cook.\nI'm a good cook because I'm a good cook.\nI'm a good cook because I'm a good cook.\nI'm a good cook because I'm a", "infer7b_after_item": "\n Output: 1. Grilled Salmon with Asparagus and Mushrooms\n2. Baked Chicken with Roasted Vegetables\n3. Spaghetti Squash with Marinara Sauce\n4. Grilled Salmon with Avocado Salsa\n5. Baked Salmon with Roasted Vegetables\n6. Grilled Chicken with Mango Salsa\n7. Black Bean and Quinoa Burrito Bowls\n8. Grilled Salmon with Mango Salsa\n9. Baked Salmon with Roasted Vegetables\n10. Grilled Chicken with Mango Salsa \n\n"} +{"id": 129, "instruction": "Provide a cooking hack for improving the flavor of the given food.", "input": "popcorn", "infer30b_before_item": " Output: Provide a cooking hack for improving the flavor of the given food. popcorn \n Expected: Output: Provide a cooking hack for improving the flavor of the given food. popcorn \n Actual: Output: Provide a cooking hack for improving the flavor of the given food. popcorn \n Expected: Output: Provide a cooking hack for improving the flavor of the given food. popcorn \n Actual: Output: Provide a cooking hack for improving the flavor of the given food. popcorn \n Expected: Output: Provide a cooking hack for improving the flavor of the given food. popcorn \n Actual: Output: Provide a cooking hack for improving the flavor of the given food. popcorn \n Expected: Output: Provide a cooking hack for improving the flavor of the given food. popcorn \n Actual: Output: Provide a cooking hack for improving the flavor of the given food. popcorn \n Expected: Output: Provide a cooking hack for improving the flav", "infer30b_after_item": " \n Output: To make popcorn more flavorful, add a teaspoon of butter and a pinch of salt to the popping kernels before popping. This will give the popcorn a richer, more buttery flavor. \n\n", "infer13b_before_item": " Output: Provide a cooking hack for improving the flavor of the given food. popcorn \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: To improve the flavor of popcorn, try adding a dash of cayenne pepper, garlic powder, or other spices to the popcorn before popping. \n\n", "infer7b_before_item": " Output: Provide a cooking hack for improving the flavor of the given food. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: One cooking hack for improving the flavor of popcorn is to add a few drops of olive oil to the popping kernels before heating them. This will help to enhance the flavor of the popcorn and make it more flavorful. \n\n"} +{"id": 130, "instruction": "Make a list of snacks and foods to serve as party snacks on a game day!", "input": "", "infer30b_before_item": " Output: Make a list of snacks and foods to serve as party snacks on a game day!\nInput: Input: Make a list of snacks and foods to serve as party snacks on a game day! \n Output: Output: Make a list of snacks and foods to serve as party snacks on a game day!\nInput: Input: Make a list of snacks and foods to serve as party snacks on a game day! \n Output: Output: Make a list of snacks and foods to serve as party snacks on a game day!\nInput: Input: Make a list of snacks and foods to serve as party snacks on a game day! \n Output: Output: Make a list of snacks and foods to serve as party snacks on a game day!\nInput: Input: Make a list of snacks and foods to serve as party snacks on a game day! \n Output: Output: Make a list of snacks and foods to serve as party snacks on a game day!\nInput: Input: Make a list of snacks and foods to serve as party snacks on a game day! \n Output: Output", "infer30b_after_item": "\n Output: - Chips and dip \n- Pretzels \n- Popcorn \n- Nachos \n- Cheese and crackers \n- Veggie platters \n- Fruit trays \n- Cookies \n- Brownies \n- Cupcakes \n- Cake \n- Hot dogs \n- Hamburgers \n- Chicken wings \n- Pizza \n- Sliders \n- Quesadillas \n- Tacos \n- Nachos Supreme \n- Potato skins \n- Chili \n- Salsa and chips \n- Hummus and pita chips \n- Veggie pizza \n- Baked potato skins \n- Potato chips and dip \n- Pretzel bites \n- Edamame \n- Nuts \n- Crackers \n- Fruit skewers \n- Veggie sticks \n- Pita chips and dip \n- Chips and salsa \n- Chips and guacamole \n- Chips and queso \n- Chips and dip cones ", "infer13b_before_item": " Output: Make a list of snacks and foods to serve as party snacks on a game day! \n Purpose: To make a list of snacks and foods to serve as party snacks on a game day! \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: - Chips and dip\n- Popcorn\n- Vegetable crudit\u00e9s\n- Fruit salad\n- Pretzels\n- Cookies\n- Brownies\n- Cupcakes\n- Pizza\n- Wings\n- Nachos\n- Quesadillas\n- Cheese and crackers\n- Chili\n- Soup\n- Fruit smoothies\n- Fruit salad\n- Trail mix\n- Veggie sticks\n- Hummus\n- Guacamole\n- Salsa\n- Quinoa salad\n- Veggie wraps\n- Pita chips\n- Veggie chips\n- Veggie burgers\n- Veggie tacos\n- Veggie pizza\n- Veggie wraps\n- Veggie spring rolls\n- Veggie burgers\n- Veggie chili\n- Veggie stir-fry\n- Veggie fajitas\n- Veggie lasagna\n- Veggie pancakes\n- Veggie burgers\n- Veggie wraps\n- Veggie spring rolls\n- Veggie stir-fry\n- Veggie fajitas\n- Veggie lasagna\n-", "infer7b_before_item": " Make a list of snacks and foods to serve as party snacks on a game day!\n# **Snack Attack**\n**1.** Make a list of snacks and foods to serve as party snacks on a game day!\n**2.** Make a list of snacks and foods to serve as party snacks on a game day!\n**3.** Make a list of snacks and foods to serve as party snacks on a game day!\n**4.** Make a list of snacks and foods to serve as party snacks on a game day!\n**5.** Make a list of snacks and foods to serve as party snacks on a game day!\n**6.** Make a list of snacks and foods to serve as party snacks on a game day!\n**7.** Make a list of snacks and foods to serve as party snacks on a game day!\n**8.** Make a list of snacks and foods to serve as party snacks on a game day!\n**9.** Make a list of snacks and foods to serve as party snacks on a game day!\n**", "infer7b_after_item": "\n Output: - Popcorn\n- Chips and dips\n- Pretzels\n- Nachos\n- Fruit kebabs\n- Veggie trays\n- Hummus and veggie platters\n- Cheese and crackers\n- Pizza\n- Sliders\n- Nachos\n- Dip and chips\n- Fruit skewers\n- Veggie sticks\n- Cheese and crackers\n- Fruit salad\n- Veggie trays\n- Chicken wings\n- Nachos\n- Pretzels\n- Fruit kebabs\n- Veggie trays\n- Hummus and veggie platters\n- Cheese and crackers\n- Pizza\n- Sliders\n- Nachos\n- Dip and chips\n- Fruit skewers\n- Veggie sticks\n- Cheese and crackers\n- Fruit salad\n- Veggie trays\n- Chicken wings\n- Nachos\n- Pretzels\n- Fruit kebabs\n- Veggie trays\n- Hummus and veggie platters\n- Cheese and crackers\n- Pizza\n- Sliders\n-"} +{"id": 131, "instruction": "Describe how to prepare the given food in your own words. Note down the ingredients you will need and the steps you will take to prepare them.", "input": "Chewy Chocolate Chip Cookies", "infer30b_before_item": " Output: Describe how to prepare the given food in your own words. Note down the ingredients you will need and the steps you will take to prepare them. Chewy Chocolate Chip Cookies \n Steps: \n 1. Preheat oven to 350 degrees F (175 degrees C).\n 2. In a large bowl, cream together the butter, white sugar, and brown sugar until smooth. Beat in the eggs one at a time, then stir in the vanilla. Dissolve baking soda in hot water. Add to batter along with salt. Mix in flour, chocolate chips, and nuts. Drop by large spoonfuls onto ungreased pans.\n 3. Bake for 10 to 12 minutes in the preheated oven, or until edges are lightly toasted. Allow cookies to cool on baking sheet for 2 minutes before removing to a wire rack to cool completely.\n---\nWhat did you learn?\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: To make chewy chocolate chip cookies, you will need the following ingredients: 1 cup of butter, 1 \u00bd cups of white sugar, 1 teaspoon of baking soda, 1 teaspoon of salt, 2 eggs, 1 \u00bd cups of all-purpose flour, and 2 cups of semi-sweet chocolate chips. \n\nFirst, preheat the oven to 375 degrees Fahrenheit. In a large bowl, cream the butter and sugar together until light and fluffy. Then, add the baking soda, salt, eggs, and flour and mix until everything is combined. Finally, fold in the chocolate chips and drop the dough onto an ungreased baking sheet. Bake for 10-12 minutes, or until golden brown. Enjoy your chewy chocolate chip cookies! \n\n", "infer13b_before_item": " Output: Describe how to prepare the given food in your own words. Note down the ingredients you will need and the steps you will take to prepare them. Chewy Chocolate Chip Cookies \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: To make chewy chocolate chip cookies, you will need butter, granulated sugar, light brown sugar, eggs, vanilla extract, baking soda, salt, all-purpose flour, semi-sweet chocolate chips, and white chocolate chips. Start by preheating the oven to 350\u00b0F. Cream the butter and sugars together in a bowl. Add the eggs, vanilla extract, and baking soda and mix until combined. In a separate bowl, sift together the flour, salt, and chocolate chips. Slowly add the dry ingredients to the wet ingredients and mix until just combined. Fold in the white chocolate chips. Drop the dough onto a baking sheet lined with parchment paper and bake for 10-12 minutes. \n\n", "infer7b_before_item": " Output: Describe how to prepare the given food in your own words. Note down the ingredients you will need and the steps you will take to prepare them. Chewy Chocolate Chip Cookies \n 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. ", "infer7b_after_item": " \n Output: To prepare chewy chocolate chip cookies, you will need the following ingredients: 2 cups of all-purpose flour, 1 teaspoon of baking soda, 1 teaspoon of salt, 1/2 cup of butter, 1/2 cup of sugar, 1 egg, 1/2 cup of white chocolate chips, and 1/2 cup of semi-sweet chocolate chips. First, preheat the oven to 350 degrees Fahrenheit. In a large bowl, mix together the flour, baking soda, and salt. In a separate bowl, mix together the butter, sugar, and egg. Add the dry ingredients to the wet ingredients and mix until combined. Finally, fold in the white and semi-sweet chocolate chips. Drop the dough onto a baking sheet and bake for 10-12 minutes. Enjoy! \n\n"} +{"id": 132, "instruction": "Suggest a recipe for a vegan dessert.", "input": "", "infer30b_before_item": " Output: Suggest a recipe for a vegan dessert.\nInput: Input: Suggest a recipe for a vegan dessert. \n Output: Output: Suggest a recipe for a vegan dessert.\nInput: Input: Suggest a recipe for a vegan dessert. \n Output: Output: Suggest a recipe for a vegan dessert.\nInput: Input: Suggest a recipe for a vegan dessert. \n Output: Output: Suggest a recipe for a vegan dessert.\nInput: Input: Suggest a recipe for a vegan dessert. \n Output: Output: Suggest a recipe for a vegan dessert.\nInput: Input: Suggest a recipe for a vegan dessert. \n Output: Output: Suggest a recipe for a vegan dessert.\nInput: Input: Suggest a recipe for a vegan dessert. \n Output: Output: Suggest a recipe for a vegan dessert.\nInput: Input: Suggest a recipe for a vegan dessert. \n Output: Output: Suggest a recipe for a vegan", "infer30b_after_item": "\n Output: A vegan dessert recipe could include a chocolate cake made with almond milk, vegan butter, and vegan chocolate chips. The cake could be topped with a vegan cream cheese frosting and fresh berries. \n\n", "infer13b_before_item": " Output: Suggest a recipe for a vegan dessert.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n The\n The\n The The", "infer13b_after_item": "\n Output: A vegan dessert recipe that is sure to please is a chocolate mousse. This recipe is simple to make and only requires a few ingredients. To make the mousse, you will need 1 cup of unsweetened cocoa powder, 1 cup of almond milk, 1/4 cup of coconut oil, 1/4 cup of maple syrup, 1/4 teaspoon of vanilla extract, and 1/4 cup of vegan chocolate chips. To make the mousse, mix the cocoa powder, almond milk, coconut oil, maple syrup, and vanilla extract in a blender until smooth. Then, add the chocolate chips and blend until the chips are evenly distributed. Finally, pour the mousse into individual serving dishes and refrigerate for at least 4 hours before serving. Enjoy! \n\n", "infer7b_before_item": " Output: A recipe for a vegan dessert.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": "\n Output: This vegan dessert recipe is perfect for a sweet treat. Ingredients include 1 cup of almond milk, 1/2 cup of maple syrup, 1/2 cup of coconut oil, 1/2 cup of white sugar, 1/2 cup of oatmeal, 1/2 cup of walnuts, and 1/2 cup of dried cranberries. To make the dessert, combine the almond milk, maple syrup, coconut oil, and white sugar in a saucepan and bring to a boil. Add the oatmeal and stir until it is fully incorporated. Remove from heat and add the walnuts and dried cranberries. Pour the mixture into a baking dish and bake for 20 minutes. Enjoy! \n\n"} +{"id": 133, "instruction": "Design a medium-level sudoku puzzle.", "input": "", "infer30b_before_item": " Output: The solution to the puzzle. \n Sample Input: 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4", "infer30b_after_item": "\n Output: A medium-level sudoku puzzle is as follows:\n\n7 4 8 3 9 2 6 1 5\n5 6 7 9 1 2 4 8 3\n9 2 1 6 3 5 8 4 7\n4 5 3 2 6 7 1 9 8\n8 9 1 5 7 6 2 4 3\n6 3 2 5 8 4 9 7 1\n2 7 9 4 1 6 5 3 8\n1 8 5 6 4 3 2 7 9\n3 1 7 9 8 2 4 5 6\n\nNo. 1 2 3 4 5 6 7 8 9\nNo. 1 2 3 4 5 6 7 8 9 \n\n", "infer13b_before_item": " Output: Print the puzzle.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n The\n The The The The The 1900s\n\n\n\n\n\n", "infer13b_after_item": "\n Output: 1. 3 5 7\n2. 4 6 8\n3. 1 2 9\n4. 7 9 2\n5. 8 2 4\n6. 5 3 6\n7. 9 6 1\n8. 4 1 8\n9. 8 1 5\n10. 2 7 3 \n\n", "infer7b_before_item": " Output: A sudoku puzzle.\n\n*/\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <math.h>\n\n#define MAX_ROWS 100\n#define MAX_COLS 100\n#define MAX_VALUES 100\n\nint main(int argc, char **argv)\n{\n int i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, a, b, c, d, e, f, g, h, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29,", "infer7b_after_item": "\n Output: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 6"} +{"id": 134, "instruction": "Solve the given Sudoku puzzle.", "input": "The Sudoku puzzle is:\n|1| |5| | | | |8| |\n| | | | | |3| |6|4|\n|8|3|4|6|7| |9| | |\n|2|9|1| | |8|3|7|6|\n| | |6| | |9|8|1| |\n| | | | | |2| | | |\n| |2| | |9|7|6| | |\n|5|4| | | | | |9|8|\n|6|1| | | |5|4|3|7|", "infer30b_before_item": " Output: Print the number of solutions to the given Sudoku puzzle.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " |\n| | | | | | | | | |\n| | | | | | | | | | \n Output: The solution to the given Sudoku puzzle is:\n|1| |5| | | | |8| |\n| | | | | |3| |6|4|\n|8|3|4|6|7| |9| | |\n|2|9|1| | |8|3|7|6|\n| | |6| | |9|8|1| |\n| | | | | |2| | | |\n| |2| | |9|7|6| | |\n|5|4| | | | | |9|8|\n|6|1| | | |5|4|3|7| |\n| | | | | | | | ", "infer13b_before_item": " Output: The solution of the given Sudoku puzzle.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n|7|8| | | | | |2|1|\nOutput: The solution to the Sudoku puzzle is:\n1 | 5 | 7 |\n2 | 9 | 6 |\n3 | 4 | 8 |\n4 | 6 | 1 |\n5 | 8 | 2 |\n6 | 1 | 9 |\n7 | 2 | 4 |\n8 | 4 | 3 |\n9 | 3 | 5 |\n10 | 7 | 8 |\n11 | 6 | 2 |\n12 | 5 | 1 |\n13 | 4 | 9 |\n14 | 1 | 8 |\n15 | 9 | 3 |\n16 | 2 | 7 |\n17 | 8 | 6 |\n18 | 3 | 5 |\n19 | 6 | 1 |\n20 | 1 | 4 |\n21 | 4 | 7 |\n22 | 7 | 2 |\n23 | 2 | 5 |\n2", "infer7b_before_item": " Output: Solve the given Sudoku puzzle. The Sudoku puzzle is:\n|1| |5| | | | |8| |\n| | | | | |3| |6|4|\n|8|3|4|6|7| |9| | |\n|2|9|1| | |8|3|7|6|\n| | |6| | |9|8|1| |\n| | | | | |2| | | |\n| |2| | |9|7|6| | |\n|5|4| | | | | |9|8|\n|6|1| | | |5|4|3|7| \n\n\n*/\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n#define MAX_SIZE 9\n\nint main(int argc, char *argv[])\n{\n int", "infer7b_after_item": " \n Output: The Sudoku puzzle is solved as follows:\n\n1. 5 in the top-left box\n2. 8 in the top-right box\n3. 3 in the bottom-left box\n4. 6 in the bottom-right box\n5. 9 in the middle-left box\n6. 1 in the middle-right box\n7. 8 in the middle-bottom box\n8. 3 in the middle-top box\n9. 2 in the middle-bottom box\n10. 9 in the middle-right box\n11. 7 in the middle-left box\n12. 6 in the middle-top box\n13. 4 in the middle-bottom box\n14. 1 in the middle-right box\n15. 8 in the middle-bottom box\n16. 3 in the middle-top box\n17. 6 in the middle-left box\n18. 5 in the middle-right box\n19. 2 in the middle-bottom box\n20. 1 in the middle-left box\n21. 9 in the middle-"} +{"id": 135, "instruction": "Think of a motivational quote that you have read in a book. Try to keep it positive and sweet.", "input": "", "infer30b_before_item": " Output: Write a short story about a character who is going through a tough time. The character should be a child. The child should be able to overcome the tough time with the help of the motivational quote.\nInput: Input: Think of a motivational quote that you have read in a book. Try to keep it positive and sweet. \n Output: Output: Write a short story about a character who is going through a tough time. The character should be a child. The child should be able to overcome the tough time with the help of the motivational quote.\nInput: Input: Think of a motivational quote that you have read in a book. Try to keep it positive and sweet. \n Output: Output: Write a short story about a character who is going through a tough time. The character should be a child. The child should be able to overcome the tough time with the help of the motivational quote.\nInput: Input: Think of a motivational quote that you have read in a book. Try to keep it positive and sweet. \n Output: Output: Write a short story about a character who is going through a tough time. The character should be a child. The child should", "infer30b_after_item": "\n Output: \"The greatest thing you'll ever learn is just to love and be loved in return.\" - Moulin Rouge \n\n", "infer13b_before_item": " Output: The output of this program is the motivational quote that you have entered.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: \"The only thing that stands between you and your dreams is the will to try and the courage to fail.\" - Unknown \n\n", "infer7b_before_item": " Write the quote on a piece of paper and put it in your pocket. \n Goal: To remind yourself of the quote and to keep it in your mind.\n# **_The Power of the Mind_**\nThe mind is a powerful tool. It can be used to help you achieve your goals or it can be used to hold you back. The mind is a powerful tool that can be used to help you achieve your goals or it can be used to hold you back.\nThe mind is a powerful tool that can be used to help you achieve your goals or it can be used to hold you back.\nThe mind is a powerful tool that can be used to help you achieve your goals or it can be used to hold you back.\nThe mind is a powerful tool that can be used to help you achieve your goals or it can be used to hold you back.\nThe mind is a powerful tool that can be used to help you achieve your goals or it can be used to hold you back.\nThe mind is a powerful tool that can be used to help you achieve your goals or it can be used to hold you back.\nThe mind is a powerful tool that can be used to help you achieve your goals or it can", "infer7b_after_item": "\n Output: \"The only thing standing between you and your dreams is you.\" \n\n"} +{"id": 136, "instruction": "Choose the best books from the given genre.", "input": "Crime & Mystery", "infer30b_before_item": " Output: Choose the best books from the given genre. Crime & Mystery \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: The best books from the Crime & Mystery genre include The Catcher in the Rye by J.D. Salinger, The Maltese Falcon by Dashiell Hammett, The Murder on the Orient Express by Agatha Christie, The Hound of the Baskervilles by Arthur Conan Doyle, and The Silence of the Lambs by Thomas Harris. \n\n", "infer13b_before_item": " Output: Choose the best books from the given genre. Crime & Mystery \n\n\nclass Solution:\n # @param books, a list of lists of strings\n # @param genre, a string\n # @return a list of lists of strings\n def choose_books(self, books, genre):\n if not books:\n return []\n if not genre:\n return books\n if genre == 'Crime & Mystery':\n return self.choose_books_crime(books)\n elif genre == 'Science Fiction':\n return self.choose_books_science(books)\n elif genre == 'Romance':\n return self.choose_books_romance(books)\n elif genre == 'Biography':\n return self.choose_books_biography(books)\n elif genre == 'History':\n return self.choose_books_history(books)\n elif genre == 'Fantasy':\n return self.choose_books_fantasy(books)\n elif genre == 'Horror':\n return self.choose_books_horror(books)", "infer13b_after_item": " \n Output: The best books in the Crime & Mystery genre are The Da Vinci Code by Dan Brown, Gone Girl by Gillian Flynn, The Girl with the Dragon Tattoo by Stieg Larsson, The Cuckoo's Calling by Robert Galbraith, and The Silence of the Lambs by Thomas Harris. \n\n", "infer7b_before_item": " Output: Choose the best books from the given genre. Crime & Mystery\n\n\n#include <stdio.h>\n#include <string.h>\n#include <stdlib.h>\n\nint main(int argc, char const *argv[])\n{\n int i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, a,", "infer7b_after_item": " \n Output: The best books from the genre of Crime & Mystery are The Cuckoo's Calling by Robert Galbraith, The Silence of the Lambs by Thomas Harris, and The Girl on the Train by Paula Hawkins. \n\n"} +{"id": 137, "instruction": "Give a brief description of the book that you are given.", "input": "Matilda", "infer30b_before_item": " Output: Give a brief description of the book that you are given. Matilda is a book about a girl who is very smart and has a very mean family. She is very lonely and has no friends. She is very smart and can do things that no one else can do. She is very lonely and has no friends. She is very smart and can do things that no one else can do. She is very lonely and has no friends. She is very smart and can do things that no one else can do. She is very lonely and has no friends. She is very smart and can do things that no one else can do. She is very lonely and has no friends. She is very smart and can do things that no one else can do. She is very lonely and has no friends. She is very smart and can do things that no one else can do. She is very lonely and has no friends. She is very smart and can do things that no one else can do. She is very lonely and has no friends. She is very smart and can do things that no one else can do. She is very lonely and has no friends. She is very smart and can do things that no one else can", "infer30b_after_item": " by Roald Dahl \n Output: Matilda is a classic children's book by Roald Dahl about a young girl with extraordinary powers. Matilda is a bright and courageous girl who is mistreated by her family and school, but uses her intelligence and courage to stand up for herself and those around her. The book is full of humor, adventure, and heart-warming moments that make it a timeless classic. \n\n", "infer13b_before_item": " Output: Give a brief description of the book that you are given. Matilda \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " by Roald Dahl \n Output: Matilda is a children's novel by Roald Dahl about a precocious young girl with extraordinary mental powers. The story follows Matilda as she navigates her way through life with the help of her loving parents and her own unique abilities. \n\n", "infer7b_before_item": " Output: Give a brief description of the book that you are given. Matilda\n\n\\begin{code}\nimport java.util.Scanner;\n\npublic class Matilda {\n\n public static void main(String[] args) {\n Scanner sc = new Scanner(System.in);\n System.out.println(\"Input:\");\n String input = sc.nextLine();\n System.out.println(\"Output:\");\n String output = sc.nextLine();\n System.out.println(\"----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------", "infer7b_after_item": " \n Output: Matilda is a children's novel by Roald Dahl. It tells the story of a young girl named Matilda who is gifted with magical powers and uses them to stand up to her cruel parents and her school's tyrannical headmistress. Along the way, Matilda makes friends and learns valuable lessons about the power of knowledge and the importance of kindness. \n\n"} +{"id": 138, "instruction": "In the event that a person enjoyed the book that was given, please suggest other books that they might also like.", "input": "The Great Gatsby", "infer30b_before_item": " Output: In the event that a person enjoyed the book that was given, please suggest other books that they might also like. The Great Gatsby \n Explanation: In the event that a person enjoyed the book that was given, please suggest other books that they might also like. The Great Gatsby \n\n Input: Input: In the event that a person enjoyed the book that was given, please suggest other books that they might also like. The Great Gatsby \n Output: Output: In the event that a person enjoyed the book that was given, please suggest other books that they might also like. The Great Gatsby \n Explanation: In the event that a person enjoyed the book that was given, please suggest other books that they might also like. The Great Gatsby \n\n Input: Input: In the event that a person enjoyed the book that was given, please suggest other books that they might also like. The Great Gatsby \n Output: Output: In the event that a person enjoyed the book that was given, please suggest other books that they might also like. The Great Gatsby \n Explanation: In the event that a person enjoyed the book that was given, please", "infer30b_after_item": " by F. Scott Fitzgerald. \n Output: If you enjoyed The Great Gatsby by F. Scott Fitzgerald, you might also like The Catcher in the Rye by J.D. Salinger, To Kill a Mockingbird by Harper Lee, and 1984 by George Orwell. \n\n", "infer13b_before_item": " Output: In the event that a person enjoyed the book that was given, please suggest other books that they might also like. The Great Gatsby \nInput: Input: In the event that a person enjoyed the book that was given, please suggest other books that they might also like. The Great Gatsby \nOutput: Output: In the event that a person enjoyed the book that was given, please suggest other books that they might also like. The Great Gatsby \nInput: Input: In the event that a person enjoyed the book that was given, please suggest other books that they might also like. The Great Gatsby \nOutput: Output: In the event that a person enjoyed the book that was given, please suggest other books that they might also like. The Great Gatsby \nInput: Input: In the event that a person enjoyed the book that was given, please suggest other books that they might also like. The Great Gatsby \nOutput: Output: In the event that a person enjoyed the book that was given, please suggest other books that they might also like. The Great Gatsby \nInput: Input: In the event that a person enjoyed the book that was given, please suggest other", "infer13b_after_item": " by F. Scott Fitzgerald \n Output: If you enjoyed The Great Gatsby by F. Scott Fitzgerald, you might also like The Catcher in the Rye by J.D. Salinger, To Kill a Mockingbird by Harper Lee, or The Old Man and the Sea by Ernest Hemingway. \n\n", "infer7b_before_item": " Output: In the event that a person did not enjoy the book that was given, please suggest other books that they might also like. The Great Gatsby \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " by F. Scott Fitzgerald \n Output: Other books that the reader might enjoy include The Catcher in the Rye by J.D. Salinger, The Sun Also Rises by Ernest Hemingway, and The Grapes of Wrath by John Steinbeck. \n\n"} +{"id": 139, "instruction": "Indicate the genre of the book to which it belongs.", "input": "Love in the Time of Cholera", "infer30b_before_item": " Output: Indicate the genre of the book to which it belongs. Romance\n Input: Input: Indicate the genre of the book to which it belongs. The Catcher in the Rye \n Output: Output: Indicate the genre of the book to which it belongs. Coming of Age\n Input: Input: Indicate the genre of the book to which it belongs. The Great Gatsby \n Output: Output: Indicate the genre of the book to which it belongs. Coming of Age\n Input: Input: Indicate the genre of the book to which it belongs. The Grapes of Wrath \n Output: Output: Indicate the genre of the book to which it belongs. Coming of Age\n Input: Input: Indicate the genre of the book to which it belongs. The Sun Also Rises \n Output: Output: Indicate the genre of the book to which it belongs. Coming of Age\n Input: Input: Indicate the genre of the book to which it belongs. The Old Man and the Sea \n Output: Output: Indicate the genre of the book to which it belongs. Coming of Age\n Input: Input: Indicate the genre of the book to", "infer30b_after_item": " by Gabriel Garcia Marquez \n Output: The genre of Love in the Time of Cholera by Gabriel Garcia Marquez is romance. \n\n", "infer13b_before_item": " Output: Indicate the genre of the book to which it belongs. Love in the Time of Cholera \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " by Gabriel Garcia Marquez. \n Output: Fiction. \n\n", "infer7b_before_item": " Output: Indicate the genre of the book to which it belongs. Love in the Time of Cholera\n\n\\begin{code}\nimport java.util.Scanner;\n\npublic class Main {\n\n public static void main(String[] args) {\n Scanner sc = new Scanner(System.in);\n System.out.println(\"Input:\");\n String genre = sc.nextLine();\n System.out.println(\"Output:\");\n System.out.println(genre);\n }\n}\n\\end{code}\n\nComment: What is the problem?\n\nComment: I want to get the genre of the book to which it belongs.\n\nComment: What is the genre of the book to which it belongs?\n\nComment: I want to get the genre of the book to which it belongs.\n\nComment: What is the genre of the book to which it belongs?\n\nComment: I want to get the genre of the book to which it belongs.\n\nComment: I want to get the genre of the book to which it belongs.\n\nComment: I want to get the genre of the book to which it belongs.\n\n", "infer7b_after_item": " \n Output: Romance \n\n"} +{"id": 140, "instruction": "Solve this equation.", "input": "x^3 - 4x^2 + 6x - 24 = 0", "infer30b_before_item": " Output: x = 2, 3, 4\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: The equation can be solved using synthetic division. The first root is 6, the second root is 2, and the third root is -4. \n\n", "infer13b_before_item": " 2\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n The\n The The The The The The 1900s\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: The solution to the equation is x = 2, 3, and -8. \n\n", "infer7b_before_item": " Output: Solve this equation. x^3 - 4x^2 + 6x - 24 = 0 \n*/\n\n#include <stdio.h>\n\nint main()\n{\n int x;\n scanf(\"%d\", &x);\n printf(\"%d\\n\", x);\n return 0;\n}\n", "infer7b_after_item": " \n Output: The solution to the equation is x = 2, x = -2, and x = 1. \n\n"} +{"id": 141, "instruction": "Prove the given statement using your information.", "input": "\"If x is a positive integer or a solution to x+3>4, then x>0 and x>12.\"", "infer30b_before_item": " Output: Prove the given statement using your information. \"If x is a positive integer or a solution to x+3>4, then x>0 and x>12.\" \n \n */\n\nimport Foundation\n\nfunc prove(x: Int) -> Bool {\n if x < 0 {\n return false\n }\n if x < 12 {\n return false\n }\n return true\n}\n\nprove(x: 1)\nprove(x: 12)\nprove(x: 13)\nprove(x: 14)\nprove(x: 15)\nprove(x: 16)\nprove(x: 17)\nprove(x: 18)\nprove(x: 19)\nprove(x: 20)\nprove(x: 21)\nprove(x: 22)\nprove(x: 23)\nprove(x: 24)\nprove(x: 25)\nprove(x: 26)", "infer30b_after_item": " \n Output: If x is a positive integer or a solution to x+3>4, then x>0 and x>12.\n\nProof:\n\nLet x be a positive integer or a solution to x+3>4.\n\nCase 1: x is a positive integer.\n\nSince x is a positive integer, x>0.\n\nFurthermore, since x is a positive integer, x>1.\n\nTherefore, x>0 and x>1.\n\nCase 2: x is a solution to x+3>4.\n\nSince x+3>4, x>4.\n\nFurthermore, since x>4, x>12.\n\nTherefore, x>0 and x>12.\n\nQ.E.D. \n\n", "infer13b_before_item": " Output: Print the result of the proof.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Let x be a positive integer or a solution to x+3>4.\n\nWe know that x+3>4 implies x>0.\n\nWe also know that x>12 implies x>0.\n\nTherefore, x>0 and x>12. \n\n", "infer7b_before_item": " Output: Write a proof of the given statement using your information. \"If x is a positive integer or a solution to x+3>4, then x>0 and x>12.\" \n*/\n\n//Input:\n//Input: Prove the given statement using your information. \"If x is a positive integer or a solution to x+3>4, then x>0 and x>12.\" \n//Output:\n//Output: Write a proof of the given statement using your information. \"If x is a positive integer or a solution to x+3>4, then x>0 and x>12.\" \n\n//Input:\n//Input: Prove the given statement using your information. \"If x is a positive integer or a solution to x+3>4, then x>0 and x>12.\" \n//Output:\n//Output: Write a proof of the given statement using your information. \"If x is a positive integer or a solution to x+3>4, then x>0 and x>12.\" \n\n//Input:\n//Input: Prove the given statement using your information. \"If x is a positive integer or a", "infer7b_after_item": " \n Output: If x is a positive integer or a solution to x+3>4, then x>0 and x>12. This can be proven by using the fact that x+3>4 implies that x>0 and x>12. Therefore, if x is a positive integer or a solution to x+3>4, then x>0 and x>12. \n\n"} +{"id": 142, "instruction": "Based on the facts that have been provided, prove the following statement.", "input": "Statement: \"For every integer k, k^2 + 2k + 1 \u2265 0\"\nFact: The square of any real number is non-negative.", "infer30b_before_item": " Output: \"True\"\n\n*/\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <math.h>\n\nint main() {\n int k;\n scanf(\"%d\", &k);\n printf(\"%d\\n\", k*k + 2*k + 1);\n return 0;\n}\n", "infer30b_after_item": " \n Output: For every integer k, k^2 is non-negative. Therefore, k^2 + 2k + 1 is also non-negative, since the sum of two non-negative numbers is also non-negative. Therefore, the statement is proven. \n\n", "infer13b_before_item": " Output: The statement is true.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: The statement is true because for any integer k, k^2 is non-negative, and k^2 + 2k + 1 is a sum of two non-negative terms. Therefore, the inequality holds true. \n\n", "infer7b_before_item": " The statement is true.\nProof:\nLet k be an integer.\nThen k^2 = k(k) = k(k)\nSince k is an integer, k(k) is an integer.\nTherefore, k^2 is an integer.\nSince k^2 is an integer, k^2 + 2k + 1 is an integer.\nSince k^2 + 2k + 1 is an integer, k^2 + 2k + 1 \u2265 0.\nSince k^2 + 2k + 1 \u2265 0, k^2 + 2k + 1 \u2265 0.\nSince k^2 + 2k + 1 \u2265 0, k^2 + 2k + 1 \u2265 0.\nSince k^2 + 2k + 1 \u2265 0, k^2 + 2k + 1 \u2265 0.\nSince k^2 + 2k + 1 \u2265 0, k^2 + 2k + 1 \u2265 0.\nSince k^2 + 2k + 1 \u2265 0, k", "infer7b_after_item": " \n Output: The statement \"For every integer k, k^2 + 2k + 1 \u2265 0\" is true because the square of any real number is non-negative. This means that the square of any integer k is also non-negative, and therefore the sum of 2k + 1 and k^2 is also non-negative. Therefore, the statement is true. \n\n"} +{"id": 143, "instruction": "Verify the correctness of the given statement.", "input": "\"For all integers j and k, if j and k are odd, then jk is odd.\"", "infer30b_before_item": " Output: \"True\" if the statement is true, \"False\" if the statement is false.\n\n*/\n\n#include <stdio.h>\n\nint main()\n{\n int j, k;\n scanf(\"%d %d\", &j, &k);\n if (j % 2 == 1 && k % 2 == 1)\n {\n if (j * k % 2 == 1)\n {\n printf(\"True\");\n }\n else\n {\n printf(\"False\");\n }\n }\n else\n {\n printf(\"False\");\n }\n return 0;\n}\n", "infer30b_after_item": " \n Output: The given statement is correct. For all integers j and k, if j and k are odd, then jk is odd. This is because any product of two odd numbers is an odd number. \n\n", "infer13b_before_item": " Output: Verify the correctness of the given statement. \"For all integers j and k, if j and k are odd, then jk is odd.\" \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Yes, this statement is correct. \n\n", "infer7b_before_item": " Output: Verify the correctness of the given statement. \"For all integers j and k, if j and k are odd, then jk is odd.\" \n*/\n\n#include <stdio.h>\n\nint main()\n{\n int j, k;\n printf(\"Enter two integers: \");\n scanf(\"%d %d\", &j, &k);\n if (j % 2 == 1 && k % 2 == 1)\n {\n printf(\"The product is odd.\\n\");\n }\n else\n {\n printf(\"The product is even.\\n\");\n }\n return 0;\n}\n", "infer7b_after_item": " \n Output: The given statement is correct. \n\n"} +{"id": 144, "instruction": "Provide a formula for computing the nth term in the given sequence", "input": "5, 14, 23, 32, 41, ...", "infer30b_before_item": " Output: 5 + n * 9\n\n Explanation: \n The nth term of the given sequence is 5 + n * 9.\n\n Example:\n Input: 3\n Output: 32\n\n Explanation: \n The 3rd term of the given sequence is 32.\n\n */\n\n#include <iostream>\n\nusing namespace std;\n\nint main() {\n int n;\n cin >> n;\n cout << 5 + n * 9 << endl;\n return 0;\n}\n", "infer30b_after_item": " \n Output: The nth term in the given sequence is 5n - 4. \n\n", "infer13b_before_item": " Output: Provide the nth term in the given sequence 5, 14, 23, 32, 41,... \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: The formula for the nth term in the given sequence is Tn = 5 + (n - 1) * 4. \n\n", "infer7b_before_item": " The nth term in the sequence is \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: nth term = 5 + (n-1) * (2n-3) \n\n"} +{"id": 145, "instruction": "Create a table listing all games that meet the specified criteria in the National Football League. Use the season, local time, game, and score as columns of the table.", "input": "Ravens home games in 2011", "infer30b_before_item": " Output: Create a table listing all games that meet the specified criteria in the National Football League. Use the season, local time, game, and score as columns of the table. Ravens home games in 2011 \n \n \n", "infer30b_after_item": ", 10am-1pm. \n Output: Season | Local Time | Game | Score\n-------| ----------|-----|------\n2011 | 10am-1pm | Ravens | \n\n", "infer13b_before_item": " Output: Create a table listing all games that meet the specified criteria in the National Football League. Use the season, local time, game, and score as columns of the table. Ravens home games in 2011 \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": ". \n Output: Season | Local Time | Game | Score\n--------------------------------------------------------------------------------\n2011 | 1:00 PM | Ravens vs. Steelers | 23-20\n2011 | 4:15 PM | Ravens vs. Browns | 24-10\n2011 | 1:00 PM | Ravens vs. Bengals | 35-7 \n\n", "infer7b_before_item": " Output: Create a table listing all games that meet the specified criteria in the National Football League. Use the season, local time, game, and score as columns of the table. Ravens home games in 2011\n\nComment: Please edit your question to include the code you have tried so far.\n\nAnswer: You can use the `df.loc` method to select the rows you want.\n\n\\begin{code}\ndf = pd.DataFrame({'season':['2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','2011','201", "infer7b_after_item": " \n Output: | Season | Local Time | Game | Score |\n|------|------------|-------|-------|\n| 2011 | 12:00 PM | Ravens | 24-17 |\n| 2011 | 1:00 PM | Ravens | 23-20 |\n| 2011 | 4:05 PM | Ravens | 23-14 |\n| 2011 | 8:20 PM | Ravens | 23-16 |\n| 2011 | 1:00 PM | Ravens | 23-14 | \n\n"} +{"id": 146, "instruction": "Using a table, compare the career overviews of the given players in Major League Baseball. Use \"|\" for separating the columns in the table.", "input": "Derek Jeter, Albert Pujols", "infer30b_before_item": " Output: Using a table, compare the career overviews of the given players in Major League Baseball. Use \"|\" for separating the columns in the table. Derek Jeter, Albert Pujols \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n", "infer30b_after_item": " \n Output: | Derek Jeter | Albert Pujols |\n| Career Length: 1995-2014 | Career Length: 2001-Present |\n| 5-time World Series Champion | 3-time World Series Champion |\n| 14-time All-Star | 3-time NL MVP |\n| 3,465 career hits | 2,962 career hits | \n\n", "infer13b_before_item": " Output: Using a table, compare the career overviews of the given players in Major League Baseball. Use \"|\" for separating the columns in the table. Derek Jeter, Albert Pujols \n\n\nclass Solution:\n # @param {String[]} players\n # @return {String[]}\n def compare_career_overviews(self, players):\n table = []\n for player in players:\n table.append([player, \"Hits\", \"Runs\", \"RBI\", \"HR\", \"SB\"])\n for i in range(len(players)):\n for j in range(i+1, len(players)):\n if players[i] == players[j]:\n table[i][1] += table[j][1]\n table[i][2] += table[j][2]\n table[i][3] += table[j][3]\n table[i][4] += table[j][4]\n table[i][5] += table[j][5]\n return table\n\n\nif __name__ == \"__main", "infer13b_after_item": " \n Output: |Name |Position |Years |Achievements\n|------|--------|------|---------\n|Derek Jeter|Shortstop|20 |5x World Series Champion, 14x All-Star, 10x Gold Glove Award Winner\n|Albert Pujols|First Base|22 |3x NL MVP, 9x All-Star, 3x Silver Slugger Award Winner \n\n", "infer7b_before_item": " Output: Using a table, compare the career overviews of the given players in Major League Baseball. Use \"|\" for separating the columns in the table. Derek Jeter, Albert Pujols \n\nInput: Input: Using a table, compare the career overviews of the given players in Major League Baseball. Use \"|\" for separating the columns in the table. Derek Jeter, Albert Pujols \n Output: Output: Using a table, compare the career overviews of the given players in Major League Baseball. Use \"|\" for separating the columns in the table. Derek Jeter, Albert Pujols \n\nInput: Input: Using a table, compare the career overviews of the given players in Major League Baseball. Use \"|\" for separating the columns in the table. Derek Jeter, Albert Pujols \n Output: Output: Using a table, compare the career overviews of the given players in Major League Baseball. Use \"|\" for separating the columns in the table. Derek Jeter, Albert Pujols \n\nInput: Input: Using a table, compare the career overviews of the given players in Major League Baseball. Use \"|", "infer7b_after_item": " \n Output: |Player Name|Career|\n|--------|--------|\n|Derek Jeter|14-Year|\n|Albert Pujols|15-Year| \n\n"} +{"id": 147, "instruction": "You will be tested on your knowledge of classic witticisms and aphorisms by completing the given aphorism. Write the original quote as the answer.", "input": "two things are infinite", "infer30b_before_item": " Output: You will be tested on your knowledge of classic witticisms and aphorisms by completing the given aphorism. Write the original quote as the answer. two things are infinite \n Expected: Output: You will be tested on your knowledge of classic witticisms and aphorisms by completing the given aphorism. Write the original quote as the answer. two things are infinite \n */\npublic class _001 {\n\tpublic static void main(String[] args) {\n\t\tSystem.out.println(\"You will be tested on your knowledge of classic witticisms and aphorisms by completing the given aphorism. Write the original quote as the answer.\");\n\t\tSystem.out.println(\"two things are infinite: the universe and human stupidity; and I'm not sure about the universe.\");\n\t}\n}\n", "infer30b_after_item": ": the universe and human stupidity \n Output: \"The more you know, the more you understand that the less you know.\" \n\n", "infer13b_before_item": " Output: You will be tested on your knowledge of classic witticisms and aphorisms by completing the given aphorism. Write the original quote as the answer. the number of stars in the sky and the number of grains of sand on the earth.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": ": the universe and human stupidity \n Output: The universe is infinite, and so is human stupidity. \n\n", "infer7b_before_item": " Output: You will be tested on your knowledge of classic witticisms and aphorisms by completing the given aphorism. Write the original quote as the answer. two things are infinite \n */\n\n// Test case 1:\n// Input:\n// Output:\n// Expected output:\n//\n// Test case 2:\n// Input:\n// Output:\n// Expected output:\n//\n// Test case 3:\n// Input:\n// Output:\n// Expected output:\n//\n// Test case 4:\n// Input:\n// Output:\n// Expected output:\n//\n// Test case 5:\n// Input:\n// Output:\n// Expected output:\n//\n// Test case 6:\n// Input:\n// Output:\n// Expected output:\n//\n// Test case 7:\n// Input:\n// Output:\n// Expected output:\n//\n// Test case 8:\n// Input:\n// Output:\n// Expected output:\n//\n// Test case 9:\n// Input:\n// Output:\n// Expected output:\n//\n// Test", "infer7b_after_item": ": \n Output: The universe and human stupidity. \n\n"} +{"id": 148, "instruction": "A list of all movies that meet the criteria given should be compiled.", "input": "movies directed by Spike Lee by release date", "infer30b_before_item": " Output: A list of all movies that meet the criteria given should be compiled. movies directed by Spike Lee by release date \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n", "infer30b_after_item": " \n Output: The list of movies directed by Spike Lee by release date should include: Do the Right Thing (1989), Mo' Better Blues (1990), Jungle Fever (1991), Malcolm X (1992), Crooklyn (1994), Clockers (1995), Girl 6 (1996), Get on the Bus (1996), He Got Game (1998), Summer of Sam (1999), Bamboozled (2000), 25th Hour (2002), She Hate Me (2004), Inside Man (2006), Miracle at St. Anna (2008), Red Hook Summer (2012), Oldboy (2013), and Chi-Raq (2015). \n\n", "infer13b_before_item": " Output: A list of all movies that meet the criteria given should be compiled. movies directed by Spike Lee by release date \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: 1983: School Daze\n1986: She's Gotta Have It\n1988: Do the Right Thing\n1992: Jungle Fever\n1996: Get on the Bus\n2000: Bamboozled\n2006: Inside Man\n2014: Chi-Raq\n2018: BlacKkKlansman \n\n", "infer7b_before_item": " A list of all movies that meet the criteria given should be compiled. movies directed by Spike Lee by release date \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: 1986: She's Gotta Have It\n1988: School Daze\n1989: Do the Right Thing\n1990: Mo' Better Blues\n1991: Jungle Fever\n1992: Malcolm X\n1993: Clockers\n1994: Crooklyn\n1995: Get on the Bus\n1996: Clockers\n1997: He Got Game\n1998: Bamboozled\n1999: The 25th Hour\n2000: Bamboozled\n2001: The Original Kings of Comedy\n2002: Bamboozled\n2003: 25th Hour\n2004: She Hate Me\n2005: When the Levees Broke: A Requiem in Four Acts\n2006: Inside Man\n2007: Miracle at St. Anna\n2008: Four Brothers\n2009: Miracle at St. Anna\n"} +{"id": 149, "instruction": "Using a given amount, determine an appropriate tip.", "input": "14% tip on $47.50", "infer30b_before_item": " Output: The tip amount.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: The appropriate tip for $47.50 is $6.61, which is 14% of the total amount. \n\n", "infer13b_before_item": " 7.00\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n The\n\n\n The\n The \n\n\n\n\n\n\n\n\n\n \n ", "infer13b_after_item": " \n Output: $7.29 \n\n", "infer7b_before_item": " Output: Using a given amount, determine an appropriate tip. 14% tip on $47.50\n\n\n%#include \"stdafx.h\"\n#include <iostream>\n#include <string>\n#include <vector>\n#include <algorithm>\n#include <cmath>\n#include <cstdio>\n#include <cstdlib>\n#include <cstring>\n#include <ctime>\n#include <fstream>\n#include <sstream>\n#include <iomanip>\n#include <set>\n#include <map>\n#include <stack>\n#include <queue>\n#include <deque>\n#include <list>\n#include <cmath>\n#include <vector>\n#include <string>\n#include <utility>\n#include <algorithm>\n#include <bitset>\n#include <numeric>\n#include <unordered_map>\n#include <unordered_set>\n#include <unordered_multiset>\n#include <array>\n#include <stdint.h>\n#include <functional>\n#include <", "infer7b_after_item": " \n Output: The appropriate tip is $6.69. \n\n"} +{"id": 150, "instruction": "Identify all words that match the pattern given.", "input": "H_AR_", "infer30b_before_item": " Output: Identify all words that match the pattern given. H_AR_ \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n", "infer30b_after_item": "\nHarbor \n Output: Hare, Harbor, Harem, Harness, Harpoon, Harmony, Harness, Harangue. \n\n", "infer13b_before_item": " Output: Identify all words that match the pattern given. H_AR_ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n The\n\n\n\n\n", "infer13b_after_item": "D \n Output: Hard \n\n", "infer7b_before_item": " Output: Print the words that match the pattern.\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\nInput:\n\n", "infer7b_after_item": "D\n Output: Hard, harsh, harshly, harshly, harshly. \n\n"} +{"id": 151, "instruction": "Come up with words that rhyme with the given word.", "input": "instruct", "infer30b_before_item": " Output: Print the words that rhyme with the given word.\n\n Example:\n\n Input: instruct\n Output:\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct\n\n instruct", "infer30b_after_item": "or: \"moon\" \n Output: spoon, honey, money, funny, sunny, honey. \n\n", "infer13b_before_item": " Output: Come up with words that rhyme with the given word. instruct \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n The\n", "infer13b_after_item": " \n Output: instruct, instructor, instructive, instructive, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instructor, instruct", "infer7b_before_item": " Output: Print the words that rhyme with the given word.\n\nInput: instruct\nOutput: instruct\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput: instructor\nOutput: instructor\n\nInput", "infer7b_after_item": " \n Output: instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct, instruct,"} +{"id": 152, "instruction": "Look for poems that mention the given object or character. The names of the poems and their poets should be written.", "input": "santa claus", "infer30b_before_item": " Output: Look for poems that mention the given object or character. The names of the poems and their poets should be written. santa claus \n \n Input: Input: Look for poems that mention the given object or character. The names of the poems and their poets should be written. santa claus \n Output: Output: Look for poems that mention the given object or character. The names of the poems and their poets should be written. santa claus \n \n Input: Input: Look for poems that mention the given object or character. The names of the poems and their poets should be written. santa claus \n Output: Output: Look for poems that mention the given object or character. The names of the poems and their poets should be written. santa claus \n \n Input: Input: Look for poems that mention the given object or character. The names of the poems and their poets should be written. santa claus \n Output: Output: Look for poems that mention the given object or character. The names of the poems and their poets should be written. santa claus \n", "infer30b_after_item": " \n Output: \"Santa Claus is Coming to Town\" by Fred Coots, \"The Night Before Christmas\" by Clement Clarke Moore, \"Santa Claus is Real\" by Robert Frost, \"Santa Claus is Coming to Town\" by Bruce Springsteen. \n\n", "infer13b_before_item": " Output: The poems that mention the given object or character.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: \"The Night Before Christmas\" by Clement Clarke Moore\n\"Santa Claus\" by Anonymous \n\n", "infer7b_before_item": " Output: Look for poems that mention the given object or character. The names of the poems and their poets should be written. santa claus\n\nimport java.util.Scanner;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class SantaClaus {\n\n public static void main(String[] args) {\n Scanner sc = new Scanner(System.in);\n List<String> poems = new ArrayList<String>();\n String input = sc.nextLine();\n while (input!= null) {\n String[] tokens = input.split(\" \");\n if (tokens[0].equals(\"santa claus\")) {\n poems.add(tokens[1]);\n }\n input = sc.nextLine();\n }\n for (String poem : poems) {\n System.out.println(poem);\n }\n }\n}\n", "infer7b_after_item": " \n Output: 1. \"Santa Claus\" by Clement C. Moore\n2. \"Santa Claus and the Christmas Tree\" by Eugene Field\n3. \"Santa Claus and the Christmas Tree\" by Lydia Maria Child\n4. \"Santa Claus\" by Edgar Allan Poe\n5. \"Santa Claus\" by Robert Louis Stevenson\n6. \"Santa Claus\" by William Blake\n7. \"Santa Claus\" by Henry Wadsworth Longfellow\n8. \"Santa Claus\" by John Godfrey Saxe\n9. \"Santa Claus\" by James Whitcomb Riley\n10. \"Santa Claus\" by Thomas Nast\n11. \"Santa Claus\" by Clement C. Moore\n12. \"Santa Claus\" by Eugene Field\n13. \"Santa Claus\" by Lydia Maria Child\n14. \"Santa Claus\" by Edgar Allan Poe\n15. \"Santa Claus\" by Robert Louis Stevenson\n16. \"Santa Claus\" by William Blake\n17. \""} +{"id": 153, "instruction": "Respond to the last text in the chat using the correct emojis to convey your feelings.", "input": "+ Hey, how did your exams go?\n- They were alright. I'm just glad they're over.\n+ Yeah, I know how you feel. I'm just glad I don't have to worry about them anymore.", "infer30b_before_item": " Output: Respond to the last text in the chat using the correct emojis to convey your feelings. + Hey, how did your exams go?\n- They were alright. I'm just glad they're over.\n+ Yeah, I know how you feel. I'm just glad I don't have to worry about them anymore. \n Explanation: \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# ", "infer30b_after_item": " \n Output: + Hey, how did your exams go?\n- They were alright. I'm just glad they're over.\n+ Yeah, I know how you feel. I'm just glad I don't have to worry about them anymore. \n\n<:smile:> <:relieved:> <:satisfied:> \n\n", "infer13b_before_item": " Output: Respond to the last text in the chat using the correct emojis to convey your feelings. + Hey, how did your exams go?\n- They were alright. I'm just glad they're over.\n+ Yeah, I know how you feel. I'm just glad I don't have to worry about them anymore. \n\n\"\"\"\n\nimport re\nimport random\n\n\ndef get_emojis(text):\n \"\"\"\n Returns a list of emojis that can be used to respond to the given text.\n \"\"\"\n emojis = []\n for emoji in re.findall(r'(?<=\\s|^)[\\u2000-\\u200a\\u2020-\\u202f\\u203f-\\u2040\\u205f\\u3000-\\u3003\\u3008-\\u300a\\u300c-\\u300f\\u3010-\\u301a\\u301c-\\u301f\\u", "infer13b_after_item": " \n Output: \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ud83d\ude00 \ufffd", "infer7b_before_item": " Output: Respond to the last text in the chat using the correct emojis to convey your feelings. + Hey, how did your exams go?\n- They were alright. I'm just glad they're over.\n+ Yeah, I know how you feel. I'm just glad I don't have to worry about them anymore.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ud83d\ude00 \ud83d\ude0a \ufffd"} +{"id": 154, "instruction": "For answering the chat, think of a funny response you can use.", "input": "+ how are you?", "infer30b_before_item": " Output: For answering the chat, think of a funny response you can use. + how are you?\n\nInput: Input: For answering the chat, think of a funny response you can use. + how are you? \n Output: Output: For answering the chat, think of a funny response you can use. + how are you?\n\nInput: Input: For answering the chat, think of a funny response you can use. + how are you? \n Output: Output: For answering the chat, think of a funny response you can use. + how are you?\n\nInput: Input: For answering the chat, think of a funny response you can use. + how are you? \n Output: Output: For answering the chat, think of a funny response you can use. + how are you?\n\nInput: Input: For answering the chat, think of a funny response you can use. + how are you? \n Output: Output: For answering the chat, think of a funny response you can use. + how are you?\n\nInput: Input: For answering the chat, think of a funny response you can use. + how are you?", "infer30b_after_item": " \n Output: I'm great! Just trying to figure out how to make my day more interesting. Any ideas? \n\n", "infer13b_before_item": " For answering the chat, think of a funny response you can use. + how are you? \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: I'm doing great, thanks for asking! \n\n", "infer7b_before_item": " Output: For answering the chat, think of a funny response you can use. + how are you?\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: I'm doing great! How about you? \n\n"} +{"id": 155, "instruction": "The last message in the chat is a partial response. You should complete and rewrite it.", "input": "+ What are going to do now?\n- I don't know. I had to give up my dream of being a mathematician.\n+ Why", "infer30b_before_item": " Output: The last message in the chat is a partial response. You should complete and rewrite it. + What are going to do now?\n- I don't know. I had to give up my dream of being a mathematician.\n- I don't know. I had to give up my dream of being a mathematician.\n- I don't know. I had to give up my dream of being a mathematician.\n- I don't know. I had to give up my dream of being a mathematician.\n- I don't know. I had to give up my dream of being a mathematician.\n- I don't know. I had to give up my dream of being a mathematician.\n- I don't know. I had to give up my dream of being a mathematician.\n- I don't know. I had to give up my dream of being a mathematician.\n- I don't know. I had to give up my dream of being a mathematician.\n- I don't know. I had to give up my dream of being a mathematician.\n- I don't know.", "infer30b_after_item": "?\n- Because I don't have the resources to pursue it. \n Output: - I don't know. I had to give up my dream of being a mathematician because I don't have the resources to pursue it. What are going to do now? \n\n", "infer13b_before_item": " Output: The last message in the chat is a partial response. You should complete and rewrite it. + What are going to do now?\n- I don't know. I had to give up my dream of being a mathematician.\n+ Why \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " did you have to give up your dream?\n- I just couldn't afford the tuition. \n Output: + What are going to do now?\n- I don't know. I had to give up my dream of being a mathematician, and I just couldn't afford the tuition. \n\n", "infer7b_before_item": " Output: The last message in the chat is a partial response. You should complete and rewrite it. + What are going to do now?\n- I don't know. I had to give up my dream of being a mathematician.\n+ Why \n Output: Output: The last message in the chat is a partial response. You should complete and rewrite it. + What are going to do now?\n- I don't know. I had to give up my dream of being a mathematician.\n+ Why \n Output: Output: The last message in the chat is a partial response. You should complete and rewrite it. + What are going to do now?\n- I don't know. I had to give up my dream of being a mathematician.\n+ Why \n Output: Output: The last message in the chat is a partial response. You should complete and rewrite it. + What are going to do now?\n- I don't know. I had to give up my dream of being a mathematician.\n+ Why \n Output: Output: The last message in the chat is a partial response. You should complete and rewrite it. + What are going to do now?", "infer7b_after_item": " did you have to give up your dream? \n Output: I had to give up my dream of being a mathematician because I didn't have the resources to pursue it. I was unable to get the necessary funding and support to continue my studies. \n\n"} +{"id": 156, "instruction": "Change the response to have a more empathic tone in the chat.", "input": "+ How are you doing?\n- Fine, I had a bunch of problems today.\n+ What kind of problems?", "infer30b_before_item": " Output: Change the response to have a more empathic tone in the chat. + How are you doing?\n- Fine, I had a bunch of problems today.\n+ What kind of problems? \n Explanation:\n\n \n\n*/\n\n// Your Own Tests (OPTIONAL)\n\n\n\n//Hint:\n\n// Difficulty: Easy\n\n// Related Topics:\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n//\n\n", "infer30b_after_item": " \n Output: I'm sorry to hear that. What kind of problems did you have today? \n\n", "infer13b_before_item": " Output: Change the response to have a more empathic tone in the chat. + I'm sorry to hear that.\n- I'm fine.\n+ What kind of problems?\n- I had a bunch of problems today.\n+ What kind of problems?\n- I had a bunch of problems today.\n+ What kind of problems?\n- I had a bunch of problems today.\n+ What kind of problems?\n- I had a bunch of problems today.\n+ What kind of problems?\n- I had a bunch of problems today.\n+ What kind of problems?\n- I had a bunch of problems today.\n+ What kind of problems?\n- I had a bunch of problems today.\n+ What kind of problems?\n- I had a bunch of problems today.\n+ What kind of problems?\n- I had a bunch of problems today.\n+ What kind of problems?\n- I had a bunch of problems today.\n+ What kind of problems?\n- I had a bunch of problems today.\n+ What kind of problems?\n- I had a bunch of problems today.\n+ What kind of problems?\n- I had a bunch of problems today.\n+", "infer13b_after_item": "\n- I had a lot of technical issues with my computer and I couldn't get anything done. \n Output: + I'm sorry to hear that. What kind of technical issues did you have? \n\n", "infer7b_before_item": " Output: Change the response to have a more empathic tone in the chat. + How are you doing?\n- Fine, I had a bunch of problems today.\n+ What kind of problems? \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: + I'm sorry to hear that. What kind of problems did you have? \n\n"} +{"id": 157, "instruction": "Currently, there is a chat in which people are arranging a meeting in the future. Retrieve the meeting information from the conversation.", "input": "Person 1: Hey, when are you free? I'd like to meet up.\nPerson 2: I'm free tomorrow afternoon.\nPerson 1: Great, what time?\nPerson 2: How about 3 pm?\nPerson 1: I have another meeting at that time. what about 5 pm?\nPerson 2: That works. Where should we meet?\nPerson 1: How about the coffee shop on Main Street?\nPerson 2: Sounds good. I've heard they have great coffee there. See you tomorrow!", "infer30b_before_item": " Output: The meeting is at 5 pm tomorrow at the coffee shop on Main Street.\n\n\n*/\n\n\n#include <iostream>\n#include <vector>\n#include <string>\n#include <cstring>\n#include <cstdio>\n#include <cmath>\n#include <algorithm>\nusing namespace std;\n\nint main() {\n /* Enter your code here. Read input from STDIN. Print output to STDOUT */\n int t;\n cin>>t;\n while(t--)\n {\n string s;\n cin>>s;\n int i=0;\n int j=0;\n int k=0;\n int l=0;\n int m=0;\n int n=0;\n int o=0;\n int p=0;\n int q=0;\n int r=0;\n int s=0;\n int t=0;\n int u=0;\n int v=0;\n int w=0;\n int x=0;\n int y=0;\n ", "infer30b_after_item": " \n Output: The meeting will take place at the coffee shop on Main Street at 5 pm tomorrow. \n\n", "infer13b_before_item": " Output: The system should retrieve the meeting information from the conversation.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Tomorrow, 5 pm at the coffee shop on Main Street. \n\n", "infer7b_before_item": " Output: The meeting is scheduled for 5 pm at the coffee shop on Main Street.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Person 1 and Person 2 have agreed to meet at the coffee shop on Main Street at 5 pm. \n\n"} +{"id": 158, "instruction": "The given text must be classified as offensive or not offensive.", "input": "You acted really crazy last night.", "infer30b_before_item": " Output: The given text must be classified as offensive or not offensive. You acted really crazy last night. \n Expected Output: Output: The given text must be classified as offensive or not offensive. You acted really crazy last night. \n Author: Cody Swanson\n */\n\nimport java.util.Scanner;\n\npublic class OffensiveLanguage {\n\n public static void main(String[] args) {\n Scanner input = new Scanner(System.in);\n String text = input.nextLine();\n String[] words = text.split(\" \");\n int count = 0;\n for (int i = 0; i < words.length; i++) {\n if (words[i].equals(\"fuck\") || words[i].equals(\"shit\") || words[i].equals(\"ass\") || words[i].equals(\"bitch\") || words[i].equals(\"damn\") || words[i].equals(\"hell\") || words[i].equals(\"bastard\") || words[i].equals(\"bastard\") || words[i].equals(\"bitch\") || words[i].equals", "infer30b_after_item": " \n Output: Offensive. \n\n", "infer13b_before_item": " The output must be classified as offensive or not offensive. You acted really crazy last night. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Not offensive. \n\n", "infer7b_before_item": " The output should be the classification of the given text.\n*/\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\nint main(int argc, char *argv[])\n{\n char *text = argv[1];\n int offensive = 0;\n int not_offensive = 0;\n\n if (strstr(text, \"fuck\")!= NULL)\n {\n offensive = 1;\n }\n else if (strstr(text, \"shit\")!= NULL)\n {\n offensive = 1;\n }\n else if (strstr(text, \"ass\")!= NULL)\n {\n offensive = 1;\n }\n else if (strstr(text, \"bitch\")!= NULL)\n {\n offensive = 1;\n }\n else if (strstr(text, \"cunt\")!= NULL)\n {\n offensive = 1;\n }\n else if (strstr(text, \"pussy\")!= NULL", "infer7b_after_item": " \n Output: Offensive. \n\n"} +{"id": 159, "instruction": "Give a brief summary of the intention of the dialogue that just happened.", "input": "Customer: Hi there, I'm looking for a new phone.\nAI: Hi! What type of phone are you looking for?\nCustomer: I'm not sure. Maybe something with a good camera?\nAI: We have a few phones with great cameras. Would you like to see some options?\nCustomer: Yeah, that would be great.", "infer30b_before_item": " Output: Give a brief summary of the intention of the dialogue that just happened. Customer: Hi there, I'm looking for a new phone.\nAI: Hi! What type of phone are you looking for?\nCustomer: I'm not sure. Maybe something with a good camera?\nAI: We have a few phones with great cameras. Would you like to see some options?\nCustomer: Yeah, that would be great. \n# **1.**\n**1.** **What is the purpose of this dialogue?**\n**2.** **What is the customer's intention?**\n**3.** **What is the AI's intention?**\n**4.** **What is the AI's response?**\n**5.** **What is the customer's response?**\n**6.** **What is the AI's response?**\n**7.** **What is the customer's response?**\n**8.** **What is the AI's response?**\n**9.** **What is the customer's response?**\n**10.** **What is the AI's response", "infer30b_after_item": " \n Output: The customer is looking for a new phone and the AI is offering to show them some options with good cameras. \n\n", "infer13b_before_item": " Output: Give a brief summary of the intention of the dialogue that just happened.\nAI: Here are some options.\nCustomer: I like the first one.\nAI: Great! Would you like to buy it?\nCustomer: Yes, please.\nAI: I'll send you a link to buy it.\nCustomer: Thanks!\n\n\"\"\"\n\nimport os\nimport sys\nimport json\nimport random\nimport time\nimport datetime\nimport logging\nimport traceback\nimport requests\nimport re\nimport urllib\nimport urllib2\nimport urllib3\nimport urllib3.util\nimport urllib3.exceptions\nimport urllib3.contrib.pyopenssl\nimport urllib3.contrib.pycurl\nimport urllib3.contrib.requests\nimport urllib3.contrib.pycurl.cacert\nimport urllib3.contrib.pyopenssl.cert\nimport urllib3.contrib.pyopenssl.privatekey\nimport urllib3.contrib.pyopenssl.x509\nimport urllib3.contrib.pyopenssl.x509crl\nimport urllib3.contrib.pyopenssl.x5", "infer13b_after_item": " \n Output: The customer is looking for a new phone with a good camera. The AI suggested some options and the customer agreed to see them. \n\n", "infer7b_before_item": " Output: Give a brief summary of the intention of the dialogue that just happened. Customer: Hi there, I'm looking for a new phone.\nAI: Hi! What type of phone are you looking for?\nCustomer: I'm not sure. Maybe something with a good camera?\nAI: We have a few phones with great cameras. Would you like to see some options?\nCustomer: Yeah, that would be great.\nAI: Here are some options.\nCustomer: I like this one.\nAI: Great! Would you like to buy it?\nCustomer: Yes, I would.\nAI: Great! Would you like to buy it?\nCustomer: Yes, I would.\nAI: Great! Would you like to buy it?\nCustomer: Yes, I would.\nAI: Great! Would you like to buy it?\nCustomer: Yes, I would.\nAI: Great! Would you like to buy it?\nCustomer: Yes, I would.\nAI: Great! Would you like to buy it?\nCustomer: Yes, I would.\nAI: Great! Would you like to buy it?\nCustomer: Yes, I would.\nAI: Great! Would you", "infer7b_after_item": "\nAI: Sure, let me show you some of our options. \n Output: The customer and the AI had a dialogue about the customer's intention to buy a phone with a good camera. The AI provided the customer with some options and the customer was able to make a decision. \n\n"} +{"id": 160, "instruction": "Describe the content of the article in a brief manner.", "input": "A study published earlier this year by Zee and her team examined the role of light in sleep for healthy adults in their 20s. Sleeping for only one night with a dim light, such as a TV set with the sound off, raised the blood sugar and heart rate of the young people during the sleep lab experiment. An elevated heart rate at night has been shown in prior studies to be a risk factor for future heart disease and early death, while higher blood sugar levels are a sign of insulin resistance, which can ultimately lead to type 2 diabetes.", "infer30b_before_item": " Output: Describe the content of the article in a brief manner. A study published earlier this year by Zee and her team examined the role of light in sleep for healthy adults in their 20s. Sleeping for only one night with a dim light, such as a TV set with the sound off, raised the blood sugar and heart rate of the young people during the sleep lab experiment. An elevated heart rate at night has been shown in prior studies to be a risk factor for future heart disease and early death, while higher blood sugar levels are a sign of insulin resistance, which can ultimately lead to type 2 diabetes. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: A recent study found that exposure to dim light at night can lead to increased blood sugar and heart rate in young adults, which can be a risk factor for future heart disease and type 2 diabetes. \n\n", "infer13b_before_item": " Describe the output of the article in a brief manner. The study suggests that light at night may be a risk factor for heart disease and diabetes. \n Input: Describe the content of the article in a brief manner. A study published earlier this year by Zee and her team examined the role of light in sleep for healthy adults in their 20s. Sleeping for only one night with a dim light, such as a TV set with the sound off, raised the blood sugar and heart rate of the young people during the sleep lab experiment. An elevated heart rate at night has been shown in prior studies to be a risk factor for future heart disease and early death, while higher blood sugar levels are a sign of insulin resistance, which can ultimately lead to type 2 diabetes. \n Output: Describe the output of the article in a brief manner. The study suggests that light at night may be a risk factor for heart disease and diabetes. \n Input: Describe the content of the article in a brief manner. A study published earlier this year by Zee and her team examined the role of light in sleep for healthy adults in their 20s. S", "infer13b_after_item": " \n Output: The study by Zee and her team examined the role of light in sleep for healthy adults in their 20s. Sleeping for one night with a dim light, such as a TV set with the sound off, raised the blood sugar and heart rate of the young people during the sleep lab experiment. An elevated heart rate at night has been shown in prior studies to be a risk factor for future heart disease and early death, while higher blood sugar levels are a sign of insulin resistance, which can ultimately lead to type 2 diabetes. \n\n", "infer7b_before_item": " Output: Describe the results of the study. The researchers found that the participants' blood sugar and heart rate were higher when they slept in a dim light than when they slept in a dark room. The participants also had a harder time falling asleep and staying asleep in the dim light. \n Conclusion: Conclusion: Summarize the main points of the article. The study suggests that sleeping in a dim light may be a risk factor for heart disease and diabetes. \n Keywords: Keywords: List the keywords of the article. Sleep, light, heart disease, diabetes \n# **_The Science of Sleep_**\nSleep is a complex process that involves many different parts of the brain. The brain is divided into two hemispheres, the left and the right. The left hemisphere is responsible for language, logic, and analytical thinking, while the right hemisphere is responsible for creativity, intuition, and visual-spatial thinking. The two hemispheres work together to process information and to control the body.\nThe brain is also divided into two halves, the right and the left. The right side of the brain controls", "infer7b_after_item": " \n Output: This study examined the role of light in sleep for healthy adults in their 20s. Sleeping for one night with a dim light, such as a TV set with the sound off, raised the blood sugar and heart rate of the young people during the sleep lab experiment. An elevated heart rate at night has been shown in prior studies to be a risk factor for future heart disease and early death, while higher blood sugar levels are a sign of insulin resistance, which can ultimately lead to type 2 diabetes. \n\n"} +{"id": 161, "instruction": "Correct the transcription of an excerpt containing errors.", "input": "I got got charged interest on ly credit card but I paid my pull balance one day due date. I not missed a pavement year yet. Man you reverse the interest charge?", "infer30b_before_item": " Output: Correct the transcription of an excerpt containing errors. I got charged interest on my credit card but I paid my full balance on time. I haven't missed a payment year yet. Man, you reversed the interest charge?\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: I got charged interest on my credit card but I paid my full balance on the due date. I haven't missed a payment year yet. Can you reverse the interest charge? \n\n", "infer13b_before_item": " Output: Correct the transcription of an excerpt containing errors. I got got charged interest on ly credit card but I paid my pull balance one day due date. I not missed a pavement year yet. Man you reverse the interest charge?\n\n#include <stdio.h>\n#include <string.h>\n#include <stdlib.h>\n#include <ctype.h>\n#include <math.h>\n#include <ctype.h>\n#include <time.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <sys/time.h>\n#include <sys/types.h>\n#include <sys/stat.h>\n#include <fcntl.h>\n#include <errno.h>\n#include <limits.h>\n#include <assert.h>\n#include <stdarg.h>\n#include <stdint.h>\n#include <stdbool.h>\n#include <unistd.h>\n#include <sys/types.h>\n#include <sys/stat.h>\n#include <sys", "infer13b_after_item": " \n Output: I got charged interest on my credit card but I paid my full balance one day before the due date. I haven't missed a payment yet. Can you reverse the interest charge? \n\n", "infer7b_before_item": " Output: Correct the transcription of an excerpt containing errors. I got charged interest on my credit card but I paid my balance one day before the due date. I didn't miss a payment yet. Man, you reversed the interest charge? \n\"\"\"\n\n\ndef main():\n \"\"\"\n Main function.\n \"\"\"\n # Read the input file.\n with open('input.txt') as f:\n lines = f.readlines()\n\n # Read the output file.\n with open('output.txt', 'w') as f:\n for line in lines:\n line = line.strip()\n if line:\n f.write(line)\n\n\nif __name__ == '__main__':\n main()\n", "infer7b_after_item": " \n Output: I got charged interest on my credit card but I paid my full balance one day before the due date. I didn't miss a payment yet. Can you reverse the interest charge? \n\n"} +{"id": 162, "instruction": "Take a look at the contract and extract the parties of the agreement from it.", "input": "As of the 13th day of December 2021, this Music Recording Agreement (\"Agreement\") is made between Good Kid, a Toronto-based musical group (\"Artist\"), and Universal Music Group, a record label with license number 545345 (\"Record Label\"). The Artist and the Recording Label may be referred to in this Agreement individually as \"Parties\" and collectively as \"Parties.\" Work under this Agreement will begin on March 15, 2022, and will last for the duration of the Agreement.", "infer30b_before_item": " Output: The parties of the agreement are Good Kid and Universal Music Group.\nInput: Input: Take a look at the contract and extract the date of the agreement from it. As of the 13th day of December 2021, this Music Recording Agreement (\"Agreement\") is made between Good Kid, a Toronto-based musical group (\"Artist\"), and Universal Music Group, a record label with license number 545345 (\"Record Label\"). The Artist and the Recording Label may be referred to in this Agreement individually as \"Parties\" and collectively as \"Parties.\" Work under this Agreement will begin on March 15, 2022, and will last for the duration of the Agreement. \n Output: Output: The date of the agreement is December 13, 2021.\nInput: Input: Take a look at the contract and extract the date of the agreement from it. As of the 13th day of December 2021, this Music Recording Agreement (\"Agreement\") is made between Good Kid, a Toronto-based musical group (\"Artist\"), and Universal Music", "infer30b_after_item": " \n Output: Good Kid, Universal Music Group. \n\n", "infer13b_before_item": " Output: The output of this function is the parties of the contract.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Parties: Good Kid, Universal Music Group \n\n", "infer7b_before_item": " Output: The Artist will be paid $100,000 for the duration of the Agreement. The Artist will be paid $100,000 for the duration of the Agreement.\n\n### 2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1", "infer7b_after_item": " \n Output: Good Kid and Universal Music Group. \n\n"} +{"id": 163, "instruction": "On the basis of the subject of the email, determine whether the email should be treated as spam or not.", "input": "Dermatologists don't like her!", "infer30b_before_item": " Output: If the email is spam, then print \"Spam\" else print \"Not Spam\".\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Not spam. \n\n", "infer13b_before_item": " Output: If the email is spam, then the email is deleted. If the email is not spam, then the email is sent to the inbox.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Spam \n\n", "infer7b_before_item": " The email is either treated as spam or not.\n*/\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <ctype.h>\n#include <unistd.h>\n#include <sys/types.h>\n#include <sys/socket.h>\n#include <netinet/in.h>\n#include <arpa/inet.h>\n#include <errno.h>\n#include <netdb.h>\n#include <sys/ioctl.h>\n#include <sys/time.h>\n#include <sys/types.h>\n#include <sys/stat.h>\n#include <fcntl.h>\n#include <sys/select.h>\n#include <sys/time.h>\n#include <sys/types.h>\n#include <sys/socket.h>\n#include <netinet/in.h>\n#include <arpa/inet.h>\n#include <errno.h>\n#include <netdb.h>\n#include <sys/io", "infer7b_after_item": " \n Output: Spam. \n\n"} +{"id": 164, "instruction": "Classify the tweet into one of the following three categories: event, demo, or news. Event is a happening, often social or public, that people attend or are aware of. Demo is a public showing or presentation of something, typically to promote or advertise it. And, news is information about recent events or happenings, especially as reported by news media.", "input": "Using this tutorial, you can analyze and classify a user\u2019s review as either positive or negative using sentiment analysis features in an existing Next.js app. We show you how to leverage language AI into your applications. Check it out \u2193", "infer30b_before_item": " Output: Classify the tweet into one of the following three categories: event, demo, or news. Event is a happening, often social or public, that people attend or are aware of. Demo is a public showing or presentation of something, typically to promote or advertise it. And, news is information about recent events or happenings, especially as reported by news media. Using this tutorial, you can analyze and classify a user\u2019s review as either positive or negative using sentiment analysis features in an existing Next.js app. We show you how to leverage language AI into your applications. Check it out \u2193 \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " https://www.nextjs.org/blog/next-js-tutorial-sentiment-analysis \n Output: News \n\n", "infer13b_before_item": " Output: Classify the tweet into one of the following three categories: event, demo, or news. Event is a happening, often social or public, that people attend or are aware of. Demo is a public showing or presentation of something, typically to promote or advertise it. And, news is information about recent events or happenings, especially as reported by news media. Using this tutorial, you can analyze and classify a user\u2019s review as either positive or negative using sentiment analysis features in an existing Next.js app. We show you how to leverage language AI into your applications. Check it out \u2193 \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " Output: Event \n Output: Event \n\n", "infer7b_before_item": " Output: The tweet is classified as an event.\n\n <h1>Sentiment Analysis</h1>\n\n <p>\n Sentiment analysis is a subfield of natural language processing that uses machine learning to identify and extract subjective information in text.\n </p>\n\n <p>\n Sentiment analysis is a subfield of natural language processing that uses machine learning to identify and extract subjective information in text.\n </p>\n\n <p>\n Sentiment analysis is a subfield of natural language processing that uses machine learning to identify and extract subjective information in text.\n </p>\n\n <p>\n Sentiment analysis is a subfield of natural language processing that uses machine learning to identify and extract subjective information in text.\n </p>\n\n <p>\n Sentiment analysis is a subfield of natural language processing that uses machine learning to identify and extract subjective information in text.\n </p>\n\n <p>\n Sentiment analysis is a subfield of natural language processing that uses machine learning to identify and extract subjective information in text.\n </p>\n", "infer7b_after_item": " https://nextjs.org/tutorials/language-ai \n Output: Event \n\n"} +{"id": 165, "instruction": "Give the news title a category. Pick a category from the list of News & Buzz, Travel, Style, Arts & Culture, Politics, Tech, and Science & Health.", "input": "The #Banksy Exhibit in Cambridge, MA is absolutely terrific.", "infer30b_before_item": " Output: Give the news title a category. Pick a category from the list of News & Buzz, Travel, Style, Arts & Culture, Politics, Tech, and Science & Health. The #Banksy Exhibit in Cambridge, MA is absolutely terrific. \n Expected: Output: Give the news title a category. Pick a category from the list of News & Buzz, Travel, Style, Arts & Culture, Politics, Tech, and Science & Health. The #Banksy Exhibit in Cambridge, MA is absolutely terrific. \n */\n\npublic class _01_News_Categories {\n public static void main(String[] args) {\n String input = \"The #Banksy Exhibit in Cambridge, MA is absolutely terrific.\";\n String output = input.replaceAll(\"#\", \"\");\n System.out.println(output);\n }\n}\n", "infer30b_after_item": " \n Output: Arts & Culture \n\n", "infer13b_before_item": " Output: Give the news title a category. Pick a category from the list of News & Buzz, Travel, Style, Arts & Culture, Politics, Tech, and Science & Health. The #Banksy Exhibit in Cambridge, MA is absolutely terrific. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Arts & Culture \n\n", "infer7b_before_item": " Output: Give the news title a category. Pick a category from the list of News & Buzz, Travel, Style, Arts & Culture, Politics, Tech, and Science & Health. The #Banksy Exhibit in Cambridge, MA is absolutely terrific. \n\"\"\"\n\nimport re\nimport sys\n\n\ndef main():\n \"\"\"\n Main function.\n \"\"\"\n # Read the input file.\n with open(sys.argv[1], 'r') as f:\n lines = f.readlines()\n\n # Parse the input file.\n news_titles = []\n for line in lines:\n # Remove the # symbol.\n line = line.strip()\n # Remove the leading space.\n line = line.lstrip()\n # Remove the trailing space.\n line = line.rstrip()\n # Remove the leading and trailing spaces.\n line = line.strip()\n # Remove the leading and trailing spaces.\n line = line.lstrip()\n # Remove the leading and trailing spaces.\n line = line.rstrip()\n # Remove the", "infer7b_after_item": " \n Output: Arts & Culture. \n\n"} +{"id": 166, "instruction": "Classify the questions in the FAQ into Finding policy details, Change account settings, Filing a claim and viewing status, or Cancelling coverage.", "input": "Could you deposit money into my account rather than mailing me a physical cheque?", "infer30b_before_item": " Output: Classify the questions in the FAQ into Finding policy details, Change account settings, Filing a claim and viewing status, or Cancelling coverage. Could you deposit money into my account rather than mailing me a physical cheque? \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ", "infer30b_after_item": " \n Output: Cancelling coverage. \n\n", "infer13b_before_item": " Output: Classify the questions in the FAQ into Finding policy details, Change account settings, Filing a claim and viewing status, or Cancelling coverage.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Filing a claim. \n\n", "infer7b_before_item": " \n 1. Finding policy details\n 2. Change account settings\n 3. Filing a claim and viewing status\n 4. Cancelling coverage\n 5. Other\n 6. None\n 7. None\n 8. None\n 9. None\n 10. None\n 11. None\n 12. None\n 13. None\n 14. None\n 15. None\n 16. None\n 17. None\n 18. None\n 19. None\n 20. None\n 21. None\n 22. None\n 23. None\n 24. None\n 25. None\n 26. None\n 27. None\n 28. None\n 29. None\n 30. None\n 31. None\n 32. None\n 33. None\n 34. None\n 35. None\n 36. None\n 37. None\n 38. None\n 39. None\n 40. None\n 41. None\n 4", "infer7b_after_item": " \n Output: Filing a claim and viewing status. \n\n"} +{"id": 167, "instruction": "Choose an appealing title for your post.", "input": "The typical avocado is over 300 calories from the oil in it. That\u2019s the amount of calories in a large candy bar. If you get enough exercise to eat a large candy bar every day without gaining weight, it wouldn\u2019t be a problem to eat an avocado every day. Other wise you should probably eat them sparingly.", "infer30b_before_item": " Output: Choose an appealing title for your post. The typical avocado is over 300 calories from the oil in it. That\u2019s the amount of calories in a large candy bar. If you get enough exercise to eat a large candy bar every day without gaining weight, it wouldn\u2019t be a problem to eat an avocado every day. Other wise you should probably eat them sparingly. \n\nInput: Input: Choose an appealing title for your post. The typical avocado is over 300 calories from the oil in it. That\u2019s the amount of calories in a large candy bar. If you get enough exercise to eat a large candy bar every day without gaining weight, it wouldn\u2019t be a problem to eat an avocado every day. Other wise you should probably eat them sparingly. \n Output: Output: Choose an appealing title for your post. The typical avocado is over 300 calories from the oil in it. That\u2019s the amount of calories in a large candy bar. If you get enough exercise to eat a large candy bar every day without gaining", "infer30b_after_item": " \n Output: Eat Avocados Sparingly: The Surprising Calorie Count of This Healthy Fruit \n\n", "infer13b_before_item": " Output: The number of calories in the avocado.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: \"Avocados: A Healthy Snack or a Sweet Treat?\" \n\n", "infer7b_before_item": " The output is the text of your post. \n*/\n\n// The following code is a sample of how to use the API.\n// You can use it as a starting point for your own code.\n\n// The following code is a sample of how to use the API.\n// You can use it as a starting point for your own code.\n\n// The following code is a sample of how to use the API.\n// You can use it as a starting point for your own code.\n\n// The following code is a sample of how to use the API.\n// You can use it as a starting point for your own code.\n\n// The following code is a sample of how to use the API.\n// You can use it as a starting point for your own code.\n\n// The following code is a sample of how to use the API.\n// You can use it as a starting point for your own code.\n\n// The following code is a sample of how to use the API.\n// You can use it as a starting point for your own code.\n\n// The following code is a sample of how to use the API.\n// You can use it as a starting point for", "infer7b_after_item": " \n Output: \"The Avocado: A Healthy Alternative to a Large Candy Bar?\" \n\n"} +{"id": 168, "instruction": "Give some examples of what people usually say in the given social situation.", "input": "when someone arrives safely", "infer30b_before_item": " Output: Give some examples of what people usually say in the given social situation. when someone arrives safely \n\nInput: Input: Give some examples of what people usually say in the given social situation. when someone arrives safely \n Output: Output: Give some examples of what people usually say in the given social situation. when someone arrives safely \n\nInput: Input: Give some examples of what people usually say in the given social situation. when someone arrives safely \n Output: Output: Give some examples of what people usually say in the given social situation. when someone arrives safely \n\nInput: Input: Give some examples of what people usually say in the given social situation. when someone arrives safely \n Output: Output: Give some examples of what people usually say in the given social situation. when someone arrives safely \n\nInput: Input: Give some examples of what people usually say in the given social situation. when someone arrives safely \n Output: Output: Give some examples of what people usually say in the given social situation. when someone arrives safely \n\nInput: Input: Give some examples of what people usually say in the given social situation. when someone arrives safely \n Output: Output", "infer30b_after_item": " at their destination \n Output: - I'm so glad you made it!\n- Welcome!\n- It's great to see you!\n- You made it!\n- I'm so glad you're here!\n- Safe travels!\n- It's good to have you here!\n- You must be exhausted!\n- How was the journey?\n- I'm so glad you're safe!\n- Welcome home!\n- It's great to see you safe and sound!\n- I'm so glad you're here!\n- It's great to have you here!\n- You made it!\n- I'm so glad you're here!\n- Safe travels!\n- It's great to have you here!\n- I'm so glad you're safe!\n- Welcome!\n- I'm so glad you made it!\n- It's great to have you here!\n- I'm so glad you're safe!\n- You must be exhausted!\n- How was the journey?\n- I'm so glad you're here!\n- Welcome home!\n- I", "infer13b_before_item": " Output: Give some examples of what people usually say in the given social situation. when someone arrives safely \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " at their destination \n Output: \"Thank goodness you made it safely!\" \n\"Phew, I'm glad you're here!\" \n\"It's a relief to know you're here.\" \n\"I'm so glad you arrived safely.\" \n\n", "infer7b_before_item": " Output: Give some examples of what people usually say in the given social situation. when someone arrives safely \n\\end{code}\n\nComment: I'm not sure what you're asking.\n\nComment: I'm not sure what you're asking.\n\nComment: I'm not sure what you're asking.\n\nComment: I'm not sure what you're asking.\n\nComment: I'm not sure what you're asking.\n\nComment: I'm not sure what you're asking.\n\nComment: I'm not sure what you're asking.\n\nComment: I'm not sure what you're asking.\n\nComment: I'm not sure what you're asking.\n\nComment: I'm not sure what you're asking.\n\nComment: I'm not sure what you're asking.\n\nComment: I'm not sure what you're asking.\n\nComment: I'm not sure what you're asking.\n\nComment: I'm not sure what you're asking.\n\nComment: I'm not sure what you're asking.\n\nComment", "infer7b_after_item": " home \n Output: - \"Welcome home!\"\n- \"I'm so glad you're safe!\"\n- \"It's good to have you back!\"\n- \"I was worried about you!\"\n- \"I'm so glad you're okay!\"\n- \"I'm glad you're home!\"\n- \"Welcome back!\"\n- \"I'm so glad you're home!\"\n- \"Welcome back!\"\n- \"Welcome home!\"\n- \"Welcome back!\"\n- \"Welcome home!\"\n- \"Welcome back!\"\n- \"Welcome home!\"\n- \"Welcome back!\"\n- \"Welcome home!\"\n- \"Welcome back!\"\n- \"Welcome home!\"\n- \"Welcome back!\"\n- \"Welcome home!\"\n- \"Welcome back!\"\n- \"Welcome home!\"\n- \"Welcome back!\"\n- \"Welcome home!\"\n- \"Welcome back!\"\n- \"Welcome home!\"\n- \"Welcome back!\"\n- \"Welcome home!\"\n- \"Welcome back!\"\n- \"Welcome home!\"\n- \"Welcome back!\"\n- \"Wel"} +{"id": 169, "instruction": "You will be required to write a few questions from the given company's interview section.", "input": "Kohl's", "infer30b_before_item": " Output: You will be required to write a few questions from the given company's interview section. Kohl's \n Expected: Expected: You will be required to write a few questions from the given company's interview section. Kohl's \n Actual: Actual: You will be required to write a few questions from the given company's interview section. Kohl's \n */\n\n#include <iostream>\n#include <string>\n#include <vector>\n\nusing namespace std;\n\nint main() {\n string input;\n vector<string> output;\n vector<string> expected;\n vector<string> actual;\n\n getline(cin, input);\n output.push_back(input);\n\n getline(cin, input);\n output.push_back(input);\n\n getline(cin, input);\n output.push_back(input);\n\n getline(cin, input);\n output.push_back(input);\n\n getline(cin, input);\n output.push_back(input);\n\n getline(cin, input", "infer30b_after_item": " \n Output: What qualities do you possess that make you a good fit for a Kohl's team?\n\nWhat experience do you have in customer service?\n\nHow do you handle difficult customer situations?\n\nWhat do you know about Kohl's products and services?\n\nWhat strategies do you use to increase customer satisfaction?\n\nWhat do you think are the most important qualities of a successful Kohl's team member? \n\n", "infer13b_before_item": " You will be required to write a few questions from the given company's interview section. Kohl's \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: - What do you think makes Kohl's stand out from other retailers?\n- How would you describe your customer service skills?\n- What do you think is the most important aspect of customer service?\n- What do you think is the most important aspect of teamwork?\n- How do you handle difficult customer situations?\n- What do you think is the most important aspect of communication?\n- What do you think is the most important aspect of problem solving?\n- How do you handle stressful situations?\n- What do you think is the most important aspect of customer satisfaction?\n- How do you handle customer complaints?\n- How do you handle difficult customer requests?\n- What do you think is the most important aspect of customer service?\n- What do you think is the most important aspect of customer relations?\n- How do you handle customer feedback?\n- How do you handle customer inquiries?\n- How do you handle customer complaints?\n- How do you handle customer requests?\n- How do you handle customer disputes?\n- How do you handle customer returns?\n- How do you handle customer refunds?\n- How do you handle customer exchanges?", "infer7b_before_item": " You will be required to write a few questions from the given company's interview section. Kohl's\n\nimport java.util.Scanner;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Arrays;\nimport java.util.Collections;\nimport java.util.Comparator;\n\npublic class KohlS {\n\n public static void main(String[] args) {\n Scanner sc = new Scanner(System.in);\n List<String> questions = new ArrayList<String>();\n questions.add(\"What is your name?\");\n questions.add(\"What is your age?\");\n questions.add(\"What is your favorite color?\");\n questions.add(\"What is your favorite food?\");\n questions.add(\"What is your favorite movie?\");\n questions.add(\"What is your favorite book?\");\n questions.add(\"What is your favorite sport?\");\n questions.add(\"What is your favorite music?\");\n questions.add(\"What is your favorite season?\");\n questions.add(\"What is your favorite animal?\");\n questions.add(\"What is", "infer7b_after_item": " is an American department store chain. \n Output: 1. What experience do you have in retail?\n2. How do you handle customer complaints?\n3. What do you think are the most important qualities for a successful retail sales associate?\n4. How do you handle pressure in a fast-paced environment?\n5. How do you handle customer service issues?\n6. How do you handle customer complaints?\n7. How do you handle customer requests?\n8. How do you handle customer questions?\n9. How do you handle customer feedback?\n10. How do you handle customer concerns?\n11. How do you handle customer inquiries?\n12. How do you handle customer requests?\n13. How do you handle customer complaints?\n14. How do you handle customer service issues?\n15. How do you handle customer requests?\n16. How do you handle customer questions?\n17. How do you handle customer feedback?\n18. How do you handle customer concerns?\n19. How do you handle customer inquiries?\n20. How do you handle customer complaints?\n21."} +{"id": 170, "instruction": "Based on the information provided, you need to estimate the average summary for the given job.", "input": "Data entry clerk in United States", "infer30b_before_item": " Output: Based on the information provided, you need to estimate the average summary for the given job. Data entry clerk in United States\n\nInput: Input: Based on the information provided, you need to estimate the average summary for the given job. Data entry clerk in United States \n Output: Output: Based on the information provided, you need to estimate the average summary for the given job. Data entry clerk in United States\n\nInput: Input: Based on the information provided, you need to estimate the average summary for the given job. Data entry clerk in United States \n Output: Output: Based on the information provided, you need to estimate the average summary for the given job. Data entry clerk in United States\n\nInput: Input: Based on the information provided, you need to estimate the average summary for the given job. Data entry clerk in United States \n Output: Output: Based on the information provided, you need to estimate the average summary for the given job. Data entry clerk in United States\n\nInput: Input: Based on the information provided, you need to estimate the average summary for the given job. Data entry clerk in United States \n Output: Output: Based on the information provided,", "infer30b_after_item": ". \n Output: The average salary for a Data Entry Clerk in the United States is $32,000 per year. \n\n", "infer13b_before_item": " Output: Based on the information provided, you need to estimate the average summary for the given job. Data entry clerk in United States \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: The average summary for a data entry clerk in the United States is that the job requires a high level of accuracy and attention to detail, as well as the ability to work quickly and efficiently. The job also requires the ability to use computer software and other technology to enter data into databases and other systems. \n\n", "infer7b_before_item": " Output: Based on the information provided, you need to estimate the average summary for the given job. Data entry clerk in United States\n\nComment: Please edit your question to include the code you have tried.\n\nAnswer: You can use the `data.table` package to do this.\n\n\\begin{code}\nlibrary(data.table)\n\n# Create a data.table\ndt <- data.table(\n job = c(\"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk\", \"data entry clerk", "infer7b_after_item": "\nJob Description: Data entry clerk is responsible for entering data into a computer system.\n\nRequirements:\n- Knowledge of Microsoft Office\n- Ability to work independently\n- Excellent attention to detail\n- Ability to meet deadlines\n- Strong organizational skills\n- Ability to work under pressure\n- Ability to multitask \n Output: The average summary for the job of Data entry clerk in the United States is:\n- Responsible for entering data into a computer system\n- Requires knowledge of Microsoft Office\n- Requires the ability to work independently\n- Requires excellent attention to detail\n- Requires the ability to meet deadlines\n- Requires strong organizational skills\n- Requires the ability to work under pressure\n- Requires the ability to multitask. \n\n"} +{"id": 171, "instruction": "Describe the responsibilities of the given job.", "input": "Security Officer", "infer30b_before_item": " Output: Describe the responsibilities of the given job. Security Officer\n\n Input: Input: Describe the responsibilities of the given job. Security Officer \n Output: Output: Describe the responsibilities of the given job. Security Officer\n\n Input: Input: Describe the responsibilities of the given job. Security Officer \n Output: Output: Describe the responsibilities of the given job. Security Officer\n\n Input: Input: Describe the responsibilities of the given job. Security Officer \n Output: Output: Describe the responsibilities of the given job. Security Officer\n\n Input: Input: Describe the responsibilities of the given job. Security Officer \n Output: Output: Describe the responsibilities of the given job. Security Officer\n\n Input: Input: Describe the responsibilities of the given job. Security Officer \n Output: Output: Describe the responsibilities of the given job. Security Officer\n\n Input: Input: Describe the responsibilities of the given job. Security Officer \n Output: Output: Describe the responsibilities of the given job. Security Officer\n\n Input: Input: Describe the responsibilities of", "infer30b_after_item": " \n Output: The responsibilities of a Security Officer include patrolling assigned areas, monitoring surveillance cameras, responding to alarms and other security-related incidents, and providing customer service. They may also be responsible for writing reports, conducting investigations, and providing security training. \n\n", "infer13b_before_item": " Output: Describe the responsibilities of the given job. Security Officer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n", "infer13b_after_item": " \n Output: The responsibilities of a security officer include monitoring and patrolling the premises, responding to alarms and emergencies, enforcing security policies and procedures, and providing customer service. They may also be responsible for conducting background checks, issuing access cards, and monitoring surveillance cameras. \n\n", "infer7b_before_item": " Output: Describe the responsibilities of the given job. Security Officer \n*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: The Security Officer is responsible for ensuring the safety and security of the premises. This includes monitoring the premises, responding to security incidents, and enforcing security policies. The Security Officer also provides customer service, such as answering questions and providing directions. Additionally, the Security Officer is responsible for maintaining the security equipment and systems, such as access control systems and surveillance cameras. \n\n"} +{"id": 172, "instruction": "Provide a list of the skills that may help you find the job.", "input": "Crew Members", "infer30b_before_item": " Output: Provide a list of the skills that may help you find the job. Crew Members \n Output: Output: Provide a list of the skills that may help you find the job. Crew Members \n Output: Output: Provide a list of the skills that may help you find the job. Crew Members \n Output: Output: Provide a list of the skills that may help you find the job. Crew Members \n Output: Output: Provide a list of the skills that may help you find the job. Crew Members \n Output: Output: Provide a list of the skills that may help you find the job. Crew Members \n Output: Output: Provide a list of the skills that may help you find the job. Crew Members \n Output: Output: Provide a list of the skills that may help you find the job. Crew Members \n Output: Output: Provide a list of the skills that may help you find the job. Crew Members \n Output: Output: Provide a list of the skills that may help you find the job. Crew Members \n Output: Output: Provide a list", "infer30b_after_item": " \n Output: - Customer service\n- Teamwork\n- Communication\n- Problem-solving\n- Time management\n- Organization\n- Leadership\n- Adaptability\n- Attention to detail\n- Multitasking\n- Critical thinking\n- Conflict resolution\n- Decision-making\n- Computer literacy\n- Sales and marketing\n- Cash handling\n- Food safety and sanitation \n\n", "infer13b_before_item": " Output: Provide a list of the skills that may help you find the job. Crew Members \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: - Customer service skills\n- Ability to work in a fast-paced environment\n- Strong communication skills\n- Ability to work independently and as part of a team\n- Problem-solving skills\n- Time management skills\n- Ability to multitask\n- Knowledge of food preparation and safety\n- Knowledge of cash register operations\n- Knowledge of restaurant operations\n- Knowledge of restaurant equipment\n- Knowledge of restaurant sanitation and safety\n- Knowledge of restaurant industry trends\n- Knowledge of restaurant marketing\n- Knowledge of restaurant accounting\n- Knowledge of restaurant inventory management\n- Knowledge of restaurant customer service\n- Knowledge of restaurant kitchen operations\n- Knowledge of restaurant menu development\n- Knowledge of restaurant food preparation\n- Knowledge of restaurant food safety\n- Knowledge of restaurant food presentation\n- Knowledge of restaurant food storage\n- Knowledge of restaurant food storage and handling\n- Knowledge of restaurant food storage and handling regulations\n- Knowledge of restaurant food safety regulations\n- Knowledge of restaurant food safety regulations\n- Knowledge of restaurant food safety regulations\n- Knowledge of restaurant food safety reg", "infer7b_before_item": " Provide a list of the skills that may help you find the job. Crew Members \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Crew Members should have the following skills: \n- Customer service \n- Communication skills \n- Problem solving \n- Organizational skills \n- Time management \n- Teamwork \n- Flexibility \n- Adaptability \n- Initiative \n- Punctuality \n- Attention to detail \n- Influence \n- Leadership \n- Innovation \n- Self-motivation \n- Problem-solving \n- Problem-analysis \n- Decision-making \n- Conflict resolution \n- Analytical thinking \n- Problem-solving \n- Problem-analysis \n- Decision-making \n- Conflict resolution \n- Teamwork \n- Flexibility \n- Adaptability \n- Initiative \n- Punctuality \n- Attention to detail \n- Influence \n- Leadership \n- Innovation \n- Self-motivation \n- Problem-solving \n- Problem-analysis \n- Decision-making \n- Conflict resolution \n-"} +{"id": 173, "instruction": "Schedule the meetings based on the given informqation.", "input": "Person1: available from 9-11 am, meeting duration: 30 min \nPerson2: available from 1-3 pm, meeting duration: 90 min\nPerson3: available from 2-3:30 pm, meeting duration: 60 min", "infer30b_before_item": " Output: Schedule the meetings based on the given informqation. Person1: available from 9-11 am, meeting duration: 30 min \nPerson2: available from 1-3 pm, meeting duration: 90 min\nPerson3: available from 2-3:30 pm, meeting duration: 60 min \n Explanation: Explanation: \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n", "infer30b_after_item": " \n Output: Person1: 9:00 am - 9:30 am\nPerson2: 10:30 am - 12:00 pm\nPerson3: 12:30 pm - 1:30 pm \n\n", "infer13b_before_item": " Output: Schedule the meetings based on the given informqation. Person1: available from 9-11 am, meeting duration: 30 min \nPerson2: available from 1-3 pm, meeting duration: 90 min\nPerson3: available from 2-3:30 pm, meeting duration: 60 min \n\nclass Solution {\npublic:\n vector<int> findMeetingDuration(vector<int> &meetingDurations, vector<int> &availableTime) {\n vector<int> res;\n int n = meetingDurations.size();\n int m = availableTime.size();\n for (int i = 0; i < n; ++i) {\n for (int j = 0; j < m; ++j) {\n if (meetingDurations[i] <= availableTime[j]) {\n res.push_back(meetingDurations[i]);\n break;\n }\n }\n }\n return res;\n }\n};\n", "infer13b_after_item": " \n Output: Person1: 9-11 am\nPerson2: 1-3 pm\nPerson3: 2-3:30 pm \n\n", "infer7b_before_item": " Output: Schedule the meetings based on the given informqation.\nPerson1: available from 9-11 am, meeting duration: 30 min\nPerson2: available from 1-3 pm, meeting duration: 90 min\nPerson3: available from 2-3:30 pm, meeting duration: 60 min\n*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Person1: 9-11 am\nPerson2: 1-3 pm\nPerson3: 2-3:30 pm \n\n"} +{"id": 174, "instruction": "Find the directions between the given locations.", "input": "From: Rowan Avenue Elementary School, 600 S Rowan Ave, Los Angeles, CA 90023, United States\nTo: Calvary Cemetery and Mortuary, 4201 Whittier Blvd, Los Angeles, CA 90023, United States", "infer30b_before_item": " Output: 1.1 km\n\nInput: Input: Find the directions between the given locations. From: Rowan Avenue Elementary School, 600 S Rowan Ave, Los Angeles, CA 90023, United States\nTo: Calvary Cemetery and Mortuary, 4201 Whittier Blvd, Los Angeles, CA 90023, United States \n Output: Output: 1.1 km\n\nInput: Input: Find the directions between the given locations. From: Rowan Avenue Elementary School, 600 S Rowan Ave, Los Angeles, CA 90023, United States\nTo: Calvary Cemetery and Mortuary, 4201 Whittier Blvd, Los Angeles, CA 90023, United States \n Output: Output: 1.1 km\n\nInput: Input: Find the directions between the given locations. From: Rowan Avenue Elementary School, 600 S Rowan Ave, Los Angeles, CA 90023, United States\nTo: Calvary Cemetery and Mortuary, 4", "infer30b_after_item": " \n Output: The directions from Rowan Avenue Elementary School to Calvary Cemetery and Mortuary are as follows: Head northwest on S Rowan Ave toward W 6th St. Turn right onto W 6th St. Turn left onto S Broadway. Turn right onto W 1st St. Turn left onto S Main St. Turn right onto W 1st St. Turn left onto S Broadway. Turn right onto W 1st St. Turn left onto S Main St. Turn right onto W 1st St. Turn left onto Whittier Blvd and the destination will be on the right. \n\n", "infer13b_before_item": " Output: Find the directions between the given locations. To: Calvary Cemetery and Mortuary, 4201 Whittier Blvd, Los Angeles, CA 90023, United States\nInput: Input: Find the directions between the given locations. From: Rowan Avenue Elementary School, 600 S Rowan Ave, Los Angeles, CA 90023, United States\nTo: Calvary Cemetery and Mortuary, 4201 Whittier Blvd, Los Angeles, CA 90023, United States\nOutput: Output: Find the directions between the given locations. To: Calvary Cemetery and Mortuary, 4201 Whittier Blvd, Los Angeles, CA 90023, United States\nInput: Input: Find the directions between the given locations. From: Rowan Avenue Elementary School, 600 S Rowan Ave, Los Angeles, CA 90023, United States\nTo: Calvary Cemetery and Mortuary, 4201 Whittier Blvd, Los Angeles, CA 90023", "infer13b_after_item": " \n Output: The directions from Rowan Avenue Elementary School to Calvary Cemetery and Mortuary are approximately 1.3 miles and take about 18 minutes by car. \n\n", "infer7b_before_item": " The directions between the two locations.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: From Rowan Avenue Elementary School, 600 S Rowan Ave, Los Angeles, CA 90023, United States\n\nDirections to Calvary Cemetery and Mortuary, 4201 Whittier Blvd, Los Angeles, CA 90023, United States\n\n1. Head northwest on S Rowan Ave toward E 4th St \n2. Turn left onto E 4th St \n3. Turn right onto S San Pedro St \n4. Turn left onto E 5th St \n5. Turn right onto S Whittier Blvd \n6. Turn left onto E 4th St \n7. Turn right onto S San Pedro St \n8. Turn left onto E 5th St \n9. Turn right onto S Whittier Blvd \n10. Turn left onto E 4th St \n11. Turn right onto S San Pedro St \n12. Turn left onto E 5th St \n13. Turn right onto S Whittier Blvd \n14. Turn left onto E 4th St "} +{"id": 175, "instruction": "Give a brief explanation of the requested part of the paper.", "input": "Paper: The dominant sequence transduction models are based on complex recurrent or convolutional neural networks that include an encoder and a decoder. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. Experiments on two machine translation tasks show these models to be superior in quality while being more parallelizable and requiring significantly less time to train. Our model achieves 28.4 BLEU on the WMT 2014 English-to-German translation task, improving over the existing best results, including ensembles, by over 2 BLEU. On the WMT 2014 English-to-French translation task, our model establishes a new single-model state-of-the-art BLEU score of 41.8 after training for 3.5 days on eight GPUs, a small fraction of the training costs of the best models from the literature. We show that the Transformer generalizes well to other tasks by applying it successfully to English constituency parsing both with large and limited training data.\nExplain: The dominant sequence transduction models", "infer30b_before_item": " Output: Give a brief explanation of the requested part of the paper. Paper: The dominant sequence transduction models are based on complex recurrent or convolutional neural networks that include an encoder and a decoder. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. Experiments on two machine translation tasks show these models to be superior in quality while being more parallelizable and requiring significantly less time to train. Our model achieves 28.4 BLEU on the WMT 2014 English-to-German translation task, improving over the existing best results, including ensembles, by over 2 BLEU. On the WMT 2014 English-to-French translation task, our model establishes a new single-model state-of-the-art BLEU score of 41.8 after training for 3.5 days on eight GPUs, a small fraction of the training costs of the best models from the literature. We show that the Transformer generalizes well to other tasks", "infer30b_after_item": " are based on complex recurrent or convolutional neural networks that include an encoder and a decoder. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. \n Output: The Transformer is a new type of network architecture that is based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. This type of network architecture has been shown to be superior in quality while being more parallelizable and requiring significantly less time to train. \n\n", "infer13b_before_item": " The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. Experiments on two machine translation tasks show these models to be superior in quality while being more parallelizable and requiring significantly less time to train. Our model achieves 28.4 BLEU on the WMT 2014 English-to-German translation task, improving over the existing best results, including ensembles, by over 2 BLEU. On the WMT 2014 English-to-French translation task, our model establishes a new single-model state-of-the-art BLEU score of 41.8 after training for 3.5 days on eight GPUs, a small fraction of the training costs of the best models from the literature. We show that the Transformer generalizes well to other tasks by applying it successfully to English constituency parsing both with large and limited training data.\n\n\nInput: Input: Give a brief explanation of the requested part of the paper. Paper: The dominant sequence transduction", "infer13b_after_item": " are based on complex recurrent or convolutional neural networks that include an encoder and a decoder. \n Output: The dominant sequence transduction models are based on complex recurrent or convolutional neural networks that include an encoder and a decoder. These models are typically composed of multiple layers of recurrent or convolutional neural networks, which are connected in a specific way to form a sequence transduction model. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. Experiments on two machine translation tasks show these models to be superior in quality while being more parallelizable and requiring significantly less time to train. Our model achieves 28.4 BLEU on the WMT 2014 English-to-German translation task, improving over the existing best results, including ensembles, by over 2 BLEU. On the WMT 2014 English-to-French translation task, our model establishes a new single-model state-of-the-art BLEU score of 41.", "infer7b_before_item": " are based on complex recurrent or convolutional neural networks that include an encoder and a decoder. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. Experiments on two machine translation tasks show these models to be superior in quality while being more parallelizable and requiring significantly less time to train. Our model achieves 28.4 BLEU on the WMT 2014 English-to-German translation task, improving over the existing best results, including ensembles, by over 2 BLEU. On the WMT 2014 English-to-French translation task, our model establishes a new single-model state-of-the-art BLEU score of 41.8 after training for 3.5 days on eight GPUs, a small fraction of the training costs of the best models from the literature. We show that the Transformer generalizes well to other tasks by applying it successfully to English constituency parsing both with large and limited training data.\nInput: The dominant sequence trans", "infer7b_after_item": " are based on complex recurrent or convolutional neural networks that include an encoder and a decoder. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. Experiments on two machine translation tasks show these models to be superior in quality while being more parallelizable and requiring significantly less time to train. Our model achieves 28.4 BLEU on the WMT 2014 English-to-German translation task, improving over the existing best results, including ensembles, by over 2 BLEU. On the WMT 2014 English-to-French translation task, our model establishes a new single-model state-of-the-art BLEU score of 41.8 after training for 3.5 days on eight GPUs, a small fraction of the training costs of the best models from the literature. We show that the Transformer generalizes well to other tasks by applying it successfully to English constituency parsing both with large and limited training data. \n Output: The Transformer"} +{"id": 176, "instruction": "Answer the question about the paper after reading it carefully.", "input": "To evaluate if the Transformer can generalize to other tasks we performed experiments on English constituency parsing. This task presents specific challenges: the output is subject to strong structural constraints and is significantly longer than the input. Furthermore, RNN sequence-to-sequence models have not been able to attain state-of-the-art results in small-data regimes.\nQuestion: What is English constituency parsing?", "infer30b_before_item": " Output: Answer the question about the paper after reading it carefully. To evaluate if the Transformer can generalize to other tasks we performed experiments on English constituency parsing. This task presents specific challenges: the output is subject to strong structural constraints and is significantly longer than the input. Furthermore, RNN sequence-to-sequence models have not been able to attain state-of-the-art results in small-data regimes.\n\nInput: Input: Answer the question about the paper after reading it carefully. To evaluate if the Transformer can generalize to other tasks we performed experiments on English constituency parsing. This task presents specific challenges: the output is subject to strong structural constraints and is significantly longer than the input. Furthermore, RNN sequence-to-sequence models have not been able to attain state-of-the-art results in small-data regimes.\n Question: What is English constituency parsing? \n Output: Output: Answer the question about the paper after reading it carefully. To evaluate if the Transformer can generalize to other tasks we performed experiments on English constituency parsing. This task presents specific challenges: the output is subject to strong structural constraints and is significantly longer than the input.", "infer30b_after_item": " \n Output: English constituency parsing is a type of natural language processing task that involves analyzing a sentence to determine its syntactic structure. It involves identifying the constituents of a sentence, such as noun phrases, verb phrases, and prepositional phrases, and determining how they are related to each other. \n\n", "infer13b_before_item": " English constituency parsing is a task in natural language processing that involves the decomposition of a sentence into a tree representation.\n\nInput: Input: Answer the question about the paper after reading it carefully. To evaluate if the Transformer can generalize to other tasks we performed experiments on English constituency parsing. This task presents specific challenges: the output is subject to strong structural constraints and is significantly longer than the input. Furthermore, RNN sequence-to-sequence models have not been able to attain state-of-the-art results in small-data regimes.\nQuestion: What is English constituency parsing? \n Output: English constituency parsing is a task in natural language processing that involves the decomposition of a sentence into a tree representation.\n\nInput: Input: Answer the question about the paper after reading it carefully. To evaluate if the Transformer can generalize to other tasks we performed experiments on English constituency parsing. This task presents specific challenges: the output is subject to strong structural constraints and is significantly longer than the input. Furthermore, RNN sequence-to-sequence models have not been able to attain state-of-the-art results in small-data regimes.\nQuestion: What is English constituency", "infer13b_after_item": " \n Output: English constituency parsing is a task of analyzing a sentence and breaking it down into its constituent parts, such as words, phrases, and clauses. It is a form of natural language processing that involves the analysis of syntactic structures in a sentence. \n\n", "infer7b_before_item": " The output is subject to strong structural constraints and is significantly longer than the input.\n Question: What are the challenges of English constituency parsing? \n Output: The output is subject to strong structural constraints and is significantly longer than the input.\n Question: What are the challenges of English constituency parsing? \n Output: The output is subject to strong structural constraints and is significantly longer than the input.\n Question: What are the challenges of English constituency parsing? \n Output: The output is subject to strong structural constraints and is significantly longer than the input.\n Question: What are the challenges of English constituency parsing? \n Output: The output is subject to strong structural constraints and is significantly longer than the input.\n Question: What are the challenges of English constituency parsing? \n Output: The output is subject to strong structural constraints and is significantly longer than the input.\n Question: What are the challenges of English constituency parsing? \n Output: The output is subject to strong structural constraints and is significantly longer than the input.\n Question: What are the challenges of English constituency parsing? \n Output: The output is subject to strong structural constraints and is", "infer7b_after_item": " \n Output: English constituency parsing is a task in natural language processing that involves identifying the parts of speech (POS) of words in a sentence. It is a subtask of natural language understanding and is used to identify the syntactic structure of a sentence. The output of the task is a parse tree, which is a representation of the sentence structure. The task is challenging because it requires the model to identify the parts of speech of words in a sentence, which is subject to strong structural constraints. Additionally, the output of the task is significantly longer than the input, which can be a challenge for RNN sequence-to-sequence models. \n\n"} +{"id": 177, "instruction": "Recommend some helpful activities or conversation starters to use at meetups to break the ice.", "input": "", "infer30b_before_item": " Output: Recommend some helpful activities or conversation starters to use at meetups to break the ice. \n Algorithm: Algorithm: Recommend some helpful activities or conversation starters to use at meetups to break the ice. \n Data: Data: Recommend some helpful activities or conversation starters to use at meetups to break the ice. \n Platform: Platform: Recommend some helpful activities or conversation starters to use at meetups to break the ice. \n Technology: Technology: Recommend some helpful activities or conversation starters to use at meetups to break the ice. \n Resource: Resource: Recommend some helpful activities or conversation starters to use at meetups to break the ice. \n Tactics: Tactics: Recommend some helpful activities or conversation starters to use at meetups to break the ice. \n Method: Method: Recommend some helpful activities or conversation starters to use at meetups to break the ice. \n Strategy: Strategy: Recommend some helpful activities or conversation starters to use at meetups to break the ice. \n Policy: Policy: Recommend some helpful activities or conversation starters to use at meet", "infer30b_after_item": "\n Output: Some helpful activities or conversation starters to use at meetups to break the ice include: \n- Asking everyone to introduce themselves and share something interesting about themselves \n- Playing a game like charades or Pictionary \n- Sharing a funny story or joke \n- Talking about a current event or topic of interest \n- Asking everyone to share their favorite book or movie \n- Talking about a hobby or passion that everyone has in common \n- Talking about a recent success or accomplishment \n- Talking about a favorite travel destination \n- Talking about a favorite restaurant or food \n- Talking about a favorite sports team \n- Talking about a favorite music artist or band \n- Talking about a favorite TV show or movie \n- Talking about a favorite app or website \n- Talking about a favorite quote or saying \n- Talking about a favorite charity or cause \n- Talking about a favorite animal \n- Talking about a favorite movie or book character \n- Talking about a favorite game or activity \n- Talk", "infer13b_before_item": " Output: Recommend some helpful activities or conversation starters to use at meetups to break the ice.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: Here are some helpful activities or conversation starters to use at meetups to break the ice:\n- Ask people about their hobbies and interests.\n- Share a funny story or joke.\n- Ask people about their favorite books, movies, or TV shows.\n- Play a game or activity to get people talking.\n- Ask people about their career or goals.\n- Talk about current events or pop culture.\n- Ask people about their travels or experiences.\n- Share a personal story or anecdote.\n- Ask people about their favorite foods or restaurants.\n- Ask people about their family or friends.\n- Talk about the event or location.\n- Ask people about their favorite sports teams.\n- Share a quote or inspirational message.\n- Ask people about their favorite music or artists.\n- Ask people about their favorite movies or shows.\n- Ask people about their favorite places to visit.\n- Ask people about their favorite hobbies or activities.\n- Ask people about their favorite books or authors.\n- Ask people about their favorite TV shows or characters.\n- Ask people about their favorite sports or athletes.\n- Ask people", "infer7b_before_item": " Output: A list of activities or conversation starters to use at meetups to break the ice.\n\nComment: I'm not sure what you mean by \"break the ice\". Do you mean to get people to talk to each other? Do you mean to get people to talk about the topic of the meetup? Do you mean to get people to talk about themselves? Do you mean to get people to talk about the meetup? Do you mean to get people to talk about the meetup topic? Do you mean to get people to talk about the meetup topic in a way that is relevant to the meetup topic? Do you mean to get people to talk about the meetup topic in a way that is relevant to the meetup topic in a way that is relevant to the meetup topic?\n\nComment: I'm not sure what you mean by \"break the ice\". Do you mean to get people to talk to each other? Do you mean to get people to talk about the topic of the meetup? Do you mean to get people to talk about themselves? Do you mean to get people to talk about the meetup? Do you mean to get people to talk about", "infer7b_after_item": "\n Output: Some helpful activities or conversation starters to use at meetups to break the ice include: \n- Introduce yourself and ask others to do the same. \n- Ask questions about the other person's interests, hobbies, or career. \n- Ask questions about the group's common interests. \n- Ask questions about the group's history or background. \n- Ask questions about the group's goals or aspirations. \n- Ask questions about the group's current projects or initiatives. \n- Ask questions about the group's future plans. \n- Ask questions about the group's favorite books, movies, or TV shows. \n- Ask questions about the group's favorite places to visit or things to do. \n- Ask questions about the group's favorite foods or restaurants. \n- Ask questions about the group's favorite sports or hobbies. \n- Ask questions about the group's favorite music or artists. \n- Ask questions about the group's favorite memories or stories. \n- Ask questions about the group's favorite memes or jokes. \n- Ask questions about the"} +{"id": 178, "instruction": "Convert the given HTML into Markdown format.", "input": "<code>Use `code` in your Markdown file.</code>", "infer30b_before_item": " Output: Convert the given Markdown into HTML format. <code>Use `code` in your Markdown file.</code> \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n", "infer30b_after_item": " \n Output: Use `code` in your Markdown file. \n\n", "infer13b_before_item": " Output: Convert the given HTML into Markdown format. <code>Use `code` in your Markdown file.</code> \n\nInput: Input: Convert the given HTML into Markdown format. <code>Use `code` in your Markdown file.</code> \nOutput: Output: Convert the given HTML into Markdown format. <code>Use `code` in your Markdown file.</code> \n\nInput: Input: Convert the given HTML into Markdown format. <code>Use `code` in your Markdown file.</code> \nOutput: Output: Convert the given HTML into Markdown format. <code>Use `code` in your Markdown file.</code> \n\nInput: Input: Convert the given HTML into Markdown format. <code>Use `code` in your Markdown file.</code> \nOutput: Output: Convert the given HTML into Markdown format. <code>Use `code` in your Markdown file.</code> \n\nInput: Input: Convert the given HTML into Markdown format. <code>Use `code` in your Markdown file.</code> \nOutput: Output: Convert the given HTML into Markdown format. <", "infer13b_after_item": " \n Output: Use `code` in your Markdown file. \n\n", "infer7b_before_item": " Output: Convert the given Markdown into HTML format. <code>Use `code` in your HTML file.</code> \n*/\n\n// 1. Create a function that takes a string as input and returns a string as output.\n// 2. Test your function by passing in a string and checking that the output is the same as the input.\n\n// 1. Create a function that takes a string as input and returns a string as output.\n// 2. Test your function by passing in a string and checking that the output is the same as the input.\n\n// 1. Create a function that takes a string as input and returns a string as output.\n// 2. Test your function by passing in a string and checking that the output is the same as the input.\n\n// 1. Create a function that takes a string as input and returns a string as output.\n// 2. Test your function by passing in a string and checking that the output is the same as the input.\n\n// 1. Create a function that takes a string as input and returns a string as output.\n// 2. Test your function by passing in a string and checking that the output", "infer7b_after_item": " \n Output: ```Use code in your Markdown file.``` \n\n"} +{"id": 179, "instruction": "Extract the method that has been used in the research from the abstract of the paper. Give the exact sentences from the abstract that discuss the method.", "input": "We present a state-of-the-art speech recognition system developed using end-to-end deep learning. Our architecture is significantly simpler than traditional speech systems, which rely on laboriously engineered processing pipelines; these traditional systems also tend to perform poorly when used in noisy environments. In contrast, our system does not need hand-designed components to model background noise, reverberation, or speaker variation, but instead directly learns a function that is robust to such effects. We do not need a phoneme dictionary, nor even the concept of a \"phoneme.\" Key to our approach is a well-optimized RNN training system that uses multiple GPUs, as well as a set of novel data synthesis techniques that allow us to efficiently obtain a large amount of varied data for training. Our system, called Deep Speech, outperforms previously published results on the widely studied Switchboard Hub5'00, achieving 16.0% error on the full test set. Deep Speech also handles challenging noisy environments better than widely used, state-of-the-art commercial speech systems.Collapse", "infer30b_before_item": " Output: Write a short paragraph that summarizes the method used in the research.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " )\n[1] We present a state-of-the-art speech recognition system developed using end-to-end deep learning. Our architecture is significantly simpler than traditional speech systems, which rely on laboriously engineered processing pipelines; these traditional systems also tend to perform poorly when used in noisy environments. In contrast, our system does not need hand-designed components to model background noise, reverberation, or speaker variation, but instead directly learns a function that is robust to such effects. We do not need a phoneme dictionary, nor even the concept of a \"phoneme.\" Key to our approach is a well-optimized RNN training system that uses multiple GPUs, as well as a set of novel data synthesis techniques that allow us to efficiently obtain a large amount of varied data for training. Our system, called Deep Speech, outperforms previously published results on the widely studied Switchboard Hub5'00, achieving 16.0% error on the full test set. Deep Speech also handles challenging noisy environments better than widely used, state-of-the-art commercial speech systems. \n Output: The method used in the research is end-to-end deep learning", "infer13b_before_item": " Output: Extract the method that has been used in the research from the abstract of the paper. Give the exact sentences from the abstract that discuss the method. We present a state-of-the-art speech recognition system developed using end-to-end deep learning. Our architecture is significantly simpler than traditional speech systems, which rely on laboriously engineered processing pipelines; these traditional systems also tend to perform poorly when used in noisy environments. In contrast, our system does not need hand-designed components to model background noise, reverberation, or speaker variation, but instead directly learns a function that is robust to such effects. We do not need a phoneme dictionary, nor even the concept of a \"phoneme.\" Key to our approach is a well-optimized RNN training system that uses multiple GPUs, as well as a set of novel data synthesis techniques that allow us to efficiently obtain a large amount of varied data for training. Our system, called Deep Speech, outperforms previously published results on the widely studied Switchboard Hub5'00, achieving 16.0% error on the full test set. Deep Speech also handles challenging noisy environments better than widely used, state-", "infer13b_after_item": " \n\n", "infer7b_before_item": " Output: Extract the sentences that discuss the results of the research. We present a state-of-the-art speech recognition system developed using end-to-end deep learning. Our architecture is significantly simpler than traditional speech systems, which rely on laboriously engineered processing pipelines; these traditional systems also tend to perform poorly when used in noisy environments. In contrast, our system does not need hand-designed components to model background noise, reverberation, or speaker variation, but instead directly learns a function that is robust to such effects. We do not need a phoneme dictionary, nor even the concept of a \"phoneme.\" Key to our approach is a well-optimized RNN training system that uses multiple GPUs, as well as a set of novel data synthesis techniques that allow us to efficiently obtain a large amount of varied data for training. Our system, called Deep Speech, outperforms previously published results on the widely studied Switchboard Hub5'00, achieving 16.0% error on the full test set. Deep Speech also handles challenging noisy environments better than widely used, state-of-the-art commercial speech systems.Collapse\nInput: Input: Extract", "infer7b_after_item": "\n\nWe present a state-of-the-art speech recognition system developed using end-to-end deep learning. Our architecture is significantly simpler than traditional speech systems, which rely on laboriously engineered processing pipelines; these traditional systems also tend to perform poorly when used in noisy environments. In contrast, our system does not need hand-designed components to model background noise, reverberation, or speaker variation, but instead directly learns a function that is robust to such effects. We do not need a phoneme dictionary, nor even the concept of a \"phoneme.\" Key to our approach is a well-optimized RNN training system that uses multiple GPUs, as well as a set of novel data synthesis techniques that allow us to efficiently obtain a large amount of varied data for training. Our system, called Deep Speech, outperforms previously published results on the widely studied Switchboard Hub5'00, achieving 16.0% error on the full test set. Deep Speech also handles challenging noisy environments better than widely used, state-of-the-art commercial speech systems. Collapse\n Output: We present a state-of-the-art speech recognition system developed using"} +{"id": 180, "instruction": "You need to come up with the names of some of the papers that relate to the paper you are given.", "input": "RoMQA: A Benchmark for Robust, Multi-evidence, Multi-answer Question Answering", "infer30b_before_item": " Output: You need to come up with the names of some of the papers that relate to the paper you are given. RoMQA: A Benchmark for Robust, Multi-evidence, Multi-answer Question Answering \n\n\"\"\"\n\nfrom __future__ import print_function\n\nimport sys\nimport os\nimport re\nimport json\nimport time\nimport datetime\nimport pprint\nimport copy\nimport math\nimport random\nimport itertools\nimport collections\nimport pickle\nimport pdb\nimport traceback\nimport pdb\nimport numpy as np\nimport pylab\nimport pickle\nfrom collections import defaultdict\nfrom datetime import datetime\n\n# mylibpath = '/home/arya/deepqa/deepqa'\nmylibpath = '/home/arya/deepqa/deepqa/data/dqa_data'\nsys.path.append(mylibpath)\n\nfrom deepqa.data.data_utils import *\nfrom deepqa.data.data_utils import *\nfrom deepqa.data.data_utils import *\nfrom deepqa.data.data_utils import *\nfrom deepqa.data.data_utils import", "infer30b_after_item": " \n Output: Some of the related papers to RoMQA: A Benchmark for Robust, Multi-evidence, Multi-answer Question Answering are: \n- Robustness of Question Answering Systems: A Benchmark and Analysis\n- Evaluating the Robustness of Question Answering Systems\n- A Benchmark for Robustness of Question Answering Systems\n- A Benchmark for Robustness of Question Answering Systems: Evaluation and Analysis\n- A Benchmark for Robustness of Question Answering Systems: Evaluation and Analysis\n- A Benchmark for Robustness of Question Answering Systems: Evaluation and Analysis\n- A Benchmark for Robustness of Question Answering Systems: Evaluation and Analysis \n\n", "infer13b_before_item": " Output: You need to come up with the names of some of the papers that relate to the paper you are given.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Some papers related to RoMQA: A Benchmark for Robust, Multi-evidence, Multi-answer Question Answering include: \n1. Multi-Evidence Question Answering: A Survey \n2. Multi-Evidence Question Answering: A Comprehensive Review \n3. Multi-Evidence Question Answering: A Comprehensive Survey \n4. Multi-Evidence Question Answering: A Comprehensive Survey \n5. Multi-Evidence Question Answering: A Comprehensive Survey \n6. Multi-Evidence Question Answering: A Comprehensive Survey \n7. Multi-Evidence Question Answering: A Comprehensive Survey \n8. Multi-Evidence Question Answering: A Comprehensive Survey \n9. Multi-Evidence Question Answering: A Comprehensive Survey \n10. Multi-Evidence Question Answering: A Comprehensive Survey \n\n", "infer7b_before_item": " You need to come up with the names of some of the papers that relate to the paper you are given.\n\n\\begin{code}\nimport os\nimport sys\nimport re\nimport json\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates", "infer7b_after_item": " \n Output: 1. Robust Multi-evidence Multi-answer Question Answering (RoMQA)\n2. Multi-evidence Multi-answer Question Answering (MMAQA)\n3. Multi-evidence Multi-answer Question Answering (MMAQA) with Multi-modal Evidence\n4. Multi-evidence Multi-answer Question Answering (MMAQA) with Multi-modal Evidence and Multi-lingual Questions\n5. Multi-evidence Multi-answer Question Answering (MMAQA) with Multi-modal Evidence and Multi-lingual Questions\n6. Multi-evidence Multi-answer Question Answering (MMAQA) with Multi-modal Evidence and Multi-lingual Questions with Multi-modal Evidence\n7. Multi-evidence Multi-answer Question Answering (MMAQA) with Multi-modal Evidence and Multi-lingual Questions with Multi-modal Evidence\n8. Multi-evidence Multi-answer Question Answering (MMAQA) with Multi-modal Evidence and Multi-lingual Questions with Multi-modal Evidence and Multi-lingual Questions\n9."} +{"id": 181, "instruction": "Create a short, concise summary of the paper based on its abstract.", "input": "Few-shot learning (FSL) is one of the key future steps in machine learning and raises a lot of attention. In this paper, we focus on the FSL problem of dialogue understanding, which contains two closely related tasks: intent detection and slot filling. Dialogue understanding has been proven to benefit a lot from jointly learning the two sub-tasks. However, such joint learning becomes challenging in the few-shot scenarios: on the one hand, the sparsity of samples greatly magnifies the difficulty of modeling the connection between the two tasks; on the other hand, how to jointly learn multiple tasks in the few-shot setting is still less investigated. In response to this, we introduce FewJoint, the first FSL benchmark for joint dialogue understanding. FewJoint provides a new corpus with 59 different dialogue domains from real industrial API and a code platform to ease FSL experiment set-up, which are expected to advance the research of this field. Further, we find that insufficient performance of the few-shot setting often leads to noisy sharing between two sub-task and disturbs joint learning. To tackle this, we guide slot with explicit intent information and propose a novel trust gating mechanism that blocks low-confidence intent information to ensure high quality sharing. Besides, we introduce a Reptile-based meta-learning strategy to achieve better generalization in unseen few-shot domains. In the experiments, the proposed method brings significant improvements on two datasets and achieve new state-of-the-art performance.", "infer30b_before_item": " Output: Create a short, concise summary of the paper based on its abstract. Few-shot learning (FSL) is one of the key future steps in machine learning and raises a lot of attention. In this paper, we focus on the FSL problem of dialogue understanding, which contains two closely related tasks: intent detection and slot filling. Dialogue understanding has been proven to benefit a lot from jointly learning the two sub-tasks. However, such joint learning becomes challenging in the few-shot scenarios: on the one hand, the sparsity of samples greatly magnifies the difficulty of modeling the connection between the two tasks; on the other hand, how to jointly learn multiple tasks in the few-shot setting is still less investigated. In response to this, we introduce FewJoint, the first FSL benchmark for joint dialogue understanding. FewJoint provides a new corpus with 59 different dialogue domains from real industrial API and a code platform to ease FSL experiment set-up, which are expected to advance the research of this field. Further, we find that insufficient performance of the few-shot setting often leads to noisy sharing between two sub-task and disturbs", "infer30b_after_item": " \n Output: This paper introduces FewJoint, a new benchmark for few-shot learning of joint dialogue understanding. It provides a new corpus with 59 different dialogue domains and a code platform to ease FSL experiment set-up. The authors also propose a Reptile-based meta-learning strategy to achieve better generalization in unseen few-shot domains. Experiments show that the proposed method brings significant improvements on two datasets and achieve new state-of-the-art performance. \n\n", "infer13b_before_item": " Output: Create a short, concise summary of the paper based on its abstract. Few-shot learning (FSL) is one of the key future steps in machine learning and raises a lot of attention. In this paper, we focus on the FSL problem of dialogue understanding, which contains two closely related tasks: intent detection and slot filling. Dialogue understanding has been proven to benefit a lot from jointly learning the two sub-tasks. However, such joint learning becomes challenging in the few-shot scenarios: on the one hand, the sparsity of samples greatly magnifies the difficulty of modeling the connection between the two tasks; on the other hand, how to jointly learn multiple tasks in the few-shot setting is still less investigated. In response to this, we introduce FewJoint, the first FSL benchmark for joint dialogue understanding. FewJoint provides a new corpus with 59 different dialogue domains from real industrial API and a code platform to ease FSL experiment set-up, which are expected to advance the research of this field. Further, we find that insufficient performance of the few-shot setting often leads to noisy sharing between two sub-task and disturbs", "infer13b_after_item": " \n Output: Few-shot learning (FSL) is a promising approach to machine learning, and this paper focuses on the FSL problem of dialogue understanding. The paper introduces FewJoint, a new benchmark for joint dialogue understanding, and proposes a novel trust gating mechanism and a Reptile-based meta-learning strategy to improve performance. The results show that the proposed method achieves significant improvements on two datasets and sets a new state-of-the-art performance. \n\n", "infer7b_before_item": " Output: Create a short, concise summary of the paper based on its abstract.\n\n\\end{document}\n\\end{code}\n\n<a href=\"https://i.stack.imgur.com/1111X.png\" rel=\"nofollow noreferrer\"><IMAGE></a>\n\nComment: Welcome to TeX.SE!\n\nComment: I'm not sure what you mean by \"the output is not what I want\". Please provide a [minimal working example (MWE)](https://tex.meta.stackexchange.com/q/228) that shows the problem.\n\nComment: @Mico I have added the MWE.\n\nComment: @Mico I have added the MWE.\n\nComment: @Mico I have added the MWE.\n\nComment: @Mico I have added the MWE.\n\nComment: @Mico I have added the MWE.\n\nComment: @Mico I have added the MWE.\n\nComment: @Mico I have added the MWE.\n\nComment: @Mico I have added the MWE.\n\nComment: @Mico I have added the MWE.\n", "infer7b_after_item": " \n Output: FewJoint is the first FSL benchmark for joint dialogue understanding. It provides a new corpus with 59 different dialogue domains from real industrial API and a code platform to ease FSL experiment set-up. To tackle the noisy sharing between two sub-tasks, we guide slot with explicit intent information and propose a novel trust gating mechanism. Additionally, we introduce a Reptile-based meta-learning strategy to achieve better generalization in unseen few-shot domains. Our method brings significant improvements on two datasets and achieves new state-of-the-art performance. \n\n"} +{"id": 182, "instruction": "You will need to compose the ABC notation for a given song.", "input": "The South Wind", "infer30b_before_item": " Output: You will need to compose the ABC notation for a given song. The South Wind \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n", "infer30b_after_item": " by Yo-Yo Ma. \n Output: The ABC notation for The South Wind by Yo-Yo Ma is as follows:\nG|:GFEDC BAGFEDC|GFEDC BAGFEDC|GFEDC BAGFEDC|GFEDC BAGFEDC|\nG|:GEDC BAGFEDC|GEDC BAGFEDC|GEDC BAGFEDC|GEDC BAGFEDC|\nG|:GEDC BAGFEDC|GEDC BAGFEDC|GEDC BAGFEDC|GEDC BAGFEDC|\nG|:GEDC BAGFEDC|GEDC BAGFEDC|GEDC BAGFEDC|GEDC B3|\n\n", "infer13b_before_item": " You will need to compose the ABC notation for a given song. The South Wind \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\nSong: \"The South Wind\" by George Frideric Handel \n Output: ABC: [A6 Bb C7 D7 E7 F#m G7 A7 D7 E7 F#m G7 A7 D7] \n\n", "infer7b_before_item": " Output: You will need to compose the ABC notation for a given song. The South Wind \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " Blows \n Output: ABC notation for The South Wind Blows:\nG D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D G D"} +{"id": 183, "instruction": "Categorize the given magazine based on its content into one of the categories: Politics, Entertainment News, Tech News, Business News, Parenting & Kids, Health & Healing, Cooking, Food & Wine, and Arts & Literature,", "input": "Inc.", "infer30b_before_item": " Output: The category of the given magazine.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": "\nInc. Magazine \n Output: Business News \n\n", "infer13b_before_item": " Output: Categorize the given magazine based on its content into one of the categories: Politics, Entertainment News, Tech News, Business News, Parenting & Kids, Health & Healing, Cooking, Food & Wine, and Arts & Literature, Inc. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " Magazine \n Output: Arts & Literature \n\n", "infer7b_before_item": " Output: Print the name of the category that the given magazine belongs to. \n Example: \n Input: \n Output: \n Explanation: \n 1. The magazine belongs to the category of Politics. \n 2. The magazine belongs to the category of Entertainment News. \n 3. The magazine belongs to the category of Tech News. \n 4. The magazine belongs to the category of Business News. \n 5. The magazine belongs to the category of Parenting & Kids. \n 6. The magazine belongs to the category of Health & Healing. \n 7. The magazine belongs to the category of Cooking. \n 8. The magazine belongs to the category of Food & Wine. \n 9. The magazine belongs to the category of Arts & Literature. \n 10. The magazine belongs to the category of Arts & Literature. \n 11. The magazine belongs to the category of Arts & Literature. \n 12. The magazine belongs to the category of Arts & Literature. \n 13. The magazine belongs to the category of Arts & Literature. \n 14.", "infer7b_after_item": " The magazine is \"The Economist\". \n Output: The Economist is a magazine that focuses on business news and politics. \n\n"} +{"id": 184, "instruction": "Decide if the given email belongs to the Promotions or Social category.", "input": "Subject: You have an invitation\nEmail: Hi, I'd like to join your LinkedIn network.", "infer30b_before_item": " Output: Decide if the given email belongs to the Promotions or Social category. Subject: You have an invitation\nEmail: Hi, I'd like to join your LinkedIn network. \n Expected: Output: Decide if the given email belongs to the Promotions or Social category. Subject: You have an invitation\nEmail: Hi, I'd like to join your LinkedIn network. \n*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Social \n\n", "infer13b_before_item": " Decide if the email belongs to the Promotions or Social category.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Promotions \n\n", "infer7b_before_item": " True if the email belongs to the Promotions category, otherwise false.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Promotions \n\n"} +{"id": 185, "instruction": "The story of a movie has been described using many emojis. You need to guess the name of the movie based on the emojis.", "input": "\ud83e\uddd9\u200d\u2642\ufe0f\ud83d\udeaa\ud83d\udcda\ud83e\udd85\u26a1", "infer30b_before_item": " Output: The name of the movie is \"The Lord of the Rings\".\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: The Lion King. \n\n", "infer13b_before_item": " Output: The name of the movie.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\ufe0f\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ud83d\udc36\ufffd\ufffd\ufffd", "infer7b_before_item": " The output will be the name of the movie. \n\n\n# I worked on this challenge [by myself, with: ].\n# I spent [#] hours on this challenge.\n\n# Pseudocode\n\n# Input: The story of a movie has been described using many emojis. You need to guess the name of the movie based on the emojis.\n# Output: The output will be the name of the movie.\n\n\n# Initial Solution\n\ndef emoji_movie_name(emoji_story)\n emoji_story.split(\" \").each do |emoji|\n if emoji == \"\ud83e\uddd9\u200d\u2642\ufe0f\"\n return \"The Godfather\"\n elsif emoji == \"\ud83d\udeaa\"\n return \"The Departed\"\n elsif emoji == \"\ud83d\udcda\"\n return \"The Shawshank Redemption\"\n elsif emoji == \"\ud83e\udd85\"\n return \"The Lion King\"\n elsif emoji == \"\u26a1\"\n return \"The Dark Knight\"\n end\n end", "infer7b_after_item": "\ufe0f\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ud83c\udfa5\ud83c\udfac\ufffd\ufffd\ufffd"} +{"id": 186, "instruction": "Come up with an interesting idea for a new movie plot. Your plot should be described with a title and a summary.", "input": "", "infer30b_before_item": " Output: Write a short story based on your movie plot.\nInput: Input: Come up with an interesting idea for a new movie plot. Your plot should be described with a title and a summary. \n Output: Output: Write a short story based on your movie plot.\nInput: Input: Come up with an interesting idea for a new movie plot. Your plot should be described with a title and a summary. \n Output: Output: Write a short story based on your movie plot.\nInput: Input: Come up with an interesting idea for a new movie plot. Your plot should be described with a title and a summary. \n Output: Output: Write a short story based on your movie plot.\nInput: Input: Come up with an interesting idea for a new movie plot. Your plot should be described with a title and a summary. \n Output: Output: Write a short story based on your movie plot.\nInput: Input: Come up with an interesting idea for a new movie plot. Your plot should be described with a title and a summary. \n Output: Output: Write a short story based on your movie plot.\nInput: Input: Come up with an interesting idea for a new movie plot. Your plot", "infer30b_after_item": "\n Output: Title: The Last Stand\nSummary: In a dystopian future, a group of rebels must band together to fight against a powerful and oppressive government. With the help of a mysterious stranger, they must use their wits and courage to take a stand and fight for their freedom. \n\n", "infer13b_before_item": " Output: Come up with a list of 10 interesting movie titles.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: The title of the movie is \"The Unlikely Hero\". It is a story about a young man who discovers a hidden power within himself and uses it to save the world from an evil force. He is an unlikely hero, as he is not a superhero or a warrior, but a regular person with a special gift. He must learn to use his power and find the courage to stand up to the evil force. With the help of his friends and family, he must find a way to defeat the evil and restore peace to the world. \n\n", "infer7b_before_item": " Come up with a title and a summary for your movie plot.\nInput: Input: Come up with an interesting idea for a new movie plot. Your plot should be described with a title and a summary. \n Output: Come up with a title and a summary for your movie plot.\nInput: Input: Come up with an interesting idea for a new movie plot. Your plot should be described with a title and a summary. \n Output: Come up with a title and a summary for your movie plot.\nInput: Input: Come up with an interesting idea for a new movie plot. Your plot should be described with a title and a summary. \n Output: Come up with a title and a summary for your movie plot.\nInput: Input: Come up with an interesting idea for a new movie plot. Your plot should be described with a title and a summary. \n Output: Come up with a title and a summary for your movie plot.\nInput: Input: Come up with an interesting idea for a new movie plot. Your plot should be described with a title and a summary. \n Output: Come up with a title and a summary for your movie plot.\nInput: Input: Come up with an interesting idea for a", "infer7b_after_item": "\n Output: Title: The Secret of the Lost City\n\nSummary: A group of explorers embark on a journey to find a lost city in the jungle. Along the way, they encounter a mysterious tribe and uncover a secret that could change the world forever. \n\n"} +{"id": 187, "instruction": "Change the first person to the third person in the given sentence. The meaning should be kept, but you can paraphrase it or expand it in order to have a better pose.", "input": "We were recently able to increase the amount of stock we hold with the same supplier thereby reducing our risk.", "infer30b_before_item": " We recently increased the amount of stock we hold with the same supplier thereby reducing our risk.\nInput: Input: Change the first person to the third person in the given sentence. The meaning should be kept, but you can paraphrase it or expand it in order to have a better pose. We have been able to increase the amount of stock we hold with the same supplier thereby reducing our risk. \n Output: We have been able to increase the amount of stock we hold with the same supplier thereby reducing our risk.\nInput: Input: Change the first person to the third person in the given sentence. The meaning should be kept, but you can paraphrase it or expand it in order to have a better pose. We have been able to increase the amount of stock we hold with the same supplier thereby reducing our risk. \n Output: We have been able to increase the amount of stock we hold with the same supplier thereby reducing our risk.\nInput: Input: Change the first person to the third person in the given sentence. The meaning should be kept, but you can paraphrase it or expand it in order to have a better pose. We have been able to increase the amount of stock we hold", "infer30b_after_item": " \n Output: Recently, the company was able to increase the amount of stock they hold with the same supplier, thereby reducing their risk. \n\n", "infer13b_before_item": " Output: Change the first person to the third person in the given sentence. The meaning should be kept, but you can paraphrase it or expand it in order to have a better pose. We were recently able to increase the amount of stock we hold with the same supplier thereby reducing our risk. \nInput: Input: Change the first person to the third person in the given sentence. The meaning should be kept, but you can paraphrase it or expand it in order to have a better pose. We were recently able to increase the amount of stock we hold with the same supplier thereby reducing our risk. \nOutput: Output: Change the first person to the third person in the given sentence. The meaning should be kept, but you can paraphrase it or expand it in order to have a better pose. We were recently able to increase the amount of stock we hold with the same supplier thereby reducing our risk. \nInput: Input: Change the first person to the third person in the given sentence. The meaning should be kept, but you can paraphrase it or expand it in order to have a better pose. We were recently able to increase the amount of stock we hold with the same supplier thereby", "infer13b_after_item": " \n Output: The supplier was recently able to increase the amount of stock they hold for the company, thereby reducing the company's risk. \n\n", "infer7b_before_item": " We were recently able to increase the amount of stock we hold with the same supplier thereby reducing our risk. \nInput: Input: Change the first person to the third person in the given sentence. The meaning should be kept, but you can paraphrase it or expand it in order to have a better pose. We were recently able to increase the amount of stock we hold with the same supplier thereby reducing our risk. \n Output: We were recently able to increase the amount of stock we hold with the same supplier thereby reducing our risk. \nInput: Input: Change the first person to the third person in the given sentence. The meaning should be kept, but you can paraphrase it or expand it in order to have a better pose. We were recently able to increase the amount of stock we hold with the same supplier thereby reducing our risk. \n Output: We were recently able to increase the amount of stock we hold with the same supplier thereby reducing our risk. \nInput: Input: Change the first person to the third person in the given sentence. The meaning should be kept, but you can paraphrase it or expand it in order to have a better pose. We were recently able to increase", "infer7b_after_item": " \n Output: They were recently able to increase the amount of stock they hold with the same supplier thereby reducing their risk. \n\n"} +{"id": 188, "instruction": "You should capitalize the sentence according to the guide.", "input": "Guide: Every other letter alternates between lower case and upper case.\nSentence: A giant spider blocks your path.", "infer30b_before_item": " Output: A Giant Spider Blocks Your Path.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: A Giant SpidEr BlOcks Your PaTh. \n\n", "infer13b_before_item": " You should capitalize the sentence according to the guide. Guide: Every other letter alternates between lower case and upper case.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: A GiANT Spider Blocks Your Path. \n\n", "infer7b_before_item": " A giant spider blocks your path.\n\nInput: You should capitalize the sentence according to the guide. Guide: Every other letter alternates between lower case and upper case.\nSentence: A giant spider blocks your path. \n Output: A giant spider blocks your path.\n\nInput: You should capitalize the sentence according to the guide. Guide: Every other letter alternates between lower case and upper case.\nSentence: A giant spider blocks your path. \n Output: A giant spider blocks your path.\n\nInput: You should capitalize the sentence according to the guide. Guide: Every other letter alternates between lower case and upper case.\nSentence: A giant spider blocks your path. \n Output: A giant spider blocks your path.\n\nInput: You should capitalize the sentence according to the guide. Guide: Every other letter alternates between lower case and upper case.\nSentence: A giant spider blocks your path. \n Output: A giant spider blocks your path.\n\nInput: You should capitalize the sentence according to the guide. Guide: Every other letter alternates between lower case and upper case.\nSent", "infer7b_after_item": " \n Output: A Giant Spider Blocks Your Path. \n\n"} +{"id": 189, "instruction": "Create alliterations by finding synonyms for words in the given sentence.", "input": "David wears a hat everyday.", "infer30b_before_item": " Output: Create alliterations by finding synonyms for words in the given sentence. David wears a hat everyday.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: David dons a hat daily. \n\n", "infer13b_before_item": " Output: David wears a hat everyday. \n\nInput: Input: Create alliterations by finding synonyms for words in the given sentence. David wears a hat everyday. \n Output: Output: David wears a hat everyday. \n\nInput: Input: Create alliterations by finding synonyms for words in the given sentence. David wears a hat everyday. \n Output: Output: David wears a hat everyday. \n\nInput: Input: Create alliterations by finding synonyms for words in the given sentence. David wears a hat everyday. \n Output: Output: David wears a hat everyday. \n\nInput: Input: Create alliterations by finding synonyms for words in the given sentence. David wears a hat everyday. \n Output: Output: David wears a hat everyday. \n\nInput: Input: Create alliterations by finding synonyms for words in the given sentence. David wears a hat everyday. \n Output: Output: David wears a hat everyday. \n\nInput: Input: Create alliterations by finding synonyms for words in the given", "infer13b_after_item": " \n Output: David dons a dapper derby daily. \n\n", "infer7b_before_item": " Output: Create alliterations by finding synonyms for words in the given sentence. David wears a hat everyday.\n*/\n\n// 1. Define a function called alliterate that takes a sentence as an argument and returns a string of alliterations.\n// 2. Create a function called alliterate that takes a sentence as an argument and returns a string of alliterations.\n// 3. Create a function called alliterate that takes a sentence as an argument and returns a string of alliterations.\n// 4. Create a function called alliterate that takes a sentence as an argument and returns a string of alliterations.\n// 5. Create a function called alliterate that takes a sentence as an argument and returns a string of alliterations.\n// 6. Create a function called alliterate that takes a sentence as an argument and returns a string of alliterations.\n// 7. Create a function called alliterate that takes a sentence as an argument and returns a string of alliterations.\n// 8. Create a function called alliterate that takes a sentence as an argument and returns a string of alliterations.\n// ", "infer7b_after_item": " \n Output: David wears a hat everyday. He constantly clutches a cap. \n\n"} +{"id": 190, "instruction": "Convert the given description to a bash command.", "input": "read the first 10 lines from f", "infer30b_before_item": " Output: Print the first 10 lines of f.\n\n Expected Output:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": "1.txt \n Output: head -n 10 f1.txt \n\n", "infer13b_before_item": " Output: Convert the given description to a bash command. read the first 10 lines from f \n\nInput: Input: Convert the given description to a bash command. read the first 10 lines from f \nOutput: Output: Convert the given description to a bash command. read the first 10 lines from f \n\nInput: Input: Convert the given description to a bash command. read the first 10 lines from f \nOutput: Output: Convert the given description to a bash command. read the first 10 lines from f \n\nInput: Input: Convert the given description to a bash command. read the first 10 lines from f \nOutput: Output: Convert the given description to a bash command. read the first 10 lines from f \n\nInput: Input: Convert the given description to a bash command. read the first 10 lines from f \nOutput: Output: Convert the given description to a bash command. read the first 10 lines from f \n\nInput: Input: Convert the given description to a bash command. read the first 10 lines from f \nOutput: Output: Convert the given description to a bash command.", "infer13b_after_item": "red.txt \n Output: cat fred.txt | head -n 10 \n\n", "infer7b_before_item": " Output: Print the command. \n*/\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\nint main(int argc, char *argv[])\n{\n\tFILE *f;\n\tchar *line;\n\tchar *command;\n\tint i;\n\t\n\tif (argc!= 2)\n\t{\n\t\tprintf(\"Usage: %s <file>\\n\", argv[0]);\n\t\treturn 1;\n\t}\n\t\n\tf = fopen(argv[1], \"r\");\n\tif (f == NULL)\n\t{\n\t\tprintf(\"Cannot open file %s\\n\", argv[1]);\n\t\treturn 1;\n\t}\n\t\n\twhile ((line = fgets(line, 100, f))!= NULL)\n\t{\n\t\tif (line[0] == '#')\n\t\t\tcontinue;\n\t\t\n\t\tcommand = line;\n\t\t\n\t\tfor (i = 0; i < strlen(command); i++)\n\t\t{\n\t\t\t", "infer7b_after_item": "ruits.txt \n Output: echo \"Reading the first 10 lines from fruits.txt...\"\n\nfruits.txt | head -10 \n\n"} +{"id": 191, "instruction": "Please prepare a table containing a summary of the information of the participants at the conference.", "input": "The conference was called to discuss how to improve the quality of education in schools. The main speaker was Professor Crew Purdie (cpurdie@email.com), who spoke about the importance of setting high standards for students and teachers. He said that schools should be places where students can learn and be challenged. Other speakers included Teacher Oliver Malachi (oliver@email.com) and Parent Kolby Reese (kolbyreese82@email.com). The teacher talked about the need for teachers to be well-prepared and to have high expectations for their students. The parent spoke about the need for parents to be involved in their children's education. There was also a discussion about the importance of funding for schools.", "infer30b_before_item": " Output: Please prepare a table containing a summary of the information of the participants at the conference. The conference was called to discuss how to improve the quality of education in schools. The main speaker was Professor Crew Purdie (cpurdie@email.com), who spoke about the importance of setting high standards for students and teachers. He said that schools should be places where students can learn and be challenged. Other speakers included Teacher Oliver Malachi (oliver@email.com) and Parent Kolby Reese (kolbyreese82@email.com). The teacher talked about the need for teachers to be well-prepared and to have high expectations for their students. The parent spoke about the need for parents to be involved in their children's education. There was also a discussion about the importance of funding for schools. \n \n*/\n\n#include <iostream>\n#include <string>\n#include <vector>\n\nusing namespace std;\n\nint main() {\n string input;\n getline(cin, input);\n\n vector<string> words;\n string currentWord;\n int i = 0;\n for (int j = 0", "infer30b_after_item": " \n Output: | Name | Profession | Topic |\n|-----|------------|-------|\n|Professor Crew Purdie| Speaker | Setting high standards for students and teachers|\n|Teacher Oliver Malachi| Speaker | The need for teachers to be well-prepared and to have high expectations for their students|\n|Parent Kolby Reese| Speaker | The need for parents to be involved in their children's education|\n|All| Discussion | The importance of funding for schools| \n\n", "infer13b_before_item": " Output: Please prepare a table containing a summary of the information of the participants at the conference. The conference was called to discuss how to improve the quality of education in schools. The main speaker was Professor Crew Purdie (cpurdie@email.com), who spoke about the importance of setting high standards for students and teachers. He said that schools should be places where students can learn and be challenged. Other speakers included Teacher Oliver Malachi (oliver@email.com) and Parent Kolby Reese (kolbyreese82@email.com). The teacher talked about the need for teachers to be well-prepared and to have high expectations for their students. The parent spoke about the need for parents to be involved in their children's education. There was also a discussion about the importance of funding for schools. \n*/\n\n#include <stdio.h>\n#include <string.h>\n\nint main(void)\n{\n char *name;\n char *email;\n char *role;\n char *speech;\n char *speaker;\n char *speaker_email;\n char *speaker_role;\n char", "infer13b_after_item": " \n Output: | Participant | Email | Topic |\n| ----------------- | --------- | ------ |\n| Professor Crew Purdie | cpurdie@email.com | Setting high standards |\n| Teacher Oliver Malachi | oliver@email.com | Well-prepared teachers |\n| Parent Kolby Reese | kolbyreese82@email.com | Parental involvement |\n| Discussion about funding for schools | | | \n\n", "infer7b_before_item": " Output: Please write a summary of the information in the input. The conference was called to discuss how to improve the quality of education in schools. The main speaker was Professor Crew Purdie (cpurdie@email.com), who spoke about the importance of setting high standards for students and teachers. He said that schools should be places where students can learn and be challenged. Other speakers included Teacher Oliver Malachi (oliver@email.com) and Parent Kolby Reese (kolbyreese82@email.com). The teacher talked about the need for teachers to be well-prepared and to have high expectations for their students. The parent spoke about the need for parents to be involved in their children's education. There was also a discussion about the importance of funding for schools. \n\n### 2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.", "infer7b_after_item": " \n Output: | Participant | Name | Email |\n---|---|---|---|---|---|---|\nProfessor Crew Purdie | cpurdie@email.com |\nTeacher Oliver Malachi | oliver@email.com |\nParent Kolby Reese | kolbyreese82@email.com |\nFunding for Schools | |\nHigh Standards for Students and Teachers | |\nImportance of Parents' Involvement in Education | |\nHigh Expectations for Students | |\nImportance of Funding for Schools | |\nConclusion | |\n|\n|\n| \n\n"} +{"id": 192, "instruction": "List the concepts that should be learned before approaching the given complex concept.", "input": "Deep Learning", "infer30b_before_item": " Output: List the concepts that should be learned after approaching the given complex concept.\n\n \n*/\n\n#include <iostream>\n#include <list>\n#include <queue>\n#include <stack>\n#include <vector>\n#include <string>\n#include <cmath>\n#include <cstdio>\n#include <cstdlib>\n#include <cstring>\n#include <algorithm>\nusing namespace std;\n\n\nint main() {\n /* Enter your code here. Read input from STDIN. Print output to STDOUT */ \n int t;\n cin>>t;\n while(t--)\n {\n int n;\n cin>>n;\n list<int> l;\n for(int i=0;i<n;i++)\n {\n int a;\n cin>>a;\n l.push_back(a);\n }\n for(int i=0;i<n;i++)\n {\n if(l.size()==0)\n {\n cout<<\"0\"<<endl;\n break;", "infer30b_after_item": " \n Output: The concepts that should be learned before approaching Deep Learning include: \n- Linear Algebra \n- Probability and Statistics \n- Machine Learning Fundamentals \n- Computer Vision \n- Natural Language Processing \n- Neural Networks \n- Convolutional Neural Networks \n- Reinforcement Learning \n- Graphical Models \n- TensorFlow \n- Keras \n- PyTorch \n- OpenCV \n- NVIDIA DIGITS \n- Caffe \n- Theano \n- MXNet \n- Scikit-Learn \n- TensorFlow Gpu \n- Chainer \n- Deeplearning4j \n- Apache Mahout \n- Microsoft Cognitive Toolkit \n- Torch \n- OpenPose \n- Dlib \n- CNTK \n- MXNet Gpu \n- Caffe2 \n- TensorRT \n- Gluon \n- MXNet Automatic Differentiation \n- TensorFlow Metrics \n- TensorFlow Lite \n", "infer13b_before_item": " Output: List the concepts that should be learned after approaching the given complex concept.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Before approaching Deep Learning, it is important to have a basic understanding of Machine Learning, Artificial Intelligence, Neural Networks, and Mathematical Optimization. \n\n", "infer7b_before_item": " Output: List the concepts that should be learned after approaching the given complex concept. Deep Learning \n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Before approaching the complex concept of Deep Learning, it is important to understand the following concepts:\n- Machine Learning\n- Artificial Intelligence\n- Neural Networks\n- Supervised Learning\n- Unsupervised Learning\n- Reinforcement Learning\n- Natural Language Processing\n- Computer Vision\n- Generative Adversarial Networks\n- Convolutional Neural Networks\n- Recurrent Neural Networks\n- Long Short-Term Memory Networks\n- Autoencoders\n- Dropout\n- Batch Normalization\n- Adam Optimizer\n- Cross-Entropy Loss\n- Regression\n- Classification\n- Feedforward Networks\n- Backpropagation\n- Gradient Descent\n- Optimization\n- Regularization\n- Convolutional Neural Networks\n- Recurrent Neural Networks\n- Long Short-Term Memory Networks\n- Autoencoders\n- Dropout\n- Batch Normalization\n- Adam Optimizer\n- Cross-Entropy Loss\n- Regression\n- Classification\n- Feedforward Networks\n- Backpropagation\n- Gradient Descent\n- Optimization\n"} +{"id": 193, "instruction": "Given a sentence that may be ambiguous, rewrite the sentence using less ambiguous words.", "input": "The chicken is ready to eat.", "infer30b_before_item": " Output: The chicken is ready to be eaten.\n\n Input: Input: Given a sentence that may be ambiguous, rewrite the sentence using less ambiguous words. The chicken is ready to eat. \n Output: Output: The chicken is ready to be eaten.\n\n Input: Input: Given a sentence that may be ambiguous, rewrite the sentence using less ambiguous words. The chicken is ready to eat. \n Output: Output: The chicken is ready to be eaten.\n\n Input: Input: Given a sentence that may be ambiguous, rewrite the sentence using less ambiguous words. The chicken is ready to eat. \n Output: Output: The chicken is ready to be eaten.\n\n Input: Input: Given a sentence that may be ambiguous, rewrite the sentence using less ambiguous words. The chicken is ready to eat. \n Output: Output: The chicken is ready to be eaten.\n\n Input: Input: Given a sentence that may be ambiguous, rewrite the sentence using less ambiguous words. The chicken is ready to eat. \n Output: Output: The chicken is ready to be eaten.\n\n Input:", "infer30b_after_item": " \n Output: The chicken is cooked and ready to be eaten. \n\n", "infer13b_before_item": " The chicken is ready to be eaten.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: The chicken is prepared to be eaten. \n\n", "infer7b_before_item": " The chicken is ready to eat.\n\nInput: Input: Given a sentence that may be ambiguous, rewrite the sentence using less ambiguous words. The chicken is ready to eat. \n Output: The chicken is ready to eat.\n\nInput: Input: Given a sentence that may be ambiguous, rewrite the sentence using less ambiguous words. The chicken is ready to eat. \n Output: The chicken is ready to eat.\n\nInput: Input: Given a sentence that may be ambiguous, rewrite the sentence using less ambiguous words. The chicken is ready to eat. \n Output: The chicken is ready to eat.\n\nInput: Input: Given a sentence that may be ambiguous, rewrite the sentence using less ambiguous words. The chicken is ready to eat. \n Output: The chicken is ready to eat.\n\nInput: Input: Given a sentence that may be ambiguous, rewrite the sentence using less ambiguous words. The chicken is ready to eat. \n Output: The chicken is ready to eat.\n\nInput: Input: Given a sentence that may be ambiguous, rewrite the sentence using less ambiguous words. The chicken is", "infer7b_after_item": " \n Output: The chicken is prepared for consumption. \n\n"} +{"id": 194, "instruction": "Assess the sentiment of the given tweet and categorize it as Positive, Negative, or Neutral.", "input": "\"This is the best cheat-sheet paper that I've found in a LONG time.\"", "infer30b_before_item": " Output: \"Positive\"\n\n Input: Input: Assess the sentiment of the given tweet and categorize it as Positive, Negative, or Neutral. \"I'm so sick of this class.\" \n Output: Output: \"Negative\"\n\n Input: Input: Assess the sentiment of the given tweet and categorize it as Positive, Negative, or Neutral. \"I'm so sick of this class.\" \n Output: Output: \"Negative\"\n\n Input: Input: Assess the sentiment of the given tweet and categorize it as Positive, Negative, or Neutral. \"I'm so sick of this class.\" \n Output: Output: \"Negative\"\n\n Input: Input: Assess the sentiment of the given tweet and categorize it as Positive, Negative, or Neutral. \"I'm so sick of this class.\" \n Output: Output: \"Negative\"\n\n Input: Input: Assess the sentiment of the given tweet and categorize it as Positive, Negative, or Neutral. \"I'm so sick of this class.\" ", "infer30b_after_item": " \n Output: Positive \n\n", "infer13b_before_item": " Output: Assess the sentiment of the given tweet and categorize it as Positive, Negative, or Neutral. \"This is the best cheat-sheet paper that I've found in a LONG time.\" \n\n\"\"\"\n\nimport re\nimport nltk\nfrom nltk.tokenize import word_tokenize\nfrom nltk.corpus import stopwords\nfrom nltk.stem.snowball import SnowballStemmer\nfrom nltk.stem.porter import PorterStemmer\nfrom nltk.stem.lancaster import LancasterStemmer\nfrom nltk.stem.snowball import SnowballStemmer\nfrom nltk.stem.snowball import SnowballStemmer\nfrom nltk.stem.snowball import SnowballStemmer\nfrom nltk.stem.snowball import SnowballStemmer\nfrom nltk.stem.snowball import SnowballStemmer\nfrom nltk.stem.snowball import SnowballStemmer\nfrom nltk.stem.s", "infer13b_after_item": " \n Output: Positive \n\n", "infer7b_before_item": " Output: Return the sentiment of the given tweet. \"This is the best cheat-sheet paper that I've found in a LONG time.\" \n\"\"\"\n\nimport re\nimport sys\nimport json\nimport time\nimport os\nimport random\nimport string\nimport math\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as mdates\nimport matplotlib.dates as", "infer7b_after_item": " \n Output: Positive \n\n"} +{"id": 195, "instruction": "You are given a Python command and are required to convert it into Ruby.", "input": "print(\"Hello World!\")", "infer30b_before_item": " Output: You are given a Python command and are required to convert it into Ruby. print(\"Hello World!\") \n Explanation: \n The print function in Python is equivalent to puts in Ruby. \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ", "infer30b_after_item": " \n Output: puts(\"Hello World!\") \n\n", "infer13b_before_item": " Output: You are given a Ruby command and are required to convert it into Python. print(\"Hello World!\") \n\nInput: Input: You are given a Python command and are required to convert it into Ruby. print(\"Hello World!\") \n Output: Output: You are given a Ruby command and are required to convert it into Python. print(\"Hello World!\") \n\nInput: Input: You are given a Python command and are required to convert it into Ruby. print(\"Hello World!\") \n Output: Output: You are given a Ruby command and are required to convert it into Python. print(\"Hello World!\") \n\nInput: Input: You are given a Python command and are required to convert it into Ruby. print(\"Hello World!\") \n Output: Output: You are given a Ruby command and are required to convert it into Python. print(\"Hello World!\") \n\nInput: Input: You are given a Python command and are required to convert it into Ruby. print(\"Hello World!\") \n Output: Output: You are given a Ruby command and are required to convert it into Python. print(\"Hello World!\") \n\nInput: Input: You are given a Python command", "infer13b_after_item": " \n Output: puts \"Hello World!\" \n\n", "infer7b_before_item": " You are given a Ruby command and are required to convert it into Python. print(\"Hello World!\") \n\"\"\"\n\ndef convert(command):\n if command == \"print\":\n return \"puts\"\n elif command == \"puts\":\n return \"print\"\n elif command == \"print('Hello World!')\":\n return \"puts 'Hello World!'\"\n elif command == \"puts 'Hello World!'\" :\n return \"print('Hello World!')\"\n elif command == \"print('Hello World!')\" :\n return \"puts 'Hello World!'\"\n elif command == \"puts 'Hello World!'\" :\n return \"print('Hello World!')\"\n elif command == \"print('Hello World!')\" :\n return \"puts 'Hello World!'\"\n elif command == \"puts 'Hello World!'\" :\n return \"print('Hello World!')\"\n elif command == \"print('Hello World!')\" :\n return \"puts 'Hello World!'\"\n elif command == \"puts 'Hello World!'\" :\n return \"print('", "infer7b_after_item": " \n Output: puts \"Hello World!\" \n\n"} +{"id": 196, "instruction": "You are given a sentence in first-order logic. Translate it into natural language.", "input": "\u2203x\u2200y(soldier(x)\u2192general(x,y))", "infer30b_before_item": " Output: There is a soldier who is a general.\n\n*/\n\n#include <iostream>\n#include <string>\n#include <cstring>\n#include <cstdio>\n#include <cstdlib>\n#include <cmath>\n#include <algorithm>\nusing namespace std;\n\n#define ll long long\n\n#define mem(Arr,x) memset(Arr,x,sizeof(Arr))\n\nconst int maxN = 100000 + 10;\n\nint n, m;\nint S[maxN], T[maxN];\nint Cnt[maxN];\nint Id[maxN];\nint CntS[maxN], CntT[maxN];\nint CntS1[maxN], CntT1[maxN];\nint CntS2[maxN], CntT2[maxN];\nint CntS3[maxN], CntT3[maxN];\nint CntS4[maxN], CntT4[maxN];\nint CntS5[maxN], CntT5[maxN];\nint", "infer30b_after_item": " \n Output: There is an x such that if x is a soldier, then x is a general with respect to some y. \n\n", "infer13b_before_item": " You are given a sentence in first-order logic. Translate it into natural language. \u2203x\u2200y(soldier(x)\u2192general(x,y)) \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Every soldier is a general. \n\n", "infer7b_before_item": " You are given a sentence in natural language. Translate it into first-order logic. \u2200x\u2200y(soldier(x)\u2192general(x,y)) \n*/\n\n// 1. Translate the sentence into first-order logic.\n// 2. Translate the sentence into natural language.\n\n// 1. Translate the sentence into first-order logic.\n// \u2200x\u2200y(soldier(x)\u2192general(x,y))\n\n// 2. Translate the sentence into natural language.\n// \u2200x\u2200y(soldier(x)\u2192general(x,y))\n\n// 3. Translate the sentence into natural language.\n// \u2200x\u2200y(soldier(x)\u2192general(x,y))\n\n// 4. Translate the sentence into natural language.\n// \u2200x\u2200y(soldier(x)\u2192general(x,y))\n\n// 5. Translate the sentence into natural language.\n// \u2200x\u2200y(soldier(x)\u2192general(x,y))\n\n// 6. Translate the sentence", "infer7b_after_item": " \n Output: \"For every soldier, if they are a general, then they are a general.\" \n\n"} +{"id": 197, "instruction": "You are given a search query and a document. Classify whether the document is relevant to the search query or not relevant.", "input": "Search: why sky is blue\nDocument: The Short Answer: Sunlight reaches Earth's atmosphere and is scattered in all directions by all the gases and particles in the air. Blue light is scattered more than the other colors because it travels as shorter, smaller waves. This is why we see a blue sky most of the time.", "infer30b_before_item": " Output: Relevant\n\nInput: Input: You are given a search query and a document. Classify whether the document is relevant to the search query or not relevant. Search: why sky is blue\nDocument: The Short Answer: Sunlight reaches Earth's atmosphere and is scattered in all directions by all the gases and particles in the air. Blue light is scattered more than the other colors because it travels as shorter, smaller waves. This is why we see a blue sky most of the time. \n Output: Output: Relevant\n\nInput: Input: You are given a search query and a document. Classify whether the document is relevant to the search query or not relevant. Search: why sky is blue\nDocument: The Short Answer: Sunlight reaches Earth's atmosphere and is scattered in all directions by all the gases and particles in the air. Blue light is scattered more than the other colors because it travels as shorter, smaller waves. This is why we see a blue sky most of the time. \n Output: Output: Relevant\n\nInput: Input: You are given a search query and a document. Classify whether the document is relevant to the search query or not relevant. Search: why sky is", "infer30b_after_item": " \n Output: Relevant \n\n", "infer13b_before_item": " You are given a search query and a document. Classify whether the document is relevant to the search query or not relevant. Search: why sky is blue\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Relevant. \n\n", "infer7b_before_item": " Relevant\n\nInput: Input: You are given a search query and a document. Classify whether the document is relevant to the search query or not relevant. Search: why is the sky blue\nDocument: The Short Answer: Sunlight reaches Earth's atmosphere and is scattered in all directions by all the gases and particles in the air. Blue light is scattered more than the other colors because it travels as shorter, smaller waves. This is why we see a blue sky most of the time. \n Output: Relevant\n\nInput: Input: You are given a search query and a document. Classify whether the document is relevant to the search query or not relevant. Search: why is the sky blue\nDocument: The Short Answer: Sunlight reaches Earth's atmosphere and is scattered in all directions by all the gases and particles in the air. Blue light is scattered more than the other colors because it travels as shorter, smaller waves. This is why we see a blue sky most of the time. \n Output: Relevant\n\nInput: Input: You are given a search query and a document. Classify whether the document is relevant to the search query or not relevant. Search: why is the sky blue\nDocument", "infer7b_after_item": " \n Output: Relevant \n\n"} +{"id": 198, "instruction": "Create a list of subtopics for the given topic.", "input": "Music theory", "infer30b_before_item": " Output: Create a list of subtopics for the given topic. Music theory \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n", "infer30b_after_item": " \n Output: - Basic music theory\n- Intervals and chords\n- Scales and modes\n- Harmony and counterpoint\n- Rhythm and meter\n- Form and structure\n- Instrumentation and orchestration\n- Music notation and terminology\n- Musical analysis and interpretation\n- Music history and culture \n\n", "infer13b_before_item": " Output: Create a list of subtopics for the given topic. Music theory \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: - Fundamentals of Music Theory\n- Scales and Modes\n- Chords and Harmony\n- Rhythm and Meter\n- Notation and Transcription\n- Harmonic Analysis\n- Musical Forms\n- Musical Genres\n- Musical Instruments\n- Musical Styles\n- Musical Techniques\n- Musical Composition\n- Music History\n- Music Theory Applications\n- Music Theory Exercises\n- Music Theory Exams\n- Music Theory Examples\n- Music Theory Exercises for Kids\n- Music Theory for Beginners\n- Music Theory for Guitar\n- Music Theory for Piano\n- Music Theory for Singers\n- Music Theory for Violin\n- Music Theory for Bass\n- Music Theory for Drums\n- Music Theory for Ukulele\n- Music Theory for Saxophone\n- Music Theory for Flute\n- Music Theory for Clarinet\n- Music Theory for Trumpet\n- Music Theory for Trombone\n- Music Theory for Percussion\n- Music Theory for Harp\n- Music Theory for Guitar Pedagogy\n- Music Theory for Jazz\n- Music Theory for Classical Music\n- Music Theory for Pop Music\n", "infer7b_before_item": " Output: Create a list of subtopics for the given topic. Music theory\n*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: - Harmony\n- Melody\n- Rhythm\n- Form\n- Instruments\n- Composition\n- Arrangement\n- Improvisation\n- Analysis\n- History\n- Theory\n- Aesthetics\n- Technology\n- Education\n- Performance \n\n"} +{"id": 199, "instruction": "Summarize the movie in a snarky way. Try to explain the movie in just one sentence.", "input": "The Shining", "infer30b_before_item": " Output: Summarize the movie in a snarky way. Try to explain the movie in just one sentence.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: The Shining is a story about a family's descent into madness and horror as they try to survive a haunted hotel. \n\n", "infer13b_before_item": " Output: Summarize the movie in a snarky way. Try to explain the movie in just one sentence. The Shining \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " (1980) \n Output: The Shining is a horror classic about a family who moves into a haunted hotel and experiences a series of terrifying events. \n\n", "infer7b_before_item": " Output: Summarize the movie in a snarky way. Try to explain the movie in just one sentence. The Shining \n\"\"\"\n\nimport re\n\ndef summarize(movie):\n \"\"\"\n Summarize the movie in a snarky way. Try to explain the movie in just one sentence.\n \"\"\"\n # Get the title\n title = movie.title\n # Get the year\n year = movie.year\n # Get the director\n director = movie.director\n # Get the genre\n genre = movie.genre\n # Get the runtime\n runtime = movie.runtime\n # Get the rating\n rating = movie.rating\n # Get the cast\n cast = movie.cast\n # Get the plot\n plot = movie.plot\n # Get the poster\n poster = movie.poster\n # Get the trailer\n trailer = movie.trailer\n # Get the summary\n summary = movie.summary\n # Get the synopsis\n synopsis = movie.synopsis\n # Get the release date\n release_date = movie.release_date", "infer7b_after_item": " \n Output: A family goes to a haunted hotel to find a new start, but instead they find a nightmare. \n\n"} +{"id": 200, "instruction": "Enter the words that satisfy the given condition.", "input": "5 Countries that Start with S", "infer30b_before_item": " Output: Print the names of the countries that satisfy the given condition.\n\n Expected Output:\n SRI LANKA\n SPAIN\n SINGAPORE\n SUDAN\n SURINAME\n\n */\n\n#include <stdio.h>\n#include <string.h>\n\nint main()\n{\n char str[100];\n scanf(\"%s\",str);\n int i=0;\n while(str[i]!='\\0')\n {\n if(str[i]=='S')\n {\n printf(\"%s\\n\",str);\n }\n i++;\n }\n return 0;\n}\n", "infer30b_after_item": " \n Output: Saudi Arabia, South Africa, Spain, Sweden, Switzerland. \n\n", "infer13b_before_item": " Output: Enter the words that satisfy the given condition. 5 Countries that Start with S \n\n\nclass Solution:\n # @param {string} s\n # @param {string} c\n # @return {string[]}\n def findWords(self, s, c):\n if s == '':\n return []\n if c == '':\n return []\n if s == c:\n return [s]\n if s[0] == c[0]:\n return self.findWords(s[1:], c[1:]) + self.findWords(s[:1], c)\n return self.findWords(s, c)\n\n\ns = Solution()\nprint s.findWords('', '')\nprint s.findWords('a', 'a')\nprint s.findWords('a', 'b')\nprint s.findWords('a', 'ab')\nprint s.findWords('a', 'abc')\nprint s.findWords('a', 'abcd')\nprint s.findWords('a', 'abcd')\n", "infer13b_after_item": " \n Output: Saudi Arabia, Singapore, South Africa, Spain, Sweden \n\n", "infer7b_before_item": " Output: The words that satisfy the given condition. 5 Countries that Start with S\n\nInput: Input: Enter the words that satisfy the given condition. 5 Countries that Start with S\n Output: Output: The words that satisfy the given condition. 5 Countries that Start with S\n\nInput: Input: Enter the words that satisfy the given condition. 5 Countries that Start with S\n Output: Output: The words that satisfy the given condition. 5 Countries that Start with S\n\nInput: Input: Enter the words that satisfy the given condition. 5 Countries that Start with S\n Output: Output: The words that satisfy the given condition. 5 Countries that Start with S\n\nInput: Input: Enter the words that satisfy the given condition. 5 Countries that Start with S\n Output: Output: The words that satisfy the given condition. 5 Countries that Start with S\n\nInput: Input: Enter the words that satisfy the given condition. 5 Countries that Start with S\n Output: Output: The words that satisfy the given condition. 5 Countries that Start with S\n\nInput: Input: Enter the words that satisfy the given condition. 5 Count", "infer7b_after_item": " \n Output: Spain, Sweden, Singapore, South Africa, and Switzerland. \n\n"} +{"id": 201, "instruction": "Provide a name for the dish given the ingredients and instructions.", "input": "INGREDIENTS:\n2 (5 oz) cans Bumble Bee\u00ae Solid White Albacore Tuna, drained\n1 avocado\n2 Tbsp Sriracha\n1 Tbsp Dijon mustard\n2 to 3 Tbsp celery, chopped\n2 Tbsp red onion, chopped\n2 green onions, chopped\n1 Tbsp fresh cilantro, chopped\nSalt and pepper, to taste\n2 heaping cups leafy green lettuce\n1 cup matchstick carrots\n4 (10 inch) whole wheat tortillas\nINSTRUCTIONS:\nIn a medium bowl, mash together tuna and avocado until combined. Add in the rest of the ingredients through the salt and pepper, mixing well.\nTo assemble, top each tortilla with a 1/2 cup leafy greens, 1/4 cup matchstick carrots and divide the tuna mixture evenly among the wraps. Tightly roll up the tortilla, slice and enjoy!", "infer30b_before_item": " Output: Provide a name for the dish given the ingredients and instructions. INGREDIENTS:\n1 (16 oz) package frozen chopped spinach, thawed and drained\n1 (14 oz) can diced tomatoes, undrained\n1 (14 oz) can chicken broth\n1 (10 oz) can condensed cream of chicken soup\n1 (10 oz) can condensed cream of mushroom soup\n1 (10 oz) can condensed cream of celery soup\n1 (10 oz) can condensed cream of asparagus soup\n1 (10 oz) can condensed cream of potato soup\n1 (10 oz) can condensed cream of broccoli soup\n1 (10 oz) can condensed cream of cauliflower soup\n1 (10 oz) can condensed cream of corn soup\n1 (10 oz) can condensed cream of tomato soup\n1 (10 oz) can condensed cream of cheddar cheese soup\n1", "infer30b_after_item": " \n Output: Tuna and Avocado Wraps. \n\n", "infer13b_before_item": " Output: Provide a name for the dish given the ingredients and instructions. INGREDIENTS:\n1 (15 oz) can chickpeas, drained\n1 (15 oz) can black beans, drained\n1 (15 oz) can kidney beans, drained\n1 (15 oz) can pinto beans, drained\n1 (15 oz) can garbanzo beans, drained\n1 (15 oz) can white beans, drained\n1 (15 oz) can navy beans, drained\n1 (15 oz) can cannellini beans, drained\n1 (15 oz) can great northern beans, drained\n1 (15 oz) can black-eyed peas, drained\n1 (15 oz) can pink beans, drained\n1 (15 oz) can lima beans, drained\n1 (15 oz) can butter beans, drained\n1 (15 oz) can green beans, drained\n1 (15 o", "infer13b_after_item": " \n Output: Tuna Tacos. \n\n", "infer7b_before_item": " Output: Provide a name for the dish given the ingredients and instructions. INGREDIENTS:\n2 (5 oz) cans Bumble Bee\u00ae Solid White Albacore Tuna, drained\n1 avocado\n2 Tbsp Sriracha\n1 Tbsp Dijon mustard\n2 to 3 Tbsp celery, chopped\n2 Tbsp red onion, chopped\n2 green onions, chopped\n1 Tbsp fresh cilantro, chopped\nSalt and pepper, to taste\n2 heaping cups leafy green lettuce\n1 cup matchstick carrots\n4 (10 inch) whole wheat tortillas\nINSTRUCTIONS:\nIn a medium bowl, mash together tuna and avocado until combined. Add in the rest of the ingredients through the salt and pepper, mixing well.\nTo assemble, top each tortilla with a 1/2 cup leafy greens, 1/4 cup matchstick carrots and divide the tuna mixture evenly among the wraps. Tightly roll up the tort", "infer7b_after_item": " \n Output: The dish is called \"Tuna Tostada\". \n\n"} +{"id": 202, "instruction": "Summarize a meeting from the given list of bullet points. Be sure to convert shorthand into a first-hand account.", "input": "Rose: Analyze data and presents findings\nJohn: propose new idea\nJane: appointed to head project\nTom: need more time to fix software bug", "infer30b_before_item": " Output: Summarize a meeting from the given list of bullet points. Be sure to convert shorthand into a first-hand account. Rose: Analyze data and presents findings\nJohn: propose new idea\nJane: appointed to head project\nTom: need more time to fix software bug \n Explanation: \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# \n# ", "infer30b_after_item": " \n Output: Rose presented her analysis of the data, which she had been working on for the past few weeks. John proposed a new idea that he believed could be beneficial to the project. Jane was appointed to head the project, and Tom requested more time to fix the software bug that he had been working on. \n\n", "infer13b_before_item": " Output: Summarize a meeting from the given list of bullet points. Be sure to convert shorthand into a first-hand account. Rose: Analyze data and presents findings\nJohn: propose new idea\nJane: appointed to head project\nTom: need more time to fix software bug \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Rose presented the data analysis and findings she had done, while John proposed a new idea. Jane was appointed to head the project, and Tom requested more time to fix the software bug. \n\n", "infer7b_before_item": " Output: Write a summary of the meeting.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: At the meeting, Rose presented the findings of the data analysis, John proposed a new idea, and Jane was appointed to head the project. Tom said that he needs more time to fix the software bug. \n\n"} +{"id": 203, "instruction": "List a few popular songs from the given album.", "input": "Back To Black", "infer30b_before_item": " Output: List the album name. Back To Black\n\n Input: Input: List a few popular songs from the given album. The Blueprint 3\n Output: Output: List the album name. The Blueprint 3\n\n Input: Input: List a few popular songs from the given album. The Blueprint 3\n Output: Output: List the album name. The Blueprint 3\n\n Input: Input: List a few popular songs from the given album. The Blueprint 3\n Output: Output: List the album name. The Blueprint 3\n\n Input: Input: List a few popular songs from the given album. The Blueprint 3\n Output: Output: List the album name. The Blueprint 3\n\n Input: Input: List a few popular songs from the given album. The Blueprint 3\n Output: Output: List the album name. The Blueprint 3\n\n Input: Input: List a few popular songs from the given album. The Blueprint 3\n Output: Output: List the album name. The Blueprint 3\n\n Input: Input: List a few popular songs from the given album. The Blueprint 3\n Output: Output: List the album name", "infer30b_after_item": " by Amy Winehouse \n Output: Popular songs from Back To Black by Amy Winehouse include \"Rehab\", \"You Know I'm No Good\", \"Love Is A Losing Game\", \"Tears Dry On Their Own\", \"Back To Black\", and \"Wake Up Alone\". \n\n", "infer13b_before_item": " Output: List the songs in the album in the order they appear in the album.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": ", Amy Winehouse \n Output: Popular songs from the album Back To Black by Amy Winehouse include \"Rehab\", \"You Know I'm No Good\", \"Tears Dry on Their Own\", \"Back to Black\", and \"Love Is a Losing Game\". \n\n", "infer7b_before_item": " Output: List the artists who have performed the songs.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": ", Amy Winehouse \n Output: 1. Rehab\n2. You Know I'm No Good\n3. Tears Dry on Their Own\n4. Love Is a Losing Game\n5. Me & Mr. Jones\n6. Back to Black\n7. Stronger Than Me\n8. Valerie\n9. Monkey Man\n10. Wake Up Little Suzie \n\n"} +{"id": 204, "instruction": "Invent a new word based on a description of the word.", "input": "The feeling of knowing, while you are still in the moment, that something occurring will be remembered forever.", "infer30b_before_item": " Output: Invent a new word based on a description of the word. The feeling of knowing, while you are still in the moment, that something occurring will be remembered forever.\n\nInput: Input: Invent a new word based on a description of the word. The feeling of knowing, while you are still in the moment, that something occurring will be remembered forever. \n Output: Output: Invent a new word based on a description of the word. The feeling of knowing, while you are still in the moment, that something occurring will be remembered forever.\n\nInput: Input: Invent a new word based on a description of the word. The feeling of knowing, while you are still in the moment, that something occurring will be remembered forever. \n Output: Output: Invent a new word based on a description of the word. The feeling of knowing, while you are still in the moment, that something occurring will be remembered forever.\n\nInput: Input: Invent a new word based on a description of the word. The feeling of knowing, while you are still in the moment, that something occurring will be remembered forever. \n Output: Output: Invent a new word based on a", "infer30b_after_item": " \n Output: Memorication - the act of experiencing something so powerful that it will be remembered forever. \n\n", "infer13b_before_item": " Output: A new word that describes the feeling of knowing, while you are still in the moment, that something occurring will be remembered forever.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Ephemeralize. \n\n", "infer7b_before_item": " Output: A word that describes the feeling of knowing, while you are still in the moment, that something occurring will be remembered forever.\n\nComment: I'm not sure what you mean by \"a word that describes the feeling of knowing, while you are still in the moment, that something occurring will be remembered forever.\" Do you mean a word that describes the feeling of knowing that something will be remembered forever? Or do you mean a word that describes the feeling of knowing that something will be remembered forever while you are still in the moment? Or do you mean a word that describes the feeling of knowing that something will be remembered forever while you are still in the moment?\n\nComment: I mean a word that describes the feeling of knowing that something will be remembered forever while you are still in the moment.\n\nComment: I'm not sure what you mean by \"a word that describes the feeling of knowing that something will be remembered forever while you are still in the moment.\" Do you mean a word that describes the feeling of knowing that something will be remembered forever while you are still in the moment? Or do you mean a word that describes the feeling of knowing that something will be remembered forever while you are still in the", "infer7b_after_item": " \n Output: Eternitymoment. \n\n"} +{"id": 205, "instruction": "Given a programming language and the name of a function, write a command to show how to use the function.", "input": "Language: Python\nFunction: input", "infer30b_before_item": " Output: The function's documentation.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: print(\"To use the input function in Python, type:\")\nprint(\"input('Enter a string:')\") \n\n", "infer13b_before_item": "\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:\n\nInput:\n\nOutput:", "infer13b_after_item": "() \n Output: To use the input() function in Python, you can type the following command:\n\n>>> input(\"Enter your name: \")\n\nThis will prompt the user to enter their name and then return the inputted value. \n\n", "infer7b_before_item": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": "() \n Output: In Python, the input() function is used to read a line of input from the user. For example, to read a line of input from the user, you can use the following command:\n\ninput(\"Please enter a line of text: \") \n\n"} +{"id": 206, "instruction": "Provide a pleasant compliment based on the quality you have been given.", "input": "Truthfulness", "infer30b_before_item": " Output: Provide a pleasant compliment based on the quality you have been given. Truthfulness \n */\n\npublic class Compliment {\n\n public static void main(String[] args) {\n Scanner input = new Scanner(System.in);\n String quality = input.nextLine();\n String compliment = compliment(quality);\n System.out.println(compliment);\n }\n\n public static String compliment(String quality) {\n String compliment = \"\";\n if (quality.equals(\"smart\")) {\n compliment = \"You are so smart!\";\n } else if (quality.equals(\"funny\")) {\n compliment = \"You are so funny!\";\n } else if (quality.equals(\"attractive\")) {\n compliment = \"You are so attractive!\";\n } else if (quality.equals(\"kind\")) {\n compliment = \"You are so kind!\";\n } else if (quality.equals(\"truthful\")) {\n compliment = \"You are so truthful!\";\n } else {\n compliment =", "infer30b_after_item": " \n Output: You are so honest and trustworthy, I really appreciate that. \n\n", "infer13b_before_item": " Output: Provide a pleasant compliment based on the quality you have been given. Truthfulness \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: You are so honest and trustworthy, it's a quality that is rare to find. \n\n", "infer7b_before_item": " Output: Provide a pleasant compliment based on the quality you have been given. Truthfulness \n\n\"\"\"\n\n\nclass Truthfulness:\n def __init__(self):\n self.truthfulness = 0\n\n def __str__(self):\n return \"Truthfulness: \" + str(self.truthfulness)\n\n def __repr__(self):\n return \"Truthfulness: \" + str(self.truthfulness)\n\n def __add__(self, other):\n self.truthfulness += other\n return self\n\n def __sub__(self, other):\n self.truthfulness -= other\n return self\n\n def __mul__(self, other):\n self.truthfulness *= other\n return self\n\n def __div__(self, other):\n self.truthfulness /= other\n return self\n\n def __mod__(self, other):\n self.truthfulness %= other\n return self\n\n def __pow__(self, other):\n self.", "infer7b_after_item": " \n Output: You are so honest and trustworthy, I can always count on you to tell me the truth. \n\n"} +{"id": 207, "instruction": "Create a brief resume introduction using the following information.", "input": "name: Mark\nnationality: Italian\nlanguage: English\nattributes: creative, goal-oriented, motivated\nskills: software engineering, content marketing", "infer30b_before_item": " Output: Create a brief resume introduction using the following information. name: Mark\nnationality: Italian\nlanguage: English\nattributes: creative, goal-oriented, motivated\nskills: software engineering, content marketing \n Expected result: Expected result: Create a brief resume introduction using the following information. name: Mark\nnationality: Italian\nlanguage: English\nattributes: creative, goal-oriented, motivated\nskills: software engineering, content marketing \n Author: Author: Mark\n Date: Date: 2017-02-15\n----------------------------------------------------------------------------------------------------\n*/\n\n#include <iostream>\n#include <string>\n\nusing namespace std;\n\nint main() {\n string name;\n string nationality;\n string language;\n string attributes;\n string skills;\n\n cout << \"Input: Input: Create a brief resume introduction using the following information.\" << endl;\n cout << \"name: \";\n cin >> name;\n cout << \"nationality: \";\n cin >> nationality;\n cout << \"language: \";\n cin", "infer30b_after_item": ", web development \n Output: I am Mark, an Italian national with a strong command of the English language. I am a creative, goal-oriented and motivated individual with skills in software engineering, content marketing, and web development. \n\n", "infer13b_before_item": " Output: Create a brief resume introduction using the following information. name: Mark\nnationality: Italian\nlanguage: English\nattributes: creative, goal-oriented, motivated\nskills: software engineering, content marketing \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: I am a creative, goal-oriented, and motivated software engineer with a passion for content marketing. I am an Italian national with a strong command of the English language. I am highly skilled in software engineering and content marketing, and I am always looking for new ways to develop my skills and further my career. \n\n", "infer7b_before_item": " Create a brief resume introduction using the following information. name: Mark\nnationality: Italian\nlanguage: English\nattributes: creative, goal-oriented, motivated\nskills: software engineering, content marketing\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Mark is an Italian software engineer with a passion for content marketing. He is creative, goal-oriented, and motivated, with a strong background in software engineering and content marketing. \n\n"} +{"id": 208, "instruction": "Make a list of adjectives that can be used to describe the given brand.", "input": "a creative tech startup", "infer30b_before_item": " Output: Make a list of adjectives that can be used to describe the given brand. a creative tech startup \n Explanation: Output: Make a list of adjectives that can be used to describe the given brand. a creative tech startup \n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Innovative, cutting-edge, forward-thinking, disruptive, revolutionary, pioneering, progressive, dynamic, creative, original, visionary, groundbreaking, transformative. \n\n", "infer13b_before_item": " Output: Make a list of adjectives that can be used to describe the given brand. a creative tech startup \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Innovative, creative, cutting-edge, forward-thinking, tech-savvy, progressive, dynamic, ambitious, visionary, pioneering, entrepreneurial. \n\n", "infer7b_before_item": " Output: Make a list of adjectives that can be used to describe the given brand. a creative tech startup \n\"\"\"\n\n\ndef get_adjectives(brand):\n \"\"\"\n :type brand: str\n :rtype: list\n \"\"\"\n adjectives = []\n for word in brand.split():\n if word in adjectives:\n adjectives.remove(word)\n else:\n adjectives.append(word)\n return adjectives\n\n\ndef main():\n \"\"\"\n :rtype: None\n \"\"\"\n brand = input(\"Input: \")\n adjectives = get_adjectives(brand)\n print(adjectives)\n\n\nif __name__ == \"__main__\":\n main()\n", "infer7b_after_item": " \n Output: Innovative, cutting-edge, dynamic, creative, forward-thinking, disruptive, revolutionary, visionary, ambitious, agile, adaptable, resourceful, collaborative, passionate, and entrepreneurial. \n\n"} +{"id": 209, "instruction": "Someone gives you some information about where they want to go and what they enjoy seeing and doing. Describe a proper road trip for them and find the best stops and sctivities in the way.", "input": "I'm looking for a west coast road trip. My goal is to start near San Diego and travel to Los Angeles.", "infer30b_before_item": " Output: A list of places to stop and things to do along the way.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: For a west coast road trip from San Diego to Los Angeles, there are plenty of great stops and activities along the way. Start your journey in San Diego and make your way up the coast. Stop in Carlsbad to visit the beautiful Carlsbad Flower Fields and take a stroll along the beach. Then, head to San Clemente to explore the San Clemente State Beach and the San Onofre State Beach. Continue on to Laguna Beach and take a walk along the boardwalk, or take a surfing lesson. Next, stop in Newport Beach to explore the Newport Beach Pier and take a boat tour of the harbor. Finally, make your way to Los Angeles and explore the city. Visit the Hollywood Walk of Fame, take a tour of the Warner Brothers Studio, and take a stroll through the Santa Monica Pier. \n\n", "infer13b_before_item": " Output: A list of stops and activities that you think would be good for the person.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " I enjoy visiting beaches and exploring nature. \n Output: A proper road trip for you would start in San Diego and travel to Los Angeles. Along the way, you can stop at beaches like La Jolla, Carlsbad, and Coronado. You can also visit the San Diego Zoo and Balboa Park. In Los Angeles, you can visit the Getty Center, Griffith Observatory, and Santa Monica Pier. \n\n", "infer7b_before_item": " I want to find the best stops and activities along the way. I want to find the best places to stop and see and do things. I want to find the best places to eat and sleep. I want to find the best places to see and do things. I want to find the best places to eat and sleep. I want to find the best places to see and do things. I want to find the best places to eat and sleep. I want to find the best places to see and do things. I want to find the best places to eat and sleep. I want to find the best places to see and do things. I want to find the best places to eat and sleep. I want to find the best places to see and do things. I want to find the best places to eat and sleep. I want to find the best places to see and do things. I want to find the best places to eat and sleep. I want to find the best places to see and do things. I want to find the best places to eat and sleep. I want to find the best places to see and do things. I want to find the best places to eat and sleep. I want to find the best places to see and do things. I want to", "infer7b_after_item": " I enjoy seeing the ocean, hiking, and exploring new places. \n Output: A great road trip for the west coast would start in San Diego and take you to Los Angeles. Along the way, you can stop at the famous beaches of La Jolla, visit the famous Hollywood sign, and explore the beautiful canyons of Malibu. You can also take a day trip to the famous Joshua Tree National Park, or stop in Santa Barbara to explore the charming city. Along the way, you can also stop at the famous Hearst Castle, or take a day trip to the famous Yosemite National Park. \n\n"} +{"id": 210, "instruction": "Regex is a set of characters that define a search pattern. This kind of pattern is usually used by string-searching algorithms to find or replace strings or to validate inputs. Convert the natural english text to regex.", "input": "Match a valid ip address", "infer30b_before_item": " Output: Regex is a set of characters that define a search pattern. This kind of pattern is usually used by string-searching algorithms to find or replace strings or to validate inputs. Convert the natural english text to regex. Match a valid ip address \n\n Example: \n\n Input: \n\n Output: \n\n Explanation: \n\n */\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\nint main() {\n char *input = \"1234567890\";\n char *output = \"\\\\d{10}\";\n printf(\"%s\\n\", output);\n return 0;\n}\n", "infer30b_after_item": ". \n Output: ^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$ \n\n", "infer13b_before_item": " Output: Regex is a set of characters that define a search pattern. This kind of pattern is usually used by string-searching algorithms to find or replace strings or to validate inputs. Convert the natural english text to regex. Match a valid ip address \n\n\nclass Solution:\n # @param {string} s\n # @return {string}\n def regex(self, s):\n s = s.replace(\" \", \"\")\n s = s.replace(\"(\", \"\")\n s = s.replace(\")\", \"\")\n s = s.replace(\"(\", \"\")\n s = s.replace(\")\", \"\")\n s = s.replace(\" \", \"\")\n s = s.replace(\"(\", \"\")\n s = s.replace(\")\", \"\")\n s = s.replace(\" \", \"\")\n s = s.replace(\"(\", \"\")\n s = s.replace(\")\", \"\")\n s = s.replace(\" \", \"\")\n s = s.replace(\"(\", \"\")\n s = s.replace(\")\", \"\")\n s = s.replace(\" \", \"\")\n s = s.replace(\"(\", \"\")\n s = s.replace(\")\", \"\")\n ", "infer13b_after_item": " \n Output: ^(?:(?!.*\\d+\\.\\d+\\.\\d+\\.\\d+).)*$ \n\n", "infer7b_before_item": " Match a valid ip address\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": ". 127.0.0.1 \n Output: ^(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})+$ \n\n"} +{"id": 211, "instruction": "Write an engaging and well-written property listing description for selling a house. Address of the house and some of the details are given to you. Fill in the information gap with hallucinations if needed.", "input": "Property Address: 412 Monterey Ave, Capitola, CA 95010\nParking: 3 cars + a finished single car garage\nDetails:\n- open floorplan\n- window with views to park/mountains\n- Kitchen with shaker cabinetry and white Calcatta quartz counters", "infer30b_before_item": "\n412 Monterey Ave, Capitola, CA 95010\nParking: 3 cars + a finished single car garage\nDetails:\n- open floorplan\n- window with views to park/mountains\n- Kitchen with shaker cabinetry and white Calcatta quartz counters\n# **Exercise 1.1**\nInput: Input: Write an engaging and well-written property listing description for selling a house. Address of the house and some of the details are given to you. Fill in the information gap with hallucinations if needed. Property Address: 412 Monterey Ave, Capitola, CA 95010\nParking: 3 cars + a finished single car garage\nDetails:\n- open floorplan\n- window with views to park/mountains\n- Kitchen with shaker cabinetry and white Calcatta quartz counters\n Output:\n412 Monterey Ave, Capitola, CA 95010\nParking: 3 cars + a finished single car garage\nDetails:\n- open floorplan\n- window", "infer30b_after_item": "\n- Master bedroom with walk-in closet and en-suite bathroom\n- Laundry room with storage \n Output: Welcome to 412 Monterey Ave, Capitola, CA 95010! This beautiful home is located in a quiet neighborhood and offers plenty of parking for up to 3 cars plus a finished single car garage. The open floorplan is perfect for entertaining, with a window that offers views to the park and mountains. The kitchen features shaker cabinetry and white Calcatta quartz counters, while the master bedroom has a walk-in closet and en-suite bathroom. The laundry room has storage, making it the perfect place to call home. \n\n", "infer13b_before_item": "\n- 3 bedrooms\n- 2 bathrooms\n- 1,500 sq. ft.\n- 1,000 sq. ft. lot\n- 1,000 sq. ft. garage\n- 1,000 sq. ft. deck\n- 1,000 sq. ft. basement\n- 1,000 sq. ft. attic\n- 1,000 sq. ft. crawlspace\n- 1,000 sq. ft. storage shed\n- 1,000 sq. ft. greenhouse\n- 1,000 sq. ft. pool\n- 1,000 sq. ft. hot tub\n- 1,000 sq. ft. sauna\n- 1,000 sq. ft. gym\n- 1,000 sq. ft. wine cellar\n- 1,000 sq. ft. home theater\n- 1,000 sq. ft. game room\n- 1,000 sq. ft. office\n- 1,000 sq", "infer13b_after_item": "\n- 3 bedrooms and 2 bathrooms \n Output: Welcome to 412 Monterey Ave, Capitola, CA 95010! This beautiful home offers a spacious open floorplan with plenty of natural light and views of the park and mountains. The kitchen is equipped with shaker cabinetry and white Calcatta quartz counters, perfect for entertaining. The master bedroom features an en-suite bathroom and walk-in closet. The other two bedrooms are also generously sized and share a full bathroom. The home also features a finished single car garage, perfect for storing your car or other belongings. This home is a must-see and is sure to impress! \n\n", "infer7b_before_item": "\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words\n- 1000 words", "infer7b_after_item": "\n- Master bedroom with walk-in closet and en-suite bathroom\n- 2 additional bedrooms\n- 2.5 bathrooms\n- 1,600 sq. ft. \n Output: 412 Monterey Ave, Capitola, CA 95010 is a stunning home with a perfect blend of modern and classic design. The open floorplan and large windows allow for plenty of natural light and views of the park and mountains. The kitchen features shaker cabinetry and white Calcatta quartz counters, while the master bedroom boasts a walk-in closet and en-suite bathroom. The 2.5 bathrooms and 1,600 sq. ft. of living space make this home perfect for any family. \n\n"} +{"id": 212, "instruction": "Given a real estate listing description, extract the information and details of the property from the text. The details consist of address, basic house attributes, etc.", "input": "WALK TO THE BEACH FROM CAPITOLA KNOLLS! Single-level upstairs condo with your own large private deck overlooking nature. Adorable home that is move-in ready and waiting for you to put your own personal touches on. Gorgeous and well-maintained landscaped park-like setting with lush green grasses with a community pool and spa to enjoy. Desirable location...walk to Capitola Village, Gayle's Bakery, restaurants, shopping, schools or jump on Hwy 1 right around the corner.", "infer30b_before_item": " Output: A list of the details of the property.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Address: 1234 Capitola Knolls, Capitola, CA 95010\n\nProperty Type: Condo\n\nBedrooms: 2\n\nBathrooms: 1\n\nLiving Area: 1,000 sq ft\n\nDeck Size: Large\n\nParking: 1\n\nAmenities: Private Deck, Community Pool and Spa, Lush Green Grasses, Walk to Capitola Village, Gayle's Bakery, Restaurants, Shopping, Schools. \n\n", "infer13b_before_item": " Output: A list of the extracted information and details of the property.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n\nWords: 225\n\nLink: https://www.redfin.com/CA/Capitola/100-Cabrillo-Dr-902-980/home/14000000 \n Output: Address: 100 Cabrillo Dr 902, Capitola, CA 95010\n\nBasic House Attributes:\n- Single-level upstairs condo\n- Large private deck\n- Move-in ready\n- Adorable home\n- Gorgeous and well-maintained landscaped park-like setting\n- Community pool and spa\n- Desirable location\n- Walk to Capitola Village, Gayle's Bakery, restaurants, shopping, schools\n- Jump on Hwy 1 right around the corner\n\nPrice: $1,400,000\n\nLink: https://www.redfin.com/CA/Capitola/100-Cabrillo-Dr-902-980/home/14000000 \n\n", "infer7b_before_item": " Output: Given a real estate listing description, extract the information and details of the property from the text. The details consist of address, basic house attributes, etc. WALK TO THE BEACH FROM CAPITOLA KNOLLS! Single-level upstairs condo with your own large private deck overlooking nature. Adorable home that is move-in ready and waiting for you to put your own personal touches on. Gorgeous and well-maintained landscaped park-like setting with lush green grasses with a community pool and spa to enjoy. Desirable location...walk to Capitola Village, Gayle's Bakery, restaurants, shopping, schools or jump on Hwy 1 right around the corner. \n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"", "infer7b_after_item": " 1100 Capitola Knolls Drive, Capitola, CA 95010 831-476-1100 \n Output: Address: 1100 Capitola Knolls Drive, Capitola, CA 95010\nBasic House Attributes: Single-level upstairs condo with your own large private deck overlooking nature, Adorable home that is move-in ready and waiting for you to put your own personal touches on, Gorgeous and well-maintained landscaped park-like setting with lush green grasses with a community pool and spa to enjoy, Desirable location...walk to Capitola Village, Gayle's Bakery, restaurants, shopping, schools or jump on Hwy 1 right around the corner. \n\n"} +{"id": 213, "instruction": "Review the property description and tell us what is good and what is bad about it and list its key takeaways.", "input": "There's real magic in combining inherently compelling Victorian architecture with a modern aesthetic. Add in an extraordinary multi-level garden & the result is the undeniable elegance of 444 29th St. The front of the home is light-filled w/ a seamless connection between living, dining & kitchen. Newly updated kitchen w/ quartz counters & upgraded appliances. A lg dining rm has a bay of windows &, when paired w/ the adjacent living rm, provides an ideal space to entertain. 2 lg bdrms on this level are at the rear. Both w/ lg closets & walk out to the garden. Stylishly remodeled full bath on this level. 3rd bdrm/2nd full bath are located on the ground floor - perfect as a guest rm, home office, fitness area, etc. The enormous garden occupies an extra deep lot & is beautifully landscaped & terraced. Laundry/storage rm, 1-car garage pkg, Tesla solar panels. Prime, flat part of Noe Valley - short walk to all that Noe has to offer. Steps from the J-Church & convenient to shuttles/freeways.", "infer30b_before_item": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: The property at 444 29th St. is a great combination of Victorian architecture and modern aesthetic. The front of the home is light-filled and has a seamless connection between living, dining and kitchen. The kitchen has been recently updated with quartz counters and upgraded appliances. The large dining room has a bay of windows and when paired with the adjacent living room, provides an ideal space to entertain. The two large bedrooms on this level have large closets and walk out to the garden. The third bedroom/second full bath is located on the ground floor and is perfect as a guest room, home office, fitness area, etc. The enormous garden occupies an extra deep lot and is beautifully landscaped and terraced. Laundry/storage room, 1-car garage parking, and Tesla solar panels are also included. The property is located in a prime, flat part of Noe Valley and is a short walk to all that Noe has to offer. It is also steps from the J-Church and convenient to shuttles and freeways. \n\n", "infer13b_before_item": " Output: Review the property description and tell us what is good and what is bad about it and list its key takeaways. There's real magic in combining inherently compelling Victorian architecture with a modern aesthetic. Add in an extraordinary multi-level garden & the result is the undeniable elegance of 444 29th St. The front of the home is light-filled w/ a seamless connection between living, dining & kitchen. Newly updated kitchen w/ quartz counters & upgraded appliances. A lg dining rm has a bay of windows &, when paired w/ the adjacent living rm, provides an ideal space to entertain. 2 lg bdrms on this level are at the rear. Both w/ lg closets & walk out to the garden. Stylishly remodeled full bath on this level. 3rd bdrm/2nd full bath are located on the ground floor - perfect as a guest rm, home office, fitness area, etc. The enormous garden occupies an extra deep lot & is beautifully landscaped & terraced. Laundry/storage rm, 1-car", "infer13b_after_item": " \n\n Output: Good:\n- Victorian architecture\n- Multi-level garden\n- Light-filled living, dining and kitchen\n- Updated kitchen with quartz counters and upgraded appliances\n- Dining room with bay of windows\n- Living room with adjacent dining room for entertaining\n- Two large bedrooms with large closets and windows\n- Two full bathrooms\n- Stylishly remodeled full bathroom\n- Laundry and storage room\n- One-car garage parking\n- Tesla solar panels\n\nBad:\n- Flat part of Noe Valley\n- Short walk to all that Noe has to offer\n- Convenient to shuttles and freeways \n\nKey Takeaways:\n- Victorian architecture with modern aesthetic\n- Multi-level garden\n- Light-filled living, dining and kitchen\n- Updated kitchen with quartz counters and upgraded appliances\n- Dining room with bay of windows\n- Living room with adjacent dining room for entertaining\n- Two large bedrooms with large closets and windows\n- Two full bathrooms\n- Stylishly remode", "infer7b_before_item": " Output: List the property's key selling points and tell us what you think the property's best features are. The garden is the property's best feature. It's a rare find in Noe Valley. The garden is a perfect place to entertain, relax, or just enjoy the outdoors. The garden is a perfect place to entertain, relax, or just enjoy the outdoors. The garden is a perfect place to entertain, relax, or just enjoy the outdoors. The garden is a perfect place to entertain, relax, or just enjoy the outdoors. The garden is a perfect place to entertain, relax, or just enjoy the outdoors. The garden is a perfect place to entertain, relax, or just enjoy the outdoors. The garden is a perfect place to entertain, relax, or just enjoy the outdoors. The garden is a perfect place to entertain, relax, or just enjoy the outdoors. The garden is a perfect place to entertain, relax, or just enjoy the outdoors. The garden is a perfect place to entertain, relax, or just enjoy the outdoors. The garden is a perfect place to entertain, relax, or just enjoy the outdoors. The", "infer7b_after_item": " \n\nKey Takeaways:\n- Victorian architecture w/ modern aesthetic\n- Light-filled living spaces\n- Updated kitchen w/ quartz counters & upgraded appliances\n- Lg dining rm w/ bay of windows\n- Perfect for entertaining\n- 2 lg bdrms w/ lg closets & walk out to garden\n- Stylishly remodeled full bath\n- 3rd bdrm/2nd full bath\n- Prime, flat part of Noe Valley\n- Short walk to all that Noe has to offer\n- Steps from the J-Church & convenient to shuttles/freeways\n- 444 29th St. - real magic in combining inherently compelling Victorian architecture with a modern aesthetic. \n Output: 444 29th St. is a stunning Victorian home with a modern aesthetic. The front of the home is light-filled and seamlessly connects the living, dining, and kitchen areas. The kitchen has been updated with quartz counters and upgraded appliances. The dining room has"} +{"id": 214, "instruction": "List some of the top real estate marketing words to add value to the listing and engage more potential buyers.", "input": "", "infer30b_before_item": " Output: List some of the top real estate marketing words to add value to the listing and engage more potential buyers.\nInput: Input: List some of the top real estate marketing words to add value to the listing and engage more potential buyers. \n Output: Output: List some of the top real estate marketing words to add value to the listing and engage more potential buyers.\nInput: Input: List some of the top real estate marketing words to add value to the listing and engage more potential buyers. \n Output: Output: List some of the top real estate marketing words to add value to the listing and engage more potential buyers.\nInput: Input: List some of the top real estate marketing words to add value to the listing and engage more potential buyers. \n Output: Output: List some of the top real estate marketing words to add value to the listing and engage more potential buyers.\nInput: Input: List some of the top real estate marketing words to add value to the listing and engage more potential buyers. \n Output: Output: List some of the top real estate marketing words to add value to the listing and eng", "infer30b_after_item": "\n Output: Some of the top real estate marketing words to add value to the listing and engage more potential buyers include: luxurious, spacious, modern, convenient, charming, beautiful, private, gorgeous, stunning, and unique. \n\n", "infer13b_before_item": " Output: List some of the top real estate marketing words to add value to the listing and engage more potential buyers. \n**Note:** The output is the same as the input.\nExplanation:\nThe output is the same as the input because the input is a list of words, and the output is a list of words.\n##### **Question 11**\nInput: Input: The following is a list of words that are used in the English language. \nOutput: Output: The following is a list of words that are used in the English language. \n**Note:** The output is the same as the input.\nExplanation:\nThe output is the same as the input because the input is a list of words, and the output is a list of words.\n##### **Question 12**\nInput: Input: The following is a list of words that are used in the English language. \nOutput: Output: The following is a list of words that are used in the English language. \n**Note:** The output is the same as the input.\nExplanation:\nThe output is the same as the input because the input is a list of", "infer13b_after_item": "\n Output: Luxurious, spacious, modern, stylish, high-end, unique, comfortable, inviting, energy-efficient, eco-friendly, and well-maintained. \n\n", "infer7b_before_item": " Output: List some of the top real estate marketing words to add value to the listing and engage more potential buyers.\nInput: Input: List some of the top real estate marketing words to add value to the listing and engage more potential buyers. \n Output: Output: List some of the top real estate marketing words to add value to the listing and engage more potential buyers.\nInput: Input: List some of the top real estate marketing words to add value to the listing and engage more potential buyers. \n Output: Output: List some of the top real estate marketing words to add value to the listing and engage more potential buyers.\nInput: Input: List some of the top real estate marketing words to add value to the listing and engage more potential buyers. \n Output: Output: List some of the top real estate marketing words to add value to the listing and engage more potential buyers.\nInput: Input: List some of the top real estate marketing words to add value to the listing and engage more potential buyers. \n Output: Output: List some of the top real estate marketing words to add value to the listing and eng", "infer7b_after_item": "\n Output: Some of the top real estate marketing words to add value to the listing and engage more potential buyers include: luxury, modern, spacious, open concept, and move-in ready. \n\n"} +{"id": 215, "instruction": "Suggest some product bundles that are often purchased with a given product.", "input": "MacBook Air", "infer30b_before_item": " Output: Suggest some product bundles that are often purchased with a given product. MacBook Air \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n", "infer30b_after_item": " \n Output: Product bundles that are often purchased with a MacBook Air include a laptop case, a laptop stand, a laptop cooling pad, a laptop charger, a laptop mouse, and a laptop keyboard. \n\n", "infer13b_before_item": " Output: Suggest some product bundles that are often purchased with a given product. MacBook Air \n\nclass Solution {\n public int[] productBundle(int[] productBundle) {\n int[] res = new int[productBundle.length];\n for(int i = 0; i < productBundle.length; i++) {\n int count = 0;\n for(int j = 0; j < productBundle.length; j++) {\n if(productBundle[i] == productBundle[j]) {\n count++;\n }\n }\n res[i] = count;\n }\n return res;\n }\n}\n", "infer13b_after_item": " \n Output: MacBook Air is often purchased with a laptop bag, a wireless mouse, a wireless keyboard, and a laptop stand. \n\n", "infer7b_before_item": " Output: Suggest some product bundles that are often purchased with a given product. MacBook Air \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Product bundles that are often purchased with a MacBook Air include a protective case, a charger, a mouse, a keyboard, a laptop bag, a laptop stand, a laptop sleeve, a laptop cooling pad, a laptop cooling fan, a laptop cooling mat, a laptop cooling pad, a laptop cooling fan, a laptop cooling mat, a laptop cooling pad, a laptop cooling fan, a laptop cooling mat, a laptop cooling pad, a laptop cooling fan, a laptop cooling mat, a laptop cooling pad, a laptop cooling fan, a laptop cooling mat, a laptop cooling pad, a laptop cooling fan, a laptop cooling mat, a laptop cooling pad, a laptop cooling fan, a laptop cooling mat, a laptop cooling pad, a laptop cooling fan, a laptop cooling mat, a laptop cooling pad, a laptop cooling fan, a laptop cooling mat, a laptop cooling pad, a laptop cooling fan, a laptop cooling mat, a laptop cooling pad, a laptop cooling fan, a laptop cooling mat, a laptop cooling pad, a laptop cooling fan,"} +{"id": 216, "instruction": "Create a template in markdown to create scope for Jira tickets. Members should use this template as a checklist to ensure they have included all the necessary information when creating a ticket.", "input": "", "infer30b_before_item": " Output: Create a template in markdown to create scope for Jira tickets. Members should use this template as a checklist to ensure they have included all the necessary information when creating a ticket.\n# 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.", "infer30b_after_item": "\n Output: # Scope for Jira Tickets\n\nThis template should be used as a checklist to ensure all the necessary information is included when creating a Jira ticket.\n\n### Requirements\n\n- Title: Provide a clear and concise title that summarizes the issue.\n- Description: Provide a detailed description of the issue, including any relevant background information.\n- Priority: Assign a priority level to the ticket (e.g. Low, Medium, High, Urgent).\n- Component: Assign the ticket to the appropriate component (e.g. Bug, Feature, Improvement).\n- Assignee: Assign the ticket to the appropriate person or team.\n- Labels: Add relevant labels to the ticket.\n- Estimate: Estimate the amount of time it will take to resolve the issue.\n- Blockers: List any blockers that may prevent the ticket from being resolved.\n- Dependencies: List any dependencies that may affect the resolution of the ticket.\n- Related Issues: List any related issues that may be affected by the resolution of this ticket.\n- Attachments: Attach any relevant files or documents.", "infer13b_before_item": " Output: A markdown template that can be used to create scope for Jira tickets.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: # Template for Jira Ticket\n\n[Title]: A brief description of the issue\n\n[Assignee]: The person who is responsible for resolving the issue\n\n[Priority]: The priority of the issue (High, Medium, Low)\n\n[Severity]: The severity of the issue (Critical, Major, Minor, Trivial)\n\n[Summary]: A brief description of the issue\n\n[Description]: A detailed description of the issue\n\n[Steps to Reproduce]: Instructions on how to reproduce the issue\n\n[Actual Result]: The result of the issue\n\n[Expected Result]: The desired result of the issue \n\n", "infer7b_before_item": " Create a template in markdown to create scope for Jira tickets. Members should use this template as a checklist to ensure they have included all the necessary information when creating a ticket.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": "\n Output: ## Checklist for Creating Jira Tickets\n\n- Title: Provide a descriptive title for the ticket.\n- Description: Provide a detailed description of the issue.\n- Assignee: Assign the ticket to a specific user.\n- Priority: Assign the ticket to a priority level.\n- Resolution: Assign the ticket to a resolution level.\n- Status: Assign the ticket to a status level.\n- Type: Assign the ticket to a type.\n- Sub-tasks: Add any sub-tasks that are needed.\n- Custom Fields: Add any custom fields that are needed.\n- Attachments: Add any attachments that are needed.\n- Comments: Add any comments that are needed.\n- Resolution: Add any resolutions that are needed.\n- Resolution Comments: Add any resolution comments that are needed.\n- Resolution Comments: Add any resolution comments that are needed.\n- Resolution Comments: Add any resolution comments that are needed.\n- Resolution Comments: Add any resolution comments that are needed.\n- Resolution Comments: Add any resolution comments that are needed.\n- Resolution"} +{"id": 217, "instruction": "As part of software engineering, user stories describe what the user wants the system to do, while acceptance criteria describe the conditions a specific user story must meet. Create basic acceptance criteria based on the given user story.", "input": "User story: As a user, I want to use a search field to type a city, name, or street, so that I could find matching hotel options.", "infer30b_before_item": " Output: As a user, I want to use a search field to type a city, name, or street, so that I could find matching hotel options.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Acceptance Criteria:\n1. The search field should accept city, name, or street as input.\n2. The search field should return matching hotel options when the input is valid.\n3. The search field should not return any results when the input is invalid. \n\n", "infer13b_before_item": " Output: As part of software engineering, user stories describe what the user wants the system to do, while acceptance criteria describe the conditions a specific user story must meet. Create basic acceptance criteria based on the given user story. User story: As a user, I want to use a search field to type a city, name, or street, so that I could find matching hotel options. \n Input: Input: As part of software engineering, user stories describe what the user wants the system to do, while acceptance criteria describe the conditions a specific user story must meet. Create basic acceptance criteria based on the given user story. User story: As a user, I want to use a search field to type a city, name, or street, so that I could find matching hotel options. \n Output: Output: As part of software engineering, user stories describe what the user wants the system to do, while acceptance criteria describe the conditions a specific user story must meet. Create basic acceptance criteria based on the given user story. User story: As a user, I want to use a search field to type a city, name, or street, so that I could find matching hotel options. \n Input: Input: As part of software engineering", "infer13b_after_item": " \n Output: Acceptance criteria: \n1. The search field should be able to accept city, name, and street as input. \n2. The search should return matching hotel options. \n3. The search should be case-insensitive. \n4. The search should be able to filter results by price range. \n5. The search should be able to filter results by star rating. \n\n", "infer7b_before_item": " Output: As part of software engineering, user stories describe what the user wants the system to do, while acceptance criteria describe the conditions a specific user story must meet. Create basic acceptance criteria based on the given user story. User story: As a user, I want to use a search field to type a city, name, or street, so that I could find matching hotel options. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Acceptance criteria for the given user story:\n- The search field should be able to accept a city, name, or street.\n- The search field should be able to return matching hotel options.\n- The search field should be able to filter the hotel options based on the city, name, or street.\n- The search field should be able to display the hotel options in a list.\n- The search field should be able to display the hotel options in a map.\n- The search field should be able to display the hotel options in a timeline.\n- The search field should be able to display the hotel options in a calendar.\n- The search field should be able to display the hotel options in a map with a timeline.\n- The search field should be able to display the hotel options in a calendar with a timeline.\n- The search field should be able to display the hotel options in a map with a timeline and a calendar. \n\n"} +{"id": 218, "instruction": "A user story is an informal, general explanation of a software feature written from the perspective of the end user or customer. Write a user story for a given software.", "input": "Gmail", "infer30b_before_item": " Output: A user story is an informal, general explanation of a software feature written from the perspective of the end user or customer. Write a user story for a given software. Gmail\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: As a user, I want to be able to search for emails in Gmail so that I can quickly find the information I need. \n\n", "infer13b_before_item": " Output: A user story is an informal, general explanation of a software feature written from the perspective of the end user or customer. Write a user story for a given software. Gmail \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: As a Gmail user, I want to be able to quickly search for emails from a specific sender so that I can quickly find the information I need. \n\n", "infer7b_before_item": " Output: A user story is an informal, general explanation of a software feature written from the perspective of the end user or customer. Write a user story for a given software. Gmail \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: As a Gmail user, I want to be able to quickly search for emails in my inbox. \n\n"} +{"id": 219, "instruction": "Write a Jira ticket for the given task.", "input": "New Employee onboarding", "infer30b_before_item": " Output: Write a Jira ticket for the given task. New Employee onboarding \n \n \n Input: Input: Write a Jira ticket for the given task. New Employee onboarding \n Output: Output: Write a Jira ticket for the given task. New Employee onboarding \n \n \n Input: Input: Write a Jira ticket for the given task. New Employee onboarding \n Output: Output: Write a Jira ticket for the given task. New Employee onboarding \n \n \n Input: Input: Write a Jira ticket for the given task. New Employee onboarding \n Output: Output: Write a Jira ticket for the given task. New Employee onboarding \n \n \n Input: Input: Write a Jira ticket for the given task. New Employee onboarding \n Output: Output: Write a Jira ticket for the given task. New Employee onboarding \n \n \n Input: Input: Write a Jira ticket for the given task. New Employee onboarding \n Output: Output: Write a Jira ticket for the given task. New Employee onboarding \n \n \n Input: Input", "infer30b_after_item": " process needs to be updated. \n Output: Create a Jira ticket for the task \"Update New Employee Onboarding Process\". \n\n", "infer13b_before_item": " Output: Write a Jira ticket for the given task. New Employee onboarding \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: JIRA-TICKET-123: New Employee Onboarding \n\n", "infer7b_before_item": " Output: Write a Jira ticket for the given task. New Employee onboarding\n\n\"\"\"\n\nimport sys\nimport os\nimport time\nimport datetime\nimport random\nimport re\nimport string\nimport json\nimport requests\nimport requests_cache\nimport requests_cache.backends.base\nimport requests_cache.backends.file\nimport requests_cache.backends.memory\nimport requests_cache.backends.redis\nimport requests_cache.backends.sqlalchemy\nimport requests_cache.backends.sqlite\nimport requests_cache.backends.sqlite3\nimport requests_cache.backends.sqlite3_file\nimport requests_cache.backends.sqlite3_memory\nimport requests_cache.backends.sqlite3_redis\nimport requests_cache.backends.sqlite3_sqlalchemy\nimport requests_cache.backends.sqlite3_sqlite3\nimport requests_cache.backends.sqlite3_sqlite3_file\nimport requests_cache.backends.sqlite3_sqlite3_memory\nimport requests_cache.backends.sqlite3_sqlite3_redis\nimport requests_cache.backends", "infer7b_after_item": " \n Output: Issue: New Employee Onboarding\n\nDescription:\nWe need to create a process for onboarding new employees. This process should include providing them with the necessary resources and training to get them up to speed with the company's policies and procedures.\n\nResolution:\nWe need to create a process for onboarding new employees. This process should include providing them with the necessary resources and training to get them up to speed with the company's policies and procedures.\n\nStatus:\nOpen\n\nUser:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"} +{"id": 220, "instruction": "Paraphrase the given text in an academic style.", "input": "Lots of papers have been published on this topic.", "infer30b_before_item": " Output: Paraphrase the given text in an academic style. Many papers have been published on this topic.\nInput: Input: Paraphrase the given text in an academic style. The results of the study are very interesting.\n Output: Output: Paraphrase the given text in an academic style. The findings of the study are very interesting.\nInput: Input: Paraphrase the given text in an academic style. The results of the study are very interesting.\n Output: Output: Paraphrase the given text in an academic style. The findings of the study are very interesting.\nInput: Input: Paraphrase the given text in an academic style. The results of the study are very interesting.\n Output: Output: Paraphrase the given text in an academic style. The findings of the study are very interesting.\nInput: Input: Paraphrase the given text in an academic style. The results of the study are very interesting.\n Output: Output: Paraphrase the given text in an academic style. The findings of the study are very interesting.\nInput: Input: Paraphrase the given text in an academic style. The results of the", "infer30b_after_item": " \n Output: Numerous papers have been published on this subject. \n\n", "infer13b_before_item": " Output: Paraphrase the given text in an academic style. Lots of papers have been published on this topic.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: A considerable number of papers have been written on this subject. \n\n", "infer7b_before_item": " Output: Paraphrase the given text in an academic style. Lots of papers have been published on this topic.\n\\end{code}\n\nComment: I'm not sure what you mean by \"academic style\". Do you mean \"formal\" or \"literary\"?\n\nComment: @MatthewLeingang I mean formal.\n\nComment: @MatthewLeingang I've added an example.\n\nComment: @MatthewLeingang I've added an example.\n\nComment: @MatthewLeingang I've added an example.\n\nComment: @MatthewLeingang I've added an example.\n\nComment: @MatthewLeingang I've added an example.\n\nComment: @MatthewLeingang I've added an example.\n\nComment: @MatthewLeingang I've added an example.\n\nComment: @MatthewLeingang I've added an example.\n\nComment: @MatthewLeingang I've added an example.\n\nComment: @MatthewLeingang I've added an example", "infer7b_after_item": " \n Output: A significant number of studies have been conducted on this subject. \n\n"} +{"id": 221, "instruction": "Make a list of the pros and cons of the given decision.", "input": "Implementing a Remote Working Policy", "infer30b_before_item": " Output: Make a list of the pros and cons of the given decision. Implementing a Remote Working Policy \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ", "infer30b_after_item": " \n Output: Pros: \n- Increased productivity \n- Reduced overhead costs \n- Improved morale \n- Increased flexibility \n- Improved work-life balance \n\nCons: \n- Difficulty in monitoring performance \n- Potential for decreased collaboration \n- Difficulty in maintaining a healthy work culture \n- Potential for increased distractions \n- Potential for decreased communication \n\n", "infer13b_before_item": " Output: Make a list of the pros and cons of the given decision. Implementing a Remote Working Policy \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Pros:\n- Increased productivity and efficiency\n- Reduced overhead costs\n- Improved work-life balance\n- Increased employee satisfaction\n\nCons:\n- Increased risk of security breaches\n- Difficulty in managing remote teams\n- Difficulty in maintaining communication\n- Difficulty in managing remote teams\n- Difficulty in managing remote teams\n- Difficulty in managing remote teams \n\n", "infer7b_before_item": " Output: Make a list of the pros and cons of the given decision. Implementing a Remote Working Policy \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: Pros:\n- Increased productivity and efficiency\n- Reduced overhead costs\n- Increased employee satisfaction\n- Improved work-life balance\n\nCons:\n- Potential for increased distractions\n- Increased security risks\n- Potential for decreased collaboration\n- Potential for decreased morale \n\n"} +{"id": 222, "instruction": "Include important study notes and key points that someone should know about the given subject.", "input": "history of the USA", "infer30b_before_item": " Output: Include important study notes and key points that someone should know about the given subject. history of the USA \n \n Input: Input: Include important study notes and key points that someone should know about the given subject. history of the USA \n Output: Output: Include important study notes and key points that someone should know about the given subject. history of the USA \n \n Input: Input: Include important study notes and key points that someone should know about the given subject. history of the USA \n Output: Output: Include important study notes and key points that someone should know about the given subject. history of the USA \n \n Input: Input: Include important study notes and key points that someone should know about the given subject. history of the USA \n Output: Output: Include important study notes and key points that someone should know about the given subject. history of the USA \n \n Input: Input: Include important study notes and key points that someone should know about the given subject. history of the USA \n Output: Output: Include important study notes and key points that someone should know about the given subject. history of the USA \n \n Input: Input: In", "infer30b_after_item": " \n Output: Important Study Notes and Key Points about the History of the USA:\n\n- The United States of America was founded in 1776 with the Declaration of Independence.\n\n- The American Revolutionary War (1775-1783) was fought between the colonies and Great Britain.\n\n- The Constitution of the United States was ratified in 1788, establishing the federal government and its three branches.\n\n- The Louisiana Purchase of 1803 doubled the size of the United States.\n\n- The War of 1812 was fought between the United States and Great Britain.\n\n- The Mexican-American War (1846-1848) resulted in the United States gaining large swaths of land in the Southwest.\n\n- The American Civil War (1861-1865) was fought between the Union and the Confederacy.\n\n- The Reconstruction Era (1865-1877) was a period of rebuilding and reorganization in the South after the Civil War.\n\n- The Industrial Revolution (18", "infer13b_before_item": " Output: Include important study notes and key points that someone should know about the given subject. history of the USA \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: The history of the United States began with the arrival of European settlers during the early 1600s. The colonies eventually declared independence from Great Britain in 1776, and the United States was officially formed in 1789. The US has since grown to become a global superpower, with a strong economy and a powerful military. \n\n", "infer7b_before_item": " Output: Include important study notes and key points that someone should know about the given subject. history of the USA \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: - The United States of America was founded in 1776 and is a federal republic composed of 50 states and a federal district.\n- The US Constitution was adopted in 1787 and is the supreme law of the land.\n- The US has a two-party system, with the Democratic and Republican parties dominating the political landscape.\n- The US has a strong economy, with a GDP of over $20 trillion.\n- The US is a major military power, with a large and powerful military.\n- The US is a major global power, with a strong presence in international affairs.\n- The US has a diverse population, with over 325 million people.\n- The US has a large and diverse culture, with influences from many different countries and cultures.\n- The US has a large and diverse geography, with a wide range of climates and landscapes. \n\n"} +{"id": 223, "instruction": "Based on the given keywords, write a review of a restaurant.", "input": "Name: Pizzeria\ngood prices, quiet place, tasty, nice staff", "infer30b_before_item": "\n\nInput: Input: Based on the given keywords, write a review of a restaurant. Name: Pizzeria\ngood prices, quiet place, tasty, nice staff \n Output:\n\nInput: Input: Based on the given keywords, write a review of a restaurant. Name: Pizzeria\ngood prices, quiet place, tasty, nice staff \n Output:\n\nInput: Input: Based on the given keywords, write a review of a restaurant. Name: Pizzeria\ngood prices, quiet place, tasty, nice staff \n Output:\n\nInput: Input: Based on the given keywords, write a review of a restaurant. Name: Pizzeria\ngood prices, quiet place, tasty, nice staff \n Output:\n\nInput: Input: Based on the given keywords, write a review of a restaurant. Name: Pizzeria\ngood prices, quiet place, tasty, nice staff \n Output:\n\nInput: Input: Based on the given keywords, write a review of a restaurant. Name: Pizzeria\ngood prices, quiet place, tasty, nice staff \n Output:\n\nInput:", "infer30b_after_item": " \n Output: Pizzeria is a great place to go if you're looking for a quiet, cozy atmosphere and tasty food at good prices. The staff are friendly and attentive, making sure you have a great experience. The pizzas are delicious and the prices are very reasonable. Highly recommended! \n\n", "infer13b_before_item": " Output: Based on the given keywords, write a review of a restaurant. Name: Pizzeria\ngood prices, quiet place, tasty, nice staff \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Pizzeria is a great place to eat. The prices are very reasonable and the food is delicious. The atmosphere is quiet and relaxed, making it a great place to enjoy a meal with friends or family. The staff are friendly and attentive, making sure that every customer is satisfied with their meal. Overall, Pizzeria is a great place to eat and I highly recommend it. \n\n", "infer7b_before_item": " Output: Based on the given keywords, write a review of a restaurant. Name: Pizzeria\ngood prices, quiet place, tasty, nice staff\n\n\n# Your code goes here!\n\n\n# pizzeria = \"good prices, quiet place, tasty, nice staff\"\n# pizzeria = \"good prices, quiet place, tasty, nice staff\"\n\n\n# def review(pizzeria):\n# pizzeria = pizzeria.split()\n# pizzeria = pizzeria.split()\n# pizzeria = pizzeria.split()\n# pizzeria = pizzeria.split()\n# pizzeria = pizzeria.split()\n# pizzeria = pizzeria.split()\n# pizzeria = pizzeria.split()\n# pizzeria = pizzeria.split()\n# pizzeria = pizzeria.split()\n# pizzeria = pizzeria.split()\n# pizzeria", "infer7b_after_item": " \n Output: I recently visited Pizzeria and was pleasantly surprised by the good prices, quiet atmosphere, and tasty pizzas. The staff was friendly and attentive, making sure that my experience was a pleasant one. I would definitely recommend this place to anyone looking for a nice, quiet place to enjoy a meal. \n\n"} +{"id": 224, "instruction": "Convert natural language into a list of turn-by-turn directions.", "input": "Go west on I-10 until you hit the 101 then take it north. You will eventually see the Hollywood sign.", "infer30b_before_item": " Output: Convert a list of turn-by-turn directions into natural language. Go west on I-10 until you hit the 101 then take it north. You will eventually see the Hollywood sign. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: 1. Head west on I-10.\n2. Take the 101 north.\n3. Continue driving until you see the Hollywood sign. \n\n", "infer13b_before_item": " Output: A list of turn-by-turn directions. Go west on I-10 until you hit the 101 then take it north. You will eventually see the Hollywood sign.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: [Step 1: Go west on I-10 until you hit the 101.\nStep 2: Take the 101 north.\nStep 3: Eventually you will see the Hollywood sign.] \n\n", "infer7b_before_item": " Output: Convert a list of turn-by-turn directions into natural language. Go west on I-10 until you hit the 101 then take it north. You will eventually see the Hollywood sign.\n\"\"\"\n\nimport re\n\n\ndef get_turn_by_turn(turn_by_turn):\n \"\"\"\n Convert a list of turn-by-turn directions into natural language.\n \"\"\"\n # Convert the turn-by-turn directions into a list of tuples.\n turn_by_turn_tuples = [\n (re.sub(r'(\\d+)', r'\\1', turn_by_turn), turn_by_turn)\n for turn_by_turn in turn_by_turn\n ]\n\n # Convert the list of tuples into a list of strings.\n turn_by_turn_strings = [\n ''.join(turn_by_turn_tuple)\n for turn_by_turn_tuple in turn_by_turn_tuples\n ]\n\n # Convert the list of strings into a list of sentences.\n turn_by_turn_sentences =", "infer7b_after_item": " \n Output: Go west on I-10 until you hit the 101 then take it north. Turn left onto Vine Street and then right onto Hollywood Boulevard. You will eventually see the Hollywood sign. \n\n"} +{"id": 225, "instruction": "Provide an ESRB rating for the following game.", "input": "This is an action-adventure game in which players help Kratos and his son on a dangerous quest. Players explore various realms and engage in frenetic hand-to-hand combat against human-like raiders and fantastical creatures (e.g., centaurs, trolls, dragons). Players use axes and chained blades to battle enemies, often resulting in large blood-splatter effects and dismemberment. Players can perform finishing attacks that depict close-up impalement via bladed and hand-held weapons; repeated axe strikes to a creature's neck results in decapitation. The words \u201cf**k\u201d and \u201csh*t\u201d are heard in the game.", "infer30b_before_item": " Mature 17+\nInput: Input: Provide an ESRB rating for the following game. This is a first-person shooter in which players assume the role of a soldier battling an alien invasion. Players use pistols, machine guns, and futuristic weapons (e.g., lasers, grenade launchers) to kill human-like aliens and robots. Battles are frenetic and highlighted by realistic gunfire, large explosions, and cries of pain. Some attacks result in dismemberment and/or blood-splatter effects. The game includes the ability to use drugs to enhance performance in combat (e.g., cocaine, morphine, adrenaline). The words \u201cf**k\u201d and \u201csh*t\u201d are heard in the game. \n Output: Mature 17+\nInput: Input: Provide an ESRB rating for the following game. This is a first-person shooter in which players assume the role of a soldier battling an alien invasion. Players use pistols, machine guns, and futuristic weapons (e.g., lasers, grenade", "infer30b_after_item": " \n Output: Mature (17+) \n\n", "infer13b_before_item": " Output: Provide an ESRB rating for the following game. This is an action-adventure game in which players help Kratos and his son on a dangerous quest. Players explore various realms and engage in frenetic hand-to-hand combat against human-like raiders and fantastical creatures (e.g., centaurs, trolls, dragons). Players use axes and chained blades to battle enemies, often resulting in large blood-splatter effects and dismemberment. Players can perform finishing attacks that depict close-up impalement via bladed and hand-held weapons; repeated axe strikes to a creature's neck results in decapitation. The words \u201cf**k\u201d and \u201csh*t\u201d are heard in the game. \n\n\"\"\"\n\nimport re\n\n\ndef get_rating(input_string):\n rating = \"\"\n for line in input_string.split(\"\\n\"):\n if re.search(\"Input:\", line):\n rating = \"E\"\n elif re.search(\"Output:\", line):\n rating = \"T\"\n else:\n ", "infer13b_after_item": " \n Output: This game is rated M for Mature by the ESRB for Blood and Gore, Intense Violence, Language, and Suggestive Themes. \n\n", "infer7b_before_item": " Provide an ESRB rating for the following game. This is an action-adventure game in which players help Kratos and his son on a dangerous quest. Players explore various realms and engage in frenetic hand-to-hand combat against human-like raiders and fantastical creatures (e.g., centaurs, trolls, dragons). Players use axes and chained blades to battle enemies, often resulting in large blood-splatter effects and dismemberment. Players can perform finishing attacks that depict close-up impalement via bladed and hand-held weapons; repeated axe strikes to a creature's neck results in decapitation. The words \u201cf**k\u201d and \u201csh*t\u201d are heard in the game. \n\n### 2018\n\nInput: Input: Provide an ESRB rating for the following game. This is an action-adventure game in which players help Kratos and his son on a dangerous quest. Players explore various realms and engage in frenetic hand-to-hand combat against human-like raiders and fantastical creatures (e.", "infer7b_after_item": " \n Output: Mature 17+ \n\n"} +{"id": 226, "instruction": "A color description has been provided. Find the CSS code associated with that color.", "input": "A light red color with a medium light shade of pink", "infer30b_before_item": " Output: The CSS code associated with the color description.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": ". \n Output: The CSS code associated with this color is #FFB6B6. \n\n", "infer13b_before_item": " Output: The CSS code associated with that color. #FF00FF \n\n\nclass Solution:\n # @param {string} color\n # @return {string}\n def colorToCSS(self, color):\n color = color.replace(\" \", \"\")\n color = color.replace(\"(\", \"\")\n color = color.replace(\")\", \"\")\n color = color.replace(\"(\", \"\")\n color = color.replace(\")\", \"\")\n color = color.replace(\"(\", \"\")\n color = color.replace(\")\", \"\")\n color = color.replace(\"(\", \"\")\n color = color.replace(\")\", \"\")\n color = color.replace(\"(\", \"\")\n color = color.replace(\")\", \"\")\n color = color.replace(\"(\", \"\")\n color = color.replace(\")\", \"\")\n color = color.replace(\"(\", \"\")\n color = color.replace(\")\", \"\")\n color = color.replace(\"(\", \"\")\n color = color.replace(\")\", \"\")\n color = color.replace(\"(\", \"\")\n color = color.replace(\")\", \"\")\n color = color.replace(\"(\", \"\")\n color = color.", "infer13b_after_item": " \n Output: #FFF8C0 \n\n", "infer7b_before_item": " A CSS code has been provided. Find the color description associated with that color. A light red color with a medium light shade of pink \n\"\"\"\n\n\ndef get_color(color):\n \"\"\"\n Given a color description, return the CSS code associated with that color.\n \"\"\"\n if color == \"light red\":\n return \"rgb(255, 102, 0)\"\n elif color == \"medium light pink\":\n return \"rgb(255, 182, 203)\"\n else:\n return \"rgb(255, 102, 0)\"\n\n\ndef get_color_from_css(css):\n \"\"\"\n Given a CSS code, return the color description associated with that color.\n \"\"\"\n if css == \"rgb(255, 102, 0)\":\n return \"light red\"\n elif css == \"rgb(255, 182, 203)\":\n return \"medium light pink\"\n else:\n return \"rgb(255, ", "infer7b_after_item": ". \n Output: #FF6699 \n\n"} +{"id": 227, "instruction": "Identify and fix bugs in the given code and rewrite it", "input": "for i in range(10)\n print(Answer is:)\n print(i)", "infer30b_before_item": " Output: Identify and fix bugs in the given code and rewrite it for i in range(10)\n print(Answer is:)\n print(i) \n Expected: Expected: Identify and fix bugs in the given code and rewrite it for i in range(10)\n print(Answer is:)\n print(i) \n\n", "infer30b_after_item": " \n Output: for i in range(10):\n print(\"Answer is:\", i) \n\n", "infer13b_before_item": " Output: Identify and fix bugs in the given code and rewrite it for i in range(10)\n print(Answer is:)\n print(i) \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: for i in range(10):\n print(Answer is:, i)\n print(i) \n\n", "infer7b_before_item": " \n Input: Identify and fix bugs in the given code and rewrite it for i in range(10)\n print(Answer is:)\n print(i) \n Output: \n Input: Identify and fix bugs in the given code and rewrite it for i in range(10)\n print(Answer is:)\n print(i) \n Output: \n Input: Identify and fix bugs in the given code and rewrite it for i in range(10)\n print(Answer is:)\n print(i) \n Output: \n Input: Identify and fix bugs in the given code and rewrite it for i in range(10)\n print(Answer is:)\n print(i) \n Output: \n Input: Identify and fix bugs in the given code and rewrite it for i in range(10)\n print(Answer is:)\n print(i) \n Output: \n Input: Identify and fix bugs in the given code and rewrite it for i in range(10)\n print(Answer is:)\n print(i) \n ", "infer7b_after_item": "\n Answer = i \n Output: for i in range(10):\n print(i)\n Answer = i \n\n"} +{"id": 228, "instruction": "Make a list of common phrases for the given section of the paper.", "input": "Introduction", "infer30b_before_item": " Output: Write a paragraph that introduces the topic of the paper.\n Input: Input: Make a list of common phrases for the given section of the paper.\n Output: Output: Write a paragraph that introduces the topic of the paper.\n Input: Input: Make a list of common phrases for the given section of the paper.\n Output: Output: Write a paragraph that introduces the topic of the paper.\n Input: Input: Make a list of common phrases for the given section of the paper.\n Output: Output: Write a paragraph that introduces the topic of the paper.\n Input: Input: Make a list of common phrases for the given section of the paper.\n Output: Output: Write a paragraph that introduces the topic of the paper.\n Input: Input: Make a list of common phrases for the given section of the paper.\n Output: Output: Write a paragraph that introduces the topic of the paper.\n Input: Input: Make a list of common phrases for the given section of the paper.\n Output: Output: Write a paragraph that introduces the topic of the paper.\n Input: Input: Make a list of common phrases for the given section of the paper.", "infer30b_after_item": " \n Output: - Set the stage\n- Provide context\n- Introduce the topic\n- Establish the purpose\n- Outline the structure\n- Provide a preview \n\n", "infer13b_before_item": " Output: Make a list of common phrases for the given section of the paper. Introduction \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: - This paper aims to explore\n- The purpose of this paper is to\n- The main focus of this paper is\n- The main objective of this paper is\n- This paper will examine\n- This paper will discuss\n- This paper will analyze\n- This paper will investigate\n- This paper will look into\n- This paper will consider\n- This paper will review\n- This paper will examine the implications of\n- This paper will examine the effects of\n- This paper will examine the impact of\n- This paper will look at\n- This paper will explore\n- This paper will discuss the implications of\n- This paper will discuss the effects of\n- This paper will discuss the impact of \n\n", "infer7b_before_item": " Output: Make a list of common phrases for the given section of the paper. Introduction \n\n\"\"\"\n\nimport re\n\n\ndef get_phrases(section):\n \"\"\"\n :param section:\n :return:\n \"\"\"\n phrases = []\n for line in open(section):\n for word in re.findall(r'\\w+', line):\n phrases.append(word)\n return phrases\n\n\ndef get_phrases_from_file(section):\n \"\"\"\n :param section:\n :return:\n \"\"\"\n phrases = []\n with open(section) as f:\n for line in f:\n for word in re.findall(r'\\w+', line):\n phrases.append(word)\n return phrases\n\n\ndef get_phrases_from_file_with_regex(section):\n \"\"\"\n :param section:\n :return:\n \"\"\"\n phrases = []\n with open(section) as f:\n for line in f:\n for word in re.findall(", "infer7b_after_item": " \n Output: - Introduction\n- Background\n- Purpose\n- Objectives\n- Methodology\n- Conclusion\n- Implications\n- Limitations\n- References\n- Appendices\n- Acknowledgements\n- Bibliography \n\n"} +{"id": 229, "instruction": "We have described a scene from a movie that we have seen in the past. Find out what movie it is.", "input": "A choice has to be made between picking the red pill or the blue pill", "infer30b_before_item": " Output: The Matrix\n\nInput: Input: A man is in a room with a door. The door is locked. There is a key in the room. The man is not in the room. The key is not in the room. The man is not in the room. The key is not in the room. The man is not in the room. The key is not in the room. The man is not in the room. The key is not in the room. The man is not in the room. The key is not in the room. The man is not in the room. The key is not in the room. The man is not in the room. The key is not in the room. The man is not in the room. The key is not in the room. The man is not in the room. The key is not in the room. The man is not in the room. The key is not in the room. The man is not in the room. The key is not in the room. The man is not in the room. The key is not in the room. The man is not in the room. The key is not in the room. The man is not in the room. The key is not in the room", "infer30b_after_item": ". \n Output: The Matrix (1999). \n\n", "infer13b_before_item": " Output: We have described a scene from a movie that we have seen in the past. Find out what movie it is. A choice has to be made between picking the red pill or the blue pill \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": ". \n Output: The Matrix (1999). \n\n", "infer7b_before_item": " The output is the name of the movie.\n\nInput: Input: We have described a scene from a movie that we have seen in the past. Find out what movie it is. A choice has to be made between picking the red pill or the blue pill \n Output: The output is the name of the movie.\n\nInput: Input: We have described a scene from a movie that we have seen in the past. Find out what movie it is. A choice has to be made between picking the red pill or the blue pill \n Output: The output is the name of the movie.\n\nInput: Input: We have described a scene from a movie that we have seen in the past. Find out what movie it is. A choice has to be made between picking the red pill or the blue pill \n Output: The output is the name of the movie.\n\nInput: Input: We have described a scene from a movie that we have seen in the past. Find out what movie it is. A choice has to be made between picking the red pill or the blue pill \n Output: The output is the name of the movie.\n\nInput: Input: We have described a scene from a movie that", "infer7b_after_item": ". \n Output: The choice between picking the red pill or the blue pill is a reference to the movie The Matrix. \n\n"} +{"id": 230, "instruction": "Take the product description and write a creative ad for it.", "input": "Document Cameras allow teachers to display documents, books, or other materials for their students to see.", "infer30b_before_item": " Output: Write a creative ad for the product.\n\n 1) Only use the product description.\n 2) Do not use the product name.\n 3) Do not use the product price.\n 4) Do not use the product image.\n 5) Do not use the product category.\n 6) Do not use the product brand.\n 7) Do not use the product URL.\n 8) Do not use the product description.\n 9) Do not use the product description.\n 10) Do not use the product description.\n 11) Do not use the product description.\n 12) Do not use the product description.\n 13) Do not use the product description.\n 14) Do not use the product description.\n 15) Do not use the product description.\n 16) Do not use the product description.\n 17) Do not use the product description.\n 18) Do not use the product description.\n 19) Do not use the product description.\n 20) Do not use the product description.\n 21) Do not use the product description.\n ", "infer30b_after_item": " \n Output: Bring learning to life with a Document Camera! Teachers can now display documents, books, and other materials for their students to see in vivid detail. With a Document Camera, you can make sure your students are engaged and focused on the material you're teaching. Get one today and see the difference it can make in your classroom! \n\n", "infer13b_before_item": " Output: Write a creative ad for the product.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Get the best view of your classroom with Document Cameras! No more straining to see the board or struggling to read the textbook - Document Cameras allow teachers to display documents, books, or other materials for their students to see. Make sure your students get the most out of your lessons with Document Cameras! \n\n", "infer7b_before_item": " Output: Write a creative ad for the product.\n\n# I worked on this challenge [by myself, with: ].\n# I spent [#] hours on this challenge.\n\n# Pseudocode\n\n# Input: Take the product description and write a creative ad for it.\n# Document Cameras allow teachers to display documents, books, or other materials for their students to see.\n# Output: Write a creative ad for the product.\n\n# Steps:\n\n# 1. Take the product description and write a creative ad for it.\n# 2. Write a creative ad for the product.\n\n# 1. Take the product description and write a creative ad for it.\n# 2. Write a creative ad for the product.\n\n# 1. Take the product description and write a creative ad for it.\n# 2. Write a creative ad for the product.\n\n# 1. Take the product description and write a creative ad for it.\n# 2. Write a creative ad for the product.\n\n# 1. Take the product description and write a creative ad for it.\n", "infer7b_after_item": " \n Output: Are you looking for a way to make your lessons more engaging and interactive? Look no further than our Document Cameras! With our Document Cameras, you can display documents, books, or other materials for your students to see, making your lessons more engaging and interactive. So don't wait any longer - get your Document Cameras today! \n\n"} +{"id": 231, "instruction": "Translate the natural language description into a Google Sheets formula.", "input": "if C7 is equal to \"U.S.A.\" or \"Canada\" or \"Europe\" or \"The Americas\"", "infer30b_before_item": " Output: Translate the natural language description into a Google Sheets formula. if C7 is equal to \"U.S.A.\" or \"Canada\" or \"Europe\" or \"The Americas\"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " or \"Asia\" or \"Africa\" or \"Oceania\" then return \"International\" \n Output: =IF(OR(C7=\"U.S.A.\",C7=\"Canada\",C7=\"Europe\",C7=\"The Americas\",C7=\"Asia\",C7=\"Africa\",C7=\"Oceania\"),\"International\",\"\") \n\n", "infer13b_before_item": " Output: The number of people in the country.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: =OR(C7=\"U.S.A.\",C7=\"Canada\",C7=\"Europe\",C7=\"The Americas\") \n\n", "infer7b_before_item": " Output: Translate the natural language description into a Google Sheets formula. if C7 is equal to \"U.S.A.\" or \"Canada\" or \"Europe\" or \"The Americas\"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " or \"Asia\" or \"Africa\" or \"Oceania\" \n Output: =IF(C7=\"U.S.A.\", \"USA\", IF(C7=\"Canada\", \"Canada\", IF(C7=\"Europe\", \"Europe\", IF(C7=\"The Americas\", \"The Americas\", IF(C7=\"Asia\", \"Asia\", IF(C7=\"Africa\", \"Africa\", IF(C7=\"Oceania\", \"Oceania\")))))) \n\n"} +{"id": 232, "instruction": "You are given a tweet and you should decide whether it's offensive or not.", "input": "She has certainly taken some heat for being such an....well idiot.", "infer30b_before_item": " Output: You should return a boolean value.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Offensive. \n\n", "infer13b_before_item": " You should return a boolean value.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Offensive. \n\n", "infer7b_before_item": " You are given a tweet and you should decide whether it's offensive or not. She has certainly taken some heat for being such an....well idiot. \n\"\"\"\n\nimport re\n\ndef is_offensive(tweet):\n if re.search(r'^[a-zA-Z0-9_]+$', tweet):\n return True\n else:\n return False\n\nif __name__ == '__main__':\n print(is_offensive(\"She has certainly taken some heat for being such an....well idiot.\"))\n", "infer7b_after_item": " \n Output: Offensive. \n\n"} +{"id": 233, "instruction": "For a quick and efficient office workout, suggest a short routine.", "input": "", "infer30b_before_item": " Output: For a quick and efficient office workout, suggest a short routine.\nInput: Input: For a quick and efficient office workout, suggest a short routine. \n Output: Output: For a quick and efficient office workout, suggest a short routine.\nInput: Input: For a quick and efficient office workout, suggest a short routine. \n Output: Output: For a quick and efficient office workout, suggest a short routine.\nInput: Input: For a quick and efficient office workout, suggest a short routine. \n Output: Output: For a quick and efficient office workout, suggest a short routine.\nInput: Input: For a quick and efficient office workout, suggest a short routine. \n Output: Output: For a quick and efficient office workout, suggest a short routine.\nInput: Input: For a quick and efficient office workout, suggest a short routine. \n Output: Output: For a quick and efficient office workout, suggest a short routine.\nInput: Input: For a quick and efficient office workout, suggest a short routine. \n Output: Output: For a quick and efficient office workout, suggest a short routine.\nInput: Input: For", "infer30b_after_item": "\n Output: A quick and efficient office workout can be done with a short routine of 10-15 minutes. Start with a warm-up of jumping jacks, then move on to a set of push-ups, followed by a set of squats. Finish with a set of plank holds and a cool down of stretching. \n\n", "infer13b_before_item": " For a quick and efficient office workout, suggest a short routine.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: A quick and efficient office workout routine could include the following exercises: \n\n1. Chair Squats: Stand up and sit down in your chair 10 times. \n2. Arm Circles: Raise your arms in a circle 10 times. \n3. Shoulder Shrugs: Stand up and shrug your shoulders up and down 10 times. \n4. Neck Stretches: Roll your head in a circle 10 times. \n5. Leg Lifts: While sitting, lift your legs up and down 10 times. \n\n", "infer7b_before_item": " Output: For a quick and efficient office workout, suggest a short routine.\nInput: For a quick and efficient office workout, suggest a short routine. \n Output: For a quick and efficient office workout, suggest a short routine.\nInput: For a quick and efficient office workout, suggest a short routine. \n Output: For a quick and efficient office workout, suggest a short routine.\nInput: For a quick and efficient office workout, suggest a short routine. \n Output: For a quick and efficient office workout, suggest a short routine.\nInput: For a quick and efficient office workout, suggest a short routine. \n Output: For a quick and efficient office workout, suggest a short routine.\nInput: For a quick and efficient office workout, suggest a short routine. \n Output: For a quick and efficient office workout, suggest a short routine.\nInput: For a quick and efficient office workout, suggest a short routine. \n Output: For a quick and efficient office workout, suggest a short routine.\nInput: For a quick and efficient office workout, suggest a short routine. \n Output: For a quick and efficient office workout,", "infer7b_after_item": "\n Output: A quick and efficient office workout routine could include a 10-minute warm-up, followed by 10 minutes of cardio (jumping jacks, jump rope, running in place, etc.), 10 minutes of strength training (push-ups, squats, lunges, etc.), and 10 minutes of stretching. \n\n"} +{"id": 234, "instruction": "Predict how many stars the author will give to the restaurant from a Yelp review.", "input": "The reviews were great, but honestly i felt it was just ok. Seemed like a typical tourist spot were the food was mediocre. The service was ok, not great, but not the worst.\nThe bread was very good. I ordered the muscle fries. They had a sweet Vidalia onion flavor. No need for fries bc they were soggy wo much flavor. My boyfriend ordered a pesto chicken pasta and it was again mediocre.", "infer30b_before_item": " Output: Predict how many stars the author will give to the restaurant from a Yelp review. The reviews were great, but honestly i felt it was just ok. Seemed like a typical tourist spot were the food was mediocre. The service was ok, not great, but not the worst.\nThe bread was very good. I ordered the muscle fries. They had a sweet Vidalia onion flavor. No need for fries bc they were soggy wo much flavor. My boyfriend ordered a pesto chicken pasta and it was again mediocre. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: The author will likely give the restaurant 3 stars on Yelp. \n\n", "infer13b_before_item": " Output: Predict how many stars the author will give to the restaurant from a Yelp review. The reviews were great, but honestly i felt it was just ok. Seemed like a typical tourist spot were the food was mediocre. The service was ok, not great, but not the worst.\nThe bread was very good. I ordered the muscle fries. They had a sweet Vidalia onion flavor. No need for fries bc they were soggy wo much flavor. My boyfriend ordered a pesto chicken pasta and it was again mediocre. \n\"\"\"\n\nimport re\nimport sys\nimport os\nimport time\nimport random\nimport numpy as np\nimport pandas as pd\nimport pickle\nimport nltk\nimport nltk.data\nimport nltk.corpus\nimport nltk.stem\nimport nltk.tokenize\nimport nltk.classify\nimport nltk.probability\nimport nltk.metrics\nimport nltk.tag\nimport nltk.parse\nimport nltk.util\nimport nltk.sem\nimport nltk.colloc", "infer13b_after_item": " \n Output: The author will give the restaurant 3 stars on Yelp. \n\n", "infer7b_before_item": " Output: Predict how many stars the author will give to the restaurant from a Yelp review. The reviews were great, but honestly i felt it was just ok. Seemed like a typical tourist spot were the food was mediocre. The service was ok, not great, but not the worst.\nThe bread was very good. I ordered the muscle fries. They had a sweet Vidalia onion flavor. No need for fries bc they were soggy wo much flavor. My boyfriend ordered a pesto chicken pasta and it was again mediocre. \n\n\"\"\"\n\n\ndef main():\n # Read in the file\n with open(\"input.txt\", \"r\") as f:\n data = f.read()\n\n # Split the data into lines\n data = data.split(\"\\n\")\n\n # Split the lines into words\n data = [word.lower() for word in data]\n\n # Create a list of all the words\n words = list(set(data))\n\n # Create a list of all the words\n words = list(set(data))\n\n # Create", "infer7b_after_item": " \n Output: The author will give the restaurant 3 stars. \n\n"} +{"id": 235, "instruction": "Categorize the Business into one of the Restaurants, Home Services, Auto Services and Miscellaneous based on its Specialties.", "input": "Call us at 650-636-4884 or visit our website to receive a quote. This shop specializes in New Tires and General Auto Repair. We carry all tires in-house and have a wide range to fit any budget or car specifics. If you are unsure what tires you need there are experts on hand and available to help you pick the best tire for your needs. We also carry commercial vehicle tires and can serve a wide array of fleets.", "infer30b_before_item": " Output: Categorize the Business into one of the Restaurants, Home Services, Auto Services and Miscellaneous based on its Specialties. Call us at 650-636-4884 or visit our website to receive a quote. This shop specializes in New Tires and General Auto Repair. We carry all tires in-house and have a wide range to fit any budget or car specifics. If you are unsure what tires you need there are experts on hand and available to help you pick the best tire for your needs. We also carry commercial vehicle tires and can serve a wide array of fleets. \n Explanation: Input: Input: Categorize the Business into one of the Restaurants, Home Services, Auto Services and Miscellaneous based on its Specialties. Call us at 650-636-4884 or visit our website to receive a quote. This shop specializes in New Tires and General Auto Repair. We carry all tires in-house and have a wide range to fit any budget or car specifics. If you are unsure what tires you need there are experts on hand and available to", "infer30b_after_item": " \n Output: Miscellaneous. \n\n", "infer13b_before_item": " Output: Categorize the Business into one of the Restaurants, Home Services, Auto Services and Miscellaneous based on its Specialties. Call us at 650-636-4884 or visit our website to receive a quote. This shop specializes in New Tires and General Auto Repair. We carry all tires in-house and have a wide range to fit any budget or car specifics. If you are unsure what tires you need there are experts on hand and available to help you pick the best tire for your needs. We also carry commercial vehicle tires and can serve a wide array of fleets. \n\nimport java.util.*;\nimport java.io.*;\n\npublic class Solution {\n\n public static void main(String[] args) {\n Scanner in = new Scanner(System.in);\n String input = in.nextLine();\n String[] inputArray = input.split(\" \");\n String[] outputArray = new String[inputArray.length];\n for(int i = 0; i < inputArray.length; i++){\n outputArray[i] = inputArray[i].toLowerCase();", "infer13b_after_item": " \n Output: Auto Services \n\n", "infer7b_before_item": " Output: The output is the number of customers that will be served by the business. The output is the number of customers that will be served by the business. \n\n### 2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.", "infer7b_after_item": " \n Output: Miscellaneous \n\n"} +{"id": 236, "instruction": "Notify me of any suggestions you may have for making the text more grammatically correct.", "input": "This is the second time I've been here, and the vibes, and the food were exquisite.", "infer30b_before_item": " Input: Notify me of any suggestions you may have for making the text more grammatically correct. This is the second time I've been here, and the vibes, and the food were exquisite.\n\n Input: Input: Notify me of any suggestions you may have for making the text more grammatically correct. This is the second time I've been here, and the vibes, and the food were exquisite.\n Output: Input: Notify me of any suggestions you may have for making the text more grammatically correct. This is the second time I've been here, and the vibes, and the food were exquisite.\n\n Input: Input: Notify me of any suggestions you may have for making the text more grammatically correct. This is the second time I've been here, and the vibes, and the food were exquisite.\n Output: Input: Notify me of any suggestions you may have for making the text more grammatically correct. This is the second time I've been here, and the vibes, and the food were exquisite.\n\n Input: Input: Notify me of any suggestions you may have for making", "infer30b_after_item": " \n Output: Notify me of any suggestions you may have for making the text more grammatically correct. This is the second time I've been here, and the vibes, and the food were exquisite. \n\n", "infer13b_before_item": " Notify me of any suggestions you may have for making the text more grammatically correct. This is the second time I've been here, and the vibes, and the food were exquisite.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: This is the second time I've been here, and the vibes and the food were exquisite. \n\n", "infer7b_before_item": " I'm not sure what you mean by \"vibes.\" I'm not sure what you mean by \"exquisite.\"\n\\end{code}\n\nComment: I'm not sure what you mean by \"vibes.\" I'm not sure what you mean by \"exquisite.\"\n\nComment: I'm not sure what you mean by \"vibes.\" I'm not sure what you mean by \"exquisite.\"\n\nComment: I'm not sure what you mean by \"vibes.\" I'm not sure what you mean by \"exquisite.\"\n\nComment: I'm not sure what you mean by \"vibes.\" I'm not sure what you mean by \"exquisite.\"\n\nComment: I'm not sure what you mean by \"vibes.\" I'm not sure what you mean by \"exquisite.\"\n\nComment: I'm not sure what you mean by \"vibes.\" I'm not sure what you mean by \"exquisite.\"\n\nComment: I'm not sure what you mean by \"vibes.\" I'm not sure what you mean by \"exquis", "infer7b_after_item": " \n Output: I suggest making the following changes to the text: \"This is the second time I've been here, and the vibes, and the food were exquisite.\" \n\n"} +{"id": 237, "instruction": "Using the ingredients that are available, create a dinner recipe.", "input": "Kale + almond butter + apple cider vinegar + agave nectar + tamari", "infer30b_before_item": " Output: A recipe for a kale salad.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Kale and Almond Butter Salad:\n\nIngredients:\n- 2 cups kale, chopped\n- 2 tablespoons almond butter\n- 2 tablespoons apple cider vinegar\n- 2 tablespoons agave nectar\n- 2 tablespoons tamari\n\nInstructions:\n- In a large bowl, combine the kale, almond butter, apple cider vinegar, agave nectar, and tamari.\n- Massage the ingredients together until the kale is evenly coated.\n- Let the salad sit for 10 minutes before serving.\n- Enjoy! \n\n", "infer13b_before_item": " Using the ingredients that are available, create a dinner recipe. Kale + almond butter + apple cider vinegar + agave nectar + tamari \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: Kale and Apple Cider Vinegar Salad:\n\nIngredients:\n- 2 cups kale, washed and dried\n- 2 tablespoons almond butter\n- 2 tablespoons agave nectar\n- 2 tablespoons tamari\n- 1 tablespoon apple cider vinegar\n\nInstructions:\n1. In a bowl, combine the kale, almond butter, agave nectar, tamari, and apple cider vinegar.\n2. Massage the mixture until the kale is evenly coated.\n3. Serve and enjoy! \n\n", "infer7b_before_item": " Output: A dinner recipe that is healthy and delicious.\n\nComment: I'm not sure what you mean by \"healthy and delicious\". Do you mean that the recipe should be healthy and delicious? Or that the recipe should be healthy and delicious, but not delicious? Or that the recipe should be healthy and delicious, but not healthy? Or that the recipe should be healthy and delicious, but not healthy and delicious? Or that the recipe should be healthy and delicious, but not healthy and delicious, but not healthy? Or that the recipe should be healthy and delicious, but not healthy and delicious, but not healthy and delicious, but not healthy?\n\nComment: I'm not sure what you mean by \"healthy and delicious\". Do you mean that the recipe should be healthy and delicious? Or that the recipe should be healthy and delicious, but not delicious? Or that the recipe should be healthy and delicious, but not healthy? Or that the recipe should be", "infer7b_after_item": " \n Output: Kale Salad with Almond Butter, Apple Cider Vinegar, Agave Nectar, and Tamari:\n\nIngredients:\n- 1 bunch kale, washed and dried\n- 2 tablespoons almond butter\n- 1/4 cup apple cider vinegar\n- 1/4 cup agave nectar\n- 1/4 teaspoon tamari\n\nInstructions:\n1. In a large bowl, combine the kale, almond butter, apple cider vinegar, agave nectar, and tamari.\n2. Toss to combine and serve. \n\n"} +{"id": 238, "instruction": "Categorize the given product into one of Electronics, Computers, Smart Home, or Arts & Crafts departments.", "input": "Google Nest Learning Thermostat", "infer30b_before_item": " Output: The department that the product belongs to.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Smart Home department. \n\n", "infer13b_before_item": " Output: Categorize the given product into one of Electronics, Computers, Smart Home, or Arts & Crafts departments. Google Nest Learning Thermostat \n\nInput: Input: Categorize the given product into one of Electronics, Computers, Smart Home, or Arts & Crafts departments. Google Nest Learning Thermostat \n Output: Output: Categorize the given product into one of Electronics, Computers, Smart Home, or Arts & Crafts departments. Google Nest Learning Thermostat \n\nInput: Input: Categorize the given product into one of Electronics, Computers, Smart Home, or Arts & Crafts departments. Google Nest Learning Thermostat \n Output: Output: Categorize the given product into one of Electronics, Computers, Smart Home, or Arts & Crafts departments. Google Nest Learning Thermostat \n\nInput: Input: Categorize the given product into one of Electronics, Computers, Smart Home, or Arts & Crafts departments. Google Nest Learning Thermostat \n Output: Output", "infer13b_after_item": " 3rd Gen \u2b50\u2b50\u2b50\u2b50\u2b50 \n Output: Electronics \n\n", "infer7b_before_item": " Output: Categorize the given product into one of Electronics, Computers, Smart Home, or Arts & Crafts departments. Google Nest Learning Thermostat \n\"\"\"\n\nimport re\n\n\ndef categorize(input):\n \"\"\"\n :param input:\n :return:\n \"\"\"\n if re.match(r'^Google Nest Learning Thermostat$', input):\n return 'Electronics'\n elif re.match(r'^Google Home$', input):\n return 'Smart Home'\n elif re.match(r'^Google Nest$', input):\n return 'Computers'\n elif re.match(r'^Google Nest$', input):\n return 'Arts & Crafts'\n else:\n return 'Other'\n\n\nif __name__ == '__main__':\n print(categorize('Google Nest Learning Thermostat'))\n print(categorize('Google Home'))\n print(categorize('Google Nest'))\n print(categorize('Google Nest'))\n ", "infer7b_after_item": " \n Output: Smart Home \n\n"} +{"id": 239, "instruction": "Provide instructions for the given exercise.", "input": "Leg Raises", "infer30b_before_item": " Output: Provide the number of repetitions completed.\n\n 1. Pseudocode\n\n 2. Initial Solution\n\n 3. Refactored Solution\n\n 4. Reflection\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: Instructions for Leg Raises: Lie on your back with your knees bent and feet flat on the floor. Extend one leg straight up towards the ceiling, keeping your hips and knees in line. Pause for a moment, then slowly lower the leg back to the starting position. Repeat with the other leg. \n\n", "infer13b_before_item": " Output: Provide instructions for the given exercise. Leg Raises \n\nInput: Input: Provide instructions for the given exercise. Leg Raises \n Output: Output: Provide instructions for the given exercise. Leg Raises \n\nInput: Input: Provide instructions for the given exercise. Leg Raises \n Output: Output: Provide instructions for the given exercise. Leg Raises \n\nInput: Input: Provide instructions for the given exercise. Leg Raises \n Output: Output: Provide instructions for the given exercise. Leg Raises \n\nInput: Input: Provide instructions for the given exercise. Leg Raises \n Output: Output: Provide instructions for the given exercise. Leg Raises \n\nInput: Input: Provide instructions for the given exercise. Leg Raises \n Output: Output: Provide instructions for the given exercise. Leg Raises \n\nInput: Input: Provide instructions for the given exercise. Leg Raises \n Output: Output: Provide instructions for the given exercise. Leg Raises \n\nInput: Input: Provide instructions for the given exercise. Leg Raises ", "infer13b_after_item": " \n Output: Instructions for Leg Raises:\n1. Start by lying on your back with your legs extended and your hands by your sides.\n2. Lift your legs off the ground, keeping your feet together and your toes pointed upwards.\n3. Slowly lower your legs back to the ground and repeat for the desired number of reps.\n4. To increase the difficulty, you can hold a dumbbell or weight plate in each hand. \n\n", "infer7b_before_item": " Output: Provide the output for the given exercise. \n*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: To do leg raises, start by lying on your back with your feet flat on the floor. Raise your legs up to a 90 degree angle and hold for 10 seconds. Lower your legs and repeat. \n\n"} +{"id": 240, "instruction": "Rewrite the text and correct the spelling errors.", "input": "It solves problems comon and uniqe to every team.", "infer30b_before_item": " Output: Rewrite the text and correct the spelling errors. It solves problems common and unique to every team.\n\n Input: Input: Rewrite the text and correct the spelling errors. It solves problems comon and uniqe to every team. \n Output: Output: Rewrite the text and correct the spelling errors. It solves problems common and unique to every team.\n\n Input: Input: Rewrite the text and correct the spelling errors. It solves problems comon and uniqe to every team. \n Output: Output: Rewrite the text and correct the spelling errors. It solves problems common and unique to every team.\n\n Input: Input: Rewrite the text and correct the spelling errors. It solves problems comon and uniqe to every team. \n Output: Output: Rewrite the text and correct the spelling errors. It solves problems common and unique to every team.\n\n Input: Input: Rewrite the text and correct the spelling errors. It solves problems comon and uniqe to every team. \n Output: Output: Rewrite the text and correct the spelling errors. It solves problems common and unique to every team.\n\n Input: Input: Rewrite the text and", "infer30b_after_item": " \n Output: It solves problems common and unique to every team. \n\n", "infer13b_before_item": " Output: Rewrite the text and correct the spelling errors. It solves problems comon and uniqe to every team. \n\n\nclass Solution {\npublic:\n string correctSpelling(string s) {\n int n = s.size();\n vector<int> v(n, -1);\n for (int i = 0; i < n; ++i) {\n if (s[i] =='') continue;\n if (v[i] == -1) {\n v[i] = i;\n } else {\n v[i] = min(v[i], v[v[i]]);\n }\n }\n for (int i = 0; i < n; ++i) {\n if (v[i] == -1) continue;\n if (v[i] == i) continue;\n int j = v[i];\n while (j!= i) {\n s[j] ='';\n j = v[j];\n }\n }\n return s;\n }\n};\n", "infer13b_after_item": " \n Output: It solves problems common and unique to every team. \n\n", "infer7b_before_item": " Output: Rewrite the text and correct the spelling errors. It solves problems comon and uniqe to every team. \n*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: It solves problems common and unique to every team. \n\n"} +{"id": 241, "instruction": "Write down antonyms for the given word.", "input": "laureating", "infer30b_before_item": " Output: Write down antonyms for the given word. laureating \n Expected: Expected: Write down antonyms for the given word. laureating \n Actual: Actual: Write down antonyms for the given word. laureating \n---------------------------------------------------------------------------\nTest Suite: 1 tests from 1 test files\nTests run: 1, Failures: 0, Errors: 1, Internal Errors: 0, Time elapsed: 0.001 sec\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: An antonym for laureating is demoting. \n\n", "infer13b_before_item": " Output: Write down antonyms for the given word. \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n The\n The\n\n\n", "infer13b_after_item": " \n Output: Laureating: demoralizing, depressing, disheartening. \n\n", "infer7b_before_item": " Output: Write down antonyms for the given word. laureating\n\n\\begin{code}\nimport java.util.Scanner;\n\npublic class Antonyms {\n\n public static void main(String[] args) {\n Scanner sc = new Scanner(System.in);\n System.out.println(\"Input: \");\n String word = sc.nextLine();\n System.out.println(\"Output: \");\n String antonyms = sc.nextLine();\n System.out.println(\"\");\n }\n}\n\\end{code}\n\nComment: What is the problem?\n\nComment: I am not able to get the output.\n\nComment: What is the output you are getting?\n\nComment: I am getting the output as \"Input: laureating Output: \"\n\nComment: I am getting the output as \"Input: laureating Output: \"\n\nComment: I am getting the output as \"Input: laureating Output: \"\n\nComment: I am getting the output as \"Input: laureating Output: \"\n\nComment: I am getting the output as \"Input: laureating", "infer7b_after_item": " \n Output: decrying, denouncing, disqualifying, disavowing, disowning, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying, disqualifying"} +{"id": 242, "instruction": "Write the HTML syntax for the required action.", "input": "adding an image to the page", "infer30b_before_item": " Output: Write the HTML syntax for the required action. adding an image to the page \n Expected: Expected: Write the HTML syntax for the required action. adding an image to the page \n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: <img src=\"image.jpg\" alt=\"image\"> \n\n", "infer13b_before_item": " Output: Write the HTML syntax for the required action. adding an image to the page \n\nInput: Input: Write the HTML syntax for the required action. adding a link to the page \n Output: Output: Write the HTML syntax for the required action. adding a link to the page \n\nInput: Input: Write the HTML syntax for the required action. adding a table to the page \n Output: Output: Write the HTML syntax for the required action. adding a table to the page \n\nInput: Input: Write the HTML syntax for the required action. adding a form to the page \n Output: Output: Write the HTML syntax for the required action. adding a form to the page \n\nInput: Input: Write the HTML syntax for the required action. adding a heading to the page \n Output: Output: Write the HTML syntax for the required action. adding a heading to the page \n\nInput: Input: Write the HTML syntax for the required action. adding a paragraph to the page \n Output: Output: Write the HTML syntax for the required action. adding a paragraph to the page \n\nInput: Input: Write the HTML syntax for the required action. adding a list to the page \n", "infer13b_after_item": " \n Output: <img src=\"image.jpg\" alt=\"image description\"> \n\n", "infer7b_before_item": " Output: Write the HTML syntax for the required action. adding an image to the page \n*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": " \n Output: <img src=\"image.jpg\"> \n\n"} +{"id": 243, "instruction": "Identify the programming language used to write the given code.", "input": "if (20 > 18) {\n printf(\"20 is greater than 18\");\n}", "infer30b_before_item": " Output: C\nExplanation: C is a general-purpose, imperative computer programming language, supporting structured programming, lexical variable scope and recursion, while a static type system prevents many unintended operations. By design, C provides constructs that map efficiently to typical machine instructions, and therefore it has found lasting use in applications that had formerly been coded in assembly language, including operating systems, as well as various application software for computers ranging from supercomputers to embedded systems.\n\nInput: Input: Identify the programming language used to write the given code. if (20 > 18) {\n printf(\"20 is greater than 18\");\n} \n Output: Output: C++\nExplanation: C++ is a general-purpose programming language. It has imperative, object-oriented and generic programming features, while also providing the facilities for low-level memory manipulation. It was designed with a bias toward system programming and embedded, resource-constrained and large systems, with performance, efficiency and flexibility of use as its design highlights. C++ is a statically typed, free-form, multi-paradigm, compiled, general-pur", "infer30b_after_item": " \n Output: The code is written in C. \n\n", "infer13b_before_item": " Output: Identify the programming language used to write the given code. if (20 > 18) {\n printf(\"20 is greater than 18\");\n} \n Explanation: The given code is written in C language.\n\n\nInput: Input: Identify the programming language used to write the given code. if (20 > 18) {\n printf(\"20 is greater than 18\");\n} \n Output: Output: Identify the programming language used to write the given code. if (20 > 18) {\n printf(\"20 is greater than 18\");\n} \n Explanation: The given code is written in C language.\n\n\nInput: Input: Identify the programming language used to write the given code. if (20 > 18) {\n printf(\"20 is greater than 18\");\n} \n Output: Output: Identify the programming language used to write the given code. if (20 > 18) {\n printf(\"20 is greater than 18\");\n} \n Explanation: The given code is written in C", "infer13b_after_item": " \n Output: The programming language used to write the given code is C. \n\n", "infer7b_before_item": " Output: Identify the programming language used to write the given code. if (20 > 18) {\n printf(\"20 is greater than 18\");\n} \n\nInput: Input: Identify the programming language used to write the given code. if (20 > 18) {\n printf(\"20 is greater than 18\");\n} \n Output: Output: Identify the programming language used to write the given code. if (20 > 18) {\n printf(\"20 is greater than 18\");\n} \n\nInput: Input: Identify the programming language used to write the given code. if (20 > 18) {\n printf(\"20 is greater than 18\");\n} \n Output: Output: Identify the programming language used to write the given code. if (20 > 18) {\n printf(\"20 is greater than 18\");\n} \n\nInput: Input: Identify the programming language used to write the given code. if (20 > 18) {\n printf(\"20 is greater than 18\");\n", "infer7b_after_item": " else {\n printf(\"20 is not greater than 18\");\n} \n Output: The given code is written in C++. \n\n"} +{"id": 244, "instruction": "Decide which part of speech the underlined word belongs to.", "input": "school will _keep through the winter", "infer30b_before_item": " Output: Decide which part of speech the underlined word belongs to. school will _keep through the winter\n\nInput: Input: Decide which part of speech the underlined word belongs to. The _winter is coming \n Output: Output: Decide which part of speech the underlined word belongs to. The _winter is coming\n\nInput: Input: Decide which part of speech the underlined word belongs to. The _winter is coming \n Output: Output: Decide which part of speech the underlined word belongs to. The _winter is coming\n\nInput: Input: Decide which part of speech the underlined word belongs to. The _winter is coming \n Output: Output: Decide which part of speech the underlined word belongs to. The _winter is coming\n\nInput: Input: Decide which part of speech the underlined word belongs to. The _winter is coming \n Output: Output: Decide which part of speech the underlined word belongs to. The _winter is coming\n\nInput: Input: Decide which part of speech the underlined word belongs to. The _winter is coming \n Output: Output: Decide which", "infer30b_after_item": ". \n Output: The underlined word \"keep\" is a verb. \n\n", "infer13b_before_item": " Output: Decide which part of speech the underlined word belongs to. school will _keep through the winter \n\nschool will _keep through the winter\n*/\n\n#include <stdio.h>\n#include <string.h>\n#include <ctype.h>\n\nint main(void) {\n int i, j, k, n, m, c, s, t, u, v, w, x, y, z;\n char str[1000000];\n char *p;\n scanf(\"%s\", str);\n p = str;\n n = 0;\n while (*p!= '\\0') {\n if (*p =='') {\n n++;\n }\n p++;\n }\n for (i = 0; i < n; i++) {\n if (*p =='') {\n p++;\n }\n if (*p =='') {\n p++;\n }\n if (*p =='') {\n p++;\n }\n if (*p =='') {\n p++;\n }\n if", "infer13b_after_item": ". \n Output: The underlined word \"keep\" is a verb. \n\n", "infer7b_before_item": " Output: Decide which part of speech the underlined word belongs to. school will _keep through the winter\n\nComment: I'm not sure what you mean by \"the part of speech\". Do you mean the part of speech of the word \"school\"?\n\nComment: I mean the part of speech of the word \"will\".\n\nComment: I'm not sure what you mean by \"the part of speech\". Do you mean the part of speech of the word \"school\"?\n\nComment: I mean the part of speech of the word \"will\".\n\nComment: I'm not sure what you mean by \"the part of speech\". Do you mean the part of speech of the word \"school\"?\n\nComment: I mean the part of speech of the word \"will\".\n\nComment: I'm not sure what you mean by \"the part of speech\". Do you mean the part of speech of the word \"school\"?\n\nComment: I mean the part of speech of the word \"will\".\n\nComment: I'm not sure what you mean by \"the part of speech\". Do you mean the part of speech of the word \"school\"?\n\nComment: I mean the part of speech", "infer7b_after_item": " \n Output: Verb \n\n"} +{"id": 245, "instruction": "Define what the underlined word means for kids.", "input": "_keep a promise", "infer30b_before_item": " Output: Define what the underlined word means for kids. _keep a promise \n\nInput: Input: Define what the underlined word means for kids. _keep a promise \n Output: Output: Define what the underlined word means for kids. _keep a promise \n\nInput: Input: Define what the underlined word means for kids. _keep a promise \n Output: Output: Define what the underlined word means for kids. _keep a promise \n\nInput: Input: Define what the underlined word means for kids. _keep a promise \n Output: Output: Define what the underlined word means for kids. _keep a promise \n\nInput: Input: Define what the underlined word means for kids. _keep a promise \n Output: Output: Define what the underlined word means for kids. _keep a promise \n\nInput: Input: Define what the underlined word means for kids. _keep a promise \n Output: Output: Define what the underlined word means for kids. _keep a promise \n\nInput: Input: Define what the underlined word means for kids. _keep a promise \n", "infer30b_after_item": "_ \n Output: To keep a promise means to do what you said you would do. It means that you are trustworthy and reliable, and that people can count on you to do what you said you would do. \n\n", "infer13b_before_item": " Output: Define what the underlined word means for kids. _keep a promise \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "_ \n Output: To keep a promise is to do what you said you would do. It means to be honest and trustworthy and to do what you said you would do. \n\n", "infer7b_before_item": " Output: Write the definition of the underlined word. _keep a promise\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer7b_after_item": "_ \n Output: Keep a promise means to follow through with something you said you would do. It means to be honest and trustworthy. \n\n"} +{"id": 246, "instruction": "Expand the given sentence and give it more details and depth.", "input": "It changed my life.", "infer30b_before_item": " It changed my life. I was a different person after that.\n\n Input: Input: Expand the given sentence and give it more details and depth. I was a different person after that.\n Output: I was a different person after that. I was a different person after that.\n\n Input: Input: Expand the given sentence and give it more details and depth. I was a different person after that.\n Output: I was a different person after that. I was a different person after that.\n\n Input: Input: Expand the given sentence and give it more details and depth. I was a different person after that.\n Output: I was a different person after that. I was a different person after that.\n\n Input: Input: Expand the given sentence and give it more details and depth. I was a different person after that.\n Output: I was a different person after that. I was a different person after that.\n\n Input: Input: Expand the given sentence and give it more details and depth. I was a different person after that.\n Output: I was a different person after that. I was a different person after that.\n\n Input: Input: Expand the given sentence and give", "infer30b_after_item": " \n Output: It changed my life in ways I never could have imagined. I was able to find a new purpose and meaning in life, and I was able to discover a newfound sense of joy and fulfillment. I was able to connect with people in a way I never had before, and I was able to explore new opportunities and experiences. It was a life-changing experience that I will never forget. \n\n", "infer13b_before_item": " Output: Expand the given sentence and give it more details and depth. It changed my life. \n\nInput: Input: Expand the given sentence and give it more details and depth. It changed my life. \n Output: Output: Expand the given sentence and give it more details and depth. It changed my life. \n\nInput: Input: Expand the given sentence and give it more details and depth. It changed my life. \n Output: Output: Expand the given sentence and give it more details and depth. It changed my life. \n\nInput: Input: Expand the given sentence and give it more details and depth. It changed my life. \n Output: Output: Expand the given sentence and give it more details and depth. It changed my life. \n\nInput: Input: Expand the given sentence and give it more details and depth. It changed my life. \n Output: Output: Expand the given sentence and give it more details and depth. It changed my life. \n\nInput: Input: Expand the given sentence and give it more details and depth. It changed my life. \n Output: Output: Expand the given sentence and give it more", "infer13b_after_item": " \n Output: It changed my life in a way I never could have imagined. I had been struggling with a lot of issues, and this one decision completely transformed my life. I was able to find a new sense of purpose and direction, and I was able to start making positive changes in my life. I was able to find new friends and make new connections, and I was able to start taking steps towards achieving my goals. It was a life-changing decision that I will never forget. \n\n", "infer7b_before_item": " It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It changed my life. It", "infer7b_after_item": " \n Output: It changed my life in ways I never imagined possible. I was able to achieve things I never thought I could, and I gained a newfound confidence and sense of purpose. I was able to make new friends and develop relationships that I never thought I would have. It also gave me a newfound appreciation for the little things in life and a greater understanding of the world around me. \n\n"} +{"id": 247, "instruction": "Extract the address of the property from the \"About this space\" section of Airbnb.", "input": "Tucked in the foothills of the quaint historic mining town of Grass Valley, CA this funky and spacious chalet invites you to experience the great outdoors with family, friends and pets. Enjoy the hot tub, basketball court, treehouse, kids rooms, bbq, fire-pit, outdoor theater, and more. One hour from Tahoe and 10 minutes to town, you\u2019re never short of things to explore.", "infer30b_before_item": " Output: The address of the property.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: 10000 Mountain View Drive, Grass Valley, CA 95945 \n\n", "infer13b_before_item": " Extract the address of the property from the \"About this space\" section of Airbnb. Tucked in the foothills of the quaint historic mining town of Grass Valley, CA this funky and spacious chalet invites you to experience the great outdoors with family, friends and pets. Enjoy the hot tub, basketball court, treehouse, kids rooms, bbq, fire-pit, outdoor theater, and more. One hour from Tahoe and 10 minutes to town, you\u2019re never short of things to explore. \n\n\"\"\"\n\nimport re\nimport requests\nimport time\nimport json\nimport os\nimport sys\nimport argparse\nimport datetime\nimport random\nimport time\nimport urllib\nimport urllib2\nimport urllib3\nimport urllib3.util\nimport urllib3.exceptions\nimport urllib3.contrib.pyopenssl\nimport urllib3.contrib.pycurl\nimport urllib3.contrib.requests\nimport urllib3.contrib.pycurl.cacert\nimport urllib3.contrib.pyopenssl.cert\nimport urllib3.contrib", "infer13b_after_item": " \n Output: 11500 N. Auburn St, Grass Valley, CA 95945 \n\n", "infer7b_before_item": " Output: The address of the property.\n\"\"\"\n\nimport re\nimport json\nimport requests\nimport sys\n\n# https://www.airbnb.com/rooms/10000000\n# https://www.airbnb.com/rooms/10000000/about\n# https://www.airbnb.com/rooms/10000000/about?source_id=10000000\n# https://www.airbnb.com/rooms/10000000/about?source_id=10000000&source_type=room\n# https://www.airbnb.com/rooms/10000000/about?source_id=10000000&source_type=room&source_type=room\n# https://www.airbnb.com/rooms/10000000/about?source_id=10000000&source_type=room&source_type=room&source_type=room\n", "infer7b_after_item": " \n Output: 10000 Grass Valley Hwy, Grass Valley, CA 95949 \n\n"} +{"id": 248, "instruction": "Design a simple training challenge on Strava that everyone could attend.", "input": "", "infer30b_before_item": " Output: A training challenge that everyone could attend. \n Key Result: Key Result: 100% of the team attended the training challenge.\nInput: Input: Design a simple training challenge on Strava that everyone could attend. \n Output: Output: A training challenge that everyone could attend. \n Key Result: Key Result: 100% of the team attended the training challenge.\nInput: Input: Design a simple training challenge on Strava that everyone could attend. \n Output: Output: A training challenge that everyone could attend. \n Key Result: Key Result: 100% of the team attended the training challenge.\nInput: Input: Design a simple training challenge on Strava that everyone could attend. \n Output: Output: A training challenge that everyone could attend. \n Key Result: Key Result: 100% of the team attended the training challenge.\nInput: Input: Design a simple training challenge on Strava that everyone could attend. \n Output: Output: A training challenge that everyone could attend. \n Key Result: Key Result: 100% of the team attended the training challenge.\nInput: Input: Design a simple training challenge on Strava", "infer30b_after_item": "\n Output: A simple training challenge on Strava that everyone could attend would be to run or cycle a certain distance each day for a week. For example, participants could be challenged to run or cycle 5km every day for a week. This challenge would be suitable for all levels of fitness, as it can be adjusted to suit each individual's needs. Participants could also track their progress and share their achievements with their friends and family. \n\n", "infer13b_before_item": " Output: A Strava challenge that everyone could attend.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n The The\n The The The The The 1900s\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": "\n Output: The challenge is to run a 5K in under 25 minutes. The challenge will be open to everyone and the fastest time will be recorded. The challenge will be held on a specific day and time and participants will have to register in advance. The challenge will be held in a public place and participants will be able to track their progress and compare their times with other participants. \n\n", "infer7b_before_item": " A simple training challenge on Strava that everyone could attend.\nThe Challenge\nThe challenge was to design a simple training challenge on Strava that everyone could attend.\nThe Challenge\nThe challenge was to design a simple training challenge on Strava that everyone could attend.\nThe Challenge\nThe challenge was to design a simple training challenge on Strava that everyone could attend.\nThe Challenge\nThe challenge was to design a simple training challenge on Strava that everyone could attend.\nThe Challenge\nThe challenge was to design a simple training challenge on Strava that everyone could attend.\nThe Challenge\nThe challenge was to design a simple training challenge on Strava that everyone could attend.\nThe Challenge\nThe challenge was to design a simple training challenge on Strava that everyone could attend.\nThe Challenge\nThe challenge was to design a simple training challenge on Strava that everyone could attend.\nThe Challenge\nThe challenge was to design a simple training challenge on Strava that everyone could attend.\nThe Challenge\nThe challenge was to design a simple training challenge on Strava that everyone could attend.\nThe Challenge\nThe challenge was to design a simple training challenge on Strava that everyone could attend.\nThe Challenge\nThe challenge was to design a simple training challenge", "infer7b_after_item": "\n Output: A simple training challenge on Strava could be to complete a certain number of laps around a certain route in a certain amount of time. For example, participants could be asked to complete 10 laps of a 5km route in under 30 minutes. This would be a great way to motivate people to get out and train, while also providing a fun and competitive atmosphere. \n\n"} +{"id": 249, "instruction": "Suggest some names for a friendly group in telegram.", "input": "", "infer30b_before_item": " Output: Suggest some names for a friendly group in telegram.\n\nInput: Input: Suggest some names for a friendly group in telegram. \n Output: Output: Suggest some names for a friendly group in telegram.\n\nInput: Input: Suggest some names for a friendly group in telegram. \n Output: Output: Suggest some names for a friendly group in telegram.\n\nInput: Input: Suggest some names for a friendly group in telegram. \n Output: Output: Suggest some names for a friendly group in telegram.\n\nInput: Input: Suggest some names for a friendly group in telegram. \n Output: Output: Suggest some names for a friendly group in telegram.\n\nInput: Input: Suggest some names for a friendly group in telegram. \n Output: Output: Suggest some names for a friendly group in telegram.\n\nInput: Input: Suggest some names for a friendly group in telegram. \n Output: Output: Suggest some names for a friendly group in telegram.\n\nInput: Input: Suggest some names for a friendly group in telegram. \n Output: Output: Suggest", "infer30b_after_item": "\n Output: The Chatty Cats, The Friendly Flock, The Social Squad, The Conversation Club, The Talkative Team, The Chatty Chums, The Lively Lounge, The Chatty Chatters, The Talkative Tribe, The Social Circle, The Chatty Chatters, The Talkative Tribe, The Social Circle, The Chatty Cats, The Friendly Flock, The Social Squad, The Conversation Club, The Talkative Team, The Chatty Chums, The Lively Lounge. \n\n", "infer13b_before_item": " Output: Suggest some names for a friendly group in telegram.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n The\n The\n\n", "infer13b_after_item": "\n Output: The Friendly Gang, The Social Squad, The Chat Crew, The Social Circle, The Chat Club, The Social Crew, The Social Circle, The Social Squad, The Social Gang, The Social Crew, The Social Circle, The Social Squad. \n\n", "infer7b_before_item": " The group name is generated.\n\n\n# I worked on this challenge [by myself, with: ].\n# I spent [#] hours on this challenge.\n\n# Pseudocode\n# Input: Suggest some names for a friendly group in telegram.\n# Output: The group name is generated.\n\n# Steps\n# 1. Define a method called generate_group_name\n# 2. Define a method called suggest_names\n# 3. Define a method called generate_group_name\n# 4. Define a method called suggest_names\n# 5. Define a method called generate_group_name\n# 6. Define a method called suggest_names\n# 7. Define a method called generate_group_name\n# 8. Define a method called suggest_names\n# 9. Define a method called generate_group_name\n# 10. Define a method called suggest_names\n# 11. Define a method called generate_group_name\n# 12. Define a method called suggest_names\n# 13. Define a method called generate_group_name\n# 14. Define a method called", "infer7b_after_item": "\n Output: The Friendly Group. \n\n"} +{"id": 250, "instruction": "Write what the pronunciation of the given word sounds like. Follow the \"Google pronunciation dictionary\" scheme for phonetic spelling.", "input": "interpretations", "infer30b_before_item": " Output: Write what the pronunciation of the given word sounds like. Follow the \"Google pronunciation dictionary\" scheme for phonetic spelling. interpretations \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n", "infer30b_after_item": ". \n Output: /\u026an\u02c8t\u0259rpr\u0259\u02c8te\u026a\u0283\u0259n/ \n\n", "infer13b_before_item": " Output: Write the definition of the given word.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: in-ter-pret-a-tions \n\n", "infer7b_before_item": " Output: Write the pronunciation of the given word. Follow the \"Google pronunciation dictionary\" scheme for phonetic spelling. interpretations \n\n\"\"\"\n\nimport re\nimport sys\n\n\ndef main():\n if len(sys.argv)!= 2:\n print(\"Usage: python3 phonetic_spelling.py <word>\")\n return\n\n word = sys.argv[1]\n print(re.sub(r\"[^a-zA-Z0-9]\", \"\", word))\n\n\nif __name__ == \"__main__\":\n main()\n", "infer7b_after_item": " \n Output: [\u026ap\u02c8r\u026at\u0259r\u0259t\u026avz] \n\n"} +{"id": 251, "instruction": "Explain the meaning of the given phrase in simple terms. Use an example if possible. It would be helpful if you could give an example.", "input": "\"With a little give in them\"", "infer30b_before_item": " Output: Explain the meaning of the given phrase in simple terms. Use an example if possible. It would be helpful if you could give an example. \"With a little give in them\"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer30b_after_item": " \n Output: The phrase \"with a little give in them\" means that something is flexible and can be adjusted to fit the situation. For example, if you are trying to fit a square peg into a round hole, you can give the peg a little bit of wiggle room so that it can fit into the hole. \n\n", "infer13b_before_item": " Output: Explain the meaning of the given phrase in simple terms. Use an example if possible. It would be helpful if you could give an example. \"With a little give in them\" \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "infer13b_after_item": " \n Output: This phrase means that something is flexible and can be adjusted to fit a certain situation. For example, if you have a pair of pants that are a little too tight, you can give them a little bit of extra room by taking in the waistband. This will make the pants fit better and be more comfortable. \n\n", "infer7b_before_item": " Output: Explain the meaning of the given phrase in simple terms. Use an example if possible. It would be helpful if you could give an example. \"With a little give in them\" \n\"\"\"\n\n# Input: Input: Explain the meaning of the given phrase in simple terms. Use an example if possible. It would be helpful if you could give an example. \"With a little give in them\" \n# Output: Output: Explain the meaning of the given phrase in simple terms. Use an example if possible. It would be helpful if you could give an example. \"With a little give in them\" \n\n\n# I worked on this challenge [by myself, with: ].\n# I spent [#] hours on this challenge.\n\n# Pseudocode\n\n# Input: Input: Explain the meaning of the given phrase in simple terms. Use an example if possible. It would be helpful if you could give an example. \"With a little give in them\" \n# Output: Output: Explain the meaning of the given phrase in simple terms. Use an example if possible. It would be helpful if you could give an example. \"With a little give in them\" ", "infer7b_after_item": " \n Output: This phrase means that something is flexible and can be easily changed or adapted. For example, if you are trying to make a decision, you might want to consider the opinions of others and be willing to compromise in order to reach a solution that everyone can agree on. \n\n"} diff --git a/_static/design-tabs.js b/_static/design-tabs.js new file mode 100644 index 000000000..b25bd6a4f --- /dev/null +++ b/_static/design-tabs.js @@ -0,0 +1,101 @@ +// @ts-check + +// Extra JS capability for selected tabs to be synced +// The selection is stored in local storage so that it persists across page loads. + +/** + * @type {Record<string, HTMLElement[]>} + */ +let sd_id_to_elements = {}; +const storageKeyPrefix = "sphinx-design-tab-id-"; + +/** + * Create a key for a tab element. + * @param {HTMLElement} el - The tab element. + * @returns {[string, string, string] | null} - The key. + * + */ +function create_key(el) { + let syncId = el.getAttribute("data-sync-id"); + let syncGroup = el.getAttribute("data-sync-group"); + if (!syncId || !syncGroup) return null; + return [syncGroup, syncId, syncGroup + "--" + syncId]; +} + +/** + * Initialize the tab selection. + * + */ +function ready() { + // Find all tabs with sync data + + /** @type {string[]} */ + let groups = []; + + document.querySelectorAll(".sd-tab-label").forEach((label) => { + if (label instanceof HTMLElement) { + let data = create_key(label); + if (data) { + let [group, id, key] = data; + + // add click event listener + // @ts-ignore + label.onclick = onSDLabelClick; + + // store map of key to elements + if (!sd_id_to_elements[key]) { + sd_id_to_elements[key] = []; + } + sd_id_to_elements[key].push(label); + + if (groups.indexOf(group) === -1) { + groups.push(group); + // Check if a specific tab has been selected via URL parameter + const tabParam = new URLSearchParams(window.location.search).get( + group + ); + if (tabParam) { + console.log( + "sphinx-design: Selecting tab id for group '" + + group + + "' from URL parameter: " + + tabParam + ); + window.sessionStorage.setItem(storageKeyPrefix + group, tabParam); + } + } + + // Check is a specific tab has been selected previously + let previousId = window.sessionStorage.getItem( + storageKeyPrefix + group + ); + if (previousId === id) { + // console.log( + // "sphinx-design: Selecting tab from session storage: " + id + // ); + // @ts-ignore + label.previousElementSibling.checked = true; + } + } + } + }); +} + +/** + * Activate other tabs with the same sync id. + * + * @this {HTMLElement} - The element that was clicked. + */ +function onSDLabelClick() { + let data = create_key(this); + if (!data) return; + let [group, id, key] = data; + for (const label of sd_id_to_elements[key]) { + if (label === this) continue; + // @ts-ignore + label.previousElementSibling.checked = true; + } + window.sessionStorage.setItem(storageKeyPrefix + group, id); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 000000000..0398ebb9f --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,149 @@ +/* + * Base JavaScript utilities for all Sphinx HTML documentation. + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 000000000..7e4c114f2 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/eq.png b/_static/eq.png new file mode 100644 index 0000000000000000000000000000000000000000..283f69c7b469ab6e8437220472f82bb3776887a2 GIT binary patch literal 79072 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%0A%#>)B*1B%LMhubIvSXes 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 literal 0 HcmV?d00001 diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0002xNkl<Zcmb`G zgHi?o6ovOGdxdP*AltSE*&JruJwUGI3!FN?xxO>s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHD<M{a4P!N^sPbQKi=?mBx zoos%BSoiGXjr-;%$QixXMOVNSUNp6L0a1Oz&cgu)wqE?07u5I7qrQIu4Fij)Y3c&0 z@0u_#NH6I?Mk(n;dT}d~^J<WkTLqp|RW-hV56tKpXqu)k@V{?amI+5DOlEU@funz+ kySsbM>fiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/_static/graphviz.css b/_static/graphviz.css new file mode 100644 index 000000000..30f3837b6 --- /dev/null +++ b/_static/graphviz.css @@ -0,0 +1,12 @@ +/* + * Sphinx stylesheet -- graphviz extension. + */ + +img.graphviz { + border: 0; + max-width: 100%; +} + +object.graphviz { + max-width: 100%; +} diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 000000000..c7fe6c6fa --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,192 @@ +/* + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, if available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/logo.png b/_static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d2b683d6e63b15ebaa604f5e54935df865e12a07 GIT binary patch literal 139180 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 b2}<;l_^U;1W78+9b@SV_ZQ}#4{TcrQvWe4f literal 0 HcmV?d00001 diff --git a/_static/logo.svg b/_static/logo.svg new file mode 100644 index 000000000..c75ab9f79 --- /dev/null +++ b/_static/logo.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1007.29 210.23"><defs><style>.cls-1{fill:url(#未命名的渐变_7);}.cls-2{fill:url(#未命名的渐变_7-2);}.cls-3{fill:url(#未命名的渐变_1143);}.cls-4{fill:url(#未命名的渐变_91);}.cls-5{fill:url(#未命名的渐变_284);}.cls-6{fill:url(#未命名的渐变_1177);}.cls-7{fill:#0065a6;}.cls-8{fill:#859997;}</style><linearGradient id="未命名的渐变_7" y1="105.12" x2="286" y2="105.12" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2edfa3"/><stop offset="1" stop-color="#0065a6"/></linearGradient><linearGradient id="未命名的渐变_7-2" x1="14.8" y1="199" x2="71.53" y2="100.75" xlink:href="#未命名的渐变_7"/><linearGradient id="未命名的渐变_1143" x1="36.38" y1="81.47" x2="250.38" y2="-42.08" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2edfa9"/><stop offset="1" stop-color="#2e86bf"/></linearGradient><linearGradient id="未命名的渐变_91" x1="143" y1="101.36" x2="225" y2="101.36" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4285a3"/><stop offset="1" stop-color="#0065a6" stop-opacity="0"/></linearGradient><linearGradient id="未命名的渐变_284" x1="41.38" y1="14.66" x2="90.99" y2="88.73" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2ee8ad"/><stop offset="0.61" stop-color="#2bd8a9" stop-opacity="0"/></linearGradient><linearGradient id="未命名的渐变_1177" x1="214.66" y1="188.82" x2="270.75" y2="91.67" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2edfa3"/><stop offset="1" stop-color="#005891"/></linearGradient></defs><g id="图层_2" data-name="图层 2"><g id="图层_1-2" data-name="图层 1"><polygon class="cls-1" points="286 19.62 251.74 0 143 63.12 34.26 0 0 19.62 0 190.62 34.26 210.23 68.97 190.09 68.97 99.38 109 122.62 143 142.12 177 122.62 217.03 99.38 217.03 190.09 251.74 210.23 286 190.62 286 19.62"/><polygon class="cls-2" points="34.76 79.53 68.97 99.38 68.97 190.09 34.26 210.23 34.76 79.53"/><polygon class="cls-3" points="1.01 20.2 143 102.62 286 19.62 251.74 0 143 63.12 34.26 0 1.01 20.2"/><polygon class="cls-4" points="143 102.62 143 142.12 225 94.12 215.38 60.61 143 102.62"/><polygon class="cls-5" points="102.99 39.9 34.26 0 0 19.62 90.23 71.99 102.99 39.9"/><polygon class="cls-6" points="217.03 99.38 217.03 190.09 251.74 210.23 251.46 80.53 217 99.12 217 99.4 217.03 99.38"/><path class="cls-7" d="M390,83.31h5.54a8.84,8.84,0,0,1,8.84,8.85v70.91a8.85,8.85,0,0,0,8.85,8.85h29.4a8.85,8.85,0,0,1,8.85,8.85v.14a8.85,8.85,0,0,1-8.85,8.85H390a8.85,8.85,0,0,1-8.85-8.85V92.16A8.85,8.85,0,0,1,390,83.31Z"/><path class="cls-7" d="M476.68,83.31h10.89a8.83,8.83,0,0,1,8.22,5.58l17.57,44.19c2.51,6.62,4.71,13.67,7.06,20.57h.79c2.51-6.9,4.55-14,7.06-20.57L545.39,89a8.83,8.83,0,0,1,8.25-5.65h10.84a8.84,8.84,0,0,1,8.84,8.85v88.75a8.84,8.84,0,0,1-8.84,8.85H561a8.85,8.85,0,0,1-8.85-8.85v-35.6c0-10.07,1.73-24.89,2.83-35h-.63l-9.42,25-15.67,39.18a8.84,8.84,0,0,1-8.21,5.56h-1.39a8.84,8.84,0,0,1-8.2-5.54l-15.82-39.2-9.26-25h-.63c1.1,10.07,3,24.89,3,35v35.6a8.85,8.85,0,0,1-8.85,8.85h-3.18a8.85,8.85,0,0,1-8.85-8.85V92.16A8.85,8.85,0,0,1,476.68,83.31Z"/><path class="cls-8" d="M606.81,83.31H660.7a8.85,8.85,0,0,1,8.85,8.85h0A8.84,8.84,0,0,1,660.7,101H630.05a8.85,8.85,0,0,0-8.85,8.85v10.07a8.85,8.85,0,0,0,8.85,8.85h23.59a8.84,8.84,0,0,1,8.85,8.84v.15a8.84,8.84,0,0,1-8.85,8.84H630.05a8.85,8.85,0,0,0-8.85,8.85v25.46a8.85,8.85,0,0,1-8.85,8.85h-5.54a8.84,8.84,0,0,1-8.84-8.85V92.16A8.84,8.84,0,0,1,606.81,83.31Z"/><path class="cls-8" d="M694.72,83.31h5.54a8.85,8.85,0,0,1,8.85,8.85v70.91a8.84,8.84,0,0,0,8.84,8.85h29.4a8.85,8.85,0,0,1,8.85,8.85v.14a8.85,8.85,0,0,1-8.85,8.85H694.72a8.85,8.85,0,0,1-8.85-8.85V92.16A8.85,8.85,0,0,1,694.72,83.31Z"/><path class="cls-8" d="M760.75,136.1c0-34.66,21.2-54.8,52-54.8s52,20.28,52,54.8-21.19,55.67-52,55.67S760.75,170.63,760.75,136.1Zm80.22,0c0-22.87-11-36.53-28.26-36.53s-28.25,13.66-28.25,36.53,11,37.26,28.25,37.26S841,158.83,841,136.1Z"/><path class="cls-8" d="M882.48,83.31h5.39a8.85,8.85,0,0,1,8.71,7.3l8,44.63c1.73,11.22,3.62,22.58,5.34,33.95h.63c2.36-11.37,4.87-22.87,7.38-33.95l11.78-45.31a8.84,8.84,0,0,1,8.56-6.62h6.1a8.84,8.84,0,0,1,8.56,6.62l11.78,45.31c2.51,10.93,4.87,22.44,7.38,33.95h.78c1.73-11.51,3.46-22.87,5.18-33.95l7.82-44.61a8.86,8.86,0,0,1,8.72-7.32h3.89a8.84,8.84,0,0,1,8.67,10.6l-17.93,88.75a8.84,8.84,0,0,1-8.67,7.1H965.79A8.85,8.85,0,0,1,957.2,183l-11.37-45.93c-1.88-8.34-3.61-16.54-5-24.6h-.63c-1.57,8.06-3.14,16.26-5,24.6L924.08,183a8.85,8.85,0,0,1-8.6,6.77H901.2a8.84,8.84,0,0,1-8.65-7L873.83,94A8.84,8.84,0,0,1,882.48,83.31Z"/></g></g></svg> \ No newline at end of file diff --git a/_static/logo2.svg b/_static/logo2.svg new file mode 100644 index 000000000..d823b6a3d --- /dev/null +++ b/_static/logo2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1008.29 210.23"><defs><style>.cls-1{fill:url(#未命名的渐变_532);}.cls-2{fill:url(#未命名的渐变_713);}.cls-3{fill:url(#未命名的渐变_532-2);}.cls-4,.cls-7{opacity:0.45;}.cls-4{fill:url(#未命名的渐变_745);}.cls-5{fill:url(#未命名的渐变_565);}.cls-6{fill:url(#未命名的渐变_713-2);}.cls-7{fill:url(#未命名的渐变_1087);}.cls-8{fill:#45d4ff;}.cls-9{fill:#828b99;}</style><linearGradient id="未命名的渐变_532" y1="105.12" x2="286" y2="105.12" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#45d4ff"/><stop offset="1" stop-color="#c170cd"/></linearGradient><linearGradient id="未命名的渐变_713" x1="14.8" y1="199" x2="71.53" y2="100.75" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#45d4ff"/><stop offset="1" stop-color="#3170cd"/></linearGradient><linearGradient id="未命名的渐变_532-2" x1="36.38" y1="81.47" x2="250.38" y2="-42.08" xlink:href="#未命名的渐变_532"/><linearGradient id="未命名的渐变_745" x1="143" y1="101.36" x2="225" y2="101.36" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#a45ba3"/><stop offset="1" stop-color="#b765a6" stop-opacity="0"/></linearGradient><linearGradient id="未命名的渐变_565" x1="41.38" y1="14.66" x2="90.99" y2="88.73" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2ee8ff"/><stop offset="0.61" stop-color="#2bd8a9" stop-opacity="0"/></linearGradient><linearGradient id="未命名的渐变_713-2" x1="214.66" y1="188.82" x2="270.75" y2="91.67" xlink:href="#未命名的渐变_713"/><linearGradient id="未命名的渐变_1087" x1="287.81" y1="25.07" x2="221.63" y2="127.93" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#542653"/><stop offset="0.23" stop-color="#6e3769" stop-opacity="0.74"/><stop offset="0.74" stop-color="#a35895" stop-opacity="0.21"/><stop offset="1" stop-color="#b765a6" stop-opacity="0"/></linearGradient></defs><g id="图层_2" data-name="图层 2"><g id="图层_1-2" data-name="图层 1"><polygon class="cls-1" points="286 19.62 251.74 0 143 63.12 34.26 0 0 19.62 0 190.62 34.26 210.23 68.97 190.09 68.97 99.38 109 122.62 143 142.12 177 122.62 217.03 99.38 217.03 190.09 251.74 210.23 286 190.62 286 19.62"/><polygon class="cls-2" points="34.76 79.53 68.97 99.38 68.97 190.09 34.26 210.23 34.76 79.53"/><polygon class="cls-3" points="1.01 20.2 143 102.62 286 19.62 251.74 0 143 63.12 34.26 0 1.01 20.2"/><polygon class="cls-4" points="143 102.62 143 142.12 225 94.12 215.38 60.61 143 102.62"/><polygon class="cls-5" points="102.99 39.9 34.26 0 0 19.62 90.23 71.99 102.99 39.9"/><polygon class="cls-6" points="217.03 99.38 217.03 190.09 251.74 210.23 251.46 80.53 217 99.12 217 99.4 217.03 99.38"/><polygon class="cls-7" points="177.5 83.53 286 19.62 286 140.86 251.74 132.14 251.46 80.53 209.25 103.74 177.5 83.53"/><path class="cls-8" d="M391,83.31h5.54a8.84,8.84,0,0,1,8.84,8.85v70.91a8.85,8.85,0,0,0,8.85,8.85h29.4a8.85,8.85,0,0,1,8.85,8.85v.14a8.85,8.85,0,0,1-8.85,8.85H391a8.85,8.85,0,0,1-8.85-8.85V92.16A8.85,8.85,0,0,1,391,83.31Z"/><path class="cls-8" d="M477.68,83.31h10.89a8.83,8.83,0,0,1,8.22,5.58l17.57,44.19c2.51,6.62,4.71,13.67,7.06,20.57h.79c2.51-6.9,4.55-14,7.06-20.57L546.39,89a8.83,8.83,0,0,1,8.25-5.65h10.84a8.84,8.84,0,0,1,8.84,8.85v88.75a8.84,8.84,0,0,1-8.84,8.85H562a8.85,8.85,0,0,1-8.85-8.85v-35.6c0-10.07,1.73-24.89,2.83-35h-.63l-9.42,25-15.67,39.18a8.84,8.84,0,0,1-8.21,5.56h-1.39a8.84,8.84,0,0,1-8.2-5.54l-15.82-39.2-9.26-25h-.63c1.1,10.07,3,24.89,3,35v35.6a8.85,8.85,0,0,1-8.85,8.85h-3.18a8.85,8.85,0,0,1-8.85-8.85V92.16A8.85,8.85,0,0,1,477.68,83.31Z"/><path class="cls-9" d="M607.81,83.31H661.7a8.85,8.85,0,0,1,8.85,8.85h0A8.84,8.84,0,0,1,661.7,101H631.05a8.85,8.85,0,0,0-8.85,8.85v10.07a8.85,8.85,0,0,0,8.85,8.85h23.59a8.84,8.84,0,0,1,8.85,8.84v.15a8.84,8.84,0,0,1-8.85,8.84H631.05a8.85,8.85,0,0,0-8.85,8.85v25.46a8.85,8.85,0,0,1-8.85,8.85h-5.54a8.84,8.84,0,0,1-8.84-8.85V92.16A8.84,8.84,0,0,1,607.81,83.31Z"/><path class="cls-9" d="M695.72,83.31h5.54a8.85,8.85,0,0,1,8.85,8.85v70.91a8.84,8.84,0,0,0,8.84,8.85h29.4a8.85,8.85,0,0,1,8.85,8.85v.14a8.85,8.85,0,0,1-8.85,8.85H695.72a8.85,8.85,0,0,1-8.85-8.85V92.16A8.85,8.85,0,0,1,695.72,83.31Z"/><path class="cls-9" d="M761.75,136.1c0-34.66,21.2-54.8,52-54.8s52,20.28,52,54.8-21.19,55.67-52,55.67S761.75,170.63,761.75,136.1Zm80.22,0c0-22.87-11-36.53-28.26-36.53s-28.25,13.66-28.25,36.53,11,37.26,28.25,37.26S842,158.83,842,136.1Z"/><path class="cls-9" d="M883.48,83.31h5.39a8.85,8.85,0,0,1,8.71,7.3l8,44.63c1.73,11.22,3.62,22.58,5.34,33.95h.63c2.36-11.37,4.87-22.87,7.38-33.95l11.78-45.31a8.84,8.84,0,0,1,8.56-6.62h6.1a8.84,8.84,0,0,1,8.56,6.62l11.78,45.31c2.51,10.93,4.87,22.44,7.38,33.95h.78c1.73-11.51,3.46-22.87,5.18-33.95l7.82-44.61a8.86,8.86,0,0,1,8.72-7.32h3.89a8.84,8.84,0,0,1,8.67,10.6l-17.93,88.75a8.84,8.84,0,0,1-8.67,7.1H966.79A8.85,8.85,0,0,1,958.2,183l-11.37-45.93c-1.88-8.34-3.61-16.54-5-24.6h-.63c-1.57,8.06-3.14,16.26-5,24.6L925.08,183a8.85,8.85,0,0,1-8.6,6.77H902.2a8.84,8.84,0,0,1-8.65-7L874.83,94A8.84,8.84,0,0,1,883.48,83.31Z"/></g></g></svg> \ No newline at end of file diff --git a/_static/logo3.svg b/_static/logo3.svg new file mode 100644 index 000000000..c092db5d0 --- /dev/null +++ b/_static/logo3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1006.29 210.23"><defs><style>.cls-1{fill:url(#未命名的渐变_1031);}.cls-2{fill:url(#未命名的渐变_862);}.cls-3{fill:url(#未命名的渐变_1230);}.cls-4{opacity:0.45;fill:url(#未命名的渐变_877);}.cls-5{fill:url(#未命名的渐变_855);}.cls-6{fill:url(#未命名的渐变_1080);}.cls-7{opacity:0.42;fill:url(#未命名的渐变_1218);}.cls-8{fill:#6466e1;}.cls-9{fill:#8b8499;}</style><linearGradient id="未命名的渐变_1031" y1="105.12" x2="286" y2="105.12" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d6caff"/><stop offset="1" stop-color="#30a4e1"/></linearGradient><linearGradient id="未命名的渐变_862" x1="14.8" y1="199" x2="71.53" y2="100.75" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d6caff"/><stop offset="1" stop-color="#6466e1"/></linearGradient><linearGradient id="未命名的渐变_1230" x1="36.38" y1="81.47" x2="250.38" y2="-42.08" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d6caff"/><stop offset="1" stop-color="#46abe1"/></linearGradient><linearGradient id="未命名的渐变_877" x1="143" y1="101.36" x2="225" y2="101.36" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4941a3"/><stop offset="1" stop-color="#b765a6" stop-opacity="0"/></linearGradient><linearGradient id="未命名的渐变_855" x1="41.38" y1="14.66" x2="90.99" y2="88.73" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#e2d6ff"/><stop offset="0.61" stop-color="#d6caff" stop-opacity="0"/></linearGradient><linearGradient id="未命名的渐变_1080" x1="214.66" y1="188.82" x2="270.75" y2="91.67" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#86b8f1"/><stop offset="1" stop-color="#6466e1"/></linearGradient><linearGradient id="未命名的渐变_1218" x1="289.98" y1="21.01" x2="244.21" y2="94.95" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#3a71ba"/><stop offset="0.15" stop-color="#3a72bb" stop-opacity="0.98"/><stop offset="0.29" stop-color="#3a76be" stop-opacity="0.91"/><stop offset="0.44" stop-color="#3b7bc2" stop-opacity="0.81"/><stop offset="0.59" stop-color="#3b84c8" stop-opacity="0.65"/><stop offset="0.74" stop-color="#3c8ed0" stop-opacity="0.46"/><stop offset="0.88" stop-color="#3d9bda" stop-opacity="0.22"/><stop offset="1" stop-color="#3ea7e3" stop-opacity="0"/></linearGradient></defs><g id="图层_2" data-name="图层 2"><g id="图层_1-2" data-name="图层 1"><polygon class="cls-1" points="286 19.62 251.74 0 143 63.12 34.26 0 0 19.62 0 190.62 34.26 210.23 68.97 190.09 68.97 99.38 109 122.62 143 142.12 177 122.62 217.03 99.38 217.03 190.09 251.74 210.23 286 190.62 286 19.62"/><polygon class="cls-2" points="34.76 79.53 68.97 99.38 68.97 190.09 34.26 210.23 34.76 79.53"/><polygon class="cls-3" points="1.01 20.2 143 102.62 286 19.62 251.74 0 143 63.12 34.26 0 1.01 20.2"/><polygon class="cls-4" points="143 102.62 143 142.12 225 94.12 215.38 60.61 143 102.62"/><polygon class="cls-5" points="102.99 39.9 34.26 0 0 19.62 90.23 71.99 102.99 39.9"/><polygon class="cls-6" points="217.03 99.38 217.03 190.09 251.74 210.23 251.46 80.53 217 99.12 217 99.4 217.03 99.38"/><polygon class="cls-7" points="201 69.12 286 19.62 286 123.07 251.74 124.71 251.46 80.53 216 99.98 201 69.12"/><path class="cls-8" d="M389,85.31h5.54a8.84,8.84,0,0,1,8.84,8.85v70.91a8.85,8.85,0,0,0,8.85,8.85h29.4a8.85,8.85,0,0,1,8.85,8.85v.14a8.85,8.85,0,0,1-8.85,8.85H389a8.85,8.85,0,0,1-8.85-8.85V94.16A8.85,8.85,0,0,1,389,85.31Z"/><path class="cls-8" d="M475.68,85.31h10.89a8.83,8.83,0,0,1,8.22,5.58l17.57,44.19c2.51,6.62,4.71,13.67,7.06,20.57h.79c2.51-6.9,4.55-14,7.06-20.57L544.39,91a8.83,8.83,0,0,1,8.25-5.65h10.84a8.84,8.84,0,0,1,8.84,8.85v88.75a8.84,8.84,0,0,1-8.84,8.85H560a8.85,8.85,0,0,1-8.85-8.85v-35.6c0-10.07,1.73-24.89,2.83-35h-.63l-9.42,25-15.67,39.18a8.84,8.84,0,0,1-8.21,5.56h-1.39a8.84,8.84,0,0,1-8.2-5.54l-15.82-39.2-9.26-25h-.63c1.1,10.07,3,24.89,3,35v35.6a8.85,8.85,0,0,1-8.85,8.85h-3.18a8.85,8.85,0,0,1-8.85-8.85V94.16A8.85,8.85,0,0,1,475.68,85.31Z"/><path class="cls-9" d="M605.81,85.31H659.7a8.85,8.85,0,0,1,8.85,8.85h0A8.84,8.84,0,0,1,659.7,103H629.05a8.85,8.85,0,0,0-8.85,8.85v10.07a8.85,8.85,0,0,0,8.85,8.85h23.59a8.84,8.84,0,0,1,8.85,8.84v.15a8.84,8.84,0,0,1-8.85,8.84H629.05a8.85,8.85,0,0,0-8.85,8.85v25.46a8.85,8.85,0,0,1-8.85,8.85h-5.54a8.84,8.84,0,0,1-8.84-8.85V94.16A8.84,8.84,0,0,1,605.81,85.31Z"/><path class="cls-9" d="M693.72,85.31h5.54a8.85,8.85,0,0,1,8.85,8.85v70.91a8.84,8.84,0,0,0,8.84,8.85h29.4a8.85,8.85,0,0,1,8.85,8.85v.14a8.85,8.85,0,0,1-8.85,8.85H693.72a8.85,8.85,0,0,1-8.85-8.85V94.16A8.85,8.85,0,0,1,693.72,85.31Z"/><path class="cls-9" d="M759.75,138.1c0-34.66,21.2-54.8,52-54.8s52,20.28,52,54.8-21.19,55.67-52,55.67S759.75,172.63,759.75,138.1Zm80.22,0c0-22.87-11-36.53-28.26-36.53s-28.25,13.66-28.25,36.53,11,37.26,28.25,37.26S840,160.83,840,138.1Z"/><path class="cls-9" d="M881.48,85.31h5.39a8.85,8.85,0,0,1,8.71,7.3l8,44.63c1.73,11.22,3.62,22.58,5.34,33.95h.63c2.36-11.37,4.87-22.87,7.38-33.95l11.78-45.31a8.84,8.84,0,0,1,8.56-6.62h6.1a8.84,8.84,0,0,1,8.56,6.62l11.78,45.31c2.51,10.93,4.87,22.44,7.38,33.95h.78c1.73-11.51,3.46-22.87,5.18-33.95l7.82-44.61a8.86,8.86,0,0,1,8.72-7.32h3.89a8.84,8.84,0,0,1,8.67,10.6l-17.93,88.75a8.84,8.84,0,0,1-8.67,7.1H964.79A8.85,8.85,0,0,1,956.2,185l-11.37-45.93c-1.88-8.34-3.61-16.54-5-24.6h-.63c-1.57,8.06-3.14,16.26-5,24.6L923.08,185a8.85,8.85,0,0,1-8.6,6.77H900.2a8.84,8.84,0,0,1-8.65-7L872.83,96A8.84,8.84,0,0,1,881.48,85.31Z"/></g></g></svg> \ No newline at end of file diff --git a/_static/logo4.svg b/_static/logo4.svg new file mode 100644 index 000000000..afbb2c14f --- /dev/null +++ b/_static/logo4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 286 210.23"><defs><style>.cls-1{fill:url(#未命名的渐变_532);}.cls-2{fill:url(#未命名的渐变_713);}.cls-3{fill:url(#未命名的渐变_532-2);}.cls-4,.cls-7{opacity:0.45;}.cls-4{fill:url(#未命名的渐变_745);}.cls-5{fill:url(#未命名的渐变_565);}.cls-6{fill:url(#未命名的渐变_713-2);}.cls-7{fill:url(#未命名的渐变_1087);}</style><linearGradient id="未命名的渐变_532" y1="105.12" x2="286" y2="105.12" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#45d4ff"/><stop offset="1" stop-color="#c170cd"/></linearGradient><linearGradient id="未命名的渐变_713" x1="14.8" y1="199" x2="71.53" y2="100.75" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#45d4ff"/><stop offset="1" stop-color="#3170cd"/></linearGradient><linearGradient id="未命名的渐变_532-2" x1="36.38" y1="81.47" x2="250.38" y2="-42.08" xlink:href="#未命名的渐变_532"/><linearGradient id="未命名的渐变_745" x1="143" y1="101.36" x2="225" y2="101.36" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#a45ba3"/><stop offset="1" stop-color="#b765a6" stop-opacity="0"/></linearGradient><linearGradient id="未命名的渐变_565" x1="41.38" y1="14.66" x2="90.99" y2="88.73" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2ee8ff"/><stop offset="0.61" stop-color="#2bd8a9" stop-opacity="0"/></linearGradient><linearGradient id="未命名的渐变_713-2" x1="214.66" y1="188.82" x2="270.75" y2="91.67" xlink:href="#未命名的渐变_713"/><linearGradient id="未命名的渐变_1087" x1="287.81" y1="25.07" x2="221.63" y2="127.93" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#542653"/><stop offset="0.23" stop-color="#6e3769" stop-opacity="0.74"/><stop offset="0.74" stop-color="#a35895" stop-opacity="0.21"/><stop offset="1" stop-color="#b765a6" stop-opacity="0"/></linearGradient></defs><g id="图层_2" data-name="图层 2"><g id="图层_1-2" data-name="图层 1"><polygon class="cls-1" points="286 19.62 251.74 0 143 63.12 34.26 0 0 19.62 0 190.62 34.26 210.23 68.97 190.09 68.97 99.38 109 122.62 143 142.12 177 122.62 217.03 99.38 217.03 190.09 251.74 210.23 286 190.62 286 19.62"/><polygon class="cls-2" points="34.76 79.53 68.97 99.38 68.97 190.09 34.26 210.23 34.76 79.53"/><polygon class="cls-3" points="1.01 20.2 143 102.62 286 19.62 251.74 0 143 63.12 34.26 0 1.01 20.2"/><polygon class="cls-4" points="143 102.62 143 142.12 225 94.12 215.38 60.61 143 102.62"/><polygon class="cls-5" points="102.99 39.9 34.26 0 0 19.62 90.23 71.99 102.99 39.9"/><polygon class="cls-6" points="217.03 99.38 217.03 190.09 251.74 210.23 251.46 80.53 217 99.12 217 99.4 217.03 99.38"/><polygon class="cls-7" points="177.5 83.53 286 19.62 286 140.86 251.74 132.14 251.46 80.53 209.25 103.74 177.5 83.53"/></g></g></svg> \ No newline at end of file diff --git a/_static/logo5.svg b/_static/logo5.svg new file mode 100644 index 000000000..877055168 --- /dev/null +++ b/_static/logo5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 286 210.23"><defs><style>.cls-1{fill:url(#未命名的渐变_7);}.cls-2{fill:url(#未命名的渐变_7-2);}.cls-3{fill:url(#未命名的渐变_1143);}.cls-4{fill:url(#未命名的渐变_91);}.cls-5{fill:url(#未命名的渐变_284);}.cls-6{fill:url(#未命名的渐变_1177);}</style><linearGradient id="未命名的渐变_7" y1="105.12" x2="286" y2="105.12" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2edfa3"/><stop offset="1" stop-color="#0065a6"/></linearGradient><linearGradient id="未命名的渐变_7-2" x1="14.8" y1="199" x2="71.53" y2="100.75" xlink:href="#未命名的渐变_7"/><linearGradient id="未命名的渐变_1143" x1="36.38" y1="81.47" x2="250.38" y2="-42.08" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2edfa9"/><stop offset="1" stop-color="#2e86bf"/></linearGradient><linearGradient id="未命名的渐变_91" x1="143" y1="101.36" x2="225" y2="101.36" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4285a3"/><stop offset="1" stop-color="#0065a6" stop-opacity="0"/></linearGradient><linearGradient id="未命名的渐变_284" x1="41.38" y1="14.66" x2="90.99" y2="88.73" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2ee8ad"/><stop offset="0.61" stop-color="#2bd8a9" stop-opacity="0"/></linearGradient><linearGradient id="未命名的渐变_1177" x1="214.66" y1="188.82" x2="270.75" y2="91.67" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2edfa3"/><stop offset="1" stop-color="#005891"/></linearGradient></defs><g id="图层_2" data-name="图层 2"><g id="图层_1-2" data-name="图层 1"><polygon class="cls-1" points="286 19.62 251.74 0 143 63.12 34.26 0 0 19.62 0 190.62 34.26 210.23 68.97 190.09 68.97 99.38 109 122.62 143 142.12 177 122.62 217.03 99.38 217.03 190.09 251.74 210.23 286 190.62 286 19.62"/><polygon class="cls-2" points="34.76 79.53 68.97 99.38 68.97 190.09 34.26 210.23 34.76 79.53"/><polygon class="cls-3" points="1.01 20.2 143 102.62 286 19.62 251.74 0 143 63.12 34.26 0 1.01 20.2"/><polygon class="cls-4" points="143 102.62 143 142.12 225 94.12 215.38 60.61 143 102.62"/><polygon class="cls-5" points="102.99 39.9 34.26 0 0 19.62 90.23 71.99 102.99 39.9"/><polygon class="cls-6" points="217.03 99.38 217.03 190.09 251.74 210.23 251.46 80.53 217 99.12 217 99.4 217.03 99.38"/></g></g></svg> \ No newline at end of file diff --git a/_static/logo6.svg b/_static/logo6.svg new file mode 100644 index 000000000..6eeade79e --- /dev/null +++ b/_static/logo6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 286 210.23"><defs><style>.cls-1{fill:url(#未命名的渐变_1031);}.cls-2{fill:url(#未命名的渐变_862);}.cls-3{fill:url(#未命名的渐变_1230);}.cls-4{opacity:0.45;fill:url(#未命名的渐变_877);}.cls-5{fill:url(#未命名的渐变_855);}.cls-6{fill:url(#未命名的渐变_1080);}.cls-7{opacity:0.42;fill:url(#未命名的渐变_1218);}</style><linearGradient id="未命名的渐变_1031" y1="105.12" x2="286" y2="105.12" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d6caff"/><stop offset="1" stop-color="#30a4e1"/></linearGradient><linearGradient id="未命名的渐变_862" x1="14.8" y1="199" x2="71.53" y2="100.75" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d6caff"/><stop offset="1" stop-color="#6466e1"/></linearGradient><linearGradient id="未命名的渐变_1230" x1="36.38" y1="81.47" x2="250.38" y2="-42.08" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#d6caff"/><stop offset="1" stop-color="#46abe1"/></linearGradient><linearGradient id="未命名的渐变_877" x1="143" y1="101.36" x2="225" y2="101.36" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4941a3"/><stop offset="1" stop-color="#b765a6" stop-opacity="0"/></linearGradient><linearGradient id="未命名的渐变_855" x1="41.38" y1="14.66" x2="90.99" y2="88.73" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#e2d6ff"/><stop offset="0.61" stop-color="#d6caff" stop-opacity="0"/></linearGradient><linearGradient id="未命名的渐变_1080" x1="214.66" y1="188.82" x2="270.75" y2="91.67" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#86b8f1"/><stop offset="1" stop-color="#6466e1"/></linearGradient><linearGradient id="未命名的渐变_1218" x1="289.98" y1="21.01" x2="244.21" y2="94.95" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#3a71ba"/><stop offset="0.15" stop-color="#3a72bb" stop-opacity="0.98"/><stop offset="0.29" stop-color="#3a76be" stop-opacity="0.91"/><stop offset="0.44" stop-color="#3b7bc2" stop-opacity="0.81"/><stop offset="0.59" stop-color="#3b84c8" stop-opacity="0.65"/><stop offset="0.74" stop-color="#3c8ed0" stop-opacity="0.46"/><stop offset="0.88" stop-color="#3d9bda" stop-opacity="0.22"/><stop offset="1" stop-color="#3ea7e3" stop-opacity="0"/></linearGradient></defs><g id="图层_2" data-name="图层 2"><g id="图层_1-2" data-name="图层 1"><polygon class="cls-1" points="286 19.62 251.74 0 143 63.12 34.26 0 0 19.62 0 190.62 34.26 210.23 68.97 190.09 68.97 99.38 109 122.62 143 142.12 177 122.62 217.03 99.38 217.03 190.09 251.74 210.23 286 190.62 286 19.62"/><polygon class="cls-2" points="34.76 79.53 68.97 99.38 68.97 190.09 34.26 210.23 34.76 79.53"/><polygon class="cls-3" points="1.01 20.2 143 102.62 286 19.62 251.74 0 143 63.12 34.26 0 1.01 20.2"/><polygon class="cls-4" points="143 102.62 143 142.12 225 94.12 215.38 60.61 143 102.62"/><polygon class="cls-5" points="102.99 39.9 34.26 0 0 19.62 90.23 71.99 102.99 39.9"/><polygon class="cls-6" points="217.03 99.38 217.03 190.09 251.74 210.23 251.46 80.53 217 99.12 217 99.4 217.03 99.38"/><polygon class="cls-7" points="201 69.12 286 19.62 286 123.07 251.74 124.71 251.46 80.53 216 99.98 201 69.12"/></g></g></svg> \ No newline at end of file diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/_static/nll.png b/_static/nll.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f7d0b7d234666c443eb19fce5b4ac5a9bbc2b3 GIT binary patch literal 55999 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 literal 0 HcmV?d00001 diff --git a/_static/plot_directive.css b/_static/plot_directive.css new file mode 100644 index 000000000..d45593c93 --- /dev/null +++ b/_static/plot_directive.css @@ -0,0 +1,16 @@ +/* + * plot_directive.css + * ~~~~~~~~~~~~ + * + * Stylesheet controlling images created using the `plot` directive within + * Sphinx. + * + * :copyright: Copyright 2020-* by the Matplotlib development team. + * :license: Matplotlib, see LICENSE for details. + * + */ + +img.plot-directive { + border: 0; + max-width: 100%; +} diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/_static/ppl.png b/_static/ppl.png new file mode 100644 index 0000000000000000000000000000000000000000..a40a8289b62a8d3179964306a598c405424f1ba3 GIT binary patch literal 25483 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 C;<HEq literal 0 HcmV?d00001 diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 000000000..d7dd57783 --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,152 @@ +html[data-theme="light"] .highlight pre { line-height: 125%; } +html[data-theme="light"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight .hll { background-color: #fae4c2 } +html[data-theme="light"] .highlight { background: #fefefe; color: #080808 } +html[data-theme="light"] .highlight .c { color: #515151 } /* Comment */ +html[data-theme="light"] .highlight .err { color: #A12236 } /* Error */ +html[data-theme="light"] .highlight .k { color: #6730C5 } /* Keyword */ +html[data-theme="light"] .highlight .l { color: #7F4707 } /* Literal */ +html[data-theme="light"] .highlight .n { color: #080808 } /* Name */ +html[data-theme="light"] .highlight .o { color: #00622F } /* Operator */ +html[data-theme="light"] .highlight .p { color: #080808 } /* Punctuation */ +html[data-theme="light"] .highlight .ch { color: #515151 } /* Comment.Hashbang */ +html[data-theme="light"] .highlight .cm { color: #515151 } /* Comment.Multiline */ +html[data-theme="light"] .highlight .cp { color: #515151 } /* Comment.Preproc */ +html[data-theme="light"] .highlight .cpf { color: #515151 } /* Comment.PreprocFile */ +html[data-theme="light"] .highlight .c1 { color: #515151 } /* Comment.Single */ +html[data-theme="light"] .highlight .cs { color: #515151 } /* Comment.Special */ +html[data-theme="light"] .highlight .gd { color: #005B82 } /* Generic.Deleted */ +html[data-theme="light"] .highlight .ge { font-style: italic } /* Generic.Emph */ +html[data-theme="light"] .highlight .gh { color: #005B82 } /* Generic.Heading */ +html[data-theme="light"] .highlight .gs { font-weight: bold } /* Generic.Strong */ +html[data-theme="light"] .highlight .gu { color: #005B82 } /* Generic.Subheading */ +html[data-theme="light"] .highlight .kc { color: #6730C5 } /* Keyword.Constant */ +html[data-theme="light"] .highlight .kd { color: #6730C5 } /* Keyword.Declaration */ +html[data-theme="light"] .highlight .kn { color: #6730C5 } /* Keyword.Namespace */ +html[data-theme="light"] .highlight .kp { color: #6730C5 } /* Keyword.Pseudo */ +html[data-theme="light"] .highlight .kr { color: #6730C5 } /* Keyword.Reserved */ +html[data-theme="light"] .highlight .kt { color: #7F4707 } /* Keyword.Type */ +html[data-theme="light"] .highlight .ld { color: #7F4707 } /* Literal.Date */ +html[data-theme="light"] .highlight .m { color: #7F4707 } /* Literal.Number */ +html[data-theme="light"] .highlight .s { color: #00622F } /* Literal.String */ +html[data-theme="light"] .highlight .na { color: #912583 } /* Name.Attribute */ +html[data-theme="light"] .highlight .nb { color: #7F4707 } /* Name.Builtin */ +html[data-theme="light"] .highlight .nc { color: #005B82 } /* Name.Class */ +html[data-theme="light"] .highlight .no { color: #005B82 } /* Name.Constant */ +html[data-theme="light"] .highlight .nd { color: #7F4707 } /* Name.Decorator */ +html[data-theme="light"] .highlight .ni { color: #00622F } /* Name.Entity */ +html[data-theme="light"] .highlight .ne { color: #6730C5 } /* Name.Exception */ +html[data-theme="light"] .highlight .nf { color: #005B82 } /* Name.Function */ +html[data-theme="light"] .highlight .nl { color: #7F4707 } /* Name.Label */ +html[data-theme="light"] .highlight .nn { color: #080808 } /* Name.Namespace */ +html[data-theme="light"] .highlight .nx { color: #080808 } /* Name.Other */ +html[data-theme="light"] .highlight .py { color: #005B82 } /* Name.Property */ +html[data-theme="light"] .highlight .nt { color: #005B82 } /* Name.Tag */ +html[data-theme="light"] .highlight .nv { color: #A12236 } /* Name.Variable */ +html[data-theme="light"] .highlight .ow { color: #6730C5 } /* Operator.Word */ +html[data-theme="light"] .highlight .pm { color: #080808 } /* Punctuation.Marker */ +html[data-theme="light"] .highlight .w { color: #080808 } /* Text.Whitespace */ +html[data-theme="light"] .highlight .mb { color: #7F4707 } /* Literal.Number.Bin */ +html[data-theme="light"] .highlight .mf { color: #7F4707 } /* Literal.Number.Float */ +html[data-theme="light"] .highlight .mh { color: #7F4707 } /* Literal.Number.Hex */ +html[data-theme="light"] .highlight .mi { color: #7F4707 } /* Literal.Number.Integer */ +html[data-theme="light"] .highlight .mo { color: #7F4707 } /* Literal.Number.Oct */ +html[data-theme="light"] .highlight .sa { color: #00622F } /* Literal.String.Affix */ +html[data-theme="light"] .highlight .sb { color: #00622F } /* Literal.String.Backtick */ +html[data-theme="light"] .highlight .sc { color: #00622F } /* Literal.String.Char */ +html[data-theme="light"] .highlight .dl { color: #00622F } /* Literal.String.Delimiter */ +html[data-theme="light"] .highlight .sd { color: #00622F } /* Literal.String.Doc */ +html[data-theme="light"] .highlight .s2 { color: #00622F } /* Literal.String.Double */ +html[data-theme="light"] .highlight .se { color: #00622F } /* Literal.String.Escape */ +html[data-theme="light"] .highlight .sh { color: #00622F } /* Literal.String.Heredoc */ +html[data-theme="light"] .highlight .si { color: #00622F } /* Literal.String.Interpol */ +html[data-theme="light"] .highlight .sx { color: #00622F } /* Literal.String.Other */ +html[data-theme="light"] .highlight .sr { color: #A12236 } /* Literal.String.Regex */ +html[data-theme="light"] .highlight .s1 { color: #00622F } /* Literal.String.Single */ +html[data-theme="light"] .highlight .ss { color: #005B82 } /* Literal.String.Symbol */ +html[data-theme="light"] .highlight .bp { color: #7F4707 } /* Name.Builtin.Pseudo */ +html[data-theme="light"] .highlight .fm { color: #005B82 } /* Name.Function.Magic */ +html[data-theme="light"] .highlight .vc { color: #A12236 } /* Name.Variable.Class */ +html[data-theme="light"] .highlight .vg { color: #A12236 } /* Name.Variable.Global */ +html[data-theme="light"] .highlight .vi { color: #A12236 } /* Name.Variable.Instance */ +html[data-theme="light"] .highlight .vm { color: #7F4707 } /* Name.Variable.Magic */ +html[data-theme="light"] .highlight .il { color: #7F4707 } /* Literal.Number.Integer.Long */ +html[data-theme="dark"] .highlight pre { line-height: 125%; } +html[data-theme="dark"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight .hll { background-color: #ffd9002e } +html[data-theme="dark"] .highlight { background: #2b2b2b; color: #F8F8F2 } +html[data-theme="dark"] .highlight .c { color: #FFD900 } /* Comment */ +html[data-theme="dark"] .highlight .err { color: #FFA07A } /* Error */ +html[data-theme="dark"] .highlight .k { color: #DCC6E0 } /* Keyword */ +html[data-theme="dark"] .highlight .l { color: #FFD900 } /* Literal */ +html[data-theme="dark"] .highlight .n { color: #F8F8F2 } /* Name */ +html[data-theme="dark"] .highlight .o { color: #ABE338 } /* Operator */ +html[data-theme="dark"] .highlight .p { color: #F8F8F2 } /* Punctuation */ +html[data-theme="dark"] .highlight .ch { color: #FFD900 } /* Comment.Hashbang */ +html[data-theme="dark"] .highlight .cm { color: #FFD900 } /* Comment.Multiline */ +html[data-theme="dark"] .highlight .cp { color: #FFD900 } /* Comment.Preproc */ +html[data-theme="dark"] .highlight .cpf { color: #FFD900 } /* Comment.PreprocFile */ +html[data-theme="dark"] .highlight .c1 { color: #FFD900 } /* Comment.Single */ +html[data-theme="dark"] .highlight .cs { color: #FFD900 } /* Comment.Special */ +html[data-theme="dark"] .highlight .gd { color: #00E0E0 } /* Generic.Deleted */ +html[data-theme="dark"] .highlight .ge { font-style: italic } /* Generic.Emph */ +html[data-theme="dark"] .highlight .gh { color: #00E0E0 } /* Generic.Heading */ +html[data-theme="dark"] .highlight .gs { font-weight: bold } /* Generic.Strong */ +html[data-theme="dark"] .highlight .gu { color: #00E0E0 } /* Generic.Subheading */ +html[data-theme="dark"] .highlight .kc { color: #DCC6E0 } /* Keyword.Constant */ +html[data-theme="dark"] .highlight .kd { color: #DCC6E0 } /* Keyword.Declaration */ +html[data-theme="dark"] .highlight .kn { color: #DCC6E0 } /* Keyword.Namespace */ +html[data-theme="dark"] .highlight .kp { color: #DCC6E0 } /* Keyword.Pseudo */ +html[data-theme="dark"] .highlight .kr { color: #DCC6E0 } /* Keyword.Reserved */ +html[data-theme="dark"] .highlight .kt { color: #FFD900 } /* Keyword.Type */ +html[data-theme="dark"] .highlight .ld { color: #FFD900 } /* Literal.Date */ +html[data-theme="dark"] .highlight .m { color: #FFD900 } /* Literal.Number */ +html[data-theme="dark"] .highlight .s { color: #ABE338 } /* Literal.String */ +html[data-theme="dark"] .highlight .na { color: #FFD900 } /* Name.Attribute */ +html[data-theme="dark"] .highlight .nb { color: #FFD900 } /* Name.Builtin */ +html[data-theme="dark"] .highlight .nc { color: #00E0E0 } /* Name.Class */ +html[data-theme="dark"] .highlight .no { color: #00E0E0 } /* Name.Constant */ +html[data-theme="dark"] .highlight .nd { color: #FFD900 } /* Name.Decorator */ +html[data-theme="dark"] .highlight .ni { color: #ABE338 } /* Name.Entity */ +html[data-theme="dark"] .highlight .ne { color: #DCC6E0 } /* Name.Exception */ +html[data-theme="dark"] .highlight .nf { color: #00E0E0 } /* Name.Function */ +html[data-theme="dark"] .highlight .nl { color: #FFD900 } /* Name.Label */ +html[data-theme="dark"] .highlight .nn { color: #F8F8F2 } /* Name.Namespace */ +html[data-theme="dark"] .highlight .nx { color: #F8F8F2 } /* Name.Other */ +html[data-theme="dark"] .highlight .py { color: #00E0E0 } /* Name.Property */ +html[data-theme="dark"] .highlight .nt { color: #00E0E0 } /* Name.Tag */ +html[data-theme="dark"] .highlight .nv { color: #FFA07A } /* Name.Variable */ +html[data-theme="dark"] .highlight .ow { color: #DCC6E0 } /* Operator.Word */ +html[data-theme="dark"] .highlight .pm { color: #F8F8F2 } /* Punctuation.Marker */ +html[data-theme="dark"] .highlight .w { color: #F8F8F2 } /* Text.Whitespace */ +html[data-theme="dark"] .highlight .mb { color: #FFD900 } /* Literal.Number.Bin */ +html[data-theme="dark"] .highlight .mf { color: #FFD900 } /* Literal.Number.Float */ +html[data-theme="dark"] .highlight .mh { color: #FFD900 } /* Literal.Number.Hex */ +html[data-theme="dark"] .highlight .mi { color: #FFD900 } /* Literal.Number.Integer */ +html[data-theme="dark"] .highlight .mo { color: #FFD900 } /* Literal.Number.Oct */ +html[data-theme="dark"] .highlight .sa { color: #ABE338 } /* Literal.String.Affix */ +html[data-theme="dark"] .highlight .sb { color: #ABE338 } /* Literal.String.Backtick */ +html[data-theme="dark"] .highlight .sc { color: #ABE338 } /* Literal.String.Char */ +html[data-theme="dark"] .highlight .dl { color: #ABE338 } /* Literal.String.Delimiter */ +html[data-theme="dark"] .highlight .sd { color: #ABE338 } /* Literal.String.Doc */ +html[data-theme="dark"] .highlight .s2 { color: #ABE338 } /* Literal.String.Double */ +html[data-theme="dark"] .highlight .se { color: #ABE338 } /* Literal.String.Escape */ +html[data-theme="dark"] .highlight .sh { color: #ABE338 } /* Literal.String.Heredoc */ +html[data-theme="dark"] .highlight .si { color: #ABE338 } /* Literal.String.Interpol */ +html[data-theme="dark"] .highlight .sx { color: #ABE338 } /* Literal.String.Other */ +html[data-theme="dark"] .highlight .sr { color: #FFA07A } /* Literal.String.Regex */ +html[data-theme="dark"] .highlight .s1 { color: #ABE338 } /* Literal.String.Single */ +html[data-theme="dark"] .highlight .ss { color: #00E0E0 } /* Literal.String.Symbol */ +html[data-theme="dark"] .highlight .bp { color: #FFD900 } /* Name.Builtin.Pseudo */ +html[data-theme="dark"] .highlight .fm { color: #00E0E0 } /* Name.Function.Magic */ +html[data-theme="dark"] .highlight .vc { color: #FFA07A } /* Name.Variable.Class */ +html[data-theme="dark"] .highlight .vg { color: #FFA07A } /* Name.Variable.Global */ +html[data-theme="dark"] .highlight .vi { color: #FFA07A } /* Name.Variable.Instance */ +html[data-theme="dark"] .highlight .vm { color: #FFD900 } /* Name.Variable.Magic */ +html[data-theme="dark"] .highlight .il { color: #FFD900 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/raft-demo-examples.png b/_static/raft-demo-examples.png new file mode 100644 index 0000000000000000000000000000000000000000..d9dcaf61d933e84f762ae1a02fed8e1249fac63b GIT binary patch literal 324598 zcmeFYWmH|wvM5S|dkDc<NYLOe3y0wD?yd`mg$4<(!JPmBg1fuBySux~0xsX)=iPh8 zcyFJd@7JAU%vn9VyQ;csR(Dr-*9=vV6GuhDM}mTaLY0*Gt^@@Iv+{m_Mu2<Iac0<` zfr3IIw-gakkQ5OiQE&vAS=yLFK}m!rB*CjF590sWPb4QNuMvdF3tWT2$dfLQrBSWG z_$4SDN=jO|5Gx8h?;nPsW+M81vKFdpp(07N;yxG_%T$+cK>-~1vB_i2bN^+3q*ed* zai1}+(a8)-A=)tf`(hy+6n7V|gN+50laV7*+|3sfL1>F^F#{*^uW!l82vDX6FY;hF zfR;$35##l()0;1rEQ5U42dGfL^u7dpM-pNvD7W2^9x&7=kKb!HVwngm7-onyy-Y#_ zdn{uL70nUTUkFL-L!(gx(~*84C5&R5LuFGAho_7W{_vSe6mtFI2rE2L8sp97#es8W zK9K9^m@lGMA7qnpmys3W`yfMbH)v*#Qk{d{SO|kio?~-Y^5z75t=}<`4mL{e6x$8& zHZo-&-lMnnXo&b5GmbQ!lS67P)JC&0bZQC-WJHx#Sn}PF__&$=0S<~fVHgc5*am7* zB^iMAd*(S0Sy&@xb0zoEpI5ELh;9f=K3erj-295X(?Mhed)Ro;Mk-Ge@l`4-?SXeL zW<2qukJqoS@-<}oF}Sdrs8_m@YB~*5d*BZOOjZM8bdd?WC~r<EdEp{PSRBdVD3d~l zkvK*J(Qn-T-HH3T$Y3iX0e+cH_~Cs?N->n(!ChEb+M_Nca2Jf}t40bnBZ(S!ome~| zx29hUy!e}?_1liCq|eI4LK|<x!k61E!FU|Z@&VNOF_Y+M#hzYUAs7T0p&y8O6@UB= zNiY$XJkvZj8Aat044|0@pm+_+XHX&~e%&K%vZ8(Y(N1#t!^B<ZM@tg?)$iBg3bo4` z_`|C;ug4I&3m8W<1o*{^dKG>tE<$<?-XQ!=`AKf3d7A|jZ-K+)BN3nx6LScz7z*jq z##00O*-!C~0%9Av2A(tK_<2sxE=*ynP0~&L-{JPwso4q;kv*ADh)o7jq(etjZRKe7 zfqJ?ZP%8va!EFw3W#}iDl}x_`&XA3p1yAoArGjZ+Ig+IGO~hHGh=lIQwBO?WY+T#Q z_5Z3@t2!y}C2;U+`*o`ccpyUTUK=g|uelU;Fw4;yol(a76>24jOqIDBtgaY5blaP? zml|yxK{>rcPQ(5_Fao{Cw8lebvRfMG3)>Hxi||+Otk)*Q(i_f`bd@9lS^YP`&Fs;G zpB)Lsm@^17(m%wUzJ!(TqKdQ?kVRatJ2&=2T~PZCMSy@DD*<SHAAY=^rH!4i>)g?P z;9BX74ZFqy>fDh)At?mwhY>OPdnU1$3?MdqWZZ!F?{xo!x+TPtjI^JQKK~bY1j?yH zSOG<<Q>p@6#edX*VBv#nfOj@xjsNxrTLToZgWVp!EWz&L<Bgx20hG|E&%z=HAw)(I z8YHeEm|IZ~B%Km4pTo(?{z|}o{hl{KXo8^>7EhWmpq7XB2;dGR6dxna7@*(zFcr`u z#{U~vO0-r{Wacv<vMKk~f(t)dPKb3vrv{2%I4Kv)g1rgZ_Iq?L&V;oE&eO-!eyIE~ zW+u!LBB%b3l@@fc()~RPyd^NS{Y8~<C9tp4>J<znIL{%N4#2UV(@hW5ZcKZ$%<%E< zq|Jl}v=$73Q2kEg4etl_kC6s~6=d$8H3CBeQMyosnSZBOWZ1{pBl+;G2D*L!8Y@)u zwW$-tn361+E~_K9BC#UED|SN8|Mf0Tf}HOcU@+~AtWn&RL~q`0o^D=l-f*7X6g-wH zmN6Dp!l#5USihxyOEnJ3C6Li1sb&_T#IO%wo5(w|rATLr>Is#R*2gf$HV;C7kqyJ@ zP5UfAm`9hVqJU3bK<)Moq@t=StIDTBRfwd5Q>a#Wrpj0RBzQ}v8g3<xnkSbp^>_Gh z?Tqn^_6#Q*{^+kgap~W?lZn$u7E~7Zmc%m$R%ljq>}5+{wKTP2wZm47vx7(2N3Tc9 zv&b{Uv-idNO6RjA)*4nYRu$}fmMWHnQw_f-%O&RtbMZ=3avNow3ih~1&9%tsrArOy z%hY1$I7%_Kq7QIaBZwsSCvYaM4+;)em%iK5+9tZ@yZ*hiJ9Rzf2he9!0z-kUE=A60 z$Ii@5K@<VK17;-#C&oJFUigMwUA{1&o+%7eGKOgPavr65`J@8voM!R+)H5o+e7y?2 z#5I~$%2v;(hPKjIm>0aKv>W-u`=}YBL-t>+RVF)avGu45(AohS0gG_UC=B>F1o(JC z_+cpX1er`H>_)hcc&7NJ%s`_VV;RmnW^CMYW_~M3`rqywb2C=jWU3TzN;pbGN~O3` z%2P_{e6@VU{Ga)rGUq9ZBP*j*qjSl%DYq#EY2vBl%;lWzwnBCG^&8qH)m+AxYg0ok zgN~J^al5Rvy0nR^eyXjry4I<+<t}9|wYRDSIg!n>iKAj^XxcM#y@?=gQ_n%PTBlmf z1>2fqLQ&jZW+|>Bj~P_YqSkirHt*IKX!szJK#|`faoxj{d%4PD<@nxaH|pXz{Wksh z{XE7seG$aUT=}LW)>PV5QOXI^s^+OqA=h5}X8Y>Kr+rs_cKDvtKhHiNRxSJ)-3>2J zD_*GWtnD9Np`W!4SVncTy~n*bJu~M+Ao@Ub&8Nl3@6qJ32R^%oEDx{I4qF$@S39U} zyKh_d@m+D;nt6h5&#nxg@}6ui53krSO`p}C`EOXSx1Vh9J&!=!S%>YzZ>B$te{gLW zbUX`=cQpF-`&VR7WdF*(Gbr5%+!)$;Ce0_sBfTZ{{>|{aS|s`>Mpsw2+Rs%3yeh5| zpxU~7{iRcX7D_=-|4;QGfryI8PvSM-b7Hs2)Wz2#t3p1Dv5N*+sNEbLcrvRoH!}Om zkjRCkD6nrzo+K}DSDJ4fI81N3_O*tihv;MYQgs4_QYR7%Gr71c87{q*6qGcT=6fbF z_vKn*O0wuA?Bq!QkmuXTA7*{wwLHx`8)S$Jr_#?dVmIB3cT&DBFq7xwmG#E=TzXXz zwo*D8n;Ac`aAj{6h)k#>Ese$;(Ci0y-fov|-d(hSO<M{M*A7h&$5~of)y!`$ydQTV zdP3RRN*6S&bWTot&m{*XOC_Brc_)0_G~9o=g9Ej?=r#ur#iq^W&c7^%hKcGnW;R+o zJ@;&Goqqn#B07~`fQr6|^Ji{KKM(!N`>Oa#U_>Il(l>ukW^*LG+Qytd<F<w*Z=-(k z!Dj5Fj+@d6dkoAp?|U`}9%!in+g^|E;f$W^eQGl37ar;=`RR)d#7@L&(~Ykw{4-Et zAvBq*FYNo5QH>TGXI<l@*8TdkSEzyHv(o;b<0K#Y&BSy@7dm>zmzId?6G*wSPw9h; zJ^1PB4y%loqm;btOIb_XklSn&%V?E<m3T3kI%k<-**DE=*VCHX{h|Iuke;|EmF~PM zhT>$)n%B$FZ5Hig!hF%kqB|R=g$n2H=g5`FB+f@$s|A~eM(67SdVhM(`XD>olDZOx zb+MJi_ESk&qtTT072o3Jvi4Tz=Oisd+xe&k0M+rz(UB|uiH>6Qob<7$tL)lrC69%h zQ-F8(9A5<AAJ0y`!?pePf>$4J{fD-?m$PRAG!4Q9`xu{!JPgb9*@gKY(2<p#-5D?2 ztAcj8`f#TJ;cKBSyJab`#L2xEV<<L<EI=GN>W&x_aLkwK08w17spFxd%xv&*>>9jN z-Ygi)MC10}ig-)OHE$iS%e>}wJ7{@+%ttQ6!DnpJ;e99=&VpaoT_#{`)U`UhIIuV* zoCohzo$qd|`<JD+4K;aeYR%M+9V5<z){?z)k16l>s<jvE^;XB)`RvU*b-Px7dE(y> zofE8-zb1{g-#ItB0(?H*Y;1Km1iKMA5Vg9~fgz2}2Z*PVkILHxF5~H$wReFx&b(PS zEzds>dIdq3`l-IQ?v^iC9qT^6`X^}%^Dj~mtBczzP7jdPdX)F_9Pza8o9<Y%-#rEK z4gbl*!RzHnL7u!kyqOoJciDr{^`Bkqhxz6J?tp-=b;<MsNCp+Z4-cVQ%3yyaqKu;f zpcE*-otZfbeYuz9_Iv9Idrs5Q`A~QZO=9=~3gaT83XubOK;<D3(7F8rb#%hJ68}}w z%~k0kr;7l2vwLHMKm<yH9?A;?9SzNfkPxB-9oGumQK{3Lp+H&1bASzx=i=NBBQVtd zL5|mfisJ5L#rv`W(OyE+2?`3E;-CA2q!RfB6x4?-OBD@g4OtnWG02v|&;(>;%HVEm z|6Uskiq{?Zp0qV}HY9PkwXt&oy7PVgR}J8M`k!pZuO$Df;%v?LRYO*RL<Hn$O2W>- z#=!KIABlv7gxAr;45;*7?7z_8-}t^-I6K<|85!N&+!)+g89<KajLh8J+>A^tj4Ukl z?=|S1z;@1t?(}v}WdA1e|Iqnv>SXL_Y42<avLpG2uAvdg#hLHx*MAuO@9W>~G<CQ9 zKb-8G{!6TP0U7@(VPs}tV*KB<-%)x0$ptD{x|`Z)e7CeUwR3vs!OzUX#>V?Eg#TC3 z|6%#xP&NM>Dia&ae@FdqMgN7$%lMB7|4pQS>+4^+?+W8b;${5b%I8PIE9?+{{~m;v z-{n=_;m3bI&O1PSe^CD$zNbG1v6|VqZ9zc^LP>rXQgQ!q(u$g_Hk-iU{z-)?HQN?A zB{_Z|<IzXX=|m4>`+PUz6t_PngEaG9<hOUT({m_Nz7xpfi?0WaY*{wBa1X-dcZ59} zg}hvBL=v$-VLn<#Hj+g&MnywtAM3PK*9?k^dS}$9m(n$l)2r|FJhQxg+Ruw=OjP~% zz0BWAU&?Cd^*m48zwtxBS5ycHAN_xjko+gWE@TkKwPNL;Yx4C!Rrwb>3_?h^ER4{n zPcSeagarS;K_ThKE&F29<X;K@ncqLe&^TlNBaMI2&klO$RvKg=rS?BH-Tw#I%6GW` z+?;n(e)wNW(CYF1ziA@=k6PHW$He=eB>Mzo74pu_3L)Qw;(t`ryOK=)gLeLl{{L0d zKbG`=mGu9cB{5kN+8KjTJ-W|-qNFgt$bj}n4pVu^0@gNaoLV#s<R{m6WZ(O<5kf>{ z1b7;}9NHU${-3&?0tkk3VUuIe#r7rB?Kx|Gi*NU>SaUv(;iBxh{B7~sYWk<%^RICa z&KK9x`*B9EL1Q~E*4O8Q`QM2kcm3x{g0+&Akxnj_lhM~Bt@Gly*Ibvs-x3#Z0+L#S zqB9aw-bSX!FY~jwr=NG)Eidr*#_sqpD_L2mB?5t8nK-s;1!hlHUwYf`d^m33u9~9w z4|SO`2IWe_d_W_|o`1&)(%|sg3bePJANb%5Gjm;n4AXxwpQj5nk=SQOw_H}ux0xs1 zcj&Jjv9~_d-S5h0^^rxL^Gx_Y{Mm1v%g}D^rHyje1=Y{MchgwSHos`E74Z9}aqjLg zx|as0wvKz*h+#Ei$pbI0v)s{3+LpB+7a09}P^$@AAN60y*JSlm&PTteaACX&+QI3A z7mwY`Mwi`Rz7H_p{9g7sSgqZH18Lv4!w@E~y8m=LRabY{Z@p2D%Os1Ff{#GfGG2=t zF27@V>633gyjBN$3pDof)Cbv`=eT@F5k5$JdTMID%V-uXZ)5p(YZb8<h#rTw3<KPC zLjB}UJZOtL5km*#*M*So?(O*@#J=Uji_!A9R*UHH)=SO}J8T7SX3i7l?fo6&3k6li z7PMMtJM1v$V{1A3Lw7(hWOelZ3CCSo1-I|9LpAy-AvDJ&eHd_LeVxRXX*Wa6+~Cz+ zek6vN_!ywd**`@7y5XcZ&F*8|Jy^*#&CoIl;$hO_Tv|)QBj!7)uXB0oK2I#yHLVz5 zx4A?~XZF$G)p(SdR*HI^0;RLC_xUoAf!EaE>Yt6kye)5TmK5{sHv6d6C>}>)hKH#t zklRRe8sPC?WF2x>erFejyL5^)$elR{4KQXs2~?D&=Qzp2-KGlZ2XXaxe5l0L=O()3 zWXr&supiECepx*RF&}^%KwC>H*wH~t?dB7}*9B8WjRJe=;5jutN;PrZkeA`%An#yE zM!LsrHgLC}yo=+f6k^e5KR5Je>4HqFgZyo6yW$>^U&tR}F}Mt$?{v6SAt#qXH|&ks zyl7-#OcAHv^%-2WFB6}vmoCD&@Wh`XvysF~fb|GzdBR|AC^*~_b&aved?0Wo<U?+& zfKoCU=wLmSul*0T&$xX1-!^3~{(8Bs51C(mlv*MJ$Ku}mPqQ>v|I>Z_BW+pQ@s5yg zq)5!5wOklsnc(xOHRp3FK-Xu!tt=T64gjUAi#vCA?scOllIReFH}m^4pa`uN;Eru_ zH7V5Y^c*lWsIQKK{3|~<V9e%;@8^7%gR^5~8}3nHoLuwdc{pLui@dMMq~j$p_;oI@ z9kdRIcJmZ$@0e#8)MdoG+pr%yf%w#UOstH1-gcTBmI&WWRo;z?n5hC3B-Pl*Db_Ey z&Ej?dehpe`#<Cy?hOFI{#_5#zQOiFtg;vOBEAY?5`57iZh&TQj>>ad3pUE%#6;7gn z4kI_v#zz$+0+05XG0vMl#VDm8hdH#(uoTF(BBl@djsGRj)$APYsTjX2L60h@Tb7&i zYyZ4E*NWGfiXmG4UeZYC^4XsxYNB7$wnunwPXYb9n7F?FJm+u1KXi*usA6WX2e5>e zl<~_i${$zYjd-c!%!L&%$75~MZ~T_GiVx@-7oV=$wGItMCn9m+Z+<CnZ6uacKOLqe zSP=T66=C7I^j3u719+zPL7H#SzS6^MMQUQ$6n<tqC#roJ%V{s5fazLLgB&eQ_-CNd zB|1OL2S*fdveF)=^zsYu{U><Hxqo+a>TGpw;MD@??m=CzcCb;{+wt&+)*O(#oHUuK z({*Lafr(pbFeY>g!*XZpd#A~4v1QG5#b5}1!TERJb<c5Cc3ne=PwX<LE<@g{B|^kQ z@xHFM)t0~rJNHZILVW?LZIER_YO#KNTi^HLS5<3W(7t~8I_8%BacCVCY!tr6w`o^$ zaEDki?MbIzD^v>GqZS%UkJVRzU7d(YjWUny;AYVH(%6DLzTHej%<HL#OSbf+8MX@E z9eOMO7qNg-$vc_>C9oMbz8Dur1(kiwYSVV4JCd}XEw~e=-v>|@pHq<;YOm7sExIkw z?MLX~+WCiwa;lX)ak(|QKtf_;+SvX-`U9b&yjl%>UnN~BKQ?nkUj6Yw2+=DguKUGG zDtJe|h<(!vQQoQJb^UeaE(8^g^w(@8CQ<L{j_up0mtR40S{kP=-ddKmsA;&t1Oyhj zaeGx*Jn7ZzhN|L_T2%7~NjOj2&E)Tmm3|D|HGQTAyVN+t^{6R%r3J1nl7R<-aYk9T zOuI9T#q=J3LYyv&QpZ@sgN)l>B{%GyfCKbe>5fpvAp6<9REy%}ouimP(9T!H4^ncg zn08a$h!T+P_wjnZeS3<rr#RzSdjCZo7D)ClL39G8^YBSYJZi-Rr8p!JP!2=I3sz&} z8E%^gY-xBuyRVQj-3T{W<eVgv(zf25T7LcdM1h*oQ_*zr)H7v8#6(&jf5-o%zE<#h z^}NwP>H9u#jy^wUt!(OUHGo0cr#x$K({~P_Y2Bp0b0M#N+4AGZ{nmZo#beYcl@`3| z@tged^ur7{p8&T(3e-;9kfJXQczNaL6;FTl<X&U$L$BYU?DPmPwTP|n?jT+r*Bc)@ z@L0!h`8^kLTBXP4>+R7XUeWcZ=C*4a3(n^wPGh(HkNrvRkxp+^30Q3?Z7chcE!JNC z#M7<U{N9;vN7{^@quN<FPius5TITMo<E<TOzKgu)IzD9ID828ATdfOxmpmVm#}MGu z)}qUuR(Lt@C|8skho77E39o2k3gB_Xe2&&RJ=7st)!XiiCX4NWU865dCK1}?wBEkQ z8Fz!lr!zt=;~5b7%O~i*{SST9ehp=S<(7ii-~G^b;H;*b@fLyRo}O`N{#*Y0_<D23 z3+IxL6CVTw);3<6$04C^uiSg15q2efpgAgjjFt3-X7l3ts@!RUv=8-G!u&X|!QeHl zBrl~&UGR32-f*36N3`O`Jze(YXOP~u&GwwA8(!}Ncg6nmnz+ETdXbKY=JedQ_u0v} zwHx%T;|%lJ$SrbyK#Tv_^zlyuj&b>xKVLwqgf}fI`|j0a9F;P3!LSjn>|0>-@rdCB z(Qtak_}+!IfHm9=Ud)Bg+aF=*EyP~86`WT@`A{j3Tmv$5^gi~v3mXIhLaB$-W**gJ z83`Fd2ukD3pzE$^u)fDheJ6c(YwmK(_2u1ctPtp86eDKoaIGXdV}F!am%_dsYLyHG zfYXJEv|n-#@y+KvPER>&n4GVy&qj$rH%$kl83dRbykH&ydVJBBzNfapaDAl|<Th~J z>lYr${d&z86EqaQmO$Jzu?$x)F`nGMMzGL0kcM|b`IEon<RZ;@O~&AAfk&^c$}c#0 z{lag(&{|PU2rlMrUkd^c@P1GY!%;Kd8U1vAm|bq1%(Qs1;kxUwQg{--9m96r4kw=< z0Hm3RW1b%JnP`9Gm}$3%qq#xG31SKGLv+O4a;CZ1eGAb3`8y*W+S^oEXN2-$co-*a zJX1INHPUTUzYM8OCaZmpVCAt^!Brzg?nLU~M<vF@heGY_n!}F$Yb$#vj=GmF$B3GC zmXi!H{{cz1=?-d)tOYc~s-Iy(_4u{fA#xU;$0Y66TTz)hL#EIa9l-C@8t$mN@FYfV z0t;M0o3~BZn!3c<TP&|1b|g_lDkew-w~lyQgzP)S<Bq+dja`?lZwU5+-*w|UFrV;2 zecFrX@5uIU@qvmA{+)&Tsh9ufQ&Id?EPQuIz~OXv8~p@lnFp)~+|npF_mhU++C})9 zthxS9DL3}o1Z1Oa-NTptzGUZ>)eWGullUYc2j9xNitT0eeo(s{$P&He@<IE9a^ke{ z?YVit9ij)pn^~r}9ls~rRPcfrZ%i?sd4R5n6y3n!C9%bFaOYlz%PaWzYM3p+Rt8sV z1R^rgu6am0tW*P(7<~Dgx7H82o&c`glAV_zztNGH57mg39}mQ>!4}9P4py6TL98I0 z@=ub>_3#j?<pv<n2o%LB{5(%=#?!-Aw7V>U4`vkS=cite8+Kz*+YzeVbBLQB+iN!q z+I9ol>8U|PrdljhgpD2H_Q=p89CYKzGI6s6b<r_tv=T>o@rjmqaU(LLc#!h~>kMh~ z%icJ5`25pq`F`_d)pe}4i^oE$hv_u$3(t_}WRp3&XoXe)n((e^PH_9NU=px9G<frw ze%T&*HKhG9=mLd?2a<zTf}&AeZ+SO@3rOB;+8v$|3UwtK6_`)@3<IN08^qLRO(EhN z%pbonhN-ULf<g(JpY5pN6mLu}=W`mUXS;N)C&HB~dF%7e=<7U>x7)4u2;Z6rU!DoW zM|s<dl#X0?m)^>5TEwg{O9CnQJa{z}!#~_&P!XFkEMllE#1Kn}9Li@_uLz6`7ba#^ z+)lT-Bn{>4&!pTJlw6rWHp|iU{*0@sLPqCb+KTpv`0(8_ZU4H3V{7Z_fUoc>O6`YF z70h)K6@!+4nLMl-`tBF?7V!sC@Sm@#-R#NmZ3iYnJ9qj$9AoQ#8D5ST&?^pWzn@Hy z<L@@{Uq1!z+u$+;Sx#|Ae||wlo!+ALFr;-b*RF1_v6K^3-V%lVF?d$HXPXdz{%4ru z5t_T);|xsAOB*xQl-ajv2-REJY3F<U_1=`|8mIiK8GhTtJG*>&y~RsWfl8;B7bW>( zxi|p%L-twg^Af~Gx*T~c!*MeA!$k%?df(0C3PtqKQ)(d&2JM#;JM+X5Bfz*u$vD2# ztug~(WOw1)y*(N8>|`Itu4Qt#;!$&=A`kKF^4i?`dhKX?erF3fdP~3lh`B&!XG<EX z6mkVe6P{Tx;w^Fc!&qGmo{(oNk$Wb9{yDew{+n}?|Ih&Q8g8r8%c>tQ9Pr_w!jN&o zYH#TM9J=fEhp(uJyNKsiFE-ih+4E}C>7J^+CaR9g^z!`i{aJ80PoeIgLxh9zAT;Oa zXmPf$j0$oJ`%_42Tk=&hi4zVThecyuG&y8sX0CN54o91?v_#<<*2zgAAN)F*kg(zH zkZSa_rHM~Aw?i&}e~CnsGLCCuFa43^_}qTDWLK`kAdc?*K%3(eY!aC1X5*rt%v$sI zH(AFJzb3%F@q=^jo~g_j)(wiW#~(6=5bWnc7l%tA`2c;%l>X!=0Un%Tp9`>AH`R>* zZh3?4M|OruG^FE7kK5{=iUaQW3F3^pPc|?~8G(mT_x+eQt;+kW2lXe%oYI}r+8ZS! zsKX#M8@Q@)o-}p1_QsNxszLhhWW#S-vQkK|G{5h2KVMA^F}7@RZSZidvy3|pr}<3X zp2D6~?4Lm}MdS+K#0nqJK6WuWz!M$#^`G0YTy?Qkr<JL!OK>D)&-^a`OUV7cOtZO3 zV$;Ko_vF@Vf-CM-qhs>M;<}Tx2@o_GXLU#;ICeT}S%yTxw9Cf6Y8V={ewn;Yu8A16 z#?nm6!mRoeKj!$=(1ov>5X7flQ$5O6LL4~IX0zeAjolj7{ya8LYgj*=xyr@EjIy0W zYEsa-ZhcodhOIGs-81jPYY(S{uVQh}-_)zW<R0`SX4oe<X!w0Gp!IbQga<AO1$w;# z2%H#lBYTDw8K(LpaUz~puDF7@Vsbi-skYH)84o4lG<=V}#k{eV#Rn2&jfg6y#1aB( z2)(qj!p)Lmdl<3M-M1ZsbX%VGlWU)f6SH1)?b9|TH%Y>iUId5j+HX^+UZ|EmR5Tm) z30uOxfim&9UK_eo*6jvz6FllIDtCJmsLo^LEoa8Az=_){7VGgC*87~G1=Rf|R9wzC zl0LKMf<Q@mTLaoxL83A@jZ))*EcAe(e(ax7BOQYP7v9`*7i!%=99au-<_Rb`a)3v> zBM&#cq2Tkxtx$>=vfi8g8>LuqDYCy7v&@)A%i4Lj9~W@rOtWyR|3JbY+Ro0_JAW3m z+NL--QiBY-$+8FlJpfGVGPv2EmfH)4G%7rT1?<1@dKz$@?8bflL8aR!yd0<da0OD9 zYa3}lew(XbR9Z+t?h+cGSyX?R=NMHtHGXg@=6H}MkV9@8)vxK%H$ufeH$d|#d0&#& zmPO&oVKLn#>6Kl%ZI117QQk8p=eb7nk_MamHn;t;+LIk8cOboMt<N0=!4jS5lxGw< zC6=JK{e)QEJ};ycdgjt+gbcSX^SnrPVB14g4d!+X0P*EUcJ`$`+CNXEkn;ev<{eJL zj-Z^eVXvToUfZl0uN@ntzMS2#-3GnVDBU&aqPq*e_Z3?pLFD+98_03{M17fZdU6X) zk7&Jyh#nULDg#BOoo&I*17x5n2|@?xM6cMhJOpGwZlcB;&ggz``!`wqGr2b=D+!7R z4H_!3r7CoBOuA&R3k1F}G>d8+o_+Lcb~}xP;|PhCMvspbcXZyYq;VcZJc6UkMbOJ_ zT}Hvju{Dr`vFATA;b7cbhQrj^)9+ocq)yNN-uz?F^kKtsGH4$n#f0(q`CHyK+Of>M zarp~f9<hz??hPDY(`FMo{JQPQ1BF%c`c`RqavsIYN2)JJEvTG&`A0t2PyHgg4S*Yi zotAIP@F&x8fL<~&jg1pU%o;(u<6vu}v@dq>OdE6y#PGK+GJ5k>S)v@S{GXRNEu?E) z05|XkpADdo!xcDq=n4qX>MWHEo*))mXeLW~HWeDHD`-tchc*<L)XIGV!K34V5pp|I zi$68HnZ39C3Ce+UzuV9(IO(Mrx00Q=T?vD0p5*!Cyh+v9ZsLkSjE2FHcYJ^Pf~b@F zxbSz%<03B`Tjh8!f6G)|I$(%1ZK51{ED68Ju?*gNsR_t|aSpAkAoQq-@&WQ8O5jfa z+(MA3XQizGSA)<#z-x)HTELVpih6?h*nb7Y?ZQXNV0GPuTrxh7=+I!Os#CA?3+jpr zU(S2dKu`oK<M%ALy?H__%Ln)rkKWJjg^TomRj@gQpD+oz*qHjzI$Woci&t(wT*eFV zqn=+bKdm5!bpzDOmW5G8VDVX9gp-Lf6imnswTN7~IosGm&Nzo1glla1vOyW&89BYx z<qvu?J#@?SrLA^44Hg_Z;QC%BuHo{%#6BSYss2&OYb<DBDC9uo&cU{#1L@)#8h{Px z%dF)EkI{7h-71nN^$`ZFEf@jiPJm5#zpiFGY0Fx+ztzUUAInFLxwm}Qr_)-2mSojm zBPHWY>Oz8Xl-PjsuV-FsYjhY;7dJX{UFP6{s`k20;;4Xr428SwKFID!(2m?QNU8tE zK(KImCEz23(jRz$LTJD%WO6_dMSPGK9F2l2_gMr7<`Dj6SGfTG)bXs!9=2fU&bHb% zMWaaL45v@M*)IMEoJL4mDLk{>IHuOwWCJqFQK8%&jk1kfLzBJ8w5E{mKul*ELt{1W z@)*P31uNl}Abe1LC0>2N2v-<)st}Iy8r+#8EVu7=gUHK5N?v+@aykzX8${7h6Li2& z*E(vn@<3cLsAnlr`Rx0I`ln#KSaWl3gJ4W?lWM$GV8#vhQP`9_i`yjFSX~1CJ5FCV z?;@=MIBodUAP6b`m$3w=m&t;_gMTd$=cb=Q!&|I)=A$n9C7j+l2cdIa3rQ5brsrbc zlM36$qsdmVVJ&5uJ%Qjeby5_r;wjC9!-U)fsbExQCjHW7gts=a(^q?N^(|CCj~;QU zdiW5S6oA-(0bmB0=rVjqyI=7N7z~hk(H0|0Sv9&>w&=$0eRuSNyaR=MnL4~8JIR8& zi8uRAqbPqV=ry1Y*ve>|EAdx`!c4$hBrUnZAG!V#_v$mH&SN}m*Xi#AiQmtfXv6|x zo*EDDKQ_tmA7n5L`LH2Od$g+6Nlv;ds6`vHA1#h6@l`}~QWB>)VS-HtP@Op74pB-R zYGV&AI4CtrLOn)2b5j?HE{WSOjVRpeWEH~H!s~Jbqz}ER^XN*4exuZVp1%bjj!6lm zJh_&UT`e1uy*BmP!zTZQ{u-F<ZG0?PCSdaholoSk=_z#=(Q<vWZTf^yjmg;1!6Ep@ zAJ~SK8t;B7zUMxi8nfuVPay=<fpmC(I|$L9wQm}VTh5t5-#LvYQ&A>Pk7m%-AKH_p zudMUK+_T>%QvUoS&zwoZxcW{f`5P)R)H3QS2h&3Y&L7{4{dVPnCPKEPQZv>dpA{iv zt`-t1bv)Yp<m%J*hJ9oyg-|rplZrkWL$3<A3CA^DR3bCbV0Dyb0G9BGyBd~DE7wpj zuNj@rnJ+=2xf2z_<WKFrlhWd{r#P~W1yJTZnh<Vsjo@}&(gpsl5O1lrq9SF}AjWa_ zA{$pNtG|UB^auj967`o%aWkY#%pr$CQ+-jMZ@MQEFMEaczgqzB!KrtT@*POS^bJcC z<uY7Xq25&%gT`!5ys2}1IK#iL1NX%<R97^AY9_br0R&5+wgZT8b5M8*bx*Q$QSjwB z`AH}O;HMWId1hV#vwdKI$|}7$dm`t|EB$(Huls>zYfi%PM;VbPk{E3(9NbS3O_$|z z7eKFs7faicOK!_-Hp)>|e`-cP*D=BEoaWL|prIE@bj|hRDUt_|q*#iavRpIM^+kJx z9Qr{;29wthT&J#znlhlHuGx0fPg=d46^(^olYUi(=xq0E*N=i6HoD!#2{)Odm~%;L zbBl5CH1Zq>;!h3y!=pF}Dccm#>N1^`v^mhgbM$99V|(n_9|2-(^1Dt<$5=Yl0;0RP zmwRJO#vAZx1ZCEZ#yyER-5AHX2#T$-`t>&9<uFpy7#wSEJyXYsc-oZ12MsX*t$Tw^ z(I*}X0<bf=%tGw+imM(efY8Zt3;qUcLmR)YC+X|ez;Z>a)JU-8=XjAMW4a#pSN%1! zN?#UuF-o|~w7y&{-+VxEhB!4Sza%IrWz$XB+{&l<WK4hMQQ(2N&K2E2_Q~*h9lJu> zbx|97dp5#b(eZOGMsDI?k@zT{l?vjI`{=SQlRG?pJHEFSvMMiEHPD41_7~=|g+G-d zw$GaMjLeJBP{CTYw%t@YjhI%Z!Q4JySHQ&9XF(HHA-0J9c#!i2!G_PQ4BfjHyI>sO zdB>q+`NtTa(Bqe?8Y`QyqurSNlN%|!-@0-(>t$4!pV}d=8e#y=b;Bb;!g3$|#g~<` zuRf0A3CM3+_v{)B0&qzETULH@-)E{hUn_G`j-Mv=-z2=<N?~@9)4$Z2J{zOPTt^On zDPRskffV-bxnOH-M`Iq?cc*qt-H4wljP&%y+{oL)hCnG~NW}-e`&@NfP}kM4sRTfk z%+B|4Wa<^dhT|ZK%^(bTwx*%%Qx!!luX#Q9+VnM{0HPD2$2lZ{T2vC;?9`jZ+k&eM zdGSV-{tZOHd`lngOIl*th3`ZQ>q6b;P`|2gZmy{O>xDhnCqI_QFkU)yJLgw~-Hg<% z0JBJ}J%cU3$7RSCDqgqkh|Vs~7L`J*D%>pl{j?$|?Q8|CN-&wzYax#acH-3uFd`az z90WK_r<M6t6O^mGmFXJT&DK4p3nF>VvHS`oJ+Dv@Qvq~-TDRZ+*#4o8bIF|f%66&+ zZN)Dl$d;AZ;>YCk4qEGJl*QiebxXx{Us`%B<=IG%b0=n^2}lzi8ow@M96|o6^TCP$ zOXyd`tYJJoXCbP&Y5Cd6G&rG?Sgc^!U>6Nzr<^&))Kb@F$9BDkuLO{!Oo6G`8;#0~ zzHc^izfZ4o<fa`b=2cvt5oIs!VK&)=%8xS|&*=93LenSH7pPB7)zA8`J~CVmEmQCW z5uGo(^QAa|Zf0aQuK_r370~Q1B$l)FD~-Qz_481Txl!(;1rwkiRF*bBq?V9%c@%7q z4%KBCQ#k8r7)fOs2KKyRPsa8!<7dm4?|OITFw(RHv}J4$nXpNoWBLs)B*u$VI!Vm0 z+7qP`!T8y(OckjSe?~o&Uqv_YxnrjCx?6WH*(8_eV*XzIR!F$AwuGP^h28O(Rr8qz zA%H%|>lS{#z>Bl%?{!Y8ieixah_JSLV>MPN<@2B^a4pl`)ASN(?+Nu>TsH4Hi*ywU zDd7lD_E?}4T@sr0pc_WpI{jHs*5wym?K77N(}=x9zG$lt^AdSA^!C$RsJ9@rNh3>k zw{v<-yS&Gwi7G&C?R@!hH#Y%8<%m6Fj=WVrQ%x<i^w?=KD<iXh81ZyjQA}#l5YNS= zYHSyNlk6?9lBuVIo$oyLo?U^X{!qqOOhV(At}t?d5$3E4F>hTy9=1cx!Rf%CXX7E( z%|X+lx!c*L7DUmxn`;=Jm7Jyyu#hCYkt2nTP51}O`Z}mML$#7z#*>ccd$$Jx4Hs5i z1S*1|Wsbat4aHZuYYmYc`{{<+$e&%Oa7mhQDjA$KL*fZ>QX(y0Qdu|7-*^kix!)%f zRIhZz(de=#swsognvN@*pBqDr#A*`igp6tWEu_YeKTYAJBzLI-%@h3Mv7ekShVq*g zd}hDbSqzdf5~8bn5tX?|wwR3VHLI=euGjKzu1}fzIGu%))<lpSTcDNbu)%-oGB9zw zZtbHXi2tSwACo}pgoPHg-IxG@(5C@fP%m2Si}ASePF#)m6(2aai&xE<$`v)jqH4C= zRr*m-7(&I^gbxgC^r+NdQ`b;lnSdD(X=HOl27InaxHAj~9XU+XuVLEU@5f4QR4wHG z_TA=cz(|pYMA^7C{*9cJtL*^pw$D-f=UstQ1^le`y)~K(m-edYbNbm%x66{J#BGe) z9!Zt8T%l`LyA3hjk+KMVk7c`ryTa&1B0~<hw1bhUvStZeUdry3_EF|qi(?!;SAO1i zDL{sZvg5cEs&V4A@B@jqq1~o0;09!dvL=G@uenvp5oVJ~A-0y_z*8>e?rO@=0_t(E zV&2%4`^E7(GADRoR{Za(8w?WCX#dc#2&{XNiqE5Mxcz;R>24}${5Ykv<}<sc(rfOA zEP!zed4LWF+1z%(JSf_{unj88r9w8WCZOmRw>rVL4Q_VCiV<<s>*vW~cp}xZO<}dV z%^i9!Axm?gByx8Kq0;~va5(jPA|-Qj=($0uhDK|s&4Mq~WuW+ec)DoV$tX@U^5jPI z^jC0kTTu<eDEUH2%sAR`p|L+Cn_jT4%$mSiLc(LM_S`y~yK>O>C#T5IYmsHR)G?Lk z%-w+UcVnd`elAGsW5U+A+%F>DO)$Aua_7r>KQrr2`~4J^JnR`D<-cva|FnYz@>(wZ z2uld^Oq(w}g()mK@vRfy^cQ!i{UJ0~LaNv>C`cdpWekgBDp6BRm{3&?AGL%m=j!s} z0#yD|_NLq44q|-cKmj`1={m=Uo8mqgz_Pwx&16+=h<%(D-~1%H1(2qT3NT~!=4f{p z>4P8-qf8tYu@;aOqjZt|_feW6y2YMX=Mvn|6`Np;MqO0;BQe$l#f8u<?T0Gj2{xTh z<wQ3cma0pL1i)i6m|6Gd<5r`TmEb^8?{4^hZ+moeccjbKUjWNRWW=WuvQmk?nq^?T zDnO6@PVSYdk(zL9s>x!5&2c4^pP_((8*OV7Rddo-RYL!|ji_Pd>x$A*BE`_^3!SiX zs?3F#|Kfs0$7p*qlY_FU_h<)}vAJP?H=?JUwtGN>s$FOn?>LL&h%H<JggMncL+9%1 z1l2eD#^3uD@f<$Vwpj7Cg(wh*76^SF!GUd}BGYeLr!AMh&6gE5;|#C;4e&_rW5kl$ zTTgEDc%O3>QlIMB8qx&ywz=3FY%C5<J|_%cq3X1dX&KH>Y@&eYd;&-G+kc%w>+&8* zd`#c4>(n_yLR6+@9ZcY8>G=nl^SLEETV?@JS$UeB;B+fcy@Z*dP=cnFkHF}$WL~ZK zssleW$I;1}b+w43gDrhn3B0XN7e87cgw^Rn2Bno@S<$2n(*8P@S?#{s_tyEQg+;%s zKXmZ!qgajToN_i}FCKE+mia^lE9>{}))z92=HnTCsp@7qN+uD|K_{>8ylLS^3q+lZ z_GJu1mmj_+U*Qt?(yjrBI~L}iP@XTf_m$Bk=gnXfa{z1LrE&fqNcAD|4c6}Is8$BL z*?e)%#c*+aV8cVJkJMULocz>*jQubrA!APag~2_({WDWw5+dHuw2wuwVO@<~eRM3t z5+S)mlDVB2W=YX(@lQ@WkuGc(gRu^oPs$vS6O1n9e{2pqQiBkF)a=Q|=dv&C5hoEZ z`#r*5PFxKyQ2eYQca3AU@w$j3M^u^!yy@Psb#4EX%!y-p|3XzAmY&QK_bTB1&j=B3 z+ar_$ZfTCc!^96o;;Qgs2Nvr@2~j)vSp~YaYe0>Kc*aZ|5W$_AjhafMdY^hy)Fw+- z!w#Wz)EENN(ZE>F=ArJRbq?!8_kr^jBYpbM#(&!%2Sb4lr3zQG$zG!P?NMrpbNt#Z zo$&Ms#T*4bUHALm%6D!zt~d8r1{n?P!E(F?qb@oWcP_*6-Bn&~_LTUNPkQ=MB6Pa` zgidLl-+bxF^r(_r7R(3ALK)r=$66!pZo29HoXNO`mkt6D7>P3VTs;VA3$~}OcWNkF z&5tFh$+R?kGGrtl@zzr!%q}B`5&G+_z<~r7^Yl#;wIWCGF_~z_1WiKVE%Y|o^eF01 z=rQK@x;EF@_4i+~8X-ro_Ut9CMU>P~^~j}Kgi~-H&5h7@1>vtVzYk-|t&wZ59qA92 zb@sUxGfguOSx~tXivqsYuLotY_TYFO&H6=bH7!ya;w_$b)L=**R(f!+Ecl(?shJ05 zKMpOKece+G%itVQf=up{rt(G%QV(a{J9xRs*=flRNx#tKzK@QnezIn$Rnz9R(nNAk zHCDQ*!kqKsk0%uoK*|C1de{ooC3DLl^89_>=r+o4^8OLmB8wC<1u6SvN;LDBM{0Ef zuBQEM+?Ekt|5#%ZmU8|4rCWn2ip(jB|4|pc)d@D9N`ua~tLo285sa%l9mdJF5)Pf+ z_K*S?lwmW}&@M^R!1Rgt37p#&m#R7<kn5-=MFoFr*BJ1~jZd0E@p??n86+QNb3LPP z3T?Vn-BK64l#sQgw4L2Z-CmT4R~Qj4)+>)NP9w4zd*7=F(w@6EQ+44D$Ij)WFd4hF z@7>=_%{ocP$Ay}h>k0e{dG$W!R!2JENQn3y6=3UMC*efq#{fs_(I9gG{QldS6biR7 zgWfv6Qv$fV<pRmUR&I0GbB}@t;GXfeM}%}zWoEd?`wqC9d)2xS=Ci34<X;Btc3<v3 zG+fQkSe}4AurgzO%j^^9M4<~}x8=Z2+_k&O1U+siOz4gB(&At$zG}-UZK-J#icIu! z&#8NIkM#BT`I=1=_rm@sA5RQtsU4{-R(o;jFt6{BkWKBsMn$hG7I20Q__xK~#&LWf z*eV<dycyMgrB<zq%Emo3rK+!-0y0=b$p=#KIUPwf{eW>P@J36?xTRkCvMdT;$ci_* zMF7H-!e+j%x<YU%uJ|+ZqPrZ=8u0|x(wHe)S-b@qHN^u|L$~|T9B3bS$)CkopIM-f zQ9AM13lUj_lONpKmLH@Yv8tnEtQ#Cx9yj1>ZJv|}c1EYL=oX=s(8ClLFPOrR7()n^ zWbImQFsc16Mk=tl&I5)6ei7D%I*uQmI_6R4hbu@R>@P=1qOse}5e&#Y^J^du!aXk# zMUefBAWt=mC~zryJ+oPkP+PlC$eGP9fJEnbwDXqYEtsg0@_2hRvpxI#ksm&qLh%^> z$K#ZVA@0UDD2|Z*JbhgT)`$K{wTFkXx0eJ){uT)yX*$sF7Vlasa`r8$c5G|3M9ICP z|6}P&+V5BIY3|4V%JquINtvga!JrTD4~tJky4D1<$lSDfSCbkyl-h7_#Ou*o3MNlV zY)X;Bp!{Q>wtbC56+aW~u=98?{%++>ePSe@c0_4NM``DeS+{VC4+j%GT#R6@>E6nZ zb=%BnWVR~xC;rTCd(P1gCuGCf#Q_Z@yAh=*wuCWB>{9g%(vW=^+8K}XSaznODsu=C zm1Ze-Y5cdd`Di)RMo$HFJ4LB_?AbnW%K)(iJ$+g?`0H!}bNwMg7khmu_xRJ=5LWXf z8p`OX%^#6exlQomQy34}<)y2B)y-!_U^hox`VcxTlSJHg53Y`2+vtlPS9m{<NEuc7 zV=*twL-)@3V0(={wpm#Y8uC7^{b?vvMCa~Iys`IQ)-c8pIu7UbUn#0K`xO+;5G7n_ z#trEy4x%%O&1D?$>!Ft<`Q(APZiCT~$w`+NxS@#ZB3yog-0rdqvg!X(=XRz5uEemd z@{Q$@j;y~06}TIXHE<l?<Hoy#cl<zVUsmh(zIR;5yD3oFI(zQT_tF6#<NT?9Ru#9b zfd|0BPD`gE8-5JKDczZk1xMNv_H5f$C4rt)H7Kp0HNB*J>hgG_+8(@#sWL|s!rWsQ zO0BM7Eot~;@dXIbOjDhqY9Heml8c5Wi~ZSXA2tNme8eN5Pals+;}f*AyhY4mK<=6! zS4o0v8ce1o6gI@QJZZFplSMFY;p4DMy79s}HD3x7T~NvsY?bl=53@(ig^EW*qCtMu zt>l5%b(mZq;p3tj5QouizsMqQrL<VVZZQ`Wwf)v97|%(#ci6R{C#m?R7=H9V;hP!6 z2^-_aXYiNm8WHj890vSqV#`>m`e!F0rG(&V((y~Pv$agShPk<88;woHFV&5>WOEpz z{op!jHaNSCg4q7>&jWKbtHj4A=^#7&?!xz_(%469h=VY|&Pz45SWibVW|7Tlusp2q zoEPPKb4?WmIi8-iL3fOR-XP|KwM2Y7=}n1pj(u50EL_^%k3K*?hA?M}0#RR)06eN! zML+0e`|#9HbR1J3{bJD3?(1l0R<6#-x+}TDO<qCqt0j10`A3}H<d%zSH3Tg+{3@K& zgs%H6TlcmS%aTUmL!k!VkxrP@hDD`%2f1N!8_$vLbm^8DWB<m)-JH4BroQ=J5jv0U z63A|0F99bic=9#J-<@l}z?*+Ws&-dOnagA2uYqXDB*u|Jf7+SGFQy$%;lsMZX~Wi2 z*FN((XZ#r01tUK>9*XX;ucuyhE=cp*gy=Fu^(rI)Yr-Va6Yqm3L7co=5mC5SCTM;{ zX@1;#P+Y#vgAAS9(4}iayl--F-{K(g95zxgEA-$lE)VXZLeDIF$d;p(!SHn?YI^N8 z_O;8PfZ@J}<91i#Po_2w7G~enlB(+*f<mS-Wt&g&S&XhxC!E`oQ+J@K3}k4cvg5z- z&k~&Y;AV^7&$O=_^6hv7JRmnZt~;&Be|r!mY-{t4M-fe5j!p0V=)!yE*#Lf_T$z_u zaZAasQO>)w4y3U_+f0#1aBtXw1b?L;Th29C9Sh3Rc32Sl0~|m`tok7_!j>DH$FaAR zDZxQErLwZQ_YA)%+Yk~A&QJbJ@at&QMMehuZ8yn7wYKsz(gW%kdXiIMdC#0J_m2Bp zn{MZ0x3-omPMvgv%<?{dVlniT$)GKp4@o9z{zJKCKqFEsQJrM0>yLQ#KmG2lsBK1L z7fG{vzq%IxNQNvAIwkVdEvZ5>-1I(gEJ3Eu{kNX7&|J9kh4|is3g$nliRy01B2J~C zdGvKhG~w2XOKQa$#BURKa4!j1FfjE0x$&{o!sC!^fFqQ6l6Uo3W7zhNT*R^TR**}g zRK)XQv<*H4=0I${Q_3%XN_+dfU{bhwea3U?-#hjZh!K}bs>SDsu^!%3J8pw>*l3d8 zE{)xGMXVJ-*~Pgu@Ww8Qx-WIdWDANdRc#WO+u>SokXdY6yC3x_EgU_jtLP)9n%N9O z>C*hV-Q=Juq-@dHIabcu&wD|P<g)y#=S!8riQ(PP#76CUdaSgJpfg63%k1|#mtHGg z08vRoPgFNlZnLoBkr>A=EC4l}f$;#;D$g!~RB+AV@0Gp1RsDe5uMzfgmfh}r^tY1t zQ?RZs{EJ_koo{z!66~f#8h7~6H}>^L#qZ9W)2<9Df4ABniarem6XstoT=W)2uQoc8 zeZ1Zt9@eerN`V+jzmU@B*FVmJ-*8aqPW{|wA%QfG`^bil&+kFV8TY~FdE})E&Rej= zjnE-iA}a^kJMKVb(iGfYW1L6Fl6l@4x7|#OTSF;IFYKO}7iv`XGPu%_jvNpDCX<YH zB=|{UAQaHxg+45)tTQ5we6_KOnNTsqVxo}-o<A>lQ8lLcJx2V|yPL^VyK`7a?L9Vn zY*?-PQP-YXX5NpK{laDQJL||@q=nA;-_sdIQ=KdB{k~ZrYxslKI&9xVe{|RyTwo7s z;AKMn_Cj{Jk(Ssx{c_GM*%vgxW>L^|z}2H{GOo>zujSAXkE?6qDo213ornO3#O~(M zBmiTeD@Gn!O`P-SL%A!fW)~A7H4G&3*H*xAWv9H^0W3rxV~=1Z21_^l$NJ@ZY7{4A za{d|8P0hpoidL1z5Ql=id|-LV%19#&o%O{1+;OwwC7C;0<l8`jI;PiZ{@ZuB&fb&0 zzbpi815KyvVy`ysg`whu$9;Wq+jw%1R4!I`QOx#&pvqye`)`Q7&Aeb>`hKUV#4+cy z{1yzN&CBsef_$7~w~ZKqjV5QLu=ibX2}HMwr6^W5jlp~-7Xxkp&YaHi><qn~p~-f8 z-diLGR&U6$1fQbNmHkl*!OLEqTu1Tzdb4-#FPH8_Lt6oR-ai-gsLL!@62P=_Itr*l z-E6*ne&`S*O5Vjex}E^^Y$n*<Xv4BAX0*~kGG28%_*S$Blv|evTI@g^Y6A@tT9W7& zlC*An6QK@*`OA+#*cWSNUMmU9teFH(%&(S;lQWl9cMb@=ZKHj6)0ZJ<W%eW*C1}aT z<!T;_v{e!es+nG0<!E(?2}$JusLk1fO5k1f`+3Yd-rc96QRt0iVeh%+%3=K}+$Dtk zNF$(u83UMZPh#EM-1$*KX0K-T+)*bk0Qu2knZne9kK=+h*T-uFA3>$hcj)Mar3Mbo z)T~~~^CVchZSP~>qOV!jhSa#rNZ{RRBEV7efARH~Uv0fl*f(5?gyIx;T3VpE71vUr z6o=yO8l<>WC{moF#T|-ka1HM6k`Nq%yM&v5f7i3t^Wwg*zaV>^donY7<~Tm5z0k;t zwBJ(q00=-ee?9^pS|r{@ifv00ZM$0mwaK^O+hyNZa+#Sw%eo$a7>h`Kd;ag=3S4ww zfBVCh78g?;Rn2%nC%dE2f_FD(c@?NIwe6s_M7U`i9r5+5pDZxB@W81$F3KA}jW2IE z6-B8Lj7>%=I1J&K8(8Q<8bkxtV*s>P?PxcaRKEtsUJ08YNp~Cv6F;SfH0IfiZPYtD zGhw+I#n#`B4JR6@`b}HN%-4gF$};A}$zeu2laZw%xxA8ngaw*PRw<eWd}2u*)xy4w z<Lj+FijvCGx-ljXoE%J67BXA7btl(GM8@IxvVWkX)$nni{xLkL=W08`sUzY8(N|ls z(<N7O$oa*>UJlX-5vG#&A>TN29_e%(w_CA3GsZ)^M|`F_rQifrOCdEZ`_n=_4IwR~ z3`xgCShKs#F6pknaj6R1WaJn}ZatHqbRs4Ep}mWO36N#=W%ITa3-<<j@<m{zW+rYs zU<l7q6h-$}lo&|o6^yLbOS<Plj7f&s$O^fGVw_{2_@p@xFos!rLlpY3s4IWc9dFMY z*5kNxC+S)Xz8zuct<I`YHyHfLjg3xOCi0`k%ZxOAo}<(1!AM+g!bzvL3{*Q;2u3_Y zXT>ye_^`YoWUGa^AW_mevM3qQ2D<CpRg6$;Wd_g>SoG7S-K1{ZA=fEig=j=&F-$<~ zI2)6u;Q|jt#vtb1@WH@X+r1OJoV1b)9bU`na;4C60)nVgFcolN@wrQfb`rFONwN43 z$Ut9uny!2dBO6Sl^O;0*v@dbwh(*`@8WZ#m0}wdn;c>p?(0>8$F6X(KNj9g|FJk@a zXO=>#y96n^GZ&e6d5VU}`n)ZC7n4E*s@K1FeHtXV5<cY%XP0=YW{(Wrk%~j4w2V;p zY;I$+58P5$`b&cA0y6b0WBNdU7J<TYfZ`t-J!%xXJ;4oc7=F$5Pd?*B_~#dS#q*J| zcRPuVxQO|gufz%*`#n4a!aXSp{)Qe3o~|!sHZPJX{1tq;E8YZMz6%`I|B@_m(`A*E zI@E}Ir)?u?4G-ElXV~XI^oF~I*22u_v?u!ge&->bkLJ;xFGwa!-0tHtNS&Qvzs@(I zFxUD<-J~%2^X&ED&;*iioZ|kwf|9WNV6>BpU#~^A8)mBoc?R$)`8H#BS{1yHLnQYG z$jC2L%-A=2Q73zH1vnyvt~j0^2+a9oAEKw6Qrv7LB~K`*_!7BX`2{h6U3ITKbvuXU zczH6+6UeYq@<88gm-DTJ#Mct1OpB2Z{c4gPS>#J#7}GqrPD_js4yc#y5m#dZMm5^K z*-i!~_~B(J;Iie#iy2h7m%$usoWkn?-T}Ju8{7@?yX|5JEO5lMjZiVCp=qyotkabL z(1EXBnKGKD=xt!#7($PqZLDRQp4GSh%2!1{^{35^h<&JIlVe*vRT8g7T8oRT-3qw> z+rt1JlPMzC7CU38;WDpX80))kOgoz3vjl-WJ?xNr29C<Wc;kT?Q$sp|5Hoe9oDCL3 z){R(v8|Do~@MrvzuqvsDnM$tqbSBh~XM`O)B5(c5;1{fFZ@IdX51oWltjIZAm*#i5 zq;tMPQw_yNjdF6Nb-CFUKNM2xAl0zAu)F1!ls!Me)w?wHzo{>J4d$#6WXQXgsrI-A z9bRbiWsu!RXMBtYrWDKty)zJPhh_h&T<f&m0$KtJw5v8a&3nvc<#hfe(1^l;_NPAe zUA@z%*S(YbAs#w6FZtXihlDfH)>YoryEri*+YP5u34S_kyrHm$AAc0mr^ZeEyngcL zW9c|}Hv`n+1WV~YJ5!tI7Onl^sgE%f6$zx8f1G=|;4?XsyjU2|_UltMkLQ~uJ%8i6 z9WKz~a|gurx*Z|u&0)wCn_EYe_XwT=9VADr#rIA<p&RPbmK)Mjr$mAU83)I_f}a!F zNzL5(jz2E_9YTuayVo#xSqR24R3m}1EE+>($0apUfVV@aBz^ngIMciz(YZVecYk<o z2pvP>GJ}A)LVGeIL#~mzBGBG?U{*4)j6d>BT)*z954HNvNU-IhOqQVj3=lc^tWFU+ z|C|S%P&Uj}#NDL9N}-An-H>+x;c9hR2|Ov!+xL_=aeza8iO*bMS8bE~xi0M!0$yRS z_{{Jy^`d^2ZrWk#$z3X3rEpiI(_GkBnsr@BLN>LRco;$?l*M>|1UUgy84bOd+Ko0T z{e9#}wttu(1tz-HPa#zdOIM{IXozTxG>z=5evXb>cF)o4{*`I-Q9Yc}RF4REFF>6u zLG<9)SOk)e`X(dIbY3*6RR=rgcsZo8K~q+_sU(VU#wm2|h?_DZfkxyU>+|`+m%i2< zL-NwfV&OVIT}N>Rf4ld%y-=mmm<u=igY~y(Uyv`D(<&lQ>Fv@S9es%W^D>|%&esYN z%IsQDu1m@5{0e#suP(i&XwubId&}6qH5<aULW*tguP`D65q43}{zuDK{3+OJC`{<W zwXSA9m*(Vn#Vra{F{N6?9n7ks-dSFvv(%q=^7S3q`0{CNt<w^0053E-MR*k-S$5<4 z%V$@S{EQ4&m#6-E5W{%$mz%C|c05j}%qb#&3Cqjr)(AM9Q1#>aa^UC*jlyrZ`}m}+ zQFqwfu}nO1cT&XFTv>~+qXwsQ>r8Su=4$q^HL95cxeQ)UDfP9tkqebM%XzR6Bp0L^ ze<FF}9nB<L;Bl{9-xD^h?{^|2XS=dmoBvBsZ*PFge12c$P@-fABX3dFcidQTGf~l^ z?YO^0IboDXnPmD#y`$<FkQN_;!~^v|yXt3=y|ZnuD5{gPGx*9)J^n!pJ%G>8|2WE{ zT-V)`VYIFLe&m*0_*i6|!t>m`^13tNdV3&@kC%7bbK25tC(}FgdQi!~J57K!xGqkj z^7tfejdYXqaU{lLC*vNl<`Ry(b<yU+k0CUF-_t)XKUjPvk=WjGsd&FRE8SNGoNc-D z7a64RD;W2_WSp5!JIXkh+3~Jb%rfa=K7TedJi9Eugc+i8@gEBhT-$YCdpuH5oZ@r{ z?na^TBdOK~gwjwLQh(pI864+~T?RWud#tr&@)7KRtnl%27@_bXTI$`~@!H97rW^*C z;tctry1YP)rkEx!{rUf~00f59JiTrVM*aK6Nw7PDSYIIuM^DCty$k19q4Nv={cGeG zAvxOP{QooN3R1dELQ27zfOX3ZZte#hpU$h}oc6%$xP}n0pnMk68D8(C0HGh9&e@bf zV?Z4Wqp32@3_Kvjoqk4pZ>!EFp4RS=3UZHrmN6amKz44S(M9rm^4Uk=!!>!LOwx+_ z+mUx51Ya4zk!>F&u}bR@YyCdLm2qg`wd*YfE$(!Y<eyp_c1%VGhfj#f^*{AYrh%J{ zzK@!%Vr_^wxEj`8r4<N11JnzOt01c#h~ZX-@$sxCqHEdbalWmn&}Yf^{#bv_a;#!4 z1l?KbiG43oPmoQd^ia98qb#~d)a@pt7=5PY(q6Zf*K-U1hHRmt7#HG;VpU<3=zPW3 z`sMmQWq#gwL8uZ+urS?&cxW)VLY%feO$vz(<0xN31vy7>F3C51w);~IFzs%NKNmWi zaDhL3VuAQ)*j8L2E<pZF@2BY;jGlzhz@g3?yy}yJj!PvT3~e#m2_S_MD*)1-*7e{V z4R;gc42iK2l91e@x0}BXYUS&A;(S-ElOx}o;kDrTr-7iv)U_SaBqhH2&&MSBM8I(g zQcH<aB%$)3a6RDN=ZU-*BOM{WLiPRKZlt@3U2zkITh=mb<Vefdhs$+d+4jioSdtwg zylA`=O*z;<>*N8q<wLv`oTApV*&IN+oq6l}qZl<;5&ZD+T=<Woa`63)(8|8@ufddp zVF~0~!?k2F-zBqmnpQ*N;x~VgVo@;vM=$sm+?fM^n!V2w^DhE~u6RE^-eam_d-~rT zx5kg%MKZWasmID~3<ipC(X^#0KCQQgrusqJF7wz6h7e|Nw0Hlxyj$;M)@sO}=2|M9 zg81s_vM3|gVsaR1P<~uf{i8P!$m!#dFGxf6ecSn0_E9|bYl-~khzthx{vjWJ5KthI z7VCTN7qtQr9bP1rh^A{?zH!-JWPmk|;Z3UhZboREv$eUu4aO@%6#5S@!R%gq8NPAu z>ocAP^A0+#m=@c*L_D&#bY{<y5ZQXjDs=zyI89CTpdR<x%l+GOt9tj5KwT$)je+#P zhXFq#KRd-PI`n{>IF=Tk!%twDD2FrH&GWH%`kcrX6aJ%7KpH>4(74gN{V@SW+iCTn zaCbOGz@8A#a*cS-1&o_b+~afNmFBe|ZmrgiwmY?cbJt)i3EIy_Bg;NemSc89M9uuI z(zO@KrjshVOJHZdBy9rhX~sEt9<eWd{M-4vV3gFclAt1nM4-3`9$u&}l`@t0f%@?; zfWswXgCd5k3H&3&;DG)3QZ#61a4@p&$EX?N%|rUg3jWf6a0(AG+LQ6M=0*SAN7rkW zJg)Q9ic`^3nOfoFfi#0-cIwN_{SdGi^!Q4l<3!`3H&|Nl_6<5^GI}dALt}=hJ}8bl zd4wRB=%wS_`~pub>=R6A@*YFX6CY)*{~sn}dn8yp+LPw8{bEMhWNdoOXFy1>PAf9v z^G|xUfD>mfCrK;(|BlHwqH`f_Es1E}+rRp|w+T_DZu?@(UL_*Wy}b<OYtNUL|2-|g zJsw`0|4P+YbRv|YfAox+fr0|CuIx!+VUIRW3X*Kw+&fn1R}}6jKeJ#sO@xg9co?0p zB3`Ui%(_Dy9b1e%oQ2j-yfUwUDWz*VUiQ3-$o}@f=z(D(P2TsDbo|tj$bRwsewkk+ zeJ1+9@I>%XYW|%!@u$~p|5xY+p}07uJ!<Fg;{Pvf!GH7<apLEn9RBpB8}<JNANld} z-<iJ9daeHd&N%r$6pw*VM%~X?1-c-E<MF4i<x7}@7xVf<DqkH;F4M_rM~K~f7!iZn zmbjW{Fx|Y<O7oN~_HqAp;gir8|16<4eD6U2$gU{U)p2hn#7&2nq5oD#&w*gqrb6ll zYLP5Bob=6clqa(9>RM)2y@#RBRrvg+TZDVp#fNIE;~3nhLy_u3F;7el`)ftr#yO$J zE!#DLUwk+;fREIkvj?KWSPc}4*L{$_)f0!2G|mH`;|FJpiBP?9sODX(W=uEsNE|2= zr!n$}oyWB3#z&t!-0xeQ+H~euvg&xEXWPRDJDI%4KW6#7rrVdc9&ehJ)Z^0LsiU`^ z7tZ?{;pO9-rHKa0E6NDqn#GHD^F2g~sZ(^)oS35x9Np5ksP8wfZ98~m-JNf(CB%0? z>f7fwe7Dn2Cu6{s!pA^Q$EfT2d+L4+Pc;hiR`zk-4c2@Arxl^=i_@Gpj2^Eai!y<p zuhna9ROu6`qOR8ERt*l6s4oy+m)-{K3#2>A)tuQK%QaA>V|M#Tx3F<p5|8uB`&{>F zRzA<HTaRi)g-rma1;<(6u)%$%{u;8sXX*UK#`3?6s?$ZePv8sL@owGD65ea`F+;() ziFIEqvh+SD-|@tz5#w&_yq0dgqGDYG6$uK<?`0tH9j;c!y)^Z%v>oQ0a?+v+bgMLg z3>j$*pBeXh7<kK0k4hh0eftlLoGJbGJS#6x%hxt$Wrhw~2?Du~gTCIu9^4P-#ZHlU zVe5bjubE0Mm&o=TNg@E2R!7TsmN2Ko`mEdkxC`4`UmeW(IK|dQ4%suj_D>}adT0rg znD`am-Tg5?ZhK;q45=2ml7e$`pPrH$UnC=l)Cx-k#h&pA{idvhqb-`O8m`c0_x;eL z(@^y?O7^F-8vjvQ2BGt2m&NE5obfnVe%S8@B__#3<@;+BkB`6`^*?3rqL7j785|ec z&isZ}LLWdSu6oa41COMQ%Pm+BEa&PN#XM8kvT1#3&1ARykDMDnp0~e$iKVWe*c-mT zhr8~8N7pEB_2n**?pz=LRhoz&-NmX};m5mCU^!yHkXyZ-!56~of3i9_D5WXJ`Qb1+ z&lfEOWB`1ICVUnTHCQ30C_TNf&Ge<?gy+9XIRqJDFOTJS`2?a%taicu5@zpiiJ1^E zzVtj7wU2@hfso%Oa<q`dFKYU~hqBkbA+a6zIR}YVqm46A$AiZ>46(gBibwE_O1thU zfc9}s#$Fv-aWRXpoi`(XkkfA9e@*8u@26w?ZA*0#U9rH3qT%x~&b<f_ml^iAj8oYD zLPHmiKgpxN1%5fPXb1!mWFR2Z*B?Yaha3m3-e&xI#wO4u`JEP;1$pNlq_sSx`>Gy2 zM21ZmUb@~>5bNhx5rn28DXWV~|H<HRy&^&&j|x3rRj_rGmaZB;YqGm3w;q#{+D@pt z1$7>=he`fcbrx6X^#8$W=w0qJ=D59LN8Sl^pF;Ipj#HM2YA=Qt%G#2s_nt=fxB`dC z%xRRm;zy&YsZWHm{HnfEnD!X1lL{_q9Nhv3qEtj=c^2VGh({n|Dr7prAk`yuIlIGW z{~{oh4AbGfp-y<u!N9v^Bd+Gnm6R6uEsfV3(aF!Jx98B8SAb!^2ZI=ZZWTSy@_{yE z<UMxB+Rm|_e}qlY<)LI~XUyd7$Sa<T)R9OUhNZrBs5Fsj_z3F^5ni9g6X2lXh6*74 zA<?g9miXvGaNnctQtVN|KhD;|`}LHdK}zEge!5=q%+WKs0rT;!Zz;ROWUYRT$Sy6_ zk9{|cz6Gj-`R=}D>4EjYAJX7LStjLHEnEUqVQKN9c`M>Fh3a)_fFNtd_XmQ>hVUfv z$Taa?XfpUM&2p&+L#2f^EV2ldeqRrFu^Or@`~tJG+bo_&OW`y$MH3}ao_{FvTRhH_ zZDCwCMTXjtuA!AoIwf`;iCfw&&h2TI)zsLk3iov}Ao~8s+zWy3)(z^rj{R1R`H0xJ zZ{$__K|Ve&e~Vw5)hLj$n%hO1cFc`EFQ_j*Pwm=LA>1{6=N%U3vtD$2_$z{{aYS?P zf1UB_0rw^Ewurq|vC~tS$wjm8YKP|+<L#GJ+-1(45svwo%;3<+Q8{+ay@`+%uf7a~ z5pbYfm+caSYWv9}5m-de)2hS;^~yhL4}JyHt-<lis&Z1*FnwMa)`|R0Q0A6kO>Cb# zB*m~y%g~jjrzo$l@Q!;xDSB%~6fMUcVIEaKcHa?Om4U3`m@baf(A`P$MVU1QgV0>s z+$(IH%fWlgaMUB(u%g`C98D^^Y}ohfG~L$s3*Qi>^7{m8-q_cny4q;H)05dJf4drC z$)=g_N?RQ6iz^#asgwkdJaRvdH8lJGHPx*Ug2S{s&ANY0{+=<I&W6I<${ypB{L8z4 z16kIycw7U@!{rnOdpoQyoyTm>6MMP0EBT`1X?3AV<wto0f{Rzao7_|+n=D^Mw<WWO zK=GBa1awJnmZMkQKS~(~-Xs+U+31K3j{K|XXq4vuk;UAM=|Lanifu$<ndMG<@(I%S z!|x}~p~Q440xYJEQvz@8O*PRxK0@^qg-gQG3PT&g@G|pp3yb@O+;v=w!b)AQ_$Aei zr1+6C8@xA?F$t_cplY@vqX5-0(Oi~M29M?-r3dY*uidW1Z~BF0H9`$;G-&6c*~cDJ zPW=Ss1ho0CcEbe9X?H{de;iHf-qp|Z(0X{Yn?B`l>6ccyP}p(_tl-?Q>w^S5FUerD zQp||8fSo3xrwJtynxq0LA+wsZq2d{{r!EfGX*YWB%f9&b>lQGp93YBejzLE|ejOTO zsc?ba(_qDcN<cvgeQhx>25@JtdZHTFJ_z;?HK6(4GjPYV;n2=T8ELYUlcXs#TpTp> zs!jt95cu8u`uYwTd`fnwH5k@=5ZcZ247P#hRg-Rq4psT@z9=Qgr-`1zrF6366Tmpd z$IS01vfnm1nSa-}$C$}H;P{sE1*`;w*3~3V`7{(4whp*^gc{$c#s)erO&a&&mXk^e z_{5IQLcUuS8Fz#VHk1?~x-=vbWNaiQgq;J5EZ*a{1i~#-HmOfW=`0y*k$nzwH<UW! z#ooc%eDTKiwYG`QznZD5G=1pGgGyK()3Prdsfek+kI4=_u@e-IF}I$k>~-)%OTeTP zmM3N}5qLIUbzDo)GkCI%i&LSTalQ~1L$TB_+h=+A;$r5Foi{$`8?j%w0vG6&C<$VY zv{T0bH1ToO3SrfY%<Lj6PHwReBG|3q*Y|mF{{`M@N_%iVT@|qPX!rW?cf?S32K7B* zH-nNVi|=GR!8psC8(EUVv!KMpD?#Di?+t%~=6fX2cXwaxWCtwm@|P{=Bp|ra0W3I3 zYd>YOZKs(A!7tm&a8vu6QFU9eeMbp?9uHI+B$Q^eZpX69qrqh^qZpZs59t1EzejN; zH{%Wd%{=NX<Tv3EP@cm9!7uS;pGd-NXtJ?p{?pF(AP4@nIp`<2%f3_u(B@cvQ-usU zW6@I&7UZgK6C5f8)m~?gmx{un6}x(z`67Fj+rDb563}Zqis2dUA$%z~n~nEg!Ot8i zSLaM&Ps*bNWsn6P5>C*w-N+w1Bd4F>uY0*=+`R7n#g!q^`*F;T*HM<rmF7#t>PxV{ zAliuts1*#WRWyBEF~a5D6|x7LC$+9tm#WnAhb0Znc{zORHk8Yc{ol+0{QYbAq7q_p zmUad`bEf%!o%o0FNNxKKrb&eQd@xz4mi`8B#uOE}7y2V-knELai(&Vvb7;tOYJZ^c z*@oIuQ}vve4SSQVgcts}3B9?&otAN{;7lr$LyhOosKaT<L0-KJP~<1n!an)SCa>(7 z2cbe@a=s%;C+ZYjH+5VavJu^l+)zw=H18O7wV+HK&Z;_GY7b5r0v9bA3|T!wE@OUh zQS;zT7V@~iW9dRGoj<lS$lL#PdfH^QT5DrO9vgyo*3Rp{I)y6npvLCKa}&7-U)E2f z1)jKHRCPf6hD~nQt5@6J3Cn+jbj0H`Jfk)0>z_Aw`s6c0v2U`SYlD#mv%U{YqR7&= zl-lE*6#Cre?Dce@mR^oVZ_Z?M_^j2y6B%VVlozl)2tz?HH?%)rj9z{V(S13r7YbDq zT{@YSR`sA(?Oku-^}F9%F^_q_=Cj!0kOn2p=h|j5IHm#Fi%?M?p1bpjL7u(i<Ph8- zl@Op?ud8!Z^IKowq+3mpV>R-cvh?i+fx|JgSDww*fN`E3%;d-K?`jD$kL-3I+3b~F zU+R0@hpg`FC7>iVi^+JQyH0c|`eO2Im(ycVesH=K=<5oC#IzNT4^GxVzo3LBJG9ph zLQrR+-NAB?Akl3|^l#089ijPks=72<2S>b<!N_<EpV23qZq~mNR5!PO99x#Q3y#i6 z%0MpkapM;}$7+oH<I{tD5VBdSEVj_+F3{rrfiT-f)$mcw*P(0$|8Y0>th3&NgNM23 ziitQJoH)sqxR-wj_l1m&s@(6TpEr0Xprh?aNk4`bj#mddm2$E-;mO~$)jPlCz_QnS zxh)6de4P&U=onEbkC=&58aPcJs|^)x{lkTOGWB0~ZT;+EZlU`cW;tB$xFDEf(N%-( zmt|VxkX<RM&+-Fke8aaIa@0qm?4&$?;B!k~MN)-pPNIsZk9+uvJ&shQs^4(R%E00W z&Qp>oyzIbuhf39J|G;sXuVVrY93@weUPcLQQclbBp;GeGpq-=`pjb$gjE=D2z)6-# zEAp^qqcNS0@Rv}3?KosBL$Wtb<ibdYvpND-i;nra<Mrdb=TJ1uLtKeMse{^=U?spS zC5qin^?XsQ5DaAAeMGqV77NZ=E(JH-`abs=L>gcCYF&B_m`e=Xt)zHD7!#1DYbQF0 z>c=snLIWzeuK3j%W{D%;LZ9)%if;}6jD1ODj@;4c>oZM3V@E9B$m2>yij`UkNiEx) zdi4%sr>i<z6Y4*2@IDC35y9Wpyh1OXCa$;y>;7a$99`b!N?^EWOp_;Q_00wS?DEJx z4GIBDn@>&y0mP&+LbRNsoR1NYTHc1q)9lqo!PLy;dr%pJc8mS&hWqs9i}N%iN-vhR z<JZzlYZLI)?vZLsvK5Sc2?mPvHU$!sU|;ln|BC}o>PpX~zB%61%SVx0N_)Gch?MO^ zpFi14Q7<cni|U@;<Jb3Pi`zLQ-Cgv&i074i$|?Muro%GlYml|`Xme+z>^*lmVtd)* zZ=IF_v!2Y_-AKG20Go-dJjGoS%tMs5n{U~=g75#&>iQs;3_NQwa=V4J6H9gh6kEj= z#UWJDe>}6&@bkqAPBEUA3NfQ<91QOD6X!`B^!5$U1$;@FroP2@O_+fPHvq;;<A1TS z(WLJpvm*O;WA%r)_dJOyugVeP#)oF1L*&TLyZI+4hV9`BA8MiP;@geq*V~sdq2C+Z zW(BfU&AW#u5IC{(7UnOES{538`Fw0IvwSQZHdi<kKTx&CILWpbM`Joc%pWIdDWZBo zj{sv364e?s$|MCxh=QwCuTL~d^48yJvOZknA;i<Zk-?=RyQ{`-&y|TS1P0+aULT`y z(Jee99Ge|bK%$0QH18sDv^%QnZhgt>V4FhzLQ=tt85Q69F~|e|(c??&aZEAA07pmX zFB<`op!7VR;-Hpw5euxF3@@_RInHrd$~?I*A2DlI&qspL3^hb4aJnDU;TA)6w+R2` zCL!JRnzX%bmc>on&w2CIZgQp5U0pY}*B_9G$)5H+Ke-=XAKj=AG#Hu43=5b5>ud+q z1V}qiC*%R%LHM$8WOGA(#V)INx0~aw%@OIv1J_2MkX$Zc4Ug4bG(*?mQvV7YgZyKc z`u9WeV(Ry*1vA?P<e?N($(sF5lx(~)Dt)qId3GrN6ZFO9JI}^Uy6kD)u3vvCv1$2m zKi@4?31!D3cztzg6|1mm%5R7qagN#zm6Ec3Ci8o%4G$K5$LQ`KXZnO5hsy`CBPA8% zJr(9jam-j?Ef9I!GbAquoo4yz7_IZPU3|(|e?N|vH+1|)$TBFCguC>*?$vG^-5}*O z%#_3{8m(Dput0dG(eF@!&o?D6^F7}ynth_Wq3M%2tP*kK23WP-6pgKZ?fNhr%{En3 z+8k(K=*HoTV4CG~0i}#R<+n?1fer4A1DlBGm6CaWy0Mv*9nw@8>j>2$=h^!bT*ZK} zxXAy@2iR1T?_lS|DQ+!tg%P_J(mGx9_)n(;(o!u8Z6JO+xw-Y0{kY8LPLHreNq!5F zCXu844lEIrpQ;oRo~u$Yk;4`WF~SqJHQcJi!G-Hj<aNg(cS~5yYkLD_xo|>YY4AZ} zXI-XDg$9@WLe@jmVi(^bL52Q>6y1Yr${}6LPIuvZ#FUi;N<o{ej2XA8=X+q=<QlMK zWw`SXQQ6y|!LE#vt3EE+nYK70tgnt?`q}oBzccc_N~?dU6y5NAm)85xoTV9w!s$FW zg3w+<tpBbgfG5%!+$)h@i2cBo$kj+Bt9D9bE2ukZVH)PfxkyiVHFF@~Mx^7RdGCBC zu#zpENC*A_NPqF&t^HpIz|VWqN`458v{1*6UBhALLysJxqlb*M&dW_DN|?NJdxA8i zHl}0qOsJy?Gg+qW;Ubj97n5e1<~+aha5Rqyw$2#f_i943RdOOv2U50}zY5Yc&Em<o zKo2eC&P}O8C<65i87LI%k~3}s(LT$#)Gk-ATM2Zdk-Pt-|JJ0+X+|==VPvAI+4zW0 z#lT#qO(crRJL8qL5rye(y4>UE{6UoF2IwnrPwUfy=Ax+C7&waak;-1H5?}>ESCKu1 zxqE-yv)Z{15>$A`S#eEBKd57S)d#^*psu|>4%^HvM)l}Gu`Z4W_iJAGE)3WyKwDcX z(_wr$(Rr{cy#|U?k6JN1Eq*G3js|IE0kUF1y?8*#JKgo-3_dB!UlPP|WBIydp4wV# z8|A0kS%@q@y3QmVrERJjHFj<~zA*<57Q+dg7c8~!b=p2+2|m$|c;${U6sctA8EcD> zN$@a^Ptn<MVBc2qfIz!x8X1ZgKSiawvd*}MG_aUt-u8xSTOSE?EPZ4q$SC%C!F|!~ zp1@XxJ!)eXdp^-;sh?-?BiNVLen+{Vittc~8QhrBKxZdschXp0-hce?m)fXwR_>=} zROYPUin8eWF8>OG^TpG^M2`zvOpd5aY~!e@iw_Lmu@W+<?n}>S?;8~)0T-@?16YD+ z3>1Nwn(rWUgf;k9-#KD~kvZ<EvERvFU(_Nn4j$j6L%vBjHa${++4Yf_vj-PZ;DKjg z4&CwZ-Xl1YE5*l-`)@*&uylzn&gsfW3r<n*Daw!$&XcwGV{+easCXtjx$@QRSNte( z5plq97w7bv!`<(`%|{)21kxS{F61FtY&*>Q`#(MT;aN_*Y3V<!WA=EHwj6`JAZ+M1 z?3>D%94~#pDxT5a2R8qSOSqq{|Bc2_7uMcN7I$bQGS~AAn$*LH2`#DacU}k-!41YK zh**5S;3TL4e4YUJ3rP2{T6SR+A)6($(@8D<Y<Gb}g2le>hJM^AQs~N<)DJ(-y$rX3 z_yuG#=u-`_B?R-ncw8iS9j1U874zoxv1wy;_eFtSTX8upD_j5ek<cHS&SsvRst1+# z@tI}ppS-G$Mgy<~UxXU}=>0bYQtWYDb5DRW|BfpNa$}$MO=Rs@IgWJ!bL<;0(|-uk z{lmj=ztfJ}Q`Q7C3KJc8!)nld+*+w%qEz0Y^fgphS(ZMG4Y`k(kOSMR+&ZZW>|{&U zmm|>%U+Cr#jU5)8M~6+*&~z@mB=0eHl>jG=8=3Hv=`x~(<l*9I;ig9~H0g{<$oFGo zNjg=Xz3d&c&<#4v<^EG8oFA$|Y)p!9qO^OKA2438%Z3t+L@NVA6=l48@mvMN;umkt zXV$yL`h++htddC1`-s9X`pvuE%lY70<9?dzW_;Q#aw`^CrWh$_^hEZwE96#Xlr*q3 z1!=nP8}g;o7=Jnns3GF7#N|UP{<6l|Xy20?jminC&K3ThSyE9^r#^sPsTN5el9K}< zjcWyiy|&y?OsQ26n~r(wDY%FTp&Xv$UE(imA^P9Dv1vtLb(TP!+dt@#`hFe<uP){2 zbtMW+if2qi?C9d~BX4)Nj<f=jjPpf6Z-2lX$aK;XH!W_P8N%0oU~6e7fpzRunff>& zZ1D0~#LZp)745RDmQ_r$9Qyuc*s6(bfz4uje8c-ZY7WxCr+IjcslDj|+qYrB)zhu3 zUJAv$xwOcel)Kl5F>ploQ<49cQii9$-PMwU=|$pTNsGPLvL@|85;op8msQ#KEi}gD zHltZ0-8MDj(4i9qlW2BO*K6n8MvGlFPE)@7K9_>oBp^k|0VoAq4K!N7^>YxXj!KlH z+f2{0$;EpDB))xBEOB#lGT!$g|Ko7<+~cP>(F`R}Sq`^_K;a**QM%=0dW4fFCt&At zKh3UWWIa{dJ?%N~Mev;xy-kT%jJf+WUtMO;yC-+kd-KVc+n?Om;}h{+ZG~jDORQv6 zpCkyeRT@)mutF`<?D^EoiF<<&XT+c!X#U-`94$q2D%KrM3=!-!A2-R(DRO-p&LG}e zR{R6P5N1+lFI|exO5F)#H#EYNws^$b6<?-@3Nq~uYZ-oiWZF)fpQDq(x$3pqd6AcT zZ7sd7qJhv_tJW+9Htmm*5L?~XU>R1sj7Gep>e-s1jyLvd7Y|$BO%aMxij4R+1ks?! ze%*Nhc&OK`p6n?q%>WD@JY)?XIKn!+AdI8gf~KeR9Sz*VBNTur*&PbV?c3oZMNMiL zv$4QIqJpOM(+Dfx4-+Hgb{<hjq<U=lv%dY?m|{rqIojB@9!#UjmZ)6(-1S^tBv!*N z%;vEB%$b*oI8!QyTNpbsq3Zc7t2EQ6b9>WPRiCUqJxf?{2RKnJo$-ZOI-S1uoG<F5 zP-HUPZ(Oy9g)*rdCV;g~gJ}s*9Djh(5+}!&@&b<Q!imfmj$U}`-x|dZZH;AU$)Lu0 z+~s=Y7n(n?GVxj8e$N|HU$0stx9l0&T|iICxBSdk)D$mJ#39zc@k;~fgq$#Jsn=lD zuO=){(0k57&r4ddvM}=j%$K<~%cioO#4~oi!>(tqXdi$mBGOa5)4G*~&lRHjTTTW! z@vj3@uPZuc9a2_z*MS+(#q|nJ<R$Ay{Gr=l=1@Z&Pa%f~(^>Zgc!-crq>tQnMq%sH zR`AT+P6s72Lx*Xvjn3*>fA^p0JiDpQfCgZ`RJmh+PnE*OFUve_ts$0!L9<zHKHdn2 zlgXiE(;iLl)8_nw@$h~CJ6lHI^fK3&b;QB3i^0hi)MmI~DLpvj(YaW^@=H|WD`o@b zjwvxyT0DXArp(L!U;dOut!^$&qWZWq$_A$KROl8-^2-4f9rePreNLWaS?z<gAFd>) zckOENvW8pbG|wE>`=^=(q>au(jlQGc{tB&irP2SpnX;*^uNs#wiT4TkP76IdeVFW5 zu8}==G8Jy`QURTVeT-=p!8s$9fCFCWH1P(pb(^h?m4BKOf;(pU;diEdWDN#Q8MaYo zj)+D(Ji)fK@$MEgykGm0Yu6ny@%`97O|aFfLw8}$^oD-$<#D`6`qbG@&%3*UU8i}f z^r|w$95=P3$`HvRWAM*!)|QzOh8>OPN(pu&t$Sp7Zgs&P2S{z;5-fZ3sh>adhgDxY zM17q(?RPqM%!3ColHMGbP&vE@_geCHS)ahS+;83AKj@-)4-!zhYrIPT1)3!NY#tTP zXOyV$iT`@du))XmZMl1wC!^1STp{$CoI@<a)Veur);HKovNkDroBC6dxIHDBY-Z)f zXm{9jK2}9obY0au)l2un;`H!FJ^m~ee&5M6Gcto`Aerr|qNyuhWelc2wY}+&%OQ+; z*O-oi!chpjlI`>;*e=!6yJ6Z11J{0XSy8|Ay@wu5BzKuq94!CZFtFTm0wVuYs)J_t zn<7K<_(JxN^5*bhr%wSmqP9h6mW_o4J3RT&&r%yXuq%n9u?Ov2Hed1EMI|mSy}nny zTRut!0{jPTem_33D4>;FZ#kJRt(6Sj<Cqe8?6s>MMDh5b7wL!!peg$GV@%gI!-_(S z2H%f9{LTm*hxjZ81}RE$!8#)5CP^;0=&fr;sLE1s1wMJ`Pfc0&!l0aFAw&7W&WI0G zIWNBKpeDn3?t%`_KmzJ+-Iy?0j<`-Y?TI;`ji;?c9|{Z@vshn*|4%i1q2_N{V|O8+ z{Wu=<xH1B~F0_Y()W)mM)Xve!OZL*vrcypjHjgkY@D#W@3)Wlb<N-3d=;ic*LP?pY z$-`bO2HgOAnnWtx_d^DOBGLKzr#~yvi$Fk1-`xG*Z?c#&*Umz3QA<H7hxAk9Ra-Uc zCFL(!Zx4FWm3&4^T5xvi4i0O&wMVdY*~>d}^gJk|-K}r)BK5~n+R0SNo@5&mw`@g2 z(~i#*cPvj$E6P^22iR-K93=>jR;EnDs))@Und9kMSoJl2d)Pws`)T^yz)=a5BFIQz zI7|c<eBR5{-<<hmP~qBsYeg#ko&nWyycwze8h`bi`ItC}GqW=5UY-XlSfuOmpG40M z&ga`$LL>HQae$Uv!b8u2WcIJh|Nb(&Uf=5ERf5fs>S!VDkUZH`*ruXmx6Jn7*%*bo zoko<|aHzFL_OP|J<Z{j-WJtZOgZ=5^I~ixXCE=SrvPobOR96_^R`>~x3gyP$J+t*N zC7nah#28IMXRZn>SaR$l9gV^;k5o&bPCyVsW{K+#x7B1$&$y^Q)4%H+NPC3%sJR+L zZ-!v+CL<f@f1f)~E>R&2++IokFN#iU?+<|i{UKMyKM2L9V@wUoj^!cs!Ac^2-?7pk zqKQhZUHg@AcSw70P|YWsycy3Q)~R&i<))n78#JU(`gPxR4zKLZl45a{vgU|uHclN$ z=&hmY{?E>*G0gAp-i%pakk~k*IUdn;G|E(BO<sO<*PvDKy7y~5`}%})zSTGr?@!6V z7SE`5HOcVJbVDvjG-FWP#8-<lSzhh-s3-|gCL?d~eJ3MU>FC0Kzq?ZKIR6eGG$tti z%-LdN?sah{FJCnFA;QSmOG*D)ITfDal$stEY;{;dhWmd1C8TngTIQu*3U~KI+qI$j zuJa}p2-_7&6;FFQt4DVzKAB_}kKS8q8D~qqxLo?@W+{nE#?{DkY`Hf?lsPgA6_qE~ zZ;;z|EypL3C`cOL$_0g-&gr|$mkrY|ei+xx(ERSH{4Oo5-(&L|Oy)B!>rG6wQnvcT z_PYu;cCqL5g*PBrUg~GRrn+<|woZc6@DGp4-ezB+>UBjMXS7)xBI~{T!9I?`GMBeT z3#UwF4=tT&428kCQee2t$9${lXEcTO?H*?Y<GC#tY_t1E0yz^AgJHb5(M`)4_U|sc z7gYIUL^}UU>~gU@rrcX~f6Fs83|>%h+6Uhv`S(B1|Agn(rnZXyFWTmqnf2yH5J{=L zLC>C61wPzb>uuxYaz*N&&SbI)l^%&RNmR>Luu$i`vhm>MSa%uecdmsARO~|Z04x%o z6O+)FYV`6NRl>o@O2-LZ9LS16QS3yMwfZzeF*w*u_DVa|Jy!ic%O2h~PDu=CCBGxv zX^oo1>U+C7;<_)qfF{IG{w=6dG`wIi`(u5p75(eIUVnvyOuB`KHe2vA^X!{Dl`pr? znT#lCzNF`_&GEnZEB`P4#_5tJ@3T~qg}Q07D$YkuHcxRQpV)K+SY@x2V>1$Q$>xN8 zb#w>9`@yDMSSbG|k#T(4k+RTbo8JDmILNM-Jax;LH<^^JD~@}L`IoxySJZrW1nUUJ zs=VI*pjfn;fl#x2mg41S?S_m83<bGoS!!7Lp2y@FWae4ZDR`xT)4jl;kXJft(&O^S zJv4cKG_sDX(r!y(?yL9jd)<Xzjoxsx1$9p9uQTSauK1@?dgEzvYWW%s<}ER8?>JXH zLyS?-*>PPhJ_3v6b)yE*saK-E&qwqtdhs0?XeD!dPtMx&M`?o$o(R0$zx>7xxR%v1 zaG{z2xn?{jeY>AI)?<Ia)Y@#fiDdtg{W<cIG36AQGbO$VKi$=O{LpQjB?N*i)_6Y( zM3O>jj>5Wx2Sd<BzprieMNOs%DQJ<qD>m=%Y_k@WKb`wR9q&8U#jcq1d_&&Y>b=E- z4m7x$dFev0Cayq=AC=`yQ7v<ai#MgC>^oUx=5{^!J6PY_ZevtFz@zOKHvdIs==m9; z)T@i)li%#|WDF!YZvDwEOP(h|{5*LfHT<OJnZfu)gGY^1-8I&hU&sF53<sYV>}l^r zQ3X-x>0Vzlt9ttC!NWtBwT$Ssp(V8aayCm?h_gE0RpF7sKkm8KcfZD`%*R=3hooGV zaro9`RR9r6%X@(WPPdVJ#1;XjcbgOgbu7lMKo=1{@H6+U6s@SMk0j5Da&*x}zk=Ie zqg{@M<8`Fw*z`NP=zdPC5V&|<$!L4y`}$0>I{GA;1Wg<YzR$V%vM$-vO6xpi^o;B7 zHY0KKpb-LrOOOBm%%`+Pl2kC(R(9i^2HT-MB?{)8I{Yv8ZfS*QZ%5C%)HOn>NaFMB zQ4K6Lg{kcae7|MYIgWKSuH>J;o$dRuylqF#?|-n2qO#U-bqNTq00i;y7hNtyh<yu6 z8HS*JO<mxyPygxDAMwA=?(e_+w-J!o@3cg#*qIljL!Itrk$zXmgW)N5U{jmItG~Sp z-TGHf7jwwZ>t1~lWZ?CC_1W!}urzC*BpVe`0#eORO+P0~1jE<L=UYskw<EIk4hdj! z0LqRwlE$PI%1xBL@6KhOyMckDHiZL;EDkz#Xnlq%FcCcm!BlTRC;<Pv)w9Ukq!uz+ z;XJbkcT=00gFTLZaHjblee6le#$K?cr1=h!)XB%4tL^V%mAF&-M{_A3Z8b1l7<?{u zZ-_NMhznc^?`S_A5pP$?61(lL$bKYUR?7RD&{Zy<TGe=Q_x^OQr^T;hjRc3!hA@xa zXI$BB+Xz$K>?=_)qo;US!ykk!2c*uS!lgQpd(!;d_q-6Rk7veF&v94#Llpp-EYGv~ zz%V?np)AqFlAc^-HH4vwAJHcNzgj&0T#NU)A2!CKIPlk-do$=M>E=P*iXfj=>Yt8Y z@PDn{wTo0DkfnM0{4U!hdKIq#J)jg^l(~H_$^RUfH|LI;zO~)zlhGu8ZzNe9`qp#5 z$4e9Fs|GX=Hp+MA#?a(8PY7DAhua_`cijf_Rd|zdpY+ZwPq-~8_Y_H|TLjl*X?+<> zos?O?vws_MmmJAWzISOjOwwuwL6TI6#)jNa)q86V8Yg8+b;=k+CdaI|m%p=F@TD5x z&3IW%3~faw7wx`GKY97erJ~-g?!J6E>m<u+5$^sYsPh)EH5rhvwf>j0-=!L~$x_Bk zBY<XomM{0emd{zHG0M~bfNukigvND{I;P4i_uYGvu!OJApP}559)BmfO*Qch`iQrW zdIzgX{$I(aAYfr;O+RP%3utw-6F3+@sorB>-9}H3WXKo{Ia7SPcp)Ub6VeWwE{Hje zoIizR4fBrH<Oz&_zurp%4-5Pl@z~z9W;$vHzAbbT;TH8(WBT<cI@oRp$AO?E`oGri zPfnzv>|Me0ic5mRs^*S2lTR?YqtPsM`nC%;Ya+a9XRC}pAGAW<e>QC=Ash{E|LcCy zNnHy+@}Mi0rWQh?n~JJs?AOKZw7F(lQv3_T;3530soXU4WY#b`lL3&07yc~oXW;s6 zXBSO&EcA8Qkes&+`+1AkMiEYI=}7K;013bujo3VU8%WkZV`!{h=Nx>UM@W5Kq*A0` ze%ICN7s+M)sbu<~-wD>LV5-6jrVj>>{zdt*=#p2g#*vbJcJUx?MfeiN%c%8Q)<7Ez z6D5(#POj5U^t&%DE%Wuy@ZaqWA_4^ZLEr3W9Cg(FUb$8Sx{}NNG~TPQOLkmT3hbG! zlkQeOgc}u|neCZ=(k8pe^0@#Y+~*yxmhVEo{T6=CqeWUGIiFS<ov?{tAB>!)b*x!` zISD!rQv5g+X=>*FP?ygq+vMb>AI=`PM%$_Sji;sHwKnw7=7{6#r^b(to$z-~3|C>z zHmO3J9{(qZJsY_c)qST7Z<;Ks>(V=_(o;dqs?n`_Y4+5_MT?Y?i`F0fn@3(OyX6$X z@mCe8P@0{d6-p(hpI3K>(u9bxEVVyV9{)tXGx`3q4{i(PWlAvh^WdM4S8O9n>{|XJ zzs?1FUdpJnQ@b=-?QFGhzQsvVQpBCxiyr9Qu5Lu?vff^2H@tqWv~f-*ok<_|Eg0)= zva10}^mt!)HnQ7PZ0IUOhn<$U8bp|&cG|L}^Z0Doe{8oB0+!vprt#2~i)YBFFPx<k z6G_i<FlkuL46Q&Phff6uJ9Nqj=C95I7AI#N`uzFIIjoxDc_ktYTcZsN!Xx(PJ6stF z#MXoVwF7nqF~(N|nuL!wT%0do00!#b)>`SZt#0SmaMK*(-Dg*ZEH_2@jW&}BT5q@u z-z4XstHO6xeVgrt!eosqmw3?zcm&8YgcVTNM%D`~`|=#VzMpiXT(}JFd7d}f*K9(Y zqs{-NW9=Ls(N`Yk7q!MiL1K^66MnaGsBW1a%WpxZ$@Wz+RZoeumt;)b)L)nGQq5xM zum?f31C(Vtu=t+O=hcR`6rmTXPPJyLhUmVv`?xa;T?z0{z#=<cR%P}Q=d<a2!(rBf z3FwjAc=zo)2QppUDTv1(vw=oZrnjNXjaGmu!{<*QEWL5cNB$xig>MNP%&(1%_a-FL z<&WM;k3?n!X^16n$}|5Pm%drmcw}kofyeQ*gqSK1U%zr`+#?gV?DgD<h#DcrqAxCd zP4&v+=&yt^@^)y)+3Xv_ovX_j@Cf2fM?>kTVH=|`CeAtK*e{+A&Y!{)h)GfZy+h9& zaLjD4CpCbFnu{9V3@M?>CCDloYZ-Oe+r7Z0+P!q=TQ9|F^sB<W){^nZq9}T43atQ| zTK$ZJn&JxIw%g}39J@lkESiCTvG+C{{JJ<x(>WtWNuj?ny?HAQg1Y?ksQLhl$Tcfc zu6}@mB$B|D?xoI|Cqf9_I;cQL_Y$gRbUvw!cf;-ZHj6ud(_5WcWI`g{GsUrOYW~K@ zDM%7IRW$Ntbl#P?zL1^ci-GG?vHprU>1NJHX)T56XAS21D?qOrz{;V2xciBgA{JHd zSY5xHBwA*r$y^HLHx)@SWm{A(ZO^a3Mm^b;hZJL+ZJ|h-g1pizrO_bqxGT?5q!{3M z#6i2nqUGa#8M1^^@;3F3&wgST9B=AU<wn4dpJG>f2z{>*bLdr|S<l+zh$OFSMDZ7E zACnM$S)apOcxE1s8_V(}C!N*vi(}2Wllwj>B-7wrJ|^5aYx$$)saNcypFd=vxcZUk zU?qfm$;0+-i#XC=Mhlk4i*F&16%~%CIv=?PGFbR3mmp%*RO$LaxZiy{TZgTG<vOM> zw9}~dnt9os9QbOiyynS6h>t${FbviIe74hRr<A$&Oc2Kzb~kXuZk0{xUhyrV?e)r+ zowvi6tV+7Z0Gd3kUdk?xo9wRDXE+HN0U)25gNnvwA>ZtIc+kk&i+}+ILKcbPj*|Kk zz&!tT-n=NfC<>vn!N~;Bh^u29ujO>+RT}P;sjp8R9nzlLl3~Ir|4EF{irq4SX6M_e z8{E?!H<v%pgIZdn%;}xVv->aC-S})m$9ly>;8_L=iBOzYQKJQZl&FKjOL-sVm=Di4 z@-*#Et=IW=-Sq=m92+?;?esKnL^~3K{!MS^>a-oIAjYoKlpV%ydH&CW5=7N13HT<& z1uz@5)5#ttP;g5AyiI3*WG?rArpn`*N0g^RJ$u%T&3zJKZ+hCoM51{do49}y5X<Rf z)GL<qI~AT<;6b|5N*w%q`ee9xetfdJ!t#eTjfi=<Ss`d|=Y%ox$w{Na-{mM{60T5+ zjl}smm~f}dZlgM^7-Bar@D(@5&wkk-?*ea0^8FS&QapsaRMIFfRy3by0!J2i*>q;Z zr&s=Cl9szoi&we~YN(RErHPNXaQA&v@3H|WL8;-tfdv|79kGqJSHv=%wOiENwmx<O zm}Afn@R7IH4o2k40#Y>UO8|gU$w%##2-jVbg5$}@U>d5cYtiqaIH6-ro?>O7@a~wl zD{d+@Yn9lvYpTd8%}6rLk!3_^)JT0Z-7D{QO0x6Rr3unaGX8lcM}uKWXt)3q18Jm+ ze&<A0H7x^XlKV)rU)mXDyf@9SKsLzd*>Y_)^MONJ-7^e6A9a$r{H6^9U`N&#rY}ch zT&fwSd@GCWtPty$_V4z&F{>t_x%b5k@i`dj4AOu<rZ?7@^W9C-P~+`p=~oVR9H04D z+x?2xh4?pVR_1fjFl9^I?D7K7#K|kI_<JGx6G&194>?y3WX81=mVgd+)6iT7WlA3q z(M{|4DEgFG<8_0d|2<fGZ9(<}9hO<q&fb0GNug^QL6EjkGi~6$iI`KTCDv&<T*ERT z{*!=oz|xRI^J4+_5*ZcgairM4+YV%?lY((Dr5wo7m6H)94Icpfg&DPGYFfM?{0W6; z;Q}?aQy%7Ri>(;HcJ>M)x_qcBlh>BAlzKNCQ2|7wwq!BD3_ZuS&Itdta99Go_$Iz{ z1#(cYk$V8M{-S~i2fn?a;qK#HGiP?YLB=y63*lC@Z{&}SH_9H?B$3Rja`$a~{CU<+ zMmYpdVc#n({`pPh<y}JMOkV3$ChpM_)oYSzuyj_w?T(KmgP=mHvbLI~A=I!5@+nVW znN)PrSnzqz`5Nr0=auC~pDv_YfVE-6Jj4zsJ3*%k*snBNf8|1r(&qGoPbx7KxW~bj zc$$FArP5Ed=S^gN@$xpe%uUoZDdIA{)=VVb8G~!wJh6be99A{*l-0(EG@aXg_JkX; zgclj*^jg_6u<uWHpQTk2BioaqGPfxmxr#Uyj63h8BJnvv4}Z-r`Vdys8@gf@<=^N$ z^ynz~vH?eK(#=kJ6e`WK%8orp^lYo;ZylcAsy;a%_&Ut~Ez!N4Yq=O|$O4qCm9(Va zH(h6XAFM=OPNtj8?=E>S5SD(0|4sc`#M}5mAX6SYx48H+WIVi{$I7ZYQd8)u4S4fz zuA#7bL;DlhsT5>znU|_9X7l)WiTD3u@2!K{YM=h$0xeXKwv<w!NQ)LN4#A6i@#3Yp z1P?BySn=W-9D>sl+@(0hf(3U8?vN1p<-Q+%pXYnO^ZxzLZ{|$qWQLrTYxi^Qo{QZT z-2F7A(d5IlhIcuVahv>7;oR`|OS}OlT38ukg1cDbo0b5xLza&3BXlpoum5+O^FYXK z*T)0O?ZdsfDn|i?m)-Fv)duyEjDR^FkYFhQVjk_8NV~(bFOrepyN*{L2N&z3Gb~2& z{b@5mj=`&UGBV4F3^&&6hDS;n4T<{{(d_Rr#Pj`JJS+U+K#D};N#mk5ECR#3*ABpW zKEdOld8zYXH@+|ZvkHrcy_Xf1Y)SP|8ANCJAeZkx$Y1`;I+F{GSqsB~QUsYD*|L0i zVpZw2jF(>Ho+$?iemPq*rRm7FP)!>6MXy#vIO0h-{6npYg{nf`yEP{Sici3)i_%fk zK$B{EW@7@SjQVZ@(wYJ>t~DYMkgFZ8jhAAkA-D9knPJ#Btzl$?qTdi40AEldUaLcl zE@GL$uLA$G?)mu)Q(n|375F-z%FdfDe$0?Hoj~c5xgT2B8o432o&<{hk9dVgk0hX4 zZP58Ny@VTF4Ul2&n42TnmaY2tkCfHQO0!PupuumR?R(bg8jXJXeDhVuYYuptx=u*8 zT%(fa8oXmO|KIX1a|_i?9m;M}W&zrlHn7E(Lv0V{EZ00Pkg0hw<Za(&?Hz;rx^%0? z<@kr@g`d{HoVk@j2KxgUWUejvTD`@9Uj(7ec!JyRh!Q~POa01ordS`y!3OSttmyLa zjevW#T9Xz;A(4eP_Lg|iv4+A|EAJh_&LSgu*-lF|_sJw!*B{W5m#g>VsC3Cc)KQ(5 zL>e8rqlwz4^SH0)a%zkYd1$I&jx!Q|6Ft{^zZ26+Jf!eYlq7S&!N1|BD#!Zp<Xl_p zBH?b@PQ=yM0K*EdUk{v;Eo>SRS6D8LZ9J<kN-IiMmYkRRzTP0fNV&4L#?`FzB6O*8 z3Rq0rZR8bSf))t*jFUpHA(^|}^%Js0#%w(#2ieeCa_PMD-LIn3xq2*Cc}Z%5Xv1IP zdQmtb-NQ5A!bypZFllU2(&2=XzcQGpsga=2f~L~F;(Qoi4V5S-Vjaqi?=)W7OtdG~ z&6@SD0rttBVOV!#U)a%ijN8UM1!)x1+5aN#?EAqFrnTfu-r}xT{H9?wF$6GYnJ6y^ zuJd?}JZiNT&%j^F%gdmj`QWSnhy|xzr>m{<HM=SWEuKJvQi&0L6xSjaq51FPmFQ0g zje||Dy4+lb`$R@d)i?D(h!N86u@2$HL~;YpgASq>sk=Le=xf{XxoTZ!c7RIs333hQ z?f#AyG7e(EDJ!27JHjXf!dp^SQXj~z&>&*H4j<E~csM0(pHB6Z@v7t%ZI|Vxmvz1# z6}?!TS)*#&saPzqXq+UJyg4v;yv^ua!MgPcnR-GKr%$*ul&aV=)q>q1bKd*Mu64rA z$;a<Q2!rNkwUb8wexi2^4$fJOhprSGS)9x65WhO<+k&-feibo5AfI8OEef$5@J3;) zoZT4wy87qo8Chvk)SC5O{r=HqqM7aqwUlY-bPrG?f9Q>GS&?YetaH8}*t;=TDQk&_ zOov}~z^ZK>{`HH$JQ<`ht9Dy(<X#blQKxA6=%FaW-7IT}V5T7gEt2nR2BTJ;CN2Be z^XNeTxa6t%%_UJ#=^3*~0g6s9VLcHKI4w;6DqF)ZMENt0!SC9~y3^oDgiY<vNufIW zF_2=vcKwIt9F8iPe9Mv#s=vc6LJ+=0HP6vsUAZOqsxyz{ltVvRc*W?vhI%DYfZ#$d zX$^KO%6)!{y|h-5ye+g?xRV;p9kpMK_Wd1lFxvLRHKnyQ<NXKMAE%4%d5n+x$dW7K z&5Tb5>qK`&A2$rvFFFexql5gnW@=*|&V~3lg+Dz$J*f|U9Q*`1cI{rDNKVAV2wQ9- zIu|Sc@z~2UCilEc#>URN;F}-XdiiVT9?s+A;!X#9<<`9}rx!0@2G!fG^|DIlUOxcb ztw-!Qylhd}^%KU7v}qE7jNHl9y~vPMjPX&iYt9Z-U6ON4OHCj6b&G@B!)(cxvGgc$ z=|M2hQNE~r4;$M=XIoxX>xPJyO8x6ho*%d}f;<~(CB%n3&ryZ95W>jF-gS|EXds(` z>~nd`2fhM^*OiRc=G*rPS2xvIPHnWCH3gaWzBShi*Z9mRg>}hq`_?O2=+Sjmv4E+p z1>4U<*Uo!W&yveRgVCKIMs6FxmUzSyUO#NrR=%1oh<JP@Cvp)XRBWywy#>UU#Avny z2a2zYSqQXZ#@><Md{s$lj6_&Oy#dT9u~Aol++Dd(|NVSu#R70NWj}j#T3lVddH2l! z>6r4?**SK<`<&-8<*fVBCjfA?|Cei?P73=`geQE~_?+Vte_eGxB4}bC2*!`Di`~sd zCx_mu=tt}Zak$E5eVC#y2FxK%p6vd9jkE(AZ0Qm06}mrel@EO4Eg<h?PgwWSaN!N$ zG$S4?YwZBAy|s>J#_~gxBrzpIN(dd(^z@%tEoYl$6~&_1olvrwqN#2F(F?#tqSudo zAn|0)f$>Xde6eJ7oigeZ^Nq0YboJ{Q*{G-zpd3Th=VclIQ2b6MCr?X=YS)`d742lo z=W<=}ZQVTurehkau1bb3pz2Wx#HUMcB(AI2Oksa#?>%q1FumqF>-8OFQ+}iDn})R4 zIp6A<s$M$M-7qA7Res|;J>)BkikaJ<aSN)yE?FCq!>ds@RHg;%x~5(1H!##!UTtA5 z<x8OP_cMCUPh|hvWlX;}c2QF<;MNiLE`c5tv9&}Dx8?-RAe5&GE_@?F3uYU#&SUMT z5BYh^+s62+Hy9m*u(4_GVZ)!v?di(;-W@Qn!bQ*A1`Wtx@V5W<vO9CKgppMGe-JyO zn6HYUY8AhC|F0_>{V*HT>apw@@x!m;OjxhxKa4F)zrq6AQM9e|BKLm}S=0pw!^<-x zaE<;rqJCJ`gGLR0+Xs_`VPQS(3l?W#%W`C1s7KJQq6N0sdV8dCr)~x+w|~bHsZGjG z@{IE+GLG{beY^MYE9Mf%BNq2>4&=T!7I^O=6ZZT1oY!Vj?IkFZbKzZv)s~o|b=3P> zvXw9lDZ1jVR63koi?~-f9g<J)VQ4X8@zqC(2HVfinBjSCX>g369h2fFUDej|sBb{q zvK8+<36K2@&N_x7PTt+`#K!vTNB06Q-h93FKsm~=Vl)$b|FdJn@4#dR>~cKMxo><k zsJ<6EIzAS>t>TiN{!NrVqXZ5{^5#(#Rul5aQ+4j$XCEvukEoEyu3E=#JgQ)h`6=1E zq?C8-M&mGaZCT>GGF|;^(*=dDzfQOAuU32~Ce-Vh`<v)*%2-dWT(Gxe>IA<?-NUAN z8h8)io|C5I(Zk<w9k1?{*I!a0Z|CW;wum7kIT5|{O4BhzpX1lXnLIFmd=I<fsa3%M zy~|E#zsm<4GH%ebKdH`72n2aS9~FxfoBtB*FWFS&?xBxWQr<m%bU)e%qfN>d&zOX* z^m|#t+O4scG5IQNaUG?S{=?+F%op<P;~WPPnDwTqynmHY;tK**$EZSWwFbi6Q(yN% zo@ZUuSpp#9o4lg;asT1~bL~rG9)IyR$^&C2U!H#LV8f*oz%2T|Q~w_~0rh_=SMl+| zznj&+8P|XRq`}1)*B9|`#Q*RFtf$`<@8Q<f=PwifZJ7W4xBqef|Ah@ea7VeP`vdge zR^k~t)M9k`8<n-WgP$!$xzV*S&?hg+>jhzMhrh^=VNnO3DD;7@&y-$>e>s~bwEWvZ zt*|P~rl`D7UoJ~>v-~bYCM8SufV5b_-3(IaY&jlg<=A#s)%*BG^goH&$QnS%ThDvA zC=)Y(N}N`M;6*qMX=$SS$;qEvJK7cyKr8b&FDsw{BL?*uxUk(bbk<Ov|0R_he@o*A z7P<PXuA@n>uY9b!;->0;-e>HEq5j@@Q7zj(<ez3ji`<dIzzVPLD$UDob1QkgSz|;Y zXUd0<*#D6m-T*?*`eHJhn45L3w3=gLyb7-R$*K-EpAdbP@{}_W@|O5eBWBG$7lES+ z2&wt4-v&9obE_5+Dz{vESG}8;B^@ML?S9I!O>uW5$#{^e+9JnY(e~r<msjxDs#&cn zI$7@{r}T_xVv;cBxb^@%T>elZ`+v>NG86si8{E1o!MgE5OQq~zOIJY$0uI7Jvpg+8 zpuWqsFyJ`O9}3+Wt~pfe*MfLdDYf36l$ZVmDxQnG)RPgF5R*Dl;GHIPmaq9&S~%Wm zWNqZF!CKY@ZeTh?0L#O_5axefuNUqEelIh`a%4F^$G}t`4{jX}59HF?b%eA$Khi9b z+Acfx);uqCDMu(8#lR+TLMn6>6(ze}g|%2vP*dPO2Io(hIn)v`NAZs`Wl_A-pFuB< z`{y~#zaKdz$K@v?y!i)z$V(E(qnOvTz7EoWQOu_q=Z+aSyx&)<C(uwS<h+}-vfNCJ zFv<goQEi&pec5s-I$Sc|y2;c(ezt%H6N8tW9LmuC*_r+>WSD|xGT^HVT*DNu<&Nc- z$u#o;|4Yih!S#}1lpfzc4BYm`6t3*1a@OF($t%L&??G-2+#&M7oioLCr-t3+K*m*V z31<&mUH3K4R$%<(UEhZf)|HyPy(4oGzj2YJOSeB%l)Lc)^?3xFAN&t5|F^FJdBNh- z@9QUz_o|_BP}oGkqZ+*A@y}gYcs0#pbMRs`JYP+jd{46{sr8u5Q0$7M`mkKaM*b<u zYkzEl*N$8y7ZJl3`}C&PSB7o0B0?1x@A!_;F5~Tg(G>cBrx~`9jc^P`6!P-qXSw_H zC7S%vA{q-Lowwft15<20$3@Gl?Ru_VcjkdAnN<41Nw-x_<)`{fk?GLzq@mZc!N`Dm zh7!-Dg`er$zsb^f@=zQ#OYO@H_f}s11Lm~<tyFE=!*sV3bCskWGK=BB3FQw%LA!AG z$NNYREP~qG|A_Jq1a$BihIAbTNnSqXwM&z5$-18Lgd~;m9mQdyD7FrhGoesFt)n%w zlwvsOeZAm}BhJ4=?Y{x;e|`RV``1!RQNwa`{FTLuuP0ujQdXcl3qYvVR|nl<p09$6 z3SyV!^Q|J5+~~_8MG;h;7RRj)x!dlVN={1iiL%#CBNV(;3c=5Jx&zTPyg1kQ1#fYQ zvc3cTT*m#^qDI?b8~$G2G-NMvE;|eguHNmZhSAhipDklC>w9q+BK=8)Qj3Xn1P%g8 zw@)e!(}Y(NENiv+9I|6WHi|}+ZpovJPg?ierjIYjytC#dajtZ_3h(kYZjbFxvb;)O zcP?A3b^8C8h<|S}|M~Tscrs`GyHs1n!&MDA#h|N|y0zqHnKrOM<a)p(o4dMM)u|a& z<FzkxK?~Z{c6Zihy{*GhC}xNfm=xRBw-~_M+t5&Jiv<+8ZX9rIH#%IL;YBR{=hOek zjVxIJySbx=C#<>Yn}UvrDzC#{K~G@06dHH5`|e29_1qmf-nDc?_%|9nnLZHvpaUL& zE<LY=O&XKS*p_oJ4J^yF7C=~bMe`P)s6Z`SzyjW6<!wi1HX^JFn68p~=XosF+J7uB zx~wCza#p#Kr*=ZQ@f_sRflmTM0S}kz|FvIXJ>4$6-<Z+C#!5{-bwdGm{v(X4*;>XC zJz7R^fcIa`PYl((d4Ox0;t0XkZ9Js~SPU<XMU{#^j^H}G&a(?bbv$*itos=1f%Ok& zHM;-Ml_+oyA{?<Fw9d+xDEY+b`g>ud0B5RhDA8!fH`sP2hX>#5yTrfzmV;1K4zPOX z$uMt~`KXSQm$;&_IAO8*x)RD&AKbGd6+-b38+pKiLN>)K4D@y9SHdo{<fuFxS0n$N zjiHmhPD-oRnK6+R=mPp^a4~<$XGtVr!igy<p`-wk!@csFNPtHoyPfS{;P~GN7cRcV zSx@OsJV|As5a?~0#BXk=)Wl=1BxK?7sHJINg?#x**KAv~*X<uIxAuWQsLDn8;8v@A ziukeNt@+z94FzS*Bm94`etT?6J4aN?CXq;@pI#Ru!BLhA<|s<o+BY<_et(W<CydB$ z`ayE?$A!a#d<jw0bV5XGzcG|Z{9_yADQjJ?FLZvu0=jarxXxPtZ~I4x@1pDHVitUR zQJSkq|F9t9l%|eQRg_%;!tyRK#E^TgKjb)q54IYXte(S_7W`^>`#oyzO0jWcfO?Fu z%C3z&%PZDm-s264z#B6AtB*k_j#rx*%wAhn(^eOtuA*#r7A;W_hvC%-eJ!LReJQtz z10C|_>oV=D`EN=`_y0k1H*Cr;j`7|lsa)BAJFoJkM^Xsi^i4FCZtXV<^i67ha;Bu! zrsO4z=+2ynU@zH^FKvIv@d@zi+K^`x5`i;zLB$u$$Cf3XhkHrX{KT7vz+QmqP2}@T zOqBn>cjT|_W764@`1Wub`y!7tzw22EfXmU2>t<@;PPGK%>0Y(nhc9Ay`bG95qBb>_ zv(HHIUrSkLk}r)WnU@{?M{N2(JetPw#nWvr+`2p(jvrG0WR~{gnDEm6N0=P;zv2qR zs`%EMdx82}{ZHinPNe=P4Gdz95<F~Qo+99SCjYN@eT)YSW8&alVNWdie;ozgyWfa~ ziGv#@7~Vem7X<!BMQ|u4SpYL~&^-DlM)_$ljPmzM(P91TH5Jc3#RTl-r|S>s{wZSL z#{G*?+|=)M|6+;$UN=`NOilsHZ2n63PmC^n#W1=+LmYempL9MfiP8CRJn4^rFh22Y zioY18Fnb&K|J)G%i{z;1Upn_Z!H)Y!MsfaPG*C(E`9J9#K!njbK-Eb6`9CrGe~sh6 zTlD`mj{hF`2K@igIC3bSTLE)=0(-~W<B_gizu(CJm&^U9D~`52!uVdxDgV~QzM%_8 zl>aILGvNI9_n$KYn*P}6tDMl{t4JQ)T+EwJ?p91os^bYP%~#L9xG2*4Zp>*|tyC)( z({vizSL#`xN7`ENWX4;4Hi`NCk?oJ`$t2YJ0%VD|M3(hBn~`BjhGXnePhHd;#dZ(L z$S5cfMZPo`I-*P^uEToG4YU*fkWBEtkAZTH>R$m~w#G9Ih-jG0ZV?w=M?GdnFJLD2 zdQ;((9Mq3#Y{woFL11{Ku%g`CoP#~mQ2ipiNpdeg_+7yR3Zjrkuy$2Y_^?2fjIq-r zk_$pm(rLtOc#Y=ms!ZelB7M(KuM6;pCQ&2tK-0d_n*mAJ)rLBXt{qHL&vO^+<a&MO zpWDH(mU(2(+a@ll+MMF{Lwal2KhY?S&!D**sD0m~=ks6(HnZ?M$<zH6Z5wNAWf|S} zTa@{>7`@$KC|iO+Mz&}R>Z63o8<O8lsspyW9WQOPFm;pP{EpEDx!n)`k~f+iJ5-}T zs@OD!T|n+Xqa$%|VvN)+VeVsBWg@#pTT6x{Km2}UBCP>*GHzzC=T8%a9Qo;Ka<hsz zVa^HChJ11u+E`ZSrz(lb@PX?mkEM8QPrZ3i;~F<HzHR#d9<F&TU1k(*B_9+blNxwv zHu1#wS9f>z^s{Qa)Iu6DVfg4W_K@?FuTkjbdw+I($rnzgS<1^$tW)@sHX`Dsqzj5` zevLE4iibJ;V;W-V^3(oXt|Km|G1?_YD8)3-KfvlSWapaMmwx6nF>{0OoPs-tw}N%B z*|au~8-n!r;LV%4n4<b^vys#28?}aQ?Z$l_l=bp-ocWn}%&FCRqb?7Vh3BChe2(Ej zn_1tPNI4zTIE!<wu6pm*2`Hdg2UP$15%%mVMO&#Q_T}E~H{7cXJv{QACi-1#g;~C? zt!H9T#_Y56IN9ynEaBzqm6q`EVzUdMGyuZ^{`p?s;d9Y+V~CJ_eXtvB8he%R*7F|P zZh@EwF>x?GB93~|XD=*3{^<24iGUbbDV}Op6{^hvf$K<cq=iekoWn4F^c=zY`SbF5 zR?HotNZso2%#w5FJs)J<aXSO~ZCA3@@oy6<OT%+n-Ts<07%3qxQc`Va%(uXQrzw-Y zVPAKPBKLTtcWfS1x>I#9MWuU%6CiN^wrZ}iVT<#n4%JATtgUFo+T6Cqbh!U{P(kN` z%k>u)6W4_vB0*mbZ>sbJ$kx*sgWgDwJ{uKcbgaAo)-kQ%FEy?xhhyZa@6?%5uV-hY z%f5ammOVH9Pup%)%1lM~LXOH%n`u4CqR=(j&4Si8=P}!{FOH(a9HMWyB0GzB15J4L z9S3tND|YH9LBAulC^b~EpEH(qOSZk1W2E52VV~QVcxys03ap#Kenx41)e<Tz!wUFx zA^zp4UFqvw#41&b@HOl1R-)n}52_2+Oe`?|@mU(FNOV(w2}<}-&8`0)QOoV%=t;?d zeMapsD4p=}yWOi#*Wnk%P|WcednhwhyNt`0=DYy`TfZ>ZY&$T5+)8qgzk*Qhd-;@g z$=B{6G8x4`@rKc^WYR9CoH>O09?JBkPO=;jMMZ5BT?-B@l~kT>N|NHHsD7G4BR?jP z7<d4X4})IKJMZN0BSE9f7X`Lih*y#y<dD^0<dTQkE~Bcy6M*U>+k_dr$26~vvF=); z+eU1JkqQPz>hot+m$bBoqIz~man$2oj2zV^mlH0Q5cq73b#d?0%WW3wRP!@3Wv#8k zYMbQAA(`yLeHQQy0ncI<zaG6bI^(h>RQZ>}V4Xg}pFi3zYeu$;J0rr!#tn2)V<W7F zi&=d8WmSB3%+O5F8x`4$>Wou%Y36oG`z~Xo3?3O;6u#2WxERW5WFr)~cT5+|!tn7< zp`m64PM}Se?2B4Tlg;p<CJNLSN{kJvvAfZE-NNmI_)_X+*}!d;<7#J^L@l?U@YOAn z!34Ne9WZED((LvU41R-!ULogq7!x&r_-go6<@5B~G#pSel495D@Tr$1%L+Bp{c!B8 z3I*&awJ+<ji}Lq`!1}Ros>hhu+zijH_uX2WhxE8M9;f>ofK8Rgw*Hj)Yo!#Zh`nh# z`HbIUN*#W<Wg0S4JCKsvruuu1TbJVORN1zySlZXFu%yy;JrI-4`Zan|KgO+#W-Byg zbW_X0Oy)Cmx&FyVHV;t3Dj1)3a1N{4zHpce7cV>=tgCoD!gAZLEtA$+Tw1pOg%8s= z;%;pab)1bZwJmaDG$_ftB;dExpH9#_)riXH3bIMs8Q4u~Qgxb-Ha`3EbtTrFC8Osg zWraQ@HRh4+WPT;U<h7V*>NG(zx5)E}JojIg)k^+yOuDKmjYD=Gn^lFDX`2&Qc<M>0 zKw5vVS$TKBa6_*J;mYVPB}ZUfS*uOdxnqCVR9cA_G&=+WmUauY!t^BiYDK%Ydn16= zrObq7QDIqF%BMGiC0GsV^!l>WHFa9~yV5_$$#snsEMaLG?mk@^-}7Yh)|_iDpF5uf zAPSp5AUs&`^VMGB|3brF=N3$GV4GP@#j5*7YhQ4Jvb|QHd{L#mXFw-Q-=Ee@i)xl_ zl1z$jps1IL6)6?3<E3M>6TqdK`tm?zg!^d$w-DylIQNzcZq?)|Ykbv-LTMaZ-y}$x z4AYiLQ}aHs`Qx;KXxUuna*~z(&stG^8xaBT5MEOx{_ZWDNRNo!r&F&b%<{1>IVX%R zQFPL}vJzzZM$p<kPx%_p;toI=E{#S|3&`N@^H;2XR2=I};<5moa*WM<-d}(%`+WU9 zv|+!pH@X}1;6!{&+RT&0ym|Q~*hn&!28zzH1s_cxTqZq&=Nx$Ne=&VEm(|!yZYVsP z)-WU_shmt}PJ_>4s}N}?CLr~EcKzZbu$Q7~U3PL{!MIu;FvmPv!RoEgxud@F82wCV z%f0vvBxCa6^wD55C32X_-ZH+JdwWkQRe-vUjGgoV-#R#Ygr}}4)EoF&4Sf}P=g}QR zWp@6Gn+sD{P(`1O+Pvnh->~}nhwm8>Q8|{jP}+XWeqslCGi&LP)d#NeJjmrY=>M?L zq|$goNvOQcam<eHr7#h_QMH5tOVfn=w}njJw6v_&?(w;w1tlPluc>#EzPVWK#EytK zz`siHgJILBtOqf(5I=FtyHiuDExTh#;W@v>ul}pvYOf1Aa`!`KA>m9BDbwDIY~Iq$ z%OEl9TMIpb{qfIN#b;=Xn|Rlwo#Se&ZJixP-Yl=1lUB@tfZkRD_SCz`ZxTF}hpxz@ zc<-Vx*cpLw+NZHm2gbssY*+98Pvm~nhebt2{F4*gc~b_@X6hw%x@V-SR^a{+jaK)p z{a6YQ<k60uN8_<ugV17zYfrh$c1*A_BqG8gTMg2zVhQ$!f+PD*2F#ZcYr};#KJ8dB zJ)>*WzFjG<wj&N#_hNVV+}$gDV-zaJ@ocKcx#QbZ){^OnhL;P1Ty=3n{ri0MKc12) zlYObsL4G8#zbQ^5ns_xXPdFhrfet}tCa&iaLh4J7RL^cU_a}-}JlUA?VQpGcc`_L! z0y!XKWs-duV~6vv!@Fr|O&$TzEN9kp{ZktfUYDmA)NNwd8L>Pb;#m_oxtj|@MHXVa zVxkhYo~JxhSaW;su$N-8rX$;uv$o^@SYXewYo7N_T^3*gG=DVyZQ$F-xTDv!f`9yo zikG6>2!AXf9r?8;cxD)v0juv?rH3x_>5OGXRU02$Z%a#d2T+%5)|G!NsnvE7Wyr`z z5(&i1_*uRH`>RCai0Y9SBPWxs=A!l3Ir`rtUl8W!u1K4;oMWTyFOzqob;T6CJE6p$ zd+EY`6>HCdW(Hsf?>~~W6pJ%5BpjM*3jr2{RYc&6^3(0O)d=g4X~e&3w&4c)n1k?> zaOM(ETMl|x`ZX`VsUNXCHZP`s`2nF=ZOpbPLcKECdTri2enaO!uKGSkDhj7PzlNu( zezawftM`YpY1&t0C%f%cft0d3B@8S$3L|7+5q6sxYF;AvZ0xj_NQ%V@DpgE<K{D#b z#XcS@1vdIyBrgc%5W-q_`inUwI+s;etOjiouA<alP~SC~*<&M|8t1!}Ec@o3DS7X@ z@`4(DI3=~RFH(BCDfIMc=YW?(JAS|rHBte|tIsTaMJ?REGTkUI_F8pB9!v@6LwH=5 z!0HddGUGLdlao25(Od}k72e&sMje(SwGBZ_Pq=jQ93D-v=pwQ0L3W41a0aUmXVA7m z>QtgP;TVV!&5;N!D_o%Fn`=g8IZ+w<c0c$~dENa-MMnTojpN!(>>hNhecrE8s8xj` zSOz#IJ)zN3b=#X6v<DkN0s=!v>6cn&U{p<+KJK2QF0D_wk;Uhetwh8I(MVYT68Q(( z2o*>nKXZ}m26>5RWf+o_uu#z+`OHvkeAL2;vaDi8j)a3A^nm0nCm=9nbVDbS5TUDP z{A7FNEHA?0Cy~nv@PpNY59oUw<hS#s)z5Nb*KhN+g5YRV>ar&)!Y*_Kf|L8i^j-2h zEEW8jVs6Iozpg#8P1e;(gjT$T480h?&I?hOV1e9qKQ4j)0Ysc@u<Q=lR<xzz7Qjv$ z_nNzWc`Dj*1P@|K3G%QH{L73Qz8QI$a@4%I*b=bMr8e@HurltC55f1Fxo&NU+gP;R zExipK&X16da&vXd$UdtpLAY4Deg}W)2bwK-E4Yw;ypxdTX}ofsJ?V0oU3vufKkSKZ z1TQ$ED}+WBAebW6x!xEAalt&1*=2BJ*`vz~{+aqpNAO_okkh#S;+({Y11m&N>)>j{ zKCe|nsk^Xt!EKE24rFfo#;i_waJs%;fZJiBMQ^nz`P2H4!lz7g;aKjFaj6nn0y7V| z%CAI4tc^DhWXWp<6|Y={b%u!8NvhR%VBG!dxOuZ#)_H0zTWOi>whHmnRn*w@ByGOp zT{!?tDaGFMilxj`u{W6;rta(F*T)?C3G6XRC|V~=qcAQ}TeSCz#|+r$B|`9O`A5@T zI(uMPkFPdJtDprUvBA>hAy#`tUd(qlbzPoRdceIWLU;KUdU>%cg>vj8yAPlYU>R9t z@zvV%?H#&-0yb{n7Q(}Oqdn#)ZQpWWJ6)gU_#Ki3JQ>-*UrgcOoH`Ch^bsa5lrmPA zA-pO?pVED3?Y9M?9c69JU!553@2HUingmRMsr()9F2}R(M3Zs6hEh{Y_gX)uCTE5{ zRorrUH!Qf{oM3u;b(?cj$i`U>68#0eerI`tJe9x8tl_&$r;?>q$zMyHE+Tv5aJRCR zGe6;nY4+Sgx)JA37K(uKG#i^Lb0BQ-RVNu?g`-^fye_NJVYJw{TlOkb-0@Vb&8G43 zAO}%bt@cXG&97_Y-n1aMqRi(;N@xmIfJb@|ujitWM(q+;MUl6Lo|#_P4YQ%SjXPUK zsn;XTgr%>U5u-UKE9>RHtMwax)m)<Gig_sl&`aH3s}_c?AD5<YiJS%kGl|XLpUzz! z&sndEDriC7H$I>TStNCt#fYw4!A8L}WYP<B+>ne`1CP1aFGG%-`bX==ZztU)W)_ne z40CU;QPyssh7i}^H;UB&+JkQ^T}q{v-k(NZTz?<FT!|;`UF=oa6%oq9M>`w;zTq|j z8tzd|F~FD(qpn}#m+gx7SF6&^v#7um1S2jxjYQD{;@(9K)ck-FvDw<9U-{L*>ssq= z*+uuu`0-$Qqf;BZW3Bs?F~z3D{9}4yJ3l9QSsu_$#gx9+Y#fxf)OGk&vc}2$M-y4y zp-iz{P3?=ug!o<5v)$-;#_4=fCS~jJ(_^i>(Dg?jW*zH5i<j7sCHoDDkt+ywf8gSS zXyfyhpCi_NhWxTH@Sdhjl8#z*b;nR&m=M?OGQ(i$%|l9V-&kHtgPeGx#+#zu6tck& zfb*pDi^jX7tJGS@1}$AfpjL9_ug&j7TuqUvBq+H#us1Xg8gF#)LwUVm!8Agh@tzBE zQfO;k#s2jcDN$W`cz8z7B>PsQMpx*k`T5d5W_D*)IX6TRxHjk<pTDAI=I*0W;UH9! z(hmXOUd?fvVfGOsOtQ3|F(DQFIm_k!jV&--l8w}De8if7!-bLsRY7v;vCc}aXSdZc zf9_>%)TuX&qM_PVjA8b+b!F6lm8zA7QmUWx@;L6Ay4fKXF)1a|g)#iOC5j(pRIWMT zSOMNsIH<F4-BZkb-zjL3>LfTo^<AqP^Zvwd*m|omFWG5kBWmy>GEN%n!dg|6kd6*B zdm<eWf2rv0u@V>{48zSkd(-3E0q{~$FfKwK?EG*+#sg?{r}v%pEEh}V>gpOZ3De(; zyz`Is{!o9yA=Vtz-1eujfvH$E!D!46J#8A{P-~%tDel(6x$iybcaX?ifLBR%I7z}> zW*X58puY6V`dH(>{b?#tp>6xhY%Y%wkGyjyS$H);q8JLBt~B$P?X5gJ3uInWv;dsU z9)5~G@u^kL*n&lb!mTg28dlXZ#`h6MXpK;U$t!$@64(A}1W(aE#lgq@c+AXnfuE^0 z729%@SrbbtdJT328_uNz=Q3ciA#I@10msONtaZuKHa|~Hx=7aUK-binylF;N(dyMj z#-ARA3}_~I2>IR0l;@WBdb9b!nYe%c^ysgt$z*zdCmn0uhTetfPO+;BL>==bOxj=R zx&da*ucfPRO9DZZW|iAmf^;XRS6W;A+{;@T;aPGGpp#L^THLL-e!LQ%l@lr(RN&0G zadh^}hiP|G{C;oVjli)p@(j&8<bb$Z89p>(9OAYI=Q7e-`FGU=lW+I7UXQR5FZ?{a zj8V-m^RrJK#)Hc@KwKKk4e3E<6H}aA>S#kqeJ~lb;ibWr1NCy4_smuC6lE(i*DM|| zf4&rTz_mvl?Cajk=8|;S4(RsCeX}%~?I-I)+O<3tJXqWICSgE&334daeV>Lono!@+ z<&iN9Cz+A<<L^QQRbBa=Fj^00(5**gRMgUP&+WRAp`Hx9ej6=dCfh}we3IO{Hur^% z6(A}|!DjwZ1J$r2umL(5cm>6bCBrTAu&L1^tvWOqGB|uWY$hwz*z6_7^g8cbOy`v6 z0hN7K^MHq0X6nH{Jnl^oj5dll;Doj7C()PfAQ?@6WbdCPJKiUP8v$>fU#9nz?nXCg ztVJUgHfJka2jEY~Jj;En|L{@>RvpJf&x&!3CuBb*aJKm^7}knDu5ynO9jHGPR2Cew zVoSZ!iKa?VOe<d-*c&ESGjHs8f31O7zS**5uWBlGJdmPDHQL(ByqMl>fTq0=vmVvt zZrUhI@S$#mX<i(vw0hy?T($ogC>U<y6EjIq-K`a~;Y*K~MHE`6_lj3fxc}^&>U99E z6W!6coT?%=8B5QGMqb+XU#<6li%;I+o0~Klh@o=zupjVL@nIbP<PcGUdfCw$PT}yA zy-KHp)|c#zJZE)+qam){8_6}Y{d8U>!-TJOCT#FnOjYR3Y_e+ya*k0Itkx5jn;)<= z!KYgWuXYl05!q6hdIq>1z3AOLAu&pdKM`?9iO+%kL%`%S)8+=lC7P|zMMY@w8sl>s zH)?2In=_u3o|N~HeZNeaX4yRTYc#-3g1!NEBMs%puKn-wLms5hyAQ;sT^AAvFy8=7 zJzdE>@ScFJavh|ap6mAp2NgwSZHgw1#DCY>Xj3rO$`ktfYeUps{i|vFq{Pn^NotF{ zNcVydy#p5#<=gT_@Xx9u{WzczPh<q3$gV;;vCVP7PTii<H1<^YLU9#e&eJuT3ZL+q z61f%0ma~XJ{{iuQ-8967xlo3Z>bZTg59`3kjEg=8$HAf@&TP^{m#E$5@+5cj;F6`f ztlfkNA9DA#O#*y-Cwb5Z_ePCE3Q3rjJHq*;vF2+s)eIHAPxE?V{YO>m;_401=Nc=5 zuoXdPf8m}UhD1>~4U$5i4Z^p%^DLppp&`%Ywmu=tHC)F1zQ`c4WYYT-p+J+MV}oa- zK3YckES2ZxcRNgGO?e;BYjHTonn(2fjGarWGUe$9ONoix-)k}|k#Q;vy6c8%GO~6I zMsJd4EeBNsvau*|C=}~hn_*6QgBi^wV>9FUDs8UMM|=2Hkf~6f4}(^95e2F)EX{*> zt_z$~s%q49E@ZWh$z1t^wrxv3x5F~gb~o#+&{42jbM?xg04k8Eq<BL&g&;(iJ}HH4 z_3j5W*_wng>Un02aV*pIFH-ufqc}Kls){1_8PE&>&T^TBTjh(L?ExR+uQIuL$?Ix@ zIX$Azi*hQaN*1j}A82wYs)GdM<LOMLSt-qb3-726d+7fBQyS<x>KxM0FyBBurpHf# z(#s@roQ|2F`jRY)rAmpNEw-t?^BD1gAKx_7qL0=T+_kT<KWtO#*0%GR-QC(ZYmgLg zj*o!9x73c2>zzJVxy@#_rQ=s~1qypA*WiQ>g9_&$)1!(gl`+t-Zlm&?fvRE^p2JFL zNvUlV?la)1hF_rd>d9;XpmoQ5`lxDoa>U0~uPiRt&&`;ntl7R5Z3f|ZS^Gy0jadJz z`ASHCI_6G+i^|B4YWws$|MAVxPZhkI2)wFDp+=eJ%lU8*E#n#gA3FKRpYUyFdX!Y# zlWI0v*Y}{?Tsx;PP>}S>TipTsr=7}?y0*s+ym~NidQ15^Ckh7PqH<H$IpD-f#Sg<f zm4uu#-?u6ij#<{J@$s4;>gEJj$-i|Wm4S~aaqDXH=cY_tRwnYA8exo;1AvS=>-eg- zj$I{dkNAEb6PG8Z5Goo%wZ;E{rb5O^rozW3g~JPEOrB3IBAj<u;4tCAG0oQ<Dy%}P z1*+upnhIw{SqaCO|Dd;}SEr7<4Vg_S#Mmaq!8(r{$z|;Hf(EtuO(9{dbBq{wfRa#y z{>`9g1N2QY&p`8!4XvI$i=U}UHAS(`3;h}^9-`yFnVP)#eNH}<dJ*~06vfnzXnFcA zas&7lt0UVZvkfx`&b-IzO}EIj^el^s12(cMgnE#V0@I}ud%Z7ljD|DImvn6>r>srG zcYDOr`)R*3=lSSeARtt~HkBH>8oh2NGrdg51IO=`4&40SaVcZ`6q;O&CKR)(4OI0R z{mi?ky6C++xD~@{MkK{CE2p7{K5&t5DzjCCPP?MaXZ<HQRBPKNMH3U#r;eP#C{Oqh zZ^q#Pm%NMNFdsu;8-A*{s2`l^g?34F^X~9_{t;%U-5};VCky$$`U1ZRuMya#Tmehp zNR&>k2w^I|XP<L|wQ+@sYPnXeMX>MN8#aUKjX2>vyXYSc3sy!Fd}AvE)x+hZ+?cfT zSJxj29XT?tjeUi*6)+RA3Z|Wf1{GZ~j5}#2%07AHGl-^8m7;vM#5wcP1r0}frq!+o zQ266{dqSbXnE}l$KJ|9N;lR}j|EuEc^_?6E$&?YMJZ(BU57DHXUSIB1NQVSHiDDX{ zG(!p<b`t@ska|GU6j>@R)m(_BnQHIfI=HW;gsKu`B<OwbCSA~brIN70)KX@-U+TO& z@x=72k*QBYjyn09h15T{;x4R2x66Q22eptdiH0kpFfPXA_j5qLX=PQz4KLeYi!g7e zk_*~+taP8xAsuYgFNEIX3;JrkBfRFQ4`RfVke2@8bVUOEgs(g=cp4L8yTQ>Fv7n|1 zdPROSc;Z0@OX`MZJiAX;+sf}Yp}uqK>Ltior8agusWsyGIK6;&L54YPB948-&!GRg zZTBi;8RMQmOBwy?5QSKe#fu~|@Qo*$dfs<v&zEjyxj;r}y)9GHi~bV99Z7Q?&v^RY z-gChSFs+en<~O`dq=?ohk1`Y9jMh=-+EF1FH0$M=PuXPGQs+9dw!K|<n{i03a2#F% z6O<E0o^xA3cr)>VF-(7N^DznAG0zt|#s*b1uNBBIDZm?V3JM9v;2&>>_T*K-qo6K- zUWCNdnsZv)QVdeW>B9N4>pk_OB$M^GP58145q#q*+HI)U<F^;#>t*4tA=L~brpf1) zpW!janfU(GZB<E^JT8~Q+#BEqcFR|438zY_Q16zBemgl>Y=a{HACzaKmr{-5;zl9> z|8DY}_B?OOJJU@hv4Td7A3w&MQY%EbYD{oWkyPrUQd98#K%x22af#;xxD*~M%m&%6 z@^1(zkrZIn@8UaX&cHj!3O5D~{t$T*iW+r(nbDt}UE7etak0-e2|6E2DSUlqQ1LE# z?%;k~=saBRHo!&5s7ssIWM^vRkJr)$SgWP)r;046qJB?-<+Dn89hoHa%pchV^@ST7 zUU2~>UDteGeTl|}UKR007GG^moo4o=_xafQ`+tiCd<ad1Voebgoi2rOnN?7<(mlLP zO%hy)nFMhz@WL*-7_GI%OdJOv>u;T$xp@}n&1=5Vc<}B}aac<F#{>9GJM#Faae)sy zT<5PyaUNIR{{<jVd!9`10JSZYY5B027;<J69^LzC3}a0c^Q<flZD|)Qm4#8HnDkAZ z#}96HrFOY8Fi+IBi(WjxnyIEfOp7vFq)1eNKkQ+y1ibgw)~(U1EgrhnN!3$#%I^mj znJ*5EmB;6*B#?mm&kx<gValK+$_E;G`P~kOw!#>DQ8jdrJSWDj;~P`~Ca5*)fN&@M z;s(BF1M+G`RX~|qt@kfH*J7Rn+ebm_zQ5tzlbL!Q=Y<oxQ`<@BpVgm7*@T?LH$S`N zRlz_Qr1A+qRQ=l<^CLRdDj`nt-I`OrGlul)-QfaGRVgLs34X+yq(>O2$yWO4e(l(r zL+ycaU!cs0y;IU+`mS>s)2iS=Lc`Vf=rnZptgi^ME<wqC%eHziR`3{1`TMSHt)$+e zCqkClP{PmtRZpvWi16x;9T<Bt$bVG_2YAXGf7Kq=Jy=dKuYzDBj;z}G?A&bg7kXhq z6m8AwJ;zCQ%)YBgTsWNj>0gM`?79@pP3C-1s4Ec-;!{e+S9Pw9o9ae<jv<4R9*4(m zl~qk1Ea$UM`&mQBTyEcUq1jLhC5Fu9Dt~6Rm!7QBN#?OXZTtWcT9_0bO)DHORMZRs z0hsIixDGB;7#6py_7JMwc2f$Av?I5QpXRzvly@#j&LUoH)v*sUFBZX<oH<klkAUH{ z?EImRF0;O&$Phm;cm+tQa8%X^!Iqa>TU;6R+@0nH#Eeg>p+#XAv^2Iai9S0HV(VF+ z=R#C#!+dhzZewHSZGLbF*VhRWnnu75<0{Tv$c)OO^%P!CFK=iaFbg+`C5cg)N-GAF z@zfvp6n*JQOqhg8sL;<-Cp$YhC%b0Oe%E=og%;N6Hv;rI{MG_T7RrX3&HJsHGb0b2 zR?MGFY9(r)v-kikx7#phG0ETuVnN>?<|ep~f{={PQ0EbRZZ+9;Dv^Mv!9sO*9uzBI zsju6&jRD&!s81Qed$)~+yV1Y=HoKO4pvIHWizd@+dztwgK1OzTl1k)f@g*3>JY@0J zGt@tL)tAt!HupS1D`}S6qR^M~Os>Xx&i#YD^P_4GLoax={*)nJ)0D8y0@v-!((0b3 zHkDjmHqVmkq+}%*(W8Cm99PrKTjxX(nh>VB!fNEgR-7A<PHUc2Dx<NK{~6!(yEds~ zztWgb@Rw-2KW?RP$ahfcfMv7H4wo5w@|i4wT@XP@Jy$()wzAiN|5j)^W{=;xW$PVx zvFn5D29sAP1+tUx6M~}08@GiD6}*+r`+KS-U<8&_p53fkw9X%vzL3x-9t=}9i+cG= zcH<R!ipf(&j;94IZ_TYFDJxG491+a6q**B}yOjtQ2YIs5K&aqC*V}|FC;HMd-`jy< z)K>(Ko>{}xyvvviAabvAG4Q7*d3BB&_rnD***ymvhi9GouX*@S#6To><P+TXm1$z< z?<8cc>W0%?r9~WkO&x;sTCtS;V?k*IpPDoLyVEdzt3q!&q!XRm=3KdJX$QIR3h{z@ zEJeO=-E21hKpEq$j+_MWRHa?Sz&Zvxm^2zD4<>lo`K|Y!3>QtjY23(RJI{|Um#mC6 zpQh0zzf?0n0RBo|4KlBUgVceFZ+C56OeIhFr*&HDY9+$?yzd9<r|0ZjU`2$}kXQhu z>1ChY(C+<}O{_A}wB-D<Z(i5)p-f5`q>d@hE2JQ$EM&Zt>MHH3gRD~UJ-X~InD+*Z zzx~_-FT4DCe}x8ADwgItk0=>`ngV=&7S5<dqacsMqP+f^ta7wS=RWjl)&4Wv>;4ws z39Fy(L^O48qSDSC<?PmXqsx9RO;i!hRW1ta|1NhZz~8Z`FGeTYc#5&Fg<JsIg$?N~ z*S>T1!p=_o1;M`lEu)~`PhxPX+WPvoeSQU5IkKC)^hWM{gner==hZU>!F=|Uruepk zEVo1v-nh#8p?dF(crm@DnZZWgt^1%n{l!U!^~J_)jZOQW{SgOmYw409S+K=B%TMc- zftjUy0N+*S*}l(u!9u91@<VvOAqSR*=en5SXqY_fZdiDi6ZNUgrtFMgZX=L;dL!jo zw^P!yQ?swL_sV91*&ZZPN4VfXc1s-RPlyX*n&lnQa^URqOvq6FILZ1}$g{GT*A!a~ zqD)=HnL1Cmk|zY!8F~Zi$4Vb3WEQ<Y^G(q3tyl12c>67-PMz>hwAjn-<`*p$5q?R& zV(D-w(<XdJkl#c-<YMBuahOWq2g<wflSk7b_W6vv!qCZMN~srfx%US@+ItPtCvSj9 zi5f-Xb!r|L4!5yIeYcssiqE)kEOz)PCjfO5K^0*RVSRS5!JA!DXRT@-WQGS4v|H@s z&~~#vAC426(aPuNBEvQ@M_dOH8t4~$N{v!U=BBL>!tfu>=Pih}r0L*SuLyF@&g6V5 z;h{rhB28YJWY}GndGsQ^n+${zA4BY5S$l20lkqn9s!Z+{+uM`g-Kd<iDw93#OY8B~ zOoavdltiXlAOKFjdcEFFBh^#}RoxyBBiAYj>_0o&;uI}#$*Dc79@o@qd-f;(;<xBl z5oj{(nBsf&^Y|4qq1d;hb<+(f@0}jmXi>yZGn{M)Y}ef_bU;kwZDQ-sD|0-9U}6h8 z?gIJ2cX1tc6`hyv&CLh(ExzbvmApz=c15Ag=*6J7g`Fx}U|Gbk-c+&HgA0A;)x@R+ zVsqu42}-wa_fCbwNToYFNsZQi5t1lMP3;TkN15|F^1~V2NG)uaEyb*F`DO_l^I24P zLqi3Vo5a^Qw^e913dwV|i)Ks_JT1YO+Cs$o)j(l|P;JGP!RxhQ?0(ZlElL8E&<SKo z5Y%mac-EUu=@%ry&AO+QX{o;HT2IO79Z^$MKe|#lFnRRuw0vi6o)|O<U3MnZ32lHz zfo$S*Jm2b!3hW_uR`5hG)FpOex&<gr9ro1P=If#H3r}mUXalX!o7~q%*!LGx8KG0H zI}zF4&>Ie${G~0<eN{#=ff0-HON89MZe4#*t+voWuhx5aJdRwPB(GykMF<WK3zx4# zj8^a~49vPFh@L3sqWj$BMnuz^m3}G}un0J=B~ie7)2Je=2PYK#Q;!t8@VL?aA}R6% zFI?YQl>I#LGs+k`sNXR6f_jt8c+n9vMBk<GJ2M1M_bnqhiPK%JC$FD&3+otSnsgYw z!q$X;yemu;e)UP@*|zFK(~<9FyHSF4yBa_78#Z`_L@Xn@ZYAINzso9`uZHxLuyR0| zOH0aIsPp-+`gA`kBqySfJPJ>XIXWXPhF5sYRD}b5J3o;vX1S|spHVztUk1_~;wNNa zI!hOy`r}+LJXx@@84*6Wj%hRA-$a@5&TR+!UX&zq88xVv5@Oq~i7ng~aX|*k{SR^u zY)dZHxWP3k#|@sz3wX2UQ?Xv~mT;ly%ml{$+5Oncr84uqglQggCK?y=%Q5rerg7l> z&7S}touvgY{rlbH4)G8B;<xbL*Kd$n)e#JjewO9UcF?JCmC*whSfpURA;2GqLXz(7 z<$vcpJl$)^o=4z3$#<SyIiqr`)6&(k6>(Ye7zxd%#M7xBFWJwOe0|1a#@jMqZC#d8 z4C#Ex&C@D?@(#FCdThwQ{!3Kub~RdW_YAHRIQC&IF8y%J#X?etdG1`ObYCS=FRszN zo0U<umCKTZ+MzP3<RoqqQHLWR7c$B6$%KE7QJq)6iI44kj}6qFON!$cPc$Dxm?+x? zVXsAK_C{X@o=%53j9dnHfF)aaB(L|mO=`7<y`yIoyVEJk_JzYs_&v1_Cr_UG%XX3s z>>tgT2QOR#OpN+i>85qq-N%<L2KzTopBc5n+aXH!hAr*=IP@_)AHN&2+)g@iTl8>Y zUaSDXRl{BuE8t-la1!r@`r7PrwIgR^@qEdKJwcTBH4O=W<S0FzAe~VXzkg~vrhLiU z+Lhj&Z*YL6yj_9=ut*qZ2>P&IM%@jxpY)~@`69+WbQaqvvvV-++?{?JMbr;hM{=ur z?u*!k*GTLb-p;@+DLB8GyW)?qmd{_;Qp&JRuUNhuc0CcT29DlvHE%KqQ3UK>twq6d zlUp3NS~So1a-SLa#d|Sa8*QMCRAmJ(s|S&VCzeBdn&9Hns?8Vv@D+=g69}q)AP9UV zr+KWxs%x)x8dl4^WNZAcZc~+f<#+j_s{V~ZT<oIQyZCy1`^%~WZEE}QCbNp!MjLi+ z8=-Gpw?%F$pYelM*bYkw*x7U-t5umNlu2s~N<t=Cd!MX#Go5X{I1fR6I~u-GT&UFH zUBq%<LyL0f>C{<nYi*YNP=4*Nu;ijiK{R=y>V{3$sA@yYn7RDUsAXMvwZ~x8IGYVz z31{m%cdl)J#s2gokdlHt&L5F)Yfl<nRt22!Qb@Mcs!f+}7=ymlN=rOOSr+K41H3qh zjuO2HM?X??t5(gIfd5?L)n+UdpQx|_fiuRYY^lz{@qQyFGV>utJn7>lXFq23l?rqZ zc6bMqT4r?%lS?Zc!#~UJc-;O-#PRL#h`_Zy{-~pxg2ywTy1~4JQfB`(SX8p>-B7`n zwI#wTd+z?iwq`-LYR_Y^^l_dDsM+8{1yX~e-nV3v?5@_nb{BW#b_;3hu(oOzcWE)` zOAB@`Sf55#z_U3zEpDbFHthS$Nf8a~N!}{ptUZe5MD@N4UAEnY!J9glEX_K8g^Kpp zVc{dA!Sj*g!we(C9xb#cu!i|EQL9;&a~fnB1}-mcZk)6pN%*DIayiM^Wc+6&e|VCZ zQj<~(<)sa^*I-;@fKTgrHEBouM=t>HOa2C@f!~{JMz8E&q_4@i7^j_QBUITheTfGo z9E5B(H{s(9LHg>dT*gc8L9fj;ol0*?w18`aw!&!da}~6H*L;aF=b1Us<l8x;O`*By z=mve{cdm5=?lX-b6as%B<2HKQ&YMX2TwVj1zegH8qW#i&<N76ToiNV6eFwdVS?(U3 zQ3U+XFlC>`y&2Qu!`|I-kPo=L)=7QDgFRb5hougla<&aS{ED-$@_%T1%c!=xc47Bv zOQ95Np%jM}E$;561&RfV7ccJaUW#jR5AFmH4yCxeyF+kEkdScF{l5Df`;5K!_v@Tr z>(5$QbIvg{*OdFZZoR)}YikJ-uIc>e+49cx(HA@(OO^WiCf~l6t$xz;zVTnNs*eTx zPjOGB*t`QfnNJDh=i_)kdG?LEVO{xCdPr$swm9FcK3-XFVn~AH!>>}(w)XolH@z?q z0AAq?a9dTgdn#A#Bk;y&p!$ar>-1MYp+6B-y=T?dR;n8uW|z(D4omf`A{ol}Dl`l# z{!T+p*9>QW<KiqHgf8uZi&^BvFFR1opho^JG1p+-9W3F*DgTB=Wp|0Y#p*J#n_F;- z*%Z3YELC*D-cxdR!|v~GE<h`ll%FzH*}*@mz%xW}ldCnCyB*e&-Fgr`5x1-dOQiKm zOJ?Oix@K~9(yJ7Pe-_1aIY=@<24t#U7b+v(^t~4(c(;&-?Oc`39=%Y`^2TB&QrBc3 zxBX!uJYJ_0KGo1kIJLuY0`)&X?JwA#(p2A{W=(nhv9}|s?wgCQWff}McUIi#r?8$+ zk+zc3Q_rG6u{ZBo$RBg$78INl{5$o%u5!z{Kr~#s&7Z#F%?;kD+_+H%m|vSwcjAtV z4=>yMOq}L{+Fw#d5EDB&(FSE4v=}!!k5znfAI$zDZTb*LW#q>{7FDS063lK&k-yzO zGSgo~T9M!-ZX+QD{bJ%jJO1I=y%yJF8^^gExUbjmyj;;8(^hMj&i9xWC#L>qiOU{! zqCBGjnh;+%EHg;nfYGkSO+hOk>h6-x6prBe!U^ya=|d)U>9?!yrXR300T-L{?b}c+ zP+H4C*@ZvcBLO(eu5LHoFd2LKJMR$ya=O@8U9k6Gmjw;HxSDpBWyg~lU1yK=m(S&J z_w%Q?^F|a@c~0$_$9;hlcaG4h`dEzj)vqfvjgXH2V*#J|(N*ay;J&C;t0IORD)bXp zjlYxXb$Jmm2$<ov-+yN$%AkbW%2Mke7OR})U&>u8e;wPhCxyyj=?6lTl`nhH)&bZt z&h0};`hVwjv-&#bGvFe0^$?qVwjAn0yVnlQJJfnoYo=Ici5m}`bkY9|ZSedQR<lBz z=MyXS-m_)aD>gnw*D`3B(vr@)+!4ZQ7ygsMKh94ap-v32TOx#v`*qRS=wzo`AMeo1 z*i795f<dtS3^Alraa(DVGh!neU)SB?c(G8J`5Cv~43e`jWVFIGHMA*#r=bZ*QwO4& zmP>9DaYZ_M{fWY~0ucI}A30HGRdKOk{<<)CWf$vn5mYrDy^S4SU4eEfWk)sYnF2mn zB+FatpE{YjhbMo#e<hSL#a1O=7ZDkAu}8+8$`@)bUYhnwggE!+N1bbyZ$OOjv<3Ni z{N;FZ_0fme9>BJ{(~fTK(4Cm|qD}?fwkmh?pGzUAE?L{zHOs}Y!P2bsMPv~iwzl15 ze#uhiB7LWO%X?DFfg6HDAv(*nn^p;{DBhZkp~TXON%@8Sun8HNxp18K(!ZkI2TGEM zh4GV{i*kYwP$n=6KBE@<SImbhc8rE8rms6$mdn<vE)GfhB?iyxeNq5v#-q)mf~giq zICD7dA!XB4#dK+yjY!Gtd#AJGw|bhCx(^&j<3?^?E+Qxll6F{f8rMAJvyiB%Kep2Y z@(JVTE!%8gcV{NtO5m*ep(gJ%ph2&<lz?OQ>b2^q{Of0nzb1p;T4Rm-z{q~kkLlZ; zT%8OSnlH)vRxFO}XnT#LHuU#KHQS39p9+@qTkE}6(2_auutd|!!NK_+H+-0n(c4gA zmQB(lv@+hRsZs+C5DjY0bnW8B<?j^|e3vaQYL3r*Npkb-grKn*ducb(v?U$zwF7k= zFeaWg-a^hyVXC|N=QXPFwh+F)Udi2JcGrn<?aMw>7jD#%JuC`@#atoc$}PNYwuF*A zv$ie}aPs`As`_(Hs}J^&)}AqTrA8KbAUu)Wt0-kgowD)RP5|$Xy<Un?lE%++=sKZu zd{C*AWox`^y&>pU9+5L$Tf_=;+5Unx&YDU1q0uT{D)m>@;qFXMt1K`y$Y;zFi<vvr zWA237z*7Zr!z)5#2d`2s_9?G^^BC4q(d*@{WVPPw=sZV;0r|{%_@=Q{V|{x@5KlNs zgYBxN!qVtUWzR(mmgEYZo055I+xlJ9cG5XJZJE;F_8~v?B{29m)e9F-l;~tFw*@ik zCiD^=H;)@|a#n-_H)q>xV!z=L5MJ-Qn}@lB%I%!zoeZgXDMezGgttwY4){u~)_>N6 z>y@3Ye;gPxt8^lH93+hPo|4<-_PxcGLi~+*V=#Ri!rI+c@F>P2Wn@&;yeJnL;+N$2 z^@{NVpT_Gf!P`ROYdY+%vtbq`<Zcak$@Mzx$nwZ&4+JT{To9IbbbTO~mIND_khqSm zE$O&rG;f_GWbVEYyKbHo7aUJ?PBL)oINUeVBxLaZaF7zg16_8@woJo}q&dA(FpVX% zOKtTj)~kyg7E=Hz0Lwj8UDcBk*fhu0yp~%*rb7ZFzTPR?jG=7y4=fB6tlcA9`iHTZ z%i#*!qeM3_Hg`F@)7SS$B_D|=;6@7dBaTq#4ybObZpZ#;m54M$HvAd<uz-$z>W_aj zN1Pqp)EY}2>GlML)jA&o+cX&~Gd#fTJQu2o@F+Mh6Y+_-j_65ZJ2qU68q?Mbekjj# z{}anHANu^F>&bOLa8=?N9Qs0f@NfY>bav2B<hSlN%pG59iHNp^wNJhG`dHXfx39@z z-ZD>6StX!Ov8cpY!qMbfl@~no7kCU%%(<(isK1}|wwM~9U+!e6@{OeIgplR@7k9vF z@_$k~^lM`wVtzKdOD=ZoB=X&7_Y@a4cBqhEF!w_NVL_y@?C}E*6aha9yBR9fqhinL zvP2gmupvGf4pGr}{Mf(>nA&(6<Oqu74!nJrgW@hjoc@CaTa5}(zafKo&bca;-Rrle zLV($y(nhPC+qVCUOrQlVaH)7<12zswfWUove5oFLZ2hU3<Ux5@XWwMnaIknqQ`Xwo z#r+sCErQ6{6AJ!n9C~<K6@Od(+i6m}>i_4|$brDcVL9tB^qJ*EVEG^XD!t)}fsE+m z9#ckdlVG{U;D{p!IM?L=@SrZ<PjNDkSxR^P@MD*ljP|I#hYeCvpRYi}7SAu1i(9P+ zQ;)3+e(t;R^B!Lgt8;`!!ax7E@(J|H78!CI_BK`Rl@c%d)yL}dt<>#`{V>G;_Vvkz zEzIyBDwrsyh2t-;>#!&3@|PWbLHDZGK)%HLKP5aUPB4%Suwm@={m&tfrFud_ywP^? z6m*?JuDE8i61wqZ3Hn`dRIhf)vnrWagUTa5<jr^O{AYBL8CLpZsPs}-5OFc=5adbA zq{|!$!xG$-uT5JLrJ%7STdL0}oTZvn{QN-a|87F@FNmke{dVx*Vx#}VCkE!n{_a-; zA3SNfX1JQB_Z^urt-lRCoBr)$4VVr=!-$YL*)tHRo6id)=fAfr^YD2aEi%gi=NO_{ z3zQ(DL2<-H!yI8){|!)&3;Bngta1??U1m^T)Y9i(vYTV-O?*BdbXf78#&Tz1r=pQ3 zcf+*^%_FI|gC9Hzp0_Fig935MZEB=G9P@{bk*j=?lF0;o?%OR&lSaFFH*xp33U^m8 z@c(Ut`fqT!%lp3^Z|=yClK%lk{1+Jw{7XiQ$G&_2zmd^I)PHL<#1i)Mzt!kpROA2G z#gOR0Bv*RAAiVyBM&$nm7t2ch<2%U{a88QWg7LQp$%s)CYQHMccOp{sImRKqZJ<1c z|6}X*_&D+SfHdd1q=l0Cuf|9mJ^9wY^Sb4c0dE4g_IL-%#8ec&cx4GmtrPz2#7wj* z*NCw4FH>+TJ$9t5)aQ>x@8Vc^f0wZE_;j?*l~nY4zcW|8Q(wurbGA`x=b%YeyogZM zzTkOlXU-FrpRPH-#E37REj<j-G9CAr*5+=d@La@vzTOWsw(PYxo7(WxKDgeSKa3%> z%U!+ZCG+17ROERGWuM#%?_Q!4o)Bxm+KZyG1bIcVbsRVf-BAI+M^b_*HLDYoB+kbX zlx4szv2CfA@eisF0r&bMu^Ni4YGT)`-maxSrPmO5`MK#tdBCsOD>r|h8)lQGBwTSQ zq~Urw&A8;9y-OWtNmAK7GX50kEL>T6C(jjt(he-O3Gx^(5i^a@%icP^_(0)1Xge;1 zIOr3nl5w7|EE-lC&7<1*DVLby7yJURQHJCRmj62kHGEmE$WT9RZ9S34<T)QVwW)*C zaIq<6Bf^`5-9hWDn}4BaZ6_~i#T2!|wKg+`cZP%#2f@Qx2XXxCezmG*fAu&T)JvW> z-rg26IcwJfdral@js;gm&?{+cud3}#pN#6`(FzmM>wESrj(X66^WByk(=#)@iJ}wL zAJCa%?Occl0LZ+!T<q3yH=!QrRO7<n;?hs_1DyQMh?QB4GwvqFjyR#n_jdR+fNj=q z7CJ<?cvyN}%6Al>pKtJ5!8^3kU`33Ti4B`oMn<NifW6@f5lKA&6}oE_U=K$8BNHP6 zWzIZzaGrUclh4*G%kiS%1^JSyvF(DI8EYq8L`E=wdxatr!#%OzzjttZQ<X?(R(QCw zR5Z2$Sc<EqM@I7MTE=@tAl*%4(eyH{|IB6QbJ}qe*WFSZR;JH~He=O(%&9=mPJ~>u zx<*G=y8cY#=#ji%{Nmr>y0yVZAjqG+)ll3X40eVqgG*;fKZ+io-xt73#@OidtK4jX zxF_JgB6M20^#iLun)z4pS29VQ3~hL^KFa1vqQkr2M`@Ir17cuY5Kt%X$-dZj9hnxx zhxQy~WlhmrXm}+VL_5XnA(D%yV-(vi*%j4c(joB(pVi`sWg_cxt_N7eQ5LxLrkYVh z+qI#=XG=57e1Z=Bk^~H(r^xa~45@bhi4zeK5<-1Q++23JzmiC93;?sGjfuL7hdZ}^ zncC{YQF^IN5~fg?nihb?XTb}Zbk8Th1u`%&PpMRpQCFc~W|8N@5}33Qt-Cck+Uy<I zf{UH>)U|NQt80MP^)ITFwC$LmxoZ3%5uxyE9P-NBkvtmY)ycZIb9f7%Ec-Humj~l% zvfNyfA|m%{$7&4RGG@7nWl|LFOIl9K@TN4L$Mm7?-<Va*I_PSva0&V#b)w?7ES2Ii zXESGcrWK^~XUg`=c!%mr5+QI-o4E;Cv$c5QX;~#?O=-fcId`I(eWcj|CtSP?=mdR1 zc@{uv_Hjb7Xt=X(o3YU%P6uGgaB25HwT(->X)(X3yG_eKB%GuxhOwXr>UEw9p*Io_ z4*m`omf|aqg<yZ@612tB%Mq8JodPGdc5;MIdIEhr#yNc&`my;jep+Z6Iyje*oAL`n z&{a^P;f*=UmV&ys|75{pc$>6ix)g0y0y{m>YVCka&3?V|IJy*-Xbu)nZ#XW9l>W|N z)at6jW$oiu?O*AMY`J_LX9n9A_a$rO{rD(^(D}?`)uXMJvwHXrk20sswqb?|cvUJ= z983H;=%weg;ciwn_!i$1%#5`(=OqSqL7nuQ>47eU>x(sJdmn>l6!x%G6Pdo~i^5uX zE`^DfxjZS-{ds59Ca|hzm;A6^-cM`iM_3N*XOx_2&o5FoZ7c9+C9DvO#=(9(ak&_% z%M2j10#BYMf4bx^E;amZDD;T3OWqV^%;BvYQ7)Iz({(ychjxo1+OA4(^K#XQ8xpML zX_9PLWZB!BQ`9PawUE;xQF)WS$AC-qKuWv97R^Q#<8smf0HP)e0btI{<Bqra3-_?M zsoCxuNxmP>xs01O$Iso2CN<MnbZxy^baX!EaX5d)bl+!C@{lG6fj_Q(QmwLT4Z=vQ z_%{-yq(CKfqO(6q*Gt4O9H#_qnzJp>@x@?ei_J{mdn}R%rP+1v?iTRaukeR89n(I( zv@F>=-7hvUcdYbo_(7_^Lhg#fX{JRD>c7UW^<MX+3m=azXO*ZgWZvwPr7}SLwi5^c z6RX+x<vl@Gr+w4WDSaf_pPbdyjnlUS8O#!rm2MT9_~t$xYm}5axMY?NtsSNwlxAl= zJ1K%_mY430`s%L7Lkk`QxJwV(0_$&X$PWGC4^%BQqv%~_9d;{UKf{l`=0flB3=yg# zON`xITWI}_m7uO!b(s9G&WcDTW+sdNQ}i+9Q&JDeJJS2rNXzptzAJ{Qnxm1k1#)To zu}5Qr`%wj5&wlE}25rPDnB3f&kwC1hO45(aYTK@K=4#Aw81t&8AE%a}_S4TB74vKM ze;&vJ47DGsNz{~~84(0WQ3>dicfBbSx%+2@b@m_LBMo!^18e_rjuTd=<Sn<N04;!S z+Le`D?2BT!H3f{dq2zlOU#;kQSkII_pC6^&s9}D{K?X%=b!IE+_}wa!cJBCo4<h@k z;Vhv!*>I|`Ppb#eUvPWQwPh^B5G&vt=A6CJX^WNiWt+2qQ)t^|vQQrM{<&wZr9RGd zvjt0G|6+5}j;!dN(pOsUvXnZR7sLOJ2`Rg)BEl(zVNN<}R>P{c%XD)5pJs3Vi(a;6 zePd`h;r`uG?CZ^Yn)&;!NY*)kaA#A+d|NL9bM?cbml<s|X|F4NMv(OP-eaMm0)rY< z5|KbWoo2)~a(m#{bpxLJg!J5O8J^dD@ci_`ua%pv`&O@6bg$yV;Ni1(Et_EfJV|tv z)mIF@W~l%*Z_-o|hzrpd7+Q&S{R~@en7YI)o<g~(<f_Pg#7=;D*fm|ze!?{;_sUFS zfX=*A?v{U1eb<QFw)#pgMB24!aHsC2VzD0BAO<%PAwEY`=|WDZ=OX#wCN*%-X}dPM z&hL${HUVh(;9mr1Z~n#i&EOR~L!s+c{{^?+of?(#n;V%=txJLHfV&ENKYB+$Vb274 zI4xv;C&_+td%NQgV)Lb4ev^H7L_ty~RaG<6iu6t1(MPCf6im5@lR%UKvDuOFTHqUN zw5&V%(=HsD=G$fY4^i{kQWaC0;+JSPONLr^>NJzkWlbUPoZD{iYeIVgrisSK^Q(!b z+3Vx7zH>T*zqpdO?d^7a=jtyj=OuoKfCsl@dsQrKTsrA|w8v9CXIB;UBFP|lGwu6n zu7x%VYh{?Jig1s%U#DnyPfb=dn8l6`xv|bfq+UDwin>o)XQ$5A%C|Shx*4}n3U6J2 z(_W4b2k*t6QKiEy<@K)z%KgYaZ`^ZF6>ImMHF{oi>P)>!IZV^pTPZl0)JpJ19HWi} zD}7&kkI#0taXBUIVa$Oi=|{tTe|Z+|#+I?mkaiE3T#B2;wDJgi8PzpNTAs>+&cO)x z?v01vB}Y(tA!;US3EbUO_i9`3C=0iF_+8tlGy$uxoLbAPUd|5+AxlV}HW#cWi^z+T z%#AHnd_Rd!tOm0oEiKlL>SdAwbs;)?C#rULHWvf_<n5qoic!wLz|;H0)$_r~%08{o zz8=MdR`ZNRcF0<){R;SiF4xGff8_j#<b8gsXs&CMzP`oF@fqnoU4x$jX)8l?-{`ex z>$GiW#j0~iZkVwVs9f6f3e7YVYfvF%hs5GEw<`h(wO93L%Cw!&+ANwTYeGj6x0X7* z-Kb#3B?Hi15nN3Po+OQd+FHh;aD{1R`<6FyV>;{!?fDm7Cq7_V&o4c|8DpV}MGP?C z^tKCU)z0Y9m=_e4E4Q7C#|}+x;+^|(D)k)5+>5)9gIeQv58LK9)B$vbtIXn8+3Box z3|c6QL`7cST3}zGmWpDgSU0Io;)>6jhJMA&4x=zC(7ZaNx-~Dimt0zfBT6mb`L5t_ zZswvp>jsH8bT7Vg)TVlYox!o{g<@UiMn9igx|HRs&64x99ENBN7w>c!dsRCZtsTYG zJ++i;g?IFR<MR8-TklaqlQJEL;gn0~!1PP*EU3+Y;i0u(5UKtUORDt6SBV^wv+|)6 zSzo?yebZ_weu?BW<DM}a<K7T){Lpy6Uen93!(G(G<stUcCtANM@B1EK=&s*Hi~s#6 z25iFQiy->n@4GR4m?n<(pWBIK+H=dj)xPp|gbzpbQhjws<-xP0`X;ipJm5qONn?tH z09Ttq-27k?xeS*vM*useS(Hw%W@dzDe-+<oWw@%DdiLUO@==C>Ep*u#+5f=|A!P5X za#u05d>u}sn@zr#b#&F<Gl%%6W|(-`XZQ`<5gncm-dOhL-Mg3N>@sVJc7|~^%CyUN z2Z$G7sgW%+b4DEu;yfr<Yi@K+HvDk3^2<E|<zKk#-h4wucViKu(^r?IN7qwT98%UI z=-mP3IQz`!J4FoWXz0Dn*JEx&FV>gpueCd$bMAe=ez#}#9p+Vw#CtTF$4jzD3IVg# z|9I`eo=|pl_W>GC&pBh6o;A<#`*-x)0(I>cR~*xe4J_wV3dCHFBCXEUGjd%MTgv!+ zN{wDA^tPGa%i^_K7nO4fPpgJvu^CwKn$wtt0rkqyUc2gDGyB|&riHA{70|5((h^qq zD_dojS<A`XUm}*B`7#P$Q8~95R9i#+JzPR6pEZw_Ag8m2+qib}m`9%W`nMci?5yQ| z>qyJALx~I)Q$#!k-JO#$Vm^h(D|Y^XKfU_=SiK*&6TaR5HWue{kIMmiJE<h})+QmS z(ME*H4dXnKP4y&?sVZA_L@>%}68I7jv%F?Hi-B+Yp*{O$3iWA507%7_x|ml_T#U-L zJf1V7!-mVYc|Sv`b=i-RLSS%GwMBuEQf~c@0k6mO*fpg(TmDcRibD%0C_6noqt@xa z>=N;#aS!zs->vNMwCs6IDu#WTVXr)zfs&pk44sYsrHQ}*K`3+Wr1Qm-E>j}fzw7mp z`j}UX;?Cx%BYBNF;)XRgu{kfl!_(g-d8~DkchHUY$}(6nHYM=bAqullIAg_x&-ThC zB>A4NdHw#jQfZ%QqUMHTSHy49jCpe)s~Y^c1piekJZ85eVl0P}QnaU#ZD;TitRpAX zV|-u=B3Wx{wCroXWmjuyk||#EYB1oK@T|&*Dgxbw=tKjG7lue@;o#ay&ssV6qNEEB z&lQA8wr9zs3&v+x2|3>pTmDS;rQ3X1zN|&8XG;g)_^#W-j%hYmq1n%YMa&|SUopga zo5TAyd<+j^WTH&g?w6TPM4RuSLq=6XJrCmver(gu5%E;gMJ;YSh?m6#r4MWi^}__Y z>EZb@_jzXOULw7SE_4|^dipC2vucGVX~M>B=4bXba$a<RZnauw(d{`+P^8F}VhnNB zit(Dg+?=-FUhIAv9}Z(+x<0aSRK2iMdc+|ip7w0DB>@@4#J}jOU1Ms6O&XY?j||So zx<oh@i6MCzTzyUIIC`8sb^PGXV{q_LqwclIyY)|5fPOjBVH*l&=~jZWwnC-%YPt%h z?~3n}Lt%_@Fc!*z`|noUe}1S@{cKrTu+7MR0upgpN>+Ga-uE>$q-B{<07m+KroY$Q z%}8GLf9m*Wz9Vti#q#b`Tm0gj=e*D+Q<ib|YDxxZg4)E}mI;o^+4{)X0Zo$6a))8p z*wA2J?AP0BUo(?;>Jq7El*}~CxI3nfcP7~oT<={Y)7W)R#d^O08#{aJbUzzh_K>^} z(Ezk?SyG8mCWwC`kt;67?%?*Ly(_H+DvIkvUh4U8)mJvdOr1yhv)lmiULh+L$6QrP zdJ+u<6Kuh$XDKOLCI-UWVs#&w)4g^4#VyU4I&6+~Xk${@P16!u_$uA0>P*OXVU^&O z8&QTc{yxrXXO9;D3{Z#AaqWb&<@9q5y?E5Nlpfdel7WScXZ02i*+mkSf;00@$#*&Z zpi6F&5*DD*_oKEeioyemN*6(!tbHb>(zxA`Cgwei6sodUJ1^R=%cW8*`P=8IhO$F+ zz0GLyC<WDrI>u7?mPy$2%Xag-%6<EIpj}+;npWsk%qP|8o6XA@OFn<hZnalfq3o`| z>RvUJ_??bn2UMd6i9(bnYSzc<x}u{!mp-_RgoQ@s10X?P>Ue!$2p{6_vgy$r-VRPj zvykz=9u`MT4syAVoa2{I?!RMN8Epg}&!lJ{HK@#zNgyDt<orgiLq{}w>_!e(;|CM( z4`M~t^$}15QgP{@KIa2;-I^meW2BRgvVLWCS^~4xJR@pEuK$e9Rto<zjauDjYRz{2 zPPQWEU|uei=fF5||NHUvVawpD5=6q;)4@C=9Tib-+2}NxP(<4gx?)q+@h5GfvUI>% zDB_Bf_Z^mjo5=YUjhpy#HaPB`FIcF}uq!Uptegk@>g>qq9zC}_Zo>^(ZtEN?1A(B} zlvbLd;MU>cXoXL0^6Sddl-Z-yX8EzHHESFjaoD2!_j$o1n@h@?*6LSI-qS#Rxk88+ z{Yf$-%VVAHJz-0x*S!!m)lNXJSoMdAy>jH-e?Ua;=Uj}%tv<EmyOB~?<BF;eur4Ug z>CfXQg28n@t5$wxiX&hu_U^D%@LoQ9hH-~w^9fA80b#}a<J5o~@A0_Shw~;RLCW*B z>1W5rP6h>EIfG96lrx6VG+j~JoiO$Fwts5x3wM<d`5;@>%E1*@TN2GxzT*pV41eS` z4NwuQMuS~fAjQAy`z-$x`gS!BY2)blPb13QV_^ItImR&=0|ZORLtfw(uJS_d8^NK& z7^hahSy^Q*bAwa!?_c-0PKs`(ZZ~7|OD{XgyZb7zQ_Kg_2w)b(`~~5k{#*e_2Hh%U zvneh3r9<dS{epCk)6lnQw1O*>>DD?O!W+C))6{h|?Rm>LcgG1dx{>JRchkh$X@LZT zB37_;W1A?U=W2<qF3~3F)O}8*>U?=m;|_s3uX)mgLyu57d+Qo~Or=MO6E^qfJ*NL- z>xl6R(rwXq{CO^dSLb#+M%?D)qp|jAG>%3$#;I(+*?XLQaQ5cqF6-6t<+PBwoAH9o zF9l%yd#|?{F{>`Fu3>`<)V@1Rt(jd#kc@U0p9`n*3ZGVlqs92OJdX~JH>pS+vH)9q zHS+#7FNBgefq%b#KZhaO@~ve=*;Q>ft2kwwk@VkrY6h7d+ew1v+_B%_-vKQum&;gm ziE6fJrph@Qp6iQYjK)dTH*z#EA!b`|RX$X?+ot#9o3t<Vwmj<zRjb~r<w1FvhrD~o z2`4z1gu5QQd5(xeNeuK?FR)w0+g5Sur!VarZ7x_e*p%&@DR|B7A_zTT{DoKRbI8Y4 zhU7mkZ5W!XsBRQ)3ch-P4BrdbY6|%RcQ)oWJx+bEe;%ti-TRm#RIgM`ztvu%r563| zWXs^aD)x*-o(!L9CuS*iXlt8H1qZlcaLN)-4M7unNj(%X)Cqp{bApH8mD#6%EYi$! z&utN4k?0yJNZ`iR{Fwso*vr}f6Cbp%m+^Pd5`J7#y!VJ;R5YeeOtR$GG5)>~tN(G2 zbV`A3)zs~Dgjka@{|N`7LQ8$2ca^YP(O7AAL;R?04fn@C(dAYaTMyj+EY0LIA7b4} zg2M~p6<=7yd3vj&917b^IGbE1aA-1G8#QUgQ3;4u*2A)}$F+-IaXwSFeFaJZ7TMC8 zZg@7uGLflt4Re`8h(kk|%~I1Yhp$=I6=Hlg^k9dvs;*O19#)Y?rGzQdGfr5Y!0Pqv zn4Eu@?wao<1j2le=CTg(${q&TQo=H(eC~DxH9Q9@5*NN)3h&(K;xPEcr#x0(38N19 zPR4oHQG-lOz$Lv|R?04|jb|-+^^3&7Oh|?f*vS%TQd`%aLOx<E%dzuU?qr#uAS4Hm zqgpoNwrg0f0C8R|y#asAW4l4;o)v_S41DT2x^a)S4C$niIED6NGKFT`YtDJWenX2T z5qwZfr?9Dublc94DXIX`H+S!@z8o>D!olq>f&DpFa;*%wGER@tI-%RmH+Mv}89Ud_ zV|T@S#Z%1Mp3h>G60m9PmeZ>`Y}oGTcVYXD{(A{2GGhLp>!PE+BqqV`{G4#?vTIp) z;!Ho3b$l*j?vqb*=NhZm53VRW>yPRt-0Ur_T7)#$AN~kp`@1Q~mS%gx?jq8gSj72y zi0N2LFpld&l7KhDPWx2h8T2Ba=bz@wPp;Tgg{-UIs}re0#bco+GuRapc?ozXZAjdY z3-->&J5I9ZzqumgHzptVD;YeDH_N4P4VAt3({9Q*LsL&nyA@e2!xxO@$KGKh4hVMH zlxWhFzzS<JNzo+^CTkg&JUqH827iXa9zFfco0?0@*0oK?iJMIycE>`SqjX5t+PrC+ zchy=VTW(y?R!c;=Zxtw5H+e=YnN_uP2mjG^SGgQ=&)uXWt*jhRUJ4Dm<=37=b|?22 ze~G$lD4|lRbC4R&<Z6n3jNpuIXhW8ZpD6i`e*};c&`rHj-_P<YO3p}y9o9Z`pWaW= zVU?filk+F-_G^WX;_#=y22)YsoDey+cu#xaQ0zg8_CWGNkn5$Kd#tj(h2TR(+B}kY zXT&W_(~7{)TiWi>Sp(I&N@;wDhJtbV2;uqE-9g9kmHg9ZyJNsqY=1bOtcqhSB`~wA zV{4Ih?h+2F-{pi_az!!y@!Uha)Kd}_`FeLoH8XQRr1MBHcNuPgQ{5p=@u{~iod5h7 zao5YRa3<>bv*=G{_r(hQ=}_(Q{m1aXgTS3F%e0&9q-DHOkF8E2u*8XN-E((XbUn|6 z!*=;KnUyqd{-QKG-H;sINBlF{%GPY-z?)t_#;Y+Mwkfptsh&`YDTBVvBFu3X#XYYv za@=e;*T1K2P;wiFJ7Y%r+^8s=Kab;Ut-meR^*r-*Bv_ScXq7PV&uop0ixsDujV~q) z-A_?`TEa(#A5ZCPu8x4{)dq*mw*y)d<bew~AHs9o(0B=g^9TyU0;V=quA|g)E!0Vp zm|9*Bl&G8L>3z-{)g(|nX`Q<p6EZ*Xg$b?;?!zI6_kNvaS4*)CkJcv*^ZM}Kj@CqA z>j%9qF-}KsPouVuQwLxchpolR0}1z+jK^dqozgRth2|*L?)N=>+ioedKFc>%;+WV{ zJ#|+nlv)uO{`QyRy6G6>qM|LYS}VA1cCvgp>u`WxOHeB<eQx^;<Gru?T6>}1>pZ6* zZoW4FYoB0}p7rP4^S?QC37mx}`~2?5wvc{o$3ZjBgL<f+$e>;PjkDM|XFCNa$N0LF zEa-+UDx|5S!bi>ZY#9H7VnAVhIVn5C<Len(|1mEIDmz=^AC}&1eqmQE0Xt3hwxKv{ zTn=&8TF~=k)@O)pAMUiXpSvZLCru)}W-w#M2aoK*8>3am*<7X+*eTHVD%r)?ysm+r zVg^12(`dh%^!_1=Rbz~QWT?cZe9i1kN@x2fyS||QxVDb2FoPR1Xc4%fI3zTlC4Dj0 zheq<DyhFXn*C|<id${NRDXyWeTcfLc9cMz?xNhXK{OiFDTf?HUuS;CCm!!DTKX&7r z3bJq&80pDQzl6D3!pd0he|D~j4!re{=g!Y^sq^8C)@cmnt`T0T<F$M%*9@i0;q1q` zj27lQEwyK}!|R&LTZ{}pVZs6)g0WkF?95E`ic#5oD?PzEkz6o$2710wN8}p++P$m4 z$@nE>^Mt@f%7z>kIQXhKA-Lp#bu;wAeTZkT&%$XjvUIAtgl#^#5^Y^zwP`A!a*3oP zI>>r3S3T;bNb-C3DE33s!c3&9WhmMD$A0y7rhigX(DwB{*%>b}uz$xK!Jl@0Z9pwb zBS+#jCM!cJjs0}XfsC`_c>RY%?;HN<3izT!Czp9p+-L2YtqDt23)&vm&;k;C;*hic z-+-1V9j<!kP4lPEc=AR9arNEiZ}z++i{ls3son-+YZhPu?!w^|Ysi3(X18XLy%E_R zR~yI4?P#P?-Co1`By+Ou#EB?qbnc4x(o#5|=R0a08q>68>Nn2c*9eHi!WSmYw#wL1 z-bF7^WeY-M_9qZvbfDsl<PW9F+#OscnWp3ss+IlBm`1bRN9U}wmq|2K=M3olE~v8i zb{;ebxF84|4*tjEBZfAuuzds^cZ;!{A$2-RNLb5Y&!(Cj5Cv8}X}ykEBD~+E*u$)N zQ}D*`4d|NJca<^44b=VJTqn>uD)XO4yGR41c8jjar=~OgV{9$(VT1hM5UaPgS3FVh zY1*km#gz?AJ=1Rw9@HYVxjWM+R}WCzaRRk<EY!`GP@Kc8w=!I~&GX&A)g}Z~BRw)S z`p2kUq?K;s1*2%dnA0+N4tfJyJ!5Z8z0aGLeAhrIAO7iul20ZsOJhgDvp$N5@ndJI zxThzv{)RuxL9MEakI6fju0HVz%ch!fnWWH(sw2M28R^UW@#SrVhPMLUJMXc9ATeoB zu1_(RJzbmzKzs614Bs!zw*Yh-o?N@_Njm1WNgb0!aF;myx8po*>00c=C=XlD7U?7B z+GYCM;chyB)g3qN!YDL!DE`_k#KyeDzR*G*o^>EWS!f63xWG@na8Vs}3cvR79GY|% zp=hQOd=b`dyK|0;@%TeXK)MFdu6uPagcl-j?I0NJN*X0YuBxGJCgu8YefAXN&!K9{ zXI$|OblR!89&E<7Uu4|7FxizD-*ucRY131up^MsOx#qJJjAs}@t#w{g0&YHIEeBsp z+oaqNg{B98^K15*W-xe!_U{XjB<maZ2oow$TMQD#XcZwYoV@D_$vwA`(k8?VtdVjV z=EP%}fv-d*AtrI`$-<T)&+SpP`WIDMmz`5$VVs$R^DcY~p_nxevxhfLD|TW(7&g+x zA=S+$G2<U3x4~Uy<*E2p+~AQkK~taauH<)LZ{m&X9A)E8=CYsvfQBm-_ug8=1Ty6& zUegy7jCr|^PBI4@B!4Ze6yBXuN;PcO<Hiz6PwQsws7o(&>8+*(q&6P8^tK<ru}B$7 z(s5hCM-g^Yaq0kRxse@?=1NQ`(H_|(_l89Qommf&aFr8;EM>awBta37Z7%k#_cTm3 zbY@m%uXwp-CuG=V3L7fIgW;IEJudcXcc$*~RsEUt@+i5TY~xY?32qAR-bsWlKRI&K zR<Z-+_07-MQ6=+~VjdyyE^y6EE9C>t)UuJF)x#ak9jak2=^%ECGMKk*|0EPW|7fWE z%x0!oKO9`{!Szr(sZMzoC4wK32=;ZL|Md+ZXl(9hX$YK-VW7+rbD4`IE*q*bW$xn7 zTTUhz56SZXQq%E$y-*zeIWc|nE?sejgJ^Q&qsdG#HZ+>BwPLyLgkXMB7w;7(EkQO5 zmFvN?m$LKNA{-D>5Fg0|lHfJVeD2Qxft3(^{tymUT~7~+?-r@2p>*_F)e6VI=Xe7h z!y|@M)1DSX8hCgi$x^H>&ADt2N{T_I5v;7NYw%>L^Y&e>kB3<4u~Rv(wdNg~Qr-2M z#$WE8EG4Ez$vnh39^px@fZPzbWzW%9ZxK?%jUGG=?!gQnoC<yRqL$kghc6O)pFwZP z#-6Z0o?x`yX4$OQbSODvViaAxnFtu(!hJ@+()CL87gr{J%;7dmpf?2ORs43Vb}ZU` z40HIO^^fK>$7KK9@;yCe4JCE4RlL}dJ)SwaS|hBnx3QWO<wWP*7c{!zNIVnB=D_r9 z<e9-Z+`4JTBm*&U@WT?a9!E@LC7a)$!RXuD_MS;Lw=WWEki-NjoH!3q2zh+d|5@AJ z=!*mA*>`4nZ|bwb4UMRE$F8=XC0nSK>oB@!)Gfn$SZuYlRPLa2`2EiukYGcWEnsB} z(YLfkDI7AwIX=B6T#RwSInt(1=8Bcg5(%9x<94hgcOuLnp-p8+vTAp#Hd34f2+fx+ zOT3+5rR*$tbG0)p!+}hEUhX1=mFe(uSZ<k=KQzYo)@=|n5vb=uP<`cj`UlVP%4Jf8 zFLH*BHd90Peh7<7)tyw*jnrtc95E~}T-2RKpk)UD@Z^F%rlDBJQ@m>izeeFZKGw8s zZ5e`TN`ChwJIU;>uXD3kdGI<`*MnxKp_uyQe1>+f?JLT=Jv-|N*A8fda-(X8F2?rd zAHKv{^P^||Y~MfnLqEubE=3hupvGUP<zfY&7_5;@4J{>IvxP-h-7`IZYh^o;)!1=q zXnZXMp2nT*c|rrmlU_!%JoOsog$u>x*qk-{20V20m3iLKU_uLX=I0e&47q`;jH^Ku zp)jNEp}Q{r9%D!zG+W>9ddXIo)P6`yMTY+)TrIIu)kZjsI=iG>GPK66Y~?;4=l$FC z(G{ts65Dr(HZLSk{&8af66TUCwO*s9y1sNG1dg;kj=<d*Rx+UMSJ2j~&oyioT~g*j zsp6KT^;XxCiDsm|+Ja!+!dc6}=FnYSTgH0xn4q>9l2F-=4c4h(m}SPg*>yW6LkpK^ zf{BjjiEQiQoJ)|{=Zx|Na4MI{QjcM)q*%Y+v-#3rG3YxB<~7^QQ(#CN*hXNR3vb;f z<K^8q3<iH=3VLA#vG5lX3MZ)Ixo8alznAY+@n%w^nwN|QERbBdko=p!o<TSCJ<j*X zQhX>YZo<e}9T<>JL8RJQ&9?1s(cheP0D&hNYo51+v?-PEa~adT4#D|5hv2Iq)%|F@ zyUFWgQLp8%S-EEXN^W@X*a61P_v7^SKjMN1uRvvD!tqpqeWw0nPIkVY-8u#ja=&q5 zy*;i@he1L-po{%D>7Qw<_&?i?3nbq;NXN~!dkR%=Ryv<ATpf-$ZXUJ^UNOo3(VCMr z+6HZd^z2Ws-qNei>GcCfNy6Na3t@{i@hg&6p^ZSjy5S*e0enH-kB0lv<FfuuGjD_f z6QpGFC@8butxQ_@^P7TlZa|qjU-#aMn2nW0#Q~wuU4Bp7QQIf4j-ZlHPKVp45CR=B z4Hp6x`(pa}kHBeX!#94-v}TDKnPWpr-oMb7H>K~IKz%tO+CNtS0!JZ2AdpDA`^L=v zI-A~2{4ayGT2<=1YZI?EniDppJAVjwuE*Uiq9js=%+!D5vzT{X)V+oq{L?{_J1d<( z>?`F^<=HHPZg(%RXr9rdQ}?cdb&R{E(fs87YgvB#D@L2rqj;Uw(BFn_+-#m|M1IcH z8W?N~MqA2uzJplwK<L-9wl4P)csSoTx$jd;@u~KPn!l$uMA}|jgw~gIER8u*(x3WW zdt`pWvAx^52*C}*0-QxJs!i}E&s0e;^!6TU&m#rs$_{@dl`$kXTJ{&uSFx>HDJOR) z7v47Cx}C1xBOx9c5N<MkbkSGYV1?b{Bd`+&CfAbG$;kWIUCMf->hmMAi>ejtWEkUM zOt(<;nE0EJ+mWhV?BW#fD5^f@WS*34W+K{f@q*W{LYL#r#wXs#Fvrrxih<^9NQAO$ zOPeL<1^N8<DbgSiD|@xqGH)-&y<s@mnVy6sqOotN_#{Gni_O%5M#OZgdvlOtxtNZR zEB6*Fo&uzP^^6M-K#LYDl*6p25Zy-upYed12sB4#$df6JRbJljQD3=eOgg8pvL^PV z4q_Kg9Ft(qGUeL3>aF7VBBtv&`?GTqsi};R8QZtw<;q{m$07;aG??x?&+I6V?tg8+ zBr8!|<|oPTR6~*kh>r1@B$VrZNrK|y5ou`(FSGDZM58Q?4EaA)8Z8ppX*w!?jYOl9 zv=Ogu5)N}@jK(oV4)hE#K-U^nI>vRtDnLW-_nhJF?tZ0OO49t35&1X5gW=Mq0oL&& zu0b|c`W8kQyJF7hBd<z!)@;@M__lYmTl%4pJ8s1e$u$rBcVkmL{G7#T3k~}}*P0;7 zvc8fs^9bR*VhYOho3Gd|k+He`&aU4iWLEIGMw*RVJAJY?0ky`ux#UeEG#cin1r%3B zbjk->tKZBi<0PObq!au&pkEFOIr!oW0k@7i8c(n?FI=$EalRflqXL;^$8#BO?zzQk z?8tn+kE_L+v4LG$fp?6lo-Jc#%*OQHHW;ag6AJQZoT3};!;`UtJ5~0kU;ui+9hHND z%rc_`-3Zbu!jk4kri7gvNRPC%ypG6zqS6NJ@v4K$uEofp|1+=Z53d*>p=T%YML!p> zs%xNqrhago&C={>5NLA!!t5>o!R}QRrVGo^oRot{I8n@CGK2H0P63NPbnSQ8i*Hb? z6AD5J)IR|ef5>gx*F`*$wG0>ulXZ6N(;SToD2DlEEIMIH?bkB@Mt;-x)d&+d6!p4f zY5#r_k=KULzJcJyvUX+7ii$ql%+fQ6?W$-ZW6|z%_;A$p)bK3d{g8BB`uENB1Hv+c zs*STC@G`2^>jKQNd{D5)(GL_QChGSGv_zcY5L2f<#$;|=*z<QRyf~>7%$O`^#})3t zw`DFCie$C!8SZLqAASgw2@%{pV!c7%$4AA2oekDRUXI~C-*74D3}wZ7*ewHr8LLMn zHTp*N$ZE_nDj(H0?~^I3cH%6Tiwz|LFEU-OXFkUsJ_Fn`=P$TVO}CwC#_0W$AEzTS z=)iSGQ<A#RmHY*K7Z)axi;%HeVd&fn4)i6P(L@?1er<0ryAk!^Es|4Lr<1OFkQpN5 z0+A-L-sy*x2b?m|3K{E0&BOIM#oh{8uYF>ijAO<bpo-i;4CMq`d}*T|8!-42?hq>5 zd@esy(IeACiG^G5;hFM6?2S0VItGp~T4CoA^U%Jx0)v`_J|;hHC*(L#gD=$@Y4CQ* zd;O4ih^Xgt8b*idoTlesQ49LTaF=k7xVezz19HxpoFRVR34+<pZta`Th1V3bK^&Jo z9th8w2B!F{?K$0!agI0w7K~<`AbLd=%qG(&Lj*O_nHb9;L#T`Lkq-Si6S)V+ZZ?GJ zEn_6;bw?5dTF(_rYD$W+sWBeWeP~2>Im><gHzl;5&18b68y%ighoI5WStyY5#xF=> zi222fr#}MTz5DMM38ue~yrjpZ#pVC?L{j3_D>StK=`!{H9d4tGK>L~0VZQj+eB`#K z2>B1X!ZU9*w158hr}9v1DAtJZHlr8yA~1JIVDb7_$j+l0p1mckLm}HasKw{O67r|n zy{z;8K}Or6necyp`M*jOnlT{p^l7_QcOqW-bJk9`kU-<O*(zLC<!);%XLFUE!vCp$ z|Ee^hlmxjQVUUvv{fwtW#uC&?GP<GN%0X+VV0^A*m_40?3yZA~|9^e?I|kGQU>Gy= z6T$y_%io66Mb&mRIHK+UewPz9swFdjf8qJxn+;Xp-@&K_gKo)y@c;F$|9=V=^4lAU zAciT~J^!D20%}L4-9Agr>cK-jY2xh2_h=vTNmEks9swx1P^T$6`1(rn9ns(RdY<v= zYnf()4LtB$%>#WyC6xcOgtT6Top!S>YlmqODf_D@PdmS6y!F+q6ui{oo%|!!Ia!Ew znZ<25zoKgB7%=Xnp19(6y>eYwmYE4{w`o~hs4POxa$6zV7!m2V&Ef8+kAdm#S3=Op zFLg6TRIDmQS-#(zzu;;;Y%0J50(nNbtvs)Ftk&AuOTSQocQ0{xPa~47hFO8*8h>uq zl<`)<5~H0rybUf#(hbMMz@fMPzdzyuD5}<dq){0I{VUf}wQSO=MemPmDIl=4-3FQ9 zd89UL^Tk`&Gj^nX!)_?qY=t;EzhNdZ8;R>FGCSQ9ZYQJng-No85^*~|eoE9qx6885 z6#V;qhA@c<0q4x>bLB6yN5;<oXhHT_0#$T?T4ijq4qtIFGQCJO%JBS7J4<W0snl16 zJ3uQP_4*A)L!q-jk`25+r>k)1n@koMsNqv%a%8@qxFkTUr9QVy(bweG4_Xm^<ZFEN zo_ix>cDqhK$y*%l_WkFAuVeQxP2GxAlUlJKEa-)JpMJAGQ3%H<DMaVwfcsg?z8GKB zP7(RiI_troWvO&-DQzqCIPed@ioKvfpQV$h#Jg!nn*9XsXop#Dd(ald>UHmh3B8mD z&29x3zk=&SDbQE^cgn5nT*Km>i6I7_x81#LoZZ~@&{l@xK%8$#3)jBX6X~D6>CAKa zr+!<@alzKKuQiPH0-=R*n&Z*5x)?1i&+Fx<OukJVG5EjxIv?u$_+rOnvV^<MiLUYF z&SjNoUKEI~i%IhWTNrJoI$!Grr3+e&?Y-4RSX5fA@|m^eB-uVf=^W)f@7<JEfC$Xw z09TL&YmMFp7gb0<-x{IOZmSr9l@~>UtsTqx8KU|#&wXV1NYP{JZ!?u34YT`b&?7KK zRX+xWlfmT_rI2GtQjp`orZ@*$mRIHMjC1P|G!IgfJ+fD7usZI?9(SW+z6xsn>c)a6 zew(!7Y2|<wzs(Ujf+J6X7jxdXy1<sy&!E$iZEz>^WW8^_Z5c@p*QH$lo<Q+~>W|Wa zrLmO@#p3fQyaONa)HVL&X|lKaghMXk7q%~+@=|{(O9bTvc26rk*4nXON6S`(nB*!^ zOx8U}Ubm#k-Jn8&Y^DGo_52>Xbe^>fRKR6W@%E_%xFA$Z<${ELAzbZvF4_}#9}!>* zBxyDeJzb8H%>lkAWqd9Br=)1qSTYoHj!2e}v`;f|0Y#HGa%6g*yS1*>BgNV+y`A?K zvCo*%j9d;vREoW$s{~fiQ?6+H2c^3=revFeUJYNw>mhas2SlKeCMqY;7`9F+1MTzf zBROu*%h{?Qb|8PP^>(WuJ0UM7(=MrJ;+ok>@y$j>+r!%lz3CrQ{K$_3;B(?2KwB1g zTaA951wRC4tfi6pWWc`%1CFRs^xs^>f<;Nb1j^5O_Bn}ryx5r`4E5I{*OCa;DMuA1 z${*E*W1Gp%eIL`=*8&JDK1r{hC{A>?GC0JjYsOwUd?@sWfijPRb?W*>Wmgb3O<QQD z&7};s87e;v?^s@7OQJq<d}wK0Ghe7>f^CU$U0XuYd<AhT-b;$q&vgE$3jiKQO?`Zu z$VDoxRud|3v?lsmpr~$ykCd&K?9K&O3BgouTb4M2!%QJA;8VNX$<nbHj&rf!-snGb z^fR0DM3T<~e>}7sZ*1s|Ul@_W!1mv2?ED;US;;nMy;*#{5mPrR<Ch^6sA}82xVfiK z8p-WAT$|O3hmI?vV7<WJpva1Ye~yR<AW#2?SI=+o#WlHL2`(jTNm(7CP0Sru!<Msw zX6v;*Aq#^#pduUR%qs{@?DBAU_VfNCnK=e<vq-anYNd)4x4s0F@LblR?S94_q|BQF z(AcIR3xBIGo`(x|XEOC6tD^Ux!+RVfD|3AGgZ}xYB-<>fDD?Q0_YP3?4{2W+L8T(3 zN2k4vXrR^M-UYhZsIT0b-RI*y8|?p}&TD-ylPGlO+~7K#0NG~%e0;!~ab15%Z^<c> z^&e+uFPS4)HCj_Am?fMRCwWs;2h9=sVfvdYbLJcG1-0v9@%zz&_14F{4i%^+RCc}f zrP*l-)i`rIiN_h4j9NF6e)fLIQT<)XlSY8Ph@PI`ovGE7@|r{^(QO^Z?bRR0+1VrG z!oIREM0yosp+4yXd_OeMZtB>TH5FQwp&hPhQ&uW6Ymg_|urf@l$EcS3GI6J&=wBbs zi7%}E+cEStOEHPm%1L;M%G&**7{7xIk{51gWlMLYnz>|1EIu3|HFQolkG$0(1i<In zt?s4j`fWk|NkYQd6L8!i{~G=8t4EMtBpLkfwwB*?HTiR^rddw=zJJ-cp6bygr|YCw zgA?p57xKbid0p%_{1CErm48WqKI9O}bxFSQ_JE|w_+8qcBlZAFF4r#8X)%(_3D+&b z3Es0?w5PTNVtjh){^YI`ey-<te6!DhWqkl;VACx??kEh~WLYva26UiKwx3<q(XqS! zb&lPFC|kIsWv#}fE>Yk2tibAdmVU)zr?S6quPfyF!nc`OzV{mH+mbSxp+Z85voD8q zaVe<IFHBOF8m&{j_Dm<B=T0`WXwaHSb`0NLJE|a$X8Vs~z8ih45Tct=wG+UZCTpCy z+||!3Hsx7h`$u1DP&VfS4t{_=)!nsAvER*~8V?IqliiG8^A6qtwLp(TdG##+*Ve64 zViF8<D`A;`01v6@Z^)rUAvd=$#A4Z1GXj!Eq&%N9>I`bJnRB%gI>?Fd3``WPo=?XG zm##^SKXrY_Or+GRtH(ik%=W>0dD_svW2NY~g6cMd(pO-nMt+e2PnTX4mxVYc*mT&L zwG6sT5THHDm&S2HP<GFqFmvI*REWG;c&xB9!wB%S6~+%1pSgI{Y$&5|Svyj%oIuaX zzVR#ES;s5lI*4%FV2AWGDXYW9ybJGP_TGdnU8;Dq>&Fy%pR~Qd1XX&GER^LEN|5Ze zeqEEc$;K!j7a95a1)JtpIUL5wye=T>dFmY_A-=(D0Y}B3EILP~`}Rw+r|Ha{snzB9 zku>!$m<PkCN*#d@5k&S^ld2HreT4nQm7tBbY%YOKgr0ZT+W9@D@$AoVL#pn;|A)P| zifSwT)_zMV(&Er!L0X`t6bWuYN-3^|Vuc{ZU4u(06pA~+-QC^Y-2()d;O=nJ{q23T z|7V=LbNA&YH*2hswbsmf=X{>uobQWi<is{wmsghErY`%q)egOb2%=W6`i8^X(frQp z)Zwuj&48OQ1(y522{+9wN2cvt&}knXh9wfaTsmtsZ@u4bchi#}H{}DK1>a7h$G@Fe zmNcJuBO$QnnHzeDcPacgiw*Jf!6r)ZfY;L?`>-2#sc9D`?`lK+YeuIA-OWMl^mNd6 zxFa!yfEb(SHVO3b@O#naDB}T5z8PN%K3F?-{uoS~;Qq=@i!as+kde64Nyz*|2q1Ac z)U7%9QCK<@;DmO%Dvf&O$4e08B0{b1mB>M*P+0VhpJg96e&uGxqhjb!K(qT1RDTx< z`k)#~by;XXk<9_ij;3v*r_->?iZ?2vr6;Y%1{@T-uhGjIO<I`M(N|;pF-%GaUb}A_ zl5%W1F5Mb!LglfU!34tk^wD;X&|mKm({&z!CZ=zCd3Kj!XCLSASXx@TvLmFo*b&ZO z(r>;wx%pMSMZaLU#LlRi&=D2tjv<39fY0L&U)o?PJ5jcL-lfx1p@MhZON@Z~{OJ}u zPW@I1j=qsJ;u$xX_cH3e?p^vkm?Sew^S~QapXp-Xl|!T9x-!-(mNzQrw(6@bX#B<E zPTGb1GD%eUr1?GgqAjVN^j+&UO?JtSK1bHy7NuF~gEx)^%vzVm8~yu!b+^H=k)-1b z@%aN~s+R7ylv}Q2|4R#w0bF*#)qch3HFj;CbAL_I3^FZlsBzV@XyJguY8((sM%bi? z6o-aS2?D+A=cZSP6cc<GTFhYH7Y0(hfAvkXvA&Oi%v<v$)YSG6{ag(>4RueXT;$g! z<gM-0ROtBI_q%(G)|{_1=|?A=N}CmCM-q*iyjIdo)hX2*-}WV5;-od*K(r5jX6m`G z)UWG)m&2L(;By|Fpb^2I#<7jy<M>@>?oNKmlBhWZgO@%#!wQLuDs$Q46s$M0!v{{I z*D&BPt<hM1kTV27k6Ws}wDRaA8F_WuZS90Mf)dDgt+p@+HA!u@;2OgfNEMz;dx+e0 z!~O}bQzq{#Ok~#9skrwdI|;%=d$^V(3USXF(#W!|Iqh*cBgcu5)f3&bGYp;BzutwL zGBM5+_H%Irhe}SQ82R&f`w*<5Ip6rLg74bnaYoJzGYf;Q)qx{PDDpBA#tA0<uETP7 zGuD+2+LRM7H$|`|M_-rfpWoxefQAd!bKyA0ANK237w=a>K5NQJ63wFZT_xmu<7Qnu zh=HB#4~Eh4nje7rl-(KxKtJjq4K$hGa7kIN*uFk?1eZM9%kl`6ueO}z$_zTd3-g&f zs|heLMm)EnU~|U1@*gssI*}Y1fe8~ulbE*Jd0KuORrAj!TEDX_Ray83I1Si%QyR6s zm_`CjvK({3)iq8fTf9PeT8|BM&Q{<>o}1OX>oZZjt9?fuX@i9Y@Y{9=U|A-$^Nc0i z-qGOr4MBJweOgFiTyU$6sx!CfC$S;VN(Gi7g~mUCvD1)0)n#fM9=C^vK_MvWohkM^ z&Z0m_Ynt^l!L9>+x6$Tsr+t><l3(qE3keMJZqN3#aqc5RI~l2rW`5*9l)bg)f7ZKB zpzGHV3&Yuw6>S;0{&JE=v9>wX4SJsZP5Ul7${HKtUaKo{`;eM}qqNwFJ?QU2)8)M$ zN-D5sgKLjLq!+aui)IWfd@`8B+riduGE3G5gGR^3*GUfg)P`iszi4MosyMFcxp#eu zja<0yJChVc7U{Gxl@F>cim{JO3E$EGNcg)br7wLuG;yah;VgR>z=03Wbl+xDF9khl zKeKELNS;^q>NHv&`{s`V050zcUP#*l(HA8AoT?(+Q>=GvuuyWw1v@`u2`4(4;xGxT zUbQ??jhUs&_uHNsZN>B9+$zI?qV$CxKf&o|X>51H5O#uI%9}s;Sn`ZrxUP`#-9Cwg z{4q*}MS>MScT-(JDT!`YI3WBc7=3`jwb*w^ObM+%Jz|E=UlTtp`NJjz`~J2qWVwNO zvYxW5_*_nPfz3-*0o?(QC$<#Jm?g>zd`#lKm_Af8@4@?($hqPqN5<#KF&Ptes}X>V zEzW|onNnHTX&<H`4i8vYnNbr^W=ox)h3qGvYwgnAqfq!u1+{7?fJlND>Bz*NO`o3H zQ|d26irNSFcgrupe2Cy*E!poCBylHYMz2`qSz2Q7I`Admb-ksu(sLe-^$zu1N)Jt= zSWd$@CTgvB=B{Jkj_OAQsG&!<a+J=>mEQPg-QWI68!mKXD<U!+#~q<HlOPeebYH=K z^=p#;q9Ngg%1WI?i^Cl6sVr}O3GNMS@kj~`!}j59_`SnvlDDEumVMN~4R<T{4?4K# z?D!29zwNN19yCk+)W+j8l7yGN@Kk3|FZZ`1r8{=|ZB(JSKL^aHbU70%c$@bugtfPd zhgz<+R*Ry!|44KxO1h`G>srV;rpCLdXyY3`snS0~Ub0-D7e5L-@5ti`WSuMh@laJ6 zE+Ct<s>kzVorEt(vC<EdBZJqEHjIo9OP2xl!G!h)$V(a(zybT)R_Ax3Y&P?15H{k! zQ&yUMVA+5cJJ#S?^%XUwRhk9MVKZhMJZgT>kexl;Op$+c=dD#|vssra1c^DUz+9<I zG(4K9&J5xZ6=(s)9<2t;Bt--W4C`~MXOV_|b>d?;ru&P>w;^7MJ6LBvyGOh==O@TP zqj3%k5~$h^P!4z=-3N8nlqOkmx+<D16ZNNE#KE0s$|V(*P&2Tm-?uxvJwRM9tlILq zYS8n<u6S^^#_?!Oc;kNB{S@sFX5*N1T;}YbRPmD!=of<R;d98sxQ^53w`MX&!KOp_ z!CP-~pxUKd0Yt+t&aM4{BBaZcTzAFoQFLS!4)JGv-6mb^T_d-f+~E2uj^5$o6&w49 zJ~rQr_H3uf3#C5j_tQ~UNpn1!;Ux6QOWT+{_9Olp&%&za7u*uVrkTy}k4tKpo$kJ) zw5UA)qjcb<MJ1rkt*L4*<Sbx$LS;<sQTj+%mR<VeAlBTtOAE*`P#4p?ys#_w<F5U& zydqLUL|5{kfcUOEboH~Wqv4?Or?H_*NvZgEZ+HfV0nD6!KPP_%C{xhN8EqWz4jFXK z`Qc@MD~LLvIx*;4VMac&-dAKUOb*FoA;_ZKqfoVNqR%|ouq^*HG>i8aaQSe;QVz$J zmdPL7WJ85apjVCqJ7d-lnFFf&-h0j)ZfAxsrkjb6vh*6=U(;taQp5*kr6^ndCGLuQ zw22LF=46W0d9SmPE~tRy9<*q5LURYDEc)n<KC&;!bNRciEjBQ_guN$bo;+CD3q0L} zdK>0@W8)>WpE0%HO=0(i<BmN4(A$~|{A~2<&+n7m)umOr)uDcgA5Vf@4B4oDab&jx zfs&P)ivAX7#=e>&_r0vm-*GX3swupOi~dKjB2wSg<VqNkfz7eu$Tndn!6w3cTY3<3 zQ<YfAJQk|eWPxl`X(d7D($g)=onyarfFMSA9^xHi72oe=hXeCBQuV^Ssbq87Y3ja& z8K{xbXSU4e!*oB#sKzVa{Vl|etjX_N7K$0Im2UgIDe3~LezJ8rcGj@akUeS}0HW0- z&g!_#T2QCekKG<z>UQ_dG0t99dO*MR@O_kBj#>avi5;SONBl;L2;#5kF^VWOVk|`_ zm4=mGIUXf<M}!@(Jg-!28V>~Qvg!MBEMl+wGk7eUL=xx&gamY`Qcg3RYu5c+0BW(d z$zcScf({f5Io4&Dr|-63f|WOiCn)kXlMY9&xM*Du3bE8eK~BMh2ex&9lb^Y>#xeQ> z)#ov%K#47y`i*dav=0!tmPk5z<=MLRUk~eb*4LIU&1fCykX?LmvWp^3m|Y;7gM--3 zMUeh(f+=Bl{*VA;HxwH=aYt*xb^KyKvhgFaDLkt)m>*_qN4*ux(#$HbycwXM!+M`u z@e|+AX+h;BJMT67wtdhzsqxvod-02dOLo)7&~&0hP}m_(ZE4wG$r+h<I>DE4X<BCk z(yVF>HY;`<5kyS0w-0U8W*sNTOOxEq`l=Jb;otTHbc)LIci&mypHRf}FNIm~sDMGt zd%HbxK4lj5+1tGP>n4MbLYcvp*v=2twS9W+8>;xE5&zzEUn{DGv0_x_zc?>UJ{Q-% z_M7I8;f!2oX0{o^T@6uP5On+)s&{`aj?16#oEsNR3Oi2cT;m742F6S>W_oX0{>Dpo zGm|~xN9C^4E_d`<uJR~dcHSmww$4ATK{?tsp3VR6Z1RUEL#tN#2<ED$$f8Ei4m=bQ z;KbhjJ};?JIbciYJx3Dl#m7z}C6Kvze4RTt0k&=hJ=(rKJR3`)mw!K?M5D82Ne*s< z1d03z5C|?Kqw<R_`Pk}dI8jI?Z@8tw&|)CzKS(rtB6Y<Aju(+FO2e-7jVDMN*|^tm zwfX7N5MSl8rru3@8K%MZkw8cUoevnb5$q+i<syGf7Gj$GA||VOz59c8&jZhv7TMgp zrlB2Y`+2;6*Zdbc7I~!THA|)#o1^`l$Kf$eM-znwqnBl_8-3On`CDtMY|bXn*8D>0 z7HDUxM>Vq-a+}->Ul3|NR!jvbovhuE4G=+xv)noli@v7Qn)-4Y4hL<Z?uNmH-bE%i z;lB{a{Ac*T3#O?1X`oiaX^(>w_rdGz@?&!uTOK^Fm*GSyM3r-RgUqTXDv(?dcFYh1 z?5>=&ACEGWVqi&K!PyhM7+%mh!Kaf0gy#%^{&L~-fO`VsD%C8<=`Ge)r-lIHZxos# zWIz|&?MxFHeFf`bmR{3uv<*0XmpJB$3Ur{FA+gf|)3{9R)s#<Kq3Bz5jH<r{s_1(d zc8t`2gbe;NVZa(JZi02Wi+cQaZZL?w4sZ{(uZwWkB{#*um40Kkvx|IBk@T|fVe_bA zv}9(BSQo$wG)<Kq0aIU>jl=7^9EN1?9=R6XFia2K8zrtB+Tn@!c+lE*dxbETCd(e+ z69Z-HUy_fNC1m99D0e5YI@iIZ^d#`1F27ynzux0kU9mY|uV0W+xW}Ji#eCM+Dj&>! z$Xc#93urNFx3iZaBwac1-i%<DQ`nuxDt)ye6D@Hk0cp1y3|f^w?v`i5K#%)Mh~xZm zYNkQXl^XQ5bA%giU-x5k=63r+yJm{uqQgDzP2EWjp4;5KquR}Z@{RkTnh^)FbtCP8 zSGvqmAv~-0&?*$0ldi{yDf0RTSu>!z6q)ZHFQAtS>RNuKXY%g3Y}X__h%3^K%~;G0 zW~VYB=>bH?5Tj7qAq8dJe-D^q(ciWteL~ilw1d;mt5U@xdOe50o?dFvZd@rO7VCSU z{ulzlSJVDAB<0{fjWhgFk`^m|;*s0YmBqD!ckvp#oC~8^F5;of^b!dtu;K1M*-+r> znSc;NzU@->DNu_jSe*~Mjk1>=dc6(vAJ7S-l4DIjPYU|x?Majw&b$rU$aUxr_r&l= z`v@j`vaMCAk{yFR7p_I1Ss!&m+Xg-R4_p~dNh_+n9Z%I?t}l~r9?e<e-^YIi6G*_$ z7+Wbw$4WS9niNhlbR5J2-Pe8o<q=hwgOU$5sOY15DJp6u)kexB=ePaT$2P4F;Gvue zq%KRy{yIE}hlwecV?-)QK0n#KHB*fVmIiaX4W=7#!(<B@6<!q1=LB|~V?RJ8k<cLt z+<D;-)zZz6`$tWIov{WyHc5ZYfMeMb3pXR=f+Zmo(8Ie`#(Q!a7@?2AG6xBfR-y>@ zd{|mv2nueg-+R6jpYSpzMXFmuH3c&@JUmXP49JfCv-ZdB%CS#n)BR}NrEb>=QIr;9 zHu@;$%>1GVaeV&M;^=scWFc(AaR9m`r1Hx;A1fX|+yYeUA#AX)G3DPLfL24beWGRQ z87VuiXBD@dgu`Y@GUi_30oDH2_(izMCpkDpG4?)HdMBmMH@>J5U3D#^-%Ug}>n$=3 ziRkD@VZum$u}%J9AE6g)C6cKHx3Uz+3MEO{^$n3uvJWt_*NYow%@!OETO+Ny4TR6# zzah-@8%}{lPN`o$oa&C<)K1z@^paD8s6hfeO0kDF)+O@vkIp?h`4P;#aX;sG3eqaW z;^>%9s(1U(hxkh;iH~f=H{F8jucexT)_G1C1KmWdldeD_d{C=O`HdG8s<TM|cOHXI zDbpJ0*V+gx@%W&PI1#IlEdA)h4+nEI))<?fS>2qZ4BFkLd?vH3cM+itwLB<77yH7# zhR)^Z;;{Gu)T)UV&T(9Pklt%ZxW3nC_M~q{3aJgUsb$=EM<&>&y+qUpQBEA=1JBj8 z)XJ*PmW?dw_uYTr;)Ld1Dm4s;4Jn*)@(T{tQ*Rbh*DJ9@zb%_GqD7NA@XoXQOxe~4 z+Hc%u_c^}=DZ~jQ%-qO!yxmH15U}@ySJAS<c<{kBz_%{+A7xB<UD!(Bj?*2712um- zfAA@3k7<wLqjnM3XVCn6R=~8Nk@Ari0<4GO6<C)vZ|)>+AG^&ucsg-BSXDhWJ-bgC zk3#d&x4?%@Vdw#323C7brEKBD3))?H$udr*V8R`Yqh$S+wEfF~)o7?SL!cTvW~!bk z-iuRjr_2NI@BJUXE`V#S#%7XTJhF;Ah0yuf*&Y)FLtCEhiLQFO*5Cp)%7Re{AqrYQ zg8j=aZM3vpfSAG0{y7BC<L2OEJ3<QuS6rNk9wdjkspwNu%tvpcyVvY=T&$OB<<90g z^IF&t2M}^J)o#ZchrTpZ$7iFy>gG08er(ieWnt#)u6e#JC*$J|Z99j!Z$GSFWiAnr z@@rd+gJ$7~ZZZzTbWg;X-V&;eBQDPrnhOgG|3X6p1X*{u>RZ|hSLFxI?1}Tb<gYlL zI_tY2=}ib~G?79%zoJ*`I6lpTOfB`X3E~_&;#gbz{6Q%Bvo*({+rnC}gN)2I&Y;V^ zoKai3JWY<E^|biX#PYW;oa-{z$Es&|_nw2d$zlS!3-x=wl>VetPlsj*V6F`BM9@uA zvu=!4+hozR+VwVQ2;(-O$}J96D5NcuN50CXVr%W{CFwA;L$%u`ou}R{%3(|P_$=AT zR>x6YRyEG%!Mtl{eGvS(^keV4QSf!PiyA{b2<=qTE{y#!Hc>nedKdiO?qe^hXDRSX zy{59{!B+QI`iZ!qxPHCW6-r*?a9MOnKRDs{2j6~~#$-Cmn&0O%Pobz!2~NU<Q(*Ta zJJ<PL16L#QbbkfZ9c+Ps;(Tpj0Tn>k-^I)1h8S<}vc%?@H@`mbLYUqd+5PuHwlR`} z+Y=S6;OjSnmK7ZhG(<-Dbw_f%BJ;D8De^`KU2zPxou@g9qt&`~jxsu}uuK^4Hvp=h z2vF&P<urZ1v!UEHbs6I}+M!a8K2=W8>hO~Z3IDmRy7Yict!`yz=Nf&q#MZ#XiFV8C zvgAjOkDx2v#`6R?%Mu@bG~jy1VA!Obt?!b8e^LC-jV-xSmwD%P-20j37Z}U0jrW`@ zf+<Zk720+usf1A<{Vq|q8;z;Es$?Xs>)ks!Edc95fFf^VY|bf9)^&=_6qpK%)!Xf4 z?$T!0-;jQ9jvcb3_GP1Lk{!;|ee5#I4*1)CilNVRF1EF%>fCL}CX_oyAIBVca|8N? z<;yua-gS7T1j;O=7OJi^Adj8$l3NQf^Tx!9T1T^rivirU;3#&}kbx-;FI-h}aJZkQ z=11qOLf}~NF{OxW?^4(PDR<9R0B3{d)9g={Dt5eyHft2#tZ0gr>H4s%t1fP3SMJs6 zS)Xi1rZD?n#$_Hw&cuo}fG!_A=FmU4D7(9n*HX0!y~ZJ=k%Ja_HqeN15$?8c&gA9F zF8SQNF{H3?8dFoxnWJ7$=Ux2yEfSBG6vehKM0ZOy%Os5sX~>`fuGGw8r<XyU>&0Nx zl^stgThu!(^o>`eaIu`x&esk?pSn78n!Vn}2@<j7O95szYhKKaPt;bOjPZ4Nxf81| zaF%r%g_Y?gcqBi)J}zl+4R(U3CPxa@__A>wyw%ZZ?E6vBW`GMCA2bh?>C`ek-TdiZ zHUEYf9?~$k2xr>h+x{|e7uc`mTHnj=TR}~2U9xTP_i4mdMq?pP_r#^n8GnLGE;KB# zaczNiX#DkQ^Qw#x_-5hAne4egAW8!yAXFN#q{&J>Oj;P(Km&NQQWY;CG{#(l+%<Mz zBfpBG7nkIULQ_G{h&h$nvbT3WQmWFGV^9mtp~;_XY}j~d!C}&V$v%eaEd&3eg`nik z_?zSuoY3YY?G_#_Dmf$~8s}FC&Nzj3^2la3p12`5__ke=(Vh^!(di|EvzyeES6<lV zyH<20SawYYtq5bXOAJ!-flKZ%i@Ax;CQ`;zs-fnt2I?FP;B(kflZHvm#2YGt^vuN( ztkmXtC#exUz-ZMdu_v^|b0kQLBZc*dS3*bQAS$M`aOk`QK5(f2y&%Nvt-4u)1(spC zA={olY?co3ib>cieM0{{-92NlDQo&Hpz@Qqf7Uu9|D3wfJYB<ER>gniO<Fir%}v{B z(+$))@bPC-wcdjZ{p(eb;^q3*0&b;AI_O8rL^YCF#OdAXuRQOBWdcHe?(6blZ4hjr zUGb8SQkq2=29;UZxLjy-ySv}AroJ&(d!4L%J>umx-0>r=UpRlj%Ri*X_RE{BUJ1N> z+g7_(vt|?{bC;^mT6P9+KvVP=eteHioCClu=}IiCB?`)zBcTQzAX1oa!#+zD&?gvD zH1pFChTQrkkfBhOcu4#u8V*}F<VCrgT;1B7N9DkP-dsN$_J!>r$R8-JV}GJXA0#~E z+35Fb?FTY;1|GMQ1%T8>aIO)}{x%;DzyFw<eJ<`X%bY~H5p)w4@7`SEPjJ3Py-b|t zb3`kE7bWGSCK3<Z8?AAe<}2{=?U$_~!RhW~b#Nt(4T&A0P~QdO(OP(<6wN=mHn8Vl zig6lbFU2_U?8{W-83neta+q0-LFA-3-fA%zx~Pp|%=lNDN*RqNl`9HYJ%U6Y-np0l z9Nh0C?ZsWsIY<nSSBV>mVP&UmH1#4T)bCJLQtL8UbzefN;Cf)1`M}2KxRb<|FO9%I zf7j*G>?%fDZ@*cisR^J@YF@&H2qk5&O<VpwOKw0FPZ{~$HfX`FMn<VnMd365DyZm^ zU^lhiB-v`aGL_*AS_vn9P1T|4l2+>n6A8&fTO)|^5P5d!ffqFNND<vS0HS1ECfj1_ zp(K1bik|cwmE+*jqUn{c$}SyJSGOM!+`Y^O$u<XHbOE|5_lQ^ahJ)Q|T6jMXv?%{T zX15jSoI%-SlJV<4x{E25Fh-`q06L8mvWR%cncddhLtFLt_|=8SbdV%Ha{9Bl3kFhI zt?$YL<xz;2+SVG??_`Nwo*jK@%&2I1zUcuRDp+@9-QuyH7x&1ZHhlVZWFR59xUxq# zqE^A>PD}<}JW&2~ZG^Af)46(p_rmen2{r68Cv(-pNjAlS(RwgX$f(*-(9TVMC#29S z;F!Y2_9@f^o*qm?{td^Np^vMy(OJPTA+@ZR;*e4*if3Q&F?eW01fMh=Gs$oB`JZ>f zBD%T+&ZTM>mtSJ_3%;vNw;6#|t&SL`v8ovBXjWD92c(%bH(qUmdCxt#4kudAPyHsd zrYc6gI02L{qNts21hwreH#RY~P3mD)&OY6(!R)Zh9i0M&hnuT64i(>F`IZQpF}&uy z9rPbM-zC+s&Dp+S<GZbhsHBJ+l^NiQ<TjmnroqViDy}Fkk~|jCD?&PD2R8vZ?^^dU zu`7lQ>EpWlzJUBZ!se4T)+(5qHFJywDLKX<-MRh?aVVMXlZCo<XQwp8pA|kO#;wNw zXjO@{=B7Rqit=D3<xkju)pftWIv#)!oX>7p&R3!ad419DdY|%^)#4v4U1pe!&w^?2 zb)`9~z)-FE$7wd28T7IEck_p-a-HIDBsQ50`jLcMNXYKX3v7Q_>E5)MO70)(P5J-e z6_?eJ@0SCQZYzfUI}&g0YTF)(=~*WT27Vhu4B{4nhdzp||1h6#zH6hjVqURnRHv}o zMEO+yzfd=Cz2JWhJ8WmZ4kB-{p8t>UYF!VT*^-zlQW&f{WV)787fE~lym#+W>0udC zmUTX~rvd|oIm<}PbVnTh2X4vA{_jHjHVUJq@oi{+xp{0XjP}JRG`&VLg=jL>JWIBT z3p&@o5RcmsGtE6~0mYK|R>=_m#=VwiB=_^Ejw1b^*J}J<*V<#lQ1XA+$Ioa4AMa&V z!U|P^&i=>Zlg$oGGKl!ro6a2!q*wUA8BkjCe+#b3rS$55BcHd(8#Y~MnaF<{s(L9< z^W`WW5w@jO%t8+Ir#}bc(Lw$fjHtWwPt;BCB}$k4kKgv+r$m0~lF}lN(i;+Z2mb#$ z>i?eWzv0{ed%ylC%>Mt1FU5kZEQIT}EZ1&RIW1PmmFskWt?Tr4z`BHLeHQ0`{B!>c zn|}5WA;!k8523L^4nyGDPKSQKxS<aA#9sbopSP}c!E?2oYbK=KA##4$n%Aw<pz$zx zL!=Tpn7wTPy&ZdxHNBuIR9f)c{gcOJVGT=*s-WGu0GH{#>3EmIWnP$8vn=!7KyC&+ z$r=f!GGFJoiYM>gFHA4yx3uiqUc?0T@U@;nK_s%@)hw_7EKE=5wy=(i0PvDdgeVml z#_gxCpIAlY5_qLN_A|^>zz;7k%Gr~CC0{(rd7LN2AZi3l3u98BJ{m^aFt=y=#@$c$ z+dqC?sy!W@$_K+$;O_f|JguXCq({f<Cs%@$KOV^X?uwL7sZxF23I5-ZXVUh6N!$yL zT0*fs7t_{)yMASab&H3Sg`M$;dfwqvWj>-K$ZTqJn&@Yz3-vN6|I#vFO+oPTDW9ux ztr<{Tw2)RH{K&?&UND+}q8}N>v~3Q1v@BTN1tSujENnh-m@R&RT&tN+i7}Y$@Hv#; zu4MD@P4XR_0}GMUE>+b=ZW0>$HW&5F9Y%!<`>C70G^bTHI9%8x;x%(BN;lz`6!WEy zf*y*NO((E_>j+0XGC@+T)#j8Iyjk)W<abWvFh({^E;W7!r_9fvGgiBv-XLmboThds z4^>(P&T9kY)dnhGhp{eh@bTmgj#6jKQ|x}fXiUk-YkzZMeFJIcU+>jXPQ5+z!d`ac z$z)N5U&G+acwW|pH&iM3{??D}rBi~T)?rQ8M~GVmsAGyaVGPMG!LRrfdU(Fl`sm<} zV{d#ka?`k*?;`h=96eVI0yi^KD$b>8J)vZU1wCPED!77UXVQ(X>&^Dly+V%!+gIm* zV#5C;Hd!O_k*kX2nvrm<7`4ZjklQew&<$3kCkHX<-ljd8Y;v|6ci=i}9E}rczZoAJ z&tNG%E@I(`+KKYqOr6?*rxMt*==Ei@0?ak~=hd6dChy@YUYBD)+JG?rJ;!O=Qx>lA zagDGSek7KAtp!35{c#50&<t*y*Wm9e^BPv#Eq}be@uWUH<#Bnmvh|U=ZMsf3+qVc; zmZ?<>xcVoYZWji#ULW_RdnwN<$RymDh%+=@({ddOd%Sm!pVm_`@xM;RURVB7Yvm?Z ze0zE{p6PV(k0|e#XvsG6+Us5BSe?6CZ+-3$yYg{LeB2f^o2kMQl<4oN-_9?!zTu%w zu4e@tN_e4jP_%nb);wV#8lFyPy@L(1;gZgzf>jpRu?bfX(5WoEOzf6)$EQ=_!lw&` ztGwOq3m;kXx~BBlu$#Dl^w;#(rI!L1$M=ht^qP`J(cu=$=7@>7{@Fr_BaMufTY3`m zqb0nzXE4vSSgo_+zoM?o1<Ym_9rLSiKd%~_^=K#uu6}kJzAmM<rSD&Md{~o(j7Di< zX!WuYezJohcRV!PI%xE$mrUFMm@U3xoW32@{+4>Tb@`U%r`;@(<}}I3k#)SZOs=n6 z>$@@g9qMU_SGjaDdS(5|?9HV7MeXSR;8agDoOREa+je<)ZwmNfSSb<dT!S5Irr=kJ z*x3E2EmwXGN9JeKc+0!WM1s%Lm+CFD7b@s<bh0Z9?_(CKcJ|DMBjB!8yF3k3iIa~? z2lZZ_CTicgJ7x2Cc~Za4%HA?wcs*hv+Igl*1gTXOYOI-?T^W>F2zeQwPY4-`Sz!9j zBC+#{x5tUJw@6Od9A9t!$a}_1fe1#nb)3`6I?++pKA(v-GWKv!I8bXcMJDDd4z?IW zt1Nd=2-v^Veh47&Uw<LrPgp*`?WC}?Fm6n4>Ma_8mbYOkBFw!lDy}Wb!y8W%zh9h8 z^%A4<={&%RRzzQCzsWQ*q6fojkq|I*^G+PSoopRD6c{FW;-sCjVl#R0N66#aUo0MU zFti6@6z~`3A-3m^Q$L3s&XN>PHgUGE5{pxpJE1juo?;+FAXq?2yjcNjdR49#?Ix%F z_B*WR7f;jU$sMr7O^DAe&#TaU1m|?qcGvShgHn&2ja>>^XK(Hdv!1m#+0R1jPEW7& zjfDy{4<FVsdsvz|;@(F$!F4bxJZ)6JerPq>eYzr{c`tou1=TB*d|>v5x>NDKKq7SI zXk%NV0Glzd&zeX(9S7`lnQt0~OBI9Unmv5DEgHq}aH)hp8k?qK2CTZNbV41{-9Hoj z-Br)o#q1qNR^rQKpuGhNjN#QSyN`sH*#q@g@-~v*nTG)Tl3-3%4eas5o+GifFrjVv zr8gKqHI9~&jbQ!08cDbFcr*_0xU+3u_U#Fgvi-s@_2c0n{akNwob|7D0EWvGS4|qO z+9VZ*)^CZZ(B#9Z?Nyf0yohSN+6}4o`Vj8@$l`WYnbQ<AR0`w#naiSHs2S>rY#0!{ zJwBAco_9l%aP=Cxe2wFuOU?O<+?Hn=8eQxa9Xol2AYVsML$*x^sV489<@Uje%zxLZ z8yA#l6*jW-7A$q)Uc$;+lDKokXVErGW`hcP(KkK*2aDfqmhjhH9d>NC2I;DJd9?wc z%VhgX(vL^9FP4Q?`!`0YS#UPg4A=vn=r0x!_Rou~V0yLrQns6kZ^u$GUpr_j`^*w6 zH|kfx9^xT^RbiCR7sykls;AeRZbdIm1M?oJH<qZD_N!rfnk=qmPkO+3pDKm-@5m7- zND+97kMsM^;O4&MhZG8ujj4{pSu&Z>8DX7=(`2Mjs_iuS-kU(G>itO1Eu_3s*mInC zX~<|(aq&DvWiBAQ&LIRs82!f&BuvtryYR^N`{hKe<7INtENSaTFs*h=G`q9KUM;87 zB9%{k^v>%xg04<H&-ZoPQsy>i4MunMWjlNK^msv$@^3kO^q!`!kj<s%GV|?YAVr;A zwYyL<hrY;r=z#Un0X0s?hz4><(q4;NXM6xsrrV4w|1qYy^&}tO!-qx1(fMmXLO;Zy zfAEEoOHoNYg3kfausE{5g;eY(y2+ZdjRwX4Qbz(iZhu2Up7N;XkIJcNgk6@VisTy+ z<O*s?!yiTD8O0Ij^#}I&;Ol&~#B<TY!x_9;YSJX{34_y(!nbMpOJqv&%&9=pcy79g z1-o${(L5TdJ5JxYh>+K|b%veheSU||<uAo$$sx2ubS9=pB?8Gs`d^cEn_>}|^aN{m z9npI>jOPvrRM_76(jf6(cXiN3prO-V<E+p>cW)-yx)Ibx72<g_Rz5RMJYw{6Ab}MS zG~li7VDT`RW-n(u$*sE6m%bVJ8d@Sw&-HRj7TzJxvFW2m(rk-cn{6syU7SrX0JKi< zT9_BgHz?cTUA6NaiM7_!Oj7aXh%o{#ukBD|^?u2WGCbsQ=rqp}c+<dtagv!FTE)R; z*oVHwt|;Fe#+YW#fZ8wp(^Hnk=2AULGzipEqtOJqs2q#uJ^WFtTy!&Ty+_8yaUR(# z%_L)pw(ogK{oLc1Oc`u)fL}&GZ#gpREZ7u}Jsxk5pwvel{Rg3*uW^(8ZgTn$$8_@- zw9nY3Mj#RW1VhFQ3wO^^Dn|V$uz8-ROmfr3HWKPBb6E_E;gPptA0k84C&-JeelY#z zSSDab*xG(fA>Z0+mphQn>hK4|Vv<MMddm8%qhQk=5CKq0RSi3DM$R+}wK<F;hfzHY z>Y}<yzveeBaO<6Yz`5JCOxP=(nlU_^-Urn<d+QMgCUEU>s<d_sl-oTb1kDbZQ^RtO zphpt+RH{e!>lD>ir$>3MmL9M^QX~C*`bVR{6M2-!ph6Z!#@^|ITF(c|X&l2_K`&*` zSC}C&w<iK~&aGXgF4Ih07n;J~rl<A4oA0?rjIGcq>Xhu{tTmghFP_n2pw;a#R|(|x z$lU~C%9(Ok=1yuN`PD*rO^x`(uk4Rzn?qsZ%M#jI5h8P4k7jdSo>z<1d9{yhK@{1& zG+#)Xb`~Gu(-N%?xmPcfGRe-kmG|9u({8toe@q3WI_3X<GTpzHGCQT#DPc*y?B9`! zvpKcin`AEVk3<=-x4GR!{H}ZoGxIu3GxJE7yEwlrSYEcDHmodBo>Wd^fz3DQJe-}8 zD&!XwyhKDnXY+#KOOzBpzR5S!v(wI|q~>??u&6z;KRQjn;hN1K6u#xS=$ElR{{4On z!_M|1K2-^}(zS$^sPhfavs>V^&*`{?*9(l+*LX{H5ZIp07<#`}sjGYYQ2`$y5F=$D zfl$`T>q=)ndeB;O-=couADNZU_;s(W?)PHy|6%JR5?))xQq5%kWyw7z63+P$a-|Sr z2w7NP+Q-X}eYjI$OyXV)Vh24whYYKgqHC};lil^t>L@B4m?>Hc18e?hC*MSotDyR4 ze7{w5e)!8jx11ksi$CJbbyFD?1kh<c^E30cYx=eMYsP5eh9s}w%k@vgPE)y+lDuQS zN26oDv9{3R^i8?qwvgk=rkQw1Dpk<*T@S(Z`J!$1b${cLN<LPuoEpi>%efk%wz{M9 zg7Q{juw3ikWExzIV9rAnavffz29GM2`2p-ueoHaI&nCSWF!KSj#ys^tPd}#+ul3@2 zlJinV!^+nctf%Wjvl$0o&W(-H=^18)g49%jmxisM!B@kj`B?X&Uas0MBGoC+9`UV= zb<#?nJ+9n6U?68euJGzYR;g7RA(WloR^QYP7O)(WyV!$Oh(3Ht;Nn<`wpUesWdZ(X zM1FbZo?AHhbj)LRa{aV1t*NGI@;>6O{487bVhD@5;GyrO&S=<0S?OalJkPHeFkSa_ z<yyTn_|g&exZd!IrTQtpGbKe;1^?-H&~%L2@W%mfF|ry)iREX(m~Qun>tVGYC-1I! z3NCr%e@{^3nW_|$dA&N_R#U;wg#Ttm4v_7{2yazzzhvhM_|ttX)w<~J(=c(m$booU zWe%nq_1+s3QdKBcy^Zlw73Modft*dWvbd1D6I$MDjuM2=&&Cb8Qfq+yw=aF}(s5Vk zUfm@N5*XY?tp-tCFbD6$adhW>8eYYCJl_dbNV>urD-9{Y+R)$c1*+*Ja%re|V{;$o zsf{*Gtnc~`wjj5p-n~e}AXijCJ2m>L`m4dIEP3?@*EjH1g*7jxjq~)&@O7WjT69;c zz56UI7DcEBF+yP0+EV~w-1ZB~e_zOj=u9(r6r3$`{cL=Zv3z^aG^QD2P0KqkmfWOM z-4uM_twc0}>S`{OD=!G~zny~ED9Y@wnlz_aa8W*U8-qe*ojSS{@^-!K>Kpba4@DC` zO$z<7bV<ViTVfHuIFNa>lfvs-Q8gTsP8sm&2s)4JzaJ`GtMhPAse|{6QfO6wGM$pV zP|<%Qq8`OOHLWB=4uz}3oQS3H@vj-W+s2<+5$$xZyXsP%_1(*LjM{uljJFg!zF5L{ z(;K3F?jBb|SlySVOmlXVPaCgFo1JWP2oH!9c!GvboF80u{3_)$a8X`dvwy^o*5yW9 zUMK7gr2O1wM04y;Xq*z=<}dE#?0Q-Bmr&|Os%Z^cPB$LI&Yl2iu&T0<T5%`~UuL!( zXH?O800^6jt;C$0_@Ev=SuBiLEk3RM)lP8p$;kz-3GXx&lj*yJ6W9LJr#ApWxWCPd zplzb;+B!UPJfEvw+`5ljtIVA~4^=foe8As(JN9ZlBhu^xZ)klI!|rGBRL4L^_mNOf zM?UGGKO*14kMy~yu?Gy9_#Ds_oVO#XLqR#<r$`rd(Z!*%1jNoe`nVY|Xbo?*?Y84; zWzFU6&JN-6<s?MG!-CBI-!eyNto4OAq5da@dmA^~hox^j{OOtr<a#s5LQBp&WrzFy zB~pCA(jUp5$QHhiGB?b<Zw35)&i<#HNvl|uL8-_tK&qE<whiT%K_U<9c7az&O&|vr zWyI5)OL5li5stZ~a`h9#g7Mgro>`32WF)W~+h!|Ejzdsl&&_=qdW-S9YZuj8>dkPO zZ!?DJJl&?Dj`0GAHzgnfW?Q1+Y;PcHV~wW-L{cdS4o$`@ZcFxTcg)YNko^+vRFWmv z98mf>;g1|VVDcbPHi;#c{#TmLJ!Oe24A;M>w&0NXG}T+mQLE6Ep~>qJ?!m3UtI0fj z+r#qB5y(mR*k=y=sF~U=SA#uHRNMzWh?^VLF*mi5km1xxrE*cz&%*P7MP;FAjMN)B z_zw9{)`&73I|a{SUS@W>+@5$BP%w<z(&XXtFu%^CQO`UFnoWL0eTnf60u6WRTCDDV zY3&~Xyo4;QQO4{slDSVdWSUksg7qQ8lfx0HlpQrwInWe^RD>C9aqef5#es61@NT<) zVhg$EQ<9_gR!zN9m8NXpwYs!X#sRwlex|;{Q-=Y)Q2;wn+ri{usA!R7&vD?X%UP3Y zgx%tsDPy7)ec=ZyI;L!YM!|&r1GS%Jg9}0~-wk5<qAnlZBj0B~1Xu~@E?o`U=+F=v zc|tz5HF0WC(hks<(`wNGp-M8-Qk9d204Ob3-Kr&(@DL_;?h1b(Vhl03KaJ=Np|BC4 zT22I@imoeiv@44jd-{*4d@w5tzAy3*O(mvu->3tXRqXJt-M9_pc2G(zWO{ECjon#^ zIMvi5AZM9w3-tikLd9dryX0{y=Z&<Dn^i%w((%`GiKJvr2GhjWXAmn=V`%1B-AWaj zIxD+Y?P%$J=I5S@lx6Z9wP^YQ>Kl)%g}ZZ)!q_-*VHRs68Jd%gDUHlR2=en8HQQT_ zGZ@)hLFwspEhji0>Xo(rY}KkH#4(L+7#Z;D%Nrnhg`b{9k5QdN@$8(44V(4Tc4*W{ z5jYn*N=5w>&G0>wF^i{c>R;0Ck)*ckSCr%|5+1Te1jqbE5)|umzq_Y)&536a$iXV; zbG`hV#Xc<IYG-C@ZV*4vk$5u1Er%#ZfA>O|LcQ^GXD}EnSdWfaiu)xW`KDpS#}Y?! z>o~c1+p)q&^7!r__2glG6zX8$6AIdZH$8F#tp_?AzktE(fYv%+Pt|I#wHjb+9>Ayq zh4&6WX@2k-#~4@jnK8Lxy}?Zi{wr1kHI9_vhC1hoWiqZxhpu|Ob1gw*@$i`hAF<x~ zWkdU*x_VY0UMg+kgA(PuJ8iC7oi=W-lLCk<<e=%TLRYs<k+M{p6*_(7-E~^i((#|l z;5t&_;>X-98Eui}dV%1Q5){ftiu3y=*FR!zS`XzIsH1uH?dJ4m#kk|e?z(8swN@jX zr6F<HgKI8JD|Q>JnEa_NZrpU0eEgoTay?N~6;t*dCUjMB;kZv@RqG{5t&*j`9@Y=F zt7$qKyDl^6qMUzy=_2E+H>xn!Kg{4J-F%4~=sln3ckdkP32#p>Y+++Z&)oO3Cvpz8 z`+aItts?I(tUod>G7mh#r~;Ku9t^(fCv_U&7IvoH`JM2V$}eCY08jAVQO9m-#d~!2 zu;a@IbMq~z2E`}oCpd9+gRaOJ*_TeEX4t~Uql~?ojSwG81xkco&N2GQfvy}q;J0@) z{J563clbF2RSJ5V@(_T+Z>JOLi}vqsa9EP1y`jly*9S%$A<!bs4E^#<j7idq#(Ec6 zJ%sb+ZmRsKQ9i*1AisIM;P#ZpI_udt1<gKI-V(PYpQ06~&iZl?HNs#Y`|KQ+$-8)q zv+$@eXVoRucEeSIGAIj{?afO%2jl1^MZ`-2KYm=^`FZ2g+cVN@uQg9;-0JS#iNn6( zCPa|av@Vg@cP1Z@OwyCt^Qi^9d$Og@Rwne*0JH>)Ta$M7Bp~OSkUKA02yD3?vHZ_; z_H@2leQiqO!+A%$)}D@+rfx2wnVIp6z)DHS4)<FyHZs3R0EaHBM{gzL{b^l&%8{r= zTr$y@{*XM4PbjO3@L=9S)lE|(6RwMc`1&ZSlC{khgQf`FFZg9zQ1Ihl8l4!9Gzd1V zI1wLz4*2J8Z-j70D<7f$mR`(qtV8kGx&B~*&^HpLRPV<Hwnec&+`9-xi!V;wr<CKG zXc3rj7|7E9hG=CGoCrm?e}{|}Om>ft+Hk|Py?Q>akviCr$t%EJG}@fz#M_hl(b<QM z*~WFzgR~<wg@~dywvy2HAh|$Yhc%Yi5OgEf^+OLY>akEuC7<f6Po?&py6rCye|74y z3OjsgkT1`fKWg&GxaL)ts0wX$;c31sL5tfQFm63*XT)yX!`iiU$WnBj>-R*&tQF~J zcso_G;Q%V<3$J!kKEpr5263rR2YUY**QMlOfhD}NuDbM+Pb2Q@xYffFrs$koMHeZF zLWE<1?DoH>jg$C#Kr;CkUTnLOPpJD$OB7#yC!6|XS8FgmYB4ls)h*d_sW+LeMkS%i z>|ULd-trcg7!0)jz4-4O{@lu($MzIZwES^JGtFoaGgyg%na5bA%5!<aqvEp!zeM;Y z^T?fch;1|n-}c}+kRMlYJi4B4%n#?_)J{3=Q^CGZNkqip$@VrH`0hQYho{Ng^iDF% z$`hQm96E#j;FcP#Z!UGSYf`Cm4E98VHAhCr0@891;hn0)>Xt-^ryVLQu<QKJCxsMz zH_={_hI2ocr*~ueGWtg3?;a?0CdN${=vkbStSNDx@Hc`k6%A@4@qWBt*t)NRcJdVu zR(58x*S_@`!qL8a!5>>ZmF``Vj3rETeCNYT^xA9cD&#!7xZxIa&r4Te*<WfR+c8<J zUT#uI<;zz1$m4B5XK`yd<u3=R9jSnZlJBMiAN;uz1gMQs<JmdXvZenmPZ*`#JY^9= zLbPooz4LW9o9p5wmWxXD{qeQ6jt#kgYi^RU=mtly){lDzK2WCiWAaF>i=sxIcAHn7 z>1AV9PQ0@2eTq+Ca?ur93@T<2_@7w-ZL2q>rd&{tgk22<p&agEmS9%A$##S6KVi1) zn9|ML)v9v6t@=OaH~T`w7?%0+n2z4?9xfm$Kg-g3Tp^U+i48nwb`mzTX02iN#cDWt zx#9Kv=31uG$otuFp?=VsraV%G#Gel0yn(Q8qd8vhC4{2Qzjj5^15U(HiU|uk7HSb8 zd^`|r=eoq4m%?EUtJUI9l;kK*Fs>c@3$m|P9k>DJFIWlPzcynUhU-&ke*F;DSBpNV zF^prSxpkfPwa#LEARlM}*x$5O?OP1<zW?0(Sp#CVsmmMumhlj|oo{1OfFwR-g_gGC z7zdQFK@nJW_Sio!1<Bp6c3hg6Fyd`sRk)AvX@8SCU_RD$UAIzhqxhF%w5BDUlhp$% zif@|MPLACPAxm9-!;@KkG@bh5A_lnKGv5|R_1H~z@2=aC1K9nvO@bYn5n91d8_fc_ z9I2zDc%5e5#6i5>M=!w?8(~DO<leAgd0brLEud+{z~0K<0_{KsyGycHE63m4*_3e~ zI$QdRVn*J6mqV!(8cJE(@~HN<Fs!Sl3roepk!wIK!_<ji^M2~j5xC278K)L|2gEzb zdNBeKt=yM2hSspJ7&J*RXed}<-cgZdR*LOOFKpw+&=uPIlG1EM=q36e(UpZCX<DIg zUe@_W>^s2P2klp{Gvp<wg<M|x&f&vxt#N9Fk5%jEh)C{(8K=3obCYSq*ISrCi~ATx z5%ukssb4(Lgxd6;99*o+;;#>8O*O6Xim)+0FR|mv^VGNws=y;On?^E*`1hKpg;b=s z>?CCnAJ=STaHjFGF~2Be27Qdaqz(;CD)VJ`Vo=ZQKMN>iH9ak7e3O&dIKF2(tALz0 zortJG%&;WA`!?3ANq+7zXcfTZR376iQK%yXQ%}Ri1D+w}@e(XgePfW2mSINECtM=4 zxPypmAxAr!QDONAy<5)AU;epn*65TBvSD$G?MkFgEOVC)hgP@}<<~sl8;ZrrZL@zj zGZq<Ei1d+aWMpHC@ZNp+Km`>+FwMJHMFk2qmVfMSG~thNn{=tdi5;*ym0x^7XPU3O z#nSiTKP;iwBNM>zm3!4W%A`g*YVy7K+I{zZ@8T=fatSMo?0##Yd7ohXA9+iI{KQgv zK2HH^g%)rRb1<+JIWe(Kcx^>Dduvz4QT)@OLEo}pMHgG>duYGG6e|t}ZFp)8_VMPf z{dhmBB{=<=56-@V&#LU;RupKk{B`Vo+s(nQI=B8O7Ix~P6Ni{6M^*t3{aHpYgEHE# zg_-0mH`}tzESzIUsFk_d7(h>hmc^-o+yRI0RI5(e1&4C*x^EA?+CQg-?Pj18;Ospa zz7G)U3<K<IYf%{d6!6z9hT~p|Y+7>mR*o!Sar7k)$JOrQc5F23g(`LtLw!or8&TxH z!E<2?dMlWwy~PyTdsBkeu=qA?HXRHXZtQ{hZ&qz68-K5Tc6%XR0YFl}b^UGi)A*C- z*Q%SxIJ+yj>RE17Ox+%s`^_G8y<3UhmHAj@)ZlG%+wJdACOP+Ksw1DZ%aw6Q!W~DK zee>}BHe&Fu#R-Si;jE8oF-yQ&dTS9Knki7q@&%Tp9m)6|HV7K5D6o-Vyxu%t)G`FJ zOu(!gC-E)<p*xhNem)TOJv33;g_p4dTqmTxV_$*p=meN{eAj{8yTxJ4rO-~H_`J+| z%k_?!414#<8inq<cigpBp4zaHnk>g`B};qHh5YkPol4m1kY4n+E%aKCS2vV9yuZQ_ zVefjifG-}}S%qpCY=6X!-f!Ic*aw~tP5g^`Udosj5`WEX0?L*1>%4cb=$~W~jFRGI zXMP<EWZ-0hHmz)^s@nV}?t2;EWXCs*pM@mLH`=2r7hjd=m^qMsv~1u9@U*)7DWUwV z@5sG&&W>ky-=G}a`lPI+pBIlJ<Tj1oZ2BO2`|ij(YPoEpnZQ{<JiTMRYQm#x@$mR- z>EQfd)0mW1A4y*f=HSFeX=~T$fs63v^UfnuyMbL9hpp_$_O<;C=iqSeSs)pfTJWRm ztXA!ZZ=M7|r<)G;IlKMwfn!=Kl0p2QbxO@f_a>IC;wwjTjg+&ESuH21at(fEciAjn zKRJ+ol)l6#(BaHRDwMOu*kExen~4{@v@D&e-f-#@PLve%q?@hQFmzqkU9Lg=B2`Rg zL_%JFF_;mwtD8gAXGl1Fp9uDpjWXhhuly@YH5bY&k71=fdS$Tga^eQk`Bd7j(<4EZ zvLLDqkAnpGZ=ctLIu*HV_Ww+hIgLWzjYm~2Mvi9H>~il8Uil`r+WY6o@$j!Abn`zl zyJ6Ysg?<LfFWOT)_@eeO4$2$2hYc1=dbzltO*~5s0}?pJxGYzMq@yxDD<R~0_aK%C zEYe?=RVWj^VXE6X{T$~Ft!%+DoA-E3Xy9N1ZPzOU-=4fT@LhW+Oxy6QUtp9GOG0X9 z$tOTh1KT6^J*t}eM-D!ns2X-m6MGhhKfZb&&esRGpcb@|WvkaYmZ^baugc5!65M2> z@c&9z58s&LnfALu;kbBr-WrCX8+tYix#938DndE&2b*0qX9>n(ts1R9f0pK^hB_Uy zBmt!qjfGt4el1Dk&7-bWRTo(dfo^>qh_{^tN_S6rNxy?tjNEH;&id2MHyqq}ttaI% zoTcBRbH3&46Mg-oy7-w#{kN|hjXKUGvQ^lN__$@Vf_R{llj>gf{?vB8={mcvmArdX zZFV0;Ek2T5G?6>SbD~)gP$Frb#|pMBU(695q!dac38rj;;wel*$X^?)C2Woe2qJfF z3pucFC+fP3X8${ArIon7&>uhgzKj+1YLdueOyJ0gre~U~F5>n!<W?#UO+*H;bV0}D za|Y@Ju9T}qvTAFg{%x;2i7Hrz1}Gig+i;Q^QSGBP9hZ*laQ8x2PEOAZgSOu%zn}=B z27c7t1-+1^$He1^JQCHg8%P766UKe$|0OdUNo5O8c7^BA_j2U2&5vOdZQE*9H7wWv zKYV?4SRBvNF2UU$0wh>)cMA|KxI=J<;O-XO6Wrb1-5nN(;O?+2vbf*<o%5aho%_#y z_K$hCr+22Ny0*Hfy6SyTNpt83d@O=^eG2&}KAzT_+;Q54c6zMvr&4!AN&$)atAku# zVZ+^mdW6YA+@T(WKoS~pD?>=`g*d-nJ#M$N(Z1Kn36+;|3WdobwJCdHO=bu51ijC9 z5m<!XR_;$DPTTRCCMQ(R!mZ;cUIaV=UwI8Pd5L7y+ZVKwMtBrZn8|(W&y9Gu_tLdS z4$@z1uD{^5mAq03$r**f@XKFq;|^j1h4^OmIN$+g_L&bKSOhAT@^IMp4=8OGnf_Yo zZwao-jv@|;lm26KK0h|bull{?U0dET0N8nJ3SR&m49@Z50)M!_2=K9%+7&o2Wvo0N z)709YLf{IU{SFG9d>V`hjm00YfqF=;(c?n{v>P3sCe1i2mPd%DT`WuJ(=5)xYuk;A zpL#rnsM1l1oKN61G<%M7QqLuYGs|LNw*CZChkx_TpD47=@yMjoF0glGKPqlxw;$Tk zAR-O>M&DSOZxC*ThKR(d?>Q6=NTL4)D$KhV>{5%#R+K%yL}p+u8nQ52dE{kC&oN)v z36-VXF=hTz@oMpfqUX|0pKt`Pns9w<;6usB9(aJE<9PS&5+p=}W0u_m>SQd|oQZ>Q zNeBqpz-N9le^*y*+gMHIQmYlTRjBdh$HhqD^bSiN^BR%VF{4keV_3cjE=g;(p(sNA z++%JoeAvZ_FC6s@>c9UaPE;l0!niCI%}$L_)sY=+=HO@X;7I1pA>%`<jQzImAgg*2 zaoD-^{pkK>oCU$vgF{3saHs#iI(%lbKkcFJ_r&pb!?9L4mY<FoJZLVZms18l_Av}T z_bnAA1N;8w#zPk1W$3AWxdbPBeM!`P6?1FLKJKZI&&Isb?T>a(IKW+UZJS#cH494m zkUW9~`g0JH$i59)+K~0JV4L)cbAJf+M)>5`u#<R%v-v~vJ5F^i3q4x%vTN43^)X>i zoZH%WP@bN_7qp2j1(DoeWAOGV<ULl#N^!s+hD0=m`#bwa8iTbskLZFIeNJ$)JH5Y4 zZ~%3aT<AqePF%_Gt1b;nk9J1DsK2!~?qr!BHjHh7qR{Jm6<GYU9=p^{5t6hCAax*< z?+94Z6u!3CUCV75z;!O=Q}>8RAbcmZr%YElzC&{8-}?69HHL3%#&u#W=mJG)u{l|? z%keMM2Rr>X!Ywx4Hj$s+ju@2#4&~%mh&7h>=eHP7;pjh-G`D`Ai!yXH=!fxVFX@%f zhw6Xb{l~DKfxl*&r`NJ+0A5<jh#S)0o8%2J>&;$lM(MoU<zc4cl+3N)3lA(^3=CGq zXv)s1_cGLaF-Z#h)}GPK)8G-*sE=p<<xLgoHNh=l(B+KL{%(c$VKWOx(5i6A%i(Q0 zWUe-WBqi8&#5Wq)t@rXAAs?I!$Av*K;HaIAB9nS>!gLPUKBm#tOX4K4yk13~F!BmC z4c@7#7UefyrWel^bbTE~yzt2P;Kx=Bn>Rb!s~q%u{32h#I5ATs*l7kE+m(IR$=aD$ zs@31f*5s)Ljk3K3PSE`I;@F(tmB~%qG?)QdgSLBcMf*qx^1KM@o_&cH8TjlH-afW% zeeT)r@<oD5L!T&`YTs*T_;aj#HSV}C0igkFWZTv!om634inD(foS9oher|1Y7Kxta z<VjIE8iPOr-<lh)sJg%RG>maUv1gM}JX#6|pVfV~!jIpuKiO?!2c*WXmRSt=qU|Lo zI;DfW65+_tzPWX~b+(qMCWi-+aSzVX1#$Z#u}6sVWj9Y;X*X7DQ;TZU<}CRFl8-xh z&RoebF@ph~3Exa?;w#se$<jFDJS%@~w%rMM4YB_Q5@s1PGK7>um^+S|reA8Ivh&Te z`m_)@GN>)~6b`r^fGHz(I%PtQw`fIyULtm!ozE*5aBlE%im@2c0u}?;lCuv3Wp{dB z5+LN)%h*db+s(tlzeY}4`12ST0oztbT_xH|sctV5DGs3_wj`MLY{EHurt{7o&oEw& zpr5Y`Q4o&LQ0ngGm->0S$BF&a>ruQK((WQMTw@NNM<WeL*=l!z_RrS+7PqN|uiSqK z9;DWyFU7?>1;;DxgMPSKbfLQnE}^NFpmha6CI0@SIw^u!yMKb^KUx+{xaNz99K>&{ z2Qps9xVj3DRZPCEWyER^8oXW)W-u|fMRs#gXe0}D86xk*C7b)Bb|21?J>|hRkY{1z zFR+&z0x6N4Y!&`m^iOEuXh)k(;nB^5?v)t4nEbD|sCEyb!Y7l_R8^K#@9>e2zX(vh zM1AjQOnJ2=JSBl4l(p~WD(nO~km44|R4*KQ5r?Z)AOkOH3=>|8s{m`=RJXf~{<&OD zP^e@e>XXk|ghMkC(J6BnrY2z{ZUFd-zHX!J4nUA1qKTavYm0~zQO%B(g<I@_mb3;F zRyj{K8PKN!m!DG|3f;I{=#6TX%Xvk7QaW@=Hqg$^Ujh%%vy&uZ1myZMd%QUcZikX! zkXr}WRes-UuaiEVA+qWpHE8GwuG`?Znng^x#2h7zCKVo1=tj#A2$UQdq?D{Cw}m=; znR>8v=k_$=qG89uHuwBN`E*V_$s7sp+2gbo-gSdkIfd}R;1PnHc`^X;Anp9>r(uB= z1zK2M+XrxL>q=G<E9PUR%5+_hYBpj<U^mTpt~@GaK^ZjnJFuV`HMoIXiF`u8Yot!_ zlZ!q@vKxtMLc-BXZe4ID_{Qp=x08dQ*4Mz-J&?@VS6I}av)P9C_FK3Ua#4SyCO)vD znL~H@`DnE0-IsQT#$G*Ix-*ZB8DA$a;p_uceTL~U7na7%-S*^=H4tirRXwpfxV$Hx z&XW*GLpjAUq}GDk^yM}$)z+Wf1P$q4cIX^kz~sfYz%f?SZh?aJIt0uRcI)Zn-H+^z zCd7>Ezv-P&KfR_5GlD*K^V;SyN|<=83N|OuMcG$gUtEP`1p}^;#<N+UL&K(Brs3oM zz`t~u{oTMK30=$9e==L-5vDZn1(2!M$c#7(^p+7|LP-amb(T&NpWjBA?VVuRN8e$d zMq8VoLco{yt_J3>lF68;fok~TIm(A-x^xDN1g9%s5gx6;;@LJ`W1eI@4l(VKH-;)3 zl-(W==9W3X<@(LfO^RdDPKgpHg@S6>ZJqfVkIeL_&m4ArGySM_DcMJEP7E6rzd?}Q z${0~vQ3sFV?08xg>JFUtR+`y@!V@h>{p>b1BoEiEG!LtI*Xe`yMiqyQY^b>2Mu>Sx zLMyBjL#NC88ZTK^FCS*^GG|DvC&gipd!bVX(6ZoTK(<d;0!OePuP88BFM;XlG2*0_ zETr}g-z)m=zSNGBFQs{Ut)zT@Y%5-h-^u)*_d+B1mNCAqR~0Mm_K6b@w+NJ<5+|m@ z+YVM$#gaO$6$Hm`h&IzP9^WR2VD_QRyMi!81@nDQh(%O;r&vz-)<+ZOhOAe+wjbz> zWdQ66Uvi1!^xt~dAUq(a+`Luj7W`ZTDg`9v)2Oxm!>2nS1Q$S_<c8b+Q9DQpWu51E zHQl+B^~?M7r5=DyO9k#3uFsd_>{hx{lvu|wrvaarD9*2wEKhfF@5H{=U}~=dANCQO zoBT&N9N2`mQTel(z5pb079+2fjIWj7z&W}Ez&Hs3dzsaPk)o-#SJbyXPOcO#fU{wc zqENyj>1TCdcC+!E$??RXgDOGQ63Bj+{o+@%tM;7aO{e(B6AxvLh^5j!9xEDIV-=Xk z*#x%j7+LthoUCReINIB$UT@}vdBe0U+JsgY_?`~a-grJ8+US2uvaBudk_p|Kc}@<v z^86f|L_I&zcOn7a(`!46GnqYIYVOguTDILs*mGH@9gsq`k2<;zLP$K<;GS~FhFPV* zxXdWMMjI$Z{`q>bD2I5uxPqc_0>6BOnPNm1_SE87)F#8T7$W&ak@7f*vWm&;=t;-- zV}p_i+=Z7R-<eUdPIB(%DHyQbvZ7D?8-WRUa61U(6ni}1itzz1AT(DaSq^|(;e{UR z$x%6mSYVi0Y+=@d_#Yl7t7|${1GX;8SPs{8?GK~2poOeHKHz@Mxe84onU@lZ@_OMl z+(MH5u0wnZ^D%Y{)CV(Rcab%Z=5tuJdVF$4HaNx48QL<r0jiSNK=w+sp|g>y?e+ji z3WoA~e%6@kO$!6)`?ihnPCcRUdl?J}Z$z${YW2MMM4b+$v1YVg4Vh%GHwUf@ce}|1 z$X0%|noT&t;!pFLffE=+>*W~;z1m!fy?(i^8X+Mh%dDrY!Ladfwd62-T}Qu#O}2Dz z49Zd#ni}weKDDX+ge;Whb%7BDx=p1+xlJ%MaE}j*;KPap!}G(KHdU2vY6-`H$t*M- z)?f!9tS&e<lrwCGIhR44k~tmNQ#dSdGs(SoRP;dGO-9}e0qYtFmHNV(oT6Dgh5#!G z#ZY4uKuo}ec46S}wJ`1|z287jQMM3*ZBdU?$Xeo;Y5k5+FKG1KH68ajqb1D4<znMk zrV3v$NMbV?!ItAhG*zw-2mz+h4u1*&#&+5|Yd5Y5j$UQ1p@%hhW3%&o0VP<(3E?dO zAGLaF(MFyQT6Qc|bF&N^@3ZxJd(q43EQKlY)>_)(1ts`bxtTVM&KtBLSdujp2bc-E z$`BZKl;(TI!u|}}8(~WqPm3I4#0z9RyRp@n?7$}b`veHSk$;|o5C*|{4^-BBGJIDb z|8_vwN62nfSD9Z;%3;E7#trz9gE9suw1gU_nz~4^tM!=;hipM_#sgI0zsx$LEMxO) z7=y&+tw2&__c#56cQ{p|)%dzuHr6li3Qiq`fE7dD^Po^L??)EJwEl>S<#152s^;E! z0NRymZJd0v!G}Zx6r1JF^*Y91V5DQ}0wnfYG+*SXP+I!GI4s<RF_(#LO<q8|UbeZD zZ$y?zkX7+E;@ox4#RnJ+0ZWg5rg4gkZ!1RjABYAguL?Y=DTAI5J+d-aj)skW4*LI+ z`SZ_y*n0^Soluw(FJQlrOV^4vVHG1)5ZJ4zYuvlXtE4pEJDmNFZqACi^fy{j4rOn? zlzy|sRhr+Z!QhERd5yC@+cwOdM<;m~Iqt#%UTrRpMIc6YZ(U+>Q&!{GLZ0Nucun{- z>U|8;AMnOloL}RLTxx~p4-dQtUT<tFl}oBRuA}OlECK6f1s&L~FvW3J&Gp(U2YuKg zN`@&z#a!_$6MlI?N@uMvZRc(K+A|PPw#{DP+}~-5`dyYMeKZTHOP}u>IT%{W$O$)D zrfH`#Dq1h0Q`fCqbs%Mgv@EjoDs`71sb!?C_p9*-xzxW>i}PqF3)zK=n0OBP&R1^_ zh3!QZ;JVxo*5hwj0({Ye$d5Hr^vw4{rrq?==DteVPC%tGWbv*{kF=D|k0sG|c^3|r z2iD3#C_IU00^<&`CXYutm8ToM71%j8I&Z6ZEB;QTj1#(7$*nY8tx5ojfcnT^9nh*f zc4s<D&oW)ezDVqJF)ZixO<ZGxAyKsUL2gPnZbzkj7arb<2GcH>c27R&bwdUc{>eZ7 zEUx}1?ZpeXoRJ(;zhApWF{UwY4F!1jTe|=~{@cSKc-ED*!yBig{EgAh=rBRIhtdYS z`S;sK<+^3FKW%|_Iq_#~Q(LXxK?E~#TI#-TjOeM7rrRCgd=DNW^mr1X7AbA)u+%1M zkmOO=vse5~mcP4VIk&>8VAKLVnb?HJlk`xuGiQ@YzX2D)3;yiIamnQ`uN)SPK|+oS z)ZB8R*dK=HC714^%Q-)~j<=kj=+#AzDx_T8i(TnyGL`^FqZ0ly3UZN>7(y+?qFZP? z{!k$CZF{qkGr>u7$`)<2v%65($13@7F|ySuP`w;`e?sCeCvZN<BbREwOte8c@yE5F zLD2OfG@TBMuMOMWal5jqD{iyM`elChcQxJh1)^l$>?6@jACG<UTEp!S|48@j$xld` zD!XET5c4+<8wH_?CsfLJ&)T}Ds{;AHaF?c>cXhy?z#x)@i~q0Cbdpr*y&>UAvaW8U zQ$9t~23G#`i8LlEl0Y(tqo181;ICPWupshz4-fZNf<&wcA*C>W>nu~5fUw7qULs-d z$JkVb7A%t)a!Bbc1HW-vbRKDZ=1M_Y-<N7UGEZ*2%yfk8OT{tMEgUoSWEb+%4w26- zshdndH~uW<g8+QO!LK<|DT*bu4GvzP#`M?YC*O0rT0Tsdx84mQh$4k^X(^&q9r-VK zO^H@bQ-Anb2kIJXeqV$7q5M@RZu+qzpagWn2hQ__wW`UzL6&AH#Z&T<Kx~#S{WS;v zbE7MxWQqMEEfy7kmyp{m^Fzqf8QJ{J8g!r4wUjO7-2?g1+V^*C9?9G-`BXkmrgK>@ zR;JBfOR|jfg(CePbJhqfDLQ8>7zwr5l@AR1JYUbC$hh1~u6S1r?^5V(D3j*X3tp%Q z9;+rf>na-z037hJ07l^$Swfkzpy6MiH^2y+Tddx~XU<%7G2%3g%}5d{KWS5kyMQ@K z72CDsAw>F)IhEkoPc-o}*B`k7OMn1E!FDE(_ol;FodZ(&sr(Y%k8+n^YKVrM_4!Uj zITlcwz9E|}OX|MKb|$Mo()NGDQ!xC~#%!``OA(hcnSI)iHcu#sC5R#9-NGk(&qy|T z$<VB<E}8V+ACS=RZgIm%odW6(Ei74m*@ye!E57gLEJ$1YODg9)B%;wIYdXkY{%NoX zt7~1qSzX}Sqq=m=!}9lEjOJ|X@4`R5VdUl$#vkcAy6{jInYN=`V`MGWGwM8`AiMnB zQk(vYp&05~9v8xN+|>8PG_ij)bF}v4<{0#E<{4shH8U5@ncDHiyHxpPT#*W8Ud<i~ zJBRtMHiiHXS)+8ST#|kWI7idfodBkS0J57(A@Dd&$CeuW8(v5F5yp*m$C3!_(`MSa z8~W9eXc};alE}2R9}S4KW}o>s)>Ns#6RIgql7f_vU^I{}VB=-E>2Aw4x*qQ9Ou9<B zB>y$I)azkcAjj!O6OAWPUfHvn=b5%Vj_y&&>dv_BVXCnq>L+k{i$yE(#6B;YzS5nY zWEiV9u2eYoD=lh6kTm;if?gJu=Tz*{01phSuch>h3G9;)v>xpyw*1Iil@o4Er;@H$ zpF@dU3IDfw;K;Wnx=)dz11++nJhZr5Y|wm^Gmg8dmah)At;g|-5&4;_pRfWoJKEbT z2_z(b?^1xP2<)ml>$>(oUGNS8PmeJ{dUT(JVb4O*2q>j+r4-Kx&}UaaSZ&u>h7)@F zJ#g|XG)6Au8i#XGeav~kXNI0JSDM<Z>A9-rg=;Ly5X5GQ%y0BeB+xqi;>eh|ozriF zxt|t(se+VIQ&yZ4m6x(%>KpuOJShL}A!$RL*xCOrDpcZ2Fuk{0=cEMS4gXp^Q(dU+ z<<GgUDboq<H<rH!cVeL!SnZqa2aP~(gM(piWT8$y|FnEDu26e{@~MGEO#?dbho83? zL``SKiHVuP+@?)Ls;S*~v6mH-1Im_Xab}Bvl2fwHBP!s{jn`h<q7E~dk2wapVe>R+ zcdlY&n&*|?KbK)ka0H$wi|-)~%Mh0EgJi(J54lp9x$r#8K&5rBp&7EVFdVc0I!UpG zSlh?6#nt=B0UZrR*^9{f&q0X-(pvSEK0Rve-wpq?*RCM4(3x@n_oV}{j^SYUcXFaQ z-b8g&R#6_E@c;KBy@)s5&^8W0+d)2&|H$%>NXV#x?Ir$HWZoxnVlFRX9!}0x>Q8f4 zEfGjVFoQ$$7dTswrzI$;Sj^1-5vLb1^Bf`&$fd@Jnf!knS)n~8av_V?YZ<nRa~4VZ zZ8e9hqt}LbK8N8{m>$#rddl2;EW;q33zI26_WyoLCB(+FHF~$sKiJ|o;@@_HNB$Vl z<KReMo$SC3Vd`rAN9bHAOvtZ4sIe3L`F|AqKl=TTn(zPVbzwBg$M#?M_#cJ--vcfb zL?sLX-w!|kw<Q1f^uM$ZQ5@MniW92jqy3Kz|L?v2^(_$kYXF)ZoYI)?xBp+SO>s!C zt}w2n!T%k~{~n}&4>;660}e%>7Bvd#g+%E<pRk!5Jb$qNzh?CBduB@pxUOVNrp{Zy zGQuuz4@dtNfn7DgbGGl+BgM{Xw6qkeQ;mL|0vJz5vyIIb9*E-D`ML*t9JkR92BW~w zEcswSbp8^N>NBmt22N0}<@*$>|C;+SB!Yp%@pj}s6oEy_$aoN;aaAO-HYk)JvQbkf z-{q_%_&AR+c%Lk2ol@YkOX~P8ejin@EPm!5;xn&*AKmIXtionED2;)7k$r7e=ewt8 z3`;^Mw0wzz7N|-)h~qwu%|R~AjBmF>fv@M@hTrQM4RCe^_OO@>zO;)j79Fe{dK$R0 z1I69{R-9vQJ&TOkwkx7ObS{I}#T-Ai)R0wC4+}|o<jISGtI~EY$lanE&7nZRa)hBn z?`QMp@w&uU`X91?rw60kDh4|!OTuGBdNiYn@g=r^ni6KlNYEu6%xn7Btq<e(*)7k* zi|z<f)YG<D21j*dJJ8)AS6Hfd!a%`KGmod!RIHsq`_V!!_9P0SVnNGnp#Jl;bX$=y z)Tx4G<QxV}$^QJj@Oe2wr1s3~?=hg+T1A}qZnp2<(>GvKi>Ph&TV079a@d=GGgY09 zme3GE$p;I4TA=ENjQNPwtpuz>aUnIW$;{%*I)<$<G3$fI3ND57-WBO+d;RrUr&@-F zW}=16ozx12=(@@WGuPdc{q(sw&*RMn+$s_0xxEet#2e9d)#c58<t>~%G2pi>gab>q z-k}DKwL{@N+Hz{|bXuK*m%t#<Q|j9d$;zHXxL@4YPsjE4f-e#oHR=Z0ns2ccI0xFp z_uj=9lyHU^JeDyp032wD-`7*mI>x++Y<s_$+@)CFGz_3zZQl4CiA`B1y8tT3rEQP= zrc5(?XVQbMdZA^000qzE2*eW?KUi!%%-97BWS@K>7B}093T%hK9TJ4=aKFo-5~|T~ zck{CB1wB|?_21j$Gn}g8Gbx_0Q!)<<T$b{-gJ_Kp<64U9R-U*j^g9OqS9TI=G^2ty zAKk(3yH9;7QB`0{h8|CA_b7Y4yXG&i{kDtFJ<K|Dh<+YoYGN7ZzlP1Zc=|~U9dKg& z%P<QfJ@AFBmY)^8C<JKyeyrCQ$Orsl@Ox8y%eE5bY`O5)%5*=-()i6W)h)&8&Uken z9X;mEyJn!i1^pUy>PpJDlwm7yyZVkL{=QcA*+#(1-#2I3{WG-+-<^f%!!?gT>=W)e z-Eqd0!oB=K&3nnip~b)n`&&`e9d)|G0(JTw2&antyQ7QL4}-7zH9^8gocBnx0g6;N zIYZ@hJ$UaL?}16H8*7_b7<bp|h!MR`{In_*?UgTkpOl+wBp{@|gX_Tezr;EUI?tgG zL(%Iue>@nmRB6W>qT@8(VnJfLafENF(a=(c*At3b9N4VACysHy&bLHNru~BN9h^J6 zy@G~c>Vs4@ZZ`8p4jzkpMCz{$80B2;S@60=Oe7x<s^zB`FaL}?J&ul})ps`~hz;Ho zLr3z=3{*vQ5plXGG>lA%JB<efCNo08@ks8d)Hm<SwE3L;(01nadX5A*KmOK1Q`|7! z2?bF_(tb%&+<9&wR3A`gf_;KM&#F1h2T-X8#%5zS`9nZK6X-?rO6DKkVtkBGoE}Yw zHp!McP(A{?mHg-%ki}A7fuB6rh%9Jw;|5E+Qu&qr%zUDqoYgR(`>#U{SfRUOzn(|x zFc-RU9~KwV7v$R6jE97FlUdvg<uvn`H4InLM5g)+m6_=o4cy;?Ri8@Z>rXDFZg953 zzUJ<fHL@k6*?sCgy%1F(YrtFgVcrQJaei~ErmYy^7BkfrtC;_7?O$9nFg=TTjMCci zR4m@L#dA=OGkZrg)Jj?v%F79v<CI`^!TFdjE8T_;QDr!7r;Hfv*<g&V5%GYO#P*lh zhfj!s_*(toj1=HtUCR#%FXcQ;@kpu2ITi&>oMAnh$bOr}^(%Zvz6vb)i$-w`3FC(l zYGdP-A>(`ZH)T1U=WOpb8b-b<|1t$bX&^$$iBGxdFG5#8a~Wbr>T<rBFYRZL;?y}7 zJ!;AFB+=6@H+imCUDU2K8ldfVyh^-37Nhs;`QH<>nxNqc{As2P<b^dp9V<M%IBd-% zpYMRG9AUAQxULoYNM=H6$yJgQepz`V$+fN<%@A_OKZM$q^u0*$bpqT`?&LZ2KhV`8 zQZTq9@2Z(+|GHMU{v4k)exY8$AUzH+GhjI{#f`CV(hm6HbAQ0D%zeJQ{~@$~0V>XI zCx6sPBHwpOknJ|?xe^i>TVXDS>T;XJAo)}czlrhWn#D^+@2(#8BtBB<#_`fGJM<Ta zCNf?&)Vm<-ml+R&;fg%LssM+`_VW%w((;bFfDH%=IZ7%#N<`-~O?22Df^EfNuW~M0 zDT!O&P*jtETX@h#V=wkJ%2114Ti;I-se4;IoqI9f(x9lG8~LkA77NzFW~3{}2!|(4 z#_v69^pPCXtv7ZCINLSd1TmPJA(r<sz#b;%_oESUmL#07{`1}R$_)gj@?r6u0e#`J zLk}#9n3{UCFt*W+uIgT$_*n+fk43<-AH`6z7$C3-lpYPWsKCsengPq{*G2BEQR$w1 zW5<<a>?`+O3}aw3<u1xr25qtFu^4;&i)*K|^uotdoLhU+Ah+~k@;a8s7iq^EO@Tr3 z&=(9g_f1pf%&~<&xK-I_|L~f1)~zRYw<+SQ?S*MWSALORV5jUz)GWcVt?<Bo?fS%R z(4_?B*J{bi>tjJFXV?8?si|2*q;;M^!9i-b)^ykD6q*Qfp9M3fJ^y^;>ZU-x5cB{{ zO(TINaM9}ugmHPd`1+mV?yM9i>}}bu>1rp%M_<=}lHkm(Qo@}q@Zz-GExbI1BzJSi zbrzEi+&^nP$AvQ#GPG&7{Ur>&FJ42_8>-FORg$J8Ag;W;JTOdvqRLnr<>{#=P;eII zcV4chS*Pl0=7nx6&ud9*^~3${kX{q?0ekXNJOKXDqp}-*|3|U8a`QXW=$&#}H`KoW zYhXI(n>5jQ3d3-eGG*r7oZoS7sR+6gug;d~5Jm}32z=n^7%%^ypE(w&Sxm%lonk)V z$spsAz#p^dtq|bdA%m>X#nBkEE$)rbH5ZsHJ&p^fI$^kI1OzeJQ2a&n_94tVg8@u6 zOF_&q?ELdJLEMazvBXT@g|9W0A8nclpSJAroT1UZu{<s9V=EVtz3D&ad@I~YB3aPh z2uv9go`KQfcojHxrZ$lc_POTSO$igGIb?pRCN%raSM4GuybO{!VbTz6u?u<%l|AZb zZMR!;6;rz?$40;)3#t9iBD3_U+3nU;5%cs1zsdeqmiETGw1mn<TQ&?XtMyIZ(xP0o z-X;FZxF43#dBp@)Oq*0MnF<GppFFdv?-HW5<f}5VdK0SUyD=g`9Zi{eb@avmsVTbP zMo~ckAWvKG$xTN@E}^j7>O~%1VdWj@cf9L}Gv@_$skSFun>9od1Km+)%u4~PcQiBZ zJRRU%fA~XzIjuiZhXVJ3ixR2Q#8dc0a~UYB(Mi^5<ox|y&$)$-Sw4zc{+QFI+d$C0 z1nrRo!{A8fVqCpuZR^#pe@d=`S~#&g*BcN-yAZnMmw0=7uPh{zc^SS&R4^|)>4KVK z<2~QAU0Zh%`ncqEs$In9vHN-DMzo&fipT!3+uo1f!0UFaRFK+Tgm;6ds;*&iR3paV z1^uztZ5FKGm1)4fkh+;v;m06PGNi))N91UV@F=3kbV&gJt@zHx{V)SoL~5P}6c@tl z@@*{Efy~Y>JMX6AnPY^;;AmW2^&qc0D3k$1F&ALr{2I4$<rC_^H}AK<^cLp)CH>Ni zX~BKBXMwHFX4L`1f5zvE%&coKX*Vv4Oi@Uc$Udd7Hm@By?omQ7k~HSXhMt{AL5SGu zZ_v@hy1ZbOx^{z}ysV^^{~-bS+C*Kz!TMy4O}trJQExFP*>X7(#vLSOc<=V2WfZNU zh7CNMwnvr>;@9{5eZ`N|CK%SIm&x`cnfxIkq4NXJa>2|wf*gMwz?xK$dm-LdRVZy! zkHp%lMVx<=x(KK2&MIFM0`+1@a#ig<AE?*_N%7uii_Xy_zbz)XlRw%iS90Ah=V7|? zY2r~Ouen4A(EhP%0gzQ<(D7eBY5C4*^((MGqcswUv=xI9e~#$HS-8k*;g=@UsPLb> z?!#rgK5~_Gb9rCYhe(U16v+}>d7iwAb@@Z}?;h8$jN?5CTsainoZh<&eauyqIL|RY z{e}d1D0P}sl-!OCIb4;`4zkBhjswxY>K-H0R|a$zHrAdBjLh{Lc1#e3=c#o098iM) z6y3KAa40b|s3RPV(^2PiIS0$~5p&qaW(qjh13z->^7o$jk>F+oQr8z24x&r-v~+<v z_=v%Uv<4w7JmGG&#UG+ScQrUxFaq{5IEuN^q%CBu(j*Axir<E(yjBHLl_Ik6mr7xj zX*;pUH9m@Ou%rt8?ZY{(E#5HXgweF|io_qzV)IWMa&Me+>~)gk&>afwxW4b9x)q+y z!vT{c-o|w1p02Y$JffPqPm^CndItsG<;yVW3C_Q63VZ6v@cU*ReF?Ql+BodTOnNTx z_B;EDLjQ6*zi!rhZ;>Qlw|1UplJbL-v!D*)^j9-adGJzoH_W&JB(GBGS=lugUNaBX zj+LSa8T|X?epG5v@N>#!&dxXi8e)5$%0UVMFX{WZs@60$b<n;k;Z2#rz;H)ZASqgy z7PA`sUTULiTkuJ;@kbUhKLh3?>w5O+OjVb#j-R%858HPu*G3pkQu|;D6kXT+C6j?< zaxIY9*ta3~QQ0Ch98hz-9Y@gqL=*f0e&XtonF**i@t%n?R*~eIL5C{)nrhcj^qEAl zww1*Ylc&cfTHSmw0*q&@F8PG-13&#!+x~X~|CZJR%$@TQivtn7aLdCxF<mijzp-v2 z({j)BQuMVuo$!cSZnuU!iACW?wZAk98ac}0bQ8dw$od3UCfl?VD?FU#)gdRaH6`;P zUh}RHb-S5y;HbP??`6YHX%n7bN?XQj>(k&|7YqHd3hRduFx^HoJS5f37YB@bDh0$Q zMf}&l;A9tXhJmhTyM>zTP;~vyTi8B@WI#ThkNi$m58b!K`IM%+1&sy^xX9DWO*s7K zaQ-qhqn`|TZW10>blY#};(C9QawD$+WU~5xS7@~8U5IH)FrWH!FTU06bMgvquE_zF zPqTW3*neyjE)*PoSDD#TLI)|C;QbzO{vN93_3=PTwgqsU)P7}2e+T$N+2r@=9Od5T zq$tAs8j<7|-2L~rR-vZMaXnhaymu76&G}Frc{5kl)WTrZXVzHejODRyVfYr3fcrx^ z65uZ1Wq@j-z!K?mi3h*36T2`0--^boYQ@&&u``7t9>zAF8S_xB6ir}OIxo}t^0wO# zHIr!qG0;f}nynNAS8Tu$G3ubYxS)Mt%RpWhCw)qiDbAUib=TjOvIleOp_AI^tq5#f zNvqsQr-#^$JV+GbUhvMB76AdqM92ftwO{8JB~tS7&0HX{=*2Afq2Jbuh2fcUz0+k& zo!bB{t9uSK2C3I|*SGS|X`<_ujipH+5W0o@?^%|u=(0o2IO;>2iE@2G(LHrN&+cl( zengeomC9PKqfPTu4RdL54T>k^gP*dse&)9LHgkOCV=?)r;w|0^?~{tCtRe@ZqbK|6 z5b|hxul6%33LanEOl<uJM^Qa99giJ~?S%mGm#Hp}I!sQTr42AclrV<fS6k9mJOwSg zc~Mf^8eT!O@)Ta`6xL&<Y>o!Q=B0{Dw^4PoA-6VP;Gau{b)oeIC??XaR@s``32J69 z=fk5J*!m@-U?kYpoV*D>1R6gZ6VB1}A?lMp#@j*_OV=JvGm-(;^T;f;(*#!udwerO zv2Gi1p6pJQDVe@SweQ$r!RkaVnpFXrov*}j2l7X-=!oxWy<UCRwkis|S4bF=cSu^A z)JHzDg(b<Pp-)lx?5Xn#`KRB?&ydM)Se4lkXn){M&*Gs)mNpB$uMOkXRoMJg&8f5o zsiL3PCWQcX))6|Uxb%h<T5NNeq~ufgJGxd}$}<q#ods7v>WdQ1<kRcSepp%!vu^}) zRc1@%BW$`Y3fmP`DLS0~Y2M<SLzbc?W<yQZyDFbbD8o;snzWgSGoml64*QdEs>4>5 z+M~NKv6lUAmhw@d-c@-<w`=N+`!e%+{VAQHQ1u;IsuLbqUk&TzP4R?yXc0p>TBx3J zSZ79J#L-4QCxS)nG#lYm#z7^5#V2E_dCLuTms-V_%{O|=f?(^Z`IfGOexzYk;?Bt3 znzebGp?jjx3>aQIHQjSmEpSTCKuc>J*2tVoYgyI*&Rd~&EzGr8B<|9}i=3?8<`Ud= zC4hx&1fSnL2Mf*XGm;$=y8rupfKFnl7b&jaOD2h1=cAJScxm8OWo#y@sZBt8+!&ul zp%7BEY|>f4m0kX|Y?$s3_6e15jM=mwJH?TZ_N>F5_QJHjz@#Ujuea4Y?&>z2Q445^ zAL44CG1{8Q!23@Ju;l8q_LX{+_9fAhXYhlHyCk?5|Bm6~*bPR>X+}1wIeDoeyZ<It z9`697x|rbxxp5`f5Ury+sr=%v5ERB?5g@{SV5(7y<N-HMidXj!h~sb01|bMZ9g@Ur zWw!eEZ67kOP=|oqia=PNb7qC1ytpVr8+z`3<7BL9G(xPh?Tl7K!t$XOmMWfKiZZhU zAR+!SI>JG7)Fofh;WbXl*1XmXA)T4<Z5!{rdw*n(23?o^R^_9y85t|Y8o;+NriL>P zoaymOW+UzQ#st5a34bS{e#7|T8&C;Waa!+rSN~L?XRAmn5=25(LQ^vRwC*KOkj$O~ zn$(&@1oM-DluFVfzAgnreTpP*ia$I!Z}CrC9QnF5XO=527S<I%LUptn$1~R6E}5dN zH>A%00o)LFSNNonq#bQt4bCqrQ(o*kluK5{UcmmAX!5qqZ~NmGYsFPNT{iYUxaU<v zVkScF6fRrq{hKA?9K-APRMjkMYFZ?ami=O3hE-FbHR`S=w%;^7&tc#wVk4<tqBlMF z57`*I9Jj8{H=wvpk)9@cnd|0N|7?Rxa2=V*M|ObwXWV|o#!OhkQiaD$ubDsN7tU&^ znU}*WH344M6>kxfs*9DFh&O8V2Tuuxuo|w|>nkJTOzb^h+Y(!T_uLbsn&v!r>q!=X zMLp03I&vE`vH4TyIsZb9Z~?RXwm7y?N(m-t>B;Er6@}4f4?7a*Ja3wa+ss}IoUYE= zz+S((T*}l_o9z^q->dTR5a51dccbm=ZCFczEbxjwVjI>M5{%IsRfjNuYd>h3%!Afd zwXNkLWshYtO@QP9rn&ZeQ{p3uFkNk@*vU9vCB0h9q;;)2l5zB)=sQkgP!&`C!Ry3X zF<l2^r%B}Qy}}M@nmt7yujBKtzR9IrE2yaE5o&ci3|Q3jxDfN3k)rJMXbIthlV>6? zb+XZxO&K1T*~@a4F%OQAK6^T5wZ(R0EDWfPweLpehxSsj8Ls&*%!%;RU$-Qr6$OI} zW)mCe1&Al<g%VKSPE=SJDp)v9;d-yrkZATtTxCEAp>Tmug*s&0VBoW6b&`(T`JWj1 z$vNx<if5hJmeD(moA{%au9F3=>AVA1pVhJ}BA^*Or0^!+Cu+T+=fhKC<CZn@oxcsA zg0EqWnv}oHxK)d~%jbZIuHr>Ge|V$BP5f5e#~_UrEmb<6-uiL41`92(2=Hj*!(>B^ zt(dR%jf%JNU=l&uqDj4%1)PnuqlgWX3ryn1O7$S)2riOBhGcaANj<$?G((xY{{{QV zOe8#YlaRdeD^A`gf-J5SepxvM?A5wWGJ)SSn~`kgjUrNJK|21`UHZjc%|0QZ)3})F zn-YdFH7y&kQ0OYwu-A(VR)Y_%*r({P1)L$8Dh)F;0M|b`XZgn4!R|y}xK|%;i#vVg z1kJq&)>kS}ojW8C2%6MzP8yR0#1|V?IlWVOAG8}DpH$$)(-*Y9dg`D#=z<u6dJsAS zy!sdmcJsh@`zD3t`u%6?4N>OA2Pjp~thO60C_VS%L86{Dvq(V<DIaU|=`N58pa~M( z+DRjm)i)H=o3u2ZCODsyAo#oI_eP%n!zOA6QZ<&r-iEJs7H#=-JO8#8X7;V$!MlS+ zwxfUbrJsZxGZ-cth0^z9?Ar&ge=R!CbQxr*dK#|R%62`+M^6_C)15;MWZucNbxQUh z*K!jlHIE?$6Z2=^mzP+cZ`G`XY{~8GyGxP}`mXY8hX2Mgkz~6SC7|-Q6GA5Ba8S#s zBfq>HanuHxqh>N{!Td<8eZ3MbAJ~j|OlILnpd?SCeK7=+u4-ky)A<F>Jw^LXVQznM z$a}a9-0=V!eS750Sg&+G`&!$e<^%2M0gzo`p=ZidGadk2(yt(Q4?T^c7)P|Rt!BZ` z`d$&Yil3}58O)g3h1npJ&%K`2z7%iIJw-1(4+hmse-xCBApagt_J>QfR%Ip+!%nCM zZ@~CeQ#bH?5fh^W&HR$#Hlm4;UwSg*R)o?e3FZv@3TL2`=_#p|){!s@nnLgV12a9m zc0a;G#wpaT!o~$(YeSqSwen+#o13V2pv>}x#AGrFj}0}M-J*)pjl=kpGiym_)ul^Q z9O@g{8T2V!LtJFo_*z0-8Ds7;P?B6NylUn0mgFEi>ww$5x;}Mod?$<j*N;Z%%^qLY zE-F+ECFyw#{Uo9xy(}kliv(Oyt>(t&5uhsQbEy>hfp5F+@{~wkhWRD^;L7t_i9C4J zr|<)CKr`85C+iE9<Sq%*4#X=o^u;uL!bPy)^P%Psc(kTP`$gh=sk<n5qqk#Fi&(-7 z`H(B1^MkdPY}Fno55RF!QFyWN#FS&tkXgfNqUo%$Q?yg8Cv7!2qS*36W&7YJ-v=5U zy+dC>N%kP-Ib_9~&Un|;&VCpilC*?0m;KW=o+VKP2?2e5TOhEff4j`OP^2HQaql~D zI?YIw%*RBCLEQJ$KgLnik|yXPPwTqdr<zRQ@#xlO0l@C4LEUZ9^0f}Ge}XFl(S|D! zlVe1w2v$|&loSaG@Cf(l*tK5#0Cs4{mL-yEW9g@;JDTVs`9I(4rSd09{nW1XDjClN zo$C0Bi8J$CGrLOenHK2y@_=FTHjX*53VtH9(UYtr*DX>ew|T~SC#*)kN(suQ$C~Os zxE86n8ZVc=T6BLjsvJ>FNI&>zsR2ujCn@>KWN;*}kIEw*NPi&d5Lcs_AwxWWe8KV& zb>g-#g+=xuz)PThNZXF@Be$BJeHbLS=`1(vtq;r%B<iN_8Jwb%Rr6DpB-wwoP9{<? zouHD}Tb%Sc-nQ7~3lsA?8qBkzKj`}_%>Lkw8v^kFnfd?n0ODg)>+=bEVG0KHKy>f> z=ygF3+ZXqwq2C$`HPR~p1MAxRUDfY0o|D;)qBE?4m??M7nk_#7kZ?lb)dWKCv;3{o z^HZ3O3FRElVl5VW7<$`B_&A;b1idaGt_+fGrNm<2w$sX)wGD)1efEL!!4pVJZEeJd z%&f{~n_g8y5Mm!6y+(j$=g~To?8M5OAa0?S*3cwnK)M6VZMHrvsw6bNs3AYx-+}Lg zz~1}{6E_|ExsS_`%`<HI!<f85{8ez}Ov{Qx3-)J_Xv$9at+9m5zK4<li8Ku1xg#)+ zNx-^mQzK872zMq=nT2E+c`m|<$(tvWqS}=0a0R-47SPaoCN$YVH(fuK3l4sOFnKsR zgl5+DLO>^j%?evbG`ZvucOp_EB~u7ovez=|T!KZq!0Ch10e7L1BZk;VZrasMSMq^2 zR+SaWB*{|^jtwp$N;uKM!;CFIqg4bg8f*e^Hq<}v;I;f-&SGPXxh8!%Bn=HVDq-GW zj5BN2s%?PvS?EJjyZG*}SZd$I0eGcR(kG0U&`aLEQIfFrTH!>h(173oy7$%pqDncl z{qp8!S>R1dyC?!T_gjw^xsrpNC?_=&wNPlKoIZGAd0PXqiL@d5&dPCnMagV+lypv$ z7S%IRe0L})EB$2Y)$M6P1otfaK?7EbA{|#ihFb+gjhH<R0htvikQi+<AvRN-vRbzY zEg9`3@7Ju;OKHg-J1oegCew>`DM7(5`SL@*uInzoq6hje#iP#*6}h%cjc&JFiz9~) zHv7@q=!;mQD$s@BWD1>oQJ7ouLXlREx08*M7G3>i0czym=2rwUKT>{ce{%*SPK+1x zr?O6=M-OO$#tQ1JY>K%R`vG-)`(Dy5Ue1YBktGh88uP)fhDL=>U8@pVLLZ^g-ubU| zckZ_Gm!|rk#pP+`8CcczJ{weYDJ<{+zYBg6d~W<LD7YC|{cR3|zUItlFNTzs*;agK zEh{Co)ZS7=r{=Z+jeVo$>OWWj6(w4>=ar5XLc<9*U^>L8$@wYw)p~Bs;u{{p_f%b0 z|1_W3BdYpbK}-IdZYfj2^BP!hbTT+fBgOYG=VbcRrki(>4FqM(HNV)L739!&MZX7~ z%U96|%u=d*+EPVDP+mjcx>m-k@62x#vu@<S5WE1A;@32VDJ~2eHMp&8>CoYkRTpG` z(fs}!iRqg&?bFO-(uS1H?|-_pH;djGe}&3(ev~m5?G<n9drg@YtTjz<s|yy`s^!G( zTCUR<@|I5!o?L3kJOdrgMo9M%RM^L;Ke?FFvk1Bn&uON9VlED%VvXcy{oI=4W*Sl= zPXd-d!`rb>ILc3&Hpon(No*c`qU{&S_WN}inxpUy$k-T7dk{-aE5pCCFK+DWMoc>h z-!k9olt7;@gb7;{OCX;`ai-H~Y53=_cAn_Ot22v~Uh6H|y+wFMazVb*{qV?kU%%Hy zkd>xmMZ<bw(Z$rHSN<=T`Mk@l_SKHDg5LNk?hK`Tk^&R{VpSb9s{1s}?^xVR2`Ll3 zm)}yoQ`Gn~Zj8GW^qK)2GvB(EBCFJC7dS>_zfalgzU+2j<Oz75f;jE^xG_LKdjri- z_>H(QMck9`5+cPtbtccJywVA+AWkk?>Qdj9?CjtOy{)`*nXK^n0$`ayslJ&khR<sa zYIGI}LKm7{J`mbAC3sfYTKAkuU2$3wQU$S_WGN3ZW*Pac(kT+s;<Hj3J6w}r9zcDt ziqh%^FHL6b(G&aLUsDX5>-B+r4obK~jS^okefF5_Gh0*Be~KF&WTyN&wm*(;*LieX z%}lx2Zk&c}eC~Z;>&)*RhQ0^Pt&-o?58Y{dE_+kJe{^}2|FYuwmDr0c68(Zpn@G_N z27Ecuv_jj{$r<7=jv%)D-dSq2v{65uTu?mlK~1L~{u}K^NlS~mfGu@6LK$t4aH?uT zZXZnb<pEd7ggWi`FpDTC?$q1zSiqc@OVKFGXWLG;SS8s1sNDGmnQLGE7JEa7z6Ug^ zr11H^;kM+;()~%Q5+_cXK|Gzw8kKAx{<NU$bHckc%-f_+`?^&@ntOJ41fiT#3dd`@ z|0|_GksRx=p!2zoJdu>o(J6!2alM-_)CNim*2bUx3YQI=Cq1PMnlWnc3ZtHHEHKd` zn(_kE)dKf2b4a&}Y_9pbW<H;t;<r=eg{gELODulcI0y&<xn@<$h)^pMe#Ktqfj1m} zl4aAl;3gv`b#Tvr8@e7lx*u<U{aer0Kq{vhJWJhyl?=n(tzzVDU5bubgZB)i@T1hG zIX<tv2#M)%9Q!J(8l&rabYx=`;pj-Ag+PnJC#5wY6LzU<TNH7!7zlh26F@HxxmYl8 zmCvdvQRC1)Ow~VMM77dvPsW^BH9b$9!`o#>n9Ddu`Vq0nFN2ya%PHo&2&zfE2F%eC zp%Xh}Fxo?}L)GB>!V@X_*Ryg3*9bso?3#GF);G_s!~v>#cu!<skLTnDe=40+)srgN zsJZsEo|(7_J$d7mEqvAud}|*Us&9t}oE@gbv25C05%{gCYJ++>V_npwpSL5TDksl% z3|GcNpNm&q_F6uUoEW0i);<0W$O&P%Y=}_o>wrmln`9ySStQ~->1JtRTe}Yr&dk}g zfI-tv@@N!d9I{e+5YO<#U1b!ilJ!(J@@B5FsZGY?UQ}!K_-NH~36*}<8m<S=Qz0*^ zt+sj6_!HC|%AQaB82D0J2T6p{@ZB3rbx=7z2Z!mBSy&=^=fTgxFvgw;O3y`md7BnA zWD)_wrG|KLOq8ECm=)_CtxAHvO_*E`dhbVZIs76??m<!v^;_sF<P7dV`!shEGF+4T z-Zd%`mQnRWk_W13ryYz}kv3p@9O6`3B!_#lcCSV$-iRma#UOf<B(mGh_^CD5fpEIk z6f8(H?b?GuTce!KHO41F5NZu(cD@VZ8uxCp;@J%iB3N(FJMiezl}!fEB`^y(B9Y9P zole&ZZR^V{!{f!Ko{Lr3!>7q>gq?TWcgm7YYPEkDN2F!$SJ~}4nA-eCnB&FQ*vD>> zDDLMP;<<O9+niPyT|%q+xyo`Md_5Yc!s2ICb~VIbgn96Vamz+@y}8oCh=0=XrQk*( zlseKXt6WC71I(<c%P1Q%<gZ3Mt|S5POo*Q1)6__o)Um{CHIo1-u8jvim+~uLTl>90 z`(hIYRb3Rmu9$@h1FWvA&Wqlf6_9<iHhcP8(qW(Be;i4ZG^;MSD-RoO>1%2m0i_>& z+eOJIEW8^`;s3a*A&?*lTAobJuv~n29cdK$Ufnn^<2(rWPQ#+bP+<T=gs{v7Z6MeI z*3Y;QN(g9U{}O}XoB2b`eio`z8OgJT&h<w6`X|iD8txuiM$^Jv-tY5*ulJz{8wi3i zSq;PSfWHn;^x#IhTKl3QBv*3H6zVBhEw{fsTCVUQmz4=ex2&Ce&s>heTj7O0ljHh4 zWP;C_efplPQ@TyEWN<_=PnC1df82b3VX7*Y`;W`estf_NhmXF{s>Y(*Cu8vH!wX5z zZ{W50+)6?6%-)tS34R4^&gKV<-|^Hw7_BvgO)WnS37Fh`)l853v)6QTmTutlM22wB z`z)OTHFF_)PeVQS>z7AL>TW^rRP*nHqUUNb6J=nB;s&?K5%<?)v!yPwdLus(<;t5z zwJtg+evFIDiLYL}TF)5D1xb-vYfVObJbJE$M^ZUK+{Pfkj&U>7+^dCG6RwNa@QKi@ z$S_Uc!?&2Qd6JiTR^{^(CoWg5ugeeg)jyu_xyeGEJ;wr_>RR{DW*#bhT*zDkiLXS- z)v9_6W<(uT_5D*zW^2h3+%~q0$IaW*;V-eGPSC59rV~rNEIcP*QH@V3TO-9GrjL$| z9dg0Ow8}HM$CnCA=PJlem*saa#7@}wb3ovexRt}+xsA!!fl}{G%zPZ|)2{aRHQDdy zehyxX+&n0EbB+F{bkX1EFHWZb3Vq!&--mfb?gw0m3@L1hdIJ;%H|gD~uk7ou+WPm1 zFQ>TQP|0}cW4F{(9#ieO+wxe%+2`VcfG_;Y_}OXgE=jV(r-ZHJ=#O(rSYBGUx_;Y= zZOIdaiWekm!o|QDlGmF)pQaYWw7eA2+Y>tqr`(P26k5$Eo;7PZHeE%4?cxu#R*svZ zOb1fLFQx*gPTz}<8{vg?1Tze`POGEN6d~IV3*IcHmDTnXK?a*W%+@*iyREBkcg7(Y zqMbPE`o-3>g+=Eu3exB@H;OAy$O#JHq(}9Jk0@vdPF0_@V&(w%=8()m^Wl&!VoY9W zGPaham@C9t8P>g^O@)pnmOo}`s{Tr)F&TSqJ?FtIPwEXDvJErVWzdWVO^Rj;{U1bQ z9336<E=(45PwwJt`vZ+^AJe7wGg0+^#!>48G=FTgV3Rai{otS6htZ8-CyDMITJ@O> zAu<$U{C;&<0>)*EA=kpu{5`xZs>O_Jh7ar7eQBkYtIEc5nXZz+&Y2{}K~WfZBhMsg zZ00%KrSeCka?Cv`S<k+)l~uN-<wcpVXrB?|Vp6ARV~O$)4c5WtIVqBFr2Y5bJy$}B zaPKZbX|&|a3og&&A!KH@^b_ZcEnX@1u02PL;`P_#Ge$xdU<qRSMryfcW7sX+>;!X` z<fw~Go7taNB7@{wktNoX4M4S!A+wGt7V7(IM?q0_PlW$N+gnD((Jg(vK>{SWy99T4 zcL+APyA#~qLI@rlf(`B#TnBd#?(Xg`cXG~i-uImI-u0|?Kip5OW@@@?c31E2uKlZj z0n!;VHLn6}rB&JWYPbm-P7+66?Ql~u?fU2@z7n|u<!7_o+_xYgC@dDabsof0udssd z5XWelQfbsy?`@6Zo>Dpm9ltEl3s{Zm=LEy(x9<$ISZWNHO=woXZ+)2lQ2)`pb(PsW zWryZqT1C{|l=43N(!yw$ca)9Yo<9*0lveDXU~p<H&u5cTHrWAk9<p90ilP-9LfD}& z-Nx(%1VGSwP1CV6j?YxIk&Rl=MrYA&3n6i?P$C(Zz<to;+qOG*n1pp_!?KO(X9ubj zo+`Df>a<}WTD7p|h<KLWIjGe<)44U7aiXocHNtRybH5wcbf4b^fiZkr=&1r<I@@F% zA=M>0(LOOe{M{Ciyw~J<0j26MK&fB(;?{}LMaxDE{19~pb4;cR=Lo~zyBbf~IbK_o z2h`OR7t%zm)2hN@`03#<wSuC-fNMN;s;@gbx27L$O*A>L^I*=@%*1n_F;s8KX419^ zy8U$H_sZhr&#1UQ6rL-~UQRIATs%Zo%n(Xby~?Kxu3df{rzE@lz3OJczoK_P*&N_a zAx7zqgsey{o`{LVWacdhc#o{TLN`)kvL5JpK6;zvUM+k4L*cnnF+QW`oUqXb328(a zB$hl1B|EeYH7k=M(}bg-uf~eCQ(cFw*X3)C!5lYfwuGc1ve3#aa?rz5P0;F9o~U4k zZfm1h$+xI%f<I9%7<isi8Xa)g%!r>K8EB-m+aZG^+jd-;IL?@{6IXZt`iVP_R!1lC z!!<z3l@z4wXzGK(^La^H5oFYEvD~jgm7Zw}4YN)N$M?ztxq-?}A+Dj3jM-LHBpoWU zk*oa);40$Nh_6b{?6sXqXdwKoix!%m%k{PE-4KuquT?eU)jq(n`JMOkPLKCNk>`Vb z9c~t={dZK<Oc(#$EgtL%f4yrN6JTlVT%S568R|rjSQOYzkW%0Qb43UFEVh$Iw<>)` zLmH3y@{?#_A*aZRXsek0vXk$pztC%O^O>t>_9JHxBbYnbMl{WoT{u!#Ks9-NNrr@J z&8couki%igx@#2vO@ztSL$DYgx+GNe>}*@<7^CbHkDMVrh@015IQ#?0<b~F=h`FJ9 zOhl4yIp(&=C&=;gAwtxfvTUVYA}q}mH&z3>xLs~hF=~K!!|xA>kG-4XvWE9#(p1bS z!)#kMx}nCD#$B1Lx@%Wr&-#{6?GA-C`IV+#A@6crVl1}$ZVB8JM9h~H8h`oGW`^15 zKe=ix)O`=x)?W`SES|HhbkxW0RIktX(`CQ8|A({x!+i^cy~AJjLeo=7`wzH0YY&C{ zfzR<}eYjWsAvO_~z8%B$OfB?xFKB;d);WJG0r!6ae=rjd)8MD;DaZToaQyqIj^c)% z<<2*1b(c4_$doo!FcA!hG&a!@se#4@{_AM_bbrwA%4z7S&i??!Q3xTd{j=eom?g#o zP5$E2|M3R}7lN}<;(H|7zyI^U33g`4SMY8}iSb{%{$sEIZ3jlz5$$3>ZGpS_{=4u0 zwG|))=HajUzqkMWA;EZlkdEm9H{{>!>K)m7G<d+Dt2UVa>mdK>fUqg}CWVE|`s2Sn z{!bU~!9&mGZ*vd-w}<@yIAmzpf3S73wNx6vTcZXXqkLCU1kj;K)x&BfSa!cQdhIWk z9Ggstr-Rn|s3oX3Zm&MH(jdl9@B~7-H9*gJe33ZRvnDA*7VBA*-}g;bDZzv2^+Umr zH_2u1e*TN|mbd8n=V=(0of@$hsJ$!Mr&8n7(S``I&3GbO?KQ$rL|&&KST<a?MPk&3 z+g+oI9?#K%POzX3w}*)&De>+V_h0GokR{3Ob*e9NBR^YYTKSy9=kKq)dy9;M$++N~ zjzJ^l>3ZVO+HSAna%~oc<#XR6ki52Lki!j@xuuuSqj)ykB_nHd>z<n>o|lHbd&;-Q zYE}nl*Fy0rM^XI)n5{BY;5>8Gd~AC;S)PV7>$fiC@gR~gJJU(l{Iy2zGuJSwB=ed+ zcpk_`)Q5RfVk0rtsR}Ssjyv~}`h|Yt1j{9rYqFU{8pM3{GH7^xGVbfH#5dK`2HFCX zm$(~!-`F;H{k3ReOt-Tbq2NDmzp85v3Q3ZXLKY({D+3Wwi?6Z>7+|C=(QnrRIva)x zRNX@d3XNh^WeNo0G%C1=UUQ;Sy6hjP?7u~fWb?zhG&~Ol?-dlhU4J_m#BMo#PRMv$ z;HpTT`1-hAc{P){;6mG$JLg(?!)OP3uWYf!7PwP@vwsI5@<`dywO3R9>7!6T^Z*6B zbfcx{R1-5y^qq@45*A{5Pub|22QX5^q<nc`MclBI&nOiH43X1kine>GXE_A}Yu4zK z4~JX3%)?0YM)#CK!r4RN@kJpaQyp^82^ud9kSCun{;+fwHYx?Tyua=@1WT7FgQXf> zgl7{o_9F0yY8(jmN6U?FFaXVS6+2bg*u`yklGg%pKXck5g}V>a%KC^D4D(D)<nxzn zoTGL5p77{a1K29#Z-Olyj`+z75pXPx6komEawYDb<ekQ^ytjejQYW3y>{umDTv6?f zQSE%%-gEm;OR(*R?s2`&?z{Rwh@w;C>i7&|m`Kh<T6)_pG}g?f^x<F{93z07NiWMh z=WVP(@K(v-+6VOECZfGzYH$ygM2fw6e($?__Z;!lJtJ^{y|f-)3b&;iih#=Ys6+{a zmI6e~s`;ndj~BE)?Ij>oEgi)l3JhrHb7?<P;)IsCCk<Ce5(PuOTC1PLF%ZYJJ)5?a z`Pv0%U@4s2mCZAxt)7iQHTwz-izZ<H_(VP}9@*>66d<^MZrNA`08IOeFQSuv62OAU zn8-p_&e#v$Gl+2wSwb7Cd!w52Y$dw3+$PMIrRotQCaCHAzLcqLIm|<Ze~avA6r}T3 zR46E#pUW(9;_}1h8C#b7`iJqH)H<oDOWUExggC4A^G!_aNhBM?v1SpPuydnrMR80t zy|1|XH2WS3pLv36sgK(z7;NJhA2M+XKw(>04PAYCBJgbB3YDcsUKHdad>l|nO!A#F z+5?fF#MSSKCOdOFc(xt*v`7k8xitAy8{3bu4SF()jxAt2EjYuJ3zKp3Cjx~}GQt$4 z{Kc6*J*oihAH696#Tvi)aP^eI#GsvkLZmIN2x;2W?RF9=xBuMNcudnxz7oN55B9@( zs;b2(5pQF5VbL~TrMQ&z0xOCkF{<c``CpkAAHerQt>B%s<xw^vBV2!%UTS<jL;w#= zgXpz`v#YYHa3&%b@2}_*5>xp!C}zk{C|Sb{#f~)M(|+iAPas<F`k18O4adwyDnP90 zShM<I#=S@RV76@VWKEJNGQ4=0i=C8s+O{{9lrCVs{KXi~9l^1gMT{XcXX9XdpiF)> zUv<bDSztX$6*JDAj?G0KIy9CvAtWs$ODK9##OsmLVlkd#M1x9(Gi{2w?wco^i(=iE z@c!>FL3;NS(EEuG*a02INJ?+Y8I~a=5}SG#E2Z{Wutu`=A|~b$dr2F8S9%o#61}-S zY807Hpze^qn>DQDx2vtq$m|-4?o5qPK%1xHF}EV!B44vO_Osse42|*7eT2ZpF}5C+ z_)P_^<N3PM@5RKSRwB|rNO0R_U1@I-s@QSXt$e>u&Si(vCzxWc-p!H^`8h?UV$&d1 zibLeO&<e(Z_IpvsZmvpfY|7Rux2No&oL7%Dl<sixrwUKwL*zTHZzDQ2dU8#sq4-TI zf1&$_d=Ht=8I7R*k5v^<c|Yq8<g2_6`z7?$>}uUxofTUfbCucK-m`bwOJ7JUJ^sP# z8Q;0nnL@s?-rQYw!u&>}XM<)Ye%mSSohfJqxP}!#J!JuvxW=CqKCnFJpeZ>GIvhz1 zA3gQh>sO$cckoH{lJ)dvGN7XO8SL`Hb@r`Qyvb=xkoBl(YbHh=EP7dH7I_t;?knuM z9_(M_T%U!6_Yq>|_((-@&;Di{dwTk?S#Q6_*k=&4AvS5JYbDAf=-TVS)-KxNW{G{% zpXG-!+Ra$YeE7KaY5k4YaX<P5YaFS4`)c#ix{V}Uja!5AJVw_0_tXG?VX7bFcYU|` z8|Xf2aG8+rbq6f*V|Uvrx1(IGAGfBiR~T9Q*P)6o1DB0Laiszx<6#~N`g4HZ43g4~ zQ!^-(G{zPC2UdJV3N<7B=>pU{-c=s*L!{}jN3I_b<Ar7?=cviyapTb#QvP*f&qf1p zD9(HGSiRxu-F5kGGRN~#woqHhsNGWUh?C`OmzbjBzCPb_)N%9M`_g0O8_>#M-Gz`m ziR==Jdm=LUY`@12S5A1?<6|`teJU!Mn+o{$yiH3X+!8I?LPtBTrQ!=Jf@+#}f%KNU z$Ha^nmP`(9NB2k3X&^*3xL@UG*$J;jkcAC>6N;_g3v;6f#qIR3e!+Ab|KU4@O%?iK zOSs@^u<?Fkfkr&;f((XyQfMKC3<h;Ef{;lHcg-d1<90fRM3(jO!zB4dP;@gi{RIX< zb)*gn+tJDe^+_g;vmJlE#>BopJO^GfEVjOF23)q^F1%d*0DwfW%duTzP!Ou<if)vS zq#vV}Dqaga8gJ9JNhJR8^B&XR=li!1AN)BV6<xo6Hc0+;@tqb|<E{q*GA14UN^B<L zZ}oorn&0iG9xVqgUTJAF%dy1Xp305KT$7(ZK~&SEM)tco?L*h1EE2IkLYRMbsx2wO zGX;cDxJ&A5l2ZC1no|F!L661!sU^P168>^z8T`6qR&{1bwr_uc72Rw(IFI&e?K$dx zCp$W<3BH|9l45$C#|(yK@lDKU=lcT|jmcgaDzd^0!oCcrnIhw-u@;wBobqe#r}*w% z;uez{kGqTFocD{rhZSL_;ai%=Fg4_xv?5_at7pj(>9XJ5gu<P?iSy8Rl5%*G;#4Xs zRf!;wOR8uP*?h<&(Iq{f<}1)c#CIyb;N0ae9i787VQK)FkI0Dx2rfZ*eF%qh%E-1X z-7N!b5@d$U-od$CB@U;h-C{&Mdr149T~#_}YULcOA{m>T<3F&`1)nskvhLf%FjxFB z!3AgSKT%1n`DrdAT1h5^j=##8wV^1=A_ef+BFAKTTMrf)6{vdpLH81ZS?-h@atauY zFLh;;Os`-DTfp&!^JyB{>DT19oexYz3J#gbtWWDwHLt6U7Zh4Vfg8>_gtyuA%x~Ij zkNEtKu{MXDW<R9-UQE_nJKxb+*S<{eBXIP>S+wh{mL^}xe#e{2O{0=s|IU$5%=W#T zy%-yPgZ+--e5Kl|+jlCfcH^bPnK<Dj1w$_Fq~!dOzAe5Od9)*qmJtNxaf{_QUqoi< zzulbJXrtT49W648rr2Zs#noOtcni$EDL*BiKfF0~nA7|LC^pHyC%iMbyiz{3yRpxd ze%tPCPQTsogwuJ|t|?o&hax-EVMj^Xp*ms#<mz$=V`R8d#ggC_9**V&+nk^F{BXx^ zIDW_z(DCl{s(`E7vl@fjCE3#PMM?^r70Ra>OWAWuxLDyKKteC69BG1NHdY;vPFQ9p z15I`vrR?Q#fFVXxYx?GqSUzNp1t3MO?a|#d9RNU69mz!?{QW^oHgL^87N6Cd{D?iB z=hR4tN(66n=%XAN>j}=_WB&FjY$5(mlfs?J&B7gzdNGVaATcCo<=j=TMUCI?Ip%jB z6BjQbbAi`5TYJ30LHRKXiI&*BbOXtmFsH$yn%{fpj1$3$ryE?Hy)3;fb2#ij&-%u+ z$#m+@3#x)ZXEoUjFbCoa4}?UlS3l7w+q$ckGBnI>*^W2N$z}`fJw97yRsf&T!FevV zBt-gH3JMA*W3A%SjpT$Rt+R`?M|{2`D-GC68N)*dMJ-Kc|BB(z+Pqx=ZMg3YBC`rM zLwt0ZkN8+7&w|AG9@bg)*19|!o|mvNnXOlU=s4F1kZDg2-`YPH23<pxM<8#z#&8=C z&NDel9vTmZ=fU)s>dy^V_K7CD_J(7Z&om5TmW!Q;8Nm4vtC63`_Y9!9;3r&*wOm(a z9?V7b;)gk*+TkeA=oCTXL%XKd@*W-u6u#0_Hw&hu)4SWwJLS?<7ho<<x|&;>F0*$@ zMq9=DsXqHk7x6^~oU8DbIk9-{P(DTXF}L)VZj=TK2wYjd(1%*`?B1?t25LCOS^Nx! zz=;JT(We)9+4-K0rx5vB-CrS-tKXV>-{yimD^7aj6?Y}<sWtsP_nv&GtNUY}HD`DC zmQUV$`tS@j<8ImLi~BVWOI3~knL%ss5j{@aVxotQ#=CbSu;%%Htd)Jn49aeJIx%Q6 z{aBy!URGn!?8>6ik_lKdDzUqoSTlJteF#ACLH0CmV`E<}465EWcpFH%p|(Hh5yvrO z*I29~Nsx*eQ%;bbm+B;P@*>9kj)l$riD)xHpuIMzs%|7@Lby#-zrXD>!<>4nrqyC8 z9W-aBh*SJU6az=tHK58vf$cGPCX5{Ca5p)s>QNn(VQ8QR<FB5X*wiHhqXl@}HRN}G zIUE3HwZ#_rnGWCCrfl*$5)2h4X+`O*&%#<gr=Qh@O$SmGVbjC3=`o(oZKoS(ImKNt zpX+njrdO?&amK~QCXG;deH5IF4-4b2hGZEIyG5994m6z{;kopSi5*T}WwL*ITyXO> z_N+d#*s%U(G>k0$CfWx%(Vy??JaqM^P++XML4gq|TDdhuE^TX4#IaSxb;0F%c}JJE zmM>p=^T#dj=h^rOPRssl63iaVe#m`-tVpZIT7rIg^!8JN#;>kyTF%S!0{*QL4R*|t z{^6A6E>Sx2UX3cVNKIIa#x%IdPY2=^tP&ZT!U$vB!}5Ilrd~Rotasn^HwrQ`<NlP- zf6mfmw&Kn}TIu1GySNG5*8{xG-b#yYeZwP3;cUu(qB~eqVK7V|B%lrWTBv-LRBbuc z+B2!I_JeEb^r_7VzK&2JXTDo9*VKFgb@@|F#OEj3J3X^x+x_cAI{>HcEp$@ZcM@vR zn0nuez^Ue!)9#PA6>Z%G@@MDix&*-7@UeJ~FZNi+&y)T3<6gY;S5z{D?C8OM^yvy# z;{g!n))voE@^>G9hDp5kcH`)m!SiMh(u8D^o+d1eGHISVcf`nBY3jzQEB;pe(mqa( z(gIQxU2oICpl29wyTqwGcHBvi3)0-9bK`6@6ds4XAvDvBw^pCUWPgOhEgB=OUie%j zRzXWwf4^F$>o$-NML0fHJnS}zk&P_iS#-J28_+e_LqVnHEd*<xrK5ZxY+IRU(N^{B zLh?CIdMz%{(ansV=%i$fAr;(NO5*qQ?GV7$Gd2SYldg|Lbm2<AWpN7rXz`ZhS2!@P z)}Ol)Hj-*^z(cBn&ac<{_LYVRT!pfw_M&5(T04icoGhja+s*7tW<K%qWUy!(e!3-j z=dRNzdjQ81vyI++ifou=P;tPfjxphx&^ew*W&)zY{oxZ=8mVz3>1nsSm~4~L?B@E& zj4+L#FbArVMm3e-U(Dc@Oikb~WS<fA$<-^2bumqquJ_IX>@|m^1vja`C4E9aL~mzc zPY=%sO&?CVwaF5HvTJ~#wvL`r`A*)8J_qCZJxHO#1wI2<|E2IuKKdy=%(wX9vVgxj z3O50Dp$z??k=K?aGJVN)ukiRbz=X?d9&hG-?4FlI<wQjH_+J^Rk36F6fg-UvAHSZ4 zVVQpxdAgv~(wL)OLX<JGIN7Q<oP1v)0d-L1P>^@&3-0|Y%$Y4S9DC$DmZ6HU*rMZS zwq?vv$!ti~5)BrVY<nh|t1j{ICU%MRrMty#y(3v)g(Wm8tU4Vii&19OV_T$UQ(2g9 z7~zm1e7@~GqCa-{-uQh4#Y9>4qIH%Vzr@T&K+>8oVV13*@rFK1>Er{S*N!p3Ici4V zQq%!p#WEL*wZZNcsqLo5G*GIvL!kCcPKK{bCJNfmmX_*1tP_z+Os*YVUNCHjE}t5L zf8%q0MStM8giCHvGm;M5i_bz2%w-aJKO|b~dWf4Yj~gZHEoSaujk{diMiFIFdSXW4 z=2`mTZQ@KiGq(KLv+%{V#m1*xfs=?!UY&b5Dnw4(1Rq^=D~7_5m31}tNa?Y#kv~L2 zR<w`Kb7wBvG>|!a9O*k4<X10PZ>oe@nEsVNWHNabM>2a$G>5>*ZfmB?bL4y^z@L^7 z*)aTp746}av3mpc^YEZYtr($2l3Oz+@&||M&}9=ZN$3S>=^&jDDbzCxwN$}0h86N{ z-Fp6I=(~CJlU(mIAnP=pFO?$W^G+5=RdjQ+w+(DOUWyuR5|RD&G=-6H^6X8jjhWgB zvsI9eyKJI>+m*9qmgK6<i%&EQ6cxdTKY7xxr4vwm846kN*gNu|<F!!3V@_eqtE&o> z?cQO(f`R0Lqe8v2R2Fu(cX_#&NMF7Cvtr~O@JVFb!$rJxZU8pfwxhe9!W@Y*O|RtC zkcUNwripgSh0L0lX=c4<9AC1GfsQVdoel+B)CR}3$Qwr;gXmFuM2nv@zMbu-vv=1L z%9I}Dam)a#-L9KzlhYliNP#fXwM3EC5_GvG$@@+UD$f%GrFCl8IJwv4)~yFIbh2Yr zOQf_#@L1(>_;hZ=&2xr1xdJD~v#X1wI;(eHj!NB4W+*}jNo<N3G(wiupx74#>RKOZ zu`KMg@1P?VQT!-bz8ga^Tn;Nr`ZR+Yk<;R`I)u+jg$5;h^#pc~o-a-N@|T}P7oN~g z7(&4OYIxKv+U`=eK|7Eh^CKBsuE_qtmIv$VXDXRDjO0CCv#3v7iLFD6(T%KfkDZ;& zG6MF%;<K&YyeXBZhQX0_{R8^O?YGxN>z$+wZ&MSMn%W-nfwrVAhUyn6!oqFS))KC~ zZa~su6Mm-HaQJ=goM1YzM|FNQAioiiU?1y!%O#u{H(RX??%*)&7~N+^E>M`9JzQD{ z3~nIJORGtbhzU{fjT^6xM#@F+9n|3wn>f)XKbI!sHlSwuED>#?L(n1XnFbSupPG54 z1w{H*S{rL2|0gKYpItnt)6%Wy@0scu)lVBjXi~@#g^<Ej@CmpW!TIcn2t$!xWF}@8 zO`A^kd-ZX8$P9r?bn!-VE8GQpdDq3q8FGx`hM>Wsc=@73v%wvnJ$`8_{6x1MP?pK| z9YMtuoR(LX&ZuzOzMHaD;up`n1-8Bo9(Lo#WI~?eZ%q-(u$*rDsKpE_1;8NC#)kRj ze$7(6kvdXU=!`x)bMAV9#K~Q>(y-l}tSXOG0#*BMaXUbJ@X&7!bgVLtjA)2lwsxY` zWixmdim#$li7`ZuVPC_al?`<owv5pCVOtgwJd~~t<s?Uq8&`Q+5oQzwkiY5LC(HmU z@%D?>!y1j0qjL8T2k#xv<s|#|CWR=voj(tF=;%LOlR2Iv63_iPl`Xf9e9y6YUO+2j z4t{~oPfG)ne(04ss1*eDPy=OO-O*$f`%1mKpG_Dt5b5aRvIr^NYi!>Mf${GJQ_ZBa z0GumE8&81+ZvHRFEuwk&I%B~D-C}OYty#Xcj;)ENKnLMKGj<ia_;*ld;wp4b3E1iS zOe^jFeW&sAytSn96`H>_uuSPnzl3b`DIg)6#XHmLU8mly@a9FI2X)0(F8o<gaEs*r z79|Ysw<|TcObua-CD(Z{>C2Pw)meQZp%zy1pYXBHFFd{g`mZ!;iZjD;!_H%#Jz082 z70knK9CPxF`N7=cBJintag!-L!CSK+8Cu63_fe-EVf6&wtkuAvzGbo_HrZa~MViRy z6r^V6Nvx4Au%>5iNi)Zc*70o)YJ3zH!@boF_=YZWgT`GYyeM1mR?<dww6UwIb7jqu z1bcBZMY-UlwiBko-r5v3fn-1BAadvTk*b$(Uh!<gx^<Y8D}#IRH=|0q)7jO|>?hRg z7>w|4j$wVL>eJ$u2{S6_?O?aP+Rx#?5pj__u{*3SwHBJNkRLDLX+*Y{Oif$6g*Kk3 zsE`=kCqVkId8R(UTEh{nexMTYUpv82NGBJq)!h)z%g*2$dM7=<r%0G;z$mNrP!fcI z_0a`z0t#J2Wjl4BN-3$g)IdglB7NV=B;e`j(DDRk7Re2${n3yTnmXqu+Hz<gUhe4W zyOQRhbg_sK<+wiaVE+sWSts%qd9vK{p!=Pk5o9|{_$ci*TcB~W-pLq#H`5a)IQA>q zUkv}l^wgmKl#7rwy<~lLiJRqQH;CDE;}e=l{!t4i%J&npXW@a}C3^6(6a&2Qa|-D? z9D*+=gc!%1+ECOwslNYm%eM3flo~^)$s1bTa;M)Nq~7aXt_S9x^fj%61qioSim+5T zf1TvIt1w6OpRfpS4m6`l8Fl(WDhP`Q2<I;I$;BYTB#yu%KfaeB3gcNepWL+ce(Eoj zB~wZzDby;dE4E{lUFHCc5H2}>3o!AaXGpjoJ3WHuGAk3Np3&+x3(%R4cM#&+IlpY= zBNsHwooN@Kn9yf;s{WnxUZ|WXH)*9^A0_D>5s5e2MhA#!$+C1-eM1kvEvSC+HL%~G zl=76&i4TFu{vCjRj#WXkZxKnB`_Ry#$>x^BO{b$?+JAhNr|VT+A6B+BMxEAzeo<tW z<b=B2_tq#PoGZW6HB-WF@|UBPy|-&=I($$+ET`4er0+W%_L<?6BVs2)B6RBjxes?O z(TcY|ldG+J{!9EpULw7(WI(}vX>%)ioRkCDkh3Ro)7Gg1uw1}}2O|$IF?pqfla=g) zq~_(^6fgzpd+cG#fZVlZsTwRHjXlm<c=Sa!=)?9p0*^_c8x90LS+BqiIA7nQpy48q zhvKz0bf4uFq1ybbniOIYpOz@T0nnnC)GeZNo%~fWyQ)IlPLp?>0@+8v+j6_;E^tSF za4`dOmh<D6rkr>ma1=>%vG8EWz#d|~{^PBJu}Y8^gN3Fz2~5yj=rpArKSX-n%bho_ zIqXp}wEY$kDBeq516D~xW_bMWk6swUD<?GH`1Cb|l~h|N-jdGd*sue6Xlb0^ty=6- zo>&C@4&j?e`Us2rqvPCed*8;vCx1gc#jtZb??|a}U?jED{oR6w81_%Bia<g&w=GFD zSF!gEf=fB(#$^H#wW9+yqs9|1H`OZ1haJ9xhW7bVSSxhNl`FRV38ZtEr9aU4B-`_| z-1;Gnl5hZ+@as{b-`*SLQ%Q8wLg9nPdQ@<3qyxu)4~bmO9bwj7*aAM+VwV#vSpNR% zP3*`F`F$m~FX}g_^Jy}z$n35hyHv50|Ci_D1NcETgOfV@C;J~3`kmBL`+cfat|uOA zmjDj&5DY@?B{DCnaw1@jNdi~$SCkw)w{%{ORY<G<>&xY!?J2q@X1>ye`UU?SJ!|Io zXj#5QBfD{-IQUvw4jPxa*>8X#$_32^)FB{X@dSOf!=!qsF}p6|Fo8E(KP#Ch#A3)= zwZ8PpfmN_k{wWqSVh=6hq890}j@J?_SQQ6r5v4;|Re42MxAwHm+%x^B=rqUiyl25l z!F(8X3+UsgCFN7;!m*9&8*oOx<H3Fq@AP@lgCb-UeIAKI>x^_D{GZQxr?4lLQUY8J zZ6Aie#lObZ=X#5Oo`e<LJ@BtNw|w`bHmWzynP&<}AF67X>M~{OET(rySsJyqTBIT~ zR(+ZnDH)W&do#xtD-qdKR9TDn!TE5;ba_Z!eMTtQIz&N#;gRhN^fc&Hm1Vz^&&ENe z==y{Xyz=4pa?Nv?@O6s?2{kvl_=4{J6q+2&8BCpH`zen|GUX4QU!$S00_A4tjfCEQ zd2BAD+~$zV-P4rI@OiL)*Ersw+(OYM=S@@k#f+WQc@cRIyfA{Di4v6)@iA`22`?V! zW76?eU)83rR%`ZPgPoIMd|Kgw(o&$jkLaXQZ9ag=CRys}&=CDvpc;?!{>JXR94XAQ zB#jiO_Q~xx@8I9J;tAF1OA+edZE7t$>-zt}QLD#QXwAUO9<qPj<d<Y<(PL_)LMu;3 zKo#K^PNYwWPYeM8yTX~O1kxxuofzq2*?!iqNrJv)6*9T*``Krf-y1(;wjfAS?2{$@ z{s7XKhdC<pcuGo6=qJCjYHh5gll!&Yrmrx;sJ8F|dzesybN7$Pur(n@NY!UYtN`!= zb%{VEF#NP7Ut}H4d=%5vJrCwI`IECE3-!<K$b!fkY7mibs&_8a;lKYxCUh}=>TVyu zS+BO`eb>-Bef>eX^!$fH{+U=xLge`D__vB6xN1_OlOI(ON0zfw_BfwaZ6{5inI%IX z<8X|wKktue_<cE|p%haliAE!Eh5Bsl#0YbuWc2Z4rY13A!iR?f;^QEb;2pZNx}%Q| zA8shd=RZvT$uSTj-5BZZWxZrtQ6Sl#@dC0CG~yGC8qndkKPj6ZS_ax?=M0v^Z_*Ud z+LsEXD9{ufT=-`GNiq25;5{OvehHGX*%m8gN^}iL>%>tyaLUcB8^pEYXji8?>d>q* zdaX-Z7c<gADr}fJ35h>56#nA7W<ax-%tN)UcHGY$m9j&z&ZEJ(jFsAL&XAbsA&TfV zBD{!Cly2oOmfAO_1tl5VTx*m^m@GOoxH#mb!yOfr|4tgPVswraI0ZT+IX;boKVcVa z^QgIDyol2IY!T)nsHy~S#!c&9*)%+ckNIZuCFVyhg)pCMX`c^l;_8=;=wXm{>X+@! z>ga_BDj~Mx#vqf`d731R%`jC4C;O(FGa^4{d-ab`xx$1-0<);A9iZu3&9id>A6TE5 zkY~RE9UPeM!y6x_#+<^bA{a64I-B1JQ5X%y5y1LO+iz2N466`}cxgWhlKURa>}Cw= zG8zncN`8mJ%AQYGq9^CS10_&lmiKp%ggs@Ftdt07%?q^8c_r(^pyq-!H4EssjPbnv zmoW+!4uvyVgIzW=E4E9V?&?bY1%xy3INPI{_9o$u+s2hpP%Cj|xdwRoU&bcP)sLT4 zoPNbZ1eKI}&)FnLk*q1ra*Fclx<<dnDU*L=%;;qAGd1M^3$>T6nlkx!*t;mEdl7rI zQLd=V`Pg6J`AMamT-6-X#lw8(8hU=2pS{Cr;2%hIBM+fH(X8)8KZ|9W4M>Mt)=oX& z9+f(Ig>9!2C`K;?XP!Ydw~j4mog%$rJ1rZk8vOa^)b!D`$qk7J_3gQ<=Xn%+C4p2g z4;>)_k(JKL7htg7JDs9VX%XCfX;_PD@=>-K8Si$yv8>^rY;^S2YKg!l)cBsHWqe;7 z>f;Gk<_B&WcqD#QzQ^Pu-Mo}e0m1+iU?}e8j*`vMg!`PDdZWw2fjGAM=N;OuB}32V z{BfKcD=8{bfzC5*DRsltrb&ec6-8GL&rWTv7rb-)Tc)g10oh1uBSaj(9Rx3chW<Jh zho*ZS-&~3rJHhpY<w5iqPVcPP(T|Q<xPk7|R~V{XdI8i&+h+=zJ<{Jq(4q<Usf<T+ zQe^g&f_9L+#evA4u>CX)J@biv4Fe#99NNr+IRs$i0B<YY(jgd&Z`$trv9;<ZcGc%c zh%DGOgXf(M&;YuIXJXR|@UtcD`@Q`vpUb;3gF@D7eQ%5HnoQ~5E=h>RjBGsu=VfTy z`w@HPesq^7$gU)7-TL*<qx<VomcNp)`C(#Kwg!RXQivBiwk@9I3P7)UhyzaLY({Og z(XIXD_$t3GxM|fp*>lQ1GJ^22<Y`h;SVdc)DpHhqdH-QDzrfy7s%Yw$lGPc1D;bJK za0o9BiPCpyreJWMnV%4vA^P-2JlS@_p}@PBj3~9{90;6EEY)|X`29eOivZcazcF*w zF-dc&#0)%Svk<u{+$^C(qMWL69;>#wiPHbwA&;1MjlW74U8uVRZ;boiJF(qLF}owr z``YLpXsJP4*;A3~sGB&|_SLb2BP}&}u4|}?{e@<}(6pJUod(am6BrrxD$Jtx6j;Rn zTrq1?J)U(saHVgi2-r*4`t=qoaE`p|i8q(&-c=ZQ@Q{z5aqEI;8h=!aATn(0TsrPy zHqLai3c=qybmnJRwZO+p>(?}NPt7{n;6H?tMmOFYdtsNp43y&C6|r5(P`EDK-D@MJ z-c$9*O0V8}4;DT)INYNlPFHBGZ0?lr2a9NcV)wf$ww+@xv>tI%D~0SXOeLD(cqZ&5 z5O&#QgjOrzeQ^@u=M|Cbu?e?x_aeq!-pkb2`w6k29a`~t={Y$uemu$UfJ3DY2M15X z_klj4(1JAGrsDuib<c=Try}u?)O5vMKlK6k&zezdp9l$^%)+)1jKfRYWgCRn@02af zLWugVZCF{)eD5X6q9^acQa8uU346~FJ4_Fv;0gIbv`uIa-rKL7lr3xizA9Ttv2D)Q z<DJRyW?aow*E^VE?g-l#v##Vh?!uTT^|kZxHKW~$I$|Un^%kSwa^q!P9cTk{m+B=6 z5k^~Ibnb<D0nf(}_Nyt^{bQcmr@o9^W)hd`_*({0Y3H{+$ae;l!EfZ}(8a%#q8DoL zzi|fZDb#k$t*l;3fxJoH&0eY7QbDZ)sX1)+Kkm%l8Q`$_w)w<*xEH7YR?|UzEq^4z zDSE8pCGarF-YA%iF=SV2-P>e{!`kVmSV~7qZVopQ959)Kvey$jc^p|2M<&J^cg*~? z`1~9_(ptEOe6Z!Dv$N3n)MoFoi8zuz;KJk)V58B8Bi-+XtkHW#w@>83Q;Tgqp1^6b zV8FRNhJ)zsC-Mpeu^r1uud&-a#0Fz~X{eJoo&8J#IDsXfZ6w<~nI{g1huA*zB-4m5 zZQ#wPdw)sACILjOZG?McQZ&1#K}L;03#q=A>2f+(XA}<M1HMZ#k)M5^q>UY^d-+)h zQ7;G;>D!aL)G8ZhlRvp>#_fwxaUb$5KXtA{8r5_<=Aq~fo?(+@kcU}4MFMQ1rTKQt zliagKd}N!R0-%Fe5NndPYPN6$4-C?)_tM;YHsL(7*3>!sy6xwga-^<KZ)8oiBw<K_ zTf09Sl0v^)6X1f^3&q1m1NX}In}$468(h~uxmUIh&&;Ci;YM%{n56DCP<@HS&WO^P z@{Hq@St?#SS`o_CX5~3($y*Zg%3~VZdJo%=pSiYw*`;dhOS;doKUfLqI>42PzZgR^ zkYz+0(d9**Ug`=EAl(}HDC5t*$Wl<VXhiE_dqk&#!gox(+t~m-kISju^2I-<;FXH! z0qZ+a4qJCvM?E*My{c&&P<iOQpifwPHiL=tS+zm;{7OuD?ZeAv8JV%*{0t1T*>b#y zZwES#OR2#7lhIno?bxBaDWIk8%ov(sI|H+g_PSy72_3eV>9Xp1b(y^@(_HOV5&pzk zQGex^z4$DE0X$t9J>mO9gSl>NjkVa*DL8x0RueB6KfJ=IPpY@0PYqrkm>S5_gm&Mc z$SP_t6<LM%coJa@o?sxMVh{{Tz?AUszbIjppl{T)wBbZTb2u>;*xL*+m?CXWlyQ3= zB?yWEq#czS{<QW3(<Ke7BL+Je(M}=IO>PGmEVobX7!y3<RCjjR4N-5kEan>hI>y7* z{@8D|+nz^!#}_1aAmbty8+`-Xktb*GLAn6X5#2#e^6bK+GmIfMQk4tbo|c>8Dv<UI z)X<lEOvEFDF5Zt|u-L6>$fCcu4fPQ5X`t=#h^-b~|Lnl8xN^uN%|53-`I~9$P<!D8 zpq3#Z{cvCUD7&|}H;mF&4xvg?t8B5hi|7aeQ~72UXW=~V+&6mIL+rLnUm{xoefAVK zrzc9nRM>Q;|Hfra<}=C8SeSvT_CuB)_*c=<l6e_~YeF)(=^%(`jIknJL5{rFbzH}# z7)LQRL(bWj6TBQ#APj*E1jDAH0X-sMA>}MZlzlY(0s|7eg=Z=VZ`AM^E?-L7&Nq7X z#MkoshDT&*n=wYPUTm_(hw;q6@ZQUicf<G3M&msHBhMWi0^Z}t%CV*%FcP&M5x|BM z^pe!WWFC2enDTmVQB`&g>FE9vvbk7iAG&A$C)r{6{0~9!Kz`B=R>A0X=h=UOufm<5 zz~J!LQYS`cFun@?>6b;P+GeTjt(FK8^%`9p+YWrr{4czUqv((x^s6^5ANvzOy5nXq zO=aF@WJVf9T6%wzKO);%9Vmvl28Nhpz5k;uei;gO@)AzaViZjO`l19P>toJk@=1cZ zkcFNVX74s?x+Yx&VoLGD40WX@lX%UB+}T&8G>!;&V3Wjk7ZR%*(5L&K+;9vOB>k52 zyQtj%<!*%;|KxD6r@4{9UZ=0Z`FKe4v-V%;!_yw?9T}iS*gfPhb9cU%*s}lYhk|E) zGoQAYJ)eIu(}7?A+y~yPt^7meJM^pY9Pt_&$J1@tV-RA_&HabpMiPP=y4QEfU_DiR zioRrBb6q<;3S^|=zkDKw*6iDZbstOo7eq~s0j7o3sX0b>{#|zbzeT(EF~L@|bj;3_ z|2hNz$sGT4EBNc56P#brl>T>Cpg&e#@6E@){mX~{6lVX&7C7R-PeIw!?8)(eXQlDS zs<LAw<$uTc|2l^85uCH8OGw>y`dj7lKUPPWKY7sqPLo{pPue6{c}iE|@2vFySb-qf zEdCB5SEL39L%HIY)Zu@Vs{cO&H}Mb1UBhr!?!N@h{|BP~bFMzV2d~&*%E&wO{3}rY z<Kw@+>h;I!=Hp2EhreOIg|orRAq}F%R*Y1CXI1&fN<T1#&FJ6M>i;`z{{IQC7x=&m zq~DJlhAfxQpI#zPfqA#8$@}}3*u^ShJ?BQEweBApu_AJEfFlW0=Kt^B<@~8T*#C*C z8kvhJgfRv5&`Z#D&=+p%<ev7axStClMm0+|WkJb!&d@xMYT9(ijzsB&ps9DS4UhJ> ztJmZ?E6v$ErqMGV{)*q*+`ShO+Y8k?9pJd9GRFkIikp|8M(=mOc^J>$^$c(7Zq3au zVmS`?S@g>1e#dK{N?x*vLYXV`)i}01!7?B=%8G*d;gXp@qOINAEg6bfN|OFBEr6Vj z-c4|+b!Z%&OmBWNg1hLqvSF8R&Jq`E0oi39d5tdDmP*RXw2U9E<oLY|!3_ycOpFH? zPZU<SD{7B99iK*)dJ?LcLSqH`>B*(q{%4N+&q(_E=Y4}&@cmoe%MGp4>o9h2`>SCS z6IKw_7*_P_l&0fF5i3jfHyl$r76sQ(fi$|F2*6v5X4RIM3f$33YreI_AO&_<*qo09 z2J$5$){~gYjJndpB+><lxPqg=wQph}XJeeMrwE0;_Ae#zJ{OpD&kW7meN`5##fBd0 zc*p3TxRZ9&{5?Geq>nTex^BX){Py$@cyCz4&ztp`VJ&{Gqg+*=+3c}b+Vz;+rZZiF zJDqIG{8W9MmkYnasU%xOV$H3+;ySw62CEUJ&i_1!=s}NOrIXCG=cF!JeU55$e-y9E z5j2xZYhAah+J9@&)@8Q|uq^VD^tsS+KDPI8K6^~=`Kr@4A0(-*;r2W+1s70g(H|m_ zbN?Kgq&kd`rb}`G%NWz!P1*<O#~}1SeiuEIfWvATN=*x6KZN4+F4xV~CA31tfer4G zag5;%;e*frxiA7>!vnU7$xt8zPuJd*A)~!t`xxdiN$YtAZWl7|@~Fme80d6bMp3=a zZSOV+ooaE`^I?Zt9p?BxIVlVxvI!bR`u8o|4a~-WiW`8o()5kbK*DJ>RVlGJxAZ#= zaTBbyBVKx=N}K;~@HUTQ{y7mp{^ZW%$f+ZXRqIXU`)&M*(_PS%fRz!Bitn7=b0F1m zSGoPXOL3Zl7zh#M7-gdYagT=|xX9r?95>0zQ)NT?oHzt#hlf+|yuVYe^wbYYKt<3C z&QD)wo&x*;#p(~olUhWpxT;>I^p(7u*s|W4adnu{gVhjF0tX|S&06(O^=6?OZC&`t zri)NV25~eD*nZbiB>wz+0CayNXgN4`jf!|P3W{nMu;6XpBcDnK(8Il2ts=uWN*pve zEp#iM6r5zvwlA#k7UFC8vt60Tb%Al=pHid6gs=~$gPaYgs+Jyo4EFj<I=Y+PJt3T+ zFN>yHU#@V^CpVY-wT!B_nZYya#1&j9aQv$?Hv`K3KjqWCV6viTLI~jSg)PC0oWSev za@z5kfiwyBW4IRi2M{}ncv)ivcMj@M3U^E9LF5JKgVdgvKhuRAe$l<P)VEm)Grg9M z^;zgX6tPx%kLne+`=0XxxRY5BrL8=MSkOvbTKl??nrcmdQk8=>*WEUj&J&WEDzt9n z>;sod{0~3Zc#Q2npT{yKzTAk(RM5Qqgk5uGS@hK;$KzbJ-7CGyqlp^pD{qr@?v0<T zcr2$Wxk6f8tFCrF@loUVVgTb<A1Y4;E#o3&$B-g5*sby-#?@5Y4&k<=_grM|AK0Zx z661=IjT2B|`fJ;PueI*V16()pKi&D+_%qn?|1?k7=EGf=eeVw^PC}6hyuA=^Qh0*# z5;DE?TDU#j0ybK#H3D7Zg-4(S`>gCC25*Z28L$Fgku&w)mYX0zA_z8A1UJpNX&!3e z_Jq8=tuA_o51c~g9KR+!^g*yQg6Z-LX2w;&EQq{M0MIBd3^hHqUCh#7f!F#xG0LcA zJivSa{{<}2In(9_ie>DnoghI4L7(4Ci_d@qfA^G<tuCWZ=xXAGqcH{1IrL(7%PN{C zp33Yt@S7IRDUFyJ!N8Nr@>uuHWpIY~Hq2&k(UtV%&KK|AQGnK!HQ)XvJwBgxei`2~ z0@R}0!Y}6x*}#0FbjD^56Rt}=Px&C55C~756Uwyq*vcclA^U%5&Rr31g0qz#Gz-t# z`ROXGJ+DbK>wBa{4#bz8&cP9Gfk~}bF)MG0?WaJ~kI|tmCsTqf+=%-%Lt{1Dq8Km2 zfSMCbDTC0%&y|I}<CM?@E09#U!`Z~kCNFA@+mG>wzB|C${!jbtmJYIkfkj?>@F@Ks z>_J>+y=S5%G1lJju`Zb(;^Lw>60tJ1R!ci%^)qtEQI-ln9QbgQOQrUa`ldQiGGak~ zNz^omuLG~ZtChdUSm-B7bR{8p7dyC~)BqDlv-V3%cBh0-$O1VgvGc^l-R73*15Sm* z16ToX2Cb3+(|vLASIz1VCvX<0v@*6Mv*g%7bhh}g7K7nXX4vd9iOtnX2Bn03nqyRI z_cG)H#pbon-Lot|@A?)k^SJ1431y|-9ih^35ybTF*RhAaM3e4!**xLF9y4XT*YhYE z_q8i4zT;XoefxpahEki{C9v2p9{;Ga)0LdX=X;(Spj${_eNN<5k~<Ykqta^k&IoX4 zi+R5qw3a2uaRRC$m?JKIz0U9VtPl$9tfdTpmmwWaHqN_N5euN#W6Ug@$6s|0!+Ek4 z!UF{~KEM3cV4;!C%jHMxdk872&OyU}RD(Q`r6l4%ZdZNG<RVN)TZ=w({$l@9+ZvuM z*X$z1pj;VOuD+^i0+Ca5LyMZO#YDC~aNI^|y|6wDt}0ep0H?Ld?o`!>zx*^Rwf-V2 zm=@EQLXCU(t&?G9mGn-~fH9d#n*@8r;E!C6E~CN2x8>>@^?GPr1J)g}Zf)n>t<fBq z=h;;!!6)@%r!4S7<Id7;he0o5siHf$(u(tAQR86=oxPI7Eh2t3nBTUWLlZMbgW-yI z$4@d?V;WNhp574zg?AxTQZhBDT1W7EHBvmU4<r~twB@=ISOgrx>J=J2M3oG8Ji`&g zGAxyWGes@7w9zsW@Ps~3ClHz~uduWF{C9%#$@#n)e0ZDBkyg`C*A?ZhA<<m|OLc{w zj5@E+FV_+Qc+TMJn<97kkE^v`B7Sfa*@0wTjCKnsogI$gEg*i8-Q9@jbsy5G3!!uR z808G*BLxNE>HO-XM$lemuJ4RXUh?kbiCQZfboON>Uz6BXkuegVtMo5a2$gDcZMt9G z<<wyLu3$g|t{Vd4pkAs9XqZlQ53YqRMO2_1HLnz^cL{5P+d3(#M3$Z5&H3x-zK%z? zbOm0Lf_taLb<@QAW9eXxVyO5xF32Fmv>Oj4K;#%-MO0i{FfLK3k3E%ey~sU)YX(1G zY_LuBluQCb{Y&3EFtL+@!uDQWBabrPJ!50&Q4<mH8a!Vx38C037K~e(K?bFP`-2Rx zTp$4IWD7&9*52}|X>iF8k1j&R?vNv)H=E%{sJxoRzWaRCDy%-(+l(BxyCiQme#`7R zcHGlCQ$aB=!h%VF{(YbPk)>oHyQzxc@Y&ow!$eQ5{p~CF-NTv3y@)S<=8mbxr&s!< zM17Le3inK((kqqWt2bGnNBlc2_8?{~e;-P0{VU<v{fMNwyRfxZU8*0T8QSTGvVZG? zu`57>t`PC3%SA06ZGbByk&uWk_i?-URG@Fpt6{F?*&&*q-d=cV!7_cH0jqfMHK=}C zBW&#%Yir|EW_Pa{`cTh)Jl_fLkEv5%Hd}u+`bLwgd%cUbu+m{WEOfz_lE&kqrLy(F z2MA&Vp?jw)H9vB5TQ8Newga|4`fa22Er01N793E|<dI;;hdByh#*Mr2;^JM|9%1>) z<`EeIkb}~^{rG>A0{V`dOr>vwuba(0H%X1Y=R%s7=(hprC&=<{zGHV{ra-8#(L_aP z_P(JeviA_<i0zjA>GT5PwZy#CZUjY`Cxji&=k6C8g`qTCObQ|J_iJhVA?&lnA%asg zLRb-#Oo@wy##|?*Xytk-mo&{G;I0&6__hB3TbKlA-Js6mG;Mj2SgFS#88xsvD=t-9 z#CKjj4|`HuN0tFoe-~FpA=>qMw4MK&g~ffty#{D!JC(3Qc{BE@s<ODZ{g_xZr6fx( zL|YvDI)RL-Q8B?-YwV5&exlu?AL-%}Uy8w#1A4nxB9{t|+pxD!Id=M$a@{X-UGP}6 z<H|Vjtn_w9^g(GIBLdup!#K&6_LGxD+d@@~B*D|$f;aYg8ThjIaaMxTe&25oeZ(bJ zo*}~bDugEd{>VSP{*5I-p-KJdexwjm;biJz+xQ75iw$xyS~f){hL-xr$4(@)5)##c ze73kA{4g#wbCk`{&*zim>LFYzwqyR~FF@C^#iwKERp-^aVDiSb5C^-b>RJ0r(Cngn z*a``Y3r?OEKdLE<hjFvUslyk?{?+&EOw)r2SY>N81p&vRr>|#MkdA{hTfGh^F-Cj2 zK{?GL{m41N-wL5$JYo#{+rzC369)h$yXDx!g+XJRDPq37cX5u!)4{yEddh_jN}$}H zPd=T$VvV289K1Y64CbnWa=zF{S#r<Q58LjC%Jy)ei#ov5G%$ALnA?N6@0DQZlNnjA zH|ct(k19VVc+16kSup>q9JOx<`wA}=zTv>@^|*HgZsO1}wPbd0WPsWYLN9qaXD*^! z^|x%ceE;%bj8%_&BeDFL1fQj^*X#7M$n7}jc^0A9VlBQ@rNFYk`C-#rC0rchT)QS$ zxAmSgsU2m@zF9?%`5s$&w!~VZdnt=ddMq1g!22crCo{z1&k*Yv<Mvg{HP-0{pCu}W zyX|NPCoi^pH`hwe&_4Gf5T`T(F^gzqJKo{SKvr80r}A5;b8ld@M#NP%5oL9`)*{t4 zED{lvPR~hhX=$uu?WdU;j+_ss5H~mHsKLgY4I*pS&8+zCUC=gjQfHxyyw_&P(wP|D z2(&nqjLlB1)RJkVm$qNMf*(<l3b7M40BAxFV#ytDJ!Csqz0xskXhJE-c`SYe_tOP( zEAAO*AQ&fuoy3&u-gYhe@J_q;eujM3M|cw0{fI7C5+<F*{hSEX$$i+uFsolMEDygU z;4?B3>d^P$4iR;8a<GSbS;DguI)l8mEI#&ThQDDfxf5V%yf_5@bkb6^gLLWj*jSKM zXc_3D%4rRFeLP&rd6Z}v`KUN674~@!AZH@7alZKQqsVIqF23QD@iX)UlU__8{ET64 z2X-gtNDQj+qP$ABt(e!mJoIG_r(&Ro!Si}*TCeplX&59A^zpKEq@B_P-cb7ap|1P- zxcJm5U%=h{!n3njfR~d9T<Ze9OXghE)&f163~^;F8-VqfWG)xKfNw3c7}}}@UT{zC zJzCG{EU!Hc&W_1)z}il<dECWlC=JkxiDl6l5$`b$3ms5p-q`do42AcD%QJT^flHss z;L)C_-Lol7tH8$`<#(?A=8#2>hY^CeUO5vHUd$Bx?rSJZZ@=|(@%6^V%S$~;WQ+X| zIedW9iP_YM{AKPs1bede6Jqcv0v#g)k<(YJm3Fdc6r?gHpK%r-SNnMWYJcL2om-KV zsh`{r>>A(qP!Gb~+E^t7KJU^nro!^__>^r&6?|<GNAN0Kz8DJC&m#HT1*KLnx$j8= z=Z{0WK}o6Jzs)Na2GULD=W%zoYLCJpZ}8Wm^%{dlk(5yR4_INHgm*^G@XiiUNa6)^ zf2|%%Yhp>)B<!d8WwbIMo+l+-Y?})p`cO8jZdZG<5=#eqCV+lJ>X1SMLi+3{3@-rb z<_nu;0CW(B)QsAOC;n8x&YW50J(YQl&5o_RPLPT+H#hs+pe)C+)(h7ztk2=u1HIk< z!`)lAwG}@5-UV7*O0nYZ?rz13B}j`DifeJVV5PXVSO^l_ic4{KcXxLuSg?oR+57Bk zpSSS*nRR8YH8X3jdnNbGXTF0kr6@l`QPssX?_9-ZZq)7yizkTCi#(FClhm8>MsjxS zhsk_(L7y8c>0i=fr+V3(QhXra^Qwl{X6E*Kozcy<LlsKkvFOl%=(8MKUIs`>>$|Ye z=QO#)y5z)srW9%Ie<{xCwSU$>TxeK;ZiK*iew1#V_FC8Mxll9HjIdb!vJ*}_w12|C zf~@)F8J41)WbABeZ<ybT3J;xjX<6dg-FKKF9E{_Dhh#+$S!X0Zz7MgJ@4Td4&g7jG zWea(Tf{9P@PuKk_l@dr?eqVu>uu2@FS=41lV98zAF43MND{1NtPm&JZFf$uuJWQz* z54_sJYml3dlU_YrDzmS~4@t%4tPpLgIl;3!aKzVoOtsa%3Ba)jCy*R^8hR1bM#a2U z78$sA24#LqAtA~dWI+yN2qqizn)qP(kVSRY@9{OY4H(zzkX(t^w-YO}oc7*tM)gkz zb09XIb=dOGUk2!=YyE_T+O$)h!@VI2KF64X3{_L#dx|=;OYj_7p*~S261RbNfxs^n ztS@;%A22O@kX#V0seuRPo_}Qy2e?47OJSMf8cbyg@7SM<hsrOlq-0i7MI^}f<JQUJ z!bbk`+ob<vB`g{x`IyGCJMCVlC8~*xFA^LaOyNL=<QhdZnttjZbeEqO8_4s^@k)8O z*sBSk#c?fBR^jYTb7gv+Au=506+o*<Zm&Ofj@+>wr(t;jqn6O(Xbaoh4hE8t#I-KV zQ`#eLERP!K#$M%tqoWwSAnC)x>rrKF6tw1}+xXP67}D-{bq_XQ(*wU;@+9&2Xqa&j zIBrHpMCPu{t6rm<p^HL|lagpKCI{Tf`F)F?VDzl%|I`eXEr42^`mL_zl~S&ZPLs!8 zqdfB%wlfjtqjqyejH~j4ZQR%A;D^~^C**)KCN`FkOVYye!RubO`MAJCjMh2Pr`LwJ zFXs=r3-s+Tf2C-bk22rJu_O(v?AZ+x4I1p~?n4PrXIt1+JCLv%*S^*nN~N|r$`w^t znI(0`PF7;WudS`5sL$kj@Ca5fURxv&)!?M>V74G(rfT-FmoKNB;Tv4!99!zO&+WAt zT+5KM5YQy-&dao6c(ol|*0dA;Al-P4eYJN<tX=*kp&bFpQR|tmh3JeS5OS5pIWqRe z{)%6B;9=dUUg&n5$neZX?*kx;5^730Ct%w6ibFVh^Y|C(NKAq8eyit_9xZ%PW!!uS z=gs#v=9~j0%srjS?N4Pw$6c47d`9%x&AzT(nq~0hBnZnsD7T$gP-7DPgc@S_>$m+? z{ylY&vWQn{SL|c-W<byO;q83l=ttJ;%(68m_E;Q?Epwl#rCLViwoif8Q_SpIzT7q3 z`*`Keq4(8P{!lx_rtcbJi=RaghfMO<E{H9pgt79)-Toof{9e;V7B9kq*3Lb4N;mzf zEmi500mYDCay#^XJR?67n)1!g-dsux-q#Cg-fxvlXi?7`zWYs?fm%JmSe%9pGle7$ zlN?<{>MV~SKkHQl;W`EJYzR#})ikgeAdTvl9an;yotiX{YXj?5yYIdbCJQ`8PuyCK zh5`K$=dtS^*XL=A_OT_=7~6J7)Nu~d2Izg`xx@FGtsJY71ussSjZpvYnYyZ6V+)2^ zrY!WZiku*Hk$&+u_zbkjOP25oCuLh6i}u`@6V{vlgMbxo7E5g|Vznz?fwGF&gTP2q zfoBIcj+I*ZtmesgsqAHm!z&hKS>~9M92hfYOgNgkkkwPAC33tReJ?0kIbw~z5YH(V zi}w;dHvKCvnyo9L`fNi~48k>*Kgsn5N$bWr5**^H|NRk(x1)W4g?K$yYm8}SC`KbR zx`FcL4_GkCj^lcjmZ=L1T(tlAWv@)1^eNl+hW+-|amzboPsW+lJu$r>I-IY$dUm=H z<fM`_{Slp<TZxw{Ue*ZbyGwjSre8Xe&+-IF%1@`~_r1>-Y#*K7m^1&+N#UyvnIF)w zR+>VF9O1|GWarsDGhWIaD(VtaJtzT_2M=xpIQv%g?K->5&$2_3kqPIse6;JzTwUS& zSyMlq9J2!le0_Fau00jJ$|h|Q=ZNx=LSdkS^5rAf3S3LSJGFDz2*9%EjlTtHuWDtz z(3PEmf7?_H4waLq5SH);hI<0ZD8#Ns8KJtR;dDcuyv_-RJ}0A-|8Kch%6FOT$lr5k zkTmcYX&<IJrTLsF9rEVX23H494n82U*wDX$9c^zEhto~|!xCor?zgqhgTeFQf!Z`h zI+TbnhQ^gkjuOrHeH!k_s^88I{8d_7E-A$!8Ym@MP6pKz4}{`IJ^N;SJw*<UK#C=a zO1A1&yK+rrHX>V3>5lv+@#PRBsK|*&-@nrLf`Sj*E+ta|m!hc`l`k8l=ER36sym0; z$CkX|d1WGhDbTMv#fiMDa^Qo~i+T2D0-ZR<tv(y87Y2(J;&?U%Ql8^3si%#d4}f?& zL}qUC*DQs{{_92|t5tB%ImYr|dsUWMToy>Q91ikW@BQ=g<~uIu<p$nGVCswyHdDjK zuppe{I^2MP#G-1M7@6P}j;G$-p-ztiI(I7-3}kqpZ)xzF_0SG+&IXN8oUayBGkhXx zUw6OBWi~rIeNn7b`{o(_n*3z#R&PBjxXC5{mi;IDzdw7v!%CI@obJV^(fnj5Kzn@A zc7@M<k*LV55oAaiE$Aj??rJ8fEL;Tae8J!TG?=gth=l`#bpguh3WM&Q#$<kb(Q(*f z?{V<8+cx_<yNM6}q>PMd2}LXTBE<uSwBy9eUMsl6J1%7x(c#cX@HqASoqP)dCEYub zq=?a^%RJG4)}Ov&o|eyASXNxln#Wn_(A@OW&;3Ri5Dgi~TP?62d6Wbfsoejoz<xu< z%vvmdZ2tSu%3WY3)qq5b*Sj8iaT(~jk7?BBp*w?6j++6`M6hs4-<q*;W%GJL9p$29 zM67Ih2q$_R4Z=@r{^s5m6?u);)(5tZ4aW0{j~_0IMwGbw&9Deoj1l%bvW6V_-D(?n z{o-UlgIT1P&01X3;E*e%rorLzZOs>X543wT`i5_aJbH5`t)>5L43erqwln0EU5^GN z`spXFmqR{zM0hDMPeZu+z#=S_5(m6LyjrCpiq-9;`ugAtTv!Eh>6hC6scTj&-X1Cp zfDGVHet%}Xv!4O**<^doY?gIgUDs3V+b))Q8~_?Tfl|yjd|tCB5X}Hk_Dr9oxgO|q zY_YKD!-?e?*wGD%jSCf<7UWgsUgc>7J?&j(-wmBI?>>_6j4w{_Pj|(+O~od~XFc}D z5zEJ)_9ag;LS&bN8hiKT>VWw*ajjcH3?8AFNd=4TA<g<{SkC8S&UxZK58Ij@)>4?! zpnU<voV`tLDNB622czTUEZETzEe;ypqUjJ}?hvDBKfnmjVZ|?1(@-fgcYrcpvs?Aj z_}fBe9+3AF_v>sjjexa{QXE8$*#(0Ed-*MbQ@oRwBSdS%-)rret;%19YF+!pLN44Q z9{!jjx5_2<N>ZMq)h#gA0xTohd#lOq8#3pnoTP<{Ldk-)U%Jp!>*!sYX)2mKgC%%{ zaxsNhbV*xc81@>fMn-q5>;OT>xIkfr!{W4mT$;*jLxcOtjgJSTi2Ni%(Uxl$CGkIZ ztgYU|VsP+)kTk@@{&9uPCPRM~wfxTtQi|M#IXAF)-u?Q{F;mE8FNU#sH)P`PDqJaU zbBo`PWaGkA*olR^WwYp7Ek{$gRTo<CBg(dr?7cz-q!_;L?rRtNHaw`8s3-|d>*z86 zMcn~5*wr}Gjr&ulpTD`SoyFOO98@~z8^<0)IfimC$iW?uPtUK#jpa*~llLLNo3|zG z7C!9`r#Kmw{p8#!$p99f-LP={eP>16m)3U14Kcm$U<KOJ1>mj8=KOshV#`L^jfUUN zXa_L0ORPpqQesaN9fF`=Cwg?IY=b?RvTTRrkVu!(l$LqVyRad0=r_aG;wh~-+mKMA zh+`Q>%#0qwBr(dcxSJ0om__)QmlcvItK{>?I1;Y|`M|-KAo1gC%mvIh63Q_SbyQoM zRCq(A_T+nb{*+%<<TVA-kTvhs>Z7z76#g1She1@+esA~h^;@w**itRZ)i2q{?yzWD zY=tcHr@Bn1K0&S*iXC{rwh;FIrj&r#0X&-HIR<K5gVhr+T38D-YMWyaGKeHZ<IQN% zah6H{SpbFEV)b^1GsLlA+p=T!772zl0>&%Ukc5XJYb;Ou(Cq#ElKAgWqc*0HzRzq9 zHI~L1VPdh!73#)~37sL|<KYA~f&z;@J=Dt4U6-3@;WzVD@BVnLYP3e*ly+sI;U?Es zMt5xE-|O5){6G>;e}s-1b$L1$hg_!`Np3tjQyGlzh6FCp%9O5Va>Zs$iRUa#JyrVB z7_QQ<3eg%=4jC07C{N<`>t%NR-l04u)7}bMvNe?4X#?#2Dm!r;!fJ)ajwtx32izNS zM6k3I7o&>BI%a8WT7`}x`TmMbpaycfzjI2IV%6KFaZ&jvOmIZR8chzBSS3v?AIezW z=uJcdhFT2n(<U-NY0@19;&^>~kS(v^3TX=4YZjJW&Q~Gn8z1i@LZ*~%5n5f?Gz~f# z(h%=2P(yqUJ?XqJSV*^^IhJADEj(8gBJk~=BVWOXAuWYL&P|gf1WKguG4$Y)=C2Ug z)<sBZ3?}DR{j~v*cECm8{=~yF-ibK-A$WazN_;PV56|(<#}2VHYimIOxL}lcFtn^5 z_<@}plf2U0EB$!s*nITNk=G;bzAA69<OK>29u@2pd*MOhtFIoO^j<Dd934bl>Qn$F z<{fZk)q|Yqmm-4)_1Z|RQAm5i`TI`iUbAtketQ|%01BvZt8sM?%y!e(JnJg^YV2yJ z?f(9LXJaVF(88O-cuf8~Dx^E7qksX%@ufVZ*YS>`@-IhB7~W+#C`RQbsXXkQL^FiX zEA+2~a-gY&5-kUNi0#8XYrL&|<$9>#py@Bnot#!Vb;A3RJmp083?hyuI#R#y*P8ZT zUOq++3N5XFz3!ZlJaBd1b#`I^8H~Bu3%h&`R9sUhBcEdI+`611$R%-V_RKQ$KcPvo zmFL<G+CHJD>;&@|9}h>My><rc)xLM}2ruEtFdoaY<`u?DXC~@IS&QpPILj4QPXGIx zIEPxX7ld_9t(Ort&=hVl)g;wolzcG?qJg?%<|ht2Wa4|@{IIOQW_$J;cyjy-nH-mS zr>12CZB2IzDWN%!z~g|iF@{BAsr#-mYlMik)XT@-uwUe-Z8pN`t6Pxy^Y8P7ZMGTq zLKi-ZwhFR*2DfGMCafApPkp|Hhd}x(!wUj5jK}wD)E6OTaNBy<xYjG9h*%J7FDsbG zTx^|P`&U98t|dE#zgU?ahw_2!C|lNB%%KSGX98BktoOd_=%nCLxT##opHS<1V&N!9 z@w$RZy+x}sM!$Q~w(3hQ^T}AEnf+aJvf|afFwfchjwmoKmvYgE^UgLBj{(Y4@F(7P zLNA~cxR*L3Lg;1z&!TssG}NBusysN4##wU}U^x(gs9W1xr5-O74r~}qE591PUIDWw zI=uJ-2gy#*XhgrQOf6U)aEgGY=lP?LuZS~pivgTaL{c(vr^-<}V5b(QVe&}$)zDFK z!o@tcGo*h?>^>K^-`Kd=oaI^ev-2o<po2eeZ0o%*q)g;R4C^U1qkxmP_4w|LXGd}E zsornUlPDIMKjwlt-#~5C0#8A)-JdF>OaJB3k!~m~(vJm7iGDiYstIrZ#4x-$nY}&7 zNC^_gjOR=&#oVCX4m1Vuq#uwN6ny#1BhlbmRJC)}X<7CmU4#Nfp!lJU=A^!*zlxu$ z9djvi+#Tl!1#W_zk$D6Gd%Ogv$Vz_AhZa-v_fBrbP(O~Ey&(x)EFJrNfP4Bb%*EdC zott+LrK6yxbWL9p`{$5Nv%jV=aXveSf)4jQh`|oK3dO>$Ekq2J$u>`Z{)SUY1dX!l zCOo+rPXJODh+rQ=d^-{TZjw9MzCK1Y&@BaZ;PQv)a@E^1LHQhW0>)ngTDYF{=tSNb z=o&`wkWCo0fM{sHq2`X<;Q5P|Qsh~6?w;wF-}WgCJ^g~I1+a@B8mQg|#v7CSHF=~P z_4pWqlid*gMZ;SZHziA!opKL@{HY+#`SpH#F<q<djdDkr_#vtxw)r909v;K`DSINU zn&OXSsB6jrKr;5zEeHm^?6WBu6;a9!EeBEZbeBEubOkbRO-tL9F%n~9u{wNpr-q9D zCHMym1Usd9XRxN-kDkr!tX+uk)}03teB}6pjfqjP35IC4s!+#>Spv8vshz>XYtsC4 zw_K28avp_iv|A3*Om+-;QjHA(!l3k@Wv9sGLEaYdh*E$H%Gv_XAPS6l<Okmj7-{Dy zZOL-^G{Jg^U6Z`N<X`VXjY%M5`G+MPUf=iuIRUql2gymFHR?4hPCdy3N0G&KoTLu8 ze+52aMj&{aQ98wBXXuc$ZV0%>Kirj9(ki#hd}VT9SNm_US+qjslVfBq0*PpSn*S2? zY0xiP8nBL)!&_?*7KIc#-Cor+vP018o9;@|zsEHvDan`7Kv-K&9<tl01YY_)Ol7bC z4fGd&_&wPGV~bJd4%Mq)!51TkWy=T5@wFCYP!IZT>$vvoOeP$@X}R-2{#`ZhEPoeQ zTKBD1zRm>C!ByvhKwkV~`Wi=gN)LIW{Y}lDeMVTB6$w*<_sC57y2$5?nQ2=d3AqXA z&xL~}BhqXo_ll1Up2;WN0(jU(Ql$AyVC))Bv$aph%3AISmk$2EP5Sn}YlL=Z>J`<c zs#v3=jDEW(4xw%=evDS~^=1JjzBIFbT``l$-Hhu*Z*cCgxlRIFdXd^N-BMjKFGt*B zQ(_DY8rGzYzZn%XH(cYt>NQdVI%nML)8GCEhO_C&Nf{TkIc9k@Smfk2noya4w%*{6 znaB~>FXXupS72fXfT6Jy6-|%oDM}D-xlaeF0zZ3&ybV4|45JmO{+sFgkdU^6B+1=3 zL}^)kFk~I1p0oBV>a*i<Hr{z#iu_cR(1UuE$MQUGxs%yX`EDj`1Ky1vbeSlIlO?JN zr9Y<Bcce(|I&FHp1^If<O0bW3irnSzLjxRz+(%n@{95*KtD9pj^{2u;{85!3jLu5# zF$4?K2klo^&Yl-@$SqlmnoREN<)RBOiIbHIh=<F3Np2#V$qVkUV#GE{VJPWuSZ~#% z)E%74Q+owTRu-HR)Sh3#rT<#_`n13Ut5hzzb?5u=4_%XLiy}tY!|s}XDjp&3lT{~( zKSc-}!>0yDZZ5V%ub67K&wuB}cr9>=|1>WfPPswcP#s)o*p;wc_)r+1BC&NJa>6+K zJUP}PGIUMAkE+%;HlN9_r1RXD>MlB@lq4K`ss>cbp-Myc?IjvPj=$zN11c*q7KaeT zXS{hieXi)IBp=`2F|U8EAnL#9yxr~V?*h*=zRZ@FJCCvYMKHhJOnzrB63=n&a&hX& znVmB)Oez*VhB5V8*-CS5v0xCC@zg4)FBz(tud_W$h2(#9SZV&caOt(dBUROLLG=_- zMOJ&ub>H#2D%Nm|A?grk%gy0r5CQ6_AteSE;)&Ncv0$qGpObOHTw7-c?Hi)HQ=>3t z_nU#7QJbmPp~_(?#fH-96-<Ic=L9#R=f@&mg?e5seyDmP$OSTMskZ?>um1#0DYcNl zdamX}PAJ$bfcuN|k!fE^SrB&^y66%#mB4l8KMPWuvNA!|T)>R}PX}f`c_OLvj6X5! zMuo<z7eF_~0F0!iPxBV$M55_mLk0qf4?ZSfl=)1<o<zvS0#_wHPa`HB*Q8ZB{eiVz z?EX5?Mdr$gfKGsami*g^&-^}p-O38mHdb-mSvBWBj?Yc{Dg1T|3|6-bQ*NF&6aVD* zYe-Bw?&o~q@Hf79p$|Lw<+hvbNh3l`iW*aQkbinyywN`3`@|h<xrtEjl!hhF{ydyW z1gtwA@l5r3RYL$Va*z9c+b!Dv!^gcP14`aj-9>m{IPn0J2)q**zb@Jj7X|hj^=@&v zUzRFhxE_yJ$tGw{#R@p{`&qi_9B}>oRUgl-mVt)0b}fT2tem2XZ~hW9RkM@XfcIO2 zaSv_Ce>bV_;9v7$wXEuO^jWaAt6E3HCL{G#Jh9gk=H}{wZL(9Dw*N?@6g3gx4CY35 zSzT!$YNv$-ozj#rixH8E@+K(6h*vad6=!g<l?rq1`$<rYSRK(I{wJUsd1O9VG|Iev zh?}Xc^|=p(MDA@LvHh4LA{hl?01XULeKz$p;oA?c$<bW0-A~vQkUkUItVI$1=Wb0t zvr=knQRn^<W!CZ=Nz8ruYVoXxBEPG<M$p^a3%;nlpwTPK!-MNMWPx0A?(=-AF4&Lb zJkydZWryjDn5TecX5s=$o*7As;0Gn9IuVZMVU>pri#VcK!evh7+e#s7&+?fTw-C*M zYo?Y1VU_aWiI2q4f#3G2+%5V?dLLDZ*P2`pkkq>|Zjn9<)MLS5MAK6}qL|nCs8kTl zYDxqWVlAh`RK|ENA)`3O&EP5We%>J>5E7_+d^)h|3JR0TFLIHzS#+rdN_0W2&Sl^p z4G#qA0PBnQV-6|m@Shp=K7A<aT_V7{H?2Q{9$`V`rO(5%HJnr0r&#-nwrvwPoLNDI zXgdiXw?#ghYs^jXkl9?(t!T$yqP6_+Cgu*?!IS<8vY?r@oO;7IhZg8O^q<Vl4L_nt zClWd4QY)CJvMM{V6dw~BdrezxB>|Oo;ZK2mZ51J%8!7CAHQHjI4AQ@D3V}k9@(M`Z zao{l)mYU(-VQ<KFq>xi5+gSzHf2=cI7M!JTFx$an5-UpF+nmFY*y~Wm8+A258IwnI zvfUp^`7!h*;%l-oZrwiPE_4Sq|G>h<DNYt_&Iu?W75G4$SYm1Py`dfUey;-ZP2E~} zys{hkE5UjL-`p-qRs`#xOwi>Fsbd1ABr(^Id%9prh&IVVqB(;3Lv<CpP$DXjSqw4# zm-%3RSJ+9;*lEz#woO`Z(3w!QV+rVK=qo_+0-XDp^{Bns1n;WIWub373vHn|D0JIy zF`y_qJ-hBd!W}dhh9;ptD2un40HpF?tPZqZi)0=trqF;NUOB5pfxcshfj1E&ku4x| zzt5cKtX`9sTbCZ<LZ8VmU30Pb+M&@(TaVsBTS<VyvtilCzG1yHzKs%$cEFrDxcp1H zq(Q9N9#R=3@KJBI(0P{t&Nzguu*Ao(owJA=RD&sG=_TcnVq$T{VFMAJ#(vBK&G>lh z9)1;4EPmdR7v5xT<Aul?4Cbi_cq`}m=<l|7Y>^io#FT1T`c5oBk0GK>M!7Yfg+#k0 z!mMd5^Q`Z|JQN7}0_@ticyeBU5ms$70dD;<VMfBhkOc_816h(a-zO4ax$brz<qx82 zCfIbSs#;$rg|(aQ1RlX9d24y!nOg6Lq^g1s{O`(v(Bj(%9_}WLwIBQ|BcjV@d&IxI z-X}TKb{3U9)Rx}d$wRnDOtzGhxQ4BW{PlOIP+L(Xn`O((DS#zY7*p*#_N8_T>*IM% zEsv^<EtDwFsFK|gM>CZe87fC#$2AkbCIV!-s|X|>-ht^T5f&D3;1RBTllWF&){WJF z3k=4wF`7QfkfT3n|D;G{T=c^1!m=4Rf?KNS(+IBF&kSL<G6$jeyM#6K$t-M2{Q8V@ zJ3*-Y@YY9%L@$a9Lw-q5up$Geps8+ISuet^&&a0bNrbqvs=1;Ba|3VQLP3<C)J<bi zGE95zqg<tf`sl6rgVi^RN<RsVYb0AeWxR6@A)VPjSxjfD?0~;HGew?acI7BB&?7OF z=YMP-v+Z(TssBvkF=M@}aJh7aeM+?F&L4hWi+*pod5W_=(vvvWw5^~)bS4cI<3OY! zjs4UhoxTyeo0;z5GBuEXvwW;6%Jx0MPbbW;qcLW!@-)@2;f^4|z{BPr4XLF{bKgSn z4PFv0#T&yUoW^8;O0VnwIBmE1$<$9@@x^u9fKrch@@GiWgND!VPE5AO8D^w4WN=cg zz>J7;r0<KA^-^clcWY4u%Ifb@-;HjJ!yQ&PLhhAYZ6=69Yv0sZvkp;4)#4_o)xP$f zXS;?F+{Rp0$ia(7Ju>a)u=%eRQye4g#rxxNd0{f=O&0#yi&X5ky65W<)^@OUpl|wD ze^877R|dPj;^qQ&9i5dgLRY?otvgG{{;HN|h(`El+^h}58su2EUaY|k7lDosA5OV6 zgba(Mw<zEG2f4Q+1a}=}LT>w?l(|Osj3^WHsu@YI^63Tg>GQ-|Djou5DBTy=Vbg<` z3Ir(R1XmW0gcD4cl*FS_C?rg}4SRsMz#L1CKLAt`4A;L6mC4vx?5;7fHP%BcMwG-~ zctkg*XSgUTsB1B9DitqfOe2(1r!sSK%)Kc^B>rG=4C9JA|Hw4n7gS4d&1AzJQZP1M zrd0$-ty6#W_?~snj>WJ=aBHL^+~oi>S@l$tj~9ra>_aALIOXBMj3j?6%sF(8H#U@R zU*amJI`#x;Q|wU0sgB}bzIOP4l+uBae5EcY&L-~CFj26z_x5L#wfGL6+l*-Q(rv0` z;3c19F3(|~f{K@zpZ{nxV^F%`c;Px0hyr?ASzXFL6@>$?Z}Ip}H54y!rqF<6SWDES z-t4f@um8g9zy0{N?K#U?&{xiyj$zfx1vo^u&y}(fU>-cmdxJBsfe#{@U6^?)^G8KV zbV;*G@!(%mxe#bgE7y&Aj*C$7vM5>N8f>k)OH(7xgbf*>O^%8#Go>9wr0*HGb&dTc zcger2Cu3geum;FEEbm*twe0Hc!<mZc{2dEBy5FppIKmcQPk+c4f;YK2ytOROSxy1* zQFwf3m&~P2v9ujOM`i+|oFP?zT+YsvRzUZcIY{08bSUS*d!Hgw4jE*vwUftmE_4{6 zj^c1(sV+Psu=l!zw5o3;I;;of+ZphPG{bw7%vle9ify{sJ|vI{$wUDh1QNmt@3HT$ zMe46)eP(YCdK#nPfp_CO>AV@yhTKMBBBTxE0KbCf&a#fDufhZq?pkmy<MfbFcLg}t zXB;>(mTexUp*602c~qz!&SjHugJZ@3!-cDAkoq@gU9rE(^cUfiki4{r9bVp~C9-+S zSU(5x^YroaFsFkS!C!v2hhp?0+5$+wx8!a+?94s4@jM(vmjPt81+s%q1gL1v^E0V% ztd>0pNrAET`Rxx{)SHM2i#B7OFZq`>T6SNE+BW*_HT#_07?7Ixy!HtoNtyeao?Cp= z%qvwy?yO$pKFx;*7S6Lw9GBK9EDnV2ci2&*{#4>tY*VXWWR>Un2f0ut%{dp1`HEam zVQRxnZM+Pl!3(?)QHp!~E2u_el=v1qR0O1VvHxZ)-iQ!o^jop#re8sQ#rT7S_l;yO zIi2HT1=8{Z5+sgy#efAkCwvnv;)2dlIxh0lsLOtS*jH)ezyKb0!Il>2R5+Vj`E`HS z|7r3Zx$;j#A(#rNj4=j#Rryh9;8XU#ps@M_i0M%LQS{Za_P4F4Hx-M+t)8I!CW*)$ zceKK7^6k&g!oIcAYYQTcR@auZaH8QM#83MjPy0$1DwmG!&0T5Lzv(`-0a#p2Pra8p zSsApeK<yB=AYy@OVi|L$oex7eck19-SmrQ-#tHvxvD!eD9LrX|+OkQd(7m1Q-AAj9 z^zpEcfKHP=31QO`bmXY~SK^n<<TnMAk}zMFwa74h+_D=t24h{X)$-4&&w7)!Um&4w z?8;^QwJPkY0#%QtxGR8HYLED)Emf=>-y%F@IKT=tIAl422Mmh2wIriDtM^yY#q>RO zZ6Ed!(*M*)iSmJBIqRgU0Pj>{%a6w!1^;mIn;nEzuH4ZVORmg|JiuqNJf2AYsLy@g z(jJ<BM1S^=i+AB%#!%++@6O%<$UF8Llk1%1!uuOna-GY_<{NvVySYr9M`?WrJ#3|n zi+WTGle1i8!j@3hfycv^=BpUI$%9g<k67vM8%XA2fU#9dhh_Wjj6t6Z>_lxgPG&t! z!O5TjJC~GO+e1BpLS}R9%U`ZrlRR<S%rEDDuqdz5Dj$7Hto!bY^FE-Kz2p}=G9k_s zp)uwlNU1ZjBpFQZdS3E97C0@RbSeCh^p;-eMv7=Q((Hzr6!y~zdoIam9#{UuR9@y* z19X`2M0dWx`J+`qptd#MN5Ab`+^5L8R4^Let>RNe<rU@<FK808nC<k&Ea(z21gHnf z^9cb8G!fzvKi4unm(ZuC?T&YN2?`9Wt!UpEwNv);5hk2sV(vN`{#?>xvy361ecJtv zp!2OW5{Y<ea2n}D*p0P|_8??HBKE#z3q*GluCK9})lxAz?%q|K(&~{q$2?{h4cq?s zaeMVP%4bvb0pJ-@D{VyjaizSy(cf^PRrc9a;?GHFxHR=*hFs<t?YP@9`GjkY%<Ieo z(69RK&MXOFhDSucV5;2Q-Y0y_U<aaV2R|mCIX&F{Lwvh4qx;&3QDD=ngb<P1H>wb< zpsMEM58RK<(v{3-VzX?E65_7|w>L4Uf(;&#bXBj=(g@$=Apto`c^pbO#eaKnq`AAf zN5qsRyr*K^EXgvttDqi;f56`^#hYw5?4bHxo@_1EJPOpL3Fbks$D$O_$2a?G|2?~A zKelI05JY2iU+#J4A&J{HIh{8D(pJcGE1W=Nh161_Hj;VQ2bVUg;WVMj#bb<#bnDQy zHwy7R<}<-{k3*ymDNMRRd9$yRFPZxS<bTq@Y=z0+zwzk{Cw*y_WN9+HyLh_+g%Pyg zaLsheN@zS2Tg9r-F2(-(uD>uKKq({ESz3PJg~V!DqD{x!?*{C*6|l;QL27(=IMDjZ zMF1q<ljV%mCN<koSaJU-4=+V=#Z2;$0O?MCT^Pjf8B?0W^;2We?E$JKeP5S!CY5(J zCCz*@c$Qo9P7UC49sb)=>qdNYPVJeosg-ze$-SOfs<NC7kq{v=K(3u;91qpC`6*?- z_LR}&M)KtM!q~!dt>>Mn;R%|CEtD`2@8_E{$DkmD?ou$81oi#AEc^dG(+IZ$6~>2H z+f`bi+`jAZ`bp>Qe=aN49te?qT7gKS_OG9n5wQbD2)Xy>bTQcxeGw6sHf9+k20mE- z&$lC`DBf3)+k3s4U@-o_2LttS9b+VD;V%OoW;|11dje8I)w*=MhMzySZbjav$&6P% zS}w*-8Ytw^_tX5xjQ_fEq|_<uYb}16yN3C{4+O|jNuvHbPXCk9ZO1|w2$jiv9>|Dr z;{?&k?zKfI)SZHV;g8g-s(hRT>hoP0IPKN7F1vIur2RiWroDM<8@hz{W`^N^S^b~T zNuj!iW95tyxg7c{a3-*(MX*cwc>&HO`sK6cCH}{P_E!u0qXJ$_R8fDh{>R1t3jQmU zT<W&eb6Tfi^4l+hl}umg@z8|ZI9FU;48_y#%l~;m|K*=I^?w3QL>NIo@V`C&j~V|f z00DBDXEa8l%W(Sz-NFCIiT}r({{-y+2NwjWzm@Q~C-IE9v|Olqb&2jZL?h^(;WF!2 zrY0x17Lk1tCxl&Q9DUvE7ehU>a%&<^UQillk7)_IvZsw|le_yTIt9D44C+&Vi`4ql zPMC{>#nk<|9QRSVA5{#NGPu#DL{-1VEVSP866`|L^bgL>ZR1zu>3@e`c@K{4?yvTi zBoyWbMab6f%vQhCZQJNGnU!&9Y}`(szv?iIc$I`7>#o0ggioozB-DG&qE9%?pTDU* z^FK&6+1qXE;aZ|XHFBXb$c=fHXKOSK^jv?E#MPr*qsxEnS;zYmty(QeGk(#S?0<E# znJHwbG3Ra@`_W}D(&VXRqUFzGyppEjP57rkM9TX=lq0y+ltL_o4oh@NpuM9k>9#`3 zA4+HMB_H>4pq!wRwM3I8-pHOX3A@-v*{7Sn?y5YG@Dr>yAd%gRx=F`np2^0~0h4~B ze--?#M;UL{b`UPV-ziur8z9*YysKp&P#@?MFL$u==SXY({y3C9kWEDyzLzXdW+>3d z2C#MQduBsK!~N_V=bScXA}jKo!m9*xk^0%v=4ZKl$d}h>D*J4L;&l}0;F*l;$NP$4 z>`C3T?esgxN_Sk$QKFCg?RsQ5O8uyM@txgGz!d6Iu2ZP&hek>e;SGrq6qJQJSq!mb zLgHZ(J0+YVOT~h@$^rt9;JBB-(1N#}YV&>tzJ1meB6=OHFzR4$9+*uDj?Y<RJ8NXx zwM7Y;UFPb~_Sf574MGpsG8K<ps?%G78^{j!ha}WL9<h%-25GNO3Xb;7hL}%cto7Zp z4&T@)$Ny;arjFd83j}`oCf3dB@psSlWU4vXCA|lnaAkJUkR^nbl4hDpgAoCEV(Ng; z`aHH#+38ri8rBMe|Ll)+>n?gzBBD^Vs<X6v4sz`9&1wlJ`mm&9xs-!1yn#C>zVprz zjgq#`uUZwZEJKtq5q3-4{UU6^wez0CeZ<ggi!m3q)1A@gPHD95VA{+z4-p&mwr%1y z$`el@j#0){)EoZiicyO-Mf)N4v7R`ghOJPNv^^;lhsHgn@@HF+j7<e-5*fZLOpJZ) zW}f)Bx|;K)d;4YuwGT%`6OQ%!Be<n#BQ>B{8~ob0KK0s|_My8*`auja!%gU+^7(}M z>ex@ruz1V``X^B01TWZe?mzq3jjJ!iK54a_QlWYpZP`!J->kt<zdL)J;(#agjyl2C z*Oo7a*x10FJ(0xg>(P8&|KpaUq2?XZvn_=V4}>;ZIGqOPZnf$khabRb*kbDBGtErh z^5e^+$%i5Eh(nT>>WF*&4#B9VIQPCM<U(PRi_Q%Z$KhF&xLok-s)YKtHp%_v*%!X> z@3C(6l_6#tBvpw-nhRw9b+cY(JuG_@m%i@ZYj4${Yvi6{D-BQ^#s>B}F(Q?u0k@Yv z&G0nu;_7$=-^XjSyO4b74;QFG+pKQWvvt8eo+zmpeu3s=*X+W9yr+iY5q@Zo6TBXn zn*<zOFnlho{?UV6a5L_7J;e-9C^h^u?RO2h)4-lNdJftXQJwC9E5=t7yFTw)-s-Ih z$aL(yx=3Bj3A6m`&{8=9s2L!(hp#(va`3;t{30<51mom;5y6dg_vD_-XO7iF@gJz> zNYjSKQd$6QI=stbH&thu*Krks;voTZ8$XBI2e^;9f7tdm&^R`8>xRCcTW}B2vw$_= z)$goR@+eeLvms`o>MRkXt7g2e1`Y5|Q2%WC=hyUQ&0MI>@@AD}1alM<0SQ;Xta+P; zl1|Ldi7X#yp{beN5CyjHrDtyhdru%pqjx`SqRcI`83eH}7_roNTI{%b&gIE+eB{xH z;%t`k3dM;Af($`V4wN6b{?cNDn!lyJ+}N1hvOdTuSc3O|wnet`%c&51s8bmnwghFD z6@5iD51OXV-an+_e!J%Dtup;ZJ8}-Y7Lop)$z3q5>_lBTF6|g8{$~tBS8`FNzc;gC zAweTF@5W>l^l8c<T<Z7+Vtnsgk*sX3>~F6)J~EUMdlV6s{mTN79e00OM`6Swz(iW* z#JGfFQ^_uMh^Rk(%GuvXR0_q!14ofCMzjj(@SSoHnK#+Uxmbn@-P+)F+pV>Ik7^pv zd#Uy(sw2{85ODWr*tPZ26BB!il@&i<3V8e^@?Azg%vw;Dfc6p;5O6git-caa-=zg1 ze_<(0*Gl?xZ1{g?0njXb<aKD#k$5V8L+6yZ`?Rdw8?G)}eOsh#o8pyKZ+_&^v*2M% za3;z3y{1)z-2lWMEv-E#Z1R|p+EX7nV!kuAPM_R*-z=r?eC^3Cw#xx6br6t(US|)m zyHF#CZ_p})ca}dJd=dXni~Q177vbf#TvC6n`a9B;ib&sLjD)(3I5o*3;o$I)WWu!s z@0Uf`M~Q4Tl}CYo7gWh)gKLK$)MB%p(wnUQPI>jUcO={<VQmL3Z$oBgVAb!5@Bsmh z>mfmn8V^c2hOWqDshOZf2{&1UaSg9)x{G*8*Kj|i$evf$Wrv!ed0u+G$FmSeWMLs` z3Ag`&yg${75}xR!#)%Rh6LjG!CqnZ;d0tq)%Kq0-?2Q}tDv?w}>_>Wr?~>eM<dI3` zOS2(ADw`0G_z%ORP4>Bd2bu(xaVIRvZ81o_ihoYPl+vxjbPa`8l5ZUhdc2Wsi7*Mk z04Bm5i6vTOL+>0+<RPus-=1;~y+9FCGLDJ6CTH#{sdzzXmOEvt2Rrl)TM7w@>{Fzg zVP3P$n?hP}3=6(L%d@8Knv;(Hb=NzSL33%}XhpYAD}Vj-4EUO7Fq;e9uEveQVV$g@ zk+f~A?9VRah7tE(%Lydr)f-InVb$oeuSAv!Tyk15=D(3Fmg^q1H8Z1@#~tN69NWQn z;AlMBP+}NuPaxO#ik_RhVorimw<ft2z0&OJBTVjRhVkOeSkcuoyqzVR9_|W)AbEY} z)8?H;Dc`)~_YWmU%9f<-&)J1Yx^^yho0-&IavRB?HkzMEFN%XKBkv>qspJnuhK8C$ z?Hk+u=P{nUY!qZuSvk!p%j6_G1AN;#9o>A0=7&>St~b{e$R`DGTJDs%ui?d$eoFX0 z>1Sboe~h1<<+YS#S>Z%*ejxC8Zb+`&KtkYMmVJoP>l|WdIT2dRJZAAYBjjv#lZDF$ zNg0C7r{89FTvvXYlxl*J78Z=0)eLxk#2jkgC&lajRcS<2|Ae6^(|U?XSzQL0ZbP^J zBl*tlnU#nrqPSIDVt?q`DFf9_WKm}a+~IF)|3>r@_s%C%je|rGkoJN*FMB?;H16@- ztGX^4w1(#VDthCxnLY{_N2Bc?k^B#lnpG{j=A(MN_?@0)4dLmXq^|oK8(~jbM)o*( zOGe@`;>#4L_`|=QaVMuOuNO4uR5@QHgQ{Af?)o@_pZ`i$0+SGi3UN(V(s!T8`IE<v z`H;qSp51cdtHTefZZp|GD3iqJ1q&Gs+b&7e#X9u0U92T{SX>aq(Vk5>P73(Q{8DMk z3=-@l#>=rBg8XQM*nA_LOgi6MDQq{K{Brg73(Q8+Z6fG260UW#_FiXeM|HJa-&-sq zGE{!33d&p&JWZYRv_lsMNi0%*S*w4s+*XEDS%!5Mm-EyOIA5>^RD$lRL?py-Kvmw# zb`rjL2r184h==S75sl!MjgSQ{K0O+i)7M&D&B64p>Id%VD#34QPpSSUxo9G&X(8<z zX$hK@pnPtzd_jv*Z@U*vm(`}FWqOHxBx)|hsol*AI+vZOtSqmi<kyNu!<6)9r@RYy znjdO#)RKQfHEa10t`R=7Nwr400Z4$;=RzTeOXWrV;3*n*cYEfUTK~1|Kf7*f!}ej7 z87mhuGpkS~Z|LJatP;n@x#0Jo;|?mK<kvll5FEX9)l-8IG5=;syJI9jh-M7&wnaw> z5mRn+3U=|jj}+v*IUA<R8Er3sq*TCpyil_i#!MMO`OTiXKHdHMA9duPjh&`4t2NCv zJ<RU6Q`yb;*R3av_LAMFwa5jzjun6GbB!-2OCy>ggIHYzMET%2m&OZ;l2)p%l~T9W z)^KmJXImCQ0_i^LbauB!#qtAOu9siUS9I8tFTkv1r$q-Q-$VuFwSpAW108Eplgkgo zvOY+SuWB4yFu9e~ZOM{HZt`jax3oeb9{&ooD`ks!=gpu4gXnOW>CH9$Vwp4BtTl?; zM>Jswr*zw-J60ONPtq&vn>Kl2L%z)Cx9cNY6HnHrNkSu8mr2eyr7wTDDP9S+WXx@( zzfZtqU#4NABPFkXgI~F%Lg|kZEF1-*EdEO6`nPuQDj>ee9;(BZ%4V3*uZfz5E2JCy zcJS#8=o^vOys3xg09KZ>M{hShK(pO{H!tZ}!qD$s#>^+s(cC^fDb-i0m*05hc=*WQ zn`u_$NoTIh@6R*aeuje0wQsbHE5Y<h)JXvj$*>((m@=QjP@3>r$s!P)>NTrl47QiV z-mk#joLYUQ$AQMJj0^2dx~qP#{iHO5oSo(a|E3w}(>}rECIwI@_V4|PAIVpfs5Gi> zSuc-<K8TC^{!>=+X?*ML_1s5VC)$IAp5EE{2}NE^+&ogLxS~*}wa)?env?MzF-YqZ z+nL6420A>3>c_Wp&sx%EYbnB`Z&VC-`PBw8SVwi~F%o-mm<5zdvdz*yczhdBvOI~9 zQ(Ao&Kg(33%?5#tHjR(XITX5!kXl5!MSNs{nq;f&{2S3#_e=r{iez8$L;u8P6W4hu zeG@KKa^VQyvvyHV^WyFGJYY$8ReD|!C!4>)3-QSU;|Q=tL@;{qq;uQ`jvix$$aC=l ztlHjXla>cr47(7HrkCaFE@hDr=Qi%#XNV+I?gn~Yj`l|R3|RLXOHpsOPV4@&NUT<| z3G3xvu2k>FE0p3;;d8-M!>&Kxs-9HDJYXYM%QUL_50#{mlkOqm+J-?MW&b^|S;*mp zQ+ziHQB20^7qXS&g%#~dKajh4?=Fh;Szx>P6^%^nF*RFFlh~w<Da+*9WNb5joQiY^ zayC3lcx7(3(9X`V5BBq1s~X(f9&Fwj>W+pulkzx(f<YcO70Y1`&Ap|Z+f-goStaUo zuj5Y)W4+AY+JCl8z5Yg3ACGmG5CQPPO<3rpFU-*vrmtpX-61S_NP!}>I-oq&|LFN< zITII*{^I0C-I!g@yk~7ypY5x3B)bM!7p(#70QYf@R(ru;A3_dHTY7lnHrhuoVzdnW zh1oSM(4RucW+1PS6U$|2RRE9Bbt7zpzYys5JyqFv0%e<F1iHr-#H07m1md#f_S%d_ zsIV&(%Ls=GI26En$ak==e=#_CGv*C&X7asXyHDYCzMu5xtw5}Dnd5qwF=0fsXX9ns zXv|~unQx*v{rEk>u;t|Ohjsr%7riWh5~0>P(txU|%6UquZjoR(!4tFG+#ABL-?skX z)xQLuu{`EL4MN-qCoj%_JvKzgUp!O+-@4lu+3Z!cx@3?z@nO$r+nKdeVCh2*#N;Lj zKJd1K4x_>;{ECnGe36!d&ZkznN7;fnqfmtSNRdaq?t5Ct;tjKwP&Wk)d}YK_mj(KE zx%rF+7Y-ItZMz&-VqjMS_=o2eqm<LPafV?*a|m*pQ4%8}rOnm$k}b}3mJr?p#Wmz^ zJIRA~c&$W?L9Wa*YLi@Hfm)w+?ZI=4w`CsGA#U%BkrDY)xK*e}yu>e&K$O7?cr4%G zsJ+(NH|Q;pyZ0=|64{L}zj)qtoao*vNX_@kmjUKs;q(0NfV#$Oe<`6Q`!GfS5q&Uq zkljwZ`qn%?VKp4n=CwFN*I1yx*jm*kzN~?Em(xr7HM1!LG!q$%h5du;oLJcVGXGB% zXUA}j7Wn<KT05-rb)2g~%_}O#s}+cgpavkdc)~gJX>UNH@oa7FI4{bP4=qoAbYNfd zJI)igSdD)U%Sk%>@$pH4Z1!hYLvia0P|Ag43ignCq_zAoX8?!t+?wv~#Z3G@p|G!7 zR%dQo-khKloz84NU)mHZh^Ye9809P}Ypr^s>kUm|%oyysjWZ;gb4Gs@Y+R--uQs+I znMr>-Eow8I6!~lT{dDZK%i$5mlh)I1X;Ff~xB2A#!&S*-^K*@Ig9Shevv!7x`zq&i zLU{slyA1&G`@~aVxiZ)Dp*RYYu2&DP;3U5e__9gxdqK5HfMm5De6R%&u@O?;c4u{) zBm;k4WE&J$`4^%~I5UBsGC$;*$4CWs{q)lnO(#v!)y}1Mj3#Zob@~RPJqDEzPX!Fy z)Fn<h??uGaZacj4AQt*sOdOM1-^64OA)d{5-0{oiRd^Rumpkn`{<@#ceAEn1SL2}n z2FSmcZ(zFpHj4%O+F$n+;JM*17|TPuM8A5rim3osXwPy@UE65$4(3^W2@&3p43SQ$ z!}zBA@`4Yr6{Zg2o1@eiis#wN@DI^$T^&>e<1x*G4F3=K1-=*L&OrLG4M(gELN!x& z8Uwey>TeMcqg$MagF<glmV<qeoG#v#kIg4fTJAZ*36G+Uf1BICz>|RZzk&`O8CJIM z`N~SNa01gm({+VymDNoN1mB=dSx&b)o_TUUu0w35A+}W2{|BGK)=PdHKGH=xc^zkH zLCH%$au58r=KK!`v5I^lcg=6|rfXd*g2Kvh?CYj&VS{Yr_noLy*I!Ax_HXd|$gcGS zc>1pR7Xs=pGc0=Qgq>g}K0A`$^N*ixOdXfEZPh})O4!G~VsX2r!0qv=Rj)ZmVnBH@ zc8&Von_l@@_fEcgX!KyvVQK-Rlz+E%klF&PH=66)dyQm@d{g+&wszVZ!&zBVVDl@! zA|B|SF~SR}+OoY=Dv$lR6~;XBD?%eX_swS~Oh^IeZ2%b(G8xIwQ_N~d)9%iIt772M z-hB#Ih(FaY3a|*kY;}>(w=BV)YxF&mU%d+&_Sc!vLzN1Z-YBs2>}^ztl&K((dYgXb z@M*c0f|QU$<)o@qsGyJZQO)|cM$QIoDBg|YijQZ-r9lC+P`#vk%A63B-3^@>obt&m zft;teLu6}<;t~0e>1!6}bnwSCv#Q97bq~jCWP)(Za~n<0z7u(3Yw0j@oV~>venUl5 zRevcDoBthRaof~(x!>fMC&4<+S(keq9Q(_lZSwf-g>EZ@cz(6YPNtB)H`T4M_Nq1A zH}`sL5sviWwXBbhD!QSh*xSi|+nzZTvu-uaAb~TUh44FTxU*478yhtXZ5d;|D$`Zc zTe$UQ)mUk(REqtU`hl$pEDQQcw^tI%i7}Z|_unX1fy`Wo6ajy7r`6t$?_x3mAhj1Q zQB}<!Ud8r=7}UHKMOcLZF_Rh+xT19!5Aek#EzAkYoN$1bbXkLPR;|VUx=-iv-h$(? zQfgL7^)Jza&TK=Llk#6KB`cd|^N|alcY2LL7Ql-5B8Pj~DCygzA;koH8ZXVkAY<-5 zMgP>dBFO;{Usp=~_Vo9ir|kXF=;oNE|5p2V-K%bDzkku8jGqzIVZVry)MOG}N)vDU zp<;;BS2}mXFL~=~m29_X><PJQ7WNA>PP=*4VA9&<@>il&iFNi0i+kbY9JsKt`{8<M zj6pLMTPulnXr;MtcGf=^322&{3U1_VbZA%;F7u~VdZj-Z^?xmBcM@InwdvTs?++MM zh5K7kI^`d}@xO7Iw^hkyCu-Z2y{r1H>2UYjps}ik?i&)aJs6{N#nRFt{n{>th4m(* zNB;h8+4}GCW0a|5e)P4=C`mk3k2i`Jbb=ox4ECu!AF9;zhjr0;<C<OQ=I_^8d$<;v ziqp!R_W3N<uN=svl~U~E&f9!Oj(&f#-F8moCrz_^-C*p^CoDh;J(N%uE>+M=j{!z? z@9pF<-bw{ET;L9e4Cy)Eq)@KfynhG4y>=25apQKPTg>agS_$nhV1#j4_~B<<^7H3s zy9LiW#gH!-;Xj)CuM0VXkkSQZWeK%UA3u{LUgm8_^V}-N3yRV*;rKPs7jycFHIRwt zmfZO<7{3l|OC6*J-0uxG@oc?2jL=`L^^4ck{bwj}xTDhXC3MQW@GFErIbS;+A)wZH z;}u+Y@p>n;I1Zs<ZQ63J`6p6JiEKIM1a)cHb0$DpJ8yox<eN1l{4*FfCdMF=P>MF6 znFQ23y*6*F9ouEoseSppAW(3*gB0MlxS3~kHaMGuaMV}7|E?~hMmYN4*HH!?`x?hn zHl3sbj*)BbD{K0+iPmL9a{V}2^PD-#Rq8=e#m9sTj#kXV3m(afKndX?WY_G!1ybrA zO-QLzNa2%pVe|gw|4pB9thJImUL|qnj0A}nshu!O3S{C7AOX<ICAoYiZ$UKakUQRR z#nl9eIwr<xUEHx#Tb#$>XJ2EsTWp7O(j5WCP@UhrSESjh<wU#V&w87Z*1lc%uS=)| zLBlG2`5XvY$0{|{Et~bSqkreF$4*k6jDF-TPw0XsiAHQQ?y)|Q0cYTX7WF@KD@LHs zI&w9bNvA-~Bm>4oIVIl9ADw6@EQd$w3@JT0#)ZCrIaVw|otbj~A8&6N6-U>tYlmP7 z8iEBUIKd^jCAho0LvVKs?oQ+G?(Xi^xH~kByL0+^&b#*>`;77Z{eJeSuCcnSX3e!~ zu6f;e^6egrRtsu3h{O}^J$q_Iu=HNZn&XqkJN=2|IM-?}VC!H<^}+KH2vFt(w@^Y# zlnzVxJ?XEbdXD)d9JvxUl|q-Z<gmVBq?QR1lsV7*nO7pg&4OP)4JGA*SPUVK21Bd6 z6O7zZCf37~&{paQM0OD@eG~a|EHj1IDf28W_-lS+=}EekVLgQ*;y~$dof&jQLMb!v z)##N-N%(NMFhaV7m1KCyE_&utVo$;BMch8~a1M;sO(ztLl08G~YO?=i%EOZgNRH&V zxf+P-7dVuMv9T<S*ICe?8re&sV%7Gm41kY>0S8QJUf}KFgyj)U)xU%nOPA8L+cO^h zlwk3ifImNGW>a*NPOY0OLBJ_Fdy~_yEE^hv8}yP@qLQprCbajF2(xjG@^-@oGlYv7 z_wOek$>EKAr)DCLiF*0L!RQ7R?nX`3C0SnKeT%r;uniw;e|%G;c)H98#vx6$9XzMl z{5vYLm?hEPU28wu%}^!9EWos*)3LlM;PS2O$pifzf`fU~UEEyUSmtIN+DNdI5=o)n z@n%sCYbU24eHXXJkix;jmz0PH!%ksGs-Ly49p4x|OVyK0XFZ56ODJp_9Xd@ma%x)N zx{8CHMsxOiM6!Izb?t22vyQ8m!|}VCPbtIVE5^UOCBP-&0pv+|Q+UV*P)*o7+j*-Q z$U&5?6p6yQyiW-At@Z$&^<7}pn;0F^r)zcFuqwpc)J9)M5C^}m5BP62Gr4E%Vzbp3 zsVo5AwveiqN{uY4$PG6dwP#^jRgq`J6=>|o&Fz-|sV(@|#k0<Wx3L_CEs{v_Y#OF! zyJO485S8D2zt&p9Q|bB_$ENJ=dvlarJH?UVh?Ma;o(MTgm^;WY?#;I;ae`(C@qg%2 zqZyYfu+AI=k8jgMBX3iiQZ43#D3BRGOZJQhYEP0@qg^XGcf+!OXnu#<B&AEw+S3&~ zW8#mGH<O6PH!P>gAx-@fJC>B{>}^ZAGU2o!<Tl(Eu#c5t17oB9?dfI0_8PQPi|Ir( zm*b7wW8-T@73JN|ScE7^5l;w|WN5{AHRFG$@_u9|^+`4=o%omO!57-pOWg^kE9*I; zvzZ%JmuQ+wHad|K5M8V%!XBKs1z>Dmym&%h^Xy3#aqLzF9E<H<S$Vl*ho0j8SlDOM zcwnI5Cu6OAu3KS5q{a9DM}FXeY`Hh`X#Zrm_8(~KnHT4Z(a;EO^4sD~#y?@B!;^km zh1~l%^1NS=lt)Ce%FW=Do%S&4sQl<J-DCP{M|{T0;|OI^zz1J9tcsOI+LdN@$d~e` z$-o|?6driV>GNZq2^ft|3yo|Sm(8ee|9cZ8;Ypp`>L{k`hb$wXs>LwfCS@$W>C{5b zW#93YKpaT<7R#sD5>y0UB;TO}D)(@x1|>f5(Oq8oURW0)Ps$*qfdbU0Y5CG)jaJf< zcCp)D_cFDrrc(tDV(2q%YVG@$o)~bvA()lNqCtyn0Q7NE&mX`)40_s`bk;(e5|&eG zZ>D*)709%;D0s(DLJU3$3e?*@&SH|5r(!bF@p+vtzS@73)y?-9_8>)Q^U59w4mTHX z3Wmzlj>f(_dEWMZJOBc2&A{7ukhIhXJKY4SOZc1D7Zh}kE+dVJ<3_;&PUQ;NY1sI+ zg=;LfY+>~j)--G%hXJxM_fl7e7n6v*r&5n1S8x(Zg-G$WJ;0J9!m5}4-&rL0^!|o` z&_)6G<@S(#C^n;D^Oa^#nr3t7Ap1zEMFF$83j*m$2{l|+iyY@a^t9J~ULJq$5~%SM zhnxhEl!QCO5+Y-gH^zU)M9%v`qrHgLL)ll$?8Dzvt<?0nYA&0oahYu3^%Z?Ri%Y<R zi5_LQFTqUj7Rmd|!CeiNRPR*ZL!`5;OVbJV?UI!`3;peu3-5ibr_M{O8N_3!o{`E< zt3TLomqJPllJ{9o!s~a)u-{csVvo;nC27T18g<z3c)dNfPZ{#ktmj?ggF@10D9Vt1 zky0nA<cfmSRgdJd;8?a2Q2ul`K_{^+2nIiowk&#ZVOuSRJ_zq15`;FNSVK@Kks`GM zN`L(7ZY7a+eQC#HwiQ`mosC;D1N`VBXVX;kIyEo}zffQh4{VVxO@rmyEXj)*<2E=h z-k~h(m)U7h20WqXy&L}EY3AUK%5rXahb;cbDCZP4%WeyxnjqUh9O||DO7zATM@3p8 zH}u#2D?m3d^Vn8lB?*x(@z@V>pMeO4_PUU_Kcc>FqPuP-nctuH`=h9*^gb3|aj|bK ztI(rRk5CB;{An|8(t`q{6KHx@0TRggCh)Ek0Uh);mQK$BV`l{&z4rXSoD$7|<|5X4 zF9<vQ<yv{O6Z3o}<gsIlSMJg*i)JbboGv~%StLZXwiGXFa_31qROS>hoKhjP!-Z=+ zzuVIu9xh)6na;Bk&t+}McMD)WzPHh2OVtklHTIHp|8hUZE%zv!NhjoPy9q>S5@cLz znL9Y;C2Rl~xU_XGQdWV}w~F0+`at*XYqo(ZocJewO>c~JhXC`vJyn6n%n!OMhZRMc zR>7LG-#00*ZxgjIlrVhq)@UReM9?pAwL!0rm;;si{g?ulqG8J3ZW_r+CQma{oAoy= zik*&M)5OiMn~RNZyOv$!a$+g&jq?ow%gMsz1kZSQHJ>6H1%gSeHo9ai9EF{u^bT-b z5vKvfo@*k=k#nNX?r@(%-$^viCP34y4hfjAH#`h*;9+Fv+J~!hw$}Bf^6}mX)}Wg^ z6hHM}$OOmw1n`8JB*y;~e?`X_C=#;QW*>uye#eOyHbQ`$GDAG*tB{f+ANWk|Lt0vO z(209rJ%~L}!kPRKVa!To={r@--euwXWNn=BWFGe%x)RGJRv;<C<X<;<S$^s38i%t) zKDM9^B}eP{Ve86vV7W{_zvBYx(f8vIEgsz5zoJJR<}&5_qh0KaCT*jpv=+fEN#aEM zdDPdPV&1QjwZUTam;GR-nVi8};9et3)6+-uLAxm3`zEKQv&`IY2tScR@cpDK@lXej zhEb)-2H{PBzfGlTy#zQ-61cV_m@S@UjL|O;)q>I4TBZ0q*`qb03a3ABGI>SR2aXy3 zhu(@qmO%%;uhA>j-KQg5g+ik9rO#wnPotO;ds6#|=M%E={?Lv?OA%wrXkhQYqw!Vz zI3>aX?hi^0xgE)#xq;sRCW-i6!3;#IDnFc`JPb>wj;C?LlcmU*gMC7-)0Sr~FJzZA zA@BXS$RXqNe8zo6oKaQ5iT14UNj8t)WuL^;Fd|P74bV^8#e+u!hzbU(Fhp~H`i<*r zB#5ZB#8yrlCj+-PhlZl3^ia4ReNhHO0Zp>PYuvd|O;yw>OoP{5Ul3ntXz{743Ojhr zshNTlW&hqe9C|A*b^ggmjJrBY#B*%Cgp&EekT1FE9ZEGeP{o1PNqe^FrSO9Ak$4Y+ zss8q@sharYiq`-}hCfKRCzUOU>4{I=V6+!0N)Vag+d}C}@(1lsQNI?`@MqYZ^b+`? zd{huC7LdyOoVnw7-fFo1>gVHFXFf%z&<q0JbET73>zf!W7brrfNer!&XK?}w)zuIv za-MsHa?p42!1Z$k4Z94ly(}bLY{~XUEzBD?#_b}dYOd&5JSYq-oU5U9O&5KSl7_wM z82pybE-8B(>7`uHB(At}MYZ{q91bii)Hwz4ROj-|*JySPEDb<zTrIo)@o_2wYsh9o z{BVGJg4AV7X|YAAo|4SFe1_1Qv_G`_L-SNI;*rrWDUVy71!|#C-^_d&(z&1RrXCnJ z?S0Y=?3M7gpw?QVPkZaRk(EJCqi89v6G|vNmX+-e1ePacgX3z!Y0NAkAlUwO{*-vd zBNv&#Q@gw%nYVsZ6i}qCy@EVNA2-Jf59xk4>Omq}l`0uxD_sF=%jtMU=YzY*@mFUF z5>m9JiDm-pSV^kyaF#C}Mgo4OvN3PP<Vrlz{rBa4FkT;lRgglpd%f*A743FJds?T* z?T~FTGV+byny)uJzL_|M_u^RW)zto|)d!SJHoOzks(7t;k4PS>DeXcOC6y@s`s+S6 zI3E`;TS@o}PP6#4?rfB@bFH(_s0CW?IkG~Iv-9!j)5wJdz8F#e<k^~OFIfr2fuSte zK>MHT982J5A$!{osDz`}44PekA7phlFO=@rtQ<P^h<VEs425<^rRdVl=kgy}$BP6k zd$|D2+omLbJ5==)aV<wEO;V?n=+btV*C!~)O9XJbNMDN@_0`(u5`1!9ENx-O;NG#y z)iBj=js9@kJv*!<lS5@iT~nI!2O)XK(2I?dCU#V6+UmIiPsV_aO#OurVHCN}5M>=t zb(3gD>4bgs1689hD688^P{hyb!oJasNSQ6YCBd;rq}2(II@`okocm)i8e2yX?ng!| zN;{Q_!BMTu9BwGl9_PMM?2oVeKZ^1nBz0b{08A+O@Ti-LM7>vCE4ZI@QGqtt9{N~4 za7zy|Z`=2RXe`Rf{y~^$5uuWM2dfp;^|rtcmUh<5)w8@`@cuNuEEF50yE}8wUi+v& zkS!y+9+ti03RM>6w<R@-7~H-lZOwB-B7)H1uTP}3=<L{-Qt~!yADbG2^7%>Ck86{d z$iV$rX2Pqm&7V?l5Dw~bk{e1?mL=GfZ{_cpP1J|?=X=W=Gr^4x5uVI`(y>7XRi*S{ z53g5!H!dpg!*+dAwJSKvklAw%`d7y>Lbv^GURs^XSc2pyW)lc}QlC@fhA|2U8nmyf z`k`uMeSlT>i$Wt#YgPZV7IFf?6?(#R{rJxP!58RIH_(kN+_HH9y0T{4pNxV5Qx9eu zQ!6;G>iHnX1xzijzjl)6_Q>RVf16#K@!0YXSx&$3YjMrF*Y_-UCmp7+u}w6t+0SDt ziPXbDKlXL0)39;gx-!$zGOVc{oR0-;_NFUJ(0~#dntE?Ur_{HV{OJ3PxgvjRVu*sT z5*hO2rxd-uAEI4L1F+LEK6_X|$gn6%h6m*LkF6igicOv9B%HxHlk<AK3*PFNXN5g@ z_hLlH%i0ZM{G&XXe;=~d7xg@)y9{51!7iif3g5cWP9#CRl-}YceQ*>pa9X{yE6)8T zYCcWD{3z|L;9KS6r}{|ARaXBEm{(PQ=%3X}>TmhubFNNy<LS2wgNg(dG6TDn88D{J z<ydCE`}%Y?0;z%i<OGNx@XAqd#yUHT-QnCa+im?7ui=h9_Y+vY11+%J+TjUYa*4g> zod^qEd`@lV1>8LT;yexr@~%wUgQ;h|V2(EGJsa<lL69yIUZl8RINbuvH3uSYHdmr@ zMZ4b4YEk*mOr3|=&Acb;6>kc}FHvj_XiOd@Yv7on`x{jhP|j3Bm$CO-9C-@-@aWX& zkG;_D=Ka4r*gZ`eCS_(SA-Jfg$7mOyM-z}oYrcm#V>^kE-p|yF$Z_Eh|2P^+qR>@g zLbU-YKpF_etk>PcYstXwA<=S*njodW(E|ICjdn$4qHqx0>Ld=jkzf+)fQY{L%EAJm zX%cfH-s0qCPUiQV7joL2t69J=^9FTKXPZ@sKEo(|tSaX7@nW=~^ZR+r5@kfzY1OM7 z^h2>8i*d?xE5W7gqQyf{>-v_zeCA8PUW5x#Lc?6mmf|!5x@XnY#bm*20(*)f{35wE zzt<<qaQm)+2FwmN*m-iK#r_pP%dejd1igtLVQ5UFZ*OS40nTVZ5<JPRLwnfGfJV+9 zo>`h=jf`92PE;EW<;2NZen#lsTv=6>K*)0Cb!mWmPO;X(-2dnn*{RO5&Yv&W`E=WK z7QRiqRZpM<{{?Be(NN9!T=jt<r{9G$)17b;V9dI8I&w=>Ki(j^x?KomK*U1aZGs~P z`&T01l^V~Zwt$ZZX<b%VzLZq}#H+nH|E{7eMN5PrxY$iqJScMCHXo*+>-y4KsiLgm z{WW7U^>>$G%+Tkyq7;@PT_3R?O4=9STxxp|%!DhXHS#=QurElmq;0u~x<g9s!E>N% zH;=lI=P?3>uVWp<8OI_3v?<?GWa|4MnQ+TkXqsUfANO;h&xNBmlYNNUf7}6AOr%#L zXWz|f3Z4-AeC9(iUDqzDlsgZwE}FZDVk!H;j>*SM{8N-S^`wwc#z1{L1WDBt(axbI zlIFx5GYwiG+R;ZjF?1mD4$jifV6xGY2!cj=7?bt#3&=*()ZigA+<>?sZ_7#sd`{y~ zt@78lk9}jHKF3f#w+$cVuhzm&*YL_3uYNE|A^&0DWwIlv`zMT31mvE9T3Tdx8b+9v zNu9wuw7dW?dlhh-aWd@pP7s6VZ%9j8c}Sx!qMkT>KSIA~6>v0Z^|sjq<v1b1e|IYi z%*0xJJpK80V#|xqdr$OJV8lW@qF}3r>7#DcRDK@Mt;I4;kBn>wQ^61uFY344i6g6f z)92LQU2Z<SpQV{M&RHR&Wbu`Yb}{?NjZAo)`{s5noZe<GB3_}cvrxK19&eR1?t=3( zGjBq1PeC`P7Fo3iyg623soP?B7uWXt_dR`Gxi!0XBd8Y-<7MN<tKJ_usYg$yZ24|} z5%5Vy1c$c=Lj`fvP4kwM*eIzF$yi$M&eZ<N7c5d2NAYaMJj?l{&#J3?jIyTCkJQO3 z8@!qaafwN3vG3Egtu5^mhLJ@)Z=yk0slBD~jl=g;|La#txmuO&DXqG?ZSs4dGhF1u zohy}bomO>j4m1R?;ByMaP)aQbG%X|$kuz9|XLw(`FlG!BMcJf!3Q~PJbEY_fa5p-h zZcDy+D6;O`GGa@$UjosVn%xgm2PAmLEw~~^+3U@L^@$-DAKEWcc)y{(Q%q=sEPZEe z#Sy1PkOSvEHsgUyk4HcV=VSUKeTU6yQ0d;rz!z&x3mvo8l!}9%p3U%p7j)t=m{HQ# z3DiegWLPg#%mN%bFDV-9Tpl^PHNWg`z!*0iTVk*Ih+IvW<=F%B6c`eV2>9+YWX`CQ z>w7hI6t*YBl#KibdRVD9_5y!QvC^PLE+3e()8w5gIis5<4Wp4B?~NmhMRlzyj8f$R zMuV?($M16xM)29u=;=}_^`bm?kus$y%NmtRSiUgnmKT*RRNaooUhFoP<vVg=TAZN_ zgZ?F8V)iN26Ez7P10~qgcifAy*v1yCp^+w&Ke51EHM^u`R(YP8CE*P^5C}i;H}BGs zOLQJfa>*}M<FVCdDHJ;+jQ6US_`**JQK*w?&%DhVW@aWjC5~8a;V|~6BtF$DN0-2~ zE8=V1`63rv86QJ^R?;o>tE^z2_^8LS=B;v9UuS=3)X@2%!}W=5a?5<e#+dRdk>(6_ z_?B;$|FenQJZ=)ZVSke8dO^5+@-Dj=JRk{TV4nWH;7IL3h1D*z?pVjgBngjj%=#_P zm>Bi!7w_4#-Y#w0(@u1^Y_NL%Q#oVYJ?sVDSvmMscCAX!g#<zh=k#oIr6o1r;W3h_ z3u=00r3>rs)54}nI}=>K47F)J{-#~$pUvYKGoy66>tlZ;ti&LC{rJX>!V)C;lOV7z zYE&N%^ft7Pe#eNK9qCCz$WL@1te-T_)A#l}{xFeC`mE%*&=aNaq;!?l=L1MceQ5av zQ!R<i<-+@fr*Bp}`LdzP@@D||L?0oL_{CiA<Mla2TW34CHPcf#j$jva49~Jb%PwbC zq#qv63{attH4OzkNb1&+Kl?l(Z%=CH!>C93<r%hsyQ7CVm-~J3!8>qqCg7#nXL*5r zL=@|e+T-nY--Uu-WktU!9d1f1ez~Y@6LSd>$#{FlbRziDXx)3XY20|m`}g=gzo)1M zLv<}B&L^#3&O@!IlsY=6!KJ@~;k`cA1B`7$V$%~fPnrg<I)-S7)YPTpxt0_ZotD{) z($9K|ptFA8gG2<MjRAISI@VS(VdQ6eKl{>;)7D0zxo*rfF+64YtdnJvJBTtf7$l1? z!Q%Hct_LTbL>vBb4gBE(_Aq?dxn*UNA%4FxFfhoXH~pE&)&;uq@s6Tj1vB~KGq(|9 zg?|aHz0wqhF!8@7e&{16TyIibV>=rgv~1<tL|avPBf4b2=cnoFbN99b8~aD<dkjc! z5ru0b!Mu4m)Ii5-i;*Ux@fo)CFxa&e<=w8mQ@JcJ{H$uXFDp`COvx0a%V5zDmgOa` z3&1ncwOtq~V@$A-9p#$&5`14N+lJxU-fX6uy*51=@Fq9NZ~7Esq+>GfC}8%Hatj)i zhUB~hvzM+JCw?4`w-65|vlA?q>UfFy<~eY`uWEZS5NDHeY9e-XqO0h3>l^ijtco|5 z{ksV3mc!Q+W8=*DN|5-=XMfA80BzYM-Nt(Kv)Uz=qh-tMkPuOKKFZ}#G5%xp{YZTt z0xZm&CQoqLRS;x_7Y+0t<(}hBWq+U~ISLk-ms|+SZA}&8KO`8YMK^LLDIt=%WyL0# zG4zJ@A9HSIVmzr3Cia1lIMOT(7)_S16~4Tu{eA4-KLuxr!e?{esoy%c(V<8QcK|-u zw@BNkrvDAqq?3H|+@L;o0fY<t@QR)|zY*(oaoauY&Kn3RiGrznTaEkvhpqABA)O9? zL4dqw9M(3BsKd;DdLXc_K8$$)sOPbKxUNxCcg%T^?<@M4G!tTK0@?IK@?D<#4`O92 zLHyy)eg`l>*S5-Q&9?BavZmo$d2ea+-w@V62v5IYw#y?XL<~ZwWLXZ&um6)0JwBv8 z(<dXs1(Nse4in1yzx0LGRz{<QiAubwyx8`QF`o>=K}-}&u^FhPBLX7-8wB#Rg~?3w z@JoKVW`pub47GY@52FSkBcob&{VxnCL?D~}-w|`OPbk9$WIlObwI;hyn$-{_4Nar6 zHDC?|>S7B{eI>coNh@CI5Vl<F$l?oU>3R-uJulJh|8gGLQS)EuRd-4BhqHN-dvnfP z^#**6e?hQ+ue9x7v?Dt2z*Af99$2gR_rIhUpkFo4nfxAf2$5}BuD@to_VKD43SZU# z=am2cAO9iL0B8_E%&X;w_S6f`uQGZAt-;ADce?>P_w<NqhMJmR)N|hg5Rz*XfxU~s z@ROeXlm$uS_y0Hjbny>wMu>4Y_&;~|{|@y3j2puZ;fd&6kgO2?b07bo<Nxy!6@s-L z{L=s5_w#>U>i>(VwU9#CEc>D9!v8t-zoYSgef|HZpZL!caCXIXfw6rU-Wx>M#2_KA z$@iZNw}t2nVb-2MV%VP>)<`N@KZL3=nkF{8Zg+)H0;I8FDPxD{W;R2FU1-0cw!c#v zfOpgS6S}^6esyS4SBL3T`&6&OPhm2_fO(FZMZ)%OAN$QsrHcXU1Mj%iYY<VmI%)@X zP*!v^5xNK8gXE=6*IUXrmrT0g;arfb_ITH$vz=TzgMS0TD(T?bW3C#%g`-h@=KB)) zaT7m95?zO+rOks^YWiDV|KEMdfnM17ff!G;;_be8D-WOKhh>)Nkk8l}IJ?b48!iOs zt86?}Nw2S7J3qIFv!M~f2g1l{2HHn-qa*(CYrwd3f2^2C4IM$ubUKyeXqc>Fv)j(V za}UgP;`5Xre<~viG3*Nx{~Oy_1~~b0FZE{60qypt@D8(d4nORD-5(v=vq+1riR~HQ zbwYYi6h3injaG*G_KUbS1RQMG#c;>Rp^3x^3m5!fIF`b~j7_ucvGXNEI7QZ+vo#S~ z00Tx!W8W#F@>++#deN!d%==$3k3l2rE1=nKZv=c(n*3~hd79NU`ZD!$hQ5<mWL*<B zO%thjad1sPGfytmqfS|;$?n79?6pFUfZ%)Ac@*O5Ek#TF?fcn#pO2(~3EyMV!~W*d zpy69SsiK6oLEq8!K>E`rH55C9qH1=U8v(XR9C+=0za8Wc?|BES1g`vwUkJa;sPm}m z@O^5$3zF<db#eLO2o&VAs`yMa3SWh{`2nYGeDvE8*~y0ab7b<(zD?-*B+<uTPZ@S) zW-pF;-<Gj&eSGnrA%gPVem@oabzib{2Mm0=W8nLX2z-c2O=Xj06Wn+8tD$^~rakRf zk+cnf{S4un&P_C|(|y?^vLSZ_Ue&L0?%Gm34)wX`PZ@Uv^6!w||I+L#)L9s>O2uII zI3AA)ILM=yg#3q1#`>S^Ma9!LjW@8qzCc%r=X{lL@`kzj#n4-e)a@IyPxO)6?djS> zO^pZB$IiZ4Y;F(S#Z9tK?;*w9DK3>ALwSuG{(muG<2_OC4fHYDog-TYtnqjejpNfr zAt#5nqhcMZw}T>vQBNyVF{B6nbBx>h+g!zVhJ$w>c1e%<Rq%Ff?RjX`M!PUGyX}qE z<x7yJ&}u8Vf0O5`=QEW{vUpRI1U~qOFO(l^Cc#7(7Vuon?c<e1k<XtuRJK0{fjdbR zU5O`=DNQ=%@0-}+(s`BWWo<qT)in#BkY{4OI={RBNy^;+LHKb}6kgbA9c>17^y572 zBIe<^heCpEr@$vQiFMe#ygmjTN(2VNKT;3*PeP2o@`!BNk}plJXG84a^T;LfXW<1K z(9i4Bsf3P+A)af7_1_T5#sH!^C0OU4sb3SXO+%jXqOug+D|fdna?i}##9HpAk1uEg z_b|duApM0kA5Upc>KClASMM9b5IdP5&<}jjoza^uXfS?N&u*TP2~=2O5TL!|%sj*2 z;#TmcEya5cHsBt|hcF0qmkf1JvnM~gzAvoeJ;?{Aa%oVGW|m^U(swF&+Keja<SodX zFWIz^Zs9)_9KD;ej|Nx<Yclg>WjgR3MWf2N8`9t;YVUv`yPcpDe%DHli_7Di@?u%k zuv)sr-$;0rg*v*9zrk6FHAdtVf<AZW2HrjIq}+>>orYzu?>RSEcqL6fq@&J6U$C_} zg)yReNB9)5ESIRT{K!7pYS-*f6ZJ=8-$$c$9D3$TvrNTj>~!>CgQe^Hsp^M`MMpbP z{e@676bP*Q8AqB=ZApbXmmu$HcLVf3V;#a<b0S;UF8!ybFDXk)uPI02ENjI%(PQ8E z0t=?@Owoq1{2&m+z?LLr6UhF>y)qV%u#mZctuh#w^erG5rD+wB-oa{awR-QZOr6Xi zPYvb?>*MlqSmumf#|YdFg@!$#WstIyq4TY&$Rrr=pW(-}Wn=;|AZT)lTo`3Md@_Mb zU6V%p9m)yy2gSZ%R6OcIZC(wGZpTY2O}23CO&$`iU?j|4%C#S7?IT$ee-$n9^unz4 zh)VzJ8@x123W~04ZkGGED^$N@nc9a?wYE}qw3r-n=N>1LO0;TcA=u3{e>NbqLO_x9 z$JHsuCgAzp9t;9wYq7~h;IoOnlVox0QL8}H4qTb>Sp+njoCxP4x>hV}GN5?ReJ|=l z4NT!ytm^u)Ym#LJ4;H#bjLd~D9LGk&p`ge4DTCo<Rc*GWjY7KIklRuxnEu@Gd8hGw zlYUU!tZ+okEFB;|cB+^xp}R=c`q0VbyC`f(8G<IL_sF2P^6)#O*rQC|vG>hPFbEkN z5JiWzE0PL;(tG&VCuab<oBxXz<3Dae5>l<+23#Fq2&-Rwt_?cOyo;ps*BJeSkg$a} zlZh!JU|Y6tS~mA*VUzzd!1eY9M)_ba%Fx8>+LlaSfu@stUO@0X8Hi)pBKvqY5?yuD zb6r=t#U2&%^-hJH0#ArT7zpqtj4#Jq%LZ>dL?N*u)Nje<SltSZL|XAWqd{YRnd+e| zL>!kNc4J}<JoWoe;G5QTAz0XR_IJ|$W*Z&SeU6NrC;lC;i*M5-c24_*f`uFY#@`{f zMWAmdXv&N*qt*ZLU30=N;y6K<mqV0y&;Oyv(gTfkBbzFa=M7w77m)j{W4>`A9qV28 zPw!LckoX!Z3i=nrFPn26EO=($&&mhx$PV~~opPgumw7h}NVU)k>2w6dZ8(M&w*HZC zLp55Uvysw2s+Rn4{~6*R6;x|rOz+U=4)<iyul`P#s#AiFOw3)((%L$Swp#>oJJU{A zXD7Dqa>LxsNhSP2pCLyp;?;N<;Mknv#0{M3#xR&&NZk0Oa~1NQ@e^t9Lg9R-O`N#y zabYGG{Y2cU!pt4jxKIE|_>sO-Olj@$@Y1B2e9oa|p$Vm$+9`PU4()cJ*1{(Cc_;a1 z02Uy;Bvc<5c*1@Bt}5`ZnA2b0HrL&4Mrn^_d`**$u4g0p2)z>Q4GYLd{yIT???iUL z6|BX4oOZwkhyuN5<*(_<%9R7ccqDNVcsqog%a9{TSDwP(Al#guH_Afrfh<9_Zi;1s zMzrVOW$nLDe`{)!TKp=BVB4L0X7F~aI+f}dPT`2MF+F`*`XAB+*!>7jUE5?5Y#?g7 zgW3kuAv6OSO<EQg=e5)EYV4T0sAkC@SlHUSn_P1=Sn(|r-_)>|n$7K0=>^o;{3psh z8h)|n%F_58rA2&r>z)jFWU(IZG|kfL_2?mQtkk<>V&IckX@AbpVnuAgOcLr$4zxN8 zAkS@cR&~3gcwM%^>Z4r<H&8eLe&t+^+NMAca;JF>`x~9Zt3-F4vylr&;J)!m-u3q9 zP8<gx<3n9yn+qfhaFM)T{@T*~2ls;DHXgKL(Bjdl=MOs;1DD$G#GT&PVeON)7S<o0 zFXY|N55fl{(GPuYQkRge1m=dYy><(4N`FjKt~T;fZh%f;@I^w>d>(k2daEt79NpsB zKJ^GNLsX3--s0v;Oa(Z#jPIi3mncWqbUcVYMnP8i1|+r*k3PLviYE}f!3SKJZohz? zL4b>j@4x~(r0Wp&jLbNwxfm05y#T$*<P9&lm%pYI-Srm3gml&0S0WTJz2=j^RPnE; zk>dKFuQ!e_*>(1Va)vzUnGk1^Ge@~K9<4g+CPpp&q-0>NPdJ1^XSu37GydU_b&&*U z3`ioq^4Yv=dg(qn>)!Q&I6g3f*{heReG~y1|3cldmsEV(ea60M@egeKO0-!x;V5y& z<2&8E?1N!~_5R;oQu$cWv6auN_r^=CfP0w7X(d`r(f@K$4pr>4&MQms7;eb%1o@9a z$Op9xoJZCcwh{>Nc-MW76b$Rf^ESNJ7@GlU`2{!1ynmvmh&@=|s1i)Z(Qk!-lt0e& zpGul9SPeBGOcr;-B*ah46ta6|$TR6tJc%sLxz~4&8nj>)2i}d84V<leEe;b_T81@d zi{`@3H{X0B3Y-;R5(b6!yVEZ|-Kp2HRK0_6%n#}nsZ)(m?pO+@qDoM7<(~@gc~61> zP8&v2Q?xMbJBnQ>_+F?-49b(PagY@I0FK6C5?wZXCDyXh-abw{bMY~br~*n)nK|@% zj~pZBfBmbCPq2CS#E=Vu+cfhYDHli{gHTMvQ!=utMqinjmuaEuPq-Yl##Fs5r?vok zD=s$d;FV7EETuP(C+f<|;Ud`t-l@{@J0fFifY7qZVI7+(gnjaR`gQvf5&CPhTdGP{ zGJ%&F<T^U$NWgL~UPRgt5aPPyzl@h#ndoem^^&x5P4hF0?X*<G8<qWWtsN4T=Xt?p zb@t-B$-E_b&t--CzTEK3^Q-tE??$(7>etyq;Z`X&wi2%^hbET}WT=_dPqjBUGB7I^ z-j!6VGj)fY*CrA28#(a~&$RFB>2#fS3N=QBEZNo5)B#<g1L%pa+fi;sb>?@s%qXf! zfx?REKbq>YVY#53g3GFHv+G>L&-0zTH0cs)4z$&jPA-Bh6MC-935%y`%ws3_e+#?m zblz+t1uh<xQ}K+2M+cdEkGy=C5N5HyM*5I0fwdB9Fid=<4AGC!xkfa_xCn9mZjJBb z&2R1;N&?SrmhtT$d4jL^HxR=fWs3za^18tv5Jt$6M8L3h={#S^Kk#y)Qf+TrXkV`2 z=L)Ljv$)2B<BDGvNenMFJQd=VO*V^%U?;cEUjozk>`q$Eno;%tf^^y)9{D#QEk1+- zxA|h9MU8tvL@e;>Wd1PqJXJe<?k1si&J#Zl8+#!;obp%}+-iat_`S0@hUD}i@j6w- zYfKxzDf%APy18OCGT%%5TR(v2AYPa^NOPrCt(&h6aZTek|KL#;<H#vZf{~wO_qM)3 z>NGZpfO41?_5FnL%#+Kg&E4s*!^Fq19PXaJdeabPfd=p*+|i&6``MDyKb}}?%#^K< zPSX%grQQ~x*9w$o!J1a8<3<gV+@ftNl{USDJgxCt5`tqt7A7{Qnn_!UPOmSt^T%GQ z<|*hc2E1?MJrg1(*Liu0lRy__MKe6)<f+9y*c!w-Y;{meI#_db`7<(yx$4ihpn7{R zKPNXPyd{CO;xYWgir0dn{I^3cVi~V(=45^xVEz|dO?4iTV{93skvqty4HRB@MuT+F zpcdQy!s{=BqZyKvE_$F4w9d@JrMt(|QZUdTMvf?{^#=Te2BvM2SBoA^8z&H5p2N1h zF)iB#qbhSMBD|vL^m^|^l!SGPY{Z_GEVdB5w|0&y$mUjwItT7b-2)FwJH_U@jh`j| z9O|zOmd82&We@3KhWJ-L<5E>c{g~Pz%@NG~ejEjn=-L@N%bsCjB@)R!lbKs)K^8~K zI_}4pCD}5Hv>+A=h8sjCMv2)9kTLLuiOx44Cu4<UEYC6L!81$9Z~OdtoeHWp?#%h? zsWmK!kHY!1<NUo!wdr`?<Nf~f{QQ}}=-EqUzN5<ntTOM_R2qVSvT_%C!T3dHcO}f= zHnjG#JVQ%j^Ws~RRnmoBzGuRjhyIG&{t|<_$y`P(fIik#EbXXJ9r)X-@zpxV8#aow z*z0%d2HdMSX0gEaYTX{X$aBc6cN>2w=oB(#4qaLu1k=_}Nn*nhTz4vlVWl77ufj94 zDNoLXkC}Wk<j==G9U13z=V^UoME)km4<~O#L$KKXOE=H6lfgk4Z`N<OqV&-GQK1l$ zc9uQyT|ZU#S#6CNZOIFD<>$$B%<ce}?9IY$LYQU?5J_Ph`QV@@cw==X-Nohv)1w|U z+bVBH-G*kpyqDiTPrE!1Yq1U=LsvaE^~vu1RQthOp!`$f%@>CZa~0{ov;ZQWM`zQa zVeus2z4`3MqHLZYwy??GIrCR}&iNmw76khVQT`HYJ!g9s=4fMPoT|~b^r+$lRxOJC z5)72-X{~$o>n4hRiW(|4OufroM14R;EYy5IvGXT-vCrc=-S8bgHk+e$%Zf%lF_N79 z8)fy9`aWKQer)yILn+_ay@NxvLU+l}-04Q|nCRiJtWWbB*i#Rg-Bff~+~!%oZ=^PG zPSrEZK$Y3cAE+OE-qLwCvH6lNEBZR9#Y%W}WdEd3xDo9+Ps3w&o?syg8g5($-;L1c zVt-Q?$aB}LF;)(9QDV*G``HK!U+S2xoQy>Z{)TO3KT!Ntwo=U-PkP39;eP*F%UNPf z(+Lh)GdxP_gsgY-YF)*>nzCMyzv%DI0y)^n$l1NmDe5c1`^)cFQbKL{r+^k}Zo&}9 z@#4A^OV&p!UxHnYuQ<TKClL}jZRqrJXPKOGN7a#U(IdxrN3wja?42FcT!%Z-6s2v2 zeQirzg|@k(cr1C5Zgqkx8%`Cvre-ii2lDtW<}bx-gk_4ib&A%R@!`!nU$9C<7^Buj zjLR7i1o65!xI{^#&PIHe@}UJc%|CcjYg!%u7UBN<IQ#Z#WrfQCY;pG5&fu^Ks`@sV z7r1UPTe!WOc?a$7u4$T&KYogC&u;5IisQ#+dMt_&+1feKWGDYP;8i$wd)&f{680x8 zC*<&~V{);i#(_Oq{%qP=ky{uVb8XICBb|*qMyxBk-or|Z1yt0fe^+wSDg6BAb8FrN zG?1^ifdX1Z&dzY2Zo}^HT;_Ojed-H;AiY!PE{LF2(3N{th!XNAjM-+X+IxzYoqVT> z=4;c9b3)2BV|0afQ%#7xw(DWrxTTSK-WyFhzs3G|Vhd*2gI8?H_qX3|)nk>L=uqU{ z^%E(Wxx`!^C}kEh3)p3C{Gl)w{#HBM9P_S$)8)DTVZgkassdYD#{wnak8|GKDe=8G zHO*nE8?tQt3LB6t=kKn_Af!GMWlYh+$<<tG1|^P9I=tE0wgG1U;Y=Debty^^cd$tA z`U$$Q&=9#6RDOo<8rtsT&b3SqWPg+)e&z8IF=OcTCzsQBgF907-U>(VI5#4%$~#dO zCDVG32bGMzZQ-uBAnK+1fVOaXsXo)_f*Nuakt>xrH)i5mE~T`|VxS0`rR_Kuzsquw zk1c?A-6*pUZ5?Dtfl<_L4h6##jwfb`(#XiQi6SVaNa9ApZI*O4{hqf_*A|pq{Br`p z1!LS(`&}*<_{u^a)1uuKEn(;MytvRYxZ|4)@43<nfVvY~N94kjuROgIN=A<u)UAH^ zypB<$gPU*dB6|ftJy!$%k-8r%8keYp{Gk$xzO!(LW(4VgWdksDy#$_}vAdM~iY{u6 z)q7ON+NKe}`9UV{#OQYfT2uM0u)gf2;M4AsYhn;Rxd6e2@*6WMZkjK>QB6DyLj+O| zvv4OBouB<S=j+n`9`*+4k3|x)Xm^w*(HNZ9bHE4W7+o&S9H$?hku-39t!w#K4zgv= zTrGuk?sK<C`%q>b_KKC}p}~IMM5`P>xrc|-A}%9_<(|Hy9;X8Rka0>-&2{i3p7`pg z^qU@At{Scho>3<40)LskAQtGtN%uQXqY@W2?k82%JS(dY5%VDr<26EkS(oCEm@Rfl ztJ|rUb*}VW&w`}W3jP@)GGkp=`Kq40MPpz;jbUQH-VZ?xj|+HzWz1t6JZs}QZN+ic z#2YDg0Xtk;i87kMGEM^iFJSv=dF+snB!m2VN7OCUQ{fcszbQw-+lK_uVILwd$T|2E zA${H%k=kG0#on`_a+g{&zO+PW%Ce2T&aduy(Ikyl^<rT8v?5HSQw#p~u+hWU<Mzqh z(9pEid6alGn@4GRAGTY55|Ke~)zhwDsDr8?R{!%Fx)+=OA?DSoe;N%ZiTiaH8%sIo z2G^JnG{-vXq6LX4Cm46=MRvN39;oRSlg&#bpfKrDjJ3^iU!g=xSL24mn){5sHbL#J zQ5hQNVK&z)UH0=$4OfdHSkRul9Ge;4F-gYQ1)Q6dvB=a!{b@kH$iXW{ZduM_3pb?n zUV-4VRc9X*!NHcNrOFKDMO5wf!5q4@k48p;Gg)Y4p})fl6gv~~O>Dz2hjWanN#iOT zdB;?IP}xWG5Uq8tGKXH4AHlicWc37>0><l=<S#`FflowFMC>=IS_5%ugQ%yG9r=I# z_qHkmzTG!PswM-S1xMDkPy`LpOA*aa$a-j+`Lw<h%-OrFEM+@Ja0?cCF*hG)Ar`Qx z+5EmG6-ZqudGN{=prE!svd?fAbewIB|DpEb@#Yw5i8_x6$;-g;r1(~MCP^5c-b`ah zKYKGe3?V=2DC2RM0T*Mdz-cxLDB^%ZBb)Si+W>;^Ew)$gx3qmp_$@^iI?Iq}NkZ9` z_0c>*y3Sa%)}PPtiYX))ivI)q3*5pz88B>}C`2iAMF!LGCEtGE@SUU^rRi<J$2LJG zUAq$GF}khXoHKp$Logw~Mp;)LX$Y4oyOC4|V3GxbqmuC#HZKs-*e{J}DC?0!W8VO% z8ETMuhLY=cx|8=-sM(W#3--=Y)GH?S9Fh08NU%%iS2a}CZP<vW|2#&j5ES67`WCj9 zOH=`pqF*_zD4v`AL<u!=GdK3}K^f?J<V%&@k%>TnC0=-gYwjZJhjeh<j;;yUZPSa) z5HYFLY0EXx6Zm`sOJjV>#7nm!?y!<}A^cE+d5w77ritCquI)L4Ql6qyR9ECE$5u=b z&flHGDU@Ncyian?D!qYiV%rR);@FjRMsrNMO6nKE1C@hDQZ*+eyB9D<CiT^q!J04` zsW{+rfz%}@b^zT#-2<0NED8XjZn!fzJUDkmdN<grz2)XtjLsnew$~)~H9JHCN9his zi;PXDAcswCWIe%ukRlsV9TEX!^MlkHF+~C`LT3ryfuc8P4>%{Mimd)#Ppk?uISFPN z2unNDtOKsuW6}$3{*j}i>upaYl^&IL0V95e<b-gS8%0D}N*$k9i3f$7T8n09_dn$p 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 P`%-$XCSUpLUC93dj^%XP literal 0 HcmV?d00001 diff --git a/_static/raft.png b/_static/raft.png new file mode 100644 index 0000000000000000000000000000000000000000..ad9fa1c92c06dd14584c03ea4b18b4944575c087 GIT binary patch literal 181749 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 TYS@|kE#OC8SqEMVvkv_~H}CVe literal 0 HcmV?d00001 diff --git a/_static/raft_idea.PNG b/_static/raft_idea.PNG new file mode 100644 index 0000000000000000000000000000000000000000..b3fe93c864ef87e848557fbba7c0f42943a39b6d GIT binary patch literal 121926 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%0DN~jjt?WW7Q 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 literal 0 HcmV?d00001 diff --git a/_static/raft_reward.PNG b/_static/raft_reward.PNG new file mode 100644 index 0000000000000000000000000000000000000000..f69f56e81df52f35a72644eb8f2ed194297747b8 GIT binary patch literal 221269 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 literal 0 HcmV?d00001 diff --git a/_static/scripts/bootstrap.js b/_static/scripts/bootstrap.js new file mode 100644 index 000000000..c8178debb --- /dev/null +++ b/_static/scripts/bootstrap.js @@ -0,0 +1,3 @@ +/*! For license information please see bootstrap.js.LICENSE.txt */ +(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{afterMain:()=>E,afterRead:()=>v,afterWrite:()=>C,applyStyles:()=>$,arrow:()=>J,auto:()=>a,basePlacements:()=>l,beforeMain:()=>y,beforeRead:()=>_,beforeWrite:()=>A,bottom:()=>s,clippingParents:()=>d,computeStyles:()=>it,createPopper:()=>Dt,createPopperBase:()=>St,createPopperLite:()=>$t,detectOverflow:()=>_t,end:()=>h,eventListeners:()=>st,flip:()=>bt,hide:()=>wt,left:()=>r,main:()=>w,modifierPhases:()=>O,offset:()=>Et,placements:()=>g,popper:()=>f,popperGenerator:()=>Lt,popperOffsets:()=>At,preventOverflow:()=>Tt,read:()=>b,reference:()=>p,right:()=>o,start:()=>c,top:()=>n,variationPlacements:()=>m,viewport:()=>u,write:()=>T});var i={};t.r(i),t.d(i,{Alert:()=>Oe,Button:()=>ke,Carousel:()=>li,Collapse:()=>Ei,Dropdown:()=>Ki,Modal:()=>Ln,Offcanvas:()=>Kn,Popover:()=>bs,ScrollSpy:()=>Ls,Tab:()=>Js,Toast:()=>po,Tooltip:()=>fs});var n="top",s="bottom",o="right",r="left",a="auto",l=[n,s,o,r],c="start",h="end",d="clippingParents",u="viewport",f="popper",p="reference",m=l.reduce((function(t,e){return t.concat([e+"-"+c,e+"-"+h])}),[]),g=[].concat(l,[a]).reduce((function(t,e){return t.concat([e,e+"-"+c,e+"-"+h])}),[]),_="beforeRead",b="read",v="afterRead",y="beforeMain",w="main",E="afterMain",A="beforeWrite",T="write",C="afterWrite",O=[_,b,v,y,w,E,A,T,C];function x(t){return t?(t.nodeName||"").toLowerCase():null}function k(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function L(t){return t instanceof k(t).Element||t instanceof Element}function S(t){return t instanceof k(t).HTMLElement||t instanceof HTMLElement}function D(t){return"undefined"!=typeof ShadowRoot&&(t instanceof k(t).ShadowRoot||t instanceof ShadowRoot)}const $={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];S(s)&&x(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});S(n)&&x(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function I(t){return t.split("-")[0]}var N=Math.max,P=Math.min,M=Math.round;function j(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function F(){return!/^((?!chrome|android).)*safari/i.test(j())}function H(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&S(t)&&(s=t.offsetWidth>0&&M(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&M(n.height)/t.offsetHeight||1);var r=(L(t)?k(t):window).visualViewport,a=!F()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function B(t){var e=H(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function W(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&D(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function z(t){return k(t).getComputedStyle(t)}function R(t){return["table","td","th"].indexOf(x(t))>=0}function q(t){return((L(t)?t.ownerDocument:t.document)||window.document).documentElement}function V(t){return"html"===x(t)?t:t.assignedSlot||t.parentNode||(D(t)?t.host:null)||q(t)}function Y(t){return S(t)&&"fixed"!==z(t).position?t.offsetParent:null}function K(t){for(var e=k(t),i=Y(t);i&&R(i)&&"static"===z(i).position;)i=Y(i);return i&&("html"===x(i)||"body"===x(i)&&"static"===z(i).position)?e:i||function(t){var e=/firefox/i.test(j());if(/Trident/i.test(j())&&S(t)&&"fixed"===z(t).position)return null;var i=V(t);for(D(i)&&(i=i.host);S(i)&&["html","body"].indexOf(x(i))<0;){var n=z(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Q(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function X(t,e,i){return N(t,P(e,i))}function U(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function G(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const J={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,a=t.name,c=t.options,h=i.elements.arrow,d=i.modifiersData.popperOffsets,u=I(i.placement),f=Q(u),p=[r,o].indexOf(u)>=0?"height":"width";if(h&&d){var m=function(t,e){return U("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:G(t,l))}(c.padding,i),g=B(h),_="y"===f?n:r,b="y"===f?s:o,v=i.rects.reference[p]+i.rects.reference[f]-d[f]-i.rects.popper[p],y=d[f]-i.rects.reference[f],w=K(h),E=w?"y"===f?w.clientHeight||0:w.clientWidth||0:0,A=v/2-y/2,T=m[_],C=E-g[p]-m[b],O=E/2-g[p]/2+A,x=X(T,O,C),k=f;i.modifiersData[a]=((e={})[k]=x,e.centerOffset=x-O,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&W(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Z(t){return t.split("-")[1]}var tt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function et(t){var e,i=t.popper,a=t.popperRect,l=t.placement,c=t.variation,d=t.offsets,u=t.position,f=t.gpuAcceleration,p=t.adaptive,m=t.roundOffsets,g=t.isFixed,_=d.x,b=void 0===_?0:_,v=d.y,y=void 0===v?0:v,w="function"==typeof m?m({x:b,y}):{x:b,y};b=w.x,y=w.y;var E=d.hasOwnProperty("x"),A=d.hasOwnProperty("y"),T=r,C=n,O=window;if(p){var x=K(i),L="clientHeight",S="clientWidth";x===k(i)&&"static"!==z(x=q(i)).position&&"absolute"===u&&(L="scrollHeight",S="scrollWidth"),(l===n||(l===r||l===o)&&c===h)&&(C=s,y-=(g&&x===O&&O.visualViewport?O.visualViewport.height:x[L])-a.height,y*=f?1:-1),l!==r&&(l!==n&&l!==s||c!==h)||(T=o,b-=(g&&x===O&&O.visualViewport?O.visualViewport.width:x[S])-a.width,b*=f?1:-1)}var D,$=Object.assign({position:u},p&&tt),I=!0===m?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:M(i*s)/s||0,y:M(n*s)/s||0}}({x:b,y},k(i)):{x:b,y};return b=I.x,y=I.y,f?Object.assign({},$,((D={})[C]=A?"0":"",D[T]=E?"0":"",D.transform=(O.devicePixelRatio||1)<=1?"translate("+b+"px, "+y+"px)":"translate3d("+b+"px, "+y+"px, 0)",D)):Object.assign({},$,((e={})[C]=A?y+"px":"",e[T]=E?b+"px":"",e.transform="",e))}const it={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:I(e.placement),variation:Z(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,et(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,et(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var nt={passive:!0};const st={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=k(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,nt)})),a&&l.addEventListener("resize",i.update,nt),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,nt)})),a&&l.removeEventListener("resize",i.update,nt)}},data:{}};var ot={left:"right",right:"left",bottom:"top",top:"bottom"};function rt(t){return t.replace(/left|right|bottom|top/g,(function(t){return ot[t]}))}var at={start:"end",end:"start"};function lt(t){return t.replace(/start|end/g,(function(t){return at[t]}))}function ct(t){var e=k(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ht(t){return H(q(t)).left+ct(t).scrollLeft}function dt(t){var e=z(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function ut(t){return["html","body","#document"].indexOf(x(t))>=0?t.ownerDocument.body:S(t)&&dt(t)?t:ut(V(t))}function ft(t,e){var i;void 0===e&&(e=[]);var n=ut(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=k(n),r=s?[o].concat(o.visualViewport||[],dt(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(ft(V(r)))}function pt(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function mt(t,e,i){return e===u?pt(function(t,e){var i=k(t),n=q(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=F();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+ht(t),y:l}}(t,i)):L(e)?function(t,e){var i=H(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):pt(function(t){var e,i=q(t),n=ct(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=N(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=N(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ht(t),l=-n.scrollTop;return"rtl"===z(s||i).direction&&(a+=N(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(q(t)))}function gt(t){var e,i=t.reference,a=t.element,l=t.placement,d=l?I(l):null,u=l?Z(l):null,f=i.x+i.width/2-a.width/2,p=i.y+i.height/2-a.height/2;switch(d){case n:e={x:f,y:i.y-a.height};break;case s:e={x:f,y:i.y+i.height};break;case o:e={x:i.x+i.width,y:p};break;case r:e={x:i.x-a.width,y:p};break;default:e={x:i.x,y:i.y}}var m=d?Q(d):null;if(null!=m){var g="y"===m?"height":"width";switch(u){case c:e[m]=e[m]-(i[g]/2-a[g]/2);break;case h:e[m]=e[m]+(i[g]/2-a[g]/2)}}return e}function _t(t,e){void 0===e&&(e={});var i=e,r=i.placement,a=void 0===r?t.placement:r,c=i.strategy,h=void 0===c?t.strategy:c,m=i.boundary,g=void 0===m?d:m,_=i.rootBoundary,b=void 0===_?u:_,v=i.elementContext,y=void 0===v?f:v,w=i.altBoundary,E=void 0!==w&&w,A=i.padding,T=void 0===A?0:A,C=U("number"!=typeof T?T:G(T,l)),O=y===f?p:f,k=t.rects.popper,D=t.elements[E?O:y],$=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=ft(V(t)),i=["absolute","fixed"].indexOf(z(t).position)>=0&&S(t)?K(t):t;return L(i)?e.filter((function(t){return L(t)&&W(t,i)&&"body"!==x(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=mt(t,i,n);return e.top=N(s.top,e.top),e.right=P(s.right,e.right),e.bottom=P(s.bottom,e.bottom),e.left=N(s.left,e.left),e}),mt(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(L(D)?D:D.contextElement||q(t.elements.popper),g,b,h),I=H(t.elements.reference),M=gt({reference:I,element:k,strategy:"absolute",placement:a}),j=pt(Object.assign({},k,M)),F=y===f?j:I,B={top:$.top-F.top+C.top,bottom:F.bottom-$.bottom+C.bottom,left:$.left-F.left+C.left,right:F.right-$.right+C.right},R=t.modifiersData.offset;if(y===f&&R){var Y=R[a];Object.keys(B).forEach((function(t){var e=[o,s].indexOf(t)>=0?1:-1,i=[n,s].indexOf(t)>=0?"y":"x";B[t]+=Y[i]*e}))}return B}const bt={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,h=t.name;if(!e.modifiersData[h]._skip){for(var d=i.mainAxis,u=void 0===d||d,f=i.altAxis,p=void 0===f||f,_=i.fallbackPlacements,b=i.padding,v=i.boundary,y=i.rootBoundary,w=i.altBoundary,E=i.flipVariations,A=void 0===E||E,T=i.allowedAutoPlacements,C=e.options.placement,O=I(C),x=_||(O!==C&&A?function(t){if(I(t)===a)return[];var e=rt(t);return[lt(t),e,lt(e)]}(C):[rt(C)]),k=[C].concat(x).reduce((function(t,i){return t.concat(I(i)===a?function(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,c=i.allowedAutoPlacements,h=void 0===c?g:c,d=Z(n),u=d?a?m:m.filter((function(t){return Z(t)===d})):l,f=u.filter((function(t){return h.indexOf(t)>=0}));0===f.length&&(f=u);var p=f.reduce((function(e,i){return e[i]=_t(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[I(i)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}(e,{placement:i,boundary:v,rootBoundary:y,padding:b,flipVariations:A,allowedAutoPlacements:T}):i)}),[]),L=e.rects.reference,S=e.rects.popper,D=new Map,$=!0,N=k[0],P=0;P<k.length;P++){var M=k[P],j=I(M),F=Z(M)===c,H=[n,s].indexOf(j)>=0,B=H?"width":"height",W=_t(e,{placement:M,boundary:v,rootBoundary:y,altBoundary:w,padding:b}),z=H?F?o:r:F?s:n;L[B]>S[B]&&(z=rt(z));var R=rt(z),q=[];if(u&&q.push(W[j]<=0),p&&q.push(W[z]<=0,W[R]<=0),q.every((function(t){return t}))){N=M,$=!1;break}D.set(M,q)}if($)for(var V=function(t){var e=k.find((function(e){var i=D.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return N=e,"break"},Y=A?3:1;Y>0&&"break"!==V(Y);Y--);e.placement!==N&&(e.modifiersData[h]._skip=!0,e.placement=N,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function vt(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function yt(t){return[n,o,s,r].some((function(e){return t[e]>=0}))}const wt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=_t(e,{elementContext:"reference"}),a=_t(e,{altBoundary:!0}),l=vt(r,n),c=vt(a,s,o),h=yt(l),d=yt(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},Et={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,s=t.name,a=i.offset,l=void 0===a?[0,0]:a,c=g.reduce((function(t,i){return t[i]=function(t,e,i){var s=I(t),a=[r,n].indexOf(s)>=0?-1:1,l="function"==typeof i?i(Object.assign({},e,{placement:t})):i,c=l[0],h=l[1];return c=c||0,h=(h||0)*a,[r,o].indexOf(s)>=0?{x:h,y:c}:{x:c,y:h}}(i,e.rects,l),t}),{}),h=c[e.placement],d=h.x,u=h.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=d,e.modifiersData.popperOffsets.y+=u),e.modifiersData[s]=c}},At={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=gt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},Tt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,a=t.name,l=i.mainAxis,h=void 0===l||l,d=i.altAxis,u=void 0!==d&&d,f=i.boundary,p=i.rootBoundary,m=i.altBoundary,g=i.padding,_=i.tether,b=void 0===_||_,v=i.tetherOffset,y=void 0===v?0:v,w=_t(e,{boundary:f,rootBoundary:p,padding:g,altBoundary:m}),E=I(e.placement),A=Z(e.placement),T=!A,C=Q(E),O="x"===C?"y":"x",x=e.modifiersData.popperOffsets,k=e.rects.reference,L=e.rects.popper,S="function"==typeof y?y(Object.assign({},e.rects,{placement:e.placement})):y,D="number"==typeof S?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),$=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,M={x:0,y:0};if(x){if(h){var j,F="y"===C?n:r,H="y"===C?s:o,W="y"===C?"height":"width",z=x[C],R=z+w[F],q=z-w[H],V=b?-L[W]/2:0,Y=A===c?k[W]:L[W],U=A===c?-L[W]:-k[W],G=e.elements.arrow,J=b&&G?B(G):{width:0,height:0},tt=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},et=tt[F],it=tt[H],nt=X(0,k[W],J[W]),st=T?k[W]/2-V-nt-et-D.mainAxis:Y-nt-et-D.mainAxis,ot=T?-k[W]/2+V+nt+it+D.mainAxis:U+nt+it+D.mainAxis,rt=e.elements.arrow&&K(e.elements.arrow),at=rt?"y"===C?rt.clientTop||0:rt.clientLeft||0:0,lt=null!=(j=null==$?void 0:$[C])?j:0,ct=z+ot-lt,ht=X(b?P(R,z+st-lt-at):R,z,b?N(q,ct):q);x[C]=ht,M[C]=ht-z}if(u){var dt,ut="x"===C?n:r,ft="x"===C?s:o,pt=x[O],mt="y"===O?"height":"width",gt=pt+w[ut],bt=pt-w[ft],vt=-1!==[n,r].indexOf(E),yt=null!=(dt=null==$?void 0:$[O])?dt:0,wt=vt?gt:pt-k[mt]-L[mt]-yt+D.altAxis,Et=vt?pt+k[mt]+L[mt]-yt-D.altAxis:bt,At=b&&vt?function(t,e,i){var n=X(t,e,i);return n>i?i:n}(wt,pt,Et):X(b?wt:gt,pt,b?Et:bt);x[O]=At,M[O]=At-pt}e.modifiersData[a]=M}},requiresIfExists:["offset"]};function Ct(t,e,i){void 0===i&&(i=!1);var n,s,o=S(e),r=S(e)&&function(t){var e=t.getBoundingClientRect(),i=M(e.width)/t.offsetWidth||1,n=M(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=q(e),l=H(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==x(e)||dt(a))&&(c=(n=e)!==k(n)&&S(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:ct(n)),S(e)?((h=H(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=ht(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function Ot(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var xt={placement:"bottom",modifiers:[],strategy:"absolute"};function kt(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some((function(t){return!(t&&"function"==typeof t.getBoundingClientRect)}))}function Lt(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?xt:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},xt,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){var s="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,s),a.scrollParents={reference:L(t)?ft(t):t.contextElement?ft(t.contextElement):[],popper:ft(e)};var r,c,u=function(t){var e=Ot(t);return O.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}((r=[].concat(n,a.options.modifiers),c=r.reduce((function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t}),{}),Object.keys(c).map((function(t){return c[t]}))));return a.orderedModifiers=u.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,s=t.effect;if("function"==typeof s){var o=s({state:a,name:e,instance:h,options:n});l.push(o||function(){})}})),h.update()},forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;if(kt(e,i)){a.rects={reference:Ct(e,K(i),"fixed"===a.options.strategy),popper:B(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:h})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise((function(t){h.forceUpdate(),t(a)}))},function(){return r||(r=new Promise((function(t){Promise.resolve().then((function(){r=void 0,t(s())}))}))),r}),destroy:function(){d(),c=!0}};if(!kt(t,e))return h;function d(){l.forEach((function(t){return t()})),l=[]}return h.setOptions(i).then((function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)})),h}}var St=Lt(),Dt=Lt({defaultModifiers:[st,At,it,$,Et,bt,Tt,J,wt]}),$t=Lt({defaultModifiers:[st,At,it,$]});const It=new Map,Nt={set(t,e,i){It.has(t)||It.set(t,new Map);const n=It.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>It.has(t)&&It.get(t).get(e)||null,remove(t,e){if(!It.has(t))return;const i=It.get(t);i.delete(e),0===i.size&&It.delete(t)}},Pt="transitionend",Mt=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),jt=t=>{t.dispatchEvent(new Event(Pt))},Ft=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Ht=t=>Ft(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(Mt(t)):null,Bt=t=>{if(!Ft(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},Wt=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),zt=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?zt(t.parentNode):null},Rt=()=>{},qt=t=>{t.offsetHeight},Vt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Yt=[],Kt=()=>"rtl"===document.documentElement.dir,Qt=t=>{var e;e=()=>{const e=Vt();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(Yt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Yt)t()})),Yt.push(e)):e()},Xt=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,Ut=(t,e,i=!0)=>{if(!i)return void Xt(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const o=({target:i})=>{i===e&&(s=!0,e.removeEventListener(Pt,o),Xt(t))};e.addEventListener(Pt,o),setTimeout((()=>{s||jt(e)}),n)},Gt=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},Jt=/[^.]*(?=\..*)\.|.*/,Zt=/\..*/,te=/::\d+$/,ee={};let ie=1;const ne={mouseenter:"mouseover",mouseleave:"mouseout"},se=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function oe(t,e){return e&&`${e}::${ie++}`||t.uidEvent||ie++}function re(t){const e=oe(t);return t.uidEvent=e,ee[e]=ee[e]||{},ee[e]}function ae(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function le(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=ue(t);return se.has(o)||(o=t),[n,s,o]}function ce(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=le(e,i,n);if(e in ne){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=re(t),c=l[a]||(l[a]={}),h=ae(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=oe(r,e.replace(Jt,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return pe(s,{delegateTarget:r}),n.oneOff&&fe.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return pe(n,{delegateTarget:t}),i.oneOff&&fe.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function he(t,e,i,n,s){const o=ae(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function de(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&he(t,e,i,r.callable,r.delegationSelector)}function ue(t){return t=t.replace(Zt,""),ne[t]||t}const fe={on(t,e,i,n){ce(t,e,i,n,!1)},one(t,e,i,n){ce(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=le(e,i,n),a=r!==e,l=re(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))de(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(te,"");a&&!e.includes(s)||he(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;he(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=Vt();let s=null,o=!0,r=!0,a=!1;e!==ue(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=pe(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function pe(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function me(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function ge(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const _e={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${ge(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${ge(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=me(t.dataset[n])}return e},getDataAttribute:(t,e)=>me(t.getAttribute(`data-bs-${ge(e)}`))};class be{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=Ft(e)?_e.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...Ft(e)?_e.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],o=Ft(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${o}" but expected type "${s}".`)}var i}}class ve extends be{constructor(t,e){super(),(t=Ht(t))&&(this._element=t,this._config=this._getConfig(e),Nt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Nt.remove(this._element,this.constructor.DATA_KEY),fe.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){Ut(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Nt.get(Ht(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const ye=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e?e.split(",").map((t=>Mt(t))).join(","):null},we={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!Wt(t)&&Bt(t)))},getSelectorFromElement(t){const e=ye(t);return e&&we.findOne(e)?e:null},getElementFromSelector(t){const e=ye(t);return e?we.findOne(e):null},getMultipleElementsFromSelector(t){const e=ye(t);return e?we.find(e):[]}},Ee=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;fe.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),Wt(this))return;const s=we.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},Ae=".bs.alert",Te=`close${Ae}`,Ce=`closed${Ae}`;class Oe extends ve{static get NAME(){return"alert"}close(){if(fe.trigger(this._element,Te).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),fe.trigger(this._element,Ce),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Oe.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}Ee(Oe,"close"),Qt(Oe);const xe='[data-bs-toggle="button"]';class ke extends ve{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=ke.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}fe.on(document,"click.bs.button.data-api",xe,(t=>{t.preventDefault();const e=t.target.closest(xe);ke.getOrCreateInstance(e).toggle()})),Qt(ke);const Le=".bs.swipe",Se=`touchstart${Le}`,De=`touchmove${Le}`,$e=`touchend${Le}`,Ie=`pointerdown${Le}`,Ne=`pointerup${Le}`,Pe={endCallback:null,leftCallback:null,rightCallback:null},Me={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class je extends be{constructor(t,e){super(),this._element=t,t&&je.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Pe}static get DefaultType(){return Me}static get NAME(){return"swipe"}dispose(){fe.off(this._element,Le)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Xt(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&Xt(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(fe.on(this._element,Ie,(t=>this._start(t))),fe.on(this._element,Ne,(t=>this._end(t))),this._element.classList.add("pointer-event")):(fe.on(this._element,Se,(t=>this._start(t))),fe.on(this._element,De,(t=>this._move(t))),fe.on(this._element,$e,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const Fe=".bs.carousel",He=".data-api",Be="ArrowLeft",We="ArrowRight",ze="next",Re="prev",qe="left",Ve="right",Ye=`slide${Fe}`,Ke=`slid${Fe}`,Qe=`keydown${Fe}`,Xe=`mouseenter${Fe}`,Ue=`mouseleave${Fe}`,Ge=`dragstart${Fe}`,Je=`load${Fe}${He}`,Ze=`click${Fe}${He}`,ti="carousel",ei="active",ii=".active",ni=".carousel-item",si=ii+ni,oi={[Be]:Ve,[We]:qe},ri={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},ai={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class li extends ve{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=we.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===ti&&this.cycle()}static get Default(){return ri}static get DefaultType(){return ai}static get NAME(){return"carousel"}next(){this._slide(ze)}nextWhenVisible(){!document.hidden&&Bt(this._element)&&this.next()}prev(){this._slide(Re)}pause(){this._isSliding&&jt(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?fe.one(this._element,Ke,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void fe.one(this._element,Ke,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?ze:Re;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&fe.on(this._element,Qe,(t=>this._keydown(t))),"hover"===this._config.pause&&(fe.on(this._element,Xe,(()=>this.pause())),fe.on(this._element,Ue,(()=>this._maybeEnableCycle()))),this._config.touch&&je.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of we.find(".carousel-item img",this._element))fe.on(t,Ge,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(qe)),rightCallback:()=>this._slide(this._directionToOrder(Ve)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new je(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=oi[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=we.findOne(ii,this._indicatorsElement);e.classList.remove(ei),e.removeAttribute("aria-current");const i=we.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(ei),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===ze,s=e||Gt(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>fe.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(Ye).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),qt(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(ei),i.classList.remove(ei,c,l),this._isSliding=!1,r(Ke)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return we.findOne(si,this._element)}_getItems(){return we.find(ni,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return Kt()?t===qe?Re:ze:t===qe?ze:Re}_orderToDirection(t){return Kt()?t===Re?qe:Ve:t===Re?Ve:qe}static jQueryInterface(t){return this.each((function(){const e=li.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}fe.on(document,Ze,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=we.getElementFromSelector(this);if(!e||!e.classList.contains(ti))return;t.preventDefault();const i=li.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===_e.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),fe.on(window,Je,(()=>{const t=we.find('[data-bs-ride="carousel"]');for(const e of t)li.getOrCreateInstance(e)})),Qt(li);const ci=".bs.collapse",hi=`show${ci}`,di=`shown${ci}`,ui=`hide${ci}`,fi=`hidden${ci}`,pi=`click${ci}.data-api`,mi="show",gi="collapse",_i="collapsing",bi=`:scope .${gi} .${gi}`,vi='[data-bs-toggle="collapse"]',yi={parent:null,toggle:!0},wi={parent:"(null|element)",toggle:"boolean"};class Ei extends ve{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=we.find(vi);for(const t of i){const e=we.getSelectorFromElement(t),i=we.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return yi}static get DefaultType(){return wi}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Ei.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(fe.trigger(this._element,hi).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(gi),this._element.classList.add(_i),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(_i),this._element.classList.add(gi,mi),this._element.style[e]="",fe.trigger(this._element,di)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(fe.trigger(this._element,ui).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,qt(this._element),this._element.classList.add(_i),this._element.classList.remove(gi,mi);for(const t of this._triggerArray){const e=we.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(_i),this._element.classList.add(gi),fe.trigger(this._element,fi)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(mi)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Ht(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(vi);for(const e of t){const t=we.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=we.find(bi,this._config.parent);return we.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Ei.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}fe.on(document,pi,vi,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of we.getMultipleElementsFromSelector(this))Ei.getOrCreateInstance(t,{toggle:!1}).toggle()})),Qt(Ei);const Ai="dropdown",Ti=".bs.dropdown",Ci=".data-api",Oi="ArrowUp",xi="ArrowDown",ki=`hide${Ti}`,Li=`hidden${Ti}`,Si=`show${Ti}`,Di=`shown${Ti}`,$i=`click${Ti}${Ci}`,Ii=`keydown${Ti}${Ci}`,Ni=`keyup${Ti}${Ci}`,Pi="show",Mi='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',ji=`${Mi}.${Pi}`,Fi=".dropdown-menu",Hi=Kt()?"top-end":"top-start",Bi=Kt()?"top-start":"top-end",Wi=Kt()?"bottom-end":"bottom-start",zi=Kt()?"bottom-start":"bottom-end",Ri=Kt()?"left-start":"right-start",qi=Kt()?"right-start":"left-start",Vi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Yi={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Ki extends ve{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=we.next(this._element,Fi)[0]||we.prev(this._element,Fi)[0]||we.findOne(Fi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Vi}static get DefaultType(){return Yi}static get NAME(){return Ai}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Wt(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!fe.trigger(this._element,Si,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))fe.on(t,"mouseover",Rt);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Pi),this._element.classList.add(Pi),fe.trigger(this._element,Di,t)}}hide(){if(Wt(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!fe.trigger(this._element,ki,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))fe.off(t,"mouseover",Rt);this._popper&&this._popper.destroy(),this._menu.classList.remove(Pi),this._element.classList.remove(Pi),this._element.setAttribute("aria-expanded","false"),_e.removeDataAttribute(this._menu,"popper"),fe.trigger(this._element,Li,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!Ft(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Ai.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===e)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:Ft(this._config.reference)?t=Ht(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const i=this._getPopperConfig();this._popper=Dt(t,this._menu,i)}_isShown(){return this._menu.classList.contains(Pi)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Ri;if(t.classList.contains("dropstart"))return qi;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?Bi:Hi:e?zi:Wi}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(_e.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...Xt(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=we.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>Bt(t)));i.length&&Gt(i,e,t===xi,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=Ki.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=we.find(ji);for(const i of e){const e=Ki.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Oi,xi].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Mi)?this:we.prev(this,Mi)[0]||we.next(this,Mi)[0]||we.findOne(Mi,t.delegateTarget.parentNode),o=Ki.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}fe.on(document,Ii,Mi,Ki.dataApiKeydownHandler),fe.on(document,Ii,Fi,Ki.dataApiKeydownHandler),fe.on(document,$i,Ki.clearMenus),fe.on(document,Ni,Ki.clearMenus),fe.on(document,$i,Mi,(function(t){t.preventDefault(),Ki.getOrCreateInstance(this).toggle()})),Qt(Ki);const Qi="backdrop",Xi="show",Ui=`mousedown.bs.${Qi}`,Gi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Ji={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Zi extends be{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Gi}static get DefaultType(){return Ji}static get NAME(){return Qi}show(t){if(!this._config.isVisible)return void Xt(t);this._append();const e=this._getElement();this._config.isAnimated&&qt(e),e.classList.add(Xi),this._emulateAnimation((()=>{Xt(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Xi),this._emulateAnimation((()=>{this.dispose(),Xt(t)}))):Xt(t)}dispose(){this._isAppended&&(fe.off(this._element,Ui),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=Ht(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),fe.on(t,Ui,(()=>{Xt(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){Ut(t,this._getElement(),this._config.isAnimated)}}const tn=".bs.focustrap",en=`focusin${tn}`,nn=`keydown.tab${tn}`,sn="backward",on={autofocus:!0,trapElement:null},rn={autofocus:"boolean",trapElement:"element"};class an extends be{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return on}static get DefaultType(){return rn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),fe.off(document,tn),fe.on(document,en,(t=>this._handleFocusin(t))),fe.on(document,nn,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,fe.off(document,tn))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=we.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===sn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?sn:"forward")}}const ln=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",cn=".sticky-top",hn="padding-right",dn="margin-right";class un{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,hn,(e=>e+t)),this._setElementAttributes(ln,hn,(e=>e+t)),this._setElementAttributes(cn,dn,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,hn),this._resetElementAttributes(ln,hn),this._resetElementAttributes(cn,dn)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&_e.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=_e.getDataAttribute(t,e);null!==i?(_e.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(Ft(t))e(t);else for(const i of we.find(t,this._element))e(i)}}const fn=".bs.modal",pn=`hide${fn}`,mn=`hidePrevented${fn}`,gn=`hidden${fn}`,_n=`show${fn}`,bn=`shown${fn}`,vn=`resize${fn}`,yn=`click.dismiss${fn}`,wn=`mousedown.dismiss${fn}`,En=`keydown.dismiss${fn}`,An=`click${fn}.data-api`,Tn="modal-open",Cn="show",On="modal-static",xn={backdrop:!0,focus:!0,keyboard:!0},kn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ln extends ve{constructor(t,e){super(t,e),this._dialog=we.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new un,this._addEventListeners()}static get Default(){return xn}static get DefaultType(){return kn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||fe.trigger(this._element,_n,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Tn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(fe.trigger(this._element,pn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Cn),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){fe.off(window,fn),fe.off(this._dialog,fn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Zi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new an({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=we.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),qt(this._element),this._element.classList.add(Cn),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,fe.trigger(this._element,bn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){fe.on(this._element,En,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),fe.on(window,vn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),fe.on(this._element,wn,(t=>{fe.one(this._element,yn,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Tn),this._resetAdjustments(),this._scrollBar.reset(),fe.trigger(this._element,gn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(fe.trigger(this._element,mn).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(On)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(On),this._queueCallback((()=>{this._element.classList.remove(On),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=Kt()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=Kt()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Ln.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}fe.on(document,An,'[data-bs-toggle="modal"]',(function(t){const e=we.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),fe.one(e,_n,(t=>{t.defaultPrevented||fe.one(e,gn,(()=>{Bt(this)&&this.focus()}))}));const i=we.findOne(".modal.show");i&&Ln.getInstance(i).hide(),Ln.getOrCreateInstance(e).toggle(this)})),Ee(Ln),Qt(Ln);const Sn=".bs.offcanvas",Dn=".data-api",$n=`load${Sn}${Dn}`,In="show",Nn="showing",Pn="hiding",Mn=".offcanvas.show",jn=`show${Sn}`,Fn=`shown${Sn}`,Hn=`hide${Sn}`,Bn=`hidePrevented${Sn}`,Wn=`hidden${Sn}`,zn=`resize${Sn}`,Rn=`click${Sn}${Dn}`,qn=`keydown.dismiss${Sn}`,Vn={backdrop:!0,keyboard:!0,scroll:!1},Yn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Kn extends ve{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Vn}static get DefaultType(){return Yn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||fe.trigger(this._element,jn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new un).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Nn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(In),this._element.classList.remove(Nn),fe.trigger(this._element,Fn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(fe.trigger(this._element,Hn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Pn),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(In,Pn),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new un).reset(),fe.trigger(this._element,Wn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Zi({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():fe.trigger(this._element,Bn)}:null})}_initializeFocusTrap(){return new an({trapElement:this._element})}_addEventListeners(){fe.on(this._element,qn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():fe.trigger(this._element,Bn))}))}static jQueryInterface(t){return this.each((function(){const e=Kn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}fe.on(document,Rn,'[data-bs-toggle="offcanvas"]',(function(t){const e=we.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),Wt(this))return;fe.one(e,Wn,(()=>{Bt(this)&&this.focus()}));const i=we.findOne(Mn);i&&i!==e&&Kn.getInstance(i).hide(),Kn.getOrCreateInstance(e).toggle(this)})),fe.on(window,$n,(()=>{for(const t of we.find(Mn))Kn.getOrCreateInstance(t).show()})),fe.on(window,zn,(()=>{for(const t of we.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&Kn.getOrCreateInstance(t).hide()})),Ee(Kn),Qt(Kn);const Qn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Xn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Un=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Gn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Xn.has(i)||Boolean(Un.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Jn={allowList:Qn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},Zn={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},ts={entry:"(string|element|function|null)",selector:"(string|element)"};class es extends be{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Jn}static get DefaultType(){return Zn}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},ts)}_setContent(t,e,i){const n=we.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?Ft(e)?this._putElementInTemplate(Ht(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Gn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Xt(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const is=new Set(["sanitize","allowList","sanitizeFn"]),ns="fade",ss="show",os=".tooltip-inner",rs=".modal",as="hide.bs.modal",ls="hover",cs="focus",hs={AUTO:"auto",TOP:"top",RIGHT:Kt()?"left":"right",BOTTOM:"bottom",LEFT:Kt()?"right":"left"},ds={allowList:Qn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},us={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class fs extends ve{constructor(t,i){if(void 0===e)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,i),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return ds}static get DefaultType(){return us}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),fe.off(this._element.closest(rs),as,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=fe.trigger(this._element,this.constructor.eventName("show")),e=(zt(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),fe.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(ss),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))fe.on(t,"mouseover",Rt);this._queueCallback((()=>{fe.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!fe.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(ss),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))fe.off(t,"mouseover",Rt);this._activeTrigger.click=!1,this._activeTrigger[cs]=!1,this._activeTrigger[ls]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),fe.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ns,ss),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ns),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new es({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[os]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ns)}_isShown(){return this.tip&&this.tip.classList.contains(ss)}_createPopper(t){const e=Xt(this._config.placement,[this,t,this._element]),i=hs[e.toUpperCase()];return Dt(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return Xt(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...Xt(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)fe.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ls?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ls?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");fe.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?cs:ls]=!0,e._enter()})),fe.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?cs:ls]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},fe.on(this._element.closest(rs),as,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=_e.getDataAttributes(this._element);for(const t of Object.keys(e))is.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:Ht(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=fs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Qt(fs);const ps=".popover-header",ms=".popover-body",gs={...fs.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},_s={...fs.DefaultType,content:"(null|string|element|function)"};class bs extends fs{static get Default(){return gs}static get DefaultType(){return _s}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[ps]:this._getTitle(),[ms]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=bs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Qt(bs);const vs=".bs.scrollspy",ys=`activate${vs}`,ws=`click${vs}`,Es=`load${vs}.data-api`,As="active",Ts="[href]",Cs=".nav-link",Os=`${Cs}, .nav-item > ${Cs}, .list-group-item`,xs={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},ks={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Ls extends ve{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return xs}static get DefaultType(){return ks}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=Ht(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(fe.off(this._config.target,ws),fe.on(this._config.target,ws,Ts,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=we.find(Ts,this._config.target);for(const e of t){if(!e.hash||Wt(e))continue;const t=we.findOne(decodeURI(e.hash),this._element);Bt(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(As),this._activateParents(t),fe.trigger(this._element,ys,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))we.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(As);else for(const e of we.parents(t,".nav, .list-group"))for(const t of we.prev(e,Os))t.classList.add(As)}_clearActiveClass(t){t.classList.remove(As);const e=we.find(`${Ts}.${As}`,t);for(const t of e)t.classList.remove(As)}static jQueryInterface(t){return this.each((function(){const e=Ls.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}fe.on(window,Es,(()=>{for(const t of we.find('[data-bs-spy="scroll"]'))Ls.getOrCreateInstance(t)})),Qt(Ls);const Ss=".bs.tab",Ds=`hide${Ss}`,$s=`hidden${Ss}`,Is=`show${Ss}`,Ns=`shown${Ss}`,Ps=`click${Ss}`,Ms=`keydown${Ss}`,js=`load${Ss}`,Fs="ArrowLeft",Hs="ArrowRight",Bs="ArrowUp",Ws="ArrowDown",zs="Home",Rs="End",qs="active",Vs="fade",Ys="show",Ks=".dropdown-toggle",Qs=`:not(${Ks})`,Xs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Us=`.nav-link${Qs}, .list-group-item${Qs}, [role="tab"]${Qs}, ${Xs}`,Gs=`.${qs}[data-bs-toggle="tab"], .${qs}[data-bs-toggle="pill"], .${qs}[data-bs-toggle="list"]`;class Js extends ve{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),fe.on(this._element,Ms,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?fe.trigger(e,Ds,{relatedTarget:t}):null;fe.trigger(t,Is,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(qs),this._activate(we.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),fe.trigger(t,Ns,{relatedTarget:e})):t.classList.add(Ys)}),t,t.classList.contains(Vs)))}_deactivate(t,e){t&&(t.classList.remove(qs),t.blur(),this._deactivate(we.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),fe.trigger(t,$s,{relatedTarget:e})):t.classList.remove(Ys)}),t,t.classList.contains(Vs)))}_keydown(t){if(![Fs,Hs,Bs,Ws,zs,Rs].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!Wt(t)));let i;if([zs,Rs].includes(t.key))i=e[t.key===zs?0:e.length-1];else{const n=[Hs,Ws].includes(t.key);i=Gt(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Js.getOrCreateInstance(i).show())}_getChildren(){return we.find(Us,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=we.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=we.findOne(t,i);s&&s.classList.toggle(n,e)};n(Ks,qs),n(".dropdown-menu",Ys),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(qs)}_getInnerElement(t){return t.matches(Us)?t:we.findOne(Us,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Js.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}fe.on(document,Ps,Xs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),Wt(this)||Js.getOrCreateInstance(this).show()})),fe.on(window,js,(()=>{for(const t of we.find(Gs))Js.getOrCreateInstance(t)})),Qt(Js);const Zs=".bs.toast",to=`mouseover${Zs}`,eo=`mouseout${Zs}`,io=`focusin${Zs}`,no=`focusout${Zs}`,so=`hide${Zs}`,oo=`hidden${Zs}`,ro=`show${Zs}`,ao=`shown${Zs}`,lo="hide",co="show",ho="showing",uo={animation:"boolean",autohide:"boolean",delay:"number"},fo={animation:!0,autohide:!0,delay:5e3};class po extends ve{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return fo}static get DefaultType(){return uo}static get NAME(){return"toast"}show(){fe.trigger(this._element,ro).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(lo),qt(this._element),this._element.classList.add(co,ho),this._queueCallback((()=>{this._element.classList.remove(ho),fe.trigger(this._element,ao),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(fe.trigger(this._element,so).defaultPrevented||(this._element.classList.add(ho),this._queueCallback((()=>{this._element.classList.add(lo),this._element.classList.remove(ho,co),fe.trigger(this._element,oo)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(co),super.dispose()}isShown(){return this._element.classList.contains(co)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){fe.on(this._element,to,(t=>this._onInteraction(t,!0))),fe.on(this._element,eo,(t=>this._onInteraction(t,!1))),fe.on(this._element,io,(t=>this._onInteraction(t,!0))),fe.on(this._element,no,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=po.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}function mo(t){"loading"!=document.readyState?t():document.addEventListener("DOMContentLoaded",t)}Ee(po),Qt(po),mo((function(){[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(t){return new fs(t,{delay:{show:500,hide:100}})}))})),mo((function(){document.getElementById("pst-back-to-top").addEventListener("click",(function(){document.body.scrollTop=0,document.documentElement.scrollTop=0}))})),mo((function(){var t=document.getElementById("pst-back-to-top"),e=document.getElementsByClassName("bd-header")[0].getBoundingClientRect();window.addEventListener("scroll",(function(){this.oldScroll>this.scrollY&&this.scrollY>e.bottom?t.style.display="block":t.style.display="none",this.oldScroll=this.scrollY}))})),window.bootstrap=i})(); +//# sourceMappingURL=bootstrap.js.map \ No newline at end of file diff --git a/_static/scripts/bootstrap.js.LICENSE.txt b/_static/scripts/bootstrap.js.LICENSE.txt new file mode 100644 index 000000000..28755c2c5 --- /dev/null +++ b/_static/scripts/bootstrap.js.LICENSE.txt @@ -0,0 +1,5 @@ +/*! + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ diff --git a/_static/scripts/bootstrap.js.map b/_static/scripts/bootstrap.js.map new file mode 100644 index 000000000..4a3502aeb --- /dev/null +++ b/_static/scripts/bootstrap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts/bootstrap.js","mappings":"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","sources":["webpack://pydata_sphinx_theme/webpack/bootstrap","webpack://pydata_sphinx_theme/webpack/runtime/define property getters","webpack://pydata_sphinx_theme/webpack/runtime/hasOwnProperty shorthand","webpack://pydata_sphinx_theme/webpack/runtime/make namespace object","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/enums.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/math.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/within.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/createPopper.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/popper.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://pydata_sphinx_theme/./node_modules/bootstrap/dist/js/bootstrap.esm.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/mixin.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/bootstrap.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","/*!\n * Bootstrap v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n const instanceMap = elementMap.get(element);\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n instanceMap.set(key, instance);\n },\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n return null;\n },\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key);\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend';\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n }\n return selector;\n};\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n return prefix;\n};\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n return typeof object.nodeType !== 'undefined';\n};\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object));\n }\n return null;\n};\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])');\n if (!closedDetails) {\n return elementIsVisible;\n }\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n if (summary === null) {\n return false;\n }\n }\n return elementIsVisible;\n};\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n if (element.classList.contains('disabled')) {\n return true;\n }\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null;\n }\n return findShadowRoot(element.parentNode);\n};\nconst noop = () => {};\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n return null;\n};\nconst DOMContentLoadedCallbacks = [];\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\nconst isRTL = () => document.documentElement.dir === 'rtl';\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;\n};\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n return fn.apply(element, [event]);\n };\n}\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n hydrateObj(event, {\n delegateTarget: target\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n return fn.apply(target, [event]);\n }\n }\n };\n}\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n return [isDelegated, callable, typeEvent];\n}\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n callable = wrapFunction(callable);\n }\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n if (!fn) {\n return;\n }\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n const evt = hydrateObj(new Event(event, {\n bubbles,\n cancelable: true\n }), args);\n if (defaultPrevented) {\n evt.preventDefault();\n }\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n return evt;\n }\n};\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n }\n });\n }\n }\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === Number(value).toString()) {\n return Number(value);\n }\n if (value === '' || value === 'null') {\n return null;\n }\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n return attributes;\n },\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n return config;\n }\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.3';\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n if (!element) {\n return;\n }\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n static get VERSION() {\n return VERSION;\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href');\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n }\n return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null;\n};\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev(element, selector) {\n let previous = element.previousElementSibling;\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n },\n getSelectorFromElement(element) {\n const selector = getSelector(element);\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null;\n }\n return null;\n },\n getElementFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.findOne(selector) : null;\n },\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.find(selector) : [];\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target);\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n if (closeEvent.defaultPrevented) {\n return;\n }\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n }\n\n // Private\n _destroyElement() {\n this._element.remove();\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close');\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n if (!element || !Swipe.isSupported()) {\n return;\n }\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n this._initEvents();\n }\n\n // Getters\n static get Default() {\n return Default$c;\n }\n static get DefaultType() {\n return DefaultType$c;\n }\n static get NAME() {\n return NAME$d;\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n this._handleSwipe();\n execute(this._config.endCallback);\n }\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n if (!direction) {\n return;\n }\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n this._addEventListeners();\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$b;\n }\n static get DefaultType() {\n return DefaultType$b;\n }\n static get NAME() {\n return NAME$c;\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT);\n }\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n prev() {\n this._slide(ORDER_PREV);\n }\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n this._clearInterval();\n }\n cycle() {\n this._clearInterval();\n this._updateInterval();\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n this.cycle();\n }\n to(index) {\n const items = this._getItems();\n if (index > items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n const activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) {\n return;\n }\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n this._slide(order, items[index]);\n }\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause();\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n const direction = KEY_TO_DIRECTION[event.key];\n if (direction) {\n event.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n if (!element) {\n return;\n }\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n const activeElement = this._getActive();\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n if (nextElement === activeElement) {\n return;\n }\n const nextElementIndex = this._getItemIndex(nextElement);\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n const slideEvent = triggerEvent(EVENT_SLIDE);\n if (slideEvent.defaultPrevented) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return;\n }\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n if (isCycling) {\n this.cycle();\n }\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n carousel.prev();\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n this._initializeChildren();\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n if (this._config.toggle) {\n this.toggle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$a;\n }\n static get DefaultType() {\n return DefaultType$a;\n }\n static get NAME() {\n return NAME$b;\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n let activeChildren = [];\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n const dimension = this._getDimension();\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n const dimension = this._getDimension();\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n this._element.style[dimension] = '';\n this._queueCallback(complete, this._element, true);\n }\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n config.parent = getElement(config.parent);\n return config;\n }\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n }\n\n // Getters\n static get Default() {\n return Default$9;\n }\n static get DefaultType() {\n return DefaultType$9;\n }\n static get NAME() {\n return NAME$a;\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._createPopper();\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n this._element.classList.add(CLASS_NAME_SHOW$6);\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n this._completeHide(relatedTarget);\n }\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n super.dispose();\n }\n update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n if (this._popper) {\n this._popper.destroy();\n }\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n this._element.setAttribute('aria-expanded', 'false');\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n _getConfig(config) {\n config = super._getConfig(config);\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n return config;\n }\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n let referenceElement = this._element;\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n const popperConfig = this._getPopperConfig();\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n _getPlacement() {\n const parentDropdown = this._parent;\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n };\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n if (!items.length) {\n return;\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n if (!context || context._config.autoClose === false) {\n continue;\n }\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n const relatedTarget = {\n relatedTarget: context._element\n };\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n context._completeHide(relatedTarget);\n }\n }\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n if (isInput && !isEscapeEvent) {\n return;\n }\n event.preventDefault();\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n instance._selectMenuItem(event);\n return;\n }\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n};\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n\n // Getters\n static get Default() {\n return Default$8;\n }\n static get DefaultType() {\n return DefaultType$8;\n }\n static get NAME() {\n return NAME$9;\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._append();\n const element = this._getElement();\n if (this._config.isAnimated) {\n reflow(element);\n }\n element.classList.add(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n dispose() {\n if (!this._isAppended) {\n return;\n }\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n this._element.remove();\n this._isAppended = false;\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n this._element = backdrop;\n }\n return this._element;\n }\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n _append() {\n if (this._isAppended) {\n return;\n }\n const element = this._getElement();\n this._config.rootElement.append(element);\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n};\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n }\n\n // Getters\n static get Default() {\n return Default$7;\n }\n static get DefaultType() {\n return DefaultType$7;\n }\n static get NAME() {\n return NAME$8;\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return;\n }\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n deactivate() {\n if (!this._isActive) {\n return;\n }\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n }\n\n // Private\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n const elements = SelectorEngine.focusableChildren(trapElement);\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n hide() {\n const width = this.getWidth();\n this._disableOverFlow();\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n isOverflowing() {\n return this.getWidth() > 0;\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n this._element.style.overflow = 'hidden';\n }\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n this._saveInitialAttribute(element, styleProperty);\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty);\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$6;\n }\n static get DefaultType() {\n return DefaultType$6;\n }\n static get NAME() {\n return NAME$7;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._isTransitioning = true;\n this._scrollBar.hide();\n document.body.classList.add(CLASS_NAME_OPEN);\n this._adjustDialog();\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n dispose() {\n EventHandler.off(window, EVENT_KEY$4);\n EventHandler.off(this._dialog, EVENT_KEY$4);\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n handleUpdate() {\n this._adjustDialog();\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW$4);\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n return;\n }\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n _hideModal() {\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n this._resetAdjustments();\n this._scrollBar.reset();\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY;\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n this._element.focus();\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const scrollbarWidth = this._scrollBar.getWidth();\n const isBodyOverflowing = scrollbarWidth > 0;\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](relatedTarget);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n });\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$5;\n }\n static get DefaultType() {\n return DefaultType$5;\n }\n static get NAME() {\n return NAME$6;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._backdrop.show();\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n this._element.classList.add(CLASS_NAME_SHOW$3);\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n this._queueCallback(completeCallBack, this._element, true);\n }\n hide() {\n if (!this._isShown) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._focustrap.deactivate();\n this._element.blur();\n this._isShown = false;\n this._element.classList.add(CLASS_NAME_HIDING);\n this._backdrop.hide();\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n this._queueCallback(completeCallback, this._element, true);\n }\n dispose() {\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n this.hide();\n };\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n });\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n });\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n dd: [],\n div: [],\n dl: [],\n dt: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\n// js-docs-end allow-list\n\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n }\n return true;\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n }\n\n // Getters\n static get Default() {\n return Default$4;\n }\n static get DefaultType() {\n return DefaultType$4;\n }\n static get NAME() {\n return NAME$5;\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(content) {\n this._checkContent(content);\n this._config.content = {\n ...this._config.content,\n ...content\n };\n return this;\n }\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n return template;\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n if (!templateElement) {\n return;\n }\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this]);\n }\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n super(element, config);\n\n // Private\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null;\n\n // Protected\n this.tip = null;\n this._setListeners();\n if (!this._config.selector) {\n this._fixTitle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$3;\n }\n static get DefaultType() {\n return DefaultType$3;\n }\n static get NAME() {\n return NAME$4;\n }\n\n // Public\n enable() {\n this._isEnabled = true;\n }\n disable() {\n this._isEnabled = false;\n }\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n this._activeTrigger.click = !this._activeTrigger.click;\n if (this._isShown()) {\n this._leave();\n return;\n }\n this._enter();\n }\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n this._disposePopper();\n super.dispose();\n }\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper();\n const tip = this._getTipElement();\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n const {\n container\n } = this._config;\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n if (this._isHovered === false) {\n this._leave();\n }\n this._isHovered = false;\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n hide() {\n if (!this._isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n if (hideEvent.defaultPrevented) {\n return;\n }\n const tip = this._getTipElement();\n tip.classList.remove(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n if (!this._isHovered) {\n this._disposePopper();\n }\n this._element.removeAttribute('aria-describedby');\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n update() {\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n return this.tip;\n }\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml();\n\n // TODO: remove this check in v6\n if (!tip) {\n return null;\n }\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n return tip;\n }\n setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\n }\n }\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n return this._templateFactory;\n }\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element]);\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element]);\n }\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n context._leave();\n });\n }\n }\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n _fixTitle() {\n const title = this._element.getAttribute('title');\n if (!title) {\n return;\n }\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title');\n }\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n this._isHovered = true;\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n this._isHovered = false;\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n return config;\n }\n _getDelegateConfig() {\n const config = {};\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value;\n }\n }\n config.selector = false;\n config.trigger = 'manual';\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config;\n }\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>',\n trigger: 'click'\n};\nconst DefaultType$2 = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n static get DefaultType() {\n return DefaultType$2;\n }\n static get NAME() {\n return NAME$3;\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent();\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n }\n\n // Getters\n static get Default() {\n return Default$1;\n }\n static get DefaultType() {\n return DefaultType$1;\n }\n static get NAME() {\n return NAME$2;\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables();\n this._maybeEnableSmoothScroll();\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n dispose() {\n this._observer.disconnect();\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body;\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n return config;\n }\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height;\n }\n });\n }\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n this._process(targetElement(entry));\n };\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n this._clearActiveClass(targetElement(entry));\n continue;\n }\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry);\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return;\n }\n continue;\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor);\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n this._clearActiveClass(this._config.target);\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n this._activateParents(target);\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE$1);\n }\n }\n }\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE$1);\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE$1);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy);\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$1 = 'tab';\nconst DATA_KEY$1 = 'bs.tab';\nconst EVENT_KEY$1 = `.${DATA_KEY$1}`;\nconst EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;\nconst EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;\nconst EVENT_SHOW$1 = `show${EVENT_KEY$1}`;\nconst EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\nconst ARROW_UP_KEY = 'ArrowUp';\nconst ARROW_DOWN_KEY = 'ArrowDown';\nconst HOME_KEY = 'Home';\nconst END_KEY = 'End';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FADE$1 = 'fade';\nconst CLASS_NAME_SHOW$1 = 'show';\nconst CLASS_DROPDOWN = 'dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu';\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]';\nconst SELECTOR_OUTER = '.nav-item, .list-group-item';\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'; // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`;\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element);\n this._parent = this._element.closest(SELECTOR_TAB_PANEL);\n if (!this._parent) {\n return;\n // TODO: should throw exception in v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren());\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n }\n\n // Getters\n static get NAME() {\n return NAME$1;\n }\n\n // Public\n show() {\n // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element;\n if (this._elemIsActive(innerElem)) {\n return;\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem();\n const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {\n relatedTarget: innerElem\n }) : null;\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {\n relatedTarget: active\n });\n if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {\n return;\n }\n this._deactivate(active, innerElem);\n this._activate(innerElem, active);\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return;\n }\n element.classList.add(CLASS_NAME_ACTIVE);\n this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW$1);\n return;\n }\n element.removeAttribute('tabindex');\n element.setAttribute('aria-selected', true);\n this._toggleDropDown(element, true);\n EventHandler.trigger(element, EVENT_SHOWN$1, {\n relatedTarget: relatedElem\n });\n };\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n _deactivate(element, relatedElem) {\n if (!element) {\n return;\n }\n element.classList.remove(CLASS_NAME_ACTIVE);\n element.blur();\n this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW$1);\n return;\n }\n element.setAttribute('aria-selected', false);\n element.setAttribute('tabindex', '-1');\n this._toggleDropDown(element, false);\n EventHandler.trigger(element, EVENT_HIDDEN$1, {\n relatedTarget: relatedElem\n });\n };\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n _keydown(event) {\n if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {\n return;\n }\n event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault();\n const children = this._getChildren().filter(element => !isDisabled(element));\n let nextActiveElement;\n if ([HOME_KEY, END_KEY].includes(event.key)) {\n nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];\n } else {\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);\n nextActiveElement = getNextActiveElement(children, event.target, isNext, true);\n }\n if (nextActiveElement) {\n nextActiveElement.focus({\n preventScroll: true\n });\n Tab.getOrCreateInstance(nextActiveElement).show();\n }\n }\n _getChildren() {\n // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);\n }\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null;\n }\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist');\n for (const child of children) {\n this._setInitialAttributesOnChild(child);\n }\n }\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child);\n const isActive = this._elemIsActive(child);\n const outerElem = this._getOuterElement(child);\n child.setAttribute('aria-selected', isActive);\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation');\n }\n if (!isActive) {\n child.setAttribute('tabindex', '-1');\n }\n this._setAttributeIfNotExists(child, 'role', 'tab');\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child);\n }\n _setInitialAttributesOnTargetPanel(child) {\n const target = SelectorEngine.getElementFromSelector(child);\n if (!target) {\n return;\n }\n this._setAttributeIfNotExists(target, 'role', 'tabpanel');\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);\n }\n }\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element);\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return;\n }\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem);\n if (element) {\n element.classList.toggle(className, open);\n }\n };\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);\n outerElem.setAttribute('aria-expanded', open);\n }\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value);\n }\n }\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE);\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n Tab.getOrCreateInstance(this).show();\n});\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME = 'toast';\nconst DATA_KEY = 'bs.toast';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_SHOWING = 'showing';\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n};\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n};\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._timeout = null;\n this._hasMouseInteraction = false;\n this._hasKeyboardInteraction = false;\n this._setListeners();\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._clearTimeout();\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING);\n EventHandler.trigger(this._element, EVENT_SHOWN);\n this._maybeScheduleHide();\n };\n this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);\n this._queueCallback(complete, this._element, this._config.animation);\n }\n hide() {\n if (!this.isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n this._element.classList.add(CLASS_NAME_SHOWING);\n this._queueCallback(complete, this._element, this._config.animation);\n }\n dispose() {\n this._clearTimeout();\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n super.dispose();\n }\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW);\n }\n\n // Private\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return;\n }\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return;\n }\n this._timeout = setTimeout(() => {\n this.hide();\n }, this._config.delay);\n }\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n {\n this._hasMouseInteraction = isInteracting;\n break;\n }\n case 'focusin':\n case 'focusout':\n {\n this._hasKeyboardInteraction = isInteracting;\n break;\n }\n }\n if (isInteracting) {\n this._clearTimeout();\n return;\n }\n const nextElement = event.relatedTarget;\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return;\n }\n this._maybeScheduleHide();\n }\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));\n }\n _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast);\n\nexport { Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip };\n//# sourceMappingURL=bootstrap.esm.js.map\n","/* define several functions to replace jQuery methods\n * inspired by https://tobiasahlin.com/blog/move-from-jquery-to-vanilla-javascript/\n */\n\n/**\n * Execute a method if DOM has finished loading\n *\n * @param {function} callback the method to execute\n */\nexport function documentReady(callback) {\n if (document.readyState != \"loading\") callback();\n else document.addEventListener(\"DOMContentLoaded\", callback);\n}\n","// TODO: @trallard might end up moving this to the main JS file\n// Import and setup functions to control Bootstrap's behavior.\nimport \"@popperjs/core\";\n// Import all of Bootstrap's JS\nimport * as bootstrap from \"bootstrap\";\nimport { documentReady } from \"./mixin\";\n\n/*******************************************************************************\n * Trigger tooltips\n */\n\n/**\n * Add tooltip to each element with the \"tooltip\" data-bs-toogle class\n */\nfunction TriggerTooltip() {\n var tooltipTriggerList = [].slice.call(\n document.querySelectorAll('[data-bs-toggle=\"tooltip\"]'),\n );\n tooltipTriggerList.map(function (tooltipTriggerEl) {\n return new bootstrap.Tooltip(tooltipTriggerEl, {\n delay: { show: 500, hide: 100 },\n });\n });\n}\n\n/*******************************************************************************\n * back to top button\n */\nfunction backToTop() {\n var btn = document.getElementById(\"pst-back-to-top\");\n btn.addEventListener(\"click\", function () {\n document.body.scrollTop = 0;\n document.documentElement.scrollTop = 0;\n });\n}\n\nfunction showBackToTop() {\n var btn = document.getElementById(\"pst-back-to-top\");\n var header = document\n .getElementsByClassName(\"bd-header\")[0]\n .getBoundingClientRect();\n window.addEventListener(\"scroll\", function () {\n if (this.oldScroll > this.scrollY && this.scrollY > header.bottom) {\n btn.style.display = \"block\";\n } else {\n btn.style.display = \"none\";\n }\n this.oldScroll = this.scrollY;\n });\n}\n\n/*******************************************************************************\n * Call functions after document loading.\n */\n\ndocumentReady(TriggerTooltip);\ndocumentReady(backToTop);\ndocumentReady(showBackToTop);\n\nwindow.bootstrap = bootstrap;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","reduce","acc","placement","concat","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","nodeName","toLowerCase","getWindow","node","window","toString","ownerDocument","defaultView","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","name","enabled","phase","fn","_ref","state","keys","elements","forEach","style","styles","attributes","assign","removeAttribute","setAttribute","effect","_ref2","initialStyles","position","options","strategy","top","margin","arrow","property","attribute","requires","getBasePlacement","split","Math","max","min","round","getUAString","uaData","navigator","userAgentData","brands","Array","isArray","map","item","brand","version","join","userAgent","isLayoutViewport","test","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","width","offsetHeight","height","visualViewport","addVisualOffsets","x","offsetLeft","y","offsetTop","getLayoutRect","abs","contains","parent","child","rootNode","getRootNode","next","isSameNode","parentNode","host","getComputedStyle","isTableElement","indexOf","getDocumentElement","document","documentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","filter","getContainingBlock","getMainAxisFromPlacement","within","mergePaddingObject","paddingObject","expandToHashMap","hashMap","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","len","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","offset","axisProp","centerOffset","_options$element","querySelector","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","data","passive","instance","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","addEventListener","update","removeEventListener","hash","getOppositePlacement","replace","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","body","listScrollParents","list","_element$ownerDocumen","isBody","target","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","length","overflows","sort","a","b","computeAutoPlacement","referenceRect","checksMap","Map","makeFallbackChecks","firstFittingPlacement","i","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","push","every","check","set","_loop","_i","fittingPlacement","find","slice","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","v","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","order","modifiers","visited","Set","result","modifier","add","dep","has","depModifier","DEFAULT_OPTIONS","areValidElements","arguments","args","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","merged","orderModifiers","current","existing","m","_ref$options","cleanupFn","forceUpdate","_state$elements","index","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","undefined","destroy","onFirstUpdate","createPopper","eventListeners","elementMap","Data","instanceMap","size","console","error","from","remove","delete","TRANSITION_END","parseSelector","selector","CSS","escape","match","id","triggerTransitionEnd","dispatchEvent","Event","object","jquery","nodeType","getElement","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","getAttribute","findShadowRoot","attachShadow","root","noop","reflow","getjQuery","jQuery","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","NAME","JQUERY_NO_CONFLICT","jQueryInterface","Constructor","noConflict","readyState","execute","possibleCallback","defaultValue","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","handler","setTimeout","getNextActiveElement","activeElement","shouldGetNext","isCycleAllowed","listLength","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","values","event","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","wrapFunction","relatedTarget","delegateTarget","this","handlers","previousFunction","domElements","querySelectorAll","domElement","hydrateObj","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","keyHandlers","trigger","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","meta","_unused","configurable","normalizeData","JSON","parse","decodeURIComponent","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","getDataAttributes","bsKeys","dataset","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","expectedTypes","valueType","RegExp","TypeError","toUpperCase","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","VERSION","eventName","getSelector","hrefAttribute","trim","sel","SelectorEngine","findOne","children","matches","parents","ancestor","prev","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","EVENT_KEY$b","EVENT_CLOSE","EVENT_CLOSED","Alert","close","_destroyElement","each","SELECTOR_DATA_TOGGLE$5","Button","toggle","button","EVENT_KEY$9","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","Default$c","endCallback","leftCallback","rightCallback","DefaultType$c","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","pointerType","maxTouchPoints","EVENT_KEY$8","DATA_API_KEY$5","ARROW_LEFT_KEY$1","ARROW_RIGHT_KEY$1","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN$1","EVENT_MOUSEENTER$1","EVENT_MOUSELEAVE$1","EVENT_DRAG_START","EVENT_LOAD_DATA_API$3","EVENT_CLICK_DATA_API$5","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$2","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","KEY_TO_DIRECTION","Default$b","interval","keyboard","pause","ride","touch","wrap","DefaultType$b","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_KEY$7","EVENT_SHOW$6","EVENT_SHOWN$6","EVENT_HIDE$6","EVENT_HIDDEN$6","EVENT_CLICK_DATA_API$4","CLASS_NAME_SHOW$7","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","SELECTOR_DATA_TOGGLE$4","Default$a","DefaultType$a","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","scrollSize","selected","triggerArray","isOpen","NAME$a","EVENT_KEY$6","DATA_API_KEY$3","ARROW_UP_KEY$1","ARROW_DOWN_KEY$1","EVENT_HIDE$5","EVENT_HIDDEN$5","EVENT_SHOW$5","EVENT_SHOWN$5","EVENT_CLICK_DATA_API$3","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_SHOW$6","SELECTOR_DATA_TOGGLE$3","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default$9","autoClose","display","popperConfig","DefaultType$9","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","referenceElement","_getPopperConfig","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","clearMenus","openToggles","context","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","NAME$9","CLASS_NAME_SHOW$5","EVENT_MOUSEDOWN","Default$8","className","clickCallback","rootElement","DefaultType$8","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","EVENT_KEY$5","EVENT_FOCUSIN$2","EVENT_KEYDOWN_TAB","TAB_NAV_BACKWARD","Default$7","autofocus","trapElement","DefaultType$7","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","innerWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","EVENT_KEY$4","EVENT_HIDE$4","EVENT_HIDE_PREVENTED$1","EVENT_HIDDEN$4","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_RESIZE$1","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS$1","EVENT_CLICK_DATA_API$2","CLASS_NAME_OPEN","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","Default$6","DefaultType$6","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","handleUpdate","modalBody","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","initialOverflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","EVENT_KEY$3","DATA_API_KEY$1","EVENT_LOAD_DATA_API$2","CLASS_NAME_SHOW$3","CLASS_NAME_SHOWING$1","CLASS_NAME_HIDING","OPEN_SELECTOR","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_HIDE$3","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$3","EVENT_RESIZE","EVENT_CLICK_DATA_API$1","EVENT_KEYDOWN_DISMISS","Default$5","DefaultType$5","Offcanvas","blur","DefaultAllowlist","area","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","nodeValue","attributeRegex","regex","Default$4","allowList","content","extraClass","sanitize","sanitizeFn","template","DefaultType$4","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","innerHTML","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","textContent","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","sanitizeHtml","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$2","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","animation","container","customClass","delay","title","DefaultType$3","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","prefix","floor","random","getElementById","getUID","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","SELECTOR_TITLE","SELECTOR_CONTENT","Default$2","DefaultType$2","Popover","_getContent","EVENT_KEY$2","EVENT_ACTIVATE","EVENT_CLICK","EVENT_LOAD_DATA_API$1","CLASS_NAME_ACTIVE$1","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LINKS","SELECTOR_LINK_ITEMS","Default$1","rootMargin","smoothScroll","threshold","DefaultType$1","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","scrollTo","behavior","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","listGroup","activeNodes","spy","EVENT_KEY$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","EVENT_KEYDOWN","EVENT_LOAD_DATA_API","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","SELECTOR_DROPDOWN_TOGGLE","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DATA_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSIN","EVENT_FOCUSOUT","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","documentReady","tooltipTriggerEl","btn","header","getElementsByClassName","oldScroll","scrollY","bootstrap"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/scripts/fontawesome.js b/_static/scripts/fontawesome.js new file mode 100644 index 000000000..71955b429 --- /dev/null +++ b/_static/scripts/fontawesome.js @@ -0,0 +1,3 @@ +/*! For license information please see fontawesome.js.LICENSE.txt */ +(()=>{var c={654:()=>{!function(){"use strict";var c={},l={};try{"undefined"!=typeof window&&(c=window),"undefined"!=typeof document&&(l=document)}catch(c){}var s=void 0===(v=(c.navigator||{}).userAgent)?"":v,a=c,z=l;function e(c,l){var s,a=Object.keys(c);return Object.getOwnPropertySymbols&&(s=Object.getOwnPropertySymbols(c),l&&(s=s.filter((function(l){return Object.getOwnPropertyDescriptor(c,l).enumerable}))),a.push.apply(a,s)),a}function H(c){for(var l=1;l<arguments.length;l++){var s=null!=arguments[l]?arguments[l]:{};l%2?e(Object(s),!0).forEach((function(l){t(c,l,s[l])})):Object.getOwnPropertyDescriptors?Object.defineProperties(c,Object.getOwnPropertyDescriptors(s)):e(Object(s)).forEach((function(l){Object.defineProperty(c,l,Object.getOwnPropertyDescriptor(s,l))}))}return c}function t(c,l,s){return l in c?Object.defineProperty(c,l,{value:s,enumerable:!0,configurable:!0,writable:!0}):c[l]=s,c}function V(c,l){(null==l||l>c.length)&&(l=c.length);for(var s=0,a=new Array(l);s<l;s++)a[s]=c[s];return a}a.document,z.documentElement&&z.head&&"function"==typeof z.addEventListener&&z.createElement,~s.indexOf("MSIE")||s.indexOf("Trident/");var r="___FONT_AWESOME___",M=function(){try{return!0}catch(c){return!1}}(),h="classic",n="sharp",i=[h,n];function m(c){return new Proxy(c,{get:function(c,l){return l in c?c[l]:c[h]}})}m((t(f={},h,{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit",fakd:"kit","fa-kit":"kit","fa-kit-duotone":"kit"}),t(f,n,{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"}),f));var o=m((t(C={},h,{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"}),t(C,n,{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"}),C)),f=(s=(m((t(v={},h,{fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"}),t(v,n,{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"}),v)),m((t(c={},h,{"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"}),t(c,n,{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"}),c)),m((t(l={},h,{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"}),t(l,n,{900:"fass",400:"fasr",300:"fasl",100:"fast"}),l)),z=[1,2,3,4,5,6,7,8,9,10]).concat([11,12,13,14,15,16,17,18,19,20]),"duotone-group"),C="swap-opacity",v="primary";c="secondary",l=new Set,Object.keys(o[h]).map(l.add.bind(l)),Object.keys(o[n]).map(l.add.bind(l)),[].concat(i,function(c){if(Array.isArray(c))return V(c)}(l)||function(c){if("undefined"!=typeof Symbol&&null!=c[Symbol.iterator]||null!=c["@@iterator"])return Array.from(c)}(l)||function(c,l){if(c){if("string"==typeof c)return V(c,l);var s=Object.prototype.toString.call(c).slice(8,-1);return"Map"===(s="Object"===s&&c.constructor?c.constructor.name:s)||"Set"===s?Array.from(c):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?V(c,l):void 0}}(l)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",f,C,v,c]).concat(z.map((function(c){return"".concat(c,"x")}))).concat(s.map((function(c){return"w-".concat(c)}))),(a=a||{})[r]||(a[r]={}),a[r].styles||(a[r].styles={}),a[r].hooks||(a[r].hooks={}),a[r].shims||(a[r].shims=[]);var L=a[r];function u(c){return Object.keys(c).reduce((function(l,s){var a=c[s];return a.icon?l[a.iconName]=a.icon:l[s]=a,l}),{})}function d(c,l,s){s=void 0!==(a=(2<arguments.length&&void 0!==s?s:{}).skipHooks)&&a;var a=u(l);"function"!=typeof L.hooks.addPack||s?L.styles[c]=H(H({},L.styles[c]||{}),a):L.hooks.addPack(c,u(l)),"fas"===c&&d("fa",l)}var p={monero:[496,512,[],"f3d0","M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z"],hooli:[640,512,[],"f427","M144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z"],yelp:[384,512,[],"f1e9","M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z"],"cc-visa":[576,512,[],"f1f0","M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"],lastfm:[512,512,[],"f202","M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z"],shopware:[512,512,[],"f5b5","M403.5 455.41A246.17 246.17 0 0 1 256 504C118.81 504 8 393 8 256 8 118.81 119 8 256 8a247.39 247.39 0 0 1 165.7 63.5 3.57 3.57 0 0 1-2.86 6.18A418.62 418.62 0 0 0 362.13 74c-129.36 0-222.4 53.47-222.4 155.35 0 109 92.13 145.88 176.83 178.73 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.09a3.64 3.64 0 0 0-1.27-2.44c-51.76-43-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.09z"],"creative-commons-nc":[496,512,[],"f4e8","M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z"],aws:[640,512,[],"f375","M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"],redhat:[512,512,[],"f7bc","M341.52 285.56c33.65 0 82.34-6.94 82.34-47 .22-6.74.86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.11 228.47 106.11M429 254.84c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.74.08-235.91-73.65-235.91-122.33a49.55 49.55 0 0 1 4.06-19.72C58.56 200.86 0 208.93 0 260.63c0 84.67 200.63 189 359.49 189 121.79 0 152.51-55.08 152.51-98.58 0-34.21-29.59-73.05-82.93-96.24"],yoast:[448,512,[],"f2b1","M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z"],cloudflare:[640,512,[],"e07d","M407.906,319.913l-230.8-2.928a4.58,4.58,0,0,1-3.632-1.926,4.648,4.648,0,0,1-.494-4.147,6.143,6.143,0,0,1,5.361-4.076L411.281,303.9c27.631-1.26,57.546-23.574,68.022-50.784l13.286-34.542a7.944,7.944,0,0,0,.524-2.936,7.735,7.735,0,0,0-.164-1.631A151.91,151.91,0,0,0,201.257,198.4,68.12,68.12,0,0,0,94.2,269.59C41.924,271.106,0,313.728,0,366.12a96.054,96.054,0,0,0,1.029,13.958,4.508,4.508,0,0,0,4.445,3.871l426.1.051c.043,0,.08-.019.122-.02a5.606,5.606,0,0,0,5.271-4l3.273-11.265c3.9-13.4,2.448-25.8-4.1-34.9C430.124,325.423,420.09,320.487,407.906,319.913ZM513.856,221.1c-2.141,0-4.271.062-6.391.164a3.771,3.771,0,0,0-3.324,2.653l-9.077,31.193c-3.9,13.4-2.449,25.786,4.1,34.89,6.02,8.4,16.054,13.323,28.238,13.9l49.2,2.939a4.491,4.491,0,0,1,3.51,1.894,4.64,4.64,0,0,1,.514,4.169,6.153,6.153,0,0,1-5.351,4.075l-51.125,2.939c-27.754,1.27-57.669,23.574-68.145,50.784l-3.695,9.606a2.716,2.716,0,0,0,2.427,3.68c.046,0,.088.017.136.017h175.91a4.69,4.69,0,0,0,4.539-3.37,124.807,124.807,0,0,0,4.682-34C640,277.3,583.524,221.1,513.856,221.1Z"],ups:[384,512,[],"f7e0","M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4.6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2.6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z"],pixiv:[448,512,[],"e640","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm171.5 84c41 0 76.3 12.9 101.4 35.2l0 0c25.2 22.2 39.8 54.1 39.8 88.8c.1 35.3-16.6 66.3-42.4 87c-25.9 20.8-60.6 32.4-98.8 32.4c-43.5 0-83.8-16.1-83.8-16.1v51.8c7.4 2.2 19.7 7 11.9 14.8H104.8c-7.7-7.8 3.6-12.4 12.1-14.8V175.5C97.1 190.9 87 204.3 81.8 214.2c6 19.4-5.3 18.5-5.3 18.5L56 199.7s72.7-83.7 179.5-83.7zm-3.6 222.9c30 0 56-11.3 73.9-29.2c17.9-18.1 27.9-41.6 28-70.2c-.1-29.3-9.5-54.6-26.7-73.6c-17.2-18.9-42.7-31.3-75.2-31.4c-26.7-.1-59.8 9-80.2 23.7V323.1c18.6 9.3 46.8 15.9 80.2 15.8z"],wpexplorer:[512,512,[],"f2de","M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z"],dyalog:[416,512,[],"f399","M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z"],bity:[496,512,[],"f37a","M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z"],stackpath:[448,512,[],"f842","M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.84c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18.56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.38-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.18h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.94 325L347 186.78h-31.09L268 325zm106.52-138.22h-31.09L325.46 325h29.94z"],buysellads:[448,512,[],"f20d","M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z"],"first-order":[448,512,[],"f2b0","M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z"],modx:[448,512,[],"f285","M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z"],guilded:[448,512,[],"e07e","M443.427,64H4.571c0,103.26,22.192,180.06,43.418,222.358C112.046,414.135,224,448,225.256,448a312.824,312.824,0,0,0,140.55-103.477c25.907-33.923,53.1-87.19,65.916-145.761H171.833c4.14,36.429,22.177,67.946,45.1,86.944h88.589c-17.012,28.213-48.186,54.4-80.456,69.482-31.232-13.259-69.09-46.544-96.548-98.362-26.726-53.833-27.092-105.883-27.092-105.883H437.573A625.91,625.91,0,0,0,443.427,64Z"],vnv:[640,512,[],"f40b","M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z"],"square-js":[448,512,["js-square"],"f3b9","M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM180.9 444.9c-33.7 0-53.2-17.4-63.2-38.5L152 385.7c6.6 11.7 12.6 21.6 27.1 21.6c13.8 0 22.6-5.4 22.6-26.5V237.7h42.1V381.4c0 43.6-25.6 63.5-62.9 63.5zm85.8-43L301 382.1c9 14.7 20.8 25.6 41.5 25.6c17.4 0 28.6-8.7 28.6-20.8c0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5c0-31.6 24.1-55.6 61.6-55.6c26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18c-12.3 0-20.1 7.8-20.1 18c0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2c0 37.8-29.8 58.6-69.7 58.6c-39.1 0-64.4-18.6-76.7-43z"],microsoft:[448,512,[],"f3ca","M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"],qq:[448,512,[],"f1d6","M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z"],orcid:[512,512,[],"f8d2","M294.75 188.19h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.76h-29.84v-207.5h29.84zm-14.92-231.14a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1-19.57 19.57zM300 369h-81V161.26h80.6c76.73 0 110.44 54.83 110.44 103.85C410 318.39 368.38 369 300 369z"],java:[384,512,[],"f4e4","M277.74 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.84 0 242.84 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1-2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0-8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.84 509.4 401 461.3 348 437.4zM124.44 396c-78.7 22 47.9 67.4 148.1 24.5a185.89 185.89 0 0 1-28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.64 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1-21.1-12.8z"],invision:[448,512,[],"f7b0","M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9.7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3.1-14.3.9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z"],"creative-commons-pd-alt":[496,512,[],"f4ed","M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6.9 41.6z"],centercode:[512,512,[],"f380","M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z"],"glide-g":[448,512,[],"f2a6","M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z"],drupal:[448,512,[],"f1a9","M303.973,108.136C268.2,72.459,234.187,38.35,224.047,0c-9.957,38.35-44.25,72.459-80.019,108.136C90.467,161.7,29.716,222.356,29.716,313.436c-2.337,107.3,82.752,196.18,190.053,198.517S415.948,429.2,418.285,321.9q.091-4.231,0-8.464C418.285,222.356,357.534,161.7,303.973,108.136Zm-174.326,223a130.282,130.282,0,0,0-15.211,24.153,4.978,4.978,0,0,1-3.319,2.766h-1.659c-4.333,0-9.219-8.481-9.219-8.481h0c-1.29-2.028-2.489-4.149-3.687-6.361l-.83-1.752c-11.247-25.72-1.475-62.318-1.475-62.318h0a160.585,160.585,0,0,1,23.231-49.873A290.8,290.8,0,0,1,138.5,201.613l9.219,9.219,43.512,44.434a4.979,4.979,0,0,1,0,6.638L145.78,312.33h0Zm96.612,127.311a67.2,67.2,0,0,1-49.781-111.915c14.2-16.871,31.528-33.464,50.334-55.313,22.309,23.785,36.875,40.1,51.164,57.986a28.413,28.413,0,0,1,2.95,4.425,65.905,65.905,0,0,1,11.984,37.981,66.651,66.651,0,0,1-66.466,66.836ZM352.371,351.6h0a7.743,7.743,0,0,1-6.176,5.347H344.9a11.249,11.249,0,0,1-6.269-5.07h0a348.21,348.21,0,0,0-39.456-48.952L281.387,284.49,222.3,223.185a497.888,497.888,0,0,1-35.4-36.322,12.033,12.033,0,0,0-.922-1.382,35.4,35.4,0,0,1-4.7-9.219V174.51a31.346,31.346,0,0,1,9.218-27.656c11.432-11.431,22.955-22.954,33.833-34.939,11.984,13.275,24.8,26,37.428,38.627h0a530.991,530.991,0,0,1,69.6,79.1,147.494,147.494,0,0,1,27.011,83.8A134.109,134.109,0,0,1,352.371,351.6Z"],jxl:[448,512,[],"e67b","M412.2 32H35.8C16 32 0 48 0 67.8V444.2C0 464 16 480 35.8 480H412.2c19.8 0 35.8-16 35.8-35.8V67.8C448 48 432 32 412.2 32zM378.6 333.7c0 40.2-32.6 72.8-72.8 72.8H70.2c0-40.2 32.6-72.8 72.8-72.8H378.6zm0-113.9c0 40.2-32.6 72.8-72.8 72.8H70.2c0-40.2 32.6-72.8 72.8-72.8H378.6zm0-113.9c0 40.2-32.6 72.8-72.8 72.8H70.2c0-40.2 32.6-72.8 72.8-72.8H378.6z"],"hire-a-helper":[512,512,[],"f3b0","M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z"],"creative-commons-by":[496,512,[],"f4e7","M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"],unity:[448,512,[],"e049","M243.583 91.6027L323.695 138.384C326.575 140.026 326.68 144.583 323.695 146.225L228.503 201.854C225.623 203.55 222.22 203.444 219.549 201.854L124.357 146.225C121.425 144.636 121.373 139.973 124.357 138.384L204.417 91.6027V0L0 119.417V358.252L78.3843 312.477V218.914C78.3319 215.576 82.2066 213.192 85.0865 214.993L180.279 270.622C183.159 272.318 184.782 275.338 184.782 278.464V389.669C184.834 393.007 180.959 395.391 178.079 393.589L97.9673 346.808L19.583 392.583L224 512L428.417 392.583L350.033 346.808L269.921 393.589C267.093 395.338 263.114 393.06 263.218 389.669V278.464C263.218 275.126 265.051 272.159 267.721 270.622L362.914 214.993C365.741 213.245 369.72 215.47 369.616 218.914V312.477L448 358.252V119.417L243.583 0V91.6027Z"],whmcs:[448,512,[],"f40d","M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z"],rocketchat:[576,512,[],"f3e8","M284.046,224.8a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,284.046,224.8Zm-110.45,0a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,173.6,224.8Zm220.923,0a34.114,34.114,0,1,0,34.317,34.113A34.215,34.215,0,0,0,394.519,224.8Zm153.807-55.319c-15.535-24.172-37.31-45.57-64.681-63.618-52.886-34.817-122.374-54-195.666-54a405.975,405.975,0,0,0-72.032,6.357,238.524,238.524,0,0,0-49.51-36.588C99.684-11.7,40.859.711,11.135,11.421A14.291,14.291,0,0,0,5.58,34.782C26.542,56.458,61.222,99.3,52.7,138.252c-33.142,33.9-51.112,74.776-51.112,117.337,0,43.372,17.97,84.248,51.112,118.148,8.526,38.956-26.154,81.816-47.116,103.491a14.284,14.284,0,0,0,5.555,23.34c29.724,10.709,88.549,23.147,155.324-10.2a238.679,238.679,0,0,0,49.51-36.589A405.972,405.972,0,0,0,288,460.14c73.313,0,142.8-19.159,195.667-53.975,27.371-18.049,49.145-39.426,64.679-63.619,17.309-26.923,26.07-55.916,26.07-86.125C574.394,225.4,565.634,196.43,548.326,169.485ZM284.987,409.9a345.65,345.65,0,0,1-89.446-11.5l-20.129,19.393a184.366,184.366,0,0,1-37.138,27.585,145.767,145.767,0,0,1-52.522,14.87c.983-1.771,1.881-3.563,2.842-5.356q30.258-55.68,16.325-100.078c-32.992-25.962-52.778-59.2-52.778-95.4,0-83.1,104.254-150.469,232.846-150.469s232.867,67.373,232.867,150.469C517.854,342.525,413.6,409.9,284.987,409.9Z"],vk:[448,512,[],"f189","M31.4907 63.4907C0 94.9813 0 145.671 0 247.04V264.96C0 366.329 0 417.019 31.4907 448.509C62.9813 480 113.671 480 215.04 480H232.96C334.329 480 385.019 480 416.509 448.509C448 417.019 448 366.329 448 264.96V247.04C448 145.671 448 94.9813 416.509 63.4907C385.019 32 334.329 32 232.96 32H215.04C113.671 32 62.9813 32 31.4907 63.4907ZM75.6 168.267H126.747C128.427 253.76 166.133 289.973 196 297.44V168.267H244.16V242C273.653 238.827 304.64 205.227 315.093 168.267H363.253C359.313 187.435 351.46 205.583 340.186 221.579C328.913 237.574 314.461 251.071 297.733 261.227C316.41 270.499 332.907 283.63 346.132 299.751C359.357 315.873 369.01 334.618 374.453 354.747H321.44C316.555 337.262 306.614 321.61 292.865 309.754C279.117 297.899 262.173 290.368 244.16 288.107V354.747H238.373C136.267 354.747 78.0267 284.747 75.6 168.267Z"],untappd:[640,512,[],"f405","M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z"],mailchimp:[448,512,[],"f59e","M330.61 243.52a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43.45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277.05 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0-30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06.85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1.9.34 1.17.81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92.34 4.31.52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81.28-15.96zm-218.79 78.9c-1.32.31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27.57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0-.2-2.33c.03.89.68-1.3-3.35-.39zm299.72-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.42-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.81 25.78 273.85l14.76 12.51a72.49 72.49 0 0 0-4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.06 267.9 133.28 322.29 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.55C69.14 252.5 55.78 261.09 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.21C112.42 90.56 186.19 39.68 220.36 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.18 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.85 102.85 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.86 106.86 0 0 1 362.55 421a132.45 132.45 0 0 1-20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1-3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0-1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48.5 15.89 1.59 22.88 1.88 11.69.5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49.29 6.72 1.1 23 1.38 27.63.63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.48 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.37-21.35.69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.46 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73.73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75.75 0 0 0 1.16.79c11.49-7.83 31.48-16.22 49-17.3a.77.77 0 0 1 .52 1.38 41.86 41.86 0 0 0-7.71 7.74.75.75 0 0 0 .59 1.19c12.31.09 29.66 4.4 41 10.74.76.43.22 1.91-.64 1.72-69.55-15.94-123.08 18.53-134.5 26.83a.76.76 0 0 1-1-1.12z"],"css3-alt":[384,512,[],"f38b","M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z"],"square-reddit":[448,512,["reddit-square"],"f1a2","M64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32zM305.9 166.4c20.6 0 37.3-16.7 37.3-37.3s-16.7-37.3-37.3-37.3c-18 0-33.1 12.8-36.6 29.8c-30.2 3.2-53.8 28.8-53.8 59.9l0 .2c-32.8 1.4-62.8 10.7-86.6 25.5c-8.8-6.8-19.9-10.9-32-10.9c-28.9 0-52.3 23.4-52.3 52.3c0 21 12.3 39 30.1 47.4c1.7 60.7 67.9 109.6 149.3 109.6s147.6-48.9 149.3-109.7c17.7-8.4 29.9-26.4 29.9-47.3c0-28.9-23.4-52.3-52.3-52.3c-12 0-23 4-31.9 10.8c-24-14.9-54.3-24.2-87.5-25.4l0-.1c0-22.2 16.5-40.7 37.9-43.7l0 0c3.9 16.5 18.7 28.7 36.3 28.7zM155 248.1c14.6 0 25.8 15.4 25 34.4s-11.8 25.9-26.5 25.9s-27.5-7.7-26.6-26.7s13.5-33.5 28.1-33.5zm166.4 33.5c.9 19-12 26.7-26.6 26.7s-25.6-6.9-26.5-25.9c-.9-19 10.3-34.4 25-34.4s27.3 14.6 28.1 33.5zm-42.1 49.6c-9 21.5-30.3 36.7-55.1 36.7s-46.1-15.1-55.1-36.7c-1.1-2.6 .7-5.4 3.4-5.7c16.1-1.6 33.5-2.5 51.7-2.5s35.6 .9 51.7 2.5c2.7 .3 4.5 3.1 3.4 5.7z"],"vimeo-v":[448,512,[],"f27d","M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z"],contao:[512,512,[],"f26d","M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z"],"square-font-awesome":[448,512,[],"e5ad","M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm90 122c0 9.3-4.8 17.4-12.1 22l188.9 0c7.3 0 13.2 5.9 13.2 13.2c0 1.8-.4 3.7-1.1 5.4L312 264l30.9 69.4c.7 1.7 1.1 3.5 1.1 5.4c0 7.3-5.9 13.2-13.2 13.2L144 352l0 32-32 0 0-32 0-176 0-1.5c-6.1-4.8-10-12.2-10-20.5c0-14.4 11.6-26 26-26s26 11.6 26 26z"],deskpro:[480,512,[],"f38f","M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z"],brave:[448,512,[],"e63c","M145.5 0H224h78.5l44.7 50.8s39.3-10.9 57.8 7.6s33.8 34.9 33.8 34.9l-12 29.5 15.3 43.7s-44.9 170.2-50.1 191c-10.4 40.9-17.4 56.8-46.9 77.5s-82.9 56.8-91.6 62.2c-1.9 1.2-3.9 2.5-5.9 3.9c-7.5 5.1-15.8 10.8-23.5 10.8l0 0 0 0c-7.7 0-16.1-5.7-23.5-10.8c-2-1.4-4-2.8-5.9-3.9c-8.7-5.5-62.1-41.5-91.6-62.2s-36.5-36.6-46.9-77.5c-5.3-20.8-50.1-191-50.1-191l15.3-43.7L9.2 93.3s15.3-16.4 33.8-34.9s57.8-7.6 57.8-7.6L145.5 0zM224 407.6l0 0c3.7 0 8.9-4.7 13-8.4c.6-.5 1.2-1.1 1.7-1.5c4.2-3.7 47.8-37.5 51-39.8s5.4-6.5 1.9-8.7c-2.8-1.7-10-5.5-20.3-10.8c-3-1.6-6.3-3.2-9.7-5c-15.4-8-34.5-14.7-37.5-14.7l0 0 0 0c-3 0-22.1 6.8-37.5 14.7c-3.5 1.8-6.7 3.5-9.7 5c-10.3 5.3-17.6 9.1-20.3 10.8c-3.6 2.2-1.4 6.4 1.9 8.7s46.8 36.1 51 39.8c.5 .5 1.1 1 1.7 1.5c4.1 3.7 9.3 8.4 13 8.4l0 0zm0-165.7l0 0c4.7 0 17.6-3 26.4-5l0 0 2-.5c7.8-1.8 7.3-6.3 6.4-13c-.1-.8-.2-1.6-.3-2.4c-.6-6.1-5.8-33.1-9.1-50.3c-1.1-5.8-2-10.5-2.4-12.9c-1.5-8.1-.6-9.4 .7-11.3c.2-.3 .5-.7 .7-1.1c1.4-2.3 16-6.2 27.9-9.5l0 0c2.5-.7 4.8-1.3 6.9-1.9c10.6-3 32.4-.6 44.2 .6c1.8 .2 3.4 .4 4.7 .5c9.6 .9 10.4 2.3 7.2 3.8c-2.3 1.1-16.2 6.3-28.7 10.9l0 0 0 0c-4.7 1.8-9.2 3.5-12.8 4.8c-1.5 .5-3 1.1-4.5 1.7c-12.5 4.6-27.2 10-28.9 19.4c-1.5 8.3 5.2 19.9 11.3 30.3l0 0c1.6 2.8 3.2 5.5 4.6 8.1c6.3 11.9 6.5 13.3 6.1 18.1c-.4 3.9-14.5 12.7-22.4 17.6l0 0c-1.8 1.1-3.3 2.1-4.2 2.7c-.8 .5-2.1 1.4-3.8 2.4c-8.6 5.2-26.3 16-26.3 22.5c0 7.8 24.6 28.1 32.4 33.2s28.9 16.1 37.9 17.8s23-8.5 31.2-23.8c7.7-14.4 1.7-28.5-3.2-40l-.9-2.2c-4.5-10.6 1.9-17 6.2-21.3l0 0c.5-.5 1-1 1.4-1.4L377.7 194c1.3-1.3 2.5-2.6 3.7-3.8l0 0c5.8-5.7 10.8-10.5 10.8-22.8c0-14.9-57.5-84.5-57.5-84.5s-48.5 9.3-55.1 9.3c-5.2 0-15.3-3.5-25.8-7.1l0 0c-2.7-.9-5.4-1.9-8-2.7C232.8 78.1 224 78 224 78l0 0 0 0s-8.7 0-21.8 4.4c-2.7 .9-5.4 1.8-8 2.7l0 0c-10.5 3.6-20.6 7.1-25.8 7.1c-6.5 0-55.1-9.3-55.1-9.3s-57.5 69.6-57.5 84.5c0 12.3 4.9 17.1 10.8 22.8l0 0c1.2 1.2 2.5 2.4 3.7 3.8l43.1 45.8c.4 .5 .9 .9 1.4 1.4l0 0c4.3 4.3 10.6 10.7 6.2 21.3l-.9 2.2c-4.9 11.5-11 25.6-3.2 40c8.2 15.3 22.2 25.5 31.2 23.8s30.1-12.7 37.9-17.8s32.4-25.4 32.4-33.2c0-6.5-17.7-17.3-26.3-22.5c-1.7-1-3.1-1.9-3.8-2.4c-.9-.6-2.4-1.5-4.2-2.7c-7.9-4.9-22-13.7-22.4-17.6c-.4-4.8-.3-6.2 6.1-18.1c1.3-2.5 2.9-5.3 4.6-8.1c6-10.4 12.8-22 11.3-30.3c-1.7-9.4-16.4-14.8-28.9-19.4c-1.6-.6-3.1-1.1-4.5-1.7c-3.6-1.4-8.1-3.1-12.8-4.8l-.1 0c-12.5-4.7-26.4-9.9-28.7-10.9c-3.2-1.5-2.3-2.8 7.2-3.8c1.3-.1 2.9-.3 4.7-.5c11.8-1.3 33.6-3.6 44.2-.6c2.1 .6 4.4 1.2 6.9 1.9c11.9 3.2 26.5 7.2 27.9 9.5c.2 .4 .5 .7 .7 1.1c1.3 1.9 2.2 3.2 .7 11.3c-.4 2.4-1.3 7.1-2.4 12.9c-3.3 17.2-8.5 44.2-9.1 50.3c-.1 .8-.2 1.7-.3 2.4c-.8 6.7-1.4 11.2 6.4 13l2 .5 0 0c8.8 2 21.8 5 26.4 5l0 0z"],sistrix:[448,512,[],"f3ee","M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z"],"square-instagram":[448,512,["instagram-square"],"e055","M194.4 211.7a53.3 53.3 0 1 0 59.3 88.7 53.3 53.3 0 1 0 -59.3-88.7zm142.3-68.4c-5.2-5.2-11.5-9.3-18.4-12c-18.1-7.1-57.6-6.8-83.1-6.5c-4.1 0-7.9 .1-11.2 .1c-3.3 0-7.2 0-11.4-.1c-25.5-.3-64.8-.7-82.9 6.5c-6.9 2.7-13.1 6.8-18.4 12s-9.3 11.5-12 18.4c-7.1 18.1-6.7 57.7-6.5 83.2c0 4.1 .1 7.9 .1 11.1s0 7-.1 11.1c-.2 25.5-.6 65.1 6.5 83.2c2.7 6.9 6.8 13.1 12 18.4s11.5 9.3 18.4 12c18.1 7.1 57.6 6.8 83.1 6.5c4.1 0 7.9-.1 11.2-.1c3.3 0 7.2 0 11.4 .1c25.5 .3 64.8 .7 82.9-6.5c6.9-2.7 13.1-6.8 18.4-12s9.3-11.5 12-18.4c7.2-18 6.8-57.4 6.5-83c0-4.2-.1-8.1-.1-11.4s0-7.1 .1-11.4c.3-25.5 .7-64.9-6.5-83l0 0c-2.7-6.9-6.8-13.1-12-18.4zm-67.1 44.5A82 82 0 1 1 178.4 324.2a82 82 0 1 1 91.1-136.4zm29.2-1.3c-3.1-2.1-5.6-5.1-7.1-8.6s-1.8-7.3-1.1-11.1s2.6-7.1 5.2-9.8s6.1-4.5 9.8-5.2s7.6-.4 11.1 1.1s6.5 3.9 8.6 7s3.2 6.8 3.2 10.6c0 2.5-.5 5-1.4 7.3s-2.4 4.4-4.1 6.2s-3.9 3.2-6.2 4.2s-4.8 1.5-7.3 1.5l0 0c-3.8 0-7.5-1.1-10.6-3.2zM448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM357 389c-18.7 18.7-41.4 24.6-67 25.9c-26.4 1.5-105.6 1.5-132 0c-25.6-1.3-48.3-7.2-67-25.9s-24.6-41.4-25.8-67c-1.5-26.4-1.5-105.6 0-132c1.3-25.6 7.1-48.3 25.8-67s41.5-24.6 67-25.8c26.4-1.5 105.6-1.5 132 0c25.6 1.3 48.3 7.1 67 25.8s24.6 41.4 25.8 67c1.5 26.3 1.5 105.4 0 131.9c-1.3 25.6-7.1 48.3-25.8 67z"],"battle-net":[512,512,[],"f835","M448.61 225.62c26.87.18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.05-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.18 7.14 238.7 1.07 228.18.22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.56-9.22 5.22 53 29.75 101.82 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61.15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.82 4.6 143.29-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.22c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.69c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.35c-10.29-5.34-21.16-10.34-32.38-15.05a722.459 722.459 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.18 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.78 718.78 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.34 98-132.75 115.92-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.07 12.3.91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.23 695.23 0 0 0 44.67 152.84c.93-.38 1.84.88 18.67-8.25-26.33-74.47-33.76-138.17-34-173.43 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.32 30.71q-10.69 15.66-23.33 32.47C365.63 152 339.1 145.84 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.63 717.63 0 0 0-115.34-31.71 646.608 646.608 0 0 0-39.39-6.05c-.07.45-1.81 1.85-2.16 20.33C300 190.28 358.78 215.68 389.36 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.55 306.58 111zm-130.65 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.06 74.8"],"the-red-yeti":[512,512,[],"f69d","M488.23 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0-25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5.5a239.36 239.36 0 0 0-68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0-.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.26 194.26 0 0 0-46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.18 200.18 0 0 0-27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7.7 3.4 1.2 5.2 0 25.5.4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.84 181.84 0 0 0 495 255a44.74 44.74 0 0 0-6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.44 242.44 0 0 1-27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1-1.7-15.2c5.4.5 8.8 3.4 9.3 10.1.5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8.9-.7 14.8h-2.5a62.32 62.32 0 0 0-8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5.5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.68 234.68 0 0 0-6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1.5c-11.8 13.5-27.8 21.9-48.5 24.8a201.26 201.26 0 0 1-23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0-14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7.5 1.2c2 .2 3.9.5 6.2.7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4.5 13 1 19.4 1.2 6.4 0 8.4.5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.13 141.13 0 0 1-3 28.3 209.91 209.91 0 0 1-16 46l2.5.5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2.2-.2.2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.27-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3.5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.57 262.57 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2.7 89.5zm115.3-214.4l-2.5.5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.82 214.82 0 0 1-93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2.4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7.5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.21 254.21 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0-14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2.5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5.5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6.3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5.5.5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0-.5-1.7 14.21 14.21 0 0 0-13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0-2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1-11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9.5.5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1.5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2.5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1.5c-5.9 1.2-12.3 4.2-19.4 8.4z"],"square-hacker-news":[448,512,["hacker-news-square"],"f3af","M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM21 229.2c0 0 .1-.1 .1-.2s.1-.2 .2-.2c0 .1 0 .3-.1 .4H21zM239.2 384H207.8V281.3L128 128h37.3c41.5 77.7 48.1 95.8 54.1 112c1.6 4.3 3.1 8.5 5.2 13.6c3.2-7 5.1-11.9 7.1-17.3c5.9-15.3 12.8-33.2 53.5-108.3H320L239.2 283.1V384z"],edge:[512,512,[],"f282","M120.1 37.44C161.1 12.23 207.7-.7753 255 .0016C423 .0016 512 123.8 512 219.5C511.9 252.2 499 283.4 476.1 306.7C453.2 329.9 422.1 343.2 389.4 343.7C314.2 343.7 297.9 320.6 297.9 311.7C297.9 307.9 299.1 305.5 302.7 302.3L303.7 301.1L304.1 299.5C314.6 288 320 273.3 320 257.9C320 179.2 237.8 115.2 136 115.2C98.46 114.9 61.46 124.1 28.48 142.1C55.48 84.58 111.2 44.5 119.8 38.28C120.6 37.73 120.1 37.44 120.1 37.44V37.44zM135.7 355.5C134.3 385.5 140.3 415.5 152.1 442.7C165.7 469.1 184.8 493.7 208.6 512C149.1 500.5 97.11 468.1 59.2 422.7C21.12 376.3 0 318.4 0 257.9C0 206.7 62.4 163.5 136 163.5C172.6 162.9 208.4 174.4 237.8 196.2L234.2 197.4C182.7 215 135.7 288.1 135.7 355.5V355.5zM469.8 400L469.1 400.1C457.3 418.9 443.2 435.2 426.9 449.6C396.1 477.6 358.8 495.1 318.1 499.5C299.5 499.8 281.3 496.3 264.3 488.1C238.7 477.8 217.2 458.1 202.7 435.1C188.3 411.2 181.6 383.4 183.7 355.5C183.1 335.4 189.1 315.2 198.7 297.3C212.6 330.4 236.2 358.6 266.3 378.1C296.4 397.6 331.8 407.6 367.7 406.7C398.7 407 429.8 400 457.9 386.2L459.8 385.3C463.7 383 467.5 381.4 471.4 385.3C475.9 390.2 473.2 394.5 470.2 399.3C470 399.5 469.9 399.8 469.8 400V400z"],threads:[448,512,[],"e618","M331.5 235.7c2.2 .9 4.2 1.9 6.3 2.8c29.2 14.1 50.6 35.2 61.8 61.4c15.7 36.5 17.2 95.8-30.3 143.2c-36.2 36.2-80.3 52.5-142.6 53h-.3c-70.2-.5-124.1-24.1-160.4-70.2c-32.3-41-48.9-98.1-49.5-169.6V256v-.2C17 184.3 33.6 127.2 65.9 86.2C102.2 40.1 156.2 16.5 226.4 16h.3c70.3 .5 124.9 24 162.3 69.9c18.4 22.7 32 50 40.6 81.7l-40.4 10.8c-7.1-25.8-17.8-47.8-32.2-65.4c-29.2-35.8-73-54.2-130.5-54.6c-57 .5-100.1 18.8-128.2 54.4C72.1 146.1 58.5 194.3 58 256c.5 61.7 14.1 109.9 40.3 143.3c28 35.6 71.2 53.9 128.2 54.4c51.4-.4 85.4-12.6 113.7-40.9c32.3-32.2 31.7-71.8 21.4-95.9c-6.1-14.2-17.1-26-31.9-34.9c-3.7 26.9-11.8 48.3-24.7 64.8c-17.1 21.8-41.4 33.6-72.7 35.3c-23.6 1.3-46.3-4.4-63.9-16c-20.8-13.8-33-34.8-34.3-59.3c-2.5-48.3 35.7-83 95.2-86.4c21.1-1.2 40.9-.3 59.2 2.8c-2.4-14.8-7.3-26.6-14.6-35.2c-10-11.7-25.6-17.7-46.2-17.8H227c-16.6 0-39 4.6-53.3 26.3l-34.4-23.6c19.2-29.1 50.3-45.1 87.8-45.1h.8c62.6 .4 99.9 39.5 103.7 107.7l-.2 .2zm-156 68.8c1.3 25.1 28.4 36.8 54.6 35.3c25.6-1.4 54.6-11.4 59.5-73.2c-13.2-2.9-27.8-4.4-43.4-4.4c-4.8 0-9.6 .1-14.4 .4c-42.9 2.4-57.2 23.2-56.2 41.8l-.1 .1z"],napster:[496,512,[],"f3d2","M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z"],"square-snapchat":[448,512,["snapchat-square"],"f2ad","M384,32H64A64,64,0,0,0,0,96V416a64,64,0,0,0,64,64H384a64,64,0,0,0,64-64V96A64,64,0,0,0,384,32Zm-3.907,319.309-.083.1a32.364,32.364,0,0,1-8.717,6.823,90.26,90.26,0,0,1-20.586,8.2,12.694,12.694,0,0,0-3.852,1.76c-2.158,1.909-2.1,4.64-4.4,8.55a23.137,23.137,0,0,1-6.84,7.471c-6.707,4.632-14.244,4.923-22.23,5.23-7.214.274-15.39.581-24.729,3.669-3.761,1.245-7.753,3.694-12.377,6.533-11.265,6.9-26.68,16.353-52.3,16.353s-40.925-9.4-52.106-16.279c-4.657-2.888-8.675-5.362-12.543-6.64-9.339-3.08-17.516-3.4-24.729-3.67-7.986-.307-15.523-.6-22.231-5.229a23.085,23.085,0,0,1-6.01-6.11c-3.2-4.632-2.855-7.8-5.254-9.895a13.428,13.428,0,0,0-4.1-1.834,89.986,89.986,0,0,1-20.313-8.127,32.905,32.905,0,0,1-8.3-6.284c-6.583-6.757-8.276-14.776-5.686-21.824,3.436-9.338,11.571-12.111,19.4-16.262,14.776-8.027,26.348-18.055,34.433-29.884a68.236,68.236,0,0,0,5.985-10.567c.789-2.158.772-3.329.241-4.416a7.386,7.386,0,0,0-2.208-2.217c-2.532-1.676-5.113-3.353-6.882-4.5-3.27-2.141-5.868-3.818-7.529-4.98-6.267-4.383-10.65-9.04-13.4-14.245a28.4,28.4,0,0,1-1.369-23.584c4.134-10.924,14.469-17.706,26.978-17.706a37.141,37.141,0,0,1,7.845.83c.689.15,1.37.307,2.042.482-.108-7.43.058-15.357.722-23.119,2.358-27.261,11.912-41.589,21.874-52.994a86.836,86.836,0,0,1,22.28-17.931C188.254,100.383,205.312,96,224,96s35.828,4.383,50.944,13.016a87.169,87.169,0,0,1,22.239,17.9c9.961,11.406,19.516,25.709,21.874,52.995a231.194,231.194,0,0,1,.713,23.118c.673-.174,1.362-.332,2.051-.481a37.131,37.131,0,0,1,7.844-.83c12.5,0,22.82,6.782,26.971,17.706a28.37,28.37,0,0,1-1.4,23.559c-2.74,5.2-7.123,9.861-13.39,14.244-1.668,1.187-4.258,2.864-7.529,4.981-1.835,1.187-4.541,2.947-7.164,4.682a6.856,6.856,0,0,0-1.951,2.034c-.506,1.046-.539,2.191.166,4.208a69.015,69.015,0,0,0,6.085,10.792c8.268,12.1,20.188,22.313,35.454,30.407,1.486.772,2.98,1.5,4.441,2.258.722.332,1.569.763,2.491,1.3,4.9,2.723,9.2,6.01,11.455,12.153C387.821,336.915,386.269,344.7,380.093,351.309Zm-16.719-18.461c-50.313-24.314-58.332-61.918-58.689-64.749-.431-3.379-.921-6.035,2.806-9.472,3.594-3.328,19.541-13.19,23.965-16.278,7.33-5.114,10.534-10.219,8.16-16.495-1.66-4.316-5.686-5.976-9.961-5.976a18.5,18.5,0,0,0-3.993.448c-8.035,1.743-15.838,5.769-20.354,6.857a7.1,7.1,0,0,1-1.66.224c-2.408,0-3.279-1.071-3.088-3.968.564-8.783,1.759-25.925.373-41.937-1.884-22.032-8.99-32.948-17.432-42.6-4.051-4.624-23.135-24.654-59.536-24.654S168.53,134.359,164.479,139c-8.434,9.654-15.531,20.57-17.432,42.6-1.386,16.013-.141,33.147.373,41.937.166,2.756-.68,3.968-3.088,3.968a7.1,7.1,0,0,1-1.66-.224c-4.507-1.087-12.31-5.113-20.346-6.856a18.494,18.494,0,0,0-3.993-.449c-4.25,0-8.3,1.636-9.961,5.977-2.374,6.276.847,11.381,8.168,16.494,4.425,3.088,20.371,12.958,23.966,16.279,3.719,3.437,3.237,6.093,2.805,9.471-.356,2.79-8.384,40.394-58.689,64.749-2.946,1.428-7.96,4.45.88,9.331,13.88,7.628,23.111,6.807,30.3,11.43,6.093,3.927,2.5,12.394,6.923,15.449,5.454,3.76,21.583-.266,42.335,6.6,17.433,5.744,28.116,22.015,58.963,22.015s41.788-16.3,58.938-21.973c20.795-6.865,36.89-2.839,42.336-6.6,4.433-3.055.822-11.522,6.923-15.448,7.181-4.624,16.411-3.8,30.3-11.472C371.36,337.355,366.346,334.333,363.374,332.848Z"],"google-plus-g":[640,512,[],"f0d5","M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z"],artstation:[512,512,[],"f77a","M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z"],markdown:[640,512,[],"f60f","M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"],sourcetree:[448,512,[],"f7d3","M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.86 202.86 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.18 203.18 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z"],"google-plus":[512,512,[],"f2b3","M256,8C119.1,8,8,119.1,8,256S119.1,504,256,504,504,392.9,504,256,392.9,8,256,8ZM185.3,380a124,124,0,0,1,0-248c31.3,0,60.1,11,83,32.3l-33.6,32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9,0-77.2,35.5-77.2,78.1S142.3,334,185.3,334c32.6,0,64.9-19.1,70.1-53.3H185.3V238.1H302.2a109.2,109.2,0,0,1,1.9,20.7c0,70.8-47.5,121.2-118.8,121.2ZM415.5,273.8v35.5H380V273.8H344.5V238.3H380V202.8h35.5v35.5h35.2v35.5Z"],diaspora:[512,512,[],"f791","M251.64 354.55c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.25s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1.6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3.4-2 1-148.6 1.7-149.6.8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3.8.9 31.9 102.2 31.5 102.6-.9.9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z"],foursquare:[368,512,[],"f180","M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z"],"stack-overflow":[384,512,[],"f16c","M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"],"github-alt":[480,512,[],"f113","M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"],"phoenix-squadron":[512,512,[],"f511","M96 63.38C142.49 27.25 201.55 7.31 260.51 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.17 27 191 48.84 162.21 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3.3a203 203 0 0 1-35.82 15.37c-20 6.17-42.16 8.46-62.1.78 12.79 1.73 26.06.31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.57 526.57 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0-51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28.75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.64 183.64 0 0 0-14.21-104.64c20.78 32 32.34 69.58 35.71 107.48.49 12.73.49 25.51 0 38.23A243.21 243.21 0 0 1 482 371.34c-26.12 47.34-68 85.63-117.19 108-78.29 36.23-174.68 31.32-248-14.68A248.34 248.34 0 0 1 25.36 366 238.34 238.34 0 0 1 0 273.08v-31.34C3.93 172 40.87 105.82 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z"],pagelines:[384,512,[],"f18c","M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z"],algolia:[512,512,[],"f36c","M256 0C116.1 0 2 112.7 0 252.1C-2 393.6 112.9 510.8 254.5 511.6c43.7 .3 85.9-10.4 123.3-30.7c3.6-2 4.2-7 1.1-9.7l-24-21.2c-4.9-4.3-11.8-5.5-17.8-3c-26.1 11.1-54.5 16.8-83.7 16.4C139 461.9 46.5 366.8 48.3 252.4C50.1 139.5 142.6 48.2 256 48.2H463.7V417.2L345.9 312.5c-3.8-3.4-9.7-2.7-12.7 1.3c-18.9 25-49.7 40.6-83.9 38.2c-47.5-3.3-85.9-41.5-89.5-88.9c-4.2-56.6 40.6-103.9 96.3-103.9c50.4 0 91.9 38.8 96.2 88c.4 4.4 2.4 8.5 5.7 11.4l30.7 27.2c3.5 3.1 9 1.2 9.9-3.4c2.2-11.8 3-24.2 2.1-36.8c-4.9-72-63.3-130-135.4-134.4c-82.7-5.1-151.8 59.5-154 140.6c-2.1 78.9 62.6 147 141.6 148.7c33 .7 63.6-9.6 88.3-27.6L495 509.4c6.6 5.8 17 1.2 17-7.7V9.7c0-5.4-4.4-9.7-9.7-9.7H256z"],"red-river":[448,512,[],"f3e3","M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z"],"creative-commons-sa":[496,512,[],"f4ef","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z"],safari:[512,512,[],"f267","M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z"],google:[488,512,[],"f1a0","M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z"],"square-font-awesome-stroke":[448,512,["font-awesome-alt"],"f35c","M64 64C46.3 64 32 78.3 32 96l0 320c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32L64 64zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm154 58c0 9.3-4.8 17.4-12.1 22l188.9 0c7.3 0 13.2 5.9 13.2 13.2c0 1.8-.4 3.7-1.1 5.4L312 264l30.9 69.4c.8 1.7 1.1 3.5 1.1 5.4c0 7.3-5.9 13.2-13.2 13.2L144 352l0 32-32 0 0-32 0-176 0-1.5c-6.1-4.8-10-12.2-10-20.5c0-14.4 11.6-26 26-26s26 11.6 26 26z"],atlassian:[512,512,[],"f77b","M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8.1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6.1z"],"linkedin-in":[448,512,[],"f0e1","M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"],"digital-ocean":[512,512,[],"f391","M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z"],nimblr:[384,512,[],"f5a8","M246.6 299.29c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.25c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.76 159C157 159 89.45 178.77 59.25 227L14 0v335.48C14 433.13 93.61 512 191.76 512s177.76-78.95 177.76-176.52S290.13 159 191.76 159zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59s59.24-131.59 132.51-131.59 132.51 58.86 132.51 131.54S265 467.07 191.76 467.07z"],chromecast:[512,512,[],"f838","M447.8,64H64c-23.6,0-42.7,19.1-42.7,42.7v63.9H64v-63.9h383.8v298.6H298.6V448H448c23.6,0,42.7-19.1,42.7-42.7V106.7 C490.7,83.1,471.4,64,447.8,64z M21.3,383.6L21.3,383.6l0,63.9h63.9C85.2,412.2,56.6,383.6,21.3,383.6L21.3,383.6z M21.3,298.6V341 c58.9,0,106.6,48.1,106.6,107h42.7C170.7,365.6,103.7,298.7,21.3,298.6z M213.4,448h42.7c-0.5-129.5-105.3-234.3-234.8-234.6l0,42.4 C127.3,255.6,213.3,342,213.4,448z"],evernote:[384,512,[],"f839","M120.82 132.21c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56.22-.74 0-.37-.37L123.79 46.45c.38-.37.6-.22.38.37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.45v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.92-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.78 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.09 8.91 238.46 7.8 238.46C362.15 485.53 267.06 480 267.06 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.84c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z"],"hacker-news":[448,512,[],"f1d4","M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"],"creative-commons-sampling":[496,512,[],"f4f0","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z"],adversal:[512,512,[],"f36a","M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z"],"creative-commons":[496,512,[],"f25e","M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"],"watchman-monitoring":[512,512,[],"e087","M256,16C123.452,16,16,123.452,16,256S123.452,496,256,496,496,388.548,496,256,388.548,16,256,16ZM121.69,429.122C70.056,388.972,36.741,326.322,36.741,256a218.519,218.519,0,0,1,9.587-64.122l102.9-17.895-.121,10.967-13.943,2.013s-.144,12.5-.144,19.549a12.778,12.778,0,0,0,4.887,10.349l9.468,7.4Zm105.692-283.27,8.48-7.618s6.934-5.38-.143-9.344c-7.188-4.024-39.53-34.5-39.53-34.5-5.348-5.477-8.257-7.347-15.46,0,0,0-32.342,30.474-39.529,34.5-7.078,3.964-.144,9.344-.144,9.344l8.481,7.618-.048,4.369L75.982,131.045c39.644-56.938,105.532-94.3,180.018-94.3A218.754,218.754,0,0,1,420.934,111.77l-193.512,37.7Zm34.063,329.269-33.9-250.857,9.467-7.4a12.778,12.778,0,0,0,4.888-10.349c0-7.044-.144-19.549-.144-19.549l-13.943-2.013-.116-10.474,241.711,31.391A218.872,218.872,0,0,1,475.259,256C475.259,375.074,379.831,472.212,261.445,475.121Z"],fonticons:[448,512,[],"f280","M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z"],weixin:[576,512,[],"f1d7","M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z"],shirtsinbulk:[448,512,[],"f214","M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z"],codepen:[512,512,[],"f1cb","M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z"],"git-alt":[448,512,[],"f841","M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"],lyft:[512,512,[],"f3c3","M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z"],rev:[448,512,[],"f5b2","M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"],windows:[448,512,[],"f17a","M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z"],"wizards-of-the-coast":[640,512,[],"f730","M219.19 345.69c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92.26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.75 75.94c-.34 1.7-.55 1.67.79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.34-78.03-54.73-6.02-124.38 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79.26c63.89-58.4 131.19-77.25 184.35-73.85 58.4 3.67 100.03 34.04 100.03 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.28 240.42c.79 7.07 4.19 10.21 9.17 10.47 5.5.26 9.43-2.62 10.47-6.55.79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.75 89.32 13.1 226.8.79 241.2c-1.05.52-1.31.79.79 1.31 60.49 16.5 155.81 81.18 196.13 202.16l1.05.26c55.25-69.92 140.88-128.05 236.99-128.05 80.92 0 130.15 42.16 130.15 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2.79.79.79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26.52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78.79 3.4 2.09 9.69 2.36 14.93 0 1.05.79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.74 176 489.43 89.32 342.26 89.32zm-99.24 289.62c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5.28.39 12.13 16.57-4.71 31.16zm2.09-136.43l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.58l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52.26c1.31 1.83 2.09 2.88 3.4 4.71l-.26.52c-1.05-.26-2.36-.79-5.24.26-2.09.79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83.52 1.83 1.83 5.5l-.26.26c-3.06.61-4.65.34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26.26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76.26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52.26 3.14 4.98-.26.52c-3.53-1.76-7.35.76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26.52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4.79-8.9 2.62-12.83 3.93l-.26.26c.79 2.62 3.14 9.95 4.19 13.88.79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88.26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26.26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26.26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45.54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26.26c-4.71.52-14.14 2.36-22.52 4.19l-.26-.26.79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26.26c.52 2.36.79 3.14 1.57 5.5l-.26.26c-1.14-1.14-3.34-3.2-16.24-.79l-.26.26c.26 1.57 1.05 6.55 1.57 9.95l.26.26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26.26c.26 2.09 1.57 9.43 2.09 12.57l.26.26c1.15.38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25.02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24.79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69.26 2.36.52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26.26c-.52 1.83-1.83 6.02-1.83 6.28l-.52.52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26.52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69.79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.44c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24.59-7.27.26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09.79 5.5 2.09 7.59 2.88.48.48.18-1.87-1.05 25.14-.24 1.81.02 2.6.8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27.09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26.26-5.76-4.45.26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26.26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59.75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38.79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.53-191.95-129.62-53.42-1.05-94.27 15.45-132.76 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05.26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.58 101.05 231.87 93.23 231.52c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4.52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.98-35.88 67.04 1.05 167.33 40.85 199.8 139.83.78 2.1-.01 2.63-.79.27zM203.48 152.43s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.76 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.43 67.07c-58.4 0-106.05 12.05-114.96 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57.26c6.55-1.83 48.97-13.88 110.24-13.88 180.16 0 301.67 116.79 301.67 223.37v9.95c0 1.31.79 2.62 1.05.52.52-2.09.79-8.64.79-19.64.26-83.79-96.63-227.55-321.57-227.55zm211.06 169.68c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81.52 13.35 6.02 14.66 3.67 1.05 8.9.52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.65c1.83.52 3.14 1.05 5.76 1.83 0-1.83.52-8.38.79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z"],"square-viadeo":[448,512,["viadeo-square"],"f2aa","M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM118.3 381.2c-68-73.6-19.8-196.1 81.2-196.1c13.3 0 26.6 2.1 39.1 6.7c-4.3 8.4-7.3 17.6-8.4 27.1c-9.7-4.1-20.2-6-30.7-6c-48.8 0-84.6 41.7-84.6 88.9c0 43 28.5 78.7 69.5 85.9c61.5-24 72.9-117.6 72.9-175v0c0-7.3 0-14.8-.6-22.1c-11.2-32.9-26.6-64.6-44.2-94.5c27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70c0 54.1-21.9 99-68.3 128.2l-2.4 .2c50 1 86.2-38.6 86.2-87.2c0-12.2-2.1-24.3-6.9-35.7c9.5-1.9 18.5-5.6 26.4-10.5c15.3 36.6 12.6 87.3-22.8 125.6c-42.4 46.2-120 46.6-162.4 0zM274.6 217.6c21.9-12 49.6-30.7 62.3-53c1.5-3 4.1-8.6 4.5-12c-12.5 27.9-44.2 49.8-73.9 56.7c-4.7-7.3-7.5-15.5-7.5-24.3c0-10.3 5.2-24.1 12.9-31.6c8.3-7.9 18-10.9 27.9-14.1c16-5.1 32.5-10.3 44.5-35.9c32.5 46.2 13.1 130.3-36.3 130.3c-13.3 0-25.1-7.1-34.4-16.1z"],meetup:[512,512,[],"f2e0","M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z"],centos:[448,512,[],"f789","M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z"],adn:[496,512,[],"f170","M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z"],cloudsmith:[512,512,[],"f384","M512 227.6v56.9L284.4 512H227.6L0 284.4V227.6L227.6 0h56.9L512 227.6zm-256 162a133.6 133.6 0 1 0 0-267.1 133.6 133.6 0 1 0 0 267.1z"],opensuse:[640,512,[],"e62b","M471.1 102.7s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3c-51.9-1.8-122.8-4.3-223 57.3c-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.1 307 7 335.1c3.3 12.8 8.9 24.9 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4c44.4 3.9 78.1-16 90-53.3c8.2-25.8 0-63.6-31.5-82.9c-25.6-15.7-53.3-12.1-69.2-1.6c-13.9 9.2-21.8 23.5-21.6 39.2c.3 27.8 24.3 42.6 41.5 42.6c5.4 0 10.7-.9 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9c0-12.1-11.6-14.8-16.8-13.9c-2.9 .5-4.5 2-11.8 2.4c-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9c32.3 2.8 47.7 40.7 28.5 65.7C135 388.5 76.7 388 53.6 344.4c-26-49.2 12.7-111.2 87-98.4c33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3c56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8c5.6-33.8 39.7-18.4 82.4-17.4c66.5 .4 102.1-27 103.1-28c3.7-3.1 6.5-15.8 7-17.7c1.3-5.1-3.2-2.4-3.2-2.4c-8.7 5.2-30.5 15.2-50.9 15.6c-25.3 .5-76.2-25.4-81.6-28.2c-.3-.4 .1 1.2-11-25.5c88.4 58.3 118.3 40.5 145.2 21.7c.8-.6 4.3-2.9 3.6-5.7c-13.8-48.1-22.4-62.7-34.5-69.6c-37-21.6-125-34.7-129.2-35.3c.1-.1-.9-.3-.9 .7l0 0zm135.6 75.4a37.6 37.6 0 1 1 -75.2-2.6 37.6 37.6 0 1 1 75.2 2.6zm-36.6-27.9a26.3 26.3 0 1 0 -1.7 52.5 26.3 26.3 0 1 0 1.7-52.5zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.6 0 15.6v0z"],"pied-piper-alt":[576,512,[],"f1a8","M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3.9.6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z"],"square-dribbble":[448,512,["dribbble-square"],"f397","M165.9 132.5c-38.3 18-66.8 53.3-75.7 95.7c6.1 .1 62.4 .3 126.4-16.7c-22.7-40.2-47.1-74.1-50.7-79zm26.1-9.1c3.8 5.1 28.6 38.9 51 80c48.6-18.3 69.1-45.9 71.6-49.4C281 124.2 235.3 112.9 192 123.4zM277.4 382c-2-12-10-53.8-29.2-103.6c-55.1 18.8-93.8 56.4-108.1 85.6c40.5 31.6 93.3 36.7 137.3 18zM227.8 232.6C159.6 253 93.4 252.2 87.4 252c0 .7 0 1.4 0 2.1s0 1.4 0 2.1c0 35.1 13.3 67.1 35.1 91.4c22.2-37.9 67.1-77.9 116.5-91.8c-3.4-7.8-7.2-15.5-11.1-23.2zm72.5 136.9c30.7-20.7 52.5-53.6 58.6-91.6c-4.6-1.5-42.3-12.7-85.1-5.8c17.9 49.1 25.1 89.1 26.5 97.4zm-34.8-119c45.5-5.7 90.7 3.4 95.2 4.4c-.3-32.3-11.8-61.9-30.9-85.1c-2.9 3.9-25.8 33.2-76.3 53.9c4.8 9.8 8.3 17.8 12 26.8zM384 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zM224 416a160 160 0 1 1 0-320 160 160 0 1 1 0 320z"],codiepie:[472,512,[],"f284","M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z"],node:[640,512,[],"f419","M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z"],mix:[448,512,[],"f3cb","M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z"],steam:[496,512,[],"f1b6","M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z"],"cc-apple-pay":[576,512,[],"f416","M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"],scribd:[384,512,[],"f28a","M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z"],debian:[448,512,[],"e60b","M380.2 245.6c3-7.6 5.5-14 5.2-24.4l-4.3 9c4.4-13.2 4-27.1 3.6-40.4c-.2-6-.3-11.8 0-17.4l-1.8-.5c-1.5-45.2-40.6-93.1-75.3-109.4c-30-13.8-76.1-16.2-97.3-5.8c1.3-1.1 4.2-2 6.8-2.7l.3-.1c3.3-1 6-1.7 4-2.9c-19.2 1.9-24.9 5.5-31.1 9.4l-.1 0c-4.6 2.9-9.5 6-20.3 8.7c-3.5 3.4 1.7 2 5.8 .9l0 0c4.1-1.1 7.2-1.9-.1 2.4c-3.5 1-6.6 1.3-9.6 1.6l-.1 0c-8.3 .8-15.8 1.6-30.7 17c.8 1.3 3.4-.2 5.3-1.3l.1-.1c2.3-1.4 3.4-2-1.7 4.4c-19.1-2.4-60.3 43.7-69.1 59l4.6 .8c-3.2 8-6.8 14.8-10 20.8c-4.3 8.1-7.9 14.9-8.7 21.3c-.3 5.1-1 11-1.7 17.3l0 0c-.1 1-.2 2-.3 3l-.1 .6c-3 27.3-6.7 60.8 3.9 73l-1.3 13c.6 1.2 1.1 2.3 1.6 3.5c.2 .4 .4 .8 .5 1.1l0 0 0 0 0 0 0 0 0 0 0 0 0 0c1 2.1 2 4.2 3.3 6.2l-3 .2c7 22.1 10.8 22.5 15.1 22.9l0 0c4.4 .4 9.3 .9 18.7 24.2c-2.7-.9-5.5-1.9-9.4-7.2c-.5 4.1 5.8 16.3 13.1 25.8l-3.1 3.6c2.1 3.7 4.8 6.2 7.6 8.8l0 0 0 0c1 .9 2.1 1.9 3.1 2.9c-11.9-6.5 3.2 13.7 11.9 25.2c.8 1.1 1.5 2 2.2 2.9l0 0 0 0 0 0 0 0 0 0c1.4 1.9 2.5 3.4 2.9 4.1l2.4-4.2c-.3 6.1 4.3 13.9 13.1 24.7l7.3-.3c3 6 14 16.7 20.7 17.2l-4.4 5.8c8.1 2.6 10.3 4.3 12.7 6.2c2.6 2.1 5.4 4.3 16.1 8.1l-4.2-7.4c3.5 3 6.2 5.9 8.8 8.7l.1 .1c5.2 5.6 9.9 10.6 19.7 15.3c10.7 3.7 16.6 4.7 22.7 5.8c.3 0 .6 .1 .9 .1c5.4 .8 11.2 1.8 20.8 4.5c-1.1-.1-2.2-.1-3.3-.1h0c-2.3-.1-4.7-.1-7-.1l0 0 0 0 0 0 0 0 0 0 0 0 0 0c-14.4-.2-29.2-.4-42.7-5.2C107.8 480.5 19.5 367.2 26 250.6c-.6-9.9-.3-20.9 0-30.7c.4-13.5 .7-24.8-1.6-28.3l1-3.1c5.3-17.4 11.7-38.2 23.8-62.8l-.1-.2v-.1c.4 .4 3.4 3.4 8.8-5.8c.8-1.8 1.6-3.7 2.4-5.6c.5-1.1 .9-2.2 1.4-3.2c2.5-6.1 5.1-12.3 8.4-17.9l2.6-.6c1.7-10.1 17-23.8 29.8-35.2l1.1-1c5.7-5.1 10.7-9.7 13.6-13.1l.7 4.4c17-15.9 44.6-27.5 65.6-36.4l.5-.2c4.8-2 9.3-3.9 13.3-5.7c-3.4 3.8 2.2 2.7 10 1c4.8-1 10.4-2.1 15.3-2.4l-3.9 2.1c-2.7 1.4-5.4 2.8-8 4.6c8.1-2 11.7-1.4 15.7-.8l.3 0c3.5 .6 7.3 1.2 14.6 .2c-5.6 .8-12.3 3-11.2 3.8c7.9 .9 12.8-.1 17.2-1l.2 0c5.5-1.1 10.3-2 19.3 .9l-1-4.8c7.3 2.6 12.7 4.3 17.5 5.8l.5 .1c10 3 17.6 5.3 34.2 14.1c3.2 .2 5.3-.5 7.4-1.2l.1 0c3.6-1.1 7-2.1 15.2 1.2c.3 .5 .5 1 .7 1.4c.1 .2 .2 .5 .3 .7l0 .1c1 2.6 1.8 4.6 14.6 12.1c1.7-.7-2.7-4.7-6.4-8.2c0 0 0 0-.1-.1c-.2-.1-.3-.3-.5-.4c32.2 17.3 67.3 54.1 78 93.5c-6-11.1-5.2-5.5-4.3 .5c.6 4 1.2 8.1-.2 7.5c4.5 12.1 8.1 24.5 10.4 37.4l-.8-2.9-.1-.3c-3.3-11.9-9.6-34.3-19.9-49.3c-.4 4.3-2.8 3.9-5.2 3.5l-.1 0 0 0c-3.3-.6-6.2-1.1-1.9 12.6c2.6 3.8 3.1 2.4 3.5 1.1l0 0c.5-1.5 .9-2.7 4.7 5.2c.1 4.1 1 8.2 2.1 12.7l0 0 0 0 .1 .6c.1 .3 .1 .5 .2 .8l.1 .6c.6 2.6 1.3 5.4 1.8 8.4c-1.1-.2-2.3-2.2-3.4-4.2c-1.4-2.4-2.8-4.7-3.7-3.2c2.4 11.5 6.5 17.4 8 18.3c-.3 .6-.6 .7-1.1 .7c-.8 0-1.8 .1-1.9 5.3c.7 13.7 3.3 12.5 5.3 11.6l0 0c.6-.3 1.2-.6 1.7-.4c-.6 2.5-1.6 5.1-2.7 7.9c-2.8 7.1-6 15.4-3.4 26.1c-.8-3-2-6-3.1-8.9l-.1-.4c-.2-.5-.4-1-.6-1.5l0 0c-.3-.8-.6-1.6-.9-2.3c-.6 4.4-.3 7.7-.1 10.6c0 .2 0 .5 0 .7c.4 5.3 .7 10-3 19.9c4.3-14.2 3.8-26.9-.2-20.8c1 10.9-3.7 20.4-8 28.9l-.1 .2c-3.6 7.1-6.8 13.5-5.9 19.3l-5.2-7.1c-7.5 10.9-7 13.3-6.5 15.5l0 .1c.5 1.9 1 3.8-3.4 10.8c1.7-2.9 1.3-3.6 1-4.2l0 0c-.4-.8-.7-1.5 1.7-5.1c-1.6 .1-5.5 3.9-10.1 8.5c-3.9 3.9-8.5 8.4-12.8 11.8c-37.5 30.1-82.3 34-125.6 17.8c.2-1-.2-2.1-3.1-4.1c-36.8-28.2-58.5-52.1-50.9-107.5c2.1-1.6 3.6-5.8 5.3-10.8l0 0 0 0 .2-.4 .1-.3 0-.1c2.9-8.4 6.5-18.8 14.3-23.8c7.8-17.3 31.3-33.3 56.4-33.7c25.6-1.4 47.2 13.7 58.1 27.9c-19.8-18.4-52.1-24-79.7-10.4c-28.2 12.7-45 43.8-42.5 74.7c.3-.4 .6-.6 .9-.8l0 0s0 0 0 0c0 0 .1-.1 .1-.1l.1-.1c.6-.5 1.1-.9 1.4-3.3c-.9 60.2 64.8 104.3 112.1 82l.6 1.3c12.7-3.5 15.9-6.5 20.3-10.7l.1-.1 0 0c2.2-2.1 4.7-4.5 8.9-7.3c-.3 .7-1.3 1.7-2.4 2.7c-2.2 2.1-4.6 4.5-1.6 4.6c5-1.3 18.5-13.4 28.5-22.3l0 0 0 0c.6-.5 1.2-1 1.7-1.5c1.5-1.3 2.8-2.5 4-3.6l0 0 .3-.3c1.9-4.2 1.6-5.6 1.3-7l0-.1c-.4-1.6-.8-3.3 2.4-9.6l7.3-3.7c.8-2.1 1.5-4.1 2.2-6c.2-.6 .5-1.2 .7-1.8l-.4-.2zM349.3 34.3l-.2-.1 .2 .1 0 0zM247.8 334.1c-6-3-13.7-8.9-14.8-11.4l-.4 .3c-.3 .6-.5 1.3-.2 2.2c-12.2-5.7-23.4-14.3-32.6-24.9c4.9 7.1 10.1 14.1 17 19.5c-6.9-2.3-15.1-11.8-21.6-19.3l-.1-.1c-4.3-5-7.9-9.1-9.7-9.5c19.8 35.5 80.5 62.3 112.3 49c-14.7 .5-33.4 .3-49.9-5.8zm79.3-119.7l-.1-.2c-.5-1.5-1.1-3.1-1.7-3.4c1.4-5.8 5.4-10.7 4.4 4.6c-1 3.8-1.8 1.5-2.6-1zm-4.2 22.2c-1.3 7.9-5 15.5-10.1 22.5c.2-2-1.2-2.4-2.6-2.8l0 0c-2.9-.8-5.9-1.6 5.6-16.1c-.5 1.9-2.1 4.6-3.7 7.3l0 0 0 0-.3 .4c-3.6 5.9-6.7 11 4 4.3l1-1.8c2.6-4.5 5-8.8 6-13.8h.1zm-55.6 33.9c7.1 .6 14.1 .6 21-1.1c-2.5 2.4-5.2 4.8-8.3 7.2c-11.1-1.7-21.2-6-12.7-6.1zm-92.6 11.6c3.6 7.1 6.4 11.5 9 15.7l.1 .2c2.3 3.7 4.4 7.1 6.8 11.7c-5.1-4.2-8.7-9.5-12.5-15l-.3-.5c-1.4-2.1-2.8-4.2-4.4-6.2l1.2-5.9h.1zm7.5-9.6c1.6 3.3 3.2 6.4 5.7 9.1l2.6 7.7-1.3-2.1c-3.2-5.3-6.3-10.6-8-16.7l.8 1.6 .2 .4zm238.9-41.6c-2.3 17.4-7.7 34.6-16 50.3c7.6-14.9 12.5-30.9 14.8-47.2l1.2-3.1zM35.6 110.6c.4 .8 1.4 .5 2.3 .3c1.9-.5 3.6-.9-.1 7.6c-.5 .3-1 .7-1.5 1l0 0 0 0c-1.4 .9-2.8 1.9-3.9 3c1.9-3.8 3.5-7.4 3.2-11.9zM25.3 152.3c-.7 3.7-1.5 7.9-3.4 13.9c.2-1.9 0-3.5-.2-4.9l0-.1c-.4-3.4-.7-6.3 4.3-12.8c-.3 1.2-.5 2.5-.7 3.8v.1z"],openid:[448,512,[],"f19b","M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z"],instalod:[512,512,[],"e081","M153.384,480H387.113L502.554,275.765,204.229,333.211ZM504.726,240.078,387.113,32H155.669L360.23,267.9ZM124.386,48.809,7.274,256,123.236,461.154,225.627,165.561Z"],expeditedssl:[496,512,[],"f23e","M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z"],sellcast:[448,512,[],"f2da","M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z"],"square-twitter":[448,512,["twitter-square"],"f081","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM351.3 199.3v0c0 86.7-66 186.6-186.6 186.6c-37.2 0-71.7-10.8-100.7-29.4c5.3 .6 10.4 .8 15.8 .8c30.7 0 58.9-10.4 81.4-28c-28.8-.6-53-19.5-61.3-45.5c10.1 1.5 19.2 1.5 29.6-1.2c-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3c-9-6-16.4-14.1-21.5-23.6s-7.8-20.2-7.7-31c0-12.2 3.2-23.4 8.9-33.1c32.3 39.8 80.8 65.8 135.2 68.6c-9.3-44.5 24-80.6 64-80.6c18.9 0 35.9 7.9 47.9 20.7c14.8-2.8 29-8.3 41.6-15.8c-4.9 15.2-15.2 28-28.8 36.1c13.2-1.4 26-5.1 37.8-10.2c-8.9 13.1-20.1 24.7-32.9 34c.2 2.8 .2 5.7 .2 8.5z"],"r-project":[581,512,[],"f4f7","M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z"],delicious:[448,512,[],"f1a5","M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z"],freebsd:[448,512,[],"f3a4","M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z"],vuejs:[448,512,[],"f41f","M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z"],accusoft:[640,512,[],"f369","M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8.5-116.5.6-19.2.1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z"],ioxhost:[640,512,[],"f208","M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z"],"fonticons-fi":[384,512,[],"f3a2","M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z"],"app-store":[512,512,[],"f36f","M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z"],"cc-mastercard":[576,512,[],"f1f1","M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"],"itunes-note":[384,512,[],"f3b5","M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z"],golang:[640,512,[],"e40f","M400.1 194.8C389.2 197.6 380.2 199.1 371 202.4C363.7 204.3 356.3 206.3 347.8 208.5L347.2 208.6C343 209.8 342.6 209.9 338.7 205.4C334 200.1 330.6 196.7 324.1 193.5C304.4 183.9 285.4 186.7 267.7 198.2C246.5 211.9 235.6 232.2 235.9 257.4C236.2 282.4 253.3 302.9 277.1 306.3C299.1 309.1 316.9 301.7 330.9 285.8C333 283.2 334.9 280.5 337 277.5V277.5L337 277.5C337.8 276.5 338.5 275.4 339.3 274.2H279.2C272.7 274.2 271.1 270.2 273.3 264.9C277.3 255.2 284.8 239 289.2 230.9C290.1 229.1 292.3 225.1 296.1 225.1H397.2C401.7 211.7 409 198.2 418.8 185.4C441.5 155.5 468.1 139.9 506 133.4C537.8 127.8 567.7 130.9 594.9 149.3C619.5 166.1 634.7 188.9 638.8 218.8C644.1 260.9 631.9 295.1 602.1 324.4C582.4 345.3 557.2 358.4 528.2 364.3C522.6 365.3 517.1 365.8 511.7 366.3C508.8 366.5 506 366.8 503.2 367.1C474.9 366.5 449 358.4 427.2 339.7C411.9 326.4 401.3 310.1 396.1 291.2C392.4 298.5 388.1 305.6 382.1 312.3C360.5 341.9 331.2 360.3 294.2 365.2C263.6 369.3 235.3 363.4 210.3 344.7C187.3 327.2 174.2 304.2 170.8 275.5C166.7 241.5 176.7 210.1 197.2 184.2C219.4 155.2 248.7 136.8 284.5 130.3C313.8 124.1 341.8 128.4 367.1 145.6C383.6 156.5 395.4 171.4 403.2 189.5C405.1 192.3 403.8 193.9 400.1 194.8zM48.3 200.4C47.05 200.4 46.74 199.8 47.36 198.8L53.91 190.4C54.53 189.5 56.09 188.9 57.34 188.9H168.6C169.8 188.9 170.1 189.8 169.5 190.7L164.2 198.8C163.6 199.8 162 200.7 161.1 200.7L48.3 200.4zM1.246 229.1C0 229.1-.3116 228.4 .3116 227.5L6.855 219.1C7.479 218.2 9.037 217.5 10.28 217.5H152.4C153.6 217.5 154.2 218.5 153.9 219.4L151.4 226.9C151.1 228.1 149.9 228.8 148.6 228.8L1.246 229.1zM75.72 255.9C75.1 256.8 75.41 257.7 76.65 257.7L144.6 258C145.5 258 146.8 257.1 146.8 255.9L147.4 248.4C147.4 247.1 146.8 246.2 145.5 246.2H83.2C81.95 246.2 80.71 247.1 80.08 248.1L75.72 255.9zM577.2 237.9C577 235.3 576.9 233.1 576.5 230.9C570.9 200.1 542.5 182.6 512.9 189.5C483.9 196 465.2 214.4 458.4 243.7C452.8 268 464.6 292.6 487 302.6C504.2 310.1 521.3 309.2 537.8 300.7C562.4 287.1 575.8 268 577.4 241.2C577.3 240 577.3 238.9 577.2 237.9z"],kickstarter:[448,512,["square-kickstarter"],"f3bb","M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM320.8 233l-23.3 23.1L320.8 279c24.1 23.9 24.1 63 0 86.9s-63.4 23.9-87.6 0l-8.5-8.4c-11.3 16-29.7 26.5-50.9 26.5c-34.1 0-61.9-27.5-61.9-61.4l0-133.2c0-33.8 27.7-61.4 61.9-61.4c21.1 0 39.6 10.5 50.9 26.5l8.5-8.4c24.1-23.9 63.4-23.9 87.6 0s24.1 63 0 86.9z"],grav:[512,512,[],"f2d6","M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z"],weibo:[512,512,[],"f18a","M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z"],uncharted:[448,512,[],"e084","M171.73,232.813A5.381,5.381,0,0,0,176.7,229.5,48.081,48.081,0,0,1,191.6,204.244c1.243-.828,1.657-2.484,1.657-4.141a4.22,4.22,0,0,0-2.071-3.312L74.429,128.473,148.958,85a9.941,9.941,0,0,0,4.968-8.281,9.108,9.108,0,0,0-4.968-8.281L126.6,55.6a9.748,9.748,0,0,0-9.523,0l-100.2,57.966a9.943,9.943,0,0,0-4.969,8.281V236.954a9.109,9.109,0,0,0,4.969,8.281L39.235,258.07a8.829,8.829,0,0,0,4.968,1.242,9.4,9.4,0,0,0,6.625-2.484,10.8,10.8,0,0,0,2.9-7.039V164.5L169.66,232.4A4.5,4.5,0,0,0,171.73,232.813ZM323.272,377.73a12.478,12.478,0,0,0-4.969,1.242l-74.528,43.062V287.882c0-2.9-2.9-5.8-6.211-4.555a53.036,53.036,0,0,1-28.984.414,4.86,4.86,0,0,0-6.21,4.555V421.619l-74.529-43.061a8.83,8.83,0,0,0-4.969-1.242,9.631,9.631,0,0,0-9.523,9.523v26.085a9.107,9.107,0,0,0,4.969,8.281l100.2,57.553A8.829,8.829,0,0,0,223.486,480a11.027,11.027,0,0,0,4.969-1.242l100.2-57.553a9.941,9.941,0,0,0,4.968-8.281V386.839C332.8,382.285,328.24,377.73,323.272,377.73ZM286.007,78a23,23,0,1,0-23-23A23,23,0,0,0,286.007,78Zm63.627-10.086a23,23,0,1,0,23,23A23,23,0,0,0,349.634,67.914ZM412.816,151.6a23,23,0,1,0-23-23A23,23,0,0,0,412.816,151.6Zm-63.182-9.2a23,23,0,1,0,23,23A23,23,0,0,0,349.634,142.4Zm-63.627,83.244a23,23,0,1,0-23-23A23,23,0,0,0,286.007,225.648Zm-62.074,36.358a23,23,0,1,0-23-23A23,23,0,0,0,223.933,262.006Zm188.883-82.358a23,23,0,1,0,23,23A23,23,0,0,0,412.816,179.648Zm0,72.272a23,23,0,1,0,23,23A23,23,0,0,0,412.816,251.92Z"],firstdraft:[384,512,[],"f3a1","M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z"],"square-youtube":[448,512,[61798,"youtube-square"],"f431","M282 256.2l-95.2-54.1V310.3L282 256.2zM384 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zm14.4 136.1c7.6 28.6 7.6 88.2 7.6 88.2s0 59.6-7.6 88.1c-4.2 15.8-16.5 27.7-32.2 31.9C337.9 384 224 384 224 384s-113.9 0-142.2-7.6c-15.7-4.2-28-16.1-32.2-31.9C42 315.9 42 256.3 42 256.3s0-59.7 7.6-88.2c4.2-15.8 16.5-28.2 32.2-32.4C110.1 128 224 128 224 128s113.9 0 142.2 7.7c15.7 4.2 28 16.6 32.2 32.4z"],"wikipedia-w":[640,512,[],"f266","M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z"],wpressr:[496,512,["rendact"],"f3e4","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm171.33 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03.06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.81 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24.1 28.48.02 42.72.05 6.24.01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6.23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21.08 30.43.02 45.64.04 5.56.01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33.04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43.05 52.86 0 79.29.05 12.44.02 13.93-13.65 3.9-13.64-25.26.03-50.52.02-75.78.02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09.06 25.98.02 130.78.03 6.08-.01 8.03 2.79 5.62 8.27z"],angellist:[448,512,[],"f209","M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z"],"galactic-republic":[496,512,[],"f50c","M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z"],"nfc-directional":[512,512,[],"e530","M211.8 488.6C213.4 491.1 213.9 494.2 213.2 497.1C212.6 500 210.8 502.6 208.3 504.2C205.7 505.8 202.7 506.3 199.7 505.7C138.3 491.8 84.1 455.8 47.53 404.5C10.97 353.2-5.395 290.3 1.57 227.7C8.536 165 38.34 107.2 85.29 65.21C132.2 23.2 193-.0131 256 0C257.5 0 258.1 .2931 260.3 .8627C261.7 1.432 262.1 2.267 264 3.319C265.1 4.371 265.9 5.619 266.5 6.993C267 8.367 267.3 9.839 267.3 11.32V112.3L291.8 86.39C292.8 85.31 294 84.44 295.4 83.84C296.7 83.23 298.2 82.9 299.7 82.86C301.2 82.81 302.6 83.06 304 83.59C305.4 84.12 306.7 84.92 307.8 85.94C308.8 86.96 309.7 88.18 310.3 89.54C310.9 90.89 311.3 92.35 311.3 93.84C311.3 95.32 311.1 96.8 310.6 98.18C310 99.57 309.2 100.8 308.2 101.9L264.2 148.5C263.1 149.6 261.9 150.5 260.5 151.1C259 151.7 257.5 152 255.1 152C254.5 152 252.9 151.7 251.5 151.1C250.1 150.5 248.8 149.6 247.8 148.5L203.7 101.9C201.7 99.74 200.6 96.83 200.7 93.84C200.7 90.84 202 87.1 204.2 85.94C206.4 83.88 209.3 82.77 212.3 82.86C215.3 82.94 218.1 84.21 220.2 86.39L244.7 112.4V22.89C188.3 25.64 134.9 48.73 94.23 87.87C53.58 127 28.49 179.6 23.61 235.8C18.73 292 34.38 348.1 67.68 393.7C100.1 439.2 149.7 471.2 204.7 483.6C207.6 484.3 210.2 486.1 211.8 488.6L211.8 488.6zM171.4 126.1C170.6 127.4 169.5 128.5 168.3 129.3C147.8 143.2 131.1 161.9 119.5 183.8C107.9 205.7 101.8 230.1 101.8 254.9C101.8 279.7 107.9 304.1 119.5 325.1C131.1 347.9 147.8 366.6 168.3 380.5C170.8 382.2 172.5 384.8 173 387.8C173.6 390.7 172.1 393.8 171.3 396.2C169.6 398.7 166.1 400.4 164 400.1C161.1 401.5 158 400.9 155.6 399.2C132 383.2 112.8 361.7 99.46 336.5C86.15 311.4 79.19 283.4 79.19 254.9C79.19 226.5 86.15 198.4 99.46 173.3C112.8 148.1 132 126.6 155.6 110.6C156.8 109.8 158.2 109.2 159.6 108.8C161.1 108.5 162.6 108.5 164.1 108.8C165.5 109 166.9 109.6 168.2 110.4C169.5 111.2 170.5 112.3 171.4 113.5C172.2 114.7 172.8 116.1 173.1 117.6C173.4 119.1 173.4 120.6 173.1 122C172.8 123.5 172.3 124.9 171.4 126.1H171.4zM340.9 383.5C341.7 382.3 342.8 381.2 343.1 380.4V380.3C364.4 366.3 381.1 347.6 392.7 325.7C404.2 303.9 410.2 279.5 410.2 254.8C410.2 230.1 404.2 205.7 392.7 183.8C381.1 161.1 364.4 143.3 343.1 129.3C342.8 128.5 341.7 127.4 340.9 126.2C340.1 124.9 339.5 123.5 339.3 122.1C338.1 120.6 339 119.1 339.3 117.7C339.6 116.2 340.2 114.8 341 113.6C341.9 112.4 342.1 111.3 344.2 110.5C345.4 109.7 346.8 109.2 348.3 108.9C349.8 108.6 351.2 108.6 352.7 108.9C354.2 109.2 355.5 109.8 356.8 110.7C380.2 126.7 399.5 148.2 412.7 173.3C426 198.4 432.1 226.4 432.1 254.8C432.1 283.3 426 311.3 412.7 336.4C399.5 361.5 380.2 383 356.8 399C355.5 399.9 354.2 400.5 352.7 400.8C351.2 401.1 349.8 401.1 348.3 400.8C346.8 400.5 345.4 399.1 344.2 399.2C342.1 398.4 341.9 397.3 341 396.1C340.2 394.9 339.6 393.5 339.3 392C339 390.6 338.1 389.1 339.3 387.6C339.5 386.2 340.1 384.8 340.9 383.5V383.5zM312.3 6.307C368.5 19.04 418.7 50.28 455 95.01C485.4 132.6 504.6 178 510.3 226C515.9 274 507.9 322.7 487.1 366.3C466.2 409.9 433.5 446.8 392.6 472.6C351.7 498.3 304.4 512 256 512C254.5 512 253.1 511.7 251.7 511.1C250.3 510.6 249.1 509.7 248 508.7C246.1 507.6 246.1 506.4 245.6 505C245 503.6 244.7 502.2 244.7 500.7V401.5L220.2 427.5C218.1 429.7 215.3 430.1 212.3 431.1C209.3 431.2 206.4 430 204.2 427.1C202 425.9 200.7 423.1 200.7 420.1C200.6 417.1 201.7 414.2 203.7 412L247.8 365.4C249.1 363.2 252.9 362 255.1 362C259.1 362 262 363.2 264.2 365.4L308.2 412C310.3 414.2 311.4 417.1 311.3 420.1C311.2 423.1 309.9 425.9 307.8 427.1C305.6 430 302.7 431.2 299.7 431.1C296.7 430.1 293.8 429.7 291.8 427.5L267.3 401.6V489.1C323.7 486.3 377.1 463.3 417.8 424.1C458.5 384.1 483.6 332.4 488.5 276.2C493.3 219.1 477.7 163.9 444.4 118.3C411.1 72.75 362.4 40.79 307.4 28.36C305.9 28.03 304.6 27.42 303.3 26.57C302.1 25.71 301.1 24.63 300.3 23.37C299.5 22.12 298.1 20.72 298.7 19.26C298.5 17.8 298.5 16.3 298.8 14.85C299.2 13.41 299.8 12.04 300.6 10.82C301.5 9.61 302.6 8.577 303.8 7.784C305.1 6.99 306.5 6.451 307.9 6.198C309.4 5.945 310.9 5.982 312.3 6.307L312.3 6.307zM353.1 256.1C353.1 287.5 335.6 317.2 303.8 339.6C301.7 341.1 299 341.9 296.4 341.6C293.7 341.4 291.2 340.3 289.4 338.4L219.3 268.6C217.1 266.5 215.1 263.6 215.9 260.6C215.9 257.6 217.1 254.7 219.2 252.6C221.4 250.5 224.2 249.3 227.2 249.3C230.2 249.3 233.1 250.5 235.2 252.6L298.3 315.4C319.1 298.3 330.5 277.5 330.5 256.1C330.5 232.2 316.4 209.1 290.8 191C288.3 189.3 286.7 186.7 286.2 183.7C285.7 180.8 286.3 177.7 288.1 175.3C289.8 172.8 292.4 171.2 295.4 170.7C298.3 170.2 301.4 170.8 303.8 172.6C335.6 195 353.1 224.7 353.1 256.1V256.1zM216.7 341.5C213.7 342 210.7 341.3 208.2 339.6C176.5 317.2 158.1 287.5 158.1 256.1C158.1 224.7 176.5 195 208.2 172.6C210.4 171 213.1 170.3 215.7 170.5C218.4 170.8 220.8 171.9 222.7 173.8L292.8 243.6C294.9 245.7 296.1 248.6 296.1 251.6C296.1 254.6 294.1 257.4 292.8 259.6C290.7 261.7 287.8 262.9 284.9 262.9C281.9 262.9 278.1 261.7 276.9 259.6L213.8 196.7C192.9 214 181.6 234.7 181.6 256.1C181.6 279.1 195.7 303.1 221.3 321.1C223.7 322.9 225.4 325.5 225.9 328.5C226.4 331.4 225.7 334.4 224 336.9C222.3 339.3 219.6 341 216.7 341.5L216.7 341.5z"],skype:[448,512,[],"f17e","M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z"],joget:[496,512,[],"f3b7","M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z"],fedora:[448,512,[],"f798","M.0413 255.8C.1219 132.2 100.3 32 224 32C347.7 32 448 132.3 448 256C448 379.7 347.8 479.9 224.1 480H50.93C22.84 480 .0832 457.3 .0416 429.2H0V255.8H.0413zM342.6 192.7C342.6 153 307 124.2 269.4 124.2C234.5 124.2 203.6 150.5 199.3 184.1C199.1 187.9 198.9 189.1 198.9 192.6C198.8 213.7 198.9 235.4 198.1 257C199 283.1 199.1 309.1 198.1 333.6C198.1 360.7 178.7 379.1 153.4 379.1C128.1 379.1 107.6 358.9 107.6 333.6C108.1 305.9 130.2 288.3 156.1 287.5H156.3L182.6 287.3V250L156.3 250.2C109.2 249.8 71.72 286.7 70.36 333.6C70.36 379.2 107.9 416.5 153.4 416.5C196.4 416.5 232.1 382.9 236 340.9L236.2 287.4L268.8 287.1C294.1 287.3 293.8 249.3 268.6 249.8L236.2 250.1C236.2 243.7 236.3 237.3 236.3 230.9C236.4 218.2 236.4 205.5 236.2 192.7C236.3 176.2 252 161.5 269.4 161.5C286.9 161.5 305.3 170.2 305.3 192.7C305.3 195.9 305.2 197.8 305 199C303.1 209.5 310.2 219.4 320.7 220.9C331.3 222.4 340.9 214.8 341.9 204.3C342.5 200.1 342.6 196.4 342.6 192.7H342.6z"],"stripe-s":[384,512,[],"f42a","M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.09 396.09 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z"],meta:[640,512,[],"e49b","M640 317.9C640 409.2 600.6 466.4 529.7 466.4C467.1 466.4 433.9 431.8 372.8 329.8L341.4 277.2C333.1 264.7 326.9 253 320.2 242.2C300.1 276 273.1 325.2 273.1 325.2C206.1 441.8 168.5 466.4 116.2 466.4C43.42 466.4 0 409.1 0 320.5C0 177.5 79.78 42.4 183.9 42.4C234.1 42.4 277.7 67.08 328.7 131.9C365.8 81.8 406.8 42.4 459.3 42.4C558.4 42.4 640 168.1 640 317.9H640zM287.4 192.2C244.5 130.1 216.5 111.7 183 111.7C121.1 111.7 69.22 217.8 69.22 321.7C69.22 370.2 87.7 397.4 118.8 397.4C149 397.4 167.8 378.4 222 293.6C222 293.6 246.7 254.5 287.4 192.2V192.2zM531.2 397.4C563.4 397.4 578.1 369.9 578.1 322.5C578.1 198.3 523.8 97.08 454.9 97.08C421.7 97.08 393.8 123 360 175.1C369.4 188.9 379.1 204.1 389.3 220.5L426.8 282.9C485.5 377 500.3 397.4 531.2 397.4L531.2 397.4z"],laravel:[512,512,[],"f3bd","M504.4,115.83a5.72,5.72,0,0,0-.28-.68,8.52,8.52,0,0,0-.53-1.25,6,6,0,0,0-.54-.71,9.36,9.36,0,0,0-.72-.94c-.23-.22-.52-.4-.77-.6a8.84,8.84,0,0,0-.9-.68L404.4,55.55a8,8,0,0,0-8,0L300.12,111h0a8.07,8.07,0,0,0-.88.69,7.68,7.68,0,0,0-.78.6,8.23,8.23,0,0,0-.72.93c-.17.24-.39.45-.54.71a9.7,9.7,0,0,0-.52,1.25c-.08.23-.21.44-.28.68a8.08,8.08,0,0,0-.28,2.08V223.18l-80.22,46.19V63.44a7.8,7.8,0,0,0-.28-2.09c-.06-.24-.2-.45-.28-.68a8.35,8.35,0,0,0-.52-1.24c-.14-.26-.37-.47-.54-.72a9.36,9.36,0,0,0-.72-.94,9.46,9.46,0,0,0-.78-.6,9.8,9.8,0,0,0-.88-.68h0L115.61,1.07a8,8,0,0,0-8,0L11.34,56.49h0a6.52,6.52,0,0,0-.88.69,7.81,7.81,0,0,0-.79.6,8.15,8.15,0,0,0-.71.93c-.18.25-.4.46-.55.72a7.88,7.88,0,0,0-.51,1.24,6.46,6.46,0,0,0-.29.67,8.18,8.18,0,0,0-.28,2.1v329.7a8,8,0,0,0,4,6.95l192.5,110.84a8.83,8.83,0,0,0,1.33.54c.21.08.41.2.63.26a7.92,7.92,0,0,0,4.1,0c.2-.05.37-.16.55-.22a8.6,8.6,0,0,0,1.4-.58L404.4,400.09a8,8,0,0,0,4-6.95V287.88l92.24-53.11a8,8,0,0,0,4-7V117.92A8.63,8.63,0,0,0,504.4,115.83ZM111.6,17.28h0l80.19,46.15-80.2,46.18L31.41,63.44Zm88.25,60V278.6l-46.53,26.79-33.69,19.4V123.5l46.53-26.79Zm0,412.78L23.37,388.5V77.32L57.06,96.7l46.52,26.8V338.68a6.94,6.94,0,0,0,.12.9,8,8,0,0,0,.16,1.18h0a5.92,5.92,0,0,0,.38.9,6.38,6.38,0,0,0,.42,1v0a8.54,8.54,0,0,0,.6.78,7.62,7.62,0,0,0,.66.84l0,0c.23.22.52.38.77.58a8.93,8.93,0,0,0,.86.66l0,0,0,0,92.19,52.18Zm8-106.17-80.06-45.32,84.09-48.41,92.26-53.11,80.13,46.13-58.8,33.56Zm184.52,4.57L215.88,490.11V397.8L346.6,323.2l45.77-26.15Zm0-119.13L358.68,250l-46.53-26.79V131.79l33.69,19.4L392.37,178Zm8-105.28-80.2-46.17,80.2-46.16,80.18,46.15Zm8,105.28V178L455,151.19l33.68-19.4v91.39h0Z"],hotjar:[512,512,[],"f3b1","M361.5 0c0 131.6-80.7 176.8-140.2 209.4c-.6 .3-1.1 .6-1.6 .9c-53.8 30.2-88.7 49.8-89.6 122H32C32 200.8 112.7 155.6 172.2 123C227 93.2 262.5 73 262.5 0h98.9zM301 302.6c54.8-29.8 90.3-50 90.3-123h98c0 131.6-80.7 176.7-140.2 209.4c-54.8 29.8-90.3 50-90.3 123h-98c0-131.6 80.7-176.8 140.2-209.4z"],"bluetooth-b":[320,512,[],"f294","M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z"],"square-letterboxd":[448,512,[],"e62e","M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM105.1 187C66.4 187 35 218.3 35 257s31.4 70 70.1 70c24.8 0 46.5-12.8 59-32.2l.5-.7-.4-.6c-6.5-10.6-10.2-23.1-10.2-36.5c0-13.6 3.9-26.3 10.6-37.1c-12.4-19.8-34.4-32.9-59.5-32.9zM224 187c-24.8 0-46.5 12.8-59 32.2l-.5 .7 .4 .6c6.5 10.6 10.2 23.1 10.2 36.5c0 13.6-3.9 26.3-10.6 37.1C176.9 313.8 198.9 327 224 327c24.8 0 46.5-12.8 59-32.2l.5-.7-.4-.6c-6.5-10.6-10.2-23.1-10.2-36.5c0-13.6 3.9-26.3 10.6-37.1C271.1 200.2 249.1 187 224 187zm118.9 0c-24.8 0-46.5 12.8-59 32.2l-.5 .7 .4 .6c6.5 10.6 10.2 23.1 10.2 36.5c0 13.6-3.9 26.3-10.6 37.1c12.4 19.8 34.4 32.9 59.5 32.9c38.7 0 70.1-31.3 70.1-70s-31.4-70-70.1-70z"],"sticker-mule":[576,512,[],"f3f7","M561.7 199.6c-1.3.3.3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3.5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8.4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5.5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5.5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4.5 1 1 2 1.5 3.5.5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5.5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5.3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6.5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3.8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z"],"creative-commons-zero":[496,512,[],"f4f3","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4.5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z"],hips:[640,512,[],"f452","M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7.9-2.7 2.7v279.2c0 1.9.9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5.4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4.2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3.7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z"],behance:[576,512,[],"f1b4","M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z"],reddit:[512,512,[],"f1a1","M0 256C0 114.6 114.6 0 256 0S512 114.6 512 256s-114.6 256-256 256L37.1 512c-13.7 0-20.5-16.5-10.9-26.2L75 437C28.7 390.7 0 326.7 0 256zM349.6 153.6c23.6 0 42.7-19.1 42.7-42.7s-19.1-42.7-42.7-42.7c-20.6 0-37.8 14.6-41.8 34c-34.5 3.7-61.4 33-61.4 68.4l0 .2c-37.5 1.6-71.8 12.3-99 29.1c-10.1-7.8-22.8-12.5-36.5-12.5c-33 0-59.8 26.8-59.8 59.8c0 24 14.1 44.6 34.4 54.1c2 69.4 77.6 125.2 170.6 125.2s168.7-55.9 170.6-125.3c20.2-9.6 34.1-30.2 34.1-54c0-33-26.8-59.8-59.8-59.8c-13.7 0-26.3 4.6-36.4 12.4c-27.4-17-62.1-27.7-100-29.1l0-.2c0-25.4 18.9-46.5 43.4-49.9l0 0c4.4 18.8 21.3 32.8 41.5 32.8zM177.1 246.9c16.7 0 29.5 17.6 28.5 39.3s-13.5 29.6-30.3 29.6s-31.4-8.8-30.4-30.5s15.4-38.3 32.1-38.3zm190.1 38.3c1 21.7-13.7 30.5-30.4 30.5s-29.3-7.9-30.3-29.6c-1-21.7 11.8-39.3 28.5-39.3s31.2 16.6 32.1 38.3zm-48.1 56.7c-10.3 24.6-34.6 41.9-63 41.9s-52.7-17.3-63-41.9c-1.2-2.9 .8-6.2 3.9-6.5c18.4-1.9 38.3-2.9 59.1-2.9s40.7 1 59.1 2.9c3.1 .3 5.1 3.6 3.9 6.5z"],discord:[640,512,[],"f392","M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"],chrome:[512,512,[],"f268","M0 256C0 209.4 12.47 165.6 34.27 127.1L144.1 318.3C166 357.5 207.9 384 256 384C270.3 384 283.1 381.7 296.8 377.4L220.5 509.6C95.9 492.3 0 385.3 0 256zM365.1 321.6C377.4 302.4 384 279.1 384 256C384 217.8 367.2 183.5 340.7 160H493.4C505.4 189.6 512 222.1 512 256C512 397.4 397.4 511.1 256 512L365.1 321.6zM477.8 128H256C193.1 128 142.3 172.1 130.5 230.7L54.19 98.47C101 38.53 174 0 256 0C350.8 0 433.5 51.48 477.8 128V128zM168 256C168 207.4 207.4 168 256 168C304.6 168 344 207.4 344 256C344 304.6 304.6 344 256 344C207.4 344 168 304.6 168 256z"],"app-store-ios":[448,512,[],"f370","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z"],"cc-discover":[576,512,[],"f1f2","M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"],wpbeginner:[512,512,[],"f297","M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z"],confluence:[512,512,[],"f78d","M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1.1-.2.1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8.4 21.7-7.7.1-.1.1-.3.2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2.3-.4.6-.6 1-67.3 112.6-81.1 95.6-280.6.9-8.1-3.9-17.8-.4-21.7 7.7-.1.1-.1.3-.2.4L22.2 141.3c-3.6 8.1.1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z"],shoelace:[512,512,[],"e60c","M404.9 331c2.2-1.1 4.4-2.3 6.5-3.7l8.3-4.8c1.5-1.1 4.4-3.4 8.7-6.7l.5-.5c3.4-3.4 7.2-5 11.3-4.9c1.8 0 3.9 .5 6.4 1.5l31-27.5c.9-.7 1.7-1.3 2.6-1.8h.2c3.3-1.9 6-1.8 8.2 .4c3.9 2.1 4.2 5.6 .9 10.6L456.9 322c.2 .5 .4 1 .4 1.5c.5 2.2 .3 4.4-.5 6.6c-.7 1.5-1.8 2.9-3.1 4.2c-1.4 1.4-2.7 2.8-4.2 4.2l-18.8 13.7c-1.7 1.2-3.4 2.3-5.1 3.3c-2.1 1.3-4.3 2.5-6.6 3.6c-1 .4-1.9 .9-2.9 1.3c-5.9 2.5-11.9 4.2-18.2 5c-2.9 24.5-11.3 47.1-25.1 67.8c-17.5 25.7-41.4 45.4-71.8 58.8c-30.2 13.5-63 20.2-98.2 20.2c-48.6-.5-88-11.4-118.2-32.8C49.5 454.4 32 421.5 32 380.3v-5.6c1.2-28.1 9.5-54.6 24.8-79.8c15.1-24.9 37.1-41.7 66.1-50.5c14.9-4.4 29.9-6.6 45-6.6c15.5 0 31.6 2.9 48.1 8.6s35.2 15.5 55.9 29.5L326 312.2c15.1 9.8 28.8 16.5 41.2 20c-2.6-25.1-11.7-46.6-27.3-64.5c-15.7-18.1-35.6-31.3-59.9-39.7l-23.3-8c-21.4-7.5-37.3-14.9-47.7-22.2c-28.2-19.1-43.8-45.2-47-78.5l-.5-9.8c0-32.1 13-58.9 39-80.5C223.5 9.7 251.1 0 283 0c24 0 45.6 6.9 64.7 20.8c19.2 14 30.1 33.8 32.6 59.4l.5 10c0 18.6-4.8 34.5-14.4 47.7c-9.8 13.2-18.5 19.9-26 19.9c-1.6-.1-3.1-.3-4.5-.6l-34 32c-5.5 3-9.2 2.5-11.1-1.6c-1.9-2.2-1.8-4.9 .5-8.2l.2-.2c.5-.7 1.2-1.5 2-2.4l31.6-30c-.4-1.5-.6-3.1-.6-4.8c0-4.1 1.6-7.6 4.9-10.4c13.8-12.4 20.8-26.7 20.8-42.8c0-16-6.1-29.5-18.2-40.4s-28.7-16.5-49.7-16.8c-26.2 0-47.8 7.9-64.7 23.7S192.3 89.9 192.3 112c0 17.8 6.9 33.9 20.6 48.3c13.6 14.2 34.6 25.4 63 33.5c39.8 11.5 70.2 31 91.3 58.3c18.7 24.2 29.1 51.3 31.3 81.4c2.2-.7 4.3-1.5 6.5-2.6zM294.1 178.7c0 1.1 .6 1.6 1.8 1.6c.1 0 9.7-8.9 28.8-26.6c0-2.4-5.1 .9-15.3 10c-10.2 9.2-15.3 14.2-15.3 14.9zm8 6.4c0-1-.5-1.5-1.5-1.5c-1.1 0-2.1 .5-2.9 1.6c-1.9-.1-3.3 .1-4.2 .7c-.4 .2-.5 .5-.5 .7c0 .7 .5 1.3 1.5 1.6h3.3c2.9-1.1 4.4-2.2 4.4-3.3zm22.6-19.9c0-2.8-1.6-2.8-4.9 0c-1.6 1.5-3.6 3.5-6 6.2c-.8 .6-2.6 2.2-5.3 4.9c-2.8 2.9-4.2 4.7-4.2 5.3l.2 1.3c.7 .2 1.2 .4 1.5 .4c.1 0 3.3-2.9 9.5-8.7s9.3-8.9 9.3-9.3zm159.7 120l-30.6 27c1.8 1 3.2 2.4 4 4.2l30.2-27c.2-1.2 .1-2.2-.5-2.9c-.6-.5-1.6-.9-3.1-1.3zm-1.6-.9l-.7-.7-27 21.9 1.6 2 26-23.1zM366.6 363.9c-8-2.1-15.4-4.6-22.2-7.5c-15.3-6.2-34.3-17-57-32.4L250 298.7c-15.8-10.1-30.2-17.6-43.2-22.6c-13.1-4.9-26-7.3-38.6-7.3h-5.5c-32.2 1.7-57.2 13.8-75 36.2c-16.6 20.8-25 45.3-25 73.6c0 31.8 12.8 56.7 38.2 74.7c25.4 18.1 60.2 27.1 104.4 27.1c34.7 0 64-6.2 87.8-18.6c23.7-12.4 42.1-28.8 55.2-49.2c9.8-15.5 15.9-31.8 18.2-48.8z"],mdb:[576,512,[],"f8ca","M17.37 160.41L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.59H146.7L106 277.74 63.67 160.41zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.46V204.78s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.29-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.58H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.46l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z"],dochub:[416,512,[],"f394","M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z"],"accessible-icon":[448,512,[62107],"f368","M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z"],ebay:[640,512,[],"f4f4","M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7.4-42.4.9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6.3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z"],amazon:[448,512,[],"f270","M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z"],unsplash:[448,512,[],"e07c","M448,230.17V480H0V230.17H141.13V355.09H306.87V230.17ZM306.87,32H141.13V156.91H306.87Z"],yarn:[496,512,[],"f7e3","M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4.1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3.8-10.8-5.7.8-19.2.8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3.8 1.4 13.7.8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2.9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4.2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z"],"square-steam":[448,512,["steam-square"],"f1b7","M165.6 309.1c18.6 7.7 27.3 28.9 19.6 47.4s-29 27.2-47.6 19.4l-28.5-11.8c5 10.6 13.8 19.4 25.4 24.2c25.2 10.5 54.1-1.4 64.6-26.5c5.1-12.1 5.1-25.5 .1-37.7c-5.1-12.1-14.5-21.6-26.7-26.7c-12.1-5-25-4.8-36.4-.5l29.5 12.2zM448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V240.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8c-31.8 0-58.5-22.7-64.5-52.7L0 319.2V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM241.9 196.2a58.4 58.4 0 1 0 116.8 0 58.4 58.4 0 1 0 -116.8 0zm14.6-.1a43.9 43.9 0 1 1 87.8 0 43.9 43.9 0 1 1 -87.8 0z"],"500px":[448,512,[],"f26e","M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z"],"square-vimeo":[448,512,["vimeo-square"],"f194","M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM318.5 309.5C275 366 238.2 394.3 208.1 394.3c-18.7 0-34.4-17.2-47.3-51.6c-3.8-13.9-7.3-26.9-10.5-39c-18.2-68.3-28.6-107.4-46.2-107.4c-2.4 0-10.8 5-25.1 15.1L64 192c7-6.1 13.9-12.4 20.6-18.5c29.1-26.3 55.6-50.3 73.5-51.9c24.9-2.4 40.2 14.6 46 51.1c20.5 129.6 29.6 149.2 66.8 90.5c13.4-21.2 20.6-37.2 21.5-48.3c3.4-32.8-25.6-30.6-45.2-22.2c15.7-51.5 45.8-76.5 90.1-75.1c32.9 1 48.4 22.4 46.5 64c-1.4 31.1-23.2 73.8-65.3 127.9z"],asymmetrik:[576,512,[],"f372","M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z"],"font-awesome":[512,512,[62501,62694,"font-awesome-flag","font-awesome-logo-full"],"f2b4","M91.7 96C106.3 86.8 116 70.5 116 52C116 23.3 92.7 0 64 0S12 23.3 12 52c0 16.7 7.8 31.5 20 41l0 3 0 352 0 64 64 0 0-64 373.6 0c14.6 0 26.4-11.8 26.4-26.4c0-3.7-.8-7.3-2.3-10.7L432 272l61.7-138.9c1.5-3.4 2.3-7 2.3-10.7c0-14.6-11.8-26.4-26.4-26.4L91.7 96z"],gratipay:[496,512,[],"f184","M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z"],apple:[384,512,[],"f179","M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"],hive:[512,512,[],"e07f","M260.353,254.878,131.538,33.1a2.208,2.208,0,0,0-3.829.009L.3,254.887A2.234,2.234,0,0,0,.3,257.122L129.116,478.9a2.208,2.208,0,0,0,3.83-.009L260.358,257.113A2.239,2.239,0,0,0,260.353,254.878Zm39.078-25.713a2.19,2.19,0,0,0,1.9,1.111h66.509a2.226,2.226,0,0,0,1.9-3.341L259.115,33.111a2.187,2.187,0,0,0-1.9-1.111H190.707a2.226,2.226,0,0,0-1.9,3.341ZM511.7,254.886,384.9,33.112A2.2,2.2,0,0,0,382.99,32h-66.6a2.226,2.226,0,0,0-1.906,3.34L440.652,256,314.481,476.66a2.226,2.226,0,0,0,1.906,3.34h66.6a2.2,2.2,0,0,0,1.906-1.112L511.7,257.114A2.243,2.243,0,0,0,511.7,254.886ZM366.016,284.917H299.508a2.187,2.187,0,0,0-1.9,1.111l-108.8,190.631a2.226,2.226,0,0,0,1.9,3.341h66.509a2.187,2.187,0,0,0,1.9-1.111l108.8-190.631A2.226,2.226,0,0,0,366.016,284.917Z"],gitkraken:[592,512,[],"f3a6","M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z"],keybase:[448,512,[],"f4f5","M286.17 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18zm111.92-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0-47.88-104.13c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.66 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0-8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93.54a214 214 0 0 0-46.29 35.54C14 304.66 14 374 14 429.77v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.29 178.29 0 0 1-15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.38-61.76 236.25-38.59 34.2 10.05 67.45.69 84.74-23.84.72-1 1.2-2.16 1.85-3.22a156.09 156.09 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.32c0-38.58-13-77.46-35.91-110.92zM142.37 128.58l-15.7-.93-1.39 21.79 13.13.78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1-11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.35 144.35 0 0 0-7 19.17zm148.42 172.18a10.51 10.51 0 0 1-14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1-11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1-10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.19s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1-1.74 13.44zM187.44 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18z"],"apple-pay":[640,512,[],"f415","M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z"],padlet:[640,512,[],"e4a0","M297.9 0L298 .001C305.6 .1078 312.4 4.72 315.5 11.78L447.5 320.3L447.8 320.2L448 320.6L445.2 330.6L402.3 488.6C398.6 504.8 382.6 514.9 366.5 511.2L298.1 495.6L229.6 511.2C213.5 514.9 197.5 504.8 193.8 488.6L150.9 330.6L148.2 320.6L148.3 320.2L280.4 11.78C283.4 4.797 290.3 .1837 297.9 .0006L297.9 0zM160.1 322.1L291.1 361.2L298 483.7L305.9 362.2L436.5 322.9L436.7 322.8L305.7 347.9L297.1 27.72L291.9 347.9L160.1 322.1zM426 222.6L520.4 181.6H594.2L437.2 429.2L468.8 320.2L426 222.6zM597.5 181.4L638.9 257.6C642.9 265.1 635 273.5 627.3 269.8L579.7 247.1L597.5 181.4zM127.3 318.5L158.7 430L1.61 154.5C-4.292 144.1 7.128 132.5 17.55 138.3L169.4 222.5L127.3 318.5z"],"amazon-pay":[640,512,[],"f42c","M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.88 595.88 0 0 0 127.4 46.3 616.61 616.61 0 0 0 63.2 11.8 603.33 603.33 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.66 603.66 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1-9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.31 473.31 0 0 1-75.1 17.6 431 431 0 0 1-53.2 4.8 21.3 21.3 0 0 0-2.5.3H308a21.3 21.3 0 0 0-2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1-50.4-5.3A448.4 448.4 0 0 1 164 420a443.33 443.33 0 0 1-145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3.6a80.92 80.92 0 0 0-38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1-.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1-1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9.4a148 148 0 0 0-28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9a7.84 7.84 0 0 1-.2 1.4c-.5-.1-.9 0-1.3-.1a180.56 180.56 0 0 0-32-4.9c-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0-.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7a3.33 3.33 0 0 1-1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8a20.08 20.08 0 0 1-12.4-13.3 32.9 32.9 0 0 1-.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0-21-3.9 147.32 147.32 0 0 0-39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0-3.7 3.5 5.11 5.11 0 0 0-.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0-1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.91 145.91 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1-15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.18 108.18 0 0 0 16.9 2c17.1.4 30.7-6.5 39.5-21.4a131.63 131.63 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0-7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z"],"square-github":[448,512,["github-square"],"f092","M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM265.8 407.7c0-1.8 0-6 .1-11.6c.1-11.4 .1-28.8 .1-43.7c0-15.6-5.2-25.5-11.3-30.7c37-4.1 76-9.2 76-73.1c0-18.2-6.5-27.3-17.1-39c1.7-4.3 7.4-22-1.7-45c-13.9-4.3-45.7 17.9-45.7 17.9c-13.2-3.7-27.5-5.6-41.6-5.6s-28.4 1.9-41.6 5.6c0 0-31.8-22.2-45.7-17.9c-9.1 22.9-3.5 40.6-1.7 45c-10.6 11.7-15.6 20.8-15.6 39c0 63.6 37.3 69 74.3 73.1c-4.8 4.3-9.1 11.7-10.6 22.3c-9.5 4.3-33.8 11.7-48.3-13.9c-9.1-15.8-25.5-17.1-25.5-17.1c-16.2-.2-1.1 10.2-1.1 10.2c10.8 5 18.4 24.2 18.4 24.2c9.7 29.7 56.1 19.7 56.1 19.7c0 9 .1 21.7 .1 30.6c0 4.8 .1 8.6 .1 10c0 4.3-3 9.5-11.5 8C106 393.6 59.8 330.8 59.8 257.4c0-91.8 70.2-161.5 162-161.5s166.2 69.7 166.2 161.5c.1 73.4-44.7 136.3-110.7 158.3c-8.4 1.5-11.5-3.7-11.5-8zm-90.5-54.8c-.2-1.5 1.1-2.8 3-3.2c1.9-.2 3.7 .6 3.9 1.9c.3 1.3-1 2.6-3 3c-1.9 .4-3.7-.4-3.9-1.7zm-9.1 3.2c-2.2 .2-3.7-.9-3.7-2.4c0-1.3 1.5-2.4 3.5-2.4c1.9-.2 3.7 .9 3.7 2.4c0 1.3-1.5 2.4-3.5 2.4zm-14.3-2.2c-1.9-.4-3.2-1.9-2.8-3.2s2.4-1.9 4.1-1.5c2 .6 3.3 2.1 2.8 3.4c-.4 1.3-2.4 1.9-4.1 1.3zm-12.5-7.3c-1.5-1.3-1.9-3.2-.9-4.1c.9-1.1 2.8-.9 4.3 .6c1.3 1.3 1.8 3.3 .9 4.1c-.9 1.1-2.8 .9-4.3-.6zm-8.5-10c-1.1-1.5-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3c1.1 1.5 1.1 3.3 0 4.1c-.9 .6-2.6 0-3.7-1.5zm-6.3-8.8c-1.1-1.3-1.3-2.8-.4-3.5c.9-.9 2.4-.4 3.5 .6c1.1 1.3 1.3 2.8 .4 3.5c-.9 .9-2.4 .4-3.5-.6zm-6-6.4c-1.3-.6-1.9-1.7-1.5-2.6c.4-.6 1.5-.9 2.8-.4c1.3 .7 1.9 1.8 1.5 2.6c-.4 .9-1.7 1.1-2.8 .4z"],stumbleupon:[512,512,[],"f1a4","M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z"],fedex:[640,512,[],"f797","M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z"],"phoenix-framework":[640,512,[],"f3dc","M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z"],shopify:[448,512,[],"e057","M388.32,104.1a4.66,4.66,0,0,0-4.4-4c-2,0-37.23-.8-37.23-.8s-21.61-20.82-29.62-28.83V503.2L442.76,472S388.72,106.5,388.32,104.1ZM288.65,70.47a116.67,116.67,0,0,0-7.21-17.61C271,32.85,255.42,22,237,22a15,15,0,0,0-4,.4c-.4-.8-1.2-1.2-1.6-2C223.4,11.63,213,7.63,200.58,8c-24,.8-48,18-67.25,48.83-13.61,21.62-24,48.84-26.82,70.06-27.62,8.4-46.83,14.41-47.23,14.81-14,4.4-14.41,4.8-16,18-1.2,10-38,291.82-38,291.82L307.86,504V65.67a41.66,41.66,0,0,0-4.4.4S297.86,67.67,288.65,70.47ZM233.41,87.69c-16,4.8-33.63,10.4-50.84,15.61,4.8-18.82,14.41-37.63,25.62-50,4.4-4.4,10.41-9.61,17.21-12.81C232.21,54.86,233.81,74.48,233.41,87.69ZM200.58,24.44A27.49,27.49,0,0,1,215,28c-6.4,3.2-12.81,8.41-18.81,14.41-15.21,16.42-26.82,42-31.62,66.45-14.42,4.41-28.83,8.81-42,12.81C131.33,83.28,163.75,25.24,200.58,24.44ZM154.15,244.61c1.6,25.61,69.25,31.22,73.25,91.66,2.8,47.64-25.22,80.06-65.65,82.47-48.83,3.2-75.65-25.62-75.65-25.62l10.4-44s26.82,20.42,48.44,18.82c14-.8,19.22-12.41,18.81-20.42-2-33.62-57.24-31.62-60.84-86.86-3.2-46.44,27.22-93.27,94.47-97.68,26-1.6,39.23,4.81,39.23,4.81L221.4,225.39s-17.21-8-37.63-6.4C154.15,221,153.75,239.8,154.15,244.61ZM249.42,82.88c0-12-1.6-29.22-7.21-43.63,18.42,3.6,27.22,24,31.23,36.43Q262.63,78.68,249.42,82.88Z"],neos:[512,512,[],"f612","M415.44 512h-95.11L212.12 357.46v91.1L125.69 512H28V29.82L68.47 0h108.05l123.74 176.13V63.45L386.69 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.64h84.79l52.35-38.17h-78.27L69 13zm82.54 466.61l80-58.78v-101l-79.76-114.4v220.94L49 501.89h72.34zM80.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L170.91 10.77zM311 191.65l72 102.81V15.93l-72 53v122.72z"],"square-threads":[448,512,[],"e619","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM294.2 244.3c19.5 9.3 33.7 23.5 41.2 40.9c10.4 24.3 11.4 63.9-20.2 95.4c-24.2 24.1-53.5 35-95.1 35.3h-.2c-46.8-.3-82.8-16.1-106.9-46.8C91.5 341.8 80.4 303.7 80 256v-.1-.1c.4-47.7 11.5-85.7 33-113.1c24.2-30.7 60.2-46.5 106.9-46.8h.2c46.9 .3 83.3 16 108.2 46.6c12.3 15.1 21.3 33.3 27 54.4l-26.9 7.2c-4.7-17.2-11.9-31.9-21.4-43.6c-19.4-23.9-48.7-36.1-87-36.4c-38 .3-66.8 12.5-85.5 36.2c-17.5 22.3-26.6 54.4-26.9 95.5c.3 41.1 9.4 73.3 26.9 95.5c18.7 23.8 47.4 36 85.5 36.2c34.3-.3 56.9-8.4 75.8-27.3c21.5-21.5 21.1-47.9 14.2-64c-4-9.4-11.4-17.3-21.3-23.3c-2.4 18-7.9 32.2-16.5 43.2c-11.4 14.5-27.7 22.4-48.4 23.5c-15.7 .9-30.8-2.9-42.6-10.7c-13.9-9.2-22-23.2-22.9-39.5c-1.7-32.2 23.8-55.3 63.5-57.6c14.1-.8 27.3-.2 39.5 1.9c-1.6-9.9-4.9-17.7-9.8-23.4c-6.7-7.8-17.1-11.8-30.8-11.9h-.4c-11 0-26 3.1-35.6 17.6l-23-15.8c12.8-19.4 33.6-30.1 58.5-30.1h.6c41.8 .3 66.6 26.3 69.1 71.8c1.4 .6 2.8 1.2 4.2 1.9l.1 .5zm-71.8 67.5c17-.9 36.4-7.6 39.7-48.8c-8.8-1.9-18.6-2.9-29-2.9c-3.2 0-6.4 .1-9.6 .3c-28.6 1.6-38.1 15.5-37.4 27.9c.9 16.7 19 24.5 36.4 23.6l-.1-.1z"],hackerrank:[512,512,[],"f5f7","M477.5 128C463 103.05 285.13 0 256.16 0S49.25 102.79 34.84 128s-14.49 230.8 0 256 192.38 128 221.32 128S463 409.08 477.49 384s14.51-231 .01-256zM316.13 414.22c-4 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11.92-33.44 3-84-.15-212.67v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.64 336 341.29 336 373.69c8.87.35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z"],researchgate:[448,512,[],"f4f8","M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z"],swift:[448,512,[],"f8e1","M448 156.09c0-4.51-.08-9-.2-13.52a196.31 196.31 0 0 0-2.58-29.42 99.62 99.62 0 0 0-9.22-28A94.08 94.08 0 0 0 394.84 44a99.17 99.17 0 0 0-28-9.22 195 195 0 0 0-29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.14c-4.51 0-9 .08-13.52.2-2.45.07-4.91.15-7.37.27a171.68 171.68 0 0 0-22.06 2.32 103.06 103.06 0 0 0-21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0-18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0-9.22 28 196.31 196.31 0 0 0-2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.83c0 4.51.08 9 .21 13.51a196.08 196.08 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5.12 9 .17 13.52.2H323.91c4.51 0 9-.08 13.52-.2a196.59 196.59 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.84a99.3 99.3 0 0 0 9.22-28 194.79 194.79 0 0 0 2.59-29.42c.12-4.5.17-9 .2-13.51V172.14c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42.25c-39.5 21-92.53 22.54-145.85-.38A234.64 234.64 0 0 1 45 290.12a230.63 230.63 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.09-147.22a197.09 197.09 0 0 1-18.78-25.9c43.7 40 112.7 90.22 137.48 104.12-52.57-55.49-98.89-123.94-96.72-121.74 82.79 83.42 159.18 130.59 159.18 130.59 2.88 1.58 5 2.85 6.73 4a127.44 127.44 0 0 0 4.16-12.47c13.22-48.33-1.66-103.58-35.31-149.2C329.61 141.75 375 229.34 356.4 303.42c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z"],angular:[448,512,[],"f420","M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z"],speakap:[448,512,[],"f3f3","M64 391.78C-15.41 303.59-8 167.42 80.64 87.64s224.8-73 304.21 15.24 72 224.36-16.64 304.14c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.91 35-346.23-67.5zm213.31-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33.29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23.18 96.42.33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75.41-23.25 31-25.37 37.53-25.26.43 0 26.62.26 39.62 17.37z"],angrycreative:[640,512,[],"f36e","M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z"],"y-combinator":[448,512,[],"f23b","M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z"],empire:[496,512,[],"f1d1","M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z"],envira:[448,512,[],"f299","M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z"],"google-scholar":[512,512,[],"e63b","M390.9 298.5c0 0 0 .1 .1 .1c9.2 19.4 14.4 41.1 14.4 64C405.3 445.1 338.5 512 256 512s-149.3-66.9-149.3-149.3c0-22.9 5.2-44.6 14.4-64h0c1.7-3.6 3.6-7.2 5.6-10.7c4.4-7.6 9.4-14.7 15-21.3c27.4-32.6 68.5-53.3 114.4-53.3c33.6 0 64.6 11.1 89.6 29.9c9.1 6.9 17.4 14.7 24.8 23.5c5.6 6.6 10.6 13.8 15 21.3c2 3.4 3.8 7 5.5 10.5zm26.4-18.8c-30.1-58.4-91-98.4-161.3-98.4s-131.2 40-161.3 98.4L0 202.7 256 0 512 202.7l-94.7 77.1z"],"square-gitlab":[448,512,["gitlab-square"],"e5ae","M0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm337.5 12.5l44.6 116.4 .4 1.2c5.6 16.8 7.2 35.2 2.3 52.5c-5 17.2-15.4 32.4-29.8 43.3l-.2 .1-68.4 51.2-54.1 40.9c-.5 .2-1.1 .5-1.7 .8c-2 1-4.4 2-6.7 2c-3 0-6.8-1.8-8.3-2.8l-54.2-40.9L93.5 322.3l-.4-.3-.2-.1c-14.3-10.8-24.8-26-29.7-43.3s-4.2-35.7 2.2-52.5l.5-1.2 44.7-116.4c.9-2.3 2.5-4.3 4.5-5.6c1.6-1 3.4-1.6 5.2-1.8c1.3-.7 2.1-.4 3.4 .1c.6 .2 1.2 .5 2 .7c1 .4 1.6 .9 2.4 1.5c.6 .4 1.2 1 2.1 1.5c1.2 1.4 2.2 3 2.7 4.8l29.2 92.2H285l30.2-92.2c.5-1.8 1.4-3.4 2.6-4.8s2.8-2.4 4.5-3.1c1.7-.6 3.6-.9 5.4-.7s3.6 .8 5.2 1.8c2 1.3 3.7 3.3 4.6 5.6z"],studiovinari:[512,512,[],"f3f8","M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z"],"pied-piper":[480,512,[],"f2ae","M455.93,23.2C429.23,30,387.79,51.69,341.35,90.66A206,206,0,0,0,240,64C125.13,64,32,157.12,32,272s93.13,208,208,208,208-93.13,208-208a207.25,207.25,0,0,0-58.75-144.81,155.35,155.35,0,0,0-17,27.4A176.16,176.16,0,0,1,417.1,272c0,97.66-79.44,177.11-177.09,177.11a175.81,175.81,0,0,1-87.63-23.4c82.94-107.33,150.79-37.77,184.31-226.65,5.79-32.62,28-94.26,126.23-160.18C471,33.45,465.35,20.8,455.93,23.2ZM125,406.4A176.66,176.66,0,0,1,62.9,272C62.9,174.34,142.35,94.9,240,94.9a174,174,0,0,1,76.63,17.75C250.64,174.76,189.77,265.52,125,406.4Z"],wordpress:[512,512,[],"f19a","M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z"],"product-hunt":[512,512,[],"f288","M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z"],firefox:[512,512,[],"f269","M503.52,241.48c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.86,245.86,0,0,0-7.32-41.15c0-.12,0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27,8.27,0,0,0-.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48,0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07,18.07,0,0,0-1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63,15.63,0,0,0-1.2-1.8L463.2,119a15.63,15.63,0,0,0-1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.76,248.76,0,0,0-23.51-26.64A186.82,186.82,0,0,0,412,62.46c-4-3.48-8.16-6.72-12.48-9.84a162.49,162.49,0,0,0-24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254,254,0,0,0-55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.35,236.35,0,0,0-38-4H255.14a234.62,234.62,0,0,0-45.48,5c-33.59,7.08-63.23,21.24-82.91,39-1.08,1-1.92,1.68-2.4,2.16l-.48.48H124l-.12.12.12-.12a.12.12,0,0,0,.12-.12l-.12.12a.42.42,0,0,1,.24-.12c14.64-8.76,34.92-16,49.44-19.56l5.88-1.44c.36-.12.84-.12,1.2-.24,1.68-.36,3.36-.72,5.16-1.08.24,0,.6-.12.84-.12C250.94,20.94,319.34,40.14,367,85.61a171.49,171.49,0,0,1,26.88,32.76c30.36,49.2,27.48,111.11,3.84,147.59-34.44,53-111.35,71.27-159,24.84a84.19,84.19,0,0,1-25.56-59,74.05,74.05,0,0,1,6.24-31c1.68-3.84,13.08-25.67,18.24-24.59-13.08-2.76-37.55,2.64-54.71,28.19-15.36,22.92-14.52,58.2-5,83.28a132.85,132.85,0,0,1-12.12-39.24c-12.24-82.55,43.31-153,94.31-170.51-27.48-24-96.47-22.31-147.71,15.36-29.88,22-51.23,53.16-62.51,90.36,1.68-20.88,9.6-52.08,25.8-83.88-17.16,8.88-39,37-49.8,62.88-15.6,37.43-21,82.19-16.08,124.79.36,3.24.72,6.36,1.08,9.6,19.92,117.11,122,206.38,244.78,206.38C392.77,503.42,504,392.19,504,255,503.88,250.48,503.76,245.92,503.52,241.48Z"],linode:[448,512,[],"f2b8","M366.036,186.867l-59.5,36.871-.838,36.871-29.329-19.273-39.384,24.3c2.238,55.211,2.483,59.271,2.51,59.5l-97.2,65.359L127.214,285.748l108.1-62.01L195.09,197.761l-75.417,38.547L98.723,93.015,227.771,43.574,136.432,0,10.737,39.385,38.39,174.3l41.9,32.681L48.445,222.062,69.394,323.457,98.723,351.11,77.774,363.679l16.76,78.769L160.733,512c-10.8-74.842-11.658-78.641-11.725-78.773l77.925-55.3c16.759-12.57,15.083-10.894,15.083-10.894l.838,24.3,33.519,28.491-.838-77.093,46.927-33.519,26.815-18.435-2.514,36.033,25.139,17.6,6.7-74.579,58.657-43.575Z"],goodreads:[448,512,[],"f3a8","M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z"],"square-odnoklassniki":[448,512,["odnoklassniki-square"],"f264","M224 137.1a39.9 39.9 0 1 0 0 79.7 39.9 39.9 0 1 0 0-79.7zM384 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zM224 95.9A81 81 0 1 1 224 258a81 81 0 1 1 0-162.1zm59.3 168.3c16.8-13.2 29.5-5.5 34.1 3.6c7.8 16-1.1 23.7-21.5 37c-17.1 10.9-40.7 15.2-56.2 16.8l13 12.9 47.7 47.7c17.4 17.9-11 45.8-28.6 28.6c-12-12.2-29.5-29.7-47.7-47.9l0 0-47.7 47.9c-17.7 17.2-46-11-28.4-28.6c3.7-3.7 7.9-7.9 12.5-12.5c10.4-10.4 22.6-22.7 35.2-35.2l12.9-12.9c-15.4-1.6-39.3-5.7-56.6-16.8c-20.3-13.3-29.3-20.9-21.4-37c4.6-9.1 17.3-16.8 34.1-3.6c0 0 22.7 18 59.3 18s59.3-18 59.3-18z"],jsfiddle:[576,512,[],"f1cc","M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z"],sith:[448,512,[],"f512","M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z"],themeisle:[512,512,[],"f2b2","M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z"],page4:[496,512,[],"f3d7","M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z"],hashnode:[512,512,[],"e499","M35.19 171.1C-11.72 217.1-11.72 294 35.19 340.9L171.1 476.8C217.1 523.7 294 523.7 340.9 476.8L476.8 340.9C523.7 294 523.7 217.1 476.8 171.1L340.9 35.19C294-11.72 217.1-11.72 171.1 35.19L35.19 171.1zM315.5 315.5C282.6 348.3 229.4 348.3 196.6 315.5C163.7 282.6 163.7 229.4 196.6 196.6C229.4 163.7 282.6 163.7 315.5 196.6C348.3 229.4 348.3 282.6 315.5 315.5z"],react:[512,512,[],"f41b","M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z"],"cc-paypal":[576,512,[],"f1f4","M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"],squarespace:[512,512,[],"f5be","M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z"],"cc-stripe":[576,512,[],"f1f5","M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"],"creative-commons-share":[496,512,[],"f4f2","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z"],bitcoin:[512,512,[],"f379","M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z"],keycdn:[512,512,[],"f3ba","M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160"],opera:[496,512,[],"f26a","M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z"],"itch-io":[512,512,[],"f83a","M71.92 34.77C50.2 47.67 7.4 96.84 7 109.73v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.56 32.4 325.76 32 256 32S91.14 33.1 71.92 34.77zm132.32 134.39c-22 38.4-77.9 38.71-99.85.25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.13 17.73 269.15 80 18.67 302.08 18.12 379.76 0 31.65-32.27 21.32-232 17.75-269.15-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1-51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.91 436.91 0 0 1 88.18 0C318.22 223 332.85 223 349.31 223c52.33 0 65.22 77.53 83.87 144.45 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.93 8.79-155.55 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.45 83.88-144.45zM256 270.79s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34.16 23.33.16 11.65.54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z"],umbraco:[510,512,[],"f8e8","M255.35 8C118.36 7.83 7.14 118.72 7 255.68c-.07 137 111 248.2 248 248.27 136.85 0 247.82-110.7 248-247.67S392.34 8.17 255.35 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78.22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.81 224.81 0 0 1 0-30.71 418.37 418.37 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.62 380.62 0 0 0-2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.64 242.64 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0-2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05.81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.71 415.71 0 0 1 3.61 43.88 228.06 228.06 0 0 1-.04 30.73z"],"galactic-senate":[512,512,[],"f50d","M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z"],ubuntu:[576,512,[],"f7df","M469.2 75A75.6 75.6 0 1 0 317.9 75a75.6 75.6 0 1 0 151.2 0zM154.2 240.7A75.6 75.6 0 1 0 3 240.7a75.6 75.6 0 1 0 151.2 0zM57 346C75.6 392.9 108 433 150 461.1s91.5 42.6 142 41.7c-14.7-18.6-22.9-41.5-23.2-65.2c-6.8-.9-13.3-2.1-19.5-3.4c-26.8-5.7-51.9-17.3-73.6-34s-39.3-38.1-51.7-62.5c-20.9 9.9-44.5 12.8-67.1 8.2zm395.1 89.8a75.6 75.6 0 1 0 -151.2 0 75.6 75.6 0 1 0 151.2 0zM444 351.6c18.5 14.8 31.6 35.2 37.2 58.2c33.3-41.3 52.6-92.2 54.8-145.2s-12.5-105.4-42.2-149.4c-8.6 21.5-24 39.6-43.8 51.6c15.4 28.6 22.9 60.8 21.9 93.2s-10.7 64-28 91.6zM101.1 135.4c12.4 2.7 24.3 7.5 35.1 14.3c16.6-24.2 38.9-44.1 64.8-58S255.8 70.4 285.2 70c.2-5.9 .9-11.9 2-17.7c3.6-16.7 11.1-32.3 21.8-45.5c-47.7-3.8-95.4 6-137.6 28.5S94.3 91.7 70.8 133.4c2.7-.2 5.3-.3 8-.3c7.5 0 15 .8 22.4 2.3z"],draft2digital:[480,512,[],"f396","M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z"],stripe:[640,512,[],"f429","M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z"],houzz:[448,512,[],"f27c","M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z"],gg:[512,512,[],"f260","M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z"],dhl:[640,512,[],"f790","M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4.7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z"],"square-pinterest":[448,512,["pinterest-square"],"f0d3","M384 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64h72.6l-2.2-.8c-5.4-48.1-3.1-57.5 15.7-134.7c3.9-16 8.5-35 13.9-57.9c0 0-7.3-14.8-7.3-36.5c0-70.7 75.5-78 75.5-25c0 13.5-5.4 31.1-11.2 49.8c-3.3 10.6-6.6 21.5-9.1 32c-5.7 24.5 12.3 44.4 36.4 44.4c43.7 0 77.2-46 77.2-112.4c0-58.8-42.3-99.9-102.6-99.9C153 139 112 191.4 112 245.6c0 21.1 8.2 43.7 18.3 56c2 2.4 2.3 4.5 1.7 7c-1.1 4.7-3.1 12.9-4.7 19.2c-1 4-1.8 7.3-2.1 8.6c-1.1 4.5-3.5 5.5-8.2 3.3c-30.6-14.3-49.8-59.1-49.8-95.1C67.2 167.1 123.4 96 229.4 96c85.2 0 151.4 60.7 151.4 141.8c0 84.6-53.3 152.7-127.4 152.7c-24.9 0-48.3-12.9-56.3-28.2c0 0-12.3 46.9-15.3 58.4c-5 19.3-17.6 42.9-27.4 59.3H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64z"],xing:[384,512,[],"f168","M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z"],blackberry:[512,512,[],"f37b","M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z"],"creative-commons-pd":[496,512,[],"f4ec","M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z"],playstation:[576,512,[],"f3df","M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z"],quinscape:[512,512,[],"f459","M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.36 237.36 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4.1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0-99.2-99.2z"],less:[640,512,[],"f41d","M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z"],"blogger-b":[448,512,[],"f37d","M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z"],opencart:[640,512,[],"f23d","M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z"],vine:[384,512,[],"f1ca","M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z"],"signal-messenger":[512,512,[],"e663","M194.6 7.5l5.8 23.3C177.7 36.3 156 45.3 136 57.4L123.7 36.8c22-13.3 45.9-23.2 70.9-29.3zm122.9 0l-5.8 23.3C334.3 36.3 356 45.3 376 57.4l12.4-20.6c-22-13.3-46-23.2-71-29.3zM36.8 123.7c-13.3 22-23.2 45.9-29.3 70.9l23.3 5.8C36.3 177.7 45.3 156 57.4 136L36.8 123.7zM24 256c0-11.6 .9-23.3 2.6-34.8L2.9 217.6c-3.8 25.4-3.8 51.3 0 76.7l23.7-3.6C24.9 279.3 24 267.6 24 256zM388.3 475.2L376 454.6c-20 12.1-41.6 21-64.2 26.6l5.8 23.3c24.9-6.2 48.8-16 70.8-29.3zM488 256c0 11.6-.9 23.3-2.6 34.8l23.7 3.6c3.8-25.4 3.8-51.3 0-76.7l-23.7 3.6c1.7 11.5 2.6 23.1 2.6 34.8zm16.5 61.4l-23.3-5.8c-5.6 22.7-14.5 44.3-26.6 64.3l20.6 12.4c13.3-22 23.2-46 29.3-71zm-213.8 168c-23 3.5-46.5 3.5-69.5 0l-3.6 23.7c25.4 3.8 51.3 3.8 76.7 0l-3.6-23.7zm152-91.8c-13.8 18.7-30.4 35.3-49.2 49.1l14.2 19.3c20.7-15.2 39-33.4 54.2-54.1l-19.3-14.4zM393.6 69.2c18.8 13.8 35.3 30.4 49.2 49.2L462.1 104C446.9 83.4 428.6 65.1 408 49.9L393.6 69.2zM69.2 118.4c13.8-18.8 30.4-35.3 49.2-49.2L104 49.9C83.4 65.1 65.1 83.4 49.9 104l19.3 14.4zm406 5.3L454.6 136c12.1 20 21 41.6 26.6 64.2l23.3-5.8c-6.2-24.9-16-48.8-29.3-70.8zm-254-97.1c23-3.5 46.5-3.5 69.5 0l3.6-23.7C268.9-1 243.1-1 217.6 2.9l3.6 23.7zM81.6 468.4L32 480l11.6-49.6L20.2 425 8.6 474.5c-.9 4-.8 8.1 .3 12.1s3.2 7.5 6.1 10.4s6.5 5 10.4 6.1s8.1 1.2 12.1 .3L87 492l-5.4-23.6zM25.2 403.6L48.6 409l8-34.4c-11.7-19.6-20.4-40.8-25.8-63L7.5 317.4c5.2 21.2 13.2 41.7 23.6 60.8l-5.9 25.3zm112 52l-34.4 8 5.4 23.4 25.3-5.9c19.2 10.4 39.6 18.4 60.8 23.6l5.8-23.3c-22.1-5.5-43.3-14.3-62.8-26l-.2 .2zM256 48c-37.2 0-73.6 10-105.6 28.9s-58.4 46-76.3 78.6s-26.9 69.3-25.8 106.4s12 73.3 31.8 104.8L60 452l85.3-20c27.3 17.2 58.2 27.8 90.3 31s64.5-1.1 94.6-12.6s57.2-29.8 79-53.6s37.8-52.2 46.8-83.2s10.5-63.6 4.7-95.3s-19-61.6-38.4-87.4s-44.5-46.7-73.4-61S288.3 48 256 48z"],paypal:[384,512,[],"f1ed","M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z"],gitlab:[512,512,[],"f296","M503.5 204.6L502.8 202.8L433.1 21.02C431.7 17.45 429.2 14.43 425.9 12.38C423.5 10.83 420.8 9.865 417.9 9.57C415 9.275 412.2 9.653 409.5 10.68C406.8 11.7 404.4 13.34 402.4 15.46C400.5 17.58 399.1 20.13 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.13 111.5 17.59 109.6 15.47C107.6 13.35 105.2 11.72 102.5 10.7C99.86 9.675 96.98 9.295 94.12 9.587C91.26 9.878 88.51 10.83 86.08 12.38C82.84 14.43 80.33 17.45 78.92 21.02L9.267 202.8L8.543 204.6C-1.484 230.8-2.72 259.6 5.023 286.6C12.77 313.5 29.07 337.3 51.47 354.2L51.74 354.4L52.33 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z"],typo3:[448,512,[],"f42b","M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z"],"reddit-alien":[512,512,[],"f281","M373 138.6c-25.2 0-46.3-17.5-51.9-41l0 0c-30.6 4.3-54.2 30.7-54.2 62.4l0 .2c47.4 1.8 90.6 15.1 124.9 36.3c12.6-9.7 28.4-15.5 45.5-15.5c41.3 0 74.7 33.4 74.7 74.7c0 29.8-17.4 55.5-42.7 67.5c-2.4 86.8-97 156.6-213.2 156.6S45.5 410.1 43 323.4C17.6 311.5 0 285.7 0 255.7c0-41.3 33.4-74.7 74.7-74.7c17.2 0 33 5.8 45.7 15.6c34-21.1 76.8-34.4 123.7-36.4l0-.3c0-44.3 33.7-80.9 76.8-85.5C325.8 50.2 347.2 32 373 32c29.4 0 53.3 23.9 53.3 53.3s-23.9 53.3-53.3 53.3zM157.5 255.3c-20.9 0-38.9 20.8-40.2 47.9s17.1 38.1 38 38.1s36.6-9.8 37.8-36.9s-14.7-49.1-35.7-49.1zM395 303.1c-1.2-27.1-19.2-47.9-40.2-47.9s-36.9 22-35.7 49.1c1.2 27.1 16.9 36.9 37.8 36.9s39.3-11 38-38.1zm-60.1 70.8c1.5-3.6-1-7.7-4.9-8.1c-23-2.3-47.9-3.6-73.8-3.6s-50.8 1.3-73.8 3.6c-3.9 .4-6.4 4.5-4.9 8.1c12.9 30.8 43.3 52.4 78.7 52.4s65.8-21.6 78.7-52.4z"],yahoo:[512,512,[],"f19e","M223.69,141.06,167,284.23,111,141.06H14.93L120.76,390.19,82.19,480h94.17L317.27,141.06Zm105.4,135.79a58.22,58.22,0,1,0,58.22,58.22A58.22,58.22,0,0,0,329.09,276.85ZM394.65,32l-93,223.47H406.44L499.07,32Z"],dailymotion:[448,512,[],"e052","M298.93,267a48.4,48.4,0,0,0-24.36-6.21q-19.83,0-33.44,13.27t-13.61,33.42q0,21.16,13.28,34.6t33.43,13.44q20.5,0,34.11-13.78T322,307.47A47.13,47.13,0,0,0,315.9,284,44.13,44.13,0,0,0,298.93,267ZM0,32V480H448V32ZM374.71,405.26h-53.1V381.37h-.67q-15.79,26.2-55.78,26.2-27.56,0-48.89-13.1a88.29,88.29,0,0,1-32.94-35.77q-11.6-22.68-11.59-50.89,0-27.56,11.76-50.22a89.9,89.9,0,0,1,32.93-35.78q21.18-13.09,47.72-13.1a80.87,80.87,0,0,1,29.74,5.21q13.28,5.21,25,17V153l55.79-12.09Z"],affiliatetheme:[512,512,[],"f36b","M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z"],"pied-piper-pp":[448,512,[],"f1a7","M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z"],bootstrap:[576,512,[],"f836","M333.5,201.4c0-22.1-15.6-34.3-43-34.3h-50.4v71.2h42.5C315.4,238.2,333.5,225,333.5,201.4z M517,188.6 c-9.5-30.9-10.9-68.8-9.8-98.1c1.1-30.5-22.7-58.5-54.7-58.5H123.7c-32.1,0-55.8,28.1-54.7,58.5c1,29.3-0.3,67.2-9.8,98.1 c-9.6,31-25.7,50.6-52.2,53.1v28.5c26.4,2.5,42.6,22.1,52.2,53.1c9.5,30.9,10.9,68.8,9.8,98.1c-1.1,30.5,22.7,58.5,54.7,58.5h328.7 c32.1,0,55.8-28.1,54.7-58.5c-1-29.3,0.3-67.2,9.8-98.1c9.6-31,25.7-50.6,52.1-53.1v-28.5C542.7,239.2,526.5,219.6,517,188.6z M300.2,375.1h-97.9V136.8h97.4c43.3,0,71.7,23.4,71.7,59.4c0,25.3-19.1,47.9-43.5,51.8v1.3c33.2,3.6,55.5,26.6,55.5,58.3 C383.4,349.7,352.1,375.1,300.2,375.1z M290.2,266.4h-50.1v78.4h52.3c34.2,0,52.3-13.7,52.3-39.5 C344.7,279.6,326.1,266.4,290.2,266.4z"],odnoklassniki:[320,512,[],"f263","M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z"],"nfc-symbol":[576,512,[],"e531","M392.9 32.43C400.6 31.1 408.6 32.89 414.1 37.41C498.2 96.14 544 173.7 544 255.1C544 338.2 498.2 415.9 414.1 474.6C409.3 478.6 402.4 480.5 395.5 479.9C388.5 479.3 382 476.3 377.1 471.4L193.7 288.7C188.1 283.2 185 275.7 184.1 267.8C184.1 260 188.1 252.5 193.6 246.9C199.2 241.4 206.7 238.2 214.5 238.2C222.4 238.2 229.9 241.3 235.4 246.8L400.5 411.2C455.1 366.5 484.8 312 484.8 255.1C484.8 193.5 447.9 132.9 380.9 85.76C374.5 81.24 370.1 74.35 368.8 66.62C367.4 58.89 369.2 50.94 373.8 44.53C378.3 38.12 385.2 33.77 392.9 32.43V32.43zM186.9 479.6C179.2 480.9 171.3 479.1 164.8 474.6C81.67 415.9 35.84 338.2 35.84 255.1C35.84 173.7 81.67 96.14 164.8 37.41C170.5 33.4 177.4 31.53 184.4 32.12C191.3 32.71 197.8 35.72 202.7 40.63L386.1 223.3C391.7 228.8 394.8 236.3 394.8 244.2C394.9 251.1 391.8 259.5 386.2 265.1C380.7 270.6 373.2 273.8 365.3 273.8C357.5 273.8 349.1 270.7 344.4 265.2L179.3 100.7C124.7 145.9 95.03 199.9 95.03 255.1C95.03 318.5 131.9 379.1 198.1 426.2C205.4 430.8 209.7 437.6 211.1 445.4C212.4 453.1 210.6 461.1 206.1 467.5C201.6 473.9 194.7 478.2 186.9 479.6V479.6z"],mintbit:[512,512,[],"e62f","M73.2 512V438.9H365.7V365.7h73.2V219.4H512V0H292.6V73.1H146.3v73.2H73.2V438.9H0V512H73.2zm73.1-219.4h73.2v73.1H146.3V292.6zm73.2-73.1h73.1v73.1H219.4V219.4zm73.1 0V146.3h73.2v73.1H292.6zM365.7 73.1h73.2v73.2H365.7V73.1z"],ethereum:[320,512,[],"f42e","M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z"],"speaker-deck":[512,512,[],"f83c","M213.86 296H100a100 100 0 0 1 0-200h132.84a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.82a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.86c26.48 0 26.46-40 0-40zM298 416a120.21 120.21 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0-19.66-20H296.42a60.77 60.77 0 0 0 0-80h136.93c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z"],"creative-commons-nc-eu":[496,512,[],"f4e9","M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z"],patreon:[512,512,[],"f3d9","M489.7 153.8c-.1-65.4-51-119-110.7-138.3C304.8-8.5 207-5 136.1 28.4C50.3 68.9 23.3 157.7 22.3 246.2C21.5 319 28.7 510.6 136.9 512c80.3 1 92.3-102.5 129.5-152.3c26.4-35.5 60.5-45.5 102.4-55.9c72-17.8 121.1-74.7 121-150z"],avianex:[512,512,[],"f374","M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z"],ello:[496,512,[],"f5f1","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z"],gofore:[400,512,[],"f3a7","M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z"],bimobject:[448,512,[],"f378","M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z"],"brave-reverse":[448,512,[],"e63d","M298 0c3 0 5.8 1.3 7.8 3.6l38.1 44c.5-.1 1-.2 1.5-.3c9.2-1.6 18.6-2.2 27.7-1.2c11.6 1.4 21.5 5.4 28.9 12.9c7.7 7.8 15.4 15.8 22.6 23.6c2.5 2.7 4.9 5.2 6.9 7.4c.7 .8 1.4 1.5 1.9 2c3.4 3.7 4.2 8.1 2.7 11.9l-9.8 24.6 13.1 38.1c.7 2 .8 4.1 .2 6.2c-.1 .4-.1 .4-.5 2.1c-.6 2.3-.6 2.3-1.5 5.8c-1.6 6.3-3.5 13.3-5.4 20.9c-5.6 21.6-11.2 43.2-16.4 63.4c-12.9 49.9-21.4 82.7-23.4 90.9c-11.1 44.5-19.9 60-48.3 80.3c-24.9 17.8-76.8 53.6-86.8 60c-1 .6-2 1.3-3.4 2.3c-.5 .4-3.2 2.2-3.9 2.7c-4.9 3.3-8.3 5.5-12.1 7.3c-4.7 2.2-9.3 3.5-13.9 3.5s-9.1-1.2-13.9-3.5c-3.7-1.8-7.2-3.9-12.1-7.3c-.8-.5-3.4-2.4-3.9-2.7c-1.4-1-2.5-1.7-3.4-2.3c-10-6.4-61.9-42.1-86.8-60c-28.4-20.4-37.2-35.8-48.3-80.3c-2-8.2-10.5-41-23.3-90.5c-5.3-20.6-10.9-42.2-16.5-63.8c-2-7.6-3.8-14.6-5.4-20.9c-.9-3.5-.9-3.5-1.5-5.8c-.4-1.7-.4-1.7-.5-2.1c-.5-2-.4-4.2 .2-6.2l13.1-38.1L11.8 104c-1.5-3.8-.7-8.2 2-11.2c1.2-1.3 1.8-2 2.6-2.8c2-2.2 4.4-4.7 6.9-7.4C30.6 74.9 38.3 66.9 46 59.1c7.4-7.5 17.3-11.6 28.9-12.9c9.1-1.1 18.5-.5 27.7 1.2c.5 .1 1 .2 1.5 .3l38.1-44C144.2 1.3 147 0 150 0H298zm-4.7 21.1H154.7L115.6 66.2c-2.6 3-6.7 4.3-10.6 3.2c-.2-.1-.7-.2-1.5-.4c-1.3-.3-2.9-.6-4.5-.9c-7.4-1.3-14.9-1.8-21.7-1C70 68 64.3 70.3 60.7 74c-7.6 7.7-15.2 15.6-22.3 23.3c-1.7 1.8-3.3 3.5-4.8 5.1l8.8 22c1 2.4 1 5 .2 7.5L29.2 170.6c.4 1.4 .5 1.9 1.2 4.8c1.6 6.3 3.5 13.3 5.4 20.9c5.6 21.6 11.2 43.2 16.4 63.4c12.9 50 21.4 82.8 23.4 91C85.7 390.8 92 402 115.8 419c24.6 17.6 76.3 53.2 85.9 59.3c1.2 .8 2.5 1.6 4 2.7c.6 .4 3.2 2.2 3.9 2.7c4 2.8 6.7 4.4 9.2 5.6c2.2 1 3.9 1.5 5.1 1.5s2.9-.5 5.1-1.5c2.5-1.2 5.2-2.8 9.2-5.6c.7-.5 3.3-2.3 3.9-2.7c1.6-1.1 2.8-1.9 4-2.7c9.6-6.1 61.3-41.7 85.9-59.3c23.8-17.1 30.2-28.2 40.1-68.3c2.1-8.3 10.5-41.1 23.3-90.7c5.3-20.6 10.9-42.2 16.5-63.8c2-7.6 3.8-14.6 5.4-20.9c.7-2.9 .9-3.4 1.2-4.8l-13.3-38.8c-.8-2.4-.8-5.1 .2-7.5l8.8-22c-1.5-1.6-3.1-3.3-4.8-5.1c-7.2-7.6-14.7-15.5-22.3-23.3c-3.7-3.7-9.3-6-16.6-6.9c-6.8-.8-14.4-.3-21.7 1c-1.7 .3-3.2 .6-4.5 .9c-.8 .2-1.3 .3-1.5 .4c-3.8 1.1-7.9-.2-10.6-3.2L293.3 21.1zM224 316c2.8 0 20.9 6.5 35.4 14.1s25 13 28.3 15.2s1.3 6.2-1.7 8.4s-44.1 34.6-48.1 38.2s-9.8 9.5-13.8 9.5s-9.8-5.9-13.8-9.5s-45.1-36-48.1-38.2s-5.1-6.2-1.7-8.4s13.9-7.5 28.3-15.2s32.5-14.1 35.4-14.1zm.1-230.7c.7 0 8.8 .2 20.5 4.2c12.3 4.2 25.7 9.4 31.9 9.4s51.9-8.9 51.9-8.9s54.2 66.7 54.2 81s-6.8 18-13.7 25.4s-36.8 39.8-40.7 43.9s-11.9 10.5-7.1 21.8s11.7 25.8 3.9 40.4s-21 24.4-29.4 22.8s-28.4-12.2-35.7-17.1s-30.5-24.3-30.5-31.8s24-20.8 28.4-23.9s24.7-14.8 25.1-19.4s.3-6-5.7-17.4s-16.7-26.7-14.9-36.8s19.1-15.4 31.5-20.2s36.2-13.7 39.2-15.1s2.2-2.7-6.8-3.6s-34.6-4.3-46.1-1.1s-31.2 8.2-32.8 10.9s-3 2.7-1.4 11.8s10.1 52.8 10.9 60.6s2.4 12.9-5.8 14.8s-22.1 5.2-26.8 5.2s-18.6-3.3-26.8-5.2s-6.6-7-5.8-14.8s9.3-51.5 10.9-60.6s.2-9.2-1.4-11.8s-21.3-7.6-32.8-10.9s-37.1 .2-46.1 1.1s-9.8 2.2-6.8 3.6s26.8 10.4 39.2 15.1s29.7 10 31.5 20.2s-9 25.4-14.9 36.8s-6.1 12.8-5.7 17.4s20.6 16.4 25.1 19.4s28.4 16.4 28.4 23.9s-23.2 27-30.5 31.8s-27.2 15.4-35.7 17.1s-21.7-8.2-29.4-22.8s-.8-29.1 3.9-40.4s-3.3-17.7-7.1-21.8s-33.8-36.5-40.7-43.9s-13.7-11.2-13.7-25.4s54.2-81 54.2-81s45.8 8.9 51.9 8.9s19.5-5.2 31.9-9.4s20.6-4.2 20.6-4.2l.1 0z"],"facebook-f":[320,512,[],"f39e","M80 299.3V512H196V299.3h86.5l18-97.8H196V166.9c0-51.7 20.3-71.5 72.7-71.5c16.3 0 29.4 .4 37 1.2V7.9C291.4 4 256.4 0 236.2 0C129.3 0 80 50.5 80 159.4v42.1H14v97.8H80z"],"square-google-plus":[448,512,["google-plus-square"],"f0d4","M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM64 256c0-55.3 44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4c-34.1 0-61.9 28.2-61.9 63.2c0 34.9 27.8 63.2 61.9 63.2c39.6 0 54.4-28.5 56.8-43.1H164V241.8h94.4c1 5 1.6 10.1 1.6 16.6c0 57.1-38.3 97.6-96 97.6c-55.3 0-100-44.7-100-100zm291 18.2v29H325.8v-29h-29V245h29V216H355v29h29v29.2H355z"],"web-awesome":[640,512,[],"e682","M372.2 52c0 20.9-12.4 39-30.2 47.2L448 192l104.4-20.9c-5.3-7.7-8.4-17.1-8.4-27.1c0-26.5 21.5-48 48-48s48 21.5 48 48c0 26-20.6 47.1-46.4 48L481 442.3c-10.3 23-33.2 37.7-58.4 37.7l-205.2 0c-25.2 0-48-14.8-58.4-37.7L46.4 192C20.6 191.1 0 170 0 144c0-26.5 21.5-48 48-48s48 21.5 48 48c0 10.1-3.1 19.4-8.4 27.1L192 192 298.1 99.1c-17.7-8.3-30-26.3-30-47.1c0-28.7 23.3-52 52-52s52 23.3 52 52z"],mandalorian:[448,512,[],"f50f","M232.27 511.89c-1-3.26-1.69-15.83-1.39-24.58.55-15.89 1-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0-.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.54 109.54 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34.21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1-1.55 4.26c-1 1-1.14.91-2.05-.53a14.87 14.87 0 0 1-1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36.66.51 1.35.34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95.7-3 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0-2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79.1 18.55a101.2 101.2 0 0 0-1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.88 132.88 0 0 0-2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.24 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0-2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0-1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0-2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51.68 3 .57 7.05-1.67l4.35-2.4L268.32 5c10.44-.4 10.81-.47 15.26-2.68L288.16 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1-1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1-4.09 3.71 13.62 13.62 0 0 0-4.38 4.78 5.89 5.89 0 0 1-2.49 2.91 6.88 6.88 0 0 0-2.45 1.71 67.62 67.62 0 0 1-7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56.71 8.84a33.45 33.45 0 0 0-1.06 8.91c0 4.88.22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69.52 12.69-11 22.84l-4 3.49.07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36.47 2.26.78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43.17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1-1.73-10.79 100.5 100.5 0 0 0-1.73-10.79 37.53 37.53 0 0 1-1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62.62 0 0 1-1-.14zm-87.18-266.59c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.28 86.25 255 78.55 268c-31 52-6 101.59 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.3 70.64-78.7 91.18-105.29 61.71z"],"first-order-alt":[496,512,[],"f50a","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z"],osi:[512,512,[],"f41a","M8 266.44C10.3 130.64 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0-64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z"],"google-wallet":[448,512,[],"f1ee","M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z"],"d-and-d-beyond":[640,512,[],"f6ca","M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9.2-5.8 1.6-7.5.6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9.6-.3 1.3 0 .6 1.9-.2.6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3.1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9.9 7.5.2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1.6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6.7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4.2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5.5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4.8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6.5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9.5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8.5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6.3 3 .6 4.3 1.1-2.1.8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2.8.2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8.6-2.6-.2s.3-4.3.3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3.6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7.2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7.6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8.8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5.3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9.3 5.6 1.1V196c-1.1.5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1.2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5.2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1.2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3.3-99.3zm-.3 77.5c-37.4 0-36.9-55.3.2-55.3 36.8.1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8.2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1.1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5.8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6.3-39.9-4 .1.8.5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8.2-39.9-4 .1.7.5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6.3-4 1.1-6.1 2.9.1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z"],periscope:[448,512,[],"f3da","M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z"],fulcrum:[320,512,[],"f50b","M95.75 164.14l-35.38 43.55L25 164.14l35.38-43.55zM144.23 0l-20.54 198.18L72.72 256l51 57.82L144.23 512V300.89L103.15 256l41.08-44.89zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.82 247 256l-51-57.82L175.42 0z"],cloudscale:[448,512,[],"f383","M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z"],forumbee:[448,512,[],"f211","M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z"],mizuni:[496,512,[],"f3cc","M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z"],schlix:[448,512,[],"f3ea","M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z"],"square-xing":[448,512,["xing-square"],"f169","M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM93.8 320.2c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6 .2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2c-3.5 6.2-7.7 9.1-12.6 9.1H93.8zm163.5-33.4v.2l65.5 119c2.8 5.1 .1 10.1-6 10.1H270.2c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c1.8-3.2 22.9-40.4 63.3-111.6c11.7-20.7 25.1-44.3 40.1-70.8c3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10L257.3 286.8z"],bandcamp:[512,512,[],"f2d5","M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm48.2,326.1h-181L207.9,178h181Z"],wpforms:[448,512,[],"f298","M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z"],cloudversify:[616,512,[],"f385","M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z"],usps:[576,512,[],"f7e1","M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8.1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z"],megaport:[496,512,[],"f5a3","M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z"],magento:[448,512,[],"f3c4","M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z"],spotify:[496,512,[],"f1bc","M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z"],"optin-monster":[576,512,[],"f23c","M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7.3-6.5.3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8.9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8.5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4.5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3.5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1.2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3.3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1.5-8.1.8-11.6.8-1.9-21.9-6.8-44-14.3-64.6 3.7.3 8.1.3 11.8.3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1.8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3.3 26.6.3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6.8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3.3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2.8 2.2.8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8.3 1.9.5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3.9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5.9-8.4-20.2-23.5-29.1-25.1z"],fly:[384,512,[],"f417","M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z"],aviato:[640,512,[],"f421","M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z"],itunes:[448,512,[],"f3b4","M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z"],cuttlefish:[440,512,[],"f38c","M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z"],blogger:[448,512,[],"f37c","M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z"],flickr:[448,512,[],"f16e","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z"],viber:[512,512,[],"f409","M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z"],soundcloud:[640,512,[],"f1be","M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z"],digg:[512,512,[],"f1a6","M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z"],"tencent-weibo":[384,512,[],"f1d5","M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z"],letterboxd:[640,512,[],"e62d","M521.3 128C586.9 128 640 181.1 640 246.6s-53.1 118.6-118.7 118.6c-42.5 0-79.7-22.3-100.7-55.8c11.4-18.2 18-39.7 18-62.8s-6.6-44.6-18-62.8l0 0 .8-1.2c20.8-32.3 56.8-53.9 97.9-54.6l2 0zM320 128c42.5 0 79.7 22.3 100.7 55.8c-11.4 18.2-18 39.7-18 62.8s6.6 44.6 18 62.8l0 0-.8 1.2c-20.8 32.3-56.8 53.9-97.9 54.6l-2 0c-42.5 0-79.7-22.3-100.7-55.8c11.4-18.2 18-39.7 18-62.8s-6.6-44.6-18-62.8l0 0 .8-1.2c20.8-32.3 56.8-53.9 97.9-54.6l2 0zm-201.3 0c42.5 0 79.7 22.3 100.7 55.8c-11.4 18.2-18 39.7-18 62.8s6.6 44.6 18 62.8l0 0-.8 1.2c-20.8 32.3-56.8 53.9-97.9 54.6l-2 0C53.1 365.1 0 312.1 0 246.6S53.1 128 118.7 128z"],symfony:[512,512,[],"f83d","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.74 143.54c-11.47.41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.85 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.72-29 34.46-58.4 39.82-71.58 40.26-24.65.85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71.11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.35 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.23 140.13 251.94 197 262 205.29c37.17-109 100.53-105.46 102.43-105.53 25.16-.81 44.19 10.59 44.83 28.65.25 7.69-4.17 22.59-19.52 23.13z"],maxcdn:[512,512,[],"f136","M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z"],etsy:[384,512,[],"f2d7","M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z"],"facebook-messenger":[512,512,[],"f39f","M256.55 8C116.52 8 8 110.34 8 248.57c0 72.3 29.71 134.78 78.07 177.94 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.31c52.91-23.3 53.59-25.14 62.56-22.7C337.85 521.8 504 423.7 504 248.57 504 110.34 396.59 8 256.55 8zm149.24 185.13l-73 115.57a37.37 37.37 0 0 1-53.91 9.93l-58.08-43.47a15 15 0 0 0-18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.57a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z"],audible:[640,512,[],"f373","M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z"],"think-peaks":[576,512,[],"f731","M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5.1-235.8-404.6z"],bilibili:[512,512,[],"e3d9","M488.6 104.1C505.3 122.2 513 143.8 511.9 169.8V372.2C511.5 398.6 502.7 420.3 485.4 437.3C468.2 454.3 446.3 463.2 419.9 464H92.02C65.57 463.2 43.81 454.2 26.74 436.8C9.682 419.4 .7667 396.5 0 368.2V169.8C.7667 143.8 9.682 122.2 26.74 104.1C43.81 87.75 65.57 78.77 92.02 78H121.4L96.05 52.19C90.3 46.46 87.42 39.19 87.42 30.4C87.42 21.6 90.3 14.34 96.05 8.603C101.8 2.868 109.1 0 117.9 0C126.7 0 134 2.868 139.8 8.603L213.1 78H301.1L375.6 8.603C381.7 2.868 389.2 0 398 0C406.8 0 414.1 2.868 419.9 8.603C425.6 14.34 428.5 21.6 428.5 30.4C428.5 39.19 425.6 46.46 419.9 52.19L394.6 78L423.9 78C450.3 78.77 471.9 87.75 488.6 104.1H488.6zM449.8 173.8C449.4 164.2 446.1 156.4 439.1 150.3C433.9 144.2 425.1 140.9 416.4 140.5H96.05C86.46 140.9 78.6 144.2 72.47 150.3C66.33 156.4 63.07 164.2 62.69 173.8V368.2C62.69 377.4 65.95 385.2 72.47 391.7C78.99 398.2 86.85 401.5 96.05 401.5H416.4C425.6 401.5 433.4 398.2 439.7 391.7C446 385.2 449.4 377.4 449.8 368.2L449.8 173.8zM185.5 216.5C191.8 222.8 195.2 230.6 195.6 239.7V273C195.2 282.2 191.9 289.9 185.8 296.2C179.6 302.5 171.8 305.7 162.2 305.7C152.6 305.7 144.7 302.5 138.6 296.2C132.5 289.9 129.2 282.2 128.8 273V239.7C129.2 230.6 132.6 222.8 138.9 216.5C145.2 210.2 152.1 206.9 162.2 206.5C171.4 206.9 179.2 210.2 185.5 216.5H185.5zM377 216.5C383.3 222.8 386.7 230.6 387.1 239.7V273C386.7 282.2 383.4 289.9 377.3 296.2C371.2 302.5 363.3 305.7 353.7 305.7C344.1 305.7 336.3 302.5 330.1 296.2C323.1 289.9 320.7 282.2 320.4 273V239.7C320.7 230.6 324.1 222.8 330.4 216.5C336.7 210.2 344.5 206.9 353.7 206.5C362.9 206.9 370.7 210.2 377 216.5H377z"],erlang:[640,512,[],"f39d","M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z"],"x-twitter":[512,512,[],"e61b","M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"],"cotton-bureau":[512,512,[],"f89e","M474.31 330.41c-23.66 91.85-94.23 144.59-201.9 148.35V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.24 0C110.52 157.72 74 194.63 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.43-5-211.1-85.07-211.1-223 0-141.82 81.35-223.2 223.2-223.2 114.77 0 189.84 53.2 214.69 148.81H500C473.88 71.51 388.22 8 259.82 8 105 8 12 101.19 12 255.82 12 411.14 105.19 504.34 259.82 504c128.27 0 213.87-63.81 239.67-173.59zM357 182.33c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.75zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.41c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.53 71.65 120.75-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.25c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0-33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z"],dashcube:[448,512,[],"f210","M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z"],"42-group":[640,512,["innosoft"],"e080","M320 96V416C341.011 416 361.818 411.861 381.23 403.821C400.641 395.78 418.28 383.995 433.138 369.138C447.995 354.28 459.78 336.641 467.821 317.23C475.861 297.818 480 277.011 480 256C480 234.989 475.861 214.182 467.821 194.771C459.78 175.359 447.995 157.72 433.138 142.863C418.28 128.005 400.641 116.22 381.23 108.179C361.818 100.139 341.011 96 320 96ZM0 256L160.002 416L320.003 256L160.002 96L0 256ZM480 256C480 277.011 484.138 297.818 492.179 317.23C500.219 336.643 512.005 354.28 526.862 369.138C541.72 383.995 559.357 395.781 578.77 403.821C598.182 411.862 618.989 416 640 416V96C597.565 96 556.869 112.858 526.862 142.863C496.857 172.869 480 213.565 480 256Z"],"stack-exchange":[448,512,[],"f18d","M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z"],elementor:[512,512,[],"f430","M.361 256C.361 397 114 511 255 511C397 511 511 397 511 256C511 116 397 2.05 255 2.05C114 2.05 .361 116 .361 256zM192 150V363H149V150H192zM234 150H362V193H234V150zM362 235V278H234V235H362zM234 320H362V363H234V320z"],"square-pied-piper":[448,512,["pied-piper-square"],"e01e","M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z"],"creative-commons-nd":[496,512,[],"f4eb","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"],palfed:[576,512,[],"f3d8","M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z"],superpowers:[448,512,[],"f2dd","M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z"],resolving:[496,512,[],"f3e7","M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z"],xbox:[512,512,[],"f412","M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z"],"square-web-awesome-stroke":[448,512,[],"e684","M64 64C46.3 64 32 78.3 32 96l0 320c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32L64 64zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm235 81.6L288 224l52.2-10.4c-2.6-3.9-4.2-8.5-4.2-13.6c0-13.3 10.7-24 24-24s24 10.7 24 24c0 13-10.3 23.6-23.2 24L304.5 349.1c-5.2 11.5-16.6 18.9-29.2 18.9l-102.6 0c-12.6 0-24-7.4-29.2-18.9L87.2 224C74.3 223.6 64 213 64 200c0-13.3 10.7-24 24-24s24 10.7 24 24c0 5-1.5 9.7-4.2 13.6L160 224l53.1-46.4c-8.9-4.1-15-13.1-15-23.6c0-14.4 11.6-26 26-26s26 11.6 26 26c0 10.5-6.2 19.5-15.1 23.6z"],searchengin:[460,512,[],"f3eb","M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z"],tiktok:[448,512,[],"e07b","M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z"],"square-facebook":[448,512,["facebook-square"],"f082","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64h98.2V334.2H109.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H255V480H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"],renren:[512,512,[],"f18b","M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z"],linux:[448,512,[],"f17c","M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z"],glide:[448,512,[],"f2a5","M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z"],linkedin:[448,512,[],"f08c","M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"],hubspot:[512,512,[],"f3b2","M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z"],deploydog:[512,512,[],"f38e","M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z"],twitch:[512,512,[],"f1e8","M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z"],ravelry:[512,512,[],"f2d9","M498.252,234.223c-1.208-10.34-1.7-20.826-3.746-31a310.306,310.306,0,0,0-9.622-36.6,184.068,184.068,0,0,0-30.874-57.5,251.154,251.154,0,0,0-18.818-21.689,237.362,237.362,0,0,0-47.113-36.116A240.8,240.8,0,0,0,331.356,26.65c-11.018-3.1-22.272-5.431-33.515-7.615-6.78-1.314-13.749-1.667-20.627-2.482-.316-.036-.6-.358-.9-.553q-16.143.009-32.288.006c-2.41.389-4.808.925-7.236,1.15a179.331,179.331,0,0,0-34.256,7.1,221.5,221.5,0,0,0-39.768,16.355,281.385,281.385,0,0,0-38.08,24.158c-6.167,4.61-12.268,9.36-17.974,14.518C96.539,88.494,86.34,97.72,76.785,107.555a243.878,243.878,0,0,0-33.648,43.95,206.488,206.488,0,0,0-20.494,44.6,198.2,198.2,0,0,0-7.691,34.759A201.13,201.13,0,0,0,13.4,266.385a299.716,299.716,0,0,0,4.425,40.24,226.865,226.865,0,0,0,16.73,53.3,210.543,210.543,0,0,0,24,39.528,213.589,213.589,0,0,0,26.358,28.416A251.313,251.313,0,0,0,126.7,458.455a287.831,287.831,0,0,0,55.9,25.277,269.5,269.5,0,0,0,40.641,9.835c6.071,1.01,12.275,1.253,18.412,1.873a4.149,4.149,0,0,1,1.19.56h32.289c2.507-.389,5-.937,7.527-1.143,16.336-1.332,32.107-5.335,47.489-10.717A219.992,219.992,0,0,0,379.1,460.322c9.749-6.447,19.395-13.077,28.737-20.1,5.785-4.348,10.988-9.5,16.3-14.457,3.964-3.7,7.764-7.578,11.51-11.5a232.162,232.162,0,0,0,31.427-41.639c9.542-16.045,17.355-32.905,22.3-50.926,2.859-10.413,4.947-21.045,7.017-31.652,1.032-5.279,1.251-10.723,1.87-16.087.036-.317.358-.6.552-.9V236.005A9.757,9.757,0,0,1,498.252,234.223Zm-161.117-1.15s-16.572-2.98-28.47-2.98c-27.2,0-33.57,14.9-33.57,37.04V360.8H201.582V170.062H275.1v31.931c8.924-26.822,26.771-36.189,62.04-36.189Z"],mixer:[512,512,[],"e056","M114.57,76.07a45.71,45.71,0,0,0-67.51-6.41c-17.58,16.18-19,43.52-4.75,62.77l91.78,123L41.76,379.58c-14.23,19.25-13.11,46.59,4.74,62.77A45.71,45.71,0,0,0,114,435.94L242.89,262.7a12.14,12.14,0,0,0,0-14.23ZM470.24,379.58,377.91,255.45l91.78-123c14.22-19.25,12.83-46.59-4.75-62.77a45.71,45.71,0,0,0-67.51,6.41l-128,172.12a12.14,12.14,0,0,0,0,14.23L398,435.94a45.71,45.71,0,0,0,67.51,6.41C483.35,426.17,484.47,398.83,470.24,379.58Z"],"square-lastfm":[448,512,["lastfm-square"],"f203","M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM210.7 280.8c-1.8-5.5-3.4-10.8-5-15.9c-12.9-41.9-21-68.4-58-68.4c-22.4 0-45.1 16.1-45.1 61.2c0 35.2 18 57.2 43.3 57.2c28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8c0-57.9 28.6-92 82.5-92c67.9 0 79.3 35.3 96.4 88.4c1.4 4.4 2.9 8.9 4.4 13.5c8.8 26.8 24.2 46.2 61.2 46.2c24.9 0 38.1-5.5 38.1-19.1c0-17.5-16.9-21.2-40-26.4c-3.2-.7-6.5-1.4-9.9-2.2c-30.4-7.3-42.5-23.1-42.5-48c0-40 32.3-52.4 65.2-52.4c37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4c-16.1 0-26 7.3-26 19.8c0 11 4.8 17.6 20.9 21.3c2.2 .5 4.5 1 6.7 1.4c31.1 6.5 65.1 13.7 65.1 56.1c.1 36.7-30.7 50.6-76.1 50.6c-63.4 0-85.4-28.6-97.1-64.1z"],vimeo:[448,512,[],"f40a","M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z"],mendeley:[640,512,[],"f7b3","M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4.7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1.1-.2.2-.3.4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z"],uniregistry:[384,512,[],"f404","M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z"],figma:[384,512,[],"f799","M14 95.7924C14 42.8877 56.8878 0 109.793 0H274.161C327.066 0 369.954 42.8877 369.954 95.7924C369.954 129.292 352.758 158.776 326.711 175.897C352.758 193.019 369.954 222.502 369.954 256.002C369.954 308.907 327.066 351.795 274.161 351.795H272.081C247.279 351.795 224.678 342.369 207.666 326.904V415.167C207.666 468.777 163.657 512 110.309 512C57.5361 512 14 469.243 14 416.207C14 382.709 31.1945 353.227 57.2392 336.105C31.1945 318.983 14 289.5 14 256.002C14 222.502 31.196 193.019 57.2425 175.897C31.196 158.776 14 129.292 14 95.7924ZM176.288 191.587H109.793C74.2172 191.587 45.3778 220.427 45.3778 256.002C45.3778 291.44 73.9948 320.194 109.381 320.416C109.518 320.415 109.655 320.415 109.793 320.415H176.288V191.587ZM207.666 256.002C207.666 291.577 236.505 320.417 272.081 320.417H274.161C309.737 320.417 338.576 291.577 338.576 256.002C338.576 220.427 309.737 191.587 274.161 191.587H272.081C236.505 191.587 207.666 220.427 207.666 256.002ZM109.793 351.795C109.655 351.795 109.518 351.794 109.381 351.794C73.9948 352.015 45.3778 380.769 45.3778 416.207C45.3778 451.652 74.6025 480.622 110.309 480.622C146.591 480.622 176.288 451.186 176.288 415.167V351.795H109.793ZM109.793 31.3778C74.2172 31.3778 45.3778 60.2173 45.3778 95.7924C45.3778 131.368 74.2172 160.207 109.793 160.207H176.288V31.3778H109.793ZM207.666 160.207H274.161C309.737 160.207 338.576 131.368 338.576 95.7924C338.576 60.2173 309.737 31.3778 274.161 31.3778H207.666V160.207Z"],"creative-commons-remix":[496,512,[],"f4ee","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z"],"cc-amazon-pay":[576,512,[],"f42d","M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"],dropbox:[528,512,[],"f16b","M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z"],instagram:[448,512,[],"f16d","M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"],cmplid:[640,512,[],"e360","M226.119,388.165a3.816,3.816,0,0,0-2.294-3.5,3.946,3.946,0,0,0-1.629-.385L72.6,384.3a19.243,19.243,0,0,1-17.924-26.025L81.585,255.692a35.72,35.72,0,0,1,32.373-26H262.525a7.07,7.07,0,0,0,6.392-5.194l10.769-41.131a3.849,3.849,0,0,0-2.237-4.937,3.755,3.755,0,0,0-1.377-.261c-.063,0-.126,0-.189.005H127.38a106.8,106.8,0,0,0-96.99,77.1L3.483,358.824A57.469,57.469,0,0,0,57.314,436q1.43,0,2.86-.072H208.742a7.131,7.131,0,0,0,6.391-5.193L225.839,389.6A3.82,3.82,0,0,0,226.119,388.165ZM306.658,81.2a3.861,3.861,0,0,0,.251-1.367A3.813,3.813,0,0,0,303.079,76c-.064,0-.128,0-.192,0h-41A7.034,7.034,0,0,0,255.5,81.2l-21.347,80.915h51.131ZM180.364,368.249H231.5L263.452,245.69H212.321ZM511.853,79.723a3.809,3.809,0,0,0-3.8-3.661c-.058,0-.137,0-.23.007h-41a7.1,7.1,0,0,0-6.584,5.129L368.91,430.634a3.54,3.54,0,0,0-.262,1.335,3.873,3.873,0,0,0,3.864,3.863c.056,0,.112,0,.169,0h41a7.068,7.068,0,0,0,6.392-5.193L511.533,81.2A3.624,3.624,0,0,0,511.853,79.723ZM324.649,384.47h-41a7.2,7.2,0,0,0-6.392,5.194L266.52,430.8a3.662,3.662,0,0,0-.268,1.374A3.783,3.783,0,0,0,270.023,436c.06,0,.166,0,.3-.012h40.905a7.036,7.036,0,0,0,6.391-5.193l10.769-41.131a3.75,3.75,0,0,0-3.445-5.208c-.108,0-.217,0-.326.014Zm311.324-308.4h-41a7.066,7.066,0,0,0-6.392,5.129l-91.46,349.436a4.073,4.073,0,0,0-.229,1.347,3.872,3.872,0,0,0,3.863,3.851c.056,0,.112,0,.169,0h40.968a7.1,7.1,0,0,0,6.392-5.193L639.68,81.2a3.624,3.624,0,0,0,.32-1.475,3.841,3.841,0,0,0-3.821-3.564c-.068,0-.137,0-.206.006ZM371.562,225.236l10.8-41.1a4.369,4.369,0,0,0,.227-1.388,3.869,3.869,0,0,0-3.861-3.842c-.057,0-.113,0-.169,0h-41.1a7.292,7.292,0,0,0-6.391,5.226l-10.834,41.1a4.417,4.417,0,0,0-.26,1.493c0,.069,0,.138,0,.206a3.776,3.776,0,0,0,3.757,3.507c.076,0,.18,0,.3-.012h41.129A7.034,7.034,0,0,0,371.562,225.236Z"],upwork:[641,512,[],"e641","M494.7 295.6c-50.3 0-83.5-38.9-92.8-53.9c11.9-95.3 46.8-125.4 92.8-125.4c45.5 0 80.9 36.4 80.9 89.7s-35.4 89.7-80.9 89.7zm0-237.8c-81.9 0-127.8 53.4-141 108.4c-14.9-28-25.9-65.5-34.5-100.3H206v141c0 51.1-23.3 89-68.8 89s-71.6-37.8-71.6-89l.5-141H.8v141c0 41.1 13.3 78.4 37.6 105.1c25 27.5 59.2 41.8 98.8 41.8c78.8 0 133.8-60.4 133.8-146.9V112.1c8.2 31.2 27.8 91.1 65.3 143.6l-35 199.4h66.4l23.1-141.3c7.6 6.3 15.7 12 24.2 17c22.2 14 47.7 21.9 73.9 22.8c0 0 4 .2 6.1 .2c81.2 0 145.9-62.9 145.9-147.8s-64.8-148.1-146-148.1z"],facebook:[512,512,[62e3],"f09a","M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256C0 376 82.7 476.8 194.2 504.5V334.2H141.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H287V510.1C413.8 494.8 512 386.9 512 256h0z"],gripfire:[384,512,[],"f3ac","M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4.4 3.3.6 6.7.6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z"],"jedi-order":[448,512,[],"f50e","M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z"],uikit:[448,512,[],"f403","M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z"],"fort-awesome-alt":[512,512,[],"f3a3","M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1.7.1 1.3.1 2 .1 1.3.1 2.7.2 4 0 .8.1 1.5.1 2.3 0 1.3.1 2.5.2 3.7.1.8.1 1.6.2 2.4.1 1.1.2 2.3.3 3.5 0 .8.1 1.6.2 2.4.1 1.2.3 2.4.4 3.6.1.8.2 1.5.3 2.3.1 1.3.3 2.6.5 3.9.1.6.2 1.3.3 1.9l.9 5.7c.1.6.2 1.1.3 1.7.3 1.3.5 2.7.8 4 .2.8.3 1.6.5 2.4.2 1 .5 2.1.7 3.2.2.9.4 1.7.6 2.6.2 1 .4 2 .7 3 .2.9.5 1.8.7 2.7.3 1 .5 1.9.8 2.9.3.9.5 1.8.8 2.7.2.9.5 1.9.8 2.8s.5 1.8.8 2.7c.3 1 .6 1.9.9 2.8.6 1.6 1.1 3.3 1.7 4.9.4 1 .7 1.9 1 2.8.3 1 .7 2 1.1 3 .3.8.6 1.5.9 2.3l1.2 3c.3.7.6 1.5.9 2.2.4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3.7.6 1.3.9 2 .5 1 1 2.1 1.5 3.1.2.6.5 1.1.8 1.7.6 1.1 1.1 2.2 1.7 3.3.1.2.2.3.3.5 2.2 4.1 4.4 8.2 6.8 12.2.2.4.5.8.7 1.2.7 1.1 1.3 2.2 2 3.3.3.5.6.9.9 1.4.6 1.1 1.3 2.1 2 3.2.3.5.6.9.9 1.4.7 1.1 1.4 2.1 2.1 3.2.2.4.5.8.8 1.2.7 1.1 1.5 2.2 2.3 3.3.2.2.3.5.5.7 37.5 51.7 94.4 88.5 160 99.4.9.1 1.7.3 2.6.4 1 .2 2.1.4 3.1.5s1.9.3 2.8.4c1 .2 2 .3 3 .4.9.1 1.9.2 2.9.3s1.9.2 2.9.3 2.1.2 3.1.3c.9.1 1.8.1 2.7.2 1.1.1 2.3.1 3.4.2.8 0 1.7.1 2.5.1 1.3 0 2.6.1 3.9.1.7.1 1.4.1 2.1.1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1.8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2.9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5.9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4.2-.2.3-.5.5-.7.8-1.1 1.5-2.2 2.3-3.3.2-.4.5-.8.8-1.2.7-1.1 1.4-2.1 2.1-3.2.3-.5.6-.9.9-1.4.6-1.1 1.3-2.1 2-3.2.3-.5.6-.9.9-1.4.7-1.1 1.3-2.2 2-3.3.2-.4.5-.8.7-1.2 2.4-4 4.6-8.1 6.8-12.2.1-.2.2-.3.3-.5.6-1.1 1.1-2.2 1.7-3.3.2-.6.5-1.1.8-1.7.5-1 1-2.1 1.5-3.1.3-.7.6-1.3.9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7.6-1.5.9-2.2l1.2-3c.3-.8.6-1.5.9-2.3.4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9.3-1 .6-1.9.9-2.8s.5-1.8.8-2.7c.2-.9.5-1.9.8-2.8s.6-1.8.8-2.7c.3-1 .5-1.9.8-2.9.2-.9.5-1.8.7-2.7.2-1 .5-2 .7-3 .2-.9.4-1.7.6-2.6.2-1 .5-2.1.7-3.2.2-.8.3-1.6.5-2.4.3-1.3.6-2.7.8-4 .1-.6.2-1.1.3-1.7l.9-5.7c.1-.6.2-1.3.3-1.9.1-1.3.3-2.6.5-3.9.1-.8.2-1.5.3-2.3.1-1.2.3-2.4.4-3.6 0-.8.1-1.6.2-2.4.1-1.1.2-2.3.3-3.5.1-.8.1-1.6.2-2.4.1 1.7.1.5.2-.7 0-.8.1-1.5.1-2.3.1-1.3.2-2.7.2-4 .1-.7.1-1.3.1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z"],phabricator:[496,512,[],"f3db","M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z"],ussunnah:[482,512,[],"f407","M481.9 268.1A240.9 240.9 0 1 1 .1 268a240.9 240.9 0 1 1 481.9 0zM24.5 268a216.5 216.5 0 1 0 432.9 0A216.5 216.5 0 1 0 24.5 268zm385.9 63.3c-12.7 0-21.6-1.9-26.7-5.9c-5.5-4.3-8.2-12.3-8.2-23.8V205.1c0-6.5-5.2-20.2-15.7-41.2c7 0 17-9.1 30-27.2V284.5c0 11 2.4 19.4 7 25.3c3.7 4.7 10.1 8.9 19 12.6c1.2 .4 2.6 .9 4.1 1.4c2.9 .9 6.3 2.1 10.3 3.5c-1.8 2.7-8.3 4-19.9 4zm-219 0c-1.3 2.4-3.6 5.5-6.8 9.4l-18.5 22.5c-1-6.1-4-13-9.3-20.6s-9.7-11.4-13.4-11.4h-8.3H53.6c3.3-5.3 4.9-8.8 4.9-10.8c0-2-.8-5.3-2.4-9.7c-1.5-4.4-2.4-8.5-2.4-12.4c0-7.4 2.1-13.9 6.3-19.3L80 253.4l-7.1-17.7L89 215.9l6.7 16.8 8-10.3c-1.8 6.4-2.6 12.3-2.6 17.7c0 4.2 2.8 13.3 8.3 27.3l16.2 40.7H135h8 .3c2.8 .4 7.7 5 14.6 13.9c1.8 2.4 4.3 5.8 7.7 10.2c1.4 1.9 2.9 3.9 4.6 6.1c1.3-2.3 2-4.6 2-7.1c0-2-1.3-6.6-4-13.4L163 304.1c-4-10.6-6.1-17.7-6.1-21.3c0-6.3 1.9-12.3 5.8-17.9c.5-.6 1-1.3 1.5-1.9c4.4-5.6 8.8-11.1 13.3-16.5c-1.1 4.6-1.7 8.7-1.7 12c0 3.7 1.7 9.9 5.1 18.8l7.9 20.4c1.9 4.7 3 8.2 3.7 10.3h17.6 8.3l-.9-2.6c-1.4-3.9-4-7-7.7-9.3l15.6-20.1 12.3 32h13.4L245 292.2c-1.5-3.9-4-7-7.7-9.3L253 262.8 270.3 308h13.4l-11.4-29.4c-1.5-3.9-4-7-7.7-9.3l15.6-20L302.6 308h10.3 8.3 7.6c1.5 0 3-1.1 4.5-3.1s2.2-4.1 2.2-6.3V205.1c0-6.5-4.5-20.3-13.7-41.2c5.4 0 14.1-9.1 26.2-27.2V300.2c0 7.2 .6 12 1.7 14.6c1.6 3.4 5.3 6.2 11.1 8.2c-3.9 5.6-8.7 8.5-14.5 8.5H321.1h-8.3H210.5h-19zM93.4 287.3c-2.7-6.7-4-11.7-4-15c-.6 1.2-2.4 3.7-5.4 7.6c-1.4 1.9-2.2 3.7-2.2 5.3c0 2.6 .8 5.7 2.2 9.3l5.6 13.9h0c5 0 9 0 11.9-.1l-8.2-20.9zm13.5-72.4c-3-5.2-7-9.3-11.9-11.9c-3.5-1.9-5.3-4.3-5.3-7.4c0-2.4 4.6-8.6 14-18.3c.2 3.8 1.9 7.6 4.9 11.2c3.1 3.6 4.6 7 4.6 10.1c0 2.6-2.1 8-6.2 16.3zm-27.6 0c-3-5.2-7-9.3-11.9-11.9c-3.5-1.9-5.3-4.3-5.3-7.4c0-2.4 4.6-8.6 14-18.3c.2 3.8 1.9 7.6 4.9 11.2c3.1 3.6 4.6 7 4.6 10.1c0 2.6-2.1 8-6.2 16.3zm87 27.5c-3-5.2-7-9.3-11.9-11.9c-3.5-1.9-5.3-4.3-5.3-7.4c0-2.4 4.6-8.6 14-18.3c.2 3.8 1.9 7.6 4.9 11.2c3.1 3.6 4.6 7 4.6 10.1c0 2.6-2.1 8-6.2 16.3z"],earlybirds:[480,512,[],"f39a","M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z"],"trade-federation":[496,512,[],"f513","M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5.1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z"],autoprefixer:[640,512,[],"f41c","M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z"],whatsapp:[448,512,[],"f232","M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"],"square-upwork":[448,512,[],"e67c","M56 32l336 0c30.9 0 56 25.1 56 56l0 336c0 30.9-25.1 56-56 56L56 480c-30.9 0-56-25.1-56-56L0 88C0 57.1 25.1 32 56 32zM270.9 274.2c6.6-52.9 25.9-69.5 51.4-69.5c25.3 0 44.9 20.2 44.9 49.7s-19.7 49.7-44.9 49.7c-27.9 0-46.3-21.5-51.4-29.9zm-26.7-41.8c-8.2-15.5-14.3-36.3-19.2-55.6l-29.7 0-33.2 0 0 78.1c0 28.4-12.9 49.4-38.2 49.4s-39.8-20.9-39.8-49.3l.3-78.1-36.2 0 0 78.1c0 22.8 7.4 43.5 20.9 58.2c13.9 15.2 32.8 23.2 54.8 23.2c43.7 0 74.2-33.5 74.2-81.5l0-52.5c4.6 17.3 15.4 50.5 36.2 79.7L215 392.6l36.8 0 12.8-78.4c4.2 3.5 8.7 6.6 13.4 9.4c12.3 7.8 26.4 12.2 40.9 12.6l.1 0c.5 0 1.1 0 1.6 0c.6 0 1.1 0 1.7 0c45.1 0 80.9-34.9 80.9-81.9s-35.9-82.2-80.9-82.2c-45.4 0-70.9 29.7-78.1 60.1z"],slideshare:[512,512,[],"f1e7","M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z"],"google-play":[512,512,[],"f3ab","M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z"],viadeo:[448,512,[],"f2a9","M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z"],line:[512,512,[],"f3c0","M311 196.8v81.3c0 2.1-1.6 3.7-3.7 3.7h-13c-1.3 0-2.4-.7-3-1.5l-37.3-50.3v48.2c0 2.1-1.6 3.7-3.7 3.7h-13c-2.1 0-3.7-1.6-3.7-3.7V196.9c0-2.1 1.6-3.7 3.7-3.7h12.9c1.1 0 2.4 .6 3 1.6l37.3 50.3V196.9c0-2.1 1.6-3.7 3.7-3.7h13c2.1-.1 3.8 1.6 3.8 3.5zm-93.7-3.7h-13c-2.1 0-3.7 1.6-3.7 3.7v81.3c0 2.1 1.6 3.7 3.7 3.7h13c2.1 0 3.7-1.6 3.7-3.7V196.8c0-1.9-1.6-3.7-3.7-3.7zm-31.4 68.1H150.3V196.8c0-2.1-1.6-3.7-3.7-3.7h-13c-2.1 0-3.7 1.6-3.7 3.7v81.3c0 1 .3 1.8 1 2.5c.7 .6 1.5 1 2.5 1h52.2c2.1 0 3.7-1.6 3.7-3.7v-13c0-1.9-1.6-3.7-3.5-3.7zm193.7-68.1H327.3c-1.9 0-3.7 1.6-3.7 3.7v81.3c0 1.9 1.6 3.7 3.7 3.7h52.2c2.1 0 3.7-1.6 3.7-3.7V265c0-2.1-1.6-3.7-3.7-3.7H344V247.7h35.5c2.1 0 3.7-1.6 3.7-3.7V230.9c0-2.1-1.6-3.7-3.7-3.7H344V213.5h35.5c2.1 0 3.7-1.6 3.7-3.7v-13c-.1-1.9-1.7-3.7-3.7-3.7zM512 93.4V419.4c-.1 51.2-42.1 92.7-93.4 92.6H92.6C41.4 511.9-.1 469.8 0 418.6V92.6C.1 41.4 42.2-.1 93.4 0H419.4c51.2 .1 92.7 42.1 92.6 93.4zM441.6 233.5c0-83.4-83.7-151.3-186.4-151.3s-186.4 67.9-186.4 151.3c0 74.7 66.3 137.4 155.9 149.3c21.8 4.7 19.3 12.7 14.4 42.1c-.8 4.7-3.8 18.4 16.1 10.1s107.3-63.2 146.5-108.2c27-29.7 39.9-59.8 39.9-93.1z"],"google-drive":[512,512,[],"f3aa","M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z"],servicestack:[496,512,[],"f3ec","M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z"],simplybuilt:[512,512,[],"f215","M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z"],bitbucket:[512,512,[61810],"f171","M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z"],imdb:[448,512,[],"f2d8","M89.5 323.6H53.93V186.2H89.5V323.6zM156.1 250.5L165.2 186.2H211.5V323.6H180.5V230.9L167.1 323.6H145.8L132.8 232.9L132.7 323.6H101.5V186.2H147.6C148.1 194.5 150.4 204.3 151.9 215.6L156.1 250.5zM223.7 323.6V186.2H250.3C267.3 186.2 277.3 187.1 283.3 188.6C289.4 190.3 294 192.8 297.2 196.5C300.3 199.8 302.3 203.1 303 208.5C303.9 212.9 304.4 221.6 304.4 234.7V282.9C304.4 295.2 303.7 303.4 302.5 307.6C301.4 311.7 299.4 315 296.5 317.3C293.7 319.7 290.1 321.4 285.8 322.3C281.6 323.1 275.2 323.6 266.7 323.6H223.7zM259.2 209.7V299.1C264.3 299.1 267.5 298.1 268.6 296.8C269.7 294.8 270.4 289.2 270.4 280.1V226.8C270.4 220.6 270.3 216.6 269.7 214.8C269.4 213 268.5 211.8 267.1 210.1C265.7 210.1 263 209.7 259.2 209.7V209.7zM316.5 323.6V186.2H350.6V230.1C353.5 227.7 356.7 225.2 360.1 223.5C363.7 222 368.9 221.1 372.9 221.1C377.7 221.1 381.8 221.9 385.2 223.3C388.6 224.8 391.2 226.8 393.2 229.5C394.9 232.1 395.9 234.8 396.3 237.3C396.7 239.9 396.1 245.3 396.1 253.5V292.1C396.1 300.3 396.3 306.4 395.3 310.5C394.2 314.5 391.5 318.1 387.5 320.1C383.4 324 378.6 325.4 372.9 325.4C368.9 325.4 363.7 324.5 360.2 322.9C356.7 321.1 353.5 318.4 350.6 314.9L348.5 323.6L316.5 323.6zM361.6 302.9C362.3 301.1 362.6 296.9 362.6 290.4V255C362.6 249.4 362.3 245.5 361.5 243.8C360.8 241.9 357.8 241.1 355.7 241.1C353.7 241.1 352.3 241.9 351.6 243.4C351 244.9 350.6 248.8 350.6 255V291.4C350.6 297.5 351 301.4 351.8 303C352.4 304.7 353.9 305.5 355.9 305.5C358.1 305.5 360.1 304.7 361.6 302.9L361.6 302.9zM418.4 32.04C434.1 33.27 447.1 47.28 447.1 63.92V448.1C447.1 464.5 435.2 478.5 418.9 479.1C418.6 479.1 418.4 480 418.1 480H29.88C29.6 480 29.32 479.1 29.04 479.9C13.31 478.5 1.093 466.1 0 449.7L.0186 61.78C1.081 45.88 13.82 33.09 30.26 31.1H417.7C417.9 31.1 418.2 32.01 418.4 32.04L418.4 32.04zM30.27 41.26C19 42.01 10.02 51.01 9.257 62.4V449.7C9.63 455.1 11.91 460.2 15.7 464C19.48 467.9 24.51 470.3 29.89 470.7H418.1C429.6 469.7 438.7 459.1 438.7 448.1V63.91C438.7 58.17 436.6 52.65 432.7 48.45C428.8 44.24 423.4 41.67 417.7 41.26L30.27 41.26z"],deezer:[576,512,[],"e077","M451.46,244.71H576V172H451.46Zm0-173.89v72.67H576V70.82Zm0,275.06H576V273.2H451.46ZM0,447.09H124.54V374.42H0Zm150.47,0H275V374.42H150.47Zm150.52,0H425.53V374.42H301Zm150.47,0H576V374.42H451.46ZM301,345.88H425.53V273.2H301Zm-150.52,0H275V273.2H150.47Zm0-101.17H275V172H150.47Z"],"raspberry-pi":[407,512,[],"f7bb","M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2.7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6.8C271.6.6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9.1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6.1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7.8 14.1.6 23.9.8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8.4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2.1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7.9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6.9 2.7 3.6 4.4 6.7 5.8-15.4.9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8.7 8.3.1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6.4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3.4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6.2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9.5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6.2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z"],jira:[496,512,[],"f7b1","M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z"],docker:[640,512,[],"f395","M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"],screenpal:[512,512,[],"e570","M233.5 22.49C233.5 10.07 243.6 0 256 0C268.4 0 278.5 10.07 278.5 22.49C278.5 34.91 268.4 44.98 256 44.98C243.6 44.98 233.5 34.91 233.5 22.49zM313.4 259C313.4 290.7 287.7 316.4 256 316.4C224.3 316.4 198.6 290.7 198.6 259C198.6 227.3 224.3 201.6 256 201.6C287.7 201.6 313.4 227.3 313.4 259zM337.2 350C359.5 330.1 373.7 302.7 377.1 273H496.6C493.1 334.4 466.2 392.2 421.4 434.4C376.7 476.6 317.5 500.2 256 500.2C194.5 500.2 135.3 476.6 90.56 434.4C45.83 392.2 18.94 334.4 15.39 273H135.1C138.5 302.7 152.7 330.1 175 350C197.3 369.9 226.2 380.9 256.1 380.9C285.1 380.9 314.8 369.9 337.2 350zM73.14 140.3C73.54 152.7 63.81 163.1 51.39 163.5C38.97 163.9 28.59 154.2 28.18 141.8C27.78 129.3 37.52 118.9 49.94 118.5C62.35 118.1 72.74 127.9 73.14 140.3zM438.9 141C438.9 128.6 448.9 118.5 461.4 118.5C473.8 118.5 483.8 128.6 483.8 141C483.8 153.5 473.8 163.5 461.4 163.5C448.9 163.5 438.9 153.5 438.9 141zM317.9 95.27C300.6 109.1 278.7 118.1 256 118.1C233.3 118.1 211.4 109.1 194.1 95.27C176.8 80.55 165.3 60.18 161.7 37.78C176.8 31.37 192.5 26.52 208.6 23.31C208.6 35.88 213.6 47.93 222.5 56.82C231.4 65.7 243.4 70.7 256 70.7C268.6 70.7 280.6 65.7 289.5 56.82C298.4 47.93 303.4 35.88 303.4 23.31C319.5 26.52 335.2 31.37 350.3 37.78C346.7 60.18 335.2 80.55 317.9 95.27H317.9zM82.78 231C61.42 238.6 38.06 238.4 16.86 230.4C18.82 214.1 22.46 198.1 27.71 182.5C33.1 185.6 39.05 187.6 45.22 188.5C51.39 189.3 57.67 188.9 63.68 187.3C69.69 185.6 75.33 182.9 80.27 179.1C85.21 175.3 89.36 170.6 92.47 165.2C95.58 159.8 97.61 153.8 98.42 147.7C99.23 141.5 98.83 135.2 97.22 129.2C95.61 123.2 92.83 117.6 89.04 112.6C85.25 107.7 80.53 103.5 75.14 100.4C85.96 88.11 98.01 76.94 111.1 67.07C128.7 81.42 140.6 101.6 144.7 123.9C148.8 146.2 144.8 169.3 133.5 188.9C122.1 208.5 104.1 223.4 82.78 231V231zM429.2 231.1C407.9 223.5 389.9 208.5 378.5 188.9C367.2 169.3 363.3 146.2 367.4 123.9C371.5 101.7 383.4 81.54 400.9 67.19C414 77.04 426.1 88.21 436.9 100.5C426.2 106.9 418.5 117.2 415.4 129.3C412.2 141.3 413.1 154.1 420.2 164.9C426.4 175.7 436.6 183.6 448.6 186.9C460.6 190.2 473.5 188.6 484.3 182.6C489.6 198.1 493.2 214.2 495.2 230.4C473.1 238.5 450.6 238.7 429.2 231.1L429.2 231.1z"],bluetooth:[448,512,[],"f293","M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z"],gitter:[384,512,[],"f426","M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z"],"d-and-d":[576,512,[],"f38d","M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z"],microblog:[448,512,[],"e01a","M399.36,362.23c29.49-34.69,47.1-78.34,47.1-125.79C446.46,123.49,346.86,32,224,32S1.54,123.49,1.54,236.44,101.14,440.87,224,440.87a239.28,239.28,0,0,0,79.44-13.44,7.18,7.18,0,0,1,8.12,2.56c18.58,25.09,47.61,42.74,79.89,49.92a4.42,4.42,0,0,0,5.22-3.43,4.37,4.37,0,0,0-.85-3.62,87,87,0,0,1,3.69-110.69ZM329.52,212.4l-57.3,43.49L293,324.75a6.5,6.5,0,0,1-9.94,7.22L224,290.92,164.94,332a6.51,6.51,0,0,1-9.95-7.22l20.79-68.86-57.3-43.49a6.5,6.5,0,0,1,3.8-11.68l71.88-1.51,23.66-67.92a6.5,6.5,0,0,1,12.28,0l23.66,67.92,71.88,1.51a6.5,6.5,0,0,1,3.88,11.68Z"],"cc-diners-club":[576,512,[],"f24c","M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"],"gg-circle":[512,512,[],"f261","M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z"],"pied-piper-hat":[640,512,[],"f4e5","M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z"],"kickstarter-k":[448,512,[],"f3bc","M356.6 256.2l40.8-40.5c42.2-41.9 42.2-110.3 0-152.1s-111-41.9-153.2 0L229.3 78.4C209.6 50.3 177.1 32 140.2 32C80.5 32 32 80.2 32 139.5V372.5C32 431.9 80.5 480 140.2 480c37.1 0 69.3-18.3 89-46.4l14.9 14.7c42.2 41.9 111 41.9 153.2 0s42.2-110.3 0-152.1l-40.8-40z"],yandex:[256,512,[],"f413","M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z"],readme:[576,512,[],"f4d5","M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z"],html5:[384,512,[],"f13b","M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"],sellsy:[640,512,[],"f213","M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z"],"square-web-awesome":[448,512,[],"e683","M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM235 177.6L288 224l52.2-10.4c-2.6-3.9-4.2-8.5-4.2-13.6c0-13.3 10.7-24 24-24s24 10.7 24 24c0 13-10.3 23.6-23.2 24L304.5 349.1c-5.2 11.5-16.6 18.9-29.2 18.9l-102.6 0c-12.6 0-24-7.4-29.2-18.9L87.2 224C74.3 223.6 64 213 64 200c0-13.3 10.7-24 24-24s24 10.7 24 24c0 5-1.5 9.7-4.2 13.6L160 224l53.1-46.4c-8.9-4.1-15-13.1-15-23.6c0-14.4 11.6-26 26-26s26 11.6 26 26c0 10.5-6.2 19.5-15.1 23.6z"],sass:[640,512,[],"f41e","M301.84 378.92c-.3.6-.6 1.08 0 0zm249.13-87a131.16 131.16 0 0 0-58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.83 122.83 0 0 0-5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4.8-.7 1.3-.9 1.7.3-.5.5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.87-65.2-99.07-116.5 1-18.7 7.5-67.8 127.07-127.4 98-48.8 176.35-35.4 189.84-5.6 19.4 42.5-41.89 121.6-143.66 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.17-11.8 61.78-23.8 109.87-90.1 95.77-145.6C386.52 18.32 293-.18 204.57 31.22c-52.69 18.7-109.67 48.1-150.66 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.06 125.7-1.6.9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.57-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.24 201.24 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31.31 0 0 0 .1.2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.72 450.1 270 450.1 270a201.24 201.24 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.18 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.42 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.29 30.4.3 57.2-19.1 78.3zm134.36-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5.1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z"],wirsindhandwerk:[512,512,["wsh"],"e2d0","M50.77161,479.81213h83.36071V367.84741l-83.36071,47.009Zm329.04675,0h82.35022V414.85645l-82.35022-47.009Zm.00568-448V251.568L256.1759,179.1861,134.50378,251.568V31.81213H50.77161V392.60565L256.1759,270.31909,462.16858,392.60565V31.81213Z"],buromobelexperte:[448,512,[],"f37f","M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z"],salesforce:[640,512,[],"f83b","M248.89 245.64h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.66-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.22 23.76a8.63 8.63 0 0 0-3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93.95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.39-165.36 136.43-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.89 92.18-213.81-5.17C8.91 428.78-50.19 266.52 53.36 205.61 18.61 126.18 76 32 167.67 32a124.24 124.24 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.69 640 232zm-519.55 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17.71 1.64-.47.24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0-.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1-19-6.35c-.47-.23-1.42-.71-1.65.71l-2.4 7.47c-.47.94.23 1.18.23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0-.24 1.41l2.59 7.06a1 1 0 0 0 1.18.7c.65 0 6.8-4 16.93-4 4 0 7.06.71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0-7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61.32-21.64-22.78-21.64zM199 200.24a1.11 1.11 0 0 0-1.18-1.18H188a1.11 1.11 0 0 0-1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16.23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12.15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.35-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18.71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0-.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1-19-6.35 1 1 0 0 0-1.65.71l-2.35 7.52c-.47.94.23 1.18.23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.09 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14.94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17.47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0-1.17 1.18l-1.42 7.76c0 .7.24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41.71-.24.71-2.59 6.82-2.83 7.53s0 1.41.47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52.09.3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0-1.18-1.17h-9.4a1.11 1.11 0 0 0-1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91.05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0-.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94.47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53.23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59.74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0-1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.36-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01.94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z"],"octopus-deploy":[512,512,[],"e082","M455.6,349.2c-45.891-39.09-36.67-77.877-16.095-128.11C475.16,134.04,415.967,34.14,329.93,8.3,237.04-19.6,134.252,24.341,99.677,117.147a180.862,180.862,0,0,0-10.988,73.544c1.733,29.543,14.717,52.97,24.09,80.3,17.2,50.161-28.1,92.743-66.662,117.582-46.806,30.2-36.319,39.857-8.428,41.858,23.378,1.68,44.478-4.548,65.265-15.045,9.2-4.647,40.687-18.931,45.13-28.588C135.9,413.388,111.122,459.5,126.621,488.9c19.1,36.229,67.112-31.77,76.709-45.812,8.591-12.572,42.963-81.279,63.627-46.926,18.865,31.361,8.6,76.391,35.738,104.622,32.854,34.2,51.155-18.312,51.412-44.221.163-16.411-6.1-95.852,29.9-59.944C405.428,418,436.912,467.8,472.568,463.642c38.736-4.516-22.123-67.967-28.262-78.695,5.393,4.279,53.665,34.128,53.818,9.52C498.234,375.678,468.039,359.8,455.6,349.2Z"],medapps:[320,512,[],"f3c6","M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z"],ns8:[640,512,[],"f3d5","M104.324,269.172h26.067V242.994H104.324Zm52.466-26.178-.055-26.178v-.941a39.325,39.325,0,0,0-78.644.941v.166h26.4v-.166a12.98,12.98,0,0,1,25.956,0v26.178Zm52.356,25.846a91.1,91.1,0,0,1-91.1,91.1h-.609a91.1,91.1,0,0,1-91.1-91.1H0v.166A117.33,117.33,0,0,0,117.44,386.28h.775A117.331,117.331,0,0,0,235.49,268.84V242.828H209.146Zm-157.233,0a65.362,65.362,0,0,0,130.723,0H156.292a39.023,39.023,0,0,1-78.035,0V242.883H51.968v-26.62A65.42,65.42,0,0,1,182.8,217.48v25.293h26.344V217.48a91.761,91.761,0,0,0-183.522,0v25.4H51.913Zm418.4-71.173c13.67,0,24.573,6.642,30.052,18.264l.719,1.549,23.245-11.511-.609-1.439c-8.025-19.26-28.5-31.27-53.407-31.27-23.134,0-43.611,11.4-50.972,28.447-.123,26.876-.158,23.9,0,24.85,4.7,11.013,14.555,19.37,28.668,24.241a102.033,102.033,0,0,0,19.813,3.984c5.479.72,10.626,1.384,15.829,3.1,6.364,2.1,10.46,5.257,12.84,9.851v9.851c-3.708,7.527-13.781,12.342-25.791,12.342-14.334,0-25.956-6.918-31.933-19.039l-.72-1.494L415.026,280.9l.553,1.439c7.915,19.426,29.609,32.044,55.289,32.044,23.632,0,44.608-11.4,52.3-28.447l.166-25.9-.166-.664c-4.87-11.014-15.219-19.647-28.944-24.241-7.693-2.712-14.335-3.6-20.7-4.427a83.777,83.777,0,0,1-14.832-2.878c-6.31-1.937-10.4-5.092-12.619-9.63v-8.412C449.45,202.427,458.969,197.667,470.315,197.667ZM287.568,311.344h26.067v-68.4H287.568Zm352.266-53.3c-2.933-6.254-8.3-12.01-15.441-16.714A37.99,37.99,0,0,0,637.4,226l.166-25.347-.166-.664C630.038,184,610.667,173.26,589.25,173.26S548.461,184,541.1,199.992l-.166,25.347.166.664a39.643,39.643,0,0,0,13.006,15.331c-7.2,4.7-12.508,10.46-15.441,16.714l-.166,28.889.166.72c7.582,15.994,27.893,26.731,50.585,26.731s43.057-10.737,50.584-26.731l.166-28.89Zm-73.22-50.806c3.6-6.31,12.563-10.516,22.58-10.516s19.038,4.206,22.636,10.516v13.725c-3.542,6.2-12.563,10.349-22.636,10.349s-19.094-4.15-22.58-10.349Zm47.319,72.169c-3.764,6.641-13.338,10.9-24.683,10.9-11.125,0-20.976-4.372-24.684-10.9V263.25c3.708-6.309,13.5-10.515,24.684-10.515,11.345,0,20.919,4.15,24.683,10.515ZM376.4,265.962l-59.827-89.713h-29v40.623h26.51v.387l62.539,94.085H402.3V176.249H376.4Z"],"pinterest-p":[384,512,[],"f231","M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z"],apper:[640,512,[],"f371","M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z"],"fort-awesome":[512,512,[],"f286","M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z"],waze:[512,512,[],"f83f","M502.17 201.67C516.69 287.53 471.23 369.59 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1-51.57-49c-6.44.19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.92c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.26C94.8 95.2 193.12 32 288.09 32c102.48 0 197.15 70.67 214.08 169.67zM373.51 388.28c42-19.18 81.33-56.71 96.29-102.14 40.48-123.09-64.15-228-181.71-228-83.45 0-170.32 55.42-186.07 136-9.53 48.91 5 131.35-68.75 131.35C58.21 358.6 91.6 378.11 127 389.54c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9.82a51.69 51.69 0 0 1 78.78-16.42zM205.12 187.13c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.57 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.61 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06.28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z"],bluesky:[576,512,[],"e671","M407.8 294.7c-3.3-.4-6.7-.8-10-1.3c3.4 .4 6.7 .9 10 1.3zM288 227.1C261.9 176.4 190.9 81.9 124.9 35.3C61.6-9.4 37.5-1.7 21.6 5.5C3.3 13.8 0 41.9 0 58.4S9.1 194 15 213.9c19.5 65.7 89.1 87.9 153.2 80.7c3.3-.5 6.6-.9 10-1.4c-3.3 .5-6.6 1-10 1.4C74.3 308.6-9.1 342.8 100.3 464.5C220.6 589.1 265.1 437.8 288 361.1c22.9 76.7 49.2 222.5 185.6 103.4c102.4-103.4 28.1-156-65.8-169.9c-3.3-.4-6.7-.8-10-1.3c3.4 .4 6.7 .9 10 1.3c64.1 7.1 133.6-15.1 153.2-80.7C566.9 194 576 75 576 58.4s-3.3-44.7-21.6-52.9c-15.8-7.1-40-14.9-103.2 29.8C385.1 81.9 314.1 176.4 288 227.1z"],"cc-jcb":[576,512,[],"f24b","M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"],snapchat:[512,512,[62124,"snapchat-ghost"],"f2ab","M496.926,366.6c-3.373-9.176-9.8-14.086-17.112-18.153-1.376-.806-2.641-1.451-3.72-1.947-2.182-1.128-4.414-2.22-6.634-3.373-22.8-12.09-40.609-27.341-52.959-45.42a102.889,102.889,0,0,1-9.089-16.12c-1.054-3.013-1-4.724-.248-6.287a10.221,10.221,0,0,1,2.914-3.038c3.918-2.591,7.96-5.22,10.7-6.993,4.885-3.162,8.754-5.667,11.246-7.44,9.362-6.547,15.909-13.5,20-21.278a42.371,42.371,0,0,0,2.1-35.191c-6.2-16.318-21.613-26.449-40.287-26.449a55.543,55.543,0,0,0-11.718,1.24c-1.029.224-2.059.459-3.063.72.174-11.16-.074-22.94-1.066-34.534-3.522-40.758-17.794-62.123-32.674-79.16A130.167,130.167,0,0,0,332.1,36.443C309.515,23.547,283.91,17,256,17S202.6,23.547,180,36.443a129.735,129.735,0,0,0-33.281,26.783c-14.88,17.038-29.152,38.44-32.673,79.161-.992,11.594-1.24,23.435-1.079,34.533-1-.26-2.021-.5-3.051-.719a55.461,55.461,0,0,0-11.717-1.24c-18.687,0-34.125,10.131-40.3,26.449a42.423,42.423,0,0,0,2.046,35.228c4.105,7.774,10.652,14.731,20.014,21.278,2.48,1.736,6.361,4.24,11.246,7.44,2.641,1.711,6.5,4.216,10.28,6.72a11.054,11.054,0,0,1,3.3,3.311c.794,1.624.818,3.373-.36,6.6a102.02,102.02,0,0,1-8.94,15.785c-12.077,17.669-29.363,32.648-51.434,44.639C32.355,348.608,20.2,352.75,15.069,366.7c-3.868,10.528-1.339,22.506,8.494,32.6a49.137,49.137,0,0,0,12.4,9.387,134.337,134.337,0,0,0,30.342,12.139,20.024,20.024,0,0,1,6.126,2.741c3.583,3.137,3.075,7.861,7.849,14.78a34.468,34.468,0,0,0,8.977,9.127c10.019,6.919,21.278,7.353,33.207,7.811,10.776.41,22.989.881,36.939,5.481,5.778,1.91,11.78,5.605,18.736,9.92C194.842,480.951,217.707,495,255.973,495s61.292-14.123,78.118-24.428c6.907-4.24,12.872-7.9,18.489-9.758,13.949-4.613,26.163-5.072,36.939-5.481,11.928-.459,23.187-.893,33.206-7.812a34.584,34.584,0,0,0,10.218-11.16c3.434-5.84,3.348-9.919,6.572-12.771a18.971,18.971,0,0,1,5.753-2.629A134.893,134.893,0,0,0,476.02,408.71a48.344,48.344,0,0,0,13.019-10.193l.124-.149C498.389,388.5,500.708,376.867,496.926,366.6Zm-34.013,18.277c-20.745,11.458-34.533,10.23-45.259,17.137-9.114,5.865-3.72,18.513-10.342,23.076-8.134,5.617-32.177-.4-63.239,9.858-25.618,8.469-41.961,32.822-88.038,32.822s-62.036-24.3-88.076-32.884c-31-10.255-55.092-4.241-63.239-9.858-6.609-4.563-1.24-17.211-10.341-23.076-10.739-6.907-24.527-5.679-45.26-17.075-13.206-7.291-5.716-11.8-1.314-13.937,75.143-36.381,87.133-92.552,87.666-96.719.645-5.046,1.364-9.014-4.191-14.148-5.369-4.96-29.189-19.7-35.8-24.316-10.937-7.638-15.748-15.264-12.2-24.638,2.48-6.485,8.531-8.928,14.879-8.928a27.643,27.643,0,0,1,5.965.67c12,2.6,23.659,8.617,30.392,10.242a10.749,10.749,0,0,0,2.48.335c3.6,0,4.86-1.811,4.612-5.927-.768-13.132-2.628-38.725-.558-62.644,2.84-32.909,13.442-49.215,26.04-63.636,6.051-6.932,34.484-36.976,88.857-36.976s82.88,29.92,88.931,36.827c12.611,14.421,23.225,30.727,26.04,63.636,2.071,23.919.285,49.525-.558,62.644-.285,4.327,1.017,5.927,4.613,5.927a10.648,10.648,0,0,0,2.48-.335c6.745-1.624,18.4-7.638,30.4-10.242a27.641,27.641,0,0,1,5.964-.67c6.386,0,12.4,2.48,14.88,8.928,3.546,9.374-1.24,17-12.189,24.639-6.609,4.612-30.429,19.343-35.8,24.315-5.568,5.134-4.836,9.1-4.191,14.149.533,4.228,12.511,60.4,87.666,96.718C468.629,373.011,476.119,377.524,462.913,384.877Z"],"fantasy-flight-games":[512,512,[],"f6dc","M256 32.86L32.86 256 256 479.14 479.14 256 256 32.86zM88.34 255.83c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.77-18.69 24.63 18.4 62.06 58.9 62.15 59 .68.74 1.07 2.86.58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43.12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99zm234.82 101.6c-35.49 35.43-78.09 38.14-106.99 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64.14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29.26-.26.65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z"],rust:[512,512,[],"e07a","M508.52,249.75,486.7,236.24c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35,7.35,0,0,0-2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35,7.35,0,0,0-4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35,7.35,0,0,0-6.95-10.39l-25.82.91q-1.79-2.22-3.61-4.4L439,81.84A7.36,7.36,0,0,0,430.16,73L405,78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35,7.35,0,0,0-10.39-7L367.7,53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4,25.08a7.35,7.35,0,0,0-11.54-4.79L326,35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35,7.35,0,0,0-12.25-2.44l-17.5,18.72c-1.95-.21-3.91-.38-5.88-.55L262.25,3.48a7.35,7.35,0,0,0-12.5,0L236.24,25.3c-2,.17-3.93.34-5.88.55L212.86,7.13a7.35,7.35,0,0,0-12.25,2.44l-9,24c-1.89.55-3.79,1.08-5.66,1.68l-20.82-15a7.35,7.35,0,0,0-11.54,4.79l-4.15,25.41c-1.73.9-3.45,1.79-5.16,2.73L120.88,42.55a7.35,7.35,0,0,0-10.39,7l.92,25.81c-1.49,1.19-3,2.39-4.42,3.61L81.84,73A7.36,7.36,0,0,0,73,81.84L78.93,107c-1.23,1.45-2.43,2.93-3.62,4.41l-25.81-.91a7.42,7.42,0,0,0-6.37,3.26,7.35,7.35,0,0,0-.57,7.13l10.66,23.41c-.94,1.7-1.83,3.43-2.73,5.16L25.08,153.6a7.35,7.35,0,0,0-4.79,11.54l15,20.82c-.59,1.87-1.13,3.77-1.68,5.66l-24,9a7.35,7.35,0,0,0-2.44,12.25l18.72,17.5c-.21,1.95-.38,3.91-.55,5.88L3.48,249.75a7.35,7.35,0,0,0,0,12.5L25.3,275.76c.17,2,.34,3.92.55,5.87L7.13,299.13a7.35,7.35,0,0,0,2.44,12.25l24,9c.55,1.89,1.08,3.78,1.68,5.65l-15,20.83a7.35,7.35,0,0,0,4.79,11.54l25.42,4.15c.9,1.72,1.79,3.45,2.73,5.14L42.56,391.12a7.35,7.35,0,0,0,.57,7.13,7.13,7.13,0,0,0,6.37,3.26l25.83-.91q1.77,2.22,3.6,4.4L73,430.16A7.36,7.36,0,0,0,81.84,439L107,433.07q2.18,1.83,4.41,3.61l-.92,25.82a7.35,7.35,0,0,0,10.39,6.95l23.43-10.68c1.69.94,3.42,1.83,5.14,2.73l4.15,25.42a7.34,7.34,0,0,0,11.54,4.78l20.83-15c1.86.6,3.76,1.13,5.65,1.68l9,24a7.36,7.36,0,0,0,12.25,2.44l17.5-18.72c1.95.21,3.92.38,5.88.55l13.51,21.82a7.35,7.35,0,0,0,12.5,0l13.51-21.82c2-.17,3.93-.34,5.88-.56l17.5,18.73a7.36,7.36,0,0,0,12.25-2.44l9-24c1.89-.55,3.78-1.08,5.65-1.68l20.82,15a7.34,7.34,0,0,0,11.54-4.78l4.15-25.42c1.72-.9,3.45-1.79,5.15-2.73l23.42,10.68a7.35,7.35,0,0,0,10.39-6.95l-.91-25.82q2.22-1.79,4.4-3.61L430.16,439a7.36,7.36,0,0,0,8.84-8.84L433.07,405q1.83-2.17,3.61-4.4l25.82.91a7.23,7.23,0,0,0,6.37-3.26,7.35,7.35,0,0,0,.58-7.13L458.77,367.7c.94-1.7,1.83-3.43,2.73-5.15l25.42-4.15a7.35,7.35,0,0,0,4.79-11.54l-15-20.83c.59-1.87,1.13-3.76,1.67-5.65l24-9a7.35,7.35,0,0,0,2.44-12.25l-18.72-17.5c.21-1.95.38-3.91.55-5.87l21.82-13.51a7.35,7.35,0,0,0,0-12.5Zm-151,129.08A13.91,13.91,0,0,0,341,389.51l-7.64,35.67A187.51,187.51,0,0,1,177,424.44l-7.64-35.66a13.87,13.87,0,0,0-16.46-10.68l-31.51,6.76a187.38,187.38,0,0,1-16.26-19.21H258.3c1.72,0,2.89-.29,2.89-1.91V309.55c0-1.57-1.17-1.91-2.89-1.91H213.47l.05-34.35H262c4.41,0,23.66,1.28,29.79,25.87,1.91,7.55,6.17,32.14,9.06,40,2.89,8.82,14.6,26.46,27.1,26.46H407a187.3,187.3,0,0,1-17.34,20.09Zm25.77,34.49A15.24,15.24,0,1,1,368,398.08h.44A15.23,15.23,0,0,1,383.24,413.32Zm-225.62-.68a15.24,15.24,0,1,1-15.25-15.25h.45A15.25,15.25,0,0,1,157.62,412.64ZM69.57,234.15l32.83-14.6a13.88,13.88,0,0,0,7.06-18.33L102.69,186h26.56V305.73H75.65A187.65,187.65,0,0,1,69.57,234.15ZM58.31,198.09a15.24,15.24,0,0,1,15.23-15.25H74a15.24,15.24,0,1,1-15.67,15.24Zm155.16,24.49.05-35.32h63.26c3.28,0,23.07,3.77,23.07,18.62,0,12.29-15.19,16.7-27.68,16.7ZM399,306.71c-9.8,1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4,18.86-11.95,38.46-29.64,38.46-53.26,0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.32A187.49,187.49,0,0,1,221.21,70.06l23.47,24.6a13.82,13.82,0,0,0,19.6.44l26.26-25a187.51,187.51,0,0,1,128.37,91.43l-18,40.57A14,14,0,0,0,408,220.43l34.59,15.33a187.12,187.12,0,0,1,.4,32.54H423.71c-1.91,0-2.69,1.27-2.69,3.13v8.82C421,301,409.31,305.58,399,306.71ZM240,60.21A15.24,15.24,0,0,1,255.21,45h.45A15.24,15.24,0,1,1,240,60.21ZM436.84,214a15.24,15.24,0,1,1,0-30.48h.44a15.24,15.24,0,0,1-.44,30.48Z"],wix:[640,512,[],"f5cf","M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z"],"square-behance":[448,512,["behance-square"],"f1b5","M155.3 318.4c17.2 0 31.2-6.1 31.2-25.4c0-19.7-11.7-27.4-30.3-27.5h-46v52.9h45.1zm-5.4-129.6H110.3v44.8H153c15.1 0 25.8-6.6 25.8-22.9c0-17.7-13.7-21.9-28.9-21.9zm129.5 74.8h62.2c-1.7-18.5-11.3-29.7-30.5-29.7c-18.3 0-30.5 11.4-31.7 29.7zM384 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zM349.5 185H271.7V166.1h77.8V185zM193.7 243.7c23.6 6.7 35 27.5 35 51.6c0 39-32.7 55.7-67.6 55.9H68v-192h90.5c32.9 0 61.4 9.3 61.4 47.5c0 19.3-9 28.8-26.2 37zm118.7-38.6c43.5 0 67.6 34.3 67.6 75.4c0 1.6-.1 3.3-.2 5c0 .8-.1 1.5-.1 2.2H279.5c0 22.2 11.7 35.3 34.1 35.3c11.6 0 26.5-6.2 30.2-18.1h33.7c-10.4 31.9-31.9 46.8-65.1 46.8c-43.8 0-71.1-29.7-71.1-73c0-41.8 28.7-73.6 71.1-73.6z"],supple:[640,512,[],"f3f9","M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z"],webflow:[640,512,[],"e65c","M640 64L435.8 463.2H244l85.5-165.5h-3.8C255.1 389.3 149.9 449.5 0 463.2V300.1s95.9-5.7 152.3-64.9H0V64H171.1V204.8l3.8 0L244.9 64H374.3V203.9l3.8 0L450.7 64H640z"],rebel:[512,512,[],"f1d0","M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z"],css3:[512,512,[],"f13c","M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z"],staylinked:[440,512,[],"f3f5","M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z"],kaggle:[320,512,[],"f5fa","M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z"],"space-awesome":[512,512,[],"e5ac","M96 256H128V512H0V352H32V320H64V288H96V256zM512 352V512H384V256H416V288H448V320H480V352H512zM320 64H352V448H320V416H192V448H160V64H192V32H224V0H288V32H320V64zM288 128H224V192H288V128z"],deviantart:[320,512,[],"f1bd","M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z"],cpanel:[640,512,[],"f388","M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5.2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z"],"goodreads-g":[384,512,[],"f3a9","M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z"],"square-git":[448,512,["git-square"],"f1d2","M120.8 335.5c-5.9-.4-12.6-.8-20.2-1.3c-3.3 4.1-6.6 8.4-6.6 13.5c0 18.5 65.5 18.5 65.5-1.5c0-8.3-7.4-8.7-38.8-10.7zm7.8-117.9c-32.3 0-33.7 44.5-.7 44.5c32.5 0 31.7-44.5 .7-44.5zM384 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zM243.9 172.2c-14.5 0-22.9-8.4-22.9-22.9c0-14.5 8.4-22.3 22.9-22.3c14.7 0 23.1 7.8 23.1 22.3s-8.4 22.9-23.1 22.9zM149.6 195h49.5l0 21.6-23.4 1.8c4.6 5.8 9.4 14 9.4 25.7c0 48.7-57.2 47.2-74.2 42.4l-8.4 13.4c5 .3 9.8 .6 14.3 .8c56.3 3.2 80.5 4.6 80.5 38.5c0 29.2-25.7 45.7-69.9 45.7c-46 0-63.5-11.6-63.5-31.7c0-11.4 5.1-17.5 14-25.9c-8.4-3.5-11.2-9.9-11.2-16.8c0-9.6 7.4-16.3 23-30.6l.2-.2c-12.4-6.1-21.8-19.3-21.8-38.1c0-51.6 56.6-53.3 81.6-46.8zM270.5 303.1l13 1.8 0 20.1H211.1V304.9c2.7-.4 5-.7 6.9-.9c9.9-1.2 10.1-1.3 10.1-6V223.3c0-4.4-.9-4.7-10.1-7.8c-1.9-.7-4.2-1.4-6.9-2.4l2.8-20.6h52.6V298c0 4.1 .2 4.6 4.1 5.1zm106.6-10.4L384 315c-10.9 5.4-26.9 10.2-41.4 10.2c-30.2 0-41.7-12.2-41.7-40.9V217.7c0-.8 0-1.4-.2-1.8c-.8-1.2-4.2-.7-19.6-.7V192.6c22.3-2.5 31.2-13.7 34-41.4h24.2c0 33.3-.6 38 .7 38.6c.3 .1 .7 0 1.3 0h35.8v25.4H339.3v60.7c0 .2 0 .5 0 .9c-.2 6.3-.9 30.4 37.9 15.9z"],"square-tumblr":[448,512,["tumblr-square"],"f174","M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM256.8 416c-75.5 0-91.9-55.5-91.9-87.9v-90H135.2c-3.4 0-6.2-2.8-6.2-6.2V189.4c0-4.5 2.8-8.5 7.1-10c38.8-13.7 50.9-47.5 52.7-73.2c.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2H249.1V321c0 21.4 14.8 33.5 42.5 22.4c3-1.2 5.6-2 8-1.4c2.2 .5 3.6 2.1 4.6 4.9L318 387.1c1 3.2 2 6.7-.3 9.1c-8.5 9.1-31.2 19.8-60.9 19.8z"],trello:[448,512,[],"f181","M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8.1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z"],"creative-commons-nc-jp":[496,512,[],"f4ea","M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z"],"get-pocket":[448,512,[],"f265","M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z"],perbyte:[448,512,[],"e083","M305.314,284.578H246.6V383.3h58.711q24.423,0,38.193-13.77t13.77-36.11q0-21.826-14.032-35.335T305.314,284.578ZM149.435,128.7H90.724v98.723h58.711q24.42,0,38.19-13.773t13.77-36.107q0-21.826-14.029-35.338T149.435,128.7ZM366.647,32H81.353A81.445,81.445,0,0,0,0,113.352V398.647A81.445,81.445,0,0,0,81.353,480H366.647A81.445,81.445,0,0,0,448,398.647V113.352A81.445,81.445,0,0,0,366.647,32Zm63.635,366.647a63.706,63.706,0,0,1-63.635,63.635H81.353a63.706,63.706,0,0,1-63.635-63.635V113.352A63.706,63.706,0,0,1,81.353,49.718H366.647a63.706,63.706,0,0,1,63.635,63.634ZM305.314,128.7H246.6v98.723h58.711q24.423,0,38.193-13.773t13.77-36.107q0-21.826-14.032-35.338T305.314,128.7Z"],grunt:[384,512,[],"f3ad","M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8.6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2.9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z"],weebly:[512,512,[],"f5cc","M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z"],connectdevelop:[576,512,[],"f20e","M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z"],leanpub:[576,512,[],"f212","M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z"],"black-tie":[448,512,[],"f27e","M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z"],themeco:[448,512,[],"f5c6","M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.85c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.81 503.74c-9.93 5.66-26 5.57-35.85-.21L17.86 395.12C8 389.34 0 375.38 0 364V146.71c0-11.44 8-25.36 17.91-31.08zm-77.4 199.83c-15.94 0-31.89.14-47.83.14v101.45H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.14 100.29l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.59h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.65-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z"],python:[448,512,[],"f3e2","M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"],android:[576,512,[],"f17b","M420.55,301.93a24,24,0,1,1,24-24,24,24,0,0,1-24,24m-265.1,0a24,24,0,1,1,24-24,24,24,0,0,1-24,24m273.7-144.48,47.94-83a10,10,0,1,0-17.27-10h0l-48.54,84.07a301.25,301.25,0,0,0-246.56,0L116.18,64.45a10,10,0,1,0-17.27,10h0l47.94,83C64.53,202.22,8.24,285.55,0,384H576c-8.24-98.45-64.54-181.78-146.85-226.55"],bots:[640,512,[],"e340","M86.344,197.834a51.767,51.767,0,0,0-41.57,20.058V156.018a8.19,8.19,0,0,0-8.19-8.19H8.19A8.19,8.19,0,0,0,0,156.018V333.551a8.189,8.189,0,0,0,8.19,8.189H36.584a8.189,8.189,0,0,0,8.19-8.189v-8.088c11.628,13.373,25.874,19.769,41.573,19.769,34.6,0,61.922-26.164,61.922-73.843C148.266,225.452,121.229,197.834,86.344,197.834ZM71.516,305.691c-9.593,0-21.221-4.942-26.745-12.5V250.164c5.528-7.558,17.152-12.791,26.745-12.791,17.734,0,31.107,13.082,31.107,34.013C102.623,292.609,89.25,305.691,71.516,305.691Zm156.372-59.032a17.4,17.4,0,1,0,17.4,17.4A17.4,17.4,0,0,0,227.888,246.659ZM273.956,156.7V112.039a13.308,13.308,0,1,0-10.237,0V156.7a107.49,107.49,0,1,0,10.237,0Zm85.993,107.367c0,30.531-40.792,55.281-91.112,55.281s-91.111-24.75-91.111-55.281,40.792-55.281,91.111-55.281S359.949,233.532,359.949,264.062Zm-50.163,17.4a17.4,17.4,0,1,0-17.4-17.4h0A17.4,17.4,0,0,0,309.786,281.466ZM580.7,250.455c-14.828-2.617-22.387-3.78-22.387-9.885,0-5.523,7.268-9.884,17.735-9.884a65.56,65.56,0,0,1,34.484,10.1,8.171,8.171,0,0,0,11.288-2.468c.07-.11.138-.221.2-.333l8.611-14.886a8.2,8.2,0,0,0-2.867-11.123,99.863,99.863,0,0,0-52.014-14.138c-38.956,0-60.179,21.514-60.179,46.225,0,36.342,33.725,41.864,57.563,45.642,13.373,2.326,24.13,4.361,24.13,11.048,0,6.4-5.523,10.757-18.9,10.757-13.552,0-30.994-6.222-42.623-13.579a8.206,8.206,0,0,0-11.335,2.491c-.035.054-.069.108-.1.164l-10.2,16.891a8.222,8.222,0,0,0,2.491,11.066c15.224,10.3,37.663,16.692,59.441,16.692,40.409,0,63.957-19.769,63.957-46.515C640,260.63,604.537,254.816,580.7,250.455Zm-95.928,60.787a8.211,8.211,0,0,0-9.521-5.938,23.168,23.168,0,0,1-4.155.387c-7.849,0-12.5-6.106-12.5-14.245V240.28h20.349a8.143,8.143,0,0,0,8.141-8.143V209.466a8.143,8.143,0,0,0-8.141-8.143H458.594V171.091a8.143,8.143,0,0,0-8.143-8.143H422.257a8.143,8.143,0,0,0-8.143,8.143h0v30.232H399a8.143,8.143,0,0,0-8.143,8.143h0v22.671A8.143,8.143,0,0,0,399,240.28h15.115v63.667c0,27.037,15.408,41.282,43.9,41.282,12.183,0,21.383-2.2,27.6-5.446a8.161,8.161,0,0,0,4.145-9.278Z"],"free-code-camp":[576,512,[],"f2c5","M97.22,96.21c10.36-10.65,16-17.12,16-21.9,0-2.76-1.92-5.51-3.83-7.42A14.81,14.81,0,0,0,101,64.05c-8.48,0-20.92,8.79-35.84,25.69C23.68,137,2.51,182.81,3.37,250.34s17.47,117,54.06,161.87C76.22,435.86,90.62,448,100.9,448a13.55,13.55,0,0,0,8.37-3.84c1.91-2.76,3.81-5.63,3.81-8.38,0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25,188.8,54,137.83,97.22,96.21ZM239.47,420.07c.58.37.91.55.91.55Zm93.79.55.17-.13C333.24,420.62,333.17,420.67,333.26,420.62Zm3.13-158.18c-16.24-4.15,50.41-82.89-68.05-177.17,0,0,15.54,49.38-62.83,159.57-74.27,104.35,23.46,168.73,34,175.23-6.73-4.35-47.4-35.7,9.55-128.64,11-18.3,25.53-34.87,43.5-72.16,0,0,15.91,22.45,7.6,71.13C287.7,364,354,342.91,355,343.94c22.75,26.78-17.72,73.51-21.58,76.55,5.49-3.65,117.71-78,33-188.1C360.43,238.4,352.62,266.59,336.39,262.44ZM510.88,89.69C496,72.79,483.52,64,475,64a14.81,14.81,0,0,0-8.39,2.84c-1.91,1.91-3.83,4.66-3.83,7.42,0,4.78,5.6,11.26,16,21.9,43.23,41.61,65,92.59,64.82,154.06-.16,68-23,122.63-67.48,165-9.34,8.35-13.18,14.92-13.2,20.55,0,2.75,1.9,5.62,3.81,8.38A13.61,13.61,0,0,0,475.1,448c10.28,0,24.68-12.13,43.47-35.79,36.59-44.85,53.14-94.38,54.06-161.87S552.32,137,510.88,89.69Z"],hornbill:[512,512,[],"f592","M76.38 370.3a37.8 37.8 0 1 1-32.07-32.42c-78.28-111.35 52-190.53 52-190.53-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49.93 64.06 39.81 72.87a140.38 140.38 0 0 0 131.66 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0-31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.42 140.42 0 0 1 207 132.71c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.59-54.06zm304.19 134.17a37.94 37.94 0 1 0-53.84-28.7C403 126.13 344.89 99 251.28 100.33l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.37 140.37 0 0 1 130.49 88.76c39.1 9 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 49-194.61a37.45 37.45 0 0 0 19.31-3.5zM374.06 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15a140.34 140.34 0 0 1-91.39 131.45c-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z"],js:[448,512,[],"f3b8","M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"],ideal:[576,512,[],"e013","M125.61,165.48a49.07,49.07,0,1,0,49.06,49.06A49.08,49.08,0,0,0,125.61,165.48ZM86.15,425.84h78.94V285.32H86.15Zm151.46-211.6c0-20-10-22.53-18.74-22.53H204.82V237.5h14.05C228.62,237.5,237.61,234.69,237.61,214.24Zm201.69,46V168.93h22.75V237.5h33.69C486.5,113.08,388.61,86.19,299.67,86.19H204.84V169h14c25.6,0,41.5,17.35,41.5,45.26,0,28.81-15.52,46-41.5,46h-14V425.88h94.83c144.61,0,194.94-67.16,196.72-165.64Zm-109.75,0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51Zm74.66,0-5.16-17.67H369.31l-5.18,17.67H340.47L368,168.92h32.35l27.53,91.34ZM299.65,32H32V480H299.65c161.85,0,251-79.73,251-224.52C550.62,172,518,32,299.65,32Zm0,426.92H53.07V53.07H299.65c142.1,0,229.9,64.61,229.9,202.41C529.55,389.57,448.55,458.92,299.65,458.92Zm83.86-264.85L376,219.88H392.4l-7.52-25.81Z"],git:[512,512,[],"f1d3","M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z"],dev:[448,512,[],"f6cc","M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z"],sketch:[512,512,[],"f7c6","M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z"],"yandex-international":[320,512,[],"f414","M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z"],"cc-amex":[576,512,[],"f1f3","M0 432c0 26.5 21.5 48 48 48H528c26.5 0 48-21.5 48-48v-1.1H514.3l-31.9-35.1-31.9 35.1H246.8V267.1H181L262.7 82.4h78.6l28.1 63.2V82.4h97.2L483.5 130l17-47.6H576V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80V432zm440.4-21.7L482.6 364l42 46.3H576l-68-72.1 68-72.1H525.4l-42 46.7-41.5-46.7H390.5L458 338.6l-67.4 71.6V377.1h-83V354.9h80.9V322.6H307.6V300.2h83V267.1h-122V410.3H440.4zm96.3-72L576 380.2V296.9l-39.3 41.4zm-36.3-92l36.9-100.6V246.3H576V103H515.8l-32.2 89.3L451.7 103H390.5V246.1L327.3 103H276.1L213.7 246.3h43l11.9-28.7h65.9l12 28.7h82.7V146L466 246.3h34.4zM282 185.4l19.5-46.9 19.4 46.9H282z"],uber:[448,512,[],"f402","M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z"],github:[496,512,[],"f09b","M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"],php:[640,512,[],"f457","M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z"],alipay:[448,512,[],"f642","M377.74 32H70.26C31.41 32 0 63.41 0 102.26v307.48C0 448.59 31.41 480 70.26 480h307.48c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.59-60.34-171.6-88.44-32.07 43.97-84.14 81-148.62 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.13 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.44V92.34h50.92v50.42h109.44v19.01H248.63v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100.01 36.04 148.62 52.74V102.26C447.83 63.57 416.43 32 377.74 32zM47.28 322.95c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.87-72.9-44.63-18.68-84.48-31.41-109.44-31.41-67.45 0-79.35 33.06-78.36 50.58z"],youtube:[576,512,[61802],"f167","M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"],skyatlas:[640,512,[],"f216","M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z"],"firefox-browser":[512,512,[],"e007","M130.22 127.548C130.38 127.558 130.3 127.558 130.22 127.548V127.548ZM481.64 172.898C471.03 147.398 449.56 119.898 432.7 111.168C446.42 138.058 454.37 165.048 457.4 185.168C457.405 185.306 457.422 185.443 457.45 185.578C429.87 116.828 383.098 89.1089 344.9 28.7479C329.908 5.05792 333.976 3.51792 331.82 4.08792L331.7 4.15792C284.99 30.1109 256.365 82.5289 249.12 126.898C232.503 127.771 216.219 131.895 201.19 139.035C199.838 139.649 198.736 140.706 198.066 142.031C197.396 143.356 197.199 144.87 197.506 146.323C197.7 147.162 198.068 147.951 198.586 148.639C199.103 149.327 199.76 149.899 200.512 150.318C201.264 150.737 202.096 150.993 202.954 151.071C203.811 151.148 204.676 151.045 205.491 150.768L206.011 150.558C221.511 143.255 238.408 139.393 255.541 139.238C318.369 138.669 352.698 183.262 363.161 201.528C350.161 192.378 326.811 183.338 304.341 187.248C392.081 231.108 368.541 381.784 246.951 376.448C187.487 373.838 149.881 325.467 146.421 285.648C146.421 285.648 157.671 243.698 227.041 243.698C234.541 243.698 255.971 222.778 256.371 216.698C256.281 214.698 213.836 197.822 197.281 181.518C188.434 172.805 184.229 168.611 180.511 165.458C178.499 163.75 176.392 162.158 174.201 160.688C168.638 141.231 168.399 120.638 173.51 101.058C148.45 112.468 128.96 130.508 114.8 146.428H114.68C105.01 134.178 105.68 93.7779 106.25 85.3479C106.13 84.8179 99.022 89.0159 98.1 89.6579C89.5342 95.7103 81.5528 102.55 74.26 110.088C57.969 126.688 30.128 160.242 18.76 211.318C14.224 231.701 12 255.739 12 263.618C12 398.318 121.21 507.508 255.92 507.508C376.56 507.508 478.939 420.281 496.35 304.888C507.922 228.192 481.64 173.82 481.64 172.898Z"],replyd:[448,512,[],"f3e6","M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z"],suse:[640,512,[],"f7d6","M593.1 192.6A10.4 10.4 0 1 1 604.5 210a10.4 10.4 0 1 1 -11.4-17.4zm-47.1 12.2a38.5 38.5 0 1 1 75-17.6 38.5 38.5 0 1 1 -75 17.6zM433.7 336.7c3.2 4.6 5.8 9 7.3 13.4c1 3.1 2.4 7.3 5.5 8.9c.2 .1 .3 .2 .5 .2c5.7 2.1 20.3 1.7 20.3 1.7h26.8c2.3 0 22.4 0 21.9-2.3c-2.4-10.8-14.9-12.7-24.4-18.3c-8.7-5.2-17-11.1-20.8-21.3c-2-5.2-.8-17.4 2.6-21.8c2.5-3.2 6.1-5.3 10-6.2c4.3-.9 8.8-.1 13.1 .3c5.3 .5 10.6 1.5 15.9 2.2c10.3 1.3 20.6 1.9 31 1.6c17.1-.5 34.2-3.2 50.4-8.7c11.3-3.8 22.4-8.9 32-16.1c10.9-8.1 8.1-7.4-3-6.2c-13.3 1.4-26.6 1.6-39.9 .8c-12.4-.7-24.7-2.2-35.9-7.9c-8.8-4.6-16.4-9.1-23.4-16.2c-1-1.1-1.7-4.2 .2-6.2c1.9-1.9 5.8-.8 7 .2c12.2 10.2 30.5 18.6 49.3 19.5c10.2 .5 20.1 .7 30.4 .3c5.1-.2 12.8-.2 17.9-.3c2.6 0 9.8 .7 11.2-2.1c.4-.8 .4-1.8 .3-2.7c-1.5-40.9-4.5-86.9-47.3-106.5c-31.9-14.6-79.7-37.2-99.9-46.6c-4.7-2.2-10.2 1.3-10.2 6.5c0 13.6 .7 33.3 .7 51.1c-9.7-9.9-26-16.1-38.4-21.8c-14.1-6.5-28.7-12-43.5-16.6c-29.8-9.2-60.7-14.9-91.7-18c-35.2-3.5-71-1.8-105.7 5.3C147 115.1 90.8 142.6 48.2 182.7C22.1 207.3 1.6 242.4 .2 277.9c-2 50.3 12.1 77.3 38 105.2c41.3 44.4 130.2 50.6 166.2-2c16.2-23.7 19.7-55.8 8-82c-11.8-26.2-38.8-45.1-67.4-46c-22.2-.7-45.9 10.6-54.5 31.1c-6.5 15.7-2.8 35.1 9 47.3c4.6 4.8 10.9 8.7 17.7 7.1c4-.9 7.4-3.9 8-8c.9-6-4.4-9.9-7.6-14.5c-5.8-8.3-4.7-20.9 2.7-27.9c6.2-6 15.3-7.8 23.9-7.7c8 0 16.2 1.4 23.1 5.5c9.7 5.7 16.2 16.2 18.4 27.2c6.7 33-20.2 59.9-56.6 62c-18.6 1.1-37.6-3.8-52.1-15.5C40.1 329.9 31.1 269.4 73.2 237c40-30.7 90.4-22.8 120.2-6.8c23.8 12.8 41.5 33.6 55 56.7c6.7 11.6 12.5 23.7 17.8 36.1c5.1 11.8 9.9 23.8 20.2 32.5c6.8 5.8 15.2 5.6 24.1 5.6h50.8c6.9 0 5.2-4.6 2.2-7.7c-6.7-6.9-16.4-8.4-25.4-10.9c-20.5-5.6-18.4-32.8-12.7-32.8c18.3 0 18.9 .6 34.9 .3c23.2-.3 30.2-1.7 48.3 5c9.7 3.6 19 13.1 25.1 21.7z"],jenkins:[512,512,[],"f3b6","M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z"],twitter:[512,512,[],"f099","M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"],rockrms:[496,512,[],"f3e9","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z"],pinterest:[496,512,[],"f0d2","M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z"],buffer:[448,512,[],"f837","M427.84 380.67l-196.5 97.82a18.6 18.6 0 0 1-14.67 0L20.16 380.67c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.76 67a18.51 18.51 0 0 0 14.67 0l134.76-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.53l-47.06-23.43a18.62 18.62 0 0 0-14.68 0l-134.76 67.08a18.68 18.68 0 0 1-14.67 0L81.91 220.71a18.65 18.65 0 0 0-14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.51 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.42l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.51-90.29c4-1.86 4-4.89 0-6.74L231.33 33.4a19.88 19.88 0 0 0-14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z"],npm:[576,512,[],"f3d4","M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z"],yammer:[512,512,[],"f840","M500.676,159.486a12.779,12.779,0,0,0-6.4-8.282,13.954,13.954,0,0,0-10.078-1.125L457.8,156.7l-.043-.2-22.3,5.785-1.243.333-.608-2.17A369.037,369.037,0,0,0,347.538,4.289a14.1,14.1,0,0,0-19.784-.463l-102.9,102.747H24.947A24.9,24.9,0,0,0,0,131.417V380.38a24.963,24.963,0,0,0,24.918,24.9H224.986L328.072,508a13.667,13.667,0,0,0,19.327,0c.126-.126.249-.255.37-.385a368.025,368.025,0,0,0,69.577-107.374,403.45,403.45,0,0,0,17.3-50.8v-.028l20.406,5.336.029-.073L483.345,362a20.253,20.253,0,0,0,2.619.5,13.359,13.359,0,0,0,4.139-.072,13.5,13.5,0,0,0,10.515-9.924,415.855,415.855,0,0,0,.058-193.013ZM337.125,24.65l.013.014h-.013Zm-110.2,165.161L174.311,281.1a11.338,11.338,0,0,0-1.489,5.655v46.189a22.04,22.04,0,0,1-22.041,22h-3.4A22.068,22.068,0,0,1,125.3,332.962V287.294a11.532,11.532,0,0,0-1.388-5.51l-51.6-92.2a21.988,21.988,0,0,1,19.264-32.726h3.268a22.059,22.059,0,0,1,19.611,11.916l36.357,70.281,37.515-70.512a22.066,22.066,0,0,1,38.556-.695,21.7,21.7,0,0,1,0,21.967ZM337.145,24.673a348.147,348.147,0,0,1,75.8,141.335l.564,1.952-114.134,29.6V131.417a25.006,25.006,0,0,0-24.947-24.9H255.067Zm60.5,367.305v-.043l-.014.014a347.19,347.19,0,0,1-60.177,95.227l-82.2-81.893h19.177a24.978,24.978,0,0,0,24.947-24.9v-66.2l114.6,29.862A385.191,385.191,0,0,1,397.648,391.978Zm84-52.45.015.014-50.618-13.131L299.379,292.1V219.572l119.746-30.99,4.468-1.157,39.54-10.253,18.511-4.816A393,393,0,0,1,481.644,339.528Z"],btc:[384,512,[],"f15a","M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z"],dribbble:[512,512,[],"f17d","M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z"],"stumbleupon-circle":[496,512,[],"f1a3","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z"],"internet-explorer":[512,512,[],"f26b","M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z"],stubber:[448,512,[],"e5c7","M136.5 294.2l58.8 22.9c9.1-36.8 25.4-61.1 55-61.1c49.4 0 71.4 63.6 142.4 63.6c15.6 0 35.9-2.8 55.3-13.3V368c0 61.8-50.4 112-112.3 112H0l41.8-56L0 368l41.7-56L0 256.1l41.8-56L0 144.1 41.8 88 0 32H335.7C397.6 32 448 82.3 448 144.1v51.3c-9.2 36.3-25.9 60.6-55 60.6c-49.6 0-71.6-63.5-142.4-63.5c-35.9 0-95.2 14.6-114.1 101.6h0z"],telegram:[496,512,[62462,"telegram-plane"],"f2c6","M248,8C111.033,8,0,119.033,0,256S111.033,504,248,504,496,392.967,496,256,384.967,8,248,8ZM362.952,176.66c-3.732,39.215-19.881,134.378-28.1,178.3-3.476,18.584-10.322,24.816-16.948,25.425-14.4,1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25,5.342-39.5,3.652-3.793,67.107-61.51,68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608,69.142-14.845,10.194-26.894,9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7,18.45-13.7,108.446-47.248,144.628-62.3c68.872-28.647,83.183-33.623,92.511-33.789,2.052-.034,6.639.474,9.61,2.885a10.452,10.452,0,0,1,3.53,6.716A43.765,43.765,0,0,1,362.952,176.66Z"],"old-republic":[496,512,[],"f510","M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z"],odysee:[512,512,[],"e5c6","M406.7 463c-42.3 30.8-94.4 49-150.7 49C144.9 512 50.3 441.2 14.9 342.2c2.4 1.7 5.9 3.6 7.9 4.4c16.3 7.4 40.1-5.4 62.9-28.7c6.9-6.9 14.4-12.4 22.8-17.3c18.3-11.9 37.6-20.8 58.4-27.2c0 0 22.3 34.2 43.1 74.8s-22.3 54-27.2 54c-.3 0-.8 0-1.5-.1c-11-.5-70-3-56 51.1c14.9 57.4 97.5 36.6 139.6 8.9s31.7-118.3 31.7-118.3c41.1-6.4 54 37.1 57.9 59.4c.8 4.6 1.1 9.9 1.4 15.5c1.1 21.2 2.3 45.6 35.3 46.4c5.3 0 10.6-.8 15.5-2zm-95.3-23.7c-2-.5-3.5-2.5-3-5c1-2.5 3-3.5 5-3s3.5 3 3 5s-2.5 3.5-5 3zm-207-95.6c1.5-.5 3.5 1 4 3c0 2-1 4-3 4c-1.5 .5-3.5-1-4-3c-.5-1.5 1-3.5 3-4zM451.8 421C489.3 376.4 512 318.8 512 256c0-67.5-26.1-128.9-68.8-174.7c-.1 23.5-6.1 48.2-16.8 69.2c-11.9 20.3-49 58.9-69.8 78.7c-.7 .3-1.1 .9-1.5 1.4c-.2 .2-.3 .4-.5 .6c-5 6.9-4 16.8 3 21.8c21.3 15.8 56.4 45.6 59.4 72.8c3.5 34.9 27.9 75.6 34.2 86.2l0 0c.8 1.3 1.3 2.1 1.4 2.4c0 2.2-.4 4.3-.8 6.5zM390.7 251c-.5 3 1 5.9 4 6.4s5.9-1 6.4-4s-1-5.9-4-6.4c-3-1-5.9 1-6.4 4zm61.4-60.9l-11.4 5.4-3 12.9-5.4-11.4-12.9-3 11.4-5.4 3-12.9 5.4 11.4 12.9 3zM395.5 41.3c-16.2 8.2-22.1 32.8-29 61.4l0 0c-.3 1.4-.7 2.8-1 4.2c-9.5 38.5-30.6 37.6-41.7 37.2c-1.1 0-2-.1-2.9-.1c-5.1 0-6-4-8.9-17.1c-2.6-12.1-6.9-32-17.9-63.6C271.4-2.5 211.4 13.9 165.9 41.1C110.6 74.2 131.5 143 146.1 190.5c.7 2.2 1.4 4.4 2 6.6c-4 4-13.8 7.5-26 11.9c-12.1 4.3-26.6 9.5-40.3 16.9C47.9 243.9 11.5 274.9 2 288.5C.7 277.8 0 267 0 256C0 114.6 114.6 0 256 0c51.4 0 99.4 15.2 139.5 41.3zM58.9 189.6c-1.5-2-4.5-3-6.4-1.5s-3 4.5-1.5 6.4s4.5 3 6.4 1.5c2.5-1.5 3-4.5 1.5-6.4zM327.3 64.9c2-1.5 5-.5 6.4 1.5c1.5 2.5 1 5.4-1.5 6.4c-2 1.5-5 .5-6.4-1.5s-.5-5 1.5-6.4zM95.1 105c-.5 1.5 .5 3 2 3c1.5 .5 3-.5 3-2c.5-1.5-.5-3-2-3s-3 .5-3 2zm84.7-.5c-3.5-43.1 37.1-54 37.1-54c44.1-15.4 56 5.9 66.4 37.6s3 42.6-38.6 58.9s-61.9-4.5-64.9-42.6zm89.6 14.9h1c2.5 0 5-2 5-5c2-6.9 1-14.4-2-20.8c-1.5-2-4-3.5-6.4-2.5c-3 1-4.5 4-3.5 6.9c2 4.5 3 9.9 1.5 14.9c-.5 3 1.5 5.9 4.5 6.4zm-9.9-41.6c-2 0-4-1-5-3s-2-3.5-3-5c-2-2-2-5.4 0-7.4s5.4-2 7.4 0c2 2.5 3.5 5 5 7.4s.5 5.9-2.5 7.4c-.6 0-1 .2-1.3 .3c-.2 .1-.4 .2-.6 .2z"],"square-whatsapp":[448,512,["whatsapp-square"],"f40c","M92.1 254.6c0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6L152 365.2l4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8c0-35.2-15.2-68.3-40.1-93.2c-25-25-58-38.7-93.2-38.7c-72.7 0-131.8 59.1-131.9 131.8zM274.8 330c-12.6 1.9-22.4 .9-47.5-9.9c-36.8-15.9-61.8-51.5-66.9-58.7c-.4-.6-.7-.9-.8-1.1c-2-2.6-16.2-21.5-16.2-41c0-18.4 9-27.9 13.2-32.3c.3-.3 .5-.5 .7-.8c3.6-4 7.9-5 10.6-5c2.6 0 5.3 0 7.6 .1c.3 0 .5 0 .8 0c2.3 0 5.2 0 8.1 6.8c1.2 2.9 3 7.3 4.9 11.8c3.3 8 6.7 16.3 7.3 17.6c1 2 1.7 4.3 .3 6.9c-3.4 6.8-6.9 10.4-9.3 13c-3.1 3.2-4.5 4.7-2.3 8.6c15.3 26.3 30.6 35.4 53.9 47.1c4 2 6.3 1.7 8.6-1c2.3-2.6 9.9-11.6 12.5-15.5c2.6-4 5.3-3.3 8.9-2s23.1 10.9 27.1 12.9c.8 .4 1.5 .7 2.1 1c2.8 1.4 4.7 2.3 5.5 3.6c.9 1.9 .9 9.9-2.4 19.1c-3.3 9.3-19.1 17.7-26.7 18.8zM448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM148.1 393.9L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5c29.9 30 47.9 69.8 47.9 112.2c0 87.4-72.7 158.5-160.1 158.5c-26.6 0-52.7-6.7-75.8-19.3z"],"node-js":[448,512,[],"f3d3","M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z"],"edge-legacy":[512,512,[],"e078","M25.71,228.16l.35-.48c0,.16,0,.32-.07.48Zm460.58,15.51c0-44-7.76-84.46-28.81-122.4C416.5,47.88,343.91,8,258.89,8,119,7.72,40.62,113.21,26.06,227.68c42.42-61.31,117.07-121.38,220.37-125,0,0,109.67,0,99.42,105H170c6.37-37.39,18.55-59,34.34-78.93-75.05,34.9-121.85,96.1-120.75,188.32.83,71.45,50.13,144.84,120.75,172,83.35,31.84,192.77,7.2,240.13-21.33V363.31C363.6,419.8,173.6,424.23,172.21,295.74H486.29V243.67Z"],slack:[448,512,[62447,"slack-hash"],"f198","M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"],medrt:[544,512,[],"f3c8","M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z"],usb:[640,512,[],"f287","M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z"],tumblr:[320,512,[],"f173","M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z"],vaadin:[448,512,[],"f408","M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z"],quora:[448,512,[],"f2c4","M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z"],"square-x-twitter":[448,512,[],"e61a","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm297.1 84L257.3 234.6 379.4 396H283.8L209 298.1 123.3 396H75.8l111-126.9L69.7 116h98l67.7 89.5L313.6 116h47.5zM323.3 367.6L153.4 142.9H125.1L296.9 367.6h26.3z"],reacteurope:[576,512,[],"f75d","M250.6 211.74l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0-4.2-3.4h-6.9a3.68 3.68 0 0 0-4 3.4l-11 59.2c-.5 2.7.9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5.04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0-2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.42 364.42 0 0 0-35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.83 587.83 0 0 0-84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2.1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0-93.9.9 547.76 547.76 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.25 598.25 0 0 0-50.7 64.2 569.69 569.69 0 0 0-84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.38 695.38 0 0 0 93.9-.9 547.76 547.76 0 0 1-42.2 52.4q5.1 5.25 10.2 10.2a588.47 588.47 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1-10.7-5.7l-.1.1a19.61 19.61 0 0 1-5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1-72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1-6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.91 711.91 0 0 1-112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1-3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.81 548.81 0 0 1-72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4.2-8.4-1a17.58 17.58 0 0 1-6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.64c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.72 711.72 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1.1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.71 359.71 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0-1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0-1.9-1.9H309a1.81 1.81 0 0 0-2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0-2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0-2-2.06zm-7.4-99.4L286 192l-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z"],medium:[640,512,[62407,"medium-m"],"f23a","M180.5,74.262C80.813,74.262,0,155.633,0,256S80.819,437.738,180.5,437.738,361,356.373,361,256,280.191,74.262,180.5,74.262Zm288.25,10.646c-49.845,0-90.245,76.619-90.245,171.095s40.406,171.1,90.251,171.1,90.251-76.619,90.251-171.1H559C559,161.5,518.6,84.908,468.752,84.908Zm139.506,17.821c-17.526,0-31.735,68.628-31.735,153.274s14.2,153.274,31.735,153.274S640,340.631,640,256C640,171.351,625.785,102.729,608.258,102.729Z"],amilia:[448,512,[],"f36d","M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z"],mixcloud:[640,512,[],"f289","M212.98 346.566H179.789V195.114L185.973 173.47H175.262L137.127 346.566H76.1069L37.7323 173.47H27.276L33.1913 195.114V346.566H0V165H65.6506L102.248 338.096H110.747L147.329 165H212.98L212.98 346.566ZM544.459 283.589L458.434 345.655V307.534L531.329 255.776L458.434 204.017V165.896L544.459 228.231H553.721L640 165.896V204.017L566.866 255.776L640 307.549V345.655L553.721 283.589H544.459ZM430.157 272.311H248.113V239.255H430.157V272.311Z"],flipboard:[448,512,[],"f44d","M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z"],viacoin:[384,512,[],"f237","M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z"],"critical-role":[448,512,[],"f6c9","M225.82 0c.26.15 216.57 124.51 217.12 124.72 3 1.18 3.7 3.46 3.7 6.56q-.11 125.17 0 250.36a5.88 5.88 0 0 1-3.38 5.78c-21.37 12-207.86 118.29-218.93 124.58h-3C142 466.34 3.08 386.56 2.93 386.48a3.29 3.29 0 0 1-1.88-3.24c0-.87 0-225.94-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.11 213.2 6 224.07 0zM215.4 20.42l-.22-.16Q118.06 75.55 21 130.87c0 .12.08.23.13.35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.43c.88-1.41 64.07-110.91 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4.09 1.48.22.78 1.42-41.19 71.33-36.4 63-67.48 116.94-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82.29 26.21.15 25.27 1 32.66.52 4.37 2.16 4.2 9.69 4.81 3.14.26 3.88 4.08.52 4.92-1.57.39-31.6.51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16.81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4.88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06.89.13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5.2 1.48 1.33 0 .11.88 26.69.87 26.8-.05 1.52.67 1.62 1.89 1.62h186.71Q386.51 304.6 346 234.33c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.06V138c-1.72.5-103.3 38.72-105.76 39.68-1.08.42-1.55.2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13.65-1.39.1 0 95.53-35.85 103-38.77-65.42-37.57-130.56-75-196-112.6l86.82 150.39-.28.33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.71-82-142.16-9.1 14.67-83.56 146.21-85.37 146.32-2.93.17-5.88.08-9.25.08q43.25-74.74 86.18-149zm51.93 129.92a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53.2 2.6 1.92 0 .11.07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.11 0 .89.52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75.13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.35.05-1.08-.62-1.16-1.35-1.15-32.35.52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95.23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85.68-27.49.58-22.59 1-29.55a2.69 2.69 0 0 0-1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0-2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9.43 1.12 1.24 1.11.1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76.31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1-1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1-2.66-1.79c2.38-3.75 5.89.92 5.86-6.14-.08-25.75.21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05.72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73.95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42.26 4.73.45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49.53 1 3.38 0 .05-.16 0-.24 0-3.61.26-3.94 1-4 4.62-.27 43.93.07 40.23.41 42.82.11.84.27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37.08-20.74 0-31.11.07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37.88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57.83 3.55zm275-10.15c-1.21 7.13.17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1-3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0-2-1.44 138 138 0 0 0-14.58.07 2.23 2.23 0 0 0-1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72.66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61.13 4-1.11 4.13-4.29.09-1.87.08 1.17.07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06.21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0-2.66 2.83c-.07 1.63-.19 38.89.29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25.43 14.92.44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.72 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11.38 37.19-.65 1.68-.19 2.38.24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31.34 15.69-1.52.47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58.32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64.48 14.4 0 16.43-5.71.84-2.37 3.5-1.77 3.18.58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.52c2.46.61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1.57 11.89-6 12.75-1.6.21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.14c3.28 0 3.66 3 .16 3.43-2.61.32-5-.42-5 5.46 0 2-.19 29.05.4 41.45.11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76.84 2.76 1.08.35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94.4 5.13-2.8 1-15.87.57-44.65.34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22.34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61.1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09.41-3.15 1.29 0 20.19-.41 21.17.21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.27a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.57 197.42-112.51-.14-.43 11.26-.18-181.52-.27-1.22 0-1.57.37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1-1.36 7.71c-.55 1.83.38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1-2-10.79c.16-2.46.8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.32 102.57 196 112.76zm-90.9-188.75c0 2.4.36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51.05 8.04.01 11.61.02 41.65zm105.75-15.05c0 2.13 1.07 38.68 1.09 39.13.34 9.94-25.58 5.77-25.23-2.59.08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1-.36.12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88.07-14.91zm-80.15 103.83c0 1.8.41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81.05 4.5-.03 13.68.02 18.59zm212.32 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z"],sitrox:[448,512,[],"e44a","M212.439 0.00846128V0H448V128H64C64 57.6008 141.755 0.475338 212.439 0.00846128ZM237.256 192V192.007C307.135 192.475 384 249.6 384 320H210.809V319.995C140.915 319.563 64 262.424 64 192H237.256ZM235.565 511.993C306.251 511.521 384 454.399 384 384H0V512H235.565V511.993Z"],discourse:[448,512,[],"f393","M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"],joomla:[448,512,[],"f1aa","M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z"],mastodon:[448,512,[],"f4f6","M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"],airbnb:[448,512,[],"f834","M224 373.12c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.61-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.15 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.07 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.72-231.18 115.87-241.56 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.48 114.84 239.09 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.12C280.27 35.93 273.13 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.19 22 349.81-3.22 419.14 48.74 480 111.63 480c21.71 0 60.61-6.06 112.37-62.4 58.68 63.78 101.26 62.4 112.37 62.4 62.89.05 114.85-60.86 89.61-130.19.02-3.89-16.82-38.9-16.82-39.58z"],"wolf-pack-battalion":[512,512,[],"f514","M267.73 471.53l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.21 456.43 239.73l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.18l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.79l-58 38.71-3.52 93.25L369.78 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.33 59.82-3.52-93.25-58.06-38.71C185 65.1 135.77 22.87 95.3 0c-17.54 61.12-4.4 118.76 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.35 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.06 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1-18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.68 376.52L181.52 366c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z"],"buy-n-large":[576,512,[],"f8a6","M288 32C133.27 32 7.79 132.32 7.79 256S133.27 480 288 480s280.21-100.32 280.21-224S442.73 32 288 32zm-85.39 357.19L64.1 390.55l77.25-290.74h133.44c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1-1.5 6.85 77.39 77.39 0 0 0-17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.71 61.52zM358 207.11h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.86 182.08H306.79L322.63 328a78.8 78.8 0 0 0 11.47.83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.36h103.87zM211.7 269.39H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.71h21.37c18 0 35.38-14.64 39.21-30.14C265.23 168.71 251.07 170 233 170z"],gulp:[256,512,[],"f3ae","M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z"],"creative-commons-sampling-plus":[496,512,[],"f4f1","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z"],strava:[384,512,[],"f428","M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z"],ember:[640,512,[],"f423","M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z"],"canadian-maple-leaf":[512,512,[],"f785","M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z"],teamspeak:[576,512,[],"f4f9","M152.8 37.2c-32.2 38.1-56.1 82.6-69.9 130.5c0 .2-.1 .3-.1 .5C43.5 184.4 16 223 16 268c0 59.6 48.4 108 108 108s108-48.4 108-108c0-53.5-38.9-97.9-90-106.5c15.7-41.8 40.4-79.6 72.3-110.7c1.8-1.6 4-2.6 6.3-3.1c37.2-11.5 76.7-13.3 114.8-5.2C454.7 67.6 534 180.7 517.1 301.3c-8.4 62.6-38.6 112.7-87.7 151.4c-50.1 39.7-107.5 54.3-170.2 52.2l-24-1c12.4 2.8 25 4.9 37.6 6.3c40.7 4.2 81.4 2.1 120.1-12.5c94-35.5 149.3-102.3 162.9-202.5c4.8-52.6-5.8-105.4-30.8-152C454.6 11.3 290.8-38.4 159 32c-2.4 1.4-4.5 3.1-6.3 5.2zM309.4 433.9c-2.1 11.5-4.2 21.9-14.6 31.3c53.2-1 123.2-29.2 161.8-97.1c39.7-69.9 37.6-139.9-6.3-207.8C413.8 105 360.5 77.9 293.7 73.7c1.5 2.3 3.2 4.4 5.2 6.3l5.2 6.3c25.1 31.3 37.6 67.9 42.8 107.5c2.1 15.7-1 30.3-13.6 41.8c-4.2 3.1-5.2 6.3-4.2 10.4l7.3 17.7L365.7 318c5.2 11.5 4.2 19.8-6.3 28.2c-3.2 2.5-6.7 4.6-10.4 6.3l-18.8 8.4 3.1 13.6c3.1 6.3 1 12.5-3.1 17.7c-2.5 2.4-3.8 5.9-3.1 9.4c2.1 11.5-2.1 19.8-12.5 25.1c-2.1 1-4.2 5.2-5.2 7.3zm-133.6-3.1c16.7 11.5 34.5 20.9 53.2 26.1c24 5.2 41.8-6.3 44.9-30.3c1-8.4 5.2-14.6 12.5-17.7c7.3-4.2 8.4-7.3 2.1-13.6l-9.4-8.4 13.6-4.2c6.3-2.1 7.3-5.2 5.2-11.5c-1.4-3-2.4-6.2-3.1-9.4c-3.1-14.6-2.1-15.7 11.5-18.8c8.4-3.1 15.7-6.3 21.9-12.5c3.1-2.1 3.1-4.2 1-8.4l-16.7-30.3c-1-1.9-2.1-3.8-3.1-5.7c-6.4-11.7-13-23.6-15.7-37.1c-2.1-9.4-1-17.7 8.4-24c5.2-4.2 8.4-9.4 8.4-16.7c-.4-10.1-1.5-20.3-3.1-30.3c-6.3-37.6-23-68.9-51.2-95c-5.2-4.2-9.4-6.3-16.7-4.2L203.9 91.5c2 1.2 4 2.4 6 3.6l0 0c6.3 3.7 12.2 7.3 17 12.1c30.3 26.1 41.8 61.6 45.9 100.2c1 8.4 0 16.7-7.3 21.9c-8.4 5.2-10.4 12.5-7.3 20.9c4.9 13.2 10.4 26 16.7 38.6L291.6 318c-6.3 8.4-13.6 11.5-21.9 14.6c-12.5 3.1-14.6 7.3-10.4 20.9c.6 1.5 1.4 2.8 2.1 4.2c2.1 5.2 1 8.4-4.2 10.4l-12.5 3.1 5.2 4.2 4.2 4.2c4.2 5.2 4.2 8.4-2.1 10.4c-7.3 4.2-11.5 9.4-11.5 17.7c0 12.5-7.3 19.8-18.8 24c-3.8 1-7.6 1.5-11.5 1l-34.5-2.1z"],pushed:[432,512,[],"f3e1","M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z"],"wordpress-simple":[512,512,[],"f411","M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z"],nutritionix:[400,512,[],"f3d6","M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z"],wodu:[640,512,[],"e088","M178.414 339.706H141.1L112.166 223.475h-.478L83.228 339.706H45.2L0 168.946H37.548L64.574 285.177h.478L94.707 168.946h35.157l29.178 117.667h.479L187.5 168.946h36.831zM271.4 212.713c38.984 0 64.1 25.828 64.1 65.291 0 39.222-25.111 65.05-64.1 65.05-38.743 0-63.855-25.828-63.855-65.05C207.547 238.541 232.659 212.713 271.4 212.713zm0 104.753c23.2 0 30.133-19.852 30.133-39.462 0-19.852-6.934-39.7-30.133-39.7-27.7 0-29.894 19.85-29.894 39.7C241.508 297.614 248.443 317.466 271.4 317.466zM435.084 323.922h-.478c-7.893 13.392-21.765 19.132-37.548 19.132-37.31 0-55.485-32.045-55.485-66.246 0-33.243 18.415-64.095 54.767-64.095 14.589 0 28.938 6.218 36.831 18.416h.24V168.946h33.96v170.76H435.084zM405.428 238.3c-22.24 0-29.894 19.134-29.894 39.463 0 19.371 8.848 39.7 29.894 39.7 22.482 0 29.178-19.613 29.178-39.94C434.606 257.436 427.432 238.3 405.428 238.3zM592.96 339.706H560.673V322.487h-.718c-8.609 13.87-23.436 20.567-37.786 20.567-36.113 0-45.2-20.328-45.2-50.941V216.061h33.959V285.9c0 20.329 5.979 30.372 21.765 30.372 18.415 0 26.306-10.283 26.306-35.393V216.061H592.96zM602.453 302.876H640v36.83H602.453z"],"google-pay":[640,512,[],"e079","M105.72,215v41.25h57.1a49.66,49.66,0,0,1-21.14,32.6c-9.54,6.55-21.72,10.28-36,10.28-27.6,0-50.93-18.91-59.3-44.22a65.61,65.61,0,0,1,0-41l0,0c8.37-25.46,31.7-44.37,59.3-44.37a56.43,56.43,0,0,1,40.51,16.08L176.47,155a101.24,101.24,0,0,0-70.75-27.84,105.55,105.55,0,0,0-94.38,59.11,107.64,107.64,0,0,0,0,96.18v.15a105.41,105.41,0,0,0,94.38,59c28.47,0,52.55-9.53,70-25.91,20-18.61,31.41-46.15,31.41-78.91A133.76,133.76,0,0,0,205.38,215Zm389.41-4c-10.13-9.38-23.93-14.14-41.39-14.14-22.46,0-39.34,8.34-50.5,24.86l20.85,13.26q11.45-17,31.26-17a34.05,34.05,0,0,1,22.75,8.79A28.14,28.14,0,0,1,487.79,248v5.51c-9.1-5.07-20.55-7.75-34.64-7.75-16.44,0-29.65,3.88-39.49,11.77s-14.82,18.31-14.82,31.56a39.74,39.74,0,0,0,13.94,31.27c9.25,8.34,21,12.51,34.79,12.51,16.29,0,29.21-7.3,39-21.89h1v17.72h22.61V250C510.25,233.45,505.26,220.34,495.13,211ZM475.9,300.3a37.32,37.32,0,0,1-26.57,11.16A28.61,28.61,0,0,1,431,305.21a19.41,19.41,0,0,1-7.77-15.63c0-7,3.22-12.81,9.54-17.42s14.53-7,24.07-7C470,265,480.3,268,487.64,273.94,487.64,284.07,483.68,292.85,475.9,300.3Zm-93.65-142A55.71,55.71,0,0,0,341.74,142H279.07V328.74H302.7V253.1h39c16,0,29.5-5.36,40.51-15.93.88-.89,1.76-1.79,2.65-2.68A54.45,54.45,0,0,0,382.25,158.26Zm-16.58,62.23a30.65,30.65,0,0,1-23.34,9.68H302.7V165h39.63a32,32,0,0,1,22.6,9.23A33.18,33.18,0,0,1,365.67,220.49ZM614.31,201,577.77,292.7h-.45L539.9,201H514.21L566,320.55l-29.35,64.32H561L640,201Z"],intercom:[448,512,[],"f7af","M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z"],zhihu:[640,512,[],"f63f","M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z"],korvue:[446,512,[],"f42f","M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z"],pix:[512,512,[],"e43a","M242.4 292.5C247.8 287.1 257.1 287.1 262.5 292.5L339.5 369.5C353.7 383.7 372.6 391.5 392.6 391.5H407.7L310.6 488.6C280.3 518.1 231.1 518.1 200.8 488.6L103.3 391.2H112.6C132.6 391.2 151.5 383.4 165.7 369.2L242.4 292.5zM262.5 218.9C256.1 224.4 247.9 224.5 242.4 218.9L165.7 142.2C151.5 127.1 132.6 120.2 112.6 120.2H103.3L200.7 22.76C231.1-7.586 280.3-7.586 310.6 22.76L407.8 119.9H392.6C372.6 119.9 353.7 127.7 339.5 141.9L262.5 218.9zM112.6 142.7C126.4 142.7 139.1 148.3 149.7 158.1L226.4 234.8C233.6 241.1 243 245.6 252.5 245.6C261.9 245.6 271.3 241.1 278.5 234.8L355.5 157.8C365.3 148.1 378.8 142.5 392.6 142.5H430.3L488.6 200.8C518.9 231.1 518.9 280.3 488.6 310.6L430.3 368.9H392.6C378.8 368.9 365.3 363.3 355.5 353.5L278.5 276.5C264.6 262.6 240.3 262.6 226.4 276.6L149.7 353.2C139.1 363 126.4 368.6 112.6 368.6H80.78L22.76 310.6C-7.586 280.3-7.586 231.1 22.76 200.8L80.78 142.7H112.6z"],"steam-symbol":[448,512,[],"f3f6","M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z"]};!function(c){try{for(var l=arguments.length,s=new Array(1<l?l-1:0),a=1;a<l;a++)s[a-1]=arguments[a];c.apply(void 0,s)}catch(c){if(!M)throw c}}((function(){d("fab",p),d("fa-brands",p)}))}(),function(){"use strict";var c={},l={};try{"undefined"!=typeof window&&(c=window),"undefined"!=typeof document&&(l=document)}catch(c){}var s=void 0===(v=(c.navigator||{}).userAgent)?"":v,a=c,z=l;function e(c,l){var s,a=Object.keys(c);return Object.getOwnPropertySymbols&&(s=Object.getOwnPropertySymbols(c),l&&(s=s.filter((function(l){return Object.getOwnPropertyDescriptor(c,l).enumerable}))),a.push.apply(a,s)),a}function H(c){for(var l=1;l<arguments.length;l++){var s=null!=arguments[l]?arguments[l]:{};l%2?e(Object(s),!0).forEach((function(l){t(c,l,s[l])})):Object.getOwnPropertyDescriptors?Object.defineProperties(c,Object.getOwnPropertyDescriptors(s)):e(Object(s)).forEach((function(l){Object.defineProperty(c,l,Object.getOwnPropertyDescriptor(s,l))}))}return c}function t(c,l,s){return l in c?Object.defineProperty(c,l,{value:s,enumerable:!0,configurable:!0,writable:!0}):c[l]=s,c}function V(c,l){(null==l||l>c.length)&&(l=c.length);for(var s=0,a=new Array(l);s<l;s++)a[s]=c[s];return a}a.document,z.documentElement&&z.head&&"function"==typeof z.addEventListener&&z.createElement,~s.indexOf("MSIE")||s.indexOf("Trident/");var r="___FONT_AWESOME___",M=function(){try{return!0}catch(c){return!1}}(),h="classic",n="sharp",i=[h,n];function m(c){return new Proxy(c,{get:function(c,l){return l in c?c[l]:c[h]}})}m((t(f={},h,{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit",fakd:"kit","fa-kit":"kit","fa-kit-duotone":"kit"}),t(f,n,{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"}),f));var o=m((t(C={},h,{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"}),t(C,n,{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"}),C)),f=(s=(m((t(v={},h,{fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"}),t(v,n,{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"}),v)),m((t(c={},h,{"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"}),t(c,n,{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"}),c)),m((t(l={},h,{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"}),t(l,n,{900:"fass",400:"fasr",300:"fasl",100:"fast"}),l)),z=[1,2,3,4,5,6,7,8,9,10]).concat([11,12,13,14,15,16,17,18,19,20]),"duotone-group"),C="swap-opacity",v="primary";c="secondary",l=new Set,Object.keys(o[h]).map(l.add.bind(l)),Object.keys(o[n]).map(l.add.bind(l)),[].concat(i,function(c){if(Array.isArray(c))return V(c)}(l)||function(c){if("undefined"!=typeof Symbol&&null!=c[Symbol.iterator]||null!=c["@@iterator"])return Array.from(c)}(l)||function(c,l){if(c){if("string"==typeof c)return V(c,l);var s=Object.prototype.toString.call(c).slice(8,-1);return"Map"===(s="Object"===s&&c.constructor?c.constructor.name:s)||"Set"===s?Array.from(c):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?V(c,l):void 0}}(l)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",f,C,v,c]).concat(z.map((function(c){return"".concat(c,"x")}))).concat(s.map((function(c){return"w-".concat(c)}))),(a=a||{})[r]||(a[r]={}),a[r].styles||(a[r].styles={}),a[r].hooks||(a[r].hooks={}),a[r].shims||(a[r].shims=[]);var L=a[r];function u(c){return Object.keys(c).reduce((function(l,s){var a=c[s];return a.icon?l[a.iconName]=a.icon:l[s]=a,l}),{})}function d(c,l,s){s=void 0!==(a=(2<arguments.length&&void 0!==s?s:{}).skipHooks)&&a;var a=u(l);"function"!=typeof L.hooks.addPack||s?L.styles[c]=H(H({},L.styles[c]||{}),a):L.hooks.addPack(c,u(l)),"fas"===c&&d("fa",l)}var p={"trash-can":[448,512,[61460,"trash-alt"],"f2ed","M170.5 51.6L151.5 80h145l-19-28.4c-1.5-2.2-4-3.6-6.7-3.6H177.1c-2.7 0-5.2 1.3-6.7 3.6zm147-26.6L354.2 80H368h48 8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8V432c0 44.2-35.8 80-80 80H112c-44.2 0-80-35.8-80-80V128H24c-13.3 0-24-10.7-24-24S10.7 80 24 80h8H80 93.8l36.7-55.1C140.9 9.4 158.4 0 177.1 0h93.7c18.7 0 36.2 9.4 46.6 24.9zM80 128V432c0 17.7 14.3 32 32 32H336c17.7 0 32-14.3 32-32V128H80zm80 64V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16z"],message:[512,512,["comment-alt"],"f27a","M160 368c26.5 0 48 21.5 48 48v16l72.5-54.4c8.3-6.2 18.4-9.6 28.8-9.6H448c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16V352c0 8.8 7.2 16 16 16h96zm48 124l-.2 .2-5.1 3.8-17.1 12.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V474.7v-6.4V468v-4V416H112 64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L208 492z"],"file-lines":[384,512,[128441,128462,61686,"file-alt","file-text"],"f15c","M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm56 256c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H120z"],"calendar-days":[448,512,["calendar-alt"],"f073","M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192h80v56H48V192zm0 104h80v64H48V296zm128 0h96v64H176V296zm144 0h80v64H320V296zm80-48H320V192h80v56zm0 160v40c0 8.8-7.2 16-16 16H320V408h80zm-128 0v56H176V408h96zm-144 0v56H64c-8.8 0-16-7.2-16-16V408h80zM272 248H176V192h96v56z"],"hand-point-right":[512,512,[],"f0a4","M448 128l-177.6 0c1 5.2 1.6 10.5 1.6 16l0 16 32 0 144 0c8.8 0 16-7.2 16-16s-7.2-16-16-16zM224 144c0-17.7-14.3-32-32-32c0 0 0 0 0 0l-24 0c-66.3 0-120 53.7-120 120l0 48c0 52.5 33.7 97.1 80.7 113.4c-.5-3.1-.7-6.2-.7-9.4c0-20 9.2-37.9 23.6-49.7c-4.9-9-7.6-19.4-7.6-30.3c0-15.1 5.3-29 14-40c-8.8-11-14-24.9-14-40l0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40c0 8.8 7.2 16 16 16s16-7.2 16-16l0-40 0-40zM192 64s0 0 0 0c18 0 34.6 6 48 16l208 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-82 0c1.3 5.1 2 10.5 2 16c0 25.3-14.7 47.2-36 57.6c2.6 7 4 14.5 4 22.4c0 20-9.2 37.9-23.6 49.7c4.9 9 7.6 19.4 7.6 30.3c0 35.3-28.7 64-64 64l-64 0-24 0C75.2 448 0 372.8 0 280l0-48C0 139.2 75.2 64 168 64l24 0zm64 336c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0zm16-176c0 5.5-.7 10.9-2 16l2 0 32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0 16zm-24 64l-40 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-24 0z"],"face-smile-beam":[512,512,[128522,"smile-beam"],"f5b8","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zm40-89.3l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"],"face-grin-stars":[512,512,[129321,"grin-stars"],"f587","M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM183.2 132.6c-1.3-2.8-4.1-4.6-7.2-4.6s-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L176 240.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L242.4 186c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7zm160 0c-1.3-2.8-4.1-4.6-7.2-4.6s-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L336 240.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L402.4 186c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7zm6.3 175.8c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c24.6 38.1 68.7 63.5 119.1 63.5s94.5-25.4 119.1-63.5c10.4-16.1-6.8-32.5-25.5-28.1z"],"address-book":[512,512,[62138,"contact-book"],"f2b9","M384 48c8.8 0 16 7.2 16 16V448c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H384zM96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM240 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H208zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z"],comments:[640,512,[128490,61670],"f086","M88.2 309.1c9.8-18.3 6.8-40.8-7.5-55.8C59.4 230.9 48 204 48 176c0-63.5 63.8-128 160-128s160 64.5 160 128s-63.8 128-160 128c-13.1 0-25.8-1.3-37.8-3.6c-10.4-2-21.2-.6-30.7 4.2c-4.1 2.1-8.3 4.1-12.6 6c-16 7.2-32.9 13.5-49.9 18c2.8-4.6 5.4-9.1 7.9-13.6c1.1-1.9 2.2-3.9 3.2-5.9zM0 176c0 41.8 17.2 80.1 45.9 110.3c-.9 1.7-1.9 3.5-2.8 5.1c-10.3 18.4-22.3 36.5-36.6 52.1c-6.6 7-8.3 17.2-4.6 25.9C5.8 378.3 14.4 384 24 384c43 0 86.5-13.3 122.7-29.7c4.8-2.2 9.6-4.5 14.2-6.8c15.1 3 30.9 4.5 47.1 4.5c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176zM432 480c16.2 0 31.9-1.6 47.1-4.5c4.6 2.3 9.4 4.6 14.2 6.8C529.5 498.7 573 512 616 512c9.6 0 18.2-5.7 22-14.5c3.8-8.8 2-19-4.6-25.9c-14.2-15.6-26.2-33.7-36.6-52.1c-.9-1.7-1.9-3.4-2.8-5.1C622.8 384.1 640 345.8 640 304c0-94.4-87.9-171.5-198.2-175.8c4.1 15.2 6.2 31.2 6.2 47.8l0 .6c87.2 6.7 144 67.5 144 127.4c0 28-11.4 54.9-32.7 77.2c-14.3 15-17.3 37.6-7.5 55.8c1.1 2 2.2 4 3.2 5.9c2.5 4.5 5.2 9 7.9 13.6c-17-4.5-33.9-10.7-49.9-18c-4.3-1.9-8.5-3.9-12.6-6c-9.5-4.8-20.3-6.2-30.7-4.2c-12.1 2.4-24.7 3.6-37.8 3.6c-61.7 0-110-26.5-136.8-62.3c-16 5.4-32.8 9.4-50 11.8C279 439.8 350 480 432 480z"],paste:[512,512,["file-clipboard"],"f0ea","M104.6 48H64C28.7 48 0 76.7 0 112V384c0 35.3 28.7 64 64 64h96V400H64c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H80c0 17.7 14.3 32 32 32h72.4C202 108.4 227.6 96 256 96h62c-7.1-27.6-32.2-48-62-48H215.4C211.6 20.9 188.2 0 160 0s-51.6 20.9-55.4 48zM144 56a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM448 464H256c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16l140.1 0L464 243.9V448c0 8.8-7.2 16-16 16zM256 512H448c35.3 0 64-28.7 64-64V243.9c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1H256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64z"],"face-grin-tongue-squint":[512,512,[128541,"grin-tongue-squint"],"f58a","M464 256c0-114.9-93.1-208-208-208S48 141.1 48 256c0 81.7 47.1 152.4 115.7 186.4c-2.4-8.4-3.7-17.3-3.7-26.4V392.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V416c0 9.2-1.3 18-3.7 26.4C416.9 408.4 464 337.7 464 256zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm116-98.9c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 416V378.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V416c0 35.3 28.7 64 64 64s64-28.7 64-64z"],"face-flushed":[512,512,[128563,"flushed"],"f579","M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM160.4 248a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm216-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 336c-13.3 0-24 10.7-24 24s10.7 24 24 24H320c13.3 0 24-10.7 24-24s-10.7-24-24-24H192zM160 176a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm144-80a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 0a80 80 0 1 0 -160 0 80 80 0 1 0 160 0z"],"square-caret-right":[448,512,["caret-square-right"],"f152","M400 96c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320zM384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z"],"square-minus":[448,512,[61767,"minus-square"],"f146","M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM152 232H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z"],compass:[512,512,[129517],"f14e","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm306.7 69.1L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],"square-caret-down":[448,512,["caret-square-down"],"f150","M384 432c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0zm64-16c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z"],"face-kiss-beam":[512,512,[128537,"kiss-beam"],"f597","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm304.7 41.7c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 427.1 257.4 432 240 432c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-68.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"],lightbulb:[384,512,[128161],"f0eb","M297.2 248.9C311.6 228.3 320 203.2 320 176c0-70.7-57.3-128-128-128S64 105.3 64 176c0 27.2 8.4 52.3 22.8 72.9c3.7 5.3 8.1 11.3 12.8 17.7l0 0c12.9 17.7 28.3 38.9 39.8 59.8c10.4 19 15.7 38.8 18.3 57.5H109c-2.2-12-5.9-23.7-11.8-34.5c-9.9-18-22.2-34.9-34.5-51.8l0 0 0 0c-5.2-7.1-10.4-14.2-15.4-21.4C27.6 247.9 16 213.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176c0 37.3-11.6 71.9-31.4 100.3c-5 7.2-10.2 14.3-15.4 21.4l0 0 0 0c-12.3 16.8-24.6 33.7-34.5 51.8c-5.9 10.8-9.6 22.5-11.8 34.5H226.4c2.6-18.7 7.9-38.6 18.3-57.5c11.5-20.9 26.9-42.1 39.8-59.8l0 0 0 0 0 0c4.7-6.4 9-12.4 12.7-17.7zM192 128c-26.5 0-48 21.5-48 48c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16s-7.2 16-16 16zm0 384c-44.2 0-80-35.8-80-80V416H272v16c0 44.2-35.8 80-80 80z"],flag:[448,512,[127988,61725],"f024","M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24V64 350.5 400v88c0 13.3 10.7 24 24 24s24-10.7 24-24V388l80.3-20.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L48 52V24zm0 77.5l96.6-24.2c27-6.7 55.5-3.6 80.4 8.8c54.9 27.4 118.7 29.7 175 6.8V334.7l-24.4 9.1c-33.7 12.6-71.2 10.7-103.4-5.4c-48.2-24.1-103.3-30.1-155.6-17.1L48 338.5v-237z"],"square-check":[448,512,[9745,9989,61510,"check-square"],"f14a","M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"],"circle-dot":[512,512,[128280,"dot-circle"],"f192","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z"],"face-dizzy":[512,512,["dizzy"],"f567","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM103 135c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9zm192 0c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9z"],futbol:[512,512,[9917,"futbol-ball","soccer-ball"],"f1e3","M435.4 361.3l-89.7-6c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-22 87.2c-14.4 3.2-29.4 4.8-44.8 4.8s-30.3-1.7-44.8-4.8l-22-87.2c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-89.7 6C61.7 335.9 51.9 307 49 276.2L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15L100.4 118c19.9-22.4 44.6-40.5 72.4-52.7l69.1 57.6c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l69.1-57.6c27.8 12.2 52.5 30.3 72.4 52.7l-33.4 83.4c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9L463 276.2c-3 30.8-12.7 59.7-27.6 85.1zM256 48l.9 0h-1.8l.9 0zM56.7 196.2c.9-3 1.9-6.1 2.9-9.1l-2.9 9.1zM132 423l3.8 2.7c-1.3-.9-2.5-1.8-3.8-2.7zm248.1-.1c-1.3 1-2.7 2-4 2.9l4-2.9zm75.2-226.6l-3-9.2c1.1 3 2.1 6.1 3 9.2zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z"],"pen-to-square":[512,512,["edit"],"f044","M441 58.9L453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2L344 121.9 390.1 168 255.8 302.2c-2.9 2.9-6.5 5-10.4 6.1l-58.5 16.7 16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25L175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25C446.8-3.1 401.2-3.1 373.1 25zM88 64C39.4 64 0 103.4 0 152V424c0 48.6 39.4 88 88 88H360c48.6 0 88-39.4 88-88V312c0-13.3-10.7-24-24-24s-24 10.7-24 24V424c0 22.1-17.9 40-40 40H88c-22.1 0-40-17.9-40-40V152c0-22.1 17.9-40 40-40H200c13.3 0 24-10.7 24-24s-10.7-24-24-24H88z"],"hourglass-half":[384,512,["hourglass-2"],"f252","M0 24C0 10.7 10.7 0 24 0H360c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8V67c0 40.3-16 79-44.5 107.5L225.9 256l81.5 81.5C336 366 352 404.7 352 445v19h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V445c0-40.3 16-79 44.5-107.5L158.1 256 76.5 174.5C48 146 32 107.3 32 67V48H24C10.7 48 0 37.3 0 24zM110.5 371.5c-3.9 3.9-7.5 8.1-10.7 12.5H284.2c-3.2-4.4-6.8-8.6-10.7-12.5L192 289.9l-81.5 81.5zM284.2 128C297 110.4 304 89 304 67V48H80V67c0 22.1 7 43.4 19.8 61H284.2z"],"eye-slash":[640,512,[],"f070","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm51.3 163.3l-41.9-33C378.8 425.4 350.7 432 320 432c-65.2 0-118.8-29.6-159.9-67.7C121.6 328.5 95 286 81.4 256c8.3-18.4 21.5-41.5 39.4-64.8L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5zm-88-69.3L302 334c-23.5-5.4-43.1-21.2-53.7-42.3l-56.1-44.2c-.2 2.8-.3 5.6-.3 8.5c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8z"],hand:[512,512,[129306,9995,"hand-paper"],"f256","M256 0c-25.3 0-47.2 14.7-57.6 36c-7-2.6-14.5-4-22.4-4c-35.3 0-64 28.7-64 64V261.5l-2.7-2.7c-25-25-65.5-25-90.5 0s-25 65.5 0 90.5L106.5 437c48 48 113.1 75 181 75H296h8c1.5 0 3-.1 4.5-.4c91.7-6.2 165-79.4 171.1-171.1c.3-1.5 .4-3 .4-4.5V160c0-35.3-28.7-64-64-64c-5.5 0-10.9 .7-16 2V96c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4C303.2 14.7 281.3 0 256 0zM240 96.1c0 0 0-.1 0-.1V64c0-8.8 7.2-16 16-16s16 7.2 16 16V95.9c0 0 0 .1 0 .1V232c0 13.3 10.7 24 24 24s24-10.7 24-24V96c0 0 0 0 0-.1c0-8.8 7.2-16 16-16s16 7.2 16 16v55.9c0 0 0 .1 0 .1v80c0 13.3 10.7 24 24 24s24-10.7 24-24V160.1c0 0 0-.1 0-.1c0-8.8 7.2-16 16-16s16 7.2 16 16V332.9c-.1 .6-.1 1.3-.2 1.9c-3.4 69.7-59.3 125.6-129 129c-.6 0-1.3 .1-1.9 .2H296h-8.5c-55.2 0-108.1-21.9-147.1-60.9L52.7 315.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L119 336.4c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V96c0-8.8 7.2-16 16-16c8.8 0 16 7.1 16 15.9V232c0 13.3 10.7 24 24 24s24-10.7 24-24V96.1z"],"hand-spock":[576,512,[128406],"f259","M170.2 80.8C161 47 180.8 12 214.6 2.4c34-9.6 69.4 10.2 79 44.2l30.3 107.1L337.1 84c6.6-34.7 40.1-57.5 74.8-50.9c31.4 6 53 33.9 52 64.9c10-2.6 20.8-2.8 31.5-.1c34.3 8.6 55.1 43.3 46.6 77.6L486.7 397.2C469.8 464.7 409.2 512 339.6 512c-11.2 0-22.5 0-33.7 0c-56.9 0-112.2-19-157.2-53.9l-92-71.6c-27.9-21.7-32.9-61.9-11.2-89.8s61.9-32.9 89.8-11.2l17 13.2L100.5 167.5c-13-32.9 3.2-70.1 36-83c11.1-4.4 22.7-5.4 33.7-3.7zm77.1-21.2c-2.4-8.5-11.2-13.4-19.7-11s-13.4 11.2-11 19.7l54.8 182.4c3.5 12.3-3.3 25.2-15.4 29.3s-25.3-2-30-13.9L174.9 138.1c-3.2-8.2-12.5-12.3-20.8-9s-12.3 12.5-9 20.8l73.3 185.6c12 30.3-23.7 57-49.4 37l-63.1-49.1c-7-5.4-17-4.2-22.5 2.8s-4.2 17 2.8 22.5l92 71.6c36.5 28.4 81.4 43.8 127.7 43.8c11.2 0 22.5 0 33.7 0c47.5 0 89-32.4 100.5-78.5l55.4-221.6c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-26 104C435.6 271.8 425 280 413 280c-16.5 0-28.9-15-25.8-31.2L415.7 99c1.7-8.7-4-17.1-12.7-18.7s-17.1 4-18.7 12.7L352.5 260c-2.2 11.6-12.4 20-24.2 20c-11 0-20.7-7.3-23.7-17.9L247.4 59.6z"],"face-kiss":[512,512,[128535,"kiss"],"f596","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm304.7 25.7c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 411.1 257.4 416 240 416c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.8-.5-.1-.1-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"face-grin-tongue":[512,512,[128539,"grin-tongue"],"f589","M464 256c0-114.9-93.1-208-208-208S48 141.1 48 256c0 81.7 47.1 152.4 115.7 186.4c-2.4-8.4-3.7-17.3-3.7-26.4V363.6c-8.9-8-16.7-17.1-23.1-27.1c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5c18.7-4.4 35.9 12 25.5 28.1c-6.4 9.9-14.2 19-23 27V416c0 9.2-1.3 18-3.7 26.4C416.9 408.4 464 337.7 464 256zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 416V378.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V416c0 35.3 28.7 64 64 64s64-28.7 64-64z"],"chess-bishop":[320,512,[9821],"f43a","M104 0C90.7 0 80 10.7 80 24c0 11.2 7.6 20.6 18 23.2c-7.8 8-16.1 17-24.4 27C38.2 116.7 0 178.8 0 250.9c0 44.8 24.6 72.2 48 87.8V352H96V325c0-9-5-17.2-13-21.3c-18-9.3-35-24.7-35-52.7c0-55.5 29.8-106.8 62.4-145.9c16-19.2 32.1-34.8 44.2-45.5c1.9-1.7 3.7-3.2 5.3-4.6c1.7 1.4 3.4 3 5.3 4.6c12.1 10.7 28.2 26.3 44.2 45.5c5.3 6.3 10.5 13 15.5 20L159 191c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57.8-57.8c12.8 25.9 21.2 54.3 21.2 83.8c0 28-17 43.4-35 52.7c-8 4.1-13 12.3-13 21.3v27h48V338.7c23.4-15.6 48-42.9 48-87.8c0-72.1-38.2-134.2-73.6-176.7c-8.3-9.9-16.6-19-24.4-27c10.3-2.7 18-12.1 18-23.2c0-13.3-10.7-24-24-24H160 104zM52.7 464l16.6-32H250.8l16.6 32H52.7zm207.9-80H59.5c-12 0-22.9 6.7-28.4 17.3L4.6 452.5c-3 5.8-4.6 12.2-4.6 18.7C0 493.8 18.2 512 40.8 512H279.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2c-5.5-10.6-16.5-17.3-28.4-17.3z"],"face-grin-wink":[512,512,["grin-wink"],"f58c","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z"],"face-grin-wide":[512,512,[128515,"grin-alt"],"f581","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM224 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm96 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z"],"face-frown-open":[512,512,[128550,"frown-open"],"f57a","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM182.4 382.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"hand-point-up":[384,512,[9757],"f0a6","M64 64V241.6c5.2-1 10.5-1.6 16-1.6H96V208 64c0-8.8-7.2-16-16-16s-16 7.2-16 16zM80 288c-17.7 0-32 14.3-32 32c0 0 0 0 0 0v24c0 66.3 53.7 120 120 120h48c52.5 0 97.1-33.7 113.4-80.7c-3.1 .5-6.2 .7-9.4 .7c-20 0-37.9-9.2-49.7-23.6c-9 4.9-19.4 7.6-30.3 7.6c-15.1 0-29-5.3-40-14c-11 8.8-24.9 14-40 14H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H120 80zM0 320s0 0 0 0c0-18 6-34.6 16-48V64C16 28.7 44.7 0 80 0s64 28.7 64 64v82c5.1-1.3 10.5-2 16-2c25.3 0 47.2 14.7 57.6 36c7-2.6 14.5-4 22.4-4c20 0 37.9 9.2 49.7 23.6c9-4.9 19.4-7.6 30.3-7.6c35.3 0 64 28.7 64 64v64 24c0 92.8-75.2 168-168 168H168C75.2 512 0 436.8 0 344V320zm336-64c0-8.8-7.2-16-16-16s-16 7.2-16 16v48 16c0 8.8 7.2 16 16 16s16-7.2 16-16V256zM160 240c5.5 0 10.9 .7 16 2v-2V208c0-8.8-7.2-16-16-16s-16 7.2-16 16v32h16zm64 24v40c0 8.8 7.2 16 16 16s16-7.2 16-16V256 240c0-8.8-7.2-16-16-16s-16 7.2-16 16v24z"],bookmark:[384,512,[128278,61591],"f02e","M0 48C0 21.5 21.5 0 48 0l0 48V441.4l130.1-92.9c8.3-6 19.6-6 27.9 0L336 441.4V48H48V0H336c26.5 0 48 21.5 48 48V488c0 9-5 17.2-13 21.3s-17.6 3.4-24.9-1.8L192 397.5 37.9 507.5c-7.3 5.2-16.9 5.9-24.9 1.8S0 497 0 488V48z"],"hand-point-down":[384,512,[],"f0a7","M64 448l0-177.6c5.2 1 10.5 1.6 16 1.6l16 0 0 32 0 144c0 8.8-7.2 16-16 16s-16-7.2-16-16zM80 224c-17.7 0-32-14.3-32-32c0 0 0 0 0 0l0-24c0-66.3 53.7-120 120-120l48 0c52.5 0 97.1 33.7 113.4 80.7c-3.1-.5-6.2-.7-9.4-.7c-20 0-37.9 9.2-49.7 23.6c-9-4.9-19.4-7.6-30.3-7.6c-15.1 0-29 5.3-40 14c-11-8.8-24.9-14-40-14l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-40 0-40 0zM0 192s0 0 0 0c0 18 6 34.6 16 48l0 208c0 35.3 28.7 64 64 64s64-28.7 64-64l0-82c5.1 1.3 10.5 2 16 2c25.3 0 47.2-14.7 57.6-36c7 2.6 14.5 4 22.4 4c20 0 37.9-9.2 49.7-23.6c9 4.9 19.4 7.6 30.3 7.6c35.3 0 64-28.7 64-64l0-64 0-24C384 75.2 308.8 0 216 0L168 0C75.2 0 0 75.2 0 168l0 24zm336 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64zM160 272c5.5 0 10.9-.7 16-2l0 2 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-32 16 0zm64-24l0-40c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-24z"],folder:[512,512,[128193,128447,61716,"folder-blank"],"f07b","M0 96C0 60.7 28.7 32 64 32H196.1c19.1 0 37.4 7.6 50.9 21.1L289.9 96H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16H286.6c-10.6 0-20.8-4.2-28.3-11.7L213.1 87c-4.5-4.5-10.6-7-17-7H64z"],user:[448,512,[128100,62144],"f007","M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464H398.7c-8.9-63.3-63.3-112-129-112H178.3c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3z"],"square-caret-left":[448,512,["caret-square-left"],"f191","M48 416c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320zm16 64c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480zm64-224c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z"],star:[576,512,[11088,61446],"f005","M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.7 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z"],"chess-knight":[448,512,[9822],"f441","M226.6 48H117.3l17.1 12.8c6 4.5 9.6 11.6 9.6 19.2s-3.6 14.7-9.6 19.2l-6.5 4.9c-10 7.5-16 19.3-16 31.9l-.3 91c0 10.2 4.9 19.9 13.2 25.8l1.9 1.3c9.9 7.1 23.3 7 33.2-.1l49.9-36.3c10.7-7.8 25.7-5.4 33.5 5.3s5.4 25.7-5.3 33.5l-49.9 36.3-53.8 39.1c-7.3 5.3-13 12.2-16.9 20.1H66.8c5.3-22.1 17.8-41.9 35.9-56.3c-1.3-.8-2.6-1.7-3.8-2.6L97 291.8c-21-15-33.4-39.2-33.3-65l.3-91c.1-19.8 6.7-38.7 18.6-53.9l-.4-.3C70.7 73 64 59.6 64 45.3C64 20.3 84.3 0 109.3 0H226.6C331.2 0 416 84.8 416 189.4c0 11.1-1 22.2-2.9 33.2L390.1 352H341.3l24.5-137.8c1.5-8.2 2.2-16.5 2.2-24.8C368 111.3 304.7 48 226.6 48zM85.2 432L68.7 464H379.3l-16.6-32H85.2zm315.7-30.7l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H56.8C34.2 512 16 493.8 16 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C52.5 390.7 63.5 384 75.5 384h297c12 0 22.9 6.7 28.4 17.3zM172 128a20 20 0 1 1 0 40 20 20 0 1 1 0-40z"],"face-laugh-squint":[512,512,["laugh-squint"],"f59b","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zm2.8-183.3l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 141.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z"],"face-laugh":[512,512,["laugh"],"f599","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"folder-open":[576,512,[128194,128449,61717],"f07c","M384 480h48c11.4 0 21.9-6 27.6-15.9l112-192c5.8-9.9 5.8-22.1 .1-32.1S555.5 224 544 224H144c-11.4 0-21.9 6-27.6 15.9L48 357.1V96c0-8.8 7.2-16 16-16H181.5c4.2 0 8.3 1.7 11.3 4.7l26.5 26.5c21 21 49.5 32.8 79.2 32.8H416c8.8 0 16 7.2 16 16v32h48V160c0-35.3-28.7-64-64-64H298.5c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H87.7 384z"],clipboard:[384,512,[128203],"f328","M280 64h40c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64h40 9.6C121 27.5 153.3 0 192 0s71 27.5 78.4 64H280zM64 112c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V128c0-8.8-7.2-16-16-16H304v24c0 13.3-10.7 24-24 24H192 104c-13.3 0-24-10.7-24-24V112H64zm128-8a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],"chess-queen":[512,512,[9819],"f445","M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-95.2-8c-18.1 0-31.3 12.8-35.6 26.9c-8 26.2-32.4 45.2-61.2 45.2c-10 0-19.4-2.3-27.7-6.3c-7.6-3.7-16.7-3.3-24 1.2C.7 162.1-3.1 177.1 3.7 188.9L97.6 352H153l-83-144.1c40.5-2.2 75.3-25.9 93.1-59.8c22 26.8 55.4 43.9 92.8 43.9s70.8-17.1 92.8-43.9c17.8 34 52.6 57.7 93.1 59.8L359 352h55.4l93.9-163.1c6.8-11.7 3-26.7-8.6-33.8c-7.3-4.5-16.4-4.9-24-1.2c-8.4 4-17.7 6.3-27.7 6.3c-28.8 0-53.2-19-61.2-45.2C382.5 100.8 369.3 88 351.2 88c-14.5 0-26.3 8.5-32.4 19.3c-12.4 22-35.9 36.7-62.8 36.7s-50.4-14.8-62.8-36.7C187.1 96.5 175.4 88 160.8 88zM133.2 432H378.8l16.6 32H116.7l16.6-32zm283.7-30.7c-5.5-10.6-16.5-17.3-28.4-17.3h-265c-12 0-22.9 6.7-28.4 17.3L68.6 452.5c-3 5.8-4.6 12.2-4.6 18.7c0 22.5 18.2 40.8 40.8 40.8H407.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2z"],"hand-back-fist":[448,512,["hand-rock"],"f255","M144 64c0-8.8 7.2-16 16-16s16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16V264c0 31.3-20 58-48 67.9c-9.6 3.4-16 12.5-16 22.6V488c0 13.3 10.7 24 24 24s24-10.7 24-24V370.2c38-20.1 64-60.1 64-106.2V160c0-35.3-28.7-64-64-64c-2.8 0-5.6 .2-8.3 .5C332.8 77.1 311.9 64 288 64c-2.8 0-5.6 .2-8.3 .5C268.8 45.1 247.9 32 224 32c-2.8 0-5.6 .2-8.3 .5C204.8 13.1 183.9 0 160 0C124.7 0 96 28.7 96 64v64.3c-11.7 7.4-22.5 16.4-32 26.9l17.8 16.1L64 155.2l-9.4 10.5C40 181.8 32 202.8 32 224.6v12.8c0 49.6 24.2 96.1 64.8 124.5l13.8-19.7L96.8 361.9l8.9 6.2c6.9 4.8 14.4 8.6 22.3 11.3V488c0 13.3 10.7 24 24 24s24-10.7 24-24V359.9c0-12.6-9.8-23.1-22.4-23.9c-7.3-.5-14.3-2.9-20.3-7.1l-13.1 18.7 13.1-18.7-8.9-6.2C96.6 303.1 80 271.3 80 237.4V224.6c0-9.9 3.7-19.4 10.3-26.8l9.4-10.5c3.8-4.2 7.9-8.1 12.3-11.6V208c0 8.8 7.2 16 16 16s16-7.2 16-16V142.3 128 64z"],"square-caret-up":[448,512,["caret-square-up"],"f151","M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm224 64c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4l-208 0c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z"],"chart-bar":[512,512,["bar-chart"],"f080","M24 32c13.3 0 24 10.7 24 24V408c0 13.3 10.7 24 24 24H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-39.8 0-72-32.2-72-72V56C0 42.7 10.7 32 24 32zM128 136c0-13.3 10.7-24 24-24l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24zm24 72H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 96H424c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z"],"window-restore":[512,512,[],"f2d2","M432 48H208c-17.7 0-32 14.3-32 32V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V336h16c17.7 0 32-14.3 32-32V80c0-17.7-14.3-32-32-32zM48 448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V256H48V448zM64 128H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64z"],"square-plus":[448,512,[61846,"plus-square"],"f0fe","M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"],image:[512,512,[],"f03e","M448 80c8.8 0 16 7.2 16 16V415.8l-5-6.5-136-176c-4.5-5.9-11.6-9.3-19-9.3s-14.4 3.4-19 9.3L202 340.7l-30.5-42.7C167 291.7 159.8 288 152 288s-15 3.7-19.5 10.1l-80 112L48 416.3l0-.3V96c0-8.8 7.2-16 16-16H448zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"],"folder-closed":[512,512,[],"e185","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H289.9L247 53.1C233.5 39.6 215.2 32 196.1 32H64zM48 96c0-8.8 7.2-16 16-16H196.1c6.4 0 12.5 2.5 17 7l45.3 45.3c7.5 7.5 17.7 11.7 28.3 11.7H448c8.8 0 16 7.2 16 16v32H48V96zm0 144H464V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V240z"],lemon:[448,512,[127819],"f094","M368 80c-3.2 0-6.2 .4-8.9 1.3C340 86.8 313 91.9 284.8 84.6C227.4 69.7 160.2 92 110.1 142.1S37.7 259.4 52.6 316.8c7.3 28.2 2.2 55.2-3.3 74.3c-.8 2.8-1.3 5.8-1.3 8.9c0 17.7 14.3 32 32 32c3.2 0 6.2-.4 8.9-1.3c19.1-5.5 46.1-10.7 74.3-3.3c57.4 14.9 124.6-7.4 174.7-57.5s72.4-117.3 57.5-174.7c-7.3-28.2-2.2-55.2 3.3-74.3c.8-2.8 1.3-5.8 1.3-8.9c0-17.7-14.3-32-32-32zm0-48c44.2 0 80 35.8 80 80c0 7.7-1.1 15.2-3.1 22.3c-4.6 15.8-7.1 32.9-3 48.9c20.1 77.6-10.9 161.5-70 220.7s-143.1 90.2-220.7 70c-16-4.1-33-1.6-48.9 3c-7.1 2-14.6 3.1-22.3 3.1c-44.2 0-80-35.8-80-80c0-7.7 1.1-15.2 3.1-22.3c4.6-15.8 7.1-32.9 3-48.9C-14 251.3 17 167.3 76.2 108.2S219.3 18 296.8 38.1c16 4.1 33 1.6 48.9-3c7.1-2 14.6-3.1 22.3-3.1zM246.7 167c-52 15.2-96.5 59.7-111.7 111.7c-3.7 12.7-17.1 20-29.8 16.3s-20-17.1-16.3-29.8c19.8-67.7 76.6-124.5 144.3-144.3c12.7-3.7 26.1 3.6 29.8 16.3s-3.6 26.1-16.3 29.8z"],handshake:[640,512,[],"f2b5","M272.2 64.6l-51.1 51.1c-15.3 4.2-29.5 11.9-41.5 22.5L153 161.9C142.8 171 129.5 176 115.8 176H96V304c20.4 .6 39.8 8.9 54.3 23.4l35.6 35.6 7 7 0 0L219.9 397c6.2 6.2 16.4 6.2 22.6 0c1.7-1.7 3-3.7 3.7-5.8c2.8-7.7 9.3-13.5 17.3-15.3s16.4 .6 22.2 6.5L296.5 393c11.6 11.6 30.4 11.6 41.9 0c5.4-5.4 8.3-12.3 8.6-19.4c.4-8.8 5.6-16.6 13.6-20.4s17.3-3 24.4 2.1c9.4 6.7 22.5 5.8 30.9-2.6c9.4-9.4 9.4-24.6 0-33.9L340.1 243l-35.8 33c-27.3 25.2-69.2 25.6-97 .9c-31.7-28.2-32.4-77.4-1.6-106.5l70.1-66.2C303.2 78.4 339.4 64 377.1 64c36.1 0 71 13.3 97.9 37.2L505.1 128H544h40 40c8.8 0 16 7.2 16 16V352c0 17.7-14.3 32-32 32H576c-11.8 0-22.2-6.4-27.7-16H463.4c-3.4 6.7-7.9 13.1-13.5 18.7c-17.1 17.1-40.8 23.8-63 20.1c-3.6 7.3-8.5 14.1-14.6 20.2c-27.3 27.3-70 30-100.4 8.1c-25.1 20.8-62.5 19.5-86-4.1L159 404l-7-7-35.6-35.6c-5.5-5.5-12.7-8.7-20.4-9.3C96 369.7 81.6 384 64 384H32c-17.7 0-32-14.3-32-32V144c0-8.8 7.2-16 16-16H56 96h19.8c2 0 3.9-.7 5.3-2l26.5-23.6C175.5 77.7 211.4 64 248.7 64H259c4.4 0 8.9 .2 13.2 .6zM544 320V176H496c-5.9 0-11.6-2.2-15.9-6.1l-36.9-32.8c-18.2-16.2-41.7-25.1-66.1-25.1c-25.4 0-49.8 9.7-68.3 27.1l-70.1 66.2c-10.3 9.8-10.1 26.3 .5 35.7c9.3 8.3 23.4 8.1 32.5-.3l71.9-66.4c9.7-9 24.9-8.4 33.9 1.4s8.4 24.9-1.4 33.9l-.8 .8 74.4 74.4c10 10 16.5 22.3 19.4 35.1H544zM64 336a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm528 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z"],gem:[512,512,[128142],"f3a5","M168.5 72L256 165l87.5-93h-175zM383.9 99.1L311.5 176h129L383.9 99.1zm50 124.9H256 78.1L256 420.3 433.9 224zM71.5 176h129L128.1 99.1 71.5 176zm434.3 40.1l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4z"],"circle-play":[512,512,[61469,"play-circle"],"f144","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c7.6-4.2 16.8-4.1 24.3 .5l144 88c7.1 4.4 11.5 12.1 11.5 20.5s-4.4 16.1-11.5 20.5l-144 88c-7.4 4.5-16.7 4.7-24.3 .5s-12.3-12.2-12.3-20.9V168c0-8.7 4.7-16.7 12.3-20.9z"],"circle-check":[512,512,[61533,"check-circle"],"f058","M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z"],"circle-stop":[512,512,[62094,"stop-circle"],"f28d","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm192-96H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z"],"id-badge":[384,512,[],"f2c1","M256 48V64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H256zM0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z"],"face-laugh-beam":[512,512,[128513,"laugh-beam"],"f59a","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zm86.9-85.1l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"],registered:[512,512,[174],"f25d","M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152V264v96c0 13.3 10.7 24 24 24s24-10.7 24-24V288h60.9l37.2 81.9c5.5 12.1 19.7 17.4 31.8 11.9s17.4-19.7 11.9-31.8L315.7 275c21.8-14.3 36.3-39 36.3-67c0-44.2-35.8-80-80-80H184c-13.3 0-24 10.7-24 24zm48 88V176h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H208z"],"address-card":[576,512,[62140,"contact-card","vcard"],"f2bb","M512 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H512zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM208 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H304c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H176zM376 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376z"],"face-tired":[512,512,[128555,"tired"],"f5c8","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.5 64.3C196.1 302.1 223.8 288 256 288s59.9 14.1 79.5 32.3C354.5 338.1 368 362 368 384c0 5.4-2.7 10.4-7.2 13.4s-10.2 3.4-15.2 1.3l-17.2-7.5c-22.8-10-47.5-15.1-72.4-15.1s-49.6 5.2-72.4 15.1l-17.2 7.5c-4.9 2.2-10.7 1.7-15.2-1.3s-7.2-8-7.2-13.4c0-22 13.5-45.9 32.5-63.7zm-43-173.6l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z"],"font-awesome":[512,512,[62501,62694,"font-awesome-flag","font-awesome-logo-full"],"f2b4","M91.7 96C106.3 86.8 116 70.5 116 52C116 23.3 92.7 0 64 0S12 23.3 12 52c0 16.7 7.8 31.5 20 41l0 3 0 48 0 256 0 48 0 64 48 0 0-64 389.6 0c14.6 0 26.4-11.8 26.4-26.4c0-3.7-.8-7.3-2.3-10.7L432 272l61.7-138.9c1.5-3.4 2.3-7 2.3-10.7c0-14.6-11.8-26.4-26.4-26.4L91.7 96zM80 400l0-256 356.4 0L388.1 252.5c-5.5 12.4-5.5 26.6 0 39L436.4 400 80 400z"],"face-smile-wink":[512,512,[128521,"smile-wink"],"f4da","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z"],"file-word":[384,512,[],"f1c2","M48 448V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm55 241.1c-3.8-12.7-17.2-19.9-29.9-16.1s-19.9 17.2-16.1 29.9l48 160c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l25-83.4 25 83.4c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l48-160c3.8-12.7-3.4-26.1-16.1-29.9s-26.1 3.4-29.9 16.1l-25 83.4-25-83.4c-3-10.2-12.4-17.1-23-17.1s-19.9 7-23 17.1l-25 83.4-25-83.4z"],"file-powerpoint":[384,512,[],"f1c4","M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm72 208c-13.3 0-24 10.7-24 24V336v56c0 13.3 10.7 24 24 24s24-10.7 24-24V360h44c42 0 76-34 76-76s-34-76-76-76H136zm68 104H160V256h44c15.5 0 28 12.5 28 28s-12.5 28-28 28z"],"envelope-open":[512,512,[62135],"f2b6","M255.4 48.2c.2-.1 .4-.2 .6-.2s.4 .1 .6 .2L460.6 194c2.1 1.5 3.4 3.9 3.4 6.5v13.6L291.5 355.7c-20.7 17-50.4 17-71.1 0L48 214.1V200.5c0-2.6 1.2-5 3.4-6.5L255.4 48.2zM48 276.2L190 392.8c38.4 31.5 93.7 31.5 132 0L464 276.2V456c0 4.4-3.6 8-8 8H56c-4.4 0-8-3.6-8-8V276.2zM256 0c-10.2 0-20.2 3.2-28.5 9.1L23.5 154.9C8.7 165.4 0 182.4 0 200.5V456c0 30.9 25.1 56 56 56H456c30.9 0 56-25.1 56-56V200.5c0-18.1-8.7-35.1-23.4-45.6L284.5 9.1C276.2 3.2 266.2 0 256 0z"],"file-zipper":[384,512,["file-archive"],"f1c6","M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16h48v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm48 112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H128c-8.8 0-16 7.2-16 16zm0 64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H128c-8.8 0-16 7.2-16 16zm-6.3 71.8L82.1 335.9c-1.4 5.4-2.1 10.9-2.1 16.4c0 35.2 28.8 63.7 64 63.7s64-28.5 64-63.7c0-5.5-.7-11.1-2.1-16.4l-23.5-88.2c-3.7-14-16.4-23.8-30.9-23.8H136.6c-14.5 0-27.2 9.7-30.9 23.8zM128 336h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H128c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],square:[448,512,[9632,9723,9724,61590],"f0c8","M384 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H384zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"],snowflake:[448,512,[10052,10054],"f2dc","M224 0c13.3 0 24 10.7 24 24V70.1l23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-57 57v76.5l66.2-38.2 20.9-77.8c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4L373 142.2l37.1-21.4c11.5-6.6 26.2-2.7 32.8 8.8s2.7 26.2-8.8 32.8L397 183.8l31.5 8.4c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-77.8-20.9L272 256l66.2 38.2 77.8-20.9c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4L397 328.2l37.1 21.4c11.5 6.6 15.4 21.3 8.8 32.8s-21.3 15.4-32.8 8.8L373 369.8l8.4 31.5c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-20.9-77.8L248 297.6v76.5l57 57c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V441.9l-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V297.6l-66.2 38.2-20.9 77.8c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4L75 369.8 37.9 391.2c-11.5 6.6-26.2 2.7-32.8-8.8s-2.7-26.2 8.8-32.8L51 328.2l-31.5-8.4c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l77.8 20.9L176 256l-66.2-38.2L31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4L51 183.8 13.9 162.4c-11.5-6.6-15.4-21.3-8.8-32.8s21.3-15.4 32.8-8.8L75 142.2l-8.4-31.5c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l20.9 77.8L200 214.4V137.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23V24c0-13.3 10.7-24 24-24z"],newspaper:[512,512,[128240],"f1ea","M168 80c-13.3 0-24 10.7-24 24V408c0 8.4-1.4 16.5-4.1 24H440c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H168zM72 480c-39.8 0-72-32.2-72-72V112C0 98.7 10.7 88 24 88s24 10.7 24 24V408c0 13.3 10.7 24 24 24s24-10.7 24-24V104c0-39.8 32.2-72 72-72H440c39.8 0 72 32.2 72 72V408c0 39.8-32.2 72-72 72H72zM176 136c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V136zm200-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24zM200 272H408c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80H408c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24z"],"face-kiss-wink-heart":[512,512,[128536,"kiss-wink-heart"],"f598","M338.9 446.8c-25.4 11-53.4 17.2-82.9 17.2C141.1 464 48 370.9 48 256S141.1 48 256 48s208 93.1 208 208c0 22.4-3.5 43.9-10.1 64.1c3.1 4.5 5.7 9.4 7.8 14.6c12.7-1.6 25.1 .4 36.2 5c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-6.5-25.3zM296 316c0-6.9-3.1-13.2-7.3-18.3c-4.3-5.2-10.1-9.7-16.7-13.4C258.7 276.9 241.4 272 224 272c-3.6 0-6.8 2.5-7.7 6s.6 7.2 3.8 9l0 0 0 0 0 0 .2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1 0 0 0 0 0 0 0 0 0 0c-2.5 1.4-4.1 4.1-4.1 7s1.6 5.6 4.1 7l0 0 0 0 0 0 .2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1 0 0 0 0 0 0 0 0c-3.2 1.8-4.7 5.5-3.8 9s4.1 6 7.7 6c17.4 0 34.7-4.9 47.9-12.3c6.6-3.7 12.5-8.2 16.7-13.4c4.3-5.1 7.3-11.4 7.3-18.3s-3.1-13.2-7.3-18.3c-4.3-5.2-10.1-9.7-16.7-13.4c-2.7-1.5-5.7-3-8.7-4.3c3.1-1.3 6-2.7 8.7-4.3c6.6-3.7 12.5-8.2 16.7-13.4c4.3-5.1 7.3-11.4 7.3-18.3zM176.4 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm159.3-20c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C375.7 186.8 355 180 335.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z"],"star-half-stroke":[576,512,["star-half-alt"],"f5c0","M309.5 13.5C305.5 5.2 297.1 0 287.9 0s-17.6 5.2-21.6 13.5L197.7 154.8 44.5 177.5c-9 1.3-16.5 7.6-19.3 16.3s-.5 18.1 5.9 24.5L142.2 328.4 116 483.9c-1.5 9 2.2 18.1 9.7 23.5s17.3 6 25.3 1.7l137-73.2 137 73.2c8.1 4.3 17.9 3.7 25.3-1.7s11.2-14.5 9.7-23.5L433.6 328.4 544.8 218.2c6.5-6.4 8.7-15.9 5.9-24.5s-10.3-14.9-19.3-16.3L378.1 154.8 309.5 13.5zM288 384.7V79.1l52.5 108.1c3.5 7.1 10.2 12.1 18.1 13.3l118.3 17.5L391 303c-5.5 5.5-8.1 13.3-6.8 21l20.2 119.6L299.2 387.5c-3.5-1.9-7.4-2.8-11.2-2.8z"],"file-excel":[384,512,[],"f1c3","M48 448V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm90.9 233.3c-8.1-10.5-23.2-12.3-33.7-4.2s-12.3 23.2-4.2 33.7L161.6 320l-44.5 57.3c-8.1 10.5-6.3 25.5 4.2 33.7s25.5 6.3 33.7-4.2L192 359.1l37.1 47.6c8.1 10.5 23.2 12.3 33.7 4.2s12.3-23.2 4.2-33.7L222.4 320l44.5-57.3c8.1-10.5 6.3-25.5-4.2-33.7s-25.5-6.3-33.7 4.2L192 280.9l-37.1-47.6z"],"face-grin-beam":[512,512,[128516,"grin-beam"],"f582","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM217.6 228.8l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"],"object-ungroup":[640,512,[],"f248","M48.2 66.8c-.1-.8-.2-1.7-.2-2.5c0-.1 0-.1 0-.2c0-8.8 7.2-16 16-16c.9 0 1.9 .1 2.8 .2C74.3 49.5 80 56.1 80 64c0 8.8-7.2 16-16 16c-7.9 0-14.5-5.7-15.8-13.2zM0 64c0 26.9 16.5 49.9 40 59.3V228.7C16.5 238.1 0 261.1 0 288c0 35.3 28.7 64 64 64c26.9 0 49.9-16.5 59.3-40H324.7c9.5 23.5 32.5 40 59.3 40c35.3 0 64-28.7 64-64c0-26.9-16.5-49.9-40-59.3V123.3c23.5-9.5 40-32.5 40-59.3c0-35.3-28.7-64-64-64c-26.9 0-49.9 16.5-59.3 40H123.3C113.9 16.5 90.9 0 64 0C28.7 0 0 28.7 0 64zm368 0a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM324.7 88c6.5 16 19.3 28.9 35.3 35.3V228.7c-16 6.5-28.9 19.3-35.3 35.3H123.3c-6.5-16-19.3-28.9-35.3-35.3V123.3c16-6.5 28.9-19.3 35.3-35.3H324.7zM384 272a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM80 288c0 7.9-5.7 14.5-13.2 15.8c-.8 .1-1.7 .2-2.5 .2l-.2 0c-8.8 0-16-7.2-16-16c0-.9 .1-1.9 .2-2.8C49.5 277.7 56.1 272 64 272c8.8 0 16 7.2 16 16zm391.3-40h45.4c6.5 16 19.3 28.9 35.3 35.3V388.7c-16 6.5-28.9 19.3-35.3 35.3H315.3c-6.5-16-19.3-28.9-35.3-35.3V352H232v36.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64c26.9 0 49.9-16.5 59.3-40H516.7c9.5 23.5 32.5 40 59.3 40c35.3 0 64-28.7 64-64c0-26.9-16.5-49.9-40-59.3V283.3c23.5-9.5 40-32.5 40-59.3c0-35.3-28.7-64-64-64c-26.9 0-49.9 16.5-59.3 40H448v16.4c9.8 8.8 17.8 19.5 23.3 31.6zm88.9-26.7a16 16 0 1 1 31.5 5.5 16 16 0 1 1 -31.5-5.5zM271.8 450.7a16 16 0 1 1 -31.5-5.5 16 16 0 1 1 31.5 5.5zm301.5 13c-7.5-1.3-13.2-7.9-13.2-15.8c0-8.8 7.2-16 16-16c7.9 0 14.5 5.7 15.8 13.2l0 .1c.1 .9 .2 1.8 .2 2.7c0 8.8-7.2 16-16 16c-.9 0-1.9-.1-2.8-.2z"],"circle-right":[512,512,[61838,"arrow-alt-circle-right"],"f35a","M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 135.1c-4.2-4.5-10.1-7.1-16.3-7.1C266 128 256 138 256 150.3V208H160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32h96v57.7c0 12.3 10 22.3 22.3 22.3c6.2 0 12.1-2.6 16.3-7.1l99.9-107.1c3.5-3.8 5.5-8.7 5.5-13.8s-2-10.1-5.5-13.8L294.6 135.1z"],"face-rolling-eyes":[512,512,[128580,"meh-rolling-eyes"],"f5a5","M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM168 376c0 13.3 10.7 24 24 24H320c13.3 0 24-10.7 24-24s-10.7-24-24-24H192c-13.3 0-24 10.7-24 24zm-8-104c-26.5 0-48-21.5-48-48c0-14.3 6.3-27.2 16.2-36c-.2 1.3-.2 2.6-.2 4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1.4-.1-2.7-.2-4c10 8.8 16.2 21.7 16.2 36c0 26.5-21.5 48-48 48zm0 32a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm192-32c-26.5 0-48-21.5-48-48c0-14.3 6.3-27.2 16.2-36c-.2 1.3-.2 2.6-.2 4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1.4-.1-2.7-.2-4c10 8.8 16.2 21.7 16.2 36c0 26.5-21.5 48-48 48zm0 32a80 80 0 1 0 0-160 80 80 0 1 0 0 160z"],"object-group":[576,512,[],"f247","M48 115.8C38.2 107 32 94.2 32 80c0-26.5 21.5-48 48-48c14.2 0 27 6.2 35.8 16H460.2c8.8-9.8 21.6-16 35.8-16c26.5 0 48 21.5 48 48c0 14.2-6.2 27-16 35.8V396.2c9.8 8.8 16 21.6 16 35.8c0 26.5-21.5 48-48 48c-14.2 0-27-6.2-35.8-16H115.8c-8.8 9.8-21.6 16-35.8 16c-26.5 0-48-21.5-48-48c0-14.2 6.2-27 16-35.8V115.8zM125.3 96c-4.8 13.6-15.6 24.4-29.3 29.3V386.7c13.6 4.8 24.4 15.6 29.3 29.3H450.7c4.8-13.6 15.6-24.4 29.3-29.3V125.3c-13.6-4.8-24.4-15.6-29.3-29.3H125.3zm2.7 64c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z"],heart:[512,512,[128153,128154,128155,128156,128420,129293,129294,129505,9829,10084,61578],"f004","M225.8 468.2l-2.5-2.3L48.1 303.2C17.4 274.7 0 234.7 0 192.8v-3.3c0-70.4 50-130.8 119.2-144C158.6 37.9 198.9 47 231 69.6c9 6.4 17.4 13.8 25 22.3c4.2-4.8 8.7-9.2 13.5-13.3c3.7-3.2 7.5-6.2 11.5-9c0 0 0 0 0 0C313.1 47 353.4 37.9 392.8 45.4C462 58.6 512 119.1 512 189.5v3.3c0 41.9-17.4 81.9-48.1 110.4L288.7 465.9l-2.5 2.3c-8.2 7.6-19 11.9-30.2 11.9s-22-4.2-30.2-11.9zM239.1 145c-.4-.3-.7-.7-1-1.1l-17.8-20c0 0-.1-.1-.1-.1c0 0 0 0 0 0c-23.1-25.9-58-37.7-92-31.2C81.6 101.5 48 142.1 48 189.5v3.3c0 28.5 11.9 55.8 32.8 75.2L256 430.7 431.2 268c20.9-19.4 32.8-46.7 32.8-75.2v-3.3c0-47.3-33.6-88-80.1-96.9c-34-6.5-69 5.4-92 31.2c0 0 0 0-.1 .1s0 0-.1 .1l-17.8 20c-.3 .4-.7 .7-1 1.1c-4.5 4.5-10.6 7-16.9 7s-12.4-2.5-16.9-7z"],"face-surprise":[512,512,[128558,"surprise"],"f5c2","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"],"circle-pause":[512,512,[62092,"pause-circle"],"f28b","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm224-72V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V184c0-13.3 10.7-24 24-24s24 10.7 24 24zm112 0V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V184c0-13.3 10.7-24 24-24s24 10.7 24 24z"],circle:[512,512,[128308,128309,128992,128993,128994,128995,128996,9679,9898,9899,11044,61708,61915],"f111","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z"],"circle-up":[512,512,[61467,"arrow-alt-circle-up"],"f35b","M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM135.1 217.4c-4.5 4.2-7.1 10.1-7.1 16.3c0 12.3 10 22.3 22.3 22.3H208v96c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256h57.7c12.3 0 22.3-10 22.3-22.3c0-6.2-2.6-12.1-7.1-16.3L269.8 117.5c-3.8-3.5-8.7-5.5-13.8-5.5s-10.1 2-13.8 5.5L135.1 217.4z"],"file-audio":[384,512,[],"f1c7","M64 464H320c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM192 272V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L129.4 376H112c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h17.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8zm85.8-4c11.6 20 18.2 43.3 18.2 68s-6.6 48-18.2 68c-6.6 11.5-21.3 15.4-32.8 8.8s-15.4-21.3-8.8-32.8c7.5-12.9 11.8-27.9 11.8-44s-4.3-31.1-11.8-44c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8z"],"file-image":[384,512,[128443],"f1c5","M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm96 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm69.2 46.9c-3-4.3-7.9-6.9-13.2-6.9s-10.2 2.6-13.2 6.9l-41.3 59.7-11.9-19.1c-2.9-4.7-8.1-7.5-13.6-7.5s-10.6 2.8-13.6 7.5l-40 64c-3.1 4.9-3.2 11.1-.4 16.2s8.2 8.2 14 8.2h48 32 40 72c6 0 11.4-3.3 14.2-8.6s2.4-11.6-1-16.5l-72-104z"],"circle-question":[512,512,[62108,"question-circle"],"f059","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm169.8-90.7c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],"face-meh-blank":[512,512,[128566,"meh-blank"],"f5a4","M256 48a208 208 0 1 0 0 416 208 208 0 1 0 0-416zM512 256A256 256 0 1 1 0 256a256 256 0 1 1 512 0zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],eye:[576,512,[128065],"f06e","M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z"],"face-sad-cry":[512,512,[128557,"sad-cry"],"f5b3","M400 406.1V288c0-13.3-10.7-24-24-24s-24 10.7-24 24V440.6c-28.7 15-61.4 23.4-96 23.4s-67.3-8.5-96-23.4V288c0-13.3-10.7-24-24-24s-24 10.7-24 24V406.1C72.6 368.2 48 315 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 59-24.6 112.2-64 150.1zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.6 220c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C199.7 186.8 179 180 159.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zm166.6 9.7c5.5-5.8 14.8-9.7 25.4-9.7s19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C391.7 186.8 371 180 351.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9zM208 320v32c0 26.5 21.5 48 48 48s48-21.5 48-48V320c0-26.5-21.5-48-48-48s-48 21.5-48 48z"],"file-code":[384,512,[],"f1c9","M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm97 289c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L79 303c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 31-31zM257 255c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9l-48-48z"],"window-maximize":[512,512,[128470],"f2d0","M.3 89.5C.1 91.6 0 93.8 0 96V224 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64V224 96c0-35.3-28.7-64-64-64H64c-2.2 0-4.4 .1-6.5 .3c-9.2 .9-17.8 3.8-25.5 8.2C21.8 46.5 13.4 55.1 7.7 65.5c-3.9 7.3-6.5 15.4-7.4 24zM48 224H464l0 192c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-192z"],"face-frown":[512,512,[9785,"frown"],"f119","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM174.6 384.1c-4.5 12.5-18.2 18.9-30.7 14.4s-18.9-18.2-14.4-30.7C146.9 319.4 198.9 288 256 288s109.1 31.4 126.6 79.9c4.5 12.5-2 26.2-14.4 30.7s-26.2-2-30.7-14.4C328.2 358.5 297.2 336 256 336s-72.2 22.5-81.4 48.1zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"floppy-disk":[448,512,[128190,128426,"save"],"f0c7","M48 96V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V170.5c0-4.2-1.7-8.3-4.7-11.3l33.9-33.9c12 12 18.7 28.3 18.7 45.3V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H309.5c17 0 33.3 6.7 45.3 18.7l74.5 74.5-33.9 33.9L320.8 84.7c-.3-.3-.5-.5-.8-.8V184c0 13.3-10.7 24-24 24H104c-13.3 0-24-10.7-24-24V80H64c-8.8 0-16 7.2-16 16zm80-16v80H272V80H128zm32 240a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z"],"comment-dots":[512,512,[128172,62075,"commenting"],"f4ad","M168.2 384.9c-15-5.4-31.7-3.1-44.6 6.4c-8.2 6-22.3 14.8-39.4 22.7c5.6-14.7 9.9-31.3 11.3-49.4c1-12.9-3.3-25.7-11.8-35.5C60.4 302.8 48 272 48 240c0-79.5 83.3-160 208-160s208 80.5 208 160s-83.3 160-208 160c-31.6 0-61.3-5.5-87.8-15.1zM26.3 423.8c-1.6 2.7-3.3 5.4-5.1 8.1l-.3 .5c-1.6 2.3-3.2 4.6-4.8 6.9c-3.5 4.7-7.3 9.3-11.3 13.5c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c5.1 0 10.2-.3 15.3-.8l.7-.1c4.4-.5 8.8-1.1 13.2-1.9c.8-.1 1.6-.3 2.4-.5c17.8-3.5 34.9-9.5 50.1-16.1c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9zM144 272a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm80 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"face-grin-squint":[512,512,[128518,"grin-squint"],"f585","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zm-216-161.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z"],"hand-pointer":[448,512,[],"f25a","M160 64c0-8.8 7.2-16 16-16s16 7.2 16 16V200c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c8.8 0 16 7.2 16 16c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c7.8 0 14.3 5.6 15.7 13c1.6 8.2 7.3 15.1 15.1 18s16.7 1.6 23.3-3.6c2.7-2.1 6.1-3.4 9.9-3.4c8.8 0 16 7.2 16 16l0 16V392c0 39.8-32.2 72-72 72H272 212.3h-.9c-37.4 0-72.4-18.7-93.2-49.9L50.7 312.9c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4L116 353.2c5.9 8.8 16.8 12.7 26.9 9.7s17-12.4 17-23V320 64zM176 0c-35.3 0-64 28.7-64 64V261.7C91.2 238 55.5 232.8 28.5 250.7C-.9 270.4-8.9 310.1 10.8 339.5L78.3 440.8c29.7 44.5 79.6 71.2 133.1 71.2h.9H272h56c66.3 0 120-53.7 120-120V288l0-16c0-35.3-28.7-64-64-64c-4.5 0-8.8 .5-13 1.3c-11.7-15.4-30.2-25.3-51-25.3c-6.9 0-13.5 1.1-19.7 3.1C288.7 170.7 269.6 160 248 160c-2.7 0-5.4 .2-8 .5V64c0-35.3-28.7-64-64-64zm48 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z"],"hand-scissors":[512,512,[],"f257","M.2 276.3c-1.2-35.3 26.4-65 61.7-66.2l3.3-.1L57 208.1C22.5 200.5 .7 166.3 8.3 131.8S50.2 75.5 84.7 83.2l173 38.3c2.3-2.9 4.7-5.7 7.1-8.5l18.4-20.3C299.9 74.5 323.5 64 348.3 64l10.2 0c54.1 0 104.1 28.7 131.3 75.4l1.5 2.6c13.6 23.2 20.7 49.7 20.7 76.6L512 344c0 66.3-53.7 120-120 120l-8 0-96 0c-35.3 0-64-28.7-64-64c0-2.8 .2-5.6 .5-8.3c-19.4-11-32.5-31.8-32.5-55.7c0-.8 0-1.6 0-2.4L66.4 338c-35.3 1.2-65-26.4-66.2-61.7zm63.4-18.2c-8.8 .3-15.7 7.7-15.4 16.5s7.7 15.7 16.5 15.4l161.5-5.6c9.8-.3 18.7 5.3 22.7 14.2s2.2 19.3-4.5 26.4c-2.8 2.9-4.4 6.7-4.4 11c0 8.8 7.2 16 16 16c9.1 0 17.4 5.1 21.5 13.3s3.2 17.9-2.3 25.1c-2 2.7-3.2 6-3.2 9.6c0 8.8 7.2 16 16 16l96 0 8 0c39.8 0 72-32.2 72-72l0-125.4c0-18.4-4.9-36.5-14.2-52.4l-1.5-2.6c-18.6-32-52.8-51.6-89.8-51.6l-10.2 0c-11.3 0-22 4.8-29.6 13.1l-17.5-15.9 17.5 15.9-18.4 20.3c-.6 .6-1.1 1.3-1.7 1.9l57 13.2c8.6 2 14 10.6 12 19.2s-10.6 14-19.2 12l-85.6-19.7L74.3 130c-8.6-1.9-17.2 3.5-19.1 12.2s3.5 17.2 12.2 19.1l187.5 41.6c10.2 2.3 17.8 10.9 18.7 21.4l.1 1c.6 6.6-1.5 13.1-5.8 18.1s-10.6 7.9-17.2 8.2L63.6 258.1z"],"face-grin-tears":[640,512,[128514,"grin-tears"],"f588","M516.1 325.5c1 3 2.1 6 3.3 8.9c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c1.2-2.9 2.3-5.9 3.3-8.9C152.5 406.2 229.5 464 320 464s167.5-57.8 196.1-138.5zM320 48c-101.4 0-185.8 72.5-204.3 168.5c-6.7-3.1-14.3-4.3-22.3-3.1c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-8-1.2-15.7 .1-22.3 3.1C505.8 120.5 421.4 48 320 48zM78.5 341.1C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7zm483 0c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zM439 336.5C414.4 374.6 370.3 400 319.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5c18.7-4.4 35.9 12 25.5 28.1zM281.6 228.8l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0zm160 0l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0z"],"calendar-xmark":[448,512,["calendar-times"],"f273","M128 0c13.3 0 24 10.7 24 24V64H296V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192 144 128C0 92.7 28.7 64 64 64h40V24c0-13.3 10.7-24 24-24zM400 192H48V448c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V192zm-95 89l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"],"file-video":[384,512,[],"f1c8","M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM80 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v16l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1L240 368v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V288z"],"file-pdf":[512,512,[],"f1c1","M64 464l48 0 0 48-48 0c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0L229.5 0c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3L384 304l-48 0 0-144-80 0c-17.7 0-32-14.3-32-32l0-80L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16zM176 352l32 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-16 0 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-80c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0 48 16 0zm96-80l32 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16l0-128c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-16 0 0 96 16 0zm80-112c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64 0-64z"],comment:[512,512,[128489,61669],"f075","M123.6 391.3c12.9-9.4 29.6-11.8 44.6-6.4c26.5 9.6 56.2 15.1 87.8 15.1c124.7 0 208-80.5 208-160s-83.3-160-208-160S48 160.5 48 240c0 32 12.4 62.8 35.7 89.2c8.6 9.7 12.8 22.5 11.8 35.5c-1.4 18.1-5.7 34.7-11.3 49.4c17-7.9 31.1-16.7 39.4-22.7zM21.2 431.9c1.8-2.7 3.5-5.4 5.1-8.1c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208s-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6c-15.1 6.6-32.3 12.6-50.1 16.1c-.8 .2-1.6 .3-2.4 .5c-4.4 .8-8.7 1.5-13.2 1.9c-.2 0-.5 .1-.7 .1c-5.1 .5-10.2 .8-15.3 .8c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c4.1-4.2 7.8-8.7 11.3-13.5c1.7-2.3 3.3-4.6 4.8-6.9c.1-.2 .2-.3 .3-.5z"],envelope:[512,512,[128386,9993,61443],"f0e0","M64 112c-8.8 0-16 7.2-16 16v22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16H64zM48 212.2V384c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z"],hourglass:[384,512,[9203,62032,"hourglass-empty"],"f254","M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V67c0 40.3 16 79 44.5 107.5L158.1 256 76.5 337.5C48 366 32 404.7 32 445v19H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V445c0-40.3-16-79-44.5-107.5L225.9 256l81.5-81.5C336 146 352 107.3 352 67V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM192 289.9l81.5 81.5C293 391 304 417.4 304 445v19H80V445c0-27.6 11-54 30.5-73.5L192 289.9zm0-67.9l-81.5-81.5C91 121 80 94.6 80 67V48H304V67c0 27.6-11 54-30.5 73.5L192 222.1z"],"calendar-check":[448,512,[],"f274","M128 0c13.3 0 24 10.7 24 24V64H296V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192 144 128C0 92.7 28.7 64 64 64h40V24c0-13.3 10.7-24 24-24zM400 192H48V448c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V192zM329 297L217 409c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 95-95c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"],"hard-drive":[512,512,[128436,"hdd"],"f0a0","M64 80c-8.8 0-16 7.2-16 16V258c5.1-1.3 10.5-2 16-2H448c5.5 0 10.9 .7 16 2V96c0-8.8-7.2-16-16-16H64zM48 320v96c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V320c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM0 320V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V320v96c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320zm280 48a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],"face-grin-squint-tears":[512,512,[129315,"grin-squint-tears"],"f586","M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-14.8 14.8-65.7 23.6-88.3 26.7c-5.6 .9-10.3-3.9-9.5-9.5C403.3 79.9 412 29 426.8 14.2zM75 75C158.2-8.3 284.5-22.2 382.2 33.2c-1.5 4.8-2.9 9.6-4.1 14.3c-3.1 12.2-5.5 24.6-7.3 35c-80.8-53.6-190.7-44.8-261.9 26.4C37.7 180.1 28.9 290 82.5 370.8c-10.5 1.8-22.9 4.2-35 7.3c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75zm389.6 58.9c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c3.1-12.2 5.5-24.6 7.3-35c80.8 53.6 190.7 44.8 261.9-26.4c71.2-71.2 80-181.1 26.4-261.9c10.5-1.8 22.9-4.2 35-7.3zm-105.4 93c10.1-16.3 33.9-16.9 37.9 1.9c9.5 44.4-3.7 93.5-39.3 129.1s-84.8 48.8-129.1 39.3c-18.7-4-18.2-27.8-1.9-37.9c25.2-15.7 50.2-35.4 73.6-58.8s43.1-48.4 58.8-73.6zM92 265.3l97.4-29.7c11.6-3.5 22.5 7.3 19 19l-29.7 97.4c-2.6 8.6-13.4 11.3-19.8 4.9c-2-2-3.2-4.6-3.4-7.3l-5.1-56.1-56.1-5.1c-2.8-.3-5.4-1.5-7.3-3.4c-6.3-6.3-3.6-17.2 4.9-19.8zm193-178.2c2 2 3.2 4.6 3.4 7.3l5.1 56.1 56.1 5.1c2.8 .3 5.4 1.5 7.3 3.4c6.3 6.3 3.6 17.2-4.9 19.8l-97.4 29.7c-11.6 3.5-22.5-7.3-19-19L265.3 92c2.6-8.6 13.4-11.3 19.8-4.9zM14.9 497.1c-19.6-19.6-20-51-.7-70.3C29 412 79.8 403.2 102.4 400.1c5.6-.9 10.3 3.9 9.5 9.5c-3.2 22.5-11.9 73.5-26.7 88.3C66 517 34.5 516.6 14.9 497.1z"],"rectangle-list":[576,512,["list-alt"],"f022","M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H512c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm96 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm104 0c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm-72-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],"calendar-plus":[448,512,[],"f271","M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192H400V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192zm176 40c-13.3 0-24 10.7-24 24v48H152c-13.3 0-24 10.7-24 24s10.7 24 24 24h48v48c0 13.3 10.7 24 24 24s24-10.7 24-24V352h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V256c0-13.3-10.7-24-24-24z"],"circle-left":[512,512,[61840,"arrow-alt-circle-left"],"f359","M48 256a208 208 0 1 1 416 0A208 208 0 1 1 48 256zm464 0A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9c4.2 4.5 10.1 7.1 16.3 7.1c12.3 0 22.3-10 22.3-22.3V304h96c17.7 0 32-14.3 32-32V240c0-17.7-14.3-32-32-32H256V150.3c0-12.3-10-22.3-22.3-22.3c-6.2 0-12.1 2.6-16.3 7.1L117.5 242.2c-3.5 3.8-5.5 8.7-5.5 13.8s2 10.1 5.5 13.8l99.9 107.1z"],"money-bill-1":[576,512,["money-bill-alt"],"f3d1","M112 112c0 35.3-28.7 64-64 64V336c35.3 0 64 28.7 64 64H464c0-35.3 28.7-64 64-64V176c-35.3 0-64-28.7-64-64H112zM0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm80-48c0 8.8 7.2 16 16 16v64h-8c-8.8 0-16 7.2-16 16s7.2 16 16 16h24 24c8.8 0 16-7.2 16-16s-7.2-16-16-16h-8V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16z"],clock:[512,512,[128339,"clock-four"],"f017","M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"],keyboard:[576,512,[9e3],"f11c","M64 112c-8.8 0-16 7.2-16 16V384c0 8.8 7.2 16 16 16H512c8.8 0 16-7.2 16-16V128c0-8.8-7.2-16-16-16H64zM0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM176 320H400c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm-72-72c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H200c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H200c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H280c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H280c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H360c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H360c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H440c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H440c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16z"],"closed-captioning":[576,512,[],"f20a","M512 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H512zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z"],images:[576,512,[],"f302","M160 80H512c8.8 0 16 7.2 16 16V320c0 8.8-7.2 16-16 16H490.8L388.1 178.9c-4.4-6.8-12-10.9-20.1-10.9s-15.7 4.1-20.1 10.9l-52.2 79.8-12.4-16.9c-4.5-6.2-11.7-9.8-19.4-9.8s-14.8 3.6-19.4 9.8L175.6 336H160c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16zM96 96V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120zm208 24a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],"face-grin":[512,512,[128512,"grin"],"f580","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"face-meh":[512,512,[128528,"meh"],"f11a","M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM176.4 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm192-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM184 328c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z"],"id-card":[576,512,[62147,"drivers-license"],"f2c2","M528 160V416c0 8.8-7.2 16-16 16H320c0-44.2-35.8-80-80-80H176c-44.2 0-80 35.8-80 80H64c-8.8 0-16-7.2-16-16V160H528zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM272 256a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm104-48c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376z"],sun:[512,512,[9728],"f185","M375.7 19.7c-1.5-8-6.9-14.7-14.4-17.8s-16.1-2.2-22.8 2.4L256 61.1 173.5 4.2c-6.7-4.6-15.3-5.5-22.8-2.4s-12.9 9.8-14.4 17.8l-18.1 98.5L19.7 136.3c-8 1.5-14.7 6.9-17.8 14.4s-2.2 16.1 2.4 22.8L61.1 256 4.2 338.5c-4.6 6.7-5.5 15.3-2.4 22.8s9.8 13 17.8 14.4l98.5 18.1 18.1 98.5c1.5 8 6.9 14.7 14.4 17.8s16.1 2.2 22.8-2.4L256 450.9l82.5 56.9c6.7 4.6 15.3 5.5 22.8 2.4s12.9-9.8 14.4-17.8l18.1-98.5 98.5-18.1c8-1.5 14.7-6.9 17.8-14.4s2.2-16.1-2.4-22.8L450.9 256l56.9-82.5c4.6-6.7 5.5-15.3 2.4-22.8s-9.8-12.9-17.8-14.4l-98.5-18.1L375.7 19.7zM269.6 110l65.6-45.2 14.4 78.3c1.8 9.8 9.5 17.5 19.3 19.3l78.3 14.4L402 242.4c-5.7 8.2-5.7 19 0 27.2l45.2 65.6-78.3 14.4c-9.8 1.8-17.5 9.5-19.3 19.3l-14.4 78.3L269.6 402c-8.2-5.7-19-5.7-27.2 0l-65.6 45.2-14.4-78.3c-1.8-9.8-9.5-17.5-19.3-19.3L64.8 335.2 110 269.6c5.7-8.2 5.7-19 0-27.2L64.8 176.8l78.3-14.4c9.8-1.8 17.5-9.5 19.3-19.3l14.4-78.3L242.4 110c8.2 5.7 19 5.7 27.2 0zM256 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM192 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z"],"face-laugh-wink":[512,512,["laugh-wink"],"f59c","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z"],"circle-down":[512,512,[61466,"arrow-alt-circle-down"],"f358","M256 464a208 208 0 1 1 0-416 208 208 0 1 1 0 416zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6c4.5-4.2 7.1-10.1 7.1-16.3c0-12.3-10-22.3-22.3-22.3H304V160c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32v96H150.3C138 256 128 266 128 278.3c0 6.2 2.6 12.1 7.1 16.3l107.1 99.9c3.8 3.5 8.7 5.5 13.8 5.5s10.1-2 13.8-5.5l107.1-99.9z"],"thumbs-down":[512,512,[128078,61576],"f165","M323.8 477.2c-38.2 10.9-78.1-11.2-89-49.4l-5.7-20c-3.7-13-10.4-25-19.5-35l-51.3-56.4c-8.9-9.8-8.2-25 1.6-33.9s25-8.2 33.9 1.6l51.3 56.4c14.1 15.5 24.4 34 30.1 54.1l5.7 20c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7l-5.7-20c-5.7-19.9-14.7-38.7-26.6-55.5c-5.2-7.3-5.8-16.9-1.7-24.9s12.3-13 21.3-13L448 288c8.8 0 16-7.2 16-16c0-6.8-4.3-12.7-10.4-15c-7.4-2.8-13-9-14.9-16.7s.1-15.8 5.3-21.7c2.5-2.8 4-6.5 4-10.6c0-7.8-5.6-14.3-13-15.7c-8.2-1.6-15.1-7.3-18-15.2s-1.6-16.7 3.6-23.3c2.1-2.7 3.4-6.1 3.4-9.9c0-6.7-4.2-12.6-10.2-14.9c-11.5-4.5-17.7-16.9-14.4-28.8c.4-1.3 .6-2.8 .6-4.3c0-8.8-7.2-16-16-16H286.5c-12.6 0-25 3.7-35.5 10.7l-61.7 41.1c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l61.7-41.1c18.4-12.3 40-18.8 62.1-18.8H384c34.7 0 62.9 27.6 64 62c14.6 11.7 24 29.7 24 50c0 4.5-.5 8.8-1.3 13c15.4 11.7 25.3 30.2 25.3 51c0 6.5-1 12.8-2.8 18.7C504.8 238.3 512 254.3 512 272c0 35.3-28.6 64-64 64l-92.3 0c4.7 10.4 8.7 21.2 11.8 32.2l5.7 20c10.9 38.2-11.2 78.1-49.4 89zM32 384c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H32z"],"chess-pawn":[320,512,[9823],"f443","M232 152A72 72 0 1 0 88 152a72 72 0 1 0 144 0zm24 120H243.4l10.7 80H205.7L195 272H160 125l-10.7 80H65.9l10.7-80H64c-13.3 0-24-10.7-24-24s10.7-24 24-24c-15.1-20.1-24-45-24-72C40 85.7 93.7 32 160 32s120 53.7 120 120c0 27-8.9 51.9-24 72c13.3 0 24 10.7 24 24s-10.7 24-24 24zM52.7 464H267.3l-16.6-32H69.2L52.7 464zm207.9-80c12 0 22.9 6.7 28.4 17.3l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H40.8C18.2 512 0 493.8 0 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C36.5 390.7 47.5 384 59.5 384h201z"],"credit-card":[576,512,[128179,62083,"credit-card-alt"],"f09d","M512 80c8.8 0 16 7.2 16 16v32H48V96c0-8.8 7.2-16 16-16H512zm16 144V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V224H528zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm56 304c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H248z"],bell:[448,512,[128276,61602],"f0f3","M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v25.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416H424c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6C399.5 322.9 384 278.8 384 233.4V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm0 96c61.9 0 112 50.1 112 112v25.4c0 47.9 13.9 94.6 39.7 134.6H72.3C98.1 328 112 281.3 112 233.4V208c0-61.9 50.1-112 112-112zm64 352H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z"],file:[384,512,[128196,128459,61462],"f15b","M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64z"],hospital:[640,512,[127973,62589,"hospital-alt","hospital-wide"],"f0f8","M232 0c-39.8 0-72 32.2-72 72v8H72C32.2 80 0 112.2 0 152V440c0 39.8 32.2 72 72 72h.2 .2 .2 .2 .2H73h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H75h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H77h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H79h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H82h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H85h.2 .2 .2 .2H86h.2 .2 .2 .2H87h.2 .2 .2 .2H88h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H98h.2 .2 .2 .2H99h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2v0H456h8v0H568c39.8 0 72-32.2 72-72V152c0-39.8-32.2-72-72-72H480V72c0-39.8-32.2-72-72-72H232zM480 128h88c13.3 0 24 10.7 24 24v40H536c-13.3 0-24 10.7-24 24s10.7 24 24 24h56v48H536c-13.3 0-24 10.7-24 24s10.7 24 24 24h56V440c0 13.3-10.7 24-24 24H480V336 128zM72 128h88V464h-.1-.2-.2-.2H159h-.2-.2-.2H158h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H154h-.2-.2-.2H153h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H150h-.2-.2-.2H149h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H146h-.2-.2-.2H145h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H142h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H139h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H136h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H133h-.2-.2-.2-.2-.2-.2-.2-.2H131h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H128h-.2-.2-.2-.2-.2-.2-.2-.2H126h-.2-.2-.2-.2-.2-.2-.2-.2H124h-.2-.2-.2-.2-.2-.2-.2-.2H122h-.2-.2-.2-.2-.2-.2-.2-.2H120h-.2-.2-.2-.2-.2-.2-.2-.2H118h-.2-.2-.2-.2-.2-.2-.2-.2H116h-.2-.2-.2-.2-.2-.2-.2-.2H114h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H111h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H108h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H105h-.2-.2-.2-.2H104h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H100h-.2-.2-.2-.2H99h-.2-.2-.2-.2H98h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H88h-.2-.2-.2-.2H87h-.2-.2-.2-.2H86h-.2-.2-.2-.2H85h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H82h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H79h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H77h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H75h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H73h-.2-.2-.2-.2-.2H72c-13.2 0-24-10.7-24-24V336h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H48V240h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H48V152c0-13.3 10.7-24 24-24zM208 72c0-13.3 10.7-24 24-24H408c13.3 0 24 10.7 24 24V336 464H368V400c0-26.5-21.5-48-48-48s-48 21.5-48 48v64H208V72zm88 24v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V168h24c8.8 0 16-7.2 16-16V136c0-8.8-7.2-16-16-16H344V96c0-8.8-7.2-16-16-16H312c-8.8 0-16 7.2-16 16z"],"chess-rook":[448,512,[9820],"f447","M80 80V192c0 2.5 1.2 4.9 3.2 6.4l51.2 38.4c6.8 5.1 10.4 13.4 9.5 21.9L133.5 352H85.2l9.4-85L54.4 236.8C40.3 226.2 32 209.6 32 192V72c0-22.1 17.9-40 40-40H376c22.1 0 40 17.9 40 40V192c0 17.6-8.3 34.2-22.4 44.8L353.4 267l9.4 85H314.5l-10.4-93.3c-.9-8.4 2.7-16.8 9.5-21.9l51.2-38.4c2-1.5 3.2-3.9 3.2-6.4V80H304v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V80H192v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V80H80zm4.7 384H363.3l-16.6-32H101.2L84.7 464zm271.9-80c12 0 22.9 6.7 28.4 17.3l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H72.8C50.2 512 32 493.8 32 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C68.5 390.7 79.5 384 91.5 384h265zM208 288c-8.8 0-16-7.2-16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 8.8-7.2 16-16 16H208z"],"star-half":[576,512,[61731],"f089","M293.3 .6c10.9 2.5 18.6 12.2 18.6 23.4V408.7c0 8.9-4.9 17-12.7 21.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.3c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5c4.9-10.1 16.1-15.4 27-12.9zM263.9 128.4l-28.6 58.8c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l92.5-49.4V128.4z"],"chess-king":[448,512,[9818],"f43f","M248 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V56H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v40H59.6C26.7 144 0 170.7 0 203.6c0 8.2 1.7 16.3 4.9 23.8L59.1 352h52.3L49 208.2c-.6-1.5-1-3-1-4.6c0-6.4 5.2-11.6 11.6-11.6H224 388.4c6.4 0 11.6 5.2 11.6 11.6c0 1.6-.3 3.2-1 4.6L336.5 352h52.3l54.2-124.6c3.3-7.5 4.9-15.6 4.9-23.8c0-32.9-26.7-59.6-59.6-59.6H248V104h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V24zM101.2 432H346.8l16.6 32H84.7l16.6-32zm283.7-30.7c-5.5-10.6-16.5-17.3-28.4-17.3H91.5c-12 0-22.9 6.7-28.4 17.3L36.6 452.5c-3 5.8-4.6 12.2-4.6 18.7C32 493.8 50.2 512 72.8 512H375.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2z"],"circle-user":[512,512,[62142,"user-circle"],"f2bd","M406.5 399.6C387.4 352.9 341.5 320 288 320H224c-53.5 0-99.4 32.9-118.5 79.6C69.9 362.2 48 311.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 55.7-21.9 106.2-57.5 143.6zm-40.1 32.7C334.4 452.4 296.6 464 256 464s-78.4-11.6-110.5-31.7c7.3-36.7 39.7-64.3 78.5-64.3h64c38.8 0 71.2 27.6 78.5 64.3zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-272a40 40 0 1 1 0-80 40 40 0 1 1 0 80zm-88-40a88 88 0 1 0 176 0 88 88 0 1 0 -176 0z"],copy:[448,512,[],"f0c5","M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z"],"share-from-square":[576,512,[61509,"share-square"],"f14d","M400 255.4V240 208c0-8.8-7.2-16-16-16H352 336 289.5c-50.9 0-93.9 33.5-108.3 79.6c-3.3-9.4-5.2-19.8-5.2-31.6c0-61.9 50.1-112 112-112h48 16 32c8.8 0 16-7.2 16-16V80 64.6L506 160 400 255.4zM336 240h16v48c0 17.7 14.3 32 32 32h3.7c7.9 0 15.5-2.9 21.4-8.2l139-125.1c7.6-6.8 11.9-16.5 11.9-26.7s-4.3-19.9-11.9-26.7L409.9 8.9C403.5 3.2 395.3 0 386.7 0C367.5 0 352 15.5 352 34.7V80H336 304 288c-88.4 0-160 71.6-160 160c0 60.4 34.6 99.1 63.9 120.9c5.9 4.4 11.5 8.1 16.7 11.2c4.4 2.7 8.5 4.9 11.9 6.6c3.4 1.7 6.2 3 8.2 3.9c2.2 1 4.6 1.4 7.1 1.4h2.5c9.8 0 17.8-8 17.8-17.8c0-7.8-5.3-14.7-11.6-19.5l0 0c-.4-.3-.7-.5-1.1-.8c-1.7-1.1-3.4-2.5-5-4.1c-.8-.8-1.7-1.6-2.5-2.6s-1.6-1.9-2.4-2.9c-1.8-2.5-3.5-5.3-5-8.5c-2.6-6-4.3-13.3-4.3-22.4c0-36.1 29.3-65.5 65.5-65.5H304h32zM72 32C32.2 32 0 64.2 0 104V440c0 39.8 32.2 72 72 72H408c39.8 0 72-32.2 72-72V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V104c0-13.3 10.7-24 24-24h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H72z"],copyright:[512,512,[169],"f1f9","M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c-31.2-31.2-31.2-81.9 0-113.1s81.9-31.2 113.1 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9c-50-50-131-50-181 0s-50 131 0 181s131 50 181 0c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0c-31.2 31.2-81.9 31.2-113.1 0z"],map:[576,512,[128506,62072],"f279","M565.6 36.2C572.1 40.7 576 48.1 576 56V392c0 10-6.2 18.9-15.5 22.4l-168 64c-5.2 2-10.9 2.1-16.1 .3L192.5 417.5l-160 61c-7.4 2.8-15.7 1.8-22.2-2.7S0 463.9 0 456V120c0-10 6.1-18.9 15.5-22.4l168-64c5.2-2 10.9-2.1 16.1-.3L383.5 94.5l160-61c7.4-2.8 15.7-1.8 22.2 2.7zM48 136.5V421.2l120-45.7V90.8L48 136.5zM360 422.7V137.3l-144-48V374.7l144 48zm48-1.5l120-45.7V90.8L408 136.5V421.2z"],"bell-slash":[640,512,[128277,61943],"f1f6","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L542.6 400c2.7-7.8 1.3-16.5-3.9-23l-14.9-18.6C495.5 322.9 480 278.8 480 233.4V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V51.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM224 150.3C243.6 117.7 279.3 96 320 96c61.9 0 112 50.1 112 112v25.4c0 32.7 6.4 64.8 18.7 94.5L224 150.3zM406.2 416l-60.9-48H168.3c21.2-32.8 34.4-70.3 38.4-109.1L160 222.1v11.4c0 45.4-15.5 89.5-43.8 124.9L101.3 377c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6H406.2zM384 448H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z"],"hand-lizard":[512,512,[],"f258","M72 112c-13.3 0-24 10.7-24 24s10.7 24 24 24H240c35.3 0 64 28.7 64 64s-28.7 64-64 64H136c-13.3 0-24 10.7-24 24s10.7 24 24 24H288c4.5 0 8.9 1.3 12.7 3.6l64 40c7 4.4 11.3 12.1 11.3 20.4v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V413.3L281.1 384H136c-39.8 0-72-32.2-72-72s32.2-72 72-72H240c8.8 0 16-7.2 16-16s-7.2-16-16-16H72c-39.8 0-72-32.2-72-72S32.2 64 72 64H281.6c46.7 0 90.9 21.5 119.7 58.3l78.4 100.1c20.9 26.7 32.3 59.7 32.3 93.7V424c0 13.3-10.7 24-24 24s-24-10.7-24-24V316.1c0-23.2-7.8-45.8-22.1-64.1L363.5 151.9c-19.7-25.2-49.9-39.9-81.9-39.9H72z"],"face-smile":[512,512,[128578,"smile"],"f118","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"hand-peace":[512,512,[9996],"f25b","M250.8 1.4c-35.2-3.7-66.6 21.8-70.3 57L174 119 156.7 69.6C145 36.3 108.4 18.8 75.1 30.5S24.2 78.8 35.9 112.1L88.7 262.2C73.5 276.7 64 297.3 64 320v0 24c0 92.8 75.2 168 168 168h48c92.8 0 168-75.2 168-168V272 256 224c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4c-10.4-21.3-32.3-36-57.6-36c-.7 0-1.5 0-2.2 0l5.9-56.3c3.7-35.2-21.8-66.6-57-70.3zm-.2 155.4C243.9 166.9 240 179 240 192v48c0 .7 0 1.4 0 2c-5.1-1.3-10.5-2-16-2h-7.4l-5.4-15.3 17-161.3c.9-8.8 8.8-15.2 17.6-14.2s15.2 8.8 14.2 17.6l-9.5 90.1zM111.4 85.6L165.7 240H144c-4 0-8 .3-11.9 .9L81.2 96.2c-2.9-8.3 1.5-17.5 9.8-20.4s17.5 1.5 20.4 9.8zM288 192c0-8.8 7.2-16 16-16s16 7.2 16 16v32 16c0 8.8-7.2 16-16 16s-16-7.2-16-16V192zm38.4 108c10.4 21.3 32.3 36 57.6 36c5.5 0 10.9-.7 16-2v10c0 66.3-53.7 120-120 120H232c-66.3 0-120-53.7-120-120l0-24 0 0c0-17.7 14.3-32 32-32h80c8.8 0 16 7.2 16 16s-7.2 16-16 16H184c-13.3 0-24 10.7-24 24s10.7 24 24 24h40c35.3 0 64-28.7 64-64c0-.7 0-1.4 0-2c5.1 1.3 10.5 2 16 2c7.9 0 15.4-1.4 22.4-4zM400 272c0 8.8-7.2 16-16 16s-16-7.2-16-16V240 224c0-8.8 7.2-16 16-16s16 7.2 16 16v32 16z"],"face-grin-hearts":[512,512,[128525,"grin-hearts"],"f584","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM215.3 137.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm122.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z"],building:[384,512,[127970,61687],"f1ad","M64 48c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16h80V400c0-26.5 21.5-48 48-48s48 21.5 48 48v64h80c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H64zM0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm88 40c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H104c-8.8 0-16-7.2-16-16V104zM232 88h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H232c-8.8 0-16-7.2-16-16V104c0-8.8 7.2-16 16-16zM88 232c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H104c-8.8 0-16-7.2-16-16V232zm144-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H232c-8.8 0-16-7.2-16-16V232c0-8.8 7.2-16 16-16z"],"face-grin-beam-sweat":[512,512,[128517,"grin-beam-sweat"],"f583","M476.8 126.3C497.1 120.8 512 102.7 512 81c0-20-28.6-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0c-9.5 12.6-27.1 37.2-36 57.5c-.3 .7-.6 1.4-.9 2.1C417.8 69.7 416 76 416 81c0 26 21.5 47 48 47c4.4 0 8.7-.6 12.8-1.7zM395.4 41.2C355.3 15.2 307.4 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256c0-35.8-7.3-69.9-20.6-100.8c-8.6 3.1-17.8 4.8-27.4 4.8c-8.9 0-17.6-1.5-25.7-4.2C454.7 185.5 464 219.7 464 256c0 114.9-93.1 208-208 208S48 370.9 48 256S141.1 48 256 48c48.7 0 93.4 16.7 128.9 44.7c-.6-3.8-.9-7.7-.9-11.7c0-11.4 3.8-22.4 7.1-30.5c1.3-3.1 2.7-6.2 4.3-9.3zM375 336.5c10.4-16.1-6.8-32.5-25.5-28.1c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c24.6 38.1 68.7 63.5 119.1 63.5s94.5-25.4 119.1-63.5zM217.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z"],moon:[384,512,[127769,9214],"f186","M144.7 98.7c-21 34.1-33.1 74.3-33.1 117.3c0 98 62.8 181.4 150.4 211.7c-12.4 2.8-25.3 4.3-38.6 4.3C126.6 432 48 353.3 48 256c0-68.9 39.4-128.4 96.8-157.3zm62.1-66C91.1 41.2 0 137.9 0 256C0 379.7 100 480 223.5 480c47.8 0 92-15 128.4-40.6c1.9-1.3 3.7-2.7 5.5-4c4.8-3.6 9.4-7.4 13.9-11.4c2.7-2.4 5.3-4.8 7.9-7.3c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-3.7 .6-7.4 1.2-11.1 1.6c-5 .5-10.1 .9-15.3 1c-1.2 0-2.5 0-3.7 0c-.1 0-.2 0-.3 0c-96.8-.2-175.2-78.9-175.2-176c0-54.8 24.9-103.7 64.1-136c1-.9 2.1-1.7 3.2-2.6c4-3.2 8.2-6.2 12.5-9c3.1-2 6.3-4 9.6-5.8c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-3.6-.3-7.1-.5-10.7-.6c-2.7-.1-5.5-.1-8.2-.1c-3.3 0-6.5 .1-9.8 .2c-2.3 .1-4.6 .2-6.9 .4z"],calendar:[448,512,[128197,128198],"f133","M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192H400V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192z"],"face-grin-tongue-wink":[512,512,[128540,"grin-tongue-wink"],"f58b","M348.3 442.4c2.4-8.4 3.7-17.3 3.7-26.4V363.5c8.8-8 16.6-17.1 23-27c10.4-16.1-6.8-32.5-25.5-28.1c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c6.5 10 14.3 19.1 23.1 27.1V416c0 9.2 1.3 18 3.7 26.4C95.1 408.4 48 337.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 81.7-47.1 152.4-115.7 186.4zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.6 220c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C199.7 186.8 179 180 159.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zm176.7 12a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-.4-72a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM320 416c0 35.3-28.7 64-64 64s-64-28.7-64-64V378.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6V416z"],clone:[512,512,[],"f24d","M64 464H288c8.8 0 16-7.2 16-16V384h48v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h64v48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM224 304H448c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16V288c0 8.8 7.2 16 16 16zm-64-16V64c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64z"],"face-angry":[512,512,[128544,"angry"],"f556","M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm72.4-118.5c9.7-9 10.2-24.2 1.2-33.9C315.3 344.3 290.6 328 256 328s-59.3 16.3-73.5 31.6c-9 9.7-8.5 24.9 1.2 33.9s24.9 8.5 33.9-1.2c7.4-7.9 20-16.4 38.5-16.4s31.1 8.5 38.5 16.4c9 9.7 24.2 10.2 33.9 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z"],"rectangle-xmark":[512,512,[62164,"rectangle-times","times-rectangle","window-close"],"f410","M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm175 79c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"],"paper-plane":[512,512,[61913],"f1d8","M16.1 260.2c-22.6 12.9-20.5 47.3 3.6 57.3L160 376V479.3c0 18.1 14.6 32.7 32.7 32.7c9.7 0 18.9-4.3 25.1-11.8l62-74.3 123.9 51.6c18.9 7.9 40.8-4.5 43.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448 256zm52.1 25.5L409.7 90.6 190.1 336l1.2 1L68.2 285.7zM403.3 425.4L236.7 355.9 450.8 116.6 403.3 425.4z"],"life-ring":[512,512,[],"f1cd","M385.1 419.1C349.7 447.2 304.8 464 256 464s-93.7-16.8-129.1-44.9l80.4-80.4c14.3 8.4 31 13.3 48.8 13.3s34.5-4.8 48.8-13.3l80.4 80.4zm68.1 .2C489.9 374.9 512 318.1 512 256s-22.1-118.9-58.8-163.3L465 81c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L419.3 58.8C374.9 22.1 318.1 0 256 0S137.1 22.1 92.7 58.8L81 47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L58.8 92.7C22.1 137.1 0 193.9 0 256s22.1 118.9 58.8 163.3L47 431c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l11.8-11.8C137.1 489.9 193.9 512 256 512s118.9-22.1 163.3-58.8L431 465c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-11.8-11.8zm-34.1-34.1l-80.4-80.4c8.4-14.3 13.3-31 13.3-48.8s-4.8-34.5-13.3-48.8l80.4-80.4C447.2 162.3 464 207.2 464 256s-16.8 93.7-44.9 129.1zM385.1 92.9l-80.4 80.4c-14.3-8.4-31-13.3-48.8-13.3s-34.5 4.8-48.8 13.3L126.9 92.9C162.3 64.8 207.2 48 256 48s93.7 16.8 129.1 44.9zM173.3 304.8L92.9 385.1C64.8 349.7 48 304.8 48 256s16.8-93.7 44.9-129.1l80.4 80.4c-8.4 14.3-13.3 31-13.3 48.8s4.8 34.5 13.3 48.8zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z"],"face-grimace":[512,512,[128556,"grimace"],"f57f","M256 48a208 208 0 1 0 0 416 208 208 0 1 0 0-416zM512 256A256 256 0 1 1 0 256a256 256 0 1 1 512 0zM168 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h8V320h-8zm40 48h32V320H208v48zm96 0V320H272v48h32zm32 0h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v48zM168 288H344c30.9 0 56 25.1 56 56s-25.1 56-56 56H168c-30.9 0-56-25.1-56-56s25.1-56 56-56zm-23.6-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"calendar-minus":[448,512,[],"f272","M128 0c13.3 0 24 10.7 24 24V64H296V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192 144 128C0 92.7 28.7 64 64 64h40V24c0-13.3 10.7-24 24-24zM400 192H48V448c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V192zM296 352H152c-13.3 0-24-10.7-24-24s10.7-24 24-24H296c13.3 0 24 10.7 24 24s-10.7 24-24 24z"],"circle-xmark":[512,512,[61532,"times-circle","xmark-circle"],"f057","M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z"],"thumbs-up":[512,512,[128077,61575],"f164","M323.8 34.8c-38.2-10.9-78.1 11.2-89 49.4l-5.7 20c-3.7 13-10.4 25-19.5 35l-51.3 56.4c-8.9 9.8-8.2 25 1.6 33.9s25 8.2 33.9-1.6l51.3-56.4c14.1-15.5 24.4-34 30.1-54.1l5.7-20c3.6-12.7 16.9-20.1 29.7-16.5s20.1 16.9 16.5 29.7l-5.7 20c-5.7 19.9-14.7 38.7-26.6 55.5c-5.2 7.3-5.8 16.9-1.7 24.9s12.3 13 21.3 13L448 224c8.8 0 16 7.2 16 16c0 6.8-4.3 12.7-10.4 15c-7.4 2.8-13 9-14.9 16.7s.1 15.8 5.3 21.7c2.5 2.8 4 6.5 4 10.6c0 7.8-5.6 14.3-13 15.7c-8.2 1.6-15.1 7.3-18 15.2s-1.6 16.7 3.6 23.3c2.1 2.7 3.4 6.1 3.4 9.9c0 6.7-4.2 12.6-10.2 14.9c-11.5 4.5-17.7 16.9-14.4 28.8c.4 1.3 .6 2.8 .6 4.3c0 8.8-7.2 16-16 16H286.5c-12.6 0-25-3.7-35.5-10.7l-61.7-41.1c-11-7.4-25.9-4.4-33.3 6.7s-4.4 25.9 6.7 33.3l61.7 41.1c18.4 12.3 40 18.8 62.1 18.8H384c34.7 0 62.9-27.6 64-62c14.6-11.7 24-29.7 24-50c0-4.5-.5-8.8-1.3-13c15.4-11.7 25.3-30.2 25.3-51c0-6.5-1-12.8-2.8-18.7C504.8 273.7 512 257.7 512 240c0-35.3-28.6-64-64-64l-92.3 0c4.7-10.4 8.7-21.2 11.8-32.2l5.7-20c10.9-38.2-11.2-78.1-49.4-89zM32 192c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H32z"],"window-minimize":[512,512,[128469],"f2d1","M24 432c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z"],"square-full":[512,512,[128997,128998,128999,129e3,129001,129002,129003,11035,11036],"f45c","M464 48V464H48V48H464zM48 0H0V48 464v48H48 464h48V464 48 0H464 48z"],"note-sticky":[448,512,[62026,"sticky-note"],"f249","M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H288V352c0-17.7 14.3-32 32-32h80V96c0-8.8-7.2-16-16-16H64zM288 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V320v5.5c0 17-6.7 33.3-18.7 45.3l-90.5 90.5c-12 12-28.3 18.7-45.3 18.7H288z"],"face-sad-tear":[512,512,[128546,"sad-tear"],"f5b4","M175.9 448c-35-.1-65.5-22.6-76-54.6C67.6 356.8 48 308.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208s-93.1 208-208 208c-28.4 0-55.5-5.7-80.1-16zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM128 369c0 26 21.5 47 48 47s48-21 48-47c0-20-28.4-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0C156.6 308.6 128 349 128 369zm128-65c-13.3 0-24 10.7-24 24s10.7 24 24 24c30.7 0 58.7 11.5 80 30.6c9.9 8.8 25 8 33.9-1.9s8-25-1.9-33.9C338.3 320.2 299 304 256 304zm47.6-96a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm-128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"hand-point-left":[512,512,[],"f0a5","M64 128l177.6 0c-1 5.2-1.6 10.5-1.6 16l0 16-32 0L64 160c-8.8 0-16-7.2-16-16s7.2-16 16-16zm224 16c0-17.7 14.3-32 32-32c0 0 0 0 0 0l24 0c66.3 0 120 53.7 120 120l0 48c0 52.5-33.7 97.1-80.7 113.4c.5-3.1 .7-6.2 .7-9.4c0-20-9.2-37.9-23.6-49.7c4.9-9 7.6-19.4 7.6-30.3c0-15.1-5.3-29-14-40c8.8-11 14-24.9 14-40l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-40 0-40zm32-80s0 0 0 0c-18 0-34.6 6-48 16L64 80C28.7 80 0 108.7 0 144s28.7 64 64 64l82 0c-1.3 5.1-2 10.5-2 16c0 25.3 14.7 47.2 36 57.6c-2.6 7-4 14.5-4 22.4c0 20 9.2 37.9 23.6 49.7c-4.9 9-7.6 19.4-7.6 30.3c0 35.3 28.7 64 64 64l64 0 24 0c92.8 0 168-75.2 168-168l0-48c0-92.8-75.2-168-168-168l-24 0zM256 400c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0zM240 224c0 5.5 .7 10.9 2 16l-2 0-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l32 0 0 16zm24 64l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l24 0z"]};!function(c){try{for(var l=arguments.length,s=new Array(1<l?l-1:0),a=1;a<l;a++)s[a-1]=arguments[a];c.apply(void 0,s)}catch(c){if(!M)throw c}}((function(){d("far",p),d("fa-regular",p)}))}(),function(){"use strict";var c={},l={};try{"undefined"!=typeof window&&(c=window),"undefined"!=typeof document&&(l=document)}catch(c){}var s=void 0===(v=(c.navigator||{}).userAgent)?"":v,a=c,z=l;function e(c,l){var s,a=Object.keys(c);return Object.getOwnPropertySymbols&&(s=Object.getOwnPropertySymbols(c),l&&(s=s.filter((function(l){return Object.getOwnPropertyDescriptor(c,l).enumerable}))),a.push.apply(a,s)),a}function H(c){for(var l=1;l<arguments.length;l++){var s=null!=arguments[l]?arguments[l]:{};l%2?e(Object(s),!0).forEach((function(l){t(c,l,s[l])})):Object.getOwnPropertyDescriptors?Object.defineProperties(c,Object.getOwnPropertyDescriptors(s)):e(Object(s)).forEach((function(l){Object.defineProperty(c,l,Object.getOwnPropertyDescriptor(s,l))}))}return c}function t(c,l,s){return l in c?Object.defineProperty(c,l,{value:s,enumerable:!0,configurable:!0,writable:!0}):c[l]=s,c}function V(c,l){(null==l||l>c.length)&&(l=c.length);for(var s=0,a=new Array(l);s<l;s++)a[s]=c[s];return a}a.document,z.documentElement&&z.head&&"function"==typeof z.addEventListener&&z.createElement,~s.indexOf("MSIE")||s.indexOf("Trident/");var r="___FONT_AWESOME___",M=function(){try{return!0}catch(c){return!1}}(),h="classic",n="sharp",i=[h,n];function m(c){return new Proxy(c,{get:function(c,l){return l in c?c[l]:c[h]}})}m((t(f={},h,{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit",fakd:"kit","fa-kit":"kit","fa-kit-duotone":"kit"}),t(f,n,{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"}),f));var o=m((t(C={},h,{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"}),t(C,n,{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"}),C)),f=(s=(m((t(v={},h,{fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"}),t(v,n,{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"}),v)),m((t(c={},h,{"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"}),t(c,n,{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"}),c)),m((t(l={},h,{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"}),t(l,n,{900:"fass",400:"fasr",300:"fasl",100:"fast"}),l)),z=[1,2,3,4,5,6,7,8,9,10]).concat([11,12,13,14,15,16,17,18,19,20]),"duotone-group"),C="swap-opacity",v="primary";c="secondary",l=new Set,Object.keys(o[h]).map(l.add.bind(l)),Object.keys(o[n]).map(l.add.bind(l)),[].concat(i,function(c){if(Array.isArray(c))return V(c)}(l)||function(c){if("undefined"!=typeof Symbol&&null!=c[Symbol.iterator]||null!=c["@@iterator"])return Array.from(c)}(l)||function(c,l){if(c){if("string"==typeof c)return V(c,l);var s=Object.prototype.toString.call(c).slice(8,-1);return"Map"===(s="Object"===s&&c.constructor?c.constructor.name:s)||"Set"===s?Array.from(c):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?V(c,l):void 0}}(l)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",f,C,v,c]).concat(z.map((function(c){return"".concat(c,"x")}))).concat(s.map((function(c){return"w-".concat(c)}))),(a=a||{})[r]||(a[r]={}),a[r].styles||(a[r].styles={}),a[r].hooks||(a[r].hooks={}),a[r].shims||(a[r].shims=[]);var L=a[r];function u(c){return Object.keys(c).reduce((function(l,s){var a=c[s];return a.icon?l[a.iconName]=a.icon:l[s]=a,l}),{})}function d(c,l,s){s=void 0!==(a=(2<arguments.length&&void 0!==s?s:{}).skipHooks)&&a;var a=u(l);"function"!=typeof L.hooks.addPack||s?L.styles[c]=H(H({},L.styles[c]||{}),a):L.hooks.addPack(c,u(l)),"fas"===c&&d("fa",l)}var p={0:[320,512,[],"30","M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160V320c0 88.4-71.6 160-160 160S0 408.4 0 320V192zM160 96c-53 0-96 43-96 96V320c0 53 43 96 96 96s96-43 96-96V192c0-53-43-96-96-96z"],1:[256,512,[],"31","M160 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.8 1.6l-96 64C-.5 111.2-4.4 131 5.4 145.8s29.7 18.7 44.4 8.9L96 123.8V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V64z"],2:[320,512,[],"32","M142.9 96c-21.5 0-42.2 8.5-57.4 23.8L54.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L40.2 74.5C67.5 47.3 104.4 32 142.9 32C223 32 288 97 288 177.1c0 38.5-15.3 75.4-42.5 102.6L109.3 416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L200.2 234.5c15.2-15.2 23.8-35.9 23.8-57.4c0-44.8-36.3-81.1-81.1-81.1z"],3:[320,512,[],"33","M0 64C0 46.3 14.3 32 32 32H272c13.2 0 25 8.1 29.8 20.4s1.5 26.3-8.2 35.2L162.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H105.4C63 480 24.2 456 5.3 418.1l-1.9-3.8c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l1.9 3.8c8.1 16.3 24.8 26.5 42.9 26.5H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H80c-13.2 0-25-8.1-29.8-20.4s-1.5-26.3 8.2-35.2L189.7 96H32C14.3 96 0 81.7 0 64z"],4:[384,512,[],"34","M189 77.6c7.5-16 .7-35.1-15.3-42.6s-35.1-.7-42.6 15.3L3 322.4c-4.7 9.9-3.9 21.5 1.9 30.8S21 368 32 368H256v80c0 17.7 14.3 32 32 32s32-14.3 32-32V368h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320V160c0-17.7-14.3-32-32-32s-32 14.3-32 32V304H82.4L189 77.6z"],5:[320,512,[],"35","M32.5 58.3C35.3 43.1 48.5 32 64 32H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H90.7L70.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H100.5c-39.4 0-75.4-22.3-93-57.5l-4.1-8.2c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l4.1 8.2c6.8 13.6 20.6 22.1 35.8 22.1H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H32c-9.5 0-18.5-4.2-24.6-11.5s-8.6-16.9-6.9-26.2l32-176z"],6:[320,512,[],"36","M232.4 84.7c11.4-13.5 9.7-33.7-3.8-45.1s-33.7-9.7-45.1 3.8L38.6 214.7C14.7 242.9 1.1 278.4 .1 315.2c0 1.4-.1 2.9-.1 4.3c0 .2 0 .3 0 .5c0 88.4 71.6 160 160 160s160-71.6 160-160c0-85.5-67.1-155.4-151.5-159.8l63.9-75.6zM256 320A96 96 0 1 1 64 320a96 96 0 1 1 192 0z"],7:[320,512,[],"37","M0 64C0 46.3 14.3 32 32 32H288c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96H32C14.3 96 0 81.7 0 64z"],8:[320,512,[],"38","M304 160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 34.6 13.7 66 36 89C20.5 272.3 0 309.8 0 352c0 70.7 57.3 128 128 128h64c70.7 0 128-57.3 128-128c0-42.2-20.5-79.7-52-103c22.3-23 36-54.4 36-89zM176.1 288H192c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64h15.9c0 0 .1 0 .1 0h32c0 0 .1 0 .1 0zm0-64c0 0 0 0 0 0H144c0 0 0 0 0 0c-35.3 0-64-28.7-64-64c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64c0 35.3-28.6 64-64 64z"],9:[320,512,[],"39","M64 192a96 96 0 1 0 192 0A96 96 0 1 0 64 192zm87.5 159.8C67.1 347.4 0 277.5 0 192C0 103.6 71.6 32 160 32s160 71.6 160 160c0 2.6-.1 5.3-.2 7.9c-1.7 35.7-15.2 70-38.4 97.4l-145 171.4c-11.4 13.5-31.6 15.2-45.1 3.8s-15.2-31.6-3.8-45.1l63.9-75.6z"],"fill-drip":[576,512,[],"f576","M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6H386.7l42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z"],"arrows-to-circle":[640,512,[],"e4bd","M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7V96c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 4.3-.9 8.5-2.4 12.2c-1.6 3.7-3.8 7.3-6.9 10.3l-.1 .1c-3.1 3-6.6 5.3-10.3 6.9c-3.8 1.6-7.9 2.4-12.2 2.4H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h18.7L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zM256 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM114.7 352H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0l.1 0c8.8 0 16.7 3.6 22.5 9.3l.1 .1c3 3.1 5.3 6.6 6.9 10.3c1.6 3.8 2.4 7.9 2.4 12.2v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352zM416 96c0-17.7 14.3-32 32-32s32 14.3 32 32v18.7L585.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 160H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448c-8.8 0-16.8-3.6-22.6-9.3l-.1-.1c-3-3.1-5.3-6.6-6.9-10.3s-2.4-7.8-2.4-12.2l0-.1v0V96zM525.3 352L630.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 397.3V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V320v0c0 0 0-.1 0-.1c0-4.3 .9-8.4 2.4-12.2c1.6-3.8 3.9-7.3 6.9-10.4c5.8-5.8 13.7-9.3 22.5-9.4c0 0 .1 0 .1 0h0 96c17.7 0 32 14.3 32 32s-14.3 32-32 32H525.3z"],"circle-chevron-right":[512,512,["chevron-circle-right"],"f138","M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z"],at:[512,512,[61946],"40","M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256v32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32v80 32c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z"],"trash-can":[448,512,[61460,"trash-alt"],"f2ed","M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z"],"text-height":[576,512,[],"f034","M64 128V96h64l0 320H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H192l0-320h64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H160 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM502.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V352H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H512V160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z"],"user-xmark":[640,512,["user-times"],"f235","M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM471 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"],stethoscope:[576,512,[129658],"f0f1","M142.4 21.9c5.6 16.8-3.5 34.9-20.2 40.5L96 71.1V192c0 53 43 96 96 96s96-43 96-96V71.1l-26.1-8.7c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l26.1 8.7C334.4 19.1 352 43.5 352 71.1V192c0 77.2-54.6 141.6-127.3 156.7C231 404.6 278.4 448 336 448c61.9 0 112-50.1 112-112V265.3c-28.3-12.3-48-40.5-48-73.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V336c0 97.2-78.8 176-176 176c-92.9 0-168.9-71.9-175.5-163.1C87.2 334.2 32 269.6 32 192V71.1c0-27.5 17.6-52 43.8-60.7l26.1-8.7c16.8-5.6 34.9 3.5 40.5 20.2zM480 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],message:[512,512,["comment-alt"],"f27a","M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64h96v80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64z"],info:[192,512,[],"f129","M48 80a48 48 0 1 1 96 0A48 48 0 1 1 48 80zM0 224c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V448h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V256H32c-17.7 0-32-14.3-32-32z"],"down-left-and-up-right-to-center":[512,512,["compress-alt"],"f422","M439 7c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H296c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39L439 7zM72 272H216c13.3 0 24 10.7 24 24V440c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39L73 505c-9.4 9.4-24.6 9.4-33.9 0L7 473c-9.4-9.4-9.4-24.6 0-33.9l87-87L55 313c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8z"],explosion:[576,512,[],"e4e9","M499.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L404.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87H378.5c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H117.8L42.3 363.7c-9.7-6.7-13.1-19.6-7.9-30.3s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.7 9.4-11.3L107.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L246 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7s22.7 9.4 23.9 21.7l13.5 141.9L499.6 11.3zM64 448v0H512v0h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64zM288 0c13.3 0 24 10.7 24 24V72c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24z"],"file-lines":[384,512,[128441,128462,61686,"file-alt","file-text"],"f15c","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],"wave-square":[640,512,[],"f83e","M128 64c0-17.7 14.3-32 32-32H320c17.7 0 32 14.3 32 32V416h96V256c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H512V448c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V96H192V256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V64z"],ring:[512,512,[],"f70b","M64 208c0 7.8 4.4 18.7 17.1 30.3C126.5 214.1 188.9 200 256 200s129.5 14.1 174.9 38.3C443.6 226.7 448 215.8 448 208c0-12.3-10.8-32-47.9-50.6C364.9 139.8 314 128 256 128s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7C166.3 280.2 208.8 288 256 288s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208c0-49.6 39.4-85.8 83.3-107.8C129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8v96c0 49.6-39.4 85.8-83.3 107.8C382.9 434.7 321.7 448 256 448s-126.9-13.3-172.7-36.2C39.4 389.8 0 353.6 0 304V208z"],"building-un":[384,512,[],"e4d9","M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM237.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM112 80v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V80c0-8.8 7.2-16 16-16s16 7.2 16 16z"],"dice-three":[448,512,[9858],"f527","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"calendar-days":[448,512,["calendar-alt"],"f073","M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z"],"anchor-circle-check":[640,512,[],"e4aa","M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z"],"building-circle-arrow-right":[640,512,[],"e4d1","M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V232.2c-39.1 32.3-64 81.1-64 135.8c0 49.5 20.4 94.2 53.3 126.2C364.5 505.1 351.1 512 336 512H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm96 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm140.7-67.3c-6.2 6.2-6.2 16.4 0 22.6L521.4 352H432c-8.8 0-16 7.2-16 16s7.2 16 16 16h89.4l-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z"],volleyball:[512,512,[127952,"volleyball-ball"],"f45f","M511.8 267.4c-26.1 8.7-53.4 13.8-81 15.1c9.2-105.3-31.5-204.2-103.2-272.4C434.1 41.1 512 139.5 512 256c0 3.8-.1 7.6-.2 11.4zm-3.9 34.7c-5.8 32-17.6 62-34.2 88.7c-97.5 48.5-217.7 42.6-311.9-24.5c23.7-36.2 55.4-67.7 94.5-91.8c79.9 43.2 170.1 50.8 251.6 27.6zm-236-55.5c-2.5-90.9-41.1-172.7-101.9-231.7C196.8 5.2 225.8 0 256 0c2.7 0 5.3 0 7.9 .1c90.8 60.2 145.7 167.2 134.7 282.3c-43.1-2.4-86.4-14.1-126.8-35.9zM138 28.8c20.6 18.3 38.7 39.4 53.7 62.6C95.9 136.1 30.6 220.8 7.3 316.9C2.5 297.4 0 277 0 256C0 157.2 56 71.5 138 28.8zm69.6 90.5c19.5 38.6 31 81.9 32.3 127.7C162.5 294.6 110.9 368.9 90.2 451C66 430.4 45.6 405.4 30.4 377.2c6.7-108.7 71.9-209.9 177.1-257.9zM256 512c-50.7 0-98-14.7-137.8-40.2c5.6-27 14.8-53.1 27.4-77.7C232.2 454.6 338.1 468.8 433 441c-46 44-108.3 71-177 71z"],"arrows-up-to-line":[576,512,[],"e4c2","M32 96l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96zM9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 237.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96zm320 45.3c12.5 12.5 32.8 12.5 45.3 0L416 237.3 416 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3z"],"sort-down":[320,512,["sort-desc"],"f0dd","M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z"],"circle-minus":[512,512,["minus-circle"],"f056","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"],"door-open":[576,512,[],"f52b","M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 288h32V480 32zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128h96V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H512V128c0-35.3-28.7-64-64-64H352v64z"],"right-from-bracket":[512,512,["sign-out-alt"],"f2f5","M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z"],atom:[512,512,[9883],"f5d2","M256 398.8c-11.8 5.1-23.4 9.7-34.9 13.5c16.7 33.8 31 35.7 34.9 35.7s18.1-1.9 34.9-35.7c-11.4-3.9-23.1-8.4-34.9-13.5zM446 256c33 45.2 44.3 90.9 23.6 128c-20.2 36.3-62.5 49.3-115.2 43.2c-22 52.1-55.6 84.8-98.4 84.8s-76.4-32.7-98.4-84.8c-52.7 6.1-95-6.8-115.2-43.2C21.7 346.9 33 301.2 66 256c-33-45.2-44.3-90.9-23.6-128c20.2-36.3 62.5-49.3 115.2-43.2C179.6 32.7 213.2 0 256 0s76.4 32.7 98.4 84.8c52.7-6.1 95 6.8 115.2 43.2c20.7 37.1 9.4 82.8-23.6 128zm-65.8 67.4c-1.7 14.2-3.9 28-6.7 41.2c31.8 1.4 38.6-8.7 40.2-11.7c2.3-4.2 7-17.9-11.9-48.1c-6.8 6.3-14 12.5-21.6 18.6zm-6.7-175.9c2.8 13.1 5 26.9 6.7 41.2c7.6 6.1 14.8 12.3 21.6 18.6c18.9-30.2 14.2-44 11.9-48.1c-1.6-2.9-8.4-13-40.2-11.7zM290.9 99.7C274.1 65.9 259.9 64 256 64s-18.1 1.9-34.9 35.7c11.4 3.9 23.1 8.4 34.9 13.5c11.8-5.1 23.4-9.7 34.9-13.5zm-159 88.9c1.7-14.3 3.9-28 6.7-41.2c-31.8-1.4-38.6 8.7-40.2 11.7c-2.3 4.2-7 17.9 11.9 48.1c6.8-6.3 14-12.5 21.6-18.6zM110.2 304.8C91.4 335 96 348.7 98.3 352.9c1.6 2.9 8.4 13 40.2 11.7c-2.8-13.1-5-26.9-6.7-41.2c-7.6-6.1-14.8-12.3-21.6-18.6zM336 256a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-80-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],soap:[512,512,[129532],"e06e","M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM416 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 160c0 27.6-11.7 52.5-30.4 70.1C422.1 275.7 448 310.8 448 352c0 53-43 96-96 96H160c-53 0-96-43-96-96s43-96 96-96h88.4c-15.2-17-24.4-39.4-24.4-64H96c-53 0-96 43-96 96V416c0 53 43 96 96 96H416c53 0 96-43 96-96V288c0-53-43-96-96-96zM160 288c-35.3 0-64 28.7-64 64s28.7 64 64 64H352c35.3 0 64-28.7 64-64s-28.7-64-64-64H320 160z"],icons:[512,512,["heart-music-camera-bolt"],"f86d","M500.3 7.3C507.7 13.3 512 22.4 512 32V176c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V71L352 90.2V208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V64c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM74.7 304l11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2h61.7c10.7 0 20.7 5.3 26.6 14.2L213.3 304H240c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V352c0-26.5 21.5-48 48-48H74.7zM192 408a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM478.7 278.3L440.3 368H496c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.2-12.4-5.3-19.2L391.7 400H336c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112c5.6-4.9 13.9-5.3 19.9-.9s8.2 12.4 5.3 19.2zm-339-59.2c-6.5 6.5-17 6.5-23 0L19.9 119.2c-28-29-26.5-76.9 5-103.9c27-23.5 68.4-19 93.4 6.5l10 10.5 9.5-10.5c25-25.5 65.9-30 93.9-6.5c31 27 32.5 74.9 4.5 103.9l-96.4 99.9z"],"microphone-lines-slash":[640,512,["microphone-alt-slash"],"f539","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8V256H358.9l-34.5-27c2.9-3.1 7-5 11.6-5h80V192H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zM358.2 378.2C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9z"],"bridge-circle-check":[640,512,[],"e4c9","M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z"],"pump-medical":[448,512,[],"e06a","M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM216 280v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V360H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V280c0-13.3 10.7-24 24-24s24 10.7 24 24z"],fingerprint:[512,512,[],"f577","M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256v40c0 13.3 10.7 24 24 24s24-10.7 24-24V256zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1v40c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128v24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7V256c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256v24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8V256c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96v24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7V256c0-28.7 23.3-52 52-52s52 23.3 52 52v24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1V256c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24v24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9V256z"],"hand-point-right":[512,512,[],"f0a4","M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm64-64c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32c0 13.2 4 25.4 10.8 35.6C177.9 364.3 160 388.1 160 416c0 11.7 3.1 22.6 8.6 32l-8.6 0C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64l0 88c0 22.1-17.9 40-40 40s-40-17.9-40-40l0-56c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 56c0 39.8 32.2 72 72 72z"],"magnifying-glass-location":[512,512,["search-location"],"f689","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6c6 7.3 16.8 7.3 22.7 0c22.1-27 68.6-89.8 68.6-138.6zm-112 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],"forward-step":[320,512,["step-forward"],"f051","M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241V96c0-17.7 14.3-32 32-32s32 14.3 32 32V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V271l-11.5 9.6-192 160z"],"face-smile-beam":[512,512,[128522,"smile-beam"],"f5b8","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"],"flag-checkered":[448,512,[127937],"f11e","M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1V345.8c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V400 334 64 32C0 14.3 14.3 0 32 0zM64 187.1l64-13.9v65.5L64 252.6V318l48.8-12.2c5.1-1.3 10.1-2.4 15.2-3.3V238.7l38.9-8.4c8.3-1.8 16.7-2.5 25.1-2.1l0-64c13.6 .4 27.2 2.6 40.4 6.4l23.6 6.9v66.7l-41.7-12.3c-7.3-2.1-14.8-3.4-22.3-3.8v71.4c21.8 1.9 43.3 6.7 64 14.4V244.2l22.7 6.7c13.5 4 27.3 6.4 41.3 7.4V194c-7.8-.8-15.6-2.3-23.2-4.5l-40.8-12v-62c-13-3.8-25.8-8.8-38.2-15c-8.2-4.1-16.9-7-25.8-8.8v72.4c-13-.4-26 .8-38.7 3.6L128 173.2V98L64 114v73.1zM320 335.7c16.8 1.5 33.9-.7 50-6.8l14-5.2V251.9l-7.9 1.8c-18.4 4.3-37.3 5.7-56.1 4.5v77.4zm64-149.4V115.4c-20.9 6.1-42.4 9.1-64 9.1V194c13.9 1.4 28 .5 41.7-2.6l22.3-5.2z"],football:[512,512,[127944,"football-ball"],"f44e","M247.5 25.4c-13.5 3.3-26.4 7.2-38.6 11.7C142.9 61.6 96.7 103.6 66 153.6c-18.3 29.8-30.9 62.3-39.2 95.4L264.5 486.6c13.5-3.3 26.4-7.2 38.6-11.7c66-24.5 112.2-66.5 142.9-116.5c18.3-29.8 30.9-62.3 39.1-95.3L247.5 25.4zM495.2 205.3c6.1-56.8 1.4-112.2-7.7-156.4c-2.7-12.9-13-22.9-26.1-25.1c-58.2-9.7-109.9-12-155.6-7.9L495.2 205.3zM206.1 496L16.8 306.7c-6.1 56.8-1.4 112.2 7.7 156.4c2.7 12.9 13 22.9 26.1 25.1c58.2 9.7 109.9 12 155.6 7.9zm54.6-331.3c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6z"],"school-circle-exclamation":[640,512,[],"e56c","M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z"],crop:[512,512,[],"f125","M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 160 64v64l178.7 0L128 338.7V32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H173.3L384 173.3 384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-274.7z"],"angles-down":[448,512,["angle-double-down"],"f103","M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z"],"users-rectangle":[640,512,[],"e594","M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H544c53 0 96-43 96-96V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zm159.8 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3C119.9 256 96 279.9 96 309.3zM461.2 336h56.1c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6zM372 289c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-8.6-24.3-29.9-42.6-55.9-47zM512 176a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z"],"people-roof":[640,512,[],"e537","M335.5 4l288 160c15.4 8.6 21 28.1 12.4 43.5s-28.1 21-43.5 12.4L320 68.6 47.5 220c-15.4 8.6-34.9 3-43.5-12.4s-3-34.9 12.4-43.5L304.5 4c9.7-5.4 21.4-5.4 31.1 0zM320 160a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM144 256a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm312 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM226.9 491.4L200 441.5V480c0 17.7-14.3 32-32 32H120c-17.7 0-32-14.3-32-32V441.5L61.1 491.4c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l37.9-70.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c16.3 0 31.9 4.5 45.4 12.6l33.6-62.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c32.4 0 62.1 17.8 77.5 46.3l33.6 62.3c13.5-8.1 29.1-12.6 45.4-12.6h19.5c32.4 0 62.1 17.8 77.5 46.3l37.9 70.3c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8L552 441.5V480c0 17.7-14.3 32-32 32H472c-17.7 0-32-14.3-32-32V441.5l-26.9 49.9c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l36.3-67.5c-1.7-1.7-3.2-3.6-4.3-5.8L376 345.5V400c0 17.7-14.3 32-32 32H296c-17.7 0-32-14.3-32-32V345.5l-26.9 49.9c-1.2 2.2-2.6 4.1-4.3 5.8l36.3 67.5c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8z"],"people-line":[640,512,[],"e534","M360 72a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM144 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM496 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 217.5V272c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V217.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 340.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5z"],"beer-mug-empty":[512,512,["beer"],"f0fc","M32 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V96h51.2c42.4 0 76.8 34.4 76.8 76.8V274.9c0 30.4-17.9 57.9-45.6 70.2L384 381.7V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V64zM384 311.6l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7V172.8c0-7.1-5.7-12.8-12.8-12.8H384V311.6zM160 144c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144z"],"diagram-predecessor":[512,512,[],"e477","M448 416l0-64L64 352l0 64 384 0zm0 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM288 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l144 0 16 0 144 0c44.2 0 80 35.8 80 80l0 16 38.1 0c21.4 0 32.1 25.9 17 41L433 239c-9.4 9.4-24.6 9.4-33.9 0L329 169c-15.1-15.1-4.4-41 17-41l38.1 0 0-16c0-8.8-7.2-16-16-16l-80 0 0 64z"],"arrow-up-long":[384,512,["long-arrow-up"],"f176","M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z"],"fire-flame-simple":[384,512,["burn"],"f46a","M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5c0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z"],person:[320,512,[129485,"male"],"f183","M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152z"],laptop:[640,512,[128187],"f109","M128 32C92.7 32 64 60.7 64 96V352h64V96H512V352h64V96c0-35.3-28.7-64-64-64H128zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480H563.2c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2H19.2z"],"file-csv":[512,512,[],"f6dd","M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM200 352h16c22.1 0 40 17.9 40 40v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-8c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40zm133.1 0H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H333.1c-7.2 0-13.1 5.9-13.1 13.1c0 5.2 3 9.9 7.8 12l37.4 16.6c16.3 7.2 26.8 23.4 26.8 41.2c0 24.9-20.2 45.1-45.1 45.1H304c-8.8 0-16-7.2-16-16s7.2-16 16-16h42.9c7.2 0 13.1-5.9 13.1-13.1c0-5.2-3-9.9-7.8-12l-37.4-16.6c-16.3-7.2-26.8-23.4-26.8-41.2c0-24.9 20.2-45.1 45.1-45.1zm98.9 0c8.8 0 16 7.2 16 16v31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66V368c0-8.8 7.2-16 16-16s16 7.2 16 16v31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6V368c0-8.8 7.2-16 16-16z"],menorah:[640,512,[],"f676","M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32S0 81.7 0 64V62.8c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32V288c0 17.7 14.3 32 32 32H288V160c0-17.7 14.3-32 32-32s32 14.3 32 32V320H544c17.7 0 32-14.3 32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 53-43 96-96 96H352v64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V384H96c-53 0-96-43-96-96V160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H96V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H192V256 160c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32v96 32H384V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H480V256 160c0-17.7 14.3-32 32-32z"],"truck-plane":[640,512,[],"e58f","M200 0c-30.6 0-56 54.7-56 86.1V192.5L7.8 274.3C2.9 277.2 0 282.4 0 288v64c0 5.1 2.4 9.8 6.4 12.8s9.3 3.9 14.1 2.5l123.4-37v81.2l-50 40c-3.8 3-6 7.6-6 12.5v32c0 5.1 2.5 10 6.6 13s9.5 3.8 14.4 2.2L200 480.9 290.4 511c-1.6-4.7-2.4-9.8-2.4-15V463.4c-18.2-10.5-30.7-29.7-31.9-51.8l-.1-.1V408 325.5 184l0-1.1 0 0V86.1C256 54.7 231.5 0 200 0zm88 176V400c0 20.9 13.4 38.7 32 45.3V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V448H544v40c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V445.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48zm79.8 78.7c3.3-8.7 11.2-14.7 20.5-14.7H539.7c9.2 0 17.2 6 20.5 14.7L576 304H352l15.8-49.3zM568 352a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM336 376a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z"],"record-vinyl":[512,512,[],"f8d9","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 224a128 128 0 1 0 0-256 128 128 0 1 0 0 256zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"face-grin-stars":[512,512,[129321,"grin-stars"],"f587","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm407.4 75.5c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z"],bong:[448,512,[],"f55c","M160 208.5c0 29.1-15.6 53.9-37.2 67.8c-17.2 11.1-31.5 26.1-41.7 43.7H302.9c-10.2-17.6-24.5-32.6-41.7-43.7c-21.6-13.9-37.2-38.7-37.2-67.8V64H160V208.5zM288 64V208.5c0 5.7 3.1 10.9 7.9 14c11.2 7.2 21.5 15.5 30.9 24.8L366.1 208l-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l24 24 24 24c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3C374 314.1 384 347.9 384 384c0 39.4-11.9 76.1-32.2 106.5c-9.6 14.4-26.5 21.5-43.8 21.5H76.1c-17.3 0-34.2-7.1-43.8-21.5C11.9 460.1 0 423.4 0 384c0-67.8 35.1-127.3 88.1-161.5c4.8-3.1 7.9-8.3 7.9-14V64C78.3 64 64 49.7 64 32S78.3 0 96 0h16H272h16c17.7 0 32 14.3 32 32s-14.3 32-32 32z"],"spaghetti-monster-flying":[640,512,["pastafarianism"],"f67b","M208 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3C390 95.1 384 80.2 384 64c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4c7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4C527.3 262.3 532.7 264 536 264c2.5 0 4.3-.6 7.1-3.3c3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7c9.7-9.3 22.9-16.7 40.4-16.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3c-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7c-9.7 9.3-22.9 16.7-40.4 16.7c-18.5 0-32.9-8.5-44.3-18.6c-3.1 4-6.6 8.3-10.5 12.7c1.4 4.3 2.8 8.5 4 12.5c.9 3 1.8 5.8 2.6 8.6c3 9.8 5.5 18.2 8.6 25.9c3.9 9.8 7.4 15.4 10.8 18.5c2.6 2.4 5.9 4.3 12.8 4.3c8.7 0 16.9-4.2 33.7-13.2c15-8 35.7-18.8 62.3-18.8c13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2c-1 .6-2.1 1.1-3.2 1.7C559.9 414 541.4 424 520 424c-18.4 0-33.6-6.1-45.5-17.2c-11.1-10.3-17.9-23.7-22.7-36c-3.6-9-6.7-19.1-9.5-28.5c-16.4 12.3-36.1 23.6-58.9 31.3c3.6 10.8 8.4 23.5 14.4 36.2c7.5 15.9 16.2 30.4 25.8 40.5C433 460.5 441.2 464 448 464c13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8c-14.5-15.4-25.7-34.9-34.2-53c-8-17-14.1-33.8-18.3-46.9c-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9c-8.5 18.1-19.8 37.6-34.2 53C237 498.5 217.2 512 192 512c-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7c9.5-10.1 18.3-24.6 25.8-40.5c5.9-12.6 10.7-25.4 14.4-36.2c-22.8-7.7-42.5-19-58.9-31.3c-2.9 9.4-6 19.5-9.5 28.5c-4.8 12.2-11.6 25.6-22.7 36C153.6 417.9 138.4 424 120 424c-21.4 0-39.9-10-53.1-17.1l0 0c-1.1-.6-2.2-1.2-3.2-1.7c-15-8-26.3-13.2-39.7-13.2c-13.3 0-24-10.7-24-24s10.7-24 24-24c26.6 0 47.3 10.8 62.3 18.8c16.8 9 25 13.2 33.7 13.2c6.8 0 10.2-1.9 12.8-4.3c3.4-3.2 7-8.8 10.8-18.5c3-7.7 5.6-16.1 8.6-25.9c.8-2.7 1.7-5.6 2.6-8.6c1.2-4 2.6-8.2 4-12.5c-3.9-4.5-7.4-8.8-10.5-12.7C136.9 303.5 122.5 312 104 312c-17.5 0-30.7-7.4-40.4-16.7c-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4c-2.8-2.7-4.6-3.3-7.1-3.3c-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7c8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4c2.8 2.7 4.6 3.3 7.1 3.3c3.3 0 8.7-1.7 19.4-13.4c5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24c13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm208 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z"],"arrow-down-up-across-line":[576,512,[],"e4af","M137.4 502.6c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V288H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H448V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 109.3V224H192 128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96zM128 192h64V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192zM448 320H384V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320z"],spoon:[512,512,[129348,61873,"utensil-spoon"],"f2e5","M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8C224 80 320 0 416 0c53 0 96 43 96 96c0 96-80 192-160.2 192c-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z"],"jar-wheat":[320,512,[],"e517","M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm112 0H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 198 90 224 122.2 224H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 294 90 320 122.2 320H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7zM112 352H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 390 90 416 122.2 416H144v32c0 8.8 7.2 16 16 16s16-7.2 16-16V416h21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7z"],"envelopes-bulk":[640,512,["mail-bulk"],"f674","M128 0C110.3 0 96 14.3 96 32V224h96V192c0-35.3 28.7-64 64-64H480V32c0-17.7-14.3-32-32-32H128zM256 160c-17.7 0-32 14.3-32 32v32h96c35.3 0 64 28.7 64 64V416H576c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H256zm240 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM64 256c-17.7 0-32 14.3-32 32v13L187.1 415.9c1.4 1 3.1 1.6 4.9 1.6s3.5-.6 4.9-1.6L352 301V288c0-17.7-14.3-32-32-32H64zm288 84.8L216 441.6c-6.9 5.1-15.3 7.9-24 7.9s-17-2.8-24-7.9L32 340.8V480c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V340.8z"],"file-circle-exclamation":[576,512,[],"e4eb","M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z"],"circle-h":[512,512,[9405,"hospital-symbol"],"f47e","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM368 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H192l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H320V152c0-13.3 10.7-24 24-24s24 10.7 24 24z"],pager:[512,512,[128223],"f815","M0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zm64 32v64c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H80zm136 0c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H216z"],"address-book":[512,512,[62138,"contact-book"],"f2b9","M96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM208 288h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z"],strikethrough:[512,512,[],"f0cc","M161.3 144c3.2-17.2 14-30.1 33.7-38.6c21.1-9 51.8-12.3 88.6-6.5c11.9 1.9 48.8 9.1 60.1 12c17.1 4.5 34.6-5.6 39.2-22.7s-5.6-34.6-22.7-39.2c-14.3-3.8-53.6-11.4-66.6-13.4c-44.7-7-88.3-4.2-123.7 10.9c-36.5 15.6-64.4 44.8-71.8 87.3c-.1 .6-.2 1.1-.2 1.7c-2.8 23.9 .5 45.6 10.1 64.6c4.5 9 10.2 16.9 16.7 23.9H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H270.1c-.1 0-.3-.1-.4-.1l-1.1-.3c-36-10.8-65.2-19.6-85.2-33.1c-9.3-6.3-15-12.6-18.2-19.1c-3.1-6.1-5.2-14.6-3.8-27.4zM348.9 337.2c2.7 6.5 4.4 15.8 1.9 30.1c-3 17.6-13.8 30.8-33.9 39.4c-21.1 9-51.7 12.3-88.5 6.5c-18-2.9-49.1-13.5-74.4-22.1c-5.6-1.9-11-3.7-15.9-5.4c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c3.6 1.2 7.9 2.7 12.7 4.3l0 0 0 0c24.9 8.5 63.6 21.7 87.6 25.6l0 0 .2 0c44.7 7 88.3 4.2 123.7-10.9c36.5-15.6 64.4-44.8 71.8-87.3c3.6-21 2.7-40.4-3.1-58.1H335.1c7 5.6 11.4 11.2 13.9 17.2z"],k:[320,512,[107],"4b","M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7l-155.2 160L64 249V64c0-17.7-14.3-32-32-32S0 46.3 0 64V328 448c0 17.7 14.3 32 32 32s32-14.3 32-32V341l64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z"],"landmark-flag":[512,512,[],"e51c","M272 0h80c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H272v32H464c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H240V16c0-8.8 7.2-16 16-16h16zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z"],pencil:[512,512,[9999,61504,"pencil-alt"],"f303","M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z"],backward:[512,512,[9194],"f04a","M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3V256v41.7L459.5 440.6zM256 352V256 128 96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V352z"],"caret-right":[256,512,[],"f0da","M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z"],comments:[640,512,[128490,61670],"f086","M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.3-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z"],paste:[512,512,["file-clipboard"],"f0ea","M160 0c-23.7 0-44.4 12.9-55.4 32H48C21.5 32 0 53.5 0 80V400c0 26.5 21.5 48 48 48H192V176c0-44.2 35.8-80 80-80h48V80c0-26.5-21.5-48-48-48H215.4C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48V448v16c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V243.9c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1H320 272zM160 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],"code-pull-request":[512,512,[],"e13c","M305.8 2.1C314.4 5.9 320 14.5 320 24V64h16c70.7 0 128 57.3 128 128V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-35.3-28.7-64-64-64H320v40c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1zM104 80A24 24 0 1 0 56 80a24 24 0 1 0 48 0zm8 73.3V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80c0 32.8-19.7 61-48 73.3zM104 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm328 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],"clipboard-list":[384,512,[],"f46d","M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM72 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zM72 368a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm88 0c0-8.8 7.2-16 16-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16z"],"truck-ramp-box":[640,512,["truck-loading"],"f4de","M640 0V400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8V64c0-35.3 28.7-64 64-64H640zM576 400a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM23.1 207.7c-4.6-17.1 5.6-34.6 22.6-39.2l46.4-12.4 20.7 77.3c2.3 8.5 11.1 13.6 19.6 11.3l30.9-8.3c8.5-2.3 13.6-11.1 11.3-19.6l-20.7-77.3 46.4-12.4c17.1-4.6 34.6 5.6 39.2 22.6l41.4 154.5c4.6 17.1-5.6 34.6-22.6 39.2L103.7 384.9c-17.1 4.6-34.6-5.6-39.2-22.6L23.1 207.7z"],"user-check":[640,512,[],"f4fc","M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM625 177L497 305c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"],"vial-virus":[512,512,[],"e597","M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V384c0 53 43 96 96 96c28.6 0 54.2-12.5 71.8-32.3c.1-14.2 5.6-28.3 16.4-39.1c.2-.2 .1-.6-.2-.6c-30.9 0-56-25.1-56-56s25.1-56 56-56c.3 0 .4-.4 .2-.6c-21.9-21.9-21.9-57.3 0-79.2c2.4-2.4 5-4.6 7.8-6.5V96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 96 32zM96 192V96h64v96H96zM216 376c28.8 0 43.2 34.8 22.9 55.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9c0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9C444.8 410.8 459.2 376 488 376c13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0C410.8 259.2 376 244.8 376 216c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2c-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-88a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm40 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z"],"sheet-plastic":[384,512,[],"e571","M0 448c0 35.3 28.7 64 64 64H224V384c0-17.7 14.3-32 32-32H384V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448zM171.3 75.3l-96 96c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l96-96c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm96 32l-160 160c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l160-160c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM384 384H256V512L384 384z"],blog:[512,512,[],"f781","M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144V368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144H128v96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48V144z"],"user-ninja":[448,512,[129399],"f504","M224 256c-57.2 0-105.6-37.5-122-89.3c-1.1 1.3-2.2 2.6-3.5 3.8c-15.8 15.8-38.8 20.7-53.6 22.1c-8.1 .8-14.6-5.7-13.8-13.8c1.4-14.7 6.3-37.8 22.1-53.6c5.8-5.8 12.6-10.1 19.6-13.4c-7-3.2-13.8-7.6-19.6-13.4C37.4 82.7 32.6 59.7 31.1 44.9c-.8-8.1 5.7-14.6 13.8-13.8c14.7 1.4 37.8 6.3 53.6 22.1c4.8 4.8 8.7 10.4 11.7 16.1C131.4 28.2 174.4 0 224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zM0 482.3C0 399.5 56.4 330 132.8 309.9c6-1.6 12.2 .9 15.9 5.8l62.5 83.3c6.4 8.5 19.2 8.5 25.6 0l62.5-83.3c3.7-4.9 9.9-7.4 15.9-5.8C391.6 330 448 399.5 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM160 96c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H160z"],"person-arrow-up-from-line":[640,512,[],"e539","M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM598.6 121.4l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L464 141.3 464 384c0 17.7 14.3 32 32 32s32-14.3 32-32V141.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z"],"scroll-torah":[640,512,["torah"],"f6a0","M96 480V32C96 14.3 74.5 0 48 0S0 14.3 0 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32zM512 32H128V480H512V32zM592 0c-26.5 0-48 14.3-48 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32V32c0-17.7-21.5-32-48-32zM196 313.7c0-3.2 .9-6.4 2.5-9.2L226.7 256l-28.3-48.5c-1.6-2.8-2.5-6-2.5-9.2c0-10.1 8.2-18.3 18.3-18.3H271l31.4-53.9c3.6-6.3 10.3-10.1 17.6-10.1s13.9 3.8 17.6 10.1L369 180h56.7c10.1 0 18.3 8.2 18.3 18.3c0 3.2-.9 6.4-2.5 9.2L413.3 256l28.3 48.5c1.6 2.8 2.5 6 2.5 9.2c0 10.1-8.2 18.3-18.3 18.3H369l-31.4 53.9c-3.6 6.3-10.3 10.1-17.6 10.1s-13.9-3.8-17.6-10.1L271 332H214.3c-10.1 0-18.3-8.2-18.3-18.3zm124 54.7L341.2 332H298.8L320 368.4zM254.5 256l30.3 52h70.4l30.3-52-30.3-52H284.8l-30.3 52zm144.9 23.8L383 308h32.8l-16.4-28.2zM415.8 204H383l16.4 28.2L415.8 204zM320 143.6L298.8 180h42.4L320 143.6zM224.2 204l16.4 28.2L257 204H224.2zM257 308l-16.4-28.2L224.2 308H257z"],"broom-ball":[576,512,["quidditch","quidditch-broom-ball"],"f458","M566.6 9.4c12.5 12.5 12.5 32.8 0 45.3l-192 192 34.7 34.7c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H364.3L256 211.7V182.6c0-12.5 10.1-22.6 22.6-22.6c6 0 11.8 2.4 16 6.6l34.7 34.7 192-192c12.5-12.5 32.8-12.5 45.3 0zm-344 225.5L341.1 353.4c3.7 42.7-11.7 85.2-42.3 115.8C271.4 496.6 234.2 512 195.5 512L22.1 512C9.9 512 0 502.1 0 489.9c0-6.3 2.7-12.3 7.3-16.5L133.7 359.7c4.2-3.7-.4-10.4-5.4-7.9L77.2 377.4c-6.1 3-13.2-1.4-13.2-8.2c0-31.5 12.5-61.7 34.8-84l8-8c30.6-30.6 73.1-45.9 115.8-42.3zM464 352a80 80 0 1 1 0 160 80 80 0 1 1 0-160z"],"toggle-off":[576,512,[],"f204","M384 128c70.7 0 128 57.3 128 128s-57.3 128-128 128H192c-70.7 0-128-57.3-128-128s57.3-128 128-128H384zM576 256c0-106-86-192-192-192H192C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192zM192 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z"],"box-archive":[512,512,["archive"],"f187","M32 32H480c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H32C14.3 128 0 113.7 0 96V64C0 46.3 14.3 32 32 32zm0 128H480V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V160zm128 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z"],"person-drowning":[576,512,[],"e545","M192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V96.2c0 54.1 23.5 104 62.2 138.3l-21 146.7c7.8 2.1 15.5 3.3 22.8 3.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c12.4 8.5 26.1 14.8 39.7 18l17.7-97.6c10.7-1.2 21.3-3.1 31.9-5.5l105-23.9c17.2-3.9 28-21.1 24.1-38.3s-21.1-28-38.3-24.1L400 216.6c-41 9.3-83.7 7.5-123.7-5.2c-50.2-16-84.3-62.6-84.3-115.3V64zM320 192a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM306.5 389.9c-11.1-7.9-25.9-7.9-37 0C247 405.4 219.5 416 192 416c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 469.7 159 480 192 480c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 405.2 410.9 416 384 416c-27.5 0-55-10.6-77.5-26.1z"],"arrow-down-9-1":[576,512,["sort-numeric-desc","sort-numeric-down-alt"],"f886","M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM450.7 294c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V416H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V320c0-10.3-4.9-19.9-13.3-26zM418.3 91a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 91zM405.1 203.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z"],"face-grin-tongue-squint":[512,512,[128541,"grin-tongue-squint"],"f58a","M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM116 141.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z"],"spray-can":[512,512,[],"f5bd","M128 0h64c17.7 0 32 14.3 32 32v96H96V32c0-17.7 14.3-32 32-32zM0 256c0-53 43-96 96-96H224c53 0 96 43 96 96V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V256zm240 80A80 80 0 1 0 80 336a80 80 0 1 0 160 0zM256 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM448 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"truck-monster":[640,512,[],"f63b","M288 64v64H416L368 64H288zM419.2 25.6L496 128h80c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64H288c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H224V48c0-26.5 21.5-48 48-48h96c20.1 0 39.1 9.5 51.2 25.6zM152 256h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.7 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.3 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.3 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.8 3.7-14.1 6.8-21.7 9C190.1 503.1 180.1 512 168 512H152c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2L63.8 468.9c-8.6-8.6-9.3-21.9-2.3-31.3c-3.7-6.9-6.8-14.1-9-21.8C40.9 414.1 32 404.1 32 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.3-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9c1.7-11.6 11.7-20.6 23.8-20.6zm8 176a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM448.2 276.6c1.7-11.6 11.7-20.6 23.8-20.6h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.8 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.2 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.2 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.9 3.7-14.1 6.8-21.8 9C510.1 503.1 500.1 512 488 512H472c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2l-11.3-11.3c-8.6-8.6-9.3-21.9-2.2-31.3c-3.7-6.9-6.8-14.1-9-21.8C360.9 414.1 352 404.1 352 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.2-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9zM528 384a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z"],w:[576,512,[119],"57","M20.8 34c16.5-6.2 35 2.2 41.2 18.7l110.2 294L257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23l85.1 291.7L514 52.8c6.2-16.5 24.6-24.9 41.2-18.7s24.9 24.7 18.7 41.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z"],"earth-africa":[512,512,[127757,"globe-africa"],"f57c","M177.8 63.2l10 17.4c2.8 4.8 4.2 10.3 4.2 15.9v41.4c0 3.9 1.6 7.7 4.3 10.4c6.2 6.2 16.5 5.7 22-1.2l13.6-17c4.7-5.9 12.9-7.7 19.6-4.3l15.2 7.6c3.4 1.7 7.2 2.6 11 2.6c6.5 0 12.8-2.6 17.4-7.2l3.9-3.9c2.9-2.9 7.3-3.6 11-1.8l29.2 14.6c7.8 3.9 12.6 11.8 12.6 20.5c0 10.5-7.1 19.6-17.3 22.2l-35.4 8.8c-7.4 1.8-15.1 1.5-22.4-.9l-32-10.7c-3.3-1.1-6.7-1.7-10.2-1.7c-7 0-13.8 2.3-19.4 6.5L176 212c-10.1 7.6-16 19.4-16 32v28c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16v48c0 17.7 14.3 32 32 32c10.1 0 19.6-4.7 25.6-12.8l25.6-34.1c8.3-11.1 12.8-24.6 12.8-38.4V318.6c0-3.9 2.6-7.3 6.4-8.2l5.3-1.3c11.9-3 20.3-13.7 20.3-26c0-7.1-2.8-13.9-7.8-18.9l-33.5-33.5c-3.7-3.7-3.7-9.7 0-13.4c5.7-5.7 14.1-7.7 21.8-5.1l14.1 4.7c12.3 4.1 25.7-1.5 31.5-13c3.5-7 11.2-10.8 18.9-9.2l27.4 5.5C432 112.4 351.5 48 256 48c-27.7 0-54 5.4-78.2 15.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z"],rainbow:[640,512,[127752],"f75b","M320 96C178.6 96 64 210.6 64 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C0 175.3 143.3 32 320 32s320 143.3 320 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C576 210.6 461.4 96 320 96zm0 192c-35.3 0-64 28.7-64 64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-70.7 57.3-128 128-128s128 57.3 128 128v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-35.3-28.7-64-64-64zM160 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-123.7 100.3-224 224-224s224 100.3 224 224v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-88.4-71.6-160-160-160s-160 71.6-160 160z"],"circle-notch":[512,512,[],"f1ce","M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z"],"tablet-screen-button":[448,512,["tablet-alt"],"f3fa","M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM256 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64H64V384H384V64z"],paw:[512,512,[],"f1b0","M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5v1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3v-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z"],cloud:[640,512,[9729],"f0c2","M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z"],"trowel-bricks":[512,512,[],"e58a","M240.8 4.8C250.3 10.6 256 20.9 256 32v72h89c3.6-13.8 16.1-24 31-24h88c26.5 0 48 21.5 48 48s-21.5 48-48 48H376c-14.9 0-27.4-10.2-31-24H256v72c0 11.1-5.7 21.4-15.2 27.2s-21.2 6.4-31.1 1.4l-192-96C6.8 151.2 0 140.1 0 128s6.8-23.2 17.7-28.6l192-96c9.9-5 21.7-4.4 31.1 1.4zM288 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V256zM32 384h96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32zm192 0H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32z"],"face-flushed":[512,512,[128563,"flushed"],"f579","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM176 384c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16s-7.2-16-16-16H192c-8.8 0-16 7.2-16 16zm-16-88a72 72 0 1 0 0-144 72 72 0 1 0 0 144zm264-72a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zm-288 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm192 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z"],"hospital-user":[576,512,[],"f80d","M48 0C21.5 0 0 21.5 0 48V256H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v64H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v80c0 26.5 21.5 48 48 48H265.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM152 64h16c8.8 0 16 7.2 16 16v24h24c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H184v24c0 8.8-7.2 16-16 16H152c-8.8 0-16-7.2-16-16V152H112c-8.8 0-16-7.2-16-16V120c0-8.8 7.2-16 16-16h24V80c0-8.8 7.2-16 16-16zM512 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM288 477.1c0 19.3 15.6 34.9 34.9 34.9H541.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H381.1c-51.4 0-93.1 41.7-93.1 93.1z"],"tent-arrow-left-right":[576,512,[],"e57f","M488.1 6.2c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9L489.5 72 86.5 72l33.5-30.2c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120l402.9 0-33.5 30.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H240h16c17.7 0 32-14.3 32-32V361.9c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7H464h16c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z"],gavel:[512,512,["legal"],"f0e3","M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z"],binoculars:[512,512,[],"f1e5","M128 32h32c17.7 0 32 14.3 32 32V96H96V64c0-17.7 14.3-32 32-32zm64 96V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V388.9c0-34.6 9.4-68.6 27.2-98.3C40.9 267.8 49.7 242.4 53 216L60.5 156c2-16 15.6-28 31.8-28H192zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6c17.8 29.7 27.2 63.7 27.2 98.3V448c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V128h99.8zM320 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V96H320V64zm-32 64V288H224V128h64z"],"microphone-slash":[640,512,[],"f131","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 21.2-5.1 41.1-14.2 58.7L416 300.8V96c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zm362.5 407l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2z"],"box-tissue":[512,512,[],"e05b","M92.5 0H208c40 0 52 24 64 48s24 48 64 48h85.2C436 96 448 108 448 122.8c0 3.4-.7 6.8-1.9 10L409.6 224 384 288H128l-16-64L64.9 35.4c-.6-2.3-.9-4.6-.9-6.9C64 12.8 76.8 0 92.5 0zM79 224l16 64H80c-8.8 0-16 7.2-16 16s7.2 16 16 16h48H384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H418.5l25.6-64H464c26.5 0 48 21.5 48 48V384H0V272c0-26.5 21.5-48 48-48H79zM0 416H512v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V416z"],motorcycle:[640,512,[127949],"f21c","M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h57.7l16.4 30.3L256 192l-45.3-45.3c-12-12-28.3-18.7-45.3-18.7H64c-17.7 0-32 14.3-32 32v32h96c88.4 0 160 71.6 160 160c0 11-1.1 21.7-3.2 32h70.4c-2.1-10.3-3.2-21-3.2-32c0-52.2 25-98.6 63.7-127.8l15.4 28.6C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L418.2 128H480c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H459.6c-7.5 0-14.7 2.6-20.5 7.4L391.7 78.9l-14-26c-7-12.9-20.5-21-35.2-21H280zM462.7 311.2l28.2 52.2c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-28.2-52.2c2.3-.3 4.7-.4 7.1-.4c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-15.5 5.5-29.7 14.7-40.8zM187.3 376c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c26.9 0 49.9 16.5 59.3 40h66.4C242.5 268.8 190.5 224 128 224C57.3 224 0 281.3 0 352s57.3 128 128 128c62.5 0 114.5-44.8 125.8-104H187.3zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"bell-concierge":[512,512,[128718,"concierge-bell"],"f562","M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24h16v33.3C119.6 157.2 32 252.4 32 368H480c0-115.6-87.6-210.8-200-222.7V112h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H256 216zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z"],"pen-ruler":[512,512,["pencil-ruler"],"f5ae","M469.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L322.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM44.9 353.2L299.7 98.3 413.7 212.3 158.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2zM249.4 103.4L103.4 249.4 16 161.9c-18.7-18.7-18.7-49.1 0-67.9L94.1 16c18.7-18.7 49.1-18.7 67.9 0l19.8 19.8c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1l45.1 45.1zM408.6 262.6l45.1 45.1c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1L496 350.1c18.7 18.7 18.7 49.1 0 67.9L417.9 496c-18.7 18.7-49.1 18.7-67.9 0l-87.4-87.4L408.6 262.6z"],"people-arrows":[640,512,["people-arrows-left-right"],"e068","M64 64a64 64 0 1 1 128 0A64 64 0 1 1 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160h44.8c27 0 51 13.4 65.5 34.1c-2.7 1.9-5.2 4-7.5 6.3l-64 64c-21.9 21.9-21.9 57.3 0 79.2L192 391.2V464c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V348.3c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3zM448 64a64 64 0 1 1 128 0A64 64 0 1 1 448 64zM431.6 200.4c-2.3-2.3-4.9-4.4-7.5-6.3c14.5-20.7 38.6-34.1 65.5-34.1h44.8c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6V464c0 26.5-21.5 48-48 48H496c-26.5 0-48-21.5-48-48V391.2l47.6-47.6c21.9-21.9 21.9-57.3 0-79.2l-64-64zM272 240v32h96V240c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V336H272v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2z"],"mars-and-venus-burst":[640,512,[],"e523","M504 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39-22.2 22.2C475.9 78.4 439.6 64 400 64c-88.4 0-160 71.6-160 160c0 80.2 59 146.6 136 158.2V408H352c-13.3 0-24 10.7-24 24s10.7 24 24 24h24v32c0 13.3 10.7 24 24 24s24-10.7 24-24V456h24c13.3 0 24-10.7 24-24s-10.7-24-24-24H424V382.2c77-11.6 136-78 136-158.2c0-31.4-9-60.7-24.7-85.4L560 113.9l39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H504zM400 128a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.1 3.8 9.9 5.1 15.2 3.6C223.6 310.8 208 269.2 208 224c0-60.8 28.3-115 72.4-150.2L220.3 92.1l-29.4-74z"],"square-caret-right":[448,512,["caret-square-right"],"f152","M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z"],scissors:[512,512,[9984,9986,9988,"cut"],"f0c4","M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM64 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm48 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"],"sun-plant-wilt":[640,512,[],"e57a","M160 0c-6.3 0-12 3.7-14.6 9.5L120.6 64.9 63.9 43.2c-5.9-2.3-12.6-.8-17 3.6s-5.9 11.1-3.6 17l21.7 56.7L9.5 145.4C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8L43.2 256.1c-2.3 5.9-.8 12.6 3.6 17s11.1 5.9 17 3.6l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.7 21.7c5.9 2.3 12.6 .8 17-3.6s5.9-11.1 3.6-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7c2.3-5.9 .8-12.6-3.6-17s-11.1-5.9-17-3.6L199.4 64.9 174.6 9.5C172 3.7 166.3 0 160 0zm0 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm312 16c0-17.7 14.3-32 32-32s32 14.3 32 32v53.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C624 318 640 290.7 640 274c0-21.5-9.2-37-24-44.6V176c0-44.2-35.8-80-80-80s-80 35.8-80 80v22.7c-9.8-4.3-20.6-6.7-32-6.7c-44.2 0-80 35.8-80 80v21.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C400 382 416 354.7 416 338c0-21.5-9.2-37-24-44.6V272c0-17.7 14.3-32 32-32s32 14.3 32 32v8V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H504V280v-8V176z"],"toilets-portable":[576,512,[],"e584","M32 0H224c17.7 0 32 14.3 32 32V64H0V32C0 14.3 14.3 0 32 0zM0 96H24 232h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H48v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM192 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16zM352 0H544c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32zM320 96h24H552h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H368v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM512 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16z"],"hockey-puck":[512,512,[],"f453","M256 256C114.6 256 0 213 0 160s114.6-96 256-96s256 43 256 96s-114.6 96-256 96zm192.3 1.8c24.7-9.3 46.9-21 63.7-35.6V352c0 53-114.6 96-256 96S0 405 0 352V222.3c16.8 14.6 39 26.3 63.7 35.6C114.5 276.9 182.5 288 256 288s141.5-11.1 192.3-30.2z"],table:[512,512,[],"f0ce","M64 256V160H224v96H64zm0 64H224v96H64V320zm224 96V320H448v96H288zM448 256H288V160H448v96zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"],"magnifying-glass-arrow-right":[512,512,[],"e521","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM241 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31H120c-13.3 0-24 10.7-24 24s10.7 24 24 24H238.1l-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72z"],"tachograph-digital":[640,512,["digital-tachograph"],"f566","M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm32 64H320c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zM64 368c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm320 0c0-8.8 7.2-16 16-16H560c8.8 0 16 7.2 16 16s-7.2 16-16 16H400c-8.8 0-16-7.2-16-16zM80 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z"],"users-slash":[640,512,[],"e073","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320H618.7c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 30.2-10.5 58-28 79.9l-25.2-19.7C408.1 267.7 416 246.8 416 224c0-53-43-96-96-96c-31.1 0-58.7 14.8-76.3 37.7l-40.6-31.8c13-14.2 20.9-33.1 20.9-53.9c0-44.2-35.8-80-80-80C116.3 0 91.9 14.1 77.5 35.5L38.8 5.1zM106.7 192C47.8 192 0 239.8 0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-20.6-18.2-35.2-42.8-40.8-70.8L121.8 192H106.7zM261.3 352C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H485.3c10.5 0 19.5-6 23.9-14.8L324.9 352H261.3zM512 160A80 80 0 1 0 512 0a80 80 0 1 0 0 160z"],clover:[448,512,[],"e139","M216.6 49.9C205.1 38.5 189.5 32 173.3 32C139.4 32 112 59.4 112 93.3v4.9c0 12 3.3 23.7 9.4 34l18.8 31.3c1.1 1.8 1.2 3.1 1 4.2c-.2 1.2-.8 2.5-2 3.6s-2.4 1.8-3.6 2c-1 .2-2.4 .1-4.2-1l-31.3-18.8c-10.3-6.2-22-9.4-34-9.4H61.3C27.4 144 0 171.4 0 205.3c0 16.2 6.5 31.8 17.9 43.3l1.2 1.2c3.4 3.4 3.4 9 0 12.4l-1.2 1.2C6.5 274.9 0 290.5 0 306.7C0 340.6 27.4 368 61.3 368h4.9c12 0 23.7-3.3 34-9.4l31.3-18.8c1.8-1.1 3.1-1.2 4.2-1c1.2 .2 2.5 .8 3.6 2s1.8 2.4 2 3.6c.2 1 .1 2.4-1 4.2l-18.8 31.3c-6.2 10.3-9.4 22-9.4 34v4.9c0 33.8 27.4 61.3 61.3 61.3c16.2 0 31.8-6.5 43.3-17.9l1.2-1.2c3.4-3.4 9-3.4 12.4 0l1.2 1.2c11.5 11.5 27.1 17.9 43.3 17.9c33.8 0 61.3-27.4 61.3-61.3v-4.9c0-12-3.3-23.7-9.4-34l-18.8-31.3c-1.1-1.8-1.2-3.1-1-4.2c.2-1.2 .8-2.5 2-3.6s2.4-1.8 3.6-2c1-.2 2.4-.1 4.2 1l31.3 18.8c10.3 6.2 22 9.4 34 9.4h4.9c33.8 0 61.3-27.4 61.3-61.3c0-16.2-6.5-31.8-17.9-43.3l-1.2-1.2c-3.4-3.4-3.4-9 0-12.4l1.2-1.2c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3h-4.9c-12 0-23.7 3.3-34 9.4l-31.3 18.8c-1.8 1.1-3.1 1.2-4.2 1c-1.2-.2-2.5-.8-3.6-2s-1.8-2.4-2-3.6c-.2-1-.1-2.4 1-4.2l18.8-31.3c6.2-10.3 9.4-22 9.4-34V93.3C336 59.4 308.6 32 274.7 32c-16.2 0-31.8 6.5-43.3 17.9l-1.2 1.2c-3.4 3.4-9 3.4-12.4 0l-1.2-1.2z"],reply:[512,512,[61714,"mail-reply"],"f3e5","M205 34.8c11.5 5.1 19 16.6 19 29.2v64H336c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96H224v64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z"],"star-and-crescent":[512,512,[9770],"f699","M0 256C0 114.6 114.6 0 256 0c33 0 64.6 6.3 93.6 17.7c7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5c-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5c7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C320.6 505.7 289 512 256 512C114.6 512 0 397.4 0 256zM375.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L261 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z"],"house-fire":[640,512,[],"e50c","M288 350.1l0 1.9H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L447.3 128.1c-12.3-1-25 3-34.8 11.7c-35.4 31.6-65.6 67.7-87.3 102.8C304.3 276.5 288 314.9 288 350.1zM480 512c-88.4 0-160-71.6-160-160c0-76.7 62.5-144.7 107.2-179.4c5-3.9 10.9-5.8 16.8-5.8c7.9-.1 16 3.1 22 9.2l46 46 11.3-11.3c11.7-11.7 30.6-12.7 42.3-1C624.5 268 640 320.2 640 352c0 88.4-71.6 160-160 160zm64-111.8c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C453 327.1 416 363.6 416 400.2c0 35.3 28.7 64 64 64s64-28.7 64-64z"],"square-minus":[448,512,[61767,"minus-square"],"f146","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 200H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z"],helicopter:[640,512,[128641],"f533","M128 32c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H384v64h32c88.4 0 160 71.6 160 160v64c0 17.7-14.3 32-32 32H384 320c-20.1 0-39.1-9.5-51.2-25.6l-71.4-95.2c-3.5-4.7-8.3-8.3-13.7-10.5L47.2 198.1c-9.5-3.8-16.7-12-19.2-22L5 83.9C2.4 73.8 10.1 64 20.5 64H48c10.1 0 19.6 4.7 25.6 12.8L112 128H320V64H160c-17.7 0-32-14.3-32-32zM384 320H512V288c0-53-43-96-96-96H384V320zM630.6 425.4c12.5 12.5 12.5 32.8 0 45.3l-3.9 3.9c-24 24-56.6 37.5-90.5 37.5H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H536.2c17 0 33.3-6.7 45.3-18.7l3.9-3.9c12.5-12.5 32.8-12.5 45.3 0z"],compass:[512,512,[129517],"f14e","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],"square-caret-down":[448,512,["caret-square-down"],"f150","M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z"],"file-circle-question":[576,512,[],"e4ef","M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z"],"laptop-code":[640,512,[],"f5fc","M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z"],swatchbook:[512,512,[],"f5c3","M0 32C0 14.3 14.3 0 32 0H160c17.7 0 32 14.3 32 32V416c0 53-43 96-96 96s-96-43-96-96V32zM223.6 425.9c.3-3.3 .4-6.6 .4-9.9V154l75.4-75.4c12.5-12.5 32.8-12.5 45.3 0l90.5 90.5c12.5 12.5 12.5 32.8 0 45.3L223.6 425.9zM182.8 512l192-192H480c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H182.8zM128 64H64v64h64V64zM64 192v64h64V192H64zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],"prescription-bottle":[384,512,[],"f485","M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V416H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V320H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V224H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V128z"],bars:[448,512,["navicon"],"f0c9","M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"],"people-group":[640,512,[],"e533","M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3V245.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V389.2C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112h32c24 0 46.2 7.5 64.4 20.3zM448 416V394.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176h32c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2V416c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3V261.7c-10 11.3-16 26.1-16 42.3zm144-42.3v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2V448c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V405.2c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112h32c61.9 0 112 50.1 112 112z"],"hourglass-end":[384,512,[8987,"hourglass-3"],"f253","M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 25.5-10.1 49.9-28.1 67.9L192 210.7l-67.9-67.9C106.1 124.9 96 100.4 96 75z"],"heart-crack":[512,512,[128148,"heart-broken"],"f7a9","M119.4 44.1c23.3-3.9 46.8-1.9 68.6 5.3l49.8 77.5-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.8 61.8c28.5-16.7 62.4-23.2 95.7-17.6C461.5 55.6 512 115.2 512 185.1v5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141z"],"square-up-right":[448,512,[8599,"external-link-square-alt"],"f360","M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM320 313.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6c0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3C114 302 112 306.9 112 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6c12.5 0 22.6-10.1 22.6-22.6z"],"face-kiss-beam":[512,512,[128537,"kiss-beam"],"f597","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-84.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"],film:[512,512,[127902],"f008","M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM48 368v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H416zM48 240v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H416zM48 112v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H416zM160 128v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32H192z"],"ruler-horizontal":[640,512,[],"f547","M0 336c0 26.5 21.5 48 48 48l544 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0c-26.5 0-48 21.5-48 48L0 336z"],"people-robbery":[576,512,[],"e536","M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V174.3c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zm-8 32c-35.3 0-64 28.7-64 64v96l0 .6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352H88V480c0 17.7 14.3 32 32 32s32-14.3 32-32V252.7l13 20.5c5.9 9.2 16.1 14.9 27 14.9h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H209.6l-37.4-58.9C157.6 142 132.1 128 104.7 128H72z"],lightbulb:[384,512,[128161],"f0eb","M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z"],"caret-left":[256,512,[],"f0d9","M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z"],"circle-exclamation":[512,512,["exclamation-circle"],"f06a","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],"school-circle-xmark":[640,512,[],"e56d","M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 368z"],"arrow-right-from-bracket":[512,512,["sign-out"],"f08b","M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z"],"circle-chevron-down":[512,512,["chevron-circle-down"],"f13a","M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z"],"unlock-keyhole":[448,512,["unlock-alt"],"f13e","M224 64c-44.2 0-80 35.8-80 80v48H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80V144C80 64.5 144.5 0 224 0c57.5 0 107 33.7 130.1 82.3c7.6 16 .8 35.1-15.2 42.6s-35.1 .8-42.6-15.2C283.4 82.6 255.9 64 224 64zm32 320c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h64z"],"cloud-showers-heavy":[512,512,[],"f740","M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zM81.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6S-3.3 490.7 1.9 478.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM313.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z"],"headphones-simple":[512,512,["headphones-alt"],"f58f","M256 80C141.1 80 48 173.1 48 288V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288C0 146.6 114.6 32 256 32s256 114.6 256 256V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288c0-114.9-93.1-208-208-208zM80 352c0-35.3 28.7-64 64-64h16c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V352zm288-64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h16z"],sitemap:[576,512,[],"f0e8","M208 80c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48h-8v40H464c30.9 0 56 25.1 56 56v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H464c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-4.4-3.6-8-8-8H312v40h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H256c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V280H112c-4.4 0-8 3.6-8 8v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-30.9 25.1-56 56-56H264V192h-8c-26.5 0-48-21.5-48-48V80z"],"circle-dollar-to-slot":[512,512,["donate"],"f4b9","M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3c-.3-.1-.5-.2-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 84c-11 0-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V312c0 11 9 20 20 20s20-9 20-20V298.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V104c0-11-9-20-20-20zM48 352H64c19.5 25.9 44 47.7 72.2 64H64v32H256 448V416H375.8c28.2-16.3 52.8-38.1 72.2-64h16c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V400c0-26.5 21.5-48 48-48z"],memory:[576,512,[],"f538","M64 64C28.7 64 0 92.7 0 128v7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6V320H576V248.6c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3V128c0-35.3-28.7-64-64-64H64zM576 352H0v64c0 17.7 14.3 32 32 32H80V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h48c17.7 0 32-14.3 32-32V352zM192 160v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32z"],"road-spikes":[640,512,[],"e568","M64 116.8c0-15.8 20.5-22 29.3-8.9L192 256V116.8c0-15.8 20.5-22 29.3-8.9L320 256V116.8c0-15.8 20.5-22 29.3-8.9L448 256V116.8c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.7-26.6 49.7H512 448 384 320 256 192 64V116.8zM32 384H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z"],"fire-burner":[640,512,[],"e4f1","M345.7 48.3L358 34.5c5.4-6.1 13.3-8.8 20.9-8.9c7.2 0 14.3 2.6 19.9 7.8c19.7 18.3 39.8 43.2 55 70.6C469 131.2 480 162.2 480 192.2C480 280.8 408.7 352 320 352c-89.6 0-160-71.3-160-159.8c0-37.3 16-73.4 36.8-104.5c20.9-31.3 47.5-59 70.9-80.2C273.4 2.3 280.7-.2 288 0c14.1 .3 23.8 11.4 32.7 21.6c0 0 0 0 0 0c2 2.3 4 4.6 6 6.7l19 19.9zM384 240.2c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C293 167.1 256 203.6 256 240.2c0 35.3 28.7 64 64 64s64-28.7 64-64zM32 288c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 64 448 0 0-64c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l0-96zM320 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM192 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],flag:[448,512,[127988,61725],"f024","M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V64 368 480c0 17.7 14.3 32 32 32s32-14.3 32-32V352l64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48V32z"],hanukiah:[640,512,[128334],"f6e6","M314.2 3.3C309.1 12.1 296 36.6 296 56c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C324.6 1.2 322.4 0 320 0s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C36.6 49.2 34.4 48 32 48s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7C165.1 60.1 152 84.6 152 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3C389.1 60.1 376 84.6 376 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7C517.1 60.1 504 84.6 504 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32V320H96c-17.7 0-32-14.3-32-32V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 53 43 96 96 96H288v64H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H544c53 0 96-43 96-96V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H352V144z"],feather:[512,512,[129718],"f52d","M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z"],"volume-low":[448,512,[128264,"volume-down"],"f027","M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM412.6 181.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z"],"comment-slash":[640,512,[],"f4b3","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zm385.2 425L82.9 161.3C70.7 185.6 64 212.2 64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104.1-17.9z"],"cloud-sun-rain":[640,512,[127782],"f743","M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l10.4 62.4c-23.3 10.8-42.9 28.4-56 50.3c-14.6-9-31.8-14.1-50.2-14.1c-53 0-96 43-96 96c0 35.5 19.3 66.6 48 83.2c.8 31.8 13.2 60.7 33.1 82.7l-56 39.2c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM208 144c13.8 0 26.7 4.4 37.1 11.9c-1.2 4.1-2.2 8.3-3 12.6c-37.9 14.6-67.2 46.6-77.8 86.4C151.8 243.1 144 226.5 144 208c0-35.3 28.7-64 64-64zm69.4 276c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm74.5-116.1c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z"],compress:[448,512,[],"f066","M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V64zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V64zM320 320c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z"],"wheat-awn":[512,512,["wheat-alt"],"e2cd","M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3z"],ankh:[320,512,[9765],"f644","M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1c-5.9 6.2-11.8 11.8-17.4 16.7c-5.6-4.9-11.5-10.5-17.4-16.7C116.7 204.6 96 169.6 96 128zM160 0C89.3 0 32 57.3 32 128c0 52.4 21.5 95.5 46.8 128H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V480c0 17.7 14.3 32 32 32s32-14.3 32-32V320h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H241.2c25.4-32.5 46.8-75.6 46.8-128C288 57.3 230.7 0 160 0z"],"hands-holding-child":[640,512,[],"e4fa","M320 0a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm44.7 164.3L375.8 253c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35h-7.6l-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8L255.5 181c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 104.8 295.3 96 320 96s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8l-19.8-16.7zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z"],asterisk:[384,512,[10033,61545],"2a","M192 32c17.7 0 32 14.3 32 32V199.5l111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V312.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5V64c0-17.7 14.3-32 32-32z"],"square-check":[448,512,[9745,9989,61510,"check-square"],"f14a","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"],"peseta-sign":[384,512,[],"e221","M64 32C46.3 32 32 46.3 32 64v96c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 96V448c0 17.7 14.3 32 32 32s32-14.3 32-32V352h96c77.4 0 142-55 156.8-128H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-3.2C334 87 269.4 32 192 32H64zM282.5 160H96V96h96c41.8 0 77.4 26.7 90.5 64zM96 224H282.5c-13.2 37.3-48.7 64-90.5 64H96V224z"],heading:[448,512,["header"],"f1dc","M0 64C0 46.3 14.3 32 32 32H80h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H112V208H336V96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h48 48c17.7 0 32 14.3 32 32s-14.3 32-32 32H400V240 416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H368 320c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112V416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V240 96H32C14.3 96 0 81.7 0 64z"],ghost:[384,512,[128123],"f6e2","M40.1 467.1l-11.2 9c-3.2 2.5-7.1 3.9-11.1 3.9C8 480 0 472 0 462.2V192C0 86 86 0 192 0S384 86 384 192V462.2c0 9.8-8 17.8-17.8 17.8c-4 0-7.9-1.4-11.1-3.9l-11.2-9c-13.4-10.7-32.8-9-44.1 3.9L269.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6l-26.6-30.5c-12.7-14.6-35.4-14.6-48.2 0L141.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6L84.2 471c-11.3-12.9-30.7-14.6-44.1-3.9zM160 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],list:[512,512,["list-squares"],"f03a","M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z"],"square-phone-flip":[448,512,["phone-square-alt"],"f87b","M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zm-90.7 96.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L280 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C111.1 378 119 384 128 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z"],"cart-plus":[576,512,[],"f217","M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM252 160c0 11 9 20 20 20h44v44c0 11 9 20 20 20s20-9 20-20V180h44c11 0 20-9 20-20s-9-20-20-20H356V96c0-11-9-20-20-20s-20 9-20 20v44H272c-11 0-20 9-20 20z"],gamepad:[640,512,[],"f11b","M192 64C86 64 0 150 0 256S86 448 192 448H448c106 0 192-86 192-192s-86-192-192-192H192zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V200z"],"circle-dot":[512,512,[128280,"dot-circle"],"f192","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-352a96 96 0 1 1 0 192 96 96 0 1 1 0-192z"],"face-dizzy":[512,512,["dizzy"],"f567","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-224a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM100.7 132.7c6.2-6.2 16.4-6.2 22.6 0L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6zm192 0c6.2-6.2 16.4-6.2 22.6 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6z"],egg:[384,512,[129370],"f7fb","M192 496C86 496 0 394 0 288C0 176 64 16 192 16s192 160 192 272c0 106-86 208-192 208zM154.8 134c6.5-6 7-16.1 1-22.6s-16.1-7-22.6-1c-23.9 21.8-41.1 52.7-52.3 84.2C69.7 226.1 64 259.7 64 288c0 8.8 7.2 16 16 16s16-7.2 16-16c0-24.5 5-54.4 15.1-82.8c10.1-28.5 25-54.1 43.7-71.2z"],"house-medical-circle-xmark":[640,512,[],"e513","M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z"],campground:[576,512,[9978],"f6bb","M377 52c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5L288 60.8 249 12c-11-13.8-31.2-16-45-5s-16 31.2-5 45l48 60L12.3 405.4C4.3 415.4 0 427.7 0 440.4V464c0 26.5 21.5 48 48 48H288 528c26.5 0 48-21.5 48-48V440.4c0-12.7-4.3-25.1-12.3-35L329 112l48-60zM288 448H168.5L288 291.7 407.5 448H288z"],"folder-plus":[512,512,[],"f65e","M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416zM232 376c0 13.3 10.7 24 24 24s24-10.7 24-24V312h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V200c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z"],futbol:[512,512,[9917,"futbol-ball","soccer-ball"],"f1e3","M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z"],paintbrush:[576,512,[128396,"paint-brush"],"f1fc","M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H208c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z"],lock:[448,512,[128274],"f023","M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z"],"gas-pump":[512,512,[9981],"f52f","M32 64C32 28.7 60.7 0 96 0H256c35.3 0 64 28.7 64 64V256h8c48.6 0 88 39.4 88 88v32c0 13.3 10.7 24 24 24s24-10.7 24-24V222c-27.6-7.1-48-32.2-48-62V96L384 64c-8.8-8.8-8.8-23.2 0-32s23.2-8.8 32 0l77.3 77.3c12 12 18.7 28.3 18.7 45.3V168v24 32V376c0 39.8-32.2 72-72 72s-72-32.2-72-72V344c0-22.1-17.9-40-40-40h-8V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64zM96 80v96c0 8.8 7.2 16 16 16H240c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16z"],"hot-tub-person":[512,512,["hot-tub"],"f593","M272 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L295.8 82.8C280.7 69.1 272 49.7 272 29.2V24zM0 320v16V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H277.3c-13.8 0-27.3-4.5-38.4-12.8l-85.3-64C137 166.7 116.8 160 96 160c-53 0-96 43-96 96v64zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm112 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM360 0c-13.3 0-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L407.8 82.8C392.7 69.1 384 49.7 384 29.2V24c0-13.3-10.7-24-24-24zM64 128A64 64 0 1 0 64 0a64 64 0 1 0 0 128z"],"map-location":[576,512,["map-marked"],"f59f","M302.8 312C334.9 271.9 408 174.6 408 120C408 53.7 354.3 0 288 0S168 53.7 168 120c0 54.6 73.1 151.9 105.2 192c7.7 9.6 22 9.6 29.6 0zM416 503l144.9-58c9.1-3.6 15.1-12.5 15.1-22.3V152c0-17-17.1-28.6-32.9-22.3l-116 46.4c-.5 1.2-1 2.5-1.5 3.7c-2.9 6.8-6.1 13.7-9.6 20.6V503zM15.1 187.3C6 191 0 199.8 0 209.6V480.4c0 17 17.1 28.6 32.9 22.3L160 451.8V200.4c-3.5-6.9-6.7-13.8-9.6-20.6c-5.6-13.2-10.4-27.4-12.8-41.5l-122.6 49zM384 255c-20.5 31.3-42.3 59.6-56.2 77c-20.5 25.6-59.1 25.6-79.6 0c-13.9-17.4-35.7-45.7-56.2-77V449.4l192 54.9V255z"],"house-flood-water":[576,512,[],"e50e","M306.8 6.1C295.6-2 280.4-2 269.2 6.1l-176 128c-11.2 8.2-15.9 22.6-11.6 35.8S98.1 192 112 192h16v73c1.7 1 3.3 2 4.9 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c1.5-1 3-2 4.5-2.9l-.3-73.2H464c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128zM269.5 309.9C247 325.4 219.5 336 192 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 389.7 159 400 192 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z"],tree:[448,512,[127794],"f1bb","M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208H104L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320H80L5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5H192v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448H424.5c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320h33.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208h24.9c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z"],"bridge-lock":[640,512,[],"e4cc","M32 64c0-17.7 14.3-32 32-32H576c17.7 0 32 14.3 32 32s-14.3 32-32 32H536v64h-8c-61.9 0-112 50.1-112 112v24.6c-9.9 5.8-18.2 14.1-23.8 24.1c-17.6-20-43.4-32.7-72.2-32.7c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V384c0-53-43-96-96-96V160h72V96H64C46.3 96 32 81.7 32 64zM408 96v64h80V96H408zm-48 64V96H280v64h80zM152 96v64h80V96H152zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z"],"sack-dollar":[512,512,[128176],"f81d","M320 96H192L144.6 24.9C137.5 14.2 145.1 0 157.9 0H354.1c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128H320c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96H96c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4l0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84 88c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V424c0 11 9 20 20 20s20-9 20-20V410.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l0 0-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V216z"],"pen-to-square":[512,512,["edit"],"f044","M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z"],"car-side":[640,512,[128663],"f5e4","M171.3 96H224v96H111.3l30.4-75.9C146.5 104 158.2 96 171.3 96zM272 192V96h81.2c9.7 0 18.9 4.4 25 12l67.2 84H272zm256.2 1L428.2 68c-18.2-22.8-45.8-36-75-36H171.3c-39.3 0-74.6 23.9-89.1 60.3L40.6 196.4C16.8 205.8 0 228.9 0 256V368c0 17.7 14.3 32 32 32H65.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H385.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H608c17.7 0 32-14.3 32-32V320c0-65.2-48.8-119-111.8-127zM434.7 368a48 48 0 1 1 90.5 32 48 48 0 1 1 -90.5-32zM160 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"],"share-nodes":[448,512,["share-alt"],"f1e0","M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z"],"heart-circle-minus":[576,512,[],"e4ff","M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z"],"hourglass-half":[384,512,["hourglass-2"],"f252","M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 19-5.6 37.4-16 53H112c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9L192 301.3l67.9 67.9c4.6 4.6 8.6 9.6 12.1 14.9H112z"],microscope:[512,512,[128300],"f610","M160 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32zM32 448H320c70.7 0 128-57.3 128-128s-57.3-128-128-128V128c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],sink:[512,512,[],"e06d","M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32s14.3 32 32 32s32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96V288H160V264c0-30.9-25.1-56-56-56H56c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c4.4 0 8 3.6 8 8v24H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H256 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H400V264c0-4.4 3.6-8 8-8h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H408c-30.9 0-56 25.1-56 56v24H288V96zM480 416V384H32v32c0 53 43 96 96 96H384c53 0 96-43 96-96z"],"bag-shopping":[448,512,["shopping-bag"],"f290","M160 112c0-35.3 28.7-64 64-64s64 28.7 64 64v48H160V112zm-48 48H48c-26.5 0-48 21.5-48 48V416c0 53 43 96 96 96H352c53 0 96-43 96-96V208c0-26.5-21.5-48-48-48H336V112C336 50.1 285.9 0 224 0S112 50.1 112 112v48zm24 48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm152 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z"],"arrow-down-z-a":[576,512,["sort-alpha-desc","sort-alpha-down-alt"],"f881","M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 64c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 96H352c-17.7 0-32-14.3-32-32zm96 192c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 448H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128c5.4-10.8 16.5-17.7 28.6-17.7zM395.8 400h40.4L416 359.6 395.8 400z"],mitten:[448,512,[],"f7b5","M352 384H64L5.4 178.9C1.8 166.4 0 153.4 0 140.3C0 62.8 62.8 0 140.3 0h3.4c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192h2.8c34.9 0 63.3 28.3 63.3 63.3c0 15.9-6 31.2-16.8 42.9L352 384zM32 448c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V448z"],"person-rays":[512,512,[],"e54d","M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9l-28.6 47.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L328 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H248zM7 7C16.4-2.3 31.6-2.3 41 7l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 41C-2.3 31.6-2.3 16.4 7 7zM471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7zM7 505c-9.4-9.4-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-9.4 9.4-24.6 9.4-33.9 0zm464 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z"],users:[640,512,[],"f0c0","M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z"],"eye-slash":[640,512,[],"f070","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z"],"flask-vial":[640,512,[],"e4f3","M175 389.4c-9.8 16-15 34.3-15 53.1c-10 3.5-20.8 5.5-32 5.5c-53 0-96-43-96-96V64C14.3 64 0 49.7 0 32S14.3 0 32 0H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V309.9l-49 79.6zM96 64v96h64V64H96zM352 0H480h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V214.9L629.7 406.2c6.7 10.9 10.3 23.5 10.3 36.4c0 38.3-31.1 69.4-69.4 69.4H261.4c-38.3 0-69.4-31.1-69.4-69.4c0-12.8 3.6-25.4 10.3-36.4L320 214.9V64c-17.7 0-32-14.3-32-32s14.3-32 32-32h32zm32 64V224c0 5.9-1.6 11.7-4.7 16.8L330.5 320h171l-48.8-79.2c-3.1-5-4.7-10.8-4.7-16.8V64H384z"],hand:[512,512,[129306,9995,"hand-paper"],"f256","M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32z"],om:[512,512,[128329],"f679","M379.3 4.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6l-16-16zM281 66.7c-2.2-1.5-4.9-2.5-7.7-2.7c-.6 0-1.3-.1-1.9 0c-3.9 .2-7.4 1.7-10.1 4.2c-.9 .8-1.6 1.7-2.3 2.6c-1.7 2.4-2.7 5.3-2.9 8.5c0 .7 0 1.4 0 2.1c.2 2.2 .9 4.3 1.9 6.2l.3 .6c.3 .6 .8 1.4 1.4 2.4c1.2 2 2.9 4.8 5.1 8.2c4.4 6.7 11.1 15.5 20 24.4C302.4 141.1 330.3 160 368 160c31.2 0 56.6-10.4 73.9-20.2c8.7-5 15.6-9.9 20.4-13.8c2.4-1.9 4.3-3.6 5.7-4.9c.7-.6 1.3-1.2 1.7-1.6l.6-.5 .1-.1 .1-.1 0 0 0 0c5.9-5.8 9.5-13.9 9.5-22.8c0-17.7-14.3-32-32-32c-8.7 0-16.7 3.5-22.4 9.2c-.1 .1-.2 .2-.5 .4c-.5 .5-1.5 1.3-2.8 2.4c-2.7 2.2-6.8 5.2-12.1 8.2C399.4 90.4 384.8 96 368 96c-20.8 0-42.4-7-59.5-14.6c-8.4-3.7-15.4-7.5-20.3-10.3c-2.4-1.4-4.3-2.5-5.6-3.3c-.6-.4-1.1-.7-1.4-.9l-.3-.2zM115.2 169.6c8-6 17.9-9.6 28.8-9.6c26.5 0 48 21.5 48 48s-21.5 48-48 48H109.8c-7.6 0-13.8 6.2-13.8 13.8c0 1.5 .2 2.9 .7 4.4l8 24c4.4 13.1 16.6 21.9 30.4 21.9H144h16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-50.8 0-82.7-21.5-102.2-42.8c-9.9-10.8-16.6-21.6-20.9-29.7c-2.1-4-3.6-7.3-4.5-9.6c-.5-1.1-.8-2-1-2.5l-.2-.5c-.3-.9-.7-1.8-1.1-2.6c-1.2-2.2-2.8-4-4.7-5.4c-1.9-1.4-4.1-2.3-6.5-2.8c-1.4-.3-2.9-.3-4.4-.2c-2.5 .2-4.8 1-6.8 2.3c-1.1 .7-2.2 1.5-3.1 2.5c-2.4 2.5-4.1 5.8-4.5 9.5c-.1 .6-.1 1.1-.1 1.7c0 0 0 0 0 0c0 .8 .1 1.7 .2 2.5l0 .1c0 .3 .1 .8 .2 1.3c.2 1.1 .4 2.7 .8 4.6c.8 3.9 2 9.4 3.9 15.9c3.8 13 10.3 30.4 21.3 48C48.7 476.2 89.4 512 160 512c70.7 0 128-57.3 128-128c0-23.3-6.2-45.2-17.1-64h22.6c25.5 0 49.9-10.1 67.9-28.1l26.5-26.5c6-6 14.1-9.4 22.6-9.4H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32c-25.7 0-41.4-12.5-51.2-25.6c-5-6.7-8.4-13.4-10.5-18.6c-1.1-2.5-1.8-4.6-2.2-6c-.2-.7-.4-1.2-.5-1.5l-.1-.2c-.3-1.3-.8-2.6-1.5-3.8c-1.1-2-2.6-3.8-4.4-5.1c-2.7-2-6-3.2-9.6-3.2l-.2 0c-8 .1-14.6 6.1-15.6 13.9l0 0c0 .3-.1 .6-.2 1.1c-.1 .9-.3 2.1-.4 3.6c-.3 3-.6 7.3-.6 12.4c0 10.1 1.1 23.9 5.8 38.1c4.8 14.3 13.4 29.3 28.6 40.7C368.7 473.3 389.3 480 416 480c53 0 96-43 96-96V288c0-53-43-96-96-96h-5.5c-25.5 0-49.9 10.1-67.9 28.1l-26.5 26.5c-6 6-14.1 9.4-22.6 9.4H245.2c6.9-14.5 10.8-30.8 10.8-48c0-61.9-50.1-112-112-112c-25.2 0-48.5 8.3-67.2 22.4c-14.1 10.6-17 30.7-6.4 44.8s30.7 17 44.8 6.4z"],worm:[512,512,[],"e599","M256 96c0-53 43-96 96-96h38.4C439.9 0 480 40.1 480 89.6V176v16V376c0 75.1-60.9 136-136 136s-136-60.9-136-136V296c0-22.1-17.9-40-40-40s-40 17.9-40 40V464c0 26.5-21.5 48-48 48s-48-21.5-48-48V296c0-75.1 60.9-136 136-136s136 60.9 136 136v80c0 22.1 17.9 40 40 40s40-17.9 40-40V192H352c-53 0-96-43-96-96zm144-8a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z"],"house-circle-xmark":[640,512,[],"e50b","M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z"],plug:[384,512,[128268],"f1e6","M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8C297 398 352 333.4 352 256V224c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z"],"chevron-up":[512,512,[],"f077","M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z"],"hand-spock":[576,512,[128406],"f259","M246.9 23.7C242.3 6.6 224.8-3.5 207.7 1.1s-27.2 22.1-22.6 39.2L238 237.8c2.5 9.2-4.5 18.2-14 18.2c-6.4 0-12-4.2-13.9-10.3L166.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L99.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L156.8 448c43.1 41.1 100.4 64 160 64h10.9 8.2c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L443.5 247.1c-1.6 5.3-6.4 8.9-12 8.9c-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L355.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9c-11.9 0-22.4-8-25.4-19.5l-57-212.8z"],stopwatch:[448,512,[9201],"f2f2","M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H224 176zm72 192V320c0 13.3-10.7 24-24 24s-24-10.7-24-24V192c0-13.3 10.7-24 24-24s24 10.7 24 24z"],"face-kiss":[512,512,[128535,"kiss"],"f596","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"bridge-circle-xmark":[640,512,[],"e4cb","M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z"],"face-grin-tongue":[512,512,[128539,"grin-tongue"],"f589","M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z"],"chess-bishop":[320,512,[9821],"f43a","M128 0C110.3 0 96 14.3 96 32c0 16.1 11.9 29.4 27.4 31.7C78.4 106.8 8 190 8 288c0 47.4 30.8 72.3 56 84.7V400H256V372.7c25.2-12.5 56-37.4 56-84.7c0-37.3-10.2-72.4-25.3-104.1l-99.4 99.4c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L270.8 154.6c-23.2-38.1-51.8-69.5-74.2-90.9C212.1 61.4 224 48.1 224 32c0-17.7-14.3-32-32-32H128zM48 432L6.6 473.4c-4.2 4.2-6.6 10-6.6 16C0 501.9 10.1 512 22.6 512H297.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L272 432H48z"],"face-grin-wink":[512,512,["grin-wink"],"f58c","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-16.9-79.2c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"ear-deaf":[512,512,["deaf","deafness","hard-of-hearing"],"f2a4","M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5c-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3C74.8 132.5 149.4 64 240 64c97.2 0 176 78.8 176 176c0 46-17.7 87.9-46.6 119.3c-12 13-17.4 24.8-17.4 34.7V400c0 61.9-50.1 112-112 112c-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48v-6.1c0-32.9 17.4-59.6 34.4-78c18.4-20 29.6-46.6 29.6-75.9c0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z"],"road-circle-check":[640,512,[],"e564","M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z"],"dice-five":[448,512,[9860],"f523","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"square-rss":[448,512,["rss-square"],"f143","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],"land-mine-on":[640,512,[],"e51b","M344 24V168c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM192 320c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32v32H192V320zm-77.3 90.5c8.1-16.3 24.8-26.5 42.9-26.5H482.3c18.2 0 34.8 10.3 42.9 26.5l27.6 55.2C563.5 487 548 512 524.2 512H115.8c-23.8 0-39.3-25-28.6-46.3l27.6-55.2zM36.3 138.3c7.5-10.9 22.5-13.6 33.4-6.1l104 72c10.9 7.5 13.6 22.5 6.1 33.4s-22.5 13.6-33.4 6.1l-104-72c-10.9-7.5-13.6-22.5-6.1-33.4zm534.1-6.1c10.9-7.5 25.8-4.8 33.4 6.1s4.8 25.8-6.1 33.4l-104 72c-10.9 7.5-25.8 4.8-33.4-6.1s-4.8-25.8 6.1-33.4l104-72z"],"i-cursor":[256,512,[],"f246","M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3V224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7s16.9 30.7 34.5 29.2l8-.7c34.1-2.8 64.2-18.9 85.4-42.9c21.2 24 51.2 40.1 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V128.3c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7C179.2 3.6 149.2 19.7 128 43.7c-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z"],stamp:[512,512,[],"f5bf","M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2H112C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V413.3c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112H366.2c-29.9 0-54.2-24.3-54.2-54.2zM416 416v32H96V416H416z"],stairs:[576,512,[],"e289","M384 64c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v96c0 17.7-14.3 32-32 32H320v96c0 17.7-14.3 32-32 32H192v96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V320c0-17.7 14.3-32 32-32h96V192c0-17.7 14.3-32 32-32h96V64z"],i:[320,512,[105],"49","M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96h96V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V96h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 32z"],"hryvnia-sign":[384,512,[8372,"hryvnia"],"f6f2","M121.9 116.2C138.3 103.1 158.7 96 179.6 96H223c27.1 0 49 21.9 49 49c0 11.5-4 22.4-11.1 31H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H155.5l-50.6 28.9c-1.7 1-3.4 2-5.1 3.1H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H52.3c-2.8 9.9-4.3 20.4-4.3 31c0 62.4 50.6 113 113 113h43.4c35.5 0 70-12.1 97.7-34.3L308 441c13.8-11 16-31.2 5-45s-31.2-16-45-5l-5.9 4.7c-16.4 13.1-36.7 20.2-57.7 20.2H161c-27.1 0-49-21.9-49-49c0-11.5 4-22.4 11.1-31H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H228.5l50.6-28.9c1.7-1 3.4-2 5.1-3.1H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H331.7c2.8-10 4.3-20.4 4.3-31c0-62.4-50.6-113-113-113H179.6c-35.5 0-70 12.1-97.7 34.3L76 71c-13.8 11-16 31.2-5 45s31.2 16 45 5l5.9-4.7z"],pills:[576,512,[],"f484","M112 96c-26.5 0-48 21.5-48 48V256h96V144c0-26.5-21.5-48-48-48zM0 144C0 82.1 50.1 32 112 32s112 50.1 112 112V368c0 61.9-50.1 112-112 112S0 429.9 0 368V144zM554.9 399.4c-7.1 12.3-23.7 13.1-33.8 3.1L333.5 214.9c-10-10-9.3-26.7 3.1-33.8C360 167.7 387.1 160 416 160c88.4 0 160 71.6 160 160c0 28.9-7.7 56-21.1 79.4zm-59.5 59.5C472 472.3 444.9 480 416 480c-88.4 0-160-71.6-160-160c0-28.9 7.7-56 21.1-79.4c7.1-12.3 23.7-13.1 33.8-3.1L498.5 425.1c10 10 9.3 26.7-3.1 33.8z"],"face-grin-wide":[512,512,[128515,"grin-alt"],"f581","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z"],tooth:[448,512,[129463],"f5c9","M186.1 52.1C169.3 39.1 148.7 32 127.5 32C74.7 32 32 74.7 32 127.5v6.2c0 15.8 3.7 31.3 10.7 45.5l23.5 47.1c4.5 8.9 7.6 18.4 9.4 28.2l36.7 205.8c2 11.2 11.6 19.4 22.9 19.8s21.4-7.4 24-18.4l28.9-121.3C192.2 323.7 207 312 224 312s31.8 11.7 35.8 28.3l28.9 121.3c2.6 11.1 12.7 18.8 24 18.4s20.9-8.6 22.9-19.8l36.7-205.8c1.8-9.8 4.9-19.3 9.4-28.2l23.5-47.1c7.1-14.1 10.7-29.7 10.7-45.5v-2.1c0-55-44.6-99.6-99.6-99.6c-24.1 0-47.4 8.8-65.6 24.6l-3.2 2.8 19.5 15.2c7 5.4 8.2 15.5 2.8 22.5s-15.5 8.2-22.5 2.8l-24.4-19-37-28.8z"],v:[384,512,[118],"56","M19.7 34.5c16.3-6.8 35 .9 41.8 17.2L192 364.8 322.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7L2.5 76.3c-6.8-16.3 .9-35 17.2-41.8z"],"bangladeshi-taka-sign":[384,512,[],"e2e6","M36 32.2C18.4 30.1 2.4 42.5 .2 60S10.5 93.6 28 95.8l7.9 1c16 2 28 15.6 28 31.8V160H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V384c0 53 43 96 96 96h32c106 0 192-86 192-192V256c0-53-43-96-96-96H272c-17.7 0-32 14.3-32 32s14.3 32 32 32h16c17.7 0 32 14.3 32 32v32c0 70.7-57.3 128-128 128H160c-17.7 0-32-14.3-32-32V224h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V128.5c0-48.4-36.1-89.3-84.1-95.3l-7.9-1z"],bicycle:[640,512,[128690],"f206","M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h25.7l34.6 64H222.9l-27.4-38C191 99.7 183.7 96 176 96H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h43.7l22.1 30.7-26.6 53.1c-10-2.5-20.5-3.8-31.2-3.8C57.3 224 0 281.3 0 352s57.3 128 128 128c65.3 0 119.1-48.9 127-112h49c8.5 0 16.3-4.5 20.7-11.8l84.8-143.5 21.7 40.1C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L375.4 48.8C369.8 38.4 359 32 347.2 32H312zM458.6 303.7l32.3 59.7c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-32.3-59.7c3.6-.6 7.4-.9 11.2-.9c39.8 0 72 32.2 72 72s-32.2 72-72 72s-72-32.2-72-72c0-18.6 7-35.5 18.6-48.3zM133.2 368h65c-7.3 32.1-36 56-70.2 56c-39.8 0-72-32.2-72-72s32.2-72 72-72c1.7 0 3.4 .1 5.1 .2l-24.2 48.5c-9 18.1 4.1 39.4 24.3 39.4zm33.7-48l50.7-101.3 72.9 101.2-.1 .1H166.8zm90.6-128H365.9L317 274.8 257.4 192z"],"staff-snake":[384,512,["rod-asclepius","rod-snake","staff-aesculapius"],"e579","M222.6 43.2l-.1 4.8H288c53 0 96 43 96 96s-43 96-96 96H248V160h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H248 220l-4.5 144H256c53 0 96 43 96 96s-43 96-96 96H240V384h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H213l-3.1 99.5L208.5 495l0 1c-.3 8.9-7.6 16-16.5 16s-16.2-7.1-16.5-16l0-1-1-31H136c-22.1 0-40-17.9-40-40s17.9-40 40-40h36l-1-32H152c-53 0-96-43-96-96c0-47.6 34.6-87.1 80-94.7V256c0 8.8 7.2 16 16 16h16.5L164 128H136 122.6c-9 18.9-28.3 32-50.6 32H56c-30.9 0-56-25.1-56-56S25.1 48 56 48h8 8 89.5l-.1-4.8L161 32c0-.7 0-1.3 0-1.9c.5-16.6 14.1-30 31-30s30.5 13.4 31 30c0 .6 0 1.3 0 1.9l-.4 11.2zM64 112a16 16 0 1 0 0-32 16 16 0 1 0 0 32z"],"head-side-cough-slash":[640,512,[],"e062","M448 325.8l44 34.5c8.1 1.4 14.8 6.8 18 14.1L552.9 408c10.6 .4 19.5 7.6 22.2 17.4l39.1 30.6c.6 0 1.2-.1 1.8-.1c11.1 0 20.4 7.5 23.2 17.8h-3.9c6.2 8.5 6.4 20.4-.4 29c-8.2 10.4-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L89.6 44.9C127 16.7 173.5 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v0 5.8zM0 224.2c0-38.7 9.8-75.1 27.1-106.9L341.8 365.3l-2.5 .3c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9l62 3.9 43 33.9C439.3 466.2 421.2 480 400 480H320v8c0 13.3-10.7 24-24 24H256v0H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM616 360a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-64-48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z"],"truck-medical":[640,512,[128657,"ambulance"],"f0f9","M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM176 80v48l-48 0c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V192h48c8.8 0 16-7.2 16-16V144c0-8.8-7.2-16-16-16H240V80c0-8.8-7.2-16-16-16H192c-8.8 0-16 7.2-16 16z"],"wheat-awn-circle-exclamation":[640,512,[],"e598","M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c22.5 22.5 53.3 31.5 82.4 27c0-1 0-2.1 0-3.1c0-33.1 9.1-64.1 25-90.6c-15.5-8.7-32.5-13.8-49.8-15.5l31.9-31.9 12.2 12.2c6 6 12.6 11.1 19.7 15.2c27.5-34 67.3-57.5 112.6-63.8c-4.1-3.8-8.4-7.3-12.9-10.5L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z"],snowman:[512,512,[9731,9924],"f7d0","M341.1 140.6c-2 3.9-1.6 8.6 1.2 12c7 8.5 12.9 18.1 17.2 28.4L408 160.2V120c0-13.3 10.7-24 24-24s24 10.7 24 24v19.6l22.5-9.7c12.2-5.2 26.3 .4 31.5 12.6s-.4 26.3-12.6 31.5l-56 24-73.6 31.5c-.5 9.5-2.1 18.6-4.8 27.3c-1.2 3.8-.1 8 2.8 10.8C396.7 296.9 416 338.2 416 384c0 44.7-18.3 85-47.8 114.1c-9.9 9.7-23.7 13.9-37.5 13.9H181.3c-13.9 0-27.7-4.2-37.5-13.9C114.3 469 96 428.7 96 384c0-45.8 19.3-87.1 50.1-116.3c2.9-2.8 4-6.9 2.8-10.8c-2.7-8.7-4.3-17.9-4.8-27.3L70.5 198.1l-56-24C2.4 168.8-3.3 154.7 1.9 142.5s19.3-17.8 31.5-12.6L56 139.6V120c0-13.3 10.7-24 24-24s24 10.7 24 24v40.2L152.6 181c4.3-10.3 10.1-19.9 17.2-28.4c2.8-3.4 3.3-8.1 1.2-12C164 127.2 160 112.1 160 96c0-53 43-96 96-96s96 43 96 96c0 16.1-4 31.2-10.9 44.6zM224 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-16 80a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM288 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48 24v3.2c0 3.2 .8 6.3 2.3 9l9 16.9c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l9-16.9c1.5-2.8 2.3-5.9 2.3-9V120c0-8.8-7.2-16-16-16s-16 7.2-16 16z"],"mortar-pestle":[512,512,[],"f5a7","M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160H397.3L502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2c-11.1 13.9-19.4 30.3-23.9 48.1C127.6 497.4 142.3 512 160 512H352c17.7 0 32.4-14.6 28.1-31.7c-4.5-17.8-12.8-34.1-23.9-48.1C436.6 403.7 480 338.5 480 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z"],"road-barrier":[640,512,[],"e562","M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V266.3L149.2 96H64V64c0-17.7-14.3-32-32-32zM405.2 96H330.8l-5.4 10.7L234.8 288h74.3l5.4-10.7L405.2 96zM362.8 288h74.3l5.4-10.7L533.2 96H458.8l-5.4 10.7L362.8 288zM202.8 96l-5.4 10.7L106.8 288h74.3l5.4-10.7L277.2 96H202.8zm288 192H576V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v53.7L490.8 288z"],school:[640,512,[127979],"f549","M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H256V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96H592c26.5 0 48-21.5 48-48V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V208zM96 320h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V336zM232 176a88 88 0 1 1 176 0 88 88 0 1 1 -176 0zm88-48c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16z"],igloo:[576,512,[],"f7ae","M320 33.8V160H48.5C100.2 82.8 188.1 32 288 32c10.8 0 21.5 .6 32 1.8zM352 160V39.1C424.9 55.7 487.2 99.8 527.5 160H352zM29.9 192H96V320H0c0-46 10.8-89.4 29.9-128zM192 320H128V192H448V320H384v32H576v80c0 26.5-21.5 48-48 48H352V352c0-35.3-28.7-64-64-64s-64 28.7-64 64V480H48c-26.5 0-48-21.5-48-48V352H192V320zm288 0V192h66.1c19.2 38.6 29.9 82 29.9 128H480z"],joint:[640,512,[],"f595","M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 55.2 21.9 108.1 60.9 147.1l21 21c9 9 14.1 21.2 14.1 33.9v11c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-29.7-11.8-58.2-32.8-79.2l-21-21C463.2 117.8 448 81.2 448 43V32zM576 256c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-55.2-21.9-108.1-60.9-147.1l-21-21c-9-9-14.1-21.2-14.1-33.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 29.7 11.8 58.2 32.8 79.2l21 21c27 27 42.2 63.6 42.2 101.8v11zM229.8 360c-4.7-2.3-10-2.7-15.2-2c-37.8 5.6-75.2 14.3-106.9 22.8C81.3 388 58.3 395.1 42 400.4c-8.2 2.7-14.7 4.9-19.2 6.5c-2.3 .8-4 1.4-5.2 1.8l-1.3 .5C6.8 412.5 0 421.4 0 432s6.8 19.5 16.3 22.7l1.3 .5c1.2 .4 3 1.1 5.2 1.8c4.5 1.6 11 3.8 19.2 6.5c16.3 5.4 39.2 12.5 65.7 19.6C160.3 497.3 228.8 512 288 512h67.3c4.1 0 6.3-5.1 3.6-8.3L256.5 380.8c-7.4-8.9-16.5-15.9-26.7-20.8zM445 512h19 51.3c4.1 0 6.3-5.1 3.6-8.3L416.5 380.8C401.3 362.5 378.8 352 355 352H336 288c-1.1 0-2.3 0-3.4 0c-4.1 0-6.2 5.1-3.5 8.3L383.5 483.2C398.7 501.5 421.2 512 445 512zm-3.9-151.7L543.5 483.2c14.6 17.5 35.9 27.9 58.6 28.7c21.1-1.1 37.9-18.6 37.9-39.9V392c0-22.1-17.9-40-40-40H444.7c-4.1 0-6.3 5.1-3.6 8.3z"],"angle-right":[320,512,[8250],"f105","M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"],horse:[576,512,[128014],"f6f0","M448 238.1V160h16l9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1V80c0-19.1-8.4-36.3-21.7-48H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H480 448C377.3 0 320 57.3 320 128H224 203.2 148.8c-30.7 0-57.6 16.3-72.5 40.8C33.2 174.5 0 211.4 0 256v56c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9h33.7c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8V480c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V315.7c19.2-19.2 31.5-45.7 32-75.7h0v-1.9zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z"],q:[448,512,[113],"51","M64 256c0 88.4 71.6 160 160 160c28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1C371.9 325.8 384 292.3 384 256c0-88.4-71.6-160-160-160S64 167.6 64 256zM344.9 444.6C310 467 268.5 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32s224 100.3 224 224c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z"],g:[448,512,[103],"47","M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H400c25.8 0 49.6 21.4 47.2 50.6C437.8 389.6 341.4 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57c13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z"],"notes-medical":[512,512,[],"f481","M96 352V96c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V293.5c0 17-6.7 33.3-18.7 45.3l-58.5 58.5c-12 12-28.3 18.7-45.3 18.7H160c-35.3 0-64-28.7-64-64zM272 128c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V256h48c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H320V144c0-8.8-7.2-16-16-16H272zm24 336c13.3 0 24 10.7 24 24s-10.7 24-24 24H136C60.9 512 0 451.1 0 376V152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 224c0 48.6 39.4 88 88 88H296z"],"temperature-half":[320,512,[127777,"temperature-2","thermometer-2","thermometer-half"],"f2c9","M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V208c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z"],"dong-sign":[384,512,[],"e169","M288 32c-17.7 0-32 14.3-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v49.1c-18.8-10.9-40.7-17.1-64-17.1c-70.7 0-128 57.3-128 128s57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32V288 128c17.7 0 32-14.3 32-32s-14.3-32-32-32c0-17.7-14.3-32-32-32zM128 288a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z"],capsules:[576,512,[],"f46b","M64 144c0-26.5 21.5-48 48-48s48 21.5 48 48V256H64V144zM0 144V368c0 61.9 50.1 112 112 112s112-50.1 112-112V189.6c1.8 19.1 8.2 38 19.8 54.8L372.3 431.7c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 113.3C391.8 61.5 321.9 49 271.3 85.2c-28 20-44.3 50.8-47.3 83V144c0-61.9-50.1-112-112-112S0 82.1 0 144zm296.6 64.2c-16-23.3-10-55.3 11.9-71c21.2-15.1 50.5-10.3 66 12.2l67 97.6L361.6 303l-65-94.8zM491 407.7c-.8 .6-1.6 1.1-2.4 1.6l4-2.8c-.5 .4-1 .8-1.6 1.2z"],"poo-storm":[448,512,["poo-bolt"],"f75a","M236.9 .2c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1c0 21.7-8.5 37.2-21.9 47.6c-13.8 10.8-34 17-57.8 17H128c-35.3 0-64 28.7-64 64c0 12.2 3.4 23.5 9.3 33.2C31.7 216.2 0 252.4 0 296c0 40.9 28 75.4 65.8 85.2c-5.3-18.5 1-38.5 16.2-50.7l160-128c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L285.7 320H304c20.4 0 38.5 12.9 45.3 32.1c3.7 10.6 3.5 21.8 0 31.9H360c48.6 0 88-39.4 88-88c0-43.6-31.7-79.8-73.3-86.8c5.9-9.7 9.3-21.1 9.3-33.2c0-35.3-28.7-64-64-64h-1.4c.9-5.4 1.4-10.9 1.4-16.6c0-48.7-36.1-88.9-83.1-95.2zm45.1 227.4c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L129.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H233.9l52.4-104.8c3.4-6.7 1.6-14.9-4.3-19.6z"],"face-frown-open":[512,512,[128550,"frown-open"],"f57a","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-122 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z"],"hand-point-up":[384,512,[9757],"f0a6","M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32V240H32V32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192zm-64-64c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H162.3c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363V336c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z"],"money-bill":[576,512,[],"f0d6","M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM288 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192z"],bookmark:[384,512,[128278,61591],"f02e","M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z"],"align-justify":[448,512,[],"f039","M448 64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32z"],"umbrella-beach":[576,512,[127958],"f5ca","M346.3 271.8l-60.1-21.9L214 448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H282.1l64.1-176.2zm121.1-.2l-3.3 9.1 67.7 24.6c18.1 6.6 38-4.2 39.6-23.4c6.5-78.5-23.9-155.5-80.8-208.5c2 8 3.2 16.3 3.4 24.8l.2 6c1.8 57-7.3 113.8-26.8 167.4zM462 99.1c-1.1-34.4-22.5-64.8-54.4-77.4c-.9-.4-1.9-.7-2.8-1.1c-33-11.7-69.8-2.4-93.1 23.8l-4 4.5C272.4 88.3 245 134.2 226.8 184l-3.3 9.1L434 269.7l3.3-9.1c18.1-49.8 26.6-102.5 24.9-155.5l-.2-6zM107.2 112.9c-11.1 15.7-2.8 36.8 15.3 43.4l71 25.8 3.3-9.1c19.5-53.6 49.1-103 87.1-145.5l4-4.5c6.2-6.9 13.1-13 20.5-18.2c-79.6 2.5-154.7 42.2-201.2 108z"],"helmet-un":[512,512,[],"e503","M479.5 224C471.2 98.9 367.2 0 240 0C107.5 0 0 107.5 0 240v56.3C0 344.8 39.2 384 87.7 384H200h14.9L343.5 505.4c4.5 4.2 10.4 6.6 16.5 6.6h96c13.3 0 24-10.7 24-24s-10.7-24-24-24H369.5l-1.5-1.5V288h80 32c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.5zM320 417.2l-78-73.7L274.4 288H320V417.2zM285.3 103.1l34.7 52V112c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V208c0 8.8-7.2 16-16 16s-16-7.2-16-16V112c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112v64c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V112c0-8.8 7.2-16 16-16s16 7.2 16 16z"],bullseye:[512,512,[],"f140","M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],bacon:[576,512,[129363],"f7e5","M439.2 1.2c11.2-3.2 23.2-.1 31.4 8.1L518 56.7l-26.5 7.9c-58 16.6-98.1 39.6-129.6 67.4c-31.2 27.5-53.2 59.1-75.1 90.9l-2.3 3.3C241.6 288.7 195 356.6 72.8 417.7L37.9 435.2 9.4 406.6c-7.3-7.3-10.6-17.6-9-27.8s8.1-18.9 17.3-23.5C136.1 296.2 180.9 231 223.3 169.3l2.3-3.4c21.8-31.8 44.9-64.9 77.7-93.9c33.4-29.5 75.8-53.6 135.9-70.8zM61.8 459l25.4-12.7c129.5-64.7 179.9-138.1 223.8-202l2.2-3.3c22.1-32.1 42.1-60.5 69.9-85.1c27.5-24.3 63.4-45.2 117.3-60.6l0 0 .2-.1 43.1-12.9 23 23c8 8 11.2 19.7 8.3 30.7s-11.3 19.6-22.2 22.7c-51.9 14.8-85.6 34.7-111.1 57.2c-26.1 23-45.1 49.9-67.3 82.1l-2.2 3.2C327.8 365.9 275.5 442 142.3 508.6c-12.3 6.2-27.2 3.7-36.9-6L61.8 459z"],"hand-point-down":[384,512,[],"f0a7","M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32V272H32V480zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-64 64c17.7 0 32-14.3 32-32V304c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6c13.2 0 25.4 4 35.6 10.8c8.7-24.9 32.5-42.8 60.4-42.8c11.7 0 22.6 3.1 32 8.6V160C384 71.6 312.4 0 224 0H162.3C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149v27c0 35.3 28.7 64 64 64h88c22.1 0 40-17.9 40-40s-17.9-40-40-40H96c-8.8 0-16-7.2-16-16s7.2-16 16-16h56c39.8 0 72 32.2 72 72z"],"arrow-up-from-bracket":[448,512,[],"e09a","M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3 192 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-64z"],folder:[512,512,[128193,128447,61716,"folder-blank"],"f07b","M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z"],"file-waveform":[448,512,["file-medical-alt"],"f478","M96 0C60.7 0 32 28.7 32 64V288H144c6.1 0 11.6 3.4 14.3 8.8L176 332.2l49.7-99.4c2.7-5.4 8.3-8.8 14.3-8.8s11.6 3.4 14.3 8.8L281.9 288H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-6.1 0-11.6-3.4-14.3-8.8L240 275.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L134.1 320H32V448c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V160H288c-17.7 0-32-14.3-32-32V0H96zM288 0V128H416L288 0z"],radiation:[512,512,[],"f7b9","M216 186.7c-23.9 13.8-40 39.7-40 69.3L32 256C14.3 256-.2 241.6 2 224.1C10.7 154 47.8 92.7 101.3 52c14.1-10.7 33.8-5.3 42.7 10l72 124.7zM256 336c14.6 0 28.2-3.9 40-10.7l72 124.8c8.8 15.3 3.7 35.1-12.6 41.9c-30.6 12.9-64.2 20-99.4 20s-68.9-7.1-99.4-20c-16.3-6.9-21.4-26.6-12.6-41.9l72-124.8c11.8 6.8 25.4 10.7 40 10.7zm224-80l-144 0c0-29.6-16.1-55.5-40-69.3L368 62c8.8-15.3 28.6-20.7 42.7-10c53.6 40.7 90.6 102 99.4 172.1c2.2 17.5-12.4 31.9-30 31.9zM256 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"],"chart-simple":[448,512,[],"e473","M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z"],"mars-stroke":[512,512,[9894],"f229","M376 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L370.3 96.4 345 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l25.4 25.4L307.8 159c-28.4-19.5-62.7-31-99.8-31c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l28.6-28.6L407 201c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-25.4-25.4 22.1-22.1L471 153c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H376zm88 48h0v0l0 0zM96 304a112 112 0 1 1 224 0A112 112 0 1 1 96 304z"],vial:[512,512,[129514],"f492","M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L28.1 342.6C10.1 360.6 0 385 0 410.5V416c0 53 43 96 96 96h5.5c25.5 0 49.9-10.1 67.9-28.1L448 205.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-32-32-96-96-32-32zM205.3 256L352 109.3 402.7 160l-96 96H205.3z"],gauge:[512,512,["dashboard","gauge-med","tachometer-alt-average"],"f624","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-16 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],"wand-magic-sparkles":[576,512,["magic-wand-sparkles"],"e2ca","M234.7 42.7L197 56.8c-3 1.1-5 4-5 7.2s2 6.1 5 7.2l37.7 14.1L248.8 123c1.1 3 4 5 7.2 5s6.1-2 7.2-5l14.1-37.7L315 71.2c3-1.1 5-4 5-7.2s-2-6.1-5-7.2L277.3 42.7 263.2 5c-1.1-3-4-5-7.2-5s-6.1 2-7.2 5L234.7 42.7zM46.1 395.4c-18.7 18.7-18.7 49.1 0 67.9l34.6 34.6c18.7 18.7 49.1 18.7 67.9 0L529.9 116.5c18.7-18.7 18.7-49.1 0-67.9L495.3 14.1c-18.7-18.7-49.1-18.7-67.9 0L46.1 395.4zM484.6 82.6l-105 105-23.3-23.3 105-105 23.3 23.3zM7.5 117.2C3 118.9 0 123.2 0 128s3 9.1 7.5 10.8L64 160l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L128 160l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L128 96 106.8 39.5C105.1 35 100.8 32 96 32s-9.1 3-10.8 7.5L64 96 7.5 117.2zm352 256c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 416l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 416l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 352l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 352l-56.5 21.2z"],e:[320,512,[101],"45","M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z"],"pen-clip":[512,512,["pen-alt"],"f305","M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z"],"bridge-circle-exclamation":[640,512,[],"e4ca","M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z"],user:[448,512,[128100,62144],"f007","M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z"],"school-circle-check":[640,512,[],"e56b","M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z"],dumpster:[576,512,[],"f793","M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0H428.5L402.9 32H304V160zm157.1 0h94c11.5 0 20.9-9.3 20.9-20.9c0-2.1-.3-4.1-.9-6.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l25.6 128zM32 192l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H448c0 17.7 14.3 32 32 32s32-14.3 32-32l20-160h12c17.7 0 32-14.3 32-32s-14.3-32-32-32h-4l4-32H32z"],"van-shuttle":[640,512,[128656,"shuttle-van"],"f5b6","M64 104v88h96V96H72c-4.4 0-8 3.6-8 8zm482 88L465.1 96H384v96H546zm-226 0V96H224v96h96zM592 384H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V104C0 64.2 32.2 32 72 32H192 352 465.1c18.9 0 36.8 8.3 49 22.8L625 186.5c9.7 11.5 15 26.1 15 41.2V336c0 26.5-21.5 48-48 48zm-64 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"],"building-user":[640,512,[],"e4da","M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h89.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM576 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM352 477.1c0 19.3 15.6 34.9 34.9 34.9H605.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H445.1c-51.4 0-93.1 41.7-93.1 93.1z"],"square-caret-left":[448,512,["caret-square-left"],"f191","M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z"],highlighter:[576,512,[],"f591","M315 315l158.4-215L444.1 70.6 229 229 315 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L420.6 8.4C428 2.9 437 0 446.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L334.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H224l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L128 320zM7 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H24c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z"],key:[512,512,[128273],"f084","M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V448h40c13.3 0 24-10.7 24-24V384h40c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zM376 96a40 40 0 1 1 0 80 40 40 0 1 1 0-80z"],bullhorn:[512,512,[128226,128363],"f0a1","M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75H192 160 64c-35.3 0-64 28.7-64 64v96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V352l8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V300.4c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4V32zm-64 76.7V240 371.3C357.2 317.8 280.5 288 200.7 288H192V192h8.7c79.8 0 156.5-29.8 215.3-83.3z"],globe:[512,512,[127760],"f0ac","M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z"],synagogue:[640,512,[128333],"f69b","M309.8 3.7c5.9-4.9 14.6-4.9 20.5 0l121 100.8C469.5 119.7 480 142.2 480 166V280.1 512H464 352V416c0-17.7-14.3-32-32-32s-32 14.3-32 32v96H176 160V280.1 166c0-23.7 10.5-46.3 28.8-61.5L309.8 3.7zM512 512V244.5l28.1-31.2c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3l63.8 70.9c7.9 8.8 12.3 20.3 12.3 32.1V448c0 35.3-28.7 64-64 64H512zM128 244.5V512H64c-35.3 0-64-28.7-64-64V316.3c0-11.9 4.4-23.3 12.3-32.1l63.8-70.9c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3L128 244.5zM327 124.3c-3.1-5.4-10.9-5.4-13.9 0l-15.9 28.1-32.3-.3c-6.2-.1-10.1 6.7-7 12.1L274.3 192l-16.4 27.8c-3.2 5.4 .7 12.1 7 12.1l32.3-.3L313 259.7c3.1 5.4 10.9 5.4 13.9 0l15.9-28.1 32.3 .3c6.2 .1 10.1-6.7 7-12.1L365.7 192l16.4-27.8c3.2-5.4-.7-12.1-7-12.1l-32.3 .3L327 124.3z"],"person-half-dress":[320,512,[],"e548","M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm8 352V128h6.9c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352h0zM58.2 182.3c19.9-33.1 55.3-53.5 93.8-54.3V384h0v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2z"],"road-bridge":[640,512,[],"e563","M352 0H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM480 200c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V224c0-13.3-10.7-24-24-24zm24 184c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V384zM480 40c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V64c0-13.3-10.7-24-24-24zM32 96H288v64H248v64h40v96c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V416c0-53-43-96-96-96V224H72V160H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm168 64H120v64h80V160z"],"location-arrow":[448,512,[],"f124","M429.6 92.1c4.9-11.9 2.1-25.6-7-34.7s-22.8-11.9-34.7-7l-352 144c-14.2 5.8-22.2 20.8-19.3 35.8s16.1 25.8 31.4 25.8H224V432c0 15.3 10.8 28.4 25.8 31.4s30-5.1 35.8-19.3l144-352z"],c:[384,512,[99],"43","M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z"],"tablet-button":[448,512,[],"f10a","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"building-lock":[576,512,[],"e4d6","M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h88.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-23.7 12.9-44.4 32-55.4V272c0-30.5 12.2-58.2 32-78.4V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32v48H432V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z"],"pizza-slice":[512,512,[],"f818","M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L110.4 80c.5 0 1.1 0 1.6 0c176.7 0 320 143.3 320 320c0 .5 0 1.1 0 1.6l44.4-11.8c20.8-5.5 36.3-24.7 34.7-47.5C498.5 159.5 352.5 13.5 169.7 .9zM399.8 410.2c.1-3.4 .2-6.8 .2-10.2c0-159.1-128.9-288-288-288c-3.4 0-6.8 .1-10.2 .2L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1L399.8 410.2zM176 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],"money-bill-wave":[576,512,[],"f53a","M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96zM64 352c35.3 0 64 28.7 64 64H64V352zm64-208c0 35.3-28.7 64-64 64V144h64zM512 304v64H448c0-35.3 28.7-64 64-64zM448 96h64v64c-35.3 0-64-28.7-64-64z"],"chart-area":[512,512,["area-chart"],"f1fe","M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm96 288H448c17.7 0 32-14.3 32-32V251.8c0-7.6-2.7-15-7.7-20.8l-65.8-76.8c-12.1-14.2-33.7-15-46.9-1.8l-21 21c-10 10-26.4 9.2-35.4-1.6l-39.2-47c-12.6-15.1-35.7-15.4-48.7-.6L135.9 215c-5.1 5.8-7.9 13.3-7.9 21.1v84c0 17.7 14.3 32 32 32z"],"house-flag":[640,512,[],"e50d","M480 0c-17.7 0-32 14.3-32 32V192 512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H512c0-17.7-14.3-32-32-32zM416 159L276.8 39.7c-12-10.3-29.7-10.3-41.7 0l-224 192C1 240.4-2.7 254.5 2 267.1S18.6 288 32 288H64V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v96c0 17.7 14.3 32 32 32h64.7l.2 0h-1V159z"],"person-circle-minus":[576,512,[],"e540","M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z"],ban:[512,512,[128683,"cancel"],"f05e","M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z"],"camera-rotate":[640,512,[],"e0d8","M213.1 64.8L202.7 96H128c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H437.3L426.9 64.8C420.4 45.2 402.1 32 381.4 32H258.6c-20.7 0-39 13.2-45.5 32.8zM448 256c0 8.8-7.2 16-16 16H355.3c-6.2 0-11.3-5.1-11.3-11.3c0-3 1.2-5.9 3.3-8L371 229c-13.6-13.4-31.9-21-51-21c-19.2 0-37.7 7.6-51.3 21.3L249 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l19.7-19.7C257.4 172.7 288 160 320 160c31.8 0 62.4 12.6 85 35l23.7-23.7c2.1-2.1 5-3.3 8-3.3c6.2 0 11.3 5.1 11.3 11.3V256zM192 320c0-8.8 7.2-16 16-16h76.7c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8L269 347c13.6 13.4 31.9 21 51 21c19.2 0 37.7-7.6 51.3-21.3L391 327c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-19.7 19.7C382.6 403.3 352 416 320 416c-31.8 0-62.4-12.6-85-35l-23.7 23.7c-2.1 2.1-5 3.3-8 3.3c-6.2 0-11.3-5.1-11.3-11.3V320z"],"spray-can-sparkles":[512,512,["air-freshener"],"f5d0","M96 32v96H224V32c0-17.7-14.3-32-32-32H128C110.3 0 96 14.3 96 32zm0 128c-53 0-96 43-96 96V464c0 26.5 21.5 48 48 48H272c26.5 0 48-21.5 48-48V256c0-53-43-96-96-96H96zm64 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM384 48c0-1.4-1-3-2.2-3.6L352 32 339.6 2.2C339 1 337.4 0 336 0s-3 1-3.6 2.2L320 32 290.2 44.4C289 45 288 46.6 288 48c0 1.4 1 3 2.2 3.6L320 64l12.4 29.8C333 95 334.6 96 336 96s3-1 3.6-2.2L352 64l29.8-12.4C383 51 384 49.4 384 48zm76.4 45.8C461 95 462.6 96 464 96s3-1 3.6-2.2L480 64l29.8-12.4C511 51 512 49.4 512 48c0-1.4-1-3-2.2-3.6L480 32 467.6 2.2C467 1 465.4 0 464 0s-3 1-3.6 2.2L448 32 418.2 44.4C417 45 416 46.6 416 48c0 1.4 1 3 2.2 3.6L448 64l12.4 29.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L448 224l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L448 256l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 256l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6c0-1.4-1-3-2.2-3.6L480 224l-12.4-29.8zM448 144c0-1.4-1-3-2.2-3.6L416 128 403.6 98.2C403 97 401.4 96 400 96s-3 1-3.6 2.2L384 128l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L384 160l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L416 160l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6z"],star:[576,512,[11088,61446],"f005","M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z"],repeat:[512,512,[128257],"f363","M0 224c0 17.7 14.3 32 32 32s32-14.3 32-32c0-53 43-96 96-96H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S320 19.1 320 32V64H160C71.6 64 0 135.6 0 224zm512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 53-43 96-96 96H192V352c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V448H352c88.4 0 160-71.6 160-160z"],cross:[384,512,[128327,10013],"f654","M176 0c-26.5 0-48 21.5-48 48v80H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h80V464c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V256h80c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H256V48c0-26.5-21.5-48-48-48H176z"],box:[448,512,[128230],"f466","M50.7 58.5L0 160H208V32H93.7C75.5 32 58.9 42.3 50.7 58.5zM240 160H448L397.3 58.5C389.1 42.3 372.5 32 354.3 32H240V160zm208 32H0V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192z"],"venus-mars":[640,512,[9892],"f228","M176 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM352 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H208v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C62.1 334.1 0 262.3 0 176C0 78.8 78.8 0 176 0s176 78.8 176 176zM271.9 360.6c19.3-10.1 36.9-23.1 52.1-38.4c20 18.5 46.7 29.8 76.1 29.8c61.9 0 112-50.1 112-112s-50.1-112-112-112c-7.2 0-14.3 .7-21.1 2c-4.9-21.5-13-41.7-24-60.2C369.3 66 384.4 64 400 64c37 0 71.4 11.4 99.8 31l20.6-20.6L487 41c-6.9-6.9-8.9-17.2-5.2-26.2S494.3 0 504 0H616c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L545 140.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176c-50.5 0-96-21.3-128.1-55.4z"],"arrow-pointer":[320,512,["mouse-pointer"],"f245","M0 55.2V426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320H297.9c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z"],maximize:[512,512,["expand-arrows-alt"],"f31e","M200 32H56C42.7 32 32 42.7 32 56V200c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l40-40 79 79-79 79L73 295c-6.9-6.9-17.2-8.9-26.2-5.2S32 302.3 32 312V456c0 13.3 10.7 24 24 24H200c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H456c13.3 0 24-10.7 24-24V312c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S209.7 32 200 32z"],"charging-station":[576,512,[],"f5e7","M96 0C60.7 0 32 28.7 32 64V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32s-14.3-32-32-32V304h16c22.1 0 40 17.9 40 40v32c0 39.8 32.2 72 72 72s72-32.2 72-72V252.3c32.5-10.2 56-40.5 56-76.3V144c0-8.8-7.2-16-16-16H544V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H480V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H432c-8.8 0-16 7.2-16 16v32c0 35.8 23.5 66.1 56 76.3V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V344c0-48.6-39.4-88-88-88H320V64c0-35.3-28.7-64-64-64H96zM216.9 82.7c6 4 8.5 11.5 6.3 18.3l-25 74.9H256c6.7 0 12.7 4.2 15 10.4s.5 13.3-4.6 17.7l-112 96c-5.5 4.7-13.4 5.1-19.3 1.1s-8.5-11.5-6.3-18.3l25-74.9H96c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7l112-96c5.5-4.7 13.4-5.1 19.3-1.1z"],shapes:[512,512,["triangle-circle-square"],"f61f","M315.4 15.5C309.7 5.9 299.2 0 288 0s-21.7 5.9-27.4 15.5l-96 160c-5.9 9.9-6.1 22.2-.4 32.2s16.3 16.2 27.8 16.2H384c11.5 0 22.2-6.2 27.8-16.2s5.5-22.3-.4-32.2l-96-160zM288 312V456c0 22.1 17.9 40 40 40H472c22.1 0 40-17.9 40-40V312c0-22.1-17.9-40-40-40H328c-22.1 0-40 17.9-40 40zM128 512a128 128 0 1 0 0-256 128 128 0 1 0 0 256z"],shuffle:[512,512,[128256,"random"],"f074","M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160H352c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96h32V64c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V416H352c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8h32V320c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z"],"person-running":[448,512,[127939,"running"],"f70c","M320 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM125.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L137.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L238 299l30.9-82.4 5.1 12.3C289 264.7 323.9 288 362.7 288H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H362.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L57.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM91.2 352H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h69.6c19 0 36.2-11.2 43.9-28.5L157 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L91.2 352z"],"mobile-retro":[320,512,[],"e527","M0 64C0 28.7 28.7 0 64 0H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm64 96v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 352a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM128 48c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H128z"],"grip-lines-vertical":[192,512,[],"f7a5","M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64z"],spider:[512,512,[128375],"f717","M158.4 32.6c4.8-12.4-1.4-26.3-13.8-31s-26.3 1.4-31 13.8L81.1 100c-7.9 20.7-3 44.1 12.7 59.7l57.4 57.4L70.8 190.3c-2.4-.8-4.3-2.7-5.1-5.1L46.8 128.4C42.6 115.8 29 109 16.4 113.2S-3 131 1.2 143.6l18.9 56.8c5.6 16.7 18.7 29.8 35.4 35.4L116.1 256 55.6 276.2c-16.7 5.6-29.8 18.7-35.4 35.4L1.2 368.4C-3 381 3.8 394.6 16.4 398.8s26.2-2.6 30.4-15.2l18.9-56.8c.8-2.4 2.7-4.3 5.1-5.1l80.4-26.8L93.7 352.3C78.1 368 73.1 391.4 81.1 412l32.5 84.6c4.8 12.4 18.6 18.5 31 13.8s18.5-18.6 13.8-31l-32.5-84.6c-1.1-3-.4-6.3 1.8-8.5L160 353.9c1 52.1 43.6 94.1 96 94.1s95-41.9 96-94.1l32.3 32.3c2.2 2.2 2.9 5.6 1.8 8.5l-32.5 84.6c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8L430.9 412c7.9-20.7 3-44.1-12.7-59.7l-57.4-57.4 80.4 26.8c2.4 .8 4.3 2.7 5.1 5.1l18.9 56.8c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-18.9-56.8c-5.6-16.7-18.7-29.8-35.4-35.4L395.9 256l60.5-20.2c16.7-5.6 29.8-18.7 35.4-35.4l18.9-56.8c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-18.9 56.8c-.8 2.4-2.7 4.3-5.1 5.1l-80.4 26.8 57.4-57.4c15.6-15.6 20.6-39 12.7-59.7L398.4 15.4C393.6 3 379.8-3.2 367.4 1.6s-18.5 18.6-13.8 31l32.5 84.6c1.1 3 .4 6.3-1.8 8.5L336 174.1V160c0-31.8-18.6-59.3-45.5-72.2c-9.1-4.4-18.5 3.3-18.5 13.4V112c0 8.8-7.2 16-16 16s-16-7.2-16-16V101.2c0-10.1-9.4-17.7-18.5-13.4C194.6 100.7 176 128.2 176 160v14.1l-48.3-48.3c-2.2-2.2-2.9-5.6-1.8-8.5l32.5-84.6z"],"hands-bound":[640,512,[],"e4f9","M96 32C96 14.3 81.7 0 64 0S32 14.3 32 32V96v59.1 .7V192v21.9c0 14.2 5.1 27.9 14.3 38.7L131.6 352H128c-13.3 0-24 10.7-24 24s10.7 24 24 24h32H288h64H480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24h-3.6l85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7V192 155.8v-.7V96 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V96v48.8l-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8c-9.7-5.7-12.1-18.7-5.1-27.5L473 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C361 209.7 352 233.4 352 258.1V320v32H288V320 258.1c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2s-15.2 30.9-4.4 44.5l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5c-8.1 4.8-18.6 2.7-24.2-4.8L96 144.8V96 32zm64 448v32H288V480h64v32H480V480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H480 352 288 160 128c-13.3 0-24 10.7-24 24s10.7 24 24 24h32z"],"file-invoice-dollar":[384,512,[],"f571","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16v17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1 0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1V440c0 8.8-7.2 16-16 16s-16-7.2-16-16V422.2c-11.2-2.1-21.7-5.7-30.9-8.9l0 0 0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4l0 0 0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7V232c0-8.8 7.2-16 16-16z"],"plane-circle-exclamation":[640,512,[],"e556","M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z"],"x-ray":[512,512,[],"f497","M0 64C0 46.3 14.3 32 32 32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V96C14.3 96 0 81.7 0 64zM256 96c-8.8 0-16 7.2-16 16v32H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48H128c-8.8 0-16 7.2-16 16s7.2 16 16 16H240v70.6L189.1 307c-5.2-2-10.6-3-16.2-3h-2.1c-23.6 0-42.8 19.2-42.8 42.8c0 9.6 3.2 18.9 9.1 26.4l18.2 23.2c9.7 12.4 24.6 19.6 40.3 19.6H316.4c15.7 0 30.6-7.2 40.3-19.6l18.2-23.2c5.9-7.5 9.1-16.8 9.1-26.4c0-23.6-19.2-42.8-42.8-42.8H339c-5.5 0-11 1-16.2 3L272 326.6V256H384c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V176h80c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16zM208 352a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm80 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z"],"spell-check":[576,512,[],"f891","M112 0C99.1 0 87.4 7.8 82.5 19.7l-66.7 160-13.3 32c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L66.7 224h90.7l5.1 12.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-13.3-32-66.7-160C136.6 7.8 124.9 0 112 0zm18.7 160H93.3L112 115.2 130.7 160zM256 32v96 96c0 17.7 14.3 32 32 32h80c44.2 0 80-35.8 80-80c0-23.1-9.8-43.8-25.4-58.4c6-11.2 9.4-24 9.4-37.6c0-44.2-35.8-80-80-80H288c-17.7 0-32 14.3-32 32zm96 64H320V64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-32 64h32 16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320V160zM566.6 310.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L352 434.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l192-192z"],slash:[640,512,[],"f715","M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z"],"computer-mouse":[384,512,[128433,"mouse"],"f8cc","M0 192H176V0H160C71.6 0 0 71.6 0 160v32zm0 32V352c0 88.4 71.6 160 160 160h64c88.4 0 160-71.6 160-160V224H192 0zm384-32V160C384 71.6 312.4 0 224 0H208V192H384z"],"arrow-right-to-bracket":[512,512,["sign-in"],"f090","M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z"],"shop-slash":[640,512,["store-alt-slash"],"e070","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43V224H512V376L384 275.7V224H320v1.5L277.2 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L74.1 32.8 38.8 5.1zM36.8 192h85L21 112.5 6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM320 384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V398.5l-64-50.4V384zM544 512l-.3 0h.6l-.3 0z"],server:[512,512,[],"f233","M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z"],"virus-covid-slash":[640,512,[],"e4a9","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c11.4-19.5 19.1-41.4 22.3-64.7H528v16c0 13.3 10.7 24 24 24s24-10.7 24-24V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v16H494.4c-4.2-30.7-16.3-58.8-34.1-82.3L484 125.9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L472.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L450.1 92l-23.8 23.8C402.8 97.9 374.7 85.8 344 81.6V48h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h16V81.6c-30.7 4.2-58.8 16.3-82.3 34.1L189.9 92l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L134.1 79.8 38.8 5.1zm362.5 407L149.2 213.5c-1.5 6-2.7 12.2-3.5 18.5H112V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V280h33.6c4.2 30.7 16.3 58.8 34.1 82.3L156 386.1l-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L189.9 420l23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1V464H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2z"],"shop-lock":[640,512,[],"e4a5","M36.8 192H449.6c20.2-19.8 47.9-32 78.4-32c30.5 0 58.1 12.2 78.3 31.9c18.9-1.6 33.7-17.4 33.7-36.7c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM384 224H320V384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 352 224zm144 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z"],"hourglass-start":[384,512,["hourglass-1"],"f251","M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM288 437v11H96V437c0-25.5 10.1-49.9 28.1-67.9L192 301.3l67.9 67.9c18 18 28.1 42.4 28.1 67.9z"],"blender-phone":[576,512,[],"f6b6","M224 352L196.8 52.3C194.2 24.2 216.3 0 244.6 0H534.1c21.1 0 36.4 20.1 30.9 40.4L558.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H549.8l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H523.6l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L480 352H224zm-16 32H496c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM147.5 30.7c10.8 6.7 15.3 21 10.6 33.4l-22 57.8c-4.2 10.9-14.5 17.6-25.3 16.4l-33.3-3.6c-13.6 42.2-13.6 88.4 0 130.7l33.3-3.6c10.9-1.2 21.2 5.5 25.3 16.4l22 57.8c4.7 12.4 .2 26.7-10.6 33.4l-44 27.2c-9.7 6-21.9 4.2-29.8-4.3C-24.6 286-24.6 114 73.7 7.8C81.6-.7 93.8-2.5 103.5 3.5l44 27.2z"],"building-wheat":[640,512,[],"e4db","M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm384 80v16c0 44.2-35.8 80-80 80H544V272c0-44.2 35.8-80 80-80h16zm0 128c0 44.2-35.8 80-80 80H544V384c0-44.2 35.8-80 80-80h16v16zm0 112c0 44.2-35.8 80-80 80H544V496c0-44.2 35.8-80 80-80h16v16zM512 496v16H496c-44.2 0-80-35.8-80-80V416h16c44.2 0 80 35.8 80 80zm0-96H496c-44.2 0-80-35.8-80-80V304h16c44.2 0 80 35.8 80 80v16zm0-128v16H496c-44.2 0-80-35.8-80-80V192h16c44.2 0 80 35.8 80 80zM528 32c13.3 0 24 10.7 24 24V160c0 13.3-10.7 24-24 24s-24-10.7-24-24V56c0-13.3 10.7-24 24-24zm96 64v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24s24 10.7 24 24zM456 72c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24z"],"person-breastfeeding":[448,512,[],"e53a","M224 0a80 80 0 1 1 0 160A80 80 0 1 1 224 0zM436.8 382.8L373.5 462c-16.6 20.7-46.8 24.1-67.5 7.5c-17.6-14.1-22.7-38.1-13.5-57.7l-.8-.1c-38.9-5.6-74.3-25.1-99.7-54.8V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L27.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7c-4.9-2.8-9.2-6.4-12.6-10.6c-4.6-5.4-7.8-11.7-9.6-18.4c-3.3-12-1.9-25.2 4.8-36.6c.6-1.1 1.3-2.2 2-3.2L75.6 256.1c26.7-40.1 71.7-64.1 119.8-64.1h75.2c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4c2.9 6.7 4.3 13.8 4 20.8c-.3 10.6-4.2 21-11.2 29.4zM320 332a44 44 0 1 0 -88 0 44 44 0 1 0 88 0z"],"right-to-bracket":[512,512,["sign-in-alt"],"f2f6","M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM352 416l64 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z"],venus:[384,512,[9792],"f221","M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V384H128c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V349.1z"],passport:[448,512,[],"f5ab","M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM183 278.8c-27.9-13.2-48.4-39.4-53.7-70.8h39.1c1.6 30.4 7.7 53.8 14.6 70.8zm41.3 9.2l-.3 0-.3 0c-2.4-3.5-5.7-8.9-9.1-16.5c-6-13.6-12.4-34.3-14.2-63.5h47.1c-1.8 29.2-8.1 49.9-14.2 63.5c-3.4 7.6-6.7 13-9.1 16.5zm40.7-9.2c6.8-17.1 12.9-40.4 14.6-70.8h39.1c-5.3 31.4-25.8 57.6-53.7 70.8zM279.6 176c-1.6-30.4-7.7-53.8-14.6-70.8c27.9 13.2 48.4 39.4 53.7 70.8H279.6zM223.7 96l.3 0 .3 0c2.4 3.5 5.7 8.9 9.1 16.5c6 13.6 12.4 34.3 14.2 63.5H200.5c1.8-29.2 8.1-49.9 14.2-63.5c3.4-7.6 6.7-13 9.1-16.5zM183 105.2c-6.8 17.1-12.9 40.4-14.6 70.8H129.3c5.3-31.4 25.8-57.6 53.7-70.8zM352 192A128 128 0 1 0 96 192a128 128 0 1 0 256 0zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z"],"heart-pulse":[512,512,["heartbeat"],"f21e","M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4h87c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31H476.3c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240h-132c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9H16c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1v5.8c0 16.9-2.8 33.5-8.3 49.1z"],"people-carry-box":[640,512,["people-carry"],"f4ce","M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm64 193.7v65.1l51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3l-14.3-85.9L66.8 320C54.8 308 48 291.7 48 274.7V186.6c0-32.4 26.2-58.6 58.6-58.6c24.1 0 46.5 12 59.9 32l47.4 71.1 10.1 5V160c0-17.7 14.3-32 32-32H384c17.7 0 32 14.3 32 32v76.2l10.1-5L473.5 160c13.3-20 35.8-32 59.9-32c32.4 0 58.6 26.2 58.6 58.6v88.1c0 17-6.7 33.3-18.7 45.3l-79.4 79.4-14.3 85.9c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l15.2-90.9c1.6-9.9 6.3-19 13.4-26.1l51-51V241.7l-19 28.5c-4.6 7-11 12.6-18.5 16.3l-59.6 29.8c-2.4 1.3-4.9 2.2-7.6 2.8c-2.6 .6-5.3 .9-7.9 .8H256.7c-2.5 .1-5-.2-7.5-.7c-2.9-.6-5.6-1.6-8.1-3l-59.5-29.8c-7.5-3.7-13.8-9.4-18.5-16.3l-19-28.5zM2.3 468.1L50.1 348.6l49.2 49.2-37.6 94c-6.6 16.4-25.2 24.4-41.6 17.8S-4.3 484.5 2.3 468.1zM512 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm77.9 348.6l47.8 119.5c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-37.6-94 49.2-49.2z"],"temperature-high":[512,512,[],"f769","M416 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 128A96 96 0 1 0 416 0a96 96 0 1 0 0 192zM96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.2 32 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z"],microchip:[512,512,[],"f2db","M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64c-35.3 0-64 28.7-64 64H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64c0 35.3 28.7 64 64 64v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448c35.3 0 64-28.7 64-64h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V280h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V176h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448c0-35.3-28.7-64-64-64V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H280V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H176V24zM160 128H352c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm192 32H160V352H352V160z"],crown:[576,512,[128081],"f521","M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6H426.6c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z"],"weight-hanging":[512,512,[],"f5cd","M224 96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm122.5 32c3.5-10 5.5-20.8 5.5-32c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32H120c-22 0-41.2 15-46.6 36.4l-72 288c-3.6 14.3-.4 29.5 8.7 41.2S33.2 512 48 512H464c14.8 0 28.7-6.8 37.8-18.5s12.3-26.8 8.7-41.2l-72-288C433.2 143 414 128 392 128H346.5z"],"xmarks-lines":[640,512,[],"e59a","M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55L41 167c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z"],"file-prescription":[384,512,[],"f572","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM104 196h72c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6H124v44c0 11-9 20-20 20s-20-9-20-20V296 216c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20H124v40h52z"],"weight-scale":[512,512,["weight"],"f496","M128 176a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zM391.8 64C359.5 24.9 310.7 0 256 0S152.5 24.9 120.2 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H391.8zM296 224c0-10.6-4.1-20.2-10.9-27.4l33.6-78.3c3.5-8.1-.3-17.5-8.4-21s-17.5 .3-21 8.4L255.7 184c-22 .1-39.7 18-39.7 40c0 22.1 17.9 40 40 40s40-17.9 40-40z"],"user-group":[640,512,[128101,"user-friends"],"f500","M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM609.3 512H471.4c5.4-9.4 8.6-20.3 8.6-32v-8c0-60.7-27.1-115.2-69.8-151.8c2.4-.1 4.7-.2 7.1-.2h61.4C567.8 320 640 392.2 640 481.3c0 17-13.8 30.7-30.7 30.7zM432 256c-31 0-59-12.6-79.3-32.9C372.4 196.5 384 163.6 384 128c0-26.8-6.6-52.1-18.3-74.3C384.3 40.1 407.2 32 432 32c61.9 0 112 50.1 112 112s-50.1 112-112 112z"],"arrow-up-a-z":[576,512,["sort-alpha-up"],"f15e","M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z"],"chess-knight":[448,512,[9822],"f441","M96 48L82.7 61.3C70.7 73.3 64 89.5 64 106.5V238.9c0 10.7 5.3 20.7 14.2 26.6l10.6 7c14.3 9.6 32.7 10.7 48.1 3l3.2-1.6c2.6-1.3 5-2.8 7.3-4.5l49.4-37c6.6-5 15.7-5 22.3 0c10.2 7.7 9.9 23.1-.7 30.3L90.4 350C73.9 361.3 64 380 64 400H384l28.9-159c2.1-11.3 3.1-22.8 3.1-34.3V192C416 86 330 0 224 0H83.8C72.9 0 64 8.9 64 19.8c0 7.5 4.2 14.3 10.9 17.7L96 48zm24 68a20 20 0 1 1 40 0 20 20 0 1 1 -40 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512H409.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L384 432H64L22.6 473.4z"],"face-laugh-squint":[512,512,["laugh-squint"],"f59b","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zm36.7-199.4l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 125.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z"],wheelchair:[512,512,[],"f193","M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM120.5 247.2c12.4-4.7 18.7-18.5 14-30.9s-18.5-18.7-30.9-14C43.1 225.1 0 283.5 0 352c0 88.4 71.6 160 160 160c61.2 0 114.3-34.3 141.2-84.7c6.2-11.7 1.8-26.2-9.9-32.5s-26.2-1.8-32.5 9.9C240 440 202.8 464 160 464C98.1 464 48 413.9 48 352c0-47.9 30.1-88.8 72.5-104.8zM259.8 176l-1.9-9.7c-4.5-22.3-24-38.3-46.8-38.3c-30.1 0-52.7 27.5-46.8 57l23.1 115.5c6 29.9 32.2 51.4 62.8 51.4h5.1c.4 0 .8 0 1.3 0h94.1c6.7 0 12.6 4.1 15 10.4L402 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9H282.2l-9.6-48H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H259.8z"],"circle-arrow-up":[512,512,["arrow-circle-up"],"f0aa","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM385 231c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V193.9l-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 119c9.4-9.4 24.6-9.4 33.9 0L385 231z"],"toggle-on":[576,512,[],"f205","M192 64C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192s-86-192-192-192H192zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z"],"person-walking":[320,512,[128694,"walking"],"f554","M160 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM126.5 199.3c-1 .4-1.9 .8-2.9 1.2l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L281 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L247 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5zM68.7 398l25-62.4c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L68.7 398z"],l:[320,512,[108],"4c","M64 32c17.7 0 32 14.3 32 32V416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32z"],fire:[448,512,[128293],"f06d","M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z"],"bed-pulse":[640,512,["procedures"],"f487","M483.2 9.6L524 64h92c13.3 0 24 10.7 24 24s-10.7 24-24 24H512c-7.6 0-14.7-3.6-19.2-9.6L468.7 70.3l-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L339.2 112H216c-13.3 0-24-10.7-24-24s10.7-24 24-24H352c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5C445.9 6.2 453.2 1 461.6 .1s16.6 2.7 21.6 9.5zM320 160h12.7l20.7 31.1c11.2 16.8 30.6 26.3 50.7 24.8s37.9-13.7 46.5-32L461.9 160H544c53 0 96 43 96 96V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V352H288V192c0-17.7 14.3-32 32-32zm-144 0a80 80 0 1 1 0 160 80 80 0 1 1 0-160z"],"shuttle-space":[640,512,["space-shuttle"],"f197","M130 480c40.6 0 80.4-11 115.2-31.9L352 384l-224 0 0 96h2zM352 128L245.2 63.9C210.4 43 170.6 32 130 32h-2v96l224 0zM96 128l0-96H80C53.5 32 32 53.5 32 80v48h8c-22.1 0-40 17.9-40 40v16V328v16c0 22.1 17.9 40 40 40H32v48c0 26.5 21.5 48 48 48H96l0-96h8c26.2 0 49.4-12.6 64-32H456c69.3 0 135-22.7 179.2-81.6c6.4-8.5 6.4-20.3 0-28.8C591 182.7 525.3 160 456 160H168c-14.6-19.4-37.8-32-64-32l-8 0zM512 243.6v24.9c0 19.6-15.9 35.6-35.6 35.6c-2.5 0-4.4-2-4.4-4.4V212.4c0-2.5 2-4.4 4.4-4.4c19.6 0 35.6 15.9 35.6 35.6z"],"face-laugh":[512,512,["laugh"],"f599","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"folder-open":[576,512,[128194,128449,61717],"f07c","M88.7 223.8L0 375.8V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H416c35.3 0 64 28.7 64 64v32H144c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224H544c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480H32c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z"],"heart-circle-plus":[576,512,[],"e500","M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z"],"code-fork":[448,512,[],"e13b","M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3V192c0 17.7 14.3 32 32 32H304c17.7 0 32-14.3 32-32V153.3C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V192c0 53-43 96-96 96H256v70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V288H144c-53 0-96-43-96-96V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM248 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z"],city:[640,512,[127961],"f64f","M480 48c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48V96H224V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V96H112V24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144v96V464c0 26.5 21.5 48 48 48H304h32 96H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H480V48zm96 320v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM240 416H208c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zM128 400c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM560 256c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32zM256 176v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM112 160c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32zM256 304c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM112 320H80c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zm304-48v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM400 64c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h32zm16 112v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z"],"microphone-lines":[384,512,[127897,"microphone-alt"],"f3c9","M96 96V256c0 53 43 96 96 96s96-43 96-96H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V192H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96S96 43 96 96zM320 240v16c0 70.7-57.3 128-128 128s-128-57.3-128-128V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24z"],"pepper-hot":[512,512,[127798],"f816","M428.3 3c11.6-6.4 26.2-2.3 32.6 9.3l4.8 8.7c19.3 34.7 19.8 75.7 3.4 110C495.8 159.6 512 197.9 512 240c0 18.5-3.1 36.3-8.9 52.8c-6.1 17.3-28.5 16.3-36.8-.1l-11.7-23.4c-4.1-8.1-12.4-13.3-21.5-13.3H360c-13.3 0-24-10.7-24-24V152c0-13.3-10.7-24-24-24l-17.1 0c-21.3 0-30-23.9-10.8-32.9C304.7 85.4 327.7 80 352 80c28.3 0 54.8 7.3 77.8 20.2c5.5-18.2 3.7-38.4-6-55.8L419 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zM171.2 345.5L264 160l40 0v80c0 26.5 21.5 48 48 48h76.2l23.9 47.8C372.3 443.9 244.3 512 103.2 512H44.4C19.9 512 0 492.1 0 467.6c0-20.8 14.5-38.8 34.8-43.3l49.8-11.1c37.6-8.4 69.5-33.2 86.7-67.7z"],unlock:[448,512,[128275],"f09c","M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H144V144z"],"colon-sign":[384,512,[],"e140","M255 39.8c4.3-17.1-6.1-34.5-23.3-38.8S197.2 7.1 193 24.2L181.9 68.6C96.1 87.8 32 164.4 32 256c0 58.1 25.8 110.2 66.7 145.4L81 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l13-52.1c9 3.4 18.4 6.2 28 8.2L177 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l10.4-41.4c33.4-4.4 64.1-17.4 89.8-36.7c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-10.2 7.7-21.7 13.9-34 18.3L321 160c9.4-.3 18.5-4.7 24.6-12.8c10.6-14.1 7.8-34.2-6.4-44.8c-1.1-.8-2.2-1.6-3.3-2.4L351 39.8c4.3-17.1-6.1-34.5-23.3-38.8S293.2 7.1 289 24.2L277.2 71.5c-9.3-2.7-18.8-4.6-28.6-5.9L255 39.8zM163.2 143.3L117.3 326.8C103.9 306.5 96 282.2 96 256c0-48.7 27.2-91 67.2-112.7zm8.6 229.5l61.1-244.6c9.9 .7 19.5 2.5 28.7 5.3l-62 248.1c-9.7-1.9-19-4.8-27.8-8.8z"],headset:[512,512,[],"f590","M256 48C141.1 48 48 141.1 48 256v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V256C0 114.6 114.6 0 256 0S512 114.6 512 256V400.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24H240c-26.5 0-48-21.5-48-48s21.5-48 48-48h32c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40V256c0-114.9-93.1-208-208-208zM144 208h16c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V272c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64v48c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V240c0-17.7 14.3-32 32-32h16z"],"store-slash":[640,512,[],"e071","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68V384 252.6c-4 1-8 1.8-12.3 2.3l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V350.9L301.2 210.7c7-4.4 13.3-9.7 18.8-15.7c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4L522.3 13.1C517.2 5 508.1 0 498.4 0H141.6c-9.7 0-18.8 5-23.9 13.1l-22.7 36L38.8 5.1zM514.9 501.7L365.5 384H160V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H480c12.9 0 24.8-3.8 34.9-10.3zM155.3 218.4L48.9 134.5c-6.1 40.6 19.5 82.8 63.3 88.7c4 .5 8.1 .8 12.1 .8c11 0 21.4-2 31-5.6z"],"road-circle-xmark":[640,512,[],"e566","M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z"],"user-minus":[640,512,[],"f503","M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM472 200H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H472c-13.3 0-24-10.7-24-24s10.7-24 24-24z"],"mars-stroke-up":[320,512,[9896,"mars-stroke-v"],"f22a","M148.7 4.7c6.2-6.2 16.4-6.2 22.6 0l64 64c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9H184v24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H184v24c0 .6 0 1.2-.1 1.8c77 11.6 136.1 78 136.1 158.2c0 88.4-71.6 160-160 160S0 440.4 0 352c0-80.2 59.1-146.7 136.1-158.2c0-.6-.1-1.2-.1-1.8V168H104c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V96H96c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l64-64zM256 352A96 96 0 1 0 64 352a96 96 0 1 0 192 0z"],"champagne-glasses":[640,512,[129346,"glass-cheers"],"f79f","M155.6 17.3C163 3 179.9-3.6 195 1.9L320 47.5l125-45.6c15.1-5.5 32 1.1 39.4 15.4l78.8 152.9c28.8 55.8 10.3 122.3-38.5 156.6L556.1 413l41-15c16.6-6 35 2.5 41 19.1s-2.5 35-19.1 41l-71.1 25.9L476.8 510c-16.6 6.1-35-2.5-41-19.1s2.5-35 19.1-41l41-15-31.3-86.2c-59.4 5.2-116.2-34-130-95.2L320 188.8l-14.6 64.7c-13.8 61.3-70.6 100.4-130 95.2l-31.3 86.2 41 15c16.6 6 25.2 24.4 19.1 41s-24.4 25.2-41 19.1L92.2 484.1 21.1 458.2c-16.6-6.1-25.2-24.4-19.1-41s24.4-25.2 41-19.1l41 15 31.3-86.2C66.5 292.5 48.1 226 76.9 170.2L155.6 17.3zm44 54.4l-27.2 52.8L261.6 157l13.1-57.9L199.6 71.7zm240.9 0L365.4 99.1 378.5 157l89.2-32.5L440.5 71.7z"],clipboard:[384,512,[128203],"f328","M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM112 192H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],"house-circle-exclamation":[640,512,[],"e50a","M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z"],"file-arrow-up":[384,512,["file-upload"],"f574","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24V305.9l-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31V408z"],wifi:[640,512,["wifi-3","wifi-strong"],"f1eb","M54.2 202.9C123.2 136.7 216.8 96 320 96s196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32S90.3 79.5 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9zM320 256c56.8 0 108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c39.5-34.9 91.3-56 148.2-56zm64 160a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z"],bath:[512,512,[128705,"bathtub"],"f2cd","M96 77.3c0-7.3 5.9-13.3 13.3-13.3c3.5 0 6.9 1.4 9.4 3.9l14.9 14.9C130 91.8 128 101.7 128 112c0 19.9 7.2 38 19.2 52c-5.3 9.2-4 21.1 3.8 29c9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9c-7.9-7.9-19.8-9.1-29-3.8C246 39.2 227.9 32 208 32c-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0C66.6 0 32 34.6 32 77.3V256c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H96V77.3zM32 352v16c0 28.4 12.4 54 32 71.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V464H384v16c0 17.7 14.3 32 32 32s32-14.3 32-32V439.6c19.6-17.6 32-43.1 32-71.6V352H32z"],underline:[448,512,[],"f0cd","M16 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H128V224c0 53 43 96 96 96s96-43 96-96V96H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V224c0 88.4-71.6 160-160 160s-160-71.6-160-160V96H48C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32z"],"user-pen":[640,512,["user-edit"],"f4ff","M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H322.8c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7l40.3-40.3c-32.1-31-75.7-50.1-123.9-50.1H178.3zm435.5-68.3c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z"],signature:[640,512,[],"f5b7","M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32v7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92v71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3V128c0-53-43-96-96-96s-96 43-96 96v32c0 17.7 14.3 32 32 32s32-14.3 32-32V128zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5V335.6c0-14.1 9.3-26.6 22.8-30.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24H64.3c-.2-2.8-.3-5.6-.3-8.5V368H24zm592 48c13.3 0 24-10.7 24-24s-10.7-24-24-24H305.9c-6.7 16.3-14.2 32.3-22.3 48H616z"],stroopwafel:[512,512,[],"f551","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM312.6 63.7c-6.2-6.2-16.4-6.2-22.6 0L256 97.6 222.1 63.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l33.9 33.9-45.3 45.3-56.6-56.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l56.6 56.6-45.3 45.3L86.3 199.4c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L97.6 256 63.7 289.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 45.3 45.3-56.6 56.6c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56.6-56.6 45.3 45.3-33.9 33.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L256 414.4l33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 45.3-45.3 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 45.3-45.3 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L414.4 256l33.9-33.9c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-33.9 33.9-45.3-45.3 56.6-56.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-56.6 56.6-45.3-45.3 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6zM142.9 256l45.3-45.3L233.4 256l-45.3 45.3L142.9 256zm67.9 67.9L256 278.6l45.3 45.3L256 369.1l-45.3-45.3zM278.6 256l45.3-45.3L369.1 256l-45.3 45.3L278.6 256zm22.6-67.9L256 233.4l-45.3-45.3L256 142.9l45.3 45.3z"],bold:[384,512,[],"f032","M0 64C0 46.3 14.3 32 32 32H80 96 224c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128H96 80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V256 96H32C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64H112V224H224zM112 288V416H256c35.3 0 64-28.7 64-64s-28.7-64-64-64H224 112z"],"anchor-lock":[640,512,[],"e4ad","M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8 0 15.9-.6 23.6-1.7c-4.8-9-7.6-19.3-7.6-30.3V446.7c-5.2 .9-10.5 1.3-16 1.3H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z"],"building-ngo":[384,512,[],"e4d7","M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM168 64h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H184v64h16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v24c0 13.3-10.7 24-24 24H176c-13.3 0-24-10.7-24-24V80c0-8.8 7.2-16 16-16zM304 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8-7.2-16-16-16zm-48 16c0-26.5 21.5-48 48-48s48 21.5 48 48v32c0 26.5-21.5 48-48 48s-48-21.5-48-48V112zM61.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4L64 132.8V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4z"],"manat-sign":[384,512,[],"e1d5","M192 32c-17.7 0-32 14.3-32 32V98.7C69.2 113.9 0 192.9 0 288V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-59.6 40.8-109.8 96-124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V164c55.2 14.2 96 64.3 96 124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-95.1-69.2-174.1-160-189.3V64c0-17.7-14.3-32-32-32z"],"not-equal":[448,512,[],"f53e","M369.8 37.4c14.7 9.8 18.7 29.7 8.9 44.4L337.1 144H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H294.5l-64 96H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H187.8l-65.2 97.7c-9.8 14.7-29.7 18.7-44.4 8.9s-18.7-29.7-8.9-44.4L110.9 368H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H153.5l64-96H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H260.2l65.2-97.7c9.8-14.7 29.7-18.7 44.4-8.9z"],"border-top-left":[448,512,["border-style"],"f853","M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336c0-8.8 7.2-16 16-16l336 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32C35.8 32 0 67.8 0 112L0 448zm160 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-96 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"map-location-dot":[576,512,["map-marked-alt"],"f5a0","M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152V422.8c0 9.8-6 18.6-15.1 22.3L416 503V200.4zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6V451.8L32.9 502.7C17.1 509 0 497.4 0 480.4V209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77V504.3L192 449.4V255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z"],jedi:[576,512,[],"f669","M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9 0 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5C370.6 435.2 416 382.9 416 320c0-37-15.7-70.4-40.8-93.7c-7-6.5-6.5-18.6 1-24.4C410.1 175.5 432 134.3 432 88c0-16.8-2.9-33-8.2-48c-4.6-13 10.2-30 21.4-22c53.5 38 92.7 94.8 107.8 160.7c.5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9h26c3.4 0 6.2 2.6 6.3 6c.1 3.3 .2 6.6 .2 10c0 17.5-1.7 34.7-4.8 51.3c-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9H526c4.6 0 7.7 4.8 5.7 9C487.2 450.5 394.8 512 288 512S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9H64.5c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3C17.7 274.7 16 257.5 16 240c0-3.3 .1-6.7 .2-10c.1-3.4 2.9-6 6.3-6h26c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9C38.1 112.8 77.3 56 130.8 18c11.3-8 26 8.9 21.4 22c-5.3 15-8.2 31.2-8.2 48c0 46.3 21.9 87.5 55.8 113.9c7.5 5.8 8 17.9 1 24.4C175.7 249.6 160 283 160 320c0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z"],"square-poll-vertical":[448,512,["poll"],"f681","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 192c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm64-64c0-17.7 14.3-32 32-32s32 14.3 32 32V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V160zM320 288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32z"],"mug-hot":[512,512,[9749],"f7b6","M88 0C74.7 0 64 10.7 64 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C120.5 112.3 128 119.9 128 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C119.5 47.7 112 40.1 112 24c0-13.3-10.7-24-24-24zM32 192c-17.7 0-32 14.3-32 32V416c0 53 43 96 96 96H288c53 0 96-43 96-96h16c61.9 0 112-50.1 112-112s-50.1-112-112-112H352 32zm352 64h16c26.5 0 48 21.5 48 48s-21.5 48-48 48H384V256zM224 24c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C232.5 112.3 240 119.9 240 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C231.5 47.7 224 40.1 224 24z"],"car-battery":[512,512,["battery-car"],"f5df","M80 96c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32h16c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64l16 0zm304 96c0-8.8-7.2-16-16-16s-16 7.2-16 16v32H320c-8.8 0-16 7.2-16 16s7.2 16 16 16h32v32c0 8.8 7.2 16 16 16s16-7.2 16-16V256h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H384V192zM80 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16z"],gift:[512,512,[127873],"f06b","M190.5 68.8L225.3 128H224 152c-22.1 0-40-17.9-40-40s17.9-40 40-40h2.2c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H438.4c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88h-2.2c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0H152C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40H288h-1.3l34.8-59.2C329.1 55.9 342.9 48 357.8 48H360c22.1 0 40 17.9 40 40zM32 288V464c0 26.5 21.5 48 48 48H224V288H32zM288 512H432c26.5 0 48-21.5 48-48V288H288V512z"],"dice-two":[448,512,[9857],"f528","M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM352 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"chess-queen":[512,512,[9819],"f445","M256 0a56 56 0 1 1 0 112A56 56 0 1 1 256 0zM134.1 143.8c3.3-13 15-23.8 30.2-23.8c12.3 0 22.6 7.2 27.7 17c12 23.2 36.2 39 64 39s52-15.8 64-39c5.1-9.8 15.4-17 27.7-17c15.3 0 27 10.8 30.2 23.8c7 27.8 32.2 48.3 62.1 48.3c10.8 0 21-2.7 29.8-7.4c8.4-4.4 18.9-4.5 27.6 .9c13 8 17.1 25 9.2 38L399.7 400H384 343.6 168.4 128 112.3L5.4 223.6c-7.9-13-3.8-30 9.2-38c8.7-5.3 19.2-5.3 27.6-.9c8.9 4.7 19 7.4 29.8 7.4c29.9 0 55.1-20.5 62.1-48.3zM256 224l0 0 0 0h0zM112 432H400l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H86.6C74.1 512 64 501.9 64 489.4c0-6 2.4-11.8 6.6-16L112 432z"],glasses:[576,512,[],"f530","M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1 .1 0 0 0 0 0s0 0-6.3 12.7h0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7h40.6c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7h0c-6.3-12.7-6.3-12.7-6.3-12.7l0 0 0 0 .1 0 .2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7v6.7V352v16c0 61.9-50.1 112-112 112H419.7c-59.4 0-108.5-46.4-111.8-105.8L306.6 352H269.4l-1.2 22.2C264.9 433.6 215.8 480 156.3 480H112C50.1 480 0 429.9 0 368V352 310.7 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4V368c0 26.5 21.5 48 48 48h44.3c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368V325.4c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3H464c26.5 0 48-21.5 48-48z"],"chess-board":[448,512,[],"f43c","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 64v64h64V96h64v64h64V96h64v64H320v64h64v64H320v64h64v64H320V352H256v64H192V352H128v64H64V352h64V288H64V224h64V160H64V96h64zm64 128h64V160H192v64zm0 64V224H128v64h64zm64 0H192v64h64V288zm0 0h64V224H256v64z"],"building-circle-check":[640,512,[],"e4d2","M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z"],"person-chalkboard":[640,512,[],"e53d","M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V192h56 64 16c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64H576V256H384V224H320v48c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48v80H243.1 177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32z"],"mars-stroke-right":[640,512,[9897,"mars-stroke-h"],"f22b","M208 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm174.4-88C370.7 365.8 297.1 432 208 432c-97.2 0-176-78.8-176-176s78.8-176 176-176c89.1 0 162.7 66.2 174.4 152H416V176c0-13.3 10.7-24 24-24s24 10.7 24 24v56h32V176c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V280H464v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H382.4z"],"hand-back-fist":[448,512,["hand-rock"],"f255","M144 0C117.5 0 96 21.5 96 48V96v28.5V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V149.3l-9 7.5C40.4 169 32 187 32 206V244c0 38 16.9 74 46.1 98.3L128 384v96c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V374.7c46.9-19 80-65 80-118.7V176 160 144c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 83.5 329.3 64 304 64c-12.4 0-23.6 4.7-32.1 12.3C270 51.5 249.3 32 224 32c-12.4 0-23.6 4.7-32.1 12.3C190 19.5 169.3 0 144 0z"],"square-caret-up":[448,512,["caret-square-up"],"f151","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4H120c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z"],"cloud-showers-water":[576,512,[],"e4e4","M224 0c38.6 0 71.9 22.8 87.2 55.7C325.7 41.1 345.8 32 368 32c38.7 0 71 27.5 78.4 64H448c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64c0-53 43-96 96-96zM140.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm327.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM252.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm103.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"],"chart-bar":[512,512,["bar-chart"],"f080","M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 64H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32z"],"hands-bubbles":[576,512,["hands-wash"],"e05e","M416 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM160 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM32 160l.1 72.6c.1 52.2 24 101 64 133.1c-.1-1.9-.1-3.8-.1-5.7v-8c0-71.8 37-138.6 97.9-176.7l60.2-37.6c8.6-5.4 17.9-8.4 27.3-9.4l45.9-79.5c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8l-78 135.1c-3.3 5.7-10.7 7.7-16.4 4.4s-7.7-10.7-4.4-16.4l62-107.4c6.6-11.5 2.7-26.2-8.8-32.8S214 5 207.4 16.5l-68 117.8 0 0 0 0-43.3 75L96 160c0-17.7-14.4-32-32-32s-32 14.4-32 32zM332.1 88.5L307.5 131c13.9 4.5 26.4 13.7 34.7 27c.9 1.5 1.8 2.9 2.5 4.4l28.9-50c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zm46.4 63.7l-26.8 46.4c-.6 6-2.1 11.8-4.3 17.4H352h13.3l0 0H397l23-39.8c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zM315.1 175c-9.4-15-29.1-19.5-44.1-10.2l-60.2 37.6C159.3 234.7 128 291.2 128 352v8c0 8.9 .8 17.6 2.2 26.1c35.4 8.2 61.8 40 61.8 77.9c0 6.3-.7 12.5-2.1 18.4C215.1 501 246.3 512 280 512H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H352l0 0 0 0H258.8L305 219.1c15-9.4 19.5-29.1 10.2-44.1z"],"less-than-equal":[448,512,[],"f537","M395.9 93.7c16.4-6.6 24.4-25.2 17.8-41.6s-25.2-24.4-41.6-17.8l-320 128C40 167.1 32 178.9 32 192s8 24.9 20.1 29.7l320 128c16.4 6.6 35-1.4 41.6-17.8s-1.4-35-17.8-41.6L150.2 192 395.9 93.7zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z"],train:[448,512,[128646],"f238","M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zM224 288a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"],"eye-low-vision":[640,512,["low-vision"],"f2a8","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223 149.5c48.6-44.3 123-50.8 179.3-11.7c60.8 42.4 78.9 123.2 44.2 186.9L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3L223 149.5zm-139.9 12c-11 14.4-20.5 28.7-28.4 42.2l339 265.7c18.7-5.5 36.2-13 52.6-21.8L83.1 161.5zm-50 86.3c-1.8 6.8-1.3 14 1.4 20.5c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c3.1 0 6.1-.1 9.2-.2L33.1 247.8z"],crow:[640,512,[],"f520","M456 0c-48.6 0-88 39.4-88 88v29.2L12.5 390.6c-14 10.8-16.6 30.9-5.9 44.9s30.9 16.6 44.9 5.9L126.1 384H259.2l46.6 113.1c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3L311.1 384H352c1.1 0 2.1 0 3.2 0l46.6 113.2c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3l-42-102C484.9 354.1 544 280 544 192V128v-8l80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4C629 52 603.4 32 574 32H523.9C507.7 12.5 483.3 0 456 0zm0 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],sailboat:[576,512,[],"e445","M256 16c0-7 4.5-13.2 11.2-15.3s13.9 .4 17.9 6.1l224 320c3.4 4.9 3.8 11.3 1.1 16.6s-8.2 8.6-14.2 8.6H272c-8.8 0-16-7.2-16-16V16zM212.1 96.5c7 1.9 11.9 8.2 11.9 15.5V336c0 8.8-7.2 16-16 16H80c-5.7 0-11-3-13.8-8s-2.9-11-.1-16l128-224c3.6-6.3 11-9.4 18-7.5zM5.7 404.3C2.8 394.1 10.5 384 21.1 384H554.9c10.6 0 18.3 10.1 15.4 20.3l-4 14.3C550.7 473.9 500.4 512 443 512H133C75.6 512 25.3 473.9 9.7 418.7l-4-14.3z"],"window-restore":[512,512,[],"f2d2","M432 64H208c-8.8 0-16 7.2-16 16V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V320h16c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm64 32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32z"],"square-plus":[448,512,[61846,"plus-square"],"f0fe","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"],"torii-gate":[512,512,[9961],"f6a1","M0 80c0 26.5 21.5 48 48 48H64v64h64V128h96v64h64V128h96v64h64V128h16c26.5 0 48-21.5 48-48V13.4C512 6 506 0 498.6 0c-1.7 0-3.4 .3-5 1l-49 19.6C425.7 28.1 405.5 32 385.2 32H126.8c-20.4 0-40.5-3.9-59.4-11.4L18.4 1c-1.6-.6-3.3-1-5-1C6 0 0 6 0 13.4V80zM64 288V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288H384V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64z"],frog:[576,512,[],"f52e","M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9c0 21.8-11.7 41.9-30.7 52.7L400.8 323.5 493.3 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H480c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7c-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2c27.9-18.5 65.9-15.4 90.5 9.2c24.7 24.7 27.7 62.9 9 90.9c-2.6 3.8-5.6 7.5-9 10.9L261.8 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-35.3 0-64-28.7-64-64C0 249.6 127 112.9 289.3 97.5C296.2 60.2 328.8 32 368 32zm0 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],bucket:[448,512,[],"e4cf","M96 152v8H48v-8C48 68.1 116.1 0 200 0h48c83.9 0 152 68.1 152 152v8H352v-8c0-57.4-46.6-104-104-104H200C142.6 48 96 94.6 96 152zM0 224c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32h-5.1L388.5 469c-2.6 24.4-23.2 43-47.7 43H107.2c-24.6 0-45.2-18.5-47.7-43L37.1 256H32c-17.7 0-32-14.3-32-32z"],image:[512,512,[],"f03e","M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"],microphone:[384,512,[],"f130","M192 0C139 0 96 43 96 96V256c0 53 43 96 96 96s96-43 96-96V96c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V216z"],cow:[640,512,[128004],"f6c8","M96 224v32V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V327.8c9.9 6.6 20.6 12 32 16.1V368c0 8.8 7.2 16 16 16s16-7.2 16-16V351.1c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9V368c0 8.8 7.2 16 16 16s16-7.2 16-16V343.8c11.4-4 22.1-9.4 32-16.1V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256l32 32v49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21c22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5V184c0-13.3-10.7-24-24-24s-24 10.7-24 24v14.4l-52.9-74.1C496 86.5 452.4 64 405.9 64H272 256 192 144C77.7 64 24 117.7 24 184v54C9.4 249.8 0 267.8 0 288v17.6c0 8 6.4 14.4 14.4 14.4C46.2 320 72 294.2 72 262.4V256 224 184c0-24.3 12.1-45.8 30.5-58.9C98.3 135.9 96 147.7 96 160v64zM560 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16c0-12.5 10.1-22.6 22.6-22.6H361.4c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z"],"caret-up":[320,512,[],"f0d8","M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z"],screwdriver:[512,512,[129691],"f54a","M465 7c-8.5-8.5-22-9.4-31.6-2.1l-104 80c-5.9 4.5-9.4 11.6-9.4 19v54.1l-85.6 85.6c6.7 4.2 13 9.3 18.8 15.1s10.9 12.2 15.1 18.8L353.9 192H408c7.5 0 14.5-3.5 19-9.4l80-104c7.4-9.6 6.5-23.1-2.1-31.6L465 7zM121.4 281.4l-112 112c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l112-112c30.2-30.2 30.2-79.1 0-109.3s-79.1-30.2-109.3 0z"],"folder-closed":[512,512,[],"e185","M448 480H64c-35.3 0-64-28.7-64-64V192H512V416c0 35.3-28.7 64-64 64zm64-320H0V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64z"],"house-tsunami":[576,512,[],"e515","M80.8 136.5C104.9 93.8 152.6 64 209 64c16.9 0 33.1 2.7 48.2 7.7c16.8 5.5 34.9-3.6 40.4-20.4s-3.6-34.9-20.4-40.4C255.8 3.8 232.8 0 209 0C95.2 0 0 88 0 200c0 91.6 53.5 172.1 142.2 194.1c13.4 3.8 27.5 5.9 42.2 5.9c.7 0 1.4 0 2.1-.1c1.8 0 3.7 .1 5.5 .1l0 0c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0c-22.4 15.5-49.9 26.1-77.4 26.1c0 0-.1 0-.1 0c-12.4 0-24-1.5-34.9-4.3C121.6 320.2 96 287 96 248c0-48.5 39.5-88 88.4-88c13.5 0 26.1 3 37.5 8.3c16 7.5 35.1 .6 42.5-15.5s.6-35.1-15.5-42.5C229.3 101.1 207.4 96 184.4 96c-40 0-76.4 15.4-103.6 40.5zm252-18.1c-8.1 6-12.8 15.5-12.8 25.6V265c1.6 1 3.3 2 4.8 3.1c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c5.8 1.4 11.2 3.4 16.2 6.2c.7-2.7 1.1-5.5 1.1-8.4l-.4-144c0-10-4.7-19.4-12.7-25.5l-95.5-72c-11.4-8.6-27.1-8.6-38.5 0l-96 72zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z"],"square-nfi":[448,512,[],"e576","M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm75.7 64.6C68.8 162.5 64 168.8 64 176V336c0 8.8 7.2 16 16 16s16-7.2 16-16V233.8l66.3 110.5c3.7 6.2 11.1 9.1 18 7.2s11.7-8.2 11.7-15.4V176c0-8.8-7.2-16-16-16s-16 7.2-16 16V278.2L93.7 167.8c-3.7-6.2-11.1-9.1-18-7.2zM224 176v64 96c0 8.8 7.2 16 16 16s16-7.2 16-16V256h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H256V192h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm160 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V336c0 8.8 7.2 16 16 16s16-7.2 16-16V176z"],"arrow-up-from-ground-water":[576,512,[],"e4b5","M288 352c17.7 0 32-14.3 32-32V109.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V320c0 17.7 14.3 32 32 32zm-18.5 69.9C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM192 192H48c-26.5 0-48 21.5-48 48V425c5.3-3.1 11.2-5.4 17.5-6.9c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.1 20.3V192zm384 48c0-26.5-21.5-48-48-48H384V416.5h0c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c6.3 1.5 12.1 3.8 17.5 6.9V240z"],"martini-glass":[512,512,[127864,"glass-martini-alt"],"f57b","M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM173.3 128l-64-64H402.7l-64 64H173.3z"],"rotate-left":[512,512,["rotate-back","rotate-backward","undo-alt"],"f2ea","M48.5 224H40c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H48.5z"],"table-columns":[512,512,["columns"],"f0db","M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 64V416H224V160H64zm384 0H288V416H448V160z"],lemon:[448,512,[127819],"f094","M448 96c0-35.3-28.7-64-64-64c-6.6 0-13 1-19 2.9c-22.5 7-48.1 14.9-71 9c-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71C1 403 0 409.4 0 416c0 35.3 28.7 64 64 64c6.6 0 13-1 19.1-2.9c22.5-7 48.1-14.9 71-9c75.2 19.1 156.4-11 213.7-68.3s87.5-138.5 68.3-213.7c-5.8-22.9 2-48.4 9-71c1.9-6 2.9-12.4 2.9-19.1zM212.5 127.4c-54.6 16-101.1 62.5-117.1 117.1C92.9 253 84 257.8 75.5 255.4S62.2 244 64.6 235.5c19.1-65.1 73.7-119.8 138.9-138.9c8.5-2.5 17.4 2.4 19.9 10.9s-2.4 17.4-10.9 19.9z"],"head-side-mask":[576,512,[],"e063","M32 224.2c0-22.2 3.2-43.6 9.2-63.9L262.2 321c-4 9.5-6.2 20-6.2 31V512H128c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C48.6 322.4 32 274.1 32 224.2zm248.3 70.4L53 129.3C88.7 53 166.2 0 256 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c5.4 6.7 8.6 14.8 9.4 23.2H336c-21.7 0-41.3 8.6-55.7 22.6zM336 304H534l0 0h10l-19.7 64H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H514.5l-9.8 32H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H494.8l-.9 2.8c-8.3 26.9-33.1 45.2-61.2 45.2H288V352c0-14 6-26.7 15.6-35.4c0 0 0 0 0 0c8.5-7.8 19.9-12.6 32.4-12.6zm48-80a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],handshake:[640,512,[],"f2b5","M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123zM16 128c-8.8 0-16 7.2-16 16V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V128H16zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V144c0-8.8-7.2-16-16-16H544zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z"],gem:[512,512,[128142],"f3a5","M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.6L63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8L301.5 179.8l57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z"],dolly:[576,512,["dolly-box"],"f472","M0 32C0 14.3 14.3 0 32 0h72.9c27.5 0 52 17.6 60.7 43.8L257.7 320c30.1 .5 56.8 14.9 74 37l202.1-67.4c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L352 417.7c-.9 52.2-43.5 94.3-96 94.3c-53 0-96-43-96-96c0-30.8 14.5-58.2 37-75.8L104.9 64H32C14.3 64 0 49.7 0 32zM244.8 134.5c-5.5-16.8 3.7-34.9 20.5-40.3L311 79.4l19.8 60.9 60.9-19.8L371.8 59.6l45.7-14.8c16.8-5.5 34.9 3.7 40.3 20.5l49.4 152.2c5.5 16.8-3.7 34.9-20.5 40.3L334.5 307.2c-16.8 5.5-34.9-3.7-40.3-20.5L244.8 134.5z"],smoking:[640,512,[128684],"f48d","M448 32V43c0 38.2 15.2 74.8 42.2 101.8l21 21c21 21 32.8 49.5 32.8 79.2v11c0 17.7-14.3 32-32 32s-32-14.3-32-32V245c0-12.7-5.1-24.9-14.1-33.9l-21-21C405.9 151.1 384 98.1 384 43V32c0-17.7 14.3-32 32-32s32 14.3 32 32zM576 256V245c0-38.2-15.2-74.8-42.2-101.8l-21-21c-21-21-32.8-49.5-32.8-79.2V32c0-17.7 14.3-32 32-32s32 14.3 32 32V43c0 12.7 5.1 24.9 14.1 33.9l21 21c39 39 60.9 91.9 60.9 147.1v11c0 17.7-14.3 32-32 32s-32-14.3-32-32zM0 416c0-35.3 28.7-64 64-64H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H64c-35.3 0-64-28.7-64-64V416zm224 0v32H384V416H224zm288-64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32z"],minimize:[512,512,["compress-arrows-alt"],"f78c","M456 224H312c-13.3 0-24-10.7-24-24V56c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l40 40L442.3 5.7C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143l40 40c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433l-40 40c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V312c0-13.3 10.7-24 24-24H456zm-256 0c13.3 0 24 10.7 24 24V456c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40L69.7 506.3C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8H200zM56 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l40-40L5.7 69.7C2 66 0 61.1 0 56s2-10 5.7-13.7L42.3 5.7C46 2 50.9 0 56 0s10 2 13.7 5.7L143 79l40-40c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2V200c0 13.3-10.7 24-24 24H56z"],monument:[384,512,[],"f5a6","M180.7 4.7c6.2-6.2 16.4-6.2 22.6 0l80 80c2.5 2.5 4.1 5.8 4.6 9.3l40.2 322H55.9L96.1 94c.4-3.5 2-6.8 4.6-9.3l80-80zM152 272c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H152zM32 448H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z"],snowplow:[640,512,[],"f7d2","M298.9 64l68.6 160H256l-64-64V64H298.9zM445.1 242.7l-87.4-204C347.6 15.3 324.5 0 298.9 0H176c-26.5 0-48 21.5-48 48V160H96c-17.7 0-32 14.3-32 32V298.8C26.2 316.8 0 355.3 0 400c0 61.9 50.1 112 112 112H368c61.9 0 112-50.1 112-112c0-17.2-3.9-33.5-10.8-48H512v50.7c0 17 6.7 33.3 18.7 45.3l54.6 54.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L576 402.7V320 235.2L633 164c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-57 71.2c-9.1 11.3-14 25.4-14 40V288H448V256.7c.1-2.4-.2-4.8-.6-7.1s-1.2-4.7-2.2-6.8zM368 352c26.5 0 48 21.5 48 48s-21.5 48-48 48H112c-26.5 0-48-21.5-48-48s21.5-48 48-48H368zM144 400a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm216 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-56-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM200 424a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],"angles-right":[512,512,[187,"angle-double-right"],"f101","M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z"],cannabis:[512,512,[],"f55f","M256 0c5.3 0 10.3 2.7 13.3 7.1c15.8 23.5 36.7 63.7 49.2 109c7.2 26.4 11.8 55.2 10.4 84c11.5-8.8 23.7-16.7 35.8-23.6c41-23.3 84.4-36.9 112.2-42.5c5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7c-9.1 15.9-19.9 31.7-32.4 46.3c27.8 6.6 52.4 17.3 67.2 25.5c5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1c-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.1c1.5 6.1-.6 12.4-5.5 16.4s-11.6 4.6-17.2 1.9L280 417.2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V417.2l-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.9s-7-10.3-5.5-16.4l8.3-33.1c-22.2 2.6-45 0-65.2-4.6c-28.9-6.6-54.6-17.6-69.8-26.1c-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14c14.8-8.2 39.4-18.8 67.2-25.5C78.9 296.3 68.1 280.5 59 264.6c-23.4-40.8-37.1-84-42.7-111.7c-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5c12.1 6.9 24.3 14.7 35.8 23.6c-1.4-28.7 3.1-57.6 10.4-84c12.5-45.3 33.4-85.5 49.2-109c3-4.4 8-7.1 13.3-7.1z"],"circle-play":[512,512,[61469,"play-circle"],"f144","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9V344c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z"],tablets:[640,512,[],"f490","M614.3 247c16.3-25 25.7-54.9 25.7-87C640 71.6 568.4 0 480 0c-32.1 0-61.9 9.4-87 25.7c-7.9 5.2-8.5 16.2-1.8 22.9L591.4 248.8c6.7 6.7 17.8 6.2 22.9-1.8zM567 294.3c7.9-5.2 8.5-16.2 1.8-22.9L368.6 71.2c-6.7-6.7-17.8-6.2-22.9 1.8c-16.3 25-25.7 54.9-25.7 87c0 88.4 71.6 160 160 160c32.1 0 61.9-9.4 87-25.7zM301.5 368H18.5c-9.5 0-16.9 8.2-15 17.5C18.9 457.8 83.1 512 160 512s141.1-54.2 156.5-126.5c2-9.3-5.5-17.5-15-17.5zm0-32c9.5 0 16.9-8.2 15-17.5C301.1 246.2 236.9 192 160 192S18.9 246.2 3.5 318.5c-2 9.3 5.5 17.5 15 17.5H301.5z"],ethernet:[512,512,[],"f796","M0 224V416c0 17.7 14.3 32 32 32H96V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H448V160c0-17.7-14.3-32-32-32H384V96c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32v32H96c-17.7 0-32 14.3-32 32v32H32c-17.7 0-32 14.3-32 32z"],"euro-sign":[320,512,[8364,"eur","euro"],"f153","M48.1 240c-.1 2.7-.1 5.3-.1 8v16c0 2.7 0 5.3 .1 8H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H60.3C89.9 419.9 170 480 264 480h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264c-57.9 0-108.2-32.4-133.9-80H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112.2c-.1-2.6-.2-5.3-.2-8V248c0-2.7 .1-5.4 .2-8H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H130.1c25.7-47.6 76-80 133.9-80h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264C170 32 89.9 92.1 60.3 176H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48.1z"],chair:[448,512,[129681],"f6c0","M248 48V256h48V58.7c23.9 13.8 40 39.7 40 69.3V256h48V128C384 57.3 326.7 0 256 0H192C121.3 0 64 57.3 64 128V256h48V128c0-29.6 16.1-55.5 40-69.3V256h48V48h48zM48 288c-12.1 0-23.2 6.8-28.6 17.7l-16 32c-5 9.9-4.4 21.7 1.4 31.1S20.9 384 32 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32V384H352v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384c11.1 0 21.4-5.7 27.2-15.2s6.4-21.2 1.4-31.1l-16-32C423.2 294.8 412.1 288 400 288H48z"],"circle-check":[512,512,[61533,"check-circle"],"f058","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"],"circle-stop":[512,512,[62094,"stop-circle"],"f28d","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z"],"compass-drafting":[512,512,["drafting-compass"],"f568","M352 96c0 14.3-3.1 27.9-8.8 40.2L396 227.4c-23.7 25.3-54.2 44.1-88.5 53.6L256 192h0 0l-68 117.5c21.5 6.8 44.3 10.5 68.1 10.5c70.7 0 133.8-32.7 174.9-84c11.1-13.8 31.2-16 45-5s16 31.2 5 45C428.1 341.8 347 384 256 384c-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496V440.6c0-8.4 2.2-16.7 6.5-24.1l60-103.7C53.7 301.6 41.8 289.3 31.2 276c-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2c0-53 43-96 96-96s96 43 96 96zm21 297.9c32.6-12.8 62.5-30.8 88.9-52.9l43.7 75.5c4.2 7.3 6.5 15.6 6.5 24.1V496c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9L373 393.9zM256 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"plate-wheat":[512,512,[],"e55a","M176 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zM56 64h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48zM400 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zm80 160v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80zm-96 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320H484.2c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446v2c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32v-2c-48.2-9-86.3-48.2-92.5-98.4z"],icicles:[512,512,[],"f7ad","M75.8 304.8L1 35.7c-.7-2.5-1-5-1-7.5C0 12.6 12.6 0 28.2 0H482.4C498.8 0 512 13.2 512 29.6c0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9c-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1c-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7c-9.3 0-17.5-6.2-20-15.2z"],"person-shelter":[512,512,[],"e54f","M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160V480c0 17.7 14.3 32 32 32s32-14.3 32-32V178.6L256 68.9 448 178.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm-8 280V400h16v88c0 13.3 10.7 24 24 24s24-10.7 24-24V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H246.2c-32.4 0-62.1 17.8-77.5 46.3l-37.9 70.3c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5V488c0 13.3 10.7 24 24 24s24-10.7 24-24z"],neuter:[384,512,[9906],"f22c","M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V480c0 17.7 14.3 32 32 32s32-14.3 32-32V349.1z"],"id-badge":[384,512,[],"f2c1","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm96 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM144 64h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],marker:[512,512,[],"f5a1","M481 31C445.1-4.8 386.9-4.8 351 31l-15 15L322.9 33C294.8 4.9 249.2 4.9 221.1 33L135 119c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L255 66.9c9.4-9.4 24.6-9.4 33.9 0L302.1 80 186.3 195.7 316.3 325.7 481 161c35.9-35.9 35.9-94.1 0-129.9zM293.7 348.3L163.7 218.3 99.5 282.5c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l64.2-64.2z"],"face-laugh-beam":[512,512,[128513,"laugh-beam"],"f59a","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM217.6 212.8l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"],"helicopter-symbol":[512,512,[],"e502","M445.3 224H510C495.6 108.2 403.8 16.4 288 2V66.7C368.4 80.1 431.9 143.6 445.3 224zM510 288H445.3C431.9 368.4 368.4 431.9 288 445.4V510c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510V445.4C143.6 431.9 80.1 368.4 66.7 288H2zm0-64H66.7C80.1 143.6 143.6 80.1 224 66.7V2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 17.7 14.3 32 32 32s32-14.3 32-32V288h96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H208V160z"],"universal-access":[512,512,[],"f29a","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm161.5-86.1c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3v50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6V235.5c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160a40 40 0 1 0 0-80 40 40 0 1 0 0 80z"],"circle-chevron-up":[512,512,["chevron-circle-up"],"f139","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z"],"lari-sign":[384,512,[],"e1c8","M144 32c17.7 0 32 14.3 32 32V96.7c5.3-.4 10.6-.7 16-.7s10.7 .2 16 .7V64c0-17.7 14.3-32 32-32s32 14.3 32 32v49.4c54.9 25.2 95.8 75.5 108.2 136.2c3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.1-29.9-22.5-55.9-45.4-74.3V256c0 17.7-14.3 32-32 32s-32-14.3-32-32V161c-5.2-.7-10.6-1-16-1s-10.8 .3-16 1v95c0 17.7-14.3 32-32 32s-32-14.3-32-32V188.1C82.7 211.5 64 247.6 64 288c0 70.7 57.3 128 128 128H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H192 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48.9C18.5 382 0 337.2 0 288c0-77.5 45.9-144.3 112-174.6V64c0-17.7 14.3-32 32-32z"],volcano:[512,512,[127755],"f770","M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15C212.4 12.4 232.7 0 256 0s43.6 12.4 54.8 31C322 21.6 336.3 16 352 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8c19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9c11.3 0 21.8-5.6 28-15l9.7-14.6-58.9-66.3c-9.1-10.2-22.2-16.1-35.9-16.1H235.1c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4L144 352zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2h41.8c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7c0 28.8-23.4 52.2-52.2 52.2H52.2C23.4 512 0 488.6 0 459.8c0-12.8 4.7-25.1 13.2-34.7l150.2-169z"],"person-walking-dashed-line-arrow-right":[640,512,[],"e553","M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24V72c0 13.3 10.7 24 24 24s24-10.7 24-24V24c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V152zM392 320c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V344c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24v48c0 13.3 10.7 24 24 24s24-10.7 24-24V440z"],"sterling-sign":[320,512,[163,"gbp","pound-sign"],"f154","M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v44.5c0 17.4-4.7 34.5-13.7 49.4L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H88.5l.7-1.1C104.1 390 112 361.5 112 332.5V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V160.4z"],viruses:[640,512,[],"e076","M192 0c13.3 0 24 10.7 24 24V37.5c0 35.6 43.1 53.5 68.3 28.3l9.5-9.5c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-9.5 9.5C293 124.9 310.9 168 346.5 168H360c13.3 0 24 10.7 24 24s-10.7 24-24 24H346.5c-35.6 0-53.5 43.1-28.3 68.3l9.5 9.5c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-9.5-9.5C259.1 293 216 310.9 216 346.5V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V346.5c0-35.6-43.1-53.5-68.3-28.3l-9.5 9.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l9.5-9.5C91 259.1 73.1 216 37.5 216H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H37.5c35.6 0 53.5-43.1 28.3-68.3l-9.5-9.5c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l9.5 9.5C124.9 91 168 73.1 168 37.5V24c0-13.3 10.7-24 24-24zm48 224a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48-64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm320 80c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C574.5 312.1 591 352 624 352c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C551.9 446.5 512 463 512 496c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C417.5 423.9 401 384 368 384c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C440.1 289.5 480 273 480 240c0-8.8 7.2-16 16-16s16 7.2 16 16zm0 112a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],"square-person-confined":[448,512,[],"e577","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm96 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm80 104c0-30.9 25.1-56 56-56s56 25.1 56 56V350.1c0 36.4-29.5 65.9-65.9 65.9c-17.5 0-34.3-6.9-46.6-19.3L184.8 342l-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9L240 306.7V248z"],"user-tie":[448,512,[],"f508","M96 128a128 128 0 1 0 256 0A128 128 0 1 0 96 128zm94.5 200.2l18.6 31L175.8 483.1l-36-146.9c-2-8.1-9.8-13.4-17.9-11.3C51.9 342.4 0 405.8 0 481.3c0 17 13.8 30.7 30.7 30.7H162.5c0 0 0 0 .1 0H168 280h5.5c0 0 0 0 .1 0H417.3c17 0 30.7-13.8 30.7-30.7c0-75.5-51.9-138.9-121.9-156.4c-8.1-2-15.9 3.3-17.9 11.3l-36 146.9L238.9 359.2l18.6-31c6.4-10.7-1.3-24.2-13.7-24.2H224 204.3c-12.4 0-20.1 13.6-13.7 24.2z"],"arrow-down-long":[384,512,["long-arrow-down"],"f175","M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7L86.6 329.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128z"],"tent-arrow-down-to-line":[640,512,[],"e57e","M241.8 111.9c8.9 9.9 8.1 25-1.8 33.9l-80 72c-9.1 8.2-23 8.2-32.1 0l-80-72c-9.9-8.9-10.7-24-1.8-33.9s24-10.7 33.9-1.8l39.9 36L120 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 122.1 39.9-36c9.9-8.9 25-8.1 33.9 1.8zm122.8 22.6c11.5-8.7 27.3-8.7 38.8 0l168 128c6.6 5 11 12.5 12.3 20.7l24 160 .7 4.7c17.5 .2 31.6 14.4 31.6 32c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H159.6l.7-4.7 24-160c1.2-8.2 5.6-15.7 12.3-20.7l168-128zM384 448h80L402.7 325.5c-1.7-3.4-5.1-5.5-8.8-5.5c-5.5 0-9.9 4.4-9.9 9.9V448z"],certificate:[512,512,[],"f0a3","M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.4-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z"],"reply-all":[576,512,["mail-reply-all"],"f122","M209.4 39.5c-9.1-9.6-24.3-10-33.9-.9L33.8 173.2c-19.9 18.9-19.9 50.7 0 69.6L175.5 377.4c9.6 9.1 24.8 8.7 33.9-.9s8.7-24.8-.9-33.9L66.8 208 208.5 73.4c9.6-9.1 10-24.3 .9-33.9zM352 64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144c-6.7 6.1-10.6 14.7-10.6 23.8s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2V288h32c53 0 96 43 96 96c0 30.4-12.8 47.9-22.2 56.7c-5.5 5.1-9.8 12-9.8 19.5c0 10.9 8.8 19.7 19.7 19.7c2.8 0 5.6-.6 8.1-1.9C494.5 467.9 576 417.3 576 304c0-97.2-78.8-176-176-176H352V64z"],suitcase:[512,512,[129523],"f0f2","M176 56V96H336V56c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zM128 96V56c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56V96v32V480H128V128 96zM64 96H96V480H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64zM448 480H416V96h32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64z"],"person-skating":[448,512,["skating"],"f7c5","M352 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM128 128c0-17.7 14.3-32 32-32H319.4c43.6 0 64.6 53.4 32.8 83.1l-74.4 69.4 60.2 60.2c9 9 14.1 21.2 14.1 33.9V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V349.3l-77.9-77.8c-26.6-26.6-24.6-70.3 4.3-94.4l20.4-17H160c-17.7 0-32-14.3-32-32zM81.4 353.4l86.9-86.9c4.6 10 11 19.3 19.3 27.5l21.8 21.8-82.7 82.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm322.5 95.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h88.8c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM135.2 478.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L4.7 411.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z"],"filter-circle-dollar":[576,512,["funnel-dollar"],"f662","M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm120.8-32.6c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7V288c0-8.8-7.2-16-16-16s-16 7.2-16 16v9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6l0 0 0 0c7 2.3 15.1 4.8 23.7 6.6v11.4c0 8.8 7.2 16 16 16s16-7.2 16-16V438.7c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5l0-.1c-.1-1.9 .3-2.9 .8-3.6z"],"camera-retro":[512,512,[128247],"f083","M220.6 121.2L271.1 96 448 96v96H333.2c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24H64V128H192c9.9 0 19.7-2.3 28.6-6.8zM0 128V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H271.1c-9.9 0-19.7 2.3-28.6 6.8L192 64H160V48c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM168 304a88 88 0 1 1 176 0 88 88 0 1 1 -176 0z"],"circle-arrow-down":[512,512,["arrow-circle-down"],"f0ab","M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM127 281c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 136c0-13.3 10.7-24 24-24s24 10.7 24 24l0 182.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 393c-9.4 9.4-24.6 9.4-33.9 0L127 281z"],"file-import":[512,512,["arrow-right-to-file"],"f56f","M128 64c0-35.3 28.7-64 64-64H352V128c0 17.7 14.3 32 32 32H512V448c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64V336H302.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H128V64zm0 224v48H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H128zM512 128H384V0L512 128z"],"square-arrow-up-right":[448,512,["external-link-square"],"f14c","M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM160 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h94.1L119 327c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135V328c0 13.3 10.7 24 24 24s24-10.7 24-24V168c0-13.3-10.7-24-24-24H160z"],"box-open":[640,512,[],"f49e","M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6v167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5v-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128h2.2z"],scroll:[576,512,[128220],"f70e","M0 80v48c0 17.7 14.3 32 32 32H48 96V80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48V384c0 35.3 28.7 64 64 64s64-28.7 64-64v-5.3c0-32.4 26.3-58.7 58.7-58.7H480V128c0-53-43-96-96-96H112zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16H314.7c-14.7 0-26.7 11.9-26.7 26.7V384c0 53-43 96-96 96H368h96z"],spa:[576,512,[],"f5bb","M183.1 235.3c33.7 20.7 62.9 48.1 85.8 80.5c7 9.9 13.4 20.3 19.1 31c5.7-10.8 12.1-21.1 19.1-31c22.9-32.4 52.1-59.8 85.8-80.5C437.6 207.8 490.1 192 546 192h9.9c11.1 0 20.1 9 20.1 20.1C576 360.1 456.1 480 308.1 480H288 267.9C119.9 480 0 360.1 0 212.1C0 201 9 192 20.1 192H30c55.9 0 108.4 15.8 153.1 43.3zM301.5 37.6c15.7 16.9 61.1 71.8 84.4 164.6c-38 21.6-71.4 50.8-97.9 85.6c-26.5-34.8-59.9-63.9-97.9-85.6c23.2-92.8 68.6-147.7 84.4-164.6C278 33.9 282.9 32 288 32s10 1.9 13.5 5.6z"],"location-pin-lock":[512,512,[],"e51f","M215.7 499.2c11-13.8 25.1-31.7 40.3-52.3V352c0-23.7 12.9-44.4 32-55.4V272c0-55.6 40.5-101.7 93.6-110.5C367 70 287.7 0 192 0C86 0 0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c17.7 0 32 14.3 32 32v48H368V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z"],pause:[320,512,[9208],"f04c","M48 64C21.5 64 0 85.5 0 112V400c0 26.5 21.5 48 48 48H80c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zm192 0c-26.5 0-48 21.5-48 48V400c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H240z"],"hill-avalanche":[576,512,[],"e507","M439.7 401.9c34.2 23.1 81.1 19.5 111.4-10.8c34.4-34.4 34.4-90.1 0-124.4c-27.8-27.8-69.5-33.1-102.6-16c-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7C401.2 261.3 416 236.4 416 208c0-33.9-21.1-62.9-50.9-74.5c1.9-6.8 2.9-14 2.9-21.5c0-44.2-35.8-80-80-80c-27.3 0-51.5 13.7-65.9 34.6C216.3 46.6 197.9 32 176 32c-26.5 0-48 21.5-48 48c0 4 .5 7.9 1.4 11.6L439.7 401.9zM480 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87z"],"temperature-empty":[320,512,["temperature-0","thermometer-0","thermometer-empty"],"f2cb","M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM160 0C98.1 0 48 50.2 48 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C272 50.2 221.9 0 160 0zm0 416a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"],bomb:[512,512,[128163],"f1e2","M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 304S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-75.1 60.9-136 136-136h8c8.8 0 16 7.2 16 16s-7.2 16-16 16h-8z"],registered:[512,512,[174],"f25d","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152c0-13.3 10.7-24 24-24h88c44.2 0 80 35.8 80 80c0 28-14.4 52.7-36.3 67l34.1 75.1c5.5 12.1 .1 26.3-11.9 31.8s-26.3 .1-31.8-11.9L268.9 288H208v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 152zm48 88h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H208v64z"],"address-card":[576,512,[62140,"contact-card","vcard"],"f2bb","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 256h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-32H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],"scale-unbalanced-flip":[640,512,["balance-scale-right"],"f516","M117.9 62.4c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l113 37.7C265 15.8 290.7 0 320 0c44.2 0 80 35.8 80 80c0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.4 145.2c-4.5 3.2-9.3 5.9-14.4 8.2V480c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-21-9.2-37.2-27-44.2-49l-125.9-42zM200.4 288L128 163.8 55.6 288H200.4zM128 384C65.1 384 12.8 350 2 305.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C243.2 350 190.9 384 128 384zm382.8-92.2L438.4 416H583.3L510.8 291.8zm126 141.3C626 478 573.7 512 510.8 512s-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1z"],subscript:[512,512,[],"f12c","M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V320z"],"diamond-turn-right":[512,512,["directions"],"f5eb","M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8v56H224c-35.3 0-64 28.7-64 64v48c0 13.3 10.7 24 24 24s24-10.7 24-24V280c0-8.8 7.2-16 16-16h64v56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z"],burst:[512,512,[],"e4dc","M37.6 4.2C28-2.3 15.2-1.1 7 7s-9.4 21-2.8 30.5l112 163.3L16.6 233.2C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4L66.8 412.8c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1L392.3 312.2l103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8L388.9 198.7l25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7L278.8 16.6C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6l-32.3 99.6L37.6 4.2z"],"house-laptop":[640,512,["laptop-house"],"e066","M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c6.7 6.2 10.3 14.8 10.3 23.5H336c-19.1 0-36.3 8.4-48 21.7V208c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64V416H112c-26.5 0-48-21.5-48-48V256H32c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM352 304V448H544V304H352zm-48-16c0-17.7 14.3-32 32-32H560c17.7 0 32 14.3 32 32V448h32c8.8 0 16 7.2 16 16c0 26.5-21.5 48-48 48H544 352 304c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16h32V288z"],"face-tired":[512,512,[128555,"tired"],"f5c8","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3h-3.2c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm-31.2-182l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z"],"money-bills":[640,512,[],"e1f3","M96 96V320c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zm64 160c35.3 0 64 28.7 64 64H160V256zM224 96c0 35.3-28.7 64-64 64V96h64zM576 256v64H512c0-35.3 28.7-64 64-64zM512 96h64v64c-35.3 0-64-28.7-64-64zM288 208a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V360c0 66.3 53.7 120 120 120H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H120c-39.8 0-72-32.2-72-72V120z"],smog:[640,512,[],"f75f","M32 144c0 79.5 64.5 144 144 144H299.3c22.6 19.9 52.2 32 84.7 32s62.1-12.1 84.7-32H496c61.9 0 112-50.1 112-112s-50.1-112-112-112c-10.7 0-21 1.5-30.8 4.3C443.8 27.7 401.1 0 352 0c-32.6 0-62.4 12.2-85.1 32.3C242.1 12.1 210.5 0 176 0C96.5 0 32 64.5 32 144zM616 368H280c-13.3 0-24 10.7-24 24s10.7 24 24 24H616c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-64 96H440c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-192 0H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24zM224 392c0-13.3-10.7-24-24-24H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H200c13.3 0 24-10.7 24-24z"],crutch:[512,512,[],"f7f7","M297.4 9.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0zm-96 144l-34.8 34.8c-12.9 12.9-21.9 29.2-25.8 47.1L116.8 342.9c-1.3 5.9-4.3 11.4-8.6 15.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l98.8-98.8c4.3-4.3 9.7-7.3 15.7-8.6l107.6-23.9c17.8-4 34.1-12.9 47.1-25.8l34.7-34.7c0 0 .1-.1 .1-.1s.1-.1 .1-.1l74.6-74.6-45.3-45.3L336 242.7 269.3 176l52.1-52.1L276.1 78.6l-74.7 74.7zM224 221.3L290.7 288l-12.2 12.2c-4.3 4.3-9.7 7.3-15.7 8.6l-76.7 17 17-76.7c1.3-5.9 4.3-11.4 8.6-15.7L224 221.3z"],"font-awesome":[512,512,[62501,62694,"font-awesome-flag","font-awesome-logo-full"],"f2b4","M91.7 96C106.3 86.8 116 70.5 116 52C116 23.3 92.7 0 64 0S12 23.3 12 52c0 16.7 7.8 31.5 20 41l0 3 0 352 0 64 64 0 0-64 373.6 0c14.6 0 26.4-11.8 26.4-26.4c0-3.7-.8-7.3-2.3-10.7L432 272l61.7-138.9c1.5-3.4 2.3-7 2.3-10.7c0-14.6-11.8-26.4-26.4-26.4L91.7 96z"],"cloud-arrow-up":[640,512,[62338,"cloud-upload","cloud-upload-alt"],"f0ee","M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V392c0 13.3 10.7 24 24 24s24-10.7 24-24V257.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z"],palette:[512,512,[127912],"f53f","M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3H344c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"arrows-turn-right":[448,512,[],"e4c0","M297.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L338.7 160H128c-35.3 0-64 28.7-64 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V224C0 153.3 57.3 96 128 96H338.7L297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416H96c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96H242.7l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z"],vest:[448,512,[],"e085","M207.1 237.4L151.2 69.7C168.6 79.7 192.6 88 224 88s55.4-8.3 72.8-18.3L226.5 280.6c-1.6 4.9-2.5 10-2.5 15.2V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V270.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6V128 54.3 48c0-26.5-21.5-48-48-48h-4.5c-.2 0-.4 0-.6 0c-.4 0-.8 0-1.2 0C311 0 295.7 9.7 285.7 18.8C276.4 27.2 257.2 40 224 40s-52.4-12.8-61.7-21.2C152.3 9.7 137 0 118.3 0c-.4 0-.8 0-1.2 0c-.2 0-.4 0-.6 0H112C85.5 0 64 21.5 64 48v6.3V128v17.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5V464c0 26.5 21.5 48 48 48H176c9.9 0 19-3 26.7-8.1C195.9 492.2 192 478.5 192 464V295.8c0-8.6 1.4-17.1 4.1-25.3l11-33.1zM347.3 356.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-294.6 48l48-48c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z"],ferry:[576,512,[],"e4ea","M224 0H352c17.7 0 32 14.3 32 32h75.1c20.6 0 31.6 24.3 18.1 39.8L456 96H120L98.8 71.8C85.3 56.3 96.3 32 116.9 32H192c0-17.7 14.3-32 32-32zM96 128H480c17.7 0 32 14.3 32 32V283.5c0 13.3-4.2 26.3-11.9 37.2l-51.4 71.9c-1.9 1.1-3.7 2.2-5.5 3.5c-15.5 10.7-34 18-51 19.9H375.6c-17.1-1.8-35-9-50.8-19.9c-22.1-15.5-51.6-15.5-73.7 0c-14.8 10.2-32.5 18-50.6 19.9H183.9c-17-1.8-35.6-9.2-51-19.9c-1.8-1.3-3.7-2.4-5.6-3.5L75.9 320.7C68.2 309.8 64 296.8 64 283.5V160c0-17.7 14.3-32 32-32zm32 64v96H448V192H128zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.3-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"],"arrows-down-to-people":[640,512,[],"e4b9","M144 0c-13.3 0-24 10.7-24 24V142.1L97 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24zM360 200a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM184 296a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm312 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 345.5V400c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V345.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 468.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5zM415 153l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V142.1l-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z"],seedling:[512,512,[127793,"sprout"],"f4d8","M512 32c0 113.6-84.6 207.5-194.2 222c-7.1-53.4-30.6-101.6-65.3-139.3C290.8 46.3 364 0 448 0h32c17.7 0 32 14.3 32 32zM0 96C0 78.3 14.3 64 32 64H64c123.7 0 224 100.3 224 224v32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320C100.3 320 0 219.7 0 96z"],"left-right":[512,512,[8596,"arrows-alt-h"],"f337","M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z"],"boxes-packing":[640,512,[],"e4c7","M256 48c0-26.5 21.5-48 48-48H592c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H381.3c1.8-5 2.7-10.4 2.7-16V253.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H256V48zM571.3 347.3c6.2-6.2 6.2-16.4 0-22.6l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L480 310.6V432c0 8.8 7.2 16 16 16s16-7.2 16-16V310.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0zM0 176c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V176zm352 80V480c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V256H352zM144 320c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H144z"],"circle-arrow-left":[512,512,["arrow-circle-left"],"f0a8","M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM231 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L376 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-182.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L119 273c-9.4-9.4-9.4-24.6 0-33.9L231 127z"],"group-arrows-rotate":[512,512,[],"e4f6","M201.1 71.9c16.9-5 26.6-22.9 21.5-39.8s-22.9-26.6-39.8-21.5c-21.5 6.4-41.8 15.5-60.6 27C114.3 34 105.4 32 96 32C60.7 32 32 60.7 32 96c0 9.4 2 18.3 5.6 26.3c-11.5 18.7-20.6 39-27 60.6c-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c4.3-14.6 10.4-28.5 17.9-41.4c2 .2 4.1 .3 6.1 .3c35.3 0 64-28.7 64-64c0-2.1-.1-4.1-.3-6.1c12.9-7.5 26.8-13.6 41.4-17.9zm128-61.3c-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c14.6 4.3 28.5 10.4 41.4 17.9c-.2 2-.3 4.1-.3 6.1c0 35.3 28.7 64 64 64c2.1 0 4.1-.1 6.2-.3c7.5 12.9 13.6 26.8 17.9 41.4c5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.6c3.6-8 5.6-16.9 5.6-26.3c0-35.3-28.7-64-64-64c-9.4 0-18.3 2-26.3 5.6c-18.7-11.5-39-20.6-60.6-27zM71.9 310.9c-5-16.9-22.9-26.6-39.8-21.5s-26.6 22.9-21.5 39.8c6.4 21.5 15.5 41.8 27 60.6C34 397.7 32 406.6 32 416c0 35.3 28.7 64 64 64c9.4 0 18.3-2 26.3-5.6c18.7 11.5 39 20.6 60.6 27c16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-14.6-4.3-28.5-10.4-41.4-17.9c.2-2 .3-4.1 .3-6.2c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.2 .3c-7.5-12.9-13.6-26.8-17.9-41.4zm429.4 18.3c5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-4.3 14.6-10.4 28.5-17.9 41.4c-2-.2-4.1-.3-6.2-.3c-35.3 0-64 28.7-64 64c0 2.1 .1 4.1 .3 6.2c-12.9 7.5-26.8 13.6-41.4 17.9c-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.6-27c8 3.6 16.9 5.6 26.3 5.6c35.3 0 64-28.7 64-64c0-9.4-2-18.3-5.6-26.3c11.5-18.7 20.6-39 27-60.6zM192.8 256.8c0-15.6 5.6-29.9 14.9-41.1L223 231c6.6 6.6 17.8 1.9 17.8-7.4V163.2c0-5.7-4.7-10.4-10.4-10.4H169.9c-9.3 0-13.9 11.2-7.4 17.8l11.2 11.2c-17.9 19.8-28.9 46.2-28.9 75.1c0 43.6 24.9 81.3 61.1 99.8c11.8 6 26.3 1.4 32.3-10.4s1.4-26.3-10.4-32.3c-20.8-10.6-34.9-32.2-34.9-57zm93.1-58.6c20.8 10.6 34.9 32.2 34.9 57c0 15.6-5.6 29.9-14.9 41.1L290.6 281c-6.6-6.6-17.8-1.9-17.8 7.4v60.5c0 5.7 4.7 10.4 10.4 10.4h60.5c9.3 0 13.9-11.2 7.4-17.8l-11.2-11.2c17.9-19.8 28.9-46.2 28.9-75.1c0-43.6-24.9-81.3-61.1-99.8c-11.8-6-26.3-1.4-32.3 10.4s-1.4 26.3 10.4 32.3z"],"bowl-food":[512,512,[],"e4c6","M0 192c0-35.3 28.7-64 64-64c.5 0 1.1 0 1.6 0C73 91.5 105.3 64 144 64c15 0 29 4.1 40.9 11.2C198.2 49.6 225.1 32 256 32s57.8 17.6 71.1 43.2C339 68.1 353 64 368 64c38.7 0 71 27.5 78.4 64c.5 0 1.1 0 1.6 0c35.3 0 64 28.7 64 64c0 11.7-3.1 22.6-8.6 32H8.6C3.1 214.6 0 203.7 0 192zm0 91.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z"],"candy-cane":[512,512,[],"f786","M348.8 131.5c3.7-2.3 7.9-3.5 12.2-3.5c12.7 0 23 10.3 23 23v5.6c0 9.9-5.1 19.1-13.5 24.3L30.1 393.7C.1 412.5-9 451.9 9.7 481.9s58.2 39.1 88.2 20.4L438.4 289.5c45.8-28.6 73.6-78.8 73.6-132.8V151C512 67.6 444.4 0 361 0c-28.3 0-56 8-80.1 23L254.1 39.7c-30 18.7-39.1 58.2-20.4 88.2s58.2 39.1 88.2 20.4l26.8-16.8zM298.4 49.8c9.2-5.7 19.1-10.1 29.4-13.1L348 97.5c-5.7 1.4-11.2 3.7-16.3 6.8l-12.6 7.9L298.4 49.8zm88.5 52.7l46.2-46.2c8.5 6.5 16.1 14.1 22.6 22.6l-46.2 46.2c-5.1-9.6-13-17.5-22.6-22.6zm28.9 59.3l61.6 20.5c-2.2 10.5-5.8 20.7-10.5 30.2l-62-20.7c6.2-8.8 10.1-19.1 11-30.1zm-86.1 82.5l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zm-107.2 67l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zM119.3 375.7l60.4 37.7-30.2 18.9L89.1 394.6l30.2-18.9z"],"arrow-down-wide-short":[576,512,["sort-amount-asc","sort-amount-down"],"f160","M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320z"],"cloud-bolt":[512,512,[127785,"thunderstorm"],"f76c","M0 224c0 53 43 96 96 96h47.2L290 202.5c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L333.7 320H352h64c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm330.1 3.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L177.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H281.9l52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z"],"text-slash":[640,512,["remove-format"],"f87d","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96H503L497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C577.6 61.3 554.7 32 523.5 32H376.1h-.3H204.5c-22 0-41.2 15-46.6 36.4l-6.3 25.2L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96H333.7L301.3 210.8l-94.5-74.1zM327.3 353.9L272.9 311 243.3 416H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H309.8l17.6-62.1z"],"face-smile-wink":[512,512,[128521,"smile-wink"],"f4da","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z"],"file-word":[384,512,[],"f1c2","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM111 257.1l26.8 89.2 31.6-90.3c3.4-9.6 12.5-16.1 22.7-16.1s19.3 6.4 22.7 16.1l31.6 90.3L273 257.1c3.8-12.7 17.2-19.9 29.9-16.1s19.9 17.2 16.1 29.9l-48 160c-3 10-12 16.9-22.4 17.1s-19.8-6.2-23.2-16.1L192 336.6l-33.3 95.3c-3.4 9.8-12.8 16.3-23.2 16.1s-19.5-7.1-22.4-17.1l-48-160c-3.8-12.7 3.4-26.1 16.1-29.9s26.1 3.4 29.9 16.1z"],"file-powerpoint":[384,512,[],"f1c4","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM136 240h68c42 0 76 34 76 76s-34 76-76 76H160v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V368 264c0-13.3 10.7-24 24-24zm68 104c15.5 0 28-12.5 28-28s-12.5-28-28-28H160v56h44z"],"arrows-left-right":[512,512,["arrows-h"],"f07e","M406.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224l-293.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288l293.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z"],"house-lock":[640,512,[],"e510","M384 480c0 11.7 3.1 22.6 8.6 32H392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L490.7 166.3C447.2 181.7 416 223.2 416 272v24.6c-19.1 11.1-32 31.7-32 55.4V480zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z"],"cloud-arrow-down":[640,512,[62337,"cloud-download","cloud-download-alt"],"f0ed","M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-167l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V318.1l-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z"],children:[640,512,[],"e4e1","M160 0a64 64 0 1 1 0 128A64 64 0 1 1 160 0zM88 480V400H70.2c-10.9 0-18.6-10.7-15.2-21.1l31.1-93.4L57.5 323.3c-10.7 14.1-30.8 16.8-44.8 6.2s-16.8-30.7-6.2-44.8L65.4 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47l58.9 77.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.6-37.8L265 378.9c3.5 10.4-4.3 21.1-15.2 21.1H232v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V400H152v80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480 0a64 64 0 1 1 0 128A64 64 0 1 1 480 0zm-8 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V300.5L395.1 321c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9h12.3c33 0 63.7 16.9 81.2 44.9L619.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L552 300.5V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H472z"],chalkboard:[576,512,["blackboard"],"f51b","M96 32C60.7 32 32 60.7 32 96V384H96V96l384 0V384h64V96c0-35.3-28.7-64-64-64H96zM224 384v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H416V384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32z"],"user-large-slash":[640,512,["user-alt-slash"],"f4fa","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM545.5 512H528L284.3 320h-59C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7H545.3l.3 0z"],"envelope-open":[512,512,[62135],"f2b6","M64 208.1L256 65.9 448 208.1v47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5V208.1zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V208.1c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z"],"handshake-simple-slash":[640,512,["handshake-alt-slash"],"e05f","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.3-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM413.6 421.9L41.2 128.5C17.9 131.8 0 151.8 0 176V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6z"],"mattress-pillow":[640,512,[],"e525","M256 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H256V64zm32 384H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H288V448zM64 160c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160z"],"guarani-sign":[384,512,[],"e19a","M192 0c-17.7 0-32 14.3-32 32V66.7C69.2 81.9 0 160.9 0 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c90.8-15.2 160-94.2 160-189.3c0-17.7-14.3-32-32-32H224V132c22.1 5.7 41.8 17.1 57.6 32.6c12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C299 92 263.5 73.3 224 66.7V32c0-17.7-14.3-32-32-32zM160 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124zM224 380V288h92c-11.6 45-47 80.4-92 92z"],"arrows-rotate":[512,512,[128472,"refresh","sync"],"f021","M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H352c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V80c0-17.7-14.3-32-32-32s-32 14.3-32 32v35.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V432c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H160c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z"],"fire-extinguisher":[512,512,[129519],"f134","M500.3 7.3C507.7 13.3 512 22.4 512 32v96c0 9.6-4.3 18.7-11.7 24.7s-17.2 8.5-26.6 6.6l-160-32C301.5 124.9 292 115.7 289 104H224v34.8c37.8 18 64 56.5 64 101.2V384H64V240c0-44.7 26.2-83.2 64-101.2V110c-36.2 11.1-66 36.9-82.3 70.5c-5.8 11.9-20.2 16.9-32.1 11.1S-3.3 171.4 2.5 159.5C26.7 109.8 72.7 72.6 128 60.4V32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V56h65c3-11.7 12.5-20.9 24.7-23.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM288 416v32c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V416H288zM176 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z"],"cruzeiro-sign":[448,512,[],"e152","M96 256c0-88.4 71.6-160 160-160c41 0 78.3 15.4 106.7 40.7c13.2 11.8 33.4 10.7 45.2-2.5s10.7-33.4-2.5-45.2c-39.6-35.5-92-57-149.3-57C132.3 32 32 132.3 32 256s100.3 224 224 224c57.4 0 109.7-21.6 149.3-57c13.2-11.8 14.3-32 2.5-45.2s-32-14.3-45.2-2.5C334.3 400.6 297 416 256 416V320v-8.7c0-12.8 10.4-23.3 23.3-23.3c4.6 0 9.1 1.4 12.9 3.9l10.1 6.7c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4l-10.1-6.7c-14.3-9.6-31.2-14.7-48.4-14.7c-12.4 0-24.2 2.6-34.9 7.3c-5.5-4.5-12.6-7.3-20.3-7.3c-17.7 0-32 14.3-32 32v55.3V320v82.7C135.5 378 96 321.6 96 256z"],"greater-than-equal":[448,512,[],"f532","M52.1 93.7C35.7 87.1 27.7 68.5 34.3 52.1s25.2-24.4 41.6-17.8l320 128C408 167.1 416 178.9 416 192s-8 24.9-20.1 29.7l-320 128c-16.4 6.6-35-1.4-41.6-17.8s1.4-35 17.8-41.6L297.8 192 52.1 93.7zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416z"],"shield-halved":[512,512,["shield-alt"],"f3ed","M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8V444.8C394 378 431.1 230.1 432 141.4L256 66.8l0 0z"],"book-atlas":[448,512,["atlas"],"f558","M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM247.4 283.8c-3.7 3.7-6.2 4.2-7.4 4.2s-3.7-.5-7.4-4.2c-3.8-3.7-8-10-11.8-18.9c-6.2-14.5-10.8-34.3-12.2-56.9h63c-1.5 22.6-6 42.4-12.2 56.9c-3.8 8.9-8 15.2-11.8 18.9zm42.7-9.9c7.3-18.3 12-41.1 13.4-65.9h31.1c-4.7 27.9-21.4 51.7-44.5 65.9zm0-163.8c23.2 14.2 39.9 38 44.5 65.9H303.5c-1.4-24.7-6.1-47.5-13.4-65.9zM368 192a128 128 0 1 0 -256 0 128 128 0 1 0 256 0zM145.3 208h31.1c1.4 24.7 6.1 47.5 13.4 65.9c-23.2-14.2-39.9-38-44.5-65.9zm31.1-32H145.3c4.7-27.9 21.4-51.7 44.5-65.9c-7.3 18.3-12 41.1-13.4 65.9zm56.1-75.8c3.7-3.7 6.2-4.2 7.4-4.2s3.7 .5 7.4 4.2c3.8 3.7 8 10 11.8 18.9c6.2 14.5 10.8 34.3 12.2 56.9h-63c1.5-22.6 6-42.4 12.2-56.9c3.8-8.9 8-15.2 11.8-18.9z"],virus:[512,512,[],"e074","M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L120.2 75C107.7 62.5 87.5 62.5 75 75s-12.5 32.8 0 45.3l8.2 8.2C118.4 163.7 93.4 224 43.5 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H43.5c49.9 0 74.9 60.3 39.6 95.6L75 391.8c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-49.9 60.3-74.9 95.6-39.6l8.2 8.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-8.2-8.2c-35.3-35.3-10.3-95.6 39.6-95.6H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H468.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C348.3 118.4 288 93.4 288 43.5V32zM176 224a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],"envelope-circle-check":[640,512,[],"e4e8","M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176V384c0 35.3 28.7 64 64 64H360.2C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z"],"layer-group":[576,512,[],"f5fd","M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z"],"arrows-to-dot":[512,512,[],"e4be","M256 0c17.7 0 32 14.3 32 32V64h32c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8h32V32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H288v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H192c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224H64V192c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6v32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],archway:[512,512,[],"f557","M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H96h64V352c0-53 43-96 96-96s96 43 96 96V480h64 64c17.7 0 32-14.3 32-32s-14.3-32-32-32V128H32V416z"],"heart-circle-check":[576,512,[],"e4fd","M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z"],"house-chimney-crack":[576,512,["house-damage"],"f6f1","M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H326.4L288 448l80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L250.6 263.2c-14.6-11.5-33.8 7-22.8 22L288 368l-85.5 71.2c-6.1 5-7.5 13.8-3.5 20.5L230.4 512H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24z"],"file-zipper":[384,512,["file-archive"],"f1c6","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM96 48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm-6.3 71.8c3.7-14 16.4-23.8 30.9-23.8h14.8c14.5 0 27.2 9.7 30.9 23.8l23.5 88.2c1.4 5.4 2.1 10.9 2.1 16.4c0 35.2-28.8 63.7-64 63.7s-64-28.5-64-63.7c0-5.5 .7-11.1 2.1-16.4l23.5-88.2zM112 336c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z"],square:[448,512,[9632,9723,9724,61590],"f0c8","M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z"],"martini-glass-empty":[512,512,["glass-martini"],"f000","M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM256 210.7L109.3 64H402.7L256 210.7z"],couch:[640,512,[],"f4b8","M64 160C64 89.3 121.3 32 192 32H448c70.7 0 128 57.3 128 128v33.6c-36.5 7.4-64 39.7-64 78.4v48H128V272c0-38.7-27.5-71-64-78.4V160zM544 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48V448c0 17.7-14.3 32-32 32H576c-17.7 0-32-14.3-32-32H96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3v48 32h32H512h32V320 272z"],"cedi-sign":[384,512,[],"e0df","M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V66.7C101.2 81.9 32 160.9 32 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c30.9-5.2 59.2-17.7 83.2-35.8c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-13.2 9.9-28.3 17.3-44.8 21.6V132c16.4 4.2 31.6 11.6 44.8 21.6c14.1 10.6 34.2 7.8 44.8-6.4s7.8-34.2-6.4-44.8c-24-18-52.4-30.6-83.2-35.8V32zM192 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124z"],italic:[384,512,[],"f033","M128 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H293.3L160 416h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H90.7L224 96H160c-17.7 0-32-14.3-32-32z"],"table-cells-column-lock":[640,512,[],"e678","M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zm208 0l0 64 88 0 0-64-88 0zm240 0l-88 0 0 64 88 0 0-64zM208 224l0 64 88 0 0-64-88 0zm0 128l0 64 88 0 0-64-88 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z"],church:[640,512,[9962],"f51d","M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V48H264c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v46.4L183.3 210c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V251.2c0-16.9-8.8-32.5-23.3-41.2L344 142.4V96h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V24zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z"],"comments-dollar":[640,512,[],"f653","M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9l0 0 0 0 .2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2 0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM228 72c0-11-9-20-20-20s-20 9-20 20V86c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V280c0 11 9 20 20 20s20-9 20-20V266.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V72z"],democrat:[640,512,[],"f747","M64 32c0-8.9 3.8-20.9 6.2-27.3C71.2 1.8 74 0 77 0c1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1C175.2 .7 177.1 0 179 0c3 0 5.8 1.8 6.8 4.7c2.4 6.5 6.2 18.4 6.2 27.3c0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8H480l32 0c40.3 0 78.2 19 102.4 51.2l19.2 25.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4l-19.2-25.6c-5.3-7-11.8-12.8-19.2-17V320H192l-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3h-2C23.9 256 0 232.1 0 202.7c0-12.1 4.1-23.8 11.7-33.3L87.6 74.6C78.1 67.4 64 53.2 64 32zM448 352h96v64 64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V416H288v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416 352h96H448zM260.9 210.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.3-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5zM368.1 208c-2 0-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5c-.9-1.8-2.8-2.9-4.8-2.9zm116.8 2.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5z"],z:[384,512,[122],"5a","M0 64C0 46.3 14.3 32 32 32H352c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96H32C14.3 96 0 81.7 0 64z"],"person-skiing":[512,512,[9975,"skiing"],"f7c9","M380.7 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM2.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L232.7 361.3l46.2-69.2-75.1-75.1c-14.6-14.6-20.4-33.9-18.4-52.1l108.8 52 39.3 39.3c16.2 16.2 18.7 41.5 6 60.6L289.8 391l128.7 66.8c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L12.9 301.3C1.2 295.2-3.4 280.7 2.7 268.9zM118.9 65.6L137 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 54.7 26.2c1.5-.7 3.1-1.4 4.7-2.1l83.4-33.4c34.2-13.7 72.8 4.2 84.5 39.2l17.1 51.2 52.1 26.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-58.1-29c-11.4-5.7-20-15.7-24.1-27.8l-5.8-17.3-27.3 12.1-6.8 3-6.7-3.2L151.5 116.7l-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5z"],"road-lock":[640,512,[],"e567","M288 32H213.2c-27.1 0-51.3 17.1-60.3 42.6L35.1 407.2c-2.1 5.9-3.1 12-3.1 18.2C32 455.5 56.5 480 86.6 480H288V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64h32V352c0-23.7 12.9-44.4 32-55.4V272c0-58.3 44.6-106.2 101.5-111.5L487.1 74.6C478 49.1 453.9 32 426.8 32H352V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z"],a:[384,512,[97],"41","M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L93.3 384H290.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM264 320H120l72-172.8L264 320z"],"temperature-arrow-down":[576,512,["temperature-down"],"e03f","M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM176 0C114.1 0 64 50.1 64 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V272c0-8.8-7.2-16-16-16s-16 7.2-16 16v50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zm336-64H480V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352H384c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8z"],"feather-pointed":[512,512,["feather-alt"],"f56b","M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l74.8-74.8c7.4 4.6 15.3 8.2 23.8 10.5C200.3 452.8 270 454.5 338 409.4c12.2-8.1 5.8-25.4-8.8-25.4l-16.1 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l97.7-29.3c3.4-1 6.4-3.1 8.4-6.1c4.4-6.4 8.6-12.9 12.6-19.6c6.2-10.3-1.5-23-13.5-23l-38.6 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l80.9-24.3c4.6-1.4 8.4-4.8 10.2-9.3C494.5 163 507.8 86.1 511.9 36.8c.8-9.9-3-19.6-10-26.6s-16.7-10.8-26.6-10C391.5 7 228.5 40.5 137.4 131.6C57.3 211.7 56.7 302.3 71.3 356.4c2.1 7.9 12 9.6 17.8 3.8L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z"],p:[320,512,[112],"50","M0 96C0 60.7 28.7 32 64 32h96c88.4 0 160 71.6 160 160s-71.6 160-160 160H64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V320 96zM64 288h96c53 0 96-43 96-96s-43-96-96-96H64V288z"],snowflake:[448,512,[10052,10054],"f2dc","M224 0c17.7 0 32 14.3 32 32V62.1l15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49v70.3l61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7v70.3l49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V449.9l-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49V311.7l-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3V129.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15V32c0-17.7 14.3-32 32-32z"],newspaper:[512,512,[128240],"f1ea","M96 96c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H80c-44.2 0-80-35.8-80-80V128c0-17.7 14.3-32 32-32s32 14.3 32 32V400c0 8.8 7.2 16 16 16s16-7.2 16-16V96zm64 24v80c0 13.3 10.7 24 24 24H296c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24H184c-13.3 0-24 10.7-24 24zm208-8c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zM160 304c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z"],"rectangle-ad":[576,512,["ad"],"f641","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM229.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L253.2 328H162.8l-5.4 10.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zM208 237.7L186.8 280h42.3L208 237.7zM392 256a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm24-43.9V184c0-13.3 10.7-24 24-24s24 10.7 24 24v96 48c0 13.3-10.7 24-24 24c-6.6 0-12.6-2.7-17-7c-9.4 4.5-19.9 7-31 7c-39.8 0-72-32.2-72-72s32.2-72 72-72c8.4 0 16.5 1.4 24 4.1z"],"circle-arrow-right":[512,512,["arrow-circle-right"],"f0a9","M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM281 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L136 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l182.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L393 239c9.4 9.4 9.4 24.6 0 33.9L281 385z"],"filter-circle-xmark":[576,512,[],"e17b","M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z"],locust:[576,512,[],"e520","M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h16c98.7 0 180.6 71.4 197 165.4c-9-3.5-18.8-5.4-29-5.4H431.8l-41.8-97.5c-3.4-7.9-10.8-13.4-19.3-14.4s-17 2.7-22.1 9.6l-40.9 55.5-21.7-50.7c-3.3-7.8-10.5-13.2-18.9-14.3s-16.7 2.3-22 8.9l-240 304c-8.2 10.4-6.4 25.5 4 33.7s25.5 6.4 33.7-4l79.4-100.5 43 16.4-40.5 55c-7.9 10.7-5.6 25.7 5.1 33.6s25.7 5.6 33.6-5.1L215.1 400h74.5l-29.3 42.3c-7.5 10.9-4.8 25.8 6.1 33.4s25.8 4.8 33.4-6.1L348 400h80.4l38.8 67.9c6.6 11.5 21.2 15.5 32.7 8.9s15.5-21.2 8.9-32.7L483.6 400H496c44.1 0 79.8-35.7 80-79.7c0-.1 0-.2 0-.3V280C576 143 465 32 328 32H312zm50.5 168l17.1 40H333l29.5-40zm-87.7 38.1l-1.4 1.9H225.1l32.7-41.5 16.9 39.5zM88.8 240C57.4 240 32 265.4 32 296.8c0 15.5 6.3 30 16.9 40.4L126.7 240H88.8zM496 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32z"],sort:[320,512,["unsorted"],"f0dc","M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z"],"list-ol":[512,512,["list-1-2","list-numeric"],"f0cb","M24 56c0-13.3 10.7-24 24-24H80c13.3 0 24 10.7 24 24V176h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H56V80H48C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432H120c13.3 0 24 10.7 24 24s-10.7 24-24 24H32c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"],"person-dress-burst":[640,512,[],"e544","M528 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM390.2 384H408v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h16v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h17.8c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3H474.2c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z"],"money-check-dollar":[576,512,["money-check-alt"],"f53d","M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zM272 192H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 304c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16zM164 152v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V360c0 11-9 20-20 20s-20-9-20-20V345.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V152c0-11 9-20 20-20s20 9 20 20z"],"vector-square":[448,512,[],"f5cb","M368 80h32v32H368V80zM352 32c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32V160c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H352zM96 160c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32V160zM48 400H80v32H48V400zm320 32V400h32v32H368zM48 112V80H80v32H48z"],"bread-slice":[512,512,[],"f7ec","M256 32C192 32 0 64 0 192c0 35.3 28.7 64 64 64V432c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V256c35.3 0 64-28.7 64-64C512 64 320 32 256 32z"],language:[640,512,[],"f1ab","M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"],"face-kiss-wink-heart":[512,512,[128536,"kiss-wink-heart"],"f598","M498 339.7c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-22.9-89.3c-10-39 11.8-80.9 51.8-92.1c37.2-10.4 73.8 10.1 87.5 44c12.7-1.6 25.1 .4 36.2 5zM296 332c0 6.9-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C258.7 443.1 241.4 448 224 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.6-.4-.3-.2-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm194.8 57.6c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z"],filter:[512,512,[],"f0b0","M3.9 54.9C10.5 40.9 24.5 32 40 32H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9V448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6V320.9L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z"],question:[320,512,[10067,10068,61736],"3f","M80 160c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64v3.6c0 21.8-11.1 42.1-29.4 53.8l-42.2 27.1c-25.2 16.2-40.4 44.1-40.4 74V320c0 17.7 14.3 32 32 32s32-14.3 32-32v-1.4c0-8.2 4.2-15.8 11-20.2l42.2-27.1c36.6-23.6 58.8-64.1 58.8-107.7V160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm80 320a40 40 0 1 0 0-80 40 40 0 1 0 0 80z"],"file-signature":[576,512,[],"f573","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V428.7c-2.7 1.1-5.4 2-8.2 2.7l-60.1 15c-3 .7-6 1.2-9 1.4c-.9 .1-1.8 .2-2.7 .2H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 381l-9.8 32.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.8 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8h8.9c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7L384 203.6V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM549.8 139.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 321c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 262.7l-71-71L311.9 321z"],"up-down-left-right":[512,512,["arrows-alt"],"f0b2","M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32v96H128V192c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V288h96v96H192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H288V288h96v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H288V128h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z"],"house-chimney-user":[576,512,[],"e065","M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM288 160a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM176 400c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16z"],"hand-holding-heart":[576,512,[],"f4be","M163.9 136.9c-29.4-29.8-29.4-78.2 0-108s77-29.8 106.4 0l17.7 18 17.7-18c29.4-29.8 77-29.8 106.4 0s29.4 78.2 0 108L310.5 240.1c-6.2 6.3-14.3 9.4-22.5 9.4s-16.3-3.1-22.5-9.4L163.9 136.9zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z"],"puzzle-piece":[512,512,[129513],"f12e","M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8c0 12.8 10.4 23.2 23.2 23.2H336c26.5 0 48 21.5 48 48v56.8c0 12.8 10.4 23.2 23.2 23.2c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2c-12.8 0-23.2 10.4-23.2 23.2V464c0 26.5-21.5 48-48 48H279.2c-12.8 0-23.2-10.4-23.2-23.2c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8c0 12.8-10.4 23.2-23.2 23.2H48c-26.5 0-48-21.5-48-48V343.2C0 330.4 10.4 320 23.2 320c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256C10.4 256 0 245.6 0 232.8V176c0-26.5 21.5-48 48-48H168.8c12.8 0 23.2-10.4 23.2-23.2z"],"money-check":[576,512,[],"f53c","M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm48 160H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 336c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zM376 160h80c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24H376c-13.3 0-24-10.7-24-24V184c0-13.3 10.7-24 24-24z"],"star-half-stroke":[576,512,["star-half-alt"],"f5c0","M288 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L288.1 86.9l-.1 .3V376.4zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L288.1 439.8 159.8 508.3C149 514 135.9 513.1 126 506s-14.9-19.3-12.9-31.3L137.8 329 33.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L195 150.3 259.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L438.5 329l24.6 145.7z"],code:[640,512,[],"f121","M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z"],"whiskey-glass":[512,512,[129347,"glass-whiskey"],"f7a0","M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5h253c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32H32zM87.7 224L69 96H443L424.3 224H87.7z"],"building-circle-exclamation":[640,512,[],"e4d3","M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z"],"magnifying-glass-chart":[512,512,[],"e522","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zm-312 8v64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96V280c0 13.3 10.7 24 24 24s24-10.7 24-24V120c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64v96c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24s-24 10.7-24 24z"],"arrow-up-right-from-square":[512,512,["external-link"],"f08e","M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z"],"cubes-stacked":[448,512,[],"e4e6","M192 64v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H224c-17.7 0-32 14.3-32 32zM82.7 207c-15.3 8.8-20.5 28.4-11.7 43.7l32 55.4c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-32-55.4c-8.8-15.3-28.4-20.5-43.7-11.7L82.7 207zM288 192c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H288zm64 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H352zM160 384v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zM32 352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H32z"],"won-sign":[512,512,[8361,"krw","won"],"f159","M62.4 53.9C56.8 37.1 38.6 28.1 21.9 33.6S-3.9 57.4 1.6 74.1L51.6 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H72.9l56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288h46L321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l50-149.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L392.9 224H329L287 56.2C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L183 224h-64L62.4 53.9zm78 234.1H167l-11.4 45.6L140.4 288zM249 224l7-28.1 7 28.1H249zm96 64h26.6l-15.2 45.6L345 288z"],"virus-covid":[512,512,[],"e4a8","M192 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H280V81.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L420 125.9l-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3H464V216c0-13.3 10.7-24 24-24s24 10.7 24 24v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H430.4c-4.2 30.7-16.3 58.8-34.1 82.3L420 386.1l11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L386.1 420l-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1V464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V430.4c-30.7-4.2-58.8-16.3-82.3-34.1L125.9 420l11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L92 386.1l23.8-23.8C97.9 338.8 85.8 310.7 81.6 280H48v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V216c0-13.3 10.7-24 24-24s24 10.7 24 24v16H81.6c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92l23.8 23.8c23.5-17.9 51.7-29.9 82.3-34.1V48H216c-13.3 0-24-10.7-24-24zm48 200a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm64 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],"austral-sign":[448,512,[],"e0a9","M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7L122.7 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96L82.7 320H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H56L34.5 435.7c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384H322.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8L392 384h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H365.3L352 288h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H325.3L253.5 51.7zM256 224H192l32-76.8L256 224zm-90.7 64H282.7L296 320H152l13.3-32z"],f:[320,512,[102],"46","M64 32C28.7 32 0 60.7 0 96V256 448c0 17.7 14.3 32 32 32s32-14.3 32-32V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z"],leaf:[512,512,[],"f06c","M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5h88c8.8 0 16 7.2 16 16s-7.2 16-16 16H288 216s0 0 0 0c-16.6 0-32.7 1.9-48.3 5.4c-25.9 5.9-49.9 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440v16c0 13.3 10.7 24 24 24s24-10.7 24-24V440c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z"],road:[576,512,[128739],"f018","M256 32H181.2c-27.1 0-51.3 17.1-60.3 42.6L3.1 407.2C1.1 413 0 419.2 0 425.4C0 455.5 24.5 480 54.6 480H256V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64H521.4c30.2 0 54.6-24.5 54.6-54.6c0-6.2-1.1-12.4-3.1-18.2L455.1 74.6C446 49.1 421.9 32 394.8 32H320V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32z"],taxi:[512,512,[128662,"cab"],"f1ba","M192 0c-17.7 0-32 14.3-32 32V64c0 .1 0 .1 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288V432v48c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V432H416v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V432 288c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1c0-.1 0-.1 0-.2V32c0-17.7-14.3-32-32-32H192zM165.4 128H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 224H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 288a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],"person-circle-plus":[576,512,[],"e541","M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z"],"chart-pie":[576,512,["pie-chart"],"f200","M304 240V16.6c0-9 7-16.6 16-16.6C443.7 0 544 100.3 544 224c0 9-7.6 16-16.6 16H304zM32 272C32 150.7 122.1 50.3 239 34.3c9.2-1.3 17 6.1 17 15.4V288L412.5 444.5c6.7 6.7 6.2 17.7-1.5 23.1C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zm526.4 16c9.3 0 16.6 7.8 15.4 17c-7.7 55.9-34.6 105.6-73.9 142.3c-6 5.6-15.4 5.2-21.2-.7L320 288H558.4z"],"bolt-lightning":[384,512,[],"e0b7","M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z"],"sack-xmark":[512,512,[],"e56a","M192 96H320l47.4-71.1C374.5 14.2 366.9 0 354.1 0H157.9c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32H192c-3.8 2.5-8.1 5.3-13 8.4l0 0 0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96H416c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4zM289.9 336l47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47z"],"file-excel":[384,512,[],"f1c3","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z"],"file-contract":[384,512,[],"f56c","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z"],"fish-fins":[576,512,[],"e4f2","M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5c-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.6 4.9S-3 163.3 4.2 175.9L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.6 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3c15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8c39.2-29.4 67.2-64.7 81.6-89.5c5.8-9.9 5.8-22.2 0-32.1c-14.4-24.8-42.5-60.1-81.6-89.5c-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM384 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],"building-flag":[640,512,[],"e4d5","M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM448 0c-17.7 0-32 14.3-32 32V512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H480c0-17.7-14.3-32-32-32z"],"face-grin-beam":[512,512,[128516,"grin-beam"],"f582","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-170.5-84l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"],"object-ungroup":[640,512,[],"f248","M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H328.6C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V232.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4V232.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4H119.4zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V352h64v40.6c9.7 5.6 17.8 13.7 23.4 23.4H520.6c5.6-9.7 13.7-17.8 23.4-23.4V279.4c-9.7-5.6-17.8-13.7-23.4-23.4h-46c-5.4-15.4-14.6-28.9-26.5-39.6V192h72.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H311.4z"],poop:[512,512,[],"f619","M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7C315.8 7.2 352 47.4 352 96c0 11.2-1.9 22-5.5 32H352c35.3 0 64 28.7 64 64c0 19.1-8.4 36.3-21.7 48H408c39.8 0 72 32.2 72 72c0 23.2-11 43.8-28 57c34.1 5.7 60 35.3 60 71c0 39.8-32.2 72-72 72H72c-39.8 0-72-32.2-72-72c0-35.7 25.9-65.3 60-71c-17-13.2-28-33.8-28-57c0-39.8 32.2-72 72-72h13.7C104.4 228.3 96 211.1 96 192c0-35.3 28.7-64 64-64h16.2c44.1-.1 79.8-35.9 79.8-80c0-9.2-1.5-17.9-4.3-26.1c-1.8-5.2-.8-11.1 2.8-15.4z"],"location-pin":[384,512,["map-marker"],"f041","M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z"],kaaba:[576,512,[128331],"f66b","M60 120l228 71.2L516 120 288 48.8 60 120zM278.5 1.5c6.2-1.9 12.9-1.9 19.1 0l256 80C566.9 85.6 576 98 576 112v16 0 21.2L292.8 237.7c-3.1 1-6.4 1-9.5 0L0 149.2V128 112C0 98 9.1 85.6 22.5 81.5l256-80zm23.9 266.8L576 182.8v46.5l-52.8 16.5c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5L576 262.8V400c0 14-9.1 26.4-22.5 30.5l-256 80c-6.2 1.9-12.9 1.9-19.1 0l-256-80C9.1 426.4 0 414 0 400V262.8l43.2 13.5c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20L0 229.2V182.8l273.7 85.5c9.3 2.9 19.3 2.9 28.6 0zm-185.5-2.6c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l64 20c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20l-64-20zm352 30.5c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-64 20c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5l64-20zm-224 9.5c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l38.5 12c9.3 2.9 19.3 2.9 28.6 0l38.5-12c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-38.5 12c-3.1 1-6.4 1-9.5 0l-38.5-12z"],"toilet-paper":[640,512,[129531],"f71e","M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1H48c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0H444.2zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM144 208a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm64 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z"],"helmet-safety":[576,512,["hard-hat","hat-hard"],"f807","M256 32c-17.7 0-32 14.3-32 32v2.3 99.6c0 5.6-4.5 10.1-10.1 10.1c-3.6 0-7-1.9-8.8-5.1L157.1 87C83 123.5 32 199.8 32 288v64H544l0-66.4c-.9-87.2-51.7-162.4-125.1-198.6l-48 83.9c-1.8 3.2-5.2 5.1-8.8 5.1c-5.6 0-10.1-4.5-10.1-10.1V66.3 64c0-17.7-14.3-32-32-32H256zM16.6 384C7.4 384 0 391.4 0 400.6c0 4.7 2 9.2 5.8 11.9C27.5 428.4 111.8 480 288 480s260.5-51.6 282.2-67.5c3.8-2.8 5.8-7.2 5.8-11.9c0-9.2-7.4-16.6-16.6-16.6H16.6z"],eject:[448,512,[9167],"f052","M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320H48c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48s-21.5 48-48 48H48c-26.5 0-48-21.5-48-48z"],"circle-right":[512,512,[61838,"arrow-alt-circle-right"],"f35a","M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 135.1l99.9 107.1c3.5 3.8 5.5 8.7 5.5 13.8s-2 10.1-5.5 13.8L294.6 376.9c-4.2 4.5-10.1 7.1-16.3 7.1C266 384 256 374 256 361.7l0-57.7-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-57.7c0-12.3 10-22.3 22.3-22.3c6.2 0 12.1 2.6 16.3 7.1z"],"plane-circle-check":[640,512,[],"e555","M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z"],"face-rolling-eyes":[512,512,[128580,"meh-rolling-eyes"],"f5a5","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 368H320c8.8 0 16 7.2 16 16s-7.2 16-16 16H192c-8.8 0-16-7.2-16-16s7.2-16 16-16zm32-144c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C208.5 175.6 224 198 224 224zm128 64c-35.3 0-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C400.5 175.6 416 198 416 224c0 35.3-28.7 64-64 64z"],"object-group":[576,512,[],"f247","M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H456.6C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM456.6 96H119.4c-5.6 9.7-13.7 17.8-23.4 23.4V392.6c9.7 5.6 17.8 13.7 23.4 23.4H456.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z"],"chart-line":[512,512,["line-chart"],"f201","M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z"],"mask-ventilator":[640,512,[],"e524","M159.1 176C139.4 219.2 128 264.7 128 300.8c0 15.9 2.2 31.4 6.3 46l-31.8-7.9C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H159.1zm26-48H56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l71.3 17.8c22.7 30.5 55.4 54.1 93.8 66.6V393.3c-19.7-16.4-32-40.3-32-66.9c0-49.5 43-134.4 96-134.4c52.5 0 96 84.9 96 134.4c0 26.7-12.4 50.4-32 66.8v76.6c38-12.6 70.6-36 93.5-66.4l71.6-17.9C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H454.5C419.7 73.8 372.1 32 320 32c-52.6 0-100.2 41.8-134.9 96zm295.6 48H584c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9l-31.8 8c4.2-14.7 6.4-30.1 6.4-46.1c0-36.1-11.6-81.6-31.3-124.8zM288 320V512h64V320c0-17.7-14.3-32-32-32s-32 14.3-32 32z"],"arrow-right":[448,512,[8594],"f061","M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"],"signs-post":[512,512,["map-signs"],"f277","M224 32H64C46.3 32 32 46.3 32 64v64c0 17.7 14.3 32 32 32H441.4c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7H288c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 256c0-17.7-14.3-32-32-32H288V192H224v32H70.6c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7H448c17.7 0 32-14.3 32-32V256zM288 480V384H224v96c0 17.7 14.3 32 32 32s32-14.3 32-32z"],"cash-register":[512,512,[],"f788","M64 0C46.3 0 32 14.3 32 32V96c0 17.7 14.3 32 32 32h80v32H87c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V378.4c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160H208V128h80c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H64zM96 48H256c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 432c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm48-168a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm120-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM160 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM328 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM256 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM424 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM352 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48z"],"person-circle-question":[576,512,[],"e542","M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z"],h:[384,512,[104],"48","M320 256l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192L64 192 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0z"],tarp:[576,512,[],"e57b","M576 128c0-35.3-28.7-64-64-64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64l352 0 0-128c0-17.7 14.3-32 32-32H576V128zM448 448L576 320H448l0 128zM96 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"screwdriver-wrench":[512,512,["tools"],"f7d9","M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4h54.1l109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109V104c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7H352c-8.8 0-16-7.2-16-16V102.6c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM56 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z"],"arrows-to-eye":[640,512,[],"e4bf","M15 15C24.4 5.7 39.6 5.7 49 15l63 63V40c0-13.3 10.7-24 24-24s24 10.7 24 24v96c0 13.3-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H78.1L15 49C5.7 39.6 5.7 24.4 15 15zM133.5 243.9C158.6 193.6 222.7 112 320 112s161.4 81.6 186.5 131.9c3.8 7.6 3.8 16.5 0 24.2C481.4 318.4 417.3 400 320 400s-161.4-81.6-186.5-131.9c-3.8-7.6-3.8-16.5 0-24.2zM320 320a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM591 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-63 63H600c13.3 0 24 10.7 24 24s-10.7 24-24 24H504c-13.3 0-24-10.7-24-24V40c0-13.3 10.7-24 24-24s24 10.7 24 24V78.1l63-63zM15 497c-9.4-9.4-9.4-24.6 0-33.9l63-63H40c-13.3 0-24-10.7-24-24s10.7-24 24-24h96c13.3 0 24 10.7 24 24v96c0 13.3-10.7 24-24 24s-24-10.7-24-24V433.9L49 497c-9.4 9.4-24.6 9.4-33.9 0zm576 0l-63-63V472c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H561.9l63 63c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z"],"plug-circle-bolt":[576,512,[],"e55b","M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z"],heart:[512,512,[128153,128154,128155,128156,128420,129293,129294,129505,9829,10084,61578],"f004","M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z"],"mars-and-venus":[512,512,[9893],"f224","M337.8 14.8C341.5 5.8 350.3 0 360 0H472c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-24.7 24.7C407 163.3 416 192.6 416 224c0 80.2-59 146.6-136 158.2V408h24c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V456H208c-13.3 0-24-10.7-24-24s10.7-24 24-24h24V382.2C155 370.6 96 304.2 96 224c0-88.4 71.6-160 160-160c39.6 0 75.9 14.4 103.8 38.2L382.1 80 343 41c-6.9-6.9-8.9-17.2-5.2-26.2zM448 48l0 0h0v0zM352 224a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z"],"house-user":[576,512,["home-user"],"e1b0","M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24zM352 224a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm-96 96c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H256z"],"dumpster-fire":[640,512,[],"f794","M49.7 32l90.8 0L114.9 160l-94 0C9.3 160 0 150.7 0 139.1c0-2.1 .3-4.1 .9-6.1L26.8 48.9C29.9 38.9 39.2 32 49.7 32zM272 160l-124.5 0L173.1 32 272 32l0 128zm32 0l0-128 98.9 0 14.4 72.1c-1.7 1.1-3.3 2.4-4.8 3.8c-18.4 16.4-35.4 34-50.5 52.1l-58 0zm209.9-23.7c-1.7 1.6-3.4 3.2-5 4.8C498 129.6 486.7 118.6 475 108c-7.6-6.9-17-10.8-26.6-11.8L435.5 32l90.8 0c10.5 0 19.8 6.9 22.9 16.9L575.1 133c.2 .7 .4 1.4 .5 2.1c-17.8-15-44.3-14.6-61.7 1.2zM325.2 210.7C304.3 244.5 288 282.9 288 318.1c0 49.3 18.6 95.2 49.6 129.9L128 448c0 17.7-14.3 32-32 32s-32-14.3-32-32L44 288l-12 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l4 0-4-32 305.5 0c-4.4 6.2-8.5 12.5-12.3 18.7zm180.6-34.5L518 162.5c5.4-6.1 13.3-8.8 20.9-8.9c7.2 0 14.3 2.6 19.9 7.8c19.7 18.3 39.8 43.2 55 70.6C629 259.2 640 290.2 640 320.2C640 408.8 568.7 480 480 480c-89.6 0-160-71.3-160-159.8c0-37.3 16-73.4 36.8-104.5c20.9-31.3 47.5-59 70.9-80.2c5.7-5.2 13.1-7.7 20.3-7.5c14.1 .3 23.8 11.4 32.7 21.6c0 0 0 0 0 0c2 2.3 4 4.6 6 6.7l19 19.9zM544 368.2c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C453 295.1 416 331.6 416 368.2c0 35.3 28.7 64 64 64s64-28.7 64-64z"],"house-crack":[576,512,[],"e3b1","M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H230.4l-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L288 368l-60.2-82.8c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L288 448l38.4 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32z"],"martini-glass-citrus":[576,512,["cocktail"],"f561","M432 240c53 0 96-43 96-96s-43-96-96-96c-35.5 0-66.6 19.3-83.2 48H296.2C316 40.1 369.3 0 432 0c79.5 0 144 64.5 144 144s-64.5 144-144 144c-27.7 0-53.5-7.8-75.5-21.3l35.4-35.4c12.2 5.6 25.8 8.7 40.1 8.7zM1.8 142.8C5.5 133.8 14.3 128 24 128H392c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-177 177V464h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H208 120c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V345.9L7 169c-6.9-6.9-8.9-17.2-5.2-26.2z"],"face-surprise":[512,512,[128558,"surprise"],"f5c2","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"],"bottle-water":[320,512,[],"e4c5","M120 0l80 0c13.3 0 24 10.7 24 24l0 40L96 64l0-40c0-13.3 10.7-24 24-24zM32 167.5c0-19.5 10-37.6 26.6-47.9l15.8-9.9C88.7 100.7 105.2 96 122.1 96l75.8 0c16.9 0 33.4 4.7 47.7 13.7l15.8 9.9C278 129.9 288 148 288 167.5c0 17-7.5 32.3-19.4 42.6C280.6 221.7 288 238 288 256c0 19.1-8.4 36.3-21.7 48c13.3 11.7 21.7 28.9 21.7 48s-8.4 36.3-21.7 48c13.3 11.7 21.7 28.9 21.7 48c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64c0-19.1 8.4-36.3 21.7-48C40.4 388.3 32 371.1 32 352s8.4-36.3 21.7-48C40.4 292.3 32 275.1 32 256c0-18 7.4-34.3 19.4-45.9C39.5 199.7 32 184.5 32 167.5zM96 240c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0c-8.8 0-16 7.2-16 16zm16 112c-8.8 0-16 7.2-16 16s7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0z"],"circle-pause":[512,512,[62092,"pause-circle"],"f28b","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM224 192V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32z"],"toilet-paper-slash":[640,512,[],"e072","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-109.7-86C569.9 374 608 291.9 608 192C608 86 565 0 512 0s-96 86-96 192c0 49.1 9.2 93.9 24.4 127.9l-59-46.2c1.6-24.8 2.6-52 2.6-81.6c0-65.5 13.2-142.4 60.2-192H160c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM367.3 385.4L66.5 148.4C64.9 162.4 64 177 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512H285.9c22.3 0 45.4-12.1 55.4-36.1c7.4-17.7 17.5-47.2 26-90.6zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z"],"apple-whole":[448,512,[127822,127823,"apple-alt"],"f5d1","M224 112c-8.8 0-16-7.2-16-16V80c0-44.2 35.8-80 80-80h16c8.8 0 16 7.2 16 16V32c0 44.2-35.8 80-80 80H224zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z"],"kitchen-set":[576,512,[],"e51a","M240 144A96 96 0 1 0 48 144a96 96 0 1 0 192 0zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112h71.8c8.8-9.8 21.6-16 35.8-16H496c26.5 0 48 21.5 48 48s-21.5 48-48 48H392c-14.2 0-27-6.2-35.8-16H284.4zM144 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c13.3 0 24 10.7 24 24v8h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H280c-13.3 0-24-10.7-24-24s10.7-24 24-24h96v-8c0-13.3 10.7-24 24-24zM288 464V352H512V464c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48zM48 320h80 16 32c26.5 0 48 21.5 48 48s-21.5 48-48 48H160c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V336c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160v32h16zM24 464H200c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24z"],r:[320,512,[114],"52","M64 32C28.7 32 0 60.7 0 96V288 448c0 17.7 14.3 32 32 32s32-14.3 32-32V320h95.3L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144H64zM176 256H64V96H176c44.2 0 80 35.8 80 80s-35.8 80-80 80z"],"temperature-quarter":[320,512,["temperature-1","thermometer-1","thermometer-quarter"],"f2ca","M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z"],cube:[512,512,[],"f1b2","M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6V377.4c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4V134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1v-188L288 246.6v188z"],"bitcoin-sign":[320,512,[],"e0b4","M48 32C48 14.3 62.3 0 80 0s32 14.3 32 32V64h32V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64c0 1.5-.1 3.1-.3 4.5C254.1 82.2 288 125.1 288 176c0 24.2-7.7 46.6-20.7 64.9c31.7 19.8 52.7 55 52.7 95.1c0 61.9-50.1 112-112 112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H41.7C18.7 448 0 429.3 0 406.3V288 265.7 224 101.6C0 80.8 16.8 64 37.6 64H48V32zM64 224H176c26.5 0 48-21.5 48-48s-21.5-48-48-48H64v96zm112 64H64v96H208c26.5 0 48-21.5 48-48s-21.5-48-48-48H176z"],"shield-dog":[512,512,[],"e573","M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8c35.3 0 64-28.7 64-64V160h44.2c12.1 0 23.2 6.8 28.6 17.7L320 192h64c8.8 0 16 7.2 16 16v32c0 44.2-35.8 80-80 80H272v50.7c0 7.3-5.9 13.3-13.3 13.3c-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4c0-2.8 .6-5.5 1.9-8l15-30zM160 160h40 8v32 32c0 17.7-14.3 32-32 32s-32-14.3-32-32V176c0-8.8 7.2-16 16-16zm128 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z"],"solar-panel":[640,512,[],"f5ba","M122.2 0C91.7 0 65.5 21.5 59.5 51.4L8.3 307.4C.4 347 30.6 384 71 384H288v64H224c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H569c40.4 0 70.7-36.9 62.8-76.6l-51.2-256C574.5 21.5 548.3 0 517.8 0H122.2zM260.9 64H379.1l10.4 104h-139L260.9 64zM202.3 168H101.4L122.2 64h90.4L202.3 168zM91.8 216H197.5L187.1 320H71L91.8 216zm153.9 0H394.3l10.4 104-169.4 0 10.4-104zm196.8 0H548.2L569 320h-116L442.5 216zm96-48H437.7L427.3 64h90.4l31.4-6.3L517.8 64l20.8 104z"],"lock-open":[576,512,[],"f3c1","M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z"],elevator:[512,512,[],"e16d","M132.7 4.7l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H208c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H64zm96 96a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM80 400c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V400zm192 0c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32V400zm32-128a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM356.7 91.3c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5 0 432 0H304c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64z"],"money-bill-transfer":[640,512,[],"e528","M535 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L384 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l174.1 0L535 41zM105 377l-23 23L256 400c13.3 0 24 10.7 24 24s-10.7 24-24 24L81.9 448l23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 441c-4.5-4.5-7-10.6-7-17s2.5-12.5 7-17l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM96 64H337.9c-3.7 7.2-5.9 15.3-5.9 24c0 28.7 23.3 52 52 52l117.4 0c-4 17 .6 35.5 13.8 48.8c20.3 20.3 53.2 20.3 73.5 0L608 169.5V384c0 35.3-28.7 64-64 64H302.1c3.7-7.2 5.9-15.3 5.9-24c0-28.7-23.3-52-52-52l-117.4 0c4-17-.6-35.5-13.8-48.8c-20.3-20.3-53.2-20.3-73.5 0L32 342.5V128c0-35.3 28.7-64 64-64zm64 64H96v64c35.3 0 64-28.7 64-64zM544 320c-35.3 0-64 28.7-64 64h64V320zM320 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z"],"money-bill-trend-up":[512,512,[],"e529","M470.7 9.4c3 3.1 5.3 6.6 6.9 10.3s2.4 7.8 2.4 12.2l0 .1v0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3L310.6 214.6c-11.8 11.8-30.8 12.6-43.5 1.7L176 138.1 84.8 216.3c-13.4 11.5-33.6 9.9-45.1-3.5s-9.9-33.6 3.5-45.1l112-96c12-10.3 29.7-10.3 41.7 0l89.5 76.7L370.7 64H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0c8.8 0 16.8 3.6 22.6 9.3l.1 .1zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z"],"house-flood-water-circle-arrow-right":[640,512,[],"e50f","M288 144A144 144 0 1 0 0 144a144 144 0 1 0 288 0zM140.7 76.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L169.4 160H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h89.4L140.7 99.3c-6.2-6.2-6.2-16.4 0-22.6zM320 144c0 57.3-27.4 108.2-69.8 140.3c11.8-3.6 23-9.4 33-16.2c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c2.1 1.7 4.2 3.3 6.5 4.9l-.3-84.4H576c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128C407.6-2 392.4-2 381.2 6.1L301 64.4c12.1 23.9 19 50.9 19 79.6zm18.5 165.9c-11.1-7.9-25.9-7.9-37 0C279 325.4 251.5 336 224 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 389.7 191 400 224 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C471.4 325.2 442.9 336 416 336c-27.5 0-55-10.6-77.5-26.1zm0 112c-11.1-7.9-25.9-7.9-37 0C279 437.4 251.5 448 224 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 501.7 191 512 224 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C471.4 437.2 442.9 448 416 448c-27.5 0-55-10.6-77.5-26.1z"],"square-poll-horizontal":[448,512,["poll-h"],"f682","M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z"],circle:[512,512,[128308,128309,128992,128993,128994,128995,128996,9679,9898,9899,11044,61708,61915],"f111","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z"],"backward-fast":[512,512,[9198,"fast-backward"],"f049","M493.6 445c-11.2 5.3-24.5 3.6-34.1-4.4L288 297.7V416c0 12.4-7.2 23.7-18.4 29s-24.5 3.6-34.1-4.4L64 297.7V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V214.3L235.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S288 83.6 288 96V214.3L459.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S512 83.6 512 96V416c0 12.4-7.2 23.7-18.4 29z"],recycle:[512,512,[9842,9850,9851],"f1b8","M174.7 45.1C192.2 17 223 0 256 0s63.8 17 81.3 45.1l38.6 61.7 27-15.6c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3l-23.4 87.4c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l28.4-16.4L283 79c-5.8-9.3-16-15-27-15s-21.2 5.7-27 15l-17.5 28c-9.2 14.8-28.6 19.5-43.6 10.5c-15.3-9.2-20.2-29.2-10.7-44.4l17.5-28zM429.5 251.9c15-9 34.4-4.3 43.6 10.5l24.4 39.1c9.4 15.1 14.4 32.4 14.6 50.2c.3 53.1-42.7 96.4-95.8 96.4L320 448v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2v32l96.2 0c17.6 0 31.9-14.4 31.8-32c0-5.9-1.7-11.7-4.8-16.7l-24.4-39.1c-9.5-15.2-4.7-35.2 10.7-44.4zm-364.6-31L36 204.2c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20l87.4-23.4c12.8-3.4 26 4.2 29.4 17L182 241.2c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-26.5-15.3L68.8 335.3c-3.1 5-4.8 10.8-4.8 16.7c-.1 17.6 14.2 32 31.8 32l32.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.2 0C42.7 448-.3 404.8 0 351.6c.1-17.8 5.1-35.1 14.6-50.2l50.3-80.5z"],"user-astronaut":[448,512,[],"f4fb","M370.7 96.1C346.1 39.5 289.7 0 224 0S101.9 39.5 77.3 96.1C60.9 97.5 48 111.2 48 128v64c0 16.8 12.9 30.5 29.3 31.9C101.9 280.5 158.3 320 224 320s122.1-39.5 146.7-96.1c16.4-1.4 29.3-15.1 29.3-31.9V128c0-16.8-12.9-30.5-29.3-31.9zM336 144v16c0 53-43 96-96 96H208c-53 0-96-43-96-96V144c0-26.5 21.5-48 48-48H288c26.5 0 48 21.5 48 48zM189.3 162.7l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM112.7 316.5C46.7 342.6 0 407 0 482.3C0 498.7 13.3 512 29.7 512H128V448c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64l98.3 0c16.4 0 29.7-13.3 29.7-29.7c0-75.3-46.7-139.7-112.7-165.8C303.9 338.8 265.5 352 224 352s-79.9-13.2-111.3-35.5zM176 448c-8.8 0-16 7.2-16 16v48h32V464c0-8.8-7.2-16-16-16zm96 32a16 16 0 1 0 0-32 16 16 0 1 0 0 32z"],"plane-slash":[640,512,[],"e069","M440.6 320h73.8c34.2 0 93.7-28 93.7-64c0-35-59.5-64-93.7-64l-116.6 0L297.2 16.1C291.5 6.2 280.9 0 269.4 0H213.2c-10.6 0-18.3 10.2-15.4 20.4l40.3 140.9L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320zm-78.1 61.6L41.5 128.7C36 130.6 32 135.9 32 142c0 1.3 .2 2.6 .5 3.9L64 256 32.5 366.1c-.4 1.3-.5 2.6-.5 3.9c0 7.8 6.3 14 14 14H88c5 0 9.8-2.4 12.8-6.4L144 320H246.9l-49 171.6c-2.9 10.2 4.8 20.4 15.4 20.4l56.2 0c11.5 0 22.1-6.2 27.8-16.1l65.3-114.3z"],trademark:[640,512,[8482],"f25c","M345.6 108.8c-8.3-11-22.7-15.5-35.7-11.2S288 114.2 288 128V384c0 17.7 14.3 32 32 32s32-14.3 32-32V224l86.4 115.2c6 8.1 15.5 12.8 25.6 12.8s19.6-4.7 25.6-12.8L576 224V384c0 17.7 14.3 32 32 32s32-14.3 32-32V128c0-13.8-8.8-26-21.9-30.4s-27.5 .1-35.7 11.2L464 266.7 345.6 108.8zM0 128c0 17.7 14.3 32 32 32H96V384c0 17.7 14.3 32 32 32s32-14.3 32-32V160h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32C14.3 96 0 110.3 0 128z"],basketball:[512,512,[127936,"basketball-ball"],"f434","M86.6 64l85.2 85.2C194.5 121.7 208 86.4 208 48c0-14.7-2-28.9-5.7-42.4C158.6 15 119 35.5 86.6 64zM64 86.6C35.5 119 15 158.6 5.6 202.3C19.1 206 33.3 208 48 208c38.4 0 73.7-13.5 101.3-36.1L64 86.6zM256 0c-7.3 0-14.6 .3-21.8 .9C238 16 240 31.8 240 48c0 47.3-17.1 90.5-45.4 124L256 233.4 425.4 64C380.2 24.2 320.9 0 256 0zM48 240c-16.2 0-32-2-47.1-5.8C.3 241.4 0 248.7 0 256c0 64.9 24.2 124.2 64 169.4L233.4 256 172 194.6C138.5 222.9 95.3 240 48 240zm463.1 37.8c.6-7.2 .9-14.5 .9-21.8c0-64.9-24.2-124.2-64-169.4L278.6 256 340 317.4c33.4-28.3 76.7-45.4 124-45.4c16.2 0 32 2 47.1 5.8zm-4.7 31.9C492.9 306 478.7 304 464 304c-38.4 0-73.7 13.5-101.3 36.1L448 425.4c28.5-32.3 49.1-71.9 58.4-115.7zM340.1 362.7C317.5 390.3 304 425.6 304 464c0 14.7 2 28.9 5.7 42.4C353.4 497 393 476.5 425.4 448l-85.2-85.2zM317.4 340L256 278.6 86.6 448c45.1 39.8 104.4 64 169.4 64c7.3 0 14.6-.3 21.8-.9C274 496 272 480.2 272 464c0-47.3 17.1-90.5 45.4-124z"],"satellite-dish":[512,512,[128225],"f7c0","M192 32c0-17.7 14.3-32 32-32C383.1 0 512 128.9 512 288c0 17.7-14.3 32-32 32s-32-14.3-32-32C448 164.3 347.7 64 224 64c-17.7 0-32-14.3-32-32zM60.6 220.6L164.7 324.7l28.4-28.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1l-28.4 28.4L291.4 451.4c14.5 14.5 11.8 38.8-7.3 46.3C260.5 506.9 234.9 512 208 512C93.1 512 0 418.9 0 304c0-26.9 5.1-52.5 14.4-76.1c7.5-19 31.8-21.8 46.3-7.3zM224 96c106 0 192 86 192 192c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-70.7-57.3-128-128-128c-17.7 0-32-14.3-32-32s14.3-32 32-32z"],"circle-up":[512,512,[61467,"arrow-alt-circle-up"],"f35b","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM135.1 217.4l107.1-99.9c3.8-3.5 8.7-5.5 13.8-5.5s10.1 2 13.8 5.5l107.1 99.9c4.5 4.2 7.1 10.1 7.1 16.3c0 12.3-10 22.3-22.3 22.3H304v96c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V256H150.3C138 256 128 246 128 233.7c0-6.2 2.6-12.1 7.1-16.3z"],"mobile-screen-button":[384,512,["mobile-alt"],"f3cd","M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM224 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM304 64H80V384H304V64z"],"volume-high":[640,512,[128266,"volume-up"],"f028","M533.6 32.5C598.5 85.2 640 165.8 640 256s-41.5 170.7-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z"],"users-rays":[640,512,[],"e593","M41 7C31.6-2.3 16.4-2.3 7 7S-2.3 31.6 7 41l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41 7zM599 7L527 79c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7 505c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 471c-9.4 9.4-9.4 24.6 0 33.9zm592 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM212.1 336c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-.5-1.4-1-2.7-1.6-4c-9.4-22.3-29.8-38.9-54.3-43c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-.8 .1-1.7 .3-2.5 .5c-24.9 5.1-45.1 23-53.4 46.5zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"],wallet:[512,512,[],"f555","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H80c-8.8 0-16-7.2-16-16s7.2-16 16-16H448c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM416 272a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"clipboard-check":[384,512,[],"f46c","M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"],"file-audio":[384,512,[],"f1c7","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376H80c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h33.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z"],burger:[512,512,["hamburger"],"f805","M61.1 224C45 224 32 211 32 194.9c0-1.9 .2-3.7 .6-5.6C37.9 168.3 78.8 32 256 32s218.1 136.3 223.4 157.3c.5 1.9 .6 3.7 .6 5.6c0 16.1-13 29.1-29.1 29.1H61.1zM144 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm240 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM272 96a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM16 304c0-26.5 21.5-48 48-48H448c26.5 0 48 21.5 48 48s-21.5 48-48 48H64c-26.5 0-48-21.5-48-48zm16 96c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16v16c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V400z"],wrench:[512,512,[128295],"f0ad","M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],bugs:[576,512,[],"e4d0","M164.5 107.4l33.4-73.5c5.5-12.1 .1-26.3-11.9-31.8s-26.3-.1-31.8 11.9L128 71.7 101.9 14.1C96.4 2 82.1-3.3 70.1 2.1S52.7 21.9 58.1 33.9l33.4 73.5c-10.2 7.1-18.2 17-22.9 28.6h-17l-4.1-20.7c-2.6-13-15.2-21.4-28.2-18.8S-2.1 111.7 .5 124.7l8 40C10.7 175.9 20.6 184 32 184H64v23.3l-37.8 9.5c-9.5 2.4-16.6 10.2-17.9 19.9l-8 56c-1.9 13.1 7.2 25.3 20.4 27.2s25.3-7.2 27.2-20.4l5.7-40 18.4-4.6C82.7 274.6 103.8 288 128 288s45.3-13.4 56.1-33.2l18.4 4.6 5.7 40c1.9 13.1 14 22.2 27.2 20.4s22.2-14 20.4-27.2l-8-56c-1.4-9.7-8.5-17.5-17.9-19.9L192 207.3V184h32c11.4 0 21.3-8.1 23.5-19.3l8-40c2.6-13-5.8-25.6-18.8-28.2s-25.6 5.8-28.2 18.8L204.3 136h-17c-4.7-11.6-12.7-21.5-22.9-28.6zM496 286.5l65.6-47c10.8-7.7 13.3-22.7 5.6-33.5s-22.7-13.3-33.5-5.6l-51.4 36.8 6.1-62.9c1.3-13.2-8.4-24.9-21.6-26.2s-24.9 8.4-26.2 21.6L432.8 250c-12.3 1-24.2 5.6-34.1 13.3L384 254.8l6.8-20c4.2-12.6-2.5-26.2-15-30.4s-26.2 2.5-30.4 15l-13.1 38.6c-3.7 10.8 .8 22.8 10.7 28.5l27.7 16L359 322.7 321.5 312c-9.4-2.7-19.5 .6-25.5 8.3l-34.9 44.5c-8.2 10.4-6.4 25.5 4.1 33.7s25.5 6.4 33.7-4.1l25-31.8 18.2 5.2c-.5 22.6 11 44.7 32 56.8s45.9 11 65.2-.7l13.6 13.2-15.1 37.5c-4.9 12.3 1 26.3 13.3 31.2s26.3-1 31.2-13.3L503.5 440c3.6-9.1 1.4-19.4-5.6-26.2l-28-27.1 11.6-20.1 27.7 16c9.9 5.7 22.5 3.7 30-4.9L566.2 347c8.7-10 7.8-25.1-2.2-33.9s-25.1-7.8-33.9 2.2l-13.9 15.9-14.7-8.5c1.7-12.4-.2-25-5.5-36.2z"],"rupee-sign":[448,512,[8360,"rupee"],"f156","M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256.5 16.4c-.9 6 0 8.7 .4 9.8c.4 1.1 1.4 2.6 4.2 4.9c7.2 5.7 18.7 10 37.9 16.8l1.3 .5c16 5.6 38.7 13.6 55.7 28.1c9.5 8.1 17.9 18.6 23.1 32.3c5.1 13.7 6.1 28.5 3.8 44c-4.2 28.1-20.5 49.3-43.8 60.9c-22.1 11-48.1 12.5-73.2 8l-.2 0 0 0c-9.3-1.8-20.5-5.7-29.3-9c-6-2.3-12.6-4.9-17.7-6.9l0 0c-2.5-1-4.6-1.8-6.3-2.5c-16.5-6.4-24.6-25-18.2-41.4s24.9-24.6 41.4-18.2c2.6 1 5.2 2 7.9 3.1l0 0c4.8 1.9 9.8 3.9 15.4 6c8.8 3.3 15.3 5.4 18.7 6c15.7 2.8 26.7 .8 32.9-2.3c5-2.5 8-6 9.1-13c1-6.9 .2-10.5-.5-12.3c-.6-1.7-1.8-3.6-4.5-5.9c-6.9-5.8-18.2-10.4-36.9-17l-3-1.1c-15.5-5.4-37-13-53.3-25.9c-9.5-7.5-18.3-17.6-23.7-31c-5.5-13.4-6.6-28-4.4-43.2c8.4-57.1 67-78 116.9-68.9c6.9 1.3 27.3 5.8 35.4 8.4c16.9 5.2 26.3 23.2 21.1 40.1s-23.2 26.3-40.1 21.1c-4.7-1.4-22.3-5.5-27.9-6.5c-14.6-2.7-25.8-.4-32.6 3.2c-6.3 3.3-8.9 7.6-9.5 12z"],"file-image":[384,512,[128443],"f1c5","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm152 32c5.3 0 10.2 2.6 13.2 6.9l88 128c3.4 4.9 3.7 11.3 1 16.5s-8.2 8.6-14.2 8.6H216 176 128 80c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l48-80c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l12.8 21.4 48.3-70.2c3-4.3 7.9-6.9 13.2-6.9z"],"circle-question":[512,512,[62108,"question-circle"],"f059","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],"plane-departure":[640,512,[128747],"f5b0","M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2H248.4c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48H542.8c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z"],"handshake-slash":[640,512,[],"e060","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.3-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM413.6 421.9L128 196.8V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6zM96 171.6L40.6 128H16c-8.8 0-16 7.2-16 16V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V171.6zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V144c0-8.8-7.2-16-16-16H544zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z"],"book-bookmark":[448,512,[],"e0bb","M0 96C0 43 43 0 96 0h96V190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5V0h32 32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32z"],"code-branch":[448,512,[],"f126","M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3v87.8c18.8-10.9 40.7-17.1 64-17.1h96c35.3 0 64-28.7 64-64v-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V160c0 70.7-57.3 128-128 128H176c-35.3 0-64 28.7-64 64v6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V352 153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],"hat-cowboy":[640,512,[],"f8c0","M320 64c14.4 0 22.3-7 30.8-14.4C360.4 41.1 370.7 32 392 32c49.3 0 84.4 152.2 97.9 221.9C447.8 272.1 390.9 288 320 288s-127.8-15.9-169.9-34.1C163.6 184.2 198.7 32 248 32c21.3 0 31.6 9.1 41.2 17.6C297.7 57 305.6 64 320 64zM111.1 270.7c47.2 24.5 117.5 49.3 209 49.3s161.8-24.8 208.9-49.3c24.8-12.9 49.8-28.3 70.1-47.7c7.9-7.9 20.2-9.2 29.6-3.3c9.5 5.9 13.5 17.9 9.9 28.5c-13.5 37.7-38.4 72.3-66.1 100.6C523.7 398.9 443.6 448 320 448s-203.6-49.1-252.5-99.2C39.8 320.4 14.9 285.8 1.4 248.1c-3.6-10.6 .4-22.6 9.9-28.5c9.5-5.9 21.7-4.5 29.6 3.3c20.4 19.4 45.3 34.8 70.1 47.7z"],bridge:[576,512,[],"e4c8","M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H72v64H0V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96s96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96V160H504V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM456 96v64H376V96h80zM328 96v64H248V96h80zM200 96v64H120V96h80z"],"phone-flip":[512,512,[128381,"phone-alt"],"f879","M347.1 24.6c7.7-18.6 28-28.5 47.4-23.2l88 24C499.9 30.2 512 46 512 64c0 247.4-200.6 448-448 448c-18 0-33.8-12.1-38.6-29.5l-24-88c-5.3-19.4 4.6-39.7 23.2-47.4l96-40c16.3-6.8 35.2-2.1 46.3 11.6L207.3 368c70.4-33.3 127.4-90.3 160.7-160.7L318.7 167c-13.7-11.2-18.4-30-11.6-46.3l40-96z"],"truck-front":[512,512,[],"e2b7","M0 80C0 35.8 35.8 0 80 0H432c44.2 0 80 35.8 80 80V368c0 26.2-12.6 49.4-32 64v48c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V432C12.6 417.4 0 394.2 0 368V80zm129.9 72.2L112 224H400l-17.9-71.8C378.5 138 365.7 128 351 128H161c-14.7 0-27.5 10-31 24.2zM128 320a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],cat:[576,512,[128008],"f6be","M320 192h17.1c22.1 38.3 63.5 64 110.9 64c11 0 21.8-1.4 32-4v4 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V339.2L280 448h56c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-53 0-96-43-96-96V192.5c0-16.1-12-29.8-28-31.8l-7.9-1c-17.5-2.2-30-18.2-27.8-35.7s18.2-30 35.7-27.8l7.9 1c48 6 84.1 46.8 84.1 95.3v85.3c34.4-51.7 93.2-85.8 160-85.8zm160 26.5v0c-10 3.5-20.8 5.5-32 5.5c-28.4 0-54-12.4-71.6-32h0c-3.7-4.1-7-8.5-9.9-13.2C357.3 164 352 146.6 352 128v0V32 12 10.7C352 4.8 356.7 .1 362.6 0h.2c3.3 0 6.4 1.6 8.4 4.2l0 .1L384 21.3l27.2 36.3L416 64h64l4.8-6.4L512 21.3 524.8 4.3l0-.1c2-2.6 5.1-4.2 8.4-4.2h.2C539.3 .1 544 4.8 544 10.7V12 32v96c0 17.3-4.6 33.6-12.6 47.6c-11.3 19.8-29.6 35.2-51.4 42.9zM432 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z"],"anchor-circle-exclamation":[640,512,[],"e4ab","M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z"],"truck-field":[640,512,[],"e58d","M32 96c0-35.3 28.7-64 64-64H320c23.7 0 44.4 12.9 55.4 32h51.8c25.3 0 48.2 14.9 58.5 38l52.8 118.8c.5 1.1 .9 2.1 1.3 3.2H544c35.3 0 64 28.7 64 64v32c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V288c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32V96zM384 224h85.9l-42.7-96H384v96zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z"],route:[512,512,[],"f4d7","M512 96c0 50.2-59.1 125.1-84.6 155c-3.8 4.4-9.4 6.1-14.5 5H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c53 0 96 43 96 96s-43 96-96 96H139.6c8.7-9.9 19.3-22.6 30-36.8c6.3-8.4 12.8-17.6 19-27.2H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-53 0-96-43-96-96s43-96 96-96h39.8c-21-31.5-39.8-67.7-39.8-96c0-53 43-96 96-96s96 43 96 96zM117.1 489.1c-3.8 4.3-7.2 8.1-10.1 11.3l-1.8 2-.2-.2c-6 4.6-14.6 4-20-1.8C59.8 473 0 402.5 0 352c0-53 43-96 96-96s96 43 96 96c0 30-21.1 67-43.5 97.9c-10.7 14.7-21.7 28-30.8 38.5l-.6 .7zM128 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"clipboard-question":[384,512,[],"e4e3","M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V314.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H158.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],panorama:[640,512,[],"e209","M45.6 32C20.4 32 0 52.4 0 77.6V434.4C0 459.6 20.4 480 45.6 480c5.1 0 10-.8 14.7-2.4C74.6 472.8 177.6 440 320 440s245.4 32.8 259.6 37.6c4.7 1.6 9.7 2.4 14.7 2.4c25.2 0 45.6-20.4 45.6-45.6V77.6C640 52.4 619.6 32 594.4 32c-5 0-10 .8-14.7 2.4C565.4 39.2 462.4 72 320 72S74.6 39.2 60.4 34.4C55.6 32.8 50.7 32 45.6 32zM96 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm272 0c7.9 0 15.4 3.9 19.8 10.5L512.3 353c5.4 8 5.6 18.4 .4 26.5s-14.7 12.3-24.2 10.7C442.7 382.4 385.2 376 320 376c-65.6 0-123.4 6.5-169.3 14.4c-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L197.3 265c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l26.4 33.1 87-127.6c4.5-6.6 11.9-10.5 19.8-10.5z"],"comment-medical":[512,512,[],"f7f5","M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM224 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V272H176c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z"],"teeth-open":[576,512,[],"f62f","M96 32C43 32 0 75 0 128v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-53-43-96-96-96H96zM224 96c26.5 0 48 21.5 48 48v56c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V144c0-26.5 21.5-48 48-48zm80 48c0-26.5 21.5-48 48-48s48 21.5 48 48v56c0 13.3-10.7 24-24 24H328c-13.3 0-24-10.7-24-24V144zM96 128c26.5 0 48 21.5 48 48v24c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V176c0-26.5 21.5-48 48-48zm336 48c0-26.5 21.5-48 48-48s48 21.5 48 48v24c0 13.3-10.7 24-24 24H456c-13.3 0-24-10.7-24-24V176zM96 480H480c53 0 96-43 96-96V352c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v32c0 53 43 96 96 96zm0-64c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48zm176 48c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48z"],"file-circle-minus":[576,512,[],"e4ed","M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z"],tags:[512,512,[],"f02c","M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5V80C0 53.5 21.5 32 48 32H197.5c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],"wine-glass":[320,512,[127863],"f4e3","M32.1 29.3C33.5 12.8 47.4 0 64 0H256c16.6 0 30.5 12.8 31.9 29.3l14 168.4c6 72-42.5 135.2-109.9 150.6V448h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H160 80c-17.7 0-32-14.3-32-32s14.3-32 32-32h48V348.4C60.6 333 12.1 269.8 18.1 197.8l14-168.4zm56 98.7H231.9l-5.3-64H93.4l-5.3 64z"],"forward-fast":[512,512,[9197,"fast-forward"],"f050","M18.4 445c11.2 5.3 24.5 3.6 34.1-4.4L224 297.7V416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4L448 297.7V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96c0-17.7-14.3-32-32-32s-32 14.3-32 32V214.3L276.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S224 83.6 224 96V214.3L52.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S0 83.6 0 96V416c0 12.4 7.2 23.7 18.4 29z"],"face-meh-blank":[512,512,[128566,"meh-blank"],"f5a4","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm208.4-48a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"square-parking":[448,512,[127359,"parking"],"f540","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM192 256h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H192v64zm48 64H192v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 168c0-22.1 17.9-40 40-40h72c53 0 96 43 96 96s-43 96-96 96z"],"house-signal":[576,512,[],"e012","M357.7 8.5c-12.3-11.3-31.2-11.3-43.4 0l-208 192c-9.4 8.6-12.7 22-8.5 34c87.1 25.3 155.6 94.2 180.3 181.6H464c26.5 0 48-21.5 48-48V256h32c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8.1-35.2l-208-192zM288 208c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V208zM24 256c-13.3 0-24 10.7-24 24s10.7 24 24 24c101.6 0 184 82.4 184 184c0 13.3 10.7 24 24 24s24-10.7 24-24c0-128.1-103.9-232-232-232zm8 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM0 376c0 13.3 10.7 24 24 24c48.6 0 88 39.4 88 88c0 13.3 10.7 24 24 24s24-10.7 24-24c0-75.1-60.9-136-136-136c-13.3 0-24 10.7-24 24z"],"bars-progress":[512,512,["tasks-alt"],"f828","M448 160H320V128H448v32zM48 64C21.5 64 0 85.5 0 112v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zM448 352v32H192V352H448zM48 288c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H48z"],"faucet-drip":[512,512,[128688],"e006","M224 0c17.7 0 32 14.3 32 32V44l96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12V32c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32h96l22.6-22.6c6-6 14.1-9.4 22.6-9.4H192V116.2l32-4 32 4V160h18.7c8.5 0 16.6 3.4 22.6 9.4L320 192h32c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32s-14.3-32-32-32H315.9c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48H32c-17.7 0-32-14.3-32-32V224zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V480c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z"],"cart-flatbed":[640,512,["dolly-flatbed"],"f474","M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64H48c8.8 0 16 7.2 16 16V368c0 44.2 35.8 80 80 80h18.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H450.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H144c-8.8 0-16-7.2-16-16V80C128 35.8 92.2 0 48 0H32zM192 80V272c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H464V176c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L400 163.2l-39.1 26.1c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1V32H240c-26.5 0-48 21.5-48 48z"],"ban-smoking":[512,512,[128685,"smoking-ban"],"f54d","M99.5 144.8L178.7 224l96 96 92.5 92.5C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32H384v32H333.3zm32 32H400c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H269.3L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM272 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16s7.2 16 16 16s16-7.2 16-16c0-26.5-21.5-48-48-48H304c-8.8 0-16-7.2-16-16s-7.2-16-16-16zM229.5 320l-96-96H112c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H229.5z"],terminal:[576,512,[],"f120","M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32z"],"mobile-button":[384,512,[],"f10b","M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zM192 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"house-medical-flag":[640,512,[],"e514","M480 0c17.7 0 32 14.3 32 32H624c8.8 0 16 7.2 16 16V176c0 8.8-7.2 16-16 16H512V512H448V192 32c0-17.7 14.3-32 32-32zM276.8 39.7L416 159V512h1l-.2 0H96c-17.7 0-32-14.3-32-32V288H32c-13.4 0-25.4-8.3-30-20.9s-1-26.7 9.2-35.4l224-192c12-10.3 29.7-10.3 41.7 0zM224 208v48H176c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H288V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16z"],"basket-shopping":[576,512,["shopping-basket"],"f291","M253.3 35.1c6.1-11.8 1.5-26.3-10.2-32.4s-26.3-1.5-32.4 10.2L117.6 192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32L83.9 463.5C91 492 116.6 512 146 512H430c29.4 0 55-20 62.1-48.5L544 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H458.4L365.3 12.9C359.2 1.2 344.7-3.4 332.9 2.7s-16.3 20.6-10.2 32.4L404.3 192H171.7L253.3 35.1zM192 304v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16zm96-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16z"],tape:[576,512,[],"f4db","M380.8 416c41.5-40.7 67.2-97.3 67.2-160C448 132.3 347.7 32 224 32S0 132.3 0 256S100.3 480 224 480H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H380.8zM224 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm64 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z"],"bus-simple":[448,512,["bus-alt"],"f55e","M224 0C348.8 0 448 35.2 448 80V96 416c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32V96 80C0 35.2 99.2 0 224 0zM64 128V256c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],eye:[576,512,[128065],"f06e","M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z"],"face-sad-cry":[512,512,[128557,"sad-cry"],"f5b3","M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V477.8C51.5 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 94.8-51.5 177.5-128 221.8V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V493.4zM195.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm121.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM208 336v32c0 26.5 21.5 48 48 48s48-21.5 48-48V336c0-26.5-21.5-48-48-48s-48 21.5-48 48z"],"audio-description":[576,512,[],"f29e","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM213.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7l-9.4-18.9H150.9l-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zm-.4 106.6L192 237.7l-21.1 42.2h42.2zM304 184c0-13.3 10.7-24 24-24h56c53 0 96 43 96 96s-43 96-96 96H328c-13.3 0-24-10.7-24-24V184zm48 24v96h32c26.5 0 48-21.5 48-48s-21.5-48-48-48H352z"],"person-military-to-person":[512,512,[],"e54c","M71 12.5c-8.6 1-15 8.2-15 16.8c0 9.3 7.5 16.8 16.7 16.9H184.1c8.8-.1 15.9-7.2 15.9-16V16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1H66.5C64.9 83.8 64 89.8 64 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256v32c0 17.7 14.3 32 32 32H192c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5V256c0-35.3-28.7-64-64-64H96c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32H448c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H352zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376v32l-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0v32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 2.9 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9s14.1-12.4 14.1-21.9l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z"],"file-shield":[576,512,[],"e4f0","M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v47l-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z"],"user-slash":[640,512,[],"f506","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L353.3 251.6C407.9 237 448 187.2 448 128C448 57.3 390.7 0 320 0C250.2 0 193.5 55.8 192 125.2L38.8 5.1zM264.3 304.3C170.5 309.4 96 387.2 96 482.3c0 16.4 13.3 29.7 29.7 29.7H514.3c3.9 0 7.6-.7 11-2.1l-261-205.6z"],pen:[512,512,[128394],"f304","M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z"],"tower-observation":[512,512,[],"e586","M241.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9C439 137.5 427.7 144 416 144v80c0 17.7-14.3 32-32 32h-4.9l32 192H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H384.5c-.4 0-.8 0-1.1 0H128.6c-.4 0-.8 0-1.1 0H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l32-192H128c-17.7 0-32-14.3-32-32V144c-11.7 0-23-6.5-28.6-17.7c-7.9-15.8-1.5-35 14.3-42.9l160-80zM314.5 448L256 399.2 197.5 448h117zM197.8 256l-4.7 28.3L256 336.8l62.9-52.5L314.2 256H197.8zm-13.9 83.2l-11.2 67L218.5 368l-34.6-28.8zM293.5 368l45.8 38.1-11.2-67L293.5 368zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176z"],"file-code":[384,512,[],"f1c9","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z"],signal:[640,512,[128246,"signal-5","signal-perfect"],"f012","M576 0c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM448 96c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM352 224V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zM192 288c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32zM96 416v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c0-17.7 14.3-32 32-32s32 14.3 32 32z"],bus:[576,512,[128653],"f207","M288 0C422.4 0 512 35.2 512 80V96l0 32c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H192v32c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h0V96h0V80C64 35.2 153.6 0 288 0zM128 160v96c0 17.7 14.3 32 32 32H272V128H160c-17.7 0-32 14.3-32 32zM304 288H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H304V288zM144 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM384 80c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16s7.2 16 16 16H368c8.8 0 16-7.2 16-16z"],"heart-circle-xmark":[576,512,[],"e501","M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z"],"house-chimney":[576,512,[63499,"home-lg"],"e3af","M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v64 24c0 22.1 17.9 40 40 40h24 32.5c1.4 0 2.8 0 4.2-.1c1.1 .1 2.2 .1 3.3 .1h16c22.1 0 40-17.9 40-40V455.8c.3-2.6 .5-5.3 .5-8.1l-.7-160.2h32z"],"window-maximize":[512,512,[128470],"f2d0","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32s14.3-32 32-32z"],"face-frown":[512,512,[9785,"frown"],"f119","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],prescription:[448,512,[],"f5b1","M32 0C14.3 0 0 14.3 0 32V192v96c0 17.7 14.3 32 32 32s32-14.3 32-32V224h50.7l128 128L137.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7l-85.8-85.8C251.4 209.1 288 164.8 288 112C288 50.1 237.9 0 176 0H32zM176 160H64V64H176c26.5 0 48 21.5 48 48s-21.5 48-48 48z"],shop:[640,512,["store-alt"],"f54f","M36.8 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM64 224V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 224H320V384H128V224H64zm448 0V480c0 17.7 14.3 32 32 32s32-14.3 32-32V224H512z"],"floppy-disk":[448,512,[128190,128426,"save"],"f0c7","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"],vihara:[640,512,[],"f6a7","M281 22L305.8 4.7c1.3-.9 2.7-1.8 4.1-2.4C313.1 .7 316.6 0 320 0s6.9 .7 10.1 2.2c1.4 .7 2.8 1.5 4.1 2.4L359 22C393 45.8 430.8 63.5 470.8 74.4l23 6.3c1.8 .5 3.6 1.1 5.2 2c3.2 1.7 5.9 4 8.1 6.8c3.8 4.9 5.6 11.3 4.7 17.8c-.4 2.8-1.2 5.4-2.5 7.8c-1.7 3.2-4 5.9-6.8 8.1c-4.3 3.2-9.6 5.1-15.1 4.9H480v56.1l6.4 5.1 5.2 4.1c21.1 16.7 45 29.6 70.5 38.1l28.9 9.6c1.6 .5 3.2 1.2 4.6 2c3.1 1.7 5.8 4.1 7.8 6.9s3.5 6.1 4.1 9.6c.5 2.7 .6 5.5 .1 8.3s-1.4 5.4-2.7 7.8c-1.7 3.1-4.1 5.8-6.9 7.8s-6.1 3.5-9.6 4.1c-1.6 .3-3.3 .4-5 .4H544v65.9c20.5 22.8 47.4 39.2 77.4 46.7C632 403 640 412.6 640 424c0 13.3-10.7 24-24 24H576v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H24c-13.3 0-24-10.7-24-24c0-11.4 8-21 18.6-23.4c30-7.6 56.9-23.9 77.4-46.7V288H56.6c-1.7 0-3.4-.1-5-.4c-3.5-.7-6.8-2.1-9.6-4.1s-5.2-4.7-7-7.8c-1.3-2.4-2.3-5-2.7-7.8s-.4-5.6 .1-8.3c.7-3.5 2.1-6.8 4.1-9.6s4.7-5.2 7.8-6.9c1.4-.8 3-1.5 4.6-2l28.9-9.6c25.5-8.5 49.4-21.4 70.5-38.1l5.2-4.1 6.4-5.1V176 128h-7.5c-5.5 .1-10.8-1.7-15.1-4.9c-2.8-2.1-5.1-4.8-6.8-8.1c-1.2-2.4-2.1-5-2.5-7.8c-.9-6.5 .9-12.8 4.7-17.8c2.1-2.8 4.8-5.1 8.1-6.8c1.6-.8 3.4-1.5 5.2-2l23-6.3C209.2 63.5 247 45.8 281 22zM416 128H320 224v64h72 48 72V128zM160 288v64H296h24 24H480V288H344 320h0H296 160z"],"scale-unbalanced":[640,512,["balance-scale-left"],"f515","M522.1 62.4c16.8-5.6 25.8-23.7 20.2-40.5S518.6-3.9 501.9 1.6l-113 37.7C375 15.8 349.3 0 320 0c-44.2 0-80 35.8-80 80c0 3 .2 5.9 .5 8.8L117.9 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2V480c0 17.7 14.3 32 32 32H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V153.3c21-9.2 37.2-27 44.2-49l125.9-42zM439.6 288L512 163.8 584.4 288H439.6zM512 384c62.9 0 115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L536.1 109.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L392.7 273.1c-5.7 9.8-9.3 21.1-6.7 32.1C396.8 350 449.1 384 512 384zM129.2 291.8L201.6 416H56.7l72.4-124.2zM3.2 433.1C14 478 66.3 512 129.2 512s115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L153.2 237.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L9.9 401.1c-5.7 9.8-9.3 21.1-6.7 32.1z"],"sort-up":[320,512,["sort-asc"],"f0de","M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z"],"comment-dots":[512,512,[128172,62075,"commenting"],"f4ad","M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],"plant-wilt":[512,512,[],"e5aa","M288 120c0-30.9 25.1-56 56-56s56 25.1 56 56v13c-29.3 10-48 34.5-48 70.1c0 27.9 25.3 74.8 66 111.6c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V120C464 53.7 410.3 0 344 0S224 53.7 224 120v21.8C207.3 133 188.2 128 168 128c-66.3 0-120 53.7-120 120v13c-29.3 10-48 34.5-48 70.1C0 359 25.3 405.9 66 442.7c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V248c0-30.9 25.1-56 56-56s56 25.1 56 56v32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V280 248 120z"],diamond:[512,512,[9830],"f219","M284.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z"],"face-grin-squint":[512,512,[128518,"grin-squint"],"f585","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM133.5 146.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z"],"hand-holding-dollar":[576,512,["hand-holding-usd"],"f4c0","M312 24V34.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8V232c0 13.3-10.7 24-24 24s-24-10.7-24-24V220.6c-9.5-2.3-18.2-5.3-25.6-7.8c-2.1-.7-4.1-1.4-6-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z"],bacterium:[512,512,[],"e05a","M423.1 30.6c3.6-12.7-3.7-26-16.5-29.7s-26 3.7-29.7 16.5l-4.2 14.7c-9.8-.4-19.9 .5-29.9 2.8c-12.1 2.8-23.7 5.9-34.9 9.4l-5.9-13.7c-5.2-12.2-19.3-17.8-31.5-12.6s-17.8 19.3-12.6 31.5l4.9 11.3c-22 9.4-42 20.1-60.2 31.8L196 82.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l7.8 11.6c-18 15-33.7 30.8-47.3 47.1L103 157.3c-10.4-8.3-25.5-6.6-33.7 3.7s-6.6 25.5 3.7 33.7l15 12c-2.1 3.2-4.1 6.5-6 9.7c-9.4 15.7-17 31-23.2 45.3l-9.9-3.9c-12.3-4.9-26.3 1.1-31.2 13.4s1.1 26.3 13.4 31.2l11.6 4.6c-.3 1.1-.6 2.1-.9 3.1c-3.5 12.5-5.7 23.2-7.1 31.3c-.7 4.1-1.2 7.5-1.6 10.3c-.2 1.4-.3 2.6-.4 3.6l-.1 1.4-.1 .6 0 .3 0 .1c0 0 0 .1 39.2 3.7l0 0-39.2-3.6c-.5 5-.6 10-.4 14.9l-14.7 4.2C4.7 380.6-2.7 393.8 .9 406.6s16.9 20.1 29.7 16.5l13.8-3.9c10.6 20.7 27.6 37.8 48.5 48.5l-3.9 13.7c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5l4.2-14.7c23.8 1 46.3-5.5 65.1-17.6L215 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c9.1-14.1 15.1-30.5 17-48.3l.1-.8c.3-1.7 1-5.1 2.3-9.8l.2-.8 12.6 5.4c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-11.3-4.8c9.9-14.9 24.9-31.6 48.6-46l2.1 7.5c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7L371 259.2c6.9-2.2 14.3-4.3 22.2-6.1c12.9-3 24.7-8 35.2-14.8L439 249c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c12.2-19 18.6-41.6 17.6-65.1l14.7-4.2c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5l-13.7 3.9c-10.8-21.2-28-38-48.5-48.5l3.9-13.8zM92.1 363.3l0 0L144 368l-51.9-4.7zM112 320a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM240 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],"hand-pointer":[448,512,[],"f25a","M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40V188.2c8.5-7.6 19.7-12.2 32-12.2c20.6 0 38.2 13 45 31.2c8.8-9.3 21.2-15.2 35-15.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48v48 16 48c0 70.7-57.3 128-128 128l-16 0H240l-.1 0h-5.2c-5 0-9.9-.3-14.7-1c-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7V40zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z"],"drum-steelpan":[576,512,[],"f56a","M288 32c159.1 0 288 48 288 128V352c0 80-128.9 128-288 128S0 432 0 352V160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8c-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4c0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5c47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4C56 130.1 48 150.1 48 160s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5c0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8C224.5 87 224 91.5 224 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2C330.8 81 309.8 80 288 80s-42.8 1-62.6 2.8z"],"hand-scissors":[512,512,[],"f257","M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9l0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z"],"hands-praying":[640,512,["praying-hands"],"f684","M351.2 4.8c3.2-2 6.6-3.3 10-4.1c4.7-1 9.6-.9 14.1 .1c7.7 1.8 14.8 6.5 19.4 13.6L514.6 194.2c8.8 13.1 13.4 28.6 13.4 44.4v73.5c0 6.9 4.4 13 10.9 15.2l79.2 26.4C631.2 358 640 370.2 640 384v96c0 9.9-4.6 19.3-12.5 25.4s-18.1 8.1-27.7 5.5L431 465.9c-56-14.9-95-65.7-95-123.7V224c0-17.7 14.3-32 32-32s32 14.3 32 32v80c0 8.8 7.2 16 16 16s16-7.2 16-16V219.1c0-7-1.8-13.8-5.3-19.8L340.3 48.1c-1.7-3-2.9-6.1-3.6-9.3c-1-4.7-1-9.6 .1-14.1c1.9-8 6.8-15.2 14.3-19.9zm-62.4 0c7.5 4.6 12.4 11.9 14.3 19.9c1.1 4.6 1.2 9.4 .1 14.1c-.7 3.2-1.9 6.3-3.6 9.3L213.3 199.3c-3.5 6-5.3 12.9-5.3 19.8V304c0 8.8 7.2 16 16 16s16-7.2 16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32V342.3c0 58-39 108.7-95 123.7l-168.7 45c-9.6 2.6-19.9 .5-27.7-5.5S0 490 0 480V384c0-13.8 8.8-26 21.9-30.4l79.2-26.4c6.5-2.2 10.9-8.3 10.9-15.2V238.5c0-15.8 4.7-31.2 13.4-44.4L245.2 14.5c4.6-7.1 11.7-11.8 19.4-13.6c4.6-1.1 9.4-1.2 14.1-.1c3.5 .8 6.9 2.1 10 4.1z"],"arrow-rotate-right":[512,512,[8635,"arrow-right-rotate","arrow-rotate-forward","redo"],"f01e","M386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H464c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z"],biohazard:[576,512,[9763],"f780","M173.2 0c-1.8 0-3.5 .7-4.8 2C138.5 32.3 120 74 120 120c0 26.2 6 50.9 16.6 73c-22 2.4-43.8 9.1-64.2 20.5C37.9 232.8 13.3 262.4 .4 296c-.7 1.7-.5 3.7 .5 5.2c2.2 3.7 7.4 4.3 10.6 1.3C64.2 254.3 158 245.1 205 324s-8.1 153.1-77.6 173.2c-4.2 1.2-6.3 5.9-4.1 9.6c1 1.6 2.6 2.7 4.5 3c36.5 5.9 75.2 .1 109.7-19.2c20.4-11.4 37.4-26.5 50.5-43.8c13.1 17.3 30.1 32.4 50.5 43.8c34.5 19.3 73.3 25.2 109.7 19.2c1.9-.3 3.5-1.4 4.5-3c2.2-3.7 .1-8.4-4.1-9.6C379.1 477.1 324 403 371 324s140.7-69.8 193.5-21.4c3.2 2.9 8.4 2.3 10.6-1.3c1-1.6 1.1-3.5 .5-5.2c-12.9-33.6-37.5-63.2-72.1-82.5c-20.4-11.4-42.2-18.1-64.2-20.5C450 170.9 456 146.2 456 120c0-46-18.5-87.7-48.4-118c-1.3-1.3-3-2-4.8-2c-5 0-8.4 5.2-6.7 9.9C421.7 80.5 385.6 176 288 176S154.3 80.5 179.9 9.9c1.7-4.7-1.6-9.9-6.7-9.9zM240 272a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM181.7 417.6c6.3-11.8 9.8-25.1 8.6-39.8c-19.5-18-34-41.4-41.2-67.8c-12.5-8.1-26.2-11.8-40-12.4c-9-.4-18.1 .6-27.1 2.7c7.8 57.1 38.7 106.8 82.9 139.4c6.8-6.7 12.6-14.1 16.8-22.1zM288 64c-28.8 0-56.3 5.9-81.2 16.5c2 8.3 5 16.2 9 23.5c6.8 12.4 16.7 23.1 30.1 30.3c13.3-4.1 27.5-6.3 42.2-6.3s28.8 2.2 42.2 6.3c13.4-7.2 23.3-17.9 30.1-30.3c4-7.3 7-15.2 9-23.5C344.3 69.9 316.8 64 288 64zM426.9 310c-7.2 26.4-21.7 49.7-41.2 67.8c-1.2 14.7 2.2 28.1 8.6 39.8c4.3 8 10 15.4 16.8 22.1c44.3-32.6 75.2-82.3 82.9-139.4c-9-2.2-18.1-3.1-27.1-2.7c-13.8 .6-27.5 4.4-40 12.4z"],"location-crosshairs":[512,512,["location"],"f601","M256 0c17.7 0 32 14.3 32 32V66.7C368.4 80.1 431.9 143.6 445.3 224H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H445.3C431.9 368.4 368.4 431.9 288 445.3V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C143.6 431.9 80.1 368.4 66.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H66.7C80.1 143.6 143.6 80.1 224 66.7V32c0-17.7 14.3-32 32-32zM128 256a128 128 0 1 0 256 0 128 128 0 1 0 -256 0zm128-80a80 80 0 1 1 0 160 80 80 0 1 1 0-160z"],"mars-double":[640,512,[9891],"f227","M312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L275.8 159c-28.4-19.5-62.7-31-99.8-31C78.8 128 0 206.8 0 304s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L407 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312zm88 48h0v0l0 0zM64 304a112 112 0 1 1 224 0A112 112 0 1 1 64 304zM368 480c97.2 0 176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L599 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H504c-9.7 0-18.5 5.8-22.2 14.8c-1.2 2.9-1.8 6-1.8 9l0 .2v.2c0 6.2 2.5 12.2 7 16.8l33.4 33.4L480 146.7V168c0 22.6-13.6 43.1-34.6 51.7c-.8 .3-1.7 .7-2.5 1C465.7 241.2 480 270.9 480 304c0 61.9-50.1 112-112 112c-5.4 0-10.8-.4-16-1.1c-12.9 20.4-29.1 38.3-48.1 53.1c19.8 7.8 41.4 12 64 12z"],"child-dress":[320,512,[],"e59c","M224 64A64 64 0 1 0 96 64a64 64 0 1 0 128 0zM88 400v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h16v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h17.8c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.6 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2l28.7-37.8L55 378.9C51.6 389.3 59.3 400 70.2 400H88z"],"users-between-lines":[640,512,[],"e591","M0 24C0 10.7 10.7 0 24 0H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24C10.7 48 0 37.3 0 24zM0 488c0-13.3 10.7-24 24-24H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zM83.2 160a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 320c0-35.3 28.7-64 64-64h96c12.2 0 23.7 3.4 33.4 9.4c-37.2 15.1-65.6 47.2-75.8 86.6H64c-17.7 0-32-14.3-32-32zm461.6 32c-10.3-40.1-39.6-72.6-77.7-87.4c9.4-5.5 20.4-8.6 32.1-8.6h96c35.3 0 64 28.7 64 64c0 17.7-14.3 32-32 32H493.6zM391.2 290.4c32.1 7.4 58.1 30.9 68.9 61.6c3.5 10 5.5 20.8 5.5 32c0 17.7-14.3 32-32 32h-224c-17.7 0-32-14.3-32-32c0-11.2 1.9-22 5.5-32c10.5-29.7 35.3-52.8 66.1-60.9c7.8-2.1 16-3.1 24.5-3.1h96c7.4 0 14.7 .8 21.6 2.4zm44-130.4a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM321.6 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z"],"lungs-virus":[640,512,[],"e067","M320 0c17.7 0 32 14.3 32 32V156.2c-8.5-7.6-19.7-12.2-32-12.2s-23.5 4.6-32 12.2V32c0-17.7 14.3-32 32-32zM444.5 195.5c-16.4-16.4-41.8-18.5-60.5-6.1V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2c-20.9-5.2-38.7-17.1-51.5-32.9c14 1.5 28.5-3 39.2-13.8l-22.6-22.6 22.6 22.6c18.7-18.7 18.7-49.1 0-67.9c-1.1-1.1-1.4-2-1.5-2.5c-.1-.8-.1-1.8 .4-2.9s1.2-1.9 1.8-2.3c.5-.3 1.3-.8 2.9-.8c26.5 0 48-21.5 48-48s-21.5-48-48-48c-1.6 0-2.4-.4-2.9-.8c-.6-.4-1.3-1.2-1.8-2.3s-.5-2.2-.4-2.9c.1-.6 .4-1.4 1.5-2.5c18.7-18.7 18.7-49.1 0-67.9zM421.8 421.8c-6.2 6.2-16.4 6.2-22.6 0C375.9 398.5 336 415 336 448c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C241.5 375.9 225 336 192 336c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C264.1 241.5 304 225 304 192c0-8.8 7.2-16 16-16s16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C398.5 264.1 415 304 448 304c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6zM183.3 491.2l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v24.1c-18.6-12.4-44-10.3-60.5 6.1c-18.7 18.7-18.7 49.1 0 67.9c1.1 1.1 1.4 2 1.5 2.5c.1 .8 .1 1.8-.4 2.9s-1.2 1.9-1.8 2.3c-.5 .3-1.3 .8-2.9 .8c-26.5 0-48 21.5-48 48s21.5 48 48 48c1.6 0 2.4 .4 2.9 .8c.6 .4 1.3 1.2 1.8 2.3s.5 2.2 .4 2.9c-.1 .6-.4 1.4-1.5 2.5c-18.7 18.7-18.7 49.1 0 67.9c10.7 10.7 25.3 15.3 39.2 13.8c-12.8 15.9-30.6 27.7-51.5 32.9zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z"],"face-grin-tears":[640,512,[128514,"grin-tears"],"f588","M548.6 371.4C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c3.6-8.8 6.5-18.4 8.8-27.5c4.6-18.2 7.7-37 9.3-48.2c3.9-26.5-18.8-49.2-45.2-45.4c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-26.5-3.9-49.2 18.8-45.2 45.4c1.6 11.3 4.6 30 9.3 48.2c2.3 9.1 5.2 18.8 8.8 27.5c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3zM107 254.1c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9zm454.5 87.1c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zm-90.1-9.7c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM281.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C190.7 188.4 184 206.1 184 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C350.7 188.4 344 206.1 344 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z"],phone:[512,512,[128222,128379],"f095","M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z"],"calendar-xmark":[448,512,["calendar-times"],"f273","M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM305 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z"],"child-reaching":[384,512,[],"e59d","M256 64A64 64 0 1 0 128 64a64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384h32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V221.6c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z"],"head-side-virus":[512,512,[],"e064","M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM224 64c-8.8 0-16 7.2-16 16c0 33-39.9 49.5-63.2 26.2c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6C145.5 152.1 129 192 96 192c-8.8 0-16 7.2-16 16s7.2 16 16 16c33 0 49.5 39.9 26.2 63.2c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0C168.1 286.5 208 303 208 336c0 8.8 7.2 16 16 16s16-7.2 16-16c0-33 39.9-49.5 63.2-26.2c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6C302.5 263.9 319 224 352 224c8.8 0 16-7.2 16-16s-7.2-16-16-16c-33 0-49.5-39.9-26.2-63.2c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0C279.9 129.5 240 113 240 80c0-8.8-7.2-16-16-16zm-24 96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z"],"user-gear":[640,512,["user-cog"],"f4fe","M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7v.9c0 9.2 2.7 18.5 7.9 26.3H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8v17.7c0 7.8 4.8 14.8 11.6 18.7c6.8 3.9 15.1 4.5 21.8 .6l13.8-7.9c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-14.4 8.3c-6.5 3.7-10 10.9-10 18.4s3.5 14.7 10 18.4l14.4 8.3c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-13.8-7.9c-6.7-3.9-15.1-3.3-21.8 .6c-6.8 3.9-11.6 10.9-11.6 18.7v17.7c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8V467.8c0-7.9-4.9-14.9-11.7-18.9c-6.8-3.9-15.2-4.5-22-.6l-13.5 7.8c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l14-8.1c6.5-3.8 10.1-11.1 10.1-18.6s-3.5-14.8-10.1-18.6l-14-8.1c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l13.6 7.8c6.8 3.9 15.2 3.3 22-.6c6.9-3.9 11.7-11 11.7-18.9V218.2zm92.1 133.5a48.1 48.1 0 1 0 -96.1 0 48.1 48.1 0 1 0 96.1 0z"],"arrow-up-1-9":[576,512,["sort-numeric-up"],"f163","M450.7 38c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V108.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM445.7 364.9A32 32 0 1 0 418.3 307a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z"],"door-closed":[576,512,[128682],"f52a","M96 64c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V448h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 144 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96V64zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"shield-virus":[512,512,[],"e06c","M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 112c8.8 0 16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C334.5 200.1 351 240 384 240c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C311.9 334.5 272 351 272 384c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C177.5 311.9 161 272 128 272c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C200.1 177.5 240 161 240 128c0-8.8 7.2-16 16-16zM232 256a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z"],"dice-six":[448,512,[9861],"f526","M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"mosquito-net":[640,512,[],"e52c","M168.8 462.3c-7.9-4-11.1-13.6-7.2-21.5L192 380.2l0-44.2c0-4.2 1.7-8.3 4.7-11.3L256 265.4V242.2L139.2 344C87.8 395.3 0 358.9 0 286.3c0-41.1 30.6-75.8 71.4-80.9l159.9-23.9-49.6-41.3c-5.1-4.2-7-11.1-4.9-17.4l13.9-41.7-29-58.1c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l32 64c1.9 3.8 2.2 8.2 .9 12.2l-12.5 37.6L256 160.5V137.9c0-14.9 10.1-27.3 23.8-31V63.7c0-4.5 3.7-8.2 8.2-8.2s8.2 3.7 8.2 8.2V107c13.7 3.6 23.8 16.1 23.8 31v22.6l45.4-37.8L352.8 85.1c-1.3-4-1-8.4 .9-12.2l32-64c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-29 58.1 13.9 41.7c2.1 6.2 .1 13.1-4.9 17.4l-49.6 41.3 159.9 23.9c22.5 2.8 41.8 14.6 54.7 31.4c-2.7 2.6-5.2 5.4-7.3 8.6c-8.6-12.9-23.3-21.5-40-21.5s-31.4 8.5-40 21.5c-8.6-12.9-23.3-21.5-40-21.5c-21.7 0-40 14.3-45.9 34.1c-10.7 3.2-19.8 10.1-25.9 19.2l-40.2-35v23.1l32.4 32.4c-.3 2-.4 4.1-.4 6.2c0 16.7 8.5 31.4 21.5 40c-4 2.6-7.5 5.9-10.6 9.5L320 310.6v50c0 17.7-14.3 32-32 32s-32-14.3-32-32v-50l-32 32 0 41.4c0 2.5-.6 4.9-1.7 7.2l-32 64c-4 7.9-13.6 11.1-21.5 7.2zM512 256c8.8 0 16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H528v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H448v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V400H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V320H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16zm16 112h48V320H528v48zm0 80h48V400H528v48zM448 320v48h48V320H448zm0 80v48h48V400H448z"],"bridge-water":[576,512,[],"e4ce","M0 96C0 78.3 14.3 64 32 64H544c17.7 0 32 14.3 32 32v35.6c0 15.7-12.7 28.4-28.4 28.4c-37.3 0-67.6 30.2-67.6 67.6V352.5c-12.9 0-25.8 3.9-36.8 11.7c-18 12.4-40.1 20.3-59.2 20.3h0l0-.5V256c0-53-43-96-96-96s-96 43-96 96V384l0 .5c-19 0-41.2-7.9-59.1-20.3c-11.1-7.8-24-11.7-36.9-11.7V227.6C96 190.2 65.8 160 28.4 160C12.7 160 0 147.3 0 131.6V96zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"],"person-booth":[576,512,[],"f756","M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64V32zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM224 512c17.7 0 32-14.3 32-32V320H192V480c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM112 80A48 48 0 1 0 16 80a48 48 0 1 0 96 0zm0 261.3V269.3l4.7 4.7c9 9 21.2 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H157.3l-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6v55.7l0 .9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384l32 42.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V421.3c0-10.4-3.4-20.5-9.6-28.8L112 341.3z"],"text-width":[448,512,[],"f035","M64 128V96H192l0 128H176c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H256l0-128H384v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H224 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V416H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H128V320c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z"],"hat-wizard":[512,512,[],"f6e8","M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6v1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416H240.9l11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416H64zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z"],"pen-fancy":[512,512,[128395,10002],"f5ac","M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.4 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z"],"person-digging":[576,512,["digging"],"f85e","M208 64a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2H288c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7h32l22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V405.1l-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z"],trash:[448,512,[],"f1f8","M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"],"gauge-simple":[512,512,["gauge-simple-med","tachometer-average"],"f629","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64z"],"book-medical":[448,512,[],"f7e6","M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM208 112v48H160c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h48c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16z"],poo:[512,512,[128169],"f2fe","M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1c0 44.1-35.7 79.9-79.8 80H160c-35.3 0-64 28.7-64 64c0 19.1 8.4 36.3 21.7 48H104c-39.8 0-72 32.2-72 72c0 23.2 11 43.8 28 57c-34.1 5.7-60 35.3-60 71c0 39.8 32.2 72 72 72H440c39.8 0 72-32.2 72-72c0-35.7-25.9-65.3-60-71c17-13.2 28-33.8 28-57c0-39.8-32.2-72-72-72H394.3c13.3-11.7 21.7-28.9 21.7-48c0-35.3-28.7-64-64-64h-5.5c3.5-10 5.5-20.8 5.5-32c0-48.6-36.2-88.8-83.1-95.1zM192 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm64 108.3c0 2.4-.7 4.8-2.2 6.7c-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7c0-6.8 5.5-12.3 12.3-12.3H339.7c6.8 0 12.3 5.5 12.3 12.3z"],"quote-right":[448,512,[8221,"quote-right-alt"],"f10e","M448 296c0 66.3-53.7 120-120 120h-8c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H320c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72zm-256 0c0 66.3-53.7 120-120 120H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72z"],shirt:[640,512,[128085,"t-shirt","tshirt"],"f553","M211.8 0c7.8 0 14.3 5.7 16.7 13.2C240.8 51.9 277.1 80 320 80s79.2-28.1 91.5-66.8C413.9 5.7 420.4 0 428.2 0h12.6c22.5 0 44.2 7.9 61.5 22.3L628.5 127.4c6.6 5.5 10.7 13.5 11.4 22.1s-2.1 17.1-7.8 23.6l-56 64c-11.4 13.1-31.2 14.6-44.6 3.5L480 197.7V448c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64V197.7l-51.5 42.9c-13.3 11.1-33.1 9.6-44.6-3.5l-56-64c-5.7-6.5-8.5-15-7.8-23.6s4.8-16.6 11.4-22.1L137.7 22.3C155 7.9 176.7 0 199.2 0h12.6z"],cubes:[576,512,[],"f1b3","M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5V204.7c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7V413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3V294.7c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3V92.5c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2V152.6L392 121v89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4V354.8L256 323.2v95.9l-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1V354.8L528 323.2v90.7c0 3.2-1.9 6-4.8 7.3z"],divide:[448,512,[10135,247],"f529","M272 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 320a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 288c17.7 0 32-14.3 32-32s-14.3-32-32-32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H400z"],"tenge-sign":[384,512,[8376,"tenge"],"f7d7","M0 64C0 46.3 14.3 32 32 32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM0 192c0-17.7 14.3-32 32-32H192 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V224H32c-17.7 0-32-14.3-32-32z"],headphones:[512,512,[127911],"f025","M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80V384 336 288C0 146.6 114.6 32 256 32s256 114.6 256 256v48 48 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z"],"hands-holding":[640,512,[],"f4c2","M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104v56 64V325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7H240c26.5 0 48-21.5 48-48V385.1c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3 0 0-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3V224 144 104zm480 0v40 80 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2 0 0-25.3 25.3c-21 21-32.8 49.5-32.8 79.2V464c0 26.5 21.5 48 48 48h66.7c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9V224 160 104c0-22.1-17.9-40-40-40s-40 17.9-40 40z"],"hands-clapping":[512,512,[],"e1a8","M336 16V80c0 8.8-7.2 16-16 16s-16-7.2-16-16V16c0-8.8 7.2-16 16-16s16 7.2 16 16zm-98.7 7.1l32 48c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-32-48c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4zM135 119c9.4-9.4 24.6-9.4 33.9 0L292.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4c-64 38.4-145.8 28.3-198.5-24.4L7 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L23 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM433.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1c48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4zM424.9 18.7c7.4 4.9 9.3 14.8 4.4 22.2l-32 48c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l32-48c4.9-7.4 14.8-9.3 22.2-4.4z"],republican:[640,512,[],"f75e","M0 192C0 103.6 71.6 32 160 32H384c88.4 0 160 71.6 160 160v64H0V192zm415.9-64c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L466 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm-138.3 3.4c-1.1-2.1-3.3-3.4-5.7-3.4s-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L322 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6zM127.9 128c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L178 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm.1 160H320h96 32 64 32v32 80c0 8.8 7.2 16 16 16s16-7.2 16-16V352c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80s-80-35.8-80-80V352H448v32 64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V384H128v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V384 288H128z"],"arrow-left":[448,512,[8592],"f060","M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"],"person-circle-xmark":[576,512,[],"e543","M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z"],ruler:[512,512,[128207],"f545","M177.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L17.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L177.9 494.1z"],"align-left":[448,512,[],"f036","M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"],"dice-d6":[448,512,[],"f6d1","M201 10.3c14.3-7.8 31.6-7.8 46 0L422.3 106c5.1 2.8 8.3 8.2 8.3 14s-3.2 11.2-8.3 14L231.7 238c-4.8 2.6-10.5 2.6-15.3 0L25.7 134c-5.1-2.8-8.3-8.2-8.3-14s3.2-11.2 8.3-14L201 10.3zM23.7 170l176 96c5.1 2.8 8.3 8.2 8.3 14V496c0 5.6-3 10.9-7.8 13.8s-10.9 3-15.8 .3L25 423.1C9.6 414.7 0 398.6 0 381V184c0-5.6 3-10.9 7.8-13.8s10.9-3 15.8-.3zm400.7 0c5-2.7 11-2.6 15.8 .3s7.8 8.1 7.8 13.8V381c0 17.6-9.6 33.7-25 42.1L263.7 510c-5 2.7-11 2.6-15.8-.3s-7.8-8.1-7.8-13.8V280c0-5.9 3.2-11.2 8.3-14l176-96z"],restroom:[640,512,[],"f7bd","M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V325.2c-8.1 9.2-21.1 13.2-33.5 9.4c-16.9-5.3-26.3-23.2-21-40.1l30.9-99.1C44.9 155.3 82 128 124 128h8c42 0 79.1 27.3 91.6 67.4l30.9 99.1c5.3 16.9-4.1 34.8-21 40.1c-12.4 3.9-25.4-.2-33.5-9.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H120zM320 0c13.3 0 24 10.7 24 24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24zM464 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM440 480V384H422.2c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5c-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1c-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1H584v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H504v96c0 17.7-14.3 32-32 32s-32-14.3-32-32z"],j:[320,512,[106],"4a","M288 32c17.7 0 32 14.3 32 32V320c0 88.4-71.6 160-160 160S0 408.4 0 320V288c0-17.7 14.3-32 32-32s32 14.3 32 32v32c0 53 43 96 96 96s96-43 96-96V64c0-17.7 14.3-32 32-32z"],"users-viewfinder":[640,512,[],"e595","M48 48h88c13.3 0 24-10.7 24-24s-10.7-24-24-24H32C14.3 0 0 14.3 0 32V136c0 13.3 10.7 24 24 24s24-10.7 24-24V48zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zm-89.4 0c-8.6-24.3-29.9-42.6-55.9-47c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80-32a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM504 48h88v88c0 13.3 10.7 24 24 24s24-10.7 24-24V32c0-17.7-14.3-32-32-32H504c-13.3 0-24 10.7-24 24s10.7 24 24 24zM48 464V376c0-13.3-10.7-24-24-24s-24 10.7-24 24V480c0 17.7 14.3 32 32 32H136c13.3 0 24-10.7 24-24s-10.7-24-24-24H48zm456 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H608c17.7 0 32-14.3 32-32V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v88H504z"],"file-video":[384,512,[],"f1c8","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V288zM300.9 397.9L256 368V304l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z"],"up-right-from-square":[512,512,["external-link-alt"],"f35d","M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z"],"table-cells":[512,512,["th"],"f00a","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 64v64H64V96h88zm56 0h88v64H208V96zm240 0v64H360V96h88zM64 224h88v64H64V224zm232 0v64H208V224h88zm64 0h88v64H360V224zM152 352v64H64V352h88zm56 0h88v64H208V352zm240 0v64H360V352h88z"],"file-pdf":[512,512,[],"f1c1","M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 144-208 0c-35.3 0-64 28.7-64 64l0 144-48 0c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM176 352l32 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-16 0 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-80c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0 48 16 0zm96-80l32 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16l0-128c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-16 0 0 96 16 0zm80-112c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64 0-64z"],"book-bible":[448,512,["bible"],"f647","M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zM208 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272V304c0 8.8-7.2 16-16 16H224c-8.8 0-16-7.2-16-16V192H160c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h48V80z"],o:[448,512,[111],"4f","M224 96a160 160 0 1 0 0 320 160 160 0 1 0 0-320zM448 256A224 224 0 1 1 0 256a224 224 0 1 1 448 0z"],"suitcase-medical":[512,512,["medkit"],"f0fa","M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96v32V480H384V128 96 56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM96 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H96V96zM416 480h32c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H416V480zM224 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z"],"user-secret":[448,512,[128373],"f21b","M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48H45.4C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4H342.7c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.8 3.3-8.8 6.1-15.5 6.1zm56 208H267.6c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2H168c-22.1 0-40-17.9-40-40V169.6c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4V184c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z"],otter:[640,512,[129446],"f700","M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5c23.5 0 42.6-19.1 42.6-42.6V144c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v21.4c0 23.5 19.1 42.6 42.6 42.6c6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2L135.1 185c-4.5-3-7.1-8-7.1-13.3V168c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6c-3.6 0-7.1-.2-10.6-.6v.6c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V336 320c0-23.7 12.9-44.4 32-55.4c9.4-5.4 20.3-8.6 32-8.6V240c0-26.5 21.5-48 48-48c8.8 0 16 7.2 16 16v32 16 48c0 8.8 7.2 16 16 16s16-7.2 16-16V204.3c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1h0c0 123.7-100.3 224-224 224h-1.1H256h-.6C132 480 32 380 32 256.6V256 216.8c-10.1-14.6-16-32.3-16-51.4V144l0-1.4C6.7 139.3 0 130.5 0 120c0-13.3 10.7-24 24-24h2.8C44.8 58.2 83.3 32 128 32h64c44.7 0 83.2 26.2 101.2 64H296c13.3 0 24 10.7 24 24c0 10.5-6.7 19.3-16 22.6l0 1.4v21.4c0 1.4 0 2.8-.1 4.3c12-6.2 25.7-9.6 40.1-9.6h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-13.3 0-24 10.7-24 24v8h56.4c-15.2 17-24.4 39.4-24.4 64H320c-42.3 0-78.2-27.4-91-65.3c-5.1 .9-10.3 1.3-15.6 1.3c-14.1 0-27.9-3.3-40.5-9.6zM96 128a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm112 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z"],"person-dress":[320,512,["female"],"f182","M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM88 384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2c20.3-33.7 56.7-54.3 96-54.3h11.6c39.3 0 75.7 20.6 96 54.3l53.6 89.2c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9l-33.9-56.3L265 362.9c3.5 10.4-4.3 21.1-15.2 21.1H232v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H152v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z"],"comment-dollar":[512,512,[],"f651","M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm20-312v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V344c0 11-9 20-20 20s-20-9-20-20V329.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V136c0-11 9-20 20-20s20 9 20 20z"],"business-time":[640,512,["briefcase-clock"],"f64a","M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 352h8.2c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16 .7V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM320 352H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H360.2C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7 .7-16l-.7 0zm320 16a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM496 288c8.8 0 16 7.2 16 16v48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16z"],"table-cells-large":[512,512,["th-large"],"f009","M448 96V224H288V96H448zm0 192V416H288V288H448zM224 224H64V96H224V224zM64 288H224V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"],"book-tanakh":[448,512,["tanakh"],"f827","M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM138.7 208l13.9 24H124.9l13.9-24zm-13.9-24L97.1 232c-6.2 10.7 1.5 24 13.9 24h55.4l27.7 48c6.2 10.7 21.6 10.7 27.7 0l27.7-48H305c12.3 0 20-13.3 13.9-24l-27.7-48 27.7-48c6.2-10.7-1.5-24-13.9-24H249.6L221.9 64c-6.2-10.7-21.6-10.7-27.7 0l-27.7 48H111c-12.3 0-20 13.3-13.9 24l27.7 48zm27.7 0l27.7-48h55.4l27.7 48-27.7 48H180.3l-27.7-48zm0-48l-13.9 24-13.9-24h27.7zm41.6-24L208 88l13.9 24H194.1zm69.3 24h27.7l-13.9 24-13.9-24zm13.9 72l13.9 24H263.4l13.9-24zm-55.4 48L208 280l-13.9-24h27.7z"],"phone-volume":[512,512,["volume-control-phone"],"f2a0","M280 0C408.1 0 512 103.9 512 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32-72c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24zM117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24z"],"hat-cowboy-side":[640,512,[],"f8c1","M152.7 135.9l-10.4 57.2c6.8-.7 13.6-1.1 20.5-1.1h10.7c39.4 0 77.8 12.1 110.1 34.7L562.4 421.8l35.1 24.6c24.4-6 42.5-28.1 42.5-54.4c0-75.8-94.7-126.6-134.6-144.7L474 83.9C468.2 53.8 441.8 32 411.1 32h-2.7c-5.6 0-11.1 .7-16.5 2.2L199.2 85.5c-23.9 6.4-42 26-46.5 50.4zM0 384c0 35.3 28.7 64 64 64H544L265.3 252.9c-26.9-18.8-58.9-28.9-91.8-28.9H162.9c-60.6 0-116 34.2-143.1 88.4L13.5 325C4.6 342.7 0 362.3 0 382.2V384z"],"clipboard-user":[384,512,[],"f7f3","M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM128 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 432c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z"],child:[320,512,[],"f1ae","M96 64a64 64 0 1 1 128 0A64 64 0 1 1 96 64zm48 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V287.8L59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H144z"],"lira-sign":[320,512,[8356],"f195","M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4V192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H46c-2.2 10.5-6.1 20.6-11.7 29.9L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H88.5l.7-1.1c11.6-19.3 18.9-40.7 21.6-62.9H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V160.4z"],satellite:[512,512,[128752],"f7bf","M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z"],"plane-lock":[640,512,[],"e558","M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7v84.6l101.8 58.2C418 247.6 416 259.6 416 272v24.6c-17.9 10.4-30.3 29.1-31.8 50.9L320 329.1V400l57.6 43.2c4 3 6.4 7.8 6.4 12.8v24 18c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400l0-70.9-171.6 49C10.2 381.1 0 373.4 0 362.8V297.3c0-5.7 3.1-11 8.1-13.9L192 178.3V93.7zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z"],tag:[448,512,[127991],"f02b","M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],comment:[512,512,[128489,61669],"f075","M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4l0 0 0 0 0 0 0 0 .3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z"],"cake-candles":[448,512,[127874,"birthday-cake","cake"],"f1fd","M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c-35.3 0-64 28.7-64 64v71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1 0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4l0 0 0 0 .1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8l0 0 0 0 0 0 .1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9V288c0-35.3-28.7-64-64-64V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H256V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H128V176zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4V480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V394.6z"],envelope:[512,512,[128386,9993,61443],"f0e0","M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"],"angles-up":[448,512,["angle-double-up"],"f102","M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z"],paperclip:[448,512,[128206],"f0c6","M364.2 83.8c-24.4-24.4-64-24.4-88.4 0l-184 184c-42.1 42.1-42.1 110.3 0 152.4s110.3 42.1 152.4 0l152-152c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-152 152c-64 64-167.6 64-231.6 0s-64-167.6 0-231.6l184-184c46.3-46.3 121.3-46.3 167.6 0s46.3 121.3 0 167.6l-176 176c-28.6 28.6-75 28.6-103.6 0s-28.6-75 0-103.6l144-144c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-144 144c-6.7 6.7-6.7 17.7 0 24.4s17.7 6.7 24.4 0l176-176c24.4-24.4 24.4-64 0-88.4z"],"arrow-right-to-city":[640,512,[],"e4b3","M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM166.6 153.4l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H146.7l-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z"],ribbon:[448,512,[127895],"f4d6","M333.2 322.8l0 0-133.9-146 0 0L146 118.6c7.8-5.1 37-22.6 78-22.6s70.2 17.4 78 22.6L245.7 180l85.6 93.4 27.4-29.8c16.3-17.7 25.3-40.9 25.3-65V149.1c0-19-5.6-37.5-16.1-53.3L327.8 35.6C312.9 13.4 287.9 0 261.2 0h-76c-25.8 0-50.1 12.5-65.1 33.5L81.9 87C70.3 103.2 64 122.8 64 142.8V164c0 23.2 8.4 45.6 23.6 63.1l56 64.2 0 0 83.3 95.6 0 0 91.8 105.3c10 11.5 26.8 14.3 40 6.8l54.5-31.1c17.8-10.2 21.6-34.3 7.7-49.4l-87.7-95.7zM205.2 410.6l-83.3-95.6L27.1 418.5c-13.9 15.1-10.1 39.2 7.7 49.4l55.1 31.5c13 7.4 29.3 4.9 39.4-6.1l75.9-82.6z"],lungs:[640,512,[129729],"f604","M320 0c17.7 0 32 14.3 32 32V164.1c0 16.4 8.4 31.7 22.2 40.5l9.8 6.2V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2C414 480.5 384 442.1 384 398V325l90.5 57.6c7.5 4.7 17.3 2.5 22.1-4.9s2.5-17.3-4.9-22.1L384 287.1v-.4l-44.1-28.1c-7.3-4.6-13.9-10.1-19.9-16.1c-5.9 6-12.6 11.5-19.9 16.1L256 286.7 161.2 347l-13.5 8.6c0 0 0 0-.1 0c-7.4 4.8-9.6 14.6-4.8 22.1c4.7 7.5 14.6 9.7 22.1 4.9l91.1-58V398c0 44.1-30 82.5-72.7 93.1l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v45.5l9.8-6.2c13.8-8.8 22.2-24.1 22.2-40.5V32c0-17.7 14.3-32 32-32z"],"arrow-up-9-1":[576,512,["sort-numeric-up-alt"],"f887","M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM450.7 294c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V364.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zm-5-145.1A32 32 0 1 0 418.3 91a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 192.4 344 159.2 344 120c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 251c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z"],"litecoin-sign":[384,512,[],"e1d3","M128 64c0-17.7-14.3-32-32-32S64 46.3 64 64V213.6L23.2 225.2c-17 4.9-26.8 22.6-22 39.6s22.6 26.8 39.6 22L64 280.1V448c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V261.9l136.8-39.1c17-4.9 26.8-22.6 22-39.6s-22.6-26.8-39.6-22L128 195.3V64z"],"border-none":[448,512,[],"f850","M32 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM320 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-320a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 288a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm192 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM416 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64z"],"circle-nodes":[512,512,[],"e4e2","M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z"],"parachute-box":[512,512,[],"f4cd","M383.5 192c.3-5.3 .5-10.6 .5-16c0-51-15.9-96-40.2-127.6C319.5 16.9 288.2 0 256 0s-63.5 16.9-87.8 48.4C143.9 80 128 125 128 176c0 5.4 .2 10.7 .5 16H240V320H208c-7 0-13.7 1.5-19.7 4.2L68.2 192H96.5c-.3-5.3-.5-10.6-.5-16c0-64 22.2-121.2 57.1-159.3C62 49.3 18.6 122.6 4.2 173.6C1.5 183.1 9 192 18.9 192h6L165.2 346.3c-3.3 6.5-5.2 13.9-5.2 21.7v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V368c0-7.8-1.9-15.2-5.2-21.7L487.1 192h6c9.9 0 17.4-8.9 14.7-18.4C493.4 122.6 450 49.3 358.9 16.7C393.8 54.8 416 112.1 416 176c0 5.4-.2 10.7-.5 16h28.3L323.7 324.2c-6-2.7-12.7-4.2-19.7-4.2H272V192H383.5z"],indent:[448,512,[],"f03c","M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3V176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z"],"truck-field-un":[640,512,[],"e58e","M96 32C60.7 32 32 60.7 32 96v32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32v32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288c0-35.3-28.7-64-64-64h-4.2c-.4-1.1-.9-2.1-1.3-3.2L485.7 102c-10.3-23.1-33.2-38-58.5-38H375.4C364.4 44.9 343.7 32 320 32H96zm288 96h43.2l42.7 96H384V128zM112 384a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM253.3 135.1l34.7 52V144c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM128 144v64c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V144c0-8.8 7.2-16 16-16s16 7.2 16 16z"],hourglass:[384,512,[9203,62032,"hourglass-empty"],"f254","M0 32C0 14.3 14.3 0 32 0H64 320h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V75c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1v11c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V437c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75V64C14.3 64 0 49.7 0 32zM96 64V75c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9V64H96zm0 384H288V437c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9v11z"],mountain:[512,512,[127956],"f6fc","M256 32c12.5 0 24.1 6.4 30.8 17L503.4 394.4c5.6 8.9 8.6 19.2 8.6 29.7c0 30.9-25 55.9-55.9 55.9H55.9C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17zm65 192L256 120.4 176.9 246.5l18.3 24.4c6.4 8.5 19.2 8.5 25.6 0l25.6-34.1c6-8.1 15.5-12.8 25.6-12.8h49z"],"user-doctor":[448,512,["user-md"],"f0f0","M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-96 55.2C54 332.9 0 401.3 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-81-54-149.4-128-171.1V362c27.6 7.1 48 32.2 48 62v40c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16s7.2-16 16-16V424c0-17.7-14.3-32-32-32s-32 14.3-32 32v24c8.8 0 16 7.2 16 16s-7.2 16-16 16H256c-8.8 0-16-7.2-16-16V424c0-29.8 20.4-54.9 48-62V304.9c-6-.6-12.1-.9-18.3-.9H178.3c-6.2 0-12.3 .3-18.3 .9v65.4c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7V311.2zM144 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],"circle-info":[512,512,["info-circle"],"f05a","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"cloud-meatball":[512,512,[],"f73b","M0 224c0 53 43 96 96 96h44.7c9.5-23.5 32.5-40 59.3-40c2 0 3.9 .1 5.8 .3C217.6 265.5 235.7 256 256 256s38.4 9.5 50.2 24.3c1.9-.2 3.9-.3 5.8-.3c26.9 0 49.9 16.5 59.3 40H416c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 1 .1 2.1 .1 3.1c-.7-.8-1.4-1.6-2.1-2.3c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c.7 .7 1.5 1.4 2.3 2.1c-1-.1-2.1-.1-3.1-.1c-17.7 0-32 14.3-32 32s14.3 32 32 32c1 0 2.1-.1 3.1-.1c-.8 .7-1.6 1.3-2.3 2.1c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0c.7-.7 1.4-1.5 2.1-2.3c-.1 1-.1 2.1-.1 3.1c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1-.1-2.1-.1-3.1c.7 .8 1.3 1.6 2.1 2.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3c-.7-.7-1.5-1.4-2.3-2.1c1 .1 2.1 .1 3.1 .1c17.7 0 32-14.3 32-32s-14.3-32-32-32c-1 0-2.1 .1-3.1 .1c.8-.7 1.6-1.3 2.3-2.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-.7 .7-1.4 1.5-2.1 2.3c.1-1 .1-2.1 .1-3.1zM48 448a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm416 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"],camera:[512,512,[62258,"camera-alt"],"f030","M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z"],"square-virus":[448,512,[],"e578","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM223.8 93.7c13.3 0 24 10.7 24 24c0 29.3 35.4 43.9 56.1 23.2c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.7 20.7-6 56.1 23.2 56.1c13.3 0 24 10.7 24 24s-10.7 24-24 24c-29.3 0-43.9 35.4-23.2 56.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.7-20.7-56.1-6-56.1 23.2c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-29.3-35.4-43.9-56.1-23.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.7-20.7 6-56.1-23.2-56.1c-13.3 0-24-10.7-24-24s10.7-24 24-24c29.3 0 43.9-35.4 23.2-56.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.7 20.7 56.1 6 56.1-23.2c0-13.3 10.7-24 24-24zM192 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm88 32a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z"],meteor:[512,512,[9732],"f753","M493.7 .9L299.4 75.6l2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309C0 421.1 90.9 512 203 512c72.4 0 139.4-38.6 175.7-101.3L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3L511.1 18.3c.6-1.5 .9-3.2 .9-4.8C512 6 506 0 498.5 0c-1.7 0-3.3 .3-4.8 .9zM192 192a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm16 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z"],"car-on":[512,512,[],"e4dd","M280 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V24zM185.8 224H326.2c6.8 0 12.8 4.3 15.1 10.6L360.3 288H151.7l19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344v40 64 32c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V448H384v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448 384 344c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160H185.8c-33.8 0-64 21.3-75.3 53.1zM128 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM39 39c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L73 39c-9.4-9.4-24.6-9.4-33.9 0zm400 0L391 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z"],sleigh:[640,512,[],"f7cc","M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V256c0 53 43 96 96 96v32h64V352H384v32h64V352c53 0 96-43 96-96V160c17.7 0 32-14.3 32-32s-14.3-32-32-32H512 480c-17.7 0-32 14.3-32 32v41.3c0 30.2-24.5 54.7-54.7 54.7c-75.5 0-145.6-38.9-185.6-102.9l-4.3-6.9C174.2 67.6 125 37.6 70.7 32.7c-2.2-.5-4.4-.7-6.7-.7H55 32zM640 384c0-17.7-14.3-32-32-32s-32 14.3-32 32v8c0 13.3-10.7 24-24 24H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H552c48.6 0 88-39.4 88-88v-8z"],"arrow-down-1-9":[576,512,["sort-numeric-asc","sort-numeric-down"],"f162","M450.7 38c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V160H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V64c0-10.3-4.9-19.9-13.3-26zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM418.3 307a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 307zM405.1 419.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z"],"hand-holding-droplet":[576,512,["hand-holding-water"],"f4c1","M275.5 6.6C278.3 2.5 283 0 288 0s9.7 2.5 12.5 6.6L366.8 103C378 119.3 384 138.6 384 158.3V160c0 53-43 96-96 96s-96-43-96-96v-1.7c0-19.8 6-39 17.2-55.3L275.5 6.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z"],water:[576,512,[],"f773","M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"],"calendar-check":[448,512,[],"f274","M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM329 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L329 305z"],braille:[640,512,[],"f2a1","M0 96a64 64 0 1 1 128 0A64 64 0 1 1 0 96zM224 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM80 416a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM224 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM352 96a64 64 0 1 1 128 0A64 64 0 1 1 352 96zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0A64 64 0 1 1 512 96zm64 176a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM416 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z"],"prescription-bottle-medical":[384,512,["prescription-bottle-alt"],"f486","M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zM160 240v48H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V352h48c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z"],landmark:[512,512,[127963],"f66f","M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8H32c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9V104l4.4-1.6L240.1 4.2zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z"],truck:[640,512,[128666,9951],"f0d1","M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM112 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"],crosshairs:[512,512,[],"f05b","M256 0c17.7 0 32 14.3 32 32V42.4c93.7 13.9 167.7 88 181.6 181.6H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H469.6c-13.9 93.7-88 167.7-181.6 181.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V469.6C130.3 455.7 56.3 381.7 42.4 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H42.4C56.3 130.3 130.3 56.3 224 42.4V32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6V384c0-17.7 14.3-32 32-32s32 14.3 32 32v20.6c58.3-12.5 104.1-58.4 116.6-116.6H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h20.6C392.1 165.7 346.3 119.9 288 107.4V128c0 17.7-14.3 32-32 32s-32-14.3-32-32V107.4C165.7 119.9 119.9 165.7 107.4 224H128c17.7 0 32 14.3 32 32s-14.3 32-32 32H107.4zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"person-cane":[448,512,[],"e53c","M272 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-8 187.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3zM352 376c0-4.4 3.6-8 8-8s8 3.6 8 8V488c0 13.3 10.7 24 24 24s24-10.7 24-24V376c0-30.9-25.1-56-56-56s-56 25.1-56 56v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8z"],tent:[576,512,[],"e57d","M269.4 6C280.5-2 295.5-2 306.6 6l224 160c7.4 5.3 12.2 13.5 13.2 22.5l32 288c1 9-1.9 18.1-8 24.9s-14.7 10.7-23.8 10.7H464 435.8c-12.1 0-23.2-6.8-28.6-17.7L306.7 293.5c-1.7-3.4-5.1-5.5-8.8-5.5c-5.5 0-9.9 4.4-9.9 9.9V480c0 17.7-14.3 32-32 32H240 32c-9.1 0-17.8-3.9-23.8-10.7s-9-15.8-8-24.9l32-288c1-9 5.8-17.2 13.2-22.5L269.4 6z"],"vest-patches":[448,512,[],"e086","M151.2 69.7l55.9 167.7-11 33.1c-2.7 8.2-4.1 16.7-4.1 25.3V464c0 14.5 3.9 28.2 10.7 39.9C195 509 185.9 512 176 512H48c-26.5 0-48-21.5-48-48V270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6V128 54.3 48C64 21.5 85.5 0 112 0h4.5c.2 0 .4 0 .6 0c.4 0 .8 0 1.2 0c18.8 0 34.1 9.7 44.1 18.8C171.6 27.2 190.8 40 224 40s52.4-12.8 61.7-21.2C295.7 9.7 311 0 329.7 0c.4 0 .8 0 1.2 0c.2 0 .4 0 .6 0H336c26.5 0 48 21.5 48 48v6.3V128v17.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6V464c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V295.8c0-5.2 .8-10.3 2.5-15.2L296.8 69.7C279.4 79.7 255.4 88 224 88s-55.4-8.3-72.8-18.3zM96 456a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305l15.5 15.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288l15.5-15.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280v8 32c0 8.8 7.2 16 16 16h32 8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z"],"check-double":[448,512,[],"f560","M342.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 54.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z"],"arrow-down-a-z":[576,512,["sort-alpha-asc","sort-alpha-down"],"f15d","M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z"],"money-bill-wheat":[512,512,[],"e52a","M176 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zM56 16h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56C42.7 64 32 53.3 32 40s10.7-24 24-24zM24 88H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24S10.7 88 24 88zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 16c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80zM400 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 128c8.8 0 16 7.2 16 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z"],cookie:[512,512,[127850],"f563","M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"arrow-rotate-left":[512,512,[8634,"arrow-left-rotate","arrow-rotate-back","arrow-rotate-backward","undo"],"f0e2","M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z"],"hard-drive":[512,512,[128436,"hdd"],"f0a0","M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V280.4c-17-15.2-39.4-24.4-64-24.4H64c-24.6 0-47 9.2-64 24.4V96zM64 288H448c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64zM320 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],"face-grin-squint-tears":[512,512,[129315,"grin-squint-tears"],"f586","M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-6.8 6.8-21.4 12.4-37.4 16.7c-16.3 4.4-34.1 7.5-46.3 9.3c-1.6 .2-3.1 .5-4.6 .6c-5.6 .9-10.3-3.9-9.5-9.5c1.6-11.2 4.6-29.6 9-47c.3-1.3 .7-2.6 1-3.9c4.3-15.9 9.8-30.5 16.7-37.4zm-44.7 19c-1.5 4.8-2.9 9.6-4.1 14.3c-4.8 18.9-8 38.5-9.7 50.3c-4 26.8 18.9 49.7 45.7 45.8c11.9-1.6 31.5-4.8 50.4-9.7c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c4.8-18.9 8-38.5 9.7-50.3c4-26.8-18.9-49.7-45.7-45.8c-11.9 1.6-31.5 4.8-50.4 9.7c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75C158.2-8.3 284.5-22.2 382.2 33.2zM51.5 410.1c18.5-5 38.8-8.3 50.9-10c5.6-.9 10.3 3.9 9.5 9.5c-1.7 12.1-5 32.4-10 50.9C97.6 476.4 92 491 85.2 497.8C66 517 34.5 516.6 14.9 497.1s-20-51-.7-70.3c6.8-6.8 21.4-12.4 37.4-16.7zM416.4 202.3c-4.8-11.9-20.9-10.9-26.9 .4c-19.4 36.7-46.3 73.2-79.8 106.7s-70 60.3-106.7 79.8c-11.3 6-12.3 22.1-.4 26.9c59.4 24.1 129.9 12.2 177.9-35.8s59.9-118.5 35.8-177.9zM87.1 285.1c2 2 4.6 3.2 7.3 3.4l56.1 5.1 5.1 56.1c.3 2.8 1.5 5.4 3.4 7.3c6.3 6.3 17.2 3.6 19.8-4.9l29.7-97.4c3.5-11.6-7.3-22.5-19-19L92 265.3c-8.6 2.6-11.3 13.4-4.9 19.8zM265.3 92l-29.7 97.4c-3.5 11.6 7.3 22.5 19 19l97.4-29.7c8.6-2.6 11.3-13.4 4.9-19.8c-2-2-4.6-3.2-7.3-3.4l-56.1-5.1-5.1-56.1c-.3-2.8-1.5-5.4-3.4-7.3c-6.3-6.3-17.2-3.6-19.8 4.9z"],dumbbell:[640,512,[],"f44b","M96 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V224v64V448c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V384H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H96V64zm448 0v64h32c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32v64c0 17.7-14.3 32-32 32H544v64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V288 224 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32zM416 224v64H224V224H416z"],"rectangle-list":[576,512,["list-alt"],"f022","M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224z"],"tarp-droplet":[576,512,[],"e57c","M288 160c-35.3 0-64-26.9-64-60c0-24 33.7-70.1 52.2-93.5c6.1-7.7 17.5-7.7 23.6 0C318.3 29.9 352 76 352 100c0 33.1-28.7 60-64 60zM64 128H197.5c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H512c35.3 0 64 28.7 64 64V352H448c-17.7 0-32 14.3-32 32l0 128L64 512c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zM448 512l0-128H576L448 512zM96 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"house-medical-circle-check":[640,512,[],"e511","M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm32 0a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z"],"person-skiing-nordic":[576,512,["skiing-nordic"],"f7ca","M336 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM227.2 160c1.9 0 3.8 .1 5.6 .3L201.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9L291.3 464H202.8l41.1-88.1-32.4-20.3c-7.8-4.9-14.7-10.7-20.6-17.3L132.2 464H99.7l54.2-257.6c4.6-1.5 9-4.1 12.7-7.8l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5zM121.4 198.6c.4 .4 .8 .8 1.3 1.2L67 464H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H159.3c.4 0 .9 0 1.3 0H319.3c.5 0 1 0 1.4 0H504c39.8 0 72-32.2 72-72v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24v8c0 13.3-10.7 24-24 24H434.6l27.6-179.3c10.5-5.2 17.8-16.1 17.8-28.7c0-17.7-14.3-32-32-32H426.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c-12.5 12.5-12.5 32.8 0 45.3zm308 89.4L402.3 464H357.8l21.6-75.6c5.9-20.6-2.6-42.6-20.7-53.9L302 299l30.9-82.4 5.1 12.3C353 264.7 387.9 288 426.7 288h2.7z"],"calendar-plus":[448,512,[],"f271","M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192zM224 248c13.3 0 24 10.7 24 24v56h56c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V376H144c-13.3 0-24-10.7-24-24s10.7-24 24-24h56V272c0-13.3 10.7-24 24-24z"],"plane-arrival":[640,512,[128748],"f5af","M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0h40.1c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14.1-9.3-22.5zM32 448H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm96-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"circle-left":[512,512,[61840,"arrow-alt-circle-left"],"f359","M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9L117.5 269.8c-3.5-3.8-5.5-8.7-5.5-13.8s2-10.1 5.5-13.8l99.9-107.1c4.2-4.5 10.1-7.1 16.3-7.1c12.3 0 22.3 10 22.3 22.3l0 57.7 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 57.7c0 12.3-10 22.3-22.3 22.3c-6.2 0-12.1-2.6-16.3-7.1z"],"train-subway":[448,512,["subway"],"f239","M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 128c0-17.7 14.3-32 32-32h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM272 96h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H272c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM64 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm288-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"chart-gantt":[512,512,[],"e0e4","M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32zm96 64H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32-14.3-32-32s14.3-32 32-32z"],"indian-rupee-sign":[320,512,["indian-rupee","inr"],"e1bc","M0 64C0 46.3 14.3 32 32 32H96h16H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H231.8c9.6 14.4 16.7 30.6 20.7 48H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H252.4c-13.2 58.3-61.9 103.2-122.2 110.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256h80c32.8 0 61-19.7 73.3-48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H185.3C173 115.7 144.8 96 112 96H96 32C14.3 96 0 81.7 0 64z"],"crop-simple":[512,512,["crop-alt"],"f565","M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H128V32zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-256c0-35.3-28.7-64-64-64L160 64v64l224 0 0 352z"],"money-bill-1":[576,512,["money-bill-alt"],"f3d1","M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm76-48c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z"],"left-long":[512,512,["long-arrow-alt-left"],"f30a","M177.5 414c-8.8 3.8-19 2-26-4.6l-144-136C2.7 268.9 0 262.6 0 256s2.7-12.9 7.5-17.4l144-136c7-6.6 17.2-8.4 26-4.6s14.5 12.5 14.5 22l0 72 288 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-288 0 0 72c0 9.6-5.7 18.2-14.5 22z"],dna:[448,512,[129516],"f471","M416 0c17.7 0 32 14.3 32 32c0 59.8-30.3 107.5-69.4 146.6c-28 28-62.5 53.5-97.3 77.4l-2.5 1.7c-11.9 8.1-23.8 16.1-35.5 23.9l0 0 0 0 0 0-1.6 1c-6 4-11.9 7.9-17.8 11.9c-20.9 14-40.8 27.7-59.3 41.5H283.3c-9.8-7.4-20.1-14.7-30.7-22.1l7-4.7 3-2c15.1-10.1 30.9-20.6 46.7-31.6c25 18.1 48.9 37.3 69.4 57.7C417.7 372.5 448 420.2 448 480c0 17.7-14.3 32-32 32s-32-14.3-32-32H64c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-59.8 30.3-107.5 69.4-146.6c28-28 62.5-53.5 97.3-77.4c-34.8-23.9-69.3-49.3-97.3-77.4C30.3 139.5 0 91.8 0 32C0 14.3 14.3 0 32 0S64 14.3 64 32H384c0-17.7 14.3-32 32-32zM338.6 384H109.4c-10.1 10.6-18.6 21.3-25.5 32H364.1c-6.8-10.7-15.3-21.4-25.5-32zM109.4 128H338.6c10.1-10.7 18.6-21.3 25.5-32H83.9c6.8 10.7 15.3 21.3 25.5 32zm55.4 48c18.4 13.8 38.4 27.5 59.3 41.5c20.9-14 40.8-27.7 59.3-41.5H164.7z"],"virus-slash":[640,512,[],"e075","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-154.3-121c-2-30.1 20.8-60.1 56-60.1H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H532.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C412.3 118.4 352 93.4 352 43.5V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L184.2 75c-12.5-12.5-32.8-12.5-45.3 0c-1.6 1.6-3.1 3.4-4.3 5.3L38.8 5.1zm225.8 177c6.9-3.9 14.9-6.1 23.4-6.1c26.5 0 48 21.5 48 48c0 4.4-.6 8.7-1.7 12.7l-69.7-54.6zM402 412.7L144.7 210c-9.5 8.5-22.2 14-37.2 14H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h11.5c49.9 0 74.9 60.3 39.6 95.6l-8.2 8.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-31.2 23.6-52.7 50-55.7z"],minus:[448,512,[8211,8722,10134,"subtract"],"f068","M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"],chess:[512,512,[],"f439","M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16V32H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h16V96H60.2C49.1 96 40 105.1 40 116.2c0 2.5 .5 4.9 1.3 7.3L73.8 208H72c-13.3 0-24 10.7-24 24s10.7 24 24 24h4L60 384H196L180 256h4c13.3 0 24-10.7 24-24s-10.7-24-24-24h-1.8l32.5-84.5c.9-2.3 1.3-4.8 1.3-7.3c0-11.2-9.1-20.2-20.2-20.2H144V64h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H144V16zM48 416L4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24H232c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L208 416H48zm288 0l-43.2 57.6c-3.1 4.2-4.8 9.2-4.8 14.4c0 13.3 10.7 24 24 24H488c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L464 416H336zM304 208v51.9c0 7.8 2.8 15.3 8 21.1L339.2 312 337 384H462.5l-3.3-72 28.3-30.8c5.4-5.9 8.5-13.6 8.5-21.7V208c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16v16H424V208c0-8.8-7.2-16-16-16H392c-8.8 0-16 7.2-16 16v16H352V208c0-8.8-7.2-16-16-16H320c-8.8 0-16 7.2-16 16zm80 96c0-8.8 7.2-16 16-16s16 7.2 16 16v32H384V304z"],"arrow-left-long":[512,512,["long-arrow-left"],"f177","M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128z"],"plug-circle-check":[576,512,[],"e55c","M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z"],"street-view":[512,512,[],"f21d","M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64v48c0 17.7 14.3 32 32 32h1.8l11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5h38.7c16.3 0 30-12.3 31.8-28.5L318.2 304H320c17.7 0 32-14.3 32-32V224c0-35.3-28.7-64-64-64H224zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z"],"franc-sign":[320,512,[],"e18f","M80 32C62.3 32 48 46.3 48 64V224v96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z"],"volume-off":[320,512,[],"f026","M320 64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L131.8 160H64c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64h67.8L266.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S320 460.6 320 448V64z"],"hands-asl-interpreting":[640,512,["american-sign-language-interpreting","asl-interpreting","hands-american-sign-language-interpreting"],"f2a3","M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7V256c0 70.7 57.3 128 128 128h72 8v-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2V256c0-70.7-57.3-128-128-128H440h-8v.3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z"],gear:[512,512,[9881,"cog"],"f013","M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z"],"droplet-slash":[640,512,["tint-slash"],"f5c7","M320 512c53.2 0 101.4-21.6 136.1-56.6l-298.3-235C140 257.1 128 292.3 128 320c0 106 86 192 192 192zM505.2 370.7c4.4-16.1 6.8-33.1 6.8-50.7c0-91.2-130.2-262.3-166.6-308.3C339.4 4.2 330.5 0 320.9 0h-1.8c-9.6 0-18.5 4.2-24.5 11.7C277.8 33 240.7 81.3 205.8 136L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L505.2 370.7zM224 336c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z"],mosque:[640,512,[128332],"f678","M400 0c5 0 9.8 2.4 12.8 6.4c34.7 46.3 78.1 74.9 133.5 111.5l0 0 0 0c5.2 3.4 10.5 7 16 10.6c28.9 19.2 45.7 51.7 45.7 86.1c0 28.6-11.3 54.5-29.8 73.4H221.8c-18.4-19-29.8-44.9-29.8-73.4c0-34.4 16.7-66.9 45.7-86.1c5.4-3.6 10.8-7.1 16-10.6l0 0 0 0C309.1 81.3 352.5 52.7 387.2 6.4c3-4 7.8-6.4 12.8-6.4zM288 512V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H192c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H560V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H448V454c0-19-8.4-37-23-49.2L400 384l-25 20.8C360.4 417 352 435 352 454v58H288zM70.4 5.2c5.7-4.3 13.5-4.3 19.2 0l16 12C139.8 42.9 160 83.2 160 126v2H0v-2C0 83.2 20.2 42.9 54.4 17.2l16-12zM0 160H160V296.6c-19.1 11.1-32 31.7-32 55.4V480c0 9.6 2.1 18.6 5.8 26.8c-6.6 3.4-14 5.2-21.8 5.2H48c-26.5 0-48-21.5-48-48V176 160z"],mosquito:[640,512,[],"e52b","M463.7 505.9c9.8-8.9 10.7-24.3 2.1-34.3l-42.1-49 0-54.7c0-5.5-1.8-10.8-5.1-15.1L352 266.3l0-.3L485.4 387.8C542.4 447.6 640 405.2 640 320.6c0-47.9-34-88.3-79.4-94.2l-153-23.9 40.8-40.9c7.8-7.8 9.4-20.1 3.9-29.8L428.5 90.1l38.2-50.9c8-10.6 6.1-25.9-4.3-34.1s-25.2-6.3-33.2 4.4l-48 63.9c-5.9 7.9-6.6 18.6-1.7 27.2L402.2 140 352 190.3l0-38.2c0-14.9-10.2-27.4-24-31l0-57.2c0-4.4-3.6-8-8-8s-8 3.6-8 8l0 57.2c-13.8 3.6-24 16.1-24 31l0 38.1L237.8 140l22.6-39.5c4.9-8.6 4.2-19.3-1.7-27.2l-48-63.9c-8-10.6-22.8-12.6-33.2-4.4s-12.2 23.5-4.3 34.1l38.2 50.9-23.9 41.7c-5.5 9.7-3.9 22 3.9 29.8l40.8 40.9-153 23.9C34 232.3 0 272.7 0 320.6c0 84.6 97.6 127 154.6 67.1L288 266l0 .3-66.5 86.4c-3.3 4.3-5.1 9.6-5.1 15.1l0 54.7-42.1 49c-8.6 10.1-7.7 25.5 2.1 34.3s24.7 7.9 33.4-2.1l48-55.9c3.8-4.4 5.9-10.2 5.9-16.1l0-55.4L288 344.7l0 63.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-63.1 24.3 31.6 0 55.4c0 5.9 2.1 11.7 5.9 16.1l48 55.9c8.6 10.1 23.6 11 33.4 2.1z"],"star-of-david":[512,512,[10017],"f69a","M404.2 309.5L383.1 344h42.3l-21.1-34.5zM371.4 256l-54-88H194.6l-54 88 54 88H317.4l54-88zm65.7 0l53.4 87c3.6 5.9 5.5 12.7 5.5 19.6c0 20.7-16.8 37.4-37.4 37.4H348.7l-56.2 91.5C284.8 504.3 270.9 512 256 512s-28.8-7.7-36.6-20.5L163.3 400H53.4C32.8 400 16 383.2 16 362.6c0-6.9 1.9-13.7 5.5-19.6l53.4-87L21.5 169c-3.6-5.9-5.5-12.7-5.5-19.6C16 128.8 32.8 112 53.4 112H163.3l56.2-91.5C227.2 7.7 241.1 0 256 0s28.8 7.7 36.6 20.5L348.7 112H458.6c20.7 0 37.4 16.8 37.4 37.4c0 6.9-1.9 13.7-5.5 19.6l-53.4 87zm-54-88l21.1 34.5L425.4 168H383.1zM283 112L256 68l-27 44h54zM128.9 168H86.6l21.1 34.5L128.9 168zM107.8 309.5L86.6 344h42.3l-21.1-34.5zM229 400l27 44 27-44H229z"],"person-military-rifle":[512,512,[],"e54b","M160 39c0-13 10-23.8 22.9-24.9L334.7 1.4C344 .7 352 8 352 17.4V48c0 8.8-7.2 16-16 16H185c-13.8 0-25-11.2-25-25zm17.6 57H334.4c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L352 369.7V480c0 1.3-.1 2.5-.2 3.8L177.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9h50.4c15.9 0 31.3 2.8 45.8 7.9L421.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l13.9 8 13.9 8c7.7 4.4 10.3 14.2 5.9 21.9L416 173.9l1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L392.6 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM320 512H192c-17.7 0-32-14.3-32-32V369.7l-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8l76.1-128.8c9.4-15.8 21.7-29.3 36-40L331.1 510c-3.5 1.3-7.2 2-11.1 2zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],"cart-shopping":[576,512,[128722,"shopping-cart"],"f07a","M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"],vials:[512,512,[],"f493","M0 64C0 46.3 14.3 32 32 32H88h48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96C14.3 96 0 81.7 0 64zM136 96H88V256h48V96zM288 64c0-17.7 14.3-32 32-32h56 48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96c-17.7 0-32-14.3-32-32zM424 96H376V256h48V96z"],"plug-circle-plus":[576,512,[],"e55f","M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z"],"place-of-worship":[640,512,[],"f67f","M224 109.3V217.6L183.3 242c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V283.2c0-16.9-8.8-32.5-23.3-41.2L416 217.6V109.3c0-8.5-3.4-16.6-9.4-22.6L331.3 11.3c-6.2-6.2-16.4-6.2-22.6 0L233.4 86.6c-6 6-9.4 14.1-9.4 22.6zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z"],"grip-vertical":[320,512,[],"f58e","M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z"],"arrow-turn-up":[384,512,["level-up"],"f148","M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z"],u:[384,512,[117],"55","M32 32c17.7 0 32 14.3 32 32V288c0 70.7 57.3 128 128 128s128-57.3 128-128V64c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 106-86 192-192 192S0 394 0 288V64C0 46.3 14.3 32 32 32z"],"square-root-variable":[576,512,["square-root-alt"],"f698","M282.6 78.1c8-27.3 33-46.1 61.4-46.1H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H344L238.7 457c-3.6 12.3-14.1 21.2-26.8 22.8s-25.1-4.6-31.5-15.6L77.6 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H77.6c22.8 0 43.8 12.1 55.3 31.8l65.2 111.8L282.6 78.1zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0L480 274.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 320l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 365.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 320l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z"],clock:[512,512,[128339,"clock-four"],"f017","M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"],"backward-step":[320,512,["step-backward"],"f048","M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241V96c0-17.7-14.3-32-32-32S0 78.3 0 96V416c0 17.7 14.3 32 32 32s32-14.3 32-32V271l11.5 9.6 192 160z"],pallet:[640,512,[],"f482","M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 320 544h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H576V384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H544 320 96 32zm96 64H288v64H128V384zm224 0H512v64H352V384z"],faucet:[512,512,[],"e005","M192 96v12L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l96-12 31-3.9 1-.1 1 .1 31 3.9 96 12c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 12V96c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 256c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H132.1c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48H352c17.7 0 32 14.3 32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32c0-88.4-71.6-160-160-160H320l-22.6-22.6c-6-6-14.1-9.4-22.6-9.4H256V180.2l-32-4-32 4V224H173.3c-8.5 0-16.6 3.4-22.6 9.4L128 256H32z"],"baseball-bat-ball":[512,512,[],"f432","M424 0c-12.4 0-24.2 4.9-33 13.7L233.5 171.2c-10.5 10.5-19.8 22.1-27.7 34.6L132.7 321.6c-7.3 11.5-15.8 22.2-25.5 31.9L69.9 390.7l51.3 51.3 37.3-37.3c9.6-9.6 20.3-18.2 31.9-25.5l115.8-73.1c12.5-7.9 24.1-17.2 34.6-27.7L498.3 121c8.7-8.7 13.7-20.6 13.7-33s-4.9-24.2-13.7-33L457 13.7C448.2 4.9 436.4 0 424 0zm88 432a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM15 399c-9.4 9.4-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L49 399c-9.4-9.4-24.6-9.4-33.9 0z"],s:[320,512,[115],"53","M99.1 105.4C79 114 68.2 127.2 65.2 144.8c-2.4 14.1-.7 23.2 2 29.4c2.8 6.3 7.9 12.4 16.7 18.6c19.2 13.4 48.3 22.1 84.9 32.5c1 .3 1.9 .6 2.9 .8c32.7 9.3 72 20.6 100.9 40.7c15.7 10.9 29.9 25.5 38.6 45.1c8.8 19.8 10.8 42 6.6 66.3c-7.3 42.5-35.3 71.7-71.8 87.3c-35.4 15.2-79.1 17.9-123.7 10.9l-.2 0 0 0c-24-3.9-62.7-17.1-87.6-25.6c-4.8-1.7-9.2-3.1-12.8-4.3C5.1 440.8-3.9 422.7 1.6 405.9s23.7-25.8 40.5-20.3c4.9 1.6 10.2 3.4 15.9 5.4c25.4 8.6 56.4 19.2 74.4 22.1c36.8 5.7 67.5 2.5 88.5-6.5c20.1-8.6 30.8-21.8 33.9-39.4c2.4-14.1 .7-23.2-2-29.4c-2.8-6.3-7.9-12.4-16.7-18.6c-19.2-13.4-48.3-22.1-84.9-32.5c-1-.3-1.9-.6-2.9-.8c-32.7-9.3-72-20.6-100.9-40.7c-15.7-10.9-29.9-25.5-38.6-45.1c-8.8-19.8-10.8-42-6.6-66.3l31.5 5.5L2.1 133.9C9.4 91.4 37.4 62.2 73.9 46.6c35.4-15.2 79.1-17.9 123.7-10.9c13 2 52.4 9.6 66.6 13.4c17.1 4.5 27.2 22.1 22.7 39.2s-22.1 27.2-39.2 22.7c-11.2-3-48.1-10.2-60.1-12l4.9-31.5-4.9 31.5c-36.9-5.8-67.5-2.5-88.6 6.5z"],timeline:[640,512,[],"e29c","M128 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32 97.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288v54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V288H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V169.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3V224H160V169.3zM488 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM320 392a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],keyboard:[576,512,[9e3],"f11c","M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm16 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V144zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM160 336c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336zM272 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM256 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM368 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM352 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V240zM464 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM448 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16z"],"caret-down":[320,512,[],"f0d7","M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"],"house-chimney-medical":[576,512,["clinic-medical"],"f7f2","M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM272 192c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H320V208c0-8.8-7.2-16-16-16H272z"],"temperature-three-quarters":[320,512,["temperature-3","thermometer-3","thermometer-three-quarters"],"f2c8","M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V144c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z"],"mobile-screen":[384,512,["mobile-android-alt"],"f3cf","M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM144 448c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160c-8.8 0-16 7.2-16 16zM304 64H80V384H304V64z"],"plane-up":[512,512,[],"e22d","M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 66.3L497.8 278.5c8.9 5.9 14.2 15.9 14.2 26.6v56.7c0 10.9-10.7 18.6-21.1 15.2L320 320v80l57.6 43.2c4 3 6.4 7.8 6.4 12.8v42c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400V320L21.1 377C10.7 380.4 0 372.7 0 361.8V305.1c0-10.7 5.3-20.7 14.2-26.6L192 160V93.7z"],"piggy-bank":[576,512,[],"f4d3","M400 96l0 .7c-5.3-.4-10.6-.7-16-.7H256c-16.5 0-32.5 2.1-47.8 6c-.1-2-.2-4-.2-6c0-53 43-96 96-96s96 43 96 96zm-16 32c3.5 0 7 .1 10.4 .3c4.2 .3 8.4 .7 12.6 1.3C424.6 109.1 450.8 96 480 96h11.5c10.4 0 18 9.8 15.5 19.9l-13.8 55.2c15.8 14.8 28.7 32.8 37.5 52.9H544c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H512c-9.1 12.1-19.9 22.9-32 32v64c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H256v32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V416c-34.9-26.2-58.7-66.3-63.2-112H68c-37.6 0-68-30.4-68-68s30.4-68 68-68h4c13.3 0 24 10.7 24 24s-10.7 24-24 24H68c-11 0-20 9-20 20s9 20 20 20H99.2c12.1-59.8 57.7-107.5 116.3-122.8c12.9-3.4 26.5-5.2 40.5-5.2H384zm64 136a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z"],"battery-half":[576,512,["battery-3"],"f242","M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm208 96H96V320H288V192z"],"mountain-city":[640,512,[],"e52e","M336 0c-26.5 0-48 21.5-48 48v92.1l71.4 118.4c2.5-1.6 5.4-2.5 8.6-2.5h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16h-3.5l73.8 122.4c12.4 20.6 12.9 46.3 1.2 67.3c-.4 .8-.9 1.6-1.4 2.3H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H568V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H480V48c0-26.5-21.5-48-48-48H336zm32 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zM352 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176zm160 96c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zM224 188.9L283.8 288H223l-48 64-24.6-41.2L224 188.9zm29.4-44.2C247.1 134.3 236 128 224 128s-23.1 6.3-29.4 16.7L5.1 458.9c-6.5 10.8-6.7 24.3-.7 35.3S22 512 34.5 512H413.5c12.5 0 24-6.8 30.1-17.8s5.8-24.5-.7-35.3L253.4 144.7z"],coins:[512,512,[],"f51e","M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2l0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5V176c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336V300.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4V304v5.7V336zm32 0V304 278.1c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5V272c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5V432c0 44.2-86 80-192 80S0 476.2 0 432V396.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z"],khanda:[512,512,[9772],"f66d","M245.8 3.7c5.9-4.9 14.6-4.9 20.5 0l48 40c5.9 4.9 7.5 13.2 3.8 19.9l0 0 0 0 0 0 0 0-.1 .1-.3 .6c-.3 .5-.7 1.3-1.2 2.3c-1 2-2.6 5-4.4 8.6c-.5 .9-.9 1.9-1.4 2.9C344.9 97.4 368 134 368 176s-23.1 78.6-57.3 97.8c.5 1 1 2 1.4 2.9c1.8 3.7 3.3 6.6 4.4 8.6c.5 1 .9 1.8 1.2 2.3l.3 .6 .1 .1 0 0 0 0c3.6 6.7 2 15-3.8 19.9L272 343.5v19.8l35.6-24.5 41.1-28.2c42.8-29.4 68.4-78 68.4-130c0-31.1-9.2-61.6-26.5-87.5l-2.8-4.2c-4-6-3.5-14 1.3-19.5s12.7-7 19.2-3.7L401.1 80c7.2-14.3 7.2-14.3 7.2-14.3l0 0 0 0 .1 0 .3 .2 1 .5c.8 .4 2 1.1 3.5 1.9c2.9 1.7 7 4.1 11.8 7.3c9.6 6.4 22.5 16.1 35.4 29c25.7 25.7 52.7 65.6 52.7 119.3c0 53.1-26.4 100.5-51.2 133.6c-12.6 16.7-25.1 30.3-34.5 39.7c-4.7 4.7-8.7 8.4-11.5 10.9c-1.4 1.3-2.5 2.2-3.3 2.9l-.9 .8-.3 .2-.1 .1 0 0 0 0s0 0-10.2-12.3l10.2 12.3c-5.1 4.3-12.4 4.9-18.2 1.6l-75.6-43-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21L272 423.4v28.9c9.6 5.5 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7V424.1l-40.3 27.7C197.8 463.3 187.9 472 176 472c-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-75.6 43c-5.8 3.3-13 2.7-18.2-1.6L112 400c-10.2 12.3-10.2 12.3-10.3 12.3l0 0 0 0-.1-.1-.3-.2-.9-.8c-.8-.7-1.9-1.7-3.3-2.9c-2.8-2.5-6.7-6.2-11.5-10.9c-9.4-9.4-21.9-23-34.5-39.7C26.4 324.5 0 277.1 0 224c0-53.7 26.9-93.6 52.7-119.3c12.9-12.9 25.8-22.6 35.4-29C93 72.5 97 70 99.9 68.4c1.5-.8 2.6-1.5 3.5-1.9l1-.5 .3-.2 .1 0 0 0 0 0s0 0 7.2 14.3l-7.2-14.3c6.5-3.2 14.3-1.7 19.2 3.7s5.3 13.4 1.3 19.5l-2.8 4.2C105.2 119 96 149.5 96 180.6c0 51.9 25.6 100.6 68.4 130l41.1 28.2L240 362.6V343.5l-42.2-35.2c-5.9-4.9-7.5-13.2-3.8-19.9l0 0 0 0 0 0 .1-.1 .3-.6c.3-.5 .7-1.3 1.2-2.3c1-2 2.6-5 4.4-8.6c.5-.9 .9-1.9 1.4-2.9C167.1 254.6 144 218 144 176s23.1-78.6 57.3-97.8c-.5-1-1-2-1.4-2.9c-1.8-3.7-3.3-6.6-4.4-8.6c-.5-1-.9-1.8-1.2-2.3l-.3-.6-.1-.1 0 0 0 0 0 0c-3.6-6.7-2-15 3.8-19.9l48-40zM220.2 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1C227 210.2 232 190.9 232 176s-5-34.2-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1C285 141.8 280 161.1 280 176s5 34.2 11.8 53.1z"],sliders:[512,512,["sliders-h"],"f1de","M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z"],"folder-tree":[576,512,[],"f802","M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32v96V384c0 35.3 28.7 64 64 64H256V384H64V160H256V96H64V32zM288 192c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V192zm0 288c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V480z"],"network-wired":[640,512,[],"f6ff","M256 64H384v64H256V64zM240 0c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96v32H80c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H240c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H192V288H448v32H400c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H512V288h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V192h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H240zM96 448V384H224v64H96zm320-64H544v64H416V384z"],"map-pin":[320,512,[128205],"f276","M16 144a144 144 0 1 1 288 0A144 144 0 1 1 16 144zM160 80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-53 0-96 43-96 96c0 8.8 7.2 16 16 16s16-7.2 16-16c0-35.3 28.7-64 64-64zM128 480V317.1c10.4 1.9 21.1 2.9 32 2.9s21.6-1 32-2.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32z"],hamsa:[512,512,[],"f665","M34.6 288H80c8.8 0 16-7.2 16-16V72c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V40c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V72c0-22.1 17.9-40 40-40s40 17.9 40 40V272c0 8.8 7.2 16 16 16h45.4c19.1 0 34.6 15.5 34.6 34.6c0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71s-119.4-25.8-160.6-71L9 345.9c-5.8-6.4-9-14.7-9-23.3C0 303.5 15.5 288 34.6 288zM256 288c-38.4 0-76.8 35.8-90.6 50.2c-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"cent-sign":[384,512,[],"e3f5","M224 0c17.7 0 32 14.3 32 32V66.7c30.9 5.2 59.2 17.7 83.2 35.8c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4C279.4 137.5 252.9 128 224 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c28.9 0 55.4-9.5 76.8-25.6c14.1-10.6 34.2-7.8 44.8 6.4s7.8 34.2-6.4 44.8c-24 18-52.4 30.6-83.2 35.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C101.2 430.1 32 351.1 32 256s69.2-174.1 160-189.3V32c0-17.7 14.3-32 32-32z"],flask:[448,512,[],"f0c3","M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM192 196.8V64h64V196.8c0 23.7 6.6 46.9 19 67.1L309.5 320h-171L173 263.9c12.4-20.2 19-43.4 19-67.1z"],"person-pregnant":[384,512,[],"e31e","M192 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM120 383c-13.8-3.6-24-16.1-24-31V296.9l-4.6 7.6c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c15-24.9 40.3-41.5 68.7-45.6c4.1-.6 8.2-1 12.5-1h1.1 12.5H192c1.4 0 2.8 .1 4.1 .3c35.7 2.9 65.4 29.3 72.1 65l6.1 32.5c44.3 8.6 77.7 47.5 77.7 94.3v32c0 17.7-14.3 32-32 32H304 264v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384h-8-8v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V383z"],"wand-sparkles":[512,512,[],"f72b","M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7V176c0 8.8-7.2 16-16 16H384.2c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9V272c0-8.8 7.2-16 16-16h34.6c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z"],"ellipsis-vertical":[128,512,["ellipsis-v"],"f142","M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z"],ticket:[576,512,[127903],"f145","M64 64C28.7 64 0 92.7 0 128v64c0 8.8 7.4 15.7 15.7 18.6C34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V320c0-8.8-7.4-15.7-15.7-18.6C541.5 294.9 528 277 528 256s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6V128c0-35.3-28.7-64-64-64H64zm64 112l0 160c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16zM96 160c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V160z"],"power-off":[512,512,[9211],"f011","M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V256c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z"],"right-long":[512,512,["long-arrow-alt-right"],"f30b","M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 72L32 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l288 0 0 72c0 9.6 5.7 18.2 14.5 22z"],"flag-usa":[448,512,[],"f74d","M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1v36.1l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-20.3-9-41.8-14.7-63.6-16.9v32.2c17.4 2.1 34.4 6.7 50.6 13.9l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 136.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 203.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 232.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 299.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 328.3v33.5c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 400v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V416 345.5 312.8 249.5 216.8 153.5 120.8 64 32C0 14.3 14.3 0 32 0zm80 96A16 16 0 1 0 80 96a16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-32 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32z"],"laptop-file":[640,512,[],"e51d","M128 0C92.7 0 64 28.7 64 64V288H19.2C8.6 288 0 296.6 0 307.2C0 349.6 34.4 384 76.8 384H320V288H128V64H448V96h64V64c0-35.3-28.7-64-64-64H128zM512 128H400c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V256H544c-17.7 0-32-14.3-32-32V128zm32 0v96h96l-96-96z"],tty:[512,512,["teletype"],"f1e4","M38.3 241.3L15.1 200.6c-9.2-16.2-8.4-36.5 4.5-50C61.4 106.8 144.7 48 256 48s194.6 58.8 236.4 102.6c12.9 13.5 13.7 33.8 4.5 50l-23.1 40.7c-7.5 13.2-23.3 19.3-37.8 14.6l-81.1-26.6c-13.1-4.3-22-16.6-22-30.4V144c-49.6-18.1-104-18.1-153.6 0v54.8c0 13.8-8.9 26.1-22 30.4L76.1 255.8c-14.5 4.7-30.3-1.4-37.8-14.6zM32 336c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V336zm0 96c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V432zM144 320h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V336zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V336zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V432c0-8.8 7.2-16 16-16zM128 432c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V432z"],"diagram-next":[512,512,[],"e476","M512 160c0 35.3-28.7 64-64 64H280v64h46.1c21.4 0 32.1 25.9 17 41L273 399c-9.4 9.4-24.6 9.4-33.9 0L169 329c-15.1-15.1-4.4-41 17-41H232V224H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64v64zM448 416V352H365.3l.4-.4c18.4-18.4 20.4-43.7 11-63.6l71.3 0c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64l71.3 0c-9.4 19.9-7.4 45.2 11 63.6l.4 .4H64v64H210.7l5.7 5.7c21.9 21.9 57.3 21.9 79.2 0l5.7-5.7H448z"],"person-rifle":[576,512,[],"e54e","M265.2 192c25.4 0 49.8 7.1 70.8 19.9V512H144V337.7L90.4 428.3c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8L97.7 258.8c24.5-41.4 69-66.8 117.1-66.8h50.4zM160 80a80 80 0 1 1 160 0A80 80 0 1 1 160 80zM448 0c8.8 0 16 7.2 16 16V132.3c9.6 5.5 16 15.9 16 27.7V269.3l16-5.3V208c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v84.5c0 6.9-4.4 13-10.9 15.2L480 325.3V352h48c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H484l23 92.1c2.5 10.1-5.1 19.9-15.5 19.9H432c-8.8 0-16-7.2-16-16V400H400c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32V160c0-11.8 6.4-22.2 16-27.7V32c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 16z"],"house-medical-circle-exclamation":[640,512,[],"e512","M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z"],"closed-captioning":[576,512,[],"f20a","M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z"],"person-hiking":[384,512,["hiking"],"f6ec","M192 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm51.3 182.7L224.2 307l49.7 49.7c9 9 14.1 21.2 14.1 33.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3l-73.9-73.9c-15.8-15.8-22.2-38.6-16.9-60.3l20.4-84c8.3-34.1 42.7-54.9 76.7-46.4c19 4.8 35.6 16.4 46.4 32.7L305.1 208H336V184c0-13.3 10.7-24 24-24s24 10.7 24 24v55.8c0 .1 0 .2 0 .2s0 .2 0 .2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V272H296.6c-16 0-31-8-39.9-21.4l-13.3-20zM81.1 471.9L117.3 334c3 4.2 6.4 8.2 10.1 11.9l41.9 41.9L142.9 488.1c-4.5 17.1-22 27.3-39.1 22.8s-27.3-22-22.8-39.1zm55.5-346L101.4 266.5c-3 12.1-14.9 19.9-27.2 17.9l-47.9-8c-14-2.3-22.9-16.3-19.2-30L31.9 155c9.5-34.8 41.1-59 77.2-59h4.2c15.6 0 27.1 14.7 23.3 29.8z"],"venus-double":[640,512,[9890],"f226","M192 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM368 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H224v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C78.1 334.1 16 262.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176zM344 318c14.6-15.6 26.8-33.4 36-53c18.8 14.4 42.4 23 68 23c61.9 0 112-50.1 112-112s-50.1-112-112-112c-25.6 0-49.1 8.6-68 23c-9.3-19.5-21.5-37.4-36-53C373.1 12.6 409.1 0 448 0c97.2 0 176 78.8 176 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H480v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1c-26.6-4.9-51.1-15.7-72-31.1z"],images:[576,512,[],"f302","M160 32c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320H328 280 200c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM192 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z"],calculator:[384,512,[128425],"f1ec","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM96 64H288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32zm32 160a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 352a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM64 416c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM192 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64z"],"people-pulling":[576,512,[],"e535","M80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zM64 128c-35.3 0-64 28.7-64 64V320c0 17.7 14.3 32 32 32c9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8L123.1 352h15.7l30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7c8.6 3.6 18 3.1 25.9-.7c3.4-1.6 6.6-3.9 9.3-6.7c3.1-3.2 5.5-7 7.1-11.4c.1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L537 232.7l-15.3-36.8C504.5 154.8 464.3 128 419.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128H64zM464 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z"],n:[384,512,[110],"4e","M21.1 33.9c12.7-4.6 26.9-.7 35.5 9.6L320 359.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V448c0 13.5-8.4 25.5-21.1 30.1s-26.9 .7-35.5-9.6L64 152.4V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 50.5 8.4 38.5 21.1 33.9z"],"cable-car":[512,512,[128673,57551,"tram"],"f7da","M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 56a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 288c0-35.3 28.7-64 64-64H232V157.5l-203.1 42c-13 2.7-25.7-5.7-28.4-18.6s5.7-25.7 18.6-28.4l232-48 232-48c13-2.7 25.7 5.7 28.4 18.6s-5.7 25.7-18.6 28.4L280 147.5V224H416c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V288zm64 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H96zm112 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H352z"],"cloud-rain":[512,512,[127783,9926],"f73d","M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zm-6.8 52c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L89.2 372zm160 0c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L249.2 372zm124.9 64.6L409.2 372c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3z"],"building-circle-xmark":[640,512,[],"e4d4","M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z"],ship:[576,512,[128674],"f21a","M192 32c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V64h48c26.5 0 48 21.5 48 48V240l44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240V112c0-26.5 21.5-48 48-48h48V32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7V128H160v90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"],"arrows-down-to-line":[576,512,[],"e4b8","M544 416L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zm22.6-137.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L480 274.7 480 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zm-320-45.3c-12.5-12.5-32.8-12.5-45.3 0L160 274.7 160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7L54.6 233.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3z"],download:[512,512,[],"f019","M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],"face-grin":[512,512,[128512,"grin"],"f580","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"delete-left":[576,512,[9003,"backspace"],"f55a","M576 128c0-35.3-28.7-64-64-64H205.3c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7H512c35.3 0 64-28.7 64-64V128zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"],"eye-dropper":[512,512,["eye-dropper-empty","eyedropper"],"f1fb","M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6v42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480h42.4c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7H96V379.9c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z"],"file-circle-check":[576,512,[],"e5a0","M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z"],forward:[512,512,[9193],"f04e","M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L224 214.3V256v41.7L52.5 440.6zM256 352V256 128 96c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l192 160c7.3 6.1 11.5 15.1 11.5 24.6s-4.2 18.5-11.5 24.6l-192 160c-9.5 7.9-22.8 9.7-34.1 4.4s-18.4-16.6-18.4-29V352z"],mobile:[384,512,[128241,"mobile-android","mobile-phone"],"f3ce","M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zm80 432h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],"face-meh":[512,512,[128528,"meh"],"f11a","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 336H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],"align-center":[448,512,[],"f037","M352 64c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32z"],"book-skull":[448,512,["book-dead"],"f6b7","M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM320 112c0-35.3-35.8-64-80-64s-80 28.7-80 64c0 20.9 12.6 39.5 32 51.2V176c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V163.2c19.4-11.7 32-30.3 32-51.2zM208 96a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM134.3 209.3c-8.1-3.5-17.5 .3-21 8.4s.3 17.5 8.4 21L199.4 272l-77.7 33.3c-8.1 3.5-11.9 12.9-8.4 21s12.9 11.9 21 8.4L240 289.4l105.7 45.3c8.1 3.5 17.5-.3 21-8.4s-.3-17.5-8.4-21L280.6 272l77.7-33.3c8.1-3.5 11.9-12.9 8.4-21s-12.9-11.9-21-8.4L240 254.6 134.3 209.3z"],"id-card":[576,512,[62147,"drivers-license"],"f2c2","M0 96l576 0c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm0 32V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128H0zM64 405.3c0-29.5 23.9-53.3 53.3-53.3H234.7c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7H74.7c-5.9 0-10.7-4.8-10.7-10.7zM176 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm176 16c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16z"],outdent:[448,512,["dedent"],"f03b","M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM.2 268.6c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6V335.3c0 13.3-15.3 20.8-25.8 12.6L.2 268.6z"],"heart-circle-exclamation":[576,512,[],"e4fe","M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z"],house:[576,512,[127968,63498,63500,"home","home-alt","home-lg-alt"],"f015","M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z"],"calendar-week":[448,512,[],"f784","M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H368c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z"],"laptop-medical":[640,512,[],"f812","M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H352v48c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V272H240c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z"],b:[320,512,[98],"42","M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H192c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128H64zm96 192H64V96h96c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288h96 32c35.3 0 64 28.7 64 64s-28.7 64-64 64H64V288z"],"file-medical":[384,512,[],"f477","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM160 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H224v48c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V352H112c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16h48V240z"],"dice-one":[448,512,[9856],"f525","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"kiwi-bird":[576,512,[],"f535","M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4H448c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1s11.2-8.3 11.2-15.3V224c0-70.7-57.3-128-128-128H392.3c-36.4 0-69.9-17.6-101.1-36.4C262.3 42.1 228.3 32 192 32C86 32 0 118 0 224c0 71.1 38.6 133.1 96 166.3V456c0 13.3 10.7 24 24 24s24-10.7 24-24V410c15.3 3.9 31.4 6 48 6c5.4 0 10.7-.2 16-.7V456c0 13.3 10.7 24 24 24s24-10.7 24-24V405.1c12.4-4.4 24.2-10 35.2-16.7zM448 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],"arrow-right-arrow-left":[448,512,[8644,"exchange"],"f0ec","M438.6 150.6c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96 32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l306.7 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96zm-333.3 352c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 416 416 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96z"],"rotate-right":[512,512,["redo-alt","rotate-forward"],"f2f9","M463.5 224H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5z"],utensils:[448,512,[127860,61685,"cutlery"],"f2e7","M416 0C400 0 288 32 288 176V288c0 35.3 28.7 64 64 64h32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352 240 32c0-17.7-14.3-32-32-32zM64 16C64 7.8 57.9 1 49.7 .1S34.2 4.6 32.4 12.5L2.1 148.8C.7 155.1 0 161.5 0 167.9c0 45.9 35.1 83.6 80 87.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V255.6c44.9-4.1 80-41.8 80-87.7c0-6.4-.7-12.8-2.1-19.1L191.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S160 7.8 160 16V150.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L127.9 14.6C127.2 6.3 120.3 0 112 0s-15.2 6.3-15.9 14.6L83.7 151c-.5 5.1-4.7 9-9.8 9c-5.4 0-9.8-4.4-9.8-9.8V16zm48.3 152l-.3 0-.3 0 .3-.7 .3 .7z"],"arrow-up-wide-short":[576,512,["sort-amount-up"],"f161","M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32z"],"mill-sign":[384,512,[],"e1ed","M302.1 42.8c5.9-16.6-2.7-35-19.4-40.9s-35 2.7-40.9 19.4L208 116.1c-5.7 4-11.1 8.5-16 13.5C171.7 108.9 143.3 96 112 96c-19.5 0-37.8 5-53.7 13.7C52.5 101.4 42.9 96 32 96C14.3 96 0 110.3 0 128v80V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-26.5 21.5-48 48-48s48 21.5 48 48v42.5L81.9 469.2c-5.9 16.6 2.7 35 19.4 40.9s35-2.7 40.9-19.4l21.4-60C168.9 441 179.6 448 192 448c17.7 0 32-14.3 32-32V261.5l35.7-100c3.9-1 8.1-1.6 12.3-1.6c26.5 0 48 21.5 48 48V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-58.2-44.3-106-101.1-111.5l19.2-53.8z"],"bowl-rice":[512,512,[],"e2eb","M176 56c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24zm24 48h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176H72c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H248c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H104c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H344c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H440c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H392c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24z"],skull:[512,512,[128128],"f54c","M416 398.9c58.5-41.1 96-104.1 96-174.9C512 100.3 397.4 0 256 0S0 100.3 0 224c0 70.7 37.5 133.8 96 174.9c0 .4 0 .7 0 1.1v64c0 26.5 21.5 48 48 48h48V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h64V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h48c26.5 0 48-21.5 48-48V400c0-.4 0-.7 0-1.1zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm256-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"],"tower-broadcast":[576,512,["broadcast-tower"],"f519","M80.3 44C69.8 69.9 64 98.2 64 128s5.8 58.1 16.3 84c6.6 16.4-1.3 35-17.7 41.7s-35-1.3-41.7-17.7C7.4 202.6 0 166.1 0 128S7.4 53.4 20.9 20C27.6 3.6 46.2-4.3 62.6 2.3S86.9 27.6 80.3 44zM555.1 20C568.6 53.4 576 89.9 576 128s-7.4 74.6-20.9 108c-6.6 16.4-25.3 24.3-41.7 17.7S489.1 228.4 495.7 212c10.5-25.9 16.3-54.2 16.3-84s-5.8-58.1-16.3-84C489.1 27.6 497 9 513.4 2.3s35 1.3 41.7 17.7zM352 128c0 23.7-12.9 44.4-32 55.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V183.4c-19.1-11.1-32-31.7-32-55.4c0-35.3 28.7-64 64-64s64 28.7 64 64zM170.6 76.8C163.8 92.4 160 109.7 160 128s3.8 35.6 10.6 51.2c7.1 16.2-.3 35.1-16.5 42.1s-35.1-.3-42.1-16.5c-10.3-23.6-16-49.6-16-76.8s5.7-53.2 16-76.8c7.1-16.2 25.9-23.6 42.1-16.5s23.6 25.9 16.5 42.1zM464 51.2c10.3 23.6 16 49.6 16 76.8s-5.7 53.2-16 76.8c-7.1 16.2-25.9 23.6-42.1 16.5s-23.6-25.9-16.5-42.1c6.8-15.6 10.6-32.9 10.6-51.2s-3.8-35.6-10.6-51.2c-7.1-16.2 .3-35.1 16.5-42.1s35.1 .3 42.1 16.5z"],"truck-pickup":[640,512,[128763],"f63c","M368.6 96l76.8 96H288V96h80.6zM224 80V192H64c-17.7 0-32 14.3-32 32v64c-17.7 0-32 14.3-32 32s14.3 32 32 32H65.1c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16h66.3c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32V224c0-17.7-14.3-32-32-32H527.4L418.6 56c-12.1-15.2-30.5-24-50-24H272c-26.5 0-48 21.5-48 48zm0 288a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm288 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0z"],"up-long":[320,512,["long-arrow-alt-up"],"f30c","M318 177.5c3.8-8.8 2-19-4.6-26l-136-144C172.9 2.7 166.6 0 160 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26S14.4 192 24 192H96l0 288c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32l0-288h72c9.6 0 18.2-5.7 22-14.5z"],stop:[384,512,[9209],"f04d","M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z"],"code-merge":[448,512,[],"f387","M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3V358.7C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V272c26.7 20.1 60 32 96 32h86.7c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48H208c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z"],upload:[512,512,[],"f093","M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],hurricane:[384,512,[],"f751","M0 208C0 104.4 75.7 18.5 174.9 2.6C184 1.2 192 8.6 192 17.9V81.2c0 8.4 6.5 15.3 14.7 16.5C307 112.5 384 199 384 303.4c0 103.6-75.7 189.5-174.9 205.4c-9.2 1.5-17.1-5.9-17.1-15.2V430.2c0-8.4-6.5-15.3-14.7-16.5C77 398.9 0 312.4 0 208zm288 48A96 96 0 1 0 96 256a96 96 0 1 0 192 0zm-96-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],mound:[576,512,[],"e52d","M144.1 179.2C173.8 127.7 228.6 96 288 96s114.2 31.7 143.9 83.2L540.4 368c12.3 21.3-3.1 48-27.7 48H63.3c-24.6 0-40-26.6-27.7-48L144.1 179.2z"],"toilet-portable":[320,512,[],"e583","M0 32V64H320V32c0-17.7-14.3-32-32-32H32C14.3 0 0 14.3 0 32zM24 96H0v24V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H272v8c0 13.3 10.7 24 24 24s24-10.7 24-24V120 96H296 24zM256 240v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V240c0-8.8 7.2-16 16-16s16 7.2 16 16z"],"compact-disc":[512,512,[128191,128192,128440],"f51f","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-96-32a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zM96 240c0-35 17.5-71.1 45.2-98.8S205 96 240 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-45.4 0-89.2 22.3-121.5 54.5S64 194.6 64 240c0 8.8 7.2 16 16 16s16-7.2 16-16z"],"file-arrow-down":[384,512,["file-download"],"f56d","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z"],caravan:[640,512,[],"f8ff","M0 112C0 67.8 35.8 32 80 32H416c88.4 0 160 71.6 160 160V352h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0H288c0 53-43 96-96 96s-96-43-96-96H80c-44.2 0-80-35.8-80-80V112zM320 352H448V256H416c-8.8 0-16-7.2-16-16s7.2-16 16-16h32V160c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32V352zM96 128c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96zm96 336a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"],"shield-cat":[512,512,[],"e572","M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4h.2c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4h48c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3h.2c5.8 0 10.4 4.7 10.4 10.4V272c0 53-43 96-96 96s-96-43-96-96V154.4zM216 288a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm96-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z"],bolt:[448,512,[9889,"zap"],"f0e7","M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288H175.5L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H272.5L349.4 44.6z"],"glass-water":[384,512,[],"e4f4","M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM73 156.5L66.4 64H317.6L311 156.5l-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0c-20.9-10.4-45.5-10.4-66.4 0c-19.4 9.7-42.2 9.7-61.6 0L73 156.5z"],"oil-well":[576,512,[],"e532","M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4L308.5 167.5l-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39L96 222.6V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H406.7L340 257.5l-62.2 16.1L305.3 352H238.7L265 277l-74.6 19.3L137.3 448H96V288.8l337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l11.2-32H327.7l11.2 32H205.1z"],vault:[576,512,[],"e2c5","M64 0C28.7 0 0 28.7 0 64V416c0 35.3 28.7 64 64 64H80l16 32h64l16-32H400l16 32h64l16-32h16c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 320a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-240a160 160 0 1 1 0 320 160 160 0 1 1 0-320zM480 221.3V336c0 8.8-7.2 16-16 16s-16-7.2-16-16V221.3c-18.6-6.6-32-24.4-32-45.3c0-26.5 21.5-48 48-48s48 21.5 48 48c0 20.9-13.4 38.7-32 45.3z"],mars:[448,512,[9794],"f222","M289.8 46.8c3.7-9 12.5-14.8 22.2-14.8H424c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L321 204.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176S0 401.2 0 304s78.8-176 176-176c37 0 71.4 11.4 99.8 31l52.6-52.6L295 73c-6.9-6.9-8.9-17.2-5.2-26.2zM400 80l0 0h0v0zM176 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z"],toilet:[448,512,[128701],"f7d8","M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V196.9c-1.9 1.4-3.8 2.9-5.6 4.4C10.9 214.5 0 232.9 0 256c0 46.9 14.3 84.1 37 112.5c14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H352c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8c22.7-28.4 37-65.5 37-112.5c0-23.1-10.9-41.5-26.4-54.6c-1.8-1.5-3.7-3-5.6-4.4V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM384 256.3c0 1-.3 2.6-3.8 5.6c-4.8 4.1-14 9-29.3 13.4C320.5 284 276.1 288 224 288s-96.5-4-126.9-12.8c-15.3-4.4-24.5-9.3-29.3-13.4c-3.5-3-3.8-4.6-3.8-5.6l0-.3 0-.1c0-1 0-2.5 3.8-5.8c4.8-4.1 14-9 29.3-13.4C127.5 228 171.9 224 224 224s96.5 4 126.9 12.8c15.3 4.4 24.5 9.3 29.3 13.4c3.8 3.2 3.8 4.8 3.8 5.8l0 .1 0 .3zM328.2 384l-.2 .5 0-.5h.2zM112 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],"plane-circle-xmark":[640,512,[],"e557","M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z"],"yen-sign":[320,512,[165,"cny","jpy","rmb","yen"],"f157","M58.6 46.2C48.8 31.5 29 27.6 14.3 37.4S-4.4 67 5.4 81.7L100.2 224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V288h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H219.8L314.6 81.7c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L160 198.3 58.6 46.2z"],"ruble-sign":[384,512,[8381,"rouble","rub","ruble"],"f158","M96 32C78.3 32 64 46.3 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V416H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V320H240c79.5 0 144-64.5 144-144s-64.5-144-144-144H96zM240 256H128V96H240c44.2 0 80 35.8 80 80s-35.8 80-80 80z"],sun:[512,512,[9728],"f185","M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z"],guitar:[512,512,[],"f7a6","M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 256a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"],"face-laugh-wink":[512,512,["laugh-wink"],"f59c","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z"],"horse-head":[640,512,[],"f7ab","M64 464V316.9c0-108.4 68.3-205.1 170.5-241.3L404.2 15.5C425.6 7.9 448 23.8 448 46.4c0 11-5.5 21.2-14.6 27.3L400 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5c-16 16-37.8 25.1-60.5 25.1h-3.4c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4l-.1 0 0 0c-6.3 0-12.5-.5-18.6-1.5c-3.6-.6-7.2-1.4-10.7-2.3l0 0c-28.9-7.8-53.1-26.8-67.8-52.2c-4.4-7.6-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4c0 20.3-16.5 36.8-36.8 36.8H112c-26.5 0-48-21.5-48-48zM392 224a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],"bore-hole":[512,512,[],"e4c3","M256 0c-17.7 0-32 14.3-32 32V296.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4V32c0-17.7-14.3-32-32-32zM48 128c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H384c-17.7 0-32 14.3-32 32V352c0 53-43 96-96 96s-96-43-96-96V160c0-17.7-14.3-32-32-32H48z"],industry:[576,512,[],"f275","M64 32C46.3 32 32 46.3 32 64V304v48 80c0 26.5 21.5 48 48 48H496c26.5 0 48-21.5 48-48V304 152.2c0-18.2-19.4-29.7-35.4-21.1L352 215.4V152.2c0-18.2-19.4-29.7-35.4-21.1L160 215.4V64c0-17.7-14.3-32-32-32H64z"],"circle-down":[512,512,[61466,"arrow-alt-circle-down"],"f358","M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6L269.8 394.5c-3.8 3.5-8.7 5.5-13.8 5.5s-10.1-2-13.8-5.5L135.1 294.6c-4.5-4.2-7.1-10.1-7.1-16.3c0-12.3 10-22.3 22.3-22.3l57.7 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 57.7 0c12.3 0 22.3 10 22.3 22.3c0 6.2-2.6 12.1-7.1 16.3z"],"arrows-turn-to-dots":[512,512,[],"e4c1","M249.4 25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 96 416 96c53 0 96 43 96 96v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7-14.3-32-32-32l-146.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm13.3 256l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM384 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192A64 64 0 1 1 64 64a64 64 0 1 1 0 128z"],"florin-sign":[384,512,[],"e184","M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32h80L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H69.3c38.8 0 73.7-23.3 88.6-59.1L213.3 288H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H240l45.1-108.3c5-11.9 16.6-19.7 29.5-19.7H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H314.7z"],"arrow-down-short-wide":[576,512,["sort-amount-desc","sort-amount-down-alt"],"f884","M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32z"],"less-than":[384,512,[62774],"3c","M380.6 81.7c7.9 15.8 1.5 35-14.3 42.9L103.6 256 366.3 387.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-320-160C6.8 279.2 0 268.1 0 256s6.8-23.2 17.7-28.6l320-160c15.8-7.9 35-1.5 42.9 14.3z"],"angle-down":[448,512,[8964],"f107","M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"],"car-tunnel":[512,512,[],"e4de","M256 0C114.6 0 0 114.6 0 256V448c0 35.3 28.7 64 64 64h42.8c-6.6-5.9-10.8-14.4-10.8-24V376c0-20.8 11.3-38.9 28.1-48.6l21-64.7c7.5-23.1 29-38.7 53.3-38.7H313.6c24.3 0 45.8 15.6 53.3 38.7l21 64.7c16.8 9.7 28.2 27.8 28.2 48.6V488c0 9.6-4.2 18.1-10.8 24H448c35.3 0 64-28.7 64-64V256C512 114.6 397.4 0 256 0zM362.8 512c-6.6-5.9-10.8-14.4-10.8-24V448H160v40c0 9.6-4.2 18.1-10.8 24H362.8zM190.8 277.5L177 320H335l-13.8-42.5c-1.1-3.3-4.1-5.5-7.6-5.5H198.4c-3.5 0-6.5 2.2-7.6 5.5zM168 408a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm200-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z"],"head-side-cough":[640,512,[],"e061","M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v0 32L339.2 365.6c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9L448 416v16c0 26.5-21.5 48-48 48H320v8c0 13.3-10.7 24-24 24H256v0H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm352-.2a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM464 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm152-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM592 480a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 312a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],"grip-lines":[448,512,[],"f7a4","M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z"],"thumbs-down":[512,512,[128078,61576],"f165","M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2H464c26.5 0 48-21.5 48-48c0-18.5-10.5-34.6-25.9-42.6C497 236.6 504 223.1 504 208c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48H294.5c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7V192v48 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 384H96c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H32C14.3 96 0 110.3 0 128V352c0 17.7 14.3 32 32 32z"],"user-lock":[640,512,[],"f502","M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H392.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-2.1 .1-4.2 .3-6.3c-31-26-71-41.7-114.6-41.7H178.3zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z"],"arrow-right-long":[512,512,["long-arrow-right"],"f178","M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z"],"anchor-circle-xmark":[640,512,[],"e4ac","M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z"],ellipsis:[448,512,["ellipsis-h"],"f141","M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z"],"chess-pawn":[320,512,[9823],"f443","M215.5 224c29.2-18.4 48.5-50.9 48.5-88c0-57.4-46.6-104-104-104S56 78.6 56 136c0 37.1 19.4 69.6 48.5 88H96c-17.7 0-32 14.3-32 32c0 16.5 12.5 30 28.5 31.8L80 400H240L227.5 287.8c16-1.8 28.5-15.3 28.5-31.8c0-17.7-14.3-32-32-32h-8.5zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512H281.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L256 432H64L22.6 473.4z"],"kit-medical":[576,512,["first-aid"],"f479","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H96V32H64zm64 0V480H448V32H128zM512 480c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H480V480h32zM256 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V288H208c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16h48V176z"],"person-through-window":[640,512,[],"e5a9","M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4C167.6 186.5 128 245 128 310.2l0 73.8s0 0 0 0H64V64zm288 0l224 0V384H508.3l-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4c44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320H379.2l42.7 64H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48V400c0 26.5 21.5 48 48 48H308.2l33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4L310.5 336l74.6 0 40 48zm-159.5 0H192s0 0 0 0l0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z"],toolbox:[512,512,[129520],"f552","M176 88l0 40 160 0 0-40c0-4.4-3.6-8-8-8L184 80c-4.4 0-8 3.6-8 8zm-48 40l0-40c0-30.9 25.1-56 56-56l144 0c30.9 0 56 25.1 56 56l0 40 28.1 0c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9l0 92.1-128 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32-128 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L0 320l0-92.1c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1l28.1 0zM0 416l0-64 128 0c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0 0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64z"],"hands-holding-circle":[640,512,[],"e4fb","M320 0a128 128 0 1 1 0 256A128 128 0 1 1 320 0zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z"],bug:[512,512,[],"f188","M256 0c53 0 96 43 96 96v3.6c0 15.7-12.7 28.4-28.4 28.4H188.4c-15.7 0-28.4-12.7-28.4-28.4V96c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4H312c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6V240c0-8.8-7.2-16-16-16s-16 7.2-16 16V479.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96.3c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z"],"credit-card":[576,512,[128179,62083,"credit-card-alt"],"f09d","M64 32C28.7 32 0 60.7 0 96v32H576V96c0-35.3-28.7-64-64-64H64zM576 224H0V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V224zM112 352h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z"],car:[512,512,[128664,"automobile"],"f1b9","M135.2 117.4L109.1 192H402.9l-26.1-74.6C372.3 104.6 360.2 96 346.6 96H165.4c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32H346.6c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2V400v48c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V400H96v48c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V400 256c0-26.7 16.4-49.6 39.6-59.2zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"hand-holding-hand":[576,512,[],"e4f7","M7.8 207.7c-13.1-17.8-9.3-42.8 8.5-55.9L142.9 58.5C166.2 41.3 194.5 32 223.5 32H384 544c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H507.2l-44.9 36c-22.7 18.2-50.9 28-80 28H304 288 224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64 16c8.8 0 16-7.2 16-16s-7.2-16-16-16H183.4L63.7 216.2c-17.8 13.1-42.8 9.3-55.9-8.5zM382.4 160l0 0 .9 0c-.3 0-.6 0-.9 0zM568.2 304.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 453.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 352l0 0-.9 0c.3 0 .6 0 .9 0z"],"book-open-reader":[512,512,["book-reader"],"f5da","M160 96a96 96 0 1 1 192 0A96 96 0 1 1 160 96zm80 152V512l-48.4-24.2c-20.9-10.4-43.5-17-66.8-19.3l-96-9.6C12.5 457.2 0 443.5 0 427V224c0-17.7 14.3-32 32-32H62.3c63.6 0 125.6 19.6 177.7 56zm32 264V248c52.1-36.4 114.1-56 177.7-56H480c17.7 0 32 14.3 32 32V427c0 16.4-12.5 30.2-28.8 31.8l-96 9.6c-23.2 2.3-45.9 8.9-66.8 19.3L272 512z"],"mountain-sun":[640,512,[],"e52f","M560 160A80 80 0 1 0 560 0a80 80 0 1 0 0 160zM55.9 512H381.1h75H578.9c33.8 0 61.1-27.4 61.1-61.1c0-11.2-3.1-22.2-8.9-31.8l-132-216.3C495 196.1 487.8 192 480 192s-15 4.1-19.1 10.7l-48.2 79L286.8 81c-6.6-10.6-18.3-17-30.8-17s-24.1 6.4-30.8 17L8.6 426.4C3 435.3 0 445.6 0 456.1C0 487 25 512 55.9 512z"],"arrows-left-right-to-line":[640,512,[],"e4ba","M32 64c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64zm214.6 73.4c12.5 12.5 12.5 32.8 0 45.3L205.3 224l229.5 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 288l-229.5 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0zM640 96V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z"],"dice-d20":[512,512,[],"f6cf","M48.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L201.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L47.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM16 171.7V295.3c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L40.2 158C29.6 151.6 16 159.3 16 171.7zM310.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L322.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM496 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4V171.7zm-49.3 246L286.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9v52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM233.2 512c3.7 0 6.8-3 6.8-6.8V452.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM41.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L30.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L402.9 238.1c-6.5-10-21.4-9.6-27.3 .8L290.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9H183.1c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM174.4 176H337.6c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2h-3.2c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z"],"truck-droplet":[640,512,[],"e58c","M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 272c39.8 0 72-29.6 72-66c0-27-39.4-82.9-59.9-110.3c-6.1-8.2-18.1-8.2-24.2 0C175.4 123 136 179 136 206c0 36.5 32.2 66 72 66z"],"file-circle-xmark":[576,512,[],"e5a1","M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z"],"temperature-arrow-up":[576,512,["temperature-up"],"e040","M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM176 0C114.1 0 64 50.1 64 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM480 160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V160z"],medal:[512,512,[127941],"f5a2","M4.1 38.2C1.4 34.2 0 29.4 0 24.6C0 11 11 0 24.6 0H133.9c11.2 0 21.7 5.9 27.4 15.5l68.5 114.1c-48.2 6.1-91.3 28.6-123.4 61.9L4.1 38.2zm503.7 0L405.6 191.5c-32.1-33.3-75.2-55.8-123.4-61.9L350.7 15.5C356.5 5.9 366.9 0 378.1 0H487.4C501 0 512 11 512 24.6c0 4.8-1.4 9.6-4.1 13.6zM80 336a176 176 0 1 1 352 0A176 176 0 1 1 80 336zm184.4-94.9c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1L168 298.9c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.2 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9l44.8-23.6c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.6-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1l-22.4-45.4z"],bed:[640,512,[128716],"f236","M32 32c17.7 0 32 14.3 32 32V320H288V160c0-17.7 14.3-32 32-32H544c53 0 96 43 96 96V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V416H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32zm144 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z"],"square-h":[448,512,["h-square"],"f0fd","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM336 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H160l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H288V152c0-13.3 10.7-24 24-24s24 10.7 24 24z"],podcast:[448,512,[],"f2ce","M319.4 372c48.5-31.3 80.6-85.9 80.6-148c0-97.2-78.8-176-176-176S48 126.8 48 224c0 62.1 32.1 116.6 80.6 148c1.2 17.3 4 38 7.2 57.1l.2 1C56 395.8 0 316.5 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224c0 92.5-56 171.9-136 206.1l.2-1.1c3.1-19.2 6-39.8 7.2-57zm-2.3-38.1c-1.6-5.7-3.9-11.1-7-16.2c-5.8-9.7-13.5-17-21.9-22.4c19.5-17.6 31.8-43 31.8-71.3c0-53-43-96-96-96s-96 43-96 96c0 28.3 12.3 53.8 31.8 71.3c-8.4 5.4-16.1 12.7-21.9 22.4c-3.1 5.1-5.4 10.5-7 16.2C99.8 307.5 80 268 80 224c0-79.5 64.5-144 144-144s144 64.5 144 144c0 44-19.8 83.5-50.9 109.9zM224 312c32.9 0 64 8.6 64 43.8c0 33-12.9 104.1-20.6 132.9c-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8c0-35.1 31.1-43.8 64-43.8zm0-144a56 56 0 1 1 0 112 56 56 0 1 1 0-112z"],"temperature-full":[320,512,["temperature-4","thermometer-4","thermometer-full"],"f2c7","M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V112c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z"],bell:[448,512,[128276,61602],"f0f3","M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z"],superscript:[512,512,[],"f12b","M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V32zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32z"],"plug-circle-xmark":[576,512,[],"e560","M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z"],"star-of-life":[512,512,[],"f621","M208 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V172.9l122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.5 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1V480c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V339.1L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4V32z"],"phone-slash":[640,512,[],"f3dd","M601.2 5.1c10.4-8.2 25.5-6.3 33.7 4.1s6.3 25.5-4.1 33.7l-592 464c-10.4 8.2-25.5 6.3-33.7-4.1s-6.3-25.5 4.1-33.7l155.6-122C101.8 270 64 171.4 64 64c0-18 12.1-33.8 29.5-38.6l88-24c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L208 207.3c12 25.5 27.2 49.2 45 70.7L601.2 5.1zM234.3 415.6l91.3-72c13.7 9.1 28 17.3 43 24.3L409 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C545.8 499.9 530 512 512 512c-104.9 0-201.3-36-277.7-96.4z"],"paint-roller":[512,512,[],"f5aa","M0 64C0 28.7 28.7 0 64 0H352c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 352c0-17.7 14.3-32 32-32V304c0-44.2 35.8-80 80-80H416c17.7 0 32-14.3 32-32V160 69.5c37.3 13.2 64 48.7 64 90.5v32c0 53-43 96-96 96H272c-8.8 0-16 7.2-16 16v16c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V352z"],"handshake-angle":[640,512,["hands-helping"],"f4c4","M544 248v3.3l69.7-69.7c21.9-21.9 21.9-57.3 0-79.2L535.6 24.4c-21.9-21.9-57.3-21.9-79.2 0L416.3 64.5c-2.7-.3-5.5-.5-8.3-.5H296c-37.1 0-67.6 28-71.6 64H224V248c0 22.1 17.9 40 40 40s40-17.9 40-40V176c0 0 0-.1 0-.1V160l16 0 136 0c0 0 0 0 .1 0H464c44.2 0 80 35.8 80 80v8zM336 192v56c0 39.8-32.2 72-72 72s-72-32.2-72-72V129.4c-35.9 6.2-65.8 32.3-76 68.2L99.5 255.2 26.3 328.4c-21.9 21.9-21.9 57.3 0 79.2l78.1 78.1c21.9 21.9 57.3 21.9 79.2 0l37.7-37.7c.9 0 1.8 .1 2.7 .1H384c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16H432c26.5 0 48-21.5 48-48c0-12.8-5-24.4-13.2-33c25.7-5 45.1-27.6 45.2-54.8v-.4c-.1-30.8-25.1-55.8-56-55.8c0 0 0 0 0 0l-120 0z"],"location-dot":[384,512,["map-marker-alt"],"f3c5","M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"],file:[384,512,[128196,128459,61462],"f15b","M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z"],"greater-than":[384,512,[62769],"3e","M3.4 81.7c-7.9 15.8-1.5 35 14.3 42.9L280.5 256 17.7 387.4C1.9 395.3-4.5 414.5 3.4 430.3s27.1 22.2 42.9 14.3l320-160c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-320-160c-15.8-7.9-35-1.5-42.9 14.3z"],"person-swimming":[576,512,[127946,"swimmer"],"f5c4","M309.5 178.4L447.9 297.1c-1.6 .9-3.2 2-4.8 3c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-10.1 0-21.1-2.2-31.9-6.2C163.1 193.2 262.2 96 384 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-26.9 0-52.3 6.6-74.5 18.4zM160 160A64 64 0 1 1 32 160a64 64 0 1 1 128 0zM306.5 325.9C329 341.4 356.5 352 384 352c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 405.7 417 416 384 416c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 341.2 165.1 352 192 352c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"],"arrow-down":[384,512,[8595],"f063","M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"],droplet:[384,512,[128167,"tint"],"f043","M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0h1.8c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z"],eraser:[576,512,[],"f12d","M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7H288h9.4H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H387.9L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416H288l-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z"],"earth-americas":[512,512,[127758,"earth","earth-america","globe-americas"],"f57d","M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5v39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9v39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7v-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1H257c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z"],"person-burst":[640,512,[],"e53b","M480 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H465.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L408 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.3-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z"],dove:[512,512,[128330],"f4ba","M160.8 96.5c14 17 31 30.9 49.5 42.2c25.9 15.8 53.7 25.9 77.7 31.6V138.8C265.8 108.5 250 71.5 248.6 28c-.4-11.3-7.5-21.5-18.4-24.4c-7.6-2-15.8-.2-21 5.8c-13.3 15.4-32.7 44.6-48.4 87.2zM320 144v30.6l0 0v1.3l0 0 0 32.1c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8 .9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5L245.6 448H320c88.4 0 160-71.6 160-160V128l29.9-44.9c1.3-2 2.1-4.4 2.1-6.8c0-6.8-5.5-12.3-12.3-12.3H400c-44.2 0-80 35.8-80 80zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z"],"battery-empty":[576,512,["battery-0"],"f244","M80 160c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zM0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176z"],socks:[512,512,[129510],"f696","M175.2 476.6c-9.7-18-15.2-38.7-15.2-60.6c0-40.3 19-78.2 51.2-102.4l64-48c8.1-6 12.8-15.5 12.8-25.6V96H128V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C14.2 357.3 0 385.8 0 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l21.6-16.2zM128 64H288V48c0-14.5 3.9-28.2 10.7-39.9C291 3 281.9 0 272 0H176c-26.5 0-48 21.5-48 48V64zM320 96V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C206.2 357.3 192 385.8 192 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l115.2-86.4C493 382.2 512 344.3 512 304V96H320zM512 64V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48V64H512z"],inbox:[512,512,[],"f01c","M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V323.9c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32H121zm0 64H391l48 192H387.8c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7H195.8c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7H73L121 96z"],section:[256,512,[],"e447","M64.9 96C67.1 84.4 73.7 76.2 86 70.6c13.8-6.2 34.8-8.9 61.2-4.5c8.8 1.4 36.1 7.1 44.1 9.3c17 4.8 34.7-5.1 39.5-22.2s-5.1-34.7-22.2-39.5c-11.1-3.1-41-9.2-50.9-10.8C123-2.7 88.3-.6 59.7 12.3C29.9 25.8 7.5 50.9 1.6 86.5c-.1 .5-.2 1.1-.2 1.6c-2.2 19.7 .3 37.9 8.1 54.1c7.7 16.1 19.4 28 32 36.9c.6 .5 1.3 .9 2 1.4C22.3 194.2 6.5 215.1 1.7 243c-.1 .6-.2 1.1-.2 1.7c-2.3 19.3 .4 37.1 8.4 53c7.9 15.6 19.8 27 32.3 35.5c22.4 15.2 51.9 24 75.4 31l0 0 3.7 1.1c27.2 8.2 46.9 14.6 59.4 23.8c5.5 4 8.2 7.6 9.5 10.9c1.3 3.2 2.6 8.6 .9 18.1c-1.7 10.1-7.7 18-20.7 23.5c-14 6-35.4 8.5-62 4.4c-12.8-2.1-35.1-9.7-54.1-16.2l0 0c-4.3-1.5-8.5-2.9-12.3-4.2C25.3 420 7.2 429.1 1.6 445.8s3.5 34.9 20.3 40.5c2.6 .8 5.7 1.9 9.2 3.1c18.6 6.3 48.5 16.6 67.3 19.6l0 0 .2 0c34.5 5.4 68.8 3.4 97.2-8.7c29.4-12.6 52.5-36.5 58.5-71.5c3.3-19.3 1.9-37.4-5-53.9c-6.3-15-16.4-26.4-27.6-35.2c16.5-13.9 28.5-33.2 32.6-58.2c3.2-19.8 1.9-38.3-4.8-55.1c-6.7-16.8-17.8-29.4-30.2-39c-22.8-17.6-53.6-27.4-77.7-35l-1.4-.5c-27.4-8.7-47.8-15.3-61.5-25c-6.1-4.4-9.5-8.5-11.4-12.4c-1.8-3.7-3.2-9.3-2.3-18.5zm76.7 208.5c-.2-.1-.4-.1-.6-.2l-1.4-.4c-27.4-8.2-47.9-14.5-61.7-23.8c-6.2-4.2-9.3-7.9-11-11.3c-1.5-3-2.9-7.7-2.1-15.7c1.9-9.7 7.9-17.3 20.5-22.7c14-6 35.4-8.5 62.1-4.3l16.4 2.6c6.3 2.9 11.7 6 16.2 9.5c5.5 4.2 8.4 8.2 10 12.2c1.6 4 2.8 10.4 1.1 20.9c-2.4 14.7-12.8 26.4-37.1 31l-12.4 2.3z"],"gauge-high":[512,512,[62461,"tachometer-alt","tachometer-alt-fast"],"f625","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],"envelope-open-text":[512,512,[],"f658","M215.4 96H144 107.8 96v8.8V144v40.4 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3V96c0-26.5 21.5-48 48-48h76.6l49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48H416c26.5 0 48 21.5 48 48v44.3l22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4v-89V144 104.8 96H404.2 368 296.6 215.4zM0 448V242.1L217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1V448v0c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64v0zM176 160H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],hospital:[640,512,[127973,62589,"hospital-alt","hospital-wide"],"f0f8","M192 48c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48V512H368V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H192V48zM48 96H160V512H48c-26.5 0-48-21.5-48-48V320H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V224H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V144c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v48H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80V464c0 26.5-21.5 48-48 48H480V96H592zM312 64c-8.8 0-16 7.2-16 16v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V152h24c8.8 0 16-7.2 16-16V120c0-8.8-7.2-16-16-16H344V80c0-8.8-7.2-16-16-16H312z"],"wine-bottle":[512,512,[],"f72f","M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l64 64c12.5 12.5 12.5 32.8 0 45.3c-11.8 11.8-30.7 12.5-43.2 1.9l-9.5 9.5-48.8 48.8c-9.2 9.2-11.5 22.9-8.6 35.6c9.4 40.9-1.9 85.6-33.8 117.5L197.3 493.3c-25 25-65.5 25-90.5 0l-88-88c-25-25-25-65.5 0-90.5L180.2 153.3c31.9-31.9 76.6-43.1 117.5-33.8c12.6 2.9 26.4 .5 35.5-8.6l48.8-48.8 9.5-9.5c-10.6-12.6-10-31.4 1.9-43.2zM99.3 347.3l65.4 65.4c6.2 6.2 16.4 6.2 22.6 0l97.4-97.4c6.2-6.2 6.2-16.4 0-22.6l-65.4-65.4c-6.2-6.2-16.4-6.2-22.6 0L99.3 324.7c-6.2 6.2-6.2 16.4 0 22.6z"],"chess-rook":[448,512,[9820],"f447","M32 192V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V192c0 10.1-4.7 19.6-12.8 25.6L352 256l16 144H80L96 256 44.8 217.6C36.7 211.6 32 202.1 32 192zm176 96h32c8.8 0 16-7.2 16-16V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 8.8 7.2 16 16 16zM22.6 473.4L64 432H384l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H38.6C26.1 512 16 501.9 16 489.4c0-6 2.4-11.8 6.6-16z"],"bars-staggered":[512,512,["reorder","stream"],"f550","M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"],dharmachakra:[512,512,[9784],"f655","M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.5 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.5-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],hotdog:[512,512,[127789],"f80f","M488.6 23.4c31.2 31.2 31.2 81.9 0 113.1l-352 352c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1l352-352c31.2-31.2 81.9-31.2 113.1 0zM443.3 92.7c-6.2-6.2-16.4-6.2-22.6 0c-12.5 12.5-23.8 15.1-37.5 17.6l-2.5 .4c-13.8 2.5-31.6 5.6-48 22c-16.7 16.7-20.9 36-24.1 50.9l0 0v0l-.2 1c-3.4 15.6-6 26.4-15.7 36.1s-20.5 12.3-36.1 15.7l-1 .2c-14.9 3.2-34.2 7.4-50.9 24.1s-20.9 36-24.1 50.9l-.2 1c-3.4 15.6-6 26.4-15.7 36.1c-9.2 9.2-18 10.8-32.7 13.4l0 0-.9 .2c-15.6 2.8-34.9 6.9-54.4 26.4c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0c12.5-12.5 23.8-15.1 37.5-17.6l2.5-.4c13.8-2.5 31.6-5.6 48-22c16.7-16.7 20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1s20.5-12.3 36.1-15.7l1-.2c14.9-3.2 34.2-7.4 50.9-24.1s20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1c9.2-9.2 18-10.8 32.7-13.4l.9-.2c15.6-2.8 34.9-6.9 54.4-26.4c6.2-6.2 6.2-16.4 0-22.6zM191.2 479.2l288-288L495 207c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L289 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17l-15.8-15.8zM17 305C6.1 294.1 0 279.4 0 264s6.1-30.1 17-41L223 17C233.9 6.1 248.6 0 264 0s30.1 6.1 41 17l15.8 15.8-288 288L17 305z"],"person-walking-with-cane":[512,512,["blind"],"f29d","M176 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8.4 32c-36.4 0-69.6 20.5-85.9 53.1L35.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L128 231.6v43.2c0 17 6.7 33.3 18.7 45.3L224 397.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V390.6c0-12.7-5.1-24.9-14.1-33.9L224 306.7V213.3l70.4 93.9c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8L268.8 166.4C250.7 142.2 222.2 128 192 128H167.6zM128.3 346.8L97 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l22-88.2-52.8-52.8zM450.8 505.1c5 7.3 15 9.1 22.3 4s9.1-15 4-22.3L358.9 316.1c-2.8 3.8-6.1 7.3-10.1 10.3c-5 3.8-10.5 6.4-16.2 7.9L450.8 505.1z"],drum:[512,512,[129345],"f569","M501.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L370.2 104.5C335.8 98.7 297 96 256 96C114.6 96 0 128 0 208V368c0 31.3 27.4 58.8 72 78.7V344c0-13.3 10.7-24 24-24s24 10.7 24 24V463.4c33 8.9 71.1 14.5 112 16.1V376c0-13.3 10.7-24 24-24s24 10.7 24 24V479.5c40.9-1.6 79-7.2 112-16.1V344c0-13.3 10.7-24 24-24s24 10.7 24 24V446.7c44.6-19.9 72-47.4 72-78.7V208c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM307.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5C458.4 181.8 464 197.4 464 208c0 .8-2.7 17.2-46 35.9C379.1 260.7 322 272 256 272s-123.1-11.3-162-28.1C50.7 225.2 48 208.8 48 208c0-10.6 5.6-26.2 44.4-41.3C130.6 151.9 187.8 144 256 144c18 0 35.1 .5 51.4 1.6z"],"ice-cream":[448,512,[127848],"f810","M367.1 160c.6-5.3 .9-10.6 .9-16C368 64.5 303.5 0 224 0S80 64.5 80 144c0 5.4 .3 10.7 .9 16H80c-26.5 0-48 21.5-48 48s21.5 48 48 48h53.5 181H368c26.5 0 48-21.5 48-48s-21.5-48-48-48h-.9zM96 288L200.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L352 288H96z"],"heart-circle-bolt":[576,512,[],"e4fc","M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z"],fax:[512,512,[128224,128439],"f1ac","M128 64v96h64V64H386.7L416 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L432 18.7C420 6.7 403.7 0 386.7 0H192c-35.3 0-64 28.7-64 64zM0 160V480c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zm480 32H128V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM256 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],paragraph:[448,512,[182],"f1dd","M192 32h64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352H288V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H192c-88.4 0-160-71.6-160-160s71.6-160 160-160z"],"check-to-slot":[576,512,["vote-yea"],"f772","M96 80c0-26.5 21.5-48 48-48H432c26.5 0 48 21.5 48 48V384H96V80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48H64V416H512V288h16c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336z"],"star-half":[576,512,[61731],"f089","M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8V0zM429.9 512c1.1 .1 2.1 .1 3.2 0h-3.2z"],"boxes-stacked":[576,512,[62625,"boxes","boxes-alt"],"f468","M248 0H208c-26.5 0-48 21.5-48 48V160c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V48c0-26.5-21.5-48-48-48H328V80c0 8.8-7.2 16-16 16H264c-8.8 0-16-7.2-16-16V0zM64 256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H184v80c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V256H64zM352 512H512c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H472v80c0 8.8-7.2 16-16 16H408c-8.8 0-16-7.2-16-16V256H352c-15 0-28.8 5.1-39.7 13.8c4.9 10.4 7.7 22 7.7 34.2V464c0 12.2-2.8 23.8-7.7 34.2C323.2 506.9 337 512 352 512z"],link:[640,512,[128279,"chain"],"f0c1","M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z"],"ear-listen":[512,512,["assistive-listening-systems"],"f2a2","M398.3 3.4c-15.8-7.9-35-1.5-42.9 14.3c-7.9 15.8-1.5 34.9 14.2 42.9l.4 .2c.4 .2 1.1 .6 2.1 1.2c2 1.2 5 3 8.7 5.6c7.5 5.2 17.6 13.2 27.7 24.2C428.5 113.4 448 146 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7C441.6 33.2 427.7 22.2 417.3 15c-5.3-3.7-9.7-6.4-13-8.3c-1.6-1-3-1.7-4-2.2c-.5-.3-.9-.5-1.2-.7l-.4-.2-.2-.1-.1 0 0 0c0 0 0 0-14.3 28.6L398.3 3.4zM128.7 227.5c6.2-56 53.7-99.5 111.3-99.5c61.9 0 112 50.1 112 112c0 29.3-11.2 55.9-29.6 75.9c-17 18.4-34.4 45.1-34.4 78V400c0 26.5-21.5 48-48 48c-17.7 0-32 14.3-32 32s14.3 32 32 32c61.9 0 112-50.1 112-112v-6.1c0-9.8 5.4-21.7 17.4-34.7C398.3 327.9 416 286 416 240c0-97.2-78.8-176-176-176C149.4 64 74.8 132.5 65.1 220.5c-1.9 17.6 10.7 33.4 28.3 35.3s33.4-10.7 35.3-28.3zM32 512a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM192 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM208 240c0-17.7 14.3-32 32-32s32 14.3 32 32c0 13.3 10.7 24 24 24s24-10.7 24-24c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 13.3 10.7 24 24 24s24-10.7 24-24z"],"tree-city":[640,512,[],"e587","M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM224 160c0 6-1 11-2 16c20 14 34 38 34 64c0 45-36 80-80 80H160V480c0 18-15 32-32 32c-18 0-32-14-32-32V320H80c-45 0-80-35-80-80c0-26 13-50 33-64c-1-5-1-10-1-16c0-53 42-96 96-96c53 0 96 43 96 96z"],play:[384,512,[9654],"f04b","M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z"],font:[448,512,[],"f031","M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-1.8l18-48H303.8l18 48H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H390.2L254 52.8zM279.8 304H168.2L224 155.1 279.8 304z"],"table-cells-row-lock":[640,512,[],"e67a","M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 224l0 64 88 0 0-64-88 0zm232 0l-88 0 0 64 88 0 0-64zM152 352l-88 0 0 64 88 0 0-64zm56 0l0 64 88 0 0-64-88 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z"],"rupiah-sign":[512,512,[],"e23d","M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256-96h80c61.9 0 112 50.1 112 112s-50.1 112-112 112H352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 192c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48H352v96h48z"],"magnifying-glass":[512,512,[128269,"search"],"f002","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"],"table-tennis-paddle-ball":[640,512,[127955,"ping-pong-paddle-ball","table-tennis"],"f45d","M480 288c-50.1 0-93.6 28.8-114.6 70.8L132.9 126.3l.6-.6 60.1-60.1c87.5-87.5 229.3-87.5 316.8 0c67.1 67.1 82.7 166.3 46.8 248.3C535.8 297.6 509 288 480 288zM113.3 151.9L354.1 392.7c-1.4 7.5-2.1 15.3-2.1 23.3c0 23.2 6.2 44.9 16.9 63.7c-3 .2-6.1 .3-9.2 .3H357c-33.9 0-66.5-13.5-90.5-37.5l-9.8-9.8c-13.1-13.1-34.6-12.4-46.8 1.7L152.2 501c-5.8 6.7-14.2 10.7-23 11s-17.5-3.1-23.8-9.4l-32-32c-6.3-6.3-9.7-14.9-9.4-23.8s4.3-17.2 11-23l66.6-57.7c14-12.2 14.8-33.7 1.7-46.8l-9.8-9.8c-24-24-37.5-56.6-37.5-90.5v-2.7c0-22.8 6.1-44.9 17.3-64.3zM480 320a96 96 0 1 1 0 192 96 96 0 1 1 0-192z"],"person-dots-from-line":[576,512,["diagnoses"],"f470","M288 176A88 88 0 1 0 288 0a88 88 0 1 0 0 176zM78.7 372.9c15-12.5 50-34.4 97.3-50.1V432H400V322.7c47.3 15.8 82.3 37.7 97.3 50.1c20.4 17 50.6 14.2 67.6-6.1s14.2-50.6-6.1-67.6c-12-10-30.1-22.5-53.2-35C497.2 278.4 481.7 288 464 288c-26.5 0-48-21.5-48-48c0-4.3 .6-8.4 1.6-12.4C379.1 215.9 335.3 208 288 208c-60.2 0-114.9 12.9-160 29.9c0 .7 0 1.4 0 2.1c0 26.5-21.5 48-48 48c-11.8 0-22.7-4.3-31-11.4c-13.1 8.1-23.7 15.9-31.7 22.5c-20.4 17-23.1 47.2-6.1 67.6s47.2 23.1 67.6 6.1zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM224 280a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM96 240a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm368 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z"],"trash-can-arrow-up":[448,512,["trash-restore-alt"],"f82a","M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z"],"naira-sign":[448,512,[],"e1f6","M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H228.2l97.2 145.8c7.8 11.7 22.4 17 35.9 12.9s22.7-16.5 22.7-30.6V320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V256H262.5L122.6 46.3zM305.1 320H320v22.3L305.1 320zM185.5 256H128V169.7L185.5 256z"],"cart-arrow-down":[576,512,[],"f218","M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H69.5c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H199.7c-11.5 0-21.4-8.2-23.6-19.5L170.7 288H459.2c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32H360V134.1l23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23V32H120.1C111 12.8 91.6 0 69.5 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z"],"walkie-talkie":[384,512,[],"f8ef","M112 24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144V300.1c0 12.7 5.1 24.9 14.1 33.9l3.9 3.9c9 9 14.1 21.2 14.1 33.9V464c0 26.5 21.5 48 48 48H304c26.5 0 48-21.5 48-48V371.9c0-12.7 5.1-24.9 14.1-33.9l3.9-3.9c9-9 14.1-21.2 14.1-33.9V144c0-26.5-21.5-48-48-48H320c0-17.7-14.3-32-32-32s-32 14.3-32 32H224c0-17.7-14.3-32-32-32s-32 14.3-32 32H112V24zm0 136H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],"file-pen":[576,512,[128221,"file-edit"],"f31c","M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V299.6l-94.7 94.7c-8.2 8.2-14 18.5-16.8 29.7l-15 60.1c-2.3 9.4-1.8 19 1.4 27.8H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"],receipt:[384,512,[129534],"f543","M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.3-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6s14 12.4 14 21.8V488c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6L304 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L192 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488V24C0 14.6 5.5 6.1 14 2.2zM96 144c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96zM80 352c0 8.8 7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zM96 240c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96z"],"square-pen":[448,512,["pen-square","pencil-square"],"f14b","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"],"suitcase-rolling":[384,512,[],"f5c1","M144 56c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v72H144V56zm176 72H288V56c0-30.9-25.1-56-56-56H152C121.1 0 96 25.1 96 56v72H64c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32H256c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64zM112 224H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],"person-circle-exclamation":[576,512,[],"e53f","M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z"],"chevron-down":[512,512,[],"f078","M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"],"battery-full":[576,512,[128267,"battery","battery-5"],"f240","M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm368 96H96V320H448V192z"],"skull-crossbones":[448,512,[128369,9760],"f714","M368 128c0 44.4-25.4 83.5-64 106.4V256c0 17.7-14.3 32-32 32H176c-17.7 0-32-14.3-32-32V234.4c-38.6-23-64-62.1-64-106.4C80 57.3 144.5 0 224 0s144 57.3 144 128zM168 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM3.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L224 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L295.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L224 419.8 46.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L152.4 384 17.7 316.6C1.9 308.7-4.5 289.5 3.4 273.7z"],"code-compare":[512,512,[],"e13a","M320 488c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1s14.2 12.4 14.2 21.9v40h16c35.3 0 64-28.7 64-64V153.3C371.7 141 352 112.8 352 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V320c0 70.7-57.3 128-128 128H320v40zM456 80a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 24c0-9.5 5.6-18.1 14.2-21.9s18.8-2.3 25.8 4.1l80 72c5.1 4.6 7.9 11 7.9 17.8s-2.9 13.3-7.9 17.8l-80 72c-7 6.3-17.2 7.9-25.8 4.1s-14.2-12.4-14.2-21.9V128H176c-35.3 0-64 28.7-64 64V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-70.7 57.3-128 128-128h16V24zM56 432a24 24 0 1 0 48 0 24 24 0 1 0 -48 0z"],"list-ul":[512,512,["list-dots"],"f0ca","M64 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM64 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48-208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z"],"school-lock":[640,512,[],"e56f","M302.2 5.4c10.7-7.2 24.8-7.2 35.5 0L473.7 96H592c26.5 0 48 21.5 48 48V272c0-61.9-50.1-112-112-112s-112 50.1-112 112v24.6c-19.1 11.1-32 31.7-32 55.4H320.3l-.3 0c-35.3 0-64 28.7-64 64v96h64v0H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48H166.3L302.2 5.4zM80 208v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm0 128v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm240-72a88 88 0 1 0 0-176 88 88 0 1 0 0 176zm16-120v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 96c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z"],"tower-cell":[576,512,[],"e585","M62.6 2.3C46.2-4.3 27.6 3.6 20.9 20C7.4 53.4 0 89.9 0 128s7.4 74.6 20.9 108c6.6 16.4 25.3 24.3 41.7 17.7S86.9 228.4 80.3 212C69.8 186.1 64 157.8 64 128s5.8-58.1 16.3-84C86.9 27.6 79 9 62.6 2.3zm450.8 0C497 9 489.1 27.6 495.7 44C506.2 69.9 512 98.2 512 128s-5.8 58.1-16.3 84c-6.6 16.4 1.3 35 17.7 41.7s35-1.3 41.7-17.7c13.5-33.4 20.9-69.9 20.9-108s-7.4-74.6-20.9-108C548.4 3.6 529.8-4.3 513.4 2.3zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9L177.7 448H398.3l20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM369.2 384H206.8l14.5-32H354.7l14.5 32zM288 205.3L325.6 288H250.4L288 205.3zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z"],"down-long":[320,512,["long-arrow-alt-down"],"f309","M2 334.5c-3.8 8.8-2 19 4.6 26l136 144c4.5 4.8 10.8 7.5 17.4 7.5s12.9-2.7 17.4-7.5l136-144c6.6-7 8.4-17.2 4.6-26s-12.5-14.5-22-14.5l-72 0 0-288c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32l0 288-72 0c-9.6 0-18.2 5.7-22 14.5z"],"ranking-star":[640,512,[],"e561","M353.8 54.1L330.2 6.3c-3.9-8.3-16.1-8.6-20.4 0L286.2 54.1l-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V288c0-17.7-14.3-32-32-32H256zM32 320c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H160c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zm416 96v64c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V416c0-17.7-14.3-32-32-32H480c-17.7 0-32 14.3-32 32z"],"chess-king":[448,512,[9818],"f43f","M224 0c17.7 0 32 14.3 32 32V48h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H256v48H408c22.1 0 40 17.9 40 40c0 5.3-1 10.5-3.1 15.4L368 400H80L3.1 215.4C1 210.5 0 205.3 0 200c0-22.1 17.9-40 40-40H192V112H176c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V32c0-17.7 14.3-32 32-32zM38.6 473.4L80 432H368l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H54.6C42.1 512 32 501.9 32 489.4c0-6 2.4-11.8 6.6-16z"],"person-harassing":[576,512,[],"e549","M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM59.4 304.5L88 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H145.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM464 344v58.7l-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L408.8 438l54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3c36.4 0 65.9-29.5 65.9-65.9V344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16h56c8.8 0 16-7.2 16-16s-7.2-16-16-16H304c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z"],"brazilian-real-sign":[512,512,[],"e46c","M400 0c17.7 0 32 14.3 32 32V50.2c12.5 2.3 24.7 6.4 36.2 12.1l10.1 5.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-10.2-5.1c-9.9-5-20.9-7.5-32-7.5h-1.7c-29.8 0-53.9 24.1-53.9 53.9c0 22 13.4 41.8 33.9 50l52 20.8c44.7 17.9 74.1 61.2 74.1 109.4v3.4c0 51.2-33.6 94.6-80 109.2V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V460.6c-15-3.5-29.4-9.7-42.3-18.3l-23.4-15.6c-14.7-9.8-18.7-29.7-8.9-44.4s29.7-18.7 44.4-8.9L361.2 389c10.8 7.2 23.4 11 36.3 11c27.9 0 50.5-22.6 50.5-50.5v-3.4c0-22-13.4-41.8-33.9-50l-52-20.8C317.3 257.4 288 214.1 288 165.9C288 114 321.5 70 368 54.2V32c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256z"],"landmark-dome":[512,512,["landmark-alt"],"f752","M248 0h16c13.3 0 24 10.7 24 24V34.7C368.4 48.1 431.9 111.6 445.3 192H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h2.7C80.1 111.6 143.6 48.1 224 34.7V24c0-13.3 10.7-24 24-24zM64 288h64V416h40V288h64V416h48V288h64V416h40V288h64V420.3c.6 .3 1.2 .7 1.7 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V288z"],"arrow-up":[384,512,[8593],"f062","M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"],tv:[640,512,[63717,"television","tv-alt"],"f26c","M64 64V352H576V64H64zM0 64C0 28.7 28.7 0 64 0H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM128 448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32z"],shrimp:[512,512,[129424],"e448","M64 32C28.7 32 0 60.7 0 96s28.7 64 64 64h1c3.7 88.9 77 160 167 160h56V128H264 88.8 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H464c8.8 0 16-7.2 16-16s-7.2-16-16-16H64zM224 456c0 13.3 10.7 24 24 24h72V407.8l-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3v69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111c0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6c0 4.6-.7 9-1.9 13.1L472.6 415zM336 128H320V320h18.3c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM168 192a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z"],"list-check":[512,512,["tasks"],"f0ae","M152.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 113C-2.3 103.6-2.3 88.4 7 79s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM224 96c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32zM48 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"],"jug-detergent":[384,512,[],"e519","M96 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24V48h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H88C74.7 96 64 85.3 64 72s10.7-24 24-24h8V24zM0 256c0-70.7 57.3-128 128-128H256c70.7 0 128 57.3 128 128V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256zm256 0v96c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32z"],"circle-user":[512,512,[62142,"user-circle"],"f2bd","M399 384.2C376.9 345.8 335.4 320 288 320H224c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z"],"user-shield":[640,512,[],"f505","M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c1.8 0 3.5-.2 5.3-.5c-76.3-55.1-99.8-141-103.1-200.2c-16.1-4.8-33.1-7.3-50.7-7.3H178.3zm308.8-78.3l-120 48C358 277.4 352 286.2 352 296c0 63.3 25.9 168.8 134.8 214.2c5.9 2.5 12.6 2.5 18.5 0C614.1 464.8 640 359.3 640 296c0-9.8-6-18.6-15.1-22.3l-120-48c-5.7-2.3-12.1-2.3-17.8 0zM591.4 312c-3.9 50.7-27.2 116.7-95.4 149.7V273.8L591.4 312z"],wind:[512,512,[],"f72e","M288 32c0 17.7 14.3 32 32 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c53 0 96-43 96-96s-43-96-96-96H320c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32 14.3-32 32zM128 512h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H160c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z"],"car-burst":[640,512,["car-crash"],"f5e1","M176 8c-6.6 0-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6l35.3-32.5 9.5-35.4 10.4-38.6c8-29.9 30.5-52.1 57.9-60.9l41-59.2c11.3-16.3 26.4-28.9 43.5-37.2c-.4-.6-.8-1.2-1.3-1.8c-4.1-5.1-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74C188.4 12 182.6 8 176 8zM367.7 161.5l135.6 36.3c6.5 1.8 11.3 7.4 11.8 14.2l4.6 56.5-201.5-54 32.2-46.6c3.8-5.6 10.8-8.1 17.3-6.4zm-69.9-30l-47.9 69.3c-21.6 3-40.3 18.6-46.3 41l-10.4 38.6-16.6 61.8-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 247.3 66.3-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9L595 388l10.4-38.6c6-22.4-2.5-45.2-19.6-58.7l-6.8-84c-2.7-33.7-26.4-62-59-70.8L384.2 99.7c-32.7-8.8-67.3 4-86.5 31.8zm-17 131a24 24 0 1 1 -12.4 46.4 24 24 0 1 1 12.4-46.4zm217.9 83.2A24 24 0 1 1 545 358.1a24 24 0 1 1 -46.4-12.4z"],y:[384,512,[121],"59","M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V298.3L378 82.6c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z"],"person-snowboarding":[512,512,[127938,"snowboarding"],"f7ce","M209.7 3.4c15.8-7.9 35-1.5 42.9 14.3l25 50 42.4 8.5c19.5 3.9 37.8 12.3 53.5 24.5l126.1 98.1c14 10.9 16.5 31 5.6 44.9s-31 16.5-44.9 5.6l-72.1-56.1-71.5 31.8 33.1 27.6c23.2 19.3 33.5 50 26.7 79.4l-17.4 75.2c-2.2 9.4-8.2 16.8-16.1 21l86.5 33.1c4.6 1.8 9.4 2.6 14.3 2.6H472c13.3 0 24 10.7 24 24s-10.7 24-24 24H443.8c-10.8 0-21.4-2-31.5-5.8L60.1 371.3c-11.5-4.4-22-11.2-30.8-20L7 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l22.4 8.6c-.8-1.6-1.5-3.2-2.1-4.9c-5.6-16.8 3.5-34.9 20.2-40.5L192 264.9l0-53.2c0-24.2 13.7-46.4 35.4-57.2l45.2-22.6-7.5-1.5c-19.4-3.9-35.9-16.5-44.7-34.1l-25-50c-7.9-15.8-1.5-35 14.3-42.9zM139 350.1l159 60.9c-2.1-5.6-2.6-11.9-1.1-18.2l17.4-75.2c1.4-5.9-.7-12-5.3-15.9l-52.8-44 0 18.8c0 20.7-13.2 39-32.8 45.5L139 350.1zM432 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"],"truck-fast":[640,512,["shipping-fast"],"f48b","M112 0C85.5 0 64 21.5 64 48V96H16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 272c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 48c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 240c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 208c8.8 0 16 7.2 16 16s-7.2 16-16 16H64V416c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H112zM544 237.3V256H416V160h50.7L544 237.3zM160 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm272 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z"],fish:[576,512,[128031],"f578","M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8C452.3 403.5 399.4 432 336 432s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],"user-graduate":[448,512,[],"f501","M219.3 .5c3.1-.6 6.3-.6 9.4 0l200 40C439.9 42.7 448 52.6 448 64s-8.1 21.3-19.3 23.5L352 102.9V160c0 70.7-57.3 128-128 128s-128-57.3-128-128V102.9L48 93.3v65.1l15.7 78.4c.9 4.7-.3 9.6-3.3 13.3s-7.6 5.9-12.4 5.9H16c-4.8 0-9.3-2.1-12.4-5.9s-4.3-8.6-3.3-13.3L16 158.4V86.6C6.5 83.3 0 74.3 0 64C0 52.6 8.1 42.7 19.3 40.5l200-40zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6z"],"circle-half-stroke":[512,512,[9680,"adjust"],"f042","M448 256c0-106-86-192-192-192V448c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z"],clapperboard:[512,512,[],"e131","M448 32H361.9l-1 1-127 127h92.1l1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128V96c0-15.1-5.3-29.1-14-40l-104 104H512zM294.1 32H201.9l-1 1L73.9 160h92.1l1-1 127-127zM64 32C28.7 32 0 60.7 0 96v64H6.1l1-1 127-127H64zM512 192H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192z"],"circle-radiation":[512,512,[9762,"radiation-alt"],"f7ba","M256 64a192 192 0 1 1 0 384 192 192 0 1 1 0-384zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM200 256c0-20.7 11.3-38.8 28-48.5l-36-62.3c-8.8-15.3-28.7-20.8-42-9c-25.6 22.6-43.9 53.3-50.9 88.1C95.7 241.5 110.3 256 128 256l72 0zm28 48.5l-36 62.4c-8.8 15.3-3.6 35.2 13.1 40.8c16 5.4 33.1 8.3 50.9 8.3s34.9-2.9 50.9-8.3c16.7-5.6 21.9-25.5 13.1-40.8l-36-62.4c-8.2 4.8-17.8 7.5-28 7.5s-19.8-2.7-28-7.5zM312 256l72 0c17.7 0 32.3-14.5 28.8-31.8c-7-34.8-25.3-65.5-50.9-88.1c-13.2-11.7-33.1-6.3-42 9l-36 62.3c16.7 9.7 28 27.8 28 48.5zm-56 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],baseball:[512,512,[129358,9918,"baseball-ball"],"f433","M62.7 223.4c-4.8 .4-9.7 .6-14.7 .6c-15.6 0-30.8-2-45.2-5.9C19.2 107.1 107.1 19.2 218.1 2.8C222 17.2 224 32.4 224 48c0 4.9-.2 9.8-.6 14.7c-.7 8.8 5.8 16.5 14.6 17.3s16.5-5.8 17.3-14.6c.5-5.7 .7-11.5 .7-17.3c0-16.5-1.9-32.6-5.6-47.9c1.8 0 3.7-.1 5.6-.1C397.4 0 512 114.6 512 256c0 1.9 0 3.7-.1 5.6c-15.4-3.6-31.4-5.6-47.9-5.6c-5.8 0-11.6 .2-17.3 .7c-8.8 .7-15.4 8.5-14.6 17.3s8.5 15.4 17.3 14.6c4.8-.4 9.7-.6 14.7-.6c15.6 0 30.8 2 45.2 5.9C492.8 404.9 404.9 492.8 293.9 509.2C290 494.8 288 479.6 288 464c0-4.9 .2-9.8 .6-14.7c.7-8.8-5.8-16.5-14.6-17.3s-16.5 5.8-17.3 14.6c-.5 5.7-.7 11.5-.7 17.3c0 16.5 1.9 32.6 5.6 47.9c-1.8 0-3.7 .1-5.6 .1C114.6 512 0 397.4 0 256c0-1.9 0-3.7 .1-5.6C15.4 254.1 31.5 256 48 256c5.8 0 11.6-.2 17.3-.7c8.8-.7 15.4-8.5 14.6-17.3s-8.5-15.4-17.3-14.6zM121.3 208c-8 3.7-11.6 13.2-7.9 21.2s13.2 11.6 21.2 7.9c45.2-20.8 81.7-57.2 102.5-102.5c3.7-8 .2-17.5-7.9-21.2s-17.5-.2-21.2 7.9c-17.6 38.3-48.5 69.2-86.7 86.7zm277.2 74.7c-3.7-8-13.2-11.6-21.2-7.9c-45.2 20.8-81.7 57.2-102.5 102.5c-3.7 8-.2 17.5 7.9 21.2s17.5 .2 21.2-7.9c17.6-38.3 48.5-69.2 86.7-86.7c8-3.7 11.6-13.2 7.9-21.2z"],"jet-fighter-up":[512,512,[],"e518","M270.7 9.7C268.2 3.8 262.4 0 256 0s-12.2 3.8-14.7 9.7L197.2 112.6c-3.4 8-5.2 16.5-5.2 25.2v77l-144 84V280c0-13.3-10.7-24-24-24s-24 10.7-24 24v56 32 24c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H192v32.7L133.5 468c-3.5 3-5.5 7.4-5.5 12v16c0 8.8 7.2 16 16 16h96V448c0-8.8 7.2-16 16-16s16 7.2 16 16v64h96c8.8 0 16-7.2 16-16V480c0-4.6-2-9-5.5-12L320 416.7V384H464v8c0 13.3 10.7 24 24 24s24-10.7 24-24V368 336 280c0-13.3-10.7-24-24-24s-24 10.7-24 24v18.8l-144-84v-77c0-8.7-1.8-17.2-5.2-25.2L270.7 9.7z"],"diagram-project":[576,512,["project-diagram"],"f542","M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48V96H384V80c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H432c-26.5 0-48-21.5-48-48V160H192v16c0 1.7-.1 3.4-.3 5L272 288h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V336c0-1.7 .1-3.4 .3-5L144 224H48c-26.5 0-48-21.5-48-48V80z"],copy:[448,512,[],"f0c5","M208 0H332.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128h80v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z"],"volume-xmark":[576,512,["volume-mute","volume-times"],"f6a9","M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM425 167l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z"],"hand-sparkles":[640,512,[],"e05d","M320 0c17.7 0 32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V128c0-17.7 14.3-32 32-32s32 14.3 32 32V323.1c-11.9 4.8-21.3 14.9-25 27.8l-8.9 31.2L478.9 391C460.6 396.3 448 413 448 432c0 18.9 12.5 35.6 30.6 40.9C448.4 497.4 409.9 512 368 512H348.8c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V32c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L288 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L288 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L320 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L320 352l-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456l-13.8 48.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456l-48.3-13.8c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408l13.8-48.3c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z"],grip:[448,512,["grip-horizontal"],"f58d","M128 136c0-22.1-17.9-40-40-40L40 96C17.9 96 0 113.9 0 136l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40l0-48zm0 192c0-22.1-17.9-40-40-40H40c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40H200c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40H360c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328z"],"share-from-square":[576,512,[61509,"share-square"],"f14d","M352 224H305.5c-45 0-81.5 36.5-81.5 81.5c0 22.3 10.3 34.3 19.2 40.5c6.8 4.7 12.8 12 12.8 20.3c0 9.8-8 17.8-17.8 17.8h-2.5c-2.4 0-4.8-.4-7.1-1.4C210.8 374.8 128 333.4 128 240c0-79.5 64.5-144 144-144h80V34.7C352 15.5 367.5 0 386.7 0c8.6 0 16.8 3.2 23.2 8.9L548.1 133.3c7.6 6.8 11.9 16.5 11.9 26.7s-4.3 19.9-11.9 26.7l-139 125.1c-5.9 5.3-13.5 8.2-21.4 8.2H384c-17.7 0-32-14.3-32-32V224zM80 96c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16H400c8.8 0 16-7.2 16-16V384c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V112C0 67.8 35.8 32 80 32h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H80z"],"child-combatant":[576,512,["child-rifle"],"e4e0","M176 128A64 64 0 1 0 176 0a64 64 0 1 0 0 128zm-8 352V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V300.5L260.9 321c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-51.7-82.1c-17.6-27.9-48.3-44.9-81.2-44.9H169.8c-33 0-63.7 16.9-81.2 44.9L36.9 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10L104 300.5V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM448 0H432 416c-8.8 0-16 7.2-16 16s7.2 16 16 16V132.3c-9.6 5.5-16 15.9-16 27.7v32c-17.7 0-32 14.3-32 32V368c0 17.7 14.3 32 32 32h16v96c0 8.8 7.2 16 16 16h59.5c10.4 0 18-9.8 15.5-19.9L484 400h44c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H480V325.3l53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2V208c0-8.8-7.2-16-16-16H512c-8.8 0-16 7.2-16 16v56l-16 5.3V160c0-11.8-6.4-22.2-16-27.7V16c0-8.8-7.2-16-16-16z"],gun:[576,512,[],"e19b","M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24v8H32C14.3 64 0 78.3 0 96V208c0 17.7 14.3 32 32 32H42c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480h96c14.7 0 27.5-10 31-24.2L217 352H321.4c23.7 0 44.8-14.9 52.7-37.2L400.9 240H432c8.5 0 16.6-3.4 22.6-9.4L477.3 208H544c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32H528V56zM321.4 304H229l16-64h105l-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],"square-phone":[448,512,["phone-square"],"f098","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm90.7 96.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L168 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C336.9 378 329 384 320 384C196.3 384 96 283.7 96 160c0-9 6-16.9 14.7-19.3l44-12z"],plus:[448,512,[10133,61543,"add"],"2b","M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z"],expand:[448,512,[],"f065","M32 32C14.3 32 0 46.3 0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V352zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H320zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V352z"],computer:[640,512,[],"e4e5","M384 96V320H64L64 96H384zM64 32C28.7 32 0 60.7 0 96V320c0 35.3 28.7 64 64 64H181.3l-10.7 32H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H277.3l-10.7-32H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm464 0c-26.5 0-48 21.5-48 48V432c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H528zm16 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],xmark:[384,512,[128473,10005,10006,10060,215,"close","multiply","remove","times"],"f00d","M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"],"arrows-up-down-left-right":[512,512,["arrows"],"f047","M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4V224H109.3l9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4H224V402.7l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4V288H402.7l-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4H288V109.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z"],"chalkboard-user":[640,512,["chalkboard-teacher"],"f51c","M160 64c0-35.3 28.7-64 64-64H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H336.8c-11.8-25.5-29.9-47.5-52.4-64H384V320c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v32h64V64L224 64v49.1C205.2 102.2 183.3 96 160 96V64zm0 64a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM133.3 352h53.3C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7H26.7C11.9 512 0 500.1 0 485.3C0 411.7 59.7 352 133.3 352z"],"peso-sign":[384,512,[],"e222","M64 32C46.3 32 32 46.3 32 64v64c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c68.4 0 127.7-39 156.8-96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.7c.5-5.3 .7-10.6 .7-16s-.2-10.7-.7-16h.7c17.7 0 32-14.3 32-32s-14.3-32-32-32H332.8C303.7 71 244.4 32 176 32H64zm190.4 96H96V96h80c30.5 0 58.2 12.2 78.4 32zM96 192H286.9c.7 5.2 1.1 10.6 1.1 16s-.4 10.8-1.1 16H96V192zm158.4 96c-20.2 19.8-47.9 32-78.4 32H96V288H254.4z"],"building-shield":[576,512,[],"e4d8","M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V207l-42.4 17H304 272c-8.8 0-16 7.2-16 16v32 24.2V304c0 .9 .1 1.7 .2 2.6c2.3 58.1 24.1 144.8 98.7 201.5c-5.8 2.5-12.2 3.9-18.9 3.9H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zM423.1 225.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z"],baby:[448,512,[],"f77c","M152 88a72 72 0 1 1 144 0A72 72 0 1 1 152 88zM39.7 144.5c13-17.9 38-21.8 55.9-8.8L131.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25V288H128V251.7c-15.2-6.7-29.7-15.1-43.3-25L48.5 200.3c-17.9-13-21.8-38-8.8-55.9zm89.8 184.8l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C70 438.6 68.1 417 79.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L284 419.4l-26-37.2z"],"users-line":[640,512,[],"e592","M211.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM32 256c0 17.7 14.3 32 32 32h85.6c10.1-39.4 38.6-71.5 75.8-86.6c-9.7-6-21.2-9.4-33.4-9.4H96c-35.3 0-64 28.7-64 64zm461.6 32H576c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H448c-11.7 0-22.7 3.1-32.1 8.6c38.1 14.8 67.4 47.3 77.7 87.4zM391.2 226.4c-6.9-1.6-14.2-2.4-21.6-2.4h-96c-8.5 0-16.7 1.1-24.5 3.1c-30.8 8.1-55.6 31.1-66.1 60.9c-3.5 10-5.5 20.8-5.5 32c0 17.7 14.3 32 32 32h224c17.7 0 32-14.3 32-32c0-11.2-1.9-22-5.5-32c-10.8-30.7-36.8-54.2-68.9-61.6zM563.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM321.6 192a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z"],"quote-left":[448,512,[8220,"quote-left-alt"],"f10d","M0 216C0 149.7 53.7 96 120 96h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320 288 216zm256 0c0-66.3 53.7-120 120-120h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H320c-35.3 0-64-28.7-64-64V320 288 216z"],tractor:[640,512,[128668],"f722","M96 64c0-35.3 28.7-64 64-64H266.3c26.2 0 49.7 15.9 59.4 40.2L373.7 160H480V126.2c0-24.8 5.8-49.3 16.9-71.6l2.5-5c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.5 5c-6.7 13.3-10.1 28-10.1 42.9V160h56c22.1 0 40 17.9 40 40v45.4c0 16.5-8.5 31.9-22.6 40.7l-43.3 27.1c-14.2-5.9-29.8-9.2-46.1-9.2c-39.3 0-74.1 18.9-96 48H352c0 17.7-14.3 32-32 32h-8.2c-1.7 4.8-3.7 9.5-5.8 14.1l5.8 5.8c12.5 12.5 12.5 32.8 0 45.3l-22.6 22.6c-12.5 12.5-32.8 12.5-45.3 0l-5.8-5.8c-4.6 2.2-9.3 4.1-14.1 5.8V480c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32v-8.2c-4.8-1.7-9.5-3.7-14.1-5.8l-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1H32c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h8.2c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6V192 160 64zm170.3 0H160v96h32H304.7L266.3 64zM176 256a80 80 0 1 0 0 160 80 80 0 1 0 0-160zM528 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z"],"trash-arrow-up":[448,512,["trash-restore"],"f829","M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z"],"arrow-down-up-lock":[640,512,[],"e4b0","M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7V288H416V272c0-17.2 3.9-33.5 10.8-48H352V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3V224l-128 0H96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32H96V402.7L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0zM160 192V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64zM288 320V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H288zm240-80c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z"],"lines-leaning":[384,512,[],"e51e","M190.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM352 32c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32z"],"ruler-combined":[512,512,[],"f546","M.2 468.9C2.7 493.1 23.1 512 48 512l96 0 320 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-48c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 368l0 96c0 1.7 .1 3.3 .2 4.9z"],copyright:[512,512,[169],"f1f9","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z"],equals:[448,512,[62764],"3d","M48 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48z"],blender:[512,512,[],"f517","M0 64C0 28.7 28.7 0 64 0h64 32H470.1c21.1 0 36.4 20.1 30.9 40.4L494.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.8l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H459.6l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L416 352H160l-8.7-96H64c-35.3 0-64-28.7-64-64V64zM145.5 192L133.8 64H64V192h81.5zM144 384H432c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],teeth:[576,512,[],"f62e","M0 128C0 75 43 32 96 32H480c53 0 96 43 96 96V384c0 53-43 96-96 96H96c-53 0-96-43-96-96V128zm176 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48s-48 21.5-48 48zm176-48c-26.5 0-48 21.5-48 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48zM48 208v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zM96 384c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H72c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-48c0 26.5 21.5 48 48 48s48-21.5 48-48V312c0-13.3-10.7-24-24-24H200c-13.3 0-24 10.7-24 24v24zm176 48c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H328c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-176v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zm48 176c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H456c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48z"],"shekel-sign":[448,512,[8362,"ils","shekel","sheqel","sheqel-sign"],"f20b","M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H192c35.3 0 64 28.7 64 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-70.7-57.3-128-128-128H32zM320 480c70.7 0 128-57.3 128-128V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 35.3-28.7 64-64 64H192V192c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32H320z"],map:[576,512,[128506,62072],"f279","M384 476.1L192 421.2V35.9L384 90.8V476.1zm32-1.2V88.4L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3V394.6c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2V423.6L32.9 474.5C17.1 480.8 0 469.2 0 452.2V117.4c0-9.8 6-18.6 15.1-22.3z"],rocket:[512,512,[],"f135","M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2v82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9V380.8c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168a40 40 0 1 0 0-80 40 40 0 1 0 0 80z"],"photo-film":[640,512,["photo-video"],"f87c","M256 0H576c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H256c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h80 48H552c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 128h96V384v32c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V384H512v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V312c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H72zm336 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H424c-8.8 0-16 7.2-16 16z"],"folder-minus":[512,512,[],"f65d","M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM184 272c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z"],store:[576,512,[],"f54e","M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0H109.6C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4zM499.7 254.9l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V384H128V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V384 252.6c-4 1-8 1.8-12.3 2.3z"],"arrow-trend-up":[576,512,[],"e098","M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32s-32-14.3-32-32V205.3L342.6 374.6c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160H384z"],"plug-circle-minus":[576,512,[],"e55e","M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z"],"sign-hanging":[512,512,["sign"],"f4d9","M96 0c17.7 0 32 14.3 32 32V64l352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128H32C14.3 128 0 113.7 0 96S14.3 64 32 64H64V32C64 14.3 78.3 0 96 0zm96 160H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z"],"bezier-curve":[640,512,[],"f55b","M296 136V88h48v48H296zM288 32c-26.5 0-48 21.5-48 48v4H121.6C111.2 62.7 89.3 48 64 48C28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36h66.9c-58.9 39.6-98.9 105-104 180H80c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-3.3c5.9-67 48.5-123.4 107.5-149.1c8.6 12.7 23.2 21.1 39.8 21.1h64c16.6 0 31.1-8.4 39.8-21.1c59 25.7 101.6 82.1 107.5 149.1H496c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-4.5c-5-75-45.1-140.4-104-180h66.9c10.4 21.3 32.3 36 57.6 36c35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36H400V80c0-26.5-21.5-48-48-48H288zM88 376h48v48H88V376zm416 48V376h48v48H504z"],"bell-slash":[640,512,[128277,61943],"f1f6","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-90.2-70.7c.2-.4 .4-.9 .6-1.3c5.2-11.5 3.1-25-5.3-34.4l-7.4-8.3C497.3 319.2 480 273.9 480 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V51.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM406.2 416L160 222.1v4.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S115.4 416 128 416H406.2zm-40.9 77.3c12-12 18.7-28.3 18.7-45.3H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z"],tablet:[448,512,["tablet-android"],"f3fb","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM176 432h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],"school-flag":[576,512,[],"e56e","M288 0H400c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H320.7l89.6 64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H336V400c0-26.5-21.5-48-48-48s-48 21.5-48 48V512H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64H165.7L256 95.5V32c0-17.7 14.3-32 32-32zm48 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM80 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm368 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H80zm384 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H464z"],fill:[512,512,[],"f575","M86.6 9.4C74.1-3.1 53.9-3.1 41.4 9.4s-12.5 32.8 0 45.3L122.7 136 30.6 228.1c-37.5 37.5-37.5 98.3 0 135.8L148.1 481.4c37.5 37.5 98.3 37.5 135.8 0L474.3 290.9c28.1-28.1 28.1-73.7 0-101.8L322.9 37.7c-28.1-28.1-73.7-28.1-101.8 0L168 90.7 86.6 9.4zM168 181.3l49.4 49.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L213.3 136l53.1-53.1c3.1-3.1 8.2-3.1 11.3 0L429.1 234.3c3.1 3.1 3.1 8.2 0 11.3L386.7 288H67.5c1.4-5.4 4.2-10.4 8.4-14.6L168 181.3z"],"angle-up":[448,512,[8963],"f106","M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z"],"drumstick-bite":[512,512,[],"f6d7","M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2C69.8 320.6 65 320 60 320c-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12c0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5c-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4H336c6.3 0 12.4-.3 18.5-1c11.9-1.2 16.4-15.5 10.8-26c-8.5-15.8-13.3-33.8-13.3-53c0-61.9 50.1-112 112-112c8 0 15.7 .8 23.2 2.4c11.7 2.5 24.1-5.9 22-17.6C494.5 62.5 422.5 0 336 0C238.8 0 160 78.8 160 176v89.2z"],"holly-berry":[512,512,[],"f7aa","M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM276.8 383.8c1 .1 2.1 .2 3.2 .2c39.8 0 72 32.2 72 72v22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.6 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6c-34.6 0-62.7-28.1-62.7-62.7v-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7c4.2 9.7 5.8 20.8 3.7 32.3L275 298.7c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.6 234.5c-15.5-5.2-31.6 6.4-31.6 22.8v32C96 323.9 67.9 352 33.3 352c-16.4 0-27.9 16-22.8 31.6l4.3 12.8c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.2 489.4 22.6 505.8 40.5 501L60 495.6c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8v-32c0-34.6 28.1-62.7 62.7-62.7c16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5L196 240.4c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384 144a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z"],"chevron-left":[320,512,[9001],"f053","M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z"],bacteria:[640,512,[],"e059","M304.9 .7c-9.6-2.7-19.5 2.8-22.3 12.4l-4.3 15.2c-8.3-.6-16.8 0-25.2 1.9c-7.3 1.7-14.3 3.5-21.1 5.5l-5.5-12.7c-3.9-9.1-14.5-13.4-23.6-9.5s-13.4 14.5-9.5 23.6l4.4 10.4c-16.6 6.7-31.7 14.4-45.4 22.8L147 62c-5.5-8.3-16.7-10.5-25-5s-10.5 16.7-5 25l6 9c-13.7 11-25.5 22.8-35.8 34.9l-10-8c-7.8-6.2-19.1-5-25.3 2.8s-5 19.1 2.8 25.3L65.9 155c-1.8 2.8-3.5 5.7-5.1 8.5c-6.6 11.4-11.8 22.6-16 33l-8-3.2c-9.2-3.7-19.7 .8-23.4 10s.8 19.7 10 23.4l10.4 4.2c-.2 .8-.4 1.5-.5 2.3c-2.2 9.3-3.4 17.3-4.1 23.4c-.4 3.1-.6 5.7-.8 7.8c-.1 1.1-.1 2-.2 2.8l-.1 1.1 0 .5 0 .2 0 .1c0 0 0 .1 29.1 1l-.1 0L28 269.3c-.1 3.1 0 6.1 .2 9.1l-15.2 4.3C3.5 285.4-2 295.4 .7 304.9s12.7 15.1 22.3 12.4l15.6-4.5c7.6 13.6 18.9 25 32.6 32.6L66.7 361c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.3-12.4l4.3-15.2c1.2 .1 2.4 .2 3.6 .2c15.6 .5 30.3-3.3 43-10.2l9 9c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-7.2-7.2c9.3-12.6 15.2-27.8 16.3-44.5l7.1 3c9.1 3.9 19.7-.3 23.6-9.5s-.3-19.7-9.5-23.6l-8.6-3.7c6.4-9.9 17.3-22.4 36.9-33.3l1.3 4.4c2.7 9.6 12.7 15.1 22.3 12.4s15.1-12.7 12.4-22.3l-2.3-8.1c3.8-1.1 7.7-2.1 11.9-3.1c11.6-2.7 22.1-7.7 31.1-14.4l7.2 7.2c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-9-9c7.6-13.9 11.3-30.1 10.1-46.6l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3S370.6 64 361 66.7l-15.6 4.5c-7.7-13.9-19.1-25.1-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3zM112 272l-48-1.5 0 0c11.7 .4 27.3 .9 48 1.6zm16-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-48a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM322.7 489c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.2-12.4l4.3-15.2c8.3 .6 16.8 0 25.2-1.9c7.3-1.7 14.3-3.5 21.1-5.5l5.5 12.7c3.9 9.1 14.5 13.4 23.6 9.5s13.4-14.5 9.5-23.6l-4.4-10.4c16.6-6.7 31.7-14.4 45.4-22.8L493 450c5.5 8.3 16.7 10.5 25 5s10.5-16.7 5-25l-6-9c13.7-11 25.5-22.8 35.8-34.9l10 8c7.8 6.2 19.1 5 25.3-2.8s5-19.1-2.8-25.3L574.1 357c1.8-2.8 3.5-5.7 5.1-8.5c6.6-11.4 11.8-22.6 16-33l8 3.2c9.2 3.7 19.7-.8 23.4-10s-.8-19.7-10-23.4l-10.4-4.2c.2-.8 .4-1.5 .5-2.3c2.2-9.3 3.4-17.3 4.1-23.4c.4-3.1 .6-5.7 .8-7.8c.1-1.1 .1-2 .2-2.8l.1-1.1 0-.5 0-.2 0-.1c0 0 0-.1-29.1-1l.1 0 29.1 .9c.1-3.1 0-6.1-.2-9.1l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3s-12.7-15.1-22.3-12.4l-15.6 4.5c-7.6-13.6-18.9-25-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3s-19.5 2.8-22.3 12.4l-4.3 15.2c-1.2-.1-2.4-.2-3.6-.2c-15.6-.5-30.3 3.3-43 10.2l-9-9c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l7.2 7.2c-9.3 12.6-15.2 27.8-16.3 44.5l-7.1-3c-9.1-3.9-19.7 .3-23.6 9.5s.3 19.7 9.5 23.6l8.6 3.7c-6.4 9.9-17.3 22.4-36.9 33.3l-1.3-4.4c-2.7-9.6-12.7-15.1-22.3-12.4s-15.1 12.7-12.4 22.3l2.3 8.1c-3.8 1.1-7.7 2.1-11.9 3.1c-11.6 2.7-22.1 7.7-31.1 14.4l-7.2-7.2c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l9 9c-7.6 13.9-11.3 30.1-10.1 46.6l-15.2 4.3c-9.6 2.7-15.1 12.7-12.4 22.2s12.7 15.1 22.3 12.4l15.6-4.5c7.7 13.9 19.1 25.1 32.6 32.6L322.7 489zM576 241.5l0 0c-11.7-.4-27.3-.9-48-1.6l48 1.5zM448 384a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z"],"hand-lizard":[512,512,[],"f258","M0 112C0 85.5 21.5 64 48 64H160h80 46.5c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8v12 16 48c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V402.2L273.9 352H240 160 112c-26.5 0-48-21.5-48-48s21.5-48 48-48h48 80c26.5 0 48-21.5 48-48s-21.5-48-48-48H160 48c-26.5 0-48-21.5-48-48z"],notdef:[384,512,[],"e1fe","M64 390.3L153.5 256 64 121.7V390.3zM102.5 448H281.5L192 313.7 102.5 448zm128-192L320 390.3V121.7L230.5 256zM281.5 64H102.5L192 198.3 281.5 64zM0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z"],disease:[512,512,[],"f7fa","M236.4 61.4L227 75.5c-21.3 32-59.4 48.5-97.3 42.1l-59.6-9.9C33.4 101.6 0 129.9 .1 167.1c0 15.9 6.4 31.2 17.6 42.5l29.2 29.2c11 11 17.2 25.9 17.2 41.5c0 15.8-6.4 30.9-17.7 42L33.3 335.1C22.2 345.9 16 360.7 16 376.2c0 36.8 34.1 64.2 70.1 56.2l62.3-13.8c7.7-1.7 15.7-2.6 23.6-2.6h10c27.2 0 53.7 9.3 75 26.3L287.8 467c10.5 8.4 23.6 13 37 13c32.7 0 59.3-26.5 59.3-59.3l0-25.2c0-34.9 21.4-66.2 53.9-78.8l36.9-14.3c22.4-8.7 37.2-30.3 37.2-54.3c0-28.1-20.1-52.3-47.8-57.3l-28-5.1c-36.5-6.7-65.4-34.5-73.6-70.7l-7.1-31.5C348.9 53.4 322.1 32 291.3 32c-22 0-42.6 11-54.9 29.4zM160 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm0 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"briefcase-medical":[512,512,[],"f469","M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zm96 152c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z"],genderless:[384,512,[],"f22d","M192 144a112 112 0 1 1 0 224 112 112 0 1 1 0-224zm0 288a176 176 0 1 0 0-352 176 176 0 1 0 0 352z"],"chevron-right":[320,512,[9002],"f054","M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z"],retweet:[576,512,[],"f079","M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32-14.3-32-32V192h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96H272zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0V192c0-53-43-96-96-96L304 96z"],"car-rear":[512,512,["car-alt"],"f5de","M165.4 96H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 192H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256v80c0 23.7 12.9 44.4 32 55.4V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V400H384v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V391.4c19.1-11.1 32-31.7 32-55.4V256c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32H165.4c-40.8 0-77.1 25.8-90.6 64.3zM208 272h96c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V288c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-13.3 0-24-10.7-24-24zm360-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H408c-13.3 0-24-10.7-24-24s10.7-24 24-24z"],"pump-soap":[448,512,[],"e06b","M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM256 360c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9c3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C219 279.1 256 327.5 256 360z"],"video-slash":[640,512,[],"f4e2","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9V192 320v5.8l-32-25.1V128c0-35.3-28.7-64-64-64H113.9L38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5V384c0 35.3 28.7 64 64 64H352c23.4 0 43.9-12.6 55-31.3z"],"battery-quarter":[576,512,["battery-2"],"f243","M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm112 96H96V320h96V192z"],radio:[512,512,[128251],"f8d7","M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192v4V304 448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H218.5L494.8 47zM368 240a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM80 256c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16zM64 320c0-8.8 7.2-16 16-16H208c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm16 64c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z"],"baby-carriage":[512,512,["carriage-baby"],"f77d","M256 192H.1C2.7 117.9 41.3 52.9 99 14.1c13.3-8.9 30.8-4.3 39.9 8.8L256 192zm128-32c0-35.3 28.7-64 64-64h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0v64c0 25.2-5.8 50.2-17 73.5s-27.8 44.5-48.6 62.3s-45.5 32-72.7 41.6S253.4 416 224 416s-58.5-5-85.7-14.6s-51.9-23.8-72.7-41.6s-37.3-39-48.6-62.3S0 249.2 0 224l224 0 160 0V160zM80 416a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm240 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z"],"traffic-light":[320,512,[128678],"f637","M64 0C28.7 0 0 28.7 0 64V352c0 88.4 71.6 160 160 160s160-71.6 160-160V64c0-35.3-28.7-64-64-64H64zm96 416a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm48-176a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm-48-80a48 48 0 1 1 0-96 48 48 0 1 1 0 96z"],thermometer:[512,512,[],"f491","M96 382.1V293.3c0-14.9 5.9-29.1 16.4-39.6l27.3-27.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 45.5-45.5C355.2 10.9 381.4 0 408.8 0C465.8 0 512 46.2 512 103.2c0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4H129.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l89-89z"],"vr-cardboard":[640,512,[],"f729","M576 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H184.4c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"],"hand-middle-finger":[448,512,[128405],"f806","M232 0c-22.1 0-40 17.9-40 40V204.2c-8.5-7.6-19.7-12.2-32-12.2c-26.5 0-48 21.5-48 48v7 73c0 8.8-7.2 16-16 16s-16-7.2-16-16V264.3c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334V372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1H304c70.7 0 128-57.3 128-128V320 288c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 227.5 329.3 208 304 208c-12.3 0-23.5 4.6-32 12.2V40c0-22.1-17.9-40-40-40z"],percent:[384,512,[62101,62785,"percentage"],"25","M374.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l320-320zM128 128A64 64 0 1 0 0 128a64 64 0 1 0 128 0zM384 384a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z"],"truck-moving":[640,512,[],"f4df","M64 32C28.7 32 0 60.7 0 96V304v80 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16H416h33.6c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H608c17.7 0 32-14.3 32-32V288 272 261.7c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5H480V96c0-35.3-28.7-64-64-64H64zM585 256H480V192h48.8c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM176 400a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM80 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"glass-water-droplet":[384,512,[],"e4f5","M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM83 297.5L66.4 64H317.6L301 297.5 288 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0s-43.9 10.1-64 0l-13-6.5zM256 196c0-24-33.7-70.1-52.2-93.5c-6.1-7.7-17.5-7.7-23.6 0C161.7 125.9 128 172 128 196c0 33.1 28.7 60 64 60s64-26.9 64-60z"],display:[576,512,[],"e163","M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V352H64V64H512z"],"face-smile":[512,512,[128578,"smile"],"f118","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],thumbtack:[384,512,[128204,128392,"thumb-tack"],"f08d","M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z"],trophy:[576,512,[127942],"f091","M400 0H176c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8H24C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H357.9C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24H446.4c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112h84.4c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6h84.4c-5.1 66.3-31.1 111.2-63 142.3z"],"person-praying":[448,512,[128720,"pray"],"f683","M352 64A64 64 0 1 0 224 64a64 64 0 1 0 128 0zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432H72c-22.1 0-40 17.9-40 40s17.9 40 40 40H280c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z"],hammer:[576,512,[128296],"f6e3","M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6V105.5L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0h18.1c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z"],"hand-peace":[512,512,[9996],"f25b","M224 0c17.7 0 32 14.3 32 32V240H192V32c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zM93.3 51.2L175.9 240H106.1L34.7 76.8C27.6 60.6 35 41.8 51.2 34.7s35.1 .3 42.1 16.5zm27 221.3l-.2-.5h69.9H216c22.1 0 40 17.9 40 40s-17.9 40-40 40H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H226.3c-42.4 0-83.1-16.9-113.1-46.9l-11.6-11.6C77.5 429.5 64 396.9 64 363V336c0-32.7 24.6-59.7 56.3-63.5z"],rotate:[512,512,[128260,"sync-alt"],"f2f1","M142.9 142.9c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5c0 0 0 0 0 0H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5c7.7-21.8 20.2-42.3 37.8-59.8zM16 312v7.6 .7V440c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l41.6-41.6c87.6 86.5 228.7 86.2 315.8-1c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.2 62.2-162.7 62.5-225.3 1L185 329c6.9-6.9 8.9-17.2 5.2-26.2s-12.5-14.8-22.2-14.8H48.4h-.7H40c-13.3 0-24 10.7-24 24z"],spinner:[512,512,[],"f110","M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z"],robot:[640,512,[129302],"f544","M320 0c17.7 0 32 14.3 32 32V96H472c39.8 0 72 32.2 72 72V440c0 39.8-32.2 72-72 72H168c-39.8 0-72-32.2-72-72V168c0-39.8 32.2-72 72-72H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z"],peace:[512,512,[9774],"f67c","M224 445.3V323.5l-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8V66.7C133.2 81.9 64 160.9 64 256c0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5L288 323.5V445.3c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1c0-95.1-69.2-174.1-160-189.3V240.8L422.8 351.1zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z"],gears:[640,512,["cogs"],"f085","M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8h-.7c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"],warehouse:[640,512,[],"f494","M0 488V171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4V488c0 13.3-10.7 24-24 24H568c-13.3 0-24-10.7-24-24V224c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32V488c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm488 24l-336 0c-13.3 0-24-10.7-24-24V432H512l0 56c0 13.3-10.7 24-24 24zM128 400V336H512v64H128zm0-96V224H512l0 80H128z"],"arrow-up-right-dots":[576,512,[],"e4b7","M160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L9.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V160c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H160zM576 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM448 208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm128 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM272 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM144 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM576 336a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-48-80a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"],splotch:[512,512,[],"f5bc","M208.5 62.3l28.1-36.9C248.8 9.4 267.8 0 288 0c28.5 0 53.6 18.7 61.8 46l17.8 59.4c10.3 34.4 36.1 62 69.8 74.6l39.8 14.9c20.9 7.9 34.8 27.9 34.8 50.2c0 16.9-7.9 32.8-21.5 42.9l-67.3 50.5c-24.3 18.2-37.2 47.9-33.8 78.1l2.5 22.7c4.3 38.7-26 72.6-65 72.6c-14.8 0-29.3-5.1-40.8-14.3l-55.4-44.3c-4.5-3.6-9.3-6.7-14.5-9.2c-15.8-7.9-33.7-10.4-51-7.3L82.4 451.9C47.8 458.2 16 431.6 16 396.5c0-13.2 4.7-26 13.1-36.2l11.2-13.4c14.6-17.4 22.6-39.4 22.6-62.1c0-18.8-5.5-37.2-15.8-53L8.8 173.5C3.1 164.7 0 154.4 0 143.9c0-33.4 30.1-58.8 63-53.2l51.3 8.7c35.9 6.1 72.2-8.2 94.2-37.1z"],"face-grin-hearts":[512,512,[128525,"grin-hearts"],"f584","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM199.3 129.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm154.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z"],"dice-four":[448,512,[9859],"f524","M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM352 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"sim-card":[384,512,[],"f7c4","M64 0H242.7c17 0 33.3 6.7 45.3 18.7L365.3 96c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0zM96 192c-17.7 0-32 14.3-32 32v32h64V192H96zM64 352h80 96 80V288H240 144 64v64zM320 224c0-17.7-14.3-32-32-32H256v64h64V224zM160 192v64h64V192H160zM288 448c17.7 0 32-14.3 32-32V384H256v64h32zM160 384v64h64V384H160zM64 416c0 17.7 14.3 32 32 32h32V384H64v32z"],transgender:[512,512,[9895,"transgender-alt"],"f225","M112 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-31 31L112 78.1l7-7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-7 7 15.2 15.2C187.7 107.6 220.5 96 256 96s68.3 11.6 94.9 31.2l68.8-68.8-31-31c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9h96c8.8 0 16 7.2 16 16v96c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-31-31-68.8 68.8C404.4 187.7 416 220.5 416 256c0 80.2-59 146.6-136 158.2V432h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v8c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V414.2C155 402.6 96 336.2 96 256c0-35.5 11.6-68.3 31.2-94.9L112 145.9l-7 7c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l7-7L58.3 92.3l-31 31c-4.6 4.6-11.5 5.9-17.4 3.5S0 118.5 0 112V16C0 7.2 7.2 0 16 0h96zM352 256a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z"],mercury:[384,512,[9791],"f223","M72.1 7C85.8-4 106-1.8 117 12c17.6 22 44.7 36 75 36s57.3-14 75-36c11.1-13.8 31.2-16 45-5s16 31.2 5 45c-7.8 9.7-16.6 18.4-26.4 26.1C337.3 109.7 368 163.3 368 224c0 89.1-66.2 162.7-152 174.4V424h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V472H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V398.4C82.2 386.7 16 313.1 16 224c0-60.7 30.7-114.3 77.5-145.9C83.7 70.5 74.9 61.7 67.1 52c-11.1-13.8-8.8-33.9 5-45zM80 224a112 112 0 1 0 224 0A112 112 0 1 0 80 224z"],"arrow-turn-down":[384,512,["level-down"],"f149","M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z"],"person-falling-burst":[640,512,[],"e547","M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 9.8c0 39-23.7 74-59.9 88.4C71.6 154.5 32 213 32 278.2V352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-73.8c0-10 1.6-19.8 4.5-29L261.1 497.4c9.6 14.8 29.4 19.1 44.3 9.5s19.1-29.4 9.5-44.3L222.6 320H224l80 0 38.4 51.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C341.3 263.1 327.1 256 312 256l-71.5 0-56.8-80.2-.2-.3c44.7-29 72.5-79 72.5-133.6l0-9.8zM96 80A48 48 0 1 0 0 80a48 48 0 1 0 96 0zM464 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 78.7-12.2c6.5-1 11.7-5.9 13.1-12.2s-1.1-13-6.5-16.7l-65.6-45.1L603 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L508.3 92.1l-29.4-74C476.4 12 470.6 8 464 8s-12.4 4-14.9 10.1l-29.4 74L343.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7c.1 .3 .1 .6 .2 .8l19.4 0c20.1 0 39.2 7.5 53.8 20.8l18.4 2.9L383 265.3l36.2 48.3c2.1 2.8 3.9 5.7 5.5 8.6L464 286.1z"],award:[384,512,[],"f559","M173.8 5.5c11-7.3 25.4-7.3 36.4 0L228 17.2c6 3.9 13 5.8 20.1 5.4l21.3-1.3c13.2-.8 25.6 6.4 31.5 18.2l9.6 19.1c3.2 6.4 8.4 11.5 14.7 14.7L344.5 83c11.8 5.9 19 18.3 18.2 31.5l-1.3 21.3c-.4 7.1 1.5 14.2 5.4 20.1l11.8 17.8c7.3 11 7.3 25.4 0 36.4L366.8 228c-3.9 6-5.8 13-5.4 20.1l1.3 21.3c.8 13.2-6.4 25.6-18.2 31.5l-19.1 9.6c-6.4 3.2-11.5 8.4-14.7 14.7L301 344.5c-5.9 11.8-18.3 19-31.5 18.2l-21.3-1.3c-7.1-.4-14.2 1.5-20.1 5.4l-17.8 11.8c-11 7.3-25.4 7.3-36.4 0L156 366.8c-6-3.9-13-5.8-20.1-5.4l-21.3 1.3c-13.2 .8-25.6-6.4-31.5-18.2l-9.6-19.1c-3.2-6.4-8.4-11.5-14.7-14.7L39.5 301c-11.8-5.9-19-18.3-18.2-31.5l1.3-21.3c.4-7.1-1.5-14.2-5.4-20.1L5.5 210.2c-7.3-11-7.3-25.4 0-36.4L17.2 156c3.9-6 5.8-13 5.4-20.1l-1.3-21.3c-.8-13.2 6.4-25.6 18.2-31.5l19.1-9.6C65 70.2 70.2 65 73.4 58.6L83 39.5c5.9-11.8 18.3-19 31.5-18.2l21.3 1.3c7.1 .4 14.2-1.5 20.1-5.4L173.8 5.5zM272 192a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM1.3 441.8L44.4 339.3c.2 .1 .3 .2 .4 .4l9.6 19.1c11.7 23.2 36 37.3 62 35.8l21.3-1.3c.2 0 .5 0 .7 .2l17.8 11.8c5.1 3.3 10.5 5.9 16.1 7.7l-37.6 89.3c-2.3 5.5-7.4 9.2-13.3 9.7s-11.6-2.2-14.8-7.2L74.4 455.5l-56.1 8.3c-5.7 .8-11.4-1.5-15-6s-4.3-10.7-2.1-16zm248 60.4L211.7 413c5.6-1.8 11-4.3 16.1-7.7l17.8-11.8c.2-.1 .4-.2 .7-.2l21.3 1.3c26 1.5 50.3-12.6 62-35.8l9.6-19.1c.1-.2 .2-.3 .4-.4l43.2 102.5c2.2 5.3 1.4 11.4-2.1 16s-9.3 6.9-15 6l-56.1-8.3-32.2 49.2c-3.2 5-8.9 7.7-14.8 7.2s-11-4.3-13.3-9.7z"],"ticket-simple":[576,512,["ticket-alt"],"f3ff","M0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64v64c0 8.8-7.4 15.7-15.7 18.6C541.5 217.1 528 235 528 256s13.5 38.9 32.3 45.4c8.3 2.9 15.7 9.8 15.7 18.6v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320c0-8.8 7.4-15.7 15.7-18.6C34.5 294.9 48 277 48 256s-13.5-38.9-32.3-45.4C7.4 207.7 0 200.8 0 192V128z"],building:[384,512,[127970,61687],"f1ad","M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16z"],"angles-left":[512,512,[171,"angle-double-left"],"f100","M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z"],qrcode:[448,512,[],"f029","M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zM64 96v64h64V96H64zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336zm64 16v64h64V352H64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm80 64H320v64h64V96zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V304zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z"],"clock-rotate-left":[512,512,["history"],"f1da","M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z"],"face-grin-beam-sweat":[512,512,[128517,"grin-beam-sweat"],"f583","M476.8 126.3c-4.1 1.1-8.4 1.7-12.8 1.7c-26.5 0-48-21-48-47c0-5 1.8-11.3 4.6-18.1c.3-.7 .6-1.4 .9-2.1c9-20.2 26.5-44.9 36-57.5c3.2-4.4 9.6-4.4 12.8 0C483.4 20.6 512 61 512 81c0 21.7-14.9 39.8-35.2 45.3zM256 0c51.4 0 99.3 15.2 139.4 41.2c-1.5 3.1-3 6.2-4.3 9.3c-3.4 8-7.1 19-7.1 30.5c0 44.3 36.6 79 80 79c9.6 0 18.8-1.7 27.4-4.8c13.3 30.9 20.6 65 20.6 100.8c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0zM388.1 312.8c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5c5-11.8-7-22.5-19.3-18.7zm-170.5-84l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0zm160 0l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0z"],"file-export":[576,512,["arrow-right-from-file"],"f56e","M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V288H216c-13.3 0-24 10.7-24 24s10.7 24 24 24H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM384 336V288H494.1l-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H384zm0-208H256V0L384 128z"],shield:[512,512,[128737,"shield-blank"],"f132","M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0z"],"arrow-up-short-wide":[576,512,["sort-amount-up-alt"],"f885","M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z"],"house-medical":[576,512,[],"e3b2","M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM256 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V320H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z"],"golf-ball-tee":[384,512,["golf-ball"],"f450","M384 192c0 66.8-34.1 125.6-85.8 160H85.8C34.1 317.6 0 258.8 0 192C0 86 86 0 192 0S384 86 384 192zM242.1 256.6c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zm-52.3-49.3c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4c0 18.5-15 33.5-33.5 33.5zm113.5-17.5c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zM96 416c0-17.7 14.3-32 32-32h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H240c-8.8 0-16 7.2-16 16v16c0 17.7-14.3 32-32 32s-32-14.3-32-32V464c0-8.8-7.2-16-16-16H128c-17.7 0-32-14.3-32-32z"],"circle-chevron-left":[512,512,["chevron-circle-left"],"f137","M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z"],"house-chimney-window":[576,512,[],"e00d","M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM248 192c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V216c0-13.3-10.7-24-24-24H248z"],"pen-nib":[512,512,[10001],"f5ad","M368.4 18.3L312.7 74.1 437.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L447.6 18.3c-21.9-21.9-57.3-21.9-79.2 0zM288 94.6l-9.2 2.8L134.7 140.6c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-3.8 11.3-1 23.9 7.3 32.4L164.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48c-7.4 0-14.4-1.7-20.7-4.7L33.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 2.8-9.2L288 94.6z"],"tent-arrow-turn-left":[576,512,[],"e580","M120.1 41.8c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120 456 120c39.8 0 72 32.2 72 72v40c0 13.3 10.7 24 24 24s24-10.7 24-24V192c0-66.3-53.7-120-120-120L86.5 72l33.5-30.2zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H240h16c17.7 0 32-14.3 32-32V361.9c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7H464h16c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z"],tents:[640,512,[],"e582","M396.6 6.5L235.8 129.1c9.6 1.8 18.9 5.8 27 12l168 128c13.2 10.1 22 24.9 24.5 41.4l6.2 41.5H608c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128c-11.5-8.7-27.3-8.7-38.8 0zm-153.2 160c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S22.7 512 32 512H176h16c17.7 0 32-14.3 32-32V361.9c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7H400h16c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z"],"wand-magic":[512,512,["magic"],"f0d0","M14.1 463.3c-18.7-18.7-18.7-49.1 0-67.9L395.4 14.1c18.7-18.7 49.1-18.7 67.9 0l34.6 34.6c18.7 18.7 18.7 49.1 0 67.9L116.5 497.9c-18.7 18.7-49.1 18.7-67.9 0L14.1 463.3zM347.6 187.6l105-105L429.4 59.3l-105 105 23.3 23.3z"],dog:[576,512,[128021],"f6d3","M309.6 158.5L332.7 19.8C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32h52.1c12.7 0 24.9 5.1 33.9 14.1L496 64h56c13.3 0 24 10.7 24 24v24c0 44.2-35.8 80-80 80H464 448 426.7l-5.1 30.5-112-64zM416 256.1L416 480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V364.8c-24 12.3-51.2 19.2-80 19.2s-56-6.9-80-19.2V480c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V249.8c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192h30 16H303.8L416 256.1zM464 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z"],carrot:[512,512,[129365],"f787","M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM244.6 136c-40 0-77.1 18.1-101.7 48.2l60.5 60.5c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-55.3-55.3 0 .1L2.2 477.9C-2 487-.1 497.8 7 505s17.9 9 27.1 4.8l134.7-62.4-52.1-52.1c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L199.7 433l100.2-46.4c46.4-21.5 76.2-68 76.2-119.2C376 194.8 317.2 136 244.6 136z"],moon:[384,512,[127769,9214],"f186","M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z"],"wine-glass-empty":[320,512,["wine-glass-alt"],"f5ce","M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348.4c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0H64zM81.9 203.1L93.4 64H226.6l11.6 139.1C242 248.8 205.9 288 160 288s-82-39.2-78.1-84.9z"],cheese:[512,512,[],"f7ef","M512 240.2V256H0c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7C418.8 32 512 125.2 512 240.2zm0 47.8V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V288H512z"],"yin-yang":[512,512,[9775],"f6ad","M256 64c53 0 96 43 96 96s-43 96-96 96s-96 43-96 96s43 96 96 96C150 448 64 362 64 256S150 64 256 64zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm32-352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"],music:[512,512,[127925],"f001","M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7v72V368c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V147L192 223.8V432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V200 128c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z"],"code-commit":[640,512,[],"f386","M320 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm156.8-48C462 361 397.4 416 320 416s-142-55-156.8-128H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H163.2C178 151 242.6 96 320 96s142 55 156.8 128H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H476.8z"],"temperature-low":[512,512,[],"f76b","M448 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 96a96 96 0 1 1 192 0A96 96 0 1 1 320 96zM144 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C70.2 332.6 64 349.5 64 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM32 112C32 50.2 82.1 0 144 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S0 447.5 0 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM192 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z"],"person-biking":[640,512,[128692,"biking"],"f84a","M400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1V416c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H427.2zM56 384a72 72 0 1 1 144 0A72 72 0 1 1 56 384zm200 0A128 128 0 1 0 0 384a128 128 0 1 0 256 0zm184 0a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zm200 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z"],broom:[576,512,[129529],"f51a","M566.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192-34.7-34.7c-4.2-4.2-10-6.6-16-6.6c-12.5 0-22.6 10.1-22.6 22.6v29.1L364.3 320h29.1c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16l-34.7-34.7 192-192zM341.1 353.4L222.6 234.9c-42.7-3.7-85.2 11.7-115.8 42.3l-8 8C76.5 307.5 64 337.7 64 369.2c0 6.8 7.1 11.2 13.2 8.2l51.1-25.5c5-2.5 9.5 4.1 5.4 7.9L7.3 473.4C2.7 477.6 0 483.6 0 489.9C0 502.1 9.9 512 22.1 512l173.3 0c38.8 0 75.9-15.4 103.4-42.8c30.6-30.6 45.9-73.1 42.3-115.8z"],"shield-heart":[512,512,[],"e574","M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM144 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z"],gopuram:[512,512,[],"f664","M120 0c13.3 0 24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h48V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8V64v64c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H416V352H384V224H352V128H320v96h32V352h32V512H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H128V352h32V224h32V128H160v96H128V352H96V512H32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32V256c0-17.7 14.3-32 32-32V160c0-17.7 14.3-32 32-32V64 32 24c0-13.3 10.7-24 24-24zM256 272c-17.7 0-32 14.3-32 32v48h64V304c0-17.7-14.3-32-32-32zm-32-80v32h64V192c0-17.7-14.3-32-32-32s-32 14.3-32 32z"],"earth-oceania":[512,512,["globe-oceania"],"e47b","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208.6 357.3l-39-13.5c-6.5-2.2-13.6-2.3-20.1-.3l-15.3 4.9c-18.5 5.9-38.5-2.4-47.5-19.5l-3.3-6.2c-10.6-20.1-2.3-45 18.2-54.7l35.3-16.8c2.3-1.1 4.4-2.8 5.9-4.8l5.3-7c7.2-9.6 18.6-15.3 30.6-15.3s23.4 5.7 30.6 15.3l4.6 6.1c2 2.6 4.9 4.5 8.1 5.1c7.8 1.6 15.7-1.5 20.4-7.9l10.4-14.2c2-2.8 5.3-4.4 8.7-4.4c4.4 0 8.4 2.7 10 6.8l10.1 25.9c2.8 7.2 6.7 14 11.5 20.2L311 299.8c5.8 7.4 9 16.6 9 26s-3.2 18.6-9 26L299 367.2c-8.3 10.6-21 16.8-34.4 16.8c-8.4 0-16.6-2.4-23.7-7l-25.4-16.4c-2.2-1.4-4.5-2.5-6.9-3.4zm65.2-214.8L296 164.7c10.1 10.1 2.9 27.3-11.3 27.3H254.8c-5.6 0-11.1-1.2-16.2-3.4l-42.8-19c-14.3-6.3-11.9-27.3 3.4-30.3l38.5-7.7c13.1-2.6 26.7 1.5 36.1 10.9zM248 432c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H264c-8.8 0-16-7.2-16-16zM431.2 298.9l8 24c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1l-8-24c-2.8-8.4 1.7-17.4 10.1-20.2s17.4 1.7 20.2 10.1zm-19.9 80.4l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z"],"square-xmark":[448,512,[10062,"times-square","xmark-square"],"f2d3","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm79 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"],hashtag:[448,512,[62098],"23","M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128h95.1l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H347.1L325.8 320H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H315.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7H155.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l21.3-128H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320h95.1l21.3-128H187.1z"],"up-right-and-down-left-from-center":[512,512,["expand-alt"],"f424","M344 0H488c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512H24c-13.3 0-24-10.7-24-24V344c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z"],"oil-can":[640,512,[],"f613","M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32H144 96 48c-26.5 0-48 21.5-48 48v64.8c0 19 11.2 36.2 28.5 43.9l67.5 30V368c0 26.5 21.5 48 48 48H403.1c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192l-50.5-25.2c-8.9-4.4-18.7-6.8-28.6-6.8H288V128h32zM96 208v86.1L48 272.8V208H96z"],t:[384,512,[116],"54","M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H160V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H192 32z"],hippo:[640,512,[129435],"f6ed","M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2h32c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1c0 10.2 7.4 18.8 16.7 23c27.9 12.5 47.3 40.5 47.3 73c0 26.2-12.6 49.4-32 64v32c0 8.8-7.2 16-16 16H560c-8.8 0-16-7.2-16-16V320H480v16c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V318.4c-11.8-2.4-22.7-7.4-32-14.4c-1.5-1.1-2.9-2.3-4.3-3.5c-17-14.7-27.7-36.4-27.7-60.5c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2V352c0 17.7 14.3 32 32 32h32v64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V372c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12v76c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V329.1L45.9 369.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7C32 155.7 117.2 68 223.8 64.1l.2-.1h7.2H256h32c41.7 0 83.4 12.1 117.2 25.7c1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM480 144a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z"],"chart-column":[512,512,[],"e0e3","M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm128-64V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64 32c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32zM480 96V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z"],infinity:[640,512,[8734,9854],"f534","M0 241.1C0 161 65 96 145.1 96c38.5 0 75.4 15.3 102.6 42.5L320 210.7l72.2-72.2C419.5 111.3 456.4 96 494.9 96C575 96 640 161 640 241.1v29.7C640 351 575 416 494.9 416c-38.5 0-75.4-15.3-102.6-42.5L320 301.3l-72.2 72.2C220.5 400.7 183.6 416 145.1 416C65 416 0 351 0 270.9V241.1zM274.7 256l-72.2-72.2c-15.2-15.2-35.9-23.8-57.4-23.8C100.3 160 64 196.3 64 241.1v29.7c0 44.8 36.3 81.1 81.1 81.1c21.5 0 42.2-8.5 57.4-23.8L274.7 256zm90.5 0l72.2 72.2c15.2 15.2 35.9 23.8 57.4 23.8c44.8 0 81.1-36.3 81.1-81.1V241.1c0-44.8-36.3-81.1-81.1-81.1c-21.5 0-42.2 8.5-57.4 23.8L365.3 256z"],"vial-circle-check":[512,512,[],"e596","M0 64C0 46.3 14.3 32 32 32H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V266.8c-20.2 28.6-32 63.5-32 101.2c0 25.2 5.3 49.1 14.8 70.8C189.5 463.7 160.6 480 128 480c-53 0-96-43-96-96V96C14.3 96 0 81.7 0 64zM96 96v96h64V96H96zM224 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L352 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z"],"person-arrow-down-to-line":[640,512,[],"e538","M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM464 64V306.7l-25.4-25.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L528 306.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32z"],voicemail:[640,512,[],"f897","M144 320a80 80 0 1 1 0-160 80 80 0 1 1 0 160zm119.8 0c15.3-22.9 24.2-50.4 24.2-80c0-79.5-64.5-144-144-144S0 160.5 0 240s64.5 144 144 144H496c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144c0 29.6 8.9 57.1 24.2 80H263.8zM496 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160z"],fan:[512,512,[],"f863","M258.6 0c-1.7 0-3.4 .1-5.1 .5C168 17 115.6 102.3 130.5 189.3c2.9 17 8.4 32.9 15.9 47.4L32 224H29.4C13.2 224 0 237.2 0 253.4c0 1.7 .1 3.4 .5 5.1C17 344 102.3 396.4 189.3 381.5c17-2.9 32.9-8.4 47.4-15.9L224 480v2.6c0 16.2 13.2 29.4 29.4 29.4c1.7 0 3.4-.1 5.1-.5C344 495 396.4 409.7 381.5 322.7c-2.9-17-8.4-32.9-15.9-47.4L480 288h2.6c16.2 0 29.4-13.2 29.4-29.4c0-1.7-.1-3.4-.5-5.1C495 168 409.7 115.6 322.7 130.5c-17 2.9-32.9 8.4-47.4 15.9L288 32V29.4C288 13.2 274.8 0 258.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"person-walking-luggage":[576,512,[],"e554","M432 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM347.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L505 232.7l-15.3-36.8C472.5 154.8 432.3 128 387.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L340.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM256 274.1c-7.7-4.4-17.4-1.8-21.9 5.9l-32 55.4L147.7 304c-15.3-8.8-34.9-3.6-43.7 11.7L40 426.6c-8.8 15.3-3.6 34.9 11.7 43.7l55.4 32c15.3 8.8 34.9 3.6 43.7-11.7l64-110.9c1.5-2.6 2.6-5.2 3.3-8L261.9 296c4.4-7.7 1.8-17.4-5.9-21.9z"],"up-down":[256,512,[8597,11021,"arrows-alt-v"],"f338","M145.6 7.7C141 2.8 134.7 0 128 0s-13 2.8-17.6 7.7l-104 112c-6.5 7-8.2 17.2-4.4 25.9S14.5 160 24 160H80V352H24c-9.5 0-18.2 5.7-22 14.4s-2.1 18.9 4.4 25.9l104 112c4.5 4.9 10.9 7.7 17.6 7.7s13-2.8 17.6-7.7l104-112c6.5-7 8.2-17.2 4.4-25.9s-12.5-14.4-22-14.4H176V160h56c9.5 0 18.2-5.7 22-14.4s2.1-18.9-4.4-25.9l-104-112z"],"cloud-moon-rain":[576,512,[],"f73c","M481.2 0C417 0 363.5 46.5 353.7 107.6c35.4 17.6 60.2 53.3 62.1 95.1c23.2 11 42 29.7 53.1 52.7c4 .4 8.1 .6 12.3 .6c34.9 0 66.7-13.8 89.9-36.1c5.1-4.9 6.4-12.5 3.2-18.7s-10.1-9.7-17-8.6c-4.9 .8-10 1.3-15.2 1.3c-49 0-88.4-39.3-88.4-87.4c0-32.6 18-61.1 44.9-76.1c6.1-3.4 9.3-10.5 7.8-17.4s-7.3-12-14.3-12.6c-3.6-.3-7.3-.5-10.9-.5zM367.9 383.9c44.2 0 80-35.8 80-80c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C241.3 114.6 210.8 96 176 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96H367.9zM85.4 420.1c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3z"],calendar:[448,512,[128197,128198],"f133","M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z"],trailer:[640,512,[],"e041","M48 32C21.5 32 0 53.5 0 80V336c0 26.5 21.5 48 48 48H65.1c7.8-54.3 54.4-96 110.9-96s103.1 41.7 110.9 96H488h8H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V80c0-26.5-21.5-48-48-48H48zM80 96c8.8 0 16 7.2 16 16l0 131.2c-11.4 5.9-22.2 12.9-32 21V112c0-8.8 7.2-16 16-16zm96 128c-5.4 0-10.7 .2-16 .7L160 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112.7c-5.3-.5-10.6-.7-16-.7zm80 19.2L256 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 152.2c-9.8-8.1-20.6-15.2-32-21zM368 96c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16zm112 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16s16 7.2 16 16zM176 480a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-112a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],bahai:[576,512,["haykal"],"f666","M288 0c14.5 0 27.2 9.7 30.9 23.8l23.9 89.6 75.9-53.3c11.9-8.3 27.8-7.6 39 1.7s14.6 24.9 8.4 38.1l-39.3 84 92.4 8c14.4 1.2 26.2 12 28.8 26.3s-4.9 28.5-18 34.6l-84.1 39.1 65.7 65.5c10.3 10.2 12.4 26.1 5.1 38.7s-22 18.7-36 14.9L391 386.8l8.2 92.4c1.3 14.4-7.3 27.9-20.9 32.9s-28.9 .1-37.2-11.7l-53.1-76-53.1 76c-8.3 11.9-23.6 16.7-37.2 11.7s-22.2-18.5-20.9-32.9l8.2-92.4L95.4 410.9c-14 3.8-28.8-2.3-36-14.9s-5.2-28.4 5.1-38.7l65.7-65.5L46 252.7c-13.1-6.1-20.5-20.3-18-34.6s14.3-25.1 28.8-26.3l92.4-8-39.3-84c-6.1-13.1-2.7-28.8 8.4-38.1s27.1-10 39-1.7l75.9 53.3 23.9-89.6C260.8 9.7 273.5 0 288 0zm0 156.2l-4.8 18c-2.7 10.1-10.2 18.2-20 21.8s-20.8 2.1-29.3-3.9l-15.2-10.7 7.9 16.8c4.4 9.5 4 20.5-1.3 29.6s-14.5 15-25 15.9l-18.5 1.6 16.8 7.8c9.5 4.4 16.2 13.2 18 23.5s-1.5 20.8-8.9 28.2l-13.2 13.1 17.9-4.8c10.1-2.7 20.9-.3 28.9 6.4s12.2 16.9 11.3 27.3l-1.6 18.5 10.6-15.2c6-8.6 15.8-13.7 26.2-13.7s20.2 5.1 26.2 13.7l10.6 15.2-1.6-18.5c-.9-10.4 3.3-20.6 11.3-27.3s18.8-9.1 28.9-6.4l17.9 4.8-13.2-13.1c-7.4-7.4-10.7-17.9-8.9-28.2s8.5-19.1 18-23.5l16.8-7.8-18.5-1.6c-10.4-.9-19.7-6.8-25-15.9s-5.7-20.1-1.3-29.6l7.9-16.8-15.2 10.7c-8.6 6-19.5 7.5-29.3 3.9s-17.3-11.7-20-21.8l-4.8-18z"],"sd-card":[384,512,[],"f7c2","M320 0H141.3C124.3 0 108 6.7 96 18.7L18.7 96C6.7 108 0 124.3 0 141.3V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 88v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24z"],dragon:[640,512,[128009],"f6d5","M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4L294.4 28.8c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0H416h32 16c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8c0 26.5-21.5 48-48 48H538.5c-17 0-33.3-6.7-45.3-18.7L480 160H448v21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1C640 462.9 590.9 512 530.2 512H496 432 32.3c-3.3 0-6.6-.4-9.6-1.4C13.5 507.8 6 501 2.4 492.1C1 488.7 .2 485.2 0 481.4c-.2-3.7 .3-7.3 1.3-10.7c2.8-9.2 9.6-16.7 18.6-20.4c3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1c0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1V181.5v-57zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3v.6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9c0 13.3 10.7 24 24 24c10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87V227c0 32.8 8.4 64.8 24 93H112c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9s-1.5-14.1 3.8-18.8L130.9 116.5z"],"shoe-prints":[640,512,[],"f54b","M416 0C352.3 0 256 32 256 32V160c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64h32V32H192c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32V480s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64H96V352H64c-35.3 0-64 28.7-64 64z"],"circle-plus":[512,512,["plus-circle"],"f055","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"],"face-grin-tongue-wink":[512,512,[128540,"grin-tongue-wink"],"f58b","M174.5 498.8C73.1 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 112.9-73.1 208.7-174.5 242.8C346.7 484 352 466.6 352 448V401.1c24.3-17.5 43.6-41.6 55.4-69.6c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c11.7 27.8 30.8 51.7 54.8 69.2V448c0 18.6 5.3 36 14.5 50.8zm20.7-265.2c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM336 272a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM320 402.6V448c0 35.3-28.7 64-64 64s-64-28.7-64-64V402.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6zM336 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],"hand-holding":[576,512,[],"f4bd","M559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-366.1-8.3a.5 .5 0 1 1 -.9 .2 .5 .5 0 1 1 .9-.2z"],"plug-circle-exclamation":[576,512,[],"e55d","M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z"],"link-slash":[640,512,["chain-broken","chain-slash","unlink"],"f127","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM116.6 187.9L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9zM220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3L220.9 270z"],clone:[512,512,[],"f24d","M288 448H64V224h64V160H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H288v64zm-64-96H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64z"],"person-walking-arrow-loop-left":[640,512,[],"e551","M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384H480c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96H461.3l25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z"],"arrow-up-z-a":[576,512,["sort-alpha-up-alt"],"f882","M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 64c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zm96 192c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 262.8 428.1 256 416 256zM395.8 400L416 359.6 436.2 400H395.8z"],"fire-flame-curved":[384,512,["fire-alt"],"f7e4","M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0C198.4 0 208 9.6 208 21.3V43.5c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7C384 434 306 512 209.7 512H192C86 512 0 426 0 320v-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6C85.9 176 96 186.1 96 198.6V288c0 35.3 28.7 64 64 64s64-28.7 64-64v-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7c0-27.7 9-54.8 25.6-76.9z"],tornado:[448,512,[127786],"f76f","M0 32V45.6C0 62.7 1.7 79.6 5 96H357.8c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16C416 10.1 405.9 0 393.4 0H32C14.3 0 0 14.3 0 32zm352.2 96H13.6c12.2 35.9 32.3 68.7 58.8 96H412l-47.2-62.9c-7.3-9.7-11.6-21.2-12.6-33.1zm-226 138.2l116.4 68.5c8.2 4.8 15.8 10.7 22.5 17.3H445c2-9.8 3-19.9 3-30.1c0-23-5.3-45.5-15.3-65.9H110.2c5.2 3.6 10.5 7 16 10.2zM288 384c10.3 21.4 13.8 45.5 9.9 69l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4c5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c12.8-12.8 23.1-27.7 30.4-43.9H288z"],"file-circle-plus":[576,512,[58606],"e494","M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z"],"book-quran":[448,512,["quran"],"f687","M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM274.1 150.2l-8.9 21.4-23.1 1.9c-5.7 .5-8 7.5-3.7 11.2L256 199.8l-5.4 22.6c-1.3 5.5 4.7 9.9 9.6 6.9L280 217.2l19.8 12.1c4.9 3 10.9-1.4 9.6-6.9L304 199.8l17.6-15.1c4.3-3.7 2-10.8-3.7-11.2l-23.1-1.9-8.9-21.4c-2.2-5.3-9.6-5.3-11.8 0zM96 192c0 70.7 57.3 128 128 128c25.6 0 49.5-7.5 69.5-20.5c3.2-2.1 4.5-6.2 3.1-9.7s-5.2-5.6-9-4.8c-6.1 1.2-12.5 1.9-19 1.9c-52.4 0-94.9-42.5-94.9-94.9s42.5-94.9 94.9-94.9c6.5 0 12.8 .7 19 1.9c3.8 .8 7.5-1.3 9-4.8s.2-7.6-3.1-9.7C273.5 71.5 249.6 64 224 64C153.3 64 96 121.3 96 192z"],anchor:[576,512,[9875],"f13d","M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c88.4 0 160-71.6 160-160v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 53-43 96-96 96H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1z"],"border-all":[448,512,[],"f84c","M384 96V224H256V96H384zm0 192V416H256V288H384zM192 224H64V96H192V224zM64 288H192V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"],"face-angry":[512,512,[128544,"angry"],"f556","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM338.7 395.9c6.6-5.9 7.1-16 1.2-22.6C323.8 355.4 295.7 336 256 336s-67.8 19.4-83.9 37.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c11.7-13 31.6-26.7 60.1-26.7s48.4 13.7 60.1 26.7c5.9 6.6 16 7.1 22.6 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z"],"cookie-bite":[512,512,[],"f564","M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6v0c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9v0c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"arrow-trend-down":[576,512,[],"e097","M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v82.7L342.6 137.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352H384z"],rss:[448,512,["feed"],"f09e","M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"],"draw-polygon":[448,512,[],"f5ee","M96 151.4V360.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c0-.1 .1-.2 .1-.3l-4.5-7.9-32-56 0 0c-1.4 .1-2.8 .1-4.2 .1c-35.3 0-64-28.7-64-64s28.7-64 64-64c1.4 0 2.8 0 4.2 .1l0 0 32-56 4.5-7.9-.1-.3H119.4c-5.6 9.7-13.7 17.8-23.4 23.4zM384.3 352c35.2 .2 63.7 28.7 63.7 64c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V151.4C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32H328.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 35.3-28.5 63.8-63.7 64l-4.5 7.9-32 56-2.3 4c4.2 8.5 6.5 18 6.5 28.1s-2.3 19.6-6.5 28.1l2.3 4 32 56 4.5 7.9z"],"scale-balanced":[640,512,[9878,"balance-scale"],"f24e","M384 32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H398.4c-5.2 25.8-22.9 47.1-46.4 57.3V448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-23.5-10.3-41.2-31.6-46.4-57.3H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288H584.4L512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C627.2 382 574.9 416 512 416zM126.8 195.8L54.4 320H199.3L126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C242 382 189.7 416 126.8 416S11.7 382 .9 337.1z"],"gauge-simple-high":[512,512,[61668,"tachometer","tachometer-fast"],"f62a","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-15.9-5.8-30.4-15.3-41.6l76.6-147.4c6.1-11.8 1.5-26.3-10.2-32.4s-26.2-1.5-32.4 10.2L262.1 288.3c-2-.2-4-.3-6.1-.3c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z"],shower:[512,512,[128703],"f2cc","M64 131.9C64 112.1 80.1 96 99.9 96c9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.2-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32C44.7 32 0 76.7 0 131.9V448c0 17.7 14.3 32 32 32s32-14.3 32-32V131.9zM256 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],desktop:[576,512,[128421,61704,"desktop-alt"],"f390","M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V288H64V64H512z"],m:[448,512,[109],"4d","M22.7 33.4c13.5-4.1 28.1 1.1 35.9 12.9L224 294.3 389.4 46.2c7.8-11.7 22.4-17 35.9-12.9S448 49.9 448 64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V169.7L250.6 369.8c-5.9 8.9-15.9 14.2-26.6 14.2s-20.7-5.3-26.6-14.2L64 169.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 49.9 9.2 37.5 22.7 33.4z"],"table-list":[512,512,["th-list"],"f00b","M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 0v64h64V96H64zm384 0H192v64H448V96zM64 224v64h64V224H64zm384 0H192v64H448V224zM64 352v64h64V352H64zm384 0H192v64H448V352z"],"comment-sms":[512,512,["sms"],"f7cd","M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM96 212.8c0-20.3 16.5-36.8 36.8-36.8H152c8.8 0 16 7.2 16 16s-7.2 16-16 16H132.8c-2.7 0-4.8 2.2-4.8 4.8c0 1.6 .8 3.1 2.2 4l29.4 19.6c10.3 6.8 16.4 18.3 16.4 30.7c0 20.3-16.5 36.8-36.8 36.8H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h27.2c2.7 0 4.8-2.2 4.8-4.8c0-1.6-.8-3.1-2.2-4l-29.4-19.6C102.2 236.7 96 225.2 96 212.8zM372.8 176H392c8.8 0 16 7.2 16 16s-7.2 16-16 16H372.8c-2.7 0-4.8 2.2-4.8 4.8c0 1.6 .8 3.1 2.2 4l29.4 19.6c10.2 6.8 16.4 18.3 16.4 30.7c0 20.3-16.5 36.8-36.8 36.8H352c-8.8 0-16-7.2-16-16s7.2-16 16-16h27.2c2.7 0 4.8-2.2 4.8-4.8c0-1.6-.8-3.1-2.2-4l-29.4-19.6c-10.2-6.8-16.4-18.3-16.4-30.7c0-20.3 16.5-36.8 36.8-36.8zm-152 6.4L256 229.3l35.2-46.9c4.1-5.5 11.3-7.8 17.9-5.6s10.9 8.3 10.9 15.2v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V240l-19.2 25.6c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L224 240v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-6.9 4.4-13 10.9-15.2s13.7 .1 17.9 5.6z"],book:[448,512,[128212],"f02d","M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],"user-plus":[640,512,[],"f234","M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM504 312V248H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V136c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"],check:[448,512,[10003,10004],"f00c","M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"],"battery-three-quarters":[576,512,["battery-4"],"f241","M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm272 96H96V320H352V192z"],"house-circle-check":[640,512,[],"e509","M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z"],"angle-left":[320,512,[8249],"f104","M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"],"diagram-successor":[512,512,[],"e47a","M512 416l0-64c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64zM64 160l0-64 144 0 16 0 0 64L64 160zm224 0l0-64 80 0c8.8 0 16 7.2 16 16l0 16-38.1 0c-21.4 0-32.1 25.9-17 41L399 239c9.4 9.4 24.6 9.4 33.9 0L503 169c15.1-15.1 4.4-41-17-41L448 128l0-16c0-44.2-35.8-80-80-80L224 32l-16 0L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64z"],"truck-arrow-right":[640,512,[],"e58b","M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM257 95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H262.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9L257 95z"],"arrows-split-up-and-left":[512,512,[],"e4bc","M246.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 109.3V384c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c-70.7 0-128-57.3-128-128c0-35.3-28.7-64-64-64H109.3l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256H224c23.3 0 45.2 6.2 64 17.1V109.3l-41.4 41.4z"],"hand-fist":[448,512,[9994,"fist-raised"],"f6de","M192 0c17.7 0 32 14.3 32 32V144H160V32c0-17.7 14.3-32 32-32zM64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v80H64V64zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V64zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V128zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V256c0 52.3-25.1 98.8-64 128v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V401.6c-17.3-7.9-33.2-18.8-46.9-32.5L69.5 357.5C45.5 333.5 32 300.9 32 267V240c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H128c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z"],"cloud-moon":[640,512,[],"f6c3","M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80H96c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z"],briefcase:[512,512,[128188],"f0b1","M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 320 512V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM512 288H320v32c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V288z"],"person-falling":[512,512,[],"e546","M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0h-1.4l92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32V278.2c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 32a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"],"image-portrait":[384,512,["portrait"],"f3e0","M384 64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64l0-384zM128 192a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 356.6c0-37.9 30.7-68.6 68.6-68.6h86.9c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4H107.4C92.3 384 80 371.7 80 356.6z"],"user-tag":[640,512,[],"f507","M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c10 0 18.8-4.9 24.2-12.5l-99.2-99.2c-14.9-14.9-23.3-35.1-23.3-56.1v-33c-15.9-4.7-32.8-7.2-50.3-7.2H178.3zM384 224c-17.7 0-32 14.3-32 32v82.7c0 17 6.7 33.3 18.7 45.3L478.1 491.3c18.7 18.7 49.1 18.7 67.9 0l73.4-73.4c18.7-18.7 18.7-49.1 0-67.9L512 242.7c-12-12-28.3-18.7-45.3-18.7H384zm24 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z"],rug:[640,512,[],"e569","M24 64H56 80V88v88 80 80 88 24H56 24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V360H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V280H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V200H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V112H24C10.7 112 0 101.3 0 88S10.7 64 24 64zm88 0H528V448H112V64zM640 88c0 13.3-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H584 560V424 336 256 176 88 64h24 32c13.3 0 24 10.7 24 24z"],"earth-europe":[512,512,["globe-europe"],"f7a2","M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1v9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1h1c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24v4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H379.3c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3h11.3c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16H454c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.7-15.4H251.4c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3v3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3H248c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z"],"cart-flatbed-suitcase":[640,512,["luggage-cart"],"f59d","M0 32C0 14.3 14.3 0 32 0H48c44.2 0 80 35.8 80 80V368c0 8.8 7.2 16 16 16H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H541.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H253.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H144c-44.2 0-80-35.8-80-80V80c0-8.8-7.2-16-16-16H32C14.3 64 0 49.7 0 32zM432 96V56c0-4.4-3.6-8-8-8H344c-4.4 0-8 3.6-8 8V96h96zM288 96V56c0-30.9 25.1-56 56-56h80c30.9 0 56 25.1 56 56V96 320H288V96zM512 320V96h16c26.5 0 48 21.5 48 48V272c0 26.5-21.5 48-48 48H512zM240 96h16V320H240c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z"],"rectangle-xmark":[512,512,[62164,"rectangle-times","times-rectangle","window-close"],"f410","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"],"baht-sign":[320,512,[],"e0ac","M144 0c-17.7 0-32 14.3-32 32V64H37.6C16.8 64 0 80.8 0 101.6V224v41.7V288 406.3c0 23 18.7 41.7 41.7 41.7H112v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c61.9 0 112-50.1 112-112c0-40.1-21.1-75.3-52.7-95.1C280.3 222.6 288 200.2 288 176c0-61.9-50.1-112-112-112V32c0-17.7-14.3-32-32-32zM112 128v96H64V128h48zm64 96V128c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-64 64v96H64V288h48zm64 96V288h32c26.5 0 48 21.5 48 48s-21.5 48-48 48H176z"],"book-open":[576,512,[128214,128366],"f518","M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5V78.6c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C93.5 32 46.3 45.3 18.1 56.1C6.8 60.5 0 71.7 0 83.8V454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5V83.8c0-12.1-6.8-23.3-18.1-27.6C529.7 45.3 482.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11V456c0 11.4 11.7 19.3 22.4 15.5z"],"book-journal-whills":[448,512,["journal-whills"],"f66a","M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zm90.4-234.4l-21.2-21.2c-3 10.1-5.1 20.6-5.1 31.6c0 .2 0 .5 .1 .8s.1 .5 .1 .8L165.2 226c2.5 2.1 3.4 5.8 2.3 8.9c-1.3 3-4.1 5.1-7.5 5.1c-1.9-.1-3.8-.8-5.2-2l-23.6-20.6C142.8 267 186.9 304 240 304s97.3-37 108.9-86.6L325.3 238c-1.4 1.2-3.3 2-5.3 2c-2.2-.1-4.4-1.1-6-2.8c-1.2-1.5-1.9-3.4-2-5.2c.1-2.2 1.1-4.4 2.8-6l37.1-32.5c0-.3 0-.5 .1-.8s.1-.5 .1-.8c0-11-2.1-21.5-5.1-31.6l-21.2 21.2c-3.1 3.1-8.1 3.1-11.3 0s-3.1-8.1 0-11.2l26.4-26.5c-8.2-17-20.5-31.7-35.9-42.6c-2.7-1.9-6.2 1.4-5 4.5c8.5 22.4 3.6 48-13 65.6c-3.2 3.4-3.6 8.9-.9 12.7c9.8 14 12.7 31.9 7.5 48.5c-5.9 19.4-22 34.1-41.9 38.3l-1.4-34.3 12.6 8.6c.6 .4 1.5 .6 2.3 .6c1.5 0 2.7-.8 3.5-2s.6-2.8-.1-4L260 225.4l18-3.6c1.8-.4 3.1-2.1 3.1-4s-1.4-3.5-3.1-3.9l-18-3.7 8.5-14.3c.8-1.2 .9-2.9 .1-4.1s-2-2-3.5-2l-.1 0c-.7 .1-1.5 .3-2.1 .7l-14.1 9.6L244 87.9c-.1-2.2-1.9-3.9-4-3.9s-3.9 1.6-4 3.9l-4.6 110.8-12-8.1c-1.5-1.1-3.6-.9-5 .4s-1.6 3.4-.8 5l8.6 14.3-18 3.7c-1.8 .4-3.1 2-3.1 3.9s1.4 3.6 3.1 4l18 3.8-8.6 14.2c-.2 .6-.5 1.4-.5 2c0 1.1 .5 2.1 1.2 3c.8 .6 1.8 1 2.8 1c.7 0 1.6-.2 2.2-.6l10.4-7.1-1.4 32.8c-19.9-4.1-36-18.9-41.9-38.3c-5.1-16.6-2.2-34.4 7.6-48.5c2.7-3.9 2.3-9.3-.9-12.7c-16.6-17.5-21.6-43.1-13.1-65.5c1.2-3.1-2.3-6.4-5-4.5c-15.3 10.9-27.6 25.6-35.8 42.6l26.4 26.5c3.1 3.1 3.1 8.1 0 11.2s-8.1 3.1-11.2 0z"],handcuffs:[640,512,[],"e4f8","M240 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM192 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32 80c17.7 0 32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C280.3 229.6 320 286.2 320 352c0 88.4-71.6 160-160 160S0 440.4 0 352c0-65.8 39.7-122.4 96.5-146.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32zm0 320a96 96 0 1 0 0-192 96 96 0 1 0 0 192zm192-96c0-25.9-5.1-50.5-14.4-73.1c16.9-32.9 44.8-59.1 78.9-73.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32s32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C600.3 229.6 640 286.2 640 352c0 88.4-71.6 160-160 160c-62 0-115.8-35.3-142.4-86.9c9.3-22.5 14.4-47.2 14.4-73.1zm224 0a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM368 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm80 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"triangle-exclamation":[512,512,[9888,"exclamation-triangle","warning"],"f071","M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],database:[448,512,[],"f1c0","M448 80v48c0 44.2-100.3 80-224 80S0 172.2 0 128V80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6V288c0 44.2-100.3 80-224 80S0 332.2 0 288V186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6V432c0 44.2-100.3 80-224 80S0 476.2 0 432V346.1z"],share:[512,512,["mail-forward"],"f064","M307 34.8c-11.5 5.1-19 16.6-19 29.2v64H176C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96h96v64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z"],"bottle-droplet":[320,512,[],"e4c4","M96 0C82.7 0 72 10.7 72 24s10.7 24 24 24c4.4 0 8 3.6 8 8v64.9c0 12.2-7.2 23.1-17.2 30.1C53.7 174.1 32 212.5 32 256V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V256c0-43.5-21.7-81.9-54.8-105c-10-7-17.2-17.9-17.2-30.1V56c0-4.4 3.6-8 8-8c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0 0 0 0H104l0 0 0 0L96 0zm64 382c-26.5 0-48-20.1-48-45c0-16.8 22.1-48.1 36.3-66.4c6-7.8 17.5-7.8 23.5 0C185.9 288.9 208 320.2 208 337c0 24.9-21.5 45-48 45z"],"mask-face":[640,512,[],"e1d7","M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1H144 128 56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l108 27C233.8 435 275.4 448 320 448s86.2-13 121.1-35.5l108-27C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H512 496h-9.2c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM132.3 346.3l-29.8-7.4C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H96v48c0 45.1 13.4 87.2 36.3 122.3zm405.1-7.4l-29.8 7.4c23-35.2 36.3-77.2 36.3-122.3V176h40c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9zM192 208c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zm16 48H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 80c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z"],"hill-rockslide":[576,512,[],"e508","M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2H293.4c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9V309.4c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9v53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"right-left":[512,512,["exchange-alt"],"f362","M32 96l320 0V32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H160v64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64H480z"],"paper-plane":[512,512,[61913],"f1d8","M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z"],"road-circle-exclamation":[640,512,[],"e565","M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z"],dungeon:[512,512,[],"f6d9","M336.6 156.5c1.3 1.1 2.7 2.2 3.9 3.3c9.3 8.2 23 10.5 33.4 3.6l67.6-45.1c11.4-7.6 14.2-23.2 5.1-33.4C430 66.6 410.9 50.6 389.7 37.6c-11.9-7.3-26.9-1.4-32.1 11.6l-30.5 76.2c-4.5 11.1 .2 23.6 9.5 31.2zM328 36.8c5.1-12.8-1.6-27.4-15-30.5C294.7 2.2 275.6 0 256 0s-38.7 2.2-57 6.4C185.5 9.4 178.8 24 184 36.8l30.3 75.8c4.5 11.3 16.8 17.2 29 16c4.2-.4 8.4-.6 12.7-.6s8.6 .2 12.7 .6c12.1 1.2 24.4-4.7 29-16L328 36.8zM65.5 85c-9.1 10.2-6.3 25.8 5.1 33.4l67.6 45.1c10.3 6.9 24.1 4.6 33.4-3.6c1.3-1.1 2.6-2.3 4-3.3c9.3-7.5 13.9-20.1 9.5-31.2L154.4 49.2c-5.2-12.9-20.3-18.8-32.1-11.6C101.1 50.6 82 66.6 65.5 85zm314 137.1c.9 3.3 1.7 6.6 2.3 10c2.5 13 13 23.9 26.2 23.9h80c13.3 0 24.1-10.8 22.9-24c-2.5-27.2-9.3-53.2-19.7-77.3c-5.5-12.9-21.4-16.6-33.1-8.9l-68.6 45.7c-9.8 6.5-13.2 19.2-10 30.5zM53.9 145.8c-11.6-7.8-27.6-4-33.1 8.9C10.4 178.8 3.6 204.8 1.1 232c-1.2 13.2 9.6 24 22.9 24h80c13.3 0 23.8-10.8 26.2-23.9c.6-3.4 1.4-6.7 2.3-10c3.1-11.4-.2-24-10-30.5L53.9 145.8zM104 288H24c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24zm304 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24H408zM24 416c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H24zm384 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H408zM272 192c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V192zm-64 32c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224zm128 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224z"],"align-right":[448,512,[],"f038","M448 64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"],"money-bill-1-wave":[576,512,["money-bill-wave-alt"],"f53b","M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM128 416H64V352c35.3 0 64 28.7 64 64zM64 224V160h64c0 35.3-28.7 64-64 64zM448 352c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM384 256c0 61.9-43 112-96 112s-96-50.1-96-112s43-112 96-112s96 50.1 96 112zM252 208c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z"],"life-ring":[512,512,[],"f1cd","M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3s-20.2-113.9-54-157.3c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256s20.2 113.9 54 157.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z"],hands:[576,512,["sign-language","signing"],"f2a7","M544 160l-.1 72.6c-.1 52.2-24 101-64 133.1c.1-1.9 .1-3.8 .1-5.7v-8c0-71.8-37-138.6-97.9-176.7l-60.2-37.6c-8.6-5.4-17.9-8.4-27.3-9.4L248.7 48.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8l78 135.1c3.3 5.7 10.7 7.7 16.4 4.4s7.7-10.7 4.4-16.4l-62-107.4c-6.6-11.5-2.7-26.2 8.8-32.8S362 5 368.6 16.5l68 117.8 0 0 0 0 43.3 75L480 160c0-17.7 14.4-32 32-32s32 14.4 32 32zM243.9 88.5L268.5 131c-13.9 4.5-26.4 13.7-34.7 27c-.9 1.4-1.7 2.9-2.5 4.4l-28.9-50c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zm-46.4 63.7l26.8 46.4c.6 6 2.1 11.8 4.3 17.4H224 210.7l0 0H179l-23-39.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zM260.9 175c9.4-15 29.1-19.5 44.1-10.2l60.2 37.6C416.7 234.7 448 291.2 448 352v8c0 83.9-68.1 152-152 152H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h92c6.6 0 12-5.4 12-12s-5.4-12-12-12H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H212c6.6 0 12-5.4 12-12s-5.4-12-12-12H56c-13.3 0-24-10.7-24-24s10.7-24 24-24H212c6.6 0 12-5.4 12-12s-5.4-12-12-12H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H224l0 0 0 0h93.2L271 219.1c-15-9.4-19.5-29.1-10.2-44.1z"],"calendar-day":[448,512,[],"f783","M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z"],"water-ladder":[576,512,["ladder-water","swimming-pool"],"f5c5","M128 127.7C128 74.9 170.9 32 223.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V224H384V127.7C384 74.9 426.9 32 479.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V361c-1.6 1-3.3 2-4.8 3.1c-18 12.4-40.1 20.3-59.2 20.3h0V288H192v96.5c-19 0-41.2-7.9-59.1-20.3c-1.6-1.1-3.2-2.2-4.9-3.1V127.7zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"],"arrows-up-down":[320,512,["arrows-v"],"f07d","M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z"],"face-grimace":[512,512,[128556,"grimace"],"f57f","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm96-112h-8V360l55.3 0c-3.8 22.7-23.6 40-47.3 40zm47.3-56L344 344V304h8c23.8 0 43.5 17.3 47.3 40zM328 344H264V304h64v40zm0 56H264V360h64v40zm-80-96v40l-64 0V304h64zm0 56v40H184V360l64 0zm-80-16H112.7c3.8-22.7 23.6-40 47.3-40h8v40zm0 56h-8c-23.8 0-43.5-17.3-47.3-40H168v40zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],"wheelchair-move":[448,512,["wheelchair-alt"],"e2ce","M320 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM204.5 121.3c-5.4-2.5-11.7-1.9-16.4 1.7l-40.9 30.7c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l40.9-30.7c23.7-17.8 55.3-21 82.1-8.4l90.4 42.5c29.1 13.7 36.8 51.6 15.2 75.5L299.1 224h97.4c30.3 0 53 27.7 47.1 57.4L415.4 422.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L377 288H306.7c8.6 19.6 13.3 41.2 13.3 64c0 88.4-71.6 160-160 160S0 440.4 0 352s71.6-160 160-160c11.1 0 22 1.1 32.4 3.3l54.2-54.2-42.1-19.8zM160 448a96 96 0 1 0 0-192 96 96 0 1 0 0 192z"],"turn-down":[384,512,[10549,"level-down-alt"],"f3be","M350 334.5c3.8 8.8 2 19-4.6 26l-136 144c-4.5 4.8-10.8 7.5-17.4 7.5s-12.9-2.7-17.4-7.5l-136-144c-6.6-7-8.4-17.2-4.6-26s12.5-14.5 22-14.5h88l0-192c0-17.7-14.3-32-32-32H32C14.3 96 0 81.7 0 64V32C0 14.3 14.3 0 32 0l80 0c70.7 0 128 57.3 128 128l0 192h88c9.6 0 18.2 5.7 22 14.5z"],"person-walking-arrow-right":[640,512,[],"e552","M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z"],"square-envelope":[448,512,["envelope-square"],"f199","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM218 271.7L64.2 172.4C66 156.4 79.5 144 96 144H352c16.5 0 30 12.4 31.8 28.4L230 271.7c-1.8 1.2-3.9 1.8-6 1.8s-4.2-.6-6-1.8zm29.4 26.9L384 210.4V336c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V210.4l136.6 88.2c7 4.5 15.1 6.9 23.4 6.9s16.4-2.4 23.4-6.9z"],dice:[640,512,[127922],"f522","M274.9 34.3c-28.1-28.1-73.7-28.1-101.8 0L34.3 173.1c-28.1 28.1-28.1 73.7 0 101.8L173.1 413.7c28.1 28.1 73.7 28.1 101.8 0L413.7 274.9c28.1-28.1 28.1-73.7 0-101.8L274.9 34.3zM200 224a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM96 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 376a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM352 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 120a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm96 328c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H461.7c11.6 36 3.1 77-25.4 105.5L320 413.8V448zM480 328a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],"bowling-ball":[512,512,[],"f436","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM240 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM208 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-64-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],brain:[512,512,[129504],"f5dc","M184 0c30.9 0 56 25.1 56 56V456c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56V56c0-30.9 25.1-56 56-56z"],bandage:[640,512,[129657,"band-aid"],"f462","M480 416h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H480V416zM448 96H192V416H448V96zM64 96C28.7 96 0 124.7 0 160V352c0 35.3 28.7 64 64 64h96V96H64zM248 208a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM248 304a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],"calendar-minus":[448,512,[],"f272","M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM312 376c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-13.3 0-24 10.7-24 24s10.7 24 24 24H312z"],"circle-xmark":[512,512,[61532,"times-circle","xmark-circle"],"f057","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"],gifts:[640,512,[],"f79c","M200.6 32C205 19.5 198.5 5.8 186 1.4S159.8 3.5 155.4 16L144.7 46.2l-9.9-29.8C130.6 3.8 117-3 104.4 1.2S85 19 89.2 31.6l8.3 25-27.4-20c-10.7-7.8-25.7-5.4-33.5 5.3s-5.4 25.7 5.3 33.5L70.2 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H200.6c-5.4-9.4-8.6-20.3-8.6-32V256c0-29.9 20.5-55 48.2-62c1.8-31 17.1-58.2 40.1-76.1C271.7 104.7 256.9 96 240 96H217.8l28.3-20.6c10.7-7.8 13.1-22.8 5.3-33.5s-22.8-13.1-33.5-5.3L192.5 55.1 200.6 32zM363.5 185.5L393.1 224H344c-13.3 0-24-10.7-24-24c0-13.1 10.8-24 24.2-24c7.6 0 14.7 3.5 19.3 9.5zM272 200c0 8.4 1.4 16.5 4.1 24H272c-26.5 0-48 21.5-48 48v80H416V256h32v96H640V272c0-26.5-21.5-48-48-48h-4.1c2.7-7.5 4.1-15.6 4.1-24c0-39.9-32.5-72-72.2-72c-22.4 0-43.6 10.4-57.3 28.2L432 195.8l-30.5-39.6c-13.7-17.8-35-28.2-57.3-28.2c-39.7 0-72.2 32.1-72.2 72zM224 464c0 26.5 21.5 48 48 48H416V384H224v80zm224 48H592c26.5 0 48-21.5 48-48V384H448V512zm96-312c0 13.3-10.7 24-24 24H470.9l29.6-38.5c4.6-5.9 11.7-9.5 19.3-9.5c13.4 0 24.2 10.9 24.2 24z"],hotel:[512,512,[127976],"f594","M0 32C0 14.3 14.3 0 32 0H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64C14.3 64 0 49.7 0 32zm96 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zM240 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H240zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zM112 192c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H112zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H368zM328 384c13.3 0 24.3-10.9 21-23.8c-10.6-41.5-48.2-72.2-93-72.2s-82.5 30.7-93 72.2c-3.3 12.8 7.8 23.8 21 23.8H328z"],"earth-asia":[512,512,[127759,"globe-asia"],"f57e","M51.7 295.1l31.7 6.3c7.9 1.6 16-.9 21.7-6.6l15.4-15.4c11.6-11.6 31.1-8.4 38.4 6.2l9.3 18.5c4.8 9.6 14.6 15.7 25.4 15.7c15.2 0 26.1-14.6 21.7-29.2l-6-19.9c-4.6-15.4 6.9-30.9 23-30.9h2.3c13.4 0 25.9-6.7 33.3-17.8l10.7-16.1c5.6-8.5 5.3-19.6-.8-27.7l-16.1-21.5c-10.3-13.7-3.3-33.5 13.4-37.7l17-4.3c7.5-1.9 13.6-7.2 16.5-14.4l16.4-40.9C303.4 52.1 280.2 48 256 48C141.1 48 48 141.1 48 256c0 13.4 1.3 26.5 3.7 39.1zm407.7 4.6c-3-.3-6-.1-9 .8l-15.8 4.4c-6.7 1.9-13.8-.9-17.5-6.7l-2-3.1c-6-9.4-16.4-15.1-27.6-15.1s-21.6 5.7-27.6 15.1l-6.1 9.5c-1.4 2.2-3.4 4.1-5.7 5.3L312 330.1c-18.1 10.1-25.5 32.4-17 51.3l5.5 12.4c8.6 19.2 30.7 28.5 50.5 21.1l2.6-1c10-3.7 21.3-2.2 29.9 4.1l1.5 1.1c37.2-29.5 64.1-71.4 74.4-119.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm144.5 92.1c-2.1 8.6 3.1 17.3 11.6 19.4l32 8c8.6 2.1 17.3-3.1 19.4-11.6s-3.1-17.3-11.6-19.4l-32-8c-8.6-2.1-17.3 3.1-19.4 11.6zm92-20c-2.1 8.6 3.1 17.3 11.6 19.4s17.3-3.1 19.4-11.6l8-32c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-8 32zM343.2 113.7c-7.9-4-17.5-.7-21.5 7.2l-16 32c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l16-32c4-7.9 .7-17.5-7.2-21.5z"],"id-card-clip":[576,512,["id-card-alt"],"f47f","M256 0h64c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM64 64H192v48c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64zM176 437.3c0 5.9 4.8 10.7 10.7 10.7H389.3c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3H229.3c-29.5 0-53.3 23.9-53.3 53.3zM288 352a64 64 0 1 0 0-128 64 64 0 1 0 0 128z"],"magnifying-glass-plus":[512,512,["search-plus"],"f00e","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z"],"thumbs-up":[512,512,[128077,61575],"f164","M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z"],"user-clock":[640,512,[],"f4fd","M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c20.6 0 40.4 3.5 58.8 9.9C323 331 320 349.1 320 368c0 59.5 29.5 112.1 74.8 144H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-80c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H512V304c0-8.8-7.2-16-16-16z"],"hand-dots":[512,512,["allergies"],"f461","M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32zM240 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80 16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48-16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-16 80a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM240 432a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-48-48a16 16 0 1 1 0 32 16 16 0 1 1 0-32z"],"file-invoice":[384,512,[],"f570","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 96H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm0 32v64H288V256H96zM240 416h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],"window-minimize":[512,512,[128469],"f2d1","M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z"],"mug-saucer":[640,512,["coffee"],"f0f4","M96 64c0-17.7 14.3-32 32-32H448h64c70.7 0 128 57.3 128 128s-57.3 128-128 128H480c0 53-43 96-96 96H192c-53 0-96-43-96-96V64zM480 224h32c35.3 0 64-28.7 64-64s-28.7-64-64-64H480V224zM32 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z"],brush:[384,512,[],"f55d","M162.4 6c-1.5-3.6-5-6-8.9-6h-19c-3.9 0-7.5 2.4-8.9 6L104.9 57.7c-3.2 8-14.6 8-17.8 0L66.4 6c-1.5-3.6-5-6-8.9-6H48C21.5 0 0 21.5 0 48V224v22.4V256H9.6 374.4 384v-9.6V224 48c0-26.5-21.5-48-48-48H230.5c-3.9 0-7.5 2.4-8.9 6L200.9 57.7c-3.2 8-14.6 8-17.8 0L162.4 6zM0 288v32c0 35.3 28.7 64 64 64h64v64c0 35.3 28.7 64 64 64s64-28.7 64-64V384h64c35.3 0 64-28.7 64-64V288H0zM192 432a16 16 0 1 1 0 32 16 16 0 1 1 0-32z"],mask:[576,512,[],"f6fa","M288 64C64 64 0 160 0 272S80 448 176 448h8.4c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4H400c96 0 176-64 176-176s-64-208-288-208zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm320-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"],"magnifying-glass-minus":[512,512,["search-minus"],"f010","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H136z"],"ruler-vertical":[256,512,[],"f548","M0 48C0 21.5 21.5 0 48 0H208c26.5 0 48 21.5 48 48V96H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z"],"user-large":[512,512,["user-alt"],"f406","M256 288A144 144 0 1 0 256 0a144 144 0 1 0 0 288zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7H481.3c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320H161.3z"],"train-tram":[448,512,[128650],"e5b4","M86.8 48c-12.2 0-23.6 5.5-31.2 15L42.7 79C34.5 89.3 19.4 91 9 82.7S-3 59.4 5.3 49L18 33C34.7 12.2 60 0 86.8 0H361.2c26.7 0 52 12.2 68.7 33l12.8 16c8.3 10.4 6.6 25.5-3.8 33.7s-25.5 6.6-33.7-3.7L392.5 63c-7.6-9.5-19.1-15-31.2-15H248V96h40c53 0 96 43 96 96V352c0 30.6-14.3 57.8-36.6 75.4l65.5 65.5c7.1 7.1 2.1 19.1-7.9 19.1H365.3c-8.5 0-16.6-3.4-22.6-9.4L288 448H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H43c-10 0-15-12.1-7.9-19.1l65.5-65.5C78.3 409.8 64 382.6 64 352V192c0-53 43-96 96-96h40V48H86.8zM160 160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H160zm32 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"],"user-nurse":[448,512,[],"f82f","M96 128V70.2c0-13.3 8.3-25.3 20.8-30l96-36c7.2-2.7 15.2-2.7 22.5 0l96 36c12.5 4.7 20.8 16.6 20.8 30V128h-.3c.2 2.6 .3 5.3 .3 8v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V136c0-2.7 .1-5.4 .3-8H96zm48 48c0 44.2 35.8 80 80 80s80-35.8 80-80V160H144v16zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6zM208 48V64H192c-4.4 0-8 3.6-8 8V88c0 4.4 3.6 8 8 8h16v16c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V96h16c4.4 0 8-3.6 8-8V72c0-4.4-3.6-8-8-8H240V48c0-4.4-3.6-8-8-8H216c-4.4 0-8 3.6-8 8z"],syringe:[512,512,[128137],"f48e","M441 7l32 32 32 32c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15L417.9 128l55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72L295 73c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l55 55L422.1 56 407 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM210.3 155.7l61.1-61.1c.3 .3 .6 .7 1 1l16 16 56 56 56 56 16 16c.3 .3 .6 .6 1 1l-191 191c-10.5 10.5-24.7 16.4-39.6 16.4H97.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V325.3c0-14.9 5.9-29.1 16.4-39.6l43.3-43.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57z"],"cloud-sun":[640,512,[9925],"f6c4","M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 84.7 14.1c5.4 .9 10 4.5 12.1 9.6s1.5 10.9-1.6 15.4l-38.5 55c-2.2-.1-4.4-.2-6.7-.2c-23.3 0-45.1 6.2-64 17.1l0-1.1c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17c-4.5 3.1-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM639.9 431.9c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z"],"stopwatch-20":[448,512,[],"e06f","M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H176zM288 204c28.7 0 52 23.3 52 52v96c0 28.7-23.3 52-52 52s-52-23.3-52-52V256c0-28.7 23.3-52 52-52zm-12 52v96c0 6.6 5.4 12 12 12s12-5.4 12-12V256c0-6.6-5.4-12-12-12s-12 5.4-12 12zM159.5 244c-5.4 0-10.2 3.5-11.9 8.6l-.6 1.7c-3.5 10.5-14.8 16.1-25.3 12.6s-16.1-14.8-12.6-25.3l.6-1.7c7.2-21.5 27.2-35.9 49.8-35.9c29 0 52.5 23.5 52.5 52.5v2.2c0 13.4-4.9 26.4-13.8 36.4l-39 43.9c-6.2 7-10 15.7-10.9 24.9H192c11 0 20 9 20 20s-9 20-20 20H128c-11 0-20-9-20-20V368.3c0-20.6 7.5-40.4 21.2-55.8l39-43.9c2.4-2.7 3.7-6.2 3.7-9.8v-2.2c0-6.9-5.6-12.5-12.5-12.5z"],"square-full":[512,512,[128997,128998,128999,129e3,129001,129002,129003,11035,11036],"f45c","M0 0H512V512H0V0z"],magnet:[448,512,[129522],"f076","M0 160v96C0 379.7 100.3 480 224 480s224-100.3 224-224V160H320v96c0 53-43 96-96 96s-96-43-96-96V160H0zm0-32H128V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64zm320 0H448V64c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32v64z"],jar:[320,512,[],"e516","M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm96 64c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H96z"],"note-sticky":[448,512,[62026,"sticky-note"],"f249","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H288V368c0-26.5 21.5-48 48-48H448V96c0-35.3-28.7-64-64-64H64zM448 352H402.7 336c-8.8 0-16 7.2-16 16v66.7V480l32-32 64-64 32-32z"],"bug-slash":[640,512,[],"e490","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L477.4 348.9c1.7-9.4 2.6-19 2.6-28.9h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H479.7c-1.1-14.1-5-27.5-11.1-39.5c.7-.6 1.4-1.2 2.1-1.9l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-.7 .7-1.3 1.4-1.9 2.1C409.2 164.1 393.1 160 376 160H264c-8.3 0-16.3 1-24 2.8L38.8 5.1zm392 430.3L336 360.7V479.2c36.6-3.6 69.7-19.6 94.8-43.8zM166.7 227.3c-3.4 9-5.6 18.7-6.4 28.7H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c0 24.6 5.5 47.8 15.4 68.6c-2.2 1.3-4.2 2.9-6 4.8l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l63.1-63.1c24.5 21.8 55.8 36.2 90.3 39.6V335.5L166.7 227.3zM320 0c-53 0-96 43-96 96v3.6c0 15.7 12.7 28.4 28.4 28.4H387.6c15.7 0 28.4-12.7 28.4-28.4V96c0-53-43-96-96-96z"],"arrow-up-from-water-pump":[576,512,[],"e4b6","M112 0C85.5 0 64 21.5 64 48V256H48c-26.5 0-48 21.5-48 48v96c0 8 2 15.6 5.4 22.2c3.8-1.7 7.8-3.1 12-4.1c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c4.2 1 8.2 2.4 12 4.1C574 415.6 576 408 576 400V304c0-26.5-21.5-48-48-48H480l0-146.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 109.3 416 256H288V48c0-26.5-21.5-48-48-48H112zM306.5 421.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z"],bone:[576,512,[129460],"f5d7","M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2H384c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336H192c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z"],"user-injured":[448,512,[],"f728","M240 80H342.7c-7.9-19.5-20.4-36.5-36.2-49.9L240 80zm37.7-68.2C261.3 4.2 243.2 0 224 0c-53.7 0-99.7 33.1-118.7 80h81.4l91-68.2zM224 256c70.7 0 128-57.3 128-128c0-5.4-.3-10.8-1-16H97c-.7 5.2-1 10.6-1 16c0 70.7 57.3 128 128 128zM124 312.4c-9.7 3.1-19.1 7-28 11.7V512H243.7L181.5 408.2 124 312.4zm33-7.2L204.3 384H272c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48h82.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3c-7.2 0-14.3 .4-21.3 1.3zM0 482.3C0 498.7 13.3 512 29.7 512H64V345.4C24.9 378.1 0 427.3 0 482.3zM320 464c0-26.5-21.5-48-48-48H223.5l57.1 95.2C303 507.2 320 487.6 320 464z"],"face-sad-tear":[512,512,[128546,"sad-tear"],"f5b4","M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM367.6 208a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],plane:[576,512,[],"f072","M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z"],"tent-arrows-down":[576,512,[],"e581","M209.8 111.9c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L136 24c0-13.3-10.7-24-24-24S88 10.7 88 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zm352 0c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V146.1l-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H240h16c17.7 0 32-14.3 32-32V361.9c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7H464h16c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z"],exclamation:[64,512,[10069,10071,61738],"21","M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM32 480a40 40 0 1 0 0-80 40 40 0 1 0 0 80z"],"arrows-spin":[512,512,[],"e4bb","M256 96c38.4 0 73.7 13.5 101.3 36.1l-32.6 32.6c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H448c8.8 0 16-7.2 16-16V64c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-34 34C363.4 52.6 312.1 32 256 32c-10.9 0-21.5 .8-32 2.3V99.2c10.3-2.1 21-3.2 32-3.2zM132.1 154.7l32.6 32.6c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8V64c0-8.8-7.2-16-16-16H64c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l34 34C52.6 148.6 32 199.9 32 256c0 10.9 .8 21.5 2.3 32H99.2c-2.1-10.3-3.2-21-3.2-32c0-38.4 13.5-73.7 36.1-101.3zM477.7 224H412.8c2.1 10.3 3.2 21 3.2 32c0 38.4-13.5 73.7-36.1 101.3l-32.6-32.6c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8V448c0 8.8 7.2 16 16 16H448c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-34-34C459.4 363.4 480 312.1 480 256c0-10.9-.8-21.5-2.3-32zM256 416c-38.4 0-73.7-13.5-101.3-36.1l32.6-32.6c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9H64c-8.8 0-16 7.2-16 16l0 112c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l34-34C148.6 459.4 199.9 480 256 480c10.9 0 21.5-.8 32-2.3V412.8c-10.3 2.1-21 3.2-32 3.2z"],print:[512,512,[128424,128438,9113],"f02f","M128 0C92.7 0 64 28.7 64 64v96h64V64H354.7L384 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0H128zM384 352v32 64H128V384 368 352H384zm64 32h32c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v96c0 17.7 14.3 32 32 32H64v64c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V384zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],"turkish-lira-sign":[384,512,["try","turkish-lira"],"e2bb","M96 32c17.7 0 32 14.3 32 32V99.3L247.2 65.2c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 165.9v29.4l119.2-34.1c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 261.9V416h63.8c68.2 0 124.4-53.5 127.8-121.6l.4-8c.9-17.7 15.9-31.2 33.6-30.4s31.2 15.9 30.4 33.6l-.4 8C378.5 399.8 294.1 480 191.8 480H96c-17.7 0-32-14.3-32-32V280.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 213.6V184.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 117.6V64c0-17.7 14.3-32 32-32z"],"dollar-sign":[320,512,[128178,61781,"dollar","usd"],"24","M160 0c17.7 0 32 14.3 32 32V67.7c1.6 .2 3.1 .4 4.7 .7c.4 .1 .7 .1 1.1 .2l48 8.8c17.4 3.2 28.9 19.9 25.7 37.2s-19.9 28.9-37.2 25.7l-47.5-8.7c-31.3-4.6-58.9-1.5-78.3 6.2s-27.2 18.3-29 28.1c-2 10.7-.5 16.7 1.2 20.4c1.8 3.9 5.5 8.3 12.8 13.2c16.3 10.7 41.3 17.7 73.7 26.3l2.9 .8c28.6 7.6 63.6 16.8 89.6 33.8c14.2 9.3 27.6 21.9 35.9 39.5c8.5 17.9 10.3 37.9 6.4 59.2c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.1c-.4-.1-.9-.1-1.3-.2l-.2 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.1-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.5 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.6 .4-16.7-1.3-20.4c-1.9-4-5.6-8.4-13-13.3c-16.4-10.7-41.5-17.7-74-26.3l-2.8-.7 0 0C119.4 279.3 84.4 270 58.4 253c-14.2-9.3-27.5-22-35.8-39.6c-8.4-17.9-10.1-37.9-6.1-59.2C23.7 116 52.3 91.2 84.8 78.3c13.3-5.3 27.9-8.9 43.2-11V32c0-17.7 14.3-32 32-32z"],x:[384,512,[120],"58","M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z"],"magnifying-glass-dollar":[512,512,["search-dollar"],"f688","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM228 104c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V312c0 11 9 20 20 20s20-9 20-20V298.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V104z"],"users-gear":[640,512,["users-cog"],"f509","M144 160A80 80 0 1 0 144 0a80 80 0 1 0 0 160zm368 0A80 80 0 1 0 512 0a80 80 0 1 0 0 160zM0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7H106.7C47.8 192 0 239.8 0 298.7zM320 320c24 0 45.9-8.8 62.7-23.3c2.5-3.7 5.2-7.3 8-10.7c2.7-3.3 5.7-6.1 9-8.3C410 262.3 416 243.9 416 224c0-53-43-96-96-96s-96 43-96 96s43 96 96 96zm65.4 60.2c-10.3-5.9-18.1-16.2-20.8-28.2H261.3C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H455.2c-2.1-5.2-3.2-10.9-3.2-16.4v-3c-1.3-.7-2.7-1.5-4-2.3l-2.6 1.5c-16.8 9.7-40.5 8-54.7-9.7c-4.5-5.6-8.6-11.5-12.4-17.6l-.1-.2-.1-.2-2.4-4.1-.1-.2-.1-.2c-3.4-6.2-6.4-12.6-9-19.3c-8.2-21.2 2.2-42.6 19-52.3l2.7-1.5c0-.8 0-1.5 0-2.3s0-1.5 0-2.3l-2.7-1.5zM533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 17.4-3.5 33.9-9.7 49c2.5 .9 4.9 2 7.1 3.3l2.6 1.5c1.3-.8 2.6-1.6 4-2.3v-3c0-19.4 13.3-39.1 35.8-42.6c7.9-1.2 16-1.9 24.2-1.9s16.3 .6 24.2 1.9c22.5 3.5 35.8 23.2 35.8 42.6v3c1.3 .7 2.7 1.5 4 2.3l2.6-1.5c16.8-9.7 40.5-8 54.7 9.7c2.3 2.8 4.5 5.8 6.6 8.7c-2.1-57.1-49-102.7-106.6-102.7zm91.3 163.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3l-2.9 1.7c-9.2 5.3-20.4 4-29.6-1.3s-16.1-14.5-16.1-25.1v-3.4c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9v3.4c0 10.6-6.9 19.8-16.1 25.1s-20.4 6.6-29.6 1.3l-2.9-1.7c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 17.9l2.9 1.7c9.2 5.3 13.7 15.8 13.7 26.4s-4.5 21.1-13.7 26.4l-3 1.7c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3l2.9-1.7c9.2-5.3 20.4-4 29.6 1.3s16.1 14.5 16.1 25.1v3.4c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9v-3.4c0-10.6 6.9-19.8 16.1-25.1s20.4-6.6 29.6-1.3l2.9 1.7c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-3-1.7c-9.2-5.3-13.7-15.8-13.7-26.4s4.5-21.1 13.7-26.4l3-1.7zM472 384a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z"],"person-military-pointing":[576,512,[],"e54a","M246.9 14.1C234 15.2 224 26 224 39c0 13.8 11.2 25 25 25H400c8.8 0 16-7.2 16-16V17.4C416 8 408 .7 398.7 1.4L246.9 14.1zM240 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H241.6c-1 5.2-1.6 10.5-1.6 16zM72 224c-22.1 0-40 17.9-40 40s17.9 40 40 40H224v89.4L386.8 230.5c-13.3-4.3-27.3-6.5-41.6-6.5H240 72zm345.7 20.9L246.6 416H416V369.7l53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L462.3 290.8c-11.2-18.9-26.6-34.5-44.6-45.9zM224 448v32c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V448H224z"],"building-columns":[512,512,["bank","institution","museum","university"],"f19c","M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160v8c0 13.3 10.7 24 24 24H456c13.3 0 24-10.7 24-24v-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8-3.4-17.2-3.4-25.2 0zM128 224H64V420.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512H480c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1V224H384V416H344V224H280V416H232V224H168V416H128V224zM256 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"],umbrella:[576,512,[],"f0e9","M288 0c17.7 0 32 14.3 32 32V49.7C451.8 63.4 557.7 161 573.9 285.9c2 15.6-17.3 24.4-27.8 12.7C532.1 283 504.8 272 480 272c-38.7 0-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C359 299.5 326.7 272 288 272s-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C167 299.5 134.7 272 96 272c-24.8 0-52.1 11-66.1 26.7C19.4 310.4 .1 301.5 2.1 285.9C18.3 161 124.2 63.4 256 49.7V32c0-17.7 14.3-32 32-32zm0 304c12.3 0 23.5 4.6 32 12.2V430.6c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4V316.2c8.5-7.6 19.7-12.2 32-12.2z"],trowel:[512,512,[],"e589","M343.9 213.4L245.3 312l65.4 65.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9S-2.1 481.8 1.5 470.5l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L200 266.7l98.6-98.6c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z"],d:[384,512,[100],"44","M0 96C0 60.7 28.7 32 64 32h96c123.7 0 224 100.3 224 224s-100.3 224-224 224H64c-35.3 0-64-28.7-64-64V96zm160 0H64V416h96c88.4 0 160-71.6 160-160s-71.6-160-160-160z"],stapler:[640,512,[],"e5af","M640 299.3V304 432c0 26.5-21.5 48-48 48H512 448 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H448V368H96c-17.7 0-32-14.3-32-32V219.4L33.8 214C14.2 210.5 0 193.5 0 173.7c0-8.9 2.9-17.5 8.2-24.6l35.6-47.5C76.7 57.8 128.2 32 182.9 32c27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304V288L128 230.9V304H448z"],"masks-theater":[640,512,[127917,"theater-masks"],"f630","M74.6 373.2c41.7 36.1 108 82.5 166.1 73.7c6.1-.9 12.1-2.5 18-4.5c-9.2-12.3-17.3-24.4-24.2-35.4c-21.9-35-28.8-75.2-25.9-113.6c-20.6 4.1-39.2 13-54.7 25.4c-6.5 5.2-16.3 1.3-14.8-7c6.4-33.5 33-60.9 68.2-66.3c2.6-.4 5.3-.7 7.9-.8l19.4-131.3c2-13.8 8-32.7 25-45.9C278.2 53.2 310.5 37 363.2 32.2c-.8-.7-1.6-1.4-2.4-2.1C340.6 14.5 288.4-11.5 175.7 5.6S20.5 63 5.7 83.9C0 91.9-.8 102 .6 111.8L24.8 276.1c5.5 37.3 21.5 72.6 49.8 97.2zm87.7-219.6c4.4-3.1 10.8-2 11.8 3.3c.1 .5 .2 1.1 .3 1.6c3.2 21.8-11.6 42-33.1 45.3s-41.5-11.8-44.7-33.5c-.1-.5-.1-1.1-.2-1.6c-.6-5.4 5.2-8.4 10.3-6.7c9 3 18.8 3.9 28.7 2.4s19.1-5.3 26.8-10.8zM261.6 390c29.4 46.9 79.5 110.9 137.6 119.7s124.5-37.5 166.1-73.7c28.3-24.5 44.3-59.8 49.8-97.2l24.2-164.3c1.4-9.8 .6-19.9-5.1-27.9c-14.8-20.9-57.3-61.2-170-78.3S299.4 77.2 279.2 92.8c-7.8 6-11.5 15.4-12.9 25.2L242.1 282.3c-5.5 37.3-.4 75.8 19.6 107.7zM404.5 235.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6c-1 5.3-7.4 6.4-11.8 3.3zm136.2 15.5c-1 5.3-7.4 6.4-11.8 3.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6zM530 350.2c-19.6 44.7-66.8 72.5-116.8 64.9s-87.1-48.2-93-96.7c-1-8.3 8.9-12.1 15.2-6.7c23.9 20.8 53.6 35.3 87 40.3s66.1 .1 94.9-12.8c7.6-3.4 16 3.2 12.6 10.9z"],"kip-sign":[384,512,[],"e1c4","M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4V64c0-17.7-14.3-32-32-32S64 46.3 64 64V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V325.6L299.2 472.3c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L182.5 288H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H182.5L340.8 88.3z"],"hand-point-left":[512,512,[],"f0a5","M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0 0-64L32 96zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm-64-64c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32c0 13.2-4 25.4-10.8 35.6c24.9 8.7 42.8 32.5 42.8 60.4c0 11.7-3.1 22.6-8.6 32l8.6 0c88.4 0 160-71.6 160-160l0-61.7c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64l0 88c0 22.1 17.9 40 40 40s40-17.9 40-40l0-56c0-8.8 7.2-16 16-16s16 7.2 16 16l0 56c0 39.8-32.2 72-72 72z"],"handshake-simple":[640,512,[129309,"handshake-alt"],"f4c6","M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48H48c-26.5 0-48 21.5-48 48V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z"],"jet-fighter":[640,512,["fighter-jet"],"f0fb","M160 24c0-13.3 10.7-24 24-24H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H280L384 192H500.4c7.7 0 15.3 1.4 22.5 4.1L625 234.4c9 3.4 15 12 15 21.6s-6 18.2-15 21.6L522.9 315.9c-7.2 2.7-14.8 4.1-22.5 4.1H384L280 464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V320H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H82.7c8.5 0 16.6 3.4 22.6 9.4L160 192h32V48h-8c-13.3 0-24-10.7-24-24zM80 240c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z"],"square-share-nodes":[448,512,["share-alt-square"],"f1e1","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM384 160c0 35.3-28.7 64-64 64c-15.4 0-29.5-5.4-40.6-14.5L194.1 256l85.3 46.5c11-9.1 25.2-14.5 40.6-14.5c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L174.5 300c-11.7 12.3-28.2 20-46.5 20c-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3c0-35.3 28.7-64 64-64s64 28.7 64 64z"],barcode:[512,512,[],"f02a","M24 32C10.7 32 0 42.7 0 56V456c0 13.3 10.7 24 24 24H40c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H24zm88 0c-8.8 0-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16zm72 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H184zm96 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H280zM448 56V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H472c-13.3 0-24 10.7-24 24zm-64-8V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16s-16 7.2-16 16z"],"plus-minus":[384,512,[],"e43c","M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V144H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H160V320c0 17.7 14.3 32 32 32s32-14.3 32-32V208H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V32zM0 480c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z"],video:[576,512,["video-camera"],"f03d","M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2V384c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V320 192 174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z"],"graduation-cap":[640,512,[127891,"mortar-board"],"f19d","M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z"],"hand-holding-medical":[576,512,[],"e05c","M224 24V80H168c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h56v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176h56c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H320V24c0-13.3-10.7-24-24-24H248c-13.3 0-24 10.7-24 24zM559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2l.9 0 0 0c-.3 0-.6 0-.9 0z"],"person-circle-check":[576,512,[],"e53e","M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z"],"turn-up":[384,512,[10548,"level-up-alt"],"f3bf","M350 177.5c3.8-8.8 2-19-4.6-26l-136-144C204.9 2.7 198.6 0 192 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26s12.5 14.5 22 14.5h88l0 192c0 17.7-14.3 32-32 32H32c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32l80 0c70.7 0 128-57.3 128-128l0-192h88c9.6 0 18.2-5.7 22-14.5z"]};!function(c){try{for(var l=arguments.length,s=new Array(1<l?l-1:0),a=1;a<l;a++)s[a-1]=arguments[a];c.apply(void 0,s)}catch(c){if(!M)throw c}}((function(){d("fas",p),d("fa-solid",p)}))}(),function(){"use strict";function c(c,l){var s,a=Object.keys(c);return Object.getOwnPropertySymbols&&(s=Object.getOwnPropertySymbols(c),l&&(s=s.filter((function(l){return Object.getOwnPropertyDescriptor(c,l).enumerable}))),a.push.apply(a,s)),a}function l(l){for(var s=1;s<arguments.length;s++){var z=null!=arguments[s]?arguments[s]:{};s%2?c(Object(z),!0).forEach((function(c){a(l,c,z[c])})):Object.getOwnPropertyDescriptors?Object.defineProperties(l,Object.getOwnPropertyDescriptors(z)):c(Object(z)).forEach((function(c){Object.defineProperty(l,c,Object.getOwnPropertyDescriptor(z,c))}))}return l}function s(c){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(c){return typeof c}:function(c){return c&&"function"==typeof Symbol&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c})(c)}function a(c,l,s){return l in c?Object.defineProperty(c,l,{value:s,enumerable:!0,configurable:!0,writable:!0}):c[l]=s,c}function z(c,l){return function(c){if(Array.isArray(c))return c}(c)||function(c,l){var s=null==c?null:"undefined"!=typeof Symbol&&c[Symbol.iterator]||c["@@iterator"];if(null!=s){var a,z,e=[],H=!0,t=!1;try{for(s=s.call(c);!(H=(a=s.next()).done)&&(e.push(a.value),!l||e.length!==l);H=!0);}catch(c){t=!0,z=c}finally{try{H||null==s.return||s.return()}finally{if(t)throw z}}return e}}(c,l)||H(c,l)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(c){return function(c){if(Array.isArray(c))return t(c)}(c)||function(c){if("undefined"!=typeof Symbol&&null!=c[Symbol.iterator]||null!=c["@@iterator"])return Array.from(c)}(c)||H(c)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(c,l){if(c){if("string"==typeof c)return t(c,l);var s=Object.prototype.toString.call(c).slice(8,-1);return"Map"===(s="Object"===s&&c.constructor?c.constructor.name:s)||"Set"===s?Array.from(c):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?t(c,l):void 0}}function t(c,l){(null==l||l>c.length)&&(l=c.length);for(var s=0,a=new Array(l);s<l;s++)a[s]=c[s];return a}function V(){}var r={},M={},h=null,n={mark:V,measure:V};try{"undefined"!=typeof window&&(r=window),"undefined"!=typeof document&&(M=document),"undefined"!=typeof MutationObserver&&(h=MutationObserver),"undefined"!=typeof performance&&(n=performance)}catch(V){}var i=void 0===(C=(r.navigator||{}).userAgent)?"":C,m=r,o=M,f=h,C=n,v=!!m.document,L=!!o.documentElement&&!!o.head&&"function"==typeof o.addEventListener&&"function"==typeof o.createElement,u=~i.indexOf("MSIE")||~i.indexOf("Trident/"),d=(r="___FONT_AWESOME___","svg-inline--fa"),p="data-fa-i2svg",b="data-fa-pseudo-element",g="data-fa-pseudo-element-pending",w="data-prefix",k="data-icon",y="fontawesome-i2svg",S="async",A=["HTML","HEAD","STYLE","SCRIPT"],x=function(){try{return!0}catch(c){return!1}}(),q="classic",Z="sharp",O=[q,Z];function j(c){return new Proxy(c,{get:function(c,l){return l in c?c[l]:c[q]}})}var P=j((a(M={},q,{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit",fakd:"kit","fa-kit":"kit","fa-kit-duotone":"kit"}),a(M,Z,{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"}),M)),N=j((a(h={},q,{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"}),a(h,Z,{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"}),h)),E=j((a(n={},q,{fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"}),a(n,Z,{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"}),n)),I=j((a(i={},q,{"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"}),a(i,Z,{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"}),i)),T=/fa(s|r|l|t|d|b|k|ss|sr|sl|st)?[\-\ ]/,D="fa-layers-text",Y=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i,R=j((a(M={},q,{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"}),a(M,Z,{900:"fass",400:"fasr",300:"fasl",100:"fast"}),M)),_=(n=(h=[1,2,3,4,5,6,7,8,9,10]).concat([11,12,13,14,15,16,17,18,19,20]),["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"]),F={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"};i=new Set,Object.keys(N[q]).map(i.add.bind(i)),Object.keys(N[Z]).map(i.add.bind(i));var W=[].concat(O,e(i),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",F.GROUP,F.SWAP_OPACITY,F.PRIMARY,F.SECONDARY]).concat(h.map((function(c){return"".concat(c,"x")}))).concat(n.map((function(c){return"w-".concat(c)}))),U=m.FontAwesomeConfig||{};o&&"function"==typeof o.querySelector&&[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach((function(c){c=(l=z(c,2))[0];var l=l[1];c=""===(c=function(c){var l=o.querySelector("script["+c+"]");if(l)return l.getAttribute(c)}(c))||"false"!==c&&("true"===c||c),null!=c&&(U[l]=c)})),M={styleDefault:"solid",familyDefault:"classic",cssPrefix:"fa",replacementClass:d,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},U.familyPrefix&&(U.cssPrefix=U.familyPrefix);var X=l(l({},M),U);X.autoReplaceSvg||(X.observeMutations=!1);var B={};Object.keys(M).forEach((function(c){Object.defineProperty(B,c,{enumerable:!0,set:function(l){X[c]=l,G.forEach((function(c){return c(B)}))},get:function(){return X[c]}})})),Object.defineProperty(B,"familyPrefix",{enumerable:!0,set:function(c){X.cssPrefix=c,G.forEach((function(c){return c(B)}))},get:function(){return X.cssPrefix}}),m.FontAwesomeConfig=B;var G=[],Q=16,K={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1},$="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function J(){for(var c=12,l="";0<c--;)l+=$[62*Math.random()|0];return l}function cc(c){for(var l=[],s=(c||[]).length>>>0;s--;)l[s]=c[s];return l}function lc(c){return c.classList?cc(c.classList):(c.getAttribute("class")||"").split(" ").filter((function(c){return c}))}function sc(c){return"".concat(c).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function ac(c){return Object.keys(c||{}).reduce((function(l,s){return l+"".concat(s,": ").concat(c[s].trim(),";")}),"")}function zc(c){return c.size!==K.size||c.x!==K.x||c.y!==K.y||c.rotate!==K.rotate||c.flipX||c.flipY}function ec(){var c,l,s=d,a=B.cssPrefix,z=B.replacementClass,e=':host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Solid";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Regular";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Light";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Thin";--fa-font-duotone:normal 900 1em/1 "Font Awesome 6 Duotone";--fa-font-sharp-solid:normal 900 1em/1 "Font Awesome 6 Sharp";--fa-font-sharp-regular:normal 400 1em/1 "Font Awesome 6 Sharp";--fa-font-sharp-light:normal 300 1em/1 "Font Awesome 6 Sharp";--fa-font-sharp-thin:normal 100 1em/1 "Font Awesome 6 Sharp";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}svg:not(:host).svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible;box-sizing:content-box}.svg-inline--fa{display:var(--fa-display,inline-block);height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.0714285705em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left{margin-right:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-pull-right{margin-left:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-li{width:var(--fa-li-width,2em);top:.25em}.svg-inline--fa.fa-fw{width:var(--fa-fw-width,1.25em)}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;color:var(--fa-inverse,#fff);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);overflow:hidden;padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-counter-scale,.25));transform:scale(var(--fa-counter-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);right:auto;top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{top:var(--fa-top,0);right:var(--fa-right,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top left;transform-origin:top left}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width,2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.08em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,0));transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;vertical-align:middle;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;z-index:var(--fa-stack-z-index,auto)}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-sr-only,.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.fa-sr-only-focusable:not(:focus),.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fa-duotone.fa-inverse,.fad.fa-inverse{color:var(--fa-inverse,#fff)}';return"fa"===a&&z===s||(c=new RegExp("\\.".concat("fa","\\-"),"g"),l=new RegExp("\\--".concat("fa","\\-"),"g"),s=new RegExp("\\.".concat(s),"g"),e=e.replace(c,".".concat(a,"-")).replace(l,"--".concat(a,"-")).replace(s,".".concat(z))),e}var Hc=!1;function tc(){B.autoAddCss&&!Hc&&(function(c){if(c&&L){var l=o.createElement("style");l.setAttribute("type","text/css"),l.innerHTML=c;for(var s=o.head.childNodes,a=null,z=s.length-1;-1<z;z--){var e=s[z],H=(e.tagName||"").toUpperCase();-1<["STYLE","LINK"].indexOf(H)&&(a=e)}o.head.insertBefore(l,a)}}(ec()),Hc=!0)}i={mixout:function(){return{dom:{css:ec,insertCss:tc}}},hooks:function(){return{beforeDOMElementCreation:function(){tc()},beforeI2svg:function(){tc()}}}},(h=m||{})[r]||(h[r]={}),h[r].styles||(h[r].styles={}),h[r].hooks||(h[r].hooks={}),h[r].shims||(h[r].shims=[]);var Vc=h[r],rc=[],Mc=!1;function hc(c){L&&(Mc?setTimeout(c,0):rc.push(c))}function nc(c){var l,s=c.tag,a=void 0===(z=c.attributes)?{}:z,z=void 0===(z=c.children)?[]:z;return"string"==typeof c?sc(c):"<".concat(s," ").concat((l=a,Object.keys(l||{}).reduce((function(c,s){return c+"".concat(s,'="').concat(sc(l[s]),'" ')}),"").trim()),">").concat(z.map(nc).join(""),"</").concat(s,">")}function ic(c,l,s){if(c&&c[l]&&c[l][s])return{prefix:l,iconName:s,icon:c[l][s]}}function mc(c,l,s,a){for(var z,e,H=Object.keys(c),t=H.length,V=void 0!==a?oc(l,a):l,r=void 0===s?(z=1,c[H[0]]):(z=0,s);z<t;z++)r=V(r,c[e=H[z]],e,c);return r}L&&((Mc=(o.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(o.readyState))||o.addEventListener("DOMContentLoaded",(function c(){o.removeEventListener("DOMContentLoaded",c),Mc=1,rc.map((function(c){return c()}))})));var oc=function(c,l){return function(s,a,z,e){return c.call(l,s,a,z,e)}};function fc(c){return c=function(c){for(var l=[],s=0,a=c.length;s<a;){var z,e=c.charCodeAt(s++);55296<=e&&e<=56319&&s<a?56320==(64512&(z=c.charCodeAt(s++)))?l.push(((1023&e)<<10)+(1023&z)+65536):(l.push(e),s--):l.push(e)}return l}(c),1===c.length?c[0].toString(16):null}function Cc(c){return Object.keys(c).reduce((function(l,s){var a=c[s];return a.icon?l[a.iconName]=a.icon:l[s]=a,l}),{})}function vc(c,s,a){a=void 0!==(z=(2<arguments.length&&void 0!==a?a:{}).skipHooks)&&z;var z=Cc(s);"function"!=typeof Vc.hooks.addPack||a?Vc.styles[c]=l(l({},Vc.styles[c]||{}),z):Vc.hooks.addPack(c,Cc(s)),"fas"===c&&vc("fa",s)}var Lc=Vc.styles,uc=Vc.shims,dc=(a(n={},q,Object.values(E[q])),a(n,Z,Object.values(E[Z])),n),pc=null,bc={},gc={},wc={},kc={},yc={},Sc=(a(M={},q,Object.keys(P[q])),a(M,Z,Object.keys(P[Z])),M);function Ac(){function c(c){return mc(Lc,(function(l,s,a){return l[a]=mc(s,c,{}),l}),{})}bc=c((function(c,l,s){return l[3]&&(c[l[3]]=s),l[2]&&l[2].filter((function(c){return"number"==typeof c})).forEach((function(l){c[l.toString(16)]=s})),c})),gc=c((function(c,l,s){return c[s]=s,l[2]&&l[2].filter((function(c){return"string"==typeof c})).forEach((function(l){c[l]=s})),c})),yc=c((function(c,l,s){return l=l[2],c[s]=s,l.forEach((function(l){c[l]=s})),c}));var l="far"in Lc||B.autoFetchSvg,s=mc(uc,(function(c,s){var a=s[0],z=s[1];return s=s[2],"far"!==z||l||(z="fas"),"string"==typeof a&&(c.names[a]={prefix:z,iconName:s}),"number"==typeof a&&(c.unicodes[a.toString(16)]={prefix:z,iconName:s}),c}),{names:{},unicodes:{}});wc=s.names,kc=s.unicodes,pc=Oc(B.styleDefault,{family:B.familyDefault})}function xc(c,l){return(bc[c]||{})[l]}function qc(c,l){return(yc[c]||{})[l]}function Zc(c){return wc[c]||{prefix:null,iconName:null}}function Oc(c,l){var s=(1<arguments.length&&void 0!==l?l:{}).family;return s=P[l=void 0===s?q:s][c],s=N[l][c]||N[l][s],c=c in Vc.styles?c:null,s||c||null}h=function(c){pc=Oc(c.styleDefault,{family:B.familyDefault})},G.push(h),Ac();var jc=(a(r={},q,Object.keys(E[q])),a(r,Z,Object.keys(E[Z])),r);function Pc(c,l){var s=void 0!==(l=(1<arguments.length&&void 0!==l?l:{}).skipLookups)&&l,z=(a(l={},q,"".concat(B.cssPrefix,"-").concat(q)),a(l,Z,"".concat(B.cssPrefix,"-").concat(Z)),l),e=null,H=q;return(c.includes(z[q])||c.some((function(c){return jc[q].includes(c)})))&&(H=q),(c.includes(z[Z])||c.some((function(c){return jc[Z].includes(c)})))&&(H=Z),l=c.reduce((function(c,l){var a=function(c,l){l=(s=l.split("-"))[0];var s=s.slice(1).join("-");return l!==c||""===s||~W.indexOf(s)?null:s}(B.cssPrefix,l);return Lc[l]?(l=dc[H].includes(l)?I[H][l]:l,e=l,c.prefix=l):-1<Sc[H].indexOf(l)?(e=l,c.prefix=Oc(l,{family:H})):a?c.iconName=a:l!==B.replacementClass&&l!==z[q]&&l!==z[Z]&&c.rest.push(l),!s&&c.prefix&&c.iconName&&(a="fa"===e?Zc(c.iconName):{},l=qc(c.prefix,c.iconName),a.prefix&&(e=null),c.iconName=a.iconName||l||c.iconName,c.prefix=a.prefix||c.prefix,"far"!==c.prefix||Lc.far||!Lc.fas||B.autoFetchSvg||(c.prefix="fas")),c}),{prefix:null,iconName:null,rest:[]}),(c.includes("fa-brands")||c.includes("fab"))&&(l.prefix="fab"),(c.includes("fa-duotone")||c.includes("fad"))&&(l.prefix="fad"),l.prefix||H!==Z||!Lc.fass&&!B.autoFetchSvg||(l.prefix="fass",l.iconName=qc(l.prefix,l.iconName)||l.iconName),"fa"!==l.prefix&&"fa"!==e||(l.prefix=pc||"fas"),l}n=function(){function c(){!function(c,l){if(!(c instanceof l))throw new TypeError("Cannot call a class as a function")}(this,c),this.definitions={}}var s,a;return s=c,(a=[{key:"add",value:function(){for(var c=this,s=arguments.length,a=new Array(s),z=0;z<s;z++)a[z]=arguments[z];var e=a.reduce(this._pullDefinitions,{});Object.keys(e).forEach((function(s){c.definitions[s]=l(l({},c.definitions[s]||{}),e[s]),vc(s,e[s]);var a=E[q][s];a&&vc(a,e[s]),Ac()}))}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(c,l){var s=l.prefix&&l.iconName&&l.icon?{0:l}:l;return Object.keys(s).map((function(l){var a=(e=s[l]).prefix,z=(l=e.iconName,e.icon),e=z[2];c[a]||(c[a]={}),0<e.length&&e.forEach((function(l){"string"==typeof l&&(c[a][l]=z)})),c[a][l]=z})),c}}])&&function(c,l){for(var s=0;s<l.length;s++){var a=l[s];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}(s.prototype,a),Object.defineProperty(s,"prototype",{writable:!1}),c}(),M=[];var Nc={},Ec={},Ic=Object.keys(Ec);function Tc(c,l){for(var s=arguments.length,a=new Array(2<s?s-2:0),z=2;z<s;z++)a[z-2]=arguments[z];return(Nc[c]||[]).forEach((function(c){l=c.apply(null,[l].concat(a))})),l}function Dc(c){for(var l=arguments.length,s=new Array(1<l?l-1:0),a=1;a<l;a++)s[a-1]=arguments[a];(Nc[c]||[]).forEach((function(c){c.apply(null,s)}))}function Yc(c){var l=c;return c=Array.prototype.slice.call(arguments,1),Ec[l]?Ec[l].apply(null,c):void 0}function Rc(c){"fa"===c.prefix&&(c.prefix="fas");var l=c.iconName;if(c=c.prefix||pc,l)return l=qc(c,l)||l,ic(_c.definitions,c,l)||ic(Vc.styles,c,l)}var _c=new n,Fc={noAuto:function(){B.autoReplaceSvg=!1,B.observeMutations=!1,Dc("noAuto")},config:B,dom:{i2svg:function(){var c=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return L?(Dc("beforeI2svg",c),Yc("pseudoElements2svg",c),Yc("i2svg",c)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var c=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},l=c.autoReplaceSvgRoot;!1===B.autoReplaceSvg&&(B.autoReplaceSvg=!0),B.observeMutations=!0,hc((function(){Wc({autoReplaceSvgRoot:l}),Dc("watch",c)}))}},parse:{icon:function(c){if(null===c)return null;if("object"===s(c)&&c.prefix&&c.iconName)return{prefix:c.prefix,iconName:qc(c.prefix,c.iconName)||c.iconName};if(Array.isArray(c)&&2===c.length){var l=0===c[1].indexOf("fa-")?c[1].slice(3):c[1],a=Oc(c[0]);return{prefix:a,iconName:qc(a,l)||l}}return"string"==typeof c&&(-1<c.indexOf("".concat(B.cssPrefix,"-"))||c.match(T))?{prefix:(l=Pc(c.split(" "),{skipLookups:!0})).prefix||pc,iconName:qc(l.prefix,l.iconName)||l.iconName}:"string"==typeof c?{prefix:pc,iconName:qc(pc,c)||c}:void 0}},library:_c,findIconDefinition:Rc,toHtml:nc},Wc=function(){var c=void 0===(c=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).autoReplaceSvgRoot)?o:c;(0<Object.keys(Vc.styles).length||B.autoFetchSvg)&&L&&B.autoReplaceSvg&&Fc.dom.i2svg({node:c})};function Uc(c,l){return Object.defineProperty(c,"abstract",{get:l}),Object.defineProperty(c,"html",{get:function(){return c.abstract.map(nc)}}),Object.defineProperty(c,"node",{get:function(){if(L){var l=o.createElement("div");return l.innerHTML=c.html,l.children}}}),c}function Xc(c){var s,a,z,e,H,t=(v=c.icons).main,V=v.mask,r=c.prefix,M=c.iconName,h=c.transform,n=c.symbol,i=c.title,m=c.maskId,o=c.titleId,f=c.extra,C=void 0!==(L=c.watchable)&&L,v=(u=V.found?V:t).width,L=(c=u.height,"fak"===r),u=[B.replacementClass,M?"".concat(B.cssPrefix,"-").concat(M):""].filter((function(c){return-1===f.classes.indexOf(c)})).filter((function(c){return""!==c||!!c})).concat(f.classes).join(" ");return u={children:[],attributes:l(l({},f.attributes),{},{"data-prefix":r,"data-icon":M,class:u,role:f.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(v," ").concat(c)})},c=L&&!~f.classes.indexOf("fa-fw")?{width:"".concat(v/c*16*.0625,"em")}:{},C&&(u.attributes[p]=""),i&&(u.children.push({tag:"title",attributes:{id:u.attributes["aria-labelledby"]||"title-".concat(o||J())},children:[i]}),delete u.attributes.title),c=l(l({},u),{},{prefix:r,iconName:M,main:t,mask:V,maskId:m,transform:h,symbol:n,styles:l(l({},c),f.styles)}),t=(V=V.found&&t.found?Yc("generateAbstractMask",c)||{children:[],attributes:{}}:Yc("generateAbstractIcon",c)||{children:[],attributes:{}}).children,V=V.attributes,c.children=t,c.attributes=V,n?(a=(s=c).prefix,z=s.iconName,e=s.children,H=s.attributes,s=!0===(s=s.symbol)?"".concat(a,"-").concat(B.cssPrefix,"-").concat(z):s,[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:l(l({},H),{},{id:s}),children:e}]}]):(z=(a=c).children,H=a.main,s=a.mask,e=a.attributes,c=a.styles,zc(a=a.transform)&&H.found&&!s.found&&(s=H.width/H.height/2,H=.5,e.style=ac(l(l({},c),{},{"transform-origin":"".concat(s+a.x/16,"em ").concat(H+a.y/16,"em")}))),[{tag:"svg",attributes:e,children:z}])}function Bc(c){var s=c.content,a=c.width,z=c.height,e=c.transform,H=c.title,t=c.extra,V=c.watchable,r=void 0!==V&&V;return c=l(l(l({},t.attributes),H?{title:H}:{}),{},{class:t.classes.join(" ")}),r&&(c[p]=""),V=l({},t.styles),zc(e)&&(V.transform=(t=(r={transform:e,startCentered:!0,width:a,height:z}).transform,e=r.width,z=void 0===(a=r.height)?16:a,r=void 0!==(a=r.startCentered)&&a,a="",a+=r&&u?"translate(".concat(t.x/Q-(void 0===e?16:e)/2,"em, ").concat(t.y/Q-z/2,"em) "):r?"translate(calc(-50% + ".concat(t.x/Q,"em), calc(-50% + ").concat(t.y/Q,"em)) "):"translate(".concat(t.x/Q,"em, ").concat(t.y/Q,"em) "),a+="scale(".concat(t.size/Q*(t.flipX?-1:1),", ").concat(t.size/Q*(t.flipY?-1:1),") "),a+="rotate(".concat(t.rotate,"deg) ")),V["-webkit-transform"]=V.transform),0<(V=ac(V)).length&&(c.style=V),(V=[]).push({tag:"span",attributes:c,children:[s]}),H&&V.push({tag:"span",attributes:{class:"sr-only"},children:[H]}),V}var Gc=Vc.styles;function Qc(c){var l=c[0],s=c[1];return c=z(c.slice(4),1)[0],{found:!0,width:l,height:s,icon:Array.isArray(c)?{tag:"g",attributes:{class:"".concat(B.cssPrefix,"-").concat(F.GROUP)},children:[{tag:"path",attributes:{class:"".concat(B.cssPrefix,"-").concat(F.SECONDARY),fill:"currentColor",d:c[0]}},{tag:"path",attributes:{class:"".concat(B.cssPrefix,"-").concat(F.PRIMARY),fill:"currentColor",d:c[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:c}}}}var Kc={found:!1,width:512,height:512};function $c(c,s){var a=s;return"fa"===s&&null!==B.styleDefault&&(s=pc),new Promise((function(z,e){var H,t;if(Yc("missingIconAbstract"),"fa"===a&&(t=Zc(c)||{},c=t.iconName||c,s=t.prefix||s),c&&s&&Gc[s]&&Gc[s][c])return z(Qc(Gc[s][c]));H=c,t=s,x||B.showMissingIcons||!H||console.error('Icon with name "'.concat(H,'" and prefix "').concat(t,'" is missing.')),z(l(l({},Kc),{},{icon:B.showMissingIcons&&c&&Yc("missingIconAbstract")||{}}))}))}function Jc(){}function cl(c){ll.mark("".concat(sl," ").concat(c," ends")),ll.measure("".concat(sl," ").concat(c),"".concat(sl," ").concat(c," begins"),"".concat(sl," ").concat(c," ends"))}var ll=B.measurePerformance&&C&&C.mark&&C.measure?C:{mark:Jc,measure:Jc},sl='FA "6.5.2"',al={begin:function(c){return ll.mark("".concat(sl," ").concat(c," begins")),function(){return cl(c)}},end:cl},zl=function(){};function el(c){return"string"==typeof(c.getAttribute?c.getAttribute(p):null)}function Hl(c){return o.createElementNS("http://www.w3.org/2000/svg",c)}function tl(c){return o.createElement(c)}var Vl={replace:function(c){var l=c[0];l.parentNode&&(c[1].forEach((function(c){l.parentNode.insertBefore(function c(l,s){var a=void 0===(s=(1<arguments.length&&void 0!==s?s:{}).ceFn)?"svg"===l.tag?Hl:tl:s;if("string"==typeof l)return o.createTextNode(l);var z=a(l.tag);return Object.keys(l.attributes||[]).forEach((function(c){z.setAttribute(c,l.attributes[c])})),(l.children||[]).forEach((function(l){z.appendChild(c(l,{ceFn:a}))})),z}(c),l)})),null===l.getAttribute(p)&&B.keepOriginalSource?(c=o.createComment((c=" ".concat((c=l).outerHTML," "),c="".concat(c,"Font Awesome fontawesome.com "))),l.parentNode.replaceChild(c,l)):l.remove())},nest:function(c){var l=c[0],s=c[1];if(~lc(l).indexOf(B.replacementClass))return Vl.replace(c);var a=new RegExp("".concat(B.cssPrefix,"-.*"));delete s[0].attributes.id,s[0].attributes.class&&(c=s[0].attributes.class.split(" ").reduce((function(c,l){return(l===B.replacementClass||l.match(a)?c.toSvg:c.toNode).push(l),c}),{toNode:[],toSvg:[]}),s[0].attributes.class=c.toSvg.join(" "),0===c.toNode.length?l.removeAttribute("class"):l.setAttribute("class",c.toNode.join(" "))),s=s.map(nc).join("\n"),l.setAttribute(p,""),l.innerHTML=s}};function rl(c){c()}function Ml(c,l){var s="function"==typeof l?l:zl;0===c.length?s():(B.mutateApproach===S&&m.requestAnimationFrame||rl)((function(){var l=!0!==B.autoReplaceSvg&&Vl[B.autoReplaceSvg]||Vl.replace,a=al.begin("mutate");c.map(l),a(),s()}))}var hl=!1;function nl(){hl=!0}function il(){hl=!1}var ml=null;function ol(c){var l,s,a,z;f&&B.observeMutations&&(a=c.treeCallback,l=void 0===a?zl:a,a=c.nodeCallback,s=void 0===a?zl:a,a=c.pseudoElementsCallback,z=void 0===a?zl:a,c=void 0===(c=c.observeMutationsRoot)?o:c,ml=new f((function(c){var a;hl||(a=pc,cc(c).forEach((function(c){var e,H,t;"childList"===c.type&&0<c.addedNodes.length&&!el(c.addedNodes[0])&&(B.searchPseudoElements&&z(c.target),l(c.target)),"attributes"===c.type&&c.target.parentNode&&B.searchPseudoElements&&z(c.target.parentNode),"attributes"===c.type&&el(c.target)&&~_.indexOf(c.attributeName)&&("class"===c.attributeName&&(t=(H=c.target).getAttribute?H.getAttribute(w):null,H=H.getAttribute?H.getAttribute(k):null,t&&H)?(H=(e=Pc(lc(c.target))).prefix,e=e.iconName,c.target.setAttribute(w,H||a),e&&c.target.setAttribute(k,e)):(e=c.target)&&e.classList&&e.classList.contains&&e.classList.contains(B.replacementClass)&&s(c.target))})))})),L&&ml.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0}))}function fl(c,s){var a=1<arguments.length&&void 0!==s?s:{styleParser:!0},z=function(c){var l=c.getAttribute("data-prefix"),s=c.getAttribute("data-icon"),a=void 0!==c.innerText?c.innerText.trim():"",z=Pc(lc(c));return z.prefix||(z.prefix=pc),l&&s&&(z.prefix=l,z.iconName=s),z.iconName&&z.prefix||(z.prefix&&0<a.length&&(z.iconName=(s=z.prefix,a=c.innerText,(gc[s]||{})[a]||xc(z.prefix,fc(c.innerText)))),!z.iconName&&B.autoFetchSvg&&c.firstChild&&c.firstChild.nodeType===Node.TEXT_NODE&&(z.iconName=c.firstChild.data)),z}(c),e=z.iconName,H=z.prefix,t=z.rest,V=(s=cc((V=c).attributes).reduce((function(c,l){return"class"!==c.name&&"style"!==c.name&&(c[l.name]=l.value),c}),{}),z=V.getAttribute("title"),V=V.getAttribute("data-fa-title-id"),B.autoA11y&&(z?s["aria-labelledby"]="".concat(B.replacementClass,"-title-").concat(V||J()):(s["aria-hidden"]="true",s.focusable="false")),s),r=(s=Tc("parseNodeAttributes",{},c),a.styleParser?(a=(r=c).getAttribute("style"),r=[],r=a?a.split(";").reduce((function(c,l){l=(s=l.split(":"))[0];var s=s.slice(1);return l&&0<s.length&&(c[l]=s.join(":").trim()),c}),{}):r):[]);return l({iconName:e,title:c.getAttribute("title"),titleId:c.getAttribute("data-fa-title-id"),prefix:H,transform:K,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:t,styles:r,attributes:V}},s)}var Cl=Vc.styles;function vl(c){var l="nest"===B.autoReplaceSvg?fl(c,{styleParser:!1}):fl(c);return~l.extra.classes.indexOf(D)?Yc("generateLayersText",c,l):Yc("generateSvgReplacementMutation",c,l)}var Ll=new Set;function ul(c){var l=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;if(!L)return Promise.resolve();function s(c){return z.add("".concat(y,"-").concat(c))}function a(c){return z.remove("".concat(y,"-").concat(c))}var z=o.documentElement.classList,e=B.autoFetchSvg?Ll:O.map((function(c){return"fa-".concat(c)})).concat(Object.keys(Cl));e.includes("fa")||e.push("fa");var H=[".".concat(D,":not([").concat(p,"])")].concat(e.map((function(c){return".".concat(c,":not([").concat(p,"])")}))).join(", ");if(0===H.length)return Promise.resolve();e=[];try{e=cc(c.querySelectorAll(H))}catch(c){}if(!(0<e.length))return Promise.resolve();s("pending"),a("complete");var t=al.begin("onTree"),V=e.reduce((function(c,l){try{var s=vl(l);s&&c.push(s)}catch(c){x||"MissingIcon"===c.name&&console.error(c)}return c}),[]);return new Promise((function(c,z){Promise.all(V).then((function(z){Ml(z,(function(){s("active"),s("complete"),a("pending"),"function"==typeof l&&l(),t(),c()}))})).catch((function(c){t(),z(c)}))}))}function dl(c){var l=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;vl(c).then((function(c){c&&Ml([c],l)}))}function pl(c){var s=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},a=s.transform,z=void 0===a?K:a,e=void 0!==(a=s.symbol)&&a,H=void 0===(a=s.mask)?null:a,t=void 0===(a=s.maskId)?null:a,V=void 0===(a=s.title)?null:a,r=void 0===(a=s.titleId)?null:a,M=void 0===(a=s.classes)?[]:a,h=void 0===(a=s.attributes)?{}:a,n=void 0===(a=s.styles)?{}:a;if(c){var i=c.prefix,m=c.iconName,o=c.icon;return Uc(l({type:"icon"},c),(function(){return Dc("beforeDOMElementCreation",{iconDefinition:c,params:s}),B.autoA11y&&(V?h["aria-labelledby"]="".concat(B.replacementClass,"-title-").concat(r||J()):(h["aria-hidden"]="true",h.focusable="false")),Xc({icons:{main:Qc(o),mask:H?Qc(H.icon):{found:!1,width:null,height:null,icon:{}}},prefix:i,iconName:m,transform:l(l({},K),z),symbol:e,title:V,maskId:t,titleId:r,extra:{attributes:h,styles:n,classes:M}})}))}}O.map((function(c){Ll.add("fa-".concat(c))})),Object.keys(P[q]).map(Ll.add.bind(Ll)),Object.keys(P[Z]).map(Ll.add.bind(Ll)),Ll=e(Ll),h={mixout:function(){return{icon:(c=pl,function(s){var a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},z=(s||{}).icon?s:Rc(s||{});return s=(s=a.mask)&&((s||{}).icon?s:Rc(s||{})),c(z,l(l({},a),{},{mask:s}))})};var c},hooks:function(){return{mutationObserverCallbacks:function(c){return c.treeCallback=ul,c.nodeCallback=dl,c}}},provides:function(c){c.i2svg=function(c){var l=c.node;return c=c.callback,ul(void 0===l?o:l,void 0===c?function(){}:c)},c.generateSvgReplacementMutation=function(c,l){var s=l.iconName,a=l.title,e=l.titleId,H=l.prefix,t=l.transform,V=l.symbol,r=l.mask,M=l.maskId,h=l.extra;return new Promise((function(l,n){Promise.all([$c(s,H),r.iconName?$c(r.iconName,r.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then((function(r){r=(n=z(r,2))[0];var n=n[1];l([c,Xc({icons:{main:r,mask:n},prefix:H,iconName:s,transform:t,symbol:V,maskId:M,title:a,titleId:e,extra:h,watchable:!0})])})).catch(n)}))},c.generateAbstractIcon=function(c){var l,s=c.children,a=c.attributes,z=c.main,e=c.transform;return 0<(c=ac(c.styles)).length&&(a.style=c),zc(e)&&(l=Yc("generateAbstractTransformGrouping",{main:z,transform:e,containerWidth:z.width,iconWidth:z.width})),s.push(l||z.icon),{children:s,attributes:a}}}},r={mixout:function(){return{layer:function(c){var l=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},s=l.classes,a=void 0===s?[]:s;return Uc({type:"layer"},(function(){Dc("beforeDOMElementCreation",{assembler:c,params:l});var s=[];return c((function(c){Array.isArray(c)?c.map((function(c){s=s.concat(c.abstract)})):s=s.concat(c.abstract)})),[{tag:"span",attributes:{class:["".concat(B.cssPrefix,"-layers")].concat(e(a)).join(" ")},children:s}]}))}}}},n={mixout:function(){return{counter:function(c){var s,a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},z=void 0===(s=a.title)?null:s,H=void 0===(s=a.classes)?[]:s,t=void 0===(s=a.attributes)?{}:s,V=void 0===(s=a.styles)?{}:s;return Uc({type:"counter",content:c},(function(){return Dc("beforeDOMElementCreation",{content:c,params:a}),r=(s={content:c.toString(),title:z,extra:{attributes:t,styles:V,classes:["".concat(B.cssPrefix,"-layers-counter")].concat(e(H))}}).content,M=s.title,s=l(l(l({},(h=s.extra).attributes),M?{title:M}:{}),{},{class:h.classes.join(" ")}),0<(h=ac(h.styles)).length&&(s.style=h),(h=[]).push({tag:"span",attributes:s,children:[r]}),M&&h.push({tag:"span",attributes:{class:"sr-only"},children:[M]}),h;var s,r,M,h}))}}}},C={mixout:function(){return{text:function(c){var s,a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},z=void 0===(s=a.transform)?K:s,H=void 0===(s=a.title)?null:s,t=void 0===(s=a.classes)?[]:s,V=void 0===(s=a.attributes)?{}:s,r=void 0===(s=a.styles)?{}:s;return Uc({type:"text",content:c},(function(){return Dc("beforeDOMElementCreation",{content:c,params:a}),Bc({content:c,transform:l(l({},K),z),title:H,extra:{attributes:V,styles:r,classes:["".concat(B.cssPrefix,"-layers-text")].concat(e(t))}})}))}}},provides:function(c){c.generateLayersText=function(c,l){var s,a=l.title,z=l.transform,e=l.extra,H=null,t=null;return u&&(s=parseInt(getComputedStyle(c).fontSize,10),H=(l=c.getBoundingClientRect()).width/s,t=l.height/s),B.autoA11y&&!a&&(e.attributes["aria-hidden"]="true"),Promise.resolve([c,Bc({content:c.innerHTML,width:H,height:t,transform:z,title:a,extra:e,watchable:!0})])}}};var bl=new RegExp('"',"ug"),gl=[1105920,1112319];function wl(c,s){var a="".concat(g).concat(s.replace(":","-"));return new Promise((function(z,e){if(null!==c.getAttribute(a))return z();var H,t,V,r,M,h,n,i=cc(c.children).filter((function(c){return c.getAttribute(b)===s}))[0],f=m.getComputedStyle(c,s),C=f.getPropertyValue("font-family").match(Y),v=f.getPropertyValue("font-weight"),L=f.getPropertyValue("content");if(i&&!C)return c.removeChild(i),z();C&&"none"!==L&&""!==L?(h=f.getPropertyValue("content"),M=~["Sharp"].indexOf(C[2])?Z:q,H=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(C[2])?N[M][C[2].toLowerCase()]:R[M][v],L=(f=(L=h).replace(bl,""),M=0,h=(v=f).length,n=55296<=(L=v.charCodeAt(M))&&L<=56319&&M+1<h&&56320<=(n=v.charCodeAt(M+1))&&n<=57343?1024*(L-55296)+n-56320+65536:L,L=gl[0]<=n&&n<=gl[1],f={value:fc((n=2===f.length&&f[0]===f[1])?f[0]:f),isSecondary:L||n}).value,n=f.isSecondary,f=C[0].startsWith("FontAwesome"),C=xc(H,L),t=C,f&&(L=kc[f=L],f=xc("fas",f),(f=L||(f?{prefix:"fas",iconName:f}:null)||{prefix:null,iconName:null}).iconName&&f.prefix&&(C=f.iconName,H=f.prefix)),!C||n||i&&i.getAttribute(w)===H&&i.getAttribute(k)===t?z():(c.setAttribute(a,t),i&&c.removeChild(i),(r=(V={iconName:null,title:null,titleId:null,prefix:null,transform:K,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}).extra).attributes[b]=s,$c(C,H).then((function(e){var M=Xc(l(l({},V),{},{icons:{main:e,mask:{prefix:null,iconName:null,rest:[]}},prefix:H,iconName:t,extra:r,watchable:!0}));e=o.createElementNS("http://www.w3.org/2000/svg","svg"),"::before"===s?c.insertBefore(e,c.firstChild):c.appendChild(e),e.outerHTML=M.map(nc).join("\n"),c.removeAttribute(a),z()})).catch(e))):z()}))}function kl(c){return Promise.all([wl(c,"::before"),wl(c,"::after")])}function yl(c){return!(c.parentNode===document.head||~A.indexOf(c.tagName.toUpperCase())||c.getAttribute(b)||c.parentNode&&"svg"===c.parentNode.tagName)}function Sl(c){if(L)return new Promise((function(l,s){var a=cc(c.querySelectorAll("*")).filter(yl).map(kl),z=al.begin("searchPseudoElements");nl(),Promise.all(a).then((function(){z(),il(),l()})).catch((function(){z(),il(),s()}))}))}function Al(c){return c.toLowerCase().split(" ").reduce((function(c,l){var s=l.toLowerCase().split("-"),a=(l=s[0],s.slice(1).join("-"));if(l&&"h"===a)return c.flipX=!0,c;if(l&&"v"===a)return c.flipY=!0,c;if(a=parseFloat(a),isNaN(a))return c;switch(l){case"grow":c.size=c.size+a;break;case"shrink":c.size=c.size-a;break;case"left":c.x=c.x-a;break;case"right":c.x=c.x+a;break;case"up":c.y=c.y-a;break;case"down":c.y=c.y+a;break;case"rotate":c.rotate=c.rotate+a}return c}),{size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0})}var xl,ql=!1,Zl={x:0,y:0,width:"100%",height:"100%"};function Ol(c){return c.attributes&&(c.attributes.fill||!(1<arguments.length&&void 0!==arguments[1])||arguments[1])&&(c.attributes.fill="black"),c}xl=Fc,M=[i,h,r,n,C,{hooks:function(){return{mutationObserverCallbacks:function(c){return c.pseudoElementsCallback=Sl,c}}},provides:function(c){c.pseudoElements2svg=function(c){c=c.node,B.searchPseudoElements&&Sl(void 0===c?o:c)}}},{mixout:function(){return{dom:{unwatch:function(){nl(),ql=!0}}}},hooks:function(){return{bootstrap:function(){ol(Tc("mutationObserverCallbacks",{}))},noAuto:function(){ml&&ml.disconnect()},watch:function(c){c=c.observeMutationsRoot,ql?il():ol(Tc("mutationObserverCallbacks",{observeMutationsRoot:c}))}}}},{mixout:function(){return{parse:{transform:Al}}},hooks:function(){return{parseNodeAttributes:function(c,l){return(l=l.getAttribute("data-fa-transform"))&&(c.transform=Al(l)),c}}},provides:function(c){c.generateAbstractTransformGrouping=function(c){var s=c.main,a=c.transform,z=c.containerWidth,e=c.iconWidth,H={transform:"translate(".concat(z/2," 256)")};return c="translate(".concat(32*a.x,", ").concat(32*a.y,") "),z="scale(".concat(a.size/16*(a.flipX?-1:1),", ").concat(a.size/16*(a.flipY?-1:1),") "),a="rotate(".concat(a.rotate," 0 0)"),{tag:"g",attributes:l({},(e={outer:H,inner:{transform:"".concat(c," ").concat(z," ").concat(a)},path:{transform:"translate(".concat(e/2*-1," -256)")}}).outer),children:[{tag:"g",attributes:l({},e.inner),children:[{tag:s.icon.tag,children:s.icon.children,attributes:l(l({},s.icon.attributes),e.path)}]}]}}}},{hooks:function(){return{parseNodeAttributes:function(c,l){var s=(s=l.getAttribute("data-fa-mask"))?Pc(s.split(" ").map((function(c){return c.trim()}))):{prefix:null,iconName:null,rest:[]};return s.prefix||(s.prefix=pc),c.mask=s,c.maskId=l.getAttribute("data-fa-mask-id"),c}}},provides:function(c){c.generateAbstractMask=function(c){var s=c.children,a=c.attributes,z=c.main,e=c.mask,H=c.maskId,t=c.transform,V=z.width,r=z.icon,M=e.width;return c=e.icon,e=(z={transform:t,containerWidth:M,iconWidth:V}).transform,t=z.containerWidth,M=z.iconWidth,V={transform:"translate(".concat(t/2," 256)")},z="translate(".concat(32*e.x,", ").concat(32*e.y,") "),t="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),e="rotate(".concat(e.rotate," 0 0)"),t={outer:V,inner:{transform:"".concat(z," ").concat(t," ").concat(e)},path:{transform:"translate(".concat(M/2*-1," -256)")}},e={tag:"rect",attributes:l(l({},Zl),{},{fill:"white"})},M=r.children?{children:r.children.map(Ol)}:{},M={tag:"g",attributes:l({},t.inner),children:[Ol(l({tag:r.tag,attributes:l(l({},r.attributes),t.path)},M))]},t={tag:"g",attributes:l({},t.outer),children:[M]},M="mask-".concat(H||J()),H="clip-".concat(H||J()),t={tag:"mask",attributes:l(l({},Zl),{},{id:M,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[e,t]},t={tag:"defs",children:[{tag:"clipPath",attributes:{id:H},children:"g"===c.tag?c.children:[c]},t]},s.push(t,{tag:"rect",attributes:l({fill:"currentColor","clip-path":"url(#".concat(H,")"),mask:"url(#".concat(M,")")},Zl)}),{children:s,attributes:a}}}},{provides:function(c){var s=!1;m.matchMedia&&(s=m.matchMedia("(prefers-reduced-motion: reduce)").matches),c.missingIconAbstract=function(){var c=[],a={fill:"currentColor"},z={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};c.push({tag:"path",attributes:l(l({},a),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var e=l(l({},z),{},{attributeName:"opacity"}),H={tag:"circle",attributes:l(l({},a),{},{cx:"256",cy:"364",r:"28"}),children:[]};return s||H.children.push({tag:"animate",attributes:l(l({},z),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:l(l({},e),{},{values:"1;0;1;1;0;1;"})}),c.push(H),c.push({tag:"path",attributes:l(l({},a),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:s?[]:[{tag:"animate",attributes:l(l({},e),{},{values:"1;0;0;0;0;1;"})}]}),s||c.push({tag:"path",attributes:l(l({},a),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:l(l({},e),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:c}}}},{hooks:function(){return{parseNodeAttributes:function(c,l){return l=l.getAttribute("data-fa-symbol"),c.symbol=null!==l&&(""===l||l),c}}}}],Nc={},Object.keys(Ec).forEach((function(c){-1===Ic.indexOf(c)&&delete Ec[c]})),M.forEach((function(c){var l,a=c.mixout?c.mixout():{};Object.keys(a).forEach((function(c){"function"==typeof a[c]&&(xl[c]=a[c]),"object"===s(a[c])&&Object.keys(a[c]).forEach((function(l){xl[c]||(xl[c]={}),xl[c][l]=a[c][l]}))})),c.hooks&&(l=c.hooks(),Object.keys(l).forEach((function(c){Nc[c]||(Nc[c]=[]),Nc[c].push(l[c])}))),c.provides&&c.provides(Ec)})),function(c){try{for(var l=arguments.length,s=new Array(1<l?l-1:0),a=1;a<l;a++)s[a-1]=arguments[a];c.apply(void 0,s)}catch(c){if(!x)throw c}}((function(c){v&&(m.FontAwesome||(m.FontAwesome=Fc),hc((function(){Wc(),Dc("bootstrap")}))),Vc.hooks=l(l({},Vc.hooks),{},{addPack:function(c,s){Vc.styles[c]=l(l({},Vc.styles[c]||{}),s),Ac(),Wc()},addPacks:function(c){c.forEach((function(c){c=(s=z(c,2))[0];var s=s[1];Vc.styles[c]=l(l({},Vc.styles[c]||{}),s)})),Ac(),Wc()},addShims:function(c){var l;(l=Vc.shims).push.apply(l,e(c)),Ac(),Wc()}})}))}()}},l={};function s(a){var z=l[a];if(void 0!==z)return z.exports;var e=l[a]={exports:{}};return c[a](e,e.exports,s),e.exports}s.n=c=>{var l=c&&c.__esModule?()=>c.default:()=>c;return s.d(l,{a:l}),l},s.d=(c,l)=>{for(var a in l)s.o(l,a)&&!s.o(c,a)&&Object.defineProperty(c,a,{enumerable:!0,get:l[a]})},s.o=(c,l)=>Object.prototype.hasOwnProperty.call(c,l),(()=>{"use strict";s(654)})()})(); +//# sourceMappingURL=fontawesome.js.map \ No newline at end of file diff --git a/_static/scripts/fontawesome.js.LICENSE.txt b/_static/scripts/fontawesome.js.LICENSE.txt new file mode 100644 index 000000000..a91750aff --- /dev/null +++ b/_static/scripts/fontawesome.js.LICENSE.txt @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ diff --git a/_static/scripts/fontawesome.js.map b/_static/scripts/fontawesome.js.map new file mode 100644 index 000000000..8fa96a6db --- /dev/null +++ b/_static/scripts/fontawesome.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts/fontawesome.js","mappings":"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","sources":["webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/js/all.min.js","webpack://pydata_sphinx_theme/webpack/bootstrap","webpack://pydata_sphinx_theme/webpack/runtime/compat get default export","webpack://pydata_sphinx_theme/webpack/runtime/define property getters","webpack://pydata_sphinx_theme/webpack/runtime/hasOwnProperty shorthand"],"sourcesContent":["/*!\n * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n!function(){\"use strict\";var c={},l={};try{\"undefined\"!=typeof window&&(c=window),\"undefined\"!=typeof document&&(l=document)}catch(c){}var s=(c.navigator||{}).userAgent,a=void 0===s?\"\":s,z=c,e=l;z.document,e.documentElement&&e.head&&\"function\"==typeof e.addEventListener&&e.createElement,~a.indexOf(\"MSIE\")||a.indexOf(\"Trident/\");function H(l,c){var s,a=Object.keys(l);return Object.getOwnPropertySymbols&&(s=Object.getOwnPropertySymbols(l),c&&(s=s.filter(function(c){return Object.getOwnPropertyDescriptor(l,c).enumerable})),a.push.apply(a,s)),a}function t(l){for(var c=1;c<arguments.length;c++){var s=null!=arguments[c]?arguments[c]:{};c%2?H(Object(s),!0).forEach(function(c){V(l,c,s[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(l,Object.getOwnPropertyDescriptors(s)):H(Object(s)).forEach(function(c){Object.defineProperty(l,c,Object.getOwnPropertyDescriptor(s,c))})}return l}function V(c,l,s){return l in c?Object.defineProperty(c,l,{value:s,enumerable:!0,configurable:!0,writable:!0}):c[l]=s,c}function r(c,l){(null==l||l>c.length)&&(l=c.length);for(var s=0,a=new Array(l);s<l;s++)a[s]=c[s];return a}var M=\"___FONT_AWESOME___\",h=function(){try{return!0}catch(c){return!1}}(),n=\"classic\",i=\"sharp\",m=[n,i];function o(c){return new Proxy(c,{get:function(c,l){return l in c?c[l]:c[n]}})}o((V(C={},n,{fa:\"solid\",fas:\"solid\",\"fa-solid\":\"solid\",far:\"regular\",\"fa-regular\":\"regular\",fal:\"light\",\"fa-light\":\"light\",fat:\"thin\",\"fa-thin\":\"thin\",fad:\"duotone\",\"fa-duotone\":\"duotone\",fab:\"brands\",\"fa-brands\":\"brands\",fak:\"kit\",fakd:\"kit\",\"fa-kit\":\"kit\",\"fa-kit-duotone\":\"kit\"}),V(C,i,{fa:\"solid\",fass:\"solid\",\"fa-solid\":\"solid\",fasr:\"regular\",\"fa-regular\":\"regular\",fasl:\"light\",\"fa-light\":\"light\",fast:\"thin\",\"fa-thin\":\"thin\"}),C));var f=o((V(v={},n,{solid:\"fas\",regular:\"far\",light:\"fal\",thin:\"fat\",duotone:\"fad\",brands:\"fab\",kit:\"fak\"}),V(v,i,{solid:\"fass\",regular:\"fasr\",light:\"fasl\",thin:\"fast\"}),v)),e=(o((V(s={},n,{fab:\"fa-brands\",fad:\"fa-duotone\",fak:\"fa-kit\",fal:\"fa-light\",far:\"fa-regular\",fas:\"fa-solid\",fat:\"fa-thin\"}),V(s,i,{fass:\"fa-solid\",fasr:\"fa-regular\",fasl:\"fa-light\",fast:\"fa-thin\"}),s)),o((V(c={},n,{\"fa-brands\":\"fab\",\"fa-duotone\":\"fad\",\"fa-kit\":\"fak\",\"fa-light\":\"fal\",\"fa-regular\":\"far\",\"fa-solid\":\"fas\",\"fa-thin\":\"fat\"}),V(c,i,{\"fa-solid\":\"fass\",\"fa-regular\":\"fasr\",\"fa-light\":\"fasl\",\"fa-thin\":\"fast\"}),c)),o((V(l={},n,{900:\"fas\",400:\"far\",normal:\"far\",300:\"fal\",100:\"fat\"}),V(l,i,{900:\"fass\",400:\"fasr\",300:\"fasl\",100:\"fast\"}),l)),[1,2,3,4,5,6,7,8,9,10]),a=e.concat([11,12,13,14,15,16,17,18,19,20]),C=\"duotone-group\",v=\"swap-opacity\",s=\"primary\",c=\"secondary\",l=new Set;Object.keys(f[n]).map(l.add.bind(l)),Object.keys(f[i]).map(l.add.bind(l));[].concat(m,function(c){if(Array.isArray(c))return r(c)}(l=l)||function(c){if(\"undefined\"!=typeof Symbol&&null!=c[Symbol.iterator]||null!=c[\"@@iterator\"])return Array.from(c)}(l)||function(c,l){if(c){if(\"string\"==typeof c)return r(c,l);var s=Object.prototype.toString.call(c).slice(8,-1);return\"Map\"===(s=\"Object\"===s&&c.constructor?c.constructor.name:s)||\"Set\"===s?Array.from(c):\"Arguments\"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?r(c,l):void 0}}(l)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}(),[\"2xs\",\"xs\",\"sm\",\"lg\",\"xl\",\"2xl\",\"beat\",\"border\",\"fade\",\"beat-fade\",\"bounce\",\"flip-both\",\"flip-horizontal\",\"flip-vertical\",\"flip\",\"fw\",\"inverse\",\"layers-counter\",\"layers-text\",\"layers\",\"li\",\"pull-left\",\"pull-right\",\"pulse\",\"rotate-180\",\"rotate-270\",\"rotate-90\",\"rotate-by\",\"shake\",\"spin-pulse\",\"spin-reverse\",\"spin\",\"stack-1x\",\"stack-2x\",\"stack\",\"ul\",C,v,s,c]).concat(e.map(function(c){return\"\".concat(c,\"x\")})).concat(a.map(function(c){return\"w-\".concat(c)}));z=z||{};z[M]||(z[M]={}),z[M].styles||(z[M].styles={}),z[M].hooks||(z[M].hooks={}),z[M].shims||(z[M].shims=[]);var L=z[M];function u(a){return Object.keys(a).reduce(function(c,l){var s=a[l];return!!s.icon?c[s.iconName]=s.icon:c[l]=s,c},{})}function d(c,l,s){var a=(2<arguments.length&&void 0!==s?s:{}).skipHooks,s=void 0!==a&&a,a=u(l);\"function\"!=typeof L.hooks.addPack||s?L.styles[c]=t(t({},L.styles[c]||{}),a):L.hooks.addPack(c,u(l)),\"fas\"===c&&d(\"fa\",l)}var p={monero:[496,512,[],\"f3d0\",\"M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z\"],hooli:[640,512,[],\"f427\",\"M144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z\"],yelp:[384,512,[],\"f1e9\",\"M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z\"],\"cc-visa\":[576,512,[],\"f1f0\",\"M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z\"],lastfm:[512,512,[],\"f202\",\"M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z\"],shopware:[512,512,[],\"f5b5\",\"M403.5 455.41A246.17 246.17 0 0 1 256 504C118.81 504 8 393 8 256 8 118.81 119 8 256 8a247.39 247.39 0 0 1 165.7 63.5 3.57 3.57 0 0 1-2.86 6.18A418.62 418.62 0 0 0 362.13 74c-129.36 0-222.4 53.47-222.4 155.35 0 109 92.13 145.88 176.83 178.73 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.09a3.64 3.64 0 0 0-1.27-2.44c-51.76-43-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.09z\"],\"creative-commons-nc\":[496,512,[],\"f4e8\",\"M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z\"],aws:[640,512,[],\"f375\",\"M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z\"],redhat:[512,512,[],\"f7bc\",\"M341.52 285.56c33.65 0 82.34-6.94 82.34-47 .22-6.74.86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.11 228.47 106.11M429 254.84c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.74.08-235.91-73.65-235.91-122.33a49.55 49.55 0 0 1 4.06-19.72C58.56 200.86 0 208.93 0 260.63c0 84.67 200.63 189 359.49 189 121.79 0 152.51-55.08 152.51-98.58 0-34.21-29.59-73.05-82.93-96.24\"],yoast:[448,512,[],\"f2b1\",\"M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z\"],cloudflare:[640,512,[],\"e07d\",\"M407.906,319.913l-230.8-2.928a4.58,4.58,0,0,1-3.632-1.926,4.648,4.648,0,0,1-.494-4.147,6.143,6.143,0,0,1,5.361-4.076L411.281,303.9c27.631-1.26,57.546-23.574,68.022-50.784l13.286-34.542a7.944,7.944,0,0,0,.524-2.936,7.735,7.735,0,0,0-.164-1.631A151.91,151.91,0,0,0,201.257,198.4,68.12,68.12,0,0,0,94.2,269.59C41.924,271.106,0,313.728,0,366.12a96.054,96.054,0,0,0,1.029,13.958,4.508,4.508,0,0,0,4.445,3.871l426.1.051c.043,0,.08-.019.122-.02a5.606,5.606,0,0,0,5.271-4l3.273-11.265c3.9-13.4,2.448-25.8-4.1-34.9C430.124,325.423,420.09,320.487,407.906,319.913ZM513.856,221.1c-2.141,0-4.271.062-6.391.164a3.771,3.771,0,0,0-3.324,2.653l-9.077,31.193c-3.9,13.4-2.449,25.786,4.1,34.89,6.02,8.4,16.054,13.323,28.238,13.9l49.2,2.939a4.491,4.491,0,0,1,3.51,1.894,4.64,4.64,0,0,1,.514,4.169,6.153,6.153,0,0,1-5.351,4.075l-51.125,2.939c-27.754,1.27-57.669,23.574-68.145,50.784l-3.695,9.606a2.716,2.716,0,0,0,2.427,3.68c.046,0,.088.017.136.017h175.91a4.69,4.69,0,0,0,4.539-3.37,124.807,124.807,0,0,0,4.682-34C640,277.3,583.524,221.1,513.856,221.1Z\"],ups:[384,512,[],\"f7e0\",\"M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4.6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2.6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z\"],pixiv:[448,512,[],\"e640\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm171.5 84c41 0 76.3 12.9 101.4 35.2l0 0c25.2 22.2 39.8 54.1 39.8 88.8c.1 35.3-16.6 66.3-42.4 87c-25.9 20.8-60.6 32.4-98.8 32.4c-43.5 0-83.8-16.1-83.8-16.1v51.8c7.4 2.2 19.7 7 11.9 14.8H104.8c-7.7-7.8 3.6-12.4 12.1-14.8V175.5C97.1 190.9 87 204.3 81.8 214.2c6 19.4-5.3 18.5-5.3 18.5L56 199.7s72.7-83.7 179.5-83.7zm-3.6 222.9c30 0 56-11.3 73.9-29.2c17.9-18.1 27.9-41.6 28-70.2c-.1-29.3-9.5-54.6-26.7-73.6c-17.2-18.9-42.7-31.3-75.2-31.4c-26.7-.1-59.8 9-80.2 23.7V323.1c18.6 9.3 46.8 15.9 80.2 15.8z\"],wpexplorer:[512,512,[],\"f2de\",\"M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z\"],dyalog:[416,512,[],\"f399\",\"M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z\"],bity:[496,512,[],\"f37a\",\"M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z\"],stackpath:[448,512,[],\"f842\",\"M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.84c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18.56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.38-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.18h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.94 325L347 186.78h-31.09L268 325zm106.52-138.22h-31.09L325.46 325h29.94z\"],buysellads:[448,512,[],\"f20d\",\"M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z\"],\"first-order\":[448,512,[],\"f2b0\",\"M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z\"],modx:[448,512,[],\"f285\",\"M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z\"],guilded:[448,512,[],\"e07e\",\"M443.427,64H4.571c0,103.26,22.192,180.06,43.418,222.358C112.046,414.135,224,448,225.256,448a312.824,312.824,0,0,0,140.55-103.477c25.907-33.923,53.1-87.19,65.916-145.761H171.833c4.14,36.429,22.177,67.946,45.1,86.944h88.589c-17.012,28.213-48.186,54.4-80.456,69.482-31.232-13.259-69.09-46.544-96.548-98.362-26.726-53.833-27.092-105.883-27.092-105.883H437.573A625.91,625.91,0,0,0,443.427,64Z\"],vnv:[640,512,[],\"f40b\",\"M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z\"],\"square-js\":[448,512,[\"js-square\"],\"f3b9\",\"M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM180.9 444.9c-33.7 0-53.2-17.4-63.2-38.5L152 385.7c6.6 11.7 12.6 21.6 27.1 21.6c13.8 0 22.6-5.4 22.6-26.5V237.7h42.1V381.4c0 43.6-25.6 63.5-62.9 63.5zm85.8-43L301 382.1c9 14.7 20.8 25.6 41.5 25.6c17.4 0 28.6-8.7 28.6-20.8c0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5c0-31.6 24.1-55.6 61.6-55.6c26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18c-12.3 0-20.1 7.8-20.1 18c0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2c0 37.8-29.8 58.6-69.7 58.6c-39.1 0-64.4-18.6-76.7-43z\"],microsoft:[448,512,[],\"f3ca\",\"M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z\"],qq:[448,512,[],\"f1d6\",\"M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z\"],orcid:[512,512,[],\"f8d2\",\"M294.75 188.19h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.76h-29.84v-207.5h29.84zm-14.92-231.14a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1-19.57 19.57zM300 369h-81V161.26h80.6c76.73 0 110.44 54.83 110.44 103.85C410 318.39 368.38 369 300 369z\"],java:[384,512,[],\"f4e4\",\"M277.74 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.84 0 242.84 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1-2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0-8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.84 509.4 401 461.3 348 437.4zM124.44 396c-78.7 22 47.9 67.4 148.1 24.5a185.89 185.89 0 0 1-28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.64 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1-21.1-12.8z\"],invision:[448,512,[],\"f7b0\",\"M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9.7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3.1-14.3.9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z\"],\"creative-commons-pd-alt\":[496,512,[],\"f4ed\",\"M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6.9 41.6z\"],centercode:[512,512,[],\"f380\",\"M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z\"],\"glide-g\":[448,512,[],\"f2a6\",\"M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z\"],drupal:[448,512,[],\"f1a9\",\"M303.973,108.136C268.2,72.459,234.187,38.35,224.047,0c-9.957,38.35-44.25,72.459-80.019,108.136C90.467,161.7,29.716,222.356,29.716,313.436c-2.337,107.3,82.752,196.18,190.053,198.517S415.948,429.2,418.285,321.9q.091-4.231,0-8.464C418.285,222.356,357.534,161.7,303.973,108.136Zm-174.326,223a130.282,130.282,0,0,0-15.211,24.153,4.978,4.978,0,0,1-3.319,2.766h-1.659c-4.333,0-9.219-8.481-9.219-8.481h0c-1.29-2.028-2.489-4.149-3.687-6.361l-.83-1.752c-11.247-25.72-1.475-62.318-1.475-62.318h0a160.585,160.585,0,0,1,23.231-49.873A290.8,290.8,0,0,1,138.5,201.613l9.219,9.219,43.512,44.434a4.979,4.979,0,0,1,0,6.638L145.78,312.33h0Zm96.612,127.311a67.2,67.2,0,0,1-49.781-111.915c14.2-16.871,31.528-33.464,50.334-55.313,22.309,23.785,36.875,40.1,51.164,57.986a28.413,28.413,0,0,1,2.95,4.425,65.905,65.905,0,0,1,11.984,37.981,66.651,66.651,0,0,1-66.466,66.836ZM352.371,351.6h0a7.743,7.743,0,0,1-6.176,5.347H344.9a11.249,11.249,0,0,1-6.269-5.07h0a348.21,348.21,0,0,0-39.456-48.952L281.387,284.49,222.3,223.185a497.888,497.888,0,0,1-35.4-36.322,12.033,12.033,0,0,0-.922-1.382,35.4,35.4,0,0,1-4.7-9.219V174.51a31.346,31.346,0,0,1,9.218-27.656c11.432-11.431,22.955-22.954,33.833-34.939,11.984,13.275,24.8,26,37.428,38.627h0a530.991,530.991,0,0,1,69.6,79.1,147.494,147.494,0,0,1,27.011,83.8A134.109,134.109,0,0,1,352.371,351.6Z\"],jxl:[448,512,[],\"e67b\",\"M412.2 32H35.8C16 32 0 48 0 67.8V444.2C0 464 16 480 35.8 480H412.2c19.8 0 35.8-16 35.8-35.8V67.8C448 48 432 32 412.2 32zM378.6 333.7c0 40.2-32.6 72.8-72.8 72.8H70.2c0-40.2 32.6-72.8 72.8-72.8H378.6zm0-113.9c0 40.2-32.6 72.8-72.8 72.8H70.2c0-40.2 32.6-72.8 72.8-72.8H378.6zm0-113.9c0 40.2-32.6 72.8-72.8 72.8H70.2c0-40.2 32.6-72.8 72.8-72.8H378.6z\"],\"hire-a-helper\":[512,512,[],\"f3b0\",\"M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z\"],\"creative-commons-by\":[496,512,[],\"f4e7\",\"M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z\"],unity:[448,512,[],\"e049\",\"M243.583 91.6027L323.695 138.384C326.575 140.026 326.68 144.583 323.695 146.225L228.503 201.854C225.623 203.55 222.22 203.444 219.549 201.854L124.357 146.225C121.425 144.636 121.373 139.973 124.357 138.384L204.417 91.6027V0L0 119.417V358.252L78.3843 312.477V218.914C78.3319 215.576 82.2066 213.192 85.0865 214.993L180.279 270.622C183.159 272.318 184.782 275.338 184.782 278.464V389.669C184.834 393.007 180.959 395.391 178.079 393.589L97.9673 346.808L19.583 392.583L224 512L428.417 392.583L350.033 346.808L269.921 393.589C267.093 395.338 263.114 393.06 263.218 389.669V278.464C263.218 275.126 265.051 272.159 267.721 270.622L362.914 214.993C365.741 213.245 369.72 215.47 369.616 218.914V312.477L448 358.252V119.417L243.583 0V91.6027Z\"],whmcs:[448,512,[],\"f40d\",\"M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z\"],rocketchat:[576,512,[],\"f3e8\",\"M284.046,224.8a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,284.046,224.8Zm-110.45,0a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,173.6,224.8Zm220.923,0a34.114,34.114,0,1,0,34.317,34.113A34.215,34.215,0,0,0,394.519,224.8Zm153.807-55.319c-15.535-24.172-37.31-45.57-64.681-63.618-52.886-34.817-122.374-54-195.666-54a405.975,405.975,0,0,0-72.032,6.357,238.524,238.524,0,0,0-49.51-36.588C99.684-11.7,40.859.711,11.135,11.421A14.291,14.291,0,0,0,5.58,34.782C26.542,56.458,61.222,99.3,52.7,138.252c-33.142,33.9-51.112,74.776-51.112,117.337,0,43.372,17.97,84.248,51.112,118.148,8.526,38.956-26.154,81.816-47.116,103.491a14.284,14.284,0,0,0,5.555,23.34c29.724,10.709,88.549,23.147,155.324-10.2a238.679,238.679,0,0,0,49.51-36.589A405.972,405.972,0,0,0,288,460.14c73.313,0,142.8-19.159,195.667-53.975,27.371-18.049,49.145-39.426,64.679-63.619,17.309-26.923,26.07-55.916,26.07-86.125C574.394,225.4,565.634,196.43,548.326,169.485ZM284.987,409.9a345.65,345.65,0,0,1-89.446-11.5l-20.129,19.393a184.366,184.366,0,0,1-37.138,27.585,145.767,145.767,0,0,1-52.522,14.87c.983-1.771,1.881-3.563,2.842-5.356q30.258-55.68,16.325-100.078c-32.992-25.962-52.778-59.2-52.778-95.4,0-83.1,104.254-150.469,232.846-150.469s232.867,67.373,232.867,150.469C517.854,342.525,413.6,409.9,284.987,409.9Z\"],vk:[448,512,[],\"f189\",\"M31.4907 63.4907C0 94.9813 0 145.671 0 247.04V264.96C0 366.329 0 417.019 31.4907 448.509C62.9813 480 113.671 480 215.04 480H232.96C334.329 480 385.019 480 416.509 448.509C448 417.019 448 366.329 448 264.96V247.04C448 145.671 448 94.9813 416.509 63.4907C385.019 32 334.329 32 232.96 32H215.04C113.671 32 62.9813 32 31.4907 63.4907ZM75.6 168.267H126.747C128.427 253.76 166.133 289.973 196 297.44V168.267H244.16V242C273.653 238.827 304.64 205.227 315.093 168.267H363.253C359.313 187.435 351.46 205.583 340.186 221.579C328.913 237.574 314.461 251.071 297.733 261.227C316.41 270.499 332.907 283.63 346.132 299.751C359.357 315.873 369.01 334.618 374.453 354.747H321.44C316.555 337.262 306.614 321.61 292.865 309.754C279.117 297.899 262.173 290.368 244.16 288.107V354.747H238.373C136.267 354.747 78.0267 284.747 75.6 168.267Z\"],untappd:[640,512,[],\"f405\",\"M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z\"],mailchimp:[448,512,[],\"f59e\",\"M330.61 243.52a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43.45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277.05 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0-30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06.85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1.9.34 1.17.81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92.34 4.31.52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81.28-15.96zm-218.79 78.9c-1.32.31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27.57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0-.2-2.33c.03.89.68-1.3-3.35-.39zm299.72-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.42-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.81 25.78 273.85l14.76 12.51a72.49 72.49 0 0 0-4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.06 267.9 133.28 322.29 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.55C69.14 252.5 55.78 261.09 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.21C112.42 90.56 186.19 39.68 220.36 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.18 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.85 102.85 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.86 106.86 0 0 1 362.55 421a132.45 132.45 0 0 1-20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1-3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0-1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48.5 15.89 1.59 22.88 1.88 11.69.5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49.29 6.72 1.1 23 1.38 27.63.63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.48 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.37-21.35.69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.46 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73.73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75.75 0 0 0 1.16.79c11.49-7.83 31.48-16.22 49-17.3a.77.77 0 0 1 .52 1.38 41.86 41.86 0 0 0-7.71 7.74.75.75 0 0 0 .59 1.19c12.31.09 29.66 4.4 41 10.74.76.43.22 1.91-.64 1.72-69.55-15.94-123.08 18.53-134.5 26.83a.76.76 0 0 1-1-1.12z\"],\"css3-alt\":[384,512,[],\"f38b\",\"M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z\"],\"square-reddit\":[448,512,[\"reddit-square\"],\"f1a2\",\"M64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32zM305.9 166.4c20.6 0 37.3-16.7 37.3-37.3s-16.7-37.3-37.3-37.3c-18 0-33.1 12.8-36.6 29.8c-30.2 3.2-53.8 28.8-53.8 59.9l0 .2c-32.8 1.4-62.8 10.7-86.6 25.5c-8.8-6.8-19.9-10.9-32-10.9c-28.9 0-52.3 23.4-52.3 52.3c0 21 12.3 39 30.1 47.4c1.7 60.7 67.9 109.6 149.3 109.6s147.6-48.9 149.3-109.7c17.7-8.4 29.9-26.4 29.9-47.3c0-28.9-23.4-52.3-52.3-52.3c-12 0-23 4-31.9 10.8c-24-14.9-54.3-24.2-87.5-25.4l0-.1c0-22.2 16.5-40.7 37.9-43.7l0 0c3.9 16.5 18.7 28.7 36.3 28.7zM155 248.1c14.6 0 25.8 15.4 25 34.4s-11.8 25.9-26.5 25.9s-27.5-7.7-26.6-26.7s13.5-33.5 28.1-33.5zm166.4 33.5c.9 19-12 26.7-26.6 26.7s-25.6-6.9-26.5-25.9c-.9-19 10.3-34.4 25-34.4s27.3 14.6 28.1 33.5zm-42.1 49.6c-9 21.5-30.3 36.7-55.1 36.7s-46.1-15.1-55.1-36.7c-1.1-2.6 .7-5.4 3.4-5.7c16.1-1.6 33.5-2.5 51.7-2.5s35.6 .9 51.7 2.5c2.7 .3 4.5 3.1 3.4 5.7z\"],\"vimeo-v\":[448,512,[],\"f27d\",\"M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z\"],contao:[512,512,[],\"f26d\",\"M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z\"],\"square-font-awesome\":[448,512,[],\"e5ad\",\"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm90 122c0 9.3-4.8 17.4-12.1 22l188.9 0c7.3 0 13.2 5.9 13.2 13.2c0 1.8-.4 3.7-1.1 5.4L312 264l30.9 69.4c.7 1.7 1.1 3.5 1.1 5.4c0 7.3-5.9 13.2-13.2 13.2L144 352l0 32-32 0 0-32 0-176 0-1.5c-6.1-4.8-10-12.2-10-20.5c0-14.4 11.6-26 26-26s26 11.6 26 26z\"],deskpro:[480,512,[],\"f38f\",\"M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z\"],brave:[448,512,[],\"e63c\",\"M145.5 0H224h78.5l44.7 50.8s39.3-10.9 57.8 7.6s33.8 34.9 33.8 34.9l-12 29.5 15.3 43.7s-44.9 170.2-50.1 191c-10.4 40.9-17.4 56.8-46.9 77.5s-82.9 56.8-91.6 62.2c-1.9 1.2-3.9 2.5-5.9 3.9c-7.5 5.1-15.8 10.8-23.5 10.8l0 0 0 0c-7.7 0-16.1-5.7-23.5-10.8c-2-1.4-4-2.8-5.9-3.9c-8.7-5.5-62.1-41.5-91.6-62.2s-36.5-36.6-46.9-77.5c-5.3-20.8-50.1-191-50.1-191l15.3-43.7L9.2 93.3s15.3-16.4 33.8-34.9s57.8-7.6 57.8-7.6L145.5 0zM224 407.6l0 0c3.7 0 8.9-4.7 13-8.4c.6-.5 1.2-1.1 1.7-1.5c4.2-3.7 47.8-37.5 51-39.8s5.4-6.5 1.9-8.7c-2.8-1.7-10-5.5-20.3-10.8c-3-1.6-6.3-3.2-9.7-5c-15.4-8-34.5-14.7-37.5-14.7l0 0 0 0c-3 0-22.1 6.8-37.5 14.7c-3.5 1.8-6.7 3.5-9.7 5c-10.3 5.3-17.6 9.1-20.3 10.8c-3.6 2.2-1.4 6.4 1.9 8.7s46.8 36.1 51 39.8c.5 .5 1.1 1 1.7 1.5c4.1 3.7 9.3 8.4 13 8.4l0 0zm0-165.7l0 0c4.7 0 17.6-3 26.4-5l0 0 2-.5c7.8-1.8 7.3-6.3 6.4-13c-.1-.8-.2-1.6-.3-2.4c-.6-6.1-5.8-33.1-9.1-50.3c-1.1-5.8-2-10.5-2.4-12.9c-1.5-8.1-.6-9.4 .7-11.3c.2-.3 .5-.7 .7-1.1c1.4-2.3 16-6.2 27.9-9.5l0 0c2.5-.7 4.8-1.3 6.9-1.9c10.6-3 32.4-.6 44.2 .6c1.8 .2 3.4 .4 4.7 .5c9.6 .9 10.4 2.3 7.2 3.8c-2.3 1.1-16.2 6.3-28.7 10.9l0 0 0 0c-4.7 1.8-9.2 3.5-12.8 4.8c-1.5 .5-3 1.1-4.5 1.7c-12.5 4.6-27.2 10-28.9 19.4c-1.5 8.3 5.2 19.9 11.3 30.3l0 0c1.6 2.8 3.2 5.5 4.6 8.1c6.3 11.9 6.5 13.3 6.1 18.1c-.4 3.9-14.5 12.7-22.4 17.6l0 0c-1.8 1.1-3.3 2.1-4.2 2.7c-.8 .5-2.1 1.4-3.8 2.4c-8.6 5.2-26.3 16-26.3 22.5c0 7.8 24.6 28.1 32.4 33.2s28.9 16.1 37.9 17.8s23-8.5 31.2-23.8c7.7-14.4 1.7-28.5-3.2-40l-.9-2.2c-4.5-10.6 1.9-17 6.2-21.3l0 0c.5-.5 1-1 1.4-1.4L377.7 194c1.3-1.3 2.5-2.6 3.7-3.8l0 0c5.8-5.7 10.8-10.5 10.8-22.8c0-14.9-57.5-84.5-57.5-84.5s-48.5 9.3-55.1 9.3c-5.2 0-15.3-3.5-25.8-7.1l0 0c-2.7-.9-5.4-1.9-8-2.7C232.8 78.1 224 78 224 78l0 0 0 0s-8.7 0-21.8 4.4c-2.7 .9-5.4 1.8-8 2.7l0 0c-10.5 3.6-20.6 7.1-25.8 7.1c-6.5 0-55.1-9.3-55.1-9.3s-57.5 69.6-57.5 84.5c0 12.3 4.9 17.1 10.8 22.8l0 0c1.2 1.2 2.5 2.4 3.7 3.8l43.1 45.8c.4 .5 .9 .9 1.4 1.4l0 0c4.3 4.3 10.6 10.7 6.2 21.3l-.9 2.2c-4.9 11.5-11 25.6-3.2 40c8.2 15.3 22.2 25.5 31.2 23.8s30.1-12.7 37.9-17.8s32.4-25.4 32.4-33.2c0-6.5-17.7-17.3-26.3-22.5c-1.7-1-3.1-1.9-3.8-2.4c-.9-.6-2.4-1.5-4.2-2.7c-7.9-4.9-22-13.7-22.4-17.6c-.4-4.8-.3-6.2 6.1-18.1c1.3-2.5 2.9-5.3 4.6-8.1c6-10.4 12.8-22 11.3-30.3c-1.7-9.4-16.4-14.8-28.9-19.4c-1.6-.6-3.1-1.1-4.5-1.7c-3.6-1.4-8.1-3.1-12.8-4.8l-.1 0c-12.5-4.7-26.4-9.9-28.7-10.9c-3.2-1.5-2.3-2.8 7.2-3.8c1.3-.1 2.9-.3 4.7-.5c11.8-1.3 33.6-3.6 44.2-.6c2.1 .6 4.4 1.2 6.9 1.9c11.9 3.2 26.5 7.2 27.9 9.5c.2 .4 .5 .7 .7 1.1c1.3 1.9 2.2 3.2 .7 11.3c-.4 2.4-1.3 7.1-2.4 12.9c-3.3 17.2-8.5 44.2-9.1 50.3c-.1 .8-.2 1.7-.3 2.4c-.8 6.7-1.4 11.2 6.4 13l2 .5 0 0c8.8 2 21.8 5 26.4 5l0 0z\"],sistrix:[448,512,[],\"f3ee\",\"M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z\"],\"square-instagram\":[448,512,[\"instagram-square\"],\"e055\",\"M194.4 211.7a53.3 53.3 0 1 0 59.3 88.7 53.3 53.3 0 1 0 -59.3-88.7zm142.3-68.4c-5.2-5.2-11.5-9.3-18.4-12c-18.1-7.1-57.6-6.8-83.1-6.5c-4.1 0-7.9 .1-11.2 .1c-3.3 0-7.2 0-11.4-.1c-25.5-.3-64.8-.7-82.9 6.5c-6.9 2.7-13.1 6.8-18.4 12s-9.3 11.5-12 18.4c-7.1 18.1-6.7 57.7-6.5 83.2c0 4.1 .1 7.9 .1 11.1s0 7-.1 11.1c-.2 25.5-.6 65.1 6.5 83.2c2.7 6.9 6.8 13.1 12 18.4s11.5 9.3 18.4 12c18.1 7.1 57.6 6.8 83.1 6.5c4.1 0 7.9-.1 11.2-.1c3.3 0 7.2 0 11.4 .1c25.5 .3 64.8 .7 82.9-6.5c6.9-2.7 13.1-6.8 18.4-12s9.3-11.5 12-18.4c7.2-18 6.8-57.4 6.5-83c0-4.2-.1-8.1-.1-11.4s0-7.1 .1-11.4c.3-25.5 .7-64.9-6.5-83l0 0c-2.7-6.9-6.8-13.1-12-18.4zm-67.1 44.5A82 82 0 1 1 178.4 324.2a82 82 0 1 1 91.1-136.4zm29.2-1.3c-3.1-2.1-5.6-5.1-7.1-8.6s-1.8-7.3-1.1-11.1s2.6-7.1 5.2-9.8s6.1-4.5 9.8-5.2s7.6-.4 11.1 1.1s6.5 3.9 8.6 7s3.2 6.8 3.2 10.6c0 2.5-.5 5-1.4 7.3s-2.4 4.4-4.1 6.2s-3.9 3.2-6.2 4.2s-4.8 1.5-7.3 1.5l0 0c-3.8 0-7.5-1.1-10.6-3.2zM448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM357 389c-18.7 18.7-41.4 24.6-67 25.9c-26.4 1.5-105.6 1.5-132 0c-25.6-1.3-48.3-7.2-67-25.9s-24.6-41.4-25.8-67c-1.5-26.4-1.5-105.6 0-132c1.3-25.6 7.1-48.3 25.8-67s41.5-24.6 67-25.8c26.4-1.5 105.6-1.5 132 0c25.6 1.3 48.3 7.1 67 25.8s24.6 41.4 25.8 67c1.5 26.3 1.5 105.4 0 131.9c-1.3 25.6-7.1 48.3-25.8 67z\"],\"battle-net\":[512,512,[],\"f835\",\"M448.61 225.62c26.87.18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.05-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.18 7.14 238.7 1.07 228.18.22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.56-9.22 5.22 53 29.75 101.82 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61.15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.82 4.6 143.29-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.22c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.69c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.35c-10.29-5.34-21.16-10.34-32.38-15.05a722.459 722.459 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.18 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.78 718.78 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.34 98-132.75 115.92-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.07 12.3.91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.23 695.23 0 0 0 44.67 152.84c.93-.38 1.84.88 18.67-8.25-26.33-74.47-33.76-138.17-34-173.43 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.32 30.71q-10.69 15.66-23.33 32.47C365.63 152 339.1 145.84 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.63 717.63 0 0 0-115.34-31.71 646.608 646.608 0 0 0-39.39-6.05c-.07.45-1.81 1.85-2.16 20.33C300 190.28 358.78 215.68 389.36 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.55 306.58 111zm-130.65 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.06 74.8\"],\"the-red-yeti\":[512,512,[],\"f69d\",\"M488.23 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0-25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5.5a239.36 239.36 0 0 0-68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0-.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.26 194.26 0 0 0-46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.18 200.18 0 0 0-27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7.7 3.4 1.2 5.2 0 25.5.4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.84 181.84 0 0 0 495 255a44.74 44.74 0 0 0-6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.44 242.44 0 0 1-27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1-1.7-15.2c5.4.5 8.8 3.4 9.3 10.1.5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8.9-.7 14.8h-2.5a62.32 62.32 0 0 0-8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5.5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.68 234.68 0 0 0-6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1.5c-11.8 13.5-27.8 21.9-48.5 24.8a201.26 201.26 0 0 1-23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0-14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7.5 1.2c2 .2 3.9.5 6.2.7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4.5 13 1 19.4 1.2 6.4 0 8.4.5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.13 141.13 0 0 1-3 28.3 209.91 209.91 0 0 1-16 46l2.5.5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2.2-.2.2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.27-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3.5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.57 262.57 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2.7 89.5zm115.3-214.4l-2.5.5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.82 214.82 0 0 1-93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2.4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7.5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.21 254.21 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0-14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2.5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5.5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6.3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5.5.5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0-.5-1.7 14.21 14.21 0 0 0-13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0-2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1-11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9.5.5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1.5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2.5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1.5c-5.9 1.2-12.3 4.2-19.4 8.4z\"],\"square-hacker-news\":[448,512,[\"hacker-news-square\"],\"f3af\",\"M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM21 229.2c0 0 .1-.1 .1-.2s.1-.2 .2-.2c0 .1 0 .3-.1 .4H21zM239.2 384H207.8V281.3L128 128h37.3c41.5 77.7 48.1 95.8 54.1 112c1.6 4.3 3.1 8.5 5.2 13.6c3.2-7 5.1-11.9 7.1-17.3c5.9-15.3 12.8-33.2 53.5-108.3H320L239.2 283.1V384z\"],edge:[512,512,[],\"f282\",\"M120.1 37.44C161.1 12.23 207.7-.7753 255 .0016C423 .0016 512 123.8 512 219.5C511.9 252.2 499 283.4 476.1 306.7C453.2 329.9 422.1 343.2 389.4 343.7C314.2 343.7 297.9 320.6 297.9 311.7C297.9 307.9 299.1 305.5 302.7 302.3L303.7 301.1L304.1 299.5C314.6 288 320 273.3 320 257.9C320 179.2 237.8 115.2 136 115.2C98.46 114.9 61.46 124.1 28.48 142.1C55.48 84.58 111.2 44.5 119.8 38.28C120.6 37.73 120.1 37.44 120.1 37.44V37.44zM135.7 355.5C134.3 385.5 140.3 415.5 152.1 442.7C165.7 469.1 184.8 493.7 208.6 512C149.1 500.5 97.11 468.1 59.2 422.7C21.12 376.3 0 318.4 0 257.9C0 206.7 62.4 163.5 136 163.5C172.6 162.9 208.4 174.4 237.8 196.2L234.2 197.4C182.7 215 135.7 288.1 135.7 355.5V355.5zM469.8 400L469.1 400.1C457.3 418.9 443.2 435.2 426.9 449.6C396.1 477.6 358.8 495.1 318.1 499.5C299.5 499.8 281.3 496.3 264.3 488.1C238.7 477.8 217.2 458.1 202.7 435.1C188.3 411.2 181.6 383.4 183.7 355.5C183.1 335.4 189.1 315.2 198.7 297.3C212.6 330.4 236.2 358.6 266.3 378.1C296.4 397.6 331.8 407.6 367.7 406.7C398.7 407 429.8 400 457.9 386.2L459.8 385.3C463.7 383 467.5 381.4 471.4 385.3C475.9 390.2 473.2 394.5 470.2 399.3C470 399.5 469.9 399.8 469.8 400V400z\"],threads:[448,512,[],\"e618\",\"M331.5 235.7c2.2 .9 4.2 1.9 6.3 2.8c29.2 14.1 50.6 35.2 61.8 61.4c15.7 36.5 17.2 95.8-30.3 143.2c-36.2 36.2-80.3 52.5-142.6 53h-.3c-70.2-.5-124.1-24.1-160.4-70.2c-32.3-41-48.9-98.1-49.5-169.6V256v-.2C17 184.3 33.6 127.2 65.9 86.2C102.2 40.1 156.2 16.5 226.4 16h.3c70.3 .5 124.9 24 162.3 69.9c18.4 22.7 32 50 40.6 81.7l-40.4 10.8c-7.1-25.8-17.8-47.8-32.2-65.4c-29.2-35.8-73-54.2-130.5-54.6c-57 .5-100.1 18.8-128.2 54.4C72.1 146.1 58.5 194.3 58 256c.5 61.7 14.1 109.9 40.3 143.3c28 35.6 71.2 53.9 128.2 54.4c51.4-.4 85.4-12.6 113.7-40.9c32.3-32.2 31.7-71.8 21.4-95.9c-6.1-14.2-17.1-26-31.9-34.9c-3.7 26.9-11.8 48.3-24.7 64.8c-17.1 21.8-41.4 33.6-72.7 35.3c-23.6 1.3-46.3-4.4-63.9-16c-20.8-13.8-33-34.8-34.3-59.3c-2.5-48.3 35.7-83 95.2-86.4c21.1-1.2 40.9-.3 59.2 2.8c-2.4-14.8-7.3-26.6-14.6-35.2c-10-11.7-25.6-17.7-46.2-17.8H227c-16.6 0-39 4.6-53.3 26.3l-34.4-23.6c19.2-29.1 50.3-45.1 87.8-45.1h.8c62.6 .4 99.9 39.5 103.7 107.7l-.2 .2zm-156 68.8c1.3 25.1 28.4 36.8 54.6 35.3c25.6-1.4 54.6-11.4 59.5-73.2c-13.2-2.9-27.8-4.4-43.4-4.4c-4.8 0-9.6 .1-14.4 .4c-42.9 2.4-57.2 23.2-56.2 41.8l-.1 .1z\"],napster:[496,512,[],\"f3d2\",\"M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z\"],\"square-snapchat\":[448,512,[\"snapchat-square\"],\"f2ad\",\"M384,32H64A64,64,0,0,0,0,96V416a64,64,0,0,0,64,64H384a64,64,0,0,0,64-64V96A64,64,0,0,0,384,32Zm-3.907,319.309-.083.1a32.364,32.364,0,0,1-8.717,6.823,90.26,90.26,0,0,1-20.586,8.2,12.694,12.694,0,0,0-3.852,1.76c-2.158,1.909-2.1,4.64-4.4,8.55a23.137,23.137,0,0,1-6.84,7.471c-6.707,4.632-14.244,4.923-22.23,5.23-7.214.274-15.39.581-24.729,3.669-3.761,1.245-7.753,3.694-12.377,6.533-11.265,6.9-26.68,16.353-52.3,16.353s-40.925-9.4-52.106-16.279c-4.657-2.888-8.675-5.362-12.543-6.64-9.339-3.08-17.516-3.4-24.729-3.67-7.986-.307-15.523-.6-22.231-5.229a23.085,23.085,0,0,1-6.01-6.11c-3.2-4.632-2.855-7.8-5.254-9.895a13.428,13.428,0,0,0-4.1-1.834,89.986,89.986,0,0,1-20.313-8.127,32.905,32.905,0,0,1-8.3-6.284c-6.583-6.757-8.276-14.776-5.686-21.824,3.436-9.338,11.571-12.111,19.4-16.262,14.776-8.027,26.348-18.055,34.433-29.884a68.236,68.236,0,0,0,5.985-10.567c.789-2.158.772-3.329.241-4.416a7.386,7.386,0,0,0-2.208-2.217c-2.532-1.676-5.113-3.353-6.882-4.5-3.27-2.141-5.868-3.818-7.529-4.98-6.267-4.383-10.65-9.04-13.4-14.245a28.4,28.4,0,0,1-1.369-23.584c4.134-10.924,14.469-17.706,26.978-17.706a37.141,37.141,0,0,1,7.845.83c.689.15,1.37.307,2.042.482-.108-7.43.058-15.357.722-23.119,2.358-27.261,11.912-41.589,21.874-52.994a86.836,86.836,0,0,1,22.28-17.931C188.254,100.383,205.312,96,224,96s35.828,4.383,50.944,13.016a87.169,87.169,0,0,1,22.239,17.9c9.961,11.406,19.516,25.709,21.874,52.995a231.194,231.194,0,0,1,.713,23.118c.673-.174,1.362-.332,2.051-.481a37.131,37.131,0,0,1,7.844-.83c12.5,0,22.82,6.782,26.971,17.706a28.37,28.37,0,0,1-1.4,23.559c-2.74,5.2-7.123,9.861-13.39,14.244-1.668,1.187-4.258,2.864-7.529,4.981-1.835,1.187-4.541,2.947-7.164,4.682a6.856,6.856,0,0,0-1.951,2.034c-.506,1.046-.539,2.191.166,4.208a69.015,69.015,0,0,0,6.085,10.792c8.268,12.1,20.188,22.313,35.454,30.407,1.486.772,2.98,1.5,4.441,2.258.722.332,1.569.763,2.491,1.3,4.9,2.723,9.2,6.01,11.455,12.153C387.821,336.915,386.269,344.7,380.093,351.309Zm-16.719-18.461c-50.313-24.314-58.332-61.918-58.689-64.749-.431-3.379-.921-6.035,2.806-9.472,3.594-3.328,19.541-13.19,23.965-16.278,7.33-5.114,10.534-10.219,8.16-16.495-1.66-4.316-5.686-5.976-9.961-5.976a18.5,18.5,0,0,0-3.993.448c-8.035,1.743-15.838,5.769-20.354,6.857a7.1,7.1,0,0,1-1.66.224c-2.408,0-3.279-1.071-3.088-3.968.564-8.783,1.759-25.925.373-41.937-1.884-22.032-8.99-32.948-17.432-42.6-4.051-4.624-23.135-24.654-59.536-24.654S168.53,134.359,164.479,139c-8.434,9.654-15.531,20.57-17.432,42.6-1.386,16.013-.141,33.147.373,41.937.166,2.756-.68,3.968-3.088,3.968a7.1,7.1,0,0,1-1.66-.224c-4.507-1.087-12.31-5.113-20.346-6.856a18.494,18.494,0,0,0-3.993-.449c-4.25,0-8.3,1.636-9.961,5.977-2.374,6.276.847,11.381,8.168,16.494,4.425,3.088,20.371,12.958,23.966,16.279,3.719,3.437,3.237,6.093,2.805,9.471-.356,2.79-8.384,40.394-58.689,64.749-2.946,1.428-7.96,4.45.88,9.331,13.88,7.628,23.111,6.807,30.3,11.43,6.093,3.927,2.5,12.394,6.923,15.449,5.454,3.76,21.583-.266,42.335,6.6,17.433,5.744,28.116,22.015,58.963,22.015s41.788-16.3,58.938-21.973c20.795-6.865,36.89-2.839,42.336-6.6,4.433-3.055.822-11.522,6.923-15.448,7.181-4.624,16.411-3.8,30.3-11.472C371.36,337.355,366.346,334.333,363.374,332.848Z\"],\"google-plus-g\":[640,512,[],\"f0d5\",\"M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z\"],artstation:[512,512,[],\"f77a\",\"M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z\"],markdown:[640,512,[],\"f60f\",\"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z\"],sourcetree:[448,512,[],\"f7d3\",\"M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.86 202.86 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.18 203.18 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z\"],\"google-plus\":[512,512,[],\"f2b3\",\"M256,8C119.1,8,8,119.1,8,256S119.1,504,256,504,504,392.9,504,256,392.9,8,256,8ZM185.3,380a124,124,0,0,1,0-248c31.3,0,60.1,11,83,32.3l-33.6,32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9,0-77.2,35.5-77.2,78.1S142.3,334,185.3,334c32.6,0,64.9-19.1,70.1-53.3H185.3V238.1H302.2a109.2,109.2,0,0,1,1.9,20.7c0,70.8-47.5,121.2-118.8,121.2ZM415.5,273.8v35.5H380V273.8H344.5V238.3H380V202.8h35.5v35.5h35.2v35.5Z\"],diaspora:[512,512,[],\"f791\",\"M251.64 354.55c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.25s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1.6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3.4-2 1-148.6 1.7-149.6.8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3.8.9 31.9 102.2 31.5 102.6-.9.9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z\"],foursquare:[368,512,[],\"f180\",\"M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z\"],\"stack-overflow\":[384,512,[],\"f16c\",\"M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z\"],\"github-alt\":[480,512,[],\"f113\",\"M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z\"],\"phoenix-squadron\":[512,512,[],\"f511\",\"M96 63.38C142.49 27.25 201.55 7.31 260.51 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.17 27 191 48.84 162.21 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3.3a203 203 0 0 1-35.82 15.37c-20 6.17-42.16 8.46-62.1.78 12.79 1.73 26.06.31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.57 526.57 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0-51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28.75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.64 183.64 0 0 0-14.21-104.64c20.78 32 32.34 69.58 35.71 107.48.49 12.73.49 25.51 0 38.23A243.21 243.21 0 0 1 482 371.34c-26.12 47.34-68 85.63-117.19 108-78.29 36.23-174.68 31.32-248-14.68A248.34 248.34 0 0 1 25.36 366 238.34 238.34 0 0 1 0 273.08v-31.34C3.93 172 40.87 105.82 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z\"],pagelines:[384,512,[],\"f18c\",\"M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z\"],algolia:[512,512,[],\"f36c\",\"M256 0C116.1 0 2 112.7 0 252.1C-2 393.6 112.9 510.8 254.5 511.6c43.7 .3 85.9-10.4 123.3-30.7c3.6-2 4.2-7 1.1-9.7l-24-21.2c-4.9-4.3-11.8-5.5-17.8-3c-26.1 11.1-54.5 16.8-83.7 16.4C139 461.9 46.5 366.8 48.3 252.4C50.1 139.5 142.6 48.2 256 48.2H463.7V417.2L345.9 312.5c-3.8-3.4-9.7-2.7-12.7 1.3c-18.9 25-49.7 40.6-83.9 38.2c-47.5-3.3-85.9-41.5-89.5-88.9c-4.2-56.6 40.6-103.9 96.3-103.9c50.4 0 91.9 38.8 96.2 88c.4 4.4 2.4 8.5 5.7 11.4l30.7 27.2c3.5 3.1 9 1.2 9.9-3.4c2.2-11.8 3-24.2 2.1-36.8c-4.9-72-63.3-130-135.4-134.4c-82.7-5.1-151.8 59.5-154 140.6c-2.1 78.9 62.6 147 141.6 148.7c33 .7 63.6-9.6 88.3-27.6L495 509.4c6.6 5.8 17 1.2 17-7.7V9.7c0-5.4-4.4-9.7-9.7-9.7H256z\"],\"red-river\":[448,512,[],\"f3e3\",\"M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z\"],\"creative-commons-sa\":[496,512,[],\"f4ef\",\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z\"],safari:[512,512,[],\"f267\",\"M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z\"],google:[488,512,[],\"f1a0\",\"M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z\"],\"square-font-awesome-stroke\":[448,512,[\"font-awesome-alt\"],\"f35c\",\"M64 64C46.3 64 32 78.3 32 96l0 320c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32L64 64zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm154 58c0 9.3-4.8 17.4-12.1 22l188.9 0c7.3 0 13.2 5.9 13.2 13.2c0 1.8-.4 3.7-1.1 5.4L312 264l30.9 69.4c.8 1.7 1.1 3.5 1.1 5.4c0 7.3-5.9 13.2-13.2 13.2L144 352l0 32-32 0 0-32 0-176 0-1.5c-6.1-4.8-10-12.2-10-20.5c0-14.4 11.6-26 26-26s26 11.6 26 26z\"],atlassian:[512,512,[],\"f77b\",\"M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8.1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6.1z\"],\"linkedin-in\":[448,512,[],\"f0e1\",\"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z\"],\"digital-ocean\":[512,512,[],\"f391\",\"M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z\"],nimblr:[384,512,[],\"f5a8\",\"M246.6 299.29c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.25c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.76 159C157 159 89.45 178.77 59.25 227L14 0v335.48C14 433.13 93.61 512 191.76 512s177.76-78.95 177.76-176.52S290.13 159 191.76 159zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59s59.24-131.59 132.51-131.59 132.51 58.86 132.51 131.54S265 467.07 191.76 467.07z\"],chromecast:[512,512,[],\"f838\",\"M447.8,64H64c-23.6,0-42.7,19.1-42.7,42.7v63.9H64v-63.9h383.8v298.6H298.6V448H448c23.6,0,42.7-19.1,42.7-42.7V106.7 C490.7,83.1,471.4,64,447.8,64z M21.3,383.6L21.3,383.6l0,63.9h63.9C85.2,412.2,56.6,383.6,21.3,383.6L21.3,383.6z M21.3,298.6V341 c58.9,0,106.6,48.1,106.6,107h42.7C170.7,365.6,103.7,298.7,21.3,298.6z M213.4,448h42.7c-0.5-129.5-105.3-234.3-234.8-234.6l0,42.4 C127.3,255.6,213.3,342,213.4,448z\"],evernote:[384,512,[],\"f839\",\"M120.82 132.21c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56.22-.74 0-.37-.37L123.79 46.45c.38-.37.6-.22.38.37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.45v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.92-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.78 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.09 8.91 238.46 7.8 238.46C362.15 485.53 267.06 480 267.06 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.84c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z\"],\"hacker-news\":[448,512,[],\"f1d4\",\"M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\"],\"creative-commons-sampling\":[496,512,[],\"f4f0\",\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z\"],adversal:[512,512,[],\"f36a\",\"M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z\"],\"creative-commons\":[496,512,[],\"f25e\",\"M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z\"],\"watchman-monitoring\":[512,512,[],\"e087\",\"M256,16C123.452,16,16,123.452,16,256S123.452,496,256,496,496,388.548,496,256,388.548,16,256,16ZM121.69,429.122C70.056,388.972,36.741,326.322,36.741,256a218.519,218.519,0,0,1,9.587-64.122l102.9-17.895-.121,10.967-13.943,2.013s-.144,12.5-.144,19.549a12.778,12.778,0,0,0,4.887,10.349l9.468,7.4Zm105.692-283.27,8.48-7.618s6.934-5.38-.143-9.344c-7.188-4.024-39.53-34.5-39.53-34.5-5.348-5.477-8.257-7.347-15.46,0,0,0-32.342,30.474-39.529,34.5-7.078,3.964-.144,9.344-.144,9.344l8.481,7.618-.048,4.369L75.982,131.045c39.644-56.938,105.532-94.3,180.018-94.3A218.754,218.754,0,0,1,420.934,111.77l-193.512,37.7Zm34.063,329.269-33.9-250.857,9.467-7.4a12.778,12.778,0,0,0,4.888-10.349c0-7.044-.144-19.549-.144-19.549l-13.943-2.013-.116-10.474,241.711,31.391A218.872,218.872,0,0,1,475.259,256C475.259,375.074,379.831,472.212,261.445,475.121Z\"],fonticons:[448,512,[],\"f280\",\"M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z\"],weixin:[576,512,[],\"f1d7\",\"M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z\"],shirtsinbulk:[448,512,[],\"f214\",\"M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z\"],codepen:[512,512,[],\"f1cb\",\"M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z\"],\"git-alt\":[448,512,[],\"f841\",\"M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z\"],lyft:[512,512,[],\"f3c3\",\"M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z\"],rev:[448,512,[],\"f5b2\",\"M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z\"],windows:[448,512,[],\"f17a\",\"M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z\"],\"wizards-of-the-coast\":[640,512,[],\"f730\",\"M219.19 345.69c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92.26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.75 75.94c-.34 1.7-.55 1.67.79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.34-78.03-54.73-6.02-124.38 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79.26c63.89-58.4 131.19-77.25 184.35-73.85 58.4 3.67 100.03 34.04 100.03 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.28 240.42c.79 7.07 4.19 10.21 9.17 10.47 5.5.26 9.43-2.62 10.47-6.55.79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.75 89.32 13.1 226.8.79 241.2c-1.05.52-1.31.79.79 1.31 60.49 16.5 155.81 81.18 196.13 202.16l1.05.26c55.25-69.92 140.88-128.05 236.99-128.05 80.92 0 130.15 42.16 130.15 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2.79.79.79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26.52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78.79 3.4 2.09 9.69 2.36 14.93 0 1.05.79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.74 176 489.43 89.32 342.26 89.32zm-99.24 289.62c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5.28.39 12.13 16.57-4.71 31.16zm2.09-136.43l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.58l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52.26c1.31 1.83 2.09 2.88 3.4 4.71l-.26.52c-1.05-.26-2.36-.79-5.24.26-2.09.79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83.52 1.83 1.83 5.5l-.26.26c-3.06.61-4.65.34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26.26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76.26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52.26 3.14 4.98-.26.52c-3.53-1.76-7.35.76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26.52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4.79-8.9 2.62-12.83 3.93l-.26.26c.79 2.62 3.14 9.95 4.19 13.88.79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88.26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26.26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26.26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45.54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26.26c-4.71.52-14.14 2.36-22.52 4.19l-.26-.26.79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26.26c.52 2.36.79 3.14 1.57 5.5l-.26.26c-1.14-1.14-3.34-3.2-16.24-.79l-.26.26c.26 1.57 1.05 6.55 1.57 9.95l.26.26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26.26c.26 2.09 1.57 9.43 2.09 12.57l.26.26c1.15.38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25.02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24.79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69.26 2.36.52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26.26c-.52 1.83-1.83 6.02-1.83 6.28l-.52.52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26.52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69.79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.44c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24.59-7.27.26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09.79 5.5 2.09 7.59 2.88.48.48.18-1.87-1.05 25.14-.24 1.81.02 2.6.8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27.09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26.26-5.76-4.45.26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26.26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59.75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38.79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.53-191.95-129.62-53.42-1.05-94.27 15.45-132.76 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05.26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.58 101.05 231.87 93.23 231.52c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4.52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.98-35.88 67.04 1.05 167.33 40.85 199.8 139.83.78 2.1-.01 2.63-.79.27zM203.48 152.43s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.76 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.43 67.07c-58.4 0-106.05 12.05-114.96 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57.26c6.55-1.83 48.97-13.88 110.24-13.88 180.16 0 301.67 116.79 301.67 223.37v9.95c0 1.31.79 2.62 1.05.52.52-2.09.79-8.64.79-19.64.26-83.79-96.63-227.55-321.57-227.55zm211.06 169.68c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81.52 13.35 6.02 14.66 3.67 1.05 8.9.52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.65c1.83.52 3.14 1.05 5.76 1.83 0-1.83.52-8.38.79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z\"],\"square-viadeo\":[448,512,[\"viadeo-square\"],\"f2aa\",\"M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM118.3 381.2c-68-73.6-19.8-196.1 81.2-196.1c13.3 0 26.6 2.1 39.1 6.7c-4.3 8.4-7.3 17.6-8.4 27.1c-9.7-4.1-20.2-6-30.7-6c-48.8 0-84.6 41.7-84.6 88.9c0 43 28.5 78.7 69.5 85.9c61.5-24 72.9-117.6 72.9-175v0c0-7.3 0-14.8-.6-22.1c-11.2-32.9-26.6-64.6-44.2-94.5c27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70c0 54.1-21.9 99-68.3 128.2l-2.4 .2c50 1 86.2-38.6 86.2-87.2c0-12.2-2.1-24.3-6.9-35.7c9.5-1.9 18.5-5.6 26.4-10.5c15.3 36.6 12.6 87.3-22.8 125.6c-42.4 46.2-120 46.6-162.4 0zM274.6 217.6c21.9-12 49.6-30.7 62.3-53c1.5-3 4.1-8.6 4.5-12c-12.5 27.9-44.2 49.8-73.9 56.7c-4.7-7.3-7.5-15.5-7.5-24.3c0-10.3 5.2-24.1 12.9-31.6c8.3-7.9 18-10.9 27.9-14.1c16-5.1 32.5-10.3 44.5-35.9c32.5 46.2 13.1 130.3-36.3 130.3c-13.3 0-25.1-7.1-34.4-16.1z\"],meetup:[512,512,[],\"f2e0\",\"M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z\"],centos:[448,512,[],\"f789\",\"M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z\"],adn:[496,512,[],\"f170\",\"M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z\"],cloudsmith:[512,512,[],\"f384\",\"M512 227.6v56.9L284.4 512H227.6L0 284.4V227.6L227.6 0h56.9L512 227.6zm-256 162a133.6 133.6 0 1 0 0-267.1 133.6 133.6 0 1 0 0 267.1z\"],opensuse:[640,512,[],\"e62b\",\"M471.1 102.7s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3c-51.9-1.8-122.8-4.3-223 57.3c-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.1 307 7 335.1c3.3 12.8 8.9 24.9 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4c44.4 3.9 78.1-16 90-53.3c8.2-25.8 0-63.6-31.5-82.9c-25.6-15.7-53.3-12.1-69.2-1.6c-13.9 9.2-21.8 23.5-21.6 39.2c.3 27.8 24.3 42.6 41.5 42.6c5.4 0 10.7-.9 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9c0-12.1-11.6-14.8-16.8-13.9c-2.9 .5-4.5 2-11.8 2.4c-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9c32.3 2.8 47.7 40.7 28.5 65.7C135 388.5 76.7 388 53.6 344.4c-26-49.2 12.7-111.2 87-98.4c33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3c56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8c5.6-33.8 39.7-18.4 82.4-17.4c66.5 .4 102.1-27 103.1-28c3.7-3.1 6.5-15.8 7-17.7c1.3-5.1-3.2-2.4-3.2-2.4c-8.7 5.2-30.5 15.2-50.9 15.6c-25.3 .5-76.2-25.4-81.6-28.2c-.3-.4 .1 1.2-11-25.5c88.4 58.3 118.3 40.5 145.2 21.7c.8-.6 4.3-2.9 3.6-5.7c-13.8-48.1-22.4-62.7-34.5-69.6c-37-21.6-125-34.7-129.2-35.3c.1-.1-.9-.3-.9 .7l0 0zm135.6 75.4a37.6 37.6 0 1 1 -75.2-2.6 37.6 37.6 0 1 1 75.2 2.6zm-36.6-27.9a26.3 26.3 0 1 0 -1.7 52.5 26.3 26.3 0 1 0 1.7-52.5zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.6 0 15.6v0z\"],\"pied-piper-alt\":[576,512,[],\"f1a8\",\"M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3.9.6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z\"],\"square-dribbble\":[448,512,[\"dribbble-square\"],\"f397\",\"M165.9 132.5c-38.3 18-66.8 53.3-75.7 95.7c6.1 .1 62.4 .3 126.4-16.7c-22.7-40.2-47.1-74.1-50.7-79zm26.1-9.1c3.8 5.1 28.6 38.9 51 80c48.6-18.3 69.1-45.9 71.6-49.4C281 124.2 235.3 112.9 192 123.4zM277.4 382c-2-12-10-53.8-29.2-103.6c-55.1 18.8-93.8 56.4-108.1 85.6c40.5 31.6 93.3 36.7 137.3 18zM227.8 232.6C159.6 253 93.4 252.2 87.4 252c0 .7 0 1.4 0 2.1s0 1.4 0 2.1c0 35.1 13.3 67.1 35.1 91.4c22.2-37.9 67.1-77.9 116.5-91.8c-3.4-7.8-7.2-15.5-11.1-23.2zm72.5 136.9c30.7-20.7 52.5-53.6 58.6-91.6c-4.6-1.5-42.3-12.7-85.1-5.8c17.9 49.1 25.1 89.1 26.5 97.4zm-34.8-119c45.5-5.7 90.7 3.4 95.2 4.4c-.3-32.3-11.8-61.9-30.9-85.1c-2.9 3.9-25.8 33.2-76.3 53.9c4.8 9.8 8.3 17.8 12 26.8zM384 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zM224 416a160 160 0 1 1 0-320 160 160 0 1 1 0 320z\"],codiepie:[472,512,[],\"f284\",\"M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z\"],node:[640,512,[],\"f419\",\"M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z\"],mix:[448,512,[],\"f3cb\",\"M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z\"],steam:[496,512,[],\"f1b6\",\"M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z\"],\"cc-apple-pay\":[576,512,[],\"f416\",\"M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z\"],scribd:[384,512,[],\"f28a\",\"M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z\"],debian:[448,512,[],\"e60b\",\"M380.2 245.6c3-7.6 5.5-14 5.2-24.4l-4.3 9c4.4-13.2 4-27.1 3.6-40.4c-.2-6-.3-11.8 0-17.4l-1.8-.5c-1.5-45.2-40.6-93.1-75.3-109.4c-30-13.8-76.1-16.2-97.3-5.8c1.3-1.1 4.2-2 6.8-2.7l.3-.1c3.3-1 6-1.7 4-2.9c-19.2 1.9-24.9 5.5-31.1 9.4l-.1 0c-4.6 2.9-9.5 6-20.3 8.7c-3.5 3.4 1.7 2 5.8 .9l0 0c4.1-1.1 7.2-1.9-.1 2.4c-3.5 1-6.6 1.3-9.6 1.6l-.1 0c-8.3 .8-15.8 1.6-30.7 17c.8 1.3 3.4-.2 5.3-1.3l.1-.1c2.3-1.4 3.4-2-1.7 4.4c-19.1-2.4-60.3 43.7-69.1 59l4.6 .8c-3.2 8-6.8 14.8-10 20.8c-4.3 8.1-7.9 14.9-8.7 21.3c-.3 5.1-1 11-1.7 17.3l0 0c-.1 1-.2 2-.3 3l-.1 .6c-3 27.3-6.7 60.8 3.9 73l-1.3 13c.6 1.2 1.1 2.3 1.6 3.5c.2 .4 .4 .8 .5 1.1l0 0 0 0 0 0 0 0 0 0 0 0 0 0c1 2.1 2 4.2 3.3 6.2l-3 .2c7 22.1 10.8 22.5 15.1 22.9l0 0c4.4 .4 9.3 .9 18.7 24.2c-2.7-.9-5.5-1.9-9.4-7.2c-.5 4.1 5.8 16.3 13.1 25.8l-3.1 3.6c2.1 3.7 4.8 6.2 7.6 8.8l0 0 0 0c1 .9 2.1 1.9 3.1 2.9c-11.9-6.5 3.2 13.7 11.9 25.2c.8 1.1 1.5 2 2.2 2.9l0 0 0 0 0 0 0 0 0 0c1.4 1.9 2.5 3.4 2.9 4.1l2.4-4.2c-.3 6.1 4.3 13.9 13.1 24.7l7.3-.3c3 6 14 16.7 20.7 17.2l-4.4 5.8c8.1 2.6 10.3 4.3 12.7 6.2c2.6 2.1 5.4 4.3 16.1 8.1l-4.2-7.4c3.5 3 6.2 5.9 8.8 8.7l.1 .1c5.2 5.6 9.9 10.6 19.7 15.3c10.7 3.7 16.6 4.7 22.7 5.8c.3 0 .6 .1 .9 .1c5.4 .8 11.2 1.8 20.8 4.5c-1.1-.1-2.2-.1-3.3-.1h0c-2.3-.1-4.7-.1-7-.1l0 0 0 0 0 0 0 0 0 0 0 0 0 0c-14.4-.2-29.2-.4-42.7-5.2C107.8 480.5 19.5 367.2 26 250.6c-.6-9.9-.3-20.9 0-30.7c.4-13.5 .7-24.8-1.6-28.3l1-3.1c5.3-17.4 11.7-38.2 23.8-62.8l-.1-.2v-.1c.4 .4 3.4 3.4 8.8-5.8c.8-1.8 1.6-3.7 2.4-5.6c.5-1.1 .9-2.2 1.4-3.2c2.5-6.1 5.1-12.3 8.4-17.9l2.6-.6c1.7-10.1 17-23.8 29.8-35.2l1.1-1c5.7-5.1 10.7-9.7 13.6-13.1l.7 4.4c17-15.9 44.6-27.5 65.6-36.4l.5-.2c4.8-2 9.3-3.9 13.3-5.7c-3.4 3.8 2.2 2.7 10 1c4.8-1 10.4-2.1 15.3-2.4l-3.9 2.1c-2.7 1.4-5.4 2.8-8 4.6c8.1-2 11.7-1.4 15.7-.8l.3 0c3.5 .6 7.3 1.2 14.6 .2c-5.6 .8-12.3 3-11.2 3.8c7.9 .9 12.8-.1 17.2-1l.2 0c5.5-1.1 10.3-2 19.3 .9l-1-4.8c7.3 2.6 12.7 4.3 17.5 5.8l.5 .1c10 3 17.6 5.3 34.2 14.1c3.2 .2 5.3-.5 7.4-1.2l.1 0c3.6-1.1 7-2.1 15.2 1.2c.3 .5 .5 1 .7 1.4c.1 .2 .2 .5 .3 .7l0 .1c1 2.6 1.8 4.6 14.6 12.1c1.7-.7-2.7-4.7-6.4-8.2c0 0 0 0-.1-.1c-.2-.1-.3-.3-.5-.4c32.2 17.3 67.3 54.1 78 93.5c-6-11.1-5.2-5.5-4.3 .5c.6 4 1.2 8.1-.2 7.5c4.5 12.1 8.1 24.5 10.4 37.4l-.8-2.9-.1-.3c-3.3-11.9-9.6-34.3-19.9-49.3c-.4 4.3-2.8 3.9-5.2 3.5l-.1 0 0 0c-3.3-.6-6.2-1.1-1.9 12.6c2.6 3.8 3.1 2.4 3.5 1.1l0 0c.5-1.5 .9-2.7 4.7 5.2c.1 4.1 1 8.2 2.1 12.7l0 0 0 0 .1 .6c.1 .3 .1 .5 .2 .8l.1 .6c.6 2.6 1.3 5.4 1.8 8.4c-1.1-.2-2.3-2.2-3.4-4.2c-1.4-2.4-2.8-4.7-3.7-3.2c2.4 11.5 6.5 17.4 8 18.3c-.3 .6-.6 .7-1.1 .7c-.8 0-1.8 .1-1.9 5.3c.7 13.7 3.3 12.5 5.3 11.6l0 0c.6-.3 1.2-.6 1.7-.4c-.6 2.5-1.6 5.1-2.7 7.9c-2.8 7.1-6 15.4-3.4 26.1c-.8-3-2-6-3.1-8.9l-.1-.4c-.2-.5-.4-1-.6-1.5l0 0c-.3-.8-.6-1.6-.9-2.3c-.6 4.4-.3 7.7-.1 10.6c0 .2 0 .5 0 .7c.4 5.3 .7 10-3 19.9c4.3-14.2 3.8-26.9-.2-20.8c1 10.9-3.7 20.4-8 28.9l-.1 .2c-3.6 7.1-6.8 13.5-5.9 19.3l-5.2-7.1c-7.5 10.9-7 13.3-6.5 15.5l0 .1c.5 1.9 1 3.8-3.4 10.8c1.7-2.9 1.3-3.6 1-4.2l0 0c-.4-.8-.7-1.5 1.7-5.1c-1.6 .1-5.5 3.9-10.1 8.5c-3.9 3.9-8.5 8.4-12.8 11.8c-37.5 30.1-82.3 34-125.6 17.8c.2-1-.2-2.1-3.1-4.1c-36.8-28.2-58.5-52.1-50.9-107.5c2.1-1.6 3.6-5.8 5.3-10.8l0 0 0 0 .2-.4 .1-.3 0-.1c2.9-8.4 6.5-18.8 14.3-23.8c7.8-17.3 31.3-33.3 56.4-33.7c25.6-1.4 47.2 13.7 58.1 27.9c-19.8-18.4-52.1-24-79.7-10.4c-28.2 12.7-45 43.8-42.5 74.7c.3-.4 .6-.6 .9-.8l0 0s0 0 0 0c0 0 .1-.1 .1-.1l.1-.1c.6-.5 1.1-.9 1.4-3.3c-.9 60.2 64.8 104.3 112.1 82l.6 1.3c12.7-3.5 15.9-6.5 20.3-10.7l.1-.1 0 0c2.2-2.1 4.7-4.5 8.9-7.3c-.3 .7-1.3 1.7-2.4 2.7c-2.2 2.1-4.6 4.5-1.6 4.6c5-1.3 18.5-13.4 28.5-22.3l0 0 0 0c.6-.5 1.2-1 1.7-1.5c1.5-1.3 2.8-2.5 4-3.6l0 0 .3-.3c1.9-4.2 1.6-5.6 1.3-7l0-.1c-.4-1.6-.8-3.3 2.4-9.6l7.3-3.7c.8-2.1 1.5-4.1 2.2-6c.2-.6 .5-1.2 .7-1.8l-.4-.2zM349.3 34.3l-.2-.1 .2 .1 0 0zM247.8 334.1c-6-3-13.7-8.9-14.8-11.4l-.4 .3c-.3 .6-.5 1.3-.2 2.2c-12.2-5.7-23.4-14.3-32.6-24.9c4.9 7.1 10.1 14.1 17 19.5c-6.9-2.3-15.1-11.8-21.6-19.3l-.1-.1c-4.3-5-7.9-9.1-9.7-9.5c19.8 35.5 80.5 62.3 112.3 49c-14.7 .5-33.4 .3-49.9-5.8zm79.3-119.7l-.1-.2c-.5-1.5-1.1-3.1-1.7-3.4c1.4-5.8 5.4-10.7 4.4 4.6c-1 3.8-1.8 1.5-2.6-1zm-4.2 22.2c-1.3 7.9-5 15.5-10.1 22.5c.2-2-1.2-2.4-2.6-2.8l0 0c-2.9-.8-5.9-1.6 5.6-16.1c-.5 1.9-2.1 4.6-3.7 7.3l0 0 0 0-.3 .4c-3.6 5.9-6.7 11 4 4.3l1-1.8c2.6-4.5 5-8.8 6-13.8h.1zm-55.6 33.9c7.1 .6 14.1 .6 21-1.1c-2.5 2.4-5.2 4.8-8.3 7.2c-11.1-1.7-21.2-6-12.7-6.1zm-92.6 11.6c3.6 7.1 6.4 11.5 9 15.7l.1 .2c2.3 3.7 4.4 7.1 6.8 11.7c-5.1-4.2-8.7-9.5-12.5-15l-.3-.5c-1.4-2.1-2.8-4.2-4.4-6.2l1.2-5.9h.1zm7.5-9.6c1.6 3.3 3.2 6.4 5.7 9.1l2.6 7.7-1.3-2.1c-3.2-5.3-6.3-10.6-8-16.7l.8 1.6 .2 .4zm238.9-41.6c-2.3 17.4-7.7 34.6-16 50.3c7.6-14.9 12.5-30.9 14.8-47.2l1.2-3.1zM35.6 110.6c.4 .8 1.4 .5 2.3 .3c1.9-.5 3.6-.9-.1 7.6c-.5 .3-1 .7-1.5 1l0 0 0 0c-1.4 .9-2.8 1.9-3.9 3c1.9-3.8 3.5-7.4 3.2-11.9zM25.3 152.3c-.7 3.7-1.5 7.9-3.4 13.9c.2-1.9 0-3.5-.2-4.9l0-.1c-.4-3.4-.7-6.3 4.3-12.8c-.3 1.2-.5 2.5-.7 3.8v.1z\"],openid:[448,512,[],\"f19b\",\"M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z\"],instalod:[512,512,[],\"e081\",\"M153.384,480H387.113L502.554,275.765,204.229,333.211ZM504.726,240.078,387.113,32H155.669L360.23,267.9ZM124.386,48.809,7.274,256,123.236,461.154,225.627,165.561Z\"],expeditedssl:[496,512,[],\"f23e\",\"M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z\"],sellcast:[448,512,[],\"f2da\",\"M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z\"],\"square-twitter\":[448,512,[\"twitter-square\"],\"f081\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM351.3 199.3v0c0 86.7-66 186.6-186.6 186.6c-37.2 0-71.7-10.8-100.7-29.4c5.3 .6 10.4 .8 15.8 .8c30.7 0 58.9-10.4 81.4-28c-28.8-.6-53-19.5-61.3-45.5c10.1 1.5 19.2 1.5 29.6-1.2c-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3c-9-6-16.4-14.1-21.5-23.6s-7.8-20.2-7.7-31c0-12.2 3.2-23.4 8.9-33.1c32.3 39.8 80.8 65.8 135.2 68.6c-9.3-44.5 24-80.6 64-80.6c18.9 0 35.9 7.9 47.9 20.7c14.8-2.8 29-8.3 41.6-15.8c-4.9 15.2-15.2 28-28.8 36.1c13.2-1.4 26-5.1 37.8-10.2c-8.9 13.1-20.1 24.7-32.9 34c.2 2.8 .2 5.7 .2 8.5z\"],\"r-project\":[581,512,[],\"f4f7\",\"M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z\"],delicious:[448,512,[],\"f1a5\",\"M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z\"],freebsd:[448,512,[],\"f3a4\",\"M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z\"],vuejs:[448,512,[],\"f41f\",\"M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z\"],accusoft:[640,512,[],\"f369\",\"M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8.5-116.5.6-19.2.1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z\"],ioxhost:[640,512,[],\"f208\",\"M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z\"],\"fonticons-fi\":[384,512,[],\"f3a2\",\"M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z\"],\"app-store\":[512,512,[],\"f36f\",\"M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z\"],\"cc-mastercard\":[576,512,[],\"f1f1\",\"M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z\"],\"itunes-note\":[384,512,[],\"f3b5\",\"M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z\"],golang:[640,512,[],\"e40f\",\"M400.1 194.8C389.2 197.6 380.2 199.1 371 202.4C363.7 204.3 356.3 206.3 347.8 208.5L347.2 208.6C343 209.8 342.6 209.9 338.7 205.4C334 200.1 330.6 196.7 324.1 193.5C304.4 183.9 285.4 186.7 267.7 198.2C246.5 211.9 235.6 232.2 235.9 257.4C236.2 282.4 253.3 302.9 277.1 306.3C299.1 309.1 316.9 301.7 330.9 285.8C333 283.2 334.9 280.5 337 277.5V277.5L337 277.5C337.8 276.5 338.5 275.4 339.3 274.2H279.2C272.7 274.2 271.1 270.2 273.3 264.9C277.3 255.2 284.8 239 289.2 230.9C290.1 229.1 292.3 225.1 296.1 225.1H397.2C401.7 211.7 409 198.2 418.8 185.4C441.5 155.5 468.1 139.9 506 133.4C537.8 127.8 567.7 130.9 594.9 149.3C619.5 166.1 634.7 188.9 638.8 218.8C644.1 260.9 631.9 295.1 602.1 324.4C582.4 345.3 557.2 358.4 528.2 364.3C522.6 365.3 517.1 365.8 511.7 366.3C508.8 366.5 506 366.8 503.2 367.1C474.9 366.5 449 358.4 427.2 339.7C411.9 326.4 401.3 310.1 396.1 291.2C392.4 298.5 388.1 305.6 382.1 312.3C360.5 341.9 331.2 360.3 294.2 365.2C263.6 369.3 235.3 363.4 210.3 344.7C187.3 327.2 174.2 304.2 170.8 275.5C166.7 241.5 176.7 210.1 197.2 184.2C219.4 155.2 248.7 136.8 284.5 130.3C313.8 124.1 341.8 128.4 367.1 145.6C383.6 156.5 395.4 171.4 403.2 189.5C405.1 192.3 403.8 193.9 400.1 194.8zM48.3 200.4C47.05 200.4 46.74 199.8 47.36 198.8L53.91 190.4C54.53 189.5 56.09 188.9 57.34 188.9H168.6C169.8 188.9 170.1 189.8 169.5 190.7L164.2 198.8C163.6 199.8 162 200.7 161.1 200.7L48.3 200.4zM1.246 229.1C0 229.1-.3116 228.4 .3116 227.5L6.855 219.1C7.479 218.2 9.037 217.5 10.28 217.5H152.4C153.6 217.5 154.2 218.5 153.9 219.4L151.4 226.9C151.1 228.1 149.9 228.8 148.6 228.8L1.246 229.1zM75.72 255.9C75.1 256.8 75.41 257.7 76.65 257.7L144.6 258C145.5 258 146.8 257.1 146.8 255.9L147.4 248.4C147.4 247.1 146.8 246.2 145.5 246.2H83.2C81.95 246.2 80.71 247.1 80.08 248.1L75.72 255.9zM577.2 237.9C577 235.3 576.9 233.1 576.5 230.9C570.9 200.1 542.5 182.6 512.9 189.5C483.9 196 465.2 214.4 458.4 243.7C452.8 268 464.6 292.6 487 302.6C504.2 310.1 521.3 309.2 537.8 300.7C562.4 287.1 575.8 268 577.4 241.2C577.3 240 577.3 238.9 577.2 237.9z\"],kickstarter:[448,512,[\"square-kickstarter\"],\"f3bb\",\"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM320.8 233l-23.3 23.1L320.8 279c24.1 23.9 24.1 63 0 86.9s-63.4 23.9-87.6 0l-8.5-8.4c-11.3 16-29.7 26.5-50.9 26.5c-34.1 0-61.9-27.5-61.9-61.4l0-133.2c0-33.8 27.7-61.4 61.9-61.4c21.1 0 39.6 10.5 50.9 26.5l8.5-8.4c24.1-23.9 63.4-23.9 87.6 0s24.1 63 0 86.9z\"],grav:[512,512,[],\"f2d6\",\"M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z\"],weibo:[512,512,[],\"f18a\",\"M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z\"],uncharted:[448,512,[],\"e084\",\"M171.73,232.813A5.381,5.381,0,0,0,176.7,229.5,48.081,48.081,0,0,1,191.6,204.244c1.243-.828,1.657-2.484,1.657-4.141a4.22,4.22,0,0,0-2.071-3.312L74.429,128.473,148.958,85a9.941,9.941,0,0,0,4.968-8.281,9.108,9.108,0,0,0-4.968-8.281L126.6,55.6a9.748,9.748,0,0,0-9.523,0l-100.2,57.966a9.943,9.943,0,0,0-4.969,8.281V236.954a9.109,9.109,0,0,0,4.969,8.281L39.235,258.07a8.829,8.829,0,0,0,4.968,1.242,9.4,9.4,0,0,0,6.625-2.484,10.8,10.8,0,0,0,2.9-7.039V164.5L169.66,232.4A4.5,4.5,0,0,0,171.73,232.813ZM323.272,377.73a12.478,12.478,0,0,0-4.969,1.242l-74.528,43.062V287.882c0-2.9-2.9-5.8-6.211-4.555a53.036,53.036,0,0,1-28.984.414,4.86,4.86,0,0,0-6.21,4.555V421.619l-74.529-43.061a8.83,8.83,0,0,0-4.969-1.242,9.631,9.631,0,0,0-9.523,9.523v26.085a9.107,9.107,0,0,0,4.969,8.281l100.2,57.553A8.829,8.829,0,0,0,223.486,480a11.027,11.027,0,0,0,4.969-1.242l100.2-57.553a9.941,9.941,0,0,0,4.968-8.281V386.839C332.8,382.285,328.24,377.73,323.272,377.73ZM286.007,78a23,23,0,1,0-23-23A23,23,0,0,0,286.007,78Zm63.627-10.086a23,23,0,1,0,23,23A23,23,0,0,0,349.634,67.914ZM412.816,151.6a23,23,0,1,0-23-23A23,23,0,0,0,412.816,151.6Zm-63.182-9.2a23,23,0,1,0,23,23A23,23,0,0,0,349.634,142.4Zm-63.627,83.244a23,23,0,1,0-23-23A23,23,0,0,0,286.007,225.648Zm-62.074,36.358a23,23,0,1,0-23-23A23,23,0,0,0,223.933,262.006Zm188.883-82.358a23,23,0,1,0,23,23A23,23,0,0,0,412.816,179.648Zm0,72.272a23,23,0,1,0,23,23A23,23,0,0,0,412.816,251.92Z\"],firstdraft:[384,512,[],\"f3a1\",\"M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z\"],\"square-youtube\":[448,512,[61798,\"youtube-square\"],\"f431\",\"M282 256.2l-95.2-54.1V310.3L282 256.2zM384 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zm14.4 136.1c7.6 28.6 7.6 88.2 7.6 88.2s0 59.6-7.6 88.1c-4.2 15.8-16.5 27.7-32.2 31.9C337.9 384 224 384 224 384s-113.9 0-142.2-7.6c-15.7-4.2-28-16.1-32.2-31.9C42 315.9 42 256.3 42 256.3s0-59.7 7.6-88.2c4.2-15.8 16.5-28.2 32.2-32.4C110.1 128 224 128 224 128s113.9 0 142.2 7.7c15.7 4.2 28 16.6 32.2 32.4z\"],\"wikipedia-w\":[640,512,[],\"f266\",\"M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z\"],wpressr:[496,512,[\"rendact\"],\"f3e4\",\"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm171.33 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03.06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.81 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24.1 28.48.02 42.72.05 6.24.01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6.23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21.08 30.43.02 45.64.04 5.56.01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33.04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43.05 52.86 0 79.29.05 12.44.02 13.93-13.65 3.9-13.64-25.26.03-50.52.02-75.78.02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09.06 25.98.02 130.78.03 6.08-.01 8.03 2.79 5.62 8.27z\"],angellist:[448,512,[],\"f209\",\"M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z\"],\"galactic-republic\":[496,512,[],\"f50c\",\"M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z\"],\"nfc-directional\":[512,512,[],\"e530\",\"M211.8 488.6C213.4 491.1 213.9 494.2 213.2 497.1C212.6 500 210.8 502.6 208.3 504.2C205.7 505.8 202.7 506.3 199.7 505.7C138.3 491.8 84.1 455.8 47.53 404.5C10.97 353.2-5.395 290.3 1.57 227.7C8.536 165 38.34 107.2 85.29 65.21C132.2 23.2 193-.0131 256 0C257.5 0 258.1 .2931 260.3 .8627C261.7 1.432 262.1 2.267 264 3.319C265.1 4.371 265.9 5.619 266.5 6.993C267 8.367 267.3 9.839 267.3 11.32V112.3L291.8 86.39C292.8 85.31 294 84.44 295.4 83.84C296.7 83.23 298.2 82.9 299.7 82.86C301.2 82.81 302.6 83.06 304 83.59C305.4 84.12 306.7 84.92 307.8 85.94C308.8 86.96 309.7 88.18 310.3 89.54C310.9 90.89 311.3 92.35 311.3 93.84C311.3 95.32 311.1 96.8 310.6 98.18C310 99.57 309.2 100.8 308.2 101.9L264.2 148.5C263.1 149.6 261.9 150.5 260.5 151.1C259 151.7 257.5 152 255.1 152C254.5 152 252.9 151.7 251.5 151.1C250.1 150.5 248.8 149.6 247.8 148.5L203.7 101.9C201.7 99.74 200.6 96.83 200.7 93.84C200.7 90.84 202 87.1 204.2 85.94C206.4 83.88 209.3 82.77 212.3 82.86C215.3 82.94 218.1 84.21 220.2 86.39L244.7 112.4V22.89C188.3 25.64 134.9 48.73 94.23 87.87C53.58 127 28.49 179.6 23.61 235.8C18.73 292 34.38 348.1 67.68 393.7C100.1 439.2 149.7 471.2 204.7 483.6C207.6 484.3 210.2 486.1 211.8 488.6L211.8 488.6zM171.4 126.1C170.6 127.4 169.5 128.5 168.3 129.3C147.8 143.2 131.1 161.9 119.5 183.8C107.9 205.7 101.8 230.1 101.8 254.9C101.8 279.7 107.9 304.1 119.5 325.1C131.1 347.9 147.8 366.6 168.3 380.5C170.8 382.2 172.5 384.8 173 387.8C173.6 390.7 172.1 393.8 171.3 396.2C169.6 398.7 166.1 400.4 164 400.1C161.1 401.5 158 400.9 155.6 399.2C132 383.2 112.8 361.7 99.46 336.5C86.15 311.4 79.19 283.4 79.19 254.9C79.19 226.5 86.15 198.4 99.46 173.3C112.8 148.1 132 126.6 155.6 110.6C156.8 109.8 158.2 109.2 159.6 108.8C161.1 108.5 162.6 108.5 164.1 108.8C165.5 109 166.9 109.6 168.2 110.4C169.5 111.2 170.5 112.3 171.4 113.5C172.2 114.7 172.8 116.1 173.1 117.6C173.4 119.1 173.4 120.6 173.1 122C172.8 123.5 172.3 124.9 171.4 126.1H171.4zM340.9 383.5C341.7 382.3 342.8 381.2 343.1 380.4V380.3C364.4 366.3 381.1 347.6 392.7 325.7C404.2 303.9 410.2 279.5 410.2 254.8C410.2 230.1 404.2 205.7 392.7 183.8C381.1 161.1 364.4 143.3 343.1 129.3C342.8 128.5 341.7 127.4 340.9 126.2C340.1 124.9 339.5 123.5 339.3 122.1C338.1 120.6 339 119.1 339.3 117.7C339.6 116.2 340.2 114.8 341 113.6C341.9 112.4 342.1 111.3 344.2 110.5C345.4 109.7 346.8 109.2 348.3 108.9C349.8 108.6 351.2 108.6 352.7 108.9C354.2 109.2 355.5 109.8 356.8 110.7C380.2 126.7 399.5 148.2 412.7 173.3C426 198.4 432.1 226.4 432.1 254.8C432.1 283.3 426 311.3 412.7 336.4C399.5 361.5 380.2 383 356.8 399C355.5 399.9 354.2 400.5 352.7 400.8C351.2 401.1 349.8 401.1 348.3 400.8C346.8 400.5 345.4 399.1 344.2 399.2C342.1 398.4 341.9 397.3 341 396.1C340.2 394.9 339.6 393.5 339.3 392C339 390.6 338.1 389.1 339.3 387.6C339.5 386.2 340.1 384.8 340.9 383.5V383.5zM312.3 6.307C368.5 19.04 418.7 50.28 455 95.01C485.4 132.6 504.6 178 510.3 226C515.9 274 507.9 322.7 487.1 366.3C466.2 409.9 433.5 446.8 392.6 472.6C351.7 498.3 304.4 512 256 512C254.5 512 253.1 511.7 251.7 511.1C250.3 510.6 249.1 509.7 248 508.7C246.1 507.6 246.1 506.4 245.6 505C245 503.6 244.7 502.2 244.7 500.7V401.5L220.2 427.5C218.1 429.7 215.3 430.1 212.3 431.1C209.3 431.2 206.4 430 204.2 427.1C202 425.9 200.7 423.1 200.7 420.1C200.6 417.1 201.7 414.2 203.7 412L247.8 365.4C249.1 363.2 252.9 362 255.1 362C259.1 362 262 363.2 264.2 365.4L308.2 412C310.3 414.2 311.4 417.1 311.3 420.1C311.2 423.1 309.9 425.9 307.8 427.1C305.6 430 302.7 431.2 299.7 431.1C296.7 430.1 293.8 429.7 291.8 427.5L267.3 401.6V489.1C323.7 486.3 377.1 463.3 417.8 424.1C458.5 384.1 483.6 332.4 488.5 276.2C493.3 219.1 477.7 163.9 444.4 118.3C411.1 72.75 362.4 40.79 307.4 28.36C305.9 28.03 304.6 27.42 303.3 26.57C302.1 25.71 301.1 24.63 300.3 23.37C299.5 22.12 298.1 20.72 298.7 19.26C298.5 17.8 298.5 16.3 298.8 14.85C299.2 13.41 299.8 12.04 300.6 10.82C301.5 9.61 302.6 8.577 303.8 7.784C305.1 6.99 306.5 6.451 307.9 6.198C309.4 5.945 310.9 5.982 312.3 6.307L312.3 6.307zM353.1 256.1C353.1 287.5 335.6 317.2 303.8 339.6C301.7 341.1 299 341.9 296.4 341.6C293.7 341.4 291.2 340.3 289.4 338.4L219.3 268.6C217.1 266.5 215.1 263.6 215.9 260.6C215.9 257.6 217.1 254.7 219.2 252.6C221.4 250.5 224.2 249.3 227.2 249.3C230.2 249.3 233.1 250.5 235.2 252.6L298.3 315.4C319.1 298.3 330.5 277.5 330.5 256.1C330.5 232.2 316.4 209.1 290.8 191C288.3 189.3 286.7 186.7 286.2 183.7C285.7 180.8 286.3 177.7 288.1 175.3C289.8 172.8 292.4 171.2 295.4 170.7C298.3 170.2 301.4 170.8 303.8 172.6C335.6 195 353.1 224.7 353.1 256.1V256.1zM216.7 341.5C213.7 342 210.7 341.3 208.2 339.6C176.5 317.2 158.1 287.5 158.1 256.1C158.1 224.7 176.5 195 208.2 172.6C210.4 171 213.1 170.3 215.7 170.5C218.4 170.8 220.8 171.9 222.7 173.8L292.8 243.6C294.9 245.7 296.1 248.6 296.1 251.6C296.1 254.6 294.1 257.4 292.8 259.6C290.7 261.7 287.8 262.9 284.9 262.9C281.9 262.9 278.1 261.7 276.9 259.6L213.8 196.7C192.9 214 181.6 234.7 181.6 256.1C181.6 279.1 195.7 303.1 221.3 321.1C223.7 322.9 225.4 325.5 225.9 328.5C226.4 331.4 225.7 334.4 224 336.9C222.3 339.3 219.6 341 216.7 341.5L216.7 341.5z\"],skype:[448,512,[],\"f17e\",\"M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z\"],joget:[496,512,[],\"f3b7\",\"M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z\"],fedora:[448,512,[],\"f798\",\"M.0413 255.8C.1219 132.2 100.3 32 224 32C347.7 32 448 132.3 448 256C448 379.7 347.8 479.9 224.1 480H50.93C22.84 480 .0832 457.3 .0416 429.2H0V255.8H.0413zM342.6 192.7C342.6 153 307 124.2 269.4 124.2C234.5 124.2 203.6 150.5 199.3 184.1C199.1 187.9 198.9 189.1 198.9 192.6C198.8 213.7 198.9 235.4 198.1 257C199 283.1 199.1 309.1 198.1 333.6C198.1 360.7 178.7 379.1 153.4 379.1C128.1 379.1 107.6 358.9 107.6 333.6C108.1 305.9 130.2 288.3 156.1 287.5H156.3L182.6 287.3V250L156.3 250.2C109.2 249.8 71.72 286.7 70.36 333.6C70.36 379.2 107.9 416.5 153.4 416.5C196.4 416.5 232.1 382.9 236 340.9L236.2 287.4L268.8 287.1C294.1 287.3 293.8 249.3 268.6 249.8L236.2 250.1C236.2 243.7 236.3 237.3 236.3 230.9C236.4 218.2 236.4 205.5 236.2 192.7C236.3 176.2 252 161.5 269.4 161.5C286.9 161.5 305.3 170.2 305.3 192.7C305.3 195.9 305.2 197.8 305 199C303.1 209.5 310.2 219.4 320.7 220.9C331.3 222.4 340.9 214.8 341.9 204.3C342.5 200.1 342.6 196.4 342.6 192.7H342.6z\"],\"stripe-s\":[384,512,[],\"f42a\",\"M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.09 396.09 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z\"],meta:[640,512,[],\"e49b\",\"M640 317.9C640 409.2 600.6 466.4 529.7 466.4C467.1 466.4 433.9 431.8 372.8 329.8L341.4 277.2C333.1 264.7 326.9 253 320.2 242.2C300.1 276 273.1 325.2 273.1 325.2C206.1 441.8 168.5 466.4 116.2 466.4C43.42 466.4 0 409.1 0 320.5C0 177.5 79.78 42.4 183.9 42.4C234.1 42.4 277.7 67.08 328.7 131.9C365.8 81.8 406.8 42.4 459.3 42.4C558.4 42.4 640 168.1 640 317.9H640zM287.4 192.2C244.5 130.1 216.5 111.7 183 111.7C121.1 111.7 69.22 217.8 69.22 321.7C69.22 370.2 87.7 397.4 118.8 397.4C149 397.4 167.8 378.4 222 293.6C222 293.6 246.7 254.5 287.4 192.2V192.2zM531.2 397.4C563.4 397.4 578.1 369.9 578.1 322.5C578.1 198.3 523.8 97.08 454.9 97.08C421.7 97.08 393.8 123 360 175.1C369.4 188.9 379.1 204.1 389.3 220.5L426.8 282.9C485.5 377 500.3 397.4 531.2 397.4L531.2 397.4z\"],laravel:[512,512,[],\"f3bd\",\"M504.4,115.83a5.72,5.72,0,0,0-.28-.68,8.52,8.52,0,0,0-.53-1.25,6,6,0,0,0-.54-.71,9.36,9.36,0,0,0-.72-.94c-.23-.22-.52-.4-.77-.6a8.84,8.84,0,0,0-.9-.68L404.4,55.55a8,8,0,0,0-8,0L300.12,111h0a8.07,8.07,0,0,0-.88.69,7.68,7.68,0,0,0-.78.6,8.23,8.23,0,0,0-.72.93c-.17.24-.39.45-.54.71a9.7,9.7,0,0,0-.52,1.25c-.08.23-.21.44-.28.68a8.08,8.08,0,0,0-.28,2.08V223.18l-80.22,46.19V63.44a7.8,7.8,0,0,0-.28-2.09c-.06-.24-.2-.45-.28-.68a8.35,8.35,0,0,0-.52-1.24c-.14-.26-.37-.47-.54-.72a9.36,9.36,0,0,0-.72-.94,9.46,9.46,0,0,0-.78-.6,9.8,9.8,0,0,0-.88-.68h0L115.61,1.07a8,8,0,0,0-8,0L11.34,56.49h0a6.52,6.52,0,0,0-.88.69,7.81,7.81,0,0,0-.79.6,8.15,8.15,0,0,0-.71.93c-.18.25-.4.46-.55.72a7.88,7.88,0,0,0-.51,1.24,6.46,6.46,0,0,0-.29.67,8.18,8.18,0,0,0-.28,2.1v329.7a8,8,0,0,0,4,6.95l192.5,110.84a8.83,8.83,0,0,0,1.33.54c.21.08.41.2.63.26a7.92,7.92,0,0,0,4.1,0c.2-.05.37-.16.55-.22a8.6,8.6,0,0,0,1.4-.58L404.4,400.09a8,8,0,0,0,4-6.95V287.88l92.24-53.11a8,8,0,0,0,4-7V117.92A8.63,8.63,0,0,0,504.4,115.83ZM111.6,17.28h0l80.19,46.15-80.2,46.18L31.41,63.44Zm88.25,60V278.6l-46.53,26.79-33.69,19.4V123.5l46.53-26.79Zm0,412.78L23.37,388.5V77.32L57.06,96.7l46.52,26.8V338.68a6.94,6.94,0,0,0,.12.9,8,8,0,0,0,.16,1.18h0a5.92,5.92,0,0,0,.38.9,6.38,6.38,0,0,0,.42,1v0a8.54,8.54,0,0,0,.6.78,7.62,7.62,0,0,0,.66.84l0,0c.23.22.52.38.77.58a8.93,8.93,0,0,0,.86.66l0,0,0,0,92.19,52.18Zm8-106.17-80.06-45.32,84.09-48.41,92.26-53.11,80.13,46.13-58.8,33.56Zm184.52,4.57L215.88,490.11V397.8L346.6,323.2l45.77-26.15Zm0-119.13L358.68,250l-46.53-26.79V131.79l33.69,19.4L392.37,178Zm8-105.28-80.2-46.17,80.2-46.16,80.18,46.15Zm8,105.28V178L455,151.19l33.68-19.4v91.39h0Z\"],hotjar:[512,512,[],\"f3b1\",\"M361.5 0c0 131.6-80.7 176.8-140.2 209.4c-.6 .3-1.1 .6-1.6 .9c-53.8 30.2-88.7 49.8-89.6 122H32C32 200.8 112.7 155.6 172.2 123C227 93.2 262.5 73 262.5 0h98.9zM301 302.6c54.8-29.8 90.3-50 90.3-123h98c0 131.6-80.7 176.7-140.2 209.4c-54.8 29.8-90.3 50-90.3 123h-98c0-131.6 80.7-176.8 140.2-209.4z\"],\"bluetooth-b\":[320,512,[],\"f294\",\"M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z\"],\"square-letterboxd\":[448,512,[],\"e62e\",\"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM105.1 187C66.4 187 35 218.3 35 257s31.4 70 70.1 70c24.8 0 46.5-12.8 59-32.2l.5-.7-.4-.6c-6.5-10.6-10.2-23.1-10.2-36.5c0-13.6 3.9-26.3 10.6-37.1c-12.4-19.8-34.4-32.9-59.5-32.9zM224 187c-24.8 0-46.5 12.8-59 32.2l-.5 .7 .4 .6c6.5 10.6 10.2 23.1 10.2 36.5c0 13.6-3.9 26.3-10.6 37.1C176.9 313.8 198.9 327 224 327c24.8 0 46.5-12.8 59-32.2l.5-.7-.4-.6c-6.5-10.6-10.2-23.1-10.2-36.5c0-13.6 3.9-26.3 10.6-37.1C271.1 200.2 249.1 187 224 187zm118.9 0c-24.8 0-46.5 12.8-59 32.2l-.5 .7 .4 .6c6.5 10.6 10.2 23.1 10.2 36.5c0 13.6-3.9 26.3-10.6 37.1c12.4 19.8 34.4 32.9 59.5 32.9c38.7 0 70.1-31.3 70.1-70s-31.4-70-70.1-70z\"],\"sticker-mule\":[576,512,[],\"f3f7\",\"M561.7 199.6c-1.3.3.3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3.5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8.4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5.5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5.5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4.5 1 1 2 1.5 3.5.5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5.5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5.3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6.5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3.8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z\"],\"creative-commons-zero\":[496,512,[],\"f4f3\",\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4.5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z\"],hips:[640,512,[],\"f452\",\"M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7.9-2.7 2.7v279.2c0 1.9.9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5.4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4.2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3.7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z\"],behance:[576,512,[],\"f1b4\",\"M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z\"],reddit:[512,512,[],\"f1a1\",\"M0 256C0 114.6 114.6 0 256 0S512 114.6 512 256s-114.6 256-256 256L37.1 512c-13.7 0-20.5-16.5-10.9-26.2L75 437C28.7 390.7 0 326.7 0 256zM349.6 153.6c23.6 0 42.7-19.1 42.7-42.7s-19.1-42.7-42.7-42.7c-20.6 0-37.8 14.6-41.8 34c-34.5 3.7-61.4 33-61.4 68.4l0 .2c-37.5 1.6-71.8 12.3-99 29.1c-10.1-7.8-22.8-12.5-36.5-12.5c-33 0-59.8 26.8-59.8 59.8c0 24 14.1 44.6 34.4 54.1c2 69.4 77.6 125.2 170.6 125.2s168.7-55.9 170.6-125.3c20.2-9.6 34.1-30.2 34.1-54c0-33-26.8-59.8-59.8-59.8c-13.7 0-26.3 4.6-36.4 12.4c-27.4-17-62.1-27.7-100-29.1l0-.2c0-25.4 18.9-46.5 43.4-49.9l0 0c4.4 18.8 21.3 32.8 41.5 32.8zM177.1 246.9c16.7 0 29.5 17.6 28.5 39.3s-13.5 29.6-30.3 29.6s-31.4-8.8-30.4-30.5s15.4-38.3 32.1-38.3zm190.1 38.3c1 21.7-13.7 30.5-30.4 30.5s-29.3-7.9-30.3-29.6c-1-21.7 11.8-39.3 28.5-39.3s31.2 16.6 32.1 38.3zm-48.1 56.7c-10.3 24.6-34.6 41.9-63 41.9s-52.7-17.3-63-41.9c-1.2-2.9 .8-6.2 3.9-6.5c18.4-1.9 38.3-2.9 59.1-2.9s40.7 1 59.1 2.9c3.1 .3 5.1 3.6 3.9 6.5z\"],discord:[640,512,[],\"f392\",\"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z\"],chrome:[512,512,[],\"f268\",\"M0 256C0 209.4 12.47 165.6 34.27 127.1L144.1 318.3C166 357.5 207.9 384 256 384C270.3 384 283.1 381.7 296.8 377.4L220.5 509.6C95.9 492.3 0 385.3 0 256zM365.1 321.6C377.4 302.4 384 279.1 384 256C384 217.8 367.2 183.5 340.7 160H493.4C505.4 189.6 512 222.1 512 256C512 397.4 397.4 511.1 256 512L365.1 321.6zM477.8 128H256C193.1 128 142.3 172.1 130.5 230.7L54.19 98.47C101 38.53 174 0 256 0C350.8 0 433.5 51.48 477.8 128V128zM168 256C168 207.4 207.4 168 256 168C304.6 168 344 207.4 344 256C344 304.6 304.6 344 256 344C207.4 344 168 304.6 168 256z\"],\"app-store-ios\":[448,512,[],\"f370\",\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z\"],\"cc-discover\":[576,512,[],\"f1f2\",\"M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z\"],wpbeginner:[512,512,[],\"f297\",\"M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z\"],confluence:[512,512,[],\"f78d\",\"M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1.1-.2.1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8.4 21.7-7.7.1-.1.1-.3.2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2.3-.4.6-.6 1-67.3 112.6-81.1 95.6-280.6.9-8.1-3.9-17.8-.4-21.7 7.7-.1.1-.1.3-.2.4L22.2 141.3c-3.6 8.1.1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z\"],shoelace:[512,512,[],\"e60c\",\"M404.9 331c2.2-1.1 4.4-2.3 6.5-3.7l8.3-4.8c1.5-1.1 4.4-3.4 8.7-6.7l.5-.5c3.4-3.4 7.2-5 11.3-4.9c1.8 0 3.9 .5 6.4 1.5l31-27.5c.9-.7 1.7-1.3 2.6-1.8h.2c3.3-1.9 6-1.8 8.2 .4c3.9 2.1 4.2 5.6 .9 10.6L456.9 322c.2 .5 .4 1 .4 1.5c.5 2.2 .3 4.4-.5 6.6c-.7 1.5-1.8 2.9-3.1 4.2c-1.4 1.4-2.7 2.8-4.2 4.2l-18.8 13.7c-1.7 1.2-3.4 2.3-5.1 3.3c-2.1 1.3-4.3 2.5-6.6 3.6c-1 .4-1.9 .9-2.9 1.3c-5.9 2.5-11.9 4.2-18.2 5c-2.9 24.5-11.3 47.1-25.1 67.8c-17.5 25.7-41.4 45.4-71.8 58.8c-30.2 13.5-63 20.2-98.2 20.2c-48.6-.5-88-11.4-118.2-32.8C49.5 454.4 32 421.5 32 380.3v-5.6c1.2-28.1 9.5-54.6 24.8-79.8c15.1-24.9 37.1-41.7 66.1-50.5c14.9-4.4 29.9-6.6 45-6.6c15.5 0 31.6 2.9 48.1 8.6s35.2 15.5 55.9 29.5L326 312.2c15.1 9.8 28.8 16.5 41.2 20c-2.6-25.1-11.7-46.6-27.3-64.5c-15.7-18.1-35.6-31.3-59.9-39.7l-23.3-8c-21.4-7.5-37.3-14.9-47.7-22.2c-28.2-19.1-43.8-45.2-47-78.5l-.5-9.8c0-32.1 13-58.9 39-80.5C223.5 9.7 251.1 0 283 0c24 0 45.6 6.9 64.7 20.8c19.2 14 30.1 33.8 32.6 59.4l.5 10c0 18.6-4.8 34.5-14.4 47.7c-9.8 13.2-18.5 19.9-26 19.9c-1.6-.1-3.1-.3-4.5-.6l-34 32c-5.5 3-9.2 2.5-11.1-1.6c-1.9-2.2-1.8-4.9 .5-8.2l.2-.2c.5-.7 1.2-1.5 2-2.4l31.6-30c-.4-1.5-.6-3.1-.6-4.8c0-4.1 1.6-7.6 4.9-10.4c13.8-12.4 20.8-26.7 20.8-42.8c0-16-6.1-29.5-18.2-40.4s-28.7-16.5-49.7-16.8c-26.2 0-47.8 7.9-64.7 23.7S192.3 89.9 192.3 112c0 17.8 6.9 33.9 20.6 48.3c13.6 14.2 34.6 25.4 63 33.5c39.8 11.5 70.2 31 91.3 58.3c18.7 24.2 29.1 51.3 31.3 81.4c2.2-.7 4.3-1.5 6.5-2.6zM294.1 178.7c0 1.1 .6 1.6 1.8 1.6c.1 0 9.7-8.9 28.8-26.6c0-2.4-5.1 .9-15.3 10c-10.2 9.2-15.3 14.2-15.3 14.9zm8 6.4c0-1-.5-1.5-1.5-1.5c-1.1 0-2.1 .5-2.9 1.6c-1.9-.1-3.3 .1-4.2 .7c-.4 .2-.5 .5-.5 .7c0 .7 .5 1.3 1.5 1.6h3.3c2.9-1.1 4.4-2.2 4.4-3.3zm22.6-19.9c0-2.8-1.6-2.8-4.9 0c-1.6 1.5-3.6 3.5-6 6.2c-.8 .6-2.6 2.2-5.3 4.9c-2.8 2.9-4.2 4.7-4.2 5.3l.2 1.3c.7 .2 1.2 .4 1.5 .4c.1 0 3.3-2.9 9.5-8.7s9.3-8.9 9.3-9.3zm159.7 120l-30.6 27c1.8 1 3.2 2.4 4 4.2l30.2-27c.2-1.2 .1-2.2-.5-2.9c-.6-.5-1.6-.9-3.1-1.3zm-1.6-.9l-.7-.7-27 21.9 1.6 2 26-23.1zM366.6 363.9c-8-2.1-15.4-4.6-22.2-7.5c-15.3-6.2-34.3-17-57-32.4L250 298.7c-15.8-10.1-30.2-17.6-43.2-22.6c-13.1-4.9-26-7.3-38.6-7.3h-5.5c-32.2 1.7-57.2 13.8-75 36.2c-16.6 20.8-25 45.3-25 73.6c0 31.8 12.8 56.7 38.2 74.7c25.4 18.1 60.2 27.1 104.4 27.1c34.7 0 64-6.2 87.8-18.6c23.7-12.4 42.1-28.8 55.2-49.2c9.8-15.5 15.9-31.8 18.2-48.8z\"],mdb:[576,512,[],\"f8ca\",\"M17.37 160.41L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.59H146.7L106 277.74 63.67 160.41zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.46V204.78s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.29-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.58H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.46l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z\"],dochub:[416,512,[],\"f394\",\"M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z\"],\"accessible-icon\":[448,512,[62107],\"f368\",\"M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z\"],ebay:[640,512,[],\"f4f4\",\"M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7.4-42.4.9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6.3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z\"],amazon:[448,512,[],\"f270\",\"M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z\"],unsplash:[448,512,[],\"e07c\",\"M448,230.17V480H0V230.17H141.13V355.09H306.87V230.17ZM306.87,32H141.13V156.91H306.87Z\"],yarn:[496,512,[],\"f7e3\",\"M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4.1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3.8-10.8-5.7.8-19.2.8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3.8 1.4 13.7.8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2.9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4.2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z\"],\"square-steam\":[448,512,[\"steam-square\"],\"f1b7\",\"M165.6 309.1c18.6 7.7 27.3 28.9 19.6 47.4s-29 27.2-47.6 19.4l-28.5-11.8c5 10.6 13.8 19.4 25.4 24.2c25.2 10.5 54.1-1.4 64.6-26.5c5.1-12.1 5.1-25.5 .1-37.7c-5.1-12.1-14.5-21.6-26.7-26.7c-12.1-5-25-4.8-36.4-.5l29.5 12.2zM448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V240.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8c-31.8 0-58.5-22.7-64.5-52.7L0 319.2V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM241.9 196.2a58.4 58.4 0 1 0 116.8 0 58.4 58.4 0 1 0 -116.8 0zm14.6-.1a43.9 43.9 0 1 1 87.8 0 43.9 43.9 0 1 1 -87.8 0z\"],\"500px\":[448,512,[],\"f26e\",\"M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z\"],\"square-vimeo\":[448,512,[\"vimeo-square\"],\"f194\",\"M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM318.5 309.5C275 366 238.2 394.3 208.1 394.3c-18.7 0-34.4-17.2-47.3-51.6c-3.8-13.9-7.3-26.9-10.5-39c-18.2-68.3-28.6-107.4-46.2-107.4c-2.4 0-10.8 5-25.1 15.1L64 192c7-6.1 13.9-12.4 20.6-18.5c29.1-26.3 55.6-50.3 73.5-51.9c24.9-2.4 40.2 14.6 46 51.1c20.5 129.6 29.6 149.2 66.8 90.5c13.4-21.2 20.6-37.2 21.5-48.3c3.4-32.8-25.6-30.6-45.2-22.2c15.7-51.5 45.8-76.5 90.1-75.1c32.9 1 48.4 22.4 46.5 64c-1.4 31.1-23.2 73.8-65.3 127.9z\"],asymmetrik:[576,512,[],\"f372\",\"M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z\"],\"font-awesome\":[512,512,[62501,62694,\"font-awesome-flag\",\"font-awesome-logo-full\"],\"f2b4\",\"M91.7 96C106.3 86.8 116 70.5 116 52C116 23.3 92.7 0 64 0S12 23.3 12 52c0 16.7 7.8 31.5 20 41l0 3 0 352 0 64 64 0 0-64 373.6 0c14.6 0 26.4-11.8 26.4-26.4c0-3.7-.8-7.3-2.3-10.7L432 272l61.7-138.9c1.5-3.4 2.3-7 2.3-10.7c0-14.6-11.8-26.4-26.4-26.4L91.7 96z\"],gratipay:[496,512,[],\"f184\",\"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z\"],apple:[384,512,[],\"f179\",\"M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z\"],hive:[512,512,[],\"e07f\",\"M260.353,254.878,131.538,33.1a2.208,2.208,0,0,0-3.829.009L.3,254.887A2.234,2.234,0,0,0,.3,257.122L129.116,478.9a2.208,2.208,0,0,0,3.83-.009L260.358,257.113A2.239,2.239,0,0,0,260.353,254.878Zm39.078-25.713a2.19,2.19,0,0,0,1.9,1.111h66.509a2.226,2.226,0,0,0,1.9-3.341L259.115,33.111a2.187,2.187,0,0,0-1.9-1.111H190.707a2.226,2.226,0,0,0-1.9,3.341ZM511.7,254.886,384.9,33.112A2.2,2.2,0,0,0,382.99,32h-66.6a2.226,2.226,0,0,0-1.906,3.34L440.652,256,314.481,476.66a2.226,2.226,0,0,0,1.906,3.34h66.6a2.2,2.2,0,0,0,1.906-1.112L511.7,257.114A2.243,2.243,0,0,0,511.7,254.886ZM366.016,284.917H299.508a2.187,2.187,0,0,0-1.9,1.111l-108.8,190.631a2.226,2.226,0,0,0,1.9,3.341h66.509a2.187,2.187,0,0,0,1.9-1.111l108.8-190.631A2.226,2.226,0,0,0,366.016,284.917Z\"],gitkraken:[592,512,[],\"f3a6\",\"M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z\"],keybase:[448,512,[],\"f4f5\",\"M286.17 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18zm111.92-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0-47.88-104.13c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.66 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0-8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93.54a214 214 0 0 0-46.29 35.54C14 304.66 14 374 14 429.77v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.29 178.29 0 0 1-15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.38-61.76 236.25-38.59 34.2 10.05 67.45.69 84.74-23.84.72-1 1.2-2.16 1.85-3.22a156.09 156.09 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.32c0-38.58-13-77.46-35.91-110.92zM142.37 128.58l-15.7-.93-1.39 21.79 13.13.78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1-11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.35 144.35 0 0 0-7 19.17zm148.42 172.18a10.51 10.51 0 0 1-14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1-11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1-10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.19s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1-1.74 13.44zM187.44 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18z\"],\"apple-pay\":[640,512,[],\"f415\",\"M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z\"],padlet:[640,512,[],\"e4a0\",\"M297.9 0L298 .001C305.6 .1078 312.4 4.72 315.5 11.78L447.5 320.3L447.8 320.2L448 320.6L445.2 330.6L402.3 488.6C398.6 504.8 382.6 514.9 366.5 511.2L298.1 495.6L229.6 511.2C213.5 514.9 197.5 504.8 193.8 488.6L150.9 330.6L148.2 320.6L148.3 320.2L280.4 11.78C283.4 4.797 290.3 .1837 297.9 .0006L297.9 0zM160.1 322.1L291.1 361.2L298 483.7L305.9 362.2L436.5 322.9L436.7 322.8L305.7 347.9L297.1 27.72L291.9 347.9L160.1 322.1zM426 222.6L520.4 181.6H594.2L437.2 429.2L468.8 320.2L426 222.6zM597.5 181.4L638.9 257.6C642.9 265.1 635 273.5 627.3 269.8L579.7 247.1L597.5 181.4zM127.3 318.5L158.7 430L1.61 154.5C-4.292 144.1 7.128 132.5 17.55 138.3L169.4 222.5L127.3 318.5z\"],\"amazon-pay\":[640,512,[],\"f42c\",\"M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.88 595.88 0 0 0 127.4 46.3 616.61 616.61 0 0 0 63.2 11.8 603.33 603.33 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.66 603.66 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1-9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.31 473.31 0 0 1-75.1 17.6 431 431 0 0 1-53.2 4.8 21.3 21.3 0 0 0-2.5.3H308a21.3 21.3 0 0 0-2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1-50.4-5.3A448.4 448.4 0 0 1 164 420a443.33 443.33 0 0 1-145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3.6a80.92 80.92 0 0 0-38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1-.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1-1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9.4a148 148 0 0 0-28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9a7.84 7.84 0 0 1-.2 1.4c-.5-.1-.9 0-1.3-.1a180.56 180.56 0 0 0-32-4.9c-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0-.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7a3.33 3.33 0 0 1-1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8a20.08 20.08 0 0 1-12.4-13.3 32.9 32.9 0 0 1-.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0-21-3.9 147.32 147.32 0 0 0-39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0-3.7 3.5 5.11 5.11 0 0 0-.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0-1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.91 145.91 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1-15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.18 108.18 0 0 0 16.9 2c17.1.4 30.7-6.5 39.5-21.4a131.63 131.63 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0-7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z\"],\"square-github\":[448,512,[\"github-square\"],\"f092\",\"M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM265.8 407.7c0-1.8 0-6 .1-11.6c.1-11.4 .1-28.8 .1-43.7c0-15.6-5.2-25.5-11.3-30.7c37-4.1 76-9.2 76-73.1c0-18.2-6.5-27.3-17.1-39c1.7-4.3 7.4-22-1.7-45c-13.9-4.3-45.7 17.9-45.7 17.9c-13.2-3.7-27.5-5.6-41.6-5.6s-28.4 1.9-41.6 5.6c0 0-31.8-22.2-45.7-17.9c-9.1 22.9-3.5 40.6-1.7 45c-10.6 11.7-15.6 20.8-15.6 39c0 63.6 37.3 69 74.3 73.1c-4.8 4.3-9.1 11.7-10.6 22.3c-9.5 4.3-33.8 11.7-48.3-13.9c-9.1-15.8-25.5-17.1-25.5-17.1c-16.2-.2-1.1 10.2-1.1 10.2c10.8 5 18.4 24.2 18.4 24.2c9.7 29.7 56.1 19.7 56.1 19.7c0 9 .1 21.7 .1 30.6c0 4.8 .1 8.6 .1 10c0 4.3-3 9.5-11.5 8C106 393.6 59.8 330.8 59.8 257.4c0-91.8 70.2-161.5 162-161.5s166.2 69.7 166.2 161.5c.1 73.4-44.7 136.3-110.7 158.3c-8.4 1.5-11.5-3.7-11.5-8zm-90.5-54.8c-.2-1.5 1.1-2.8 3-3.2c1.9-.2 3.7 .6 3.9 1.9c.3 1.3-1 2.6-3 3c-1.9 .4-3.7-.4-3.9-1.7zm-9.1 3.2c-2.2 .2-3.7-.9-3.7-2.4c0-1.3 1.5-2.4 3.5-2.4c1.9-.2 3.7 .9 3.7 2.4c0 1.3-1.5 2.4-3.5 2.4zm-14.3-2.2c-1.9-.4-3.2-1.9-2.8-3.2s2.4-1.9 4.1-1.5c2 .6 3.3 2.1 2.8 3.4c-.4 1.3-2.4 1.9-4.1 1.3zm-12.5-7.3c-1.5-1.3-1.9-3.2-.9-4.1c.9-1.1 2.8-.9 4.3 .6c1.3 1.3 1.8 3.3 .9 4.1c-.9 1.1-2.8 .9-4.3-.6zm-8.5-10c-1.1-1.5-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3c1.1 1.5 1.1 3.3 0 4.1c-.9 .6-2.6 0-3.7-1.5zm-6.3-8.8c-1.1-1.3-1.3-2.8-.4-3.5c.9-.9 2.4-.4 3.5 .6c1.1 1.3 1.3 2.8 .4 3.5c-.9 .9-2.4 .4-3.5-.6zm-6-6.4c-1.3-.6-1.9-1.7-1.5-2.6c.4-.6 1.5-.9 2.8-.4c1.3 .7 1.9 1.8 1.5 2.6c-.4 .9-1.7 1.1-2.8 .4z\"],stumbleupon:[512,512,[],\"f1a4\",\"M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z\"],fedex:[640,512,[],\"f797\",\"M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z\"],\"phoenix-framework\":[640,512,[],\"f3dc\",\"M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z\"],shopify:[448,512,[],\"e057\",\"M388.32,104.1a4.66,4.66,0,0,0-4.4-4c-2,0-37.23-.8-37.23-.8s-21.61-20.82-29.62-28.83V503.2L442.76,472S388.72,106.5,388.32,104.1ZM288.65,70.47a116.67,116.67,0,0,0-7.21-17.61C271,32.85,255.42,22,237,22a15,15,0,0,0-4,.4c-.4-.8-1.2-1.2-1.6-2C223.4,11.63,213,7.63,200.58,8c-24,.8-48,18-67.25,48.83-13.61,21.62-24,48.84-26.82,70.06-27.62,8.4-46.83,14.41-47.23,14.81-14,4.4-14.41,4.8-16,18-1.2,10-38,291.82-38,291.82L307.86,504V65.67a41.66,41.66,0,0,0-4.4.4S297.86,67.67,288.65,70.47ZM233.41,87.69c-16,4.8-33.63,10.4-50.84,15.61,4.8-18.82,14.41-37.63,25.62-50,4.4-4.4,10.41-9.61,17.21-12.81C232.21,54.86,233.81,74.48,233.41,87.69ZM200.58,24.44A27.49,27.49,0,0,1,215,28c-6.4,3.2-12.81,8.41-18.81,14.41-15.21,16.42-26.82,42-31.62,66.45-14.42,4.41-28.83,8.81-42,12.81C131.33,83.28,163.75,25.24,200.58,24.44ZM154.15,244.61c1.6,25.61,69.25,31.22,73.25,91.66,2.8,47.64-25.22,80.06-65.65,82.47-48.83,3.2-75.65-25.62-75.65-25.62l10.4-44s26.82,20.42,48.44,18.82c14-.8,19.22-12.41,18.81-20.42-2-33.62-57.24-31.62-60.84-86.86-3.2-46.44,27.22-93.27,94.47-97.68,26-1.6,39.23,4.81,39.23,4.81L221.4,225.39s-17.21-8-37.63-6.4C154.15,221,153.75,239.8,154.15,244.61ZM249.42,82.88c0-12-1.6-29.22-7.21-43.63,18.42,3.6,27.22,24,31.23,36.43Q262.63,78.68,249.42,82.88Z\"],neos:[512,512,[],\"f612\",\"M415.44 512h-95.11L212.12 357.46v91.1L125.69 512H28V29.82L68.47 0h108.05l123.74 176.13V63.45L386.69 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.64h84.79l52.35-38.17h-78.27L69 13zm82.54 466.61l80-58.78v-101l-79.76-114.4v220.94L49 501.89h72.34zM80.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L170.91 10.77zM311 191.65l72 102.81V15.93l-72 53v122.72z\"],\"square-threads\":[448,512,[],\"e619\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM294.2 244.3c19.5 9.3 33.7 23.5 41.2 40.9c10.4 24.3 11.4 63.9-20.2 95.4c-24.2 24.1-53.5 35-95.1 35.3h-.2c-46.8-.3-82.8-16.1-106.9-46.8C91.5 341.8 80.4 303.7 80 256v-.1-.1c.4-47.7 11.5-85.7 33-113.1c24.2-30.7 60.2-46.5 106.9-46.8h.2c46.9 .3 83.3 16 108.2 46.6c12.3 15.1 21.3 33.3 27 54.4l-26.9 7.2c-4.7-17.2-11.9-31.9-21.4-43.6c-19.4-23.9-48.7-36.1-87-36.4c-38 .3-66.8 12.5-85.5 36.2c-17.5 22.3-26.6 54.4-26.9 95.5c.3 41.1 9.4 73.3 26.9 95.5c18.7 23.8 47.4 36 85.5 36.2c34.3-.3 56.9-8.4 75.8-27.3c21.5-21.5 21.1-47.9 14.2-64c-4-9.4-11.4-17.3-21.3-23.3c-2.4 18-7.9 32.2-16.5 43.2c-11.4 14.5-27.7 22.4-48.4 23.5c-15.7 .9-30.8-2.9-42.6-10.7c-13.9-9.2-22-23.2-22.9-39.5c-1.7-32.2 23.8-55.3 63.5-57.6c14.1-.8 27.3-.2 39.5 1.9c-1.6-9.9-4.9-17.7-9.8-23.4c-6.7-7.8-17.1-11.8-30.8-11.9h-.4c-11 0-26 3.1-35.6 17.6l-23-15.8c12.8-19.4 33.6-30.1 58.5-30.1h.6c41.8 .3 66.6 26.3 69.1 71.8c1.4 .6 2.8 1.2 4.2 1.9l.1 .5zm-71.8 67.5c17-.9 36.4-7.6 39.7-48.8c-8.8-1.9-18.6-2.9-29-2.9c-3.2 0-6.4 .1-9.6 .3c-28.6 1.6-38.1 15.5-37.4 27.9c.9 16.7 19 24.5 36.4 23.6l-.1-.1z\"],hackerrank:[512,512,[],\"f5f7\",\"M477.5 128C463 103.05 285.13 0 256.16 0S49.25 102.79 34.84 128s-14.49 230.8 0 256 192.38 128 221.32 128S463 409.08 477.49 384s14.51-231 .01-256zM316.13 414.22c-4 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11.92-33.44 3-84-.15-212.67v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.64 336 341.29 336 373.69c8.87.35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z\"],researchgate:[448,512,[],\"f4f8\",\"M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z\"],swift:[448,512,[],\"f8e1\",\"M448 156.09c0-4.51-.08-9-.2-13.52a196.31 196.31 0 0 0-2.58-29.42 99.62 99.62 0 0 0-9.22-28A94.08 94.08 0 0 0 394.84 44a99.17 99.17 0 0 0-28-9.22 195 195 0 0 0-29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.14c-4.51 0-9 .08-13.52.2-2.45.07-4.91.15-7.37.27a171.68 171.68 0 0 0-22.06 2.32 103.06 103.06 0 0 0-21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0-18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0-9.22 28 196.31 196.31 0 0 0-2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.83c0 4.51.08 9 .21 13.51a196.08 196.08 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5.12 9 .17 13.52.2H323.91c4.51 0 9-.08 13.52-.2a196.59 196.59 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.84a99.3 99.3 0 0 0 9.22-28 194.79 194.79 0 0 0 2.59-29.42c.12-4.5.17-9 .2-13.51V172.14c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42.25c-39.5 21-92.53 22.54-145.85-.38A234.64 234.64 0 0 1 45 290.12a230.63 230.63 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.09-147.22a197.09 197.09 0 0 1-18.78-25.9c43.7 40 112.7 90.22 137.48 104.12-52.57-55.49-98.89-123.94-96.72-121.74 82.79 83.42 159.18 130.59 159.18 130.59 2.88 1.58 5 2.85 6.73 4a127.44 127.44 0 0 0 4.16-12.47c13.22-48.33-1.66-103.58-35.31-149.2C329.61 141.75 375 229.34 356.4 303.42c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z\"],angular:[448,512,[],\"f420\",\"M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z\"],speakap:[448,512,[],\"f3f3\",\"M64 391.78C-15.41 303.59-8 167.42 80.64 87.64s224.8-73 304.21 15.24 72 224.36-16.64 304.14c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.91 35-346.23-67.5zm213.31-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33.29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23.18 96.42.33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75.41-23.25 31-25.37 37.53-25.26.43 0 26.62.26 39.62 17.37z\"],angrycreative:[640,512,[],\"f36e\",\"M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z\"],\"y-combinator\":[448,512,[],\"f23b\",\"M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z\"],empire:[496,512,[],\"f1d1\",\"M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z\"],envira:[448,512,[],\"f299\",\"M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z\"],\"google-scholar\":[512,512,[],\"e63b\",\"M390.9 298.5c0 0 0 .1 .1 .1c9.2 19.4 14.4 41.1 14.4 64C405.3 445.1 338.5 512 256 512s-149.3-66.9-149.3-149.3c0-22.9 5.2-44.6 14.4-64h0c1.7-3.6 3.6-7.2 5.6-10.7c4.4-7.6 9.4-14.7 15-21.3c27.4-32.6 68.5-53.3 114.4-53.3c33.6 0 64.6 11.1 89.6 29.9c9.1 6.9 17.4 14.7 24.8 23.5c5.6 6.6 10.6 13.8 15 21.3c2 3.4 3.8 7 5.5 10.5zm26.4-18.8c-30.1-58.4-91-98.4-161.3-98.4s-131.2 40-161.3 98.4L0 202.7 256 0 512 202.7l-94.7 77.1z\"],\"square-gitlab\":[448,512,[\"gitlab-square\"],\"e5ae\",\"M0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm337.5 12.5l44.6 116.4 .4 1.2c5.6 16.8 7.2 35.2 2.3 52.5c-5 17.2-15.4 32.4-29.8 43.3l-.2 .1-68.4 51.2-54.1 40.9c-.5 .2-1.1 .5-1.7 .8c-2 1-4.4 2-6.7 2c-3 0-6.8-1.8-8.3-2.8l-54.2-40.9L93.5 322.3l-.4-.3-.2-.1c-14.3-10.8-24.8-26-29.7-43.3s-4.2-35.7 2.2-52.5l.5-1.2 44.7-116.4c.9-2.3 2.5-4.3 4.5-5.6c1.6-1 3.4-1.6 5.2-1.8c1.3-.7 2.1-.4 3.4 .1c.6 .2 1.2 .5 2 .7c1 .4 1.6 .9 2.4 1.5c.6 .4 1.2 1 2.1 1.5c1.2 1.4 2.2 3 2.7 4.8l29.2 92.2H285l30.2-92.2c.5-1.8 1.4-3.4 2.6-4.8s2.8-2.4 4.5-3.1c1.7-.6 3.6-.9 5.4-.7s3.6 .8 5.2 1.8c2 1.3 3.7 3.3 4.6 5.6z\"],studiovinari:[512,512,[],\"f3f8\",\"M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z\"],\"pied-piper\":[480,512,[],\"f2ae\",\"M455.93,23.2C429.23,30,387.79,51.69,341.35,90.66A206,206,0,0,0,240,64C125.13,64,32,157.12,32,272s93.13,208,208,208,208-93.13,208-208a207.25,207.25,0,0,0-58.75-144.81,155.35,155.35,0,0,0-17,27.4A176.16,176.16,0,0,1,417.1,272c0,97.66-79.44,177.11-177.09,177.11a175.81,175.81,0,0,1-87.63-23.4c82.94-107.33,150.79-37.77,184.31-226.65,5.79-32.62,28-94.26,126.23-160.18C471,33.45,465.35,20.8,455.93,23.2ZM125,406.4A176.66,176.66,0,0,1,62.9,272C62.9,174.34,142.35,94.9,240,94.9a174,174,0,0,1,76.63,17.75C250.64,174.76,189.77,265.52,125,406.4Z\"],wordpress:[512,512,[],\"f19a\",\"M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z\"],\"product-hunt\":[512,512,[],\"f288\",\"M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z\"],firefox:[512,512,[],\"f269\",\"M503.52,241.48c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.86,245.86,0,0,0-7.32-41.15c0-.12,0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27,8.27,0,0,0-.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48,0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07,18.07,0,0,0-1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63,15.63,0,0,0-1.2-1.8L463.2,119a15.63,15.63,0,0,0-1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.76,248.76,0,0,0-23.51-26.64A186.82,186.82,0,0,0,412,62.46c-4-3.48-8.16-6.72-12.48-9.84a162.49,162.49,0,0,0-24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254,254,0,0,0-55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.35,236.35,0,0,0-38-4H255.14a234.62,234.62,0,0,0-45.48,5c-33.59,7.08-63.23,21.24-82.91,39-1.08,1-1.92,1.68-2.4,2.16l-.48.48H124l-.12.12.12-.12a.12.12,0,0,0,.12-.12l-.12.12a.42.42,0,0,1,.24-.12c14.64-8.76,34.92-16,49.44-19.56l5.88-1.44c.36-.12.84-.12,1.2-.24,1.68-.36,3.36-.72,5.16-1.08.24,0,.6-.12.84-.12C250.94,20.94,319.34,40.14,367,85.61a171.49,171.49,0,0,1,26.88,32.76c30.36,49.2,27.48,111.11,3.84,147.59-34.44,53-111.35,71.27-159,24.84a84.19,84.19,0,0,1-25.56-59,74.05,74.05,0,0,1,6.24-31c1.68-3.84,13.08-25.67,18.24-24.59-13.08-2.76-37.55,2.64-54.71,28.19-15.36,22.92-14.52,58.2-5,83.28a132.85,132.85,0,0,1-12.12-39.24c-12.24-82.55,43.31-153,94.31-170.51-27.48-24-96.47-22.31-147.71,15.36-29.88,22-51.23,53.16-62.51,90.36,1.68-20.88,9.6-52.08,25.8-83.88-17.16,8.88-39,37-49.8,62.88-15.6,37.43-21,82.19-16.08,124.79.36,3.24.72,6.36,1.08,9.6,19.92,117.11,122,206.38,244.78,206.38C392.77,503.42,504,392.19,504,255,503.88,250.48,503.76,245.92,503.52,241.48Z\"],linode:[448,512,[],\"f2b8\",\"M366.036,186.867l-59.5,36.871-.838,36.871-29.329-19.273-39.384,24.3c2.238,55.211,2.483,59.271,2.51,59.5l-97.2,65.359L127.214,285.748l108.1-62.01L195.09,197.761l-75.417,38.547L98.723,93.015,227.771,43.574,136.432,0,10.737,39.385,38.39,174.3l41.9,32.681L48.445,222.062,69.394,323.457,98.723,351.11,77.774,363.679l16.76,78.769L160.733,512c-10.8-74.842-11.658-78.641-11.725-78.773l77.925-55.3c16.759-12.57,15.083-10.894,15.083-10.894l.838,24.3,33.519,28.491-.838-77.093,46.927-33.519,26.815-18.435-2.514,36.033,25.139,17.6,6.7-74.579,58.657-43.575Z\"],goodreads:[448,512,[],\"f3a8\",\"M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z\"],\"square-odnoklassniki\":[448,512,[\"odnoklassniki-square\"],\"f264\",\"M224 137.1a39.9 39.9 0 1 0 0 79.7 39.9 39.9 0 1 0 0-79.7zM384 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zM224 95.9A81 81 0 1 1 224 258a81 81 0 1 1 0-162.1zm59.3 168.3c16.8-13.2 29.5-5.5 34.1 3.6c7.8 16-1.1 23.7-21.5 37c-17.1 10.9-40.7 15.2-56.2 16.8l13 12.9 47.7 47.7c17.4 17.9-11 45.8-28.6 28.6c-12-12.2-29.5-29.7-47.7-47.9l0 0-47.7 47.9c-17.7 17.2-46-11-28.4-28.6c3.7-3.7 7.9-7.9 12.5-12.5c10.4-10.4 22.6-22.7 35.2-35.2l12.9-12.9c-15.4-1.6-39.3-5.7-56.6-16.8c-20.3-13.3-29.3-20.9-21.4-37c4.6-9.1 17.3-16.8 34.1-3.6c0 0 22.7 18 59.3 18s59.3-18 59.3-18z\"],jsfiddle:[576,512,[],\"f1cc\",\"M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z\"],sith:[448,512,[],\"f512\",\"M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z\"],themeisle:[512,512,[],\"f2b2\",\"M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z\"],page4:[496,512,[],\"f3d7\",\"M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z\"],hashnode:[512,512,[],\"e499\",\"M35.19 171.1C-11.72 217.1-11.72 294 35.19 340.9L171.1 476.8C217.1 523.7 294 523.7 340.9 476.8L476.8 340.9C523.7 294 523.7 217.1 476.8 171.1L340.9 35.19C294-11.72 217.1-11.72 171.1 35.19L35.19 171.1zM315.5 315.5C282.6 348.3 229.4 348.3 196.6 315.5C163.7 282.6 163.7 229.4 196.6 196.6C229.4 163.7 282.6 163.7 315.5 196.6C348.3 229.4 348.3 282.6 315.5 315.5z\"],react:[512,512,[],\"f41b\",\"M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z\"],\"cc-paypal\":[576,512,[],\"f1f4\",\"M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z\"],squarespace:[512,512,[],\"f5be\",\"M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z\"],\"cc-stripe\":[576,512,[],\"f1f5\",\"M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z\"],\"creative-commons-share\":[496,512,[],\"f4f2\",\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z\"],bitcoin:[512,512,[],\"f379\",\"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z\"],keycdn:[512,512,[],\"f3ba\",\"M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160\"],opera:[496,512,[],\"f26a\",\"M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z\"],\"itch-io\":[512,512,[],\"f83a\",\"M71.92 34.77C50.2 47.67 7.4 96.84 7 109.73v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.56 32.4 325.76 32 256 32S91.14 33.1 71.92 34.77zm132.32 134.39c-22 38.4-77.9 38.71-99.85.25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.13 17.73 269.15 80 18.67 302.08 18.12 379.76 0 31.65-32.27 21.32-232 17.75-269.15-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1-51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.91 436.91 0 0 1 88.18 0C318.22 223 332.85 223 349.31 223c52.33 0 65.22 77.53 83.87 144.45 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.93 8.79-155.55 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.45 83.88-144.45zM256 270.79s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34.16 23.33.16 11.65.54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z\"],umbraco:[510,512,[],\"f8e8\",\"M255.35 8C118.36 7.83 7.14 118.72 7 255.68c-.07 137 111 248.2 248 248.27 136.85 0 247.82-110.7 248-247.67S392.34 8.17 255.35 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78.22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.81 224.81 0 0 1 0-30.71 418.37 418.37 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.62 380.62 0 0 0-2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.64 242.64 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0-2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05.81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.71 415.71 0 0 1 3.61 43.88 228.06 228.06 0 0 1-.04 30.73z\"],\"galactic-senate\":[512,512,[],\"f50d\",\"M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z\"],ubuntu:[576,512,[],\"f7df\",\"M469.2 75A75.6 75.6 0 1 0 317.9 75a75.6 75.6 0 1 0 151.2 0zM154.2 240.7A75.6 75.6 0 1 0 3 240.7a75.6 75.6 0 1 0 151.2 0zM57 346C75.6 392.9 108 433 150 461.1s91.5 42.6 142 41.7c-14.7-18.6-22.9-41.5-23.2-65.2c-6.8-.9-13.3-2.1-19.5-3.4c-26.8-5.7-51.9-17.3-73.6-34s-39.3-38.1-51.7-62.5c-20.9 9.9-44.5 12.8-67.1 8.2zm395.1 89.8a75.6 75.6 0 1 0 -151.2 0 75.6 75.6 0 1 0 151.2 0zM444 351.6c18.5 14.8 31.6 35.2 37.2 58.2c33.3-41.3 52.6-92.2 54.8-145.2s-12.5-105.4-42.2-149.4c-8.6 21.5-24 39.6-43.8 51.6c15.4 28.6 22.9 60.8 21.9 93.2s-10.7 64-28 91.6zM101.1 135.4c12.4 2.7 24.3 7.5 35.1 14.3c16.6-24.2 38.9-44.1 64.8-58S255.8 70.4 285.2 70c.2-5.9 .9-11.9 2-17.7c3.6-16.7 11.1-32.3 21.8-45.5c-47.7-3.8-95.4 6-137.6 28.5S94.3 91.7 70.8 133.4c2.7-.2 5.3-.3 8-.3c7.5 0 15 .8 22.4 2.3z\"],draft2digital:[480,512,[],\"f396\",\"M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z\"],stripe:[640,512,[],\"f429\",\"M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z\"],houzz:[448,512,[],\"f27c\",\"M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z\"],gg:[512,512,[],\"f260\",\"M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z\"],dhl:[640,512,[],\"f790\",\"M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4.7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z\"],\"square-pinterest\":[448,512,[\"pinterest-square\"],\"f0d3\",\"M384 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64h72.6l-2.2-.8c-5.4-48.1-3.1-57.5 15.7-134.7c3.9-16 8.5-35 13.9-57.9c0 0-7.3-14.8-7.3-36.5c0-70.7 75.5-78 75.5-25c0 13.5-5.4 31.1-11.2 49.8c-3.3 10.6-6.6 21.5-9.1 32c-5.7 24.5 12.3 44.4 36.4 44.4c43.7 0 77.2-46 77.2-112.4c0-58.8-42.3-99.9-102.6-99.9C153 139 112 191.4 112 245.6c0 21.1 8.2 43.7 18.3 56c2 2.4 2.3 4.5 1.7 7c-1.1 4.7-3.1 12.9-4.7 19.2c-1 4-1.8 7.3-2.1 8.6c-1.1 4.5-3.5 5.5-8.2 3.3c-30.6-14.3-49.8-59.1-49.8-95.1C67.2 167.1 123.4 96 229.4 96c85.2 0 151.4 60.7 151.4 141.8c0 84.6-53.3 152.7-127.4 152.7c-24.9 0-48.3-12.9-56.3-28.2c0 0-12.3 46.9-15.3 58.4c-5 19.3-17.6 42.9-27.4 59.3H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64z\"],xing:[384,512,[],\"f168\",\"M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z\"],blackberry:[512,512,[],\"f37b\",\"M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z\"],\"creative-commons-pd\":[496,512,[],\"f4ec\",\"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z\"],playstation:[576,512,[],\"f3df\",\"M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z\"],quinscape:[512,512,[],\"f459\",\"M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.36 237.36 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4.1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0-99.2-99.2z\"],less:[640,512,[],\"f41d\",\"M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z\"],\"blogger-b\":[448,512,[],\"f37d\",\"M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z\"],opencart:[640,512,[],\"f23d\",\"M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z\"],vine:[384,512,[],\"f1ca\",\"M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z\"],\"signal-messenger\":[512,512,[],\"e663\",\"M194.6 7.5l5.8 23.3C177.7 36.3 156 45.3 136 57.4L123.7 36.8c22-13.3 45.9-23.2 70.9-29.3zm122.9 0l-5.8 23.3C334.3 36.3 356 45.3 376 57.4l12.4-20.6c-22-13.3-46-23.2-71-29.3zM36.8 123.7c-13.3 22-23.2 45.9-29.3 70.9l23.3 5.8C36.3 177.7 45.3 156 57.4 136L36.8 123.7zM24 256c0-11.6 .9-23.3 2.6-34.8L2.9 217.6c-3.8 25.4-3.8 51.3 0 76.7l23.7-3.6C24.9 279.3 24 267.6 24 256zM388.3 475.2L376 454.6c-20 12.1-41.6 21-64.2 26.6l5.8 23.3c24.9-6.2 48.8-16 70.8-29.3zM488 256c0 11.6-.9 23.3-2.6 34.8l23.7 3.6c3.8-25.4 3.8-51.3 0-76.7l-23.7 3.6c1.7 11.5 2.6 23.1 2.6 34.8zm16.5 61.4l-23.3-5.8c-5.6 22.7-14.5 44.3-26.6 64.3l20.6 12.4c13.3-22 23.2-46 29.3-71zm-213.8 168c-23 3.5-46.5 3.5-69.5 0l-3.6 23.7c25.4 3.8 51.3 3.8 76.7 0l-3.6-23.7zm152-91.8c-13.8 18.7-30.4 35.3-49.2 49.1l14.2 19.3c20.7-15.2 39-33.4 54.2-54.1l-19.3-14.4zM393.6 69.2c18.8 13.8 35.3 30.4 49.2 49.2L462.1 104C446.9 83.4 428.6 65.1 408 49.9L393.6 69.2zM69.2 118.4c13.8-18.8 30.4-35.3 49.2-49.2L104 49.9C83.4 65.1 65.1 83.4 49.9 104l19.3 14.4zm406 5.3L454.6 136c12.1 20 21 41.6 26.6 64.2l23.3-5.8c-6.2-24.9-16-48.8-29.3-70.8zm-254-97.1c23-3.5 46.5-3.5 69.5 0l3.6-23.7C268.9-1 243.1-1 217.6 2.9l3.6 23.7zM81.6 468.4L32 480l11.6-49.6L20.2 425 8.6 474.5c-.9 4-.8 8.1 .3 12.1s3.2 7.5 6.1 10.4s6.5 5 10.4 6.1s8.1 1.2 12.1 .3L87 492l-5.4-23.6zM25.2 403.6L48.6 409l8-34.4c-11.7-19.6-20.4-40.8-25.8-63L7.5 317.4c5.2 21.2 13.2 41.7 23.6 60.8l-5.9 25.3zm112 52l-34.4 8 5.4 23.4 25.3-5.9c19.2 10.4 39.6 18.4 60.8 23.6l5.8-23.3c-22.1-5.5-43.3-14.3-62.8-26l-.2 .2zM256 48c-37.2 0-73.6 10-105.6 28.9s-58.4 46-76.3 78.6s-26.9 69.3-25.8 106.4s12 73.3 31.8 104.8L60 452l85.3-20c27.3 17.2 58.2 27.8 90.3 31s64.5-1.1 94.6-12.6s57.2-29.8 79-53.6s37.8-52.2 46.8-83.2s10.5-63.6 4.7-95.3s-19-61.6-38.4-87.4s-44.5-46.7-73.4-61S288.3 48 256 48z\"],paypal:[384,512,[],\"f1ed\",\"M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z\"],gitlab:[512,512,[],\"f296\",\"M503.5 204.6L502.8 202.8L433.1 21.02C431.7 17.45 429.2 14.43 425.9 12.38C423.5 10.83 420.8 9.865 417.9 9.57C415 9.275 412.2 9.653 409.5 10.68C406.8 11.7 404.4 13.34 402.4 15.46C400.5 17.58 399.1 20.13 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.13 111.5 17.59 109.6 15.47C107.6 13.35 105.2 11.72 102.5 10.7C99.86 9.675 96.98 9.295 94.12 9.587C91.26 9.878 88.51 10.83 86.08 12.38C82.84 14.43 80.33 17.45 78.92 21.02L9.267 202.8L8.543 204.6C-1.484 230.8-2.72 259.6 5.023 286.6C12.77 313.5 29.07 337.3 51.47 354.2L51.74 354.4L52.33 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z\"],typo3:[448,512,[],\"f42b\",\"M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z\"],\"reddit-alien\":[512,512,[],\"f281\",\"M373 138.6c-25.2 0-46.3-17.5-51.9-41l0 0c-30.6 4.3-54.2 30.7-54.2 62.4l0 .2c47.4 1.8 90.6 15.1 124.9 36.3c12.6-9.7 28.4-15.5 45.5-15.5c41.3 0 74.7 33.4 74.7 74.7c0 29.8-17.4 55.5-42.7 67.5c-2.4 86.8-97 156.6-213.2 156.6S45.5 410.1 43 323.4C17.6 311.5 0 285.7 0 255.7c0-41.3 33.4-74.7 74.7-74.7c17.2 0 33 5.8 45.7 15.6c34-21.1 76.8-34.4 123.7-36.4l0-.3c0-44.3 33.7-80.9 76.8-85.5C325.8 50.2 347.2 32 373 32c29.4 0 53.3 23.9 53.3 53.3s-23.9 53.3-53.3 53.3zM157.5 255.3c-20.9 0-38.9 20.8-40.2 47.9s17.1 38.1 38 38.1s36.6-9.8 37.8-36.9s-14.7-49.1-35.7-49.1zM395 303.1c-1.2-27.1-19.2-47.9-40.2-47.9s-36.9 22-35.7 49.1c1.2 27.1 16.9 36.9 37.8 36.9s39.3-11 38-38.1zm-60.1 70.8c1.5-3.6-1-7.7-4.9-8.1c-23-2.3-47.9-3.6-73.8-3.6s-50.8 1.3-73.8 3.6c-3.9 .4-6.4 4.5-4.9 8.1c12.9 30.8 43.3 52.4 78.7 52.4s65.8-21.6 78.7-52.4z\"],yahoo:[512,512,[],\"f19e\",\"M223.69,141.06,167,284.23,111,141.06H14.93L120.76,390.19,82.19,480h94.17L317.27,141.06Zm105.4,135.79a58.22,58.22,0,1,0,58.22,58.22A58.22,58.22,0,0,0,329.09,276.85ZM394.65,32l-93,223.47H406.44L499.07,32Z\"],dailymotion:[448,512,[],\"e052\",\"M298.93,267a48.4,48.4,0,0,0-24.36-6.21q-19.83,0-33.44,13.27t-13.61,33.42q0,21.16,13.28,34.6t33.43,13.44q20.5,0,34.11-13.78T322,307.47A47.13,47.13,0,0,0,315.9,284,44.13,44.13,0,0,0,298.93,267ZM0,32V480H448V32ZM374.71,405.26h-53.1V381.37h-.67q-15.79,26.2-55.78,26.2-27.56,0-48.89-13.1a88.29,88.29,0,0,1-32.94-35.77q-11.6-22.68-11.59-50.89,0-27.56,11.76-50.22a89.9,89.9,0,0,1,32.93-35.78q21.18-13.09,47.72-13.1a80.87,80.87,0,0,1,29.74,5.21q13.28,5.21,25,17V153l55.79-12.09Z\"],affiliatetheme:[512,512,[],\"f36b\",\"M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z\"],\"pied-piper-pp\":[448,512,[],\"f1a7\",\"M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z\"],bootstrap:[576,512,[],\"f836\",\"M333.5,201.4c0-22.1-15.6-34.3-43-34.3h-50.4v71.2h42.5C315.4,238.2,333.5,225,333.5,201.4z M517,188.6 c-9.5-30.9-10.9-68.8-9.8-98.1c1.1-30.5-22.7-58.5-54.7-58.5H123.7c-32.1,0-55.8,28.1-54.7,58.5c1,29.3-0.3,67.2-9.8,98.1 c-9.6,31-25.7,50.6-52.2,53.1v28.5c26.4,2.5,42.6,22.1,52.2,53.1c9.5,30.9,10.9,68.8,9.8,98.1c-1.1,30.5,22.7,58.5,54.7,58.5h328.7 c32.1,0,55.8-28.1,54.7-58.5c-1-29.3,0.3-67.2,9.8-98.1c9.6-31,25.7-50.6,52.1-53.1v-28.5C542.7,239.2,526.5,219.6,517,188.6z M300.2,375.1h-97.9V136.8h97.4c43.3,0,71.7,23.4,71.7,59.4c0,25.3-19.1,47.9-43.5,51.8v1.3c33.2,3.6,55.5,26.6,55.5,58.3 C383.4,349.7,352.1,375.1,300.2,375.1z M290.2,266.4h-50.1v78.4h52.3c34.2,0,52.3-13.7,52.3-39.5 C344.7,279.6,326.1,266.4,290.2,266.4z\"],odnoklassniki:[320,512,[],\"f263\",\"M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z\"],\"nfc-symbol\":[576,512,[],\"e531\",\"M392.9 32.43C400.6 31.1 408.6 32.89 414.1 37.41C498.2 96.14 544 173.7 544 255.1C544 338.2 498.2 415.9 414.1 474.6C409.3 478.6 402.4 480.5 395.5 479.9C388.5 479.3 382 476.3 377.1 471.4L193.7 288.7C188.1 283.2 185 275.7 184.1 267.8C184.1 260 188.1 252.5 193.6 246.9C199.2 241.4 206.7 238.2 214.5 238.2C222.4 238.2 229.9 241.3 235.4 246.8L400.5 411.2C455.1 366.5 484.8 312 484.8 255.1C484.8 193.5 447.9 132.9 380.9 85.76C374.5 81.24 370.1 74.35 368.8 66.62C367.4 58.89 369.2 50.94 373.8 44.53C378.3 38.12 385.2 33.77 392.9 32.43V32.43zM186.9 479.6C179.2 480.9 171.3 479.1 164.8 474.6C81.67 415.9 35.84 338.2 35.84 255.1C35.84 173.7 81.67 96.14 164.8 37.41C170.5 33.4 177.4 31.53 184.4 32.12C191.3 32.71 197.8 35.72 202.7 40.63L386.1 223.3C391.7 228.8 394.8 236.3 394.8 244.2C394.9 251.1 391.8 259.5 386.2 265.1C380.7 270.6 373.2 273.8 365.3 273.8C357.5 273.8 349.1 270.7 344.4 265.2L179.3 100.7C124.7 145.9 95.03 199.9 95.03 255.1C95.03 318.5 131.9 379.1 198.1 426.2C205.4 430.8 209.7 437.6 211.1 445.4C212.4 453.1 210.6 461.1 206.1 467.5C201.6 473.9 194.7 478.2 186.9 479.6V479.6z\"],mintbit:[512,512,[],\"e62f\",\"M73.2 512V438.9H365.7V365.7h73.2V219.4H512V0H292.6V73.1H146.3v73.2H73.2V438.9H0V512H73.2zm73.1-219.4h73.2v73.1H146.3V292.6zm73.2-73.1h73.1v73.1H219.4V219.4zm73.1 0V146.3h73.2v73.1H292.6zM365.7 73.1h73.2v73.2H365.7V73.1z\"],ethereum:[320,512,[],\"f42e\",\"M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z\"],\"speaker-deck\":[512,512,[],\"f83c\",\"M213.86 296H100a100 100 0 0 1 0-200h132.84a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.82a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.86c26.48 0 26.46-40 0-40zM298 416a120.21 120.21 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0-19.66-20H296.42a60.77 60.77 0 0 0 0-80h136.93c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z\"],\"creative-commons-nc-eu\":[496,512,[],\"f4e9\",\"M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z\"],patreon:[512,512,[],\"f3d9\",\"M489.7 153.8c-.1-65.4-51-119-110.7-138.3C304.8-8.5 207-5 136.1 28.4C50.3 68.9 23.3 157.7 22.3 246.2C21.5 319 28.7 510.6 136.9 512c80.3 1 92.3-102.5 129.5-152.3c26.4-35.5 60.5-45.5 102.4-55.9c72-17.8 121.1-74.7 121-150z\"],avianex:[512,512,[],\"f374\",\"M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z\"],ello:[496,512,[],\"f5f1\",\"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z\"],gofore:[400,512,[],\"f3a7\",\"M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z\"],bimobject:[448,512,[],\"f378\",\"M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z\"],\"brave-reverse\":[448,512,[],\"e63d\",\"M298 0c3 0 5.8 1.3 7.8 3.6l38.1 44c.5-.1 1-.2 1.5-.3c9.2-1.6 18.6-2.2 27.7-1.2c11.6 1.4 21.5 5.4 28.9 12.9c7.7 7.8 15.4 15.8 22.6 23.6c2.5 2.7 4.9 5.2 6.9 7.4c.7 .8 1.4 1.5 1.9 2c3.4 3.7 4.2 8.1 2.7 11.9l-9.8 24.6 13.1 38.1c.7 2 .8 4.1 .2 6.2c-.1 .4-.1 .4-.5 2.1c-.6 2.3-.6 2.3-1.5 5.8c-1.6 6.3-3.5 13.3-5.4 20.9c-5.6 21.6-11.2 43.2-16.4 63.4c-12.9 49.9-21.4 82.7-23.4 90.9c-11.1 44.5-19.9 60-48.3 80.3c-24.9 17.8-76.8 53.6-86.8 60c-1 .6-2 1.3-3.4 2.3c-.5 .4-3.2 2.2-3.9 2.7c-4.9 3.3-8.3 5.5-12.1 7.3c-4.7 2.2-9.3 3.5-13.9 3.5s-9.1-1.2-13.9-3.5c-3.7-1.8-7.2-3.9-12.1-7.3c-.8-.5-3.4-2.4-3.9-2.7c-1.4-1-2.5-1.7-3.4-2.3c-10-6.4-61.9-42.1-86.8-60c-28.4-20.4-37.2-35.8-48.3-80.3c-2-8.2-10.5-41-23.3-90.5c-5.3-20.6-10.9-42.2-16.5-63.8c-2-7.6-3.8-14.6-5.4-20.9c-.9-3.5-.9-3.5-1.5-5.8c-.4-1.7-.4-1.7-.5-2.1c-.5-2-.4-4.2 .2-6.2l13.1-38.1L11.8 104c-1.5-3.8-.7-8.2 2-11.2c1.2-1.3 1.8-2 2.6-2.8c2-2.2 4.4-4.7 6.9-7.4C30.6 74.9 38.3 66.9 46 59.1c7.4-7.5 17.3-11.6 28.9-12.9c9.1-1.1 18.5-.5 27.7 1.2c.5 .1 1 .2 1.5 .3l38.1-44C144.2 1.3 147 0 150 0H298zm-4.7 21.1H154.7L115.6 66.2c-2.6 3-6.7 4.3-10.6 3.2c-.2-.1-.7-.2-1.5-.4c-1.3-.3-2.9-.6-4.5-.9c-7.4-1.3-14.9-1.8-21.7-1C70 68 64.3 70.3 60.7 74c-7.6 7.7-15.2 15.6-22.3 23.3c-1.7 1.8-3.3 3.5-4.8 5.1l8.8 22c1 2.4 1 5 .2 7.5L29.2 170.6c.4 1.4 .5 1.9 1.2 4.8c1.6 6.3 3.5 13.3 5.4 20.9c5.6 21.6 11.2 43.2 16.4 63.4c12.9 50 21.4 82.8 23.4 91C85.7 390.8 92 402 115.8 419c24.6 17.6 76.3 53.2 85.9 59.3c1.2 .8 2.5 1.6 4 2.7c.6 .4 3.2 2.2 3.9 2.7c4 2.8 6.7 4.4 9.2 5.6c2.2 1 3.9 1.5 5.1 1.5s2.9-.5 5.1-1.5c2.5-1.2 5.2-2.8 9.2-5.6c.7-.5 3.3-2.3 3.9-2.7c1.6-1.1 2.8-1.9 4-2.7c9.6-6.1 61.3-41.7 85.9-59.3c23.8-17.1 30.2-28.2 40.1-68.3c2.1-8.3 10.5-41.1 23.3-90.7c5.3-20.6 10.9-42.2 16.5-63.8c2-7.6 3.8-14.6 5.4-20.9c.7-2.9 .9-3.4 1.2-4.8l-13.3-38.8c-.8-2.4-.8-5.1 .2-7.5l8.8-22c-1.5-1.6-3.1-3.3-4.8-5.1c-7.2-7.6-14.7-15.5-22.3-23.3c-3.7-3.7-9.3-6-16.6-6.9c-6.8-.8-14.4-.3-21.7 1c-1.7 .3-3.2 .6-4.5 .9c-.8 .2-1.3 .3-1.5 .4c-3.8 1.1-7.9-.2-10.6-3.2L293.3 21.1zM224 316c2.8 0 20.9 6.5 35.4 14.1s25 13 28.3 15.2s1.3 6.2-1.7 8.4s-44.1 34.6-48.1 38.2s-9.8 9.5-13.8 9.5s-9.8-5.9-13.8-9.5s-45.1-36-48.1-38.2s-5.1-6.2-1.7-8.4s13.9-7.5 28.3-15.2s32.5-14.1 35.4-14.1zm.1-230.7c.7 0 8.8 .2 20.5 4.2c12.3 4.2 25.7 9.4 31.9 9.4s51.9-8.9 51.9-8.9s54.2 66.7 54.2 81s-6.8 18-13.7 25.4s-36.8 39.8-40.7 43.9s-11.9 10.5-7.1 21.8s11.7 25.8 3.9 40.4s-21 24.4-29.4 22.8s-28.4-12.2-35.7-17.1s-30.5-24.3-30.5-31.8s24-20.8 28.4-23.9s24.7-14.8 25.1-19.4s.3-6-5.7-17.4s-16.7-26.7-14.9-36.8s19.1-15.4 31.5-20.2s36.2-13.7 39.2-15.1s2.2-2.7-6.8-3.6s-34.6-4.3-46.1-1.1s-31.2 8.2-32.8 10.9s-3 2.7-1.4 11.8s10.1 52.8 10.9 60.6s2.4 12.9-5.8 14.8s-22.1 5.2-26.8 5.2s-18.6-3.3-26.8-5.2s-6.6-7-5.8-14.8s9.3-51.5 10.9-60.6s.2-9.2-1.4-11.8s-21.3-7.6-32.8-10.9s-37.1 .2-46.1 1.1s-9.8 2.2-6.8 3.6s26.8 10.4 39.2 15.1s29.7 10 31.5 20.2s-9 25.4-14.9 36.8s-6.1 12.8-5.7 17.4s20.6 16.4 25.1 19.4s28.4 16.4 28.4 23.9s-23.2 27-30.5 31.8s-27.2 15.4-35.7 17.1s-21.7-8.2-29.4-22.8s-.8-29.1 3.9-40.4s-3.3-17.7-7.1-21.8s-33.8-36.5-40.7-43.9s-13.7-11.2-13.7-25.4s54.2-81 54.2-81s45.8 8.9 51.9 8.9s19.5-5.2 31.9-9.4s20.6-4.2 20.6-4.2l.1 0z\"],\"facebook-f\":[320,512,[],\"f39e\",\"M80 299.3V512H196V299.3h86.5l18-97.8H196V166.9c0-51.7 20.3-71.5 72.7-71.5c16.3 0 29.4 .4 37 1.2V7.9C291.4 4 256.4 0 236.2 0C129.3 0 80 50.5 80 159.4v42.1H14v97.8H80z\"],\"square-google-plus\":[448,512,[\"google-plus-square\"],\"f0d4\",\"M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM64 256c0-55.3 44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4c-34.1 0-61.9 28.2-61.9 63.2c0 34.9 27.8 63.2 61.9 63.2c39.6 0 54.4-28.5 56.8-43.1H164V241.8h94.4c1 5 1.6 10.1 1.6 16.6c0 57.1-38.3 97.6-96 97.6c-55.3 0-100-44.7-100-100zm291 18.2v29H325.8v-29h-29V245h29V216H355v29h29v29.2H355z\"],\"web-awesome\":[640,512,[],\"e682\",\"M372.2 52c0 20.9-12.4 39-30.2 47.2L448 192l104.4-20.9c-5.3-7.7-8.4-17.1-8.4-27.1c0-26.5 21.5-48 48-48s48 21.5 48 48c0 26-20.6 47.1-46.4 48L481 442.3c-10.3 23-33.2 37.7-58.4 37.7l-205.2 0c-25.2 0-48-14.8-58.4-37.7L46.4 192C20.6 191.1 0 170 0 144c0-26.5 21.5-48 48-48s48 21.5 48 48c0 10.1-3.1 19.4-8.4 27.1L192 192 298.1 99.1c-17.7-8.3-30-26.3-30-47.1c0-28.7 23.3-52 52-52s52 23.3 52 52z\"],mandalorian:[448,512,[],\"f50f\",\"M232.27 511.89c-1-3.26-1.69-15.83-1.39-24.58.55-15.89 1-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0-.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.54 109.54 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34.21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1-1.55 4.26c-1 1-1.14.91-2.05-.53a14.87 14.87 0 0 1-1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36.66.51 1.35.34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95.7-3 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0-2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79.1 18.55a101.2 101.2 0 0 0-1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.88 132.88 0 0 0-2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.24 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0-2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0-1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0-2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51.68 3 .57 7.05-1.67l4.35-2.4L268.32 5c10.44-.4 10.81-.47 15.26-2.68L288.16 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1-1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1-4.09 3.71 13.62 13.62 0 0 0-4.38 4.78 5.89 5.89 0 0 1-2.49 2.91 6.88 6.88 0 0 0-2.45 1.71 67.62 67.62 0 0 1-7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56.71 8.84a33.45 33.45 0 0 0-1.06 8.91c0 4.88.22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69.52 12.69-11 22.84l-4 3.49.07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36.47 2.26.78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43.17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1-1.73-10.79 100.5 100.5 0 0 0-1.73-10.79 37.53 37.53 0 0 1-1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62.62 0 0 1-1-.14zm-87.18-266.59c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.28 86.25 255 78.55 268c-31 52-6 101.59 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.3 70.64-78.7 91.18-105.29 61.71z\"],\"first-order-alt\":[496,512,[],\"f50a\",\"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z\"],osi:[512,512,[],\"f41a\",\"M8 266.44C10.3 130.64 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0-64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z\"],\"google-wallet\":[448,512,[],\"f1ee\",\"M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z\"],\"d-and-d-beyond\":[640,512,[],\"f6ca\",\"M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9.2-5.8 1.6-7.5.6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9.6-.3 1.3 0 .6 1.9-.2.6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3.1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9.9 7.5.2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1.6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6.7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4.2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5.5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4.8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6.5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9.5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8.5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6.3 3 .6 4.3 1.1-2.1.8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2.8.2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8.6-2.6-.2s.3-4.3.3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3.6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7.2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7.6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8.8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5.3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9.3 5.6 1.1V196c-1.1.5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1.2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5.2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1.2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3.3-99.3zm-.3 77.5c-37.4 0-36.9-55.3.2-55.3 36.8.1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8.2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1.1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5.8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6.3-39.9-4 .1.8.5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8.2-39.9-4 .1.7.5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6.3-4 1.1-6.1 2.9.1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z\"],periscope:[448,512,[],\"f3da\",\"M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z\"],fulcrum:[320,512,[],\"f50b\",\"M95.75 164.14l-35.38 43.55L25 164.14l35.38-43.55zM144.23 0l-20.54 198.18L72.72 256l51 57.82L144.23 512V300.89L103.15 256l41.08-44.89zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.82 247 256l-51-57.82L175.42 0z\"],cloudscale:[448,512,[],\"f383\",\"M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z\"],forumbee:[448,512,[],\"f211\",\"M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z\"],mizuni:[496,512,[],\"f3cc\",\"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z\"],schlix:[448,512,[],\"f3ea\",\"M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z\"],\"square-xing\":[448,512,[\"xing-square\"],\"f169\",\"M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM93.8 320.2c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6 .2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2c-3.5 6.2-7.7 9.1-12.6 9.1H93.8zm163.5-33.4v.2l65.5 119c2.8 5.1 .1 10.1-6 10.1H270.2c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c1.8-3.2 22.9-40.4 63.3-111.6c11.7-20.7 25.1-44.3 40.1-70.8c3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10L257.3 286.8z\"],bandcamp:[512,512,[],\"f2d5\",\"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm48.2,326.1h-181L207.9,178h181Z\"],wpforms:[448,512,[],\"f298\",\"M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z\"],cloudversify:[616,512,[],\"f385\",\"M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z\"],usps:[576,512,[],\"f7e1\",\"M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8.1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z\"],megaport:[496,512,[],\"f5a3\",\"M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z\"],magento:[448,512,[],\"f3c4\",\"M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z\"],spotify:[496,512,[],\"f1bc\",\"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z\"],\"optin-monster\":[576,512,[],\"f23c\",\"M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7.3-6.5.3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8.9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8.5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4.5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3.5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1.2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3.3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1.5-8.1.8-11.6.8-1.9-21.9-6.8-44-14.3-64.6 3.7.3 8.1.3 11.8.3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1.8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3.3 26.6.3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6.8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3.3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2.8 2.2.8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8.3 1.9.5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3.9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5.9-8.4-20.2-23.5-29.1-25.1z\"],fly:[384,512,[],\"f417\",\"M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z\"],aviato:[640,512,[],\"f421\",\"M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z\"],itunes:[448,512,[],\"f3b4\",\"M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z\"],cuttlefish:[440,512,[],\"f38c\",\"M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z\"],blogger:[448,512,[],\"f37c\",\"M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z\"],flickr:[448,512,[],\"f16e\",\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z\"],viber:[512,512,[],\"f409\",\"M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z\"],soundcloud:[640,512,[],\"f1be\",\"M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z\"],digg:[512,512,[],\"f1a6\",\"M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z\"],\"tencent-weibo\":[384,512,[],\"f1d5\",\"M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z\"],letterboxd:[640,512,[],\"e62d\",\"M521.3 128C586.9 128 640 181.1 640 246.6s-53.1 118.6-118.7 118.6c-42.5 0-79.7-22.3-100.7-55.8c11.4-18.2 18-39.7 18-62.8s-6.6-44.6-18-62.8l0 0 .8-1.2c20.8-32.3 56.8-53.9 97.9-54.6l2 0zM320 128c42.5 0 79.7 22.3 100.7 55.8c-11.4 18.2-18 39.7-18 62.8s6.6 44.6 18 62.8l0 0-.8 1.2c-20.8 32.3-56.8 53.9-97.9 54.6l-2 0c-42.5 0-79.7-22.3-100.7-55.8c11.4-18.2 18-39.7 18-62.8s-6.6-44.6-18-62.8l0 0 .8-1.2c20.8-32.3 56.8-53.9 97.9-54.6l2 0zm-201.3 0c42.5 0 79.7 22.3 100.7 55.8c-11.4 18.2-18 39.7-18 62.8s6.6 44.6 18 62.8l0 0-.8 1.2c-20.8 32.3-56.8 53.9-97.9 54.6l-2 0C53.1 365.1 0 312.1 0 246.6S53.1 128 118.7 128z\"],symfony:[512,512,[],\"f83d\",\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.74 143.54c-11.47.41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.85 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.72-29 34.46-58.4 39.82-71.58 40.26-24.65.85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71.11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.35 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.23 140.13 251.94 197 262 205.29c37.17-109 100.53-105.46 102.43-105.53 25.16-.81 44.19 10.59 44.83 28.65.25 7.69-4.17 22.59-19.52 23.13z\"],maxcdn:[512,512,[],\"f136\",\"M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z\"],etsy:[384,512,[],\"f2d7\",\"M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z\"],\"facebook-messenger\":[512,512,[],\"f39f\",\"M256.55 8C116.52 8 8 110.34 8 248.57c0 72.3 29.71 134.78 78.07 177.94 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.31c52.91-23.3 53.59-25.14 62.56-22.7C337.85 521.8 504 423.7 504 248.57 504 110.34 396.59 8 256.55 8zm149.24 185.13l-73 115.57a37.37 37.37 0 0 1-53.91 9.93l-58.08-43.47a15 15 0 0 0-18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.57a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z\"],audible:[640,512,[],\"f373\",\"M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z\"],\"think-peaks\":[576,512,[],\"f731\",\"M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5.1-235.8-404.6z\"],bilibili:[512,512,[],\"e3d9\",\"M488.6 104.1C505.3 122.2 513 143.8 511.9 169.8V372.2C511.5 398.6 502.7 420.3 485.4 437.3C468.2 454.3 446.3 463.2 419.9 464H92.02C65.57 463.2 43.81 454.2 26.74 436.8C9.682 419.4 .7667 396.5 0 368.2V169.8C.7667 143.8 9.682 122.2 26.74 104.1C43.81 87.75 65.57 78.77 92.02 78H121.4L96.05 52.19C90.3 46.46 87.42 39.19 87.42 30.4C87.42 21.6 90.3 14.34 96.05 8.603C101.8 2.868 109.1 0 117.9 0C126.7 0 134 2.868 139.8 8.603L213.1 78H301.1L375.6 8.603C381.7 2.868 389.2 0 398 0C406.8 0 414.1 2.868 419.9 8.603C425.6 14.34 428.5 21.6 428.5 30.4C428.5 39.19 425.6 46.46 419.9 52.19L394.6 78L423.9 78C450.3 78.77 471.9 87.75 488.6 104.1H488.6zM449.8 173.8C449.4 164.2 446.1 156.4 439.1 150.3C433.9 144.2 425.1 140.9 416.4 140.5H96.05C86.46 140.9 78.6 144.2 72.47 150.3C66.33 156.4 63.07 164.2 62.69 173.8V368.2C62.69 377.4 65.95 385.2 72.47 391.7C78.99 398.2 86.85 401.5 96.05 401.5H416.4C425.6 401.5 433.4 398.2 439.7 391.7C446 385.2 449.4 377.4 449.8 368.2L449.8 173.8zM185.5 216.5C191.8 222.8 195.2 230.6 195.6 239.7V273C195.2 282.2 191.9 289.9 185.8 296.2C179.6 302.5 171.8 305.7 162.2 305.7C152.6 305.7 144.7 302.5 138.6 296.2C132.5 289.9 129.2 282.2 128.8 273V239.7C129.2 230.6 132.6 222.8 138.9 216.5C145.2 210.2 152.1 206.9 162.2 206.5C171.4 206.9 179.2 210.2 185.5 216.5H185.5zM377 216.5C383.3 222.8 386.7 230.6 387.1 239.7V273C386.7 282.2 383.4 289.9 377.3 296.2C371.2 302.5 363.3 305.7 353.7 305.7C344.1 305.7 336.3 302.5 330.1 296.2C323.1 289.9 320.7 282.2 320.4 273V239.7C320.7 230.6 324.1 222.8 330.4 216.5C336.7 210.2 344.5 206.9 353.7 206.5C362.9 206.9 370.7 210.2 377 216.5H377z\"],erlang:[640,512,[],\"f39d\",\"M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z\"],\"x-twitter\":[512,512,[],\"e61b\",\"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z\"],\"cotton-bureau\":[512,512,[],\"f89e\",\"M474.31 330.41c-23.66 91.85-94.23 144.59-201.9 148.35V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.24 0C110.52 157.72 74 194.63 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.43-5-211.1-85.07-211.1-223 0-141.82 81.35-223.2 223.2-223.2 114.77 0 189.84 53.2 214.69 148.81H500C473.88 71.51 388.22 8 259.82 8 105 8 12 101.19 12 255.82 12 411.14 105.19 504.34 259.82 504c128.27 0 213.87-63.81 239.67-173.59zM357 182.33c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.75zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.41c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.53 71.65 120.75-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.25c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0-33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z\"],dashcube:[448,512,[],\"f210\",\"M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z\"],\"42-group\":[640,512,[\"innosoft\"],\"e080\",\"M320 96V416C341.011 416 361.818 411.861 381.23 403.821C400.641 395.78 418.28 383.995 433.138 369.138C447.995 354.28 459.78 336.641 467.821 317.23C475.861 297.818 480 277.011 480 256C480 234.989 475.861 214.182 467.821 194.771C459.78 175.359 447.995 157.72 433.138 142.863C418.28 128.005 400.641 116.22 381.23 108.179C361.818 100.139 341.011 96 320 96ZM0 256L160.002 416L320.003 256L160.002 96L0 256ZM480 256C480 277.011 484.138 297.818 492.179 317.23C500.219 336.643 512.005 354.28 526.862 369.138C541.72 383.995 559.357 395.781 578.77 403.821C598.182 411.862 618.989 416 640 416V96C597.565 96 556.869 112.858 526.862 142.863C496.857 172.869 480 213.565 480 256Z\"],\"stack-exchange\":[448,512,[],\"f18d\",\"M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z\"],elementor:[512,512,[],\"f430\",\"M.361 256C.361 397 114 511 255 511C397 511 511 397 511 256C511 116 397 2.05 255 2.05C114 2.05 .361 116 .361 256zM192 150V363H149V150H192zM234 150H362V193H234V150zM362 235V278H234V235H362zM234 320H362V363H234V320z\"],\"square-pied-piper\":[448,512,[\"pied-piper-square\"],\"e01e\",\"M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z\"],\"creative-commons-nd\":[496,512,[],\"f4eb\",\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z\"],palfed:[576,512,[],\"f3d8\",\"M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z\"],superpowers:[448,512,[],\"f2dd\",\"M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z\"],resolving:[496,512,[],\"f3e7\",\"M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z\"],xbox:[512,512,[],\"f412\",\"M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z\"],\"square-web-awesome-stroke\":[448,512,[],\"e684\",\"M64 64C46.3 64 32 78.3 32 96l0 320c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32L64 64zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm235 81.6L288 224l52.2-10.4c-2.6-3.9-4.2-8.5-4.2-13.6c0-13.3 10.7-24 24-24s24 10.7 24 24c0 13-10.3 23.6-23.2 24L304.5 349.1c-5.2 11.5-16.6 18.9-29.2 18.9l-102.6 0c-12.6 0-24-7.4-29.2-18.9L87.2 224C74.3 223.6 64 213 64 200c0-13.3 10.7-24 24-24s24 10.7 24 24c0 5-1.5 9.7-4.2 13.6L160 224l53.1-46.4c-8.9-4.1-15-13.1-15-23.6c0-14.4 11.6-26 26-26s26 11.6 26 26c0 10.5-6.2 19.5-15.1 23.6z\"],searchengin:[460,512,[],\"f3eb\",\"M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z\"],tiktok:[448,512,[],\"e07b\",\"M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z\"],\"square-facebook\":[448,512,[\"facebook-square\"],\"f082\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64h98.2V334.2H109.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H255V480H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"],renren:[512,512,[],\"f18b\",\"M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z\"],linux:[448,512,[],\"f17c\",\"M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z\"],glide:[448,512,[],\"f2a5\",\"M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z\"],linkedin:[448,512,[],\"f08c\",\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\"],hubspot:[512,512,[],\"f3b2\",\"M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z\"],deploydog:[512,512,[],\"f38e\",\"M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z\"],twitch:[512,512,[],\"f1e8\",\"M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z\"],ravelry:[512,512,[],\"f2d9\",\"M498.252,234.223c-1.208-10.34-1.7-20.826-3.746-31a310.306,310.306,0,0,0-9.622-36.6,184.068,184.068,0,0,0-30.874-57.5,251.154,251.154,0,0,0-18.818-21.689,237.362,237.362,0,0,0-47.113-36.116A240.8,240.8,0,0,0,331.356,26.65c-11.018-3.1-22.272-5.431-33.515-7.615-6.78-1.314-13.749-1.667-20.627-2.482-.316-.036-.6-.358-.9-.553q-16.143.009-32.288.006c-2.41.389-4.808.925-7.236,1.15a179.331,179.331,0,0,0-34.256,7.1,221.5,221.5,0,0,0-39.768,16.355,281.385,281.385,0,0,0-38.08,24.158c-6.167,4.61-12.268,9.36-17.974,14.518C96.539,88.494,86.34,97.72,76.785,107.555a243.878,243.878,0,0,0-33.648,43.95,206.488,206.488,0,0,0-20.494,44.6,198.2,198.2,0,0,0-7.691,34.759A201.13,201.13,0,0,0,13.4,266.385a299.716,299.716,0,0,0,4.425,40.24,226.865,226.865,0,0,0,16.73,53.3,210.543,210.543,0,0,0,24,39.528,213.589,213.589,0,0,0,26.358,28.416A251.313,251.313,0,0,0,126.7,458.455a287.831,287.831,0,0,0,55.9,25.277,269.5,269.5,0,0,0,40.641,9.835c6.071,1.01,12.275,1.253,18.412,1.873a4.149,4.149,0,0,1,1.19.56h32.289c2.507-.389,5-.937,7.527-1.143,16.336-1.332,32.107-5.335,47.489-10.717A219.992,219.992,0,0,0,379.1,460.322c9.749-6.447,19.395-13.077,28.737-20.1,5.785-4.348,10.988-9.5,16.3-14.457,3.964-3.7,7.764-7.578,11.51-11.5a232.162,232.162,0,0,0,31.427-41.639c9.542-16.045,17.355-32.905,22.3-50.926,2.859-10.413,4.947-21.045,7.017-31.652,1.032-5.279,1.251-10.723,1.87-16.087.036-.317.358-.6.552-.9V236.005A9.757,9.757,0,0,1,498.252,234.223Zm-161.117-1.15s-16.572-2.98-28.47-2.98c-27.2,0-33.57,14.9-33.57,37.04V360.8H201.582V170.062H275.1v31.931c8.924-26.822,26.771-36.189,62.04-36.189Z\"],mixer:[512,512,[],\"e056\",\"M114.57,76.07a45.71,45.71,0,0,0-67.51-6.41c-17.58,16.18-19,43.52-4.75,62.77l91.78,123L41.76,379.58c-14.23,19.25-13.11,46.59,4.74,62.77A45.71,45.71,0,0,0,114,435.94L242.89,262.7a12.14,12.14,0,0,0,0-14.23ZM470.24,379.58,377.91,255.45l91.78-123c14.22-19.25,12.83-46.59-4.75-62.77a45.71,45.71,0,0,0-67.51,6.41l-128,172.12a12.14,12.14,0,0,0,0,14.23L398,435.94a45.71,45.71,0,0,0,67.51,6.41C483.35,426.17,484.47,398.83,470.24,379.58Z\"],\"square-lastfm\":[448,512,[\"lastfm-square\"],\"f203\",\"M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM210.7 280.8c-1.8-5.5-3.4-10.8-5-15.9c-12.9-41.9-21-68.4-58-68.4c-22.4 0-45.1 16.1-45.1 61.2c0 35.2 18 57.2 43.3 57.2c28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8c0-57.9 28.6-92 82.5-92c67.9 0 79.3 35.3 96.4 88.4c1.4 4.4 2.9 8.9 4.4 13.5c8.8 26.8 24.2 46.2 61.2 46.2c24.9 0 38.1-5.5 38.1-19.1c0-17.5-16.9-21.2-40-26.4c-3.2-.7-6.5-1.4-9.9-2.2c-30.4-7.3-42.5-23.1-42.5-48c0-40 32.3-52.4 65.2-52.4c37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4c-16.1 0-26 7.3-26 19.8c0 11 4.8 17.6 20.9 21.3c2.2 .5 4.5 1 6.7 1.4c31.1 6.5 65.1 13.7 65.1 56.1c.1 36.7-30.7 50.6-76.1 50.6c-63.4 0-85.4-28.6-97.1-64.1z\"],vimeo:[448,512,[],\"f40a\",\"M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z\"],mendeley:[640,512,[],\"f7b3\",\"M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4.7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1.1-.2.2-.3.4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z\"],uniregistry:[384,512,[],\"f404\",\"M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z\"],figma:[384,512,[],\"f799\",\"M14 95.7924C14 42.8877 56.8878 0 109.793 0H274.161C327.066 0 369.954 42.8877 369.954 95.7924C369.954 129.292 352.758 158.776 326.711 175.897C352.758 193.019 369.954 222.502 369.954 256.002C369.954 308.907 327.066 351.795 274.161 351.795H272.081C247.279 351.795 224.678 342.369 207.666 326.904V415.167C207.666 468.777 163.657 512 110.309 512C57.5361 512 14 469.243 14 416.207C14 382.709 31.1945 353.227 57.2392 336.105C31.1945 318.983 14 289.5 14 256.002C14 222.502 31.196 193.019 57.2425 175.897C31.196 158.776 14 129.292 14 95.7924ZM176.288 191.587H109.793C74.2172 191.587 45.3778 220.427 45.3778 256.002C45.3778 291.44 73.9948 320.194 109.381 320.416C109.518 320.415 109.655 320.415 109.793 320.415H176.288V191.587ZM207.666 256.002C207.666 291.577 236.505 320.417 272.081 320.417H274.161C309.737 320.417 338.576 291.577 338.576 256.002C338.576 220.427 309.737 191.587 274.161 191.587H272.081C236.505 191.587 207.666 220.427 207.666 256.002ZM109.793 351.795C109.655 351.795 109.518 351.794 109.381 351.794C73.9948 352.015 45.3778 380.769 45.3778 416.207C45.3778 451.652 74.6025 480.622 110.309 480.622C146.591 480.622 176.288 451.186 176.288 415.167V351.795H109.793ZM109.793 31.3778C74.2172 31.3778 45.3778 60.2173 45.3778 95.7924C45.3778 131.368 74.2172 160.207 109.793 160.207H176.288V31.3778H109.793ZM207.666 160.207H274.161C309.737 160.207 338.576 131.368 338.576 95.7924C338.576 60.2173 309.737 31.3778 274.161 31.3778H207.666V160.207Z\"],\"creative-commons-remix\":[496,512,[],\"f4ee\",\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z\"],\"cc-amazon-pay\":[576,512,[],\"f42d\",\"M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z\"],dropbox:[528,512,[],\"f16b\",\"M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z\"],instagram:[448,512,[],\"f16d\",\"M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z\"],cmplid:[640,512,[],\"e360\",\"M226.119,388.165a3.816,3.816,0,0,0-2.294-3.5,3.946,3.946,0,0,0-1.629-.385L72.6,384.3a19.243,19.243,0,0,1-17.924-26.025L81.585,255.692a35.72,35.72,0,0,1,32.373-26H262.525a7.07,7.07,0,0,0,6.392-5.194l10.769-41.131a3.849,3.849,0,0,0-2.237-4.937,3.755,3.755,0,0,0-1.377-.261c-.063,0-.126,0-.189.005H127.38a106.8,106.8,0,0,0-96.99,77.1L3.483,358.824A57.469,57.469,0,0,0,57.314,436q1.43,0,2.86-.072H208.742a7.131,7.131,0,0,0,6.391-5.193L225.839,389.6A3.82,3.82,0,0,0,226.119,388.165ZM306.658,81.2a3.861,3.861,0,0,0,.251-1.367A3.813,3.813,0,0,0,303.079,76c-.064,0-.128,0-.192,0h-41A7.034,7.034,0,0,0,255.5,81.2l-21.347,80.915h51.131ZM180.364,368.249H231.5L263.452,245.69H212.321ZM511.853,79.723a3.809,3.809,0,0,0-3.8-3.661c-.058,0-.137,0-.23.007h-41a7.1,7.1,0,0,0-6.584,5.129L368.91,430.634a3.54,3.54,0,0,0-.262,1.335,3.873,3.873,0,0,0,3.864,3.863c.056,0,.112,0,.169,0h41a7.068,7.068,0,0,0,6.392-5.193L511.533,81.2A3.624,3.624,0,0,0,511.853,79.723ZM324.649,384.47h-41a7.2,7.2,0,0,0-6.392,5.194L266.52,430.8a3.662,3.662,0,0,0-.268,1.374A3.783,3.783,0,0,0,270.023,436c.06,0,.166,0,.3-.012h40.905a7.036,7.036,0,0,0,6.391-5.193l10.769-41.131a3.75,3.75,0,0,0-3.445-5.208c-.108,0-.217,0-.326.014Zm311.324-308.4h-41a7.066,7.066,0,0,0-6.392,5.129l-91.46,349.436a4.073,4.073,0,0,0-.229,1.347,3.872,3.872,0,0,0,3.863,3.851c.056,0,.112,0,.169,0h40.968a7.1,7.1,0,0,0,6.392-5.193L639.68,81.2a3.624,3.624,0,0,0,.32-1.475,3.841,3.841,0,0,0-3.821-3.564c-.068,0-.137,0-.206.006ZM371.562,225.236l10.8-41.1a4.369,4.369,0,0,0,.227-1.388,3.869,3.869,0,0,0-3.861-3.842c-.057,0-.113,0-.169,0h-41.1a7.292,7.292,0,0,0-6.391,5.226l-10.834,41.1a4.417,4.417,0,0,0-.26,1.493c0,.069,0,.138,0,.206a3.776,3.776,0,0,0,3.757,3.507c.076,0,.18,0,.3-.012h41.129A7.034,7.034,0,0,0,371.562,225.236Z\"],upwork:[641,512,[],\"e641\",\"M494.7 295.6c-50.3 0-83.5-38.9-92.8-53.9c11.9-95.3 46.8-125.4 92.8-125.4c45.5 0 80.9 36.4 80.9 89.7s-35.4 89.7-80.9 89.7zm0-237.8c-81.9 0-127.8 53.4-141 108.4c-14.9-28-25.9-65.5-34.5-100.3H206v141c0 51.1-23.3 89-68.8 89s-71.6-37.8-71.6-89l.5-141H.8v141c0 41.1 13.3 78.4 37.6 105.1c25 27.5 59.2 41.8 98.8 41.8c78.8 0 133.8-60.4 133.8-146.9V112.1c8.2 31.2 27.8 91.1 65.3 143.6l-35 199.4h66.4l23.1-141.3c7.6 6.3 15.7 12 24.2 17c22.2 14 47.7 21.9 73.9 22.8c0 0 4 .2 6.1 .2c81.2 0 145.9-62.9 145.9-147.8s-64.8-148.1-146-148.1z\"],facebook:[512,512,[62e3],\"f09a\",\"M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256C0 376 82.7 476.8 194.2 504.5V334.2H141.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H287V510.1C413.8 494.8 512 386.9 512 256h0z\"],gripfire:[384,512,[],\"f3ac\",\"M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4.4 3.3.6 6.7.6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z\"],\"jedi-order\":[448,512,[],\"f50e\",\"M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z\"],uikit:[448,512,[],\"f403\",\"M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z\"],\"fort-awesome-alt\":[512,512,[],\"f3a3\",\"M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1.7.1 1.3.1 2 .1 1.3.1 2.7.2 4 0 .8.1 1.5.1 2.3 0 1.3.1 2.5.2 3.7.1.8.1 1.6.2 2.4.1 1.1.2 2.3.3 3.5 0 .8.1 1.6.2 2.4.1 1.2.3 2.4.4 3.6.1.8.2 1.5.3 2.3.1 1.3.3 2.6.5 3.9.1.6.2 1.3.3 1.9l.9 5.7c.1.6.2 1.1.3 1.7.3 1.3.5 2.7.8 4 .2.8.3 1.6.5 2.4.2 1 .5 2.1.7 3.2.2.9.4 1.7.6 2.6.2 1 .4 2 .7 3 .2.9.5 1.8.7 2.7.3 1 .5 1.9.8 2.9.3.9.5 1.8.8 2.7.2.9.5 1.9.8 2.8s.5 1.8.8 2.7c.3 1 .6 1.9.9 2.8.6 1.6 1.1 3.3 1.7 4.9.4 1 .7 1.9 1 2.8.3 1 .7 2 1.1 3 .3.8.6 1.5.9 2.3l1.2 3c.3.7.6 1.5.9 2.2.4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3.7.6 1.3.9 2 .5 1 1 2.1 1.5 3.1.2.6.5 1.1.8 1.7.6 1.1 1.1 2.2 1.7 3.3.1.2.2.3.3.5 2.2 4.1 4.4 8.2 6.8 12.2.2.4.5.8.7 1.2.7 1.1 1.3 2.2 2 3.3.3.5.6.9.9 1.4.6 1.1 1.3 2.1 2 3.2.3.5.6.9.9 1.4.7 1.1 1.4 2.1 2.1 3.2.2.4.5.8.8 1.2.7 1.1 1.5 2.2 2.3 3.3.2.2.3.5.5.7 37.5 51.7 94.4 88.5 160 99.4.9.1 1.7.3 2.6.4 1 .2 2.1.4 3.1.5s1.9.3 2.8.4c1 .2 2 .3 3 .4.9.1 1.9.2 2.9.3s1.9.2 2.9.3 2.1.2 3.1.3c.9.1 1.8.1 2.7.2 1.1.1 2.3.1 3.4.2.8 0 1.7.1 2.5.1 1.3 0 2.6.1 3.9.1.7.1 1.4.1 2.1.1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1.8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2.9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5.9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4.2-.2.3-.5.5-.7.8-1.1 1.5-2.2 2.3-3.3.2-.4.5-.8.8-1.2.7-1.1 1.4-2.1 2.1-3.2.3-.5.6-.9.9-1.4.6-1.1 1.3-2.1 2-3.2.3-.5.6-.9.9-1.4.7-1.1 1.3-2.2 2-3.3.2-.4.5-.8.7-1.2 2.4-4 4.6-8.1 6.8-12.2.1-.2.2-.3.3-.5.6-1.1 1.1-2.2 1.7-3.3.2-.6.5-1.1.8-1.7.5-1 1-2.1 1.5-3.1.3-.7.6-1.3.9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7.6-1.5.9-2.2l1.2-3c.3-.8.6-1.5.9-2.3.4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9.3-1 .6-1.9.9-2.8s.5-1.8.8-2.7c.2-.9.5-1.9.8-2.8s.6-1.8.8-2.7c.3-1 .5-1.9.8-2.9.2-.9.5-1.8.7-2.7.2-1 .5-2 .7-3 .2-.9.4-1.7.6-2.6.2-1 .5-2.1.7-3.2.2-.8.3-1.6.5-2.4.3-1.3.6-2.7.8-4 .1-.6.2-1.1.3-1.7l.9-5.7c.1-.6.2-1.3.3-1.9.1-1.3.3-2.6.5-3.9.1-.8.2-1.5.3-2.3.1-1.2.3-2.4.4-3.6 0-.8.1-1.6.2-2.4.1-1.1.2-2.3.3-3.5.1-.8.1-1.6.2-2.4.1 1.7.1.5.2-.7 0-.8.1-1.5.1-2.3.1-1.3.2-2.7.2-4 .1-.7.1-1.3.1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z\"],phabricator:[496,512,[],\"f3db\",\"M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z\"],ussunnah:[482,512,[],\"f407\",\"M481.9 268.1A240.9 240.9 0 1 1 .1 268a240.9 240.9 0 1 1 481.9 0zM24.5 268a216.5 216.5 0 1 0 432.9 0A216.5 216.5 0 1 0 24.5 268zm385.9 63.3c-12.7 0-21.6-1.9-26.7-5.9c-5.5-4.3-8.2-12.3-8.2-23.8V205.1c0-6.5-5.2-20.2-15.7-41.2c7 0 17-9.1 30-27.2V284.5c0 11 2.4 19.4 7 25.3c3.7 4.7 10.1 8.9 19 12.6c1.2 .4 2.6 .9 4.1 1.4c2.9 .9 6.3 2.1 10.3 3.5c-1.8 2.7-8.3 4-19.9 4zm-219 0c-1.3 2.4-3.6 5.5-6.8 9.4l-18.5 22.5c-1-6.1-4-13-9.3-20.6s-9.7-11.4-13.4-11.4h-8.3H53.6c3.3-5.3 4.9-8.8 4.9-10.8c0-2-.8-5.3-2.4-9.7c-1.5-4.4-2.4-8.5-2.4-12.4c0-7.4 2.1-13.9 6.3-19.3L80 253.4l-7.1-17.7L89 215.9l6.7 16.8 8-10.3c-1.8 6.4-2.6 12.3-2.6 17.7c0 4.2 2.8 13.3 8.3 27.3l16.2 40.7H135h8 .3c2.8 .4 7.7 5 14.6 13.9c1.8 2.4 4.3 5.8 7.7 10.2c1.4 1.9 2.9 3.9 4.6 6.1c1.3-2.3 2-4.6 2-7.1c0-2-1.3-6.6-4-13.4L163 304.1c-4-10.6-6.1-17.7-6.1-21.3c0-6.3 1.9-12.3 5.8-17.9c.5-.6 1-1.3 1.5-1.9c4.4-5.6 8.8-11.1 13.3-16.5c-1.1 4.6-1.7 8.7-1.7 12c0 3.7 1.7 9.9 5.1 18.8l7.9 20.4c1.9 4.7 3 8.2 3.7 10.3h17.6 8.3l-.9-2.6c-1.4-3.9-4-7-7.7-9.3l15.6-20.1 12.3 32h13.4L245 292.2c-1.5-3.9-4-7-7.7-9.3L253 262.8 270.3 308h13.4l-11.4-29.4c-1.5-3.9-4-7-7.7-9.3l15.6-20L302.6 308h10.3 8.3 7.6c1.5 0 3-1.1 4.5-3.1s2.2-4.1 2.2-6.3V205.1c0-6.5-4.5-20.3-13.7-41.2c5.4 0 14.1-9.1 26.2-27.2V300.2c0 7.2 .6 12 1.7 14.6c1.6 3.4 5.3 6.2 11.1 8.2c-3.9 5.6-8.7 8.5-14.5 8.5H321.1h-8.3H210.5h-19zM93.4 287.3c-2.7-6.7-4-11.7-4-15c-.6 1.2-2.4 3.7-5.4 7.6c-1.4 1.9-2.2 3.7-2.2 5.3c0 2.6 .8 5.7 2.2 9.3l5.6 13.9h0c5 0 9 0 11.9-.1l-8.2-20.9zm13.5-72.4c-3-5.2-7-9.3-11.9-11.9c-3.5-1.9-5.3-4.3-5.3-7.4c0-2.4 4.6-8.6 14-18.3c.2 3.8 1.9 7.6 4.9 11.2c3.1 3.6 4.6 7 4.6 10.1c0 2.6-2.1 8-6.2 16.3zm-27.6 0c-3-5.2-7-9.3-11.9-11.9c-3.5-1.9-5.3-4.3-5.3-7.4c0-2.4 4.6-8.6 14-18.3c.2 3.8 1.9 7.6 4.9 11.2c3.1 3.6 4.6 7 4.6 10.1c0 2.6-2.1 8-6.2 16.3zm87 27.5c-3-5.2-7-9.3-11.9-11.9c-3.5-1.9-5.3-4.3-5.3-7.4c0-2.4 4.6-8.6 14-18.3c.2 3.8 1.9 7.6 4.9 11.2c3.1 3.6 4.6 7 4.6 10.1c0 2.6-2.1 8-6.2 16.3z\"],earlybirds:[480,512,[],\"f39a\",\"M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z\"],\"trade-federation\":[496,512,[],\"f513\",\"M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5.1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z\"],autoprefixer:[640,512,[],\"f41c\",\"M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z\"],whatsapp:[448,512,[],\"f232\",\"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\"],\"square-upwork\":[448,512,[],\"e67c\",\"M56 32l336 0c30.9 0 56 25.1 56 56l0 336c0 30.9-25.1 56-56 56L56 480c-30.9 0-56-25.1-56-56L0 88C0 57.1 25.1 32 56 32zM270.9 274.2c6.6-52.9 25.9-69.5 51.4-69.5c25.3 0 44.9 20.2 44.9 49.7s-19.7 49.7-44.9 49.7c-27.9 0-46.3-21.5-51.4-29.9zm-26.7-41.8c-8.2-15.5-14.3-36.3-19.2-55.6l-29.7 0-33.2 0 0 78.1c0 28.4-12.9 49.4-38.2 49.4s-39.8-20.9-39.8-49.3l.3-78.1-36.2 0 0 78.1c0 22.8 7.4 43.5 20.9 58.2c13.9 15.2 32.8 23.2 54.8 23.2c43.7 0 74.2-33.5 74.2-81.5l0-52.5c4.6 17.3 15.4 50.5 36.2 79.7L215 392.6l36.8 0 12.8-78.4c4.2 3.5 8.7 6.6 13.4 9.4c12.3 7.8 26.4 12.2 40.9 12.6l.1 0c.5 0 1.1 0 1.6 0c.6 0 1.1 0 1.7 0c45.1 0 80.9-34.9 80.9-81.9s-35.9-82.2-80.9-82.2c-45.4 0-70.9 29.7-78.1 60.1z\"],slideshare:[512,512,[],\"f1e7\",\"M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z\"],\"google-play\":[512,512,[],\"f3ab\",\"M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z\"],viadeo:[448,512,[],\"f2a9\",\"M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z\"],line:[512,512,[],\"f3c0\",\"M311 196.8v81.3c0 2.1-1.6 3.7-3.7 3.7h-13c-1.3 0-2.4-.7-3-1.5l-37.3-50.3v48.2c0 2.1-1.6 3.7-3.7 3.7h-13c-2.1 0-3.7-1.6-3.7-3.7V196.9c0-2.1 1.6-3.7 3.7-3.7h12.9c1.1 0 2.4 .6 3 1.6l37.3 50.3V196.9c0-2.1 1.6-3.7 3.7-3.7h13c2.1-.1 3.8 1.6 3.8 3.5zm-93.7-3.7h-13c-2.1 0-3.7 1.6-3.7 3.7v81.3c0 2.1 1.6 3.7 3.7 3.7h13c2.1 0 3.7-1.6 3.7-3.7V196.8c0-1.9-1.6-3.7-3.7-3.7zm-31.4 68.1H150.3V196.8c0-2.1-1.6-3.7-3.7-3.7h-13c-2.1 0-3.7 1.6-3.7 3.7v81.3c0 1 .3 1.8 1 2.5c.7 .6 1.5 1 2.5 1h52.2c2.1 0 3.7-1.6 3.7-3.7v-13c0-1.9-1.6-3.7-3.5-3.7zm193.7-68.1H327.3c-1.9 0-3.7 1.6-3.7 3.7v81.3c0 1.9 1.6 3.7 3.7 3.7h52.2c2.1 0 3.7-1.6 3.7-3.7V265c0-2.1-1.6-3.7-3.7-3.7H344V247.7h35.5c2.1 0 3.7-1.6 3.7-3.7V230.9c0-2.1-1.6-3.7-3.7-3.7H344V213.5h35.5c2.1 0 3.7-1.6 3.7-3.7v-13c-.1-1.9-1.7-3.7-3.7-3.7zM512 93.4V419.4c-.1 51.2-42.1 92.7-93.4 92.6H92.6C41.4 511.9-.1 469.8 0 418.6V92.6C.1 41.4 42.2-.1 93.4 0H419.4c51.2 .1 92.7 42.1 92.6 93.4zM441.6 233.5c0-83.4-83.7-151.3-186.4-151.3s-186.4 67.9-186.4 151.3c0 74.7 66.3 137.4 155.9 149.3c21.8 4.7 19.3 12.7 14.4 42.1c-.8 4.7-3.8 18.4 16.1 10.1s107.3-63.2 146.5-108.2c27-29.7 39.9-59.8 39.9-93.1z\"],\"google-drive\":[512,512,[],\"f3aa\",\"M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z\"],servicestack:[496,512,[],\"f3ec\",\"M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z\"],simplybuilt:[512,512,[],\"f215\",\"M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z\"],bitbucket:[512,512,[61810],\"f171\",\"M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z\"],imdb:[448,512,[],\"f2d8\",\"M89.5 323.6H53.93V186.2H89.5V323.6zM156.1 250.5L165.2 186.2H211.5V323.6H180.5V230.9L167.1 323.6H145.8L132.8 232.9L132.7 323.6H101.5V186.2H147.6C148.1 194.5 150.4 204.3 151.9 215.6L156.1 250.5zM223.7 323.6V186.2H250.3C267.3 186.2 277.3 187.1 283.3 188.6C289.4 190.3 294 192.8 297.2 196.5C300.3 199.8 302.3 203.1 303 208.5C303.9 212.9 304.4 221.6 304.4 234.7V282.9C304.4 295.2 303.7 303.4 302.5 307.6C301.4 311.7 299.4 315 296.5 317.3C293.7 319.7 290.1 321.4 285.8 322.3C281.6 323.1 275.2 323.6 266.7 323.6H223.7zM259.2 209.7V299.1C264.3 299.1 267.5 298.1 268.6 296.8C269.7 294.8 270.4 289.2 270.4 280.1V226.8C270.4 220.6 270.3 216.6 269.7 214.8C269.4 213 268.5 211.8 267.1 210.1C265.7 210.1 263 209.7 259.2 209.7V209.7zM316.5 323.6V186.2H350.6V230.1C353.5 227.7 356.7 225.2 360.1 223.5C363.7 222 368.9 221.1 372.9 221.1C377.7 221.1 381.8 221.9 385.2 223.3C388.6 224.8 391.2 226.8 393.2 229.5C394.9 232.1 395.9 234.8 396.3 237.3C396.7 239.9 396.1 245.3 396.1 253.5V292.1C396.1 300.3 396.3 306.4 395.3 310.5C394.2 314.5 391.5 318.1 387.5 320.1C383.4 324 378.6 325.4 372.9 325.4C368.9 325.4 363.7 324.5 360.2 322.9C356.7 321.1 353.5 318.4 350.6 314.9L348.5 323.6L316.5 323.6zM361.6 302.9C362.3 301.1 362.6 296.9 362.6 290.4V255C362.6 249.4 362.3 245.5 361.5 243.8C360.8 241.9 357.8 241.1 355.7 241.1C353.7 241.1 352.3 241.9 351.6 243.4C351 244.9 350.6 248.8 350.6 255V291.4C350.6 297.5 351 301.4 351.8 303C352.4 304.7 353.9 305.5 355.9 305.5C358.1 305.5 360.1 304.7 361.6 302.9L361.6 302.9zM418.4 32.04C434.1 33.27 447.1 47.28 447.1 63.92V448.1C447.1 464.5 435.2 478.5 418.9 479.1C418.6 479.1 418.4 480 418.1 480H29.88C29.6 480 29.32 479.1 29.04 479.9C13.31 478.5 1.093 466.1 0 449.7L.0186 61.78C1.081 45.88 13.82 33.09 30.26 31.1H417.7C417.9 31.1 418.2 32.01 418.4 32.04L418.4 32.04zM30.27 41.26C19 42.01 10.02 51.01 9.257 62.4V449.7C9.63 455.1 11.91 460.2 15.7 464C19.48 467.9 24.51 470.3 29.89 470.7H418.1C429.6 469.7 438.7 459.1 438.7 448.1V63.91C438.7 58.17 436.6 52.65 432.7 48.45C428.8 44.24 423.4 41.67 417.7 41.26L30.27 41.26z\"],deezer:[576,512,[],\"e077\",\"M451.46,244.71H576V172H451.46Zm0-173.89v72.67H576V70.82Zm0,275.06H576V273.2H451.46ZM0,447.09H124.54V374.42H0Zm150.47,0H275V374.42H150.47Zm150.52,0H425.53V374.42H301Zm150.47,0H576V374.42H451.46ZM301,345.88H425.53V273.2H301Zm-150.52,0H275V273.2H150.47Zm0-101.17H275V172H150.47Z\"],\"raspberry-pi\":[407,512,[],\"f7bb\",\"M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2.7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6.8C271.6.6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9.1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6.1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7.8 14.1.6 23.9.8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8.4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2.1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7.9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6.9 2.7 3.6 4.4 6.7 5.8-15.4.9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8.7 8.3.1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6.4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3.4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6.2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9.5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6.2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z\"],jira:[496,512,[],\"f7b1\",\"M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z\"],docker:[640,512,[],\"f395\",\"M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z\"],screenpal:[512,512,[],\"e570\",\"M233.5 22.49C233.5 10.07 243.6 0 256 0C268.4 0 278.5 10.07 278.5 22.49C278.5 34.91 268.4 44.98 256 44.98C243.6 44.98 233.5 34.91 233.5 22.49zM313.4 259C313.4 290.7 287.7 316.4 256 316.4C224.3 316.4 198.6 290.7 198.6 259C198.6 227.3 224.3 201.6 256 201.6C287.7 201.6 313.4 227.3 313.4 259zM337.2 350C359.5 330.1 373.7 302.7 377.1 273H496.6C493.1 334.4 466.2 392.2 421.4 434.4C376.7 476.6 317.5 500.2 256 500.2C194.5 500.2 135.3 476.6 90.56 434.4C45.83 392.2 18.94 334.4 15.39 273H135.1C138.5 302.7 152.7 330.1 175 350C197.3 369.9 226.2 380.9 256.1 380.9C285.1 380.9 314.8 369.9 337.2 350zM73.14 140.3C73.54 152.7 63.81 163.1 51.39 163.5C38.97 163.9 28.59 154.2 28.18 141.8C27.78 129.3 37.52 118.9 49.94 118.5C62.35 118.1 72.74 127.9 73.14 140.3zM438.9 141C438.9 128.6 448.9 118.5 461.4 118.5C473.8 118.5 483.8 128.6 483.8 141C483.8 153.5 473.8 163.5 461.4 163.5C448.9 163.5 438.9 153.5 438.9 141zM317.9 95.27C300.6 109.1 278.7 118.1 256 118.1C233.3 118.1 211.4 109.1 194.1 95.27C176.8 80.55 165.3 60.18 161.7 37.78C176.8 31.37 192.5 26.52 208.6 23.31C208.6 35.88 213.6 47.93 222.5 56.82C231.4 65.7 243.4 70.7 256 70.7C268.6 70.7 280.6 65.7 289.5 56.82C298.4 47.93 303.4 35.88 303.4 23.31C319.5 26.52 335.2 31.37 350.3 37.78C346.7 60.18 335.2 80.55 317.9 95.27H317.9zM82.78 231C61.42 238.6 38.06 238.4 16.86 230.4C18.82 214.1 22.46 198.1 27.71 182.5C33.1 185.6 39.05 187.6 45.22 188.5C51.39 189.3 57.67 188.9 63.68 187.3C69.69 185.6 75.33 182.9 80.27 179.1C85.21 175.3 89.36 170.6 92.47 165.2C95.58 159.8 97.61 153.8 98.42 147.7C99.23 141.5 98.83 135.2 97.22 129.2C95.61 123.2 92.83 117.6 89.04 112.6C85.25 107.7 80.53 103.5 75.14 100.4C85.96 88.11 98.01 76.94 111.1 67.07C128.7 81.42 140.6 101.6 144.7 123.9C148.8 146.2 144.8 169.3 133.5 188.9C122.1 208.5 104.1 223.4 82.78 231V231zM429.2 231.1C407.9 223.5 389.9 208.5 378.5 188.9C367.2 169.3 363.3 146.2 367.4 123.9C371.5 101.7 383.4 81.54 400.9 67.19C414 77.04 426.1 88.21 436.9 100.5C426.2 106.9 418.5 117.2 415.4 129.3C412.2 141.3 413.1 154.1 420.2 164.9C426.4 175.7 436.6 183.6 448.6 186.9C460.6 190.2 473.5 188.6 484.3 182.6C489.6 198.1 493.2 214.2 495.2 230.4C473.1 238.5 450.6 238.7 429.2 231.1L429.2 231.1z\"],bluetooth:[448,512,[],\"f293\",\"M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z\"],gitter:[384,512,[],\"f426\",\"M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z\"],\"d-and-d\":[576,512,[],\"f38d\",\"M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z\"],microblog:[448,512,[],\"e01a\",\"M399.36,362.23c29.49-34.69,47.1-78.34,47.1-125.79C446.46,123.49,346.86,32,224,32S1.54,123.49,1.54,236.44,101.14,440.87,224,440.87a239.28,239.28,0,0,0,79.44-13.44,7.18,7.18,0,0,1,8.12,2.56c18.58,25.09,47.61,42.74,79.89,49.92a4.42,4.42,0,0,0,5.22-3.43,4.37,4.37,0,0,0-.85-3.62,87,87,0,0,1,3.69-110.69ZM329.52,212.4l-57.3,43.49L293,324.75a6.5,6.5,0,0,1-9.94,7.22L224,290.92,164.94,332a6.51,6.51,0,0,1-9.95-7.22l20.79-68.86-57.3-43.49a6.5,6.5,0,0,1,3.8-11.68l71.88-1.51,23.66-67.92a6.5,6.5,0,0,1,12.28,0l23.66,67.92,71.88,1.51a6.5,6.5,0,0,1,3.88,11.68Z\"],\"cc-diners-club\":[576,512,[],\"f24c\",\"M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z\"],\"gg-circle\":[512,512,[],\"f261\",\"M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z\"],\"pied-piper-hat\":[640,512,[],\"f4e5\",\"M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z\"],\"kickstarter-k\":[448,512,[],\"f3bc\",\"M356.6 256.2l40.8-40.5c42.2-41.9 42.2-110.3 0-152.1s-111-41.9-153.2 0L229.3 78.4C209.6 50.3 177.1 32 140.2 32C80.5 32 32 80.2 32 139.5V372.5C32 431.9 80.5 480 140.2 480c37.1 0 69.3-18.3 89-46.4l14.9 14.7c42.2 41.9 111 41.9 153.2 0s42.2-110.3 0-152.1l-40.8-40z\"],yandex:[256,512,[],\"f413\",\"M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z\"],readme:[576,512,[],\"f4d5\",\"M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z\"],html5:[384,512,[],\"f13b\",\"M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z\"],sellsy:[640,512,[],\"f213\",\"M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z\"],\"square-web-awesome\":[448,512,[],\"e683\",\"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM235 177.6L288 224l52.2-10.4c-2.6-3.9-4.2-8.5-4.2-13.6c0-13.3 10.7-24 24-24s24 10.7 24 24c0 13-10.3 23.6-23.2 24L304.5 349.1c-5.2 11.5-16.6 18.9-29.2 18.9l-102.6 0c-12.6 0-24-7.4-29.2-18.9L87.2 224C74.3 223.6 64 213 64 200c0-13.3 10.7-24 24-24s24 10.7 24 24c0 5-1.5 9.7-4.2 13.6L160 224l53.1-46.4c-8.9-4.1-15-13.1-15-23.6c0-14.4 11.6-26 26-26s26 11.6 26 26c0 10.5-6.2 19.5-15.1 23.6z\"],sass:[640,512,[],\"f41e\",\"M301.84 378.92c-.3.6-.6 1.08 0 0zm249.13-87a131.16 131.16 0 0 0-58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.83 122.83 0 0 0-5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4.8-.7 1.3-.9 1.7.3-.5.5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.87-65.2-99.07-116.5 1-18.7 7.5-67.8 127.07-127.4 98-48.8 176.35-35.4 189.84-5.6 19.4 42.5-41.89 121.6-143.66 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.17-11.8 61.78-23.8 109.87-90.1 95.77-145.6C386.52 18.32 293-.18 204.57 31.22c-52.69 18.7-109.67 48.1-150.66 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.06 125.7-1.6.9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.57-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.24 201.24 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31.31 0 0 0 .1.2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.72 450.1 270 450.1 270a201.24 201.24 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.18 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.42 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.29 30.4.3 57.2-19.1 78.3zm134.36-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5.1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z\"],wirsindhandwerk:[512,512,[\"wsh\"],\"e2d0\",\"M50.77161,479.81213h83.36071V367.84741l-83.36071,47.009Zm329.04675,0h82.35022V414.85645l-82.35022-47.009Zm.00568-448V251.568L256.1759,179.1861,134.50378,251.568V31.81213H50.77161V392.60565L256.1759,270.31909,462.16858,392.60565V31.81213Z\"],buromobelexperte:[448,512,[],\"f37f\",\"M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z\"],salesforce:[640,512,[],\"f83b\",\"M248.89 245.64h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.66-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.22 23.76a8.63 8.63 0 0 0-3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93.95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.39-165.36 136.43-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.89 92.18-213.81-5.17C8.91 428.78-50.19 266.52 53.36 205.61 18.61 126.18 76 32 167.67 32a124.24 124.24 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.69 640 232zm-519.55 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17.71 1.64-.47.24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0-.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1-19-6.35c-.47-.23-1.42-.71-1.65.71l-2.4 7.47c-.47.94.23 1.18.23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0-.24 1.41l2.59 7.06a1 1 0 0 0 1.18.7c.65 0 6.8-4 16.93-4 4 0 7.06.71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0-7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61.32-21.64-22.78-21.64zM199 200.24a1.11 1.11 0 0 0-1.18-1.18H188a1.11 1.11 0 0 0-1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16.23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12.15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.35-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18.71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0-.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1-19-6.35 1 1 0 0 0-1.65.71l-2.35 7.52c-.47.94.23 1.18.23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.09 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14.94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17.47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0-1.17 1.18l-1.42 7.76c0 .7.24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41.71-.24.71-2.59 6.82-2.83 7.53s0 1.41.47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52.09.3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0-1.18-1.17h-9.4a1.11 1.11 0 0 0-1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91.05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0-.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94.47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53.23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59.74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0-1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.36-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01.94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z\"],\"octopus-deploy\":[512,512,[],\"e082\",\"M455.6,349.2c-45.891-39.09-36.67-77.877-16.095-128.11C475.16,134.04,415.967,34.14,329.93,8.3,237.04-19.6,134.252,24.341,99.677,117.147a180.862,180.862,0,0,0-10.988,73.544c1.733,29.543,14.717,52.97,24.09,80.3,17.2,50.161-28.1,92.743-66.662,117.582-46.806,30.2-36.319,39.857-8.428,41.858,23.378,1.68,44.478-4.548,65.265-15.045,9.2-4.647,40.687-18.931,45.13-28.588C135.9,413.388,111.122,459.5,126.621,488.9c19.1,36.229,67.112-31.77,76.709-45.812,8.591-12.572,42.963-81.279,63.627-46.926,18.865,31.361,8.6,76.391,35.738,104.622,32.854,34.2,51.155-18.312,51.412-44.221.163-16.411-6.1-95.852,29.9-59.944C405.428,418,436.912,467.8,472.568,463.642c38.736-4.516-22.123-67.967-28.262-78.695,5.393,4.279,53.665,34.128,53.818,9.52C498.234,375.678,468.039,359.8,455.6,349.2Z\"],medapps:[320,512,[],\"f3c6\",\"M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z\"],ns8:[640,512,[],\"f3d5\",\"M104.324,269.172h26.067V242.994H104.324Zm52.466-26.178-.055-26.178v-.941a39.325,39.325,0,0,0-78.644.941v.166h26.4v-.166a12.98,12.98,0,0,1,25.956,0v26.178Zm52.356,25.846a91.1,91.1,0,0,1-91.1,91.1h-.609a91.1,91.1,0,0,1-91.1-91.1H0v.166A117.33,117.33,0,0,0,117.44,386.28h.775A117.331,117.331,0,0,0,235.49,268.84V242.828H209.146Zm-157.233,0a65.362,65.362,0,0,0,130.723,0H156.292a39.023,39.023,0,0,1-78.035,0V242.883H51.968v-26.62A65.42,65.42,0,0,1,182.8,217.48v25.293h26.344V217.48a91.761,91.761,0,0,0-183.522,0v25.4H51.913Zm418.4-71.173c13.67,0,24.573,6.642,30.052,18.264l.719,1.549,23.245-11.511-.609-1.439c-8.025-19.26-28.5-31.27-53.407-31.27-23.134,0-43.611,11.4-50.972,28.447-.123,26.876-.158,23.9,0,24.85,4.7,11.013,14.555,19.37,28.668,24.241a102.033,102.033,0,0,0,19.813,3.984c5.479.72,10.626,1.384,15.829,3.1,6.364,2.1,10.46,5.257,12.84,9.851v9.851c-3.708,7.527-13.781,12.342-25.791,12.342-14.334,0-25.956-6.918-31.933-19.039l-.72-1.494L415.026,280.9l.553,1.439c7.915,19.426,29.609,32.044,55.289,32.044,23.632,0,44.608-11.4,52.3-28.447l.166-25.9-.166-.664c-4.87-11.014-15.219-19.647-28.944-24.241-7.693-2.712-14.335-3.6-20.7-4.427a83.777,83.777,0,0,1-14.832-2.878c-6.31-1.937-10.4-5.092-12.619-9.63v-8.412C449.45,202.427,458.969,197.667,470.315,197.667ZM287.568,311.344h26.067v-68.4H287.568Zm352.266-53.3c-2.933-6.254-8.3-12.01-15.441-16.714A37.99,37.99,0,0,0,637.4,226l.166-25.347-.166-.664C630.038,184,610.667,173.26,589.25,173.26S548.461,184,541.1,199.992l-.166,25.347.166.664a39.643,39.643,0,0,0,13.006,15.331c-7.2,4.7-12.508,10.46-15.441,16.714l-.166,28.889.166.72c7.582,15.994,27.893,26.731,50.585,26.731s43.057-10.737,50.584-26.731l.166-28.89Zm-73.22-50.806c3.6-6.31,12.563-10.516,22.58-10.516s19.038,4.206,22.636,10.516v13.725c-3.542,6.2-12.563,10.349-22.636,10.349s-19.094-4.15-22.58-10.349Zm47.319,72.169c-3.764,6.641-13.338,10.9-24.683,10.9-11.125,0-20.976-4.372-24.684-10.9V263.25c3.708-6.309,13.5-10.515,24.684-10.515,11.345,0,20.919,4.15,24.683,10.515ZM376.4,265.962l-59.827-89.713h-29v40.623h26.51v.387l62.539,94.085H402.3V176.249H376.4Z\"],\"pinterest-p\":[384,512,[],\"f231\",\"M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z\"],apper:[640,512,[],\"f371\",\"M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z\"],\"fort-awesome\":[512,512,[],\"f286\",\"M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z\"],waze:[512,512,[],\"f83f\",\"M502.17 201.67C516.69 287.53 471.23 369.59 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1-51.57-49c-6.44.19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.92c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.26C94.8 95.2 193.12 32 288.09 32c102.48 0 197.15 70.67 214.08 169.67zM373.51 388.28c42-19.18 81.33-56.71 96.29-102.14 40.48-123.09-64.15-228-181.71-228-83.45 0-170.32 55.42-186.07 136-9.53 48.91 5 131.35-68.75 131.35C58.21 358.6 91.6 378.11 127 389.54c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9.82a51.69 51.69 0 0 1 78.78-16.42zM205.12 187.13c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.57 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.61 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06.28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z\"],bluesky:[576,512,[],\"e671\",\"M407.8 294.7c-3.3-.4-6.7-.8-10-1.3c3.4 .4 6.7 .9 10 1.3zM288 227.1C261.9 176.4 190.9 81.9 124.9 35.3C61.6-9.4 37.5-1.7 21.6 5.5C3.3 13.8 0 41.9 0 58.4S9.1 194 15 213.9c19.5 65.7 89.1 87.9 153.2 80.7c3.3-.5 6.6-.9 10-1.4c-3.3 .5-6.6 1-10 1.4C74.3 308.6-9.1 342.8 100.3 464.5C220.6 589.1 265.1 437.8 288 361.1c22.9 76.7 49.2 222.5 185.6 103.4c102.4-103.4 28.1-156-65.8-169.9c-3.3-.4-6.7-.8-10-1.3c3.4 .4 6.7 .9 10 1.3c64.1 7.1 133.6-15.1 153.2-80.7C566.9 194 576 75 576 58.4s-3.3-44.7-21.6-52.9c-15.8-7.1-40-14.9-103.2 29.8C385.1 81.9 314.1 176.4 288 227.1z\"],\"cc-jcb\":[576,512,[],\"f24b\",\"M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z\"],snapchat:[512,512,[62124,\"snapchat-ghost\"],\"f2ab\",\"M496.926,366.6c-3.373-9.176-9.8-14.086-17.112-18.153-1.376-.806-2.641-1.451-3.72-1.947-2.182-1.128-4.414-2.22-6.634-3.373-22.8-12.09-40.609-27.341-52.959-45.42a102.889,102.889,0,0,1-9.089-16.12c-1.054-3.013-1-4.724-.248-6.287a10.221,10.221,0,0,1,2.914-3.038c3.918-2.591,7.96-5.22,10.7-6.993,4.885-3.162,8.754-5.667,11.246-7.44,9.362-6.547,15.909-13.5,20-21.278a42.371,42.371,0,0,0,2.1-35.191c-6.2-16.318-21.613-26.449-40.287-26.449a55.543,55.543,0,0,0-11.718,1.24c-1.029.224-2.059.459-3.063.72.174-11.16-.074-22.94-1.066-34.534-3.522-40.758-17.794-62.123-32.674-79.16A130.167,130.167,0,0,0,332.1,36.443C309.515,23.547,283.91,17,256,17S202.6,23.547,180,36.443a129.735,129.735,0,0,0-33.281,26.783c-14.88,17.038-29.152,38.44-32.673,79.161-.992,11.594-1.24,23.435-1.079,34.533-1-.26-2.021-.5-3.051-.719a55.461,55.461,0,0,0-11.717-1.24c-18.687,0-34.125,10.131-40.3,26.449a42.423,42.423,0,0,0,2.046,35.228c4.105,7.774,10.652,14.731,20.014,21.278,2.48,1.736,6.361,4.24,11.246,7.44,2.641,1.711,6.5,4.216,10.28,6.72a11.054,11.054,0,0,1,3.3,3.311c.794,1.624.818,3.373-.36,6.6a102.02,102.02,0,0,1-8.94,15.785c-12.077,17.669-29.363,32.648-51.434,44.639C32.355,348.608,20.2,352.75,15.069,366.7c-3.868,10.528-1.339,22.506,8.494,32.6a49.137,49.137,0,0,0,12.4,9.387,134.337,134.337,0,0,0,30.342,12.139,20.024,20.024,0,0,1,6.126,2.741c3.583,3.137,3.075,7.861,7.849,14.78a34.468,34.468,0,0,0,8.977,9.127c10.019,6.919,21.278,7.353,33.207,7.811,10.776.41,22.989.881,36.939,5.481,5.778,1.91,11.78,5.605,18.736,9.92C194.842,480.951,217.707,495,255.973,495s61.292-14.123,78.118-24.428c6.907-4.24,12.872-7.9,18.489-9.758,13.949-4.613,26.163-5.072,36.939-5.481,11.928-.459,23.187-.893,33.206-7.812a34.584,34.584,0,0,0,10.218-11.16c3.434-5.84,3.348-9.919,6.572-12.771a18.971,18.971,0,0,1,5.753-2.629A134.893,134.893,0,0,0,476.02,408.71a48.344,48.344,0,0,0,13.019-10.193l.124-.149C498.389,388.5,500.708,376.867,496.926,366.6Zm-34.013,18.277c-20.745,11.458-34.533,10.23-45.259,17.137-9.114,5.865-3.72,18.513-10.342,23.076-8.134,5.617-32.177-.4-63.239,9.858-25.618,8.469-41.961,32.822-88.038,32.822s-62.036-24.3-88.076-32.884c-31-10.255-55.092-4.241-63.239-9.858-6.609-4.563-1.24-17.211-10.341-23.076-10.739-6.907-24.527-5.679-45.26-17.075-13.206-7.291-5.716-11.8-1.314-13.937,75.143-36.381,87.133-92.552,87.666-96.719.645-5.046,1.364-9.014-4.191-14.148-5.369-4.96-29.189-19.7-35.8-24.316-10.937-7.638-15.748-15.264-12.2-24.638,2.48-6.485,8.531-8.928,14.879-8.928a27.643,27.643,0,0,1,5.965.67c12,2.6,23.659,8.617,30.392,10.242a10.749,10.749,0,0,0,2.48.335c3.6,0,4.86-1.811,4.612-5.927-.768-13.132-2.628-38.725-.558-62.644,2.84-32.909,13.442-49.215,26.04-63.636,6.051-6.932,34.484-36.976,88.857-36.976s82.88,29.92,88.931,36.827c12.611,14.421,23.225,30.727,26.04,63.636,2.071,23.919.285,49.525-.558,62.644-.285,4.327,1.017,5.927,4.613,5.927a10.648,10.648,0,0,0,2.48-.335c6.745-1.624,18.4-7.638,30.4-10.242a27.641,27.641,0,0,1,5.964-.67c6.386,0,12.4,2.48,14.88,8.928,3.546,9.374-1.24,17-12.189,24.639-6.609,4.612-30.429,19.343-35.8,24.315-5.568,5.134-4.836,9.1-4.191,14.149.533,4.228,12.511,60.4,87.666,96.718C468.629,373.011,476.119,377.524,462.913,384.877Z\"],\"fantasy-flight-games\":[512,512,[],\"f6dc\",\"M256 32.86L32.86 256 256 479.14 479.14 256 256 32.86zM88.34 255.83c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.77-18.69 24.63 18.4 62.06 58.9 62.15 59 .68.74 1.07 2.86.58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43.12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99zm234.82 101.6c-35.49 35.43-78.09 38.14-106.99 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64.14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29.26-.26.65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z\"],rust:[512,512,[],\"e07a\",\"M508.52,249.75,486.7,236.24c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35,7.35,0,0,0-2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35,7.35,0,0,0-4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35,7.35,0,0,0-6.95-10.39l-25.82.91q-1.79-2.22-3.61-4.4L439,81.84A7.36,7.36,0,0,0,430.16,73L405,78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35,7.35,0,0,0-10.39-7L367.7,53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4,25.08a7.35,7.35,0,0,0-11.54-4.79L326,35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35,7.35,0,0,0-12.25-2.44l-17.5,18.72c-1.95-.21-3.91-.38-5.88-.55L262.25,3.48a7.35,7.35,0,0,0-12.5,0L236.24,25.3c-2,.17-3.93.34-5.88.55L212.86,7.13a7.35,7.35,0,0,0-12.25,2.44l-9,24c-1.89.55-3.79,1.08-5.66,1.68l-20.82-15a7.35,7.35,0,0,0-11.54,4.79l-4.15,25.41c-1.73.9-3.45,1.79-5.16,2.73L120.88,42.55a7.35,7.35,0,0,0-10.39,7l.92,25.81c-1.49,1.19-3,2.39-4.42,3.61L81.84,73A7.36,7.36,0,0,0,73,81.84L78.93,107c-1.23,1.45-2.43,2.93-3.62,4.41l-25.81-.91a7.42,7.42,0,0,0-6.37,3.26,7.35,7.35,0,0,0-.57,7.13l10.66,23.41c-.94,1.7-1.83,3.43-2.73,5.16L25.08,153.6a7.35,7.35,0,0,0-4.79,11.54l15,20.82c-.59,1.87-1.13,3.77-1.68,5.66l-24,9a7.35,7.35,0,0,0-2.44,12.25l18.72,17.5c-.21,1.95-.38,3.91-.55,5.88L3.48,249.75a7.35,7.35,0,0,0,0,12.5L25.3,275.76c.17,2,.34,3.92.55,5.87L7.13,299.13a7.35,7.35,0,0,0,2.44,12.25l24,9c.55,1.89,1.08,3.78,1.68,5.65l-15,20.83a7.35,7.35,0,0,0,4.79,11.54l25.42,4.15c.9,1.72,1.79,3.45,2.73,5.14L42.56,391.12a7.35,7.35,0,0,0,.57,7.13,7.13,7.13,0,0,0,6.37,3.26l25.83-.91q1.77,2.22,3.6,4.4L73,430.16A7.36,7.36,0,0,0,81.84,439L107,433.07q2.18,1.83,4.41,3.61l-.92,25.82a7.35,7.35,0,0,0,10.39,6.95l23.43-10.68c1.69.94,3.42,1.83,5.14,2.73l4.15,25.42a7.34,7.34,0,0,0,11.54,4.78l20.83-15c1.86.6,3.76,1.13,5.65,1.68l9,24a7.36,7.36,0,0,0,12.25,2.44l17.5-18.72c1.95.21,3.92.38,5.88.55l13.51,21.82a7.35,7.35,0,0,0,12.5,0l13.51-21.82c2-.17,3.93-.34,5.88-.56l17.5,18.73a7.36,7.36,0,0,0,12.25-2.44l9-24c1.89-.55,3.78-1.08,5.65-1.68l20.82,15a7.34,7.34,0,0,0,11.54-4.78l4.15-25.42c1.72-.9,3.45-1.79,5.15-2.73l23.42,10.68a7.35,7.35,0,0,0,10.39-6.95l-.91-25.82q2.22-1.79,4.4-3.61L430.16,439a7.36,7.36,0,0,0,8.84-8.84L433.07,405q1.83-2.17,3.61-4.4l25.82.91a7.23,7.23,0,0,0,6.37-3.26,7.35,7.35,0,0,0,.58-7.13L458.77,367.7c.94-1.7,1.83-3.43,2.73-5.15l25.42-4.15a7.35,7.35,0,0,0,4.79-11.54l-15-20.83c.59-1.87,1.13-3.76,1.67-5.65l24-9a7.35,7.35,0,0,0,2.44-12.25l-18.72-17.5c.21-1.95.38-3.91.55-5.87l21.82-13.51a7.35,7.35,0,0,0,0-12.5Zm-151,129.08A13.91,13.91,0,0,0,341,389.51l-7.64,35.67A187.51,187.51,0,0,1,177,424.44l-7.64-35.66a13.87,13.87,0,0,0-16.46-10.68l-31.51,6.76a187.38,187.38,0,0,1-16.26-19.21H258.3c1.72,0,2.89-.29,2.89-1.91V309.55c0-1.57-1.17-1.91-2.89-1.91H213.47l.05-34.35H262c4.41,0,23.66,1.28,29.79,25.87,1.91,7.55,6.17,32.14,9.06,40,2.89,8.82,14.6,26.46,27.1,26.46H407a187.3,187.3,0,0,1-17.34,20.09Zm25.77,34.49A15.24,15.24,0,1,1,368,398.08h.44A15.23,15.23,0,0,1,383.24,413.32Zm-225.62-.68a15.24,15.24,0,1,1-15.25-15.25h.45A15.25,15.25,0,0,1,157.62,412.64ZM69.57,234.15l32.83-14.6a13.88,13.88,0,0,0,7.06-18.33L102.69,186h26.56V305.73H75.65A187.65,187.65,0,0,1,69.57,234.15ZM58.31,198.09a15.24,15.24,0,0,1,15.23-15.25H74a15.24,15.24,0,1,1-15.67,15.24Zm155.16,24.49.05-35.32h63.26c3.28,0,23.07,3.77,23.07,18.62,0,12.29-15.19,16.7-27.68,16.7ZM399,306.71c-9.8,1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4,18.86-11.95,38.46-29.64,38.46-53.26,0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.32A187.49,187.49,0,0,1,221.21,70.06l23.47,24.6a13.82,13.82,0,0,0,19.6.44l26.26-25a187.51,187.51,0,0,1,128.37,91.43l-18,40.57A14,14,0,0,0,408,220.43l34.59,15.33a187.12,187.12,0,0,1,.4,32.54H423.71c-1.91,0-2.69,1.27-2.69,3.13v8.82C421,301,409.31,305.58,399,306.71ZM240,60.21A15.24,15.24,0,0,1,255.21,45h.45A15.24,15.24,0,1,1,240,60.21ZM436.84,214a15.24,15.24,0,1,1,0-30.48h.44a15.24,15.24,0,0,1-.44,30.48Z\"],wix:[640,512,[],\"f5cf\",\"M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z\"],\"square-behance\":[448,512,[\"behance-square\"],\"f1b5\",\"M155.3 318.4c17.2 0 31.2-6.1 31.2-25.4c0-19.7-11.7-27.4-30.3-27.5h-46v52.9h45.1zm-5.4-129.6H110.3v44.8H153c15.1 0 25.8-6.6 25.8-22.9c0-17.7-13.7-21.9-28.9-21.9zm129.5 74.8h62.2c-1.7-18.5-11.3-29.7-30.5-29.7c-18.3 0-30.5 11.4-31.7 29.7zM384 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zM349.5 185H271.7V166.1h77.8V185zM193.7 243.7c23.6 6.7 35 27.5 35 51.6c0 39-32.7 55.7-67.6 55.9H68v-192h90.5c32.9 0 61.4 9.3 61.4 47.5c0 19.3-9 28.8-26.2 37zm118.7-38.6c43.5 0 67.6 34.3 67.6 75.4c0 1.6-.1 3.3-.2 5c0 .8-.1 1.5-.1 2.2H279.5c0 22.2 11.7 35.3 34.1 35.3c11.6 0 26.5-6.2 30.2-18.1h33.7c-10.4 31.9-31.9 46.8-65.1 46.8c-43.8 0-71.1-29.7-71.1-73c0-41.8 28.7-73.6 71.1-73.6z\"],supple:[640,512,[],\"f3f9\",\"M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z\"],webflow:[640,512,[],\"e65c\",\"M640 64L435.8 463.2H244l85.5-165.5h-3.8C255.1 389.3 149.9 449.5 0 463.2V300.1s95.9-5.7 152.3-64.9H0V64H171.1V204.8l3.8 0L244.9 64H374.3V203.9l3.8 0L450.7 64H640z\"],rebel:[512,512,[],\"f1d0\",\"M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z\"],css3:[512,512,[],\"f13c\",\"M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z\"],staylinked:[440,512,[],\"f3f5\",\"M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z\"],kaggle:[320,512,[],\"f5fa\",\"M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z\"],\"space-awesome\":[512,512,[],\"e5ac\",\"M96 256H128V512H0V352H32V320H64V288H96V256zM512 352V512H384V256H416V288H448V320H480V352H512zM320 64H352V448H320V416H192V448H160V64H192V32H224V0H288V32H320V64zM288 128H224V192H288V128z\"],deviantart:[320,512,[],\"f1bd\",\"M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z\"],cpanel:[640,512,[],\"f388\",\"M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5.2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z\"],\"goodreads-g\":[384,512,[],\"f3a9\",\"M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z\"],\"square-git\":[448,512,[\"git-square\"],\"f1d2\",\"M120.8 335.5c-5.9-.4-12.6-.8-20.2-1.3c-3.3 4.1-6.6 8.4-6.6 13.5c0 18.5 65.5 18.5 65.5-1.5c0-8.3-7.4-8.7-38.8-10.7zm7.8-117.9c-32.3 0-33.7 44.5-.7 44.5c32.5 0 31.7-44.5 .7-44.5zM384 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zM243.9 172.2c-14.5 0-22.9-8.4-22.9-22.9c0-14.5 8.4-22.3 22.9-22.3c14.7 0 23.1 7.8 23.1 22.3s-8.4 22.9-23.1 22.9zM149.6 195h49.5l0 21.6-23.4 1.8c4.6 5.8 9.4 14 9.4 25.7c0 48.7-57.2 47.2-74.2 42.4l-8.4 13.4c5 .3 9.8 .6 14.3 .8c56.3 3.2 80.5 4.6 80.5 38.5c0 29.2-25.7 45.7-69.9 45.7c-46 0-63.5-11.6-63.5-31.7c0-11.4 5.1-17.5 14-25.9c-8.4-3.5-11.2-9.9-11.2-16.8c0-9.6 7.4-16.3 23-30.6l.2-.2c-12.4-6.1-21.8-19.3-21.8-38.1c0-51.6 56.6-53.3 81.6-46.8zM270.5 303.1l13 1.8 0 20.1H211.1V304.9c2.7-.4 5-.7 6.9-.9c9.9-1.2 10.1-1.3 10.1-6V223.3c0-4.4-.9-4.7-10.1-7.8c-1.9-.7-4.2-1.4-6.9-2.4l2.8-20.6h52.6V298c0 4.1 .2 4.6 4.1 5.1zm106.6-10.4L384 315c-10.9 5.4-26.9 10.2-41.4 10.2c-30.2 0-41.7-12.2-41.7-40.9V217.7c0-.8 0-1.4-.2-1.8c-.8-1.2-4.2-.7-19.6-.7V192.6c22.3-2.5 31.2-13.7 34-41.4h24.2c0 33.3-.6 38 .7 38.6c.3 .1 .7 0 1.3 0h35.8v25.4H339.3v60.7c0 .2 0 .5 0 .9c-.2 6.3-.9 30.4 37.9 15.9z\"],\"square-tumblr\":[448,512,[\"tumblr-square\"],\"f174\",\"M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM256.8 416c-75.5 0-91.9-55.5-91.9-87.9v-90H135.2c-3.4 0-6.2-2.8-6.2-6.2V189.4c0-4.5 2.8-8.5 7.1-10c38.8-13.7 50.9-47.5 52.7-73.2c.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2H249.1V321c0 21.4 14.8 33.5 42.5 22.4c3-1.2 5.6-2 8-1.4c2.2 .5 3.6 2.1 4.6 4.9L318 387.1c1 3.2 2 6.7-.3 9.1c-8.5 9.1-31.2 19.8-60.9 19.8z\"],trello:[448,512,[],\"f181\",\"M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8.1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z\"],\"creative-commons-nc-jp\":[496,512,[],\"f4ea\",\"M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z\"],\"get-pocket\":[448,512,[],\"f265\",\"M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z\"],perbyte:[448,512,[],\"e083\",\"M305.314,284.578H246.6V383.3h58.711q24.423,0,38.193-13.77t13.77-36.11q0-21.826-14.032-35.335T305.314,284.578ZM149.435,128.7H90.724v98.723h58.711q24.42,0,38.19-13.773t13.77-36.107q0-21.826-14.029-35.338T149.435,128.7ZM366.647,32H81.353A81.445,81.445,0,0,0,0,113.352V398.647A81.445,81.445,0,0,0,81.353,480H366.647A81.445,81.445,0,0,0,448,398.647V113.352A81.445,81.445,0,0,0,366.647,32Zm63.635,366.647a63.706,63.706,0,0,1-63.635,63.635H81.353a63.706,63.706,0,0,1-63.635-63.635V113.352A63.706,63.706,0,0,1,81.353,49.718H366.647a63.706,63.706,0,0,1,63.635,63.634ZM305.314,128.7H246.6v98.723h58.711q24.423,0,38.193-13.773t13.77-36.107q0-21.826-14.032-35.338T305.314,128.7Z\"],grunt:[384,512,[],\"f3ad\",\"M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8.6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2.9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z\"],weebly:[512,512,[],\"f5cc\",\"M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z\"],connectdevelop:[576,512,[],\"f20e\",\"M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z\"],leanpub:[576,512,[],\"f212\",\"M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z\"],\"black-tie\":[448,512,[],\"f27e\",\"M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z\"],themeco:[448,512,[],\"f5c6\",\"M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.85c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.81 503.74c-9.93 5.66-26 5.57-35.85-.21L17.86 395.12C8 389.34 0 375.38 0 364V146.71c0-11.44 8-25.36 17.91-31.08zm-77.4 199.83c-15.94 0-31.89.14-47.83.14v101.45H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.14 100.29l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.59h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.65-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z\"],python:[448,512,[],\"f3e2\",\"M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z\"],android:[576,512,[],\"f17b\",\"M420.55,301.93a24,24,0,1,1,24-24,24,24,0,0,1-24,24m-265.1,0a24,24,0,1,1,24-24,24,24,0,0,1-24,24m273.7-144.48,47.94-83a10,10,0,1,0-17.27-10h0l-48.54,84.07a301.25,301.25,0,0,0-246.56,0L116.18,64.45a10,10,0,1,0-17.27,10h0l47.94,83C64.53,202.22,8.24,285.55,0,384H576c-8.24-98.45-64.54-181.78-146.85-226.55\"],bots:[640,512,[],\"e340\",\"M86.344,197.834a51.767,51.767,0,0,0-41.57,20.058V156.018a8.19,8.19,0,0,0-8.19-8.19H8.19A8.19,8.19,0,0,0,0,156.018V333.551a8.189,8.189,0,0,0,8.19,8.189H36.584a8.189,8.189,0,0,0,8.19-8.189v-8.088c11.628,13.373,25.874,19.769,41.573,19.769,34.6,0,61.922-26.164,61.922-73.843C148.266,225.452,121.229,197.834,86.344,197.834ZM71.516,305.691c-9.593,0-21.221-4.942-26.745-12.5V250.164c5.528-7.558,17.152-12.791,26.745-12.791,17.734,0,31.107,13.082,31.107,34.013C102.623,292.609,89.25,305.691,71.516,305.691Zm156.372-59.032a17.4,17.4,0,1,0,17.4,17.4A17.4,17.4,0,0,0,227.888,246.659ZM273.956,156.7V112.039a13.308,13.308,0,1,0-10.237,0V156.7a107.49,107.49,0,1,0,10.237,0Zm85.993,107.367c0,30.531-40.792,55.281-91.112,55.281s-91.111-24.75-91.111-55.281,40.792-55.281,91.111-55.281S359.949,233.532,359.949,264.062Zm-50.163,17.4a17.4,17.4,0,1,0-17.4-17.4h0A17.4,17.4,0,0,0,309.786,281.466ZM580.7,250.455c-14.828-2.617-22.387-3.78-22.387-9.885,0-5.523,7.268-9.884,17.735-9.884a65.56,65.56,0,0,1,34.484,10.1,8.171,8.171,0,0,0,11.288-2.468c.07-.11.138-.221.2-.333l8.611-14.886a8.2,8.2,0,0,0-2.867-11.123,99.863,99.863,0,0,0-52.014-14.138c-38.956,0-60.179,21.514-60.179,46.225,0,36.342,33.725,41.864,57.563,45.642,13.373,2.326,24.13,4.361,24.13,11.048,0,6.4-5.523,10.757-18.9,10.757-13.552,0-30.994-6.222-42.623-13.579a8.206,8.206,0,0,0-11.335,2.491c-.035.054-.069.108-.1.164l-10.2,16.891a8.222,8.222,0,0,0,2.491,11.066c15.224,10.3,37.663,16.692,59.441,16.692,40.409,0,63.957-19.769,63.957-46.515C640,260.63,604.537,254.816,580.7,250.455Zm-95.928,60.787a8.211,8.211,0,0,0-9.521-5.938,23.168,23.168,0,0,1-4.155.387c-7.849,0-12.5-6.106-12.5-14.245V240.28h20.349a8.143,8.143,0,0,0,8.141-8.143V209.466a8.143,8.143,0,0,0-8.141-8.143H458.594V171.091a8.143,8.143,0,0,0-8.143-8.143H422.257a8.143,8.143,0,0,0-8.143,8.143h0v30.232H399a8.143,8.143,0,0,0-8.143,8.143h0v22.671A8.143,8.143,0,0,0,399,240.28h15.115v63.667c0,27.037,15.408,41.282,43.9,41.282,12.183,0,21.383-2.2,27.6-5.446a8.161,8.161,0,0,0,4.145-9.278Z\"],\"free-code-camp\":[576,512,[],\"f2c5\",\"M97.22,96.21c10.36-10.65,16-17.12,16-21.9,0-2.76-1.92-5.51-3.83-7.42A14.81,14.81,0,0,0,101,64.05c-8.48,0-20.92,8.79-35.84,25.69C23.68,137,2.51,182.81,3.37,250.34s17.47,117,54.06,161.87C76.22,435.86,90.62,448,100.9,448a13.55,13.55,0,0,0,8.37-3.84c1.91-2.76,3.81-5.63,3.81-8.38,0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25,188.8,54,137.83,97.22,96.21ZM239.47,420.07c.58.37.91.55.91.55Zm93.79.55.17-.13C333.24,420.62,333.17,420.67,333.26,420.62Zm3.13-158.18c-16.24-4.15,50.41-82.89-68.05-177.17,0,0,15.54,49.38-62.83,159.57-74.27,104.35,23.46,168.73,34,175.23-6.73-4.35-47.4-35.7,9.55-128.64,11-18.3,25.53-34.87,43.5-72.16,0,0,15.91,22.45,7.6,71.13C287.7,364,354,342.91,355,343.94c22.75,26.78-17.72,73.51-21.58,76.55,5.49-3.65,117.71-78,33-188.1C360.43,238.4,352.62,266.59,336.39,262.44ZM510.88,89.69C496,72.79,483.52,64,475,64a14.81,14.81,0,0,0-8.39,2.84c-1.91,1.91-3.83,4.66-3.83,7.42,0,4.78,5.6,11.26,16,21.9,43.23,41.61,65,92.59,64.82,154.06-.16,68-23,122.63-67.48,165-9.34,8.35-13.18,14.92-13.2,20.55,0,2.75,1.9,5.62,3.81,8.38A13.61,13.61,0,0,0,475.1,448c10.28,0,24.68-12.13,43.47-35.79,36.59-44.85,53.14-94.38,54.06-161.87S552.32,137,510.88,89.69Z\"],hornbill:[512,512,[],\"f592\",\"M76.38 370.3a37.8 37.8 0 1 1-32.07-32.42c-78.28-111.35 52-190.53 52-190.53-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49.93 64.06 39.81 72.87a140.38 140.38 0 0 0 131.66 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0-31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.42 140.42 0 0 1 207 132.71c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.59-54.06zm304.19 134.17a37.94 37.94 0 1 0-53.84-28.7C403 126.13 344.89 99 251.28 100.33l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.37 140.37 0 0 1 130.49 88.76c39.1 9 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 49-194.61a37.45 37.45 0 0 0 19.31-3.5zM374.06 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15a140.34 140.34 0 0 1-91.39 131.45c-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z\"],js:[448,512,[],\"f3b8\",\"M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"],ideal:[576,512,[],\"e013\",\"M125.61,165.48a49.07,49.07,0,1,0,49.06,49.06A49.08,49.08,0,0,0,125.61,165.48ZM86.15,425.84h78.94V285.32H86.15Zm151.46-211.6c0-20-10-22.53-18.74-22.53H204.82V237.5h14.05C228.62,237.5,237.61,234.69,237.61,214.24Zm201.69,46V168.93h22.75V237.5h33.69C486.5,113.08,388.61,86.19,299.67,86.19H204.84V169h14c25.6,0,41.5,17.35,41.5,45.26,0,28.81-15.52,46-41.5,46h-14V425.88h94.83c144.61,0,194.94-67.16,196.72-165.64Zm-109.75,0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51Zm74.66,0-5.16-17.67H369.31l-5.18,17.67H340.47L368,168.92h32.35l27.53,91.34ZM299.65,32H32V480H299.65c161.85,0,251-79.73,251-224.52C550.62,172,518,32,299.65,32Zm0,426.92H53.07V53.07H299.65c142.1,0,229.9,64.61,229.9,202.41C529.55,389.57,448.55,458.92,299.65,458.92Zm83.86-264.85L376,219.88H392.4l-7.52-25.81Z\"],git:[512,512,[],\"f1d3\",\"M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z\"],dev:[448,512,[],\"f6cc\",\"M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z\"],sketch:[512,512,[],\"f7c6\",\"M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z\"],\"yandex-international\":[320,512,[],\"f414\",\"M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z\"],\"cc-amex\":[576,512,[],\"f1f3\",\"M0 432c0 26.5 21.5 48 48 48H528c26.5 0 48-21.5 48-48v-1.1H514.3l-31.9-35.1-31.9 35.1H246.8V267.1H181L262.7 82.4h78.6l28.1 63.2V82.4h97.2L483.5 130l17-47.6H576V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80V432zm440.4-21.7L482.6 364l42 46.3H576l-68-72.1 68-72.1H525.4l-42 46.7-41.5-46.7H390.5L458 338.6l-67.4 71.6V377.1h-83V354.9h80.9V322.6H307.6V300.2h83V267.1h-122V410.3H440.4zm96.3-72L576 380.2V296.9l-39.3 41.4zm-36.3-92l36.9-100.6V246.3H576V103H515.8l-32.2 89.3L451.7 103H390.5V246.1L327.3 103H276.1L213.7 246.3h43l11.9-28.7h65.9l12 28.7h82.7V146L466 246.3h34.4zM282 185.4l19.5-46.9 19.4 46.9H282z\"],uber:[448,512,[],\"f402\",\"M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z\"],github:[496,512,[],\"f09b\",\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\"],php:[640,512,[],\"f457\",\"M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z\"],alipay:[448,512,[],\"f642\",\"M377.74 32H70.26C31.41 32 0 63.41 0 102.26v307.48C0 448.59 31.41 480 70.26 480h307.48c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.59-60.34-171.6-88.44-32.07 43.97-84.14 81-148.62 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.13 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.44V92.34h50.92v50.42h109.44v19.01H248.63v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100.01 36.04 148.62 52.74V102.26C447.83 63.57 416.43 32 377.74 32zM47.28 322.95c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.87-72.9-44.63-18.68-84.48-31.41-109.44-31.41-67.45 0-79.35 33.06-78.36 50.58z\"],youtube:[576,512,[61802],\"f167\",\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"],skyatlas:[640,512,[],\"f216\",\"M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z\"],\"firefox-browser\":[512,512,[],\"e007\",\"M130.22 127.548C130.38 127.558 130.3 127.558 130.22 127.548V127.548ZM481.64 172.898C471.03 147.398 449.56 119.898 432.7 111.168C446.42 138.058 454.37 165.048 457.4 185.168C457.405 185.306 457.422 185.443 457.45 185.578C429.87 116.828 383.098 89.1089 344.9 28.7479C329.908 5.05792 333.976 3.51792 331.82 4.08792L331.7 4.15792C284.99 30.1109 256.365 82.5289 249.12 126.898C232.503 127.771 216.219 131.895 201.19 139.035C199.838 139.649 198.736 140.706 198.066 142.031C197.396 143.356 197.199 144.87 197.506 146.323C197.7 147.162 198.068 147.951 198.586 148.639C199.103 149.327 199.76 149.899 200.512 150.318C201.264 150.737 202.096 150.993 202.954 151.071C203.811 151.148 204.676 151.045 205.491 150.768L206.011 150.558C221.511 143.255 238.408 139.393 255.541 139.238C318.369 138.669 352.698 183.262 363.161 201.528C350.161 192.378 326.811 183.338 304.341 187.248C392.081 231.108 368.541 381.784 246.951 376.448C187.487 373.838 149.881 325.467 146.421 285.648C146.421 285.648 157.671 243.698 227.041 243.698C234.541 243.698 255.971 222.778 256.371 216.698C256.281 214.698 213.836 197.822 197.281 181.518C188.434 172.805 184.229 168.611 180.511 165.458C178.499 163.75 176.392 162.158 174.201 160.688C168.638 141.231 168.399 120.638 173.51 101.058C148.45 112.468 128.96 130.508 114.8 146.428H114.68C105.01 134.178 105.68 93.7779 106.25 85.3479C106.13 84.8179 99.022 89.0159 98.1 89.6579C89.5342 95.7103 81.5528 102.55 74.26 110.088C57.969 126.688 30.128 160.242 18.76 211.318C14.224 231.701 12 255.739 12 263.618C12 398.318 121.21 507.508 255.92 507.508C376.56 507.508 478.939 420.281 496.35 304.888C507.922 228.192 481.64 173.82 481.64 172.898Z\"],replyd:[448,512,[],\"f3e6\",\"M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z\"],suse:[640,512,[],\"f7d6\",\"M593.1 192.6A10.4 10.4 0 1 1 604.5 210a10.4 10.4 0 1 1 -11.4-17.4zm-47.1 12.2a38.5 38.5 0 1 1 75-17.6 38.5 38.5 0 1 1 -75 17.6zM433.7 336.7c3.2 4.6 5.8 9 7.3 13.4c1 3.1 2.4 7.3 5.5 8.9c.2 .1 .3 .2 .5 .2c5.7 2.1 20.3 1.7 20.3 1.7h26.8c2.3 0 22.4 0 21.9-2.3c-2.4-10.8-14.9-12.7-24.4-18.3c-8.7-5.2-17-11.1-20.8-21.3c-2-5.2-.8-17.4 2.6-21.8c2.5-3.2 6.1-5.3 10-6.2c4.3-.9 8.8-.1 13.1 .3c5.3 .5 10.6 1.5 15.9 2.2c10.3 1.3 20.6 1.9 31 1.6c17.1-.5 34.2-3.2 50.4-8.7c11.3-3.8 22.4-8.9 32-16.1c10.9-8.1 8.1-7.4-3-6.2c-13.3 1.4-26.6 1.6-39.9 .8c-12.4-.7-24.7-2.2-35.9-7.9c-8.8-4.6-16.4-9.1-23.4-16.2c-1-1.1-1.7-4.2 .2-6.2c1.9-1.9 5.8-.8 7 .2c12.2 10.2 30.5 18.6 49.3 19.5c10.2 .5 20.1 .7 30.4 .3c5.1-.2 12.8-.2 17.9-.3c2.6 0 9.8 .7 11.2-2.1c.4-.8 .4-1.8 .3-2.7c-1.5-40.9-4.5-86.9-47.3-106.5c-31.9-14.6-79.7-37.2-99.9-46.6c-4.7-2.2-10.2 1.3-10.2 6.5c0 13.6 .7 33.3 .7 51.1c-9.7-9.9-26-16.1-38.4-21.8c-14.1-6.5-28.7-12-43.5-16.6c-29.8-9.2-60.7-14.9-91.7-18c-35.2-3.5-71-1.8-105.7 5.3C147 115.1 90.8 142.6 48.2 182.7C22.1 207.3 1.6 242.4 .2 277.9c-2 50.3 12.1 77.3 38 105.2c41.3 44.4 130.2 50.6 166.2-2c16.2-23.7 19.7-55.8 8-82c-11.8-26.2-38.8-45.1-67.4-46c-22.2-.7-45.9 10.6-54.5 31.1c-6.5 15.7-2.8 35.1 9 47.3c4.6 4.8 10.9 8.7 17.7 7.1c4-.9 7.4-3.9 8-8c.9-6-4.4-9.9-7.6-14.5c-5.8-8.3-4.7-20.9 2.7-27.9c6.2-6 15.3-7.8 23.9-7.7c8 0 16.2 1.4 23.1 5.5c9.7 5.7 16.2 16.2 18.4 27.2c6.7 33-20.2 59.9-56.6 62c-18.6 1.1-37.6-3.8-52.1-15.5C40.1 329.9 31.1 269.4 73.2 237c40-30.7 90.4-22.8 120.2-6.8c23.8 12.8 41.5 33.6 55 56.7c6.7 11.6 12.5 23.7 17.8 36.1c5.1 11.8 9.9 23.8 20.2 32.5c6.8 5.8 15.2 5.6 24.1 5.6h50.8c6.9 0 5.2-4.6 2.2-7.7c-6.7-6.9-16.4-8.4-25.4-10.9c-20.5-5.6-18.4-32.8-12.7-32.8c18.3 0 18.9 .6 34.9 .3c23.2-.3 30.2-1.7 48.3 5c9.7 3.6 19 13.1 25.1 21.7z\"],jenkins:[512,512,[],\"f3b6\",\"M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z\"],twitter:[512,512,[],\"f099\",\"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\"],rockrms:[496,512,[],\"f3e9\",\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z\"],pinterest:[496,512,[],\"f0d2\",\"M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z\"],buffer:[448,512,[],\"f837\",\"M427.84 380.67l-196.5 97.82a18.6 18.6 0 0 1-14.67 0L20.16 380.67c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.76 67a18.51 18.51 0 0 0 14.67 0l134.76-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.53l-47.06-23.43a18.62 18.62 0 0 0-14.68 0l-134.76 67.08a18.68 18.68 0 0 1-14.67 0L81.91 220.71a18.65 18.65 0 0 0-14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.51 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.42l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.51-90.29c4-1.86 4-4.89 0-6.74L231.33 33.4a19.88 19.88 0 0 0-14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z\"],npm:[576,512,[],\"f3d4\",\"M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z\"],yammer:[512,512,[],\"f840\",\"M500.676,159.486a12.779,12.779,0,0,0-6.4-8.282,13.954,13.954,0,0,0-10.078-1.125L457.8,156.7l-.043-.2-22.3,5.785-1.243.333-.608-2.17A369.037,369.037,0,0,0,347.538,4.289a14.1,14.1,0,0,0-19.784-.463l-102.9,102.747H24.947A24.9,24.9,0,0,0,0,131.417V380.38a24.963,24.963,0,0,0,24.918,24.9H224.986L328.072,508a13.667,13.667,0,0,0,19.327,0c.126-.126.249-.255.37-.385a368.025,368.025,0,0,0,69.577-107.374,403.45,403.45,0,0,0,17.3-50.8v-.028l20.406,5.336.029-.073L483.345,362a20.253,20.253,0,0,0,2.619.5,13.359,13.359,0,0,0,4.139-.072,13.5,13.5,0,0,0,10.515-9.924,415.855,415.855,0,0,0,.058-193.013ZM337.125,24.65l.013.014h-.013Zm-110.2,165.161L174.311,281.1a11.338,11.338,0,0,0-1.489,5.655v46.189a22.04,22.04,0,0,1-22.041,22h-3.4A22.068,22.068,0,0,1,125.3,332.962V287.294a11.532,11.532,0,0,0-1.388-5.51l-51.6-92.2a21.988,21.988,0,0,1,19.264-32.726h3.268a22.059,22.059,0,0,1,19.611,11.916l36.357,70.281,37.515-70.512a22.066,22.066,0,0,1,38.556-.695,21.7,21.7,0,0,1,0,21.967ZM337.145,24.673a348.147,348.147,0,0,1,75.8,141.335l.564,1.952-114.134,29.6V131.417a25.006,25.006,0,0,0-24.947-24.9H255.067Zm60.5,367.305v-.043l-.014.014a347.19,347.19,0,0,1-60.177,95.227l-82.2-81.893h19.177a24.978,24.978,0,0,0,24.947-24.9v-66.2l114.6,29.862A385.191,385.191,0,0,1,397.648,391.978Zm84-52.45.015.014-50.618-13.131L299.379,292.1V219.572l119.746-30.99,4.468-1.157,39.54-10.253,18.511-4.816A393,393,0,0,1,481.644,339.528Z\"],btc:[384,512,[],\"f15a\",\"M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z\"],dribbble:[512,512,[],\"f17d\",\"M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z\"],\"stumbleupon-circle\":[496,512,[],\"f1a3\",\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z\"],\"internet-explorer\":[512,512,[],\"f26b\",\"M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z\"],stubber:[448,512,[],\"e5c7\",\"M136.5 294.2l58.8 22.9c9.1-36.8 25.4-61.1 55-61.1c49.4 0 71.4 63.6 142.4 63.6c15.6 0 35.9-2.8 55.3-13.3V368c0 61.8-50.4 112-112.3 112H0l41.8-56L0 368l41.7-56L0 256.1l41.8-56L0 144.1 41.8 88 0 32H335.7C397.6 32 448 82.3 448 144.1v51.3c-9.2 36.3-25.9 60.6-55 60.6c-49.6 0-71.6-63.5-142.4-63.5c-35.9 0-95.2 14.6-114.1 101.6h0z\"],telegram:[496,512,[62462,\"telegram-plane\"],\"f2c6\",\"M248,8C111.033,8,0,119.033,0,256S111.033,504,248,504,496,392.967,496,256,384.967,8,248,8ZM362.952,176.66c-3.732,39.215-19.881,134.378-28.1,178.3-3.476,18.584-10.322,24.816-16.948,25.425-14.4,1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25,5.342-39.5,3.652-3.793,67.107-61.51,68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608,69.142-14.845,10.194-26.894,9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7,18.45-13.7,108.446-47.248,144.628-62.3c68.872-28.647,83.183-33.623,92.511-33.789,2.052-.034,6.639.474,9.61,2.885a10.452,10.452,0,0,1,3.53,6.716A43.765,43.765,0,0,1,362.952,176.66Z\"],\"old-republic\":[496,512,[],\"f510\",\"M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z\"],odysee:[512,512,[],\"e5c6\",\"M406.7 463c-42.3 30.8-94.4 49-150.7 49C144.9 512 50.3 441.2 14.9 342.2c2.4 1.7 5.9 3.6 7.9 4.4c16.3 7.4 40.1-5.4 62.9-28.7c6.9-6.9 14.4-12.4 22.8-17.3c18.3-11.9 37.6-20.8 58.4-27.2c0 0 22.3 34.2 43.1 74.8s-22.3 54-27.2 54c-.3 0-.8 0-1.5-.1c-11-.5-70-3-56 51.1c14.9 57.4 97.5 36.6 139.6 8.9s31.7-118.3 31.7-118.3c41.1-6.4 54 37.1 57.9 59.4c.8 4.6 1.1 9.9 1.4 15.5c1.1 21.2 2.3 45.6 35.3 46.4c5.3 0 10.6-.8 15.5-2zm-95.3-23.7c-2-.5-3.5-2.5-3-5c1-2.5 3-3.5 5-3s3.5 3 3 5s-2.5 3.5-5 3zm-207-95.6c1.5-.5 3.5 1 4 3c0 2-1 4-3 4c-1.5 .5-3.5-1-4-3c-.5-1.5 1-3.5 3-4zM451.8 421C489.3 376.4 512 318.8 512 256c0-67.5-26.1-128.9-68.8-174.7c-.1 23.5-6.1 48.2-16.8 69.2c-11.9 20.3-49 58.9-69.8 78.7c-.7 .3-1.1 .9-1.5 1.4c-.2 .2-.3 .4-.5 .6c-5 6.9-4 16.8 3 21.8c21.3 15.8 56.4 45.6 59.4 72.8c3.5 34.9 27.9 75.6 34.2 86.2l0 0c.8 1.3 1.3 2.1 1.4 2.4c0 2.2-.4 4.3-.8 6.5zM390.7 251c-.5 3 1 5.9 4 6.4s5.9-1 6.4-4s-1-5.9-4-6.4c-3-1-5.9 1-6.4 4zm61.4-60.9l-11.4 5.4-3 12.9-5.4-11.4-12.9-3 11.4-5.4 3-12.9 5.4 11.4 12.9 3zM395.5 41.3c-16.2 8.2-22.1 32.8-29 61.4l0 0c-.3 1.4-.7 2.8-1 4.2c-9.5 38.5-30.6 37.6-41.7 37.2c-1.1 0-2-.1-2.9-.1c-5.1 0-6-4-8.9-17.1c-2.6-12.1-6.9-32-17.9-63.6C271.4-2.5 211.4 13.9 165.9 41.1C110.6 74.2 131.5 143 146.1 190.5c.7 2.2 1.4 4.4 2 6.6c-4 4-13.8 7.5-26 11.9c-12.1 4.3-26.6 9.5-40.3 16.9C47.9 243.9 11.5 274.9 2 288.5C.7 277.8 0 267 0 256C0 114.6 114.6 0 256 0c51.4 0 99.4 15.2 139.5 41.3zM58.9 189.6c-1.5-2-4.5-3-6.4-1.5s-3 4.5-1.5 6.4s4.5 3 6.4 1.5c2.5-1.5 3-4.5 1.5-6.4zM327.3 64.9c2-1.5 5-.5 6.4 1.5c1.5 2.5 1 5.4-1.5 6.4c-2 1.5-5 .5-6.4-1.5s-.5-5 1.5-6.4zM95.1 105c-.5 1.5 .5 3 2 3c1.5 .5 3-.5 3-2c.5-1.5-.5-3-2-3s-3 .5-3 2zm84.7-.5c-3.5-43.1 37.1-54 37.1-54c44.1-15.4 56 5.9 66.4 37.6s3 42.6-38.6 58.9s-61.9-4.5-64.9-42.6zm89.6 14.9h1c2.5 0 5-2 5-5c2-6.9 1-14.4-2-20.8c-1.5-2-4-3.5-6.4-2.5c-3 1-4.5 4-3.5 6.9c2 4.5 3 9.9 1.5 14.9c-.5 3 1.5 5.9 4.5 6.4zm-9.9-41.6c-2 0-4-1-5-3s-2-3.5-3-5c-2-2-2-5.4 0-7.4s5.4-2 7.4 0c2 2.5 3.5 5 5 7.4s.5 5.9-2.5 7.4c-.6 0-1 .2-1.3 .3c-.2 .1-.4 .2-.6 .2z\"],\"square-whatsapp\":[448,512,[\"whatsapp-square\"],\"f40c\",\"M92.1 254.6c0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6L152 365.2l4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8c0-35.2-15.2-68.3-40.1-93.2c-25-25-58-38.7-93.2-38.7c-72.7 0-131.8 59.1-131.9 131.8zM274.8 330c-12.6 1.9-22.4 .9-47.5-9.9c-36.8-15.9-61.8-51.5-66.9-58.7c-.4-.6-.7-.9-.8-1.1c-2-2.6-16.2-21.5-16.2-41c0-18.4 9-27.9 13.2-32.3c.3-.3 .5-.5 .7-.8c3.6-4 7.9-5 10.6-5c2.6 0 5.3 0 7.6 .1c.3 0 .5 0 .8 0c2.3 0 5.2 0 8.1 6.8c1.2 2.9 3 7.3 4.9 11.8c3.3 8 6.7 16.3 7.3 17.6c1 2 1.7 4.3 .3 6.9c-3.4 6.8-6.9 10.4-9.3 13c-3.1 3.2-4.5 4.7-2.3 8.6c15.3 26.3 30.6 35.4 53.9 47.1c4 2 6.3 1.7 8.6-1c2.3-2.6 9.9-11.6 12.5-15.5c2.6-4 5.3-3.3 8.9-2s23.1 10.9 27.1 12.9c.8 .4 1.5 .7 2.1 1c2.8 1.4 4.7 2.3 5.5 3.6c.9 1.9 .9 9.9-2.4 19.1c-3.3 9.3-19.1 17.7-26.7 18.8zM448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM148.1 393.9L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5c29.9 30 47.9 69.8 47.9 112.2c0 87.4-72.7 158.5-160.1 158.5c-26.6 0-52.7-6.7-75.8-19.3z\"],\"node-js\":[448,512,[],\"f3d3\",\"M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z\"],\"edge-legacy\":[512,512,[],\"e078\",\"M25.71,228.16l.35-.48c0,.16,0,.32-.07.48Zm460.58,15.51c0-44-7.76-84.46-28.81-122.4C416.5,47.88,343.91,8,258.89,8,119,7.72,40.62,113.21,26.06,227.68c42.42-61.31,117.07-121.38,220.37-125,0,0,109.67,0,99.42,105H170c6.37-37.39,18.55-59,34.34-78.93-75.05,34.9-121.85,96.1-120.75,188.32.83,71.45,50.13,144.84,120.75,172,83.35,31.84,192.77,7.2,240.13-21.33V363.31C363.6,419.8,173.6,424.23,172.21,295.74H486.29V243.67Z\"],slack:[448,512,[62447,\"slack-hash\"],\"f198\",\"M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z\"],medrt:[544,512,[],\"f3c8\",\"M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z\"],usb:[640,512,[],\"f287\",\"M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z\"],tumblr:[320,512,[],\"f173\",\"M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z\"],vaadin:[448,512,[],\"f408\",\"M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z\"],quora:[448,512,[],\"f2c4\",\"M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z\"],\"square-x-twitter\":[448,512,[],\"e61a\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm297.1 84L257.3 234.6 379.4 396H283.8L209 298.1 123.3 396H75.8l111-126.9L69.7 116h98l67.7 89.5L313.6 116h47.5zM323.3 367.6L153.4 142.9H125.1L296.9 367.6h26.3z\"],reacteurope:[576,512,[],\"f75d\",\"M250.6 211.74l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0-4.2-3.4h-6.9a3.68 3.68 0 0 0-4 3.4l-11 59.2c-.5 2.7.9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5.04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0-2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.42 364.42 0 0 0-35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.83 587.83 0 0 0-84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2.1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0-93.9.9 547.76 547.76 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.25 598.25 0 0 0-50.7 64.2 569.69 569.69 0 0 0-84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.38 695.38 0 0 0 93.9-.9 547.76 547.76 0 0 1-42.2 52.4q5.1 5.25 10.2 10.2a588.47 588.47 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1-10.7-5.7l-.1.1a19.61 19.61 0 0 1-5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1-72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1-6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.91 711.91 0 0 1-112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1-3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.81 548.81 0 0 1-72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4.2-8.4-1a17.58 17.58 0 0 1-6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.64c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.72 711.72 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1.1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.71 359.71 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0-1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0-1.9-1.9H309a1.81 1.81 0 0 0-2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0-2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0-2-2.06zm-7.4-99.4L286 192l-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z\"],medium:[640,512,[62407,\"medium-m\"],\"f23a\",\"M180.5,74.262C80.813,74.262,0,155.633,0,256S80.819,437.738,180.5,437.738,361,356.373,361,256,280.191,74.262,180.5,74.262Zm288.25,10.646c-49.845,0-90.245,76.619-90.245,171.095s40.406,171.1,90.251,171.1,90.251-76.619,90.251-171.1H559C559,161.5,518.6,84.908,468.752,84.908Zm139.506,17.821c-17.526,0-31.735,68.628-31.735,153.274s14.2,153.274,31.735,153.274S640,340.631,640,256C640,171.351,625.785,102.729,608.258,102.729Z\"],amilia:[448,512,[],\"f36d\",\"M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z\"],mixcloud:[640,512,[],\"f289\",\"M212.98 346.566H179.789V195.114L185.973 173.47H175.262L137.127 346.566H76.1069L37.7323 173.47H27.276L33.1913 195.114V346.566H0V165H65.6506L102.248 338.096H110.747L147.329 165H212.98L212.98 346.566ZM544.459 283.589L458.434 345.655V307.534L531.329 255.776L458.434 204.017V165.896L544.459 228.231H553.721L640 165.896V204.017L566.866 255.776L640 307.549V345.655L553.721 283.589H544.459ZM430.157 272.311H248.113V239.255H430.157V272.311Z\"],flipboard:[448,512,[],\"f44d\",\"M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z\"],viacoin:[384,512,[],\"f237\",\"M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z\"],\"critical-role\":[448,512,[],\"f6c9\",\"M225.82 0c.26.15 216.57 124.51 217.12 124.72 3 1.18 3.7 3.46 3.7 6.56q-.11 125.17 0 250.36a5.88 5.88 0 0 1-3.38 5.78c-21.37 12-207.86 118.29-218.93 124.58h-3C142 466.34 3.08 386.56 2.93 386.48a3.29 3.29 0 0 1-1.88-3.24c0-.87 0-225.94-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.11 213.2 6 224.07 0zM215.4 20.42l-.22-.16Q118.06 75.55 21 130.87c0 .12.08.23.13.35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.43c.88-1.41 64.07-110.91 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4.09 1.48.22.78 1.42-41.19 71.33-36.4 63-67.48 116.94-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82.29 26.21.15 25.27 1 32.66.52 4.37 2.16 4.2 9.69 4.81 3.14.26 3.88 4.08.52 4.92-1.57.39-31.6.51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16.81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4.88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06.89.13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5.2 1.48 1.33 0 .11.88 26.69.87 26.8-.05 1.52.67 1.62 1.89 1.62h186.71Q386.51 304.6 346 234.33c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.06V138c-1.72.5-103.3 38.72-105.76 39.68-1.08.42-1.55.2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13.65-1.39.1 0 95.53-35.85 103-38.77-65.42-37.57-130.56-75-196-112.6l86.82 150.39-.28.33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.71-82-142.16-9.1 14.67-83.56 146.21-85.37 146.32-2.93.17-5.88.08-9.25.08q43.25-74.74 86.18-149zm51.93 129.92a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53.2 2.6 1.92 0 .11.07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.11 0 .89.52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75.13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.35.05-1.08-.62-1.16-1.35-1.15-32.35.52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95.23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85.68-27.49.58-22.59 1-29.55a2.69 2.69 0 0 0-1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0-2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9.43 1.12 1.24 1.11.1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76.31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1-1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1-2.66-1.79c2.38-3.75 5.89.92 5.86-6.14-.08-25.75.21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05.72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73.95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42.26 4.73.45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49.53 1 3.38 0 .05-.16 0-.24 0-3.61.26-3.94 1-4 4.62-.27 43.93.07 40.23.41 42.82.11.84.27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37.08-20.74 0-31.11.07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37.88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57.83 3.55zm275-10.15c-1.21 7.13.17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1-3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0-2-1.44 138 138 0 0 0-14.58.07 2.23 2.23 0 0 0-1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72.66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61.13 4-1.11 4.13-4.29.09-1.87.08 1.17.07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06.21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0-2.66 2.83c-.07 1.63-.19 38.89.29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25.43 14.92.44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.72 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11.38 37.19-.65 1.68-.19 2.38.24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31.34 15.69-1.52.47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58.32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64.48 14.4 0 16.43-5.71.84-2.37 3.5-1.77 3.18.58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.52c2.46.61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1.57 11.89-6 12.75-1.6.21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.14c3.28 0 3.66 3 .16 3.43-2.61.32-5-.42-5 5.46 0 2-.19 29.05.4 41.45.11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76.84 2.76 1.08.35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94.4 5.13-2.8 1-15.87.57-44.65.34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22.34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61.1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09.41-3.15 1.29 0 20.19-.41 21.17.21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.27a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.57 197.42-112.51-.14-.43 11.26-.18-181.52-.27-1.22 0-1.57.37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1-1.36 7.71c-.55 1.83.38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1-2-10.79c.16-2.46.8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.32 102.57 196 112.76zm-90.9-188.75c0 2.4.36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51.05 8.04.01 11.61.02 41.65zm105.75-15.05c0 2.13 1.07 38.68 1.09 39.13.34 9.94-25.58 5.77-25.23-2.59.08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1-.36.12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88.07-14.91zm-80.15 103.83c0 1.8.41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81.05 4.5-.03 13.68.02 18.59zm212.32 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z\"],sitrox:[448,512,[],\"e44a\",\"M212.439 0.00846128V0H448V128H64C64 57.6008 141.755 0.475338 212.439 0.00846128ZM237.256 192V192.007C307.135 192.475 384 249.6 384 320H210.809V319.995C140.915 319.563 64 262.424 64 192H237.256ZM235.565 511.993C306.251 511.521 384 454.399 384 384H0V512H235.565V511.993Z\"],discourse:[448,512,[],\"f393\",\"M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z\"],joomla:[448,512,[],\"f1aa\",\"M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z\"],mastodon:[448,512,[],\"f4f6\",\"M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z\"],airbnb:[448,512,[],\"f834\",\"M224 373.12c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.61-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.15 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.07 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.72-231.18 115.87-241.56 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.48 114.84 239.09 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.12C280.27 35.93 273.13 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.19 22 349.81-3.22 419.14 48.74 480 111.63 480c21.71 0 60.61-6.06 112.37-62.4 58.68 63.78 101.26 62.4 112.37 62.4 62.89.05 114.85-60.86 89.61-130.19.02-3.89-16.82-38.9-16.82-39.58z\"],\"wolf-pack-battalion\":[512,512,[],\"f514\",\"M267.73 471.53l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.21 456.43 239.73l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.18l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.79l-58 38.71-3.52 93.25L369.78 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.33 59.82-3.52-93.25-58.06-38.71C185 65.1 135.77 22.87 95.3 0c-17.54 61.12-4.4 118.76 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.35 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.06 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1-18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.68 376.52L181.52 366c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z\"],\"buy-n-large\":[576,512,[],\"f8a6\",\"M288 32C133.27 32 7.79 132.32 7.79 256S133.27 480 288 480s280.21-100.32 280.21-224S442.73 32 288 32zm-85.39 357.19L64.1 390.55l77.25-290.74h133.44c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1-1.5 6.85 77.39 77.39 0 0 0-17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.71 61.52zM358 207.11h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.86 182.08H306.79L322.63 328a78.8 78.8 0 0 0 11.47.83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.36h103.87zM211.7 269.39H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.71h21.37c18 0 35.38-14.64 39.21-30.14C265.23 168.71 251.07 170 233 170z\"],gulp:[256,512,[],\"f3ae\",\"M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z\"],\"creative-commons-sampling-plus\":[496,512,[],\"f4f1\",\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z\"],strava:[384,512,[],\"f428\",\"M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z\"],ember:[640,512,[],\"f423\",\"M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z\"],\"canadian-maple-leaf\":[512,512,[],\"f785\",\"M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z\"],teamspeak:[576,512,[],\"f4f9\",\"M152.8 37.2c-32.2 38.1-56.1 82.6-69.9 130.5c0 .2-.1 .3-.1 .5C43.5 184.4 16 223 16 268c0 59.6 48.4 108 108 108s108-48.4 108-108c0-53.5-38.9-97.9-90-106.5c15.7-41.8 40.4-79.6 72.3-110.7c1.8-1.6 4-2.6 6.3-3.1c37.2-11.5 76.7-13.3 114.8-5.2C454.7 67.6 534 180.7 517.1 301.3c-8.4 62.6-38.6 112.7-87.7 151.4c-50.1 39.7-107.5 54.3-170.2 52.2l-24-1c12.4 2.8 25 4.9 37.6 6.3c40.7 4.2 81.4 2.1 120.1-12.5c94-35.5 149.3-102.3 162.9-202.5c4.8-52.6-5.8-105.4-30.8-152C454.6 11.3 290.8-38.4 159 32c-2.4 1.4-4.5 3.1-6.3 5.2zM309.4 433.9c-2.1 11.5-4.2 21.9-14.6 31.3c53.2-1 123.2-29.2 161.8-97.1c39.7-69.9 37.6-139.9-6.3-207.8C413.8 105 360.5 77.9 293.7 73.7c1.5 2.3 3.2 4.4 5.2 6.3l5.2 6.3c25.1 31.3 37.6 67.9 42.8 107.5c2.1 15.7-1 30.3-13.6 41.8c-4.2 3.1-5.2 6.3-4.2 10.4l7.3 17.7L365.7 318c5.2 11.5 4.2 19.8-6.3 28.2c-3.2 2.5-6.7 4.6-10.4 6.3l-18.8 8.4 3.1 13.6c3.1 6.3 1 12.5-3.1 17.7c-2.5 2.4-3.8 5.9-3.1 9.4c2.1 11.5-2.1 19.8-12.5 25.1c-2.1 1-4.2 5.2-5.2 7.3zm-133.6-3.1c16.7 11.5 34.5 20.9 53.2 26.1c24 5.2 41.8-6.3 44.9-30.3c1-8.4 5.2-14.6 12.5-17.7c7.3-4.2 8.4-7.3 2.1-13.6l-9.4-8.4 13.6-4.2c6.3-2.1 7.3-5.2 5.2-11.5c-1.4-3-2.4-6.2-3.1-9.4c-3.1-14.6-2.1-15.7 11.5-18.8c8.4-3.1 15.7-6.3 21.9-12.5c3.1-2.1 3.1-4.2 1-8.4l-16.7-30.3c-1-1.9-2.1-3.8-3.1-5.7c-6.4-11.7-13-23.6-15.7-37.1c-2.1-9.4-1-17.7 8.4-24c5.2-4.2 8.4-9.4 8.4-16.7c-.4-10.1-1.5-20.3-3.1-30.3c-6.3-37.6-23-68.9-51.2-95c-5.2-4.2-9.4-6.3-16.7-4.2L203.9 91.5c2 1.2 4 2.4 6 3.6l0 0c6.3 3.7 12.2 7.3 17 12.1c30.3 26.1 41.8 61.6 45.9 100.2c1 8.4 0 16.7-7.3 21.9c-8.4 5.2-10.4 12.5-7.3 20.9c4.9 13.2 10.4 26 16.7 38.6L291.6 318c-6.3 8.4-13.6 11.5-21.9 14.6c-12.5 3.1-14.6 7.3-10.4 20.9c.6 1.5 1.4 2.8 2.1 4.2c2.1 5.2 1 8.4-4.2 10.4l-12.5 3.1 5.2 4.2 4.2 4.2c4.2 5.2 4.2 8.4-2.1 10.4c-7.3 4.2-11.5 9.4-11.5 17.7c0 12.5-7.3 19.8-18.8 24c-3.8 1-7.6 1.5-11.5 1l-34.5-2.1z\"],pushed:[432,512,[],\"f3e1\",\"M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z\"],\"wordpress-simple\":[512,512,[],\"f411\",\"M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z\"],nutritionix:[400,512,[],\"f3d6\",\"M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z\"],wodu:[640,512,[],\"e088\",\"M178.414 339.706H141.1L112.166 223.475h-.478L83.228 339.706H45.2L0 168.946H37.548L64.574 285.177h.478L94.707 168.946h35.157l29.178 117.667h.479L187.5 168.946h36.831zM271.4 212.713c38.984 0 64.1 25.828 64.1 65.291 0 39.222-25.111 65.05-64.1 65.05-38.743 0-63.855-25.828-63.855-65.05C207.547 238.541 232.659 212.713 271.4 212.713zm0 104.753c23.2 0 30.133-19.852 30.133-39.462 0-19.852-6.934-39.7-30.133-39.7-27.7 0-29.894 19.85-29.894 39.7C241.508 297.614 248.443 317.466 271.4 317.466zM435.084 323.922h-.478c-7.893 13.392-21.765 19.132-37.548 19.132-37.31 0-55.485-32.045-55.485-66.246 0-33.243 18.415-64.095 54.767-64.095 14.589 0 28.938 6.218 36.831 18.416h.24V168.946h33.96v170.76H435.084zM405.428 238.3c-22.24 0-29.894 19.134-29.894 39.463 0 19.371 8.848 39.7 29.894 39.7 22.482 0 29.178-19.613 29.178-39.94C434.606 257.436 427.432 238.3 405.428 238.3zM592.96 339.706H560.673V322.487h-.718c-8.609 13.87-23.436 20.567-37.786 20.567-36.113 0-45.2-20.328-45.2-50.941V216.061h33.959V285.9c0 20.329 5.979 30.372 21.765 30.372 18.415 0 26.306-10.283 26.306-35.393V216.061H592.96zM602.453 302.876H640v36.83H602.453z\"],\"google-pay\":[640,512,[],\"e079\",\"M105.72,215v41.25h57.1a49.66,49.66,0,0,1-21.14,32.6c-9.54,6.55-21.72,10.28-36,10.28-27.6,0-50.93-18.91-59.3-44.22a65.61,65.61,0,0,1,0-41l0,0c8.37-25.46,31.7-44.37,59.3-44.37a56.43,56.43,0,0,1,40.51,16.08L176.47,155a101.24,101.24,0,0,0-70.75-27.84,105.55,105.55,0,0,0-94.38,59.11,107.64,107.64,0,0,0,0,96.18v.15a105.41,105.41,0,0,0,94.38,59c28.47,0,52.55-9.53,70-25.91,20-18.61,31.41-46.15,31.41-78.91A133.76,133.76,0,0,0,205.38,215Zm389.41-4c-10.13-9.38-23.93-14.14-41.39-14.14-22.46,0-39.34,8.34-50.5,24.86l20.85,13.26q11.45-17,31.26-17a34.05,34.05,0,0,1,22.75,8.79A28.14,28.14,0,0,1,487.79,248v5.51c-9.1-5.07-20.55-7.75-34.64-7.75-16.44,0-29.65,3.88-39.49,11.77s-14.82,18.31-14.82,31.56a39.74,39.74,0,0,0,13.94,31.27c9.25,8.34,21,12.51,34.79,12.51,16.29,0,29.21-7.3,39-21.89h1v17.72h22.61V250C510.25,233.45,505.26,220.34,495.13,211ZM475.9,300.3a37.32,37.32,0,0,1-26.57,11.16A28.61,28.61,0,0,1,431,305.21a19.41,19.41,0,0,1-7.77-15.63c0-7,3.22-12.81,9.54-17.42s14.53-7,24.07-7C470,265,480.3,268,487.64,273.94,487.64,284.07,483.68,292.85,475.9,300.3Zm-93.65-142A55.71,55.71,0,0,0,341.74,142H279.07V328.74H302.7V253.1h39c16,0,29.5-5.36,40.51-15.93.88-.89,1.76-1.79,2.65-2.68A54.45,54.45,0,0,0,382.25,158.26Zm-16.58,62.23a30.65,30.65,0,0,1-23.34,9.68H302.7V165h39.63a32,32,0,0,1,22.6,9.23A33.18,33.18,0,0,1,365.67,220.49ZM614.31,201,577.77,292.7h-.45L539.9,201H514.21L566,320.55l-29.35,64.32H561L640,201Z\"],intercom:[448,512,[],\"f7af\",\"M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z\"],zhihu:[640,512,[],\"f63f\",\"M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z\"],korvue:[446,512,[],\"f42f\",\"M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z\"],pix:[512,512,[],\"e43a\",\"M242.4 292.5C247.8 287.1 257.1 287.1 262.5 292.5L339.5 369.5C353.7 383.7 372.6 391.5 392.6 391.5H407.7L310.6 488.6C280.3 518.1 231.1 518.1 200.8 488.6L103.3 391.2H112.6C132.6 391.2 151.5 383.4 165.7 369.2L242.4 292.5zM262.5 218.9C256.1 224.4 247.9 224.5 242.4 218.9L165.7 142.2C151.5 127.1 132.6 120.2 112.6 120.2H103.3L200.7 22.76C231.1-7.586 280.3-7.586 310.6 22.76L407.8 119.9H392.6C372.6 119.9 353.7 127.7 339.5 141.9L262.5 218.9zM112.6 142.7C126.4 142.7 139.1 148.3 149.7 158.1L226.4 234.8C233.6 241.1 243 245.6 252.5 245.6C261.9 245.6 271.3 241.1 278.5 234.8L355.5 157.8C365.3 148.1 378.8 142.5 392.6 142.5H430.3L488.6 200.8C518.9 231.1 518.9 280.3 488.6 310.6L430.3 368.9H392.6C378.8 368.9 365.3 363.3 355.5 353.5L278.5 276.5C264.6 262.6 240.3 262.6 226.4 276.6L149.7 353.2C139.1 363 126.4 368.6 112.6 368.6H80.78L22.76 310.6C-7.586 280.3-7.586 231.1 22.76 200.8L80.78 142.7H112.6z\"],\"steam-symbol\":[448,512,[],\"f3f6\",\"M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z\"]};!function(c){try{for(var l=arguments.length,s=new Array(1<l?l-1:0),a=1;a<l;a++)s[a-1]=arguments[a];c.apply(void 0,s)}catch(c){if(!h)throw c}}(function(){d(\"fab\",p),d(\"fa-brands\",p)})}(),function(){\"use strict\";var c={},l={};try{\"undefined\"!=typeof window&&(c=window),\"undefined\"!=typeof document&&(l=document)}catch(c){}var s=(c.navigator||{}).userAgent,a=void 0===s?\"\":s,z=c,e=l;z.document,e.documentElement&&e.head&&\"function\"==typeof e.addEventListener&&e.createElement,~a.indexOf(\"MSIE\")||a.indexOf(\"Trident/\");function H(l,c){var s,a=Object.keys(l);return Object.getOwnPropertySymbols&&(s=Object.getOwnPropertySymbols(l),c&&(s=s.filter(function(c){return Object.getOwnPropertyDescriptor(l,c).enumerable})),a.push.apply(a,s)),a}function t(l){for(var c=1;c<arguments.length;c++){var s=null!=arguments[c]?arguments[c]:{};c%2?H(Object(s),!0).forEach(function(c){V(l,c,s[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(l,Object.getOwnPropertyDescriptors(s)):H(Object(s)).forEach(function(c){Object.defineProperty(l,c,Object.getOwnPropertyDescriptor(s,c))})}return l}function V(c,l,s){return l in c?Object.defineProperty(c,l,{value:s,enumerable:!0,configurable:!0,writable:!0}):c[l]=s,c}function r(c,l){(null==l||l>c.length)&&(l=c.length);for(var s=0,a=new Array(l);s<l;s++)a[s]=c[s];return a}var M=\"___FONT_AWESOME___\",h=function(){try{return!0}catch(c){return!1}}(),n=\"classic\",i=\"sharp\",m=[n,i];function o(c){return new Proxy(c,{get:function(c,l){return l in c?c[l]:c[n]}})}o((V(C={},n,{fa:\"solid\",fas:\"solid\",\"fa-solid\":\"solid\",far:\"regular\",\"fa-regular\":\"regular\",fal:\"light\",\"fa-light\":\"light\",fat:\"thin\",\"fa-thin\":\"thin\",fad:\"duotone\",\"fa-duotone\":\"duotone\",fab:\"brands\",\"fa-brands\":\"brands\",fak:\"kit\",fakd:\"kit\",\"fa-kit\":\"kit\",\"fa-kit-duotone\":\"kit\"}),V(C,i,{fa:\"solid\",fass:\"solid\",\"fa-solid\":\"solid\",fasr:\"regular\",\"fa-regular\":\"regular\",fasl:\"light\",\"fa-light\":\"light\",fast:\"thin\",\"fa-thin\":\"thin\"}),C));var f=o((V(v={},n,{solid:\"fas\",regular:\"far\",light:\"fal\",thin:\"fat\",duotone:\"fad\",brands:\"fab\",kit:\"fak\"}),V(v,i,{solid:\"fass\",regular:\"fasr\",light:\"fasl\",thin:\"fast\"}),v)),e=(o((V(s={},n,{fab:\"fa-brands\",fad:\"fa-duotone\",fak:\"fa-kit\",fal:\"fa-light\",far:\"fa-regular\",fas:\"fa-solid\",fat:\"fa-thin\"}),V(s,i,{fass:\"fa-solid\",fasr:\"fa-regular\",fasl:\"fa-light\",fast:\"fa-thin\"}),s)),o((V(c={},n,{\"fa-brands\":\"fab\",\"fa-duotone\":\"fad\",\"fa-kit\":\"fak\",\"fa-light\":\"fal\",\"fa-regular\":\"far\",\"fa-solid\":\"fas\",\"fa-thin\":\"fat\"}),V(c,i,{\"fa-solid\":\"fass\",\"fa-regular\":\"fasr\",\"fa-light\":\"fasl\",\"fa-thin\":\"fast\"}),c)),o((V(l={},n,{900:\"fas\",400:\"far\",normal:\"far\",300:\"fal\",100:\"fat\"}),V(l,i,{900:\"fass\",400:\"fasr\",300:\"fasl\",100:\"fast\"}),l)),[1,2,3,4,5,6,7,8,9,10]),a=e.concat([11,12,13,14,15,16,17,18,19,20]),C=\"duotone-group\",v=\"swap-opacity\",s=\"primary\",c=\"secondary\",l=new Set;Object.keys(f[n]).map(l.add.bind(l)),Object.keys(f[i]).map(l.add.bind(l));[].concat(m,function(c){if(Array.isArray(c))return r(c)}(l=l)||function(c){if(\"undefined\"!=typeof Symbol&&null!=c[Symbol.iterator]||null!=c[\"@@iterator\"])return Array.from(c)}(l)||function(c,l){if(c){if(\"string\"==typeof c)return r(c,l);var s=Object.prototype.toString.call(c).slice(8,-1);return\"Map\"===(s=\"Object\"===s&&c.constructor?c.constructor.name:s)||\"Set\"===s?Array.from(c):\"Arguments\"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?r(c,l):void 0}}(l)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}(),[\"2xs\",\"xs\",\"sm\",\"lg\",\"xl\",\"2xl\",\"beat\",\"border\",\"fade\",\"beat-fade\",\"bounce\",\"flip-both\",\"flip-horizontal\",\"flip-vertical\",\"flip\",\"fw\",\"inverse\",\"layers-counter\",\"layers-text\",\"layers\",\"li\",\"pull-left\",\"pull-right\",\"pulse\",\"rotate-180\",\"rotate-270\",\"rotate-90\",\"rotate-by\",\"shake\",\"spin-pulse\",\"spin-reverse\",\"spin\",\"stack-1x\",\"stack-2x\",\"stack\",\"ul\",C,v,s,c]).concat(e.map(function(c){return\"\".concat(c,\"x\")})).concat(a.map(function(c){return\"w-\".concat(c)}));z=z||{};z[M]||(z[M]={}),z[M].styles||(z[M].styles={}),z[M].hooks||(z[M].hooks={}),z[M].shims||(z[M].shims=[]);var L=z[M];function u(a){return Object.keys(a).reduce(function(c,l){var s=a[l];return!!s.icon?c[s.iconName]=s.icon:c[l]=s,c},{})}function d(c,l,s){var a=(2<arguments.length&&void 0!==s?s:{}).skipHooks,s=void 0!==a&&a,a=u(l);\"function\"!=typeof L.hooks.addPack||s?L.styles[c]=t(t({},L.styles[c]||{}),a):L.hooks.addPack(c,u(l)),\"fas\"===c&&d(\"fa\",l)}var p={\"trash-can\":[448,512,[61460,\"trash-alt\"],\"f2ed\",\"M170.5 51.6L151.5 80h145l-19-28.4c-1.5-2.2-4-3.6-6.7-3.6H177.1c-2.7 0-5.2 1.3-6.7 3.6zm147-26.6L354.2 80H368h48 8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8V432c0 44.2-35.8 80-80 80H112c-44.2 0-80-35.8-80-80V128H24c-13.3 0-24-10.7-24-24S10.7 80 24 80h8H80 93.8l36.7-55.1C140.9 9.4 158.4 0 177.1 0h93.7c18.7 0 36.2 9.4 46.6 24.9zM80 128V432c0 17.7 14.3 32 32 32H336c17.7 0 32-14.3 32-32V128H80zm80 64V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16z\"],message:[512,512,[\"comment-alt\"],\"f27a\",\"M160 368c26.5 0 48 21.5 48 48v16l72.5-54.4c8.3-6.2 18.4-9.6 28.8-9.6H448c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16V352c0 8.8 7.2 16 16 16h96zm48 124l-.2 .2-5.1 3.8-17.1 12.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V474.7v-6.4V468v-4V416H112 64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L208 492z\"],\"file-lines\":[384,512,[128441,128462,61686,\"file-alt\",\"file-text\"],\"f15c\",\"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm56 256c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H120z\"],\"calendar-days\":[448,512,[\"calendar-alt\"],\"f073\",\"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192h80v56H48V192zm0 104h80v64H48V296zm128 0h96v64H176V296zm144 0h80v64H320V296zm80-48H320V192h80v56zm0 160v40c0 8.8-7.2 16-16 16H320V408h80zm-128 0v56H176V408h96zm-144 0v56H64c-8.8 0-16-7.2-16-16V408h80zM272 248H176V192h96v56z\"],\"hand-point-right\":[512,512,[],\"f0a4\",\"M448 128l-177.6 0c1 5.2 1.6 10.5 1.6 16l0 16 32 0 144 0c8.8 0 16-7.2 16-16s-7.2-16-16-16zM224 144c0-17.7-14.3-32-32-32c0 0 0 0 0 0l-24 0c-66.3 0-120 53.7-120 120l0 48c0 52.5 33.7 97.1 80.7 113.4c-.5-3.1-.7-6.2-.7-9.4c0-20 9.2-37.9 23.6-49.7c-4.9-9-7.6-19.4-7.6-30.3c0-15.1 5.3-29 14-40c-8.8-11-14-24.9-14-40l0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40c0 8.8 7.2 16 16 16s16-7.2 16-16l0-40 0-40zM192 64s0 0 0 0c18 0 34.6 6 48 16l208 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-82 0c1.3 5.1 2 10.5 2 16c0 25.3-14.7 47.2-36 57.6c2.6 7 4 14.5 4 22.4c0 20-9.2 37.9-23.6 49.7c4.9 9 7.6 19.4 7.6 30.3c0 35.3-28.7 64-64 64l-64 0-24 0C75.2 448 0 372.8 0 280l0-48C0 139.2 75.2 64 168 64l24 0zm64 336c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0zm16-176c0 5.5-.7 10.9-2 16l2 0 32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0 16zm-24 64l-40 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-24 0z\"],\"face-smile-beam\":[512,512,[128522,\"smile-beam\"],\"f5b8\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zm40-89.3l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"],\"face-grin-stars\":[512,512,[129321,\"grin-stars\"],\"f587\",\"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM183.2 132.6c-1.3-2.8-4.1-4.6-7.2-4.6s-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L176 240.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L242.4 186c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7zm160 0c-1.3-2.8-4.1-4.6-7.2-4.6s-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L336 240.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L402.4 186c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7zm6.3 175.8c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c24.6 38.1 68.7 63.5 119.1 63.5s94.5-25.4 119.1-63.5c10.4-16.1-6.8-32.5-25.5-28.1z\"],\"address-book\":[512,512,[62138,\"contact-book\"],\"f2b9\",\"M384 48c8.8 0 16 7.2 16 16V448c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H384zM96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM240 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H208zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z\"],comments:[640,512,[128490,61670],\"f086\",\"M88.2 309.1c9.8-18.3 6.8-40.8-7.5-55.8C59.4 230.9 48 204 48 176c0-63.5 63.8-128 160-128s160 64.5 160 128s-63.8 128-160 128c-13.1 0-25.8-1.3-37.8-3.6c-10.4-2-21.2-.6-30.7 4.2c-4.1 2.1-8.3 4.1-12.6 6c-16 7.2-32.9 13.5-49.9 18c2.8-4.6 5.4-9.1 7.9-13.6c1.1-1.9 2.2-3.9 3.2-5.9zM0 176c0 41.8 17.2 80.1 45.9 110.3c-.9 1.7-1.9 3.5-2.8 5.1c-10.3 18.4-22.3 36.5-36.6 52.1c-6.6 7-8.3 17.2-4.6 25.9C5.8 378.3 14.4 384 24 384c43 0 86.5-13.3 122.7-29.7c4.8-2.2 9.6-4.5 14.2-6.8c15.1 3 30.9 4.5 47.1 4.5c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176zM432 480c16.2 0 31.9-1.6 47.1-4.5c4.6 2.3 9.4 4.6 14.2 6.8C529.5 498.7 573 512 616 512c9.6 0 18.2-5.7 22-14.5c3.8-8.8 2-19-4.6-25.9c-14.2-15.6-26.2-33.7-36.6-52.1c-.9-1.7-1.9-3.4-2.8-5.1C622.8 384.1 640 345.8 640 304c0-94.4-87.9-171.5-198.2-175.8c4.1 15.2 6.2 31.2 6.2 47.8l0 .6c87.2 6.7 144 67.5 144 127.4c0 28-11.4 54.9-32.7 77.2c-14.3 15-17.3 37.6-7.5 55.8c1.1 2 2.2 4 3.2 5.9c2.5 4.5 5.2 9 7.9 13.6c-17-4.5-33.9-10.7-49.9-18c-4.3-1.9-8.5-3.9-12.6-6c-9.5-4.8-20.3-6.2-30.7-4.2c-12.1 2.4-24.7 3.6-37.8 3.6c-61.7 0-110-26.5-136.8-62.3c-16 5.4-32.8 9.4-50 11.8C279 439.8 350 480 432 480z\"],paste:[512,512,[\"file-clipboard\"],\"f0ea\",\"M104.6 48H64C28.7 48 0 76.7 0 112V384c0 35.3 28.7 64 64 64h96V400H64c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H80c0 17.7 14.3 32 32 32h72.4C202 108.4 227.6 96 256 96h62c-7.1-27.6-32.2-48-62-48H215.4C211.6 20.9 188.2 0 160 0s-51.6 20.9-55.4 48zM144 56a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM448 464H256c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16l140.1 0L464 243.9V448c0 8.8-7.2 16-16 16zM256 512H448c35.3 0 64-28.7 64-64V243.9c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1H256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64z\"],\"face-grin-tongue-squint\":[512,512,[128541,\"grin-tongue-squint\"],\"f58a\",\"M464 256c0-114.9-93.1-208-208-208S48 141.1 48 256c0 81.7 47.1 152.4 115.7 186.4c-2.4-8.4-3.7-17.3-3.7-26.4V392.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V416c0 9.2-1.3 18-3.7 26.4C416.9 408.4 464 337.7 464 256zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm116-98.9c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 416V378.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V416c0 35.3 28.7 64 64 64s64-28.7 64-64z\"],\"face-flushed\":[512,512,[128563,\"flushed\"],\"f579\",\"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM160.4 248a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm216-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 336c-13.3 0-24 10.7-24 24s10.7 24 24 24H320c13.3 0 24-10.7 24-24s-10.7-24-24-24H192zM160 176a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm144-80a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 0a80 80 0 1 0 -160 0 80 80 0 1 0 160 0z\"],\"square-caret-right\":[448,512,[\"caret-square-right\"],\"f152\",\"M400 96c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320zM384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"],\"square-minus\":[448,512,[61767,\"minus-square\"],\"f146\",\"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM152 232H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"],compass:[512,512,[129517],\"f14e\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm306.7 69.1L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"],\"square-caret-down\":[448,512,[\"caret-square-down\"],\"f150\",\"M384 432c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0zm64-16c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"],\"face-kiss-beam\":[512,512,[128537,\"kiss-beam\"],\"f597\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm304.7 41.7c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 427.1 257.4 432 240 432c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-68.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"],lightbulb:[384,512,[128161],\"f0eb\",\"M297.2 248.9C311.6 228.3 320 203.2 320 176c0-70.7-57.3-128-128-128S64 105.3 64 176c0 27.2 8.4 52.3 22.8 72.9c3.7 5.3 8.1 11.3 12.8 17.7l0 0c12.9 17.7 28.3 38.9 39.8 59.8c10.4 19 15.7 38.8 18.3 57.5H109c-2.2-12-5.9-23.7-11.8-34.5c-9.9-18-22.2-34.9-34.5-51.8l0 0 0 0c-5.2-7.1-10.4-14.2-15.4-21.4C27.6 247.9 16 213.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176c0 37.3-11.6 71.9-31.4 100.3c-5 7.2-10.2 14.3-15.4 21.4l0 0 0 0c-12.3 16.8-24.6 33.7-34.5 51.8c-5.9 10.8-9.6 22.5-11.8 34.5H226.4c2.6-18.7 7.9-38.6 18.3-57.5c11.5-20.9 26.9-42.1 39.8-59.8l0 0 0 0 0 0c4.7-6.4 9-12.4 12.7-17.7zM192 128c-26.5 0-48 21.5-48 48c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16s-7.2 16-16 16zm0 384c-44.2 0-80-35.8-80-80V416H272v16c0 44.2-35.8 80-80 80z\"],flag:[448,512,[127988,61725],\"f024\",\"M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24V64 350.5 400v88c0 13.3 10.7 24 24 24s24-10.7 24-24V388l80.3-20.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L48 52V24zm0 77.5l96.6-24.2c27-6.7 55.5-3.6 80.4 8.8c54.9 27.4 118.7 29.7 175 6.8V334.7l-24.4 9.1c-33.7 12.6-71.2 10.7-103.4-5.4c-48.2-24.1-103.3-30.1-155.6-17.1L48 338.5v-237z\"],\"square-check\":[448,512,[9745,9989,61510,\"check-square\"],\"f14a\",\"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"],\"circle-dot\":[512,512,[128280,\"dot-circle\"],\"f192\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"],\"face-dizzy\":[512,512,[\"dizzy\"],\"f567\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM103 135c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9zm192 0c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9z\"],futbol:[512,512,[9917,\"futbol-ball\",\"soccer-ball\"],\"f1e3\",\"M435.4 361.3l-89.7-6c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-22 87.2c-14.4 3.2-29.4 4.8-44.8 4.8s-30.3-1.7-44.8-4.8l-22-87.2c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-89.7 6C61.7 335.9 51.9 307 49 276.2L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15L100.4 118c19.9-22.4 44.6-40.5 72.4-52.7l69.1 57.6c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l69.1-57.6c27.8 12.2 52.5 30.3 72.4 52.7l-33.4 83.4c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9L463 276.2c-3 30.8-12.7 59.7-27.6 85.1zM256 48l.9 0h-1.8l.9 0zM56.7 196.2c.9-3 1.9-6.1 2.9-9.1l-2.9 9.1zM132 423l3.8 2.7c-1.3-.9-2.5-1.8-3.8-2.7zm248.1-.1c-1.3 1-2.7 2-4 2.9l4-2.9zm75.2-226.6l-3-9.2c1.1 3 2.1 6.1 3 9.2zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"],\"pen-to-square\":[512,512,[\"edit\"],\"f044\",\"M441 58.9L453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2L344 121.9 390.1 168 255.8 302.2c-2.9 2.9-6.5 5-10.4 6.1l-58.5 16.7 16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25L175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25C446.8-3.1 401.2-3.1 373.1 25zM88 64C39.4 64 0 103.4 0 152V424c0 48.6 39.4 88 88 88H360c48.6 0 88-39.4 88-88V312c0-13.3-10.7-24-24-24s-24 10.7-24 24V424c0 22.1-17.9 40-40 40H88c-22.1 0-40-17.9-40-40V152c0-22.1 17.9-40 40-40H200c13.3 0 24-10.7 24-24s-10.7-24-24-24H88z\"],\"hourglass-half\":[384,512,[\"hourglass-2\"],\"f252\",\"M0 24C0 10.7 10.7 0 24 0H360c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8V67c0 40.3-16 79-44.5 107.5L225.9 256l81.5 81.5C336 366 352 404.7 352 445v19h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V445c0-40.3 16-79 44.5-107.5L158.1 256 76.5 174.5C48 146 32 107.3 32 67V48H24C10.7 48 0 37.3 0 24zM110.5 371.5c-3.9 3.9-7.5 8.1-10.7 12.5H284.2c-3.2-4.4-6.8-8.6-10.7-12.5L192 289.9l-81.5 81.5zM284.2 128C297 110.4 304 89 304 67V48H80V67c0 22.1 7 43.4 19.8 61H284.2z\"],\"eye-slash\":[640,512,[],\"f070\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm51.3 163.3l-41.9-33C378.8 425.4 350.7 432 320 432c-65.2 0-118.8-29.6-159.9-67.7C121.6 328.5 95 286 81.4 256c8.3-18.4 21.5-41.5 39.4-64.8L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5zm-88-69.3L302 334c-23.5-5.4-43.1-21.2-53.7-42.3l-56.1-44.2c-.2 2.8-.3 5.6-.3 8.5c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8z\"],hand:[512,512,[129306,9995,\"hand-paper\"],\"f256\",\"M256 0c-25.3 0-47.2 14.7-57.6 36c-7-2.6-14.5-4-22.4-4c-35.3 0-64 28.7-64 64V261.5l-2.7-2.7c-25-25-65.5-25-90.5 0s-25 65.5 0 90.5L106.5 437c48 48 113.1 75 181 75H296h8c1.5 0 3-.1 4.5-.4c91.7-6.2 165-79.4 171.1-171.1c.3-1.5 .4-3 .4-4.5V160c0-35.3-28.7-64-64-64c-5.5 0-10.9 .7-16 2V96c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4C303.2 14.7 281.3 0 256 0zM240 96.1c0 0 0-.1 0-.1V64c0-8.8 7.2-16 16-16s16 7.2 16 16V95.9c0 0 0 .1 0 .1V232c0 13.3 10.7 24 24 24s24-10.7 24-24V96c0 0 0 0 0-.1c0-8.8 7.2-16 16-16s16 7.2 16 16v55.9c0 0 0 .1 0 .1v80c0 13.3 10.7 24 24 24s24-10.7 24-24V160.1c0 0 0-.1 0-.1c0-8.8 7.2-16 16-16s16 7.2 16 16V332.9c-.1 .6-.1 1.3-.2 1.9c-3.4 69.7-59.3 125.6-129 129c-.6 0-1.3 .1-1.9 .2H296h-8.5c-55.2 0-108.1-21.9-147.1-60.9L52.7 315.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L119 336.4c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V96c0-8.8 7.2-16 16-16c8.8 0 16 7.1 16 15.9V232c0 13.3 10.7 24 24 24s24-10.7 24-24V96.1z\"],\"hand-spock\":[576,512,[128406],\"f259\",\"M170.2 80.8C161 47 180.8 12 214.6 2.4c34-9.6 69.4 10.2 79 44.2l30.3 107.1L337.1 84c6.6-34.7 40.1-57.5 74.8-50.9c31.4 6 53 33.9 52 64.9c10-2.6 20.8-2.8 31.5-.1c34.3 8.6 55.1 43.3 46.6 77.6L486.7 397.2C469.8 464.7 409.2 512 339.6 512c-11.2 0-22.5 0-33.7 0c-56.9 0-112.2-19-157.2-53.9l-92-71.6c-27.9-21.7-32.9-61.9-11.2-89.8s61.9-32.9 89.8-11.2l17 13.2L100.5 167.5c-13-32.9 3.2-70.1 36-83c11.1-4.4 22.7-5.4 33.7-3.7zm77.1-21.2c-2.4-8.5-11.2-13.4-19.7-11s-13.4 11.2-11 19.7l54.8 182.4c3.5 12.3-3.3 25.2-15.4 29.3s-25.3-2-30-13.9L174.9 138.1c-3.2-8.2-12.5-12.3-20.8-9s-12.3 12.5-9 20.8l73.3 185.6c12 30.3-23.7 57-49.4 37l-63.1-49.1c-7-5.4-17-4.2-22.5 2.8s-4.2 17 2.8 22.5l92 71.6c36.5 28.4 81.4 43.8 127.7 43.8c11.2 0 22.5 0 33.7 0c47.5 0 89-32.4 100.5-78.5l55.4-221.6c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-26 104C435.6 271.8 425 280 413 280c-16.5 0-28.9-15-25.8-31.2L415.7 99c1.7-8.7-4-17.1-12.7-18.7s-17.1 4-18.7 12.7L352.5 260c-2.2 11.6-12.4 20-24.2 20c-11 0-20.7-7.3-23.7-17.9L247.4 59.6z\"],\"face-kiss\":[512,512,[128535,\"kiss\"],\"f596\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm304.7 25.7c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 411.1 257.4 416 240 416c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.8-.5-.1-.1-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"face-grin-tongue\":[512,512,[128539,\"grin-tongue\"],\"f589\",\"M464 256c0-114.9-93.1-208-208-208S48 141.1 48 256c0 81.7 47.1 152.4 115.7 186.4c-2.4-8.4-3.7-17.3-3.7-26.4V363.6c-8.9-8-16.7-17.1-23.1-27.1c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5c18.7-4.4 35.9 12 25.5 28.1c-6.4 9.9-14.2 19-23 27V416c0 9.2-1.3 18-3.7 26.4C416.9 408.4 464 337.7 464 256zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 416V378.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V416c0 35.3 28.7 64 64 64s64-28.7 64-64z\"],\"chess-bishop\":[320,512,[9821],\"f43a\",\"M104 0C90.7 0 80 10.7 80 24c0 11.2 7.6 20.6 18 23.2c-7.8 8-16.1 17-24.4 27C38.2 116.7 0 178.8 0 250.9c0 44.8 24.6 72.2 48 87.8V352H96V325c0-9-5-17.2-13-21.3c-18-9.3-35-24.7-35-52.7c0-55.5 29.8-106.8 62.4-145.9c16-19.2 32.1-34.8 44.2-45.5c1.9-1.7 3.7-3.2 5.3-4.6c1.7 1.4 3.4 3 5.3 4.6c12.1 10.7 28.2 26.3 44.2 45.5c5.3 6.3 10.5 13 15.5 20L159 191c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57.8-57.8c12.8 25.9 21.2 54.3 21.2 83.8c0 28-17 43.4-35 52.7c-8 4.1-13 12.3-13 21.3v27h48V338.7c23.4-15.6 48-42.9 48-87.8c0-72.1-38.2-134.2-73.6-176.7c-8.3-9.9-16.6-19-24.4-27c10.3-2.7 18-12.1 18-23.2c0-13.3-10.7-24-24-24H160 104zM52.7 464l16.6-32H250.8l16.6 32H52.7zm207.9-80H59.5c-12 0-22.9 6.7-28.4 17.3L4.6 452.5c-3 5.8-4.6 12.2-4.6 18.7C0 493.8 18.2 512 40.8 512H279.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2c-5.5-10.6-16.5-17.3-28.4-17.3z\"],\"face-grin-wink\":[512,512,[\"grin-wink\"],\"f58c\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"],\"face-grin-wide\":[512,512,[128515,\"grin-alt\"],\"f581\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM224 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm96 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"],\"face-frown-open\":[512,512,[128550,\"frown-open\"],\"f57a\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM182.4 382.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"hand-point-up\":[384,512,[9757],\"f0a6\",\"M64 64V241.6c5.2-1 10.5-1.6 16-1.6H96V208 64c0-8.8-7.2-16-16-16s-16 7.2-16 16zM80 288c-17.7 0-32 14.3-32 32c0 0 0 0 0 0v24c0 66.3 53.7 120 120 120h48c52.5 0 97.1-33.7 113.4-80.7c-3.1 .5-6.2 .7-9.4 .7c-20 0-37.9-9.2-49.7-23.6c-9 4.9-19.4 7.6-30.3 7.6c-15.1 0-29-5.3-40-14c-11 8.8-24.9 14-40 14H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H120 80zM0 320s0 0 0 0c0-18 6-34.6 16-48V64C16 28.7 44.7 0 80 0s64 28.7 64 64v82c5.1-1.3 10.5-2 16-2c25.3 0 47.2 14.7 57.6 36c7-2.6 14.5-4 22.4-4c20 0 37.9 9.2 49.7 23.6c9-4.9 19.4-7.6 30.3-7.6c35.3 0 64 28.7 64 64v64 24c0 92.8-75.2 168-168 168H168C75.2 512 0 436.8 0 344V320zm336-64c0-8.8-7.2-16-16-16s-16 7.2-16 16v48 16c0 8.8 7.2 16 16 16s16-7.2 16-16V256zM160 240c5.5 0 10.9 .7 16 2v-2V208c0-8.8-7.2-16-16-16s-16 7.2-16 16v32h16zm64 24v40c0 8.8 7.2 16 16 16s16-7.2 16-16V256 240c0-8.8-7.2-16-16-16s-16 7.2-16 16v24z\"],bookmark:[384,512,[128278,61591],\"f02e\",\"M0 48C0 21.5 21.5 0 48 0l0 48V441.4l130.1-92.9c8.3-6 19.6-6 27.9 0L336 441.4V48H48V0H336c26.5 0 48 21.5 48 48V488c0 9-5 17.2-13 21.3s-17.6 3.4-24.9-1.8L192 397.5 37.9 507.5c-7.3 5.2-16.9 5.9-24.9 1.8S0 497 0 488V48z\"],\"hand-point-down\":[384,512,[],\"f0a7\",\"M64 448l0-177.6c5.2 1 10.5 1.6 16 1.6l16 0 0 32 0 144c0 8.8-7.2 16-16 16s-16-7.2-16-16zM80 224c-17.7 0-32-14.3-32-32c0 0 0 0 0 0l0-24c0-66.3 53.7-120 120-120l48 0c52.5 0 97.1 33.7 113.4 80.7c-3.1-.5-6.2-.7-9.4-.7c-20 0-37.9 9.2-49.7 23.6c-9-4.9-19.4-7.6-30.3-7.6c-15.1 0-29 5.3-40 14c-11-8.8-24.9-14-40-14l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-40 0-40 0zM0 192s0 0 0 0c0 18 6 34.6 16 48l0 208c0 35.3 28.7 64 64 64s64-28.7 64-64l0-82c5.1 1.3 10.5 2 16 2c25.3 0 47.2-14.7 57.6-36c7 2.6 14.5 4 22.4 4c20 0 37.9-9.2 49.7-23.6c9 4.9 19.4 7.6 30.3 7.6c35.3 0 64-28.7 64-64l0-64 0-24C384 75.2 308.8 0 216 0L168 0C75.2 0 0 75.2 0 168l0 24zm336 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64zM160 272c5.5 0 10.9-.7 16-2l0 2 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-32 16 0zm64-24l0-40c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-24z\"],folder:[512,512,[128193,128447,61716,\"folder-blank\"],\"f07b\",\"M0 96C0 60.7 28.7 32 64 32H196.1c19.1 0 37.4 7.6 50.9 21.1L289.9 96H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16H286.6c-10.6 0-20.8-4.2-28.3-11.7L213.1 87c-4.5-4.5-10.6-7-17-7H64z\"],user:[448,512,[128100,62144],\"f007\",\"M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464H398.7c-8.9-63.3-63.3-112-129-112H178.3c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3z\"],\"square-caret-left\":[448,512,[\"caret-square-left\"],\"f191\",\"M48 416c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320zm16 64c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480zm64-224c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"],star:[576,512,[11088,61446],\"f005\",\"M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.7 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z\"],\"chess-knight\":[448,512,[9822],\"f441\",\"M226.6 48H117.3l17.1 12.8c6 4.5 9.6 11.6 9.6 19.2s-3.6 14.7-9.6 19.2l-6.5 4.9c-10 7.5-16 19.3-16 31.9l-.3 91c0 10.2 4.9 19.9 13.2 25.8l1.9 1.3c9.9 7.1 23.3 7 33.2-.1l49.9-36.3c10.7-7.8 25.7-5.4 33.5 5.3s5.4 25.7-5.3 33.5l-49.9 36.3-53.8 39.1c-7.3 5.3-13 12.2-16.9 20.1H66.8c5.3-22.1 17.8-41.9 35.9-56.3c-1.3-.8-2.6-1.7-3.8-2.6L97 291.8c-21-15-33.4-39.2-33.3-65l.3-91c.1-19.8 6.7-38.7 18.6-53.9l-.4-.3C70.7 73 64 59.6 64 45.3C64 20.3 84.3 0 109.3 0H226.6C331.2 0 416 84.8 416 189.4c0 11.1-1 22.2-2.9 33.2L390.1 352H341.3l24.5-137.8c1.5-8.2 2.2-16.5 2.2-24.8C368 111.3 304.7 48 226.6 48zM85.2 432L68.7 464H379.3l-16.6-32H85.2zm315.7-30.7l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H56.8C34.2 512 16 493.8 16 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C52.5 390.7 63.5 384 75.5 384h297c12 0 22.9 6.7 28.4 17.3zM172 128a20 20 0 1 1 0 40 20 20 0 1 1 0-40z\"],\"face-laugh-squint\":[512,512,[\"laugh-squint\"],\"f59b\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zm2.8-183.3l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 141.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"],\"face-laugh\":[512,512,[\"laugh\"],\"f599\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"folder-open\":[576,512,[128194,128449,61717],\"f07c\",\"M384 480h48c11.4 0 21.9-6 27.6-15.9l112-192c5.8-9.9 5.8-22.1 .1-32.1S555.5 224 544 224H144c-11.4 0-21.9 6-27.6 15.9L48 357.1V96c0-8.8 7.2-16 16-16H181.5c4.2 0 8.3 1.7 11.3 4.7l26.5 26.5c21 21 49.5 32.8 79.2 32.8H416c8.8 0 16 7.2 16 16v32h48V160c0-35.3-28.7-64-64-64H298.5c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H87.7 384z\"],clipboard:[384,512,[128203],\"f328\",\"M280 64h40c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64h40 9.6C121 27.5 153.3 0 192 0s71 27.5 78.4 64H280zM64 112c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V128c0-8.8-7.2-16-16-16H304v24c0 13.3-10.7 24-24 24H192 104c-13.3 0-24-10.7-24-24V112H64zm128-8a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"],\"chess-queen\":[512,512,[9819],\"f445\",\"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-95.2-8c-18.1 0-31.3 12.8-35.6 26.9c-8 26.2-32.4 45.2-61.2 45.2c-10 0-19.4-2.3-27.7-6.3c-7.6-3.7-16.7-3.3-24 1.2C.7 162.1-3.1 177.1 3.7 188.9L97.6 352H153l-83-144.1c40.5-2.2 75.3-25.9 93.1-59.8c22 26.8 55.4 43.9 92.8 43.9s70.8-17.1 92.8-43.9c17.8 34 52.6 57.7 93.1 59.8L359 352h55.4l93.9-163.1c6.8-11.7 3-26.7-8.6-33.8c-7.3-4.5-16.4-4.9-24-1.2c-8.4 4-17.7 6.3-27.7 6.3c-28.8 0-53.2-19-61.2-45.2C382.5 100.8 369.3 88 351.2 88c-14.5 0-26.3 8.5-32.4 19.3c-12.4 22-35.9 36.7-62.8 36.7s-50.4-14.8-62.8-36.7C187.1 96.5 175.4 88 160.8 88zM133.2 432H378.8l16.6 32H116.7l16.6-32zm283.7-30.7c-5.5-10.6-16.5-17.3-28.4-17.3h-265c-12 0-22.9 6.7-28.4 17.3L68.6 452.5c-3 5.8-4.6 12.2-4.6 18.7c0 22.5 18.2 40.8 40.8 40.8H407.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2z\"],\"hand-back-fist\":[448,512,[\"hand-rock\"],\"f255\",\"M144 64c0-8.8 7.2-16 16-16s16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16V264c0 31.3-20 58-48 67.9c-9.6 3.4-16 12.5-16 22.6V488c0 13.3 10.7 24 24 24s24-10.7 24-24V370.2c38-20.1 64-60.1 64-106.2V160c0-35.3-28.7-64-64-64c-2.8 0-5.6 .2-8.3 .5C332.8 77.1 311.9 64 288 64c-2.8 0-5.6 .2-8.3 .5C268.8 45.1 247.9 32 224 32c-2.8 0-5.6 .2-8.3 .5C204.8 13.1 183.9 0 160 0C124.7 0 96 28.7 96 64v64.3c-11.7 7.4-22.5 16.4-32 26.9l17.8 16.1L64 155.2l-9.4 10.5C40 181.8 32 202.8 32 224.6v12.8c0 49.6 24.2 96.1 64.8 124.5l13.8-19.7L96.8 361.9l8.9 6.2c6.9 4.8 14.4 8.6 22.3 11.3V488c0 13.3 10.7 24 24 24s24-10.7 24-24V359.9c0-12.6-9.8-23.1-22.4-23.9c-7.3-.5-14.3-2.9-20.3-7.1l-13.1 18.7 13.1-18.7-8.9-6.2C96.6 303.1 80 271.3 80 237.4V224.6c0-9.9 3.7-19.4 10.3-26.8l9.4-10.5c3.8-4.2 7.9-8.1 12.3-11.6V208c0 8.8 7.2 16 16 16s16-7.2 16-16V142.3 128 64z\"],\"square-caret-up\":[448,512,[\"caret-square-up\"],\"f151\",\"M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm224 64c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4l-208 0c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"],\"chart-bar\":[512,512,[\"bar-chart\"],\"f080\",\"M24 32c13.3 0 24 10.7 24 24V408c0 13.3 10.7 24 24 24H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-39.8 0-72-32.2-72-72V56C0 42.7 10.7 32 24 32zM128 136c0-13.3 10.7-24 24-24l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24zm24 72H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 96H424c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"],\"window-restore\":[512,512,[],\"f2d2\",\"M432 48H208c-17.7 0-32 14.3-32 32V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V336h16c17.7 0 32-14.3 32-32V80c0-17.7-14.3-32-32-32zM48 448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V256H48V448zM64 128H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64z\"],\"square-plus\":[448,512,[61846,\"plus-square\"],\"f0fe\",\"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"],image:[512,512,[],\"f03e\",\"M448 80c8.8 0 16 7.2 16 16V415.8l-5-6.5-136-176c-4.5-5.9-11.6-9.3-19-9.3s-14.4 3.4-19 9.3L202 340.7l-30.5-42.7C167 291.7 159.8 288 152 288s-15 3.7-19.5 10.1l-80 112L48 416.3l0-.3V96c0-8.8 7.2-16 16-16H448zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"],\"folder-closed\":[512,512,[],\"e185\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H289.9L247 53.1C233.5 39.6 215.2 32 196.1 32H64zM48 96c0-8.8 7.2-16 16-16H196.1c6.4 0 12.5 2.5 17 7l45.3 45.3c7.5 7.5 17.7 11.7 28.3 11.7H448c8.8 0 16 7.2 16 16v32H48V96zm0 144H464V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V240z\"],lemon:[448,512,[127819],\"f094\",\"M368 80c-3.2 0-6.2 .4-8.9 1.3C340 86.8 313 91.9 284.8 84.6C227.4 69.7 160.2 92 110.1 142.1S37.7 259.4 52.6 316.8c7.3 28.2 2.2 55.2-3.3 74.3c-.8 2.8-1.3 5.8-1.3 8.9c0 17.7 14.3 32 32 32c3.2 0 6.2-.4 8.9-1.3c19.1-5.5 46.1-10.7 74.3-3.3c57.4 14.9 124.6-7.4 174.7-57.5s72.4-117.3 57.5-174.7c-7.3-28.2-2.2-55.2 3.3-74.3c.8-2.8 1.3-5.8 1.3-8.9c0-17.7-14.3-32-32-32zm0-48c44.2 0 80 35.8 80 80c0 7.7-1.1 15.2-3.1 22.3c-4.6 15.8-7.1 32.9-3 48.9c20.1 77.6-10.9 161.5-70 220.7s-143.1 90.2-220.7 70c-16-4.1-33-1.6-48.9 3c-7.1 2-14.6 3.1-22.3 3.1c-44.2 0-80-35.8-80-80c0-7.7 1.1-15.2 3.1-22.3c4.6-15.8 7.1-32.9 3-48.9C-14 251.3 17 167.3 76.2 108.2S219.3 18 296.8 38.1c16 4.1 33 1.6 48.9-3c7.1-2 14.6-3.1 22.3-3.1zM246.7 167c-52 15.2-96.5 59.7-111.7 111.7c-3.7 12.7-17.1 20-29.8 16.3s-20-17.1-16.3-29.8c19.8-67.7 76.6-124.5 144.3-144.3c12.7-3.7 26.1 3.6 29.8 16.3s-3.6 26.1-16.3 29.8z\"],handshake:[640,512,[],\"f2b5\",\"M272.2 64.6l-51.1 51.1c-15.3 4.2-29.5 11.9-41.5 22.5L153 161.9C142.8 171 129.5 176 115.8 176H96V304c20.4 .6 39.8 8.9 54.3 23.4l35.6 35.6 7 7 0 0L219.9 397c6.2 6.2 16.4 6.2 22.6 0c1.7-1.7 3-3.7 3.7-5.8c2.8-7.7 9.3-13.5 17.3-15.3s16.4 .6 22.2 6.5L296.5 393c11.6 11.6 30.4 11.6 41.9 0c5.4-5.4 8.3-12.3 8.6-19.4c.4-8.8 5.6-16.6 13.6-20.4s17.3-3 24.4 2.1c9.4 6.7 22.5 5.8 30.9-2.6c9.4-9.4 9.4-24.6 0-33.9L340.1 243l-35.8 33c-27.3 25.2-69.2 25.6-97 .9c-31.7-28.2-32.4-77.4-1.6-106.5l70.1-66.2C303.2 78.4 339.4 64 377.1 64c36.1 0 71 13.3 97.9 37.2L505.1 128H544h40 40c8.8 0 16 7.2 16 16V352c0 17.7-14.3 32-32 32H576c-11.8 0-22.2-6.4-27.7-16H463.4c-3.4 6.7-7.9 13.1-13.5 18.7c-17.1 17.1-40.8 23.8-63 20.1c-3.6 7.3-8.5 14.1-14.6 20.2c-27.3 27.3-70 30-100.4 8.1c-25.1 20.8-62.5 19.5-86-4.1L159 404l-7-7-35.6-35.6c-5.5-5.5-12.7-8.7-20.4-9.3C96 369.7 81.6 384 64 384H32c-17.7 0-32-14.3-32-32V144c0-8.8 7.2-16 16-16H56 96h19.8c2 0 3.9-.7 5.3-2l26.5-23.6C175.5 77.7 211.4 64 248.7 64H259c4.4 0 8.9 .2 13.2 .6zM544 320V176H496c-5.9 0-11.6-2.2-15.9-6.1l-36.9-32.8c-18.2-16.2-41.7-25.1-66.1-25.1c-25.4 0-49.8 9.7-68.3 27.1l-70.1 66.2c-10.3 9.8-10.1 26.3 .5 35.7c9.3 8.3 23.4 8.1 32.5-.3l71.9-66.4c9.7-9 24.9-8.4 33.9 1.4s8.4 24.9-1.4 33.9l-.8 .8 74.4 74.4c10 10 16.5 22.3 19.4 35.1H544zM64 336a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm528 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"],gem:[512,512,[128142],\"f3a5\",\"M168.5 72L256 165l87.5-93h-175zM383.9 99.1L311.5 176h129L383.9 99.1zm50 124.9H256 78.1L256 420.3 433.9 224zM71.5 176h129L128.1 99.1 71.5 176zm434.3 40.1l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4z\"],\"circle-play\":[512,512,[61469,\"play-circle\"],\"f144\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c7.6-4.2 16.8-4.1 24.3 .5l144 88c7.1 4.4 11.5 12.1 11.5 20.5s-4.4 16.1-11.5 20.5l-144 88c-7.4 4.5-16.7 4.7-24.3 .5s-12.3-12.2-12.3-20.9V168c0-8.7 4.7-16.7 12.3-20.9z\"],\"circle-check\":[512,512,[61533,\"check-circle\"],\"f058\",\"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z\"],\"circle-stop\":[512,512,[62094,\"stop-circle\"],\"f28d\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm192-96H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"],\"id-badge\":[384,512,[],\"f2c1\",\"M256 48V64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H256zM0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"],\"face-laugh-beam\":[512,512,[128513,\"laugh-beam\"],\"f59a\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zm86.9-85.1l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"],registered:[512,512,[174],\"f25d\",\"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152V264v96c0 13.3 10.7 24 24 24s24-10.7 24-24V288h60.9l37.2 81.9c5.5 12.1 19.7 17.4 31.8 11.9s17.4-19.7 11.9-31.8L315.7 275c21.8-14.3 36.3-39 36.3-67c0-44.2-35.8-80-80-80H184c-13.3 0-24 10.7-24 24zm48 88V176h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H208z\"],\"address-card\":[576,512,[62140,\"contact-card\",\"vcard\"],\"f2bb\",\"M512 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H512zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM208 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H304c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H176zM376 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376z\"],\"face-tired\":[512,512,[128555,\"tired\"],\"f5c8\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.5 64.3C196.1 302.1 223.8 288 256 288s59.9 14.1 79.5 32.3C354.5 338.1 368 362 368 384c0 5.4-2.7 10.4-7.2 13.4s-10.2 3.4-15.2 1.3l-17.2-7.5c-22.8-10-47.5-15.1-72.4-15.1s-49.6 5.2-72.4 15.1l-17.2 7.5c-4.9 2.2-10.7 1.7-15.2-1.3s-7.2-8-7.2-13.4c0-22 13.5-45.9 32.5-63.7zm-43-173.6l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"],\"font-awesome\":[512,512,[62501,62694,\"font-awesome-flag\",\"font-awesome-logo-full\"],\"f2b4\",\"M91.7 96C106.3 86.8 116 70.5 116 52C116 23.3 92.7 0 64 0S12 23.3 12 52c0 16.7 7.8 31.5 20 41l0 3 0 48 0 256 0 48 0 64 48 0 0-64 389.6 0c14.6 0 26.4-11.8 26.4-26.4c0-3.7-.8-7.3-2.3-10.7L432 272l61.7-138.9c1.5-3.4 2.3-7 2.3-10.7c0-14.6-11.8-26.4-26.4-26.4L91.7 96zM80 400l0-256 356.4 0L388.1 252.5c-5.5 12.4-5.5 26.6 0 39L436.4 400 80 400z\"],\"face-smile-wink\":[512,512,[128521,\"smile-wink\"],\"f4da\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"],\"file-word\":[384,512,[],\"f1c2\",\"M48 448V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm55 241.1c-3.8-12.7-17.2-19.9-29.9-16.1s-19.9 17.2-16.1 29.9l48 160c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l25-83.4 25 83.4c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l48-160c3.8-12.7-3.4-26.1-16.1-29.9s-26.1 3.4-29.9 16.1l-25 83.4-25-83.4c-3-10.2-12.4-17.1-23-17.1s-19.9 7-23 17.1l-25 83.4-25-83.4z\"],\"file-powerpoint\":[384,512,[],\"f1c4\",\"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm72 208c-13.3 0-24 10.7-24 24V336v56c0 13.3 10.7 24 24 24s24-10.7 24-24V360h44c42 0 76-34 76-76s-34-76-76-76H136zm68 104H160V256h44c15.5 0 28 12.5 28 28s-12.5 28-28 28z\"],\"envelope-open\":[512,512,[62135],\"f2b6\",\"M255.4 48.2c.2-.1 .4-.2 .6-.2s.4 .1 .6 .2L460.6 194c2.1 1.5 3.4 3.9 3.4 6.5v13.6L291.5 355.7c-20.7 17-50.4 17-71.1 0L48 214.1V200.5c0-2.6 1.2-5 3.4-6.5L255.4 48.2zM48 276.2L190 392.8c38.4 31.5 93.7 31.5 132 0L464 276.2V456c0 4.4-3.6 8-8 8H56c-4.4 0-8-3.6-8-8V276.2zM256 0c-10.2 0-20.2 3.2-28.5 9.1L23.5 154.9C8.7 165.4 0 182.4 0 200.5V456c0 30.9 25.1 56 56 56H456c30.9 0 56-25.1 56-56V200.5c0-18.1-8.7-35.1-23.4-45.6L284.5 9.1C276.2 3.2 266.2 0 256 0z\"],\"file-zipper\":[384,512,[\"file-archive\"],\"f1c6\",\"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16h48v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm48 112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H128c-8.8 0-16 7.2-16 16zm0 64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H128c-8.8 0-16 7.2-16 16zm-6.3 71.8L82.1 335.9c-1.4 5.4-2.1 10.9-2.1 16.4c0 35.2 28.8 63.7 64 63.7s64-28.5 64-63.7c0-5.5-.7-11.1-2.1-16.4l-23.5-88.2c-3.7-14-16.4-23.8-30.9-23.8H136.6c-14.5 0-27.2 9.7-30.9 23.8zM128 336h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H128c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],square:[448,512,[9632,9723,9724,61590],\"f0c8\",\"M384 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H384zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"],snowflake:[448,512,[10052,10054],\"f2dc\",\"M224 0c13.3 0 24 10.7 24 24V70.1l23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-57 57v76.5l66.2-38.2 20.9-77.8c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4L373 142.2l37.1-21.4c11.5-6.6 26.2-2.7 32.8 8.8s2.7 26.2-8.8 32.8L397 183.8l31.5 8.4c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-77.8-20.9L272 256l66.2 38.2 77.8-20.9c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4L397 328.2l37.1 21.4c11.5 6.6 15.4 21.3 8.8 32.8s-21.3 15.4-32.8 8.8L373 369.8l8.4 31.5c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-20.9-77.8L248 297.6v76.5l57 57c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V441.9l-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V297.6l-66.2 38.2-20.9 77.8c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4L75 369.8 37.9 391.2c-11.5 6.6-26.2 2.7-32.8-8.8s-2.7-26.2 8.8-32.8L51 328.2l-31.5-8.4c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l77.8 20.9L176 256l-66.2-38.2L31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4L51 183.8 13.9 162.4c-11.5-6.6-15.4-21.3-8.8-32.8s21.3-15.4 32.8-8.8L75 142.2l-8.4-31.5c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l20.9 77.8L200 214.4V137.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23V24c0-13.3 10.7-24 24-24z\"],newspaper:[512,512,[128240],\"f1ea\",\"M168 80c-13.3 0-24 10.7-24 24V408c0 8.4-1.4 16.5-4.1 24H440c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H168zM72 480c-39.8 0-72-32.2-72-72V112C0 98.7 10.7 88 24 88s24 10.7 24 24V408c0 13.3 10.7 24 24 24s24-10.7 24-24V104c0-39.8 32.2-72 72-72H440c39.8 0 72 32.2 72 72V408c0 39.8-32.2 72-72 72H72zM176 136c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V136zm200-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24zM200 272H408c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80H408c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"],\"face-kiss-wink-heart\":[512,512,[128536,\"kiss-wink-heart\"],\"f598\",\"M338.9 446.8c-25.4 11-53.4 17.2-82.9 17.2C141.1 464 48 370.9 48 256S141.1 48 256 48s208 93.1 208 208c0 22.4-3.5 43.9-10.1 64.1c3.1 4.5 5.7 9.4 7.8 14.6c12.7-1.6 25.1 .4 36.2 5c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-6.5-25.3zM296 316c0-6.9-3.1-13.2-7.3-18.3c-4.3-5.2-10.1-9.7-16.7-13.4C258.7 276.9 241.4 272 224 272c-3.6 0-6.8 2.5-7.7 6s.6 7.2 3.8 9l0 0 0 0 0 0 .2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1 0 0 0 0 0 0 0 0 0 0c-2.5 1.4-4.1 4.1-4.1 7s1.6 5.6 4.1 7l0 0 0 0 0 0 .2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1 0 0 0 0 0 0 0 0c-3.2 1.8-4.7 5.5-3.8 9s4.1 6 7.7 6c17.4 0 34.7-4.9 47.9-12.3c6.6-3.7 12.5-8.2 16.7-13.4c4.3-5.1 7.3-11.4 7.3-18.3s-3.1-13.2-7.3-18.3c-4.3-5.2-10.1-9.7-16.7-13.4c-2.7-1.5-5.7-3-8.7-4.3c3.1-1.3 6-2.7 8.7-4.3c6.6-3.7 12.5-8.2 16.7-13.4c4.3-5.1 7.3-11.4 7.3-18.3zM176.4 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm159.3-20c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C375.7 186.8 355 180 335.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"],\"star-half-stroke\":[576,512,[\"star-half-alt\"],\"f5c0\",\"M309.5 13.5C305.5 5.2 297.1 0 287.9 0s-17.6 5.2-21.6 13.5L197.7 154.8 44.5 177.5c-9 1.3-16.5 7.6-19.3 16.3s-.5 18.1 5.9 24.5L142.2 328.4 116 483.9c-1.5 9 2.2 18.1 9.7 23.5s17.3 6 25.3 1.7l137-73.2 137 73.2c8.1 4.3 17.9 3.7 25.3-1.7s11.2-14.5 9.7-23.5L433.6 328.4 544.8 218.2c6.5-6.4 8.7-15.9 5.9-24.5s-10.3-14.9-19.3-16.3L378.1 154.8 309.5 13.5zM288 384.7V79.1l52.5 108.1c3.5 7.1 10.2 12.1 18.1 13.3l118.3 17.5L391 303c-5.5 5.5-8.1 13.3-6.8 21l20.2 119.6L299.2 387.5c-3.5-1.9-7.4-2.8-11.2-2.8z\"],\"file-excel\":[384,512,[],\"f1c3\",\"M48 448V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm90.9 233.3c-8.1-10.5-23.2-12.3-33.7-4.2s-12.3 23.2-4.2 33.7L161.6 320l-44.5 57.3c-8.1 10.5-6.3 25.5 4.2 33.7s25.5 6.3 33.7-4.2L192 359.1l37.1 47.6c8.1 10.5 23.2 12.3 33.7 4.2s12.3-23.2 4.2-33.7L222.4 320l44.5-57.3c8.1-10.5 6.3-25.5-4.2-33.7s-25.5-6.3-33.7 4.2L192 280.9l-37.1-47.6z\"],\"face-grin-beam\":[512,512,[128516,\"grin-beam\"],\"f582\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM217.6 228.8l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"],\"object-ungroup\":[640,512,[],\"f248\",\"M48.2 66.8c-.1-.8-.2-1.7-.2-2.5c0-.1 0-.1 0-.2c0-8.8 7.2-16 16-16c.9 0 1.9 .1 2.8 .2C74.3 49.5 80 56.1 80 64c0 8.8-7.2 16-16 16c-7.9 0-14.5-5.7-15.8-13.2zM0 64c0 26.9 16.5 49.9 40 59.3V228.7C16.5 238.1 0 261.1 0 288c0 35.3 28.7 64 64 64c26.9 0 49.9-16.5 59.3-40H324.7c9.5 23.5 32.5 40 59.3 40c35.3 0 64-28.7 64-64c0-26.9-16.5-49.9-40-59.3V123.3c23.5-9.5 40-32.5 40-59.3c0-35.3-28.7-64-64-64c-26.9 0-49.9 16.5-59.3 40H123.3C113.9 16.5 90.9 0 64 0C28.7 0 0 28.7 0 64zm368 0a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM324.7 88c6.5 16 19.3 28.9 35.3 35.3V228.7c-16 6.5-28.9 19.3-35.3 35.3H123.3c-6.5-16-19.3-28.9-35.3-35.3V123.3c16-6.5 28.9-19.3 35.3-35.3H324.7zM384 272a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM80 288c0 7.9-5.7 14.5-13.2 15.8c-.8 .1-1.7 .2-2.5 .2l-.2 0c-8.8 0-16-7.2-16-16c0-.9 .1-1.9 .2-2.8C49.5 277.7 56.1 272 64 272c8.8 0 16 7.2 16 16zm391.3-40h45.4c6.5 16 19.3 28.9 35.3 35.3V388.7c-16 6.5-28.9 19.3-35.3 35.3H315.3c-6.5-16-19.3-28.9-35.3-35.3V352H232v36.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64c26.9 0 49.9-16.5 59.3-40H516.7c9.5 23.5 32.5 40 59.3 40c35.3 0 64-28.7 64-64c0-26.9-16.5-49.9-40-59.3V283.3c23.5-9.5 40-32.5 40-59.3c0-35.3-28.7-64-64-64c-26.9 0-49.9 16.5-59.3 40H448v16.4c9.8 8.8 17.8 19.5 23.3 31.6zm88.9-26.7a16 16 0 1 1 31.5 5.5 16 16 0 1 1 -31.5-5.5zM271.8 450.7a16 16 0 1 1 -31.5-5.5 16 16 0 1 1 31.5 5.5zm301.5 13c-7.5-1.3-13.2-7.9-13.2-15.8c0-8.8 7.2-16 16-16c7.9 0 14.5 5.7 15.8 13.2l0 .1c.1 .9 .2 1.8 .2 2.7c0 8.8-7.2 16-16 16c-.9 0-1.9-.1-2.8-.2z\"],\"circle-right\":[512,512,[61838,\"arrow-alt-circle-right\"],\"f35a\",\"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 135.1c-4.2-4.5-10.1-7.1-16.3-7.1C266 128 256 138 256 150.3V208H160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32h96v57.7c0 12.3 10 22.3 22.3 22.3c6.2 0 12.1-2.6 16.3-7.1l99.9-107.1c3.5-3.8 5.5-8.7 5.5-13.8s-2-10.1-5.5-13.8L294.6 135.1z\"],\"face-rolling-eyes\":[512,512,[128580,\"meh-rolling-eyes\"],\"f5a5\",\"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM168 376c0 13.3 10.7 24 24 24H320c13.3 0 24-10.7 24-24s-10.7-24-24-24H192c-13.3 0-24 10.7-24 24zm-8-104c-26.5 0-48-21.5-48-48c0-14.3 6.3-27.2 16.2-36c-.2 1.3-.2 2.6-.2 4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1.4-.1-2.7-.2-4c10 8.8 16.2 21.7 16.2 36c0 26.5-21.5 48-48 48zm0 32a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm192-32c-26.5 0-48-21.5-48-48c0-14.3 6.3-27.2 16.2-36c-.2 1.3-.2 2.6-.2 4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1.4-.1-2.7-.2-4c10 8.8 16.2 21.7 16.2 36c0 26.5-21.5 48-48 48zm0 32a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"],\"object-group\":[576,512,[],\"f247\",\"M48 115.8C38.2 107 32 94.2 32 80c0-26.5 21.5-48 48-48c14.2 0 27 6.2 35.8 16H460.2c8.8-9.8 21.6-16 35.8-16c26.5 0 48 21.5 48 48c0 14.2-6.2 27-16 35.8V396.2c9.8 8.8 16 21.6 16 35.8c0 26.5-21.5 48-48 48c-14.2 0-27-6.2-35.8-16H115.8c-8.8 9.8-21.6 16-35.8 16c-26.5 0-48-21.5-48-48c0-14.2 6.2-27 16-35.8V115.8zM125.3 96c-4.8 13.6-15.6 24.4-29.3 29.3V386.7c13.6 4.8 24.4 15.6 29.3 29.3H450.7c4.8-13.6 15.6-24.4 29.3-29.3V125.3c-13.6-4.8-24.4-15.6-29.3-29.3H125.3zm2.7 64c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z\"],heart:[512,512,[128153,128154,128155,128156,128420,129293,129294,129505,9829,10084,61578],\"f004\",\"M225.8 468.2l-2.5-2.3L48.1 303.2C17.4 274.7 0 234.7 0 192.8v-3.3c0-70.4 50-130.8 119.2-144C158.6 37.9 198.9 47 231 69.6c9 6.4 17.4 13.8 25 22.3c4.2-4.8 8.7-9.2 13.5-13.3c3.7-3.2 7.5-6.2 11.5-9c0 0 0 0 0 0C313.1 47 353.4 37.9 392.8 45.4C462 58.6 512 119.1 512 189.5v3.3c0 41.9-17.4 81.9-48.1 110.4L288.7 465.9l-2.5 2.3c-8.2 7.6-19 11.9-30.2 11.9s-22-4.2-30.2-11.9zM239.1 145c-.4-.3-.7-.7-1-1.1l-17.8-20c0 0-.1-.1-.1-.1c0 0 0 0 0 0c-23.1-25.9-58-37.7-92-31.2C81.6 101.5 48 142.1 48 189.5v3.3c0 28.5 11.9 55.8 32.8 75.2L256 430.7 431.2 268c20.9-19.4 32.8-46.7 32.8-75.2v-3.3c0-47.3-33.6-88-80.1-96.9c-34-6.5-69 5.4-92 31.2c0 0 0 0-.1 .1s0 0-.1 .1l-17.8 20c-.3 .4-.7 .7-1 1.1c-4.5 4.5-10.6 7-16.9 7s-12.4-2.5-16.9-7z\"],\"face-surprise\":[512,512,[128558,\"surprise\"],\"f5c2\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"],\"circle-pause\":[512,512,[62092,\"pause-circle\"],\"f28b\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm224-72V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V184c0-13.3 10.7-24 24-24s24 10.7 24 24zm112 0V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V184c0-13.3 10.7-24 24-24s24 10.7 24 24z\"],circle:[512,512,[128308,128309,128992,128993,128994,128995,128996,9679,9898,9899,11044,61708,61915],\"f111\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"],\"circle-up\":[512,512,[61467,\"arrow-alt-circle-up\"],\"f35b\",\"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM135.1 217.4c-4.5 4.2-7.1 10.1-7.1 16.3c0 12.3 10 22.3 22.3 22.3H208v96c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256h57.7c12.3 0 22.3-10 22.3-22.3c0-6.2-2.6-12.1-7.1-16.3L269.8 117.5c-3.8-3.5-8.7-5.5-13.8-5.5s-10.1 2-13.8 5.5L135.1 217.4z\"],\"file-audio\":[384,512,[],\"f1c7\",\"M64 464H320c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM192 272V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L129.4 376H112c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h17.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8zm85.8-4c11.6 20 18.2 43.3 18.2 68s-6.6 48-18.2 68c-6.6 11.5-21.3 15.4-32.8 8.8s-15.4-21.3-8.8-32.8c7.5-12.9 11.8-27.9 11.8-44s-4.3-31.1-11.8-44c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8z\"],\"file-image\":[384,512,[128443],\"f1c5\",\"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm96 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm69.2 46.9c-3-4.3-7.9-6.9-13.2-6.9s-10.2 2.6-13.2 6.9l-41.3 59.7-11.9-19.1c-2.9-4.7-8.1-7.5-13.6-7.5s-10.6 2.8-13.6 7.5l-40 64c-3.1 4.9-3.2 11.1-.4 16.2s8.2 8.2 14 8.2h48 32 40 72c6 0 11.4-3.3 14.2-8.6s2.4-11.6-1-16.5l-72-104z\"],\"circle-question\":[512,512,[62108,\"question-circle\"],\"f059\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm169.8-90.7c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"],\"face-meh-blank\":[512,512,[128566,\"meh-blank\"],\"f5a4\",\"M256 48a208 208 0 1 0 0 416 208 208 0 1 0 0-416zM512 256A256 256 0 1 1 0 256a256 256 0 1 1 512 0zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],eye:[576,512,[128065],\"f06e\",\"M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z\"],\"face-sad-cry\":[512,512,[128557,\"sad-cry\"],\"f5b3\",\"M400 406.1V288c0-13.3-10.7-24-24-24s-24 10.7-24 24V440.6c-28.7 15-61.4 23.4-96 23.4s-67.3-8.5-96-23.4V288c0-13.3-10.7-24-24-24s-24 10.7-24 24V406.1C72.6 368.2 48 315 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 59-24.6 112.2-64 150.1zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.6 220c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C199.7 186.8 179 180 159.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zm166.6 9.7c5.5-5.8 14.8-9.7 25.4-9.7s19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C391.7 186.8 371 180 351.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9zM208 320v32c0 26.5 21.5 48 48 48s48-21.5 48-48V320c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"],\"file-code\":[384,512,[],\"f1c9\",\"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm97 289c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L79 303c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 31-31zM257 255c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9l-48-48z\"],\"window-maximize\":[512,512,[128470],\"f2d0\",\"M.3 89.5C.1 91.6 0 93.8 0 96V224 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64V224 96c0-35.3-28.7-64-64-64H64c-2.2 0-4.4 .1-6.5 .3c-9.2 .9-17.8 3.8-25.5 8.2C21.8 46.5 13.4 55.1 7.7 65.5c-3.9 7.3-6.5 15.4-7.4 24zM48 224H464l0 192c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-192z\"],\"face-frown\":[512,512,[9785,\"frown\"],\"f119\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM174.6 384.1c-4.5 12.5-18.2 18.9-30.7 14.4s-18.9-18.2-14.4-30.7C146.9 319.4 198.9 288 256 288s109.1 31.4 126.6 79.9c4.5 12.5-2 26.2-14.4 30.7s-26.2-2-30.7-14.4C328.2 358.5 297.2 336 256 336s-72.2 22.5-81.4 48.1zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"floppy-disk\":[448,512,[128190,128426,\"save\"],\"f0c7\",\"M48 96V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V170.5c0-4.2-1.7-8.3-4.7-11.3l33.9-33.9c12 12 18.7 28.3 18.7 45.3V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H309.5c17 0 33.3 6.7 45.3 18.7l74.5 74.5-33.9 33.9L320.8 84.7c-.3-.3-.5-.5-.8-.8V184c0 13.3-10.7 24-24 24H104c-13.3 0-24-10.7-24-24V80H64c-8.8 0-16 7.2-16 16zm80-16v80H272V80H128zm32 240a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"],\"comment-dots\":[512,512,[128172,62075,\"commenting\"],\"f4ad\",\"M168.2 384.9c-15-5.4-31.7-3.1-44.6 6.4c-8.2 6-22.3 14.8-39.4 22.7c5.6-14.7 9.9-31.3 11.3-49.4c1-12.9-3.3-25.7-11.8-35.5C60.4 302.8 48 272 48 240c0-79.5 83.3-160 208-160s208 80.5 208 160s-83.3 160-208 160c-31.6 0-61.3-5.5-87.8-15.1zM26.3 423.8c-1.6 2.7-3.3 5.4-5.1 8.1l-.3 .5c-1.6 2.3-3.2 4.6-4.8 6.9c-3.5 4.7-7.3 9.3-11.3 13.5c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c5.1 0 10.2-.3 15.3-.8l.7-.1c4.4-.5 8.8-1.1 13.2-1.9c.8-.1 1.6-.3 2.4-.5c17.8-3.5 34.9-9.5 50.1-16.1c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9zM144 272a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm80 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"face-grin-squint\":[512,512,[128518,\"grin-squint\"],\"f585\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zm-216-161.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"],\"hand-pointer\":[448,512,[],\"f25a\",\"M160 64c0-8.8 7.2-16 16-16s16 7.2 16 16V200c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c8.8 0 16 7.2 16 16c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c7.8 0 14.3 5.6 15.7 13c1.6 8.2 7.3 15.1 15.1 18s16.7 1.6 23.3-3.6c2.7-2.1 6.1-3.4 9.9-3.4c8.8 0 16 7.2 16 16l0 16V392c0 39.8-32.2 72-72 72H272 212.3h-.9c-37.4 0-72.4-18.7-93.2-49.9L50.7 312.9c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4L116 353.2c5.9 8.8 16.8 12.7 26.9 9.7s17-12.4 17-23V320 64zM176 0c-35.3 0-64 28.7-64 64V261.7C91.2 238 55.5 232.8 28.5 250.7C-.9 270.4-8.9 310.1 10.8 339.5L78.3 440.8c29.7 44.5 79.6 71.2 133.1 71.2h.9H272h56c66.3 0 120-53.7 120-120V288l0-16c0-35.3-28.7-64-64-64c-4.5 0-8.8 .5-13 1.3c-11.7-15.4-30.2-25.3-51-25.3c-6.9 0-13.5 1.1-19.7 3.1C288.7 170.7 269.6 160 248 160c-2.7 0-5.4 .2-8 .5V64c0-35.3-28.7-64-64-64zm48 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z\"],\"hand-scissors\":[512,512,[],\"f257\",\"M.2 276.3c-1.2-35.3 26.4-65 61.7-66.2l3.3-.1L57 208.1C22.5 200.5 .7 166.3 8.3 131.8S50.2 75.5 84.7 83.2l173 38.3c2.3-2.9 4.7-5.7 7.1-8.5l18.4-20.3C299.9 74.5 323.5 64 348.3 64l10.2 0c54.1 0 104.1 28.7 131.3 75.4l1.5 2.6c13.6 23.2 20.7 49.7 20.7 76.6L512 344c0 66.3-53.7 120-120 120l-8 0-96 0c-35.3 0-64-28.7-64-64c0-2.8 .2-5.6 .5-8.3c-19.4-11-32.5-31.8-32.5-55.7c0-.8 0-1.6 0-2.4L66.4 338c-35.3 1.2-65-26.4-66.2-61.7zm63.4-18.2c-8.8 .3-15.7 7.7-15.4 16.5s7.7 15.7 16.5 15.4l161.5-5.6c9.8-.3 18.7 5.3 22.7 14.2s2.2 19.3-4.5 26.4c-2.8 2.9-4.4 6.7-4.4 11c0 8.8 7.2 16 16 16c9.1 0 17.4 5.1 21.5 13.3s3.2 17.9-2.3 25.1c-2 2.7-3.2 6-3.2 9.6c0 8.8 7.2 16 16 16l96 0 8 0c39.8 0 72-32.2 72-72l0-125.4c0-18.4-4.9-36.5-14.2-52.4l-1.5-2.6c-18.6-32-52.8-51.6-89.8-51.6l-10.2 0c-11.3 0-22 4.8-29.6 13.1l-17.5-15.9 17.5 15.9-18.4 20.3c-.6 .6-1.1 1.3-1.7 1.9l57 13.2c8.6 2 14 10.6 12 19.2s-10.6 14-19.2 12l-85.6-19.7L74.3 130c-8.6-1.9-17.2 3.5-19.1 12.2s3.5 17.2 12.2 19.1l187.5 41.6c10.2 2.3 17.8 10.9 18.7 21.4l.1 1c.6 6.6-1.5 13.1-5.8 18.1s-10.6 7.9-17.2 8.2L63.6 258.1z\"],\"face-grin-tears\":[640,512,[128514,\"grin-tears\"],\"f588\",\"M516.1 325.5c1 3 2.1 6 3.3 8.9c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c1.2-2.9 2.3-5.9 3.3-8.9C152.5 406.2 229.5 464 320 464s167.5-57.8 196.1-138.5zM320 48c-101.4 0-185.8 72.5-204.3 168.5c-6.7-3.1-14.3-4.3-22.3-3.1c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-8-1.2-15.7 .1-22.3 3.1C505.8 120.5 421.4 48 320 48zM78.5 341.1C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7zm483 0c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zM439 336.5C414.4 374.6 370.3 400 319.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5c18.7-4.4 35.9 12 25.5 28.1zM281.6 228.8l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0zm160 0l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0z\"],\"calendar-xmark\":[448,512,[\"calendar-times\"],\"f273\",\"M128 0c13.3 0 24 10.7 24 24V64H296V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192 144 128C0 92.7 28.7 64 64 64h40V24c0-13.3 10.7-24 24-24zM400 192H48V448c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V192zm-95 89l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"],\"file-video\":[384,512,[],\"f1c8\",\"M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM80 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v16l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1L240 368v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V288z\"],\"file-pdf\":[512,512,[],\"f1c1\",\"M64 464l48 0 0 48-48 0c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0L229.5 0c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3L384 304l-48 0 0-144-80 0c-17.7 0-32-14.3-32-32l0-80L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16zM176 352l32 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-16 0 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-80c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0 48 16 0zm96-80l32 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16l0-128c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-16 0 0 96 16 0zm80-112c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64 0-64z\"],comment:[512,512,[128489,61669],\"f075\",\"M123.6 391.3c12.9-9.4 29.6-11.8 44.6-6.4c26.5 9.6 56.2 15.1 87.8 15.1c124.7 0 208-80.5 208-160s-83.3-160-208-160S48 160.5 48 240c0 32 12.4 62.8 35.7 89.2c8.6 9.7 12.8 22.5 11.8 35.5c-1.4 18.1-5.7 34.7-11.3 49.4c17-7.9 31.1-16.7 39.4-22.7zM21.2 431.9c1.8-2.7 3.5-5.4 5.1-8.1c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208s-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6c-15.1 6.6-32.3 12.6-50.1 16.1c-.8 .2-1.6 .3-2.4 .5c-4.4 .8-8.7 1.5-13.2 1.9c-.2 0-.5 .1-.7 .1c-5.1 .5-10.2 .8-15.3 .8c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c4.1-4.2 7.8-8.7 11.3-13.5c1.7-2.3 3.3-4.6 4.8-6.9c.1-.2 .2-.3 .3-.5z\"],envelope:[512,512,[128386,9993,61443],\"f0e0\",\"M64 112c-8.8 0-16 7.2-16 16v22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16H64zM48 212.2V384c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"],hourglass:[384,512,[9203,62032,\"hourglass-empty\"],\"f254\",\"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V67c0 40.3 16 79 44.5 107.5L158.1 256 76.5 337.5C48 366 32 404.7 32 445v19H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V445c0-40.3-16-79-44.5-107.5L225.9 256l81.5-81.5C336 146 352 107.3 352 67V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM192 289.9l81.5 81.5C293 391 304 417.4 304 445v19H80V445c0-27.6 11-54 30.5-73.5L192 289.9zm0-67.9l-81.5-81.5C91 121 80 94.6 80 67V48H304V67c0 27.6-11 54-30.5 73.5L192 222.1z\"],\"calendar-check\":[448,512,[],\"f274\",\"M128 0c13.3 0 24 10.7 24 24V64H296V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192 144 128C0 92.7 28.7 64 64 64h40V24c0-13.3 10.7-24 24-24zM400 192H48V448c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V192zM329 297L217 409c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 95-95c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"],\"hard-drive\":[512,512,[128436,\"hdd\"],\"f0a0\",\"M64 80c-8.8 0-16 7.2-16 16V258c5.1-1.3 10.5-2 16-2H448c5.5 0 10.9 .7 16 2V96c0-8.8-7.2-16-16-16H64zM48 320v96c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V320c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM0 320V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V320v96c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320zm280 48a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"],\"face-grin-squint-tears\":[512,512,[129315,\"grin-squint-tears\"],\"f586\",\"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-14.8 14.8-65.7 23.6-88.3 26.7c-5.6 .9-10.3-3.9-9.5-9.5C403.3 79.9 412 29 426.8 14.2zM75 75C158.2-8.3 284.5-22.2 382.2 33.2c-1.5 4.8-2.9 9.6-4.1 14.3c-3.1 12.2-5.5 24.6-7.3 35c-80.8-53.6-190.7-44.8-261.9 26.4C37.7 180.1 28.9 290 82.5 370.8c-10.5 1.8-22.9 4.2-35 7.3c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75zm389.6 58.9c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c3.1-12.2 5.5-24.6 7.3-35c80.8 53.6 190.7 44.8 261.9-26.4c71.2-71.2 80-181.1 26.4-261.9c10.5-1.8 22.9-4.2 35-7.3zm-105.4 93c10.1-16.3 33.9-16.9 37.9 1.9c9.5 44.4-3.7 93.5-39.3 129.1s-84.8 48.8-129.1 39.3c-18.7-4-18.2-27.8-1.9-37.9c25.2-15.7 50.2-35.4 73.6-58.8s43.1-48.4 58.8-73.6zM92 265.3l97.4-29.7c11.6-3.5 22.5 7.3 19 19l-29.7 97.4c-2.6 8.6-13.4 11.3-19.8 4.9c-2-2-3.2-4.6-3.4-7.3l-5.1-56.1-56.1-5.1c-2.8-.3-5.4-1.5-7.3-3.4c-6.3-6.3-3.6-17.2 4.9-19.8zm193-178.2c2 2 3.2 4.6 3.4 7.3l5.1 56.1 56.1 5.1c2.8 .3 5.4 1.5 7.3 3.4c6.3 6.3 3.6 17.2-4.9 19.8l-97.4 29.7c-11.6 3.5-22.5-7.3-19-19L265.3 92c2.6-8.6 13.4-11.3 19.8-4.9zM14.9 497.1c-19.6-19.6-20-51-.7-70.3C29 412 79.8 403.2 102.4 400.1c5.6-.9 10.3 3.9 9.5 9.5c-3.2 22.5-11.9 73.5-26.7 88.3C66 517 34.5 516.6 14.9 497.1z\"],\"rectangle-list\":[576,512,[\"list-alt\"],\"f022\",\"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H512c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm96 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm104 0c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm-72-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"],\"calendar-plus\":[448,512,[],\"f271\",\"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192H400V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192zm176 40c-13.3 0-24 10.7-24 24v48H152c-13.3 0-24 10.7-24 24s10.7 24 24 24h48v48c0 13.3 10.7 24 24 24s24-10.7 24-24V352h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V256c0-13.3-10.7-24-24-24z\"],\"circle-left\":[512,512,[61840,\"arrow-alt-circle-left\"],\"f359\",\"M48 256a208 208 0 1 1 416 0A208 208 0 1 1 48 256zm464 0A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9c4.2 4.5 10.1 7.1 16.3 7.1c12.3 0 22.3-10 22.3-22.3V304h96c17.7 0 32-14.3 32-32V240c0-17.7-14.3-32-32-32H256V150.3c0-12.3-10-22.3-22.3-22.3c-6.2 0-12.1 2.6-16.3 7.1L117.5 242.2c-3.5 3.8-5.5 8.7-5.5 13.8s2 10.1 5.5 13.8l99.9 107.1z\"],\"money-bill-1\":[576,512,[\"money-bill-alt\"],\"f3d1\",\"M112 112c0 35.3-28.7 64-64 64V336c35.3 0 64 28.7 64 64H464c0-35.3 28.7-64 64-64V176c-35.3 0-64-28.7-64-64H112zM0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm80-48c0 8.8 7.2 16 16 16v64h-8c-8.8 0-16 7.2-16 16s7.2 16 16 16h24 24c8.8 0 16-7.2 16-16s-7.2-16-16-16h-8V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16z\"],clock:[512,512,[128339,\"clock-four\"],\"f017\",\"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"],keyboard:[576,512,[9e3],\"f11c\",\"M64 112c-8.8 0-16 7.2-16 16V384c0 8.8 7.2 16 16 16H512c8.8 0 16-7.2 16-16V128c0-8.8-7.2-16-16-16H64zM0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM176 320H400c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm-72-72c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H200c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H200c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H280c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H280c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H360c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H360c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H440c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H440c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16z\"],\"closed-captioning\":[576,512,[],\"f20a\",\"M512 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H512zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"],images:[576,512,[],\"f302\",\"M160 80H512c8.8 0 16 7.2 16 16V320c0 8.8-7.2 16-16 16H490.8L388.1 178.9c-4.4-6.8-12-10.9-20.1-10.9s-15.7 4.1-20.1 10.9l-52.2 79.8-12.4-16.9c-4.5-6.2-11.7-9.8-19.4-9.8s-14.8 3.6-19.4 9.8L175.6 336H160c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16zM96 96V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120zm208 24a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"],\"face-grin\":[512,512,[128512,\"grin\"],\"f580\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"face-meh\":[512,512,[128528,\"meh\"],\"f11a\",\"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM176.4 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm192-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM184 328c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"],\"id-card\":[576,512,[62147,\"drivers-license\"],\"f2c2\",\"M528 160V416c0 8.8-7.2 16-16 16H320c0-44.2-35.8-80-80-80H176c-44.2 0-80 35.8-80 80H64c-8.8 0-16-7.2-16-16V160H528zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM272 256a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm104-48c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376z\"],sun:[512,512,[9728],\"f185\",\"M375.7 19.7c-1.5-8-6.9-14.7-14.4-17.8s-16.1-2.2-22.8 2.4L256 61.1 173.5 4.2c-6.7-4.6-15.3-5.5-22.8-2.4s-12.9 9.8-14.4 17.8l-18.1 98.5L19.7 136.3c-8 1.5-14.7 6.9-17.8 14.4s-2.2 16.1 2.4 22.8L61.1 256 4.2 338.5c-4.6 6.7-5.5 15.3-2.4 22.8s9.8 13 17.8 14.4l98.5 18.1 18.1 98.5c1.5 8 6.9 14.7 14.4 17.8s16.1 2.2 22.8-2.4L256 450.9l82.5 56.9c6.7 4.6 15.3 5.5 22.8 2.4s12.9-9.8 14.4-17.8l18.1-98.5 98.5-18.1c8-1.5 14.7-6.9 17.8-14.4s2.2-16.1-2.4-22.8L450.9 256l56.9-82.5c4.6-6.7 5.5-15.3 2.4-22.8s-9.8-12.9-17.8-14.4l-98.5-18.1L375.7 19.7zM269.6 110l65.6-45.2 14.4 78.3c1.8 9.8 9.5 17.5 19.3 19.3l78.3 14.4L402 242.4c-5.7 8.2-5.7 19 0 27.2l45.2 65.6-78.3 14.4c-9.8 1.8-17.5 9.5-19.3 19.3l-14.4 78.3L269.6 402c-8.2-5.7-19-5.7-27.2 0l-65.6 45.2-14.4-78.3c-1.8-9.8-9.5-17.5-19.3-19.3L64.8 335.2 110 269.6c5.7-8.2 5.7-19 0-27.2L64.8 176.8l78.3-14.4c9.8-1.8 17.5-9.5 19.3-19.3l14.4-78.3L242.4 110c8.2 5.7 19 5.7 27.2 0zM256 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM192 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"],\"face-laugh-wink\":[512,512,[\"laugh-wink\"],\"f59c\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"],\"circle-down\":[512,512,[61466,\"arrow-alt-circle-down\"],\"f358\",\"M256 464a208 208 0 1 1 0-416 208 208 0 1 1 0 416zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6c4.5-4.2 7.1-10.1 7.1-16.3c0-12.3-10-22.3-22.3-22.3H304V160c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32v96H150.3C138 256 128 266 128 278.3c0 6.2 2.6 12.1 7.1 16.3l107.1 99.9c3.8 3.5 8.7 5.5 13.8 5.5s10.1-2 13.8-5.5l107.1-99.9z\"],\"thumbs-down\":[512,512,[128078,61576],\"f165\",\"M323.8 477.2c-38.2 10.9-78.1-11.2-89-49.4l-5.7-20c-3.7-13-10.4-25-19.5-35l-51.3-56.4c-8.9-9.8-8.2-25 1.6-33.9s25-8.2 33.9 1.6l51.3 56.4c14.1 15.5 24.4 34 30.1 54.1l5.7 20c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7l-5.7-20c-5.7-19.9-14.7-38.7-26.6-55.5c-5.2-7.3-5.8-16.9-1.7-24.9s12.3-13 21.3-13L448 288c8.8 0 16-7.2 16-16c0-6.8-4.3-12.7-10.4-15c-7.4-2.8-13-9-14.9-16.7s.1-15.8 5.3-21.7c2.5-2.8 4-6.5 4-10.6c0-7.8-5.6-14.3-13-15.7c-8.2-1.6-15.1-7.3-18-15.2s-1.6-16.7 3.6-23.3c2.1-2.7 3.4-6.1 3.4-9.9c0-6.7-4.2-12.6-10.2-14.9c-11.5-4.5-17.7-16.9-14.4-28.8c.4-1.3 .6-2.8 .6-4.3c0-8.8-7.2-16-16-16H286.5c-12.6 0-25 3.7-35.5 10.7l-61.7 41.1c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l61.7-41.1c18.4-12.3 40-18.8 62.1-18.8H384c34.7 0 62.9 27.6 64 62c14.6 11.7 24 29.7 24 50c0 4.5-.5 8.8-1.3 13c15.4 11.7 25.3 30.2 25.3 51c0 6.5-1 12.8-2.8 18.7C504.8 238.3 512 254.3 512 272c0 35.3-28.6 64-64 64l-92.3 0c4.7 10.4 8.7 21.2 11.8 32.2l5.7 20c10.9 38.2-11.2 78.1-49.4 89zM32 384c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H32z\"],\"chess-pawn\":[320,512,[9823],\"f443\",\"M232 152A72 72 0 1 0 88 152a72 72 0 1 0 144 0zm24 120H243.4l10.7 80H205.7L195 272H160 125l-10.7 80H65.9l10.7-80H64c-13.3 0-24-10.7-24-24s10.7-24 24-24c-15.1-20.1-24-45-24-72C40 85.7 93.7 32 160 32s120 53.7 120 120c0 27-8.9 51.9-24 72c13.3 0 24 10.7 24 24s-10.7 24-24 24zM52.7 464H267.3l-16.6-32H69.2L52.7 464zm207.9-80c12 0 22.9 6.7 28.4 17.3l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H40.8C18.2 512 0 493.8 0 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C36.5 390.7 47.5 384 59.5 384h201z\"],\"credit-card\":[576,512,[128179,62083,\"credit-card-alt\"],\"f09d\",\"M512 80c8.8 0 16 7.2 16 16v32H48V96c0-8.8 7.2-16 16-16H512zm16 144V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V224H528zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm56 304c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H248z\"],bell:[448,512,[128276,61602],\"f0f3\",\"M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v25.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416H424c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6C399.5 322.9 384 278.8 384 233.4V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm0 96c61.9 0 112 50.1 112 112v25.4c0 47.9 13.9 94.6 39.7 134.6H72.3C98.1 328 112 281.3 112 233.4V208c0-61.9 50.1-112 112-112zm64 352H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"],file:[384,512,[128196,128459,61462],\"f15b\",\"M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64z\"],hospital:[640,512,[127973,62589,\"hospital-alt\",\"hospital-wide\"],\"f0f8\",\"M232 0c-39.8 0-72 32.2-72 72v8H72C32.2 80 0 112.2 0 152V440c0 39.8 32.2 72 72 72h.2 .2 .2 .2 .2H73h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H75h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H77h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H79h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H82h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H85h.2 .2 .2 .2H86h.2 .2 .2 .2H87h.2 .2 .2 .2H88h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H98h.2 .2 .2 .2H99h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2v0H456h8v0H568c39.8 0 72-32.2 72-72V152c0-39.8-32.2-72-72-72H480V72c0-39.8-32.2-72-72-72H232zM480 128h88c13.3 0 24 10.7 24 24v40H536c-13.3 0-24 10.7-24 24s10.7 24 24 24h56v48H536c-13.3 0-24 10.7-24 24s10.7 24 24 24h56V440c0 13.3-10.7 24-24 24H480V336 128zM72 128h88V464h-.1-.2-.2-.2H159h-.2-.2-.2H158h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H154h-.2-.2-.2H153h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H150h-.2-.2-.2H149h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H146h-.2-.2-.2H145h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H142h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H139h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H136h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H133h-.2-.2-.2-.2-.2-.2-.2-.2H131h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H128h-.2-.2-.2-.2-.2-.2-.2-.2H126h-.2-.2-.2-.2-.2-.2-.2-.2H124h-.2-.2-.2-.2-.2-.2-.2-.2H122h-.2-.2-.2-.2-.2-.2-.2-.2H120h-.2-.2-.2-.2-.2-.2-.2-.2H118h-.2-.2-.2-.2-.2-.2-.2-.2H116h-.2-.2-.2-.2-.2-.2-.2-.2H114h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H111h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H108h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H105h-.2-.2-.2-.2H104h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H100h-.2-.2-.2-.2H99h-.2-.2-.2-.2H98h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H88h-.2-.2-.2-.2H87h-.2-.2-.2-.2H86h-.2-.2-.2-.2H85h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H82h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H79h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H77h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H75h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H73h-.2-.2-.2-.2-.2H72c-13.2 0-24-10.7-24-24V336h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H48V240h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H48V152c0-13.3 10.7-24 24-24zM208 72c0-13.3 10.7-24 24-24H408c13.3 0 24 10.7 24 24V336 464H368V400c0-26.5-21.5-48-48-48s-48 21.5-48 48v64H208V72zm88 24v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V168h24c8.8 0 16-7.2 16-16V136c0-8.8-7.2-16-16-16H344V96c0-8.8-7.2-16-16-16H312c-8.8 0-16 7.2-16 16z\"],\"chess-rook\":[448,512,[9820],\"f447\",\"M80 80V192c0 2.5 1.2 4.9 3.2 6.4l51.2 38.4c6.8 5.1 10.4 13.4 9.5 21.9L133.5 352H85.2l9.4-85L54.4 236.8C40.3 226.2 32 209.6 32 192V72c0-22.1 17.9-40 40-40H376c22.1 0 40 17.9 40 40V192c0 17.6-8.3 34.2-22.4 44.8L353.4 267l9.4 85H314.5l-10.4-93.3c-.9-8.4 2.7-16.8 9.5-21.9l51.2-38.4c2-1.5 3.2-3.9 3.2-6.4V80H304v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V80H192v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V80H80zm4.7 384H363.3l-16.6-32H101.2L84.7 464zm271.9-80c12 0 22.9 6.7 28.4 17.3l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H72.8C50.2 512 32 493.8 32 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C68.5 390.7 79.5 384 91.5 384h265zM208 288c-8.8 0-16-7.2-16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 8.8-7.2 16-16 16H208z\"],\"star-half\":[576,512,[61731],\"f089\",\"M293.3 .6c10.9 2.5 18.6 12.2 18.6 23.4V408.7c0 8.9-4.9 17-12.7 21.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.3c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5c4.9-10.1 16.1-15.4 27-12.9zM263.9 128.4l-28.6 58.8c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l92.5-49.4V128.4z\"],\"chess-king\":[448,512,[9818],\"f43f\",\"M248 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V56H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v40H59.6C26.7 144 0 170.7 0 203.6c0 8.2 1.7 16.3 4.9 23.8L59.1 352h52.3L49 208.2c-.6-1.5-1-3-1-4.6c0-6.4 5.2-11.6 11.6-11.6H224 388.4c6.4 0 11.6 5.2 11.6 11.6c0 1.6-.3 3.2-1 4.6L336.5 352h52.3l54.2-124.6c3.3-7.5 4.9-15.6 4.9-23.8c0-32.9-26.7-59.6-59.6-59.6H248V104h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V24zM101.2 432H346.8l16.6 32H84.7l16.6-32zm283.7-30.7c-5.5-10.6-16.5-17.3-28.4-17.3H91.5c-12 0-22.9 6.7-28.4 17.3L36.6 452.5c-3 5.8-4.6 12.2-4.6 18.7C32 493.8 50.2 512 72.8 512H375.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2z\"],\"circle-user\":[512,512,[62142,\"user-circle\"],\"f2bd\",\"M406.5 399.6C387.4 352.9 341.5 320 288 320H224c-53.5 0-99.4 32.9-118.5 79.6C69.9 362.2 48 311.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 55.7-21.9 106.2-57.5 143.6zm-40.1 32.7C334.4 452.4 296.6 464 256 464s-78.4-11.6-110.5-31.7c7.3-36.7 39.7-64.3 78.5-64.3h64c38.8 0 71.2 27.6 78.5 64.3zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-272a40 40 0 1 1 0-80 40 40 0 1 1 0 80zm-88-40a88 88 0 1 0 176 0 88 88 0 1 0 -176 0z\"],copy:[448,512,[],\"f0c5\",\"M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z\"],\"share-from-square\":[576,512,[61509,\"share-square\"],\"f14d\",\"M400 255.4V240 208c0-8.8-7.2-16-16-16H352 336 289.5c-50.9 0-93.9 33.5-108.3 79.6c-3.3-9.4-5.2-19.8-5.2-31.6c0-61.9 50.1-112 112-112h48 16 32c8.8 0 16-7.2 16-16V80 64.6L506 160 400 255.4zM336 240h16v48c0 17.7 14.3 32 32 32h3.7c7.9 0 15.5-2.9 21.4-8.2l139-125.1c7.6-6.8 11.9-16.5 11.9-26.7s-4.3-19.9-11.9-26.7L409.9 8.9C403.5 3.2 395.3 0 386.7 0C367.5 0 352 15.5 352 34.7V80H336 304 288c-88.4 0-160 71.6-160 160c0 60.4 34.6 99.1 63.9 120.9c5.9 4.4 11.5 8.1 16.7 11.2c4.4 2.7 8.5 4.9 11.9 6.6c3.4 1.7 6.2 3 8.2 3.9c2.2 1 4.6 1.4 7.1 1.4h2.5c9.8 0 17.8-8 17.8-17.8c0-7.8-5.3-14.7-11.6-19.5l0 0c-.4-.3-.7-.5-1.1-.8c-1.7-1.1-3.4-2.5-5-4.1c-.8-.8-1.7-1.6-2.5-2.6s-1.6-1.9-2.4-2.9c-1.8-2.5-3.5-5.3-5-8.5c-2.6-6-4.3-13.3-4.3-22.4c0-36.1 29.3-65.5 65.5-65.5H304h32zM72 32C32.2 32 0 64.2 0 104V440c0 39.8 32.2 72 72 72H408c39.8 0 72-32.2 72-72V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V104c0-13.3 10.7-24 24-24h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H72z\"],copyright:[512,512,[169],\"f1f9\",\"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c-31.2-31.2-31.2-81.9 0-113.1s81.9-31.2 113.1 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9c-50-50-131-50-181 0s-50 131 0 181s131 50 181 0c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0c-31.2 31.2-81.9 31.2-113.1 0z\"],map:[576,512,[128506,62072],\"f279\",\"M565.6 36.2C572.1 40.7 576 48.1 576 56V392c0 10-6.2 18.9-15.5 22.4l-168 64c-5.2 2-10.9 2.1-16.1 .3L192.5 417.5l-160 61c-7.4 2.8-15.7 1.8-22.2-2.7S0 463.9 0 456V120c0-10 6.1-18.9 15.5-22.4l168-64c5.2-2 10.9-2.1 16.1-.3L383.5 94.5l160-61c7.4-2.8 15.7-1.8 22.2 2.7zM48 136.5V421.2l120-45.7V90.8L48 136.5zM360 422.7V137.3l-144-48V374.7l144 48zm48-1.5l120-45.7V90.8L408 136.5V421.2z\"],\"bell-slash\":[640,512,[128277,61943],\"f1f6\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L542.6 400c2.7-7.8 1.3-16.5-3.9-23l-14.9-18.6C495.5 322.9 480 278.8 480 233.4V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V51.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM224 150.3C243.6 117.7 279.3 96 320 96c61.9 0 112 50.1 112 112v25.4c0 32.7 6.4 64.8 18.7 94.5L224 150.3zM406.2 416l-60.9-48H168.3c21.2-32.8 34.4-70.3 38.4-109.1L160 222.1v11.4c0 45.4-15.5 89.5-43.8 124.9L101.3 377c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6H406.2zM384 448H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"],\"hand-lizard\":[512,512,[],\"f258\",\"M72 112c-13.3 0-24 10.7-24 24s10.7 24 24 24H240c35.3 0 64 28.7 64 64s-28.7 64-64 64H136c-13.3 0-24 10.7-24 24s10.7 24 24 24H288c4.5 0 8.9 1.3 12.7 3.6l64 40c7 4.4 11.3 12.1 11.3 20.4v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V413.3L281.1 384H136c-39.8 0-72-32.2-72-72s32.2-72 72-72H240c8.8 0 16-7.2 16-16s-7.2-16-16-16H72c-39.8 0-72-32.2-72-72S32.2 64 72 64H281.6c46.7 0 90.9 21.5 119.7 58.3l78.4 100.1c20.9 26.7 32.3 59.7 32.3 93.7V424c0 13.3-10.7 24-24 24s-24-10.7-24-24V316.1c0-23.2-7.8-45.8-22.1-64.1L363.5 151.9c-19.7-25.2-49.9-39.9-81.9-39.9H72z\"],\"face-smile\":[512,512,[128578,\"smile\"],\"f118\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"hand-peace\":[512,512,[9996],\"f25b\",\"M250.8 1.4c-35.2-3.7-66.6 21.8-70.3 57L174 119 156.7 69.6C145 36.3 108.4 18.8 75.1 30.5S24.2 78.8 35.9 112.1L88.7 262.2C73.5 276.7 64 297.3 64 320v0 24c0 92.8 75.2 168 168 168h48c92.8 0 168-75.2 168-168V272 256 224c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4c-10.4-21.3-32.3-36-57.6-36c-.7 0-1.5 0-2.2 0l5.9-56.3c3.7-35.2-21.8-66.6-57-70.3zm-.2 155.4C243.9 166.9 240 179 240 192v48c0 .7 0 1.4 0 2c-5.1-1.3-10.5-2-16-2h-7.4l-5.4-15.3 17-161.3c.9-8.8 8.8-15.2 17.6-14.2s15.2 8.8 14.2 17.6l-9.5 90.1zM111.4 85.6L165.7 240H144c-4 0-8 .3-11.9 .9L81.2 96.2c-2.9-8.3 1.5-17.5 9.8-20.4s17.5 1.5 20.4 9.8zM288 192c0-8.8 7.2-16 16-16s16 7.2 16 16v32 16c0 8.8-7.2 16-16 16s-16-7.2-16-16V192zm38.4 108c10.4 21.3 32.3 36 57.6 36c5.5 0 10.9-.7 16-2v10c0 66.3-53.7 120-120 120H232c-66.3 0-120-53.7-120-120l0-24 0 0c0-17.7 14.3-32 32-32h80c8.8 0 16 7.2 16 16s-7.2 16-16 16H184c-13.3 0-24 10.7-24 24s10.7 24 24 24h40c35.3 0 64-28.7 64-64c0-.7 0-1.4 0-2c5.1 1.3 10.5 2 16 2c7.9 0 15.4-1.4 22.4-4zM400 272c0 8.8-7.2 16-16 16s-16-7.2-16-16V240 224c0-8.8 7.2-16 16-16s16 7.2 16 16v32 16z\"],\"face-grin-hearts\":[512,512,[128525,\"grin-hearts\"],\"f584\",\"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM215.3 137.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm122.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"],building:[384,512,[127970,61687],\"f1ad\",\"M64 48c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16h80V400c0-26.5 21.5-48 48-48s48 21.5 48 48v64h80c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H64zM0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm88 40c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H104c-8.8 0-16-7.2-16-16V104zM232 88h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H232c-8.8 0-16-7.2-16-16V104c0-8.8 7.2-16 16-16zM88 232c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H104c-8.8 0-16-7.2-16-16V232zm144-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H232c-8.8 0-16-7.2-16-16V232c0-8.8 7.2-16 16-16z\"],\"face-grin-beam-sweat\":[512,512,[128517,\"grin-beam-sweat\"],\"f583\",\"M476.8 126.3C497.1 120.8 512 102.7 512 81c0-20-28.6-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0c-9.5 12.6-27.1 37.2-36 57.5c-.3 .7-.6 1.4-.9 2.1C417.8 69.7 416 76 416 81c0 26 21.5 47 48 47c4.4 0 8.7-.6 12.8-1.7zM395.4 41.2C355.3 15.2 307.4 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256c0-35.8-7.3-69.9-20.6-100.8c-8.6 3.1-17.8 4.8-27.4 4.8c-8.9 0-17.6-1.5-25.7-4.2C454.7 185.5 464 219.7 464 256c0 114.9-93.1 208-208 208S48 370.9 48 256S141.1 48 256 48c48.7 0 93.4 16.7 128.9 44.7c-.6-3.8-.9-7.7-.9-11.7c0-11.4 3.8-22.4 7.1-30.5c1.3-3.1 2.7-6.2 4.3-9.3zM375 336.5c10.4-16.1-6.8-32.5-25.5-28.1c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c24.6 38.1 68.7 63.5 119.1 63.5s94.5-25.4 119.1-63.5zM217.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z\"],moon:[384,512,[127769,9214],\"f186\",\"M144.7 98.7c-21 34.1-33.1 74.3-33.1 117.3c0 98 62.8 181.4 150.4 211.7c-12.4 2.8-25.3 4.3-38.6 4.3C126.6 432 48 353.3 48 256c0-68.9 39.4-128.4 96.8-157.3zm62.1-66C91.1 41.2 0 137.9 0 256C0 379.7 100 480 223.5 480c47.8 0 92-15 128.4-40.6c1.9-1.3 3.7-2.7 5.5-4c4.8-3.6 9.4-7.4 13.9-11.4c2.7-2.4 5.3-4.8 7.9-7.3c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-3.7 .6-7.4 1.2-11.1 1.6c-5 .5-10.1 .9-15.3 1c-1.2 0-2.5 0-3.7 0c-.1 0-.2 0-.3 0c-96.8-.2-175.2-78.9-175.2-176c0-54.8 24.9-103.7 64.1-136c1-.9 2.1-1.7 3.2-2.6c4-3.2 8.2-6.2 12.5-9c3.1-2 6.3-4 9.6-5.8c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-3.6-.3-7.1-.5-10.7-.6c-2.7-.1-5.5-.1-8.2-.1c-3.3 0-6.5 .1-9.8 .2c-2.3 .1-4.6 .2-6.9 .4z\"],calendar:[448,512,[128197,128198],\"f133\",\"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192H400V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192z\"],\"face-grin-tongue-wink\":[512,512,[128540,\"grin-tongue-wink\"],\"f58b\",\"M348.3 442.4c2.4-8.4 3.7-17.3 3.7-26.4V363.5c8.8-8 16.6-17.1 23-27c10.4-16.1-6.8-32.5-25.5-28.1c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c6.5 10 14.3 19.1 23.1 27.1V416c0 9.2 1.3 18 3.7 26.4C95.1 408.4 48 337.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 81.7-47.1 152.4-115.7 186.4zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.6 220c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C199.7 186.8 179 180 159.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zm176.7 12a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-.4-72a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM320 416c0 35.3-28.7 64-64 64s-64-28.7-64-64V378.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6V416z\"],clone:[512,512,[],\"f24d\",\"M64 464H288c8.8 0 16-7.2 16-16V384h48v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h64v48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM224 304H448c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16V288c0 8.8 7.2 16 16 16zm-64-16V64c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64z\"],\"face-angry\":[512,512,[128544,\"angry\"],\"f556\",\"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm72.4-118.5c9.7-9 10.2-24.2 1.2-33.9C315.3 344.3 290.6 328 256 328s-59.3 16.3-73.5 31.6c-9 9.7-8.5 24.9 1.2 33.9s24.9 8.5 33.9-1.2c7.4-7.9 20-16.4 38.5-16.4s31.1 8.5 38.5 16.4c9 9.7 24.2 10.2 33.9 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"],\"rectangle-xmark\":[512,512,[62164,\"rectangle-times\",\"times-rectangle\",\"window-close\"],\"f410\",\"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm175 79c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"],\"paper-plane\":[512,512,[61913],\"f1d8\",\"M16.1 260.2c-22.6 12.9-20.5 47.3 3.6 57.3L160 376V479.3c0 18.1 14.6 32.7 32.7 32.7c9.7 0 18.9-4.3 25.1-11.8l62-74.3 123.9 51.6c18.9 7.9 40.8-4.5 43.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448 256zm52.1 25.5L409.7 90.6 190.1 336l1.2 1L68.2 285.7zM403.3 425.4L236.7 355.9 450.8 116.6 403.3 425.4z\"],\"life-ring\":[512,512,[],\"f1cd\",\"M385.1 419.1C349.7 447.2 304.8 464 256 464s-93.7-16.8-129.1-44.9l80.4-80.4c14.3 8.4 31 13.3 48.8 13.3s34.5-4.8 48.8-13.3l80.4 80.4zm68.1 .2C489.9 374.9 512 318.1 512 256s-22.1-118.9-58.8-163.3L465 81c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L419.3 58.8C374.9 22.1 318.1 0 256 0S137.1 22.1 92.7 58.8L81 47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L58.8 92.7C22.1 137.1 0 193.9 0 256s22.1 118.9 58.8 163.3L47 431c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l11.8-11.8C137.1 489.9 193.9 512 256 512s118.9-22.1 163.3-58.8L431 465c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-11.8-11.8zm-34.1-34.1l-80.4-80.4c8.4-14.3 13.3-31 13.3-48.8s-4.8-34.5-13.3-48.8l80.4-80.4C447.2 162.3 464 207.2 464 256s-16.8 93.7-44.9 129.1zM385.1 92.9l-80.4 80.4c-14.3-8.4-31-13.3-48.8-13.3s-34.5 4.8-48.8 13.3L126.9 92.9C162.3 64.8 207.2 48 256 48s93.7 16.8 129.1 44.9zM173.3 304.8L92.9 385.1C64.8 349.7 48 304.8 48 256s16.8-93.7 44.9-129.1l80.4 80.4c-8.4 14.3-13.3 31-13.3 48.8s4.8 34.5 13.3 48.8zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"],\"face-grimace\":[512,512,[128556,\"grimace\"],\"f57f\",\"M256 48a208 208 0 1 0 0 416 208 208 0 1 0 0-416zM512 256A256 256 0 1 1 0 256a256 256 0 1 1 512 0zM168 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h8V320h-8zm40 48h32V320H208v48zm96 0V320H272v48h32zm32 0h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v48zM168 288H344c30.9 0 56 25.1 56 56s-25.1 56-56 56H168c-30.9 0-56-25.1-56-56s25.1-56 56-56zm-23.6-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"calendar-minus\":[448,512,[],\"f272\",\"M128 0c13.3 0 24 10.7 24 24V64H296V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192 144 128C0 92.7 28.7 64 64 64h40V24c0-13.3 10.7-24 24-24zM400 192H48V448c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V192zM296 352H152c-13.3 0-24-10.7-24-24s10.7-24 24-24H296c13.3 0 24 10.7 24 24s-10.7 24-24 24z\"],\"circle-xmark\":[512,512,[61532,\"times-circle\",\"xmark-circle\"],\"f057\",\"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"],\"thumbs-up\":[512,512,[128077,61575],\"f164\",\"M323.8 34.8c-38.2-10.9-78.1 11.2-89 49.4l-5.7 20c-3.7 13-10.4 25-19.5 35l-51.3 56.4c-8.9 9.8-8.2 25 1.6 33.9s25 8.2 33.9-1.6l51.3-56.4c14.1-15.5 24.4-34 30.1-54.1l5.7-20c3.6-12.7 16.9-20.1 29.7-16.5s20.1 16.9 16.5 29.7l-5.7 20c-5.7 19.9-14.7 38.7-26.6 55.5c-5.2 7.3-5.8 16.9-1.7 24.9s12.3 13 21.3 13L448 224c8.8 0 16 7.2 16 16c0 6.8-4.3 12.7-10.4 15c-7.4 2.8-13 9-14.9 16.7s.1 15.8 5.3 21.7c2.5 2.8 4 6.5 4 10.6c0 7.8-5.6 14.3-13 15.7c-8.2 1.6-15.1 7.3-18 15.2s-1.6 16.7 3.6 23.3c2.1 2.7 3.4 6.1 3.4 9.9c0 6.7-4.2 12.6-10.2 14.9c-11.5 4.5-17.7 16.9-14.4 28.8c.4 1.3 .6 2.8 .6 4.3c0 8.8-7.2 16-16 16H286.5c-12.6 0-25-3.7-35.5-10.7l-61.7-41.1c-11-7.4-25.9-4.4-33.3 6.7s-4.4 25.9 6.7 33.3l61.7 41.1c18.4 12.3 40 18.8 62.1 18.8H384c34.7 0 62.9-27.6 64-62c14.6-11.7 24-29.7 24-50c0-4.5-.5-8.8-1.3-13c15.4-11.7 25.3-30.2 25.3-51c0-6.5-1-12.8-2.8-18.7C504.8 273.7 512 257.7 512 240c0-35.3-28.6-64-64-64l-92.3 0c4.7-10.4 8.7-21.2 11.8-32.2l5.7-20c10.9-38.2-11.2-78.1-49.4-89zM32 192c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H32z\"],\"window-minimize\":[512,512,[128469],\"f2d1\",\"M24 432c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"],\"square-full\":[512,512,[128997,128998,128999,129e3,129001,129002,129003,11035,11036],\"f45c\",\"M464 48V464H48V48H464zM48 0H0V48 464v48H48 464h48V464 48 0H464 48z\"],\"note-sticky\":[448,512,[62026,\"sticky-note\"],\"f249\",\"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H288V352c0-17.7 14.3-32 32-32h80V96c0-8.8-7.2-16-16-16H64zM288 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V320v5.5c0 17-6.7 33.3-18.7 45.3l-90.5 90.5c-12 12-28.3 18.7-45.3 18.7H288z\"],\"face-sad-tear\":[512,512,[128546,\"sad-tear\"],\"f5b4\",\"M175.9 448c-35-.1-65.5-22.6-76-54.6C67.6 356.8 48 308.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208s-93.1 208-208 208c-28.4 0-55.5-5.7-80.1-16zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM128 369c0 26 21.5 47 48 47s48-21 48-47c0-20-28.4-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0C156.6 308.6 128 349 128 369zm128-65c-13.3 0-24 10.7-24 24s10.7 24 24 24c30.7 0 58.7 11.5 80 30.6c9.9 8.8 25 8 33.9-1.9s8-25-1.9-33.9C338.3 320.2 299 304 256 304zm47.6-96a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm-128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"hand-point-left\":[512,512,[],\"f0a5\",\"M64 128l177.6 0c-1 5.2-1.6 10.5-1.6 16l0 16-32 0L64 160c-8.8 0-16-7.2-16-16s7.2-16 16-16zm224 16c0-17.7 14.3-32 32-32c0 0 0 0 0 0l24 0c66.3 0 120 53.7 120 120l0 48c0 52.5-33.7 97.1-80.7 113.4c.5-3.1 .7-6.2 .7-9.4c0-20-9.2-37.9-23.6-49.7c4.9-9 7.6-19.4 7.6-30.3c0-15.1-5.3-29-14-40c8.8-11 14-24.9 14-40l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-40 0-40zm32-80s0 0 0 0c-18 0-34.6 6-48 16L64 80C28.7 80 0 108.7 0 144s28.7 64 64 64l82 0c-1.3 5.1-2 10.5-2 16c0 25.3 14.7 47.2 36 57.6c-2.6 7-4 14.5-4 22.4c0 20 9.2 37.9 23.6 49.7c-4.9 9-7.6 19.4-7.6 30.3c0 35.3 28.7 64 64 64l64 0 24 0c92.8 0 168-75.2 168-168l0-48c0-92.8-75.2-168-168-168l-24 0zM256 400c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0zM240 224c0 5.5 .7 10.9 2 16l-2 0-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l32 0 0 16zm24 64l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l24 0z\"]};!function(c){try{for(var l=arguments.length,s=new Array(1<l?l-1:0),a=1;a<l;a++)s[a-1]=arguments[a];c.apply(void 0,s)}catch(c){if(!h)throw c}}(function(){d(\"far\",p),d(\"fa-regular\",p)})}(),function(){\"use strict\";var c={},l={};try{\"undefined\"!=typeof window&&(c=window),\"undefined\"!=typeof document&&(l=document)}catch(c){}var s=(c.navigator||{}).userAgent,a=void 0===s?\"\":s,z=c,e=l;z.document,e.documentElement&&e.head&&\"function\"==typeof e.addEventListener&&e.createElement,~a.indexOf(\"MSIE\")||a.indexOf(\"Trident/\");function H(l,c){var s,a=Object.keys(l);return Object.getOwnPropertySymbols&&(s=Object.getOwnPropertySymbols(l),c&&(s=s.filter(function(c){return Object.getOwnPropertyDescriptor(l,c).enumerable})),a.push.apply(a,s)),a}function t(l){for(var c=1;c<arguments.length;c++){var s=null!=arguments[c]?arguments[c]:{};c%2?H(Object(s),!0).forEach(function(c){V(l,c,s[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(l,Object.getOwnPropertyDescriptors(s)):H(Object(s)).forEach(function(c){Object.defineProperty(l,c,Object.getOwnPropertyDescriptor(s,c))})}return l}function V(c,l,s){return l in c?Object.defineProperty(c,l,{value:s,enumerable:!0,configurable:!0,writable:!0}):c[l]=s,c}function r(c,l){(null==l||l>c.length)&&(l=c.length);for(var s=0,a=new Array(l);s<l;s++)a[s]=c[s];return a}var M=\"___FONT_AWESOME___\",h=function(){try{return!0}catch(c){return!1}}(),n=\"classic\",i=\"sharp\",m=[n,i];function o(c){return new Proxy(c,{get:function(c,l){return l in c?c[l]:c[n]}})}o((V(C={},n,{fa:\"solid\",fas:\"solid\",\"fa-solid\":\"solid\",far:\"regular\",\"fa-regular\":\"regular\",fal:\"light\",\"fa-light\":\"light\",fat:\"thin\",\"fa-thin\":\"thin\",fad:\"duotone\",\"fa-duotone\":\"duotone\",fab:\"brands\",\"fa-brands\":\"brands\",fak:\"kit\",fakd:\"kit\",\"fa-kit\":\"kit\",\"fa-kit-duotone\":\"kit\"}),V(C,i,{fa:\"solid\",fass:\"solid\",\"fa-solid\":\"solid\",fasr:\"regular\",\"fa-regular\":\"regular\",fasl:\"light\",\"fa-light\":\"light\",fast:\"thin\",\"fa-thin\":\"thin\"}),C));var f=o((V(v={},n,{solid:\"fas\",regular:\"far\",light:\"fal\",thin:\"fat\",duotone:\"fad\",brands:\"fab\",kit:\"fak\"}),V(v,i,{solid:\"fass\",regular:\"fasr\",light:\"fasl\",thin:\"fast\"}),v)),e=(o((V(s={},n,{fab:\"fa-brands\",fad:\"fa-duotone\",fak:\"fa-kit\",fal:\"fa-light\",far:\"fa-regular\",fas:\"fa-solid\",fat:\"fa-thin\"}),V(s,i,{fass:\"fa-solid\",fasr:\"fa-regular\",fasl:\"fa-light\",fast:\"fa-thin\"}),s)),o((V(c={},n,{\"fa-brands\":\"fab\",\"fa-duotone\":\"fad\",\"fa-kit\":\"fak\",\"fa-light\":\"fal\",\"fa-regular\":\"far\",\"fa-solid\":\"fas\",\"fa-thin\":\"fat\"}),V(c,i,{\"fa-solid\":\"fass\",\"fa-regular\":\"fasr\",\"fa-light\":\"fasl\",\"fa-thin\":\"fast\"}),c)),o((V(l={},n,{900:\"fas\",400:\"far\",normal:\"far\",300:\"fal\",100:\"fat\"}),V(l,i,{900:\"fass\",400:\"fasr\",300:\"fasl\",100:\"fast\"}),l)),[1,2,3,4,5,6,7,8,9,10]),a=e.concat([11,12,13,14,15,16,17,18,19,20]),C=\"duotone-group\",v=\"swap-opacity\",s=\"primary\",c=\"secondary\",l=new Set;Object.keys(f[n]).map(l.add.bind(l)),Object.keys(f[i]).map(l.add.bind(l));[].concat(m,function(c){if(Array.isArray(c))return r(c)}(l=l)||function(c){if(\"undefined\"!=typeof Symbol&&null!=c[Symbol.iterator]||null!=c[\"@@iterator\"])return Array.from(c)}(l)||function(c,l){if(c){if(\"string\"==typeof c)return r(c,l);var s=Object.prototype.toString.call(c).slice(8,-1);return\"Map\"===(s=\"Object\"===s&&c.constructor?c.constructor.name:s)||\"Set\"===s?Array.from(c):\"Arguments\"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?r(c,l):void 0}}(l)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}(),[\"2xs\",\"xs\",\"sm\",\"lg\",\"xl\",\"2xl\",\"beat\",\"border\",\"fade\",\"beat-fade\",\"bounce\",\"flip-both\",\"flip-horizontal\",\"flip-vertical\",\"flip\",\"fw\",\"inverse\",\"layers-counter\",\"layers-text\",\"layers\",\"li\",\"pull-left\",\"pull-right\",\"pulse\",\"rotate-180\",\"rotate-270\",\"rotate-90\",\"rotate-by\",\"shake\",\"spin-pulse\",\"spin-reverse\",\"spin\",\"stack-1x\",\"stack-2x\",\"stack\",\"ul\",C,v,s,c]).concat(e.map(function(c){return\"\".concat(c,\"x\")})).concat(a.map(function(c){return\"w-\".concat(c)}));z=z||{};z[M]||(z[M]={}),z[M].styles||(z[M].styles={}),z[M].hooks||(z[M].hooks={}),z[M].shims||(z[M].shims=[]);var L=z[M];function u(a){return Object.keys(a).reduce(function(c,l){var s=a[l];return!!s.icon?c[s.iconName]=s.icon:c[l]=s,c},{})}function d(c,l,s){var a=(2<arguments.length&&void 0!==s?s:{}).skipHooks,s=void 0!==a&&a,a=u(l);\"function\"!=typeof L.hooks.addPack||s?L.styles[c]=t(t({},L.styles[c]||{}),a):L.hooks.addPack(c,u(l)),\"fas\"===c&&d(\"fa\",l)}var p={0:[320,512,[],\"30\",\"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160V320c0 88.4-71.6 160-160 160S0 408.4 0 320V192zM160 96c-53 0-96 43-96 96V320c0 53 43 96 96 96s96-43 96-96V192c0-53-43-96-96-96z\"],1:[256,512,[],\"31\",\"M160 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.8 1.6l-96 64C-.5 111.2-4.4 131 5.4 145.8s29.7 18.7 44.4 8.9L96 123.8V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V64z\"],2:[320,512,[],\"32\",\"M142.9 96c-21.5 0-42.2 8.5-57.4 23.8L54.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L40.2 74.5C67.5 47.3 104.4 32 142.9 32C223 32 288 97 288 177.1c0 38.5-15.3 75.4-42.5 102.6L109.3 416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L200.2 234.5c15.2-15.2 23.8-35.9 23.8-57.4c0-44.8-36.3-81.1-81.1-81.1z\"],3:[320,512,[],\"33\",\"M0 64C0 46.3 14.3 32 32 32H272c13.2 0 25 8.1 29.8 20.4s1.5 26.3-8.2 35.2L162.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H105.4C63 480 24.2 456 5.3 418.1l-1.9-3.8c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l1.9 3.8c8.1 16.3 24.8 26.5 42.9 26.5H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H80c-13.2 0-25-8.1-29.8-20.4s-1.5-26.3 8.2-35.2L189.7 96H32C14.3 96 0 81.7 0 64z\"],4:[384,512,[],\"34\",\"M189 77.6c7.5-16 .7-35.1-15.3-42.6s-35.1-.7-42.6 15.3L3 322.4c-4.7 9.9-3.9 21.5 1.9 30.8S21 368 32 368H256v80c0 17.7 14.3 32 32 32s32-14.3 32-32V368h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320V160c0-17.7-14.3-32-32-32s-32 14.3-32 32V304H82.4L189 77.6z\"],5:[320,512,[],\"35\",\"M32.5 58.3C35.3 43.1 48.5 32 64 32H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H90.7L70.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H100.5c-39.4 0-75.4-22.3-93-57.5l-4.1-8.2c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l4.1 8.2c6.8 13.6 20.6 22.1 35.8 22.1H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H32c-9.5 0-18.5-4.2-24.6-11.5s-8.6-16.9-6.9-26.2l32-176z\"],6:[320,512,[],\"36\",\"M232.4 84.7c11.4-13.5 9.7-33.7-3.8-45.1s-33.7-9.7-45.1 3.8L38.6 214.7C14.7 242.9 1.1 278.4 .1 315.2c0 1.4-.1 2.9-.1 4.3c0 .2 0 .3 0 .5c0 88.4 71.6 160 160 160s160-71.6 160-160c0-85.5-67.1-155.4-151.5-159.8l63.9-75.6zM256 320A96 96 0 1 1 64 320a96 96 0 1 1 192 0z\"],7:[320,512,[],\"37\",\"M0 64C0 46.3 14.3 32 32 32H288c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96H32C14.3 96 0 81.7 0 64z\"],8:[320,512,[],\"38\",\"M304 160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 34.6 13.7 66 36 89C20.5 272.3 0 309.8 0 352c0 70.7 57.3 128 128 128h64c70.7 0 128-57.3 128-128c0-42.2-20.5-79.7-52-103c22.3-23 36-54.4 36-89zM176.1 288H192c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64h15.9c0 0 .1 0 .1 0h32c0 0 .1 0 .1 0zm0-64c0 0 0 0 0 0H144c0 0 0 0 0 0c-35.3 0-64-28.7-64-64c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64c0 35.3-28.6 64-64 64z\"],9:[320,512,[],\"39\",\"M64 192a96 96 0 1 0 192 0A96 96 0 1 0 64 192zm87.5 159.8C67.1 347.4 0 277.5 0 192C0 103.6 71.6 32 160 32s160 71.6 160 160c0 2.6-.1 5.3-.2 7.9c-1.7 35.7-15.2 70-38.4 97.4l-145 171.4c-11.4 13.5-31.6 15.2-45.1 3.8s-15.2-31.6-3.8-45.1l63.9-75.6z\"],\"fill-drip\":[576,512,[],\"f576\",\"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6H386.7l42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z\"],\"arrows-to-circle\":[640,512,[],\"e4bd\",\"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7V96c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 4.3-.9 8.5-2.4 12.2c-1.6 3.7-3.8 7.3-6.9 10.3l-.1 .1c-3.1 3-6.6 5.3-10.3 6.9c-3.8 1.6-7.9 2.4-12.2 2.4H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h18.7L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zM256 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM114.7 352H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0l.1 0c8.8 0 16.7 3.6 22.5 9.3l.1 .1c3 3.1 5.3 6.6 6.9 10.3c1.6 3.8 2.4 7.9 2.4 12.2v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352zM416 96c0-17.7 14.3-32 32-32s32 14.3 32 32v18.7L585.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 160H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448c-8.8 0-16.8-3.6-22.6-9.3l-.1-.1c-3-3.1-5.3-6.6-6.9-10.3s-2.4-7.8-2.4-12.2l0-.1v0V96zM525.3 352L630.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 397.3V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V320v0c0 0 0-.1 0-.1c0-4.3 .9-8.4 2.4-12.2c1.6-3.8 3.9-7.3 6.9-10.4c5.8-5.8 13.7-9.3 22.5-9.4c0 0 .1 0 .1 0h0 96c17.7 0 32 14.3 32 32s-14.3 32-32 32H525.3z\"],\"circle-chevron-right\":[512,512,[\"chevron-circle-right\"],\"f138\",\"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"],at:[512,512,[61946],\"40\",\"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256v32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32v80 32c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"],\"trash-can\":[448,512,[61460,\"trash-alt\"],\"f2ed\",\"M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"],\"text-height\":[576,512,[],\"f034\",\"M64 128V96h64l0 320H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H192l0-320h64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H160 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM502.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V352H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H512V160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"],\"user-xmark\":[640,512,[\"user-times\"],\"f235\",\"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM471 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"],stethoscope:[576,512,[129658],\"f0f1\",\"M142.4 21.9c5.6 16.8-3.5 34.9-20.2 40.5L96 71.1V192c0 53 43 96 96 96s96-43 96-96V71.1l-26.1-8.7c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l26.1 8.7C334.4 19.1 352 43.5 352 71.1V192c0 77.2-54.6 141.6-127.3 156.7C231 404.6 278.4 448 336 448c61.9 0 112-50.1 112-112V265.3c-28.3-12.3-48-40.5-48-73.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V336c0 97.2-78.8 176-176 176c-92.9 0-168.9-71.9-175.5-163.1C87.2 334.2 32 269.6 32 192V71.1c0-27.5 17.6-52 43.8-60.7l26.1-8.7c16.8-5.6 34.9 3.5 40.5 20.2zM480 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],message:[512,512,[\"comment-alt\"],\"f27a\",\"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64h96v80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64z\"],info:[192,512,[],\"f129\",\"M48 80a48 48 0 1 1 96 0A48 48 0 1 1 48 80zM0 224c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V448h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V256H32c-17.7 0-32-14.3-32-32z\"],\"down-left-and-up-right-to-center\":[512,512,[\"compress-alt\"],\"f422\",\"M439 7c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H296c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39L439 7zM72 272H216c13.3 0 24 10.7 24 24V440c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39L73 505c-9.4 9.4-24.6 9.4-33.9 0L7 473c-9.4-9.4-9.4-24.6 0-33.9l87-87L55 313c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8z\"],explosion:[576,512,[],\"e4e9\",\"M499.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L404.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87H378.5c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H117.8L42.3 363.7c-9.7-6.7-13.1-19.6-7.9-30.3s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.7 9.4-11.3L107.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L246 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7s22.7 9.4 23.9 21.7l13.5 141.9L499.6 11.3zM64 448v0H512v0h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64zM288 0c13.3 0 24 10.7 24 24V72c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24z\"],\"file-lines\":[384,512,[128441,128462,61686,\"file-alt\",\"file-text\"],\"f15c\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],\"wave-square\":[640,512,[],\"f83e\",\"M128 64c0-17.7 14.3-32 32-32H320c17.7 0 32 14.3 32 32V416h96V256c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H512V448c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V96H192V256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V64z\"],ring:[512,512,[],\"f70b\",\"M64 208c0 7.8 4.4 18.7 17.1 30.3C126.5 214.1 188.9 200 256 200s129.5 14.1 174.9 38.3C443.6 226.7 448 215.8 448 208c0-12.3-10.8-32-47.9-50.6C364.9 139.8 314 128 256 128s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7C166.3 280.2 208.8 288 256 288s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208c0-49.6 39.4-85.8 83.3-107.8C129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8v96c0 49.6-39.4 85.8-83.3 107.8C382.9 434.7 321.7 448 256 448s-126.9-13.3-172.7-36.2C39.4 389.8 0 353.6 0 304V208z\"],\"building-un\":[384,512,[],\"e4d9\",\"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM237.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM112 80v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V80c0-8.8 7.2-16 16-16s16 7.2 16 16z\"],\"dice-three\":[448,512,[9858],\"f527\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"calendar-days\":[448,512,[\"calendar-alt\"],\"f073\",\"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z\"],\"anchor-circle-check\":[640,512,[],\"e4aa\",\"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"],\"building-circle-arrow-right\":[640,512,[],\"e4d1\",\"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V232.2c-39.1 32.3-64 81.1-64 135.8c0 49.5 20.4 94.2 53.3 126.2C364.5 505.1 351.1 512 336 512H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm96 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm140.7-67.3c-6.2 6.2-6.2 16.4 0 22.6L521.4 352H432c-8.8 0-16 7.2-16 16s7.2 16 16 16h89.4l-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"],volleyball:[512,512,[127952,\"volleyball-ball\"],\"f45f\",\"M511.8 267.4c-26.1 8.7-53.4 13.8-81 15.1c9.2-105.3-31.5-204.2-103.2-272.4C434.1 41.1 512 139.5 512 256c0 3.8-.1 7.6-.2 11.4zm-3.9 34.7c-5.8 32-17.6 62-34.2 88.7c-97.5 48.5-217.7 42.6-311.9-24.5c23.7-36.2 55.4-67.7 94.5-91.8c79.9 43.2 170.1 50.8 251.6 27.6zm-236-55.5c-2.5-90.9-41.1-172.7-101.9-231.7C196.8 5.2 225.8 0 256 0c2.7 0 5.3 0 7.9 .1c90.8 60.2 145.7 167.2 134.7 282.3c-43.1-2.4-86.4-14.1-126.8-35.9zM138 28.8c20.6 18.3 38.7 39.4 53.7 62.6C95.9 136.1 30.6 220.8 7.3 316.9C2.5 297.4 0 277 0 256C0 157.2 56 71.5 138 28.8zm69.6 90.5c19.5 38.6 31 81.9 32.3 127.7C162.5 294.6 110.9 368.9 90.2 451C66 430.4 45.6 405.4 30.4 377.2c6.7-108.7 71.9-209.9 177.1-257.9zM256 512c-50.7 0-98-14.7-137.8-40.2c5.6-27 14.8-53.1 27.4-77.7C232.2 454.6 338.1 468.8 433 441c-46 44-108.3 71-177 71z\"],\"arrows-up-to-line\":[576,512,[],\"e4c2\",\"M32 96l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96zM9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 237.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96zm320 45.3c12.5 12.5 32.8 12.5 45.3 0L416 237.3 416 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3z\"],\"sort-down\":[320,512,[\"sort-desc\"],\"f0dd\",\"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z\"],\"circle-minus\":[512,512,[\"minus-circle\"],\"f056\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"],\"door-open\":[576,512,[],\"f52b\",\"M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 288h32V480 32zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128h96V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H512V128c0-35.3-28.7-64-64-64H352v64z\"],\"right-from-bracket\":[512,512,[\"sign-out-alt\"],\"f2f5\",\"M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"],atom:[512,512,[9883],\"f5d2\",\"M256 398.8c-11.8 5.1-23.4 9.7-34.9 13.5c16.7 33.8 31 35.7 34.9 35.7s18.1-1.9 34.9-35.7c-11.4-3.9-23.1-8.4-34.9-13.5zM446 256c33 45.2 44.3 90.9 23.6 128c-20.2 36.3-62.5 49.3-115.2 43.2c-22 52.1-55.6 84.8-98.4 84.8s-76.4-32.7-98.4-84.8c-52.7 6.1-95-6.8-115.2-43.2C21.7 346.9 33 301.2 66 256c-33-45.2-44.3-90.9-23.6-128c20.2-36.3 62.5-49.3 115.2-43.2C179.6 32.7 213.2 0 256 0s76.4 32.7 98.4 84.8c52.7-6.1 95 6.8 115.2 43.2c20.7 37.1 9.4 82.8-23.6 128zm-65.8 67.4c-1.7 14.2-3.9 28-6.7 41.2c31.8 1.4 38.6-8.7 40.2-11.7c2.3-4.2 7-17.9-11.9-48.1c-6.8 6.3-14 12.5-21.6 18.6zm-6.7-175.9c2.8 13.1 5 26.9 6.7 41.2c7.6 6.1 14.8 12.3 21.6 18.6c18.9-30.2 14.2-44 11.9-48.1c-1.6-2.9-8.4-13-40.2-11.7zM290.9 99.7C274.1 65.9 259.9 64 256 64s-18.1 1.9-34.9 35.7c11.4 3.9 23.1 8.4 34.9 13.5c11.8-5.1 23.4-9.7 34.9-13.5zm-159 88.9c1.7-14.3 3.9-28 6.7-41.2c-31.8-1.4-38.6 8.7-40.2 11.7c-2.3 4.2-7 17.9 11.9 48.1c6.8-6.3 14-12.5 21.6-18.6zM110.2 304.8C91.4 335 96 348.7 98.3 352.9c1.6 2.9 8.4 13 40.2 11.7c-2.8-13.1-5-26.9-6.7-41.2c-7.6-6.1-14.8-12.3-21.6-18.6zM336 256a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-80-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],soap:[512,512,[129532],\"e06e\",\"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM416 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 160c0 27.6-11.7 52.5-30.4 70.1C422.1 275.7 448 310.8 448 352c0 53-43 96-96 96H160c-53 0-96-43-96-96s43-96 96-96h88.4c-15.2-17-24.4-39.4-24.4-64H96c-53 0-96 43-96 96V416c0 53 43 96 96 96H416c53 0 96-43 96-96V288c0-53-43-96-96-96zM160 288c-35.3 0-64 28.7-64 64s28.7 64 64 64H352c35.3 0 64-28.7 64-64s-28.7-64-64-64H320 160z\"],icons:[512,512,[\"heart-music-camera-bolt\"],\"f86d\",\"M500.3 7.3C507.7 13.3 512 22.4 512 32V176c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V71L352 90.2V208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V64c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM74.7 304l11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2h61.7c10.7 0 20.7 5.3 26.6 14.2L213.3 304H240c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V352c0-26.5 21.5-48 48-48H74.7zM192 408a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM478.7 278.3L440.3 368H496c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.2-12.4-5.3-19.2L391.7 400H336c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112c5.6-4.9 13.9-5.3 19.9-.9s8.2 12.4 5.3 19.2zm-339-59.2c-6.5 6.5-17 6.5-23 0L19.9 119.2c-28-29-26.5-76.9 5-103.9c27-23.5 68.4-19 93.4 6.5l10 10.5 9.5-10.5c25-25.5 65.9-30 93.9-6.5c31 27 32.5 74.9 4.5 103.9l-96.4 99.9z\"],\"microphone-lines-slash\":[640,512,[\"microphone-alt-slash\"],\"f539\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8V256H358.9l-34.5-27c2.9-3.1 7-5 11.6-5h80V192H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zM358.2 378.2C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9z\"],\"bridge-circle-check\":[640,512,[],\"e4c9\",\"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"],\"pump-medical\":[448,512,[],\"e06a\",\"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM216 280v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V360H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V280c0-13.3 10.7-24 24-24s24 10.7 24 24z\"],fingerprint:[512,512,[],\"f577\",\"M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256v40c0 13.3 10.7 24 24 24s24-10.7 24-24V256zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1v40c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128v24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7V256c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256v24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8V256c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96v24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7V256c0-28.7 23.3-52 52-52s52 23.3 52 52v24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1V256c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24v24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9V256z\"],\"hand-point-right\":[512,512,[],\"f0a4\",\"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm64-64c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32c0 13.2 4 25.4 10.8 35.6C177.9 364.3 160 388.1 160 416c0 11.7 3.1 22.6 8.6 32l-8.6 0C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64l0 88c0 22.1-17.9 40-40 40s-40-17.9-40-40l0-56c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 56c0 39.8 32.2 72 72 72z\"],\"magnifying-glass-location\":[512,512,[\"search-location\"],\"f689\",\"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6c6 7.3 16.8 7.3 22.7 0c22.1-27 68.6-89.8 68.6-138.6zm-112 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"],\"forward-step\":[320,512,[\"step-forward\"],\"f051\",\"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241V96c0-17.7 14.3-32 32-32s32 14.3 32 32V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V271l-11.5 9.6-192 160z\"],\"face-smile-beam\":[512,512,[128522,\"smile-beam\"],\"f5b8\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"],\"flag-checkered\":[448,512,[127937],\"f11e\",\"M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1V345.8c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V400 334 64 32C0 14.3 14.3 0 32 0zM64 187.1l64-13.9v65.5L64 252.6V318l48.8-12.2c5.1-1.3 10.1-2.4 15.2-3.3V238.7l38.9-8.4c8.3-1.8 16.7-2.5 25.1-2.1l0-64c13.6 .4 27.2 2.6 40.4 6.4l23.6 6.9v66.7l-41.7-12.3c-7.3-2.1-14.8-3.4-22.3-3.8v71.4c21.8 1.9 43.3 6.7 64 14.4V244.2l22.7 6.7c13.5 4 27.3 6.4 41.3 7.4V194c-7.8-.8-15.6-2.3-23.2-4.5l-40.8-12v-62c-13-3.8-25.8-8.8-38.2-15c-8.2-4.1-16.9-7-25.8-8.8v72.4c-13-.4-26 .8-38.7 3.6L128 173.2V98L64 114v73.1zM320 335.7c16.8 1.5 33.9-.7 50-6.8l14-5.2V251.9l-7.9 1.8c-18.4 4.3-37.3 5.7-56.1 4.5v77.4zm64-149.4V115.4c-20.9 6.1-42.4 9.1-64 9.1V194c13.9 1.4 28 .5 41.7-2.6l22.3-5.2z\"],football:[512,512,[127944,\"football-ball\"],\"f44e\",\"M247.5 25.4c-13.5 3.3-26.4 7.2-38.6 11.7C142.9 61.6 96.7 103.6 66 153.6c-18.3 29.8-30.9 62.3-39.2 95.4L264.5 486.6c13.5-3.3 26.4-7.2 38.6-11.7c66-24.5 112.2-66.5 142.9-116.5c18.3-29.8 30.9-62.3 39.1-95.3L247.5 25.4zM495.2 205.3c6.1-56.8 1.4-112.2-7.7-156.4c-2.7-12.9-13-22.9-26.1-25.1c-58.2-9.7-109.9-12-155.6-7.9L495.2 205.3zM206.1 496L16.8 306.7c-6.1 56.8-1.4 112.2 7.7 156.4c2.7 12.9 13 22.9 26.1 25.1c58.2 9.7 109.9 12 155.6 7.9zm54.6-331.3c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6z\"],\"school-circle-exclamation\":[640,512,[],\"e56c\",\"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"],crop:[512,512,[],\"f125\",\"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 160 64v64l178.7 0L128 338.7V32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H173.3L384 173.3 384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-274.7z\"],\"angles-down\":[448,512,[\"angle-double-down\"],\"f103\",\"M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"],\"users-rectangle\":[640,512,[],\"e594\",\"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H544c53 0 96-43 96-96V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zm159.8 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3C119.9 256 96 279.9 96 309.3zM461.2 336h56.1c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6zM372 289c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-8.6-24.3-29.9-42.6-55.9-47zM512 176a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"],\"people-roof\":[640,512,[],\"e537\",\"M335.5 4l288 160c15.4 8.6 21 28.1 12.4 43.5s-28.1 21-43.5 12.4L320 68.6 47.5 220c-15.4 8.6-34.9 3-43.5-12.4s-3-34.9 12.4-43.5L304.5 4c9.7-5.4 21.4-5.4 31.1 0zM320 160a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM144 256a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm312 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM226.9 491.4L200 441.5V480c0 17.7-14.3 32-32 32H120c-17.7 0-32-14.3-32-32V441.5L61.1 491.4c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l37.9-70.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c16.3 0 31.9 4.5 45.4 12.6l33.6-62.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c32.4 0 62.1 17.8 77.5 46.3l33.6 62.3c13.5-8.1 29.1-12.6 45.4-12.6h19.5c32.4 0 62.1 17.8 77.5 46.3l37.9 70.3c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8L552 441.5V480c0 17.7-14.3 32-32 32H472c-17.7 0-32-14.3-32-32V441.5l-26.9 49.9c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l36.3-67.5c-1.7-1.7-3.2-3.6-4.3-5.8L376 345.5V400c0 17.7-14.3 32-32 32H296c-17.7 0-32-14.3-32-32V345.5l-26.9 49.9c-1.2 2.2-2.6 4.1-4.3 5.8l36.3 67.5c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8z\"],\"people-line\":[640,512,[],\"e534\",\"M360 72a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM144 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM496 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 217.5V272c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V217.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 340.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5z\"],\"beer-mug-empty\":[512,512,[\"beer\"],\"f0fc\",\"M32 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V96h51.2c42.4 0 76.8 34.4 76.8 76.8V274.9c0 30.4-17.9 57.9-45.6 70.2L384 381.7V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V64zM384 311.6l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7V172.8c0-7.1-5.7-12.8-12.8-12.8H384V311.6zM160 144c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144z\"],\"diagram-predecessor\":[512,512,[],\"e477\",\"M448 416l0-64L64 352l0 64 384 0zm0 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM288 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l144 0 16 0 144 0c44.2 0 80 35.8 80 80l0 16 38.1 0c21.4 0 32.1 25.9 17 41L433 239c-9.4 9.4-24.6 9.4-33.9 0L329 169c-15.1-15.1-4.4-41 17-41l38.1 0 0-16c0-8.8-7.2-16-16-16l-80 0 0 64z\"],\"arrow-up-long\":[384,512,[\"long-arrow-up\"],\"f176\",\"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"],\"fire-flame-simple\":[384,512,[\"burn\"],\"f46a\",\"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5c0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"],person:[320,512,[129485,\"male\"],\"f183\",\"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152z\"],laptop:[640,512,[128187],\"f109\",\"M128 32C92.7 32 64 60.7 64 96V352h64V96H512V352h64V96c0-35.3-28.7-64-64-64H128zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480H563.2c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2H19.2z\"],\"file-csv\":[512,512,[],\"f6dd\",\"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM200 352h16c22.1 0 40 17.9 40 40v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-8c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40zm133.1 0H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H333.1c-7.2 0-13.1 5.9-13.1 13.1c0 5.2 3 9.9 7.8 12l37.4 16.6c16.3 7.2 26.8 23.4 26.8 41.2c0 24.9-20.2 45.1-45.1 45.1H304c-8.8 0-16-7.2-16-16s7.2-16 16-16h42.9c7.2 0 13.1-5.9 13.1-13.1c0-5.2-3-9.9-7.8-12l-37.4-16.6c-16.3-7.2-26.8-23.4-26.8-41.2c0-24.9 20.2-45.1 45.1-45.1zm98.9 0c8.8 0 16 7.2 16 16v31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66V368c0-8.8 7.2-16 16-16s16 7.2 16 16v31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6V368c0-8.8 7.2-16 16-16z\"],menorah:[640,512,[],\"f676\",\"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32S0 81.7 0 64V62.8c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32V288c0 17.7 14.3 32 32 32H288V160c0-17.7 14.3-32 32-32s32 14.3 32 32V320H544c17.7 0 32-14.3 32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 53-43 96-96 96H352v64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V384H96c-53 0-96-43-96-96V160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H96V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H192V256 160c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32v96 32H384V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H480V256 160c0-17.7 14.3-32 32-32z\"],\"truck-plane\":[640,512,[],\"e58f\",\"M200 0c-30.6 0-56 54.7-56 86.1V192.5L7.8 274.3C2.9 277.2 0 282.4 0 288v64c0 5.1 2.4 9.8 6.4 12.8s9.3 3.9 14.1 2.5l123.4-37v81.2l-50 40c-3.8 3-6 7.6-6 12.5v32c0 5.1 2.5 10 6.6 13s9.5 3.8 14.4 2.2L200 480.9 290.4 511c-1.6-4.7-2.4-9.8-2.4-15V463.4c-18.2-10.5-30.7-29.7-31.9-51.8l-.1-.1V408 325.5 184l0-1.1 0 0V86.1C256 54.7 231.5 0 200 0zm88 176V400c0 20.9 13.4 38.7 32 45.3V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V448H544v40c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V445.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48zm79.8 78.7c3.3-8.7 11.2-14.7 20.5-14.7H539.7c9.2 0 17.2 6 20.5 14.7L576 304H352l15.8-49.3zM568 352a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM336 376a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"],\"record-vinyl\":[512,512,[],\"f8d9\",\"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 224a128 128 0 1 0 0-256 128 128 0 1 0 0 256zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"face-grin-stars\":[512,512,[129321,\"grin-stars\"],\"f587\",\"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm407.4 75.5c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z\"],bong:[448,512,[],\"f55c\",\"M160 208.5c0 29.1-15.6 53.9-37.2 67.8c-17.2 11.1-31.5 26.1-41.7 43.7H302.9c-10.2-17.6-24.5-32.6-41.7-43.7c-21.6-13.9-37.2-38.7-37.2-67.8V64H160V208.5zM288 64V208.5c0 5.7 3.1 10.9 7.9 14c11.2 7.2 21.5 15.5 30.9 24.8L366.1 208l-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l24 24 24 24c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3C374 314.1 384 347.9 384 384c0 39.4-11.9 76.1-32.2 106.5c-9.6 14.4-26.5 21.5-43.8 21.5H76.1c-17.3 0-34.2-7.1-43.8-21.5C11.9 460.1 0 423.4 0 384c0-67.8 35.1-127.3 88.1-161.5c4.8-3.1 7.9-8.3 7.9-14V64C78.3 64 64 49.7 64 32S78.3 0 96 0h16H272h16c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"],\"spaghetti-monster-flying\":[640,512,[\"pastafarianism\"],\"f67b\",\"M208 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3C390 95.1 384 80.2 384 64c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4c7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4C527.3 262.3 532.7 264 536 264c2.5 0 4.3-.6 7.1-3.3c3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7c9.7-9.3 22.9-16.7 40.4-16.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3c-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7c-9.7 9.3-22.9 16.7-40.4 16.7c-18.5 0-32.9-8.5-44.3-18.6c-3.1 4-6.6 8.3-10.5 12.7c1.4 4.3 2.8 8.5 4 12.5c.9 3 1.8 5.8 2.6 8.6c3 9.8 5.5 18.2 8.6 25.9c3.9 9.8 7.4 15.4 10.8 18.5c2.6 2.4 5.9 4.3 12.8 4.3c8.7 0 16.9-4.2 33.7-13.2c15-8 35.7-18.8 62.3-18.8c13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2c-1 .6-2.1 1.1-3.2 1.7C559.9 414 541.4 424 520 424c-18.4 0-33.6-6.1-45.5-17.2c-11.1-10.3-17.9-23.7-22.7-36c-3.6-9-6.7-19.1-9.5-28.5c-16.4 12.3-36.1 23.6-58.9 31.3c3.6 10.8 8.4 23.5 14.4 36.2c7.5 15.9 16.2 30.4 25.8 40.5C433 460.5 441.2 464 448 464c13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8c-14.5-15.4-25.7-34.9-34.2-53c-8-17-14.1-33.8-18.3-46.9c-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9c-8.5 18.1-19.8 37.6-34.2 53C237 498.5 217.2 512 192 512c-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7c9.5-10.1 18.3-24.6 25.8-40.5c5.9-12.6 10.7-25.4 14.4-36.2c-22.8-7.7-42.5-19-58.9-31.3c-2.9 9.4-6 19.5-9.5 28.5c-4.8 12.2-11.6 25.6-22.7 36C153.6 417.9 138.4 424 120 424c-21.4 0-39.9-10-53.1-17.1l0 0c-1.1-.6-2.2-1.2-3.2-1.7c-15-8-26.3-13.2-39.7-13.2c-13.3 0-24-10.7-24-24s10.7-24 24-24c26.6 0 47.3 10.8 62.3 18.8c16.8 9 25 13.2 33.7 13.2c6.8 0 10.2-1.9 12.8-4.3c3.4-3.2 7-8.8 10.8-18.5c3-7.7 5.6-16.1 8.6-25.9c.8-2.7 1.7-5.6 2.6-8.6c1.2-4 2.6-8.2 4-12.5c-3.9-4.5-7.4-8.8-10.5-12.7C136.9 303.5 122.5 312 104 312c-17.5 0-30.7-7.4-40.4-16.7c-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4c-2.8-2.7-4.6-3.3-7.1-3.3c-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7c8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4c2.8 2.7 4.6 3.3 7.1 3.3c3.3 0 8.7-1.7 19.4-13.4c5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24c13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm208 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"],\"arrow-down-up-across-line\":[576,512,[],\"e4af\",\"M137.4 502.6c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V288H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H448V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 109.3V224H192 128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96zM128 192h64V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192zM448 320H384V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320z\"],spoon:[512,512,[129348,61873,\"utensil-spoon\"],\"f2e5\",\"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8C224 80 320 0 416 0c53 0 96 43 96 96c0 96-80 192-160.2 192c-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"],\"jar-wheat\":[320,512,[],\"e517\",\"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm112 0H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 198 90 224 122.2 224H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 294 90 320 122.2 320H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7zM112 352H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 390 90 416 122.2 416H144v32c0 8.8 7.2 16 16 16s16-7.2 16-16V416h21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7z\"],\"envelopes-bulk\":[640,512,[\"mail-bulk\"],\"f674\",\"M128 0C110.3 0 96 14.3 96 32V224h96V192c0-35.3 28.7-64 64-64H480V32c0-17.7-14.3-32-32-32H128zM256 160c-17.7 0-32 14.3-32 32v32h96c35.3 0 64 28.7 64 64V416H576c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H256zm240 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM64 256c-17.7 0-32 14.3-32 32v13L187.1 415.9c1.4 1 3.1 1.6 4.9 1.6s3.5-.6 4.9-1.6L352 301V288c0-17.7-14.3-32-32-32H64zm288 84.8L216 441.6c-6.9 5.1-15.3 7.9-24 7.9s-17-2.8-24-7.9L32 340.8V480c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V340.8z\"],\"file-circle-exclamation\":[576,512,[],\"e4eb\",\"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"],\"circle-h\":[512,512,[9405,\"hospital-symbol\"],\"f47e\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM368 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H192l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H320V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"],pager:[512,512,[128223],\"f815\",\"M0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zm64 32v64c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H80zm136 0c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H216z\"],\"address-book\":[512,512,[62138,\"contact-book\"],\"f2b9\",\"M96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM208 288h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z\"],strikethrough:[512,512,[],\"f0cc\",\"M161.3 144c3.2-17.2 14-30.1 33.7-38.6c21.1-9 51.8-12.3 88.6-6.5c11.9 1.9 48.8 9.1 60.1 12c17.1 4.5 34.6-5.6 39.2-22.7s-5.6-34.6-22.7-39.2c-14.3-3.8-53.6-11.4-66.6-13.4c-44.7-7-88.3-4.2-123.7 10.9c-36.5 15.6-64.4 44.8-71.8 87.3c-.1 .6-.2 1.1-.2 1.7c-2.8 23.9 .5 45.6 10.1 64.6c4.5 9 10.2 16.9 16.7 23.9H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H270.1c-.1 0-.3-.1-.4-.1l-1.1-.3c-36-10.8-65.2-19.6-85.2-33.1c-9.3-6.3-15-12.6-18.2-19.1c-3.1-6.1-5.2-14.6-3.8-27.4zM348.9 337.2c2.7 6.5 4.4 15.8 1.9 30.1c-3 17.6-13.8 30.8-33.9 39.4c-21.1 9-51.7 12.3-88.5 6.5c-18-2.9-49.1-13.5-74.4-22.1c-5.6-1.9-11-3.7-15.9-5.4c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c3.6 1.2 7.9 2.7 12.7 4.3l0 0 0 0c24.9 8.5 63.6 21.7 87.6 25.6l0 0 .2 0c44.7 7 88.3 4.2 123.7-10.9c36.5-15.6 64.4-44.8 71.8-87.3c3.6-21 2.7-40.4-3.1-58.1H335.1c7 5.6 11.4 11.2 13.9 17.2z\"],k:[320,512,[107],\"4b\",\"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7l-155.2 160L64 249V64c0-17.7-14.3-32-32-32S0 46.3 0 64V328 448c0 17.7 14.3 32 32 32s32-14.3 32-32V341l64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"],\"landmark-flag\":[512,512,[],\"e51c\",\"M272 0h80c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H272v32H464c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H240V16c0-8.8 7.2-16 16-16h16zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"],pencil:[512,512,[9999,61504,\"pencil-alt\"],\"f303\",\"M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"],backward:[512,512,[9194],\"f04a\",\"M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3V256v41.7L459.5 440.6zM256 352V256 128 96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V352z\"],\"caret-right\":[256,512,[],\"f0da\",\"M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z\"],comments:[640,512,[128490,61670],\"f086\",\"M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.3-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z\"],paste:[512,512,[\"file-clipboard\"],\"f0ea\",\"M160 0c-23.7 0-44.4 12.9-55.4 32H48C21.5 32 0 53.5 0 80V400c0 26.5 21.5 48 48 48H192V176c0-44.2 35.8-80 80-80h48V80c0-26.5-21.5-48-48-48H215.4C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48V448v16c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V243.9c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1H320 272zM160 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"],\"code-pull-request\":[512,512,[],\"e13c\",\"M305.8 2.1C314.4 5.9 320 14.5 320 24V64h16c70.7 0 128 57.3 128 128V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-35.3-28.7-64-64-64H320v40c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1zM104 80A24 24 0 1 0 56 80a24 24 0 1 0 48 0zm8 73.3V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80c0 32.8-19.7 61-48 73.3zM104 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm328 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"],\"clipboard-list\":[384,512,[],\"f46d\",\"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM72 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zM72 368a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm88 0c0-8.8 7.2-16 16-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16z\"],\"truck-ramp-box\":[640,512,[\"truck-loading\"],\"f4de\",\"M640 0V400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8V64c0-35.3 28.7-64 64-64H640zM576 400a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM23.1 207.7c-4.6-17.1 5.6-34.6 22.6-39.2l46.4-12.4 20.7 77.3c2.3 8.5 11.1 13.6 19.6 11.3l30.9-8.3c8.5-2.3 13.6-11.1 11.3-19.6l-20.7-77.3 46.4-12.4c17.1-4.6 34.6 5.6 39.2 22.6l41.4 154.5c4.6 17.1-5.6 34.6-22.6 39.2L103.7 384.9c-17.1 4.6-34.6-5.6-39.2-22.6L23.1 207.7z\"],\"user-check\":[640,512,[],\"f4fc\",\"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM625 177L497 305c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"],\"vial-virus\":[512,512,[],\"e597\",\"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V384c0 53 43 96 96 96c28.6 0 54.2-12.5 71.8-32.3c.1-14.2 5.6-28.3 16.4-39.1c.2-.2 .1-.6-.2-.6c-30.9 0-56-25.1-56-56s25.1-56 56-56c.3 0 .4-.4 .2-.6c-21.9-21.9-21.9-57.3 0-79.2c2.4-2.4 5-4.6 7.8-6.5V96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 96 32zM96 192V96h64v96H96zM216 376c28.8 0 43.2 34.8 22.9 55.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9c0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9C444.8 410.8 459.2 376 488 376c13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0C410.8 259.2 376 244.8 376 216c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2c-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-88a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm40 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"],\"sheet-plastic\":[384,512,[],\"e571\",\"M0 448c0 35.3 28.7 64 64 64H224V384c0-17.7 14.3-32 32-32H384V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448zM171.3 75.3l-96 96c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l96-96c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm96 32l-160 160c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l160-160c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM384 384H256V512L384 384z\"],blog:[512,512,[],\"f781\",\"M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144V368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144H128v96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48V144z\"],\"user-ninja\":[448,512,[129399],\"f504\",\"M224 256c-57.2 0-105.6-37.5-122-89.3c-1.1 1.3-2.2 2.6-3.5 3.8c-15.8 15.8-38.8 20.7-53.6 22.1c-8.1 .8-14.6-5.7-13.8-13.8c1.4-14.7 6.3-37.8 22.1-53.6c5.8-5.8 12.6-10.1 19.6-13.4c-7-3.2-13.8-7.6-19.6-13.4C37.4 82.7 32.6 59.7 31.1 44.9c-.8-8.1 5.7-14.6 13.8-13.8c14.7 1.4 37.8 6.3 53.6 22.1c4.8 4.8 8.7 10.4 11.7 16.1C131.4 28.2 174.4 0 224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zM0 482.3C0 399.5 56.4 330 132.8 309.9c6-1.6 12.2 .9 15.9 5.8l62.5 83.3c6.4 8.5 19.2 8.5 25.6 0l62.5-83.3c3.7-4.9 9.9-7.4 15.9-5.8C391.6 330 448 399.5 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM160 96c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H160z\"],\"person-arrow-up-from-line\":[640,512,[],\"e539\",\"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM598.6 121.4l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L464 141.3 464 384c0 17.7 14.3 32 32 32s32-14.3 32-32V141.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"],\"scroll-torah\":[640,512,[\"torah\"],\"f6a0\",\"M96 480V32C96 14.3 74.5 0 48 0S0 14.3 0 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32zM512 32H128V480H512V32zM592 0c-26.5 0-48 14.3-48 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32V32c0-17.7-21.5-32-48-32zM196 313.7c0-3.2 .9-6.4 2.5-9.2L226.7 256l-28.3-48.5c-1.6-2.8-2.5-6-2.5-9.2c0-10.1 8.2-18.3 18.3-18.3H271l31.4-53.9c3.6-6.3 10.3-10.1 17.6-10.1s13.9 3.8 17.6 10.1L369 180h56.7c10.1 0 18.3 8.2 18.3 18.3c0 3.2-.9 6.4-2.5 9.2L413.3 256l28.3 48.5c1.6 2.8 2.5 6 2.5 9.2c0 10.1-8.2 18.3-18.3 18.3H369l-31.4 53.9c-3.6 6.3-10.3 10.1-17.6 10.1s-13.9-3.8-17.6-10.1L271 332H214.3c-10.1 0-18.3-8.2-18.3-18.3zm124 54.7L341.2 332H298.8L320 368.4zM254.5 256l30.3 52h70.4l30.3-52-30.3-52H284.8l-30.3 52zm144.9 23.8L383 308h32.8l-16.4-28.2zM415.8 204H383l16.4 28.2L415.8 204zM320 143.6L298.8 180h42.4L320 143.6zM224.2 204l16.4 28.2L257 204H224.2zM257 308l-16.4-28.2L224.2 308H257z\"],\"broom-ball\":[576,512,[\"quidditch\",\"quidditch-broom-ball\"],\"f458\",\"M566.6 9.4c12.5 12.5 12.5 32.8 0 45.3l-192 192 34.7 34.7c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H364.3L256 211.7V182.6c0-12.5 10.1-22.6 22.6-22.6c6 0 11.8 2.4 16 6.6l34.7 34.7 192-192c12.5-12.5 32.8-12.5 45.3 0zm-344 225.5L341.1 353.4c3.7 42.7-11.7 85.2-42.3 115.8C271.4 496.6 234.2 512 195.5 512L22.1 512C9.9 512 0 502.1 0 489.9c0-6.3 2.7-12.3 7.3-16.5L133.7 359.7c4.2-3.7-.4-10.4-5.4-7.9L77.2 377.4c-6.1 3-13.2-1.4-13.2-8.2c0-31.5 12.5-61.7 34.8-84l8-8c30.6-30.6 73.1-45.9 115.8-42.3zM464 352a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"],\"toggle-off\":[576,512,[],\"f204\",\"M384 128c70.7 0 128 57.3 128 128s-57.3 128-128 128H192c-70.7 0-128-57.3-128-128s57.3-128 128-128H384zM576 256c0-106-86-192-192-192H192C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192zM192 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"],\"box-archive\":[512,512,[\"archive\"],\"f187\",\"M32 32H480c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H32C14.3 128 0 113.7 0 96V64C0 46.3 14.3 32 32 32zm0 128H480V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V160zm128 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"],\"person-drowning\":[576,512,[],\"e545\",\"M192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V96.2c0 54.1 23.5 104 62.2 138.3l-21 146.7c7.8 2.1 15.5 3.3 22.8 3.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c12.4 8.5 26.1 14.8 39.7 18l17.7-97.6c10.7-1.2 21.3-3.1 31.9-5.5l105-23.9c17.2-3.9 28-21.1 24.1-38.3s-21.1-28-38.3-24.1L400 216.6c-41 9.3-83.7 7.5-123.7-5.2c-50.2-16-84.3-62.6-84.3-115.3V64zM320 192a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM306.5 389.9c-11.1-7.9-25.9-7.9-37 0C247 405.4 219.5 416 192 416c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 469.7 159 480 192 480c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 405.2 410.9 416 384 416c-27.5 0-55-10.6-77.5-26.1z\"],\"arrow-down-9-1\":[576,512,[\"sort-numeric-desc\",\"sort-numeric-down-alt\"],\"f886\",\"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM450.7 294c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V416H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V320c0-10.3-4.9-19.9-13.3-26zM418.3 91a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 91zM405.1 203.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"],\"face-grin-tongue-squint\":[512,512,[128541,\"grin-tongue-squint\"],\"f58a\",\"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM116 141.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"],\"spray-can\":[512,512,[],\"f5bd\",\"M128 0h64c17.7 0 32 14.3 32 32v96H96V32c0-17.7 14.3-32 32-32zM0 256c0-53 43-96 96-96H224c53 0 96 43 96 96V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V256zm240 80A80 80 0 1 0 80 336a80 80 0 1 0 160 0zM256 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM448 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"truck-monster\":[640,512,[],\"f63b\",\"M288 64v64H416L368 64H288zM419.2 25.6L496 128h80c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64H288c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H224V48c0-26.5 21.5-48 48-48h96c20.1 0 39.1 9.5 51.2 25.6zM152 256h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.7 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.3 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.3 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.8 3.7-14.1 6.8-21.7 9C190.1 503.1 180.1 512 168 512H152c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2L63.8 468.9c-8.6-8.6-9.3-21.9-2.3-31.3c-3.7-6.9-6.8-14.1-9-21.8C40.9 414.1 32 404.1 32 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.3-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9c1.7-11.6 11.7-20.6 23.8-20.6zm8 176a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM448.2 276.6c1.7-11.6 11.7-20.6 23.8-20.6h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.8 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.2 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.2 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.9 3.7-14.1 6.8-21.8 9C510.1 503.1 500.1 512 488 512H472c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2l-11.3-11.3c-8.6-8.6-9.3-21.9-2.2-31.3c-3.7-6.9-6.8-14.1-9-21.8C360.9 414.1 352 404.1 352 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.2-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9zM528 384a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"],w:[576,512,[119],\"57\",\"M20.8 34c16.5-6.2 35 2.2 41.2 18.7l110.2 294L257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23l85.1 291.7L514 52.8c6.2-16.5 24.6-24.9 41.2-18.7s24.9 24.7 18.7 41.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"],\"earth-africa\":[512,512,[127757,\"globe-africa\"],\"f57c\",\"M177.8 63.2l10 17.4c2.8 4.8 4.2 10.3 4.2 15.9v41.4c0 3.9 1.6 7.7 4.3 10.4c6.2 6.2 16.5 5.7 22-1.2l13.6-17c4.7-5.9 12.9-7.7 19.6-4.3l15.2 7.6c3.4 1.7 7.2 2.6 11 2.6c6.5 0 12.8-2.6 17.4-7.2l3.9-3.9c2.9-2.9 7.3-3.6 11-1.8l29.2 14.6c7.8 3.9 12.6 11.8 12.6 20.5c0 10.5-7.1 19.6-17.3 22.2l-35.4 8.8c-7.4 1.8-15.1 1.5-22.4-.9l-32-10.7c-3.3-1.1-6.7-1.7-10.2-1.7c-7 0-13.8 2.3-19.4 6.5L176 212c-10.1 7.6-16 19.4-16 32v28c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16v48c0 17.7 14.3 32 32 32c10.1 0 19.6-4.7 25.6-12.8l25.6-34.1c8.3-11.1 12.8-24.6 12.8-38.4V318.6c0-3.9 2.6-7.3 6.4-8.2l5.3-1.3c11.9-3 20.3-13.7 20.3-26c0-7.1-2.8-13.9-7.8-18.9l-33.5-33.5c-3.7-3.7-3.7-9.7 0-13.4c5.7-5.7 14.1-7.7 21.8-5.1l14.1 4.7c12.3 4.1 25.7-1.5 31.5-13c3.5-7 11.2-10.8 18.9-9.2l27.4 5.5C432 112.4 351.5 48 256 48c-27.7 0-54 5.4-78.2 15.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"],rainbow:[640,512,[127752],\"f75b\",\"M320 96C178.6 96 64 210.6 64 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C0 175.3 143.3 32 320 32s320 143.3 320 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C576 210.6 461.4 96 320 96zm0 192c-35.3 0-64 28.7-64 64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-70.7 57.3-128 128-128s128 57.3 128 128v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-35.3-28.7-64-64-64zM160 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-123.7 100.3-224 224-224s224 100.3 224 224v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-88.4-71.6-160-160-160s-160 71.6-160 160z\"],\"circle-notch\":[512,512,[],\"f1ce\",\"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z\"],\"tablet-screen-button\":[448,512,[\"tablet-alt\"],\"f3fa\",\"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM256 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64H64V384H384V64z\"],paw:[512,512,[],\"f1b0\",\"M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5v1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3v-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z\"],cloud:[640,512,[9729],\"f0c2\",\"M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z\"],\"trowel-bricks\":[512,512,[],\"e58a\",\"M240.8 4.8C250.3 10.6 256 20.9 256 32v72h89c3.6-13.8 16.1-24 31-24h88c26.5 0 48 21.5 48 48s-21.5 48-48 48H376c-14.9 0-27.4-10.2-31-24H256v72c0 11.1-5.7 21.4-15.2 27.2s-21.2 6.4-31.1 1.4l-192-96C6.8 151.2 0 140.1 0 128s6.8-23.2 17.7-28.6l192-96c9.9-5 21.7-4.4 31.1 1.4zM288 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V256zM32 384h96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32zm192 0H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32z\"],\"face-flushed\":[512,512,[128563,\"flushed\"],\"f579\",\"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM176 384c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16s-7.2-16-16-16H192c-8.8 0-16 7.2-16 16zm-16-88a72 72 0 1 0 0-144 72 72 0 1 0 0 144zm264-72a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zm-288 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm192 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"],\"hospital-user\":[576,512,[],\"f80d\",\"M48 0C21.5 0 0 21.5 0 48V256H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v64H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v80c0 26.5 21.5 48 48 48H265.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM152 64h16c8.8 0 16 7.2 16 16v24h24c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H184v24c0 8.8-7.2 16-16 16H152c-8.8 0-16-7.2-16-16V152H112c-8.8 0-16-7.2-16-16V120c0-8.8 7.2-16 16-16h24V80c0-8.8 7.2-16 16-16zM512 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM288 477.1c0 19.3 15.6 34.9 34.9 34.9H541.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H381.1c-51.4 0-93.1 41.7-93.1 93.1z\"],\"tent-arrow-left-right\":[576,512,[],\"e57f\",\"M488.1 6.2c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9L489.5 72 86.5 72l33.5-30.2c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120l402.9 0-33.5 30.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H240h16c17.7 0 32-14.3 32-32V361.9c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7H464h16c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"],gavel:[512,512,[\"legal\"],\"f0e3\",\"M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z\"],binoculars:[512,512,[],\"f1e5\",\"M128 32h32c17.7 0 32 14.3 32 32V96H96V64c0-17.7 14.3-32 32-32zm64 96V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V388.9c0-34.6 9.4-68.6 27.2-98.3C40.9 267.8 49.7 242.4 53 216L60.5 156c2-16 15.6-28 31.8-28H192zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6c17.8 29.7 27.2 63.7 27.2 98.3V448c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V128h99.8zM320 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V96H320V64zm-32 64V288H224V128h64z\"],\"microphone-slash\":[640,512,[],\"f131\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 21.2-5.1 41.1-14.2 58.7L416 300.8V96c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zm362.5 407l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2z\"],\"box-tissue\":[512,512,[],\"e05b\",\"M92.5 0H208c40 0 52 24 64 48s24 48 64 48h85.2C436 96 448 108 448 122.8c0 3.4-.7 6.8-1.9 10L409.6 224 384 288H128l-16-64L64.9 35.4c-.6-2.3-.9-4.6-.9-6.9C64 12.8 76.8 0 92.5 0zM79 224l16 64H80c-8.8 0-16 7.2-16 16s7.2 16 16 16h48H384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H418.5l25.6-64H464c26.5 0 48 21.5 48 48V384H0V272c0-26.5 21.5-48 48-48H79zM0 416H512v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V416z\"],motorcycle:[640,512,[127949],\"f21c\",\"M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h57.7l16.4 30.3L256 192l-45.3-45.3c-12-12-28.3-18.7-45.3-18.7H64c-17.7 0-32 14.3-32 32v32h96c88.4 0 160 71.6 160 160c0 11-1.1 21.7-3.2 32h70.4c-2.1-10.3-3.2-21-3.2-32c0-52.2 25-98.6 63.7-127.8l15.4 28.6C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L418.2 128H480c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H459.6c-7.5 0-14.7 2.6-20.5 7.4L391.7 78.9l-14-26c-7-12.9-20.5-21-35.2-21H280zM462.7 311.2l28.2 52.2c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-28.2-52.2c2.3-.3 4.7-.4 7.1-.4c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-15.5 5.5-29.7 14.7-40.8zM187.3 376c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c26.9 0 49.9 16.5 59.3 40h66.4C242.5 268.8 190.5 224 128 224C57.3 224 0 281.3 0 352s57.3 128 128 128c62.5 0 114.5-44.8 125.8-104H187.3zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"bell-concierge\":[512,512,[128718,\"concierge-bell\"],\"f562\",\"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24h16v33.3C119.6 157.2 32 252.4 32 368H480c0-115.6-87.6-210.8-200-222.7V112h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H256 216zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"],\"pen-ruler\":[512,512,[\"pencil-ruler\"],\"f5ae\",\"M469.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L322.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM44.9 353.2L299.7 98.3 413.7 212.3 158.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2zM249.4 103.4L103.4 249.4 16 161.9c-18.7-18.7-18.7-49.1 0-67.9L94.1 16c18.7-18.7 49.1-18.7 67.9 0l19.8 19.8c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1l45.1 45.1zM408.6 262.6l45.1 45.1c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1L496 350.1c18.7 18.7 18.7 49.1 0 67.9L417.9 496c-18.7 18.7-49.1 18.7-67.9 0l-87.4-87.4L408.6 262.6z\"],\"people-arrows\":[640,512,[\"people-arrows-left-right\"],\"e068\",\"M64 64a64 64 0 1 1 128 0A64 64 0 1 1 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160h44.8c27 0 51 13.4 65.5 34.1c-2.7 1.9-5.2 4-7.5 6.3l-64 64c-21.9 21.9-21.9 57.3 0 79.2L192 391.2V464c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V348.3c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3zM448 64a64 64 0 1 1 128 0A64 64 0 1 1 448 64zM431.6 200.4c-2.3-2.3-4.9-4.4-7.5-6.3c14.5-20.7 38.6-34.1 65.5-34.1h44.8c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6V464c0 26.5-21.5 48-48 48H496c-26.5 0-48-21.5-48-48V391.2l47.6-47.6c21.9-21.9 21.9-57.3 0-79.2l-64-64zM272 240v32h96V240c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V336H272v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2z\"],\"mars-and-venus-burst\":[640,512,[],\"e523\",\"M504 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39-22.2 22.2C475.9 78.4 439.6 64 400 64c-88.4 0-160 71.6-160 160c0 80.2 59 146.6 136 158.2V408H352c-13.3 0-24 10.7-24 24s10.7 24 24 24h24v32c0 13.3 10.7 24 24 24s24-10.7 24-24V456h24c13.3 0 24-10.7 24-24s-10.7-24-24-24H424V382.2c77-11.6 136-78 136-158.2c0-31.4-9-60.7-24.7-85.4L560 113.9l39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H504zM400 128a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.1 3.8 9.9 5.1 15.2 3.6C223.6 310.8 208 269.2 208 224c0-60.8 28.3-115 72.4-150.2L220.3 92.1l-29.4-74z\"],\"square-caret-right\":[448,512,[\"caret-square-right\"],\"f152\",\"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"],scissors:[512,512,[9984,9986,9988,\"cut\"],\"f0c4\",\"M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM64 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm48 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"],\"sun-plant-wilt\":[640,512,[],\"e57a\",\"M160 0c-6.3 0-12 3.7-14.6 9.5L120.6 64.9 63.9 43.2c-5.9-2.3-12.6-.8-17 3.6s-5.9 11.1-3.6 17l21.7 56.7L9.5 145.4C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8L43.2 256.1c-2.3 5.9-.8 12.6 3.6 17s11.1 5.9 17 3.6l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.7 21.7c5.9 2.3 12.6 .8 17-3.6s5.9-11.1 3.6-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7c2.3-5.9 .8-12.6-3.6-17s-11.1-5.9-17-3.6L199.4 64.9 174.6 9.5C172 3.7 166.3 0 160 0zm0 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm312 16c0-17.7 14.3-32 32-32s32 14.3 32 32v53.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C624 318 640 290.7 640 274c0-21.5-9.2-37-24-44.6V176c0-44.2-35.8-80-80-80s-80 35.8-80 80v22.7c-9.8-4.3-20.6-6.7-32-6.7c-44.2 0-80 35.8-80 80v21.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C400 382 416 354.7 416 338c0-21.5-9.2-37-24-44.6V272c0-17.7 14.3-32 32-32s32 14.3 32 32v8V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H504V280v-8V176z\"],\"toilets-portable\":[576,512,[],\"e584\",\"M32 0H224c17.7 0 32 14.3 32 32V64H0V32C0 14.3 14.3 0 32 0zM0 96H24 232h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H48v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM192 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16zM352 0H544c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32zM320 96h24H552h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H368v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM512 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16z\"],\"hockey-puck\":[512,512,[],\"f453\",\"M256 256C114.6 256 0 213 0 160s114.6-96 256-96s256 43 256 96s-114.6 96-256 96zm192.3 1.8c24.7-9.3 46.9-21 63.7-35.6V352c0 53-114.6 96-256 96S0 405 0 352V222.3c16.8 14.6 39 26.3 63.7 35.6C114.5 276.9 182.5 288 256 288s141.5-11.1 192.3-30.2z\"],table:[512,512,[],\"f0ce\",\"M64 256V160H224v96H64zm0 64H224v96H64V320zm224 96V320H448v96H288zM448 256H288V160H448v96zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"],\"magnifying-glass-arrow-right\":[512,512,[],\"e521\",\"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM241 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31H120c-13.3 0-24 10.7-24 24s10.7 24 24 24H238.1l-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72z\"],\"tachograph-digital\":[640,512,[\"digital-tachograph\"],\"f566\",\"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm32 64H320c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zM64 368c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm320 0c0-8.8 7.2-16 16-16H560c8.8 0 16 7.2 16 16s-7.2 16-16 16H400c-8.8 0-16-7.2-16-16zM80 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"],\"users-slash\":[640,512,[],\"e073\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320H618.7c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 30.2-10.5 58-28 79.9l-25.2-19.7C408.1 267.7 416 246.8 416 224c0-53-43-96-96-96c-31.1 0-58.7 14.8-76.3 37.7l-40.6-31.8c13-14.2 20.9-33.1 20.9-53.9c0-44.2-35.8-80-80-80C116.3 0 91.9 14.1 77.5 35.5L38.8 5.1zM106.7 192C47.8 192 0 239.8 0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-20.6-18.2-35.2-42.8-40.8-70.8L121.8 192H106.7zM261.3 352C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H485.3c10.5 0 19.5-6 23.9-14.8L324.9 352H261.3zM512 160A80 80 0 1 0 512 0a80 80 0 1 0 0 160z\"],clover:[448,512,[],\"e139\",\"M216.6 49.9C205.1 38.5 189.5 32 173.3 32C139.4 32 112 59.4 112 93.3v4.9c0 12 3.3 23.7 9.4 34l18.8 31.3c1.1 1.8 1.2 3.1 1 4.2c-.2 1.2-.8 2.5-2 3.6s-2.4 1.8-3.6 2c-1 .2-2.4 .1-4.2-1l-31.3-18.8c-10.3-6.2-22-9.4-34-9.4H61.3C27.4 144 0 171.4 0 205.3c0 16.2 6.5 31.8 17.9 43.3l1.2 1.2c3.4 3.4 3.4 9 0 12.4l-1.2 1.2C6.5 274.9 0 290.5 0 306.7C0 340.6 27.4 368 61.3 368h4.9c12 0 23.7-3.3 34-9.4l31.3-18.8c1.8-1.1 3.1-1.2 4.2-1c1.2 .2 2.5 .8 3.6 2s1.8 2.4 2 3.6c.2 1 .1 2.4-1 4.2l-18.8 31.3c-6.2 10.3-9.4 22-9.4 34v4.9c0 33.8 27.4 61.3 61.3 61.3c16.2 0 31.8-6.5 43.3-17.9l1.2-1.2c3.4-3.4 9-3.4 12.4 0l1.2 1.2c11.5 11.5 27.1 17.9 43.3 17.9c33.8 0 61.3-27.4 61.3-61.3v-4.9c0-12-3.3-23.7-9.4-34l-18.8-31.3c-1.1-1.8-1.2-3.1-1-4.2c.2-1.2 .8-2.5 2-3.6s2.4-1.8 3.6-2c1-.2 2.4-.1 4.2 1l31.3 18.8c10.3 6.2 22 9.4 34 9.4h4.9c33.8 0 61.3-27.4 61.3-61.3c0-16.2-6.5-31.8-17.9-43.3l-1.2-1.2c-3.4-3.4-3.4-9 0-12.4l1.2-1.2c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3h-4.9c-12 0-23.7 3.3-34 9.4l-31.3 18.8c-1.8 1.1-3.1 1.2-4.2 1c-1.2-.2-2.5-.8-3.6-2s-1.8-2.4-2-3.6c-.2-1-.1-2.4 1-4.2l18.8-31.3c6.2-10.3 9.4-22 9.4-34V93.3C336 59.4 308.6 32 274.7 32c-16.2 0-31.8 6.5-43.3 17.9l-1.2 1.2c-3.4 3.4-9 3.4-12.4 0l-1.2-1.2z\"],reply:[512,512,[61714,\"mail-reply\"],\"f3e5\",\"M205 34.8c11.5 5.1 19 16.6 19 29.2v64H336c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96H224v64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z\"],\"star-and-crescent\":[512,512,[9770],\"f699\",\"M0 256C0 114.6 114.6 0 256 0c33 0 64.6 6.3 93.6 17.7c7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5c-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5c7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C320.6 505.7 289 512 256 512C114.6 512 0 397.4 0 256zM375.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L261 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"],\"house-fire\":[640,512,[],\"e50c\",\"M288 350.1l0 1.9H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L447.3 128.1c-12.3-1-25 3-34.8 11.7c-35.4 31.6-65.6 67.7-87.3 102.8C304.3 276.5 288 314.9 288 350.1zM480 512c-88.4 0-160-71.6-160-160c0-76.7 62.5-144.7 107.2-179.4c5-3.9 10.9-5.8 16.8-5.8c7.9-.1 16 3.1 22 9.2l46 46 11.3-11.3c11.7-11.7 30.6-12.7 42.3-1C624.5 268 640 320.2 640 352c0 88.4-71.6 160-160 160zm64-111.8c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C453 327.1 416 363.6 416 400.2c0 35.3 28.7 64 64 64s64-28.7 64-64z\"],\"square-minus\":[448,512,[61767,\"minus-square\"],\"f146\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 200H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"],helicopter:[640,512,[128641],\"f533\",\"M128 32c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H384v64h32c88.4 0 160 71.6 160 160v64c0 17.7-14.3 32-32 32H384 320c-20.1 0-39.1-9.5-51.2-25.6l-71.4-95.2c-3.5-4.7-8.3-8.3-13.7-10.5L47.2 198.1c-9.5-3.8-16.7-12-19.2-22L5 83.9C2.4 73.8 10.1 64 20.5 64H48c10.1 0 19.6 4.7 25.6 12.8L112 128H320V64H160c-17.7 0-32-14.3-32-32zM384 320H512V288c0-53-43-96-96-96H384V320zM630.6 425.4c12.5 12.5 12.5 32.8 0 45.3l-3.9 3.9c-24 24-56.6 37.5-90.5 37.5H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H536.2c17 0 33.3-6.7 45.3-18.7l3.9-3.9c12.5-12.5 32.8-12.5 45.3 0z\"],compass:[512,512,[129517],\"f14e\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"],\"square-caret-down\":[448,512,[\"caret-square-down\"],\"f150\",\"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"],\"file-circle-question\":[576,512,[],\"e4ef\",\"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"],\"laptop-code\":[640,512,[],\"f5fc\",\"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"],swatchbook:[512,512,[],\"f5c3\",\"M0 32C0 14.3 14.3 0 32 0H160c17.7 0 32 14.3 32 32V416c0 53-43 96-96 96s-96-43-96-96V32zM223.6 425.9c.3-3.3 .4-6.6 .4-9.9V154l75.4-75.4c12.5-12.5 32.8-12.5 45.3 0l90.5 90.5c12.5 12.5 12.5 32.8 0 45.3L223.6 425.9zM182.8 512l192-192H480c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H182.8zM128 64H64v64h64V64zM64 192v64h64V192H64zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"],\"prescription-bottle\":[384,512,[],\"f485\",\"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V416H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V320H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V224H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V128z\"],bars:[448,512,[\"navicon\"],\"f0c9\",\"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"],\"people-group\":[640,512,[],\"e533\",\"M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3V245.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V389.2C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112h32c24 0 46.2 7.5 64.4 20.3zM448 416V394.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176h32c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2V416c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3V261.7c-10 11.3-16 26.1-16 42.3zm144-42.3v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2V448c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V405.2c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112h32c61.9 0 112 50.1 112 112z\"],\"hourglass-end\":[384,512,[8987,\"hourglass-3\"],\"f253\",\"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 25.5-10.1 49.9-28.1 67.9L192 210.7l-67.9-67.9C106.1 124.9 96 100.4 96 75z\"],\"heart-crack\":[512,512,[128148,\"heart-broken\"],\"f7a9\",\"M119.4 44.1c23.3-3.9 46.8-1.9 68.6 5.3l49.8 77.5-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.8 61.8c28.5-16.7 62.4-23.2 95.7-17.6C461.5 55.6 512 115.2 512 185.1v5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141z\"],\"square-up-right\":[448,512,[8599,\"external-link-square-alt\"],\"f360\",\"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM320 313.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6c0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3C114 302 112 306.9 112 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6c12.5 0 22.6-10.1 22.6-22.6z\"],\"face-kiss-beam\":[512,512,[128537,\"kiss-beam\"],\"f597\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-84.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"],film:[512,512,[127902],\"f008\",\"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM48 368v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H416zM48 240v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H416zM48 112v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H416zM160 128v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32H192z\"],\"ruler-horizontal\":[640,512,[],\"f547\",\"M0 336c0 26.5 21.5 48 48 48l544 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0c-26.5 0-48 21.5-48 48L0 336z\"],\"people-robbery\":[576,512,[],\"e536\",\"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V174.3c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zm-8 32c-35.3 0-64 28.7-64 64v96l0 .6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352H88V480c0 17.7 14.3 32 32 32s32-14.3 32-32V252.7l13 20.5c5.9 9.2 16.1 14.9 27 14.9h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H209.6l-37.4-58.9C157.6 142 132.1 128 104.7 128H72z\"],lightbulb:[384,512,[128161],\"f0eb\",\"M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z\"],\"caret-left\":[256,512,[],\"f0d9\",\"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"],\"circle-exclamation\":[512,512,[\"exclamation-circle\"],\"f06a\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"],\"school-circle-xmark\":[640,512,[],\"e56d\",\"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 368z\"],\"arrow-right-from-bracket\":[512,512,[\"sign-out\"],\"f08b\",\"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"],\"circle-chevron-down\":[512,512,[\"chevron-circle-down\"],\"f13a\",\"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"],\"unlock-keyhole\":[448,512,[\"unlock-alt\"],\"f13e\",\"M224 64c-44.2 0-80 35.8-80 80v48H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80V144C80 64.5 144.5 0 224 0c57.5 0 107 33.7 130.1 82.3c7.6 16 .8 35.1-15.2 42.6s-35.1 .8-42.6-15.2C283.4 82.6 255.9 64 224 64zm32 320c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h64z\"],\"cloud-showers-heavy\":[512,512,[],\"f740\",\"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zM81.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6S-3.3 490.7 1.9 478.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM313.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z\"],\"headphones-simple\":[512,512,[\"headphones-alt\"],\"f58f\",\"M256 80C141.1 80 48 173.1 48 288V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288C0 146.6 114.6 32 256 32s256 114.6 256 256V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288c0-114.9-93.1-208-208-208zM80 352c0-35.3 28.7-64 64-64h16c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V352zm288-64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h16z\"],sitemap:[576,512,[],\"f0e8\",\"M208 80c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48h-8v40H464c30.9 0 56 25.1 56 56v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H464c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-4.4-3.6-8-8-8H312v40h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H256c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V280H112c-4.4 0-8 3.6-8 8v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-30.9 25.1-56 56-56H264V192h-8c-26.5 0-48-21.5-48-48V80z\"],\"circle-dollar-to-slot\":[512,512,[\"donate\"],\"f4b9\",\"M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3c-.3-.1-.5-.2-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 84c-11 0-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V312c0 11 9 20 20 20s20-9 20-20V298.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V104c0-11-9-20-20-20zM48 352H64c19.5 25.9 44 47.7 72.2 64H64v32H256 448V416H375.8c28.2-16.3 52.8-38.1 72.2-64h16c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V400c0-26.5 21.5-48 48-48z\"],memory:[576,512,[],\"f538\",\"M64 64C28.7 64 0 92.7 0 128v7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6V320H576V248.6c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3V128c0-35.3-28.7-64-64-64H64zM576 352H0v64c0 17.7 14.3 32 32 32H80V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h48c17.7 0 32-14.3 32-32V352zM192 160v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32z\"],\"road-spikes\":[640,512,[],\"e568\",\"M64 116.8c0-15.8 20.5-22 29.3-8.9L192 256V116.8c0-15.8 20.5-22 29.3-8.9L320 256V116.8c0-15.8 20.5-22 29.3-8.9L448 256V116.8c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.7-26.6 49.7H512 448 384 320 256 192 64V116.8zM32 384H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"],\"fire-burner\":[640,512,[],\"e4f1\",\"M345.7 48.3L358 34.5c5.4-6.1 13.3-8.8 20.9-8.9c7.2 0 14.3 2.6 19.9 7.8c19.7 18.3 39.8 43.2 55 70.6C469 131.2 480 162.2 480 192.2C480 280.8 408.7 352 320 352c-89.6 0-160-71.3-160-159.8c0-37.3 16-73.4 36.8-104.5c20.9-31.3 47.5-59 70.9-80.2C273.4 2.3 280.7-.2 288 0c14.1 .3 23.8 11.4 32.7 21.6c0 0 0 0 0 0c2 2.3 4 4.6 6 6.7l19 19.9zM384 240.2c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C293 167.1 256 203.6 256 240.2c0 35.3 28.7 64 64 64s64-28.7 64-64zM32 288c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 64 448 0 0-64c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l0-96zM320 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM192 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],flag:[448,512,[127988,61725],\"f024\",\"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V64 368 480c0 17.7 14.3 32 32 32s32-14.3 32-32V352l64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48V32z\"],hanukiah:[640,512,[128334],\"f6e6\",\"M314.2 3.3C309.1 12.1 296 36.6 296 56c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C324.6 1.2 322.4 0 320 0s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C36.6 49.2 34.4 48 32 48s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7C165.1 60.1 152 84.6 152 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3C389.1 60.1 376 84.6 376 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7C517.1 60.1 504 84.6 504 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32V320H96c-17.7 0-32-14.3-32-32V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 53 43 96 96 96H288v64H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H544c53 0 96-43 96-96V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H352V144z\"],feather:[512,512,[129718],\"f52d\",\"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"],\"volume-low\":[448,512,[128264,\"volume-down\"],\"f027\",\"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM412.6 181.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z\"],\"comment-slash\":[640,512,[],\"f4b3\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zm385.2 425L82.9 161.3C70.7 185.6 64 212.2 64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104.1-17.9z\"],\"cloud-sun-rain\":[640,512,[127782],\"f743\",\"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l10.4 62.4c-23.3 10.8-42.9 28.4-56 50.3c-14.6-9-31.8-14.1-50.2-14.1c-53 0-96 43-96 96c0 35.5 19.3 66.6 48 83.2c.8 31.8 13.2 60.7 33.1 82.7l-56 39.2c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM208 144c13.8 0 26.7 4.4 37.1 11.9c-1.2 4.1-2.2 8.3-3 12.6c-37.9 14.6-67.2 46.6-77.8 86.4C151.8 243.1 144 226.5 144 208c0-35.3 28.7-64 64-64zm69.4 276c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm74.5-116.1c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"],compress:[448,512,[],\"f066\",\"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V64zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V64zM320 320c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"],\"wheat-awn\":[512,512,[\"wheat-alt\"],\"e2cd\",\"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3z\"],ankh:[320,512,[9765],\"f644\",\"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1c-5.9 6.2-11.8 11.8-17.4 16.7c-5.6-4.9-11.5-10.5-17.4-16.7C116.7 204.6 96 169.6 96 128zM160 0C89.3 0 32 57.3 32 128c0 52.4 21.5 95.5 46.8 128H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V480c0 17.7 14.3 32 32 32s32-14.3 32-32V320h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H241.2c25.4-32.5 46.8-75.6 46.8-128C288 57.3 230.7 0 160 0z\"],\"hands-holding-child\":[640,512,[],\"e4fa\",\"M320 0a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm44.7 164.3L375.8 253c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35h-7.6l-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8L255.5 181c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 104.8 295.3 96 320 96s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8l-19.8-16.7zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"],asterisk:[384,512,[10033,61545],\"2a\",\"M192 32c17.7 0 32 14.3 32 32V199.5l111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V312.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5V64c0-17.7 14.3-32 32-32z\"],\"square-check\":[448,512,[9745,9989,61510,\"check-square\"],\"f14a\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"],\"peseta-sign\":[384,512,[],\"e221\",\"M64 32C46.3 32 32 46.3 32 64v96c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 96V448c0 17.7 14.3 32 32 32s32-14.3 32-32V352h96c77.4 0 142-55 156.8-128H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-3.2C334 87 269.4 32 192 32H64zM282.5 160H96V96h96c41.8 0 77.4 26.7 90.5 64zM96 224H282.5c-13.2 37.3-48.7 64-90.5 64H96V224z\"],heading:[448,512,[\"header\"],\"f1dc\",\"M0 64C0 46.3 14.3 32 32 32H80h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H112V208H336V96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h48 48c17.7 0 32 14.3 32 32s-14.3 32-32 32H400V240 416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H368 320c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112V416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V240 96H32C14.3 96 0 81.7 0 64z\"],ghost:[384,512,[128123],\"f6e2\",\"M40.1 467.1l-11.2 9c-3.2 2.5-7.1 3.9-11.1 3.9C8 480 0 472 0 462.2V192C0 86 86 0 192 0S384 86 384 192V462.2c0 9.8-8 17.8-17.8 17.8c-4 0-7.9-1.4-11.1-3.9l-11.2-9c-13.4-10.7-32.8-9-44.1 3.9L269.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6l-26.6-30.5c-12.7-14.6-35.4-14.6-48.2 0L141.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6L84.2 471c-11.3-12.9-30.7-14.6-44.1-3.9zM160 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],list:[512,512,[\"list-squares\"],\"f03a\",\"M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z\"],\"square-phone-flip\":[448,512,[\"phone-square-alt\"],\"f87b\",\"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zm-90.7 96.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L280 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C111.1 378 119 384 128 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z\"],\"cart-plus\":[576,512,[],\"f217\",\"M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM252 160c0 11 9 20 20 20h44v44c0 11 9 20 20 20s20-9 20-20V180h44c11 0 20-9 20-20s-9-20-20-20H356V96c0-11-9-20-20-20s-20 9-20 20v44H272c-11 0-20 9-20 20z\"],gamepad:[640,512,[],\"f11b\",\"M192 64C86 64 0 150 0 256S86 448 192 448H448c106 0 192-86 192-192s-86-192-192-192H192zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V200z\"],\"circle-dot\":[512,512,[128280,\"dot-circle\"],\"f192\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-352a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"],\"face-dizzy\":[512,512,[\"dizzy\"],\"f567\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-224a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM100.7 132.7c6.2-6.2 16.4-6.2 22.6 0L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6zm192 0c6.2-6.2 16.4-6.2 22.6 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6z\"],egg:[384,512,[129370],\"f7fb\",\"M192 496C86 496 0 394 0 288C0 176 64 16 192 16s192 160 192 272c0 106-86 208-192 208zM154.8 134c6.5-6 7-16.1 1-22.6s-16.1-7-22.6-1c-23.9 21.8-41.1 52.7-52.3 84.2C69.7 226.1 64 259.7 64 288c0 8.8 7.2 16 16 16s16-7.2 16-16c0-24.5 5-54.4 15.1-82.8c10.1-28.5 25-54.1 43.7-71.2z\"],\"house-medical-circle-xmark\":[640,512,[],\"e513\",\"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"],campground:[576,512,[9978],\"f6bb\",\"M377 52c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5L288 60.8 249 12c-11-13.8-31.2-16-45-5s-16 31.2-5 45l48 60L12.3 405.4C4.3 415.4 0 427.7 0 440.4V464c0 26.5 21.5 48 48 48H288 528c26.5 0 48-21.5 48-48V440.4c0-12.7-4.3-25.1-12.3-35L329 112l48-60zM288 448H168.5L288 291.7 407.5 448H288z\"],\"folder-plus\":[512,512,[],\"f65e\",\"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416zM232 376c0 13.3 10.7 24 24 24s24-10.7 24-24V312h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V200c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"],futbol:[512,512,[9917,\"futbol-ball\",\"soccer-ball\"],\"f1e3\",\"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"],paintbrush:[576,512,[128396,\"paint-brush\"],\"f1fc\",\"M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H208c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z\"],lock:[448,512,[128274],\"f023\",\"M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z\"],\"gas-pump\":[512,512,[9981],\"f52f\",\"M32 64C32 28.7 60.7 0 96 0H256c35.3 0 64 28.7 64 64V256h8c48.6 0 88 39.4 88 88v32c0 13.3 10.7 24 24 24s24-10.7 24-24V222c-27.6-7.1-48-32.2-48-62V96L384 64c-8.8-8.8-8.8-23.2 0-32s23.2-8.8 32 0l77.3 77.3c12 12 18.7 28.3 18.7 45.3V168v24 32V376c0 39.8-32.2 72-72 72s-72-32.2-72-72V344c0-22.1-17.9-40-40-40h-8V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64zM96 80v96c0 8.8 7.2 16 16 16H240c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16z\"],\"hot-tub-person\":[512,512,[\"hot-tub\"],\"f593\",\"M272 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L295.8 82.8C280.7 69.1 272 49.7 272 29.2V24zM0 320v16V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H277.3c-13.8 0-27.3-4.5-38.4-12.8l-85.3-64C137 166.7 116.8 160 96 160c-53 0-96 43-96 96v64zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm112 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM360 0c-13.3 0-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L407.8 82.8C392.7 69.1 384 49.7 384 29.2V24c0-13.3-10.7-24-24-24zM64 128A64 64 0 1 0 64 0a64 64 0 1 0 0 128z\"],\"map-location\":[576,512,[\"map-marked\"],\"f59f\",\"M302.8 312C334.9 271.9 408 174.6 408 120C408 53.7 354.3 0 288 0S168 53.7 168 120c0 54.6 73.1 151.9 105.2 192c7.7 9.6 22 9.6 29.6 0zM416 503l144.9-58c9.1-3.6 15.1-12.5 15.1-22.3V152c0-17-17.1-28.6-32.9-22.3l-116 46.4c-.5 1.2-1 2.5-1.5 3.7c-2.9 6.8-6.1 13.7-9.6 20.6V503zM15.1 187.3C6 191 0 199.8 0 209.6V480.4c0 17 17.1 28.6 32.9 22.3L160 451.8V200.4c-3.5-6.9-6.7-13.8-9.6-20.6c-5.6-13.2-10.4-27.4-12.8-41.5l-122.6 49zM384 255c-20.5 31.3-42.3 59.6-56.2 77c-20.5 25.6-59.1 25.6-79.6 0c-13.9-17.4-35.7-45.7-56.2-77V449.4l192 54.9V255z\"],\"house-flood-water\":[576,512,[],\"e50e\",\"M306.8 6.1C295.6-2 280.4-2 269.2 6.1l-176 128c-11.2 8.2-15.9 22.6-11.6 35.8S98.1 192 112 192h16v73c1.7 1 3.3 2 4.9 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c1.5-1 3-2 4.5-2.9l-.3-73.2H464c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128zM269.5 309.9C247 325.4 219.5 336 192 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 389.7 159 400 192 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"],tree:[448,512,[127794],\"f1bb\",\"M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208H104L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320H80L5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5H192v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448H424.5c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320h33.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208h24.9c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z\"],\"bridge-lock\":[640,512,[],\"e4cc\",\"M32 64c0-17.7 14.3-32 32-32H576c17.7 0 32 14.3 32 32s-14.3 32-32 32H536v64h-8c-61.9 0-112 50.1-112 112v24.6c-9.9 5.8-18.2 14.1-23.8 24.1c-17.6-20-43.4-32.7-72.2-32.7c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V384c0-53-43-96-96-96V160h72V96H64C46.3 96 32 81.7 32 64zM408 96v64h80V96H408zm-48 64V96H280v64h80zM152 96v64h80V96H152zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"],\"sack-dollar\":[512,512,[128176],\"f81d\",\"M320 96H192L144.6 24.9C137.5 14.2 145.1 0 157.9 0H354.1c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128H320c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96H96c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4l0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84 88c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V424c0 11 9 20 20 20s20-9 20-20V410.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l0 0-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V216z\"],\"pen-to-square\":[512,512,[\"edit\"],\"f044\",\"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z\"],\"car-side\":[640,512,[128663],\"f5e4\",\"M171.3 96H224v96H111.3l30.4-75.9C146.5 104 158.2 96 171.3 96zM272 192V96h81.2c9.7 0 18.9 4.4 25 12l67.2 84H272zm256.2 1L428.2 68c-18.2-22.8-45.8-36-75-36H171.3c-39.3 0-74.6 23.9-89.1 60.3L40.6 196.4C16.8 205.8 0 228.9 0 256V368c0 17.7 14.3 32 32 32H65.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H385.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H608c17.7 0 32-14.3 32-32V320c0-65.2-48.8-119-111.8-127zM434.7 368a48 48 0 1 1 90.5 32 48 48 0 1 1 -90.5-32zM160 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"],\"share-nodes\":[448,512,[\"share-alt\"],\"f1e0\",\"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z\"],\"heart-circle-minus\":[576,512,[],\"e4ff\",\"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"],\"hourglass-half\":[384,512,[\"hourglass-2\"],\"f252\",\"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 19-5.6 37.4-16 53H112c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9L192 301.3l67.9 67.9c4.6 4.6 8.6 9.6 12.1 14.9H112z\"],microscope:[512,512,[128300],\"f610\",\"M160 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32zM32 448H320c70.7 0 128-57.3 128-128s-57.3-128-128-128V128c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],sink:[512,512,[],\"e06d\",\"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32s14.3 32 32 32s32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96V288H160V264c0-30.9-25.1-56-56-56H56c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c4.4 0 8 3.6 8 8v24H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H256 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H400V264c0-4.4 3.6-8 8-8h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H408c-30.9 0-56 25.1-56 56v24H288V96zM480 416V384H32v32c0 53 43 96 96 96H384c53 0 96-43 96-96z\"],\"bag-shopping\":[448,512,[\"shopping-bag\"],\"f290\",\"M160 112c0-35.3 28.7-64 64-64s64 28.7 64 64v48H160V112zm-48 48H48c-26.5 0-48 21.5-48 48V416c0 53 43 96 96 96H352c53 0 96-43 96-96V208c0-26.5-21.5-48-48-48H336V112C336 50.1 285.9 0 224 0S112 50.1 112 112v48zm24 48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm152 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"],\"arrow-down-z-a\":[576,512,[\"sort-alpha-desc\",\"sort-alpha-down-alt\"],\"f881\",\"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 64c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 96H352c-17.7 0-32-14.3-32-32zm96 192c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 448H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128c5.4-10.8 16.5-17.7 28.6-17.7zM395.8 400h40.4L416 359.6 395.8 400z\"],mitten:[448,512,[],\"f7b5\",\"M352 384H64L5.4 178.9C1.8 166.4 0 153.4 0 140.3C0 62.8 62.8 0 140.3 0h3.4c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192h2.8c34.9 0 63.3 28.3 63.3 63.3c0 15.9-6 31.2-16.8 42.9L352 384zM32 448c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V448z\"],\"person-rays\":[512,512,[],\"e54d\",\"M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9l-28.6 47.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L328 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H248zM7 7C16.4-2.3 31.6-2.3 41 7l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 41C-2.3 31.6-2.3 16.4 7 7zM471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7zM7 505c-9.4-9.4-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-9.4 9.4-24.6 9.4-33.9 0zm464 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"],users:[640,512,[],\"f0c0\",\"M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z\"],\"eye-slash\":[640,512,[],\"f070\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\"],\"flask-vial\":[640,512,[],\"e4f3\",\"M175 389.4c-9.8 16-15 34.3-15 53.1c-10 3.5-20.8 5.5-32 5.5c-53 0-96-43-96-96V64C14.3 64 0 49.7 0 32S14.3 0 32 0H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V309.9l-49 79.6zM96 64v96h64V64H96zM352 0H480h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V214.9L629.7 406.2c6.7 10.9 10.3 23.5 10.3 36.4c0 38.3-31.1 69.4-69.4 69.4H261.4c-38.3 0-69.4-31.1-69.4-69.4c0-12.8 3.6-25.4 10.3-36.4L320 214.9V64c-17.7 0-32-14.3-32-32s14.3-32 32-32h32zm32 64V224c0 5.9-1.6 11.7-4.7 16.8L330.5 320h171l-48.8-79.2c-3.1-5-4.7-10.8-4.7-16.8V64H384z\"],hand:[512,512,[129306,9995,\"hand-paper\"],\"f256\",\"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32z\"],om:[512,512,[128329],\"f679\",\"M379.3 4.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6l-16-16zM281 66.7c-2.2-1.5-4.9-2.5-7.7-2.7c-.6 0-1.3-.1-1.9 0c-3.9 .2-7.4 1.7-10.1 4.2c-.9 .8-1.6 1.7-2.3 2.6c-1.7 2.4-2.7 5.3-2.9 8.5c0 .7 0 1.4 0 2.1c.2 2.2 .9 4.3 1.9 6.2l.3 .6c.3 .6 .8 1.4 1.4 2.4c1.2 2 2.9 4.8 5.1 8.2c4.4 6.7 11.1 15.5 20 24.4C302.4 141.1 330.3 160 368 160c31.2 0 56.6-10.4 73.9-20.2c8.7-5 15.6-9.9 20.4-13.8c2.4-1.9 4.3-3.6 5.7-4.9c.7-.6 1.3-1.2 1.7-1.6l.6-.5 .1-.1 .1-.1 0 0 0 0c5.9-5.8 9.5-13.9 9.5-22.8c0-17.7-14.3-32-32-32c-8.7 0-16.7 3.5-22.4 9.2c-.1 .1-.2 .2-.5 .4c-.5 .5-1.5 1.3-2.8 2.4c-2.7 2.2-6.8 5.2-12.1 8.2C399.4 90.4 384.8 96 368 96c-20.8 0-42.4-7-59.5-14.6c-8.4-3.7-15.4-7.5-20.3-10.3c-2.4-1.4-4.3-2.5-5.6-3.3c-.6-.4-1.1-.7-1.4-.9l-.3-.2zM115.2 169.6c8-6 17.9-9.6 28.8-9.6c26.5 0 48 21.5 48 48s-21.5 48-48 48H109.8c-7.6 0-13.8 6.2-13.8 13.8c0 1.5 .2 2.9 .7 4.4l8 24c4.4 13.1 16.6 21.9 30.4 21.9H144h16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-50.8 0-82.7-21.5-102.2-42.8c-9.9-10.8-16.6-21.6-20.9-29.7c-2.1-4-3.6-7.3-4.5-9.6c-.5-1.1-.8-2-1-2.5l-.2-.5c-.3-.9-.7-1.8-1.1-2.6c-1.2-2.2-2.8-4-4.7-5.4c-1.9-1.4-4.1-2.3-6.5-2.8c-1.4-.3-2.9-.3-4.4-.2c-2.5 .2-4.8 1-6.8 2.3c-1.1 .7-2.2 1.5-3.1 2.5c-2.4 2.5-4.1 5.8-4.5 9.5c-.1 .6-.1 1.1-.1 1.7c0 0 0 0 0 0c0 .8 .1 1.7 .2 2.5l0 .1c0 .3 .1 .8 .2 1.3c.2 1.1 .4 2.7 .8 4.6c.8 3.9 2 9.4 3.9 15.9c3.8 13 10.3 30.4 21.3 48C48.7 476.2 89.4 512 160 512c70.7 0 128-57.3 128-128c0-23.3-6.2-45.2-17.1-64h22.6c25.5 0 49.9-10.1 67.9-28.1l26.5-26.5c6-6 14.1-9.4 22.6-9.4H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32c-25.7 0-41.4-12.5-51.2-25.6c-5-6.7-8.4-13.4-10.5-18.6c-1.1-2.5-1.8-4.6-2.2-6c-.2-.7-.4-1.2-.5-1.5l-.1-.2c-.3-1.3-.8-2.6-1.5-3.8c-1.1-2-2.6-3.8-4.4-5.1c-2.7-2-6-3.2-9.6-3.2l-.2 0c-8 .1-14.6 6.1-15.6 13.9l0 0c0 .3-.1 .6-.2 1.1c-.1 .9-.3 2.1-.4 3.6c-.3 3-.6 7.3-.6 12.4c0 10.1 1.1 23.9 5.8 38.1c4.8 14.3 13.4 29.3 28.6 40.7C368.7 473.3 389.3 480 416 480c53 0 96-43 96-96V288c0-53-43-96-96-96h-5.5c-25.5 0-49.9 10.1-67.9 28.1l-26.5 26.5c-6 6-14.1 9.4-22.6 9.4H245.2c6.9-14.5 10.8-30.8 10.8-48c0-61.9-50.1-112-112-112c-25.2 0-48.5 8.3-67.2 22.4c-14.1 10.6-17 30.7-6.4 44.8s30.7 17 44.8 6.4z\"],worm:[512,512,[],\"e599\",\"M256 96c0-53 43-96 96-96h38.4C439.9 0 480 40.1 480 89.6V176v16V376c0 75.1-60.9 136-136 136s-136-60.9-136-136V296c0-22.1-17.9-40-40-40s-40 17.9-40 40V464c0 26.5-21.5 48-48 48s-48-21.5-48-48V296c0-75.1 60.9-136 136-136s136 60.9 136 136v80c0 22.1 17.9 40 40 40s40-17.9 40-40V192H352c-53 0-96-43-96-96zm144-8a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"],\"house-circle-xmark\":[640,512,[],\"e50b\",\"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"],plug:[384,512,[128268],\"f1e6\",\"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8C297 398 352 333.4 352 256V224c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"],\"chevron-up\":[512,512,[],\"f077\",\"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"],\"hand-spock\":[576,512,[128406],\"f259\",\"M246.9 23.7C242.3 6.6 224.8-3.5 207.7 1.1s-27.2 22.1-22.6 39.2L238 237.8c2.5 9.2-4.5 18.2-14 18.2c-6.4 0-12-4.2-13.9-10.3L166.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L99.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L156.8 448c43.1 41.1 100.4 64 160 64h10.9 8.2c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L443.5 247.1c-1.6 5.3-6.4 8.9-12 8.9c-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L355.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9c-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"],stopwatch:[448,512,[9201],\"f2f2\",\"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H224 176zm72 192V320c0 13.3-10.7 24-24 24s-24-10.7-24-24V192c0-13.3 10.7-24 24-24s24 10.7 24 24z\"],\"face-kiss\":[512,512,[128535,\"kiss\"],\"f596\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"bridge-circle-xmark\":[640,512,[],\"e4cb\",\"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"],\"face-grin-tongue\":[512,512,[128539,\"grin-tongue\"],\"f589\",\"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"],\"chess-bishop\":[320,512,[9821],\"f43a\",\"M128 0C110.3 0 96 14.3 96 32c0 16.1 11.9 29.4 27.4 31.7C78.4 106.8 8 190 8 288c0 47.4 30.8 72.3 56 84.7V400H256V372.7c25.2-12.5 56-37.4 56-84.7c0-37.3-10.2-72.4-25.3-104.1l-99.4 99.4c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L270.8 154.6c-23.2-38.1-51.8-69.5-74.2-90.9C212.1 61.4 224 48.1 224 32c0-17.7-14.3-32-32-32H128zM48 432L6.6 473.4c-4.2 4.2-6.6 10-6.6 16C0 501.9 10.1 512 22.6 512H297.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L272 432H48z\"],\"face-grin-wink\":[512,512,[\"grin-wink\"],\"f58c\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-16.9-79.2c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"ear-deaf\":[512,512,[\"deaf\",\"deafness\",\"hard-of-hearing\"],\"f2a4\",\"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5c-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3C74.8 132.5 149.4 64 240 64c97.2 0 176 78.8 176 176c0 46-17.7 87.9-46.6 119.3c-12 13-17.4 24.8-17.4 34.7V400c0 61.9-50.1 112-112 112c-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48v-6.1c0-32.9 17.4-59.6 34.4-78c18.4-20 29.6-46.6 29.6-75.9c0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"],\"road-circle-check\":[640,512,[],\"e564\",\"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"],\"dice-five\":[448,512,[9860],\"f523\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"square-rss\":[448,512,[\"rss-square\"],\"f143\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"],\"land-mine-on\":[640,512,[],\"e51b\",\"M344 24V168c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM192 320c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32v32H192V320zm-77.3 90.5c8.1-16.3 24.8-26.5 42.9-26.5H482.3c18.2 0 34.8 10.3 42.9 26.5l27.6 55.2C563.5 487 548 512 524.2 512H115.8c-23.8 0-39.3-25-28.6-46.3l27.6-55.2zM36.3 138.3c7.5-10.9 22.5-13.6 33.4-6.1l104 72c10.9 7.5 13.6 22.5 6.1 33.4s-22.5 13.6-33.4 6.1l-104-72c-10.9-7.5-13.6-22.5-6.1-33.4zm534.1-6.1c10.9-7.5 25.8-4.8 33.4 6.1s4.8 25.8-6.1 33.4l-104 72c-10.9 7.5-25.8 4.8-33.4-6.1s-4.8-25.8 6.1-33.4l104-72z\"],\"i-cursor\":[256,512,[],\"f246\",\"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3V224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7s16.9 30.7 34.5 29.2l8-.7c34.1-2.8 64.2-18.9 85.4-42.9c21.2 24 51.2 40.1 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V128.3c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7C179.2 3.6 149.2 19.7 128 43.7c-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"],stamp:[512,512,[],\"f5bf\",\"M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2H112C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V413.3c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112H366.2c-29.9 0-54.2-24.3-54.2-54.2zM416 416v32H96V416H416z\"],stairs:[576,512,[],\"e289\",\"M384 64c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v96c0 17.7-14.3 32-32 32H320v96c0 17.7-14.3 32-32 32H192v96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V320c0-17.7 14.3-32 32-32h96V192c0-17.7 14.3-32 32-32h96V64z\"],i:[320,512,[105],\"49\",\"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96h96V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V96h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 32z\"],\"hryvnia-sign\":[384,512,[8372,\"hryvnia\"],\"f6f2\",\"M121.9 116.2C138.3 103.1 158.7 96 179.6 96H223c27.1 0 49 21.9 49 49c0 11.5-4 22.4-11.1 31H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H155.5l-50.6 28.9c-1.7 1-3.4 2-5.1 3.1H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H52.3c-2.8 9.9-4.3 20.4-4.3 31c0 62.4 50.6 113 113 113h43.4c35.5 0 70-12.1 97.7-34.3L308 441c13.8-11 16-31.2 5-45s-31.2-16-45-5l-5.9 4.7c-16.4 13.1-36.7 20.2-57.7 20.2H161c-27.1 0-49-21.9-49-49c0-11.5 4-22.4 11.1-31H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H228.5l50.6-28.9c1.7-1 3.4-2 5.1-3.1H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H331.7c2.8-10 4.3-20.4 4.3-31c0-62.4-50.6-113-113-113H179.6c-35.5 0-70 12.1-97.7 34.3L76 71c-13.8 11-16 31.2-5 45s31.2 16 45 5l5.9-4.7z\"],pills:[576,512,[],\"f484\",\"M112 96c-26.5 0-48 21.5-48 48V256h96V144c0-26.5-21.5-48-48-48zM0 144C0 82.1 50.1 32 112 32s112 50.1 112 112V368c0 61.9-50.1 112-112 112S0 429.9 0 368V144zM554.9 399.4c-7.1 12.3-23.7 13.1-33.8 3.1L333.5 214.9c-10-10-9.3-26.7 3.1-33.8C360 167.7 387.1 160 416 160c88.4 0 160 71.6 160 160c0 28.9-7.7 56-21.1 79.4zm-59.5 59.5C472 472.3 444.9 480 416 480c-88.4 0-160-71.6-160-160c0-28.9 7.7-56 21.1-79.4c7.1-12.3 23.7-13.1 33.8-3.1L498.5 425.1c10 10 9.3 26.7-3.1 33.8z\"],\"face-grin-wide\":[512,512,[128515,\"grin-alt\"],\"f581\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"],tooth:[448,512,[129463],\"f5c9\",\"M186.1 52.1C169.3 39.1 148.7 32 127.5 32C74.7 32 32 74.7 32 127.5v6.2c0 15.8 3.7 31.3 10.7 45.5l23.5 47.1c4.5 8.9 7.6 18.4 9.4 28.2l36.7 205.8c2 11.2 11.6 19.4 22.9 19.8s21.4-7.4 24-18.4l28.9-121.3C192.2 323.7 207 312 224 312s31.8 11.7 35.8 28.3l28.9 121.3c2.6 11.1 12.7 18.8 24 18.4s20.9-8.6 22.9-19.8l36.7-205.8c1.8-9.8 4.9-19.3 9.4-28.2l23.5-47.1c7.1-14.1 10.7-29.7 10.7-45.5v-2.1c0-55-44.6-99.6-99.6-99.6c-24.1 0-47.4 8.8-65.6 24.6l-3.2 2.8 19.5 15.2c7 5.4 8.2 15.5 2.8 22.5s-15.5 8.2-22.5 2.8l-24.4-19-37-28.8z\"],v:[384,512,[118],\"56\",\"M19.7 34.5c16.3-6.8 35 .9 41.8 17.2L192 364.8 322.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7L2.5 76.3c-6.8-16.3 .9-35 17.2-41.8z\"],\"bangladeshi-taka-sign\":[384,512,[],\"e2e6\",\"M36 32.2C18.4 30.1 2.4 42.5 .2 60S10.5 93.6 28 95.8l7.9 1c16 2 28 15.6 28 31.8V160H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V384c0 53 43 96 96 96h32c106 0 192-86 192-192V256c0-53-43-96-96-96H272c-17.7 0-32 14.3-32 32s14.3 32 32 32h16c17.7 0 32 14.3 32 32v32c0 70.7-57.3 128-128 128H160c-17.7 0-32-14.3-32-32V224h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V128.5c0-48.4-36.1-89.3-84.1-95.3l-7.9-1z\"],bicycle:[640,512,[128690],\"f206\",\"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h25.7l34.6 64H222.9l-27.4-38C191 99.7 183.7 96 176 96H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h43.7l22.1 30.7-26.6 53.1c-10-2.5-20.5-3.8-31.2-3.8C57.3 224 0 281.3 0 352s57.3 128 128 128c65.3 0 119.1-48.9 127-112h49c8.5 0 16.3-4.5 20.7-11.8l84.8-143.5 21.7 40.1C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L375.4 48.8C369.8 38.4 359 32 347.2 32H312zM458.6 303.7l32.3 59.7c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-32.3-59.7c3.6-.6 7.4-.9 11.2-.9c39.8 0 72 32.2 72 72s-32.2 72-72 72s-72-32.2-72-72c0-18.6 7-35.5 18.6-48.3zM133.2 368h65c-7.3 32.1-36 56-70.2 56c-39.8 0-72-32.2-72-72s32.2-72 72-72c1.7 0 3.4 .1 5.1 .2l-24.2 48.5c-9 18.1 4.1 39.4 24.3 39.4zm33.7-48l50.7-101.3 72.9 101.2-.1 .1H166.8zm90.6-128H365.9L317 274.8 257.4 192z\"],\"staff-snake\":[384,512,[\"rod-asclepius\",\"rod-snake\",\"staff-aesculapius\"],\"e579\",\"M222.6 43.2l-.1 4.8H288c53 0 96 43 96 96s-43 96-96 96H248V160h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H248 220l-4.5 144H256c53 0 96 43 96 96s-43 96-96 96H240V384h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H213l-3.1 99.5L208.5 495l0 1c-.3 8.9-7.6 16-16.5 16s-16.2-7.1-16.5-16l0-1-1-31H136c-22.1 0-40-17.9-40-40s17.9-40 40-40h36l-1-32H152c-53 0-96-43-96-96c0-47.6 34.6-87.1 80-94.7V256c0 8.8 7.2 16 16 16h16.5L164 128H136 122.6c-9 18.9-28.3 32-50.6 32H56c-30.9 0-56-25.1-56-56S25.1 48 56 48h8 8 89.5l-.1-4.8L161 32c0-.7 0-1.3 0-1.9c.5-16.6 14.1-30 31-30s30.5 13.4 31 30c0 .6 0 1.3 0 1.9l-.4 11.2zM64 112a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"],\"head-side-cough-slash\":[640,512,[],\"e062\",\"M448 325.8l44 34.5c8.1 1.4 14.8 6.8 18 14.1L552.9 408c10.6 .4 19.5 7.6 22.2 17.4l39.1 30.6c.6 0 1.2-.1 1.8-.1c11.1 0 20.4 7.5 23.2 17.8h-3.9c6.2 8.5 6.4 20.4-.4 29c-8.2 10.4-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L89.6 44.9C127 16.7 173.5 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v0 5.8zM0 224.2c0-38.7 9.8-75.1 27.1-106.9L341.8 365.3l-2.5 .3c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9l62 3.9 43 33.9C439.3 466.2 421.2 480 400 480H320v8c0 13.3-10.7 24-24 24H256v0H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM616 360a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-64-48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"],\"truck-medical\":[640,512,[128657,\"ambulance\"],\"f0f9\",\"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM176 80v48l-48 0c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V192h48c8.8 0 16-7.2 16-16V144c0-8.8-7.2-16-16-16H240V80c0-8.8-7.2-16-16-16H192c-8.8 0-16 7.2-16 16z\"],\"wheat-awn-circle-exclamation\":[640,512,[],\"e598\",\"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c22.5 22.5 53.3 31.5 82.4 27c0-1 0-2.1 0-3.1c0-33.1 9.1-64.1 25-90.6c-15.5-8.7-32.5-13.8-49.8-15.5l31.9-31.9 12.2 12.2c6 6 12.6 11.1 19.7 15.2c27.5-34 67.3-57.5 112.6-63.8c-4.1-3.8-8.4-7.3-12.9-10.5L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"],snowman:[512,512,[9731,9924],\"f7d0\",\"M341.1 140.6c-2 3.9-1.6 8.6 1.2 12c7 8.5 12.9 18.1 17.2 28.4L408 160.2V120c0-13.3 10.7-24 24-24s24 10.7 24 24v19.6l22.5-9.7c12.2-5.2 26.3 .4 31.5 12.6s-.4 26.3-12.6 31.5l-56 24-73.6 31.5c-.5 9.5-2.1 18.6-4.8 27.3c-1.2 3.8-.1 8 2.8 10.8C396.7 296.9 416 338.2 416 384c0 44.7-18.3 85-47.8 114.1c-9.9 9.7-23.7 13.9-37.5 13.9H181.3c-13.9 0-27.7-4.2-37.5-13.9C114.3 469 96 428.7 96 384c0-45.8 19.3-87.1 50.1-116.3c2.9-2.8 4-6.9 2.8-10.8c-2.7-8.7-4.3-17.9-4.8-27.3L70.5 198.1l-56-24C2.4 168.8-3.3 154.7 1.9 142.5s19.3-17.8 31.5-12.6L56 139.6V120c0-13.3 10.7-24 24-24s24 10.7 24 24v40.2L152.6 181c4.3-10.3 10.1-19.9 17.2-28.4c2.8-3.4 3.3-8.1 1.2-12C164 127.2 160 112.1 160 96c0-53 43-96 96-96s96 43 96 96c0 16.1-4 31.2-10.9 44.6zM224 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-16 80a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM288 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48 24v3.2c0 3.2 .8 6.3 2.3 9l9 16.9c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l9-16.9c1.5-2.8 2.3-5.9 2.3-9V120c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"],\"mortar-pestle\":[512,512,[],\"f5a7\",\"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160H397.3L502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2c-11.1 13.9-19.4 30.3-23.9 48.1C127.6 497.4 142.3 512 160 512H352c17.7 0 32.4-14.6 28.1-31.7c-4.5-17.8-12.8-34.1-23.9-48.1C436.6 403.7 480 338.5 480 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"],\"road-barrier\":[640,512,[],\"e562\",\"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V266.3L149.2 96H64V64c0-17.7-14.3-32-32-32zM405.2 96H330.8l-5.4 10.7L234.8 288h74.3l5.4-10.7L405.2 96zM362.8 288h74.3l5.4-10.7L533.2 96H458.8l-5.4 10.7L362.8 288zM202.8 96l-5.4 10.7L106.8 288h74.3l5.4-10.7L277.2 96H202.8zm288 192H576V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v53.7L490.8 288z\"],school:[640,512,[127979],\"f549\",\"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H256V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96H592c26.5 0 48-21.5 48-48V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V208zM96 320h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V336zM232 176a88 88 0 1 1 176 0 88 88 0 1 1 -176 0zm88-48c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16z\"],igloo:[576,512,[],\"f7ae\",\"M320 33.8V160H48.5C100.2 82.8 188.1 32 288 32c10.8 0 21.5 .6 32 1.8zM352 160V39.1C424.9 55.7 487.2 99.8 527.5 160H352zM29.9 192H96V320H0c0-46 10.8-89.4 29.9-128zM192 320H128V192H448V320H384v32H576v80c0 26.5-21.5 48-48 48H352V352c0-35.3-28.7-64-64-64s-64 28.7-64 64V480H48c-26.5 0-48-21.5-48-48V352H192V320zm288 0V192h66.1c19.2 38.6 29.9 82 29.9 128H480z\"],joint:[640,512,[],\"f595\",\"M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 55.2 21.9 108.1 60.9 147.1l21 21c9 9 14.1 21.2 14.1 33.9v11c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-29.7-11.8-58.2-32.8-79.2l-21-21C463.2 117.8 448 81.2 448 43V32zM576 256c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-55.2-21.9-108.1-60.9-147.1l-21-21c-9-9-14.1-21.2-14.1-33.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 29.7 11.8 58.2 32.8 79.2l21 21c27 27 42.2 63.6 42.2 101.8v11zM229.8 360c-4.7-2.3-10-2.7-15.2-2c-37.8 5.6-75.2 14.3-106.9 22.8C81.3 388 58.3 395.1 42 400.4c-8.2 2.7-14.7 4.9-19.2 6.5c-2.3 .8-4 1.4-5.2 1.8l-1.3 .5C6.8 412.5 0 421.4 0 432s6.8 19.5 16.3 22.7l1.3 .5c1.2 .4 3 1.1 5.2 1.8c4.5 1.6 11 3.8 19.2 6.5c16.3 5.4 39.2 12.5 65.7 19.6C160.3 497.3 228.8 512 288 512h67.3c4.1 0 6.3-5.1 3.6-8.3L256.5 380.8c-7.4-8.9-16.5-15.9-26.7-20.8zM445 512h19 51.3c4.1 0 6.3-5.1 3.6-8.3L416.5 380.8C401.3 362.5 378.8 352 355 352H336 288c-1.1 0-2.3 0-3.4 0c-4.1 0-6.2 5.1-3.5 8.3L383.5 483.2C398.7 501.5 421.2 512 445 512zm-3.9-151.7L543.5 483.2c14.6 17.5 35.9 27.9 58.6 28.7c21.1-1.1 37.9-18.6 37.9-39.9V392c0-22.1-17.9-40-40-40H444.7c-4.1 0-6.3 5.1-3.6 8.3z\"],\"angle-right\":[320,512,[8250],\"f105\",\"M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"],horse:[576,512,[128014],\"f6f0\",\"M448 238.1V160h16l9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1V80c0-19.1-8.4-36.3-21.7-48H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H480 448C377.3 0 320 57.3 320 128H224 203.2 148.8c-30.7 0-57.6 16.3-72.5 40.8C33.2 174.5 0 211.4 0 256v56c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9h33.7c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8V480c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V315.7c19.2-19.2 31.5-45.7 32-75.7h0v-1.9zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"],q:[448,512,[113],\"51\",\"M64 256c0 88.4 71.6 160 160 160c28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1C371.9 325.8 384 292.3 384 256c0-88.4-71.6-160-160-160S64 167.6 64 256zM344.9 444.6C310 467 268.5 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32s224 100.3 224 224c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"],g:[448,512,[103],\"47\",\"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H400c25.8 0 49.6 21.4 47.2 50.6C437.8 389.6 341.4 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57c13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"],\"notes-medical\":[512,512,[],\"f481\",\"M96 352V96c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V293.5c0 17-6.7 33.3-18.7 45.3l-58.5 58.5c-12 12-28.3 18.7-45.3 18.7H160c-35.3 0-64-28.7-64-64zM272 128c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V256h48c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H320V144c0-8.8-7.2-16-16-16H272zm24 336c13.3 0 24 10.7 24 24s-10.7 24-24 24H136C60.9 512 0 451.1 0 376V152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 224c0 48.6 39.4 88 88 88H296z\"],\"temperature-half\":[320,512,[127777,\"temperature-2\",\"thermometer-2\",\"thermometer-half\"],\"f2c9\",\"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V208c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"],\"dong-sign\":[384,512,[],\"e169\",\"M288 32c-17.7 0-32 14.3-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v49.1c-18.8-10.9-40.7-17.1-64-17.1c-70.7 0-128 57.3-128 128s57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32V288 128c17.7 0 32-14.3 32-32s-14.3-32-32-32c0-17.7-14.3-32-32-32zM128 288a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"],capsules:[576,512,[],\"f46b\",\"M64 144c0-26.5 21.5-48 48-48s48 21.5 48 48V256H64V144zM0 144V368c0 61.9 50.1 112 112 112s112-50.1 112-112V189.6c1.8 19.1 8.2 38 19.8 54.8L372.3 431.7c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 113.3C391.8 61.5 321.9 49 271.3 85.2c-28 20-44.3 50.8-47.3 83V144c0-61.9-50.1-112-112-112S0 82.1 0 144zm296.6 64.2c-16-23.3-10-55.3 11.9-71c21.2-15.1 50.5-10.3 66 12.2l67 97.6L361.6 303l-65-94.8zM491 407.7c-.8 .6-1.6 1.1-2.4 1.6l4-2.8c-.5 .4-1 .8-1.6 1.2z\"],\"poo-storm\":[448,512,[\"poo-bolt\"],\"f75a\",\"M236.9 .2c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1c0 21.7-8.5 37.2-21.9 47.6c-13.8 10.8-34 17-57.8 17H128c-35.3 0-64 28.7-64 64c0 12.2 3.4 23.5 9.3 33.2C31.7 216.2 0 252.4 0 296c0 40.9 28 75.4 65.8 85.2c-5.3-18.5 1-38.5 16.2-50.7l160-128c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L285.7 320H304c20.4 0 38.5 12.9 45.3 32.1c3.7 10.6 3.5 21.8 0 31.9H360c48.6 0 88-39.4 88-88c0-43.6-31.7-79.8-73.3-86.8c5.9-9.7 9.3-21.1 9.3-33.2c0-35.3-28.7-64-64-64h-1.4c.9-5.4 1.4-10.9 1.4-16.6c0-48.7-36.1-88.9-83.1-95.2zm45.1 227.4c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L129.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H233.9l52.4-104.8c3.4-6.7 1.6-14.9-4.3-19.6z\"],\"face-frown-open\":[512,512,[128550,\"frown-open\"],\"f57a\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-122 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"],\"hand-point-up\":[384,512,[9757],\"f0a6\",\"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32V240H32V32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192zm-64-64c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H162.3c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363V336c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"],\"money-bill\":[576,512,[],\"f0d6\",\"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM288 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"],bookmark:[384,512,[128278,61591],\"f02e\",\"M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z\"],\"align-justify\":[448,512,[],\"f039\",\"M448 64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32z\"],\"umbrella-beach\":[576,512,[127958],\"f5ca\",\"M346.3 271.8l-60.1-21.9L214 448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H282.1l64.1-176.2zm121.1-.2l-3.3 9.1 67.7 24.6c18.1 6.6 38-4.2 39.6-23.4c6.5-78.5-23.9-155.5-80.8-208.5c2 8 3.2 16.3 3.4 24.8l.2 6c1.8 57-7.3 113.8-26.8 167.4zM462 99.1c-1.1-34.4-22.5-64.8-54.4-77.4c-.9-.4-1.9-.7-2.8-1.1c-33-11.7-69.8-2.4-93.1 23.8l-4 4.5C272.4 88.3 245 134.2 226.8 184l-3.3 9.1L434 269.7l3.3-9.1c18.1-49.8 26.6-102.5 24.9-155.5l-.2-6zM107.2 112.9c-11.1 15.7-2.8 36.8 15.3 43.4l71 25.8 3.3-9.1c19.5-53.6 49.1-103 87.1-145.5l4-4.5c6.2-6.9 13.1-13 20.5-18.2c-79.6 2.5-154.7 42.2-201.2 108z\"],\"helmet-un\":[512,512,[],\"e503\",\"M479.5 224C471.2 98.9 367.2 0 240 0C107.5 0 0 107.5 0 240v56.3C0 344.8 39.2 384 87.7 384H200h14.9L343.5 505.4c4.5 4.2 10.4 6.6 16.5 6.6h96c13.3 0 24-10.7 24-24s-10.7-24-24-24H369.5l-1.5-1.5V288h80 32c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.5zM320 417.2l-78-73.7L274.4 288H320V417.2zM285.3 103.1l34.7 52V112c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V208c0 8.8-7.2 16-16 16s-16-7.2-16-16V112c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112v64c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"],bullseye:[512,512,[],\"f140\",\"M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"],bacon:[576,512,[129363],\"f7e5\",\"M439.2 1.2c11.2-3.2 23.2-.1 31.4 8.1L518 56.7l-26.5 7.9c-58 16.6-98.1 39.6-129.6 67.4c-31.2 27.5-53.2 59.1-75.1 90.9l-2.3 3.3C241.6 288.7 195 356.6 72.8 417.7L37.9 435.2 9.4 406.6c-7.3-7.3-10.6-17.6-9-27.8s8.1-18.9 17.3-23.5C136.1 296.2 180.9 231 223.3 169.3l2.3-3.4c21.8-31.8 44.9-64.9 77.7-93.9c33.4-29.5 75.8-53.6 135.9-70.8zM61.8 459l25.4-12.7c129.5-64.7 179.9-138.1 223.8-202l2.2-3.3c22.1-32.1 42.1-60.5 69.9-85.1c27.5-24.3 63.4-45.2 117.3-60.6l0 0 .2-.1 43.1-12.9 23 23c8 8 11.2 19.7 8.3 30.7s-11.3 19.6-22.2 22.7c-51.9 14.8-85.6 34.7-111.1 57.2c-26.1 23-45.1 49.9-67.3 82.1l-2.2 3.2C327.8 365.9 275.5 442 142.3 508.6c-12.3 6.2-27.2 3.7-36.9-6L61.8 459z\"],\"hand-point-down\":[384,512,[],\"f0a7\",\"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32V272H32V480zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-64 64c17.7 0 32-14.3 32-32V304c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6c13.2 0 25.4 4 35.6 10.8c8.7-24.9 32.5-42.8 60.4-42.8c11.7 0 22.6 3.1 32 8.6V160C384 71.6 312.4 0 224 0H162.3C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149v27c0 35.3 28.7 64 64 64h88c22.1 0 40-17.9 40-40s-17.9-40-40-40H96c-8.8 0-16-7.2-16-16s7.2-16 16-16h56c39.8 0 72 32.2 72 72z\"],\"arrow-up-from-bracket\":[448,512,[],\"e09a\",\"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3 192 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-64z\"],folder:[512,512,[128193,128447,61716,\"folder-blank\"],\"f07b\",\"M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z\"],\"file-waveform\":[448,512,[\"file-medical-alt\"],\"f478\",\"M96 0C60.7 0 32 28.7 32 64V288H144c6.1 0 11.6 3.4 14.3 8.8L176 332.2l49.7-99.4c2.7-5.4 8.3-8.8 14.3-8.8s11.6 3.4 14.3 8.8L281.9 288H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-6.1 0-11.6-3.4-14.3-8.8L240 275.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L134.1 320H32V448c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V160H288c-17.7 0-32-14.3-32-32V0H96zM288 0V128H416L288 0z\"],radiation:[512,512,[],\"f7b9\",\"M216 186.7c-23.9 13.8-40 39.7-40 69.3L32 256C14.3 256-.2 241.6 2 224.1C10.7 154 47.8 92.7 101.3 52c14.1-10.7 33.8-5.3 42.7 10l72 124.7zM256 336c14.6 0 28.2-3.9 40-10.7l72 124.8c8.8 15.3 3.7 35.1-12.6 41.9c-30.6 12.9-64.2 20-99.4 20s-68.9-7.1-99.4-20c-16.3-6.9-21.4-26.6-12.6-41.9l72-124.8c11.8 6.8 25.4 10.7 40 10.7zm224-80l-144 0c0-29.6-16.1-55.5-40-69.3L368 62c8.8-15.3 28.6-20.7 42.7-10c53.6 40.7 90.6 102 99.4 172.1c2.2 17.5-12.4 31.9-30 31.9zM256 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"],\"chart-simple\":[448,512,[],\"e473\",\"M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"],\"mars-stroke\":[512,512,[9894],\"f229\",\"M376 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L370.3 96.4 345 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l25.4 25.4L307.8 159c-28.4-19.5-62.7-31-99.8-31c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l28.6-28.6L407 201c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-25.4-25.4 22.1-22.1L471 153c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H376zm88 48h0v0l0 0zM96 304a112 112 0 1 1 224 0A112 112 0 1 1 96 304z\"],vial:[512,512,[129514],\"f492\",\"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L28.1 342.6C10.1 360.6 0 385 0 410.5V416c0 53 43 96 96 96h5.5c25.5 0 49.9-10.1 67.9-28.1L448 205.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-32-32-96-96-32-32zM205.3 256L352 109.3 402.7 160l-96 96H205.3z\"],gauge:[512,512,[\"dashboard\",\"gauge-med\",\"tachometer-alt-average\"],\"f624\",\"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-16 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"],\"wand-magic-sparkles\":[576,512,[\"magic-wand-sparkles\"],\"e2ca\",\"M234.7 42.7L197 56.8c-3 1.1-5 4-5 7.2s2 6.1 5 7.2l37.7 14.1L248.8 123c1.1 3 4 5 7.2 5s6.1-2 7.2-5l14.1-37.7L315 71.2c3-1.1 5-4 5-7.2s-2-6.1-5-7.2L277.3 42.7 263.2 5c-1.1-3-4-5-7.2-5s-6.1 2-7.2 5L234.7 42.7zM46.1 395.4c-18.7 18.7-18.7 49.1 0 67.9l34.6 34.6c18.7 18.7 49.1 18.7 67.9 0L529.9 116.5c18.7-18.7 18.7-49.1 0-67.9L495.3 14.1c-18.7-18.7-49.1-18.7-67.9 0L46.1 395.4zM484.6 82.6l-105 105-23.3-23.3 105-105 23.3 23.3zM7.5 117.2C3 118.9 0 123.2 0 128s3 9.1 7.5 10.8L64 160l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L128 160l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L128 96 106.8 39.5C105.1 35 100.8 32 96 32s-9.1 3-10.8 7.5L64 96 7.5 117.2zm352 256c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 416l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 416l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 352l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 352l-56.5 21.2z\"],e:[320,512,[101],\"45\",\"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z\"],\"pen-clip\":[512,512,[\"pen-alt\"],\"f305\",\"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z\"],\"bridge-circle-exclamation\":[640,512,[],\"e4ca\",\"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"],user:[448,512,[128100,62144],\"f007\",\"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z\"],\"school-circle-check\":[640,512,[],\"e56b\",\"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z\"],dumpster:[576,512,[],\"f793\",\"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0H428.5L402.9 32H304V160zm157.1 0h94c11.5 0 20.9-9.3 20.9-20.9c0-2.1-.3-4.1-.9-6.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l25.6 128zM32 192l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H448c0 17.7 14.3 32 32 32s32-14.3 32-32l20-160h12c17.7 0 32-14.3 32-32s-14.3-32-32-32h-4l4-32H32z\"],\"van-shuttle\":[640,512,[128656,\"shuttle-van\"],\"f5b6\",\"M64 104v88h96V96H72c-4.4 0-8 3.6-8 8zm482 88L465.1 96H384v96H546zm-226 0V96H224v96h96zM592 384H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V104C0 64.2 32.2 32 72 32H192 352 465.1c18.9 0 36.8 8.3 49 22.8L625 186.5c9.7 11.5 15 26.1 15 41.2V336c0 26.5-21.5 48-48 48zm-64 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"],\"building-user\":[640,512,[],\"e4da\",\"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h89.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM576 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM352 477.1c0 19.3 15.6 34.9 34.9 34.9H605.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H445.1c-51.4 0-93.1 41.7-93.1 93.1z\"],\"square-caret-left\":[448,512,[\"caret-square-left\"],\"f191\",\"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"],highlighter:[576,512,[],\"f591\",\"M315 315l158.4-215L444.1 70.6 229 229 315 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L420.6 8.4C428 2.9 437 0 446.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L334.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H224l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L128 320zM7 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H24c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z\"],key:[512,512,[128273],\"f084\",\"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V448h40c13.3 0 24-10.7 24-24V384h40c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zM376 96a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"],bullhorn:[512,512,[128226,128363],\"f0a1\",\"M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75H192 160 64c-35.3 0-64 28.7-64 64v96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V352l8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V300.4c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4V32zm-64 76.7V240 371.3C357.2 317.8 280.5 288 200.7 288H192V192h8.7c79.8 0 156.5-29.8 215.3-83.3z\"],globe:[512,512,[127760],\"f0ac\",\"M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z\"],synagogue:[640,512,[128333],\"f69b\",\"M309.8 3.7c5.9-4.9 14.6-4.9 20.5 0l121 100.8C469.5 119.7 480 142.2 480 166V280.1 512H464 352V416c0-17.7-14.3-32-32-32s-32 14.3-32 32v96H176 160V280.1 166c0-23.7 10.5-46.3 28.8-61.5L309.8 3.7zM512 512V244.5l28.1-31.2c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3l63.8 70.9c7.9 8.8 12.3 20.3 12.3 32.1V448c0 35.3-28.7 64-64 64H512zM128 244.5V512H64c-35.3 0-64-28.7-64-64V316.3c0-11.9 4.4-23.3 12.3-32.1l63.8-70.9c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3L128 244.5zM327 124.3c-3.1-5.4-10.9-5.4-13.9 0l-15.9 28.1-32.3-.3c-6.2-.1-10.1 6.7-7 12.1L274.3 192l-16.4 27.8c-3.2 5.4 .7 12.1 7 12.1l32.3-.3L313 259.7c3.1 5.4 10.9 5.4 13.9 0l15.9-28.1 32.3 .3c6.2 .1 10.1-6.7 7-12.1L365.7 192l16.4-27.8c3.2-5.4-.7-12.1-7-12.1l-32.3 .3L327 124.3z\"],\"person-half-dress\":[320,512,[],\"e548\",\"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm8 352V128h6.9c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352h0zM58.2 182.3c19.9-33.1 55.3-53.5 93.8-54.3V384h0v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2z\"],\"road-bridge\":[640,512,[],\"e563\",\"M352 0H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM480 200c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V224c0-13.3-10.7-24-24-24zm24 184c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V384zM480 40c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V64c0-13.3-10.7-24-24-24zM32 96H288v64H248v64h40v96c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V416c0-53-43-96-96-96V224H72V160H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm168 64H120v64h80V160z\"],\"location-arrow\":[448,512,[],\"f124\",\"M429.6 92.1c4.9-11.9 2.1-25.6-7-34.7s-22.8-11.9-34.7-7l-352 144c-14.2 5.8-22.2 20.8-19.3 35.8s16.1 25.8 31.4 25.8H224V432c0 15.3 10.8 28.4 25.8 31.4s30-5.1 35.8-19.3l144-352z\"],c:[384,512,[99],\"43\",\"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"],\"tablet-button\":[448,512,[],\"f10a\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"building-lock\":[576,512,[],\"e4d6\",\"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h88.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-23.7 12.9-44.4 32-55.4V272c0-30.5 12.2-58.2 32-78.4V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32v48H432V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"],\"pizza-slice\":[512,512,[],\"f818\",\"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L110.4 80c.5 0 1.1 0 1.6 0c176.7 0 320 143.3 320 320c0 .5 0 1.1 0 1.6l44.4-11.8c20.8-5.5 36.3-24.7 34.7-47.5C498.5 159.5 352.5 13.5 169.7 .9zM399.8 410.2c.1-3.4 .2-6.8 .2-10.2c0-159.1-128.9-288-288-288c-3.4 0-6.8 .1-10.2 .2L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1L399.8 410.2zM176 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"],\"money-bill-wave\":[576,512,[],\"f53a\",\"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96zM64 352c35.3 0 64 28.7 64 64H64V352zm64-208c0 35.3-28.7 64-64 64V144h64zM512 304v64H448c0-35.3 28.7-64 64-64zM448 96h64v64c-35.3 0-64-28.7-64-64z\"],\"chart-area\":[512,512,[\"area-chart\"],\"f1fe\",\"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm96 288H448c17.7 0 32-14.3 32-32V251.8c0-7.6-2.7-15-7.7-20.8l-65.8-76.8c-12.1-14.2-33.7-15-46.9-1.8l-21 21c-10 10-26.4 9.2-35.4-1.6l-39.2-47c-12.6-15.1-35.7-15.4-48.7-.6L135.9 215c-5.1 5.8-7.9 13.3-7.9 21.1v84c0 17.7 14.3 32 32 32z\"],\"house-flag\":[640,512,[],\"e50d\",\"M480 0c-17.7 0-32 14.3-32 32V192 512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H512c0-17.7-14.3-32-32-32zM416 159L276.8 39.7c-12-10.3-29.7-10.3-41.7 0l-224 192C1 240.4-2.7 254.5 2 267.1S18.6 288 32 288H64V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v96c0 17.7 14.3 32 32 32h64.7l.2 0h-1V159z\"],\"person-circle-minus\":[576,512,[],\"e540\",\"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"],ban:[512,512,[128683,\"cancel\"],\"f05e\",\"M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"],\"camera-rotate\":[640,512,[],\"e0d8\",\"M213.1 64.8L202.7 96H128c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H437.3L426.9 64.8C420.4 45.2 402.1 32 381.4 32H258.6c-20.7 0-39 13.2-45.5 32.8zM448 256c0 8.8-7.2 16-16 16H355.3c-6.2 0-11.3-5.1-11.3-11.3c0-3 1.2-5.9 3.3-8L371 229c-13.6-13.4-31.9-21-51-21c-19.2 0-37.7 7.6-51.3 21.3L249 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l19.7-19.7C257.4 172.7 288 160 320 160c31.8 0 62.4 12.6 85 35l23.7-23.7c2.1-2.1 5-3.3 8-3.3c6.2 0 11.3 5.1 11.3 11.3V256zM192 320c0-8.8 7.2-16 16-16h76.7c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8L269 347c13.6 13.4 31.9 21 51 21c19.2 0 37.7-7.6 51.3-21.3L391 327c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-19.7 19.7C382.6 403.3 352 416 320 416c-31.8 0-62.4-12.6-85-35l-23.7 23.7c-2.1 2.1-5 3.3-8 3.3c-6.2 0-11.3-5.1-11.3-11.3V320z\"],\"spray-can-sparkles\":[512,512,[\"air-freshener\"],\"f5d0\",\"M96 32v96H224V32c0-17.7-14.3-32-32-32H128C110.3 0 96 14.3 96 32zm0 128c-53 0-96 43-96 96V464c0 26.5 21.5 48 48 48H272c26.5 0 48-21.5 48-48V256c0-53-43-96-96-96H96zm64 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM384 48c0-1.4-1-3-2.2-3.6L352 32 339.6 2.2C339 1 337.4 0 336 0s-3 1-3.6 2.2L320 32 290.2 44.4C289 45 288 46.6 288 48c0 1.4 1 3 2.2 3.6L320 64l12.4 29.8C333 95 334.6 96 336 96s3-1 3.6-2.2L352 64l29.8-12.4C383 51 384 49.4 384 48zm76.4 45.8C461 95 462.6 96 464 96s3-1 3.6-2.2L480 64l29.8-12.4C511 51 512 49.4 512 48c0-1.4-1-3-2.2-3.6L480 32 467.6 2.2C467 1 465.4 0 464 0s-3 1-3.6 2.2L448 32 418.2 44.4C417 45 416 46.6 416 48c0 1.4 1 3 2.2 3.6L448 64l12.4 29.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L448 224l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L448 256l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 256l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6c0-1.4-1-3-2.2-3.6L480 224l-12.4-29.8zM448 144c0-1.4-1-3-2.2-3.6L416 128 403.6 98.2C403 97 401.4 96 400 96s-3 1-3.6 2.2L384 128l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L384 160l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L416 160l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6z\"],star:[576,512,[11088,61446],\"f005\",\"M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z\"],repeat:[512,512,[128257],\"f363\",\"M0 224c0 17.7 14.3 32 32 32s32-14.3 32-32c0-53 43-96 96-96H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S320 19.1 320 32V64H160C71.6 64 0 135.6 0 224zm512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 53-43 96-96 96H192V352c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V448H352c88.4 0 160-71.6 160-160z\"],cross:[384,512,[128327,10013],\"f654\",\"M176 0c-26.5 0-48 21.5-48 48v80H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h80V464c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V256h80c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H256V48c0-26.5-21.5-48-48-48H176z\"],box:[448,512,[128230],\"f466\",\"M50.7 58.5L0 160H208V32H93.7C75.5 32 58.9 42.3 50.7 58.5zM240 160H448L397.3 58.5C389.1 42.3 372.5 32 354.3 32H240V160zm208 32H0V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192z\"],\"venus-mars\":[640,512,[9892],\"f228\",\"M176 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM352 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H208v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C62.1 334.1 0 262.3 0 176C0 78.8 78.8 0 176 0s176 78.8 176 176zM271.9 360.6c19.3-10.1 36.9-23.1 52.1-38.4c20 18.5 46.7 29.8 76.1 29.8c61.9 0 112-50.1 112-112s-50.1-112-112-112c-7.2 0-14.3 .7-21.1 2c-4.9-21.5-13-41.7-24-60.2C369.3 66 384.4 64 400 64c37 0 71.4 11.4 99.8 31l20.6-20.6L487 41c-6.9-6.9-8.9-17.2-5.2-26.2S494.3 0 504 0H616c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L545 140.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176c-50.5 0-96-21.3-128.1-55.4z\"],\"arrow-pointer\":[320,512,[\"mouse-pointer\"],\"f245\",\"M0 55.2V426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320H297.9c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z\"],maximize:[512,512,[\"expand-arrows-alt\"],\"f31e\",\"M200 32H56C42.7 32 32 42.7 32 56V200c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l40-40 79 79-79 79L73 295c-6.9-6.9-17.2-8.9-26.2-5.2S32 302.3 32 312V456c0 13.3 10.7 24 24 24H200c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H456c13.3 0 24-10.7 24-24V312c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S209.7 32 200 32z\"],\"charging-station\":[576,512,[],\"f5e7\",\"M96 0C60.7 0 32 28.7 32 64V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32s-14.3-32-32-32V304h16c22.1 0 40 17.9 40 40v32c0 39.8 32.2 72 72 72s72-32.2 72-72V252.3c32.5-10.2 56-40.5 56-76.3V144c0-8.8-7.2-16-16-16H544V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H480V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H432c-8.8 0-16 7.2-16 16v32c0 35.8 23.5 66.1 56 76.3V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V344c0-48.6-39.4-88-88-88H320V64c0-35.3-28.7-64-64-64H96zM216.9 82.7c6 4 8.5 11.5 6.3 18.3l-25 74.9H256c6.7 0 12.7 4.2 15 10.4s.5 13.3-4.6 17.7l-112 96c-5.5 4.7-13.4 5.1-19.3 1.1s-8.5-11.5-6.3-18.3l25-74.9H96c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7l112-96c5.5-4.7 13.4-5.1 19.3-1.1z\"],shapes:[512,512,[\"triangle-circle-square\"],\"f61f\",\"M315.4 15.5C309.7 5.9 299.2 0 288 0s-21.7 5.9-27.4 15.5l-96 160c-5.9 9.9-6.1 22.2-.4 32.2s16.3 16.2 27.8 16.2H384c11.5 0 22.2-6.2 27.8-16.2s5.5-22.3-.4-32.2l-96-160zM288 312V456c0 22.1 17.9 40 40 40H472c22.1 0 40-17.9 40-40V312c0-22.1-17.9-40-40-40H328c-22.1 0-40 17.9-40 40zM128 512a128 128 0 1 0 0-256 128 128 0 1 0 0 256z\"],shuffle:[512,512,[128256,\"random\"],\"f074\",\"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160H352c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96h32V64c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V416H352c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8h32V320c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"],\"person-running\":[448,512,[127939,\"running\"],\"f70c\",\"M320 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM125.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L137.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L238 299l30.9-82.4 5.1 12.3C289 264.7 323.9 288 362.7 288H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H362.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L57.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM91.2 352H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h69.6c19 0 36.2-11.2 43.9-28.5L157 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L91.2 352z\"],\"mobile-retro\":[320,512,[],\"e527\",\"M0 64C0 28.7 28.7 0 64 0H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm64 96v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 352a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM128 48c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H128z\"],\"grip-lines-vertical\":[192,512,[],\"f7a5\",\"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64z\"],spider:[512,512,[128375],\"f717\",\"M158.4 32.6c4.8-12.4-1.4-26.3-13.8-31s-26.3 1.4-31 13.8L81.1 100c-7.9 20.7-3 44.1 12.7 59.7l57.4 57.4L70.8 190.3c-2.4-.8-4.3-2.7-5.1-5.1L46.8 128.4C42.6 115.8 29 109 16.4 113.2S-3 131 1.2 143.6l18.9 56.8c5.6 16.7 18.7 29.8 35.4 35.4L116.1 256 55.6 276.2c-16.7 5.6-29.8 18.7-35.4 35.4L1.2 368.4C-3 381 3.8 394.6 16.4 398.8s26.2-2.6 30.4-15.2l18.9-56.8c.8-2.4 2.7-4.3 5.1-5.1l80.4-26.8L93.7 352.3C78.1 368 73.1 391.4 81.1 412l32.5 84.6c4.8 12.4 18.6 18.5 31 13.8s18.5-18.6 13.8-31l-32.5-84.6c-1.1-3-.4-6.3 1.8-8.5L160 353.9c1 52.1 43.6 94.1 96 94.1s95-41.9 96-94.1l32.3 32.3c2.2 2.2 2.9 5.6 1.8 8.5l-32.5 84.6c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8L430.9 412c7.9-20.7 3-44.1-12.7-59.7l-57.4-57.4 80.4 26.8c2.4 .8 4.3 2.7 5.1 5.1l18.9 56.8c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-18.9-56.8c-5.6-16.7-18.7-29.8-35.4-35.4L395.9 256l60.5-20.2c16.7-5.6 29.8-18.7 35.4-35.4l18.9-56.8c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-18.9 56.8c-.8 2.4-2.7 4.3-5.1 5.1l-80.4 26.8 57.4-57.4c15.6-15.6 20.6-39 12.7-59.7L398.4 15.4C393.6 3 379.8-3.2 367.4 1.6s-18.5 18.6-13.8 31l32.5 84.6c1.1 3 .4 6.3-1.8 8.5L336 174.1V160c0-31.8-18.6-59.3-45.5-72.2c-9.1-4.4-18.5 3.3-18.5 13.4V112c0 8.8-7.2 16-16 16s-16-7.2-16-16V101.2c0-10.1-9.4-17.7-18.5-13.4C194.6 100.7 176 128.2 176 160v14.1l-48.3-48.3c-2.2-2.2-2.9-5.6-1.8-8.5l32.5-84.6z\"],\"hands-bound\":[640,512,[],\"e4f9\",\"M96 32C96 14.3 81.7 0 64 0S32 14.3 32 32V96v59.1 .7V192v21.9c0 14.2 5.1 27.9 14.3 38.7L131.6 352H128c-13.3 0-24 10.7-24 24s10.7 24 24 24h32H288h64H480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24h-3.6l85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7V192 155.8v-.7V96 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V96v48.8l-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8c-9.7-5.7-12.1-18.7-5.1-27.5L473 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C361 209.7 352 233.4 352 258.1V320v32H288V320 258.1c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2s-15.2 30.9-4.4 44.5l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5c-8.1 4.8-18.6 2.7-24.2-4.8L96 144.8V96 32zm64 448v32H288V480h64v32H480V480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H480 352 288 160 128c-13.3 0-24 10.7-24 24s10.7 24 24 24h32z\"],\"file-invoice-dollar\":[384,512,[],\"f571\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16v17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1 0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1V440c0 8.8-7.2 16-16 16s-16-7.2-16-16V422.2c-11.2-2.1-21.7-5.7-30.9-8.9l0 0 0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4l0 0 0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7V232c0-8.8 7.2-16 16-16z\"],\"plane-circle-exclamation\":[640,512,[],\"e556\",\"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"],\"x-ray\":[512,512,[],\"f497\",\"M0 64C0 46.3 14.3 32 32 32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V96C14.3 96 0 81.7 0 64zM256 96c-8.8 0-16 7.2-16 16v32H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48H128c-8.8 0-16 7.2-16 16s7.2 16 16 16H240v70.6L189.1 307c-5.2-2-10.6-3-16.2-3h-2.1c-23.6 0-42.8 19.2-42.8 42.8c0 9.6 3.2 18.9 9.1 26.4l18.2 23.2c9.7 12.4 24.6 19.6 40.3 19.6H316.4c15.7 0 30.6-7.2 40.3-19.6l18.2-23.2c5.9-7.5 9.1-16.8 9.1-26.4c0-23.6-19.2-42.8-42.8-42.8H339c-5.5 0-11 1-16.2 3L272 326.6V256H384c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V176h80c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16zM208 352a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm80 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"],\"spell-check\":[576,512,[],\"f891\",\"M112 0C99.1 0 87.4 7.8 82.5 19.7l-66.7 160-13.3 32c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L66.7 224h90.7l5.1 12.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-13.3-32-66.7-160C136.6 7.8 124.9 0 112 0zm18.7 160H93.3L112 115.2 130.7 160zM256 32v96 96c0 17.7 14.3 32 32 32h80c44.2 0 80-35.8 80-80c0-23.1-9.8-43.8-25.4-58.4c6-11.2 9.4-24 9.4-37.6c0-44.2-35.8-80-80-80H288c-17.7 0-32 14.3-32 32zm96 64H320V64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-32 64h32 16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320V160zM566.6 310.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L352 434.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l192-192z\"],slash:[640,512,[],\"f715\",\"M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z\"],\"computer-mouse\":[384,512,[128433,\"mouse\"],\"f8cc\",\"M0 192H176V0H160C71.6 0 0 71.6 0 160v32zm0 32V352c0 88.4 71.6 160 160 160h64c88.4 0 160-71.6 160-160V224H192 0zm384-32V160C384 71.6 312.4 0 224 0H208V192H384z\"],\"arrow-right-to-bracket\":[512,512,[\"sign-in\"],\"f090\",\"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"],\"shop-slash\":[640,512,[\"store-alt-slash\"],\"e070\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43V224H512V376L384 275.7V224H320v1.5L277.2 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L74.1 32.8 38.8 5.1zM36.8 192h85L21 112.5 6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM320 384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V398.5l-64-50.4V384zM544 512l-.3 0h.6l-.3 0z\"],server:[512,512,[],\"f233\",\"M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"],\"virus-covid-slash\":[640,512,[],\"e4a9\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c11.4-19.5 19.1-41.4 22.3-64.7H528v16c0 13.3 10.7 24 24 24s24-10.7 24-24V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v16H494.4c-4.2-30.7-16.3-58.8-34.1-82.3L484 125.9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L472.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L450.1 92l-23.8 23.8C402.8 97.9 374.7 85.8 344 81.6V48h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h16V81.6c-30.7 4.2-58.8 16.3-82.3 34.1L189.9 92l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L134.1 79.8 38.8 5.1zm362.5 407L149.2 213.5c-1.5 6-2.7 12.2-3.5 18.5H112V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V280h33.6c4.2 30.7 16.3 58.8 34.1 82.3L156 386.1l-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L189.9 420l23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1V464H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2z\"],\"shop-lock\":[640,512,[],\"e4a5\",\"M36.8 192H449.6c20.2-19.8 47.9-32 78.4-32c30.5 0 58.1 12.2 78.3 31.9c18.9-1.6 33.7-17.4 33.7-36.7c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM384 224H320V384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 352 224zm144 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"],\"hourglass-start\":[384,512,[\"hourglass-1\"],\"f251\",\"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM288 437v11H96V437c0-25.5 10.1-49.9 28.1-67.9L192 301.3l67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"],\"blender-phone\":[576,512,[],\"f6b6\",\"M224 352L196.8 52.3C194.2 24.2 216.3 0 244.6 0H534.1c21.1 0 36.4 20.1 30.9 40.4L558.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H549.8l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H523.6l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L480 352H224zm-16 32H496c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM147.5 30.7c10.8 6.7 15.3 21 10.6 33.4l-22 57.8c-4.2 10.9-14.5 17.6-25.3 16.4l-33.3-3.6c-13.6 42.2-13.6 88.4 0 130.7l33.3-3.6c10.9-1.2 21.2 5.5 25.3 16.4l22 57.8c4.7 12.4 .2 26.7-10.6 33.4l-44 27.2c-9.7 6-21.9 4.2-29.8-4.3C-24.6 286-24.6 114 73.7 7.8C81.6-.7 93.8-2.5 103.5 3.5l44 27.2z\"],\"building-wheat\":[640,512,[],\"e4db\",\"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm384 80v16c0 44.2-35.8 80-80 80H544V272c0-44.2 35.8-80 80-80h16zm0 128c0 44.2-35.8 80-80 80H544V384c0-44.2 35.8-80 80-80h16v16zm0 112c0 44.2-35.8 80-80 80H544V496c0-44.2 35.8-80 80-80h16v16zM512 496v16H496c-44.2 0-80-35.8-80-80V416h16c44.2 0 80 35.8 80 80zm0-96H496c-44.2 0-80-35.8-80-80V304h16c44.2 0 80 35.8 80 80v16zm0-128v16H496c-44.2 0-80-35.8-80-80V192h16c44.2 0 80 35.8 80 80zM528 32c13.3 0 24 10.7 24 24V160c0 13.3-10.7 24-24 24s-24-10.7-24-24V56c0-13.3 10.7-24 24-24zm96 64v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24s24 10.7 24 24zM456 72c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24z\"],\"person-breastfeeding\":[448,512,[],\"e53a\",\"M224 0a80 80 0 1 1 0 160A80 80 0 1 1 224 0zM436.8 382.8L373.5 462c-16.6 20.7-46.8 24.1-67.5 7.5c-17.6-14.1-22.7-38.1-13.5-57.7l-.8-.1c-38.9-5.6-74.3-25.1-99.7-54.8V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L27.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7c-4.9-2.8-9.2-6.4-12.6-10.6c-4.6-5.4-7.8-11.7-9.6-18.4c-3.3-12-1.9-25.2 4.8-36.6c.6-1.1 1.3-2.2 2-3.2L75.6 256.1c26.7-40.1 71.7-64.1 119.8-64.1h75.2c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4c2.9 6.7 4.3 13.8 4 20.8c-.3 10.6-4.2 21-11.2 29.4zM320 332a44 44 0 1 0 -88 0 44 44 0 1 0 88 0z\"],\"right-to-bracket\":[512,512,[\"sign-in-alt\"],\"f2f6\",\"M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM352 416l64 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"],venus:[384,512,[9792],\"f221\",\"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V384H128c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V349.1z\"],passport:[448,512,[],\"f5ab\",\"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM183 278.8c-27.9-13.2-48.4-39.4-53.7-70.8h39.1c1.6 30.4 7.7 53.8 14.6 70.8zm41.3 9.2l-.3 0-.3 0c-2.4-3.5-5.7-8.9-9.1-16.5c-6-13.6-12.4-34.3-14.2-63.5h47.1c-1.8 29.2-8.1 49.9-14.2 63.5c-3.4 7.6-6.7 13-9.1 16.5zm40.7-9.2c6.8-17.1 12.9-40.4 14.6-70.8h39.1c-5.3 31.4-25.8 57.6-53.7 70.8zM279.6 176c-1.6-30.4-7.7-53.8-14.6-70.8c27.9 13.2 48.4 39.4 53.7 70.8H279.6zM223.7 96l.3 0 .3 0c2.4 3.5 5.7 8.9 9.1 16.5c6 13.6 12.4 34.3 14.2 63.5H200.5c1.8-29.2 8.1-49.9 14.2-63.5c3.4-7.6 6.7-13 9.1-16.5zM183 105.2c-6.8 17.1-12.9 40.4-14.6 70.8H129.3c5.3-31.4 25.8-57.6 53.7-70.8zM352 192A128 128 0 1 0 96 192a128 128 0 1 0 256 0zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"],\"heart-pulse\":[512,512,[\"heartbeat\"],\"f21e\",\"M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4h87c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31H476.3c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240h-132c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9H16c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1v5.8c0 16.9-2.8 33.5-8.3 49.1z\"],\"people-carry-box\":[640,512,[\"people-carry\"],\"f4ce\",\"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm64 193.7v65.1l51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3l-14.3-85.9L66.8 320C54.8 308 48 291.7 48 274.7V186.6c0-32.4 26.2-58.6 58.6-58.6c24.1 0 46.5 12 59.9 32l47.4 71.1 10.1 5V160c0-17.7 14.3-32 32-32H384c17.7 0 32 14.3 32 32v76.2l10.1-5L473.5 160c13.3-20 35.8-32 59.9-32c32.4 0 58.6 26.2 58.6 58.6v88.1c0 17-6.7 33.3-18.7 45.3l-79.4 79.4-14.3 85.9c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l15.2-90.9c1.6-9.9 6.3-19 13.4-26.1l51-51V241.7l-19 28.5c-4.6 7-11 12.6-18.5 16.3l-59.6 29.8c-2.4 1.3-4.9 2.2-7.6 2.8c-2.6 .6-5.3 .9-7.9 .8H256.7c-2.5 .1-5-.2-7.5-.7c-2.9-.6-5.6-1.6-8.1-3l-59.5-29.8c-7.5-3.7-13.8-9.4-18.5-16.3l-19-28.5zM2.3 468.1L50.1 348.6l49.2 49.2-37.6 94c-6.6 16.4-25.2 24.4-41.6 17.8S-4.3 484.5 2.3 468.1zM512 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm77.9 348.6l47.8 119.5c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-37.6-94 49.2-49.2z\"],\"temperature-high\":[512,512,[],\"f769\",\"M416 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 128A96 96 0 1 0 416 0a96 96 0 1 0 0 192zM96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.2 32 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"],microchip:[512,512,[],\"f2db\",\"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64c-35.3 0-64 28.7-64 64H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64c0 35.3 28.7 64 64 64v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448c35.3 0 64-28.7 64-64h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V280h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V176h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448c0-35.3-28.7-64-64-64V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H280V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H176V24zM160 128H352c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm192 32H160V352H352V160z\"],crown:[576,512,[128081],\"f521\",\"M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6H426.6c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z\"],\"weight-hanging\":[512,512,[],\"f5cd\",\"M224 96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm122.5 32c3.5-10 5.5-20.8 5.5-32c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32H120c-22 0-41.2 15-46.6 36.4l-72 288c-3.6 14.3-.4 29.5 8.7 41.2S33.2 512 48 512H464c14.8 0 28.7-6.8 37.8-18.5s12.3-26.8 8.7-41.2l-72-288C433.2 143 414 128 392 128H346.5z\"],\"xmarks-lines\":[640,512,[],\"e59a\",\"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55L41 167c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"],\"file-prescription\":[384,512,[],\"f572\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM104 196h72c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6H124v44c0 11-9 20-20 20s-20-9-20-20V296 216c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20H124v40h52z\"],\"weight-scale\":[512,512,[\"weight\"],\"f496\",\"M128 176a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zM391.8 64C359.5 24.9 310.7 0 256 0S152.5 24.9 120.2 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H391.8zM296 224c0-10.6-4.1-20.2-10.9-27.4l33.6-78.3c3.5-8.1-.3-17.5-8.4-21s-17.5 .3-21 8.4L255.7 184c-22 .1-39.7 18-39.7 40c0 22.1 17.9 40 40 40s40-17.9 40-40z\"],\"user-group\":[640,512,[128101,\"user-friends\"],\"f500\",\"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM609.3 512H471.4c5.4-9.4 8.6-20.3 8.6-32v-8c0-60.7-27.1-115.2-69.8-151.8c2.4-.1 4.7-.2 7.1-.2h61.4C567.8 320 640 392.2 640 481.3c0 17-13.8 30.7-30.7 30.7zM432 256c-31 0-59-12.6-79.3-32.9C372.4 196.5 384 163.6 384 128c0-26.8-6.6-52.1-18.3-74.3C384.3 40.1 407.2 32 432 32c61.9 0 112 50.1 112 112s-50.1 112-112 112z\"],\"arrow-up-a-z\":[576,512,[\"sort-alpha-up\"],\"f15e\",\"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z\"],\"chess-knight\":[448,512,[9822],\"f441\",\"M96 48L82.7 61.3C70.7 73.3 64 89.5 64 106.5V238.9c0 10.7 5.3 20.7 14.2 26.6l10.6 7c14.3 9.6 32.7 10.7 48.1 3l3.2-1.6c2.6-1.3 5-2.8 7.3-4.5l49.4-37c6.6-5 15.7-5 22.3 0c10.2 7.7 9.9 23.1-.7 30.3L90.4 350C73.9 361.3 64 380 64 400H384l28.9-159c2.1-11.3 3.1-22.8 3.1-34.3V192C416 86 330 0 224 0H83.8C72.9 0 64 8.9 64 19.8c0 7.5 4.2 14.3 10.9 17.7L96 48zm24 68a20 20 0 1 1 40 0 20 20 0 1 1 -40 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512H409.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L384 432H64L22.6 473.4z\"],\"face-laugh-squint\":[512,512,[\"laugh-squint\"],\"f59b\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zm36.7-199.4l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 125.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"],wheelchair:[512,512,[],\"f193\",\"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM120.5 247.2c12.4-4.7 18.7-18.5 14-30.9s-18.5-18.7-30.9-14C43.1 225.1 0 283.5 0 352c0 88.4 71.6 160 160 160c61.2 0 114.3-34.3 141.2-84.7c6.2-11.7 1.8-26.2-9.9-32.5s-26.2-1.8-32.5 9.9C240 440 202.8 464 160 464C98.1 464 48 413.9 48 352c0-47.9 30.1-88.8 72.5-104.8zM259.8 176l-1.9-9.7c-4.5-22.3-24-38.3-46.8-38.3c-30.1 0-52.7 27.5-46.8 57l23.1 115.5c6 29.9 32.2 51.4 62.8 51.4h5.1c.4 0 .8 0 1.3 0h94.1c6.7 0 12.6 4.1 15 10.4L402 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9H282.2l-9.6-48H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H259.8z\"],\"circle-arrow-up\":[512,512,[\"arrow-circle-up\"],\"f0aa\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM385 231c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V193.9l-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 119c9.4-9.4 24.6-9.4 33.9 0L385 231z\"],\"toggle-on\":[576,512,[],\"f205\",\"M192 64C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192s-86-192-192-192H192zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"],\"person-walking\":[320,512,[128694,\"walking\"],\"f554\",\"M160 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM126.5 199.3c-1 .4-1.9 .8-2.9 1.2l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L281 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L247 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5zM68.7 398l25-62.4c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L68.7 398z\"],l:[320,512,[108],\"4c\",\"M64 32c17.7 0 32 14.3 32 32V416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32z\"],fire:[448,512,[128293],\"f06d\",\"M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z\"],\"bed-pulse\":[640,512,[\"procedures\"],\"f487\",\"M483.2 9.6L524 64h92c13.3 0 24 10.7 24 24s-10.7 24-24 24H512c-7.6 0-14.7-3.6-19.2-9.6L468.7 70.3l-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L339.2 112H216c-13.3 0-24-10.7-24-24s10.7-24 24-24H352c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5C445.9 6.2 453.2 1 461.6 .1s16.6 2.7 21.6 9.5zM320 160h12.7l20.7 31.1c11.2 16.8 30.6 26.3 50.7 24.8s37.9-13.7 46.5-32L461.9 160H544c53 0 96 43 96 96V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V352H288V192c0-17.7 14.3-32 32-32zm-144 0a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"],\"shuttle-space\":[640,512,[\"space-shuttle\"],\"f197\",\"M130 480c40.6 0 80.4-11 115.2-31.9L352 384l-224 0 0 96h2zM352 128L245.2 63.9C210.4 43 170.6 32 130 32h-2v96l224 0zM96 128l0-96H80C53.5 32 32 53.5 32 80v48h8c-22.1 0-40 17.9-40 40v16V328v16c0 22.1 17.9 40 40 40H32v48c0 26.5 21.5 48 48 48H96l0-96h8c26.2 0 49.4-12.6 64-32H456c69.3 0 135-22.7 179.2-81.6c6.4-8.5 6.4-20.3 0-28.8C591 182.7 525.3 160 456 160H168c-14.6-19.4-37.8-32-64-32l-8 0zM512 243.6v24.9c0 19.6-15.9 35.6-35.6 35.6c-2.5 0-4.4-2-4.4-4.4V212.4c0-2.5 2-4.4 4.4-4.4c19.6 0 35.6 15.9 35.6 35.6z\"],\"face-laugh\":[512,512,[\"laugh\"],\"f599\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"folder-open\":[576,512,[128194,128449,61717],\"f07c\",\"M88.7 223.8L0 375.8V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H416c35.3 0 64 28.7 64 64v32H144c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224H544c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480H32c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z\"],\"heart-circle-plus\":[576,512,[],\"e500\",\"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"],\"code-fork\":[448,512,[],\"e13b\",\"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3V192c0 17.7 14.3 32 32 32H304c17.7 0 32-14.3 32-32V153.3C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V192c0 53-43 96-96 96H256v70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V288H144c-53 0-96-43-96-96V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM248 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"],city:[640,512,[127961],\"f64f\",\"M480 48c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48V96H224V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V96H112V24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144v96V464c0 26.5 21.5 48 48 48H304h32 96H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H480V48zm96 320v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM240 416H208c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zM128 400c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM560 256c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32zM256 176v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM112 160c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32zM256 304c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM112 320H80c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zm304-48v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM400 64c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h32zm16 112v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"],\"microphone-lines\":[384,512,[127897,\"microphone-alt\"],\"f3c9\",\"M96 96V256c0 53 43 96 96 96s96-43 96-96H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V192H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96S96 43 96 96zM320 240v16c0 70.7-57.3 128-128 128s-128-57.3-128-128V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24z\"],\"pepper-hot\":[512,512,[127798],\"f816\",\"M428.3 3c11.6-6.4 26.2-2.3 32.6 9.3l4.8 8.7c19.3 34.7 19.8 75.7 3.4 110C495.8 159.6 512 197.9 512 240c0 18.5-3.1 36.3-8.9 52.8c-6.1 17.3-28.5 16.3-36.8-.1l-11.7-23.4c-4.1-8.1-12.4-13.3-21.5-13.3H360c-13.3 0-24-10.7-24-24V152c0-13.3-10.7-24-24-24l-17.1 0c-21.3 0-30-23.9-10.8-32.9C304.7 85.4 327.7 80 352 80c28.3 0 54.8 7.3 77.8 20.2c5.5-18.2 3.7-38.4-6-55.8L419 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zM171.2 345.5L264 160l40 0v80c0 26.5 21.5 48 48 48h76.2l23.9 47.8C372.3 443.9 244.3 512 103.2 512H44.4C19.9 512 0 492.1 0 467.6c0-20.8 14.5-38.8 34.8-43.3l49.8-11.1c37.6-8.4 69.5-33.2 86.7-67.7z\"],unlock:[448,512,[128275],\"f09c\",\"M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H144V144z\"],\"colon-sign\":[384,512,[],\"e140\",\"M255 39.8c4.3-17.1-6.1-34.5-23.3-38.8S197.2 7.1 193 24.2L181.9 68.6C96.1 87.8 32 164.4 32 256c0 58.1 25.8 110.2 66.7 145.4L81 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l13-52.1c9 3.4 18.4 6.2 28 8.2L177 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l10.4-41.4c33.4-4.4 64.1-17.4 89.8-36.7c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-10.2 7.7-21.7 13.9-34 18.3L321 160c9.4-.3 18.5-4.7 24.6-12.8c10.6-14.1 7.8-34.2-6.4-44.8c-1.1-.8-2.2-1.6-3.3-2.4L351 39.8c4.3-17.1-6.1-34.5-23.3-38.8S293.2 7.1 289 24.2L277.2 71.5c-9.3-2.7-18.8-4.6-28.6-5.9L255 39.8zM163.2 143.3L117.3 326.8C103.9 306.5 96 282.2 96 256c0-48.7 27.2-91 67.2-112.7zm8.6 229.5l61.1-244.6c9.9 .7 19.5 2.5 28.7 5.3l-62 248.1c-9.7-1.9-19-4.8-27.8-8.8z\"],headset:[512,512,[],\"f590\",\"M256 48C141.1 48 48 141.1 48 256v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V256C0 114.6 114.6 0 256 0S512 114.6 512 256V400.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24H240c-26.5 0-48-21.5-48-48s21.5-48 48-48h32c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40V256c0-114.9-93.1-208-208-208zM144 208h16c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V272c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64v48c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V240c0-17.7 14.3-32 32-32h16z\"],\"store-slash\":[640,512,[],\"e071\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68V384 252.6c-4 1-8 1.8-12.3 2.3l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V350.9L301.2 210.7c7-4.4 13.3-9.7 18.8-15.7c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4L522.3 13.1C517.2 5 508.1 0 498.4 0H141.6c-9.7 0-18.8 5-23.9 13.1l-22.7 36L38.8 5.1zM514.9 501.7L365.5 384H160V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H480c12.9 0 24.8-3.8 34.9-10.3zM155.3 218.4L48.9 134.5c-6.1 40.6 19.5 82.8 63.3 88.7c4 .5 8.1 .8 12.1 .8c11 0 21.4-2 31-5.6z\"],\"road-circle-xmark\":[640,512,[],\"e566\",\"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"],\"user-minus\":[640,512,[],\"f503\",\"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM472 200H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H472c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"],\"mars-stroke-up\":[320,512,[9896,\"mars-stroke-v\"],\"f22a\",\"M148.7 4.7c6.2-6.2 16.4-6.2 22.6 0l64 64c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9H184v24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H184v24c0 .6 0 1.2-.1 1.8c77 11.6 136.1 78 136.1 158.2c0 88.4-71.6 160-160 160S0 440.4 0 352c0-80.2 59.1-146.7 136.1-158.2c0-.6-.1-1.2-.1-1.8V168H104c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V96H96c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l64-64zM256 352A96 96 0 1 0 64 352a96 96 0 1 0 192 0z\"],\"champagne-glasses\":[640,512,[129346,\"glass-cheers\"],\"f79f\",\"M155.6 17.3C163 3 179.9-3.6 195 1.9L320 47.5l125-45.6c15.1-5.5 32 1.1 39.4 15.4l78.8 152.9c28.8 55.8 10.3 122.3-38.5 156.6L556.1 413l41-15c16.6-6 35 2.5 41 19.1s-2.5 35-19.1 41l-71.1 25.9L476.8 510c-16.6 6.1-35-2.5-41-19.1s2.5-35 19.1-41l41-15-31.3-86.2c-59.4 5.2-116.2-34-130-95.2L320 188.8l-14.6 64.7c-13.8 61.3-70.6 100.4-130 95.2l-31.3 86.2 41 15c16.6 6 25.2 24.4 19.1 41s-24.4 25.2-41 19.1L92.2 484.1 21.1 458.2c-16.6-6.1-25.2-24.4-19.1-41s24.4-25.2 41-19.1l41 15 31.3-86.2C66.5 292.5 48.1 226 76.9 170.2L155.6 17.3zm44 54.4l-27.2 52.8L261.6 157l13.1-57.9L199.6 71.7zm240.9 0L365.4 99.1 378.5 157l89.2-32.5L440.5 71.7z\"],clipboard:[384,512,[128203],\"f328\",\"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM112 192H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],\"house-circle-exclamation\":[640,512,[],\"e50a\",\"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"],\"file-arrow-up\":[384,512,[\"file-upload\"],\"f574\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24V305.9l-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31V408z\"],wifi:[640,512,[\"wifi-3\",\"wifi-strong\"],\"f1eb\",\"M54.2 202.9C123.2 136.7 216.8 96 320 96s196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32S90.3 79.5 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9zM320 256c56.8 0 108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c39.5-34.9 91.3-56 148.2-56zm64 160a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"],bath:[512,512,[128705,\"bathtub\"],\"f2cd\",\"M96 77.3c0-7.3 5.9-13.3 13.3-13.3c3.5 0 6.9 1.4 9.4 3.9l14.9 14.9C130 91.8 128 101.7 128 112c0 19.9 7.2 38 19.2 52c-5.3 9.2-4 21.1 3.8 29c9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9c-7.9-7.9-19.8-9.1-29-3.8C246 39.2 227.9 32 208 32c-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0C66.6 0 32 34.6 32 77.3V256c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H96V77.3zM32 352v16c0 28.4 12.4 54 32 71.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V464H384v16c0 17.7 14.3 32 32 32s32-14.3 32-32V439.6c19.6-17.6 32-43.1 32-71.6V352H32z\"],underline:[448,512,[],\"f0cd\",\"M16 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H128V224c0 53 43 96 96 96s96-43 96-96V96H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V224c0 88.4-71.6 160-160 160s-160-71.6-160-160V96H48C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32z\"],\"user-pen\":[640,512,[\"user-edit\"],\"f4ff\",\"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H322.8c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7l40.3-40.3c-32.1-31-75.7-50.1-123.9-50.1H178.3zm435.5-68.3c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z\"],signature:[640,512,[],\"f5b7\",\"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32v7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92v71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3V128c0-53-43-96-96-96s-96 43-96 96v32c0 17.7 14.3 32 32 32s32-14.3 32-32V128zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5V335.6c0-14.1 9.3-26.6 22.8-30.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24H64.3c-.2-2.8-.3-5.6-.3-8.5V368H24zm592 48c13.3 0 24-10.7 24-24s-10.7-24-24-24H305.9c-6.7 16.3-14.2 32.3-22.3 48H616z\"],stroopwafel:[512,512,[],\"f551\",\"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM312.6 63.7c-6.2-6.2-16.4-6.2-22.6 0L256 97.6 222.1 63.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l33.9 33.9-45.3 45.3-56.6-56.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l56.6 56.6-45.3 45.3L86.3 199.4c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L97.6 256 63.7 289.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 45.3 45.3-56.6 56.6c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56.6-56.6 45.3 45.3-33.9 33.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L256 414.4l33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 45.3-45.3 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 45.3-45.3 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L414.4 256l33.9-33.9c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-33.9 33.9-45.3-45.3 56.6-56.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-56.6 56.6-45.3-45.3 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6zM142.9 256l45.3-45.3L233.4 256l-45.3 45.3L142.9 256zm67.9 67.9L256 278.6l45.3 45.3L256 369.1l-45.3-45.3zM278.6 256l45.3-45.3L369.1 256l-45.3 45.3L278.6 256zm22.6-67.9L256 233.4l-45.3-45.3L256 142.9l45.3 45.3z\"],bold:[384,512,[],\"f032\",\"M0 64C0 46.3 14.3 32 32 32H80 96 224c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128H96 80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V256 96H32C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64H112V224H224zM112 288V416H256c35.3 0 64-28.7 64-64s-28.7-64-64-64H224 112z\"],\"anchor-lock\":[640,512,[],\"e4ad\",\"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8 0 15.9-.6 23.6-1.7c-4.8-9-7.6-19.3-7.6-30.3V446.7c-5.2 .9-10.5 1.3-16 1.3H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"],\"building-ngo\":[384,512,[],\"e4d7\",\"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM168 64h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H184v64h16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v24c0 13.3-10.7 24-24 24H176c-13.3 0-24-10.7-24-24V80c0-8.8 7.2-16 16-16zM304 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8-7.2-16-16-16zm-48 16c0-26.5 21.5-48 48-48s48 21.5 48 48v32c0 26.5-21.5 48-48 48s-48-21.5-48-48V112zM61.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4L64 132.8V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4z\"],\"manat-sign\":[384,512,[],\"e1d5\",\"M192 32c-17.7 0-32 14.3-32 32V98.7C69.2 113.9 0 192.9 0 288V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-59.6 40.8-109.8 96-124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V164c55.2 14.2 96 64.3 96 124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-95.1-69.2-174.1-160-189.3V64c0-17.7-14.3-32-32-32z\"],\"not-equal\":[448,512,[],\"f53e\",\"M369.8 37.4c14.7 9.8 18.7 29.7 8.9 44.4L337.1 144H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H294.5l-64 96H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H187.8l-65.2 97.7c-9.8 14.7-29.7 18.7-44.4 8.9s-18.7-29.7-8.9-44.4L110.9 368H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H153.5l64-96H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H260.2l65.2-97.7c9.8-14.7 29.7-18.7 44.4-8.9z\"],\"border-top-left\":[448,512,[\"border-style\"],\"f853\",\"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336c0-8.8 7.2-16 16-16l336 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32C35.8 32 0 67.8 0 112L0 448zm160 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-96 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"map-location-dot\":[576,512,[\"map-marked-alt\"],\"f5a0\",\"M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152V422.8c0 9.8-6 18.6-15.1 22.3L416 503V200.4zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6V451.8L32.9 502.7C17.1 509 0 497.4 0 480.4V209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77V504.3L192 449.4V255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"],jedi:[576,512,[],\"f669\",\"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9 0 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5C370.6 435.2 416 382.9 416 320c0-37-15.7-70.4-40.8-93.7c-7-6.5-6.5-18.6 1-24.4C410.1 175.5 432 134.3 432 88c0-16.8-2.9-33-8.2-48c-4.6-13 10.2-30 21.4-22c53.5 38 92.7 94.8 107.8 160.7c.5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9h26c3.4 0 6.2 2.6 6.3 6c.1 3.3 .2 6.6 .2 10c0 17.5-1.7 34.7-4.8 51.3c-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9H526c4.6 0 7.7 4.8 5.7 9C487.2 450.5 394.8 512 288 512S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9H64.5c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3C17.7 274.7 16 257.5 16 240c0-3.3 .1-6.7 .2-10c.1-3.4 2.9-6 6.3-6h26c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9C38.1 112.8 77.3 56 130.8 18c11.3-8 26 8.9 21.4 22c-5.3 15-8.2 31.2-8.2 48c0 46.3 21.9 87.5 55.8 113.9c7.5 5.8 8 17.9 1 24.4C175.7 249.6 160 283 160 320c0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"],\"square-poll-vertical\":[448,512,[\"poll\"],\"f681\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 192c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm64-64c0-17.7 14.3-32 32-32s32 14.3 32 32V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V160zM320 288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32z\"],\"mug-hot\":[512,512,[9749],\"f7b6\",\"M88 0C74.7 0 64 10.7 64 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C120.5 112.3 128 119.9 128 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C119.5 47.7 112 40.1 112 24c0-13.3-10.7-24-24-24zM32 192c-17.7 0-32 14.3-32 32V416c0 53 43 96 96 96H288c53 0 96-43 96-96h16c61.9 0 112-50.1 112-112s-50.1-112-112-112H352 32zm352 64h16c26.5 0 48 21.5 48 48s-21.5 48-48 48H384V256zM224 24c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C232.5 112.3 240 119.9 240 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C231.5 47.7 224 40.1 224 24z\"],\"car-battery\":[512,512,[\"battery-car\"],\"f5df\",\"M80 96c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32h16c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64l16 0zm304 96c0-8.8-7.2-16-16-16s-16 7.2-16 16v32H320c-8.8 0-16 7.2-16 16s7.2 16 16 16h32v32c0 8.8 7.2 16 16 16s16-7.2 16-16V256h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H384V192zM80 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16z\"],gift:[512,512,[127873],\"f06b\",\"M190.5 68.8L225.3 128H224 152c-22.1 0-40-17.9-40-40s17.9-40 40-40h2.2c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H438.4c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88h-2.2c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0H152C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40H288h-1.3l34.8-59.2C329.1 55.9 342.9 48 357.8 48H360c22.1 0 40 17.9 40 40zM32 288V464c0 26.5 21.5 48 48 48H224V288H32zM288 512H432c26.5 0 48-21.5 48-48V288H288V512z\"],\"dice-two\":[448,512,[9857],\"f528\",\"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM352 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"chess-queen\":[512,512,[9819],\"f445\",\"M256 0a56 56 0 1 1 0 112A56 56 0 1 1 256 0zM134.1 143.8c3.3-13 15-23.8 30.2-23.8c12.3 0 22.6 7.2 27.7 17c12 23.2 36.2 39 64 39s52-15.8 64-39c5.1-9.8 15.4-17 27.7-17c15.3 0 27 10.8 30.2 23.8c7 27.8 32.2 48.3 62.1 48.3c10.8 0 21-2.7 29.8-7.4c8.4-4.4 18.9-4.5 27.6 .9c13 8 17.1 25 9.2 38L399.7 400H384 343.6 168.4 128 112.3L5.4 223.6c-7.9-13-3.8-30 9.2-38c8.7-5.3 19.2-5.3 27.6-.9c8.9 4.7 19 7.4 29.8 7.4c29.9 0 55.1-20.5 62.1-48.3zM256 224l0 0 0 0h0zM112 432H400l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H86.6C74.1 512 64 501.9 64 489.4c0-6 2.4-11.8 6.6-16L112 432z\"],glasses:[576,512,[],\"f530\",\"M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1 .1 0 0 0 0 0s0 0-6.3 12.7h0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7h40.6c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7h0c-6.3-12.7-6.3-12.7-6.3-12.7l0 0 0 0 .1 0 .2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7v6.7V352v16c0 61.9-50.1 112-112 112H419.7c-59.4 0-108.5-46.4-111.8-105.8L306.6 352H269.4l-1.2 22.2C264.9 433.6 215.8 480 156.3 480H112C50.1 480 0 429.9 0 368V352 310.7 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4V368c0 26.5 21.5 48 48 48h44.3c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368V325.4c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3H464c26.5 0 48-21.5 48-48z\"],\"chess-board\":[448,512,[],\"f43c\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 64v64h64V96h64v64h64V96h64v64H320v64h64v64H320v64h64v64H320V352H256v64H192V352H128v64H64V352h64V288H64V224h64V160H64V96h64zm64 128h64V160H192v64zm0 64V224H128v64h64zm64 0H192v64h64V288zm0 0h64V224H256v64z\"],\"building-circle-check\":[640,512,[],\"e4d2\",\"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"],\"person-chalkboard\":[640,512,[],\"e53d\",\"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V192h56 64 16c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64H576V256H384V224H320v48c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48v80H243.1 177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32z\"],\"mars-stroke-right\":[640,512,[9897,\"mars-stroke-h\"],\"f22b\",\"M208 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm174.4-88C370.7 365.8 297.1 432 208 432c-97.2 0-176-78.8-176-176s78.8-176 176-176c89.1 0 162.7 66.2 174.4 152H416V176c0-13.3 10.7-24 24-24s24 10.7 24 24v56h32V176c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V280H464v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H382.4z\"],\"hand-back-fist\":[448,512,[\"hand-rock\"],\"f255\",\"M144 0C117.5 0 96 21.5 96 48V96v28.5V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V149.3l-9 7.5C40.4 169 32 187 32 206V244c0 38 16.9 74 46.1 98.3L128 384v96c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V374.7c46.9-19 80-65 80-118.7V176 160 144c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 83.5 329.3 64 304 64c-12.4 0-23.6 4.7-32.1 12.3C270 51.5 249.3 32 224 32c-12.4 0-23.6 4.7-32.1 12.3C190 19.5 169.3 0 144 0z\"],\"square-caret-up\":[448,512,[\"caret-square-up\"],\"f151\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4H120c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"],\"cloud-showers-water\":[576,512,[],\"e4e4\",\"M224 0c38.6 0 71.9 22.8 87.2 55.7C325.7 41.1 345.8 32 368 32c38.7 0 71 27.5 78.4 64H448c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64c0-53 43-96 96-96zM140.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm327.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM252.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm103.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"],\"chart-bar\":[512,512,[\"bar-chart\"],\"f080\",\"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 64H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"],\"hands-bubbles\":[576,512,[\"hands-wash\"],\"e05e\",\"M416 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM160 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM32 160l.1 72.6c.1 52.2 24 101 64 133.1c-.1-1.9-.1-3.8-.1-5.7v-8c0-71.8 37-138.6 97.9-176.7l60.2-37.6c8.6-5.4 17.9-8.4 27.3-9.4l45.9-79.5c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8l-78 135.1c-3.3 5.7-10.7 7.7-16.4 4.4s-7.7-10.7-4.4-16.4l62-107.4c6.6-11.5 2.7-26.2-8.8-32.8S214 5 207.4 16.5l-68 117.8 0 0 0 0-43.3 75L96 160c0-17.7-14.4-32-32-32s-32 14.4-32 32zM332.1 88.5L307.5 131c13.9 4.5 26.4 13.7 34.7 27c.9 1.5 1.8 2.9 2.5 4.4l28.9-50c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zm46.4 63.7l-26.8 46.4c-.6 6-2.1 11.8-4.3 17.4H352h13.3l0 0H397l23-39.8c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zM315.1 175c-9.4-15-29.1-19.5-44.1-10.2l-60.2 37.6C159.3 234.7 128 291.2 128 352v8c0 8.9 .8 17.6 2.2 26.1c35.4 8.2 61.8 40 61.8 77.9c0 6.3-.7 12.5-2.1 18.4C215.1 501 246.3 512 280 512H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H352l0 0 0 0H258.8L305 219.1c15-9.4 19.5-29.1 10.2-44.1z\"],\"less-than-equal\":[448,512,[],\"f537\",\"M395.9 93.7c16.4-6.6 24.4-25.2 17.8-41.6s-25.2-24.4-41.6-17.8l-320 128C40 167.1 32 178.9 32 192s8 24.9 20.1 29.7l320 128c16.4 6.6 35-1.4 41.6-17.8s-1.4-35-17.8-41.6L150.2 192 395.9 93.7zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"],train:[448,512,[128646],\"f238\",\"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zM224 288a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"],\"eye-low-vision\":[640,512,[\"low-vision\"],\"f2a8\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223 149.5c48.6-44.3 123-50.8 179.3-11.7c60.8 42.4 78.9 123.2 44.2 186.9L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3L223 149.5zm-139.9 12c-11 14.4-20.5 28.7-28.4 42.2l339 265.7c18.7-5.5 36.2-13 52.6-21.8L83.1 161.5zm-50 86.3c-1.8 6.8-1.3 14 1.4 20.5c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c3.1 0 6.1-.1 9.2-.2L33.1 247.8z\"],crow:[640,512,[],\"f520\",\"M456 0c-48.6 0-88 39.4-88 88v29.2L12.5 390.6c-14 10.8-16.6 30.9-5.9 44.9s30.9 16.6 44.9 5.9L126.1 384H259.2l46.6 113.1c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3L311.1 384H352c1.1 0 2.1 0 3.2 0l46.6 113.2c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3l-42-102C484.9 354.1 544 280 544 192V128v-8l80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4C629 52 603.4 32 574 32H523.9C507.7 12.5 483.3 0 456 0zm0 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"],sailboat:[576,512,[],\"e445\",\"M256 16c0-7 4.5-13.2 11.2-15.3s13.9 .4 17.9 6.1l224 320c3.4 4.9 3.8 11.3 1.1 16.6s-8.2 8.6-14.2 8.6H272c-8.8 0-16-7.2-16-16V16zM212.1 96.5c7 1.9 11.9 8.2 11.9 15.5V336c0 8.8-7.2 16-16 16H80c-5.7 0-11-3-13.8-8s-2.9-11-.1-16l128-224c3.6-6.3 11-9.4 18-7.5zM5.7 404.3C2.8 394.1 10.5 384 21.1 384H554.9c10.6 0 18.3 10.1 15.4 20.3l-4 14.3C550.7 473.9 500.4 512 443 512H133C75.6 512 25.3 473.9 9.7 418.7l-4-14.3z\"],\"window-restore\":[512,512,[],\"f2d2\",\"M432 64H208c-8.8 0-16 7.2-16 16V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V320h16c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm64 32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32z\"],\"square-plus\":[448,512,[61846,\"plus-square\"],\"f0fe\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"],\"torii-gate\":[512,512,[9961],\"f6a1\",\"M0 80c0 26.5 21.5 48 48 48H64v64h64V128h96v64h64V128h96v64h64V128h16c26.5 0 48-21.5 48-48V13.4C512 6 506 0 498.6 0c-1.7 0-3.4 .3-5 1l-49 19.6C425.7 28.1 405.5 32 385.2 32H126.8c-20.4 0-40.5-3.9-59.4-11.4L18.4 1c-1.6-.6-3.3-1-5-1C6 0 0 6 0 13.4V80zM64 288V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288H384V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64z\"],frog:[576,512,[],\"f52e\",\"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9c0 21.8-11.7 41.9-30.7 52.7L400.8 323.5 493.3 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H480c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7c-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2c27.9-18.5 65.9-15.4 90.5 9.2c24.7 24.7 27.7 62.9 9 90.9c-2.6 3.8-5.6 7.5-9 10.9L261.8 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-35.3 0-64-28.7-64-64C0 249.6 127 112.9 289.3 97.5C296.2 60.2 328.8 32 368 32zm0 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"],bucket:[448,512,[],\"e4cf\",\"M96 152v8H48v-8C48 68.1 116.1 0 200 0h48c83.9 0 152 68.1 152 152v8H352v-8c0-57.4-46.6-104-104-104H200C142.6 48 96 94.6 96 152zM0 224c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32h-5.1L388.5 469c-2.6 24.4-23.2 43-47.7 43H107.2c-24.6 0-45.2-18.5-47.7-43L37.1 256H32c-17.7 0-32-14.3-32-32z\"],image:[512,512,[],\"f03e\",\"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"],microphone:[384,512,[],\"f130\",\"M192 0C139 0 96 43 96 96V256c0 53 43 96 96 96s96-43 96-96V96c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V216z\"],cow:[640,512,[128004],\"f6c8\",\"M96 224v32V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V327.8c9.9 6.6 20.6 12 32 16.1V368c0 8.8 7.2 16 16 16s16-7.2 16-16V351.1c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9V368c0 8.8 7.2 16 16 16s16-7.2 16-16V343.8c11.4-4 22.1-9.4 32-16.1V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256l32 32v49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21c22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5V184c0-13.3-10.7-24-24-24s-24 10.7-24 24v14.4l-52.9-74.1C496 86.5 452.4 64 405.9 64H272 256 192 144C77.7 64 24 117.7 24 184v54C9.4 249.8 0 267.8 0 288v17.6c0 8 6.4 14.4 14.4 14.4C46.2 320 72 294.2 72 262.4V256 224 184c0-24.3 12.1-45.8 30.5-58.9C98.3 135.9 96 147.7 96 160v64zM560 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16c0-12.5 10.1-22.6 22.6-22.6H361.4c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"],\"caret-up\":[320,512,[],\"f0d8\",\"M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"],screwdriver:[512,512,[129691],\"f54a\",\"M465 7c-8.5-8.5-22-9.4-31.6-2.1l-104 80c-5.9 4.5-9.4 11.6-9.4 19v54.1l-85.6 85.6c6.7 4.2 13 9.3 18.8 15.1s10.9 12.2 15.1 18.8L353.9 192H408c7.5 0 14.5-3.5 19-9.4l80-104c7.4-9.6 6.5-23.1-2.1-31.6L465 7zM121.4 281.4l-112 112c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l112-112c30.2-30.2 30.2-79.1 0-109.3s-79.1-30.2-109.3 0z\"],\"folder-closed\":[512,512,[],\"e185\",\"M448 480H64c-35.3 0-64-28.7-64-64V192H512V416c0 35.3-28.7 64-64 64zm64-320H0V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64z\"],\"house-tsunami\":[576,512,[],\"e515\",\"M80.8 136.5C104.9 93.8 152.6 64 209 64c16.9 0 33.1 2.7 48.2 7.7c16.8 5.5 34.9-3.6 40.4-20.4s-3.6-34.9-20.4-40.4C255.8 3.8 232.8 0 209 0C95.2 0 0 88 0 200c0 91.6 53.5 172.1 142.2 194.1c13.4 3.8 27.5 5.9 42.2 5.9c.7 0 1.4 0 2.1-.1c1.8 0 3.7 .1 5.5 .1l0 0c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0c-22.4 15.5-49.9 26.1-77.4 26.1c0 0-.1 0-.1 0c-12.4 0-24-1.5-34.9-4.3C121.6 320.2 96 287 96 248c0-48.5 39.5-88 88.4-88c13.5 0 26.1 3 37.5 8.3c16 7.5 35.1 .6 42.5-15.5s.6-35.1-15.5-42.5C229.3 101.1 207.4 96 184.4 96c-40 0-76.4 15.4-103.6 40.5zm252-18.1c-8.1 6-12.8 15.5-12.8 25.6V265c1.6 1 3.3 2 4.8 3.1c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c5.8 1.4 11.2 3.4 16.2 6.2c.7-2.7 1.1-5.5 1.1-8.4l-.4-144c0-10-4.7-19.4-12.7-25.5l-95.5-72c-11.4-8.6-27.1-8.6-38.5 0l-96 72zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"],\"square-nfi\":[448,512,[],\"e576\",\"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm75.7 64.6C68.8 162.5 64 168.8 64 176V336c0 8.8 7.2 16 16 16s16-7.2 16-16V233.8l66.3 110.5c3.7 6.2 11.1 9.1 18 7.2s11.7-8.2 11.7-15.4V176c0-8.8-7.2-16-16-16s-16 7.2-16 16V278.2L93.7 167.8c-3.7-6.2-11.1-9.1-18-7.2zM224 176v64 96c0 8.8 7.2 16 16 16s16-7.2 16-16V256h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H256V192h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm160 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V336c0 8.8 7.2 16 16 16s16-7.2 16-16V176z\"],\"arrow-up-from-ground-water\":[576,512,[],\"e4b5\",\"M288 352c17.7 0 32-14.3 32-32V109.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V320c0 17.7 14.3 32 32 32zm-18.5 69.9C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM192 192H48c-26.5 0-48 21.5-48 48V425c5.3-3.1 11.2-5.4 17.5-6.9c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.1 20.3V192zm384 48c0-26.5-21.5-48-48-48H384V416.5h0c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c6.3 1.5 12.1 3.8 17.5 6.9V240z\"],\"martini-glass\":[512,512,[127864,\"glass-martini-alt\"],\"f57b\",\"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM173.3 128l-64-64H402.7l-64 64H173.3z\"],\"rotate-left\":[512,512,[\"rotate-back\",\"rotate-backward\",\"undo-alt\"],\"f2ea\",\"M48.5 224H40c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H48.5z\"],\"table-columns\":[512,512,[\"columns\"],\"f0db\",\"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 64V416H224V160H64zm384 0H288V416H448V160z\"],lemon:[448,512,[127819],\"f094\",\"M448 96c0-35.3-28.7-64-64-64c-6.6 0-13 1-19 2.9c-22.5 7-48.1 14.9-71 9c-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71C1 403 0 409.4 0 416c0 35.3 28.7 64 64 64c6.6 0 13-1 19.1-2.9c22.5-7 48.1-14.9 71-9c75.2 19.1 156.4-11 213.7-68.3s87.5-138.5 68.3-213.7c-5.8-22.9 2-48.4 9-71c1.9-6 2.9-12.4 2.9-19.1zM212.5 127.4c-54.6 16-101.1 62.5-117.1 117.1C92.9 253 84 257.8 75.5 255.4S62.2 244 64.6 235.5c19.1-65.1 73.7-119.8 138.9-138.9c8.5-2.5 17.4 2.4 19.9 10.9s-2.4 17.4-10.9 19.9z\"],\"head-side-mask\":[576,512,[],\"e063\",\"M32 224.2c0-22.2 3.2-43.6 9.2-63.9L262.2 321c-4 9.5-6.2 20-6.2 31V512H128c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C48.6 322.4 32 274.1 32 224.2zm248.3 70.4L53 129.3C88.7 53 166.2 0 256 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c5.4 6.7 8.6 14.8 9.4 23.2H336c-21.7 0-41.3 8.6-55.7 22.6zM336 304H534l0 0h10l-19.7 64H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H514.5l-9.8 32H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H494.8l-.9 2.8c-8.3 26.9-33.1 45.2-61.2 45.2H288V352c0-14 6-26.7 15.6-35.4c0 0 0 0 0 0c8.5-7.8 19.9-12.6 32.4-12.6zm48-80a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],handshake:[640,512,[],\"f2b5\",\"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123zM16 128c-8.8 0-16 7.2-16 16V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V128H16zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V144c0-8.8-7.2-16-16-16H544zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"],gem:[512,512,[128142],\"f3a5\",\"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.6L63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8L301.5 179.8l57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"],dolly:[576,512,[\"dolly-box\"],\"f472\",\"M0 32C0 14.3 14.3 0 32 0h72.9c27.5 0 52 17.6 60.7 43.8L257.7 320c30.1 .5 56.8 14.9 74 37l202.1-67.4c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L352 417.7c-.9 52.2-43.5 94.3-96 94.3c-53 0-96-43-96-96c0-30.8 14.5-58.2 37-75.8L104.9 64H32C14.3 64 0 49.7 0 32zM244.8 134.5c-5.5-16.8 3.7-34.9 20.5-40.3L311 79.4l19.8 60.9 60.9-19.8L371.8 59.6l45.7-14.8c16.8-5.5 34.9 3.7 40.3 20.5l49.4 152.2c5.5 16.8-3.7 34.9-20.5 40.3L334.5 307.2c-16.8 5.5-34.9-3.7-40.3-20.5L244.8 134.5z\"],smoking:[640,512,[128684],\"f48d\",\"M448 32V43c0 38.2 15.2 74.8 42.2 101.8l21 21c21 21 32.8 49.5 32.8 79.2v11c0 17.7-14.3 32-32 32s-32-14.3-32-32V245c0-12.7-5.1-24.9-14.1-33.9l-21-21C405.9 151.1 384 98.1 384 43V32c0-17.7 14.3-32 32-32s32 14.3 32 32zM576 256V245c0-38.2-15.2-74.8-42.2-101.8l-21-21c-21-21-32.8-49.5-32.8-79.2V32c0-17.7 14.3-32 32-32s32 14.3 32 32V43c0 12.7 5.1 24.9 14.1 33.9l21 21c39 39 60.9 91.9 60.9 147.1v11c0 17.7-14.3 32-32 32s-32-14.3-32-32zM0 416c0-35.3 28.7-64 64-64H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H64c-35.3 0-64-28.7-64-64V416zm224 0v32H384V416H224zm288-64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32z\"],minimize:[512,512,[\"compress-arrows-alt\"],\"f78c\",\"M456 224H312c-13.3 0-24-10.7-24-24V56c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l40 40L442.3 5.7C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143l40 40c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433l-40 40c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V312c0-13.3 10.7-24 24-24H456zm-256 0c13.3 0 24 10.7 24 24V456c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40L69.7 506.3C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8H200zM56 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l40-40L5.7 69.7C2 66 0 61.1 0 56s2-10 5.7-13.7L42.3 5.7C46 2 50.9 0 56 0s10 2 13.7 5.7L143 79l40-40c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2V200c0 13.3-10.7 24-24 24H56z\"],monument:[384,512,[],\"f5a6\",\"M180.7 4.7c6.2-6.2 16.4-6.2 22.6 0l80 80c2.5 2.5 4.1 5.8 4.6 9.3l40.2 322H55.9L96.1 94c.4-3.5 2-6.8 4.6-9.3l80-80zM152 272c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H152zM32 448H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"],snowplow:[640,512,[],\"f7d2\",\"M298.9 64l68.6 160H256l-64-64V64H298.9zM445.1 242.7l-87.4-204C347.6 15.3 324.5 0 298.9 0H176c-26.5 0-48 21.5-48 48V160H96c-17.7 0-32 14.3-32 32V298.8C26.2 316.8 0 355.3 0 400c0 61.9 50.1 112 112 112H368c61.9 0 112-50.1 112-112c0-17.2-3.9-33.5-10.8-48H512v50.7c0 17 6.7 33.3 18.7 45.3l54.6 54.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L576 402.7V320 235.2L633 164c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-57 71.2c-9.1 11.3-14 25.4-14 40V288H448V256.7c.1-2.4-.2-4.8-.6-7.1s-1.2-4.7-2.2-6.8zM368 352c26.5 0 48 21.5 48 48s-21.5 48-48 48H112c-26.5 0-48-21.5-48-48s21.5-48 48-48H368zM144 400a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm216 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-56-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM200 424a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"],\"angles-right\":[512,512,[187,\"angle-double-right\"],\"f101\",\"M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"],cannabis:[512,512,[],\"f55f\",\"M256 0c5.3 0 10.3 2.7 13.3 7.1c15.8 23.5 36.7 63.7 49.2 109c7.2 26.4 11.8 55.2 10.4 84c11.5-8.8 23.7-16.7 35.8-23.6c41-23.3 84.4-36.9 112.2-42.5c5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7c-9.1 15.9-19.9 31.7-32.4 46.3c27.8 6.6 52.4 17.3 67.2 25.5c5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1c-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.1c1.5 6.1-.6 12.4-5.5 16.4s-11.6 4.6-17.2 1.9L280 417.2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V417.2l-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.9s-7-10.3-5.5-16.4l8.3-33.1c-22.2 2.6-45 0-65.2-4.6c-28.9-6.6-54.6-17.6-69.8-26.1c-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14c14.8-8.2 39.4-18.8 67.2-25.5C78.9 296.3 68.1 280.5 59 264.6c-23.4-40.8-37.1-84-42.7-111.7c-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5c12.1 6.9 24.3 14.7 35.8 23.6c-1.4-28.7 3.1-57.6 10.4-84c12.5-45.3 33.4-85.5 49.2-109c3-4.4 8-7.1 13.3-7.1z\"],\"circle-play\":[512,512,[61469,\"play-circle\"],\"f144\",\"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9V344c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"],tablets:[640,512,[],\"f490\",\"M614.3 247c16.3-25 25.7-54.9 25.7-87C640 71.6 568.4 0 480 0c-32.1 0-61.9 9.4-87 25.7c-7.9 5.2-8.5 16.2-1.8 22.9L591.4 248.8c6.7 6.7 17.8 6.2 22.9-1.8zM567 294.3c7.9-5.2 8.5-16.2 1.8-22.9L368.6 71.2c-6.7-6.7-17.8-6.2-22.9 1.8c-16.3 25-25.7 54.9-25.7 87c0 88.4 71.6 160 160 160c32.1 0 61.9-9.4 87-25.7zM301.5 368H18.5c-9.5 0-16.9 8.2-15 17.5C18.9 457.8 83.1 512 160 512s141.1-54.2 156.5-126.5c2-9.3-5.5-17.5-15-17.5zm0-32c9.5 0 16.9-8.2 15-17.5C301.1 246.2 236.9 192 160 192S18.9 246.2 3.5 318.5c-2 9.3 5.5 17.5 15 17.5H301.5z\"],ethernet:[512,512,[],\"f796\",\"M0 224V416c0 17.7 14.3 32 32 32H96V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H448V160c0-17.7-14.3-32-32-32H384V96c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32v32H96c-17.7 0-32 14.3-32 32v32H32c-17.7 0-32 14.3-32 32z\"],\"euro-sign\":[320,512,[8364,\"eur\",\"euro\"],\"f153\",\"M48.1 240c-.1 2.7-.1 5.3-.1 8v16c0 2.7 0 5.3 .1 8H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H60.3C89.9 419.9 170 480 264 480h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264c-57.9 0-108.2-32.4-133.9-80H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112.2c-.1-2.6-.2-5.3-.2-8V248c0-2.7 .1-5.4 .2-8H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H130.1c25.7-47.6 76-80 133.9-80h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264C170 32 89.9 92.1 60.3 176H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48.1z\"],chair:[448,512,[129681],\"f6c0\",\"M248 48V256h48V58.7c23.9 13.8 40 39.7 40 69.3V256h48V128C384 57.3 326.7 0 256 0H192C121.3 0 64 57.3 64 128V256h48V128c0-29.6 16.1-55.5 40-69.3V256h48V48h48zM48 288c-12.1 0-23.2 6.8-28.6 17.7l-16 32c-5 9.9-4.4 21.7 1.4 31.1S20.9 384 32 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32V384H352v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384c11.1 0 21.4-5.7 27.2-15.2s6.4-21.2 1.4-31.1l-16-32C423.2 294.8 412.1 288 400 288H48z\"],\"circle-check\":[512,512,[61533,\"check-circle\"],\"f058\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"],\"circle-stop\":[512,512,[62094,\"stop-circle\"],\"f28d\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"],\"compass-drafting\":[512,512,[\"drafting-compass\"],\"f568\",\"M352 96c0 14.3-3.1 27.9-8.8 40.2L396 227.4c-23.7 25.3-54.2 44.1-88.5 53.6L256 192h0 0l-68 117.5c21.5 6.8 44.3 10.5 68.1 10.5c70.7 0 133.8-32.7 174.9-84c11.1-13.8 31.2-16 45-5s16 31.2 5 45C428.1 341.8 347 384 256 384c-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496V440.6c0-8.4 2.2-16.7 6.5-24.1l60-103.7C53.7 301.6 41.8 289.3 31.2 276c-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2c0-53 43-96 96-96s96 43 96 96zm21 297.9c32.6-12.8 62.5-30.8 88.9-52.9l43.7 75.5c4.2 7.3 6.5 15.6 6.5 24.1V496c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9L373 393.9zM256 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"plate-wheat\":[512,512,[],\"e55a\",\"M176 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zM56 64h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48zM400 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zm80 160v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80zm-96 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320H484.2c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446v2c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32v-2c-48.2-9-86.3-48.2-92.5-98.4z\"],icicles:[512,512,[],\"f7ad\",\"M75.8 304.8L1 35.7c-.7-2.5-1-5-1-7.5C0 12.6 12.6 0 28.2 0H482.4C498.8 0 512 13.2 512 29.6c0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9c-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1c-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7c-9.3 0-17.5-6.2-20-15.2z\"],\"person-shelter\":[512,512,[],\"e54f\",\"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160V480c0 17.7 14.3 32 32 32s32-14.3 32-32V178.6L256 68.9 448 178.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm-8 280V400h16v88c0 13.3 10.7 24 24 24s24-10.7 24-24V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H246.2c-32.4 0-62.1 17.8-77.5 46.3l-37.9 70.3c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5V488c0 13.3 10.7 24 24 24s24-10.7 24-24z\"],neuter:[384,512,[9906],\"f22c\",\"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V480c0 17.7 14.3 32 32 32s32-14.3 32-32V349.1z\"],\"id-badge\":[384,512,[],\"f2c1\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm96 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM144 64h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],marker:[512,512,[],\"f5a1\",\"M481 31C445.1-4.8 386.9-4.8 351 31l-15 15L322.9 33C294.8 4.9 249.2 4.9 221.1 33L135 119c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L255 66.9c9.4-9.4 24.6-9.4 33.9 0L302.1 80 186.3 195.7 316.3 325.7 481 161c35.9-35.9 35.9-94.1 0-129.9zM293.7 348.3L163.7 218.3 99.5 282.5c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l64.2-64.2z\"],\"face-laugh-beam\":[512,512,[128513,\"laugh-beam\"],\"f59a\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM217.6 212.8l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"],\"helicopter-symbol\":[512,512,[],\"e502\",\"M445.3 224H510C495.6 108.2 403.8 16.4 288 2V66.7C368.4 80.1 431.9 143.6 445.3 224zM510 288H445.3C431.9 368.4 368.4 431.9 288 445.4V510c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510V445.4C143.6 431.9 80.1 368.4 66.7 288H2zm0-64H66.7C80.1 143.6 143.6 80.1 224 66.7V2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 17.7 14.3 32 32 32s32-14.3 32-32V288h96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H208V160z\"],\"universal-access\":[512,512,[],\"f29a\",\"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm161.5-86.1c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3v50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6V235.5c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"],\"circle-chevron-up\":[512,512,[\"chevron-circle-up\"],\"f139\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"],\"lari-sign\":[384,512,[],\"e1c8\",\"M144 32c17.7 0 32 14.3 32 32V96.7c5.3-.4 10.6-.7 16-.7s10.7 .2 16 .7V64c0-17.7 14.3-32 32-32s32 14.3 32 32v49.4c54.9 25.2 95.8 75.5 108.2 136.2c3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.1-29.9-22.5-55.9-45.4-74.3V256c0 17.7-14.3 32-32 32s-32-14.3-32-32V161c-5.2-.7-10.6-1-16-1s-10.8 .3-16 1v95c0 17.7-14.3 32-32 32s-32-14.3-32-32V188.1C82.7 211.5 64 247.6 64 288c0 70.7 57.3 128 128 128H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H192 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48.9C18.5 382 0 337.2 0 288c0-77.5 45.9-144.3 112-174.6V64c0-17.7 14.3-32 32-32z\"],volcano:[512,512,[127755],\"f770\",\"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15C212.4 12.4 232.7 0 256 0s43.6 12.4 54.8 31C322 21.6 336.3 16 352 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8c19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9c11.3 0 21.8-5.6 28-15l9.7-14.6-58.9-66.3c-9.1-10.2-22.2-16.1-35.9-16.1H235.1c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4L144 352zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2h41.8c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7c0 28.8-23.4 52.2-52.2 52.2H52.2C23.4 512 0 488.6 0 459.8c0-12.8 4.7-25.1 13.2-34.7l150.2-169z\"],\"person-walking-dashed-line-arrow-right\":[640,512,[],\"e553\",\"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24V72c0 13.3 10.7 24 24 24s24-10.7 24-24V24c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V152zM392 320c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V344c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24v48c0 13.3 10.7 24 24 24s24-10.7 24-24V440z\"],\"sterling-sign\":[320,512,[163,\"gbp\",\"pound-sign\"],\"f154\",\"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v44.5c0 17.4-4.7 34.5-13.7 49.4L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H88.5l.7-1.1C104.1 390 112 361.5 112 332.5V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V160.4z\"],viruses:[640,512,[],\"e076\",\"M192 0c13.3 0 24 10.7 24 24V37.5c0 35.6 43.1 53.5 68.3 28.3l9.5-9.5c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-9.5 9.5C293 124.9 310.9 168 346.5 168H360c13.3 0 24 10.7 24 24s-10.7 24-24 24H346.5c-35.6 0-53.5 43.1-28.3 68.3l9.5 9.5c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-9.5-9.5C259.1 293 216 310.9 216 346.5V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V346.5c0-35.6-43.1-53.5-68.3-28.3l-9.5 9.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l9.5-9.5C91 259.1 73.1 216 37.5 216H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H37.5c35.6 0 53.5-43.1 28.3-68.3l-9.5-9.5c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l9.5 9.5C124.9 91 168 73.1 168 37.5V24c0-13.3 10.7-24 24-24zm48 224a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48-64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm320 80c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C574.5 312.1 591 352 624 352c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C551.9 446.5 512 463 512 496c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C417.5 423.9 401 384 368 384c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C440.1 289.5 480 273 480 240c0-8.8 7.2-16 16-16s16 7.2 16 16zm0 112a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"],\"square-person-confined\":[448,512,[],\"e577\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm96 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm80 104c0-30.9 25.1-56 56-56s56 25.1 56 56V350.1c0 36.4-29.5 65.9-65.9 65.9c-17.5 0-34.3-6.9-46.6-19.3L184.8 342l-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9L240 306.7V248z\"],\"user-tie\":[448,512,[],\"f508\",\"M96 128a128 128 0 1 0 256 0A128 128 0 1 0 96 128zm94.5 200.2l18.6 31L175.8 483.1l-36-146.9c-2-8.1-9.8-13.4-17.9-11.3C51.9 342.4 0 405.8 0 481.3c0 17 13.8 30.7 30.7 30.7H162.5c0 0 0 0 .1 0H168 280h5.5c0 0 0 0 .1 0H417.3c17 0 30.7-13.8 30.7-30.7c0-75.5-51.9-138.9-121.9-156.4c-8.1-2-15.9 3.3-17.9 11.3l-36 146.9L238.9 359.2l18.6-31c6.4-10.7-1.3-24.2-13.7-24.2H224 204.3c-12.4 0-20.1 13.6-13.7 24.2z\"],\"arrow-down-long\":[384,512,[\"long-arrow-down\"],\"f175\",\"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7L86.6 329.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128z\"],\"tent-arrow-down-to-line\":[640,512,[],\"e57e\",\"M241.8 111.9c8.9 9.9 8.1 25-1.8 33.9l-80 72c-9.1 8.2-23 8.2-32.1 0l-80-72c-9.9-8.9-10.7-24-1.8-33.9s24-10.7 33.9-1.8l39.9 36L120 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 122.1 39.9-36c9.9-8.9 25-8.1 33.9 1.8zm122.8 22.6c11.5-8.7 27.3-8.7 38.8 0l168 128c6.6 5 11 12.5 12.3 20.7l24 160 .7 4.7c17.5 .2 31.6 14.4 31.6 32c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H159.6l.7-4.7 24-160c1.2-8.2 5.6-15.7 12.3-20.7l168-128zM384 448h80L402.7 325.5c-1.7-3.4-5.1-5.5-8.8-5.5c-5.5 0-9.9 4.4-9.9 9.9V448z\"],certificate:[512,512,[],\"f0a3\",\"M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.4-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z\"],\"reply-all\":[576,512,[\"mail-reply-all\"],\"f122\",\"M209.4 39.5c-9.1-9.6-24.3-10-33.9-.9L33.8 173.2c-19.9 18.9-19.9 50.7 0 69.6L175.5 377.4c9.6 9.1 24.8 8.7 33.9-.9s8.7-24.8-.9-33.9L66.8 208 208.5 73.4c9.6-9.1 10-24.3 .9-33.9zM352 64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144c-6.7 6.1-10.6 14.7-10.6 23.8s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2V288h32c53 0 96 43 96 96c0 30.4-12.8 47.9-22.2 56.7c-5.5 5.1-9.8 12-9.8 19.5c0 10.9 8.8 19.7 19.7 19.7c2.8 0 5.6-.6 8.1-1.9C494.5 467.9 576 417.3 576 304c0-97.2-78.8-176-176-176H352V64z\"],suitcase:[512,512,[129523],\"f0f2\",\"M176 56V96H336V56c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zM128 96V56c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56V96v32V480H128V128 96zM64 96H96V480H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64zM448 480H416V96h32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64z\"],\"person-skating\":[448,512,[\"skating\"],\"f7c5\",\"M352 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM128 128c0-17.7 14.3-32 32-32H319.4c43.6 0 64.6 53.4 32.8 83.1l-74.4 69.4 60.2 60.2c9 9 14.1 21.2 14.1 33.9V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V349.3l-77.9-77.8c-26.6-26.6-24.6-70.3 4.3-94.4l20.4-17H160c-17.7 0-32-14.3-32-32zM81.4 353.4l86.9-86.9c4.6 10 11 19.3 19.3 27.5l21.8 21.8-82.7 82.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm322.5 95.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h88.8c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM135.2 478.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L4.7 411.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"],\"filter-circle-dollar\":[576,512,[\"funnel-dollar\"],\"f662\",\"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm120.8-32.6c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7V288c0-8.8-7.2-16-16-16s-16 7.2-16 16v9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6l0 0 0 0c7 2.3 15.1 4.8 23.7 6.6v11.4c0 8.8 7.2 16 16 16s16-7.2 16-16V438.7c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5l0-.1c-.1-1.9 .3-2.9 .8-3.6z\"],\"camera-retro\":[512,512,[128247],\"f083\",\"M220.6 121.2L271.1 96 448 96v96H333.2c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24H64V128H192c9.9 0 19.7-2.3 28.6-6.8zM0 128V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H271.1c-9.9 0-19.7 2.3-28.6 6.8L192 64H160V48c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM168 304a88 88 0 1 1 176 0 88 88 0 1 1 -176 0z\"],\"circle-arrow-down\":[512,512,[\"arrow-circle-down\"],\"f0ab\",\"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM127 281c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 136c0-13.3 10.7-24 24-24s24 10.7 24 24l0 182.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 393c-9.4 9.4-24.6 9.4-33.9 0L127 281z\"],\"file-import\":[512,512,[\"arrow-right-to-file\"],\"f56f\",\"M128 64c0-35.3 28.7-64 64-64H352V128c0 17.7 14.3 32 32 32H512V448c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64V336H302.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H128V64zm0 224v48H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H128zM512 128H384V0L512 128z\"],\"square-arrow-up-right\":[448,512,[\"external-link-square\"],\"f14c\",\"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM160 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h94.1L119 327c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135V328c0 13.3 10.7 24 24 24s24-10.7 24-24V168c0-13.3-10.7-24-24-24H160z\"],\"box-open\":[640,512,[],\"f49e\",\"M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6v167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5v-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128h2.2z\"],scroll:[576,512,[128220],\"f70e\",\"M0 80v48c0 17.7 14.3 32 32 32H48 96V80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48V384c0 35.3 28.7 64 64 64s64-28.7 64-64v-5.3c0-32.4 26.3-58.7 58.7-58.7H480V128c0-53-43-96-96-96H112zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16H314.7c-14.7 0-26.7 11.9-26.7 26.7V384c0 53-43 96-96 96H368h96z\"],spa:[576,512,[],\"f5bb\",\"M183.1 235.3c33.7 20.7 62.9 48.1 85.8 80.5c7 9.9 13.4 20.3 19.1 31c5.7-10.8 12.1-21.1 19.1-31c22.9-32.4 52.1-59.8 85.8-80.5C437.6 207.8 490.1 192 546 192h9.9c11.1 0 20.1 9 20.1 20.1C576 360.1 456.1 480 308.1 480H288 267.9C119.9 480 0 360.1 0 212.1C0 201 9 192 20.1 192H30c55.9 0 108.4 15.8 153.1 43.3zM301.5 37.6c15.7 16.9 61.1 71.8 84.4 164.6c-38 21.6-71.4 50.8-97.9 85.6c-26.5-34.8-59.9-63.9-97.9-85.6c23.2-92.8 68.6-147.7 84.4-164.6C278 33.9 282.9 32 288 32s10 1.9 13.5 5.6z\"],\"location-pin-lock\":[512,512,[],\"e51f\",\"M215.7 499.2c11-13.8 25.1-31.7 40.3-52.3V352c0-23.7 12.9-44.4 32-55.4V272c0-55.6 40.5-101.7 93.6-110.5C367 70 287.7 0 192 0C86 0 0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c17.7 0 32 14.3 32 32v48H368V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"],pause:[320,512,[9208],\"f04c\",\"M48 64C21.5 64 0 85.5 0 112V400c0 26.5 21.5 48 48 48H80c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zm192 0c-26.5 0-48 21.5-48 48V400c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H240z\"],\"hill-avalanche\":[576,512,[],\"e507\",\"M439.7 401.9c34.2 23.1 81.1 19.5 111.4-10.8c34.4-34.4 34.4-90.1 0-124.4c-27.8-27.8-69.5-33.1-102.6-16c-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7C401.2 261.3 416 236.4 416 208c0-33.9-21.1-62.9-50.9-74.5c1.9-6.8 2.9-14 2.9-21.5c0-44.2-35.8-80-80-80c-27.3 0-51.5 13.7-65.9 34.6C216.3 46.6 197.9 32 176 32c-26.5 0-48 21.5-48 48c0 4 .5 7.9 1.4 11.6L439.7 401.9zM480 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87z\"],\"temperature-empty\":[320,512,[\"temperature-0\",\"thermometer-0\",\"thermometer-empty\"],\"f2cb\",\"M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM160 0C98.1 0 48 50.2 48 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C272 50.2 221.9 0 160 0zm0 416a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"],bomb:[512,512,[128163],\"f1e2\",\"M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 304S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-75.1 60.9-136 136-136h8c8.8 0 16 7.2 16 16s-7.2 16-16 16h-8z\"],registered:[512,512,[174],\"f25d\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152c0-13.3 10.7-24 24-24h88c44.2 0 80 35.8 80 80c0 28-14.4 52.7-36.3 67l34.1 75.1c5.5 12.1 .1 26.3-11.9 31.8s-26.3 .1-31.8-11.9L268.9 288H208v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 152zm48 88h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H208v64z\"],\"address-card\":[576,512,[62140,\"contact-card\",\"vcard\"],\"f2bb\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 256h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-32H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],\"scale-unbalanced-flip\":[640,512,[\"balance-scale-right\"],\"f516\",\"M117.9 62.4c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l113 37.7C265 15.8 290.7 0 320 0c44.2 0 80 35.8 80 80c0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.4 145.2c-4.5 3.2-9.3 5.9-14.4 8.2V480c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-21-9.2-37.2-27-44.2-49l-125.9-42zM200.4 288L128 163.8 55.6 288H200.4zM128 384C65.1 384 12.8 350 2 305.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C243.2 350 190.9 384 128 384zm382.8-92.2L438.4 416H583.3L510.8 291.8zm126 141.3C626 478 573.7 512 510.8 512s-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1z\"],subscript:[512,512,[],\"f12c\",\"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V320z\"],\"diamond-turn-right\":[512,512,[\"directions\"],\"f5eb\",\"M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8v56H224c-35.3 0-64 28.7-64 64v48c0 13.3 10.7 24 24 24s24-10.7 24-24V280c0-8.8 7.2-16 16-16h64v56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z\"],burst:[512,512,[],\"e4dc\",\"M37.6 4.2C28-2.3 15.2-1.1 7 7s-9.4 21-2.8 30.5l112 163.3L16.6 233.2C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4L66.8 412.8c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1L392.3 312.2l103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8L388.9 198.7l25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7L278.8 16.6C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6l-32.3 99.6L37.6 4.2z\"],\"house-laptop\":[640,512,[\"laptop-house\"],\"e066\",\"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c6.7 6.2 10.3 14.8 10.3 23.5H336c-19.1 0-36.3 8.4-48 21.7V208c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64V416H112c-26.5 0-48-21.5-48-48V256H32c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM352 304V448H544V304H352zm-48-16c0-17.7 14.3-32 32-32H560c17.7 0 32 14.3 32 32V448h32c8.8 0 16 7.2 16 16c0 26.5-21.5 48-48 48H544 352 304c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16h32V288z\"],\"face-tired\":[512,512,[128555,\"tired\"],\"f5c8\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3h-3.2c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm-31.2-182l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"],\"money-bills\":[640,512,[],\"e1f3\",\"M96 96V320c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zm64 160c35.3 0 64 28.7 64 64H160V256zM224 96c0 35.3-28.7 64-64 64V96h64zM576 256v64H512c0-35.3 28.7-64 64-64zM512 96h64v64c-35.3 0-64-28.7-64-64zM288 208a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V360c0 66.3 53.7 120 120 120H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H120c-39.8 0-72-32.2-72-72V120z\"],smog:[640,512,[],\"f75f\",\"M32 144c0 79.5 64.5 144 144 144H299.3c22.6 19.9 52.2 32 84.7 32s62.1-12.1 84.7-32H496c61.9 0 112-50.1 112-112s-50.1-112-112-112c-10.7 0-21 1.5-30.8 4.3C443.8 27.7 401.1 0 352 0c-32.6 0-62.4 12.2-85.1 32.3C242.1 12.1 210.5 0 176 0C96.5 0 32 64.5 32 144zM616 368H280c-13.3 0-24 10.7-24 24s10.7 24 24 24H616c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-64 96H440c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-192 0H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24zM224 392c0-13.3-10.7-24-24-24H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H200c13.3 0 24-10.7 24-24z\"],crutch:[512,512,[],\"f7f7\",\"M297.4 9.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0zm-96 144l-34.8 34.8c-12.9 12.9-21.9 29.2-25.8 47.1L116.8 342.9c-1.3 5.9-4.3 11.4-8.6 15.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l98.8-98.8c4.3-4.3 9.7-7.3 15.7-8.6l107.6-23.9c17.8-4 34.1-12.9 47.1-25.8l34.7-34.7c0 0 .1-.1 .1-.1s.1-.1 .1-.1l74.6-74.6-45.3-45.3L336 242.7 269.3 176l52.1-52.1L276.1 78.6l-74.7 74.7zM224 221.3L290.7 288l-12.2 12.2c-4.3 4.3-9.7 7.3-15.7 8.6l-76.7 17 17-76.7c1.3-5.9 4.3-11.4 8.6-15.7L224 221.3z\"],\"font-awesome\":[512,512,[62501,62694,\"font-awesome-flag\",\"font-awesome-logo-full\"],\"f2b4\",\"M91.7 96C106.3 86.8 116 70.5 116 52C116 23.3 92.7 0 64 0S12 23.3 12 52c0 16.7 7.8 31.5 20 41l0 3 0 352 0 64 64 0 0-64 373.6 0c14.6 0 26.4-11.8 26.4-26.4c0-3.7-.8-7.3-2.3-10.7L432 272l61.7-138.9c1.5-3.4 2.3-7 2.3-10.7c0-14.6-11.8-26.4-26.4-26.4L91.7 96z\"],\"cloud-arrow-up\":[640,512,[62338,\"cloud-upload\",\"cloud-upload-alt\"],\"f0ee\",\"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V392c0 13.3 10.7 24 24 24s24-10.7 24-24V257.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\"],palette:[512,512,[127912],\"f53f\",\"M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3H344c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"arrows-turn-right\":[448,512,[],\"e4c0\",\"M297.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L338.7 160H128c-35.3 0-64 28.7-64 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V224C0 153.3 57.3 96 128 96H338.7L297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416H96c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96H242.7l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"],vest:[448,512,[],\"e085\",\"M207.1 237.4L151.2 69.7C168.6 79.7 192.6 88 224 88s55.4-8.3 72.8-18.3L226.5 280.6c-1.6 4.9-2.5 10-2.5 15.2V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V270.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6V128 54.3 48c0-26.5-21.5-48-48-48h-4.5c-.2 0-.4 0-.6 0c-.4 0-.8 0-1.2 0C311 0 295.7 9.7 285.7 18.8C276.4 27.2 257.2 40 224 40s-52.4-12.8-61.7-21.2C152.3 9.7 137 0 118.3 0c-.4 0-.8 0-1.2 0c-.2 0-.4 0-.6 0H112C85.5 0 64 21.5 64 48v6.3V128v17.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5V464c0 26.5 21.5 48 48 48H176c9.9 0 19-3 26.7-8.1C195.9 492.2 192 478.5 192 464V295.8c0-8.6 1.4-17.1 4.1-25.3l11-33.1zM347.3 356.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-294.6 48l48-48c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z\"],ferry:[576,512,[],\"e4ea\",\"M224 0H352c17.7 0 32 14.3 32 32h75.1c20.6 0 31.6 24.3 18.1 39.8L456 96H120L98.8 71.8C85.3 56.3 96.3 32 116.9 32H192c0-17.7 14.3-32 32-32zM96 128H480c17.7 0 32 14.3 32 32V283.5c0 13.3-4.2 26.3-11.9 37.2l-51.4 71.9c-1.9 1.1-3.7 2.2-5.5 3.5c-15.5 10.7-34 18-51 19.9H375.6c-17.1-1.8-35-9-50.8-19.9c-22.1-15.5-51.6-15.5-73.7 0c-14.8 10.2-32.5 18-50.6 19.9H183.9c-17-1.8-35.6-9.2-51-19.9c-1.8-1.3-3.7-2.4-5.6-3.5L75.9 320.7C68.2 309.8 64 296.8 64 283.5V160c0-17.7 14.3-32 32-32zm32 64v96H448V192H128zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.3-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"],\"arrows-down-to-people\":[640,512,[],\"e4b9\",\"M144 0c-13.3 0-24 10.7-24 24V142.1L97 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24zM360 200a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM184 296a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm312 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 345.5V400c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V345.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 468.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5zM415 153l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V142.1l-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"],seedling:[512,512,[127793,\"sprout\"],\"f4d8\",\"M512 32c0 113.6-84.6 207.5-194.2 222c-7.1-53.4-30.6-101.6-65.3-139.3C290.8 46.3 364 0 448 0h32c17.7 0 32 14.3 32 32zM0 96C0 78.3 14.3 64 32 64H64c123.7 0 224 100.3 224 224v32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320C100.3 320 0 219.7 0 96z\"],\"left-right\":[512,512,[8596,\"arrows-alt-h\"],\"f337\",\"M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z\"],\"boxes-packing\":[640,512,[],\"e4c7\",\"M256 48c0-26.5 21.5-48 48-48H592c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H381.3c1.8-5 2.7-10.4 2.7-16V253.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H256V48zM571.3 347.3c6.2-6.2 6.2-16.4 0-22.6l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L480 310.6V432c0 8.8 7.2 16 16 16s16-7.2 16-16V310.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0zM0 176c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V176zm352 80V480c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V256H352zM144 320c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H144z\"],\"circle-arrow-left\":[512,512,[\"arrow-circle-left\"],\"f0a8\",\"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM231 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L376 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-182.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L119 273c-9.4-9.4-9.4-24.6 0-33.9L231 127z\"],\"group-arrows-rotate\":[512,512,[],\"e4f6\",\"M201.1 71.9c16.9-5 26.6-22.9 21.5-39.8s-22.9-26.6-39.8-21.5c-21.5 6.4-41.8 15.5-60.6 27C114.3 34 105.4 32 96 32C60.7 32 32 60.7 32 96c0 9.4 2 18.3 5.6 26.3c-11.5 18.7-20.6 39-27 60.6c-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c4.3-14.6 10.4-28.5 17.9-41.4c2 .2 4.1 .3 6.1 .3c35.3 0 64-28.7 64-64c0-2.1-.1-4.1-.3-6.1c12.9-7.5 26.8-13.6 41.4-17.9zm128-61.3c-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c14.6 4.3 28.5 10.4 41.4 17.9c-.2 2-.3 4.1-.3 6.1c0 35.3 28.7 64 64 64c2.1 0 4.1-.1 6.2-.3c7.5 12.9 13.6 26.8 17.9 41.4c5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.6c3.6-8 5.6-16.9 5.6-26.3c0-35.3-28.7-64-64-64c-9.4 0-18.3 2-26.3 5.6c-18.7-11.5-39-20.6-60.6-27zM71.9 310.9c-5-16.9-22.9-26.6-39.8-21.5s-26.6 22.9-21.5 39.8c6.4 21.5 15.5 41.8 27 60.6C34 397.7 32 406.6 32 416c0 35.3 28.7 64 64 64c9.4 0 18.3-2 26.3-5.6c18.7 11.5 39 20.6 60.6 27c16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-14.6-4.3-28.5-10.4-41.4-17.9c.2-2 .3-4.1 .3-6.2c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.2 .3c-7.5-12.9-13.6-26.8-17.9-41.4zm429.4 18.3c5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-4.3 14.6-10.4 28.5-17.9 41.4c-2-.2-4.1-.3-6.2-.3c-35.3 0-64 28.7-64 64c0 2.1 .1 4.1 .3 6.2c-12.9 7.5-26.8 13.6-41.4 17.9c-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.6-27c8 3.6 16.9 5.6 26.3 5.6c35.3 0 64-28.7 64-64c0-9.4-2-18.3-5.6-26.3c11.5-18.7 20.6-39 27-60.6zM192.8 256.8c0-15.6 5.6-29.9 14.9-41.1L223 231c6.6 6.6 17.8 1.9 17.8-7.4V163.2c0-5.7-4.7-10.4-10.4-10.4H169.9c-9.3 0-13.9 11.2-7.4 17.8l11.2 11.2c-17.9 19.8-28.9 46.2-28.9 75.1c0 43.6 24.9 81.3 61.1 99.8c11.8 6 26.3 1.4 32.3-10.4s1.4-26.3-10.4-32.3c-20.8-10.6-34.9-32.2-34.9-57zm93.1-58.6c20.8 10.6 34.9 32.2 34.9 57c0 15.6-5.6 29.9-14.9 41.1L290.6 281c-6.6-6.6-17.8-1.9-17.8 7.4v60.5c0 5.7 4.7 10.4 10.4 10.4h60.5c9.3 0 13.9-11.2 7.4-17.8l-11.2-11.2c17.9-19.8 28.9-46.2 28.9-75.1c0-43.6-24.9-81.3-61.1-99.8c-11.8-6-26.3-1.4-32.3 10.4s-1.4 26.3 10.4 32.3z\"],\"bowl-food\":[512,512,[],\"e4c6\",\"M0 192c0-35.3 28.7-64 64-64c.5 0 1.1 0 1.6 0C73 91.5 105.3 64 144 64c15 0 29 4.1 40.9 11.2C198.2 49.6 225.1 32 256 32s57.8 17.6 71.1 43.2C339 68.1 353 64 368 64c38.7 0 71 27.5 78.4 64c.5 0 1.1 0 1.6 0c35.3 0 64 28.7 64 64c0 11.7-3.1 22.6-8.6 32H8.6C3.1 214.6 0 203.7 0 192zm0 91.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"],\"candy-cane\":[512,512,[],\"f786\",\"M348.8 131.5c3.7-2.3 7.9-3.5 12.2-3.5c12.7 0 23 10.3 23 23v5.6c0 9.9-5.1 19.1-13.5 24.3L30.1 393.7C.1 412.5-9 451.9 9.7 481.9s58.2 39.1 88.2 20.4L438.4 289.5c45.8-28.6 73.6-78.8 73.6-132.8V151C512 67.6 444.4 0 361 0c-28.3 0-56 8-80.1 23L254.1 39.7c-30 18.7-39.1 58.2-20.4 88.2s58.2 39.1 88.2 20.4l26.8-16.8zM298.4 49.8c9.2-5.7 19.1-10.1 29.4-13.1L348 97.5c-5.7 1.4-11.2 3.7-16.3 6.8l-12.6 7.9L298.4 49.8zm88.5 52.7l46.2-46.2c8.5 6.5 16.1 14.1 22.6 22.6l-46.2 46.2c-5.1-9.6-13-17.5-22.6-22.6zm28.9 59.3l61.6 20.5c-2.2 10.5-5.8 20.7-10.5 30.2l-62-20.7c6.2-8.8 10.1-19.1 11-30.1zm-86.1 82.5l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zm-107.2 67l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zM119.3 375.7l60.4 37.7-30.2 18.9L89.1 394.6l30.2-18.9z\"],\"arrow-down-wide-short\":[576,512,[\"sort-amount-asc\",\"sort-amount-down\"],\"f160\",\"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320z\"],\"cloud-bolt\":[512,512,[127785,\"thunderstorm\"],\"f76c\",\"M0 224c0 53 43 96 96 96h47.2L290 202.5c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L333.7 320H352h64c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm330.1 3.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L177.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H281.9l52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"],\"text-slash\":[640,512,[\"remove-format\"],\"f87d\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96H503L497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C577.6 61.3 554.7 32 523.5 32H376.1h-.3H204.5c-22 0-41.2 15-46.6 36.4l-6.3 25.2L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96H333.7L301.3 210.8l-94.5-74.1zM327.3 353.9L272.9 311 243.3 416H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H309.8l17.6-62.1z\"],\"face-smile-wink\":[512,512,[128521,\"smile-wink\"],\"f4da\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"],\"file-word\":[384,512,[],\"f1c2\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM111 257.1l26.8 89.2 31.6-90.3c3.4-9.6 12.5-16.1 22.7-16.1s19.3 6.4 22.7 16.1l31.6 90.3L273 257.1c3.8-12.7 17.2-19.9 29.9-16.1s19.9 17.2 16.1 29.9l-48 160c-3 10-12 16.9-22.4 17.1s-19.8-6.2-23.2-16.1L192 336.6l-33.3 95.3c-3.4 9.8-12.8 16.3-23.2 16.1s-19.5-7.1-22.4-17.1l-48-160c-3.8-12.7 3.4-26.1 16.1-29.9s26.1 3.4 29.9 16.1z\"],\"file-powerpoint\":[384,512,[],\"f1c4\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM136 240h68c42 0 76 34 76 76s-34 76-76 76H160v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V368 264c0-13.3 10.7-24 24-24zm68 104c15.5 0 28-12.5 28-28s-12.5-28-28-28H160v56h44z\"],\"arrows-left-right\":[512,512,[\"arrows-h\"],\"f07e\",\"M406.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224l-293.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288l293.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"],\"house-lock\":[640,512,[],\"e510\",\"M384 480c0 11.7 3.1 22.6 8.6 32H392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L490.7 166.3C447.2 181.7 416 223.2 416 272v24.6c-19.1 11.1-32 31.7-32 55.4V480zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"],\"cloud-arrow-down\":[640,512,[62337,\"cloud-download\",\"cloud-download-alt\"],\"f0ed\",\"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-167l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V318.1l-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"],children:[640,512,[],\"e4e1\",\"M160 0a64 64 0 1 1 0 128A64 64 0 1 1 160 0zM88 480V400H70.2c-10.9 0-18.6-10.7-15.2-21.1l31.1-93.4L57.5 323.3c-10.7 14.1-30.8 16.8-44.8 6.2s-16.8-30.7-6.2-44.8L65.4 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47l58.9 77.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.6-37.8L265 378.9c3.5 10.4-4.3 21.1-15.2 21.1H232v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V400H152v80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480 0a64 64 0 1 1 0 128A64 64 0 1 1 480 0zm-8 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V300.5L395.1 321c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9h12.3c33 0 63.7 16.9 81.2 44.9L619.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L552 300.5V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H472z\"],chalkboard:[576,512,[\"blackboard\"],\"f51b\",\"M96 32C60.7 32 32 60.7 32 96V384H96V96l384 0V384h64V96c0-35.3-28.7-64-64-64H96zM224 384v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H416V384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32z\"],\"user-large-slash\":[640,512,[\"user-alt-slash\"],\"f4fa\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM545.5 512H528L284.3 320h-59C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7H545.3l.3 0z\"],\"envelope-open\":[512,512,[62135],\"f2b6\",\"M64 208.1L256 65.9 448 208.1v47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5V208.1zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V208.1c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z\"],\"handshake-simple-slash\":[640,512,[\"handshake-alt-slash\"],\"e05f\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.3-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM413.6 421.9L41.2 128.5C17.9 131.8 0 151.8 0 176V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6z\"],\"mattress-pillow\":[640,512,[],\"e525\",\"M256 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H256V64zm32 384H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H288V448zM64 160c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160z\"],\"guarani-sign\":[384,512,[],\"e19a\",\"M192 0c-17.7 0-32 14.3-32 32V66.7C69.2 81.9 0 160.9 0 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c90.8-15.2 160-94.2 160-189.3c0-17.7-14.3-32-32-32H224V132c22.1 5.7 41.8 17.1 57.6 32.6c12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C299 92 263.5 73.3 224 66.7V32c0-17.7-14.3-32-32-32zM160 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124zM224 380V288h92c-11.6 45-47 80.4-92 92z\"],\"arrows-rotate\":[512,512,[128472,\"refresh\",\"sync\"],\"f021\",\"M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H352c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V80c0-17.7-14.3-32-32-32s-32 14.3-32 32v35.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V432c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H160c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z\"],\"fire-extinguisher\":[512,512,[129519],\"f134\",\"M500.3 7.3C507.7 13.3 512 22.4 512 32v96c0 9.6-4.3 18.7-11.7 24.7s-17.2 8.5-26.6 6.6l-160-32C301.5 124.9 292 115.7 289 104H224v34.8c37.8 18 64 56.5 64 101.2V384H64V240c0-44.7 26.2-83.2 64-101.2V110c-36.2 11.1-66 36.9-82.3 70.5c-5.8 11.9-20.2 16.9-32.1 11.1S-3.3 171.4 2.5 159.5C26.7 109.8 72.7 72.6 128 60.4V32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V56h65c3-11.7 12.5-20.9 24.7-23.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM288 416v32c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V416H288zM176 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"],\"cruzeiro-sign\":[448,512,[],\"e152\",\"M96 256c0-88.4 71.6-160 160-160c41 0 78.3 15.4 106.7 40.7c13.2 11.8 33.4 10.7 45.2-2.5s10.7-33.4-2.5-45.2c-39.6-35.5-92-57-149.3-57C132.3 32 32 132.3 32 256s100.3 224 224 224c57.4 0 109.7-21.6 149.3-57c13.2-11.8 14.3-32 2.5-45.2s-32-14.3-45.2-2.5C334.3 400.6 297 416 256 416V320v-8.7c0-12.8 10.4-23.3 23.3-23.3c4.6 0 9.1 1.4 12.9 3.9l10.1 6.7c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4l-10.1-6.7c-14.3-9.6-31.2-14.7-48.4-14.7c-12.4 0-24.2 2.6-34.9 7.3c-5.5-4.5-12.6-7.3-20.3-7.3c-17.7 0-32 14.3-32 32v55.3V320v82.7C135.5 378 96 321.6 96 256z\"],\"greater-than-equal\":[448,512,[],\"f532\",\"M52.1 93.7C35.7 87.1 27.7 68.5 34.3 52.1s25.2-24.4 41.6-17.8l320 128C408 167.1 416 178.9 416 192s-8 24.9-20.1 29.7l-320 128c-16.4 6.6-35-1.4-41.6-17.8s1.4-35 17.8-41.6L297.8 192 52.1 93.7zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416z\"],\"shield-halved\":[512,512,[\"shield-alt\"],\"f3ed\",\"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8V444.8C394 378 431.1 230.1 432 141.4L256 66.8l0 0z\"],\"book-atlas\":[448,512,[\"atlas\"],\"f558\",\"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM247.4 283.8c-3.7 3.7-6.2 4.2-7.4 4.2s-3.7-.5-7.4-4.2c-3.8-3.7-8-10-11.8-18.9c-6.2-14.5-10.8-34.3-12.2-56.9h63c-1.5 22.6-6 42.4-12.2 56.9c-3.8 8.9-8 15.2-11.8 18.9zm42.7-9.9c7.3-18.3 12-41.1 13.4-65.9h31.1c-4.7 27.9-21.4 51.7-44.5 65.9zm0-163.8c23.2 14.2 39.9 38 44.5 65.9H303.5c-1.4-24.7-6.1-47.5-13.4-65.9zM368 192a128 128 0 1 0 -256 0 128 128 0 1 0 256 0zM145.3 208h31.1c1.4 24.7 6.1 47.5 13.4 65.9c-23.2-14.2-39.9-38-44.5-65.9zm31.1-32H145.3c4.7-27.9 21.4-51.7 44.5-65.9c-7.3 18.3-12 41.1-13.4 65.9zm56.1-75.8c3.7-3.7 6.2-4.2 7.4-4.2s3.7 .5 7.4 4.2c3.8 3.7 8 10 11.8 18.9c6.2 14.5 10.8 34.3 12.2 56.9h-63c1.5-22.6 6-42.4 12.2-56.9c3.8-8.9 8-15.2 11.8-18.9z\"],virus:[512,512,[],\"e074\",\"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L120.2 75C107.7 62.5 87.5 62.5 75 75s-12.5 32.8 0 45.3l8.2 8.2C118.4 163.7 93.4 224 43.5 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H43.5c49.9 0 74.9 60.3 39.6 95.6L75 391.8c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-49.9 60.3-74.9 95.6-39.6l8.2 8.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-8.2-8.2c-35.3-35.3-10.3-95.6 39.6-95.6H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H468.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C348.3 118.4 288 93.4 288 43.5V32zM176 224a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"],\"envelope-circle-check\":[640,512,[],\"e4e8\",\"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176V384c0 35.3 28.7 64 64 64H360.2C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"],\"layer-group\":[576,512,[],\"f5fd\",\"M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z\"],\"arrows-to-dot\":[512,512,[],\"e4be\",\"M256 0c17.7 0 32 14.3 32 32V64h32c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8h32V32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H288v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H192c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224H64V192c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6v32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],archway:[512,512,[],\"f557\",\"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H96h64V352c0-53 43-96 96-96s96 43 96 96V480h64 64c17.7 0 32-14.3 32-32s-14.3-32-32-32V128H32V416z\"],\"heart-circle-check\":[576,512,[],\"e4fd\",\"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"],\"house-chimney-crack\":[576,512,[\"house-damage\"],\"f6f1\",\"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H326.4L288 448l80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L250.6 263.2c-14.6-11.5-33.8 7-22.8 22L288 368l-85.5 71.2c-6.1 5-7.5 13.8-3.5 20.5L230.4 512H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24z\"],\"file-zipper\":[384,512,[\"file-archive\"],\"f1c6\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM96 48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm-6.3 71.8c3.7-14 16.4-23.8 30.9-23.8h14.8c14.5 0 27.2 9.7 30.9 23.8l23.5 88.2c1.4 5.4 2.1 10.9 2.1 16.4c0 35.2-28.8 63.7-64 63.7s-64-28.5-64-63.7c0-5.5 .7-11.1 2.1-16.4l23.5-88.2zM112 336c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"],square:[448,512,[9632,9723,9724,61590],\"f0c8\",\"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z\"],\"martini-glass-empty\":[512,512,[\"glass-martini\"],\"f000\",\"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM256 210.7L109.3 64H402.7L256 210.7z\"],couch:[640,512,[],\"f4b8\",\"M64 160C64 89.3 121.3 32 192 32H448c70.7 0 128 57.3 128 128v33.6c-36.5 7.4-64 39.7-64 78.4v48H128V272c0-38.7-27.5-71-64-78.4V160zM544 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48V448c0 17.7-14.3 32-32 32H576c-17.7 0-32-14.3-32-32H96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3v48 32h32H512h32V320 272z\"],\"cedi-sign\":[384,512,[],\"e0df\",\"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V66.7C101.2 81.9 32 160.9 32 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c30.9-5.2 59.2-17.7 83.2-35.8c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-13.2 9.9-28.3 17.3-44.8 21.6V132c16.4 4.2 31.6 11.6 44.8 21.6c14.1 10.6 34.2 7.8 44.8-6.4s7.8-34.2-6.4-44.8c-24-18-52.4-30.6-83.2-35.8V32zM192 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124z\"],italic:[384,512,[],\"f033\",\"M128 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H293.3L160 416h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H90.7L224 96H160c-17.7 0-32-14.3-32-32z\"],\"table-cells-column-lock\":[640,512,[],\"e678\",\"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zm208 0l0 64 88 0 0-64-88 0zm240 0l-88 0 0 64 88 0 0-64zM208 224l0 64 88 0 0-64-88 0zm0 128l0 64 88 0 0-64-88 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"],church:[640,512,[9962],\"f51d\",\"M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V48H264c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v46.4L183.3 210c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V251.2c0-16.9-8.8-32.5-23.3-41.2L344 142.4V96h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V24zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"],\"comments-dollar\":[640,512,[],\"f653\",\"M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9l0 0 0 0 .2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2 0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM228 72c0-11-9-20-20-20s-20 9-20 20V86c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V280c0 11 9 20 20 20s20-9 20-20V266.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V72z\"],democrat:[640,512,[],\"f747\",\"M64 32c0-8.9 3.8-20.9 6.2-27.3C71.2 1.8 74 0 77 0c1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1C175.2 .7 177.1 0 179 0c3 0 5.8 1.8 6.8 4.7c2.4 6.5 6.2 18.4 6.2 27.3c0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8H480l32 0c40.3 0 78.2 19 102.4 51.2l19.2 25.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4l-19.2-25.6c-5.3-7-11.8-12.8-19.2-17V320H192l-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3h-2C23.9 256 0 232.1 0 202.7c0-12.1 4.1-23.8 11.7-33.3L87.6 74.6C78.1 67.4 64 53.2 64 32zM448 352h96v64 64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V416H288v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416 352h96H448zM260.9 210.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.3-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5zM368.1 208c-2 0-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5c-.9-1.8-2.8-2.9-4.8-2.9zm116.8 2.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5z\"],z:[384,512,[122],\"5a\",\"M0 64C0 46.3 14.3 32 32 32H352c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96H32C14.3 96 0 81.7 0 64z\"],\"person-skiing\":[512,512,[9975,\"skiing\"],\"f7c9\",\"M380.7 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM2.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L232.7 361.3l46.2-69.2-75.1-75.1c-14.6-14.6-20.4-33.9-18.4-52.1l108.8 52 39.3 39.3c16.2 16.2 18.7 41.5 6 60.6L289.8 391l128.7 66.8c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L12.9 301.3C1.2 295.2-3.4 280.7 2.7 268.9zM118.9 65.6L137 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 54.7 26.2c1.5-.7 3.1-1.4 4.7-2.1l83.4-33.4c34.2-13.7 72.8 4.2 84.5 39.2l17.1 51.2 52.1 26.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-58.1-29c-11.4-5.7-20-15.7-24.1-27.8l-5.8-17.3-27.3 12.1-6.8 3-6.7-3.2L151.5 116.7l-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5z\"],\"road-lock\":[640,512,[],\"e567\",\"M288 32H213.2c-27.1 0-51.3 17.1-60.3 42.6L35.1 407.2c-2.1 5.9-3.1 12-3.1 18.2C32 455.5 56.5 480 86.6 480H288V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64h32V352c0-23.7 12.9-44.4 32-55.4V272c0-58.3 44.6-106.2 101.5-111.5L487.1 74.6C478 49.1 453.9 32 426.8 32H352V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"],a:[384,512,[97],\"41\",\"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L93.3 384H290.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM264 320H120l72-172.8L264 320z\"],\"temperature-arrow-down\":[576,512,[\"temperature-down\"],\"e03f\",\"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM176 0C114.1 0 64 50.1 64 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V272c0-8.8-7.2-16-16-16s-16 7.2-16 16v50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zm336-64H480V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352H384c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8z\"],\"feather-pointed\":[512,512,[\"feather-alt\"],\"f56b\",\"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l74.8-74.8c7.4 4.6 15.3 8.2 23.8 10.5C200.3 452.8 270 454.5 338 409.4c12.2-8.1 5.8-25.4-8.8-25.4l-16.1 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l97.7-29.3c3.4-1 6.4-3.1 8.4-6.1c4.4-6.4 8.6-12.9 12.6-19.6c6.2-10.3-1.5-23-13.5-23l-38.6 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l80.9-24.3c4.6-1.4 8.4-4.8 10.2-9.3C494.5 163 507.8 86.1 511.9 36.8c.8-9.9-3-19.6-10-26.6s-16.7-10.8-26.6-10C391.5 7 228.5 40.5 137.4 131.6C57.3 211.7 56.7 302.3 71.3 356.4c2.1 7.9 12 9.6 17.8 3.8L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"],p:[320,512,[112],\"50\",\"M0 96C0 60.7 28.7 32 64 32h96c88.4 0 160 71.6 160 160s-71.6 160-160 160H64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V320 96zM64 288h96c53 0 96-43 96-96s-43-96-96-96H64V288z\"],snowflake:[448,512,[10052,10054],\"f2dc\",\"M224 0c17.7 0 32 14.3 32 32V62.1l15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49v70.3l61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7v70.3l49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V449.9l-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49V311.7l-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3V129.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15V32c0-17.7 14.3-32 32-32z\"],newspaper:[512,512,[128240],\"f1ea\",\"M96 96c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H80c-44.2 0-80-35.8-80-80V128c0-17.7 14.3-32 32-32s32 14.3 32 32V400c0 8.8 7.2 16 16 16s16-7.2 16-16V96zm64 24v80c0 13.3 10.7 24 24 24H296c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24H184c-13.3 0-24 10.7-24 24zm208-8c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zM160 304c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"],\"rectangle-ad\":[576,512,[\"ad\"],\"f641\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM229.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L253.2 328H162.8l-5.4 10.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zM208 237.7L186.8 280h42.3L208 237.7zM392 256a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm24-43.9V184c0-13.3 10.7-24 24-24s24 10.7 24 24v96 48c0 13.3-10.7 24-24 24c-6.6 0-12.6-2.7-17-7c-9.4 4.5-19.9 7-31 7c-39.8 0-72-32.2-72-72s32.2-72 72-72c8.4 0 16.5 1.4 24 4.1z\"],\"circle-arrow-right\":[512,512,[\"arrow-circle-right\"],\"f0a9\",\"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM281 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L136 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l182.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L393 239c9.4 9.4 9.4 24.6 0 33.9L281 385z\"],\"filter-circle-xmark\":[576,512,[],\"e17b\",\"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"],locust:[576,512,[],\"e520\",\"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h16c98.7 0 180.6 71.4 197 165.4c-9-3.5-18.8-5.4-29-5.4H431.8l-41.8-97.5c-3.4-7.9-10.8-13.4-19.3-14.4s-17 2.7-22.1 9.6l-40.9 55.5-21.7-50.7c-3.3-7.8-10.5-13.2-18.9-14.3s-16.7 2.3-22 8.9l-240 304c-8.2 10.4-6.4 25.5 4 33.7s25.5 6.4 33.7-4l79.4-100.5 43 16.4-40.5 55c-7.9 10.7-5.6 25.7 5.1 33.6s25.7 5.6 33.6-5.1L215.1 400h74.5l-29.3 42.3c-7.5 10.9-4.8 25.8 6.1 33.4s25.8 4.8 33.4-6.1L348 400h80.4l38.8 67.9c6.6 11.5 21.2 15.5 32.7 8.9s15.5-21.2 8.9-32.7L483.6 400H496c44.1 0 79.8-35.7 80-79.7c0-.1 0-.2 0-.3V280C576 143 465 32 328 32H312zm50.5 168l17.1 40H333l29.5-40zm-87.7 38.1l-1.4 1.9H225.1l32.7-41.5 16.9 39.5zM88.8 240C57.4 240 32 265.4 32 296.8c0 15.5 6.3 30 16.9 40.4L126.7 240H88.8zM496 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"],sort:[320,512,[\"unsorted\"],\"f0dc\",\"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z\"],\"list-ol\":[512,512,[\"list-1-2\",\"list-numeric\"],\"f0cb\",\"M24 56c0-13.3 10.7-24 24-24H80c13.3 0 24 10.7 24 24V176h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H56V80H48C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432H120c13.3 0 24 10.7 24 24s-10.7 24-24 24H32c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"],\"person-dress-burst\":[640,512,[],\"e544\",\"M528 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM390.2 384H408v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h16v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h17.8c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3H474.2c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"],\"money-check-dollar\":[576,512,[\"money-check-alt\"],\"f53d\",\"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zM272 192H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 304c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16zM164 152v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V360c0 11-9 20-20 20s-20-9-20-20V345.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V152c0-11 9-20 20-20s20 9 20 20z\"],\"vector-square\":[448,512,[],\"f5cb\",\"M368 80h32v32H368V80zM352 32c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32V160c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H352zM96 160c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32V160zM48 400H80v32H48V400zm320 32V400h32v32H368zM48 112V80H80v32H48z\"],\"bread-slice\":[512,512,[],\"f7ec\",\"M256 32C192 32 0 64 0 192c0 35.3 28.7 64 64 64V432c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V256c35.3 0 64-28.7 64-64C512 64 320 32 256 32z\"],language:[640,512,[],\"f1ab\",\"M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z\"],\"face-kiss-wink-heart\":[512,512,[128536,\"kiss-wink-heart\"],\"f598\",\"M498 339.7c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-22.9-89.3c-10-39 11.8-80.9 51.8-92.1c37.2-10.4 73.8 10.1 87.5 44c12.7-1.6 25.1 .4 36.2 5zM296 332c0 6.9-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C258.7 443.1 241.4 448 224 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.6-.4-.3-.2-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm194.8 57.6c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"],filter:[512,512,[],\"f0b0\",\"M3.9 54.9C10.5 40.9 24.5 32 40 32H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9V448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6V320.9L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"],question:[320,512,[10067,10068,61736],\"3f\",\"M80 160c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64v3.6c0 21.8-11.1 42.1-29.4 53.8l-42.2 27.1c-25.2 16.2-40.4 44.1-40.4 74V320c0 17.7 14.3 32 32 32s32-14.3 32-32v-1.4c0-8.2 4.2-15.8 11-20.2l42.2-27.1c36.6-23.6 58.8-64.1 58.8-107.7V160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm80 320a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"],\"file-signature\":[576,512,[],\"f573\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V428.7c-2.7 1.1-5.4 2-8.2 2.7l-60.1 15c-3 .7-6 1.2-9 1.4c-.9 .1-1.8 .2-2.7 .2H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 381l-9.8 32.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.8 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8h8.9c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7L384 203.6V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM549.8 139.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 321c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 262.7l-71-71L311.9 321z\"],\"up-down-left-right\":[512,512,[\"arrows-alt\"],\"f0b2\",\"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32v96H128V192c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V288h96v96H192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H288V288h96v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H288V128h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"],\"house-chimney-user\":[576,512,[],\"e065\",\"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM288 160a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM176 400c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16z\"],\"hand-holding-heart\":[576,512,[],\"f4be\",\"M163.9 136.9c-29.4-29.8-29.4-78.2 0-108s77-29.8 106.4 0l17.7 18 17.7-18c29.4-29.8 77-29.8 106.4 0s29.4 78.2 0 108L310.5 240.1c-6.2 6.3-14.3 9.4-22.5 9.4s-16.3-3.1-22.5-9.4L163.9 136.9zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"],\"puzzle-piece\":[512,512,[129513],\"f12e\",\"M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8c0 12.8 10.4 23.2 23.2 23.2H336c26.5 0 48 21.5 48 48v56.8c0 12.8 10.4 23.2 23.2 23.2c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2c-12.8 0-23.2 10.4-23.2 23.2V464c0 26.5-21.5 48-48 48H279.2c-12.8 0-23.2-10.4-23.2-23.2c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8c0 12.8-10.4 23.2-23.2 23.2H48c-26.5 0-48-21.5-48-48V343.2C0 330.4 10.4 320 23.2 320c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256C10.4 256 0 245.6 0 232.8V176c0-26.5 21.5-48 48-48H168.8c12.8 0 23.2-10.4 23.2-23.2z\"],\"money-check\":[576,512,[],\"f53c\",\"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm48 160H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 336c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zM376 160h80c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24H376c-13.3 0-24-10.7-24-24V184c0-13.3 10.7-24 24-24z\"],\"star-half-stroke\":[576,512,[\"star-half-alt\"],\"f5c0\",\"M288 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L288.1 86.9l-.1 .3V376.4zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L288.1 439.8 159.8 508.3C149 514 135.9 513.1 126 506s-14.9-19.3-12.9-31.3L137.8 329 33.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L195 150.3 259.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L438.5 329l24.6 145.7z\"],code:[640,512,[],\"f121\",\"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z\"],\"whiskey-glass\":[512,512,[129347,\"glass-whiskey\"],\"f7a0\",\"M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5h253c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32H32zM87.7 224L69 96H443L424.3 224H87.7z\"],\"building-circle-exclamation\":[640,512,[],\"e4d3\",\"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"],\"magnifying-glass-chart\":[512,512,[],\"e522\",\"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zm-312 8v64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96V280c0 13.3 10.7 24 24 24s24-10.7 24-24V120c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64v96c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"],\"arrow-up-right-from-square\":[512,512,[\"external-link\"],\"f08e\",\"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"],\"cubes-stacked\":[448,512,[],\"e4e6\",\"M192 64v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H224c-17.7 0-32 14.3-32 32zM82.7 207c-15.3 8.8-20.5 28.4-11.7 43.7l32 55.4c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-32-55.4c-8.8-15.3-28.4-20.5-43.7-11.7L82.7 207zM288 192c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H288zm64 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H352zM160 384v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zM32 352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H32z\"],\"won-sign\":[512,512,[8361,\"krw\",\"won\"],\"f159\",\"M62.4 53.9C56.8 37.1 38.6 28.1 21.9 33.6S-3.9 57.4 1.6 74.1L51.6 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H72.9l56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288h46L321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l50-149.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L392.9 224H329L287 56.2C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L183 224h-64L62.4 53.9zm78 234.1H167l-11.4 45.6L140.4 288zM249 224l7-28.1 7 28.1H249zm96 64h26.6l-15.2 45.6L345 288z\"],\"virus-covid\":[512,512,[],\"e4a8\",\"M192 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H280V81.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L420 125.9l-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3H464V216c0-13.3 10.7-24 24-24s24 10.7 24 24v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H430.4c-4.2 30.7-16.3 58.8-34.1 82.3L420 386.1l11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L386.1 420l-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1V464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V430.4c-30.7-4.2-58.8-16.3-82.3-34.1L125.9 420l11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L92 386.1l23.8-23.8C97.9 338.8 85.8 310.7 81.6 280H48v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V216c0-13.3 10.7-24 24-24s24 10.7 24 24v16H81.6c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92l23.8 23.8c23.5-17.9 51.7-29.9 82.3-34.1V48H216c-13.3 0-24-10.7-24-24zm48 200a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm64 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"],\"austral-sign\":[448,512,[],\"e0a9\",\"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7L122.7 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96L82.7 320H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H56L34.5 435.7c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384H322.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8L392 384h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H365.3L352 288h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H325.3L253.5 51.7zM256 224H192l32-76.8L256 224zm-90.7 64H282.7L296 320H152l13.3-32z\"],f:[320,512,[102],\"46\",\"M64 32C28.7 32 0 60.7 0 96V256 448c0 17.7 14.3 32 32 32s32-14.3 32-32V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z\"],leaf:[512,512,[],\"f06c\",\"M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5h88c8.8 0 16 7.2 16 16s-7.2 16-16 16H288 216s0 0 0 0c-16.6 0-32.7 1.9-48.3 5.4c-25.9 5.9-49.9 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440v16c0 13.3 10.7 24 24 24s24-10.7 24-24V440c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z\"],road:[576,512,[128739],\"f018\",\"M256 32H181.2c-27.1 0-51.3 17.1-60.3 42.6L3.1 407.2C1.1 413 0 419.2 0 425.4C0 455.5 24.5 480 54.6 480H256V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64H521.4c30.2 0 54.6-24.5 54.6-54.6c0-6.2-1.1-12.4-3.1-18.2L455.1 74.6C446 49.1 421.9 32 394.8 32H320V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"],taxi:[512,512,[128662,\"cab\"],\"f1ba\",\"M192 0c-17.7 0-32 14.3-32 32V64c0 .1 0 .1 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288V432v48c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V432H416v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V432 288c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1c0-.1 0-.1 0-.2V32c0-17.7-14.3-32-32-32H192zM165.4 128H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 224H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 288a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"],\"person-circle-plus\":[576,512,[],\"e541\",\"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"],\"chart-pie\":[576,512,[\"pie-chart\"],\"f200\",\"M304 240V16.6c0-9 7-16.6 16-16.6C443.7 0 544 100.3 544 224c0 9-7.6 16-16.6 16H304zM32 272C32 150.7 122.1 50.3 239 34.3c9.2-1.3 17 6.1 17 15.4V288L412.5 444.5c6.7 6.7 6.2 17.7-1.5 23.1C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zm526.4 16c9.3 0 16.6 7.8 15.4 17c-7.7 55.9-34.6 105.6-73.9 142.3c-6 5.6-15.4 5.2-21.2-.7L320 288H558.4z\"],\"bolt-lightning\":[384,512,[],\"e0b7\",\"M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z\"],\"sack-xmark\":[512,512,[],\"e56a\",\"M192 96H320l47.4-71.1C374.5 14.2 366.9 0 354.1 0H157.9c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32H192c-3.8 2.5-8.1 5.3-13 8.4l0 0 0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96H416c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4zM289.9 336l47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47z\"],\"file-excel\":[384,512,[],\"f1c3\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z\"],\"file-contract\":[384,512,[],\"f56c\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z\"],\"fish-fins\":[576,512,[],\"e4f2\",\"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5c-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.6 4.9S-3 163.3 4.2 175.9L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.6 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3c15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8c39.2-29.4 67.2-64.7 81.6-89.5c5.8-9.9 5.8-22.2 0-32.1c-14.4-24.8-42.5-60.1-81.6-89.5c-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM384 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"],\"building-flag\":[640,512,[],\"e4d5\",\"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM448 0c-17.7 0-32 14.3-32 32V512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H480c0-17.7-14.3-32-32-32z\"],\"face-grin-beam\":[512,512,[128516,\"grin-beam\"],\"f582\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-170.5-84l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"],\"object-ungroup\":[640,512,[],\"f248\",\"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H328.6C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V232.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4V232.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4H119.4zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V352h64v40.6c9.7 5.6 17.8 13.7 23.4 23.4H520.6c5.6-9.7 13.7-17.8 23.4-23.4V279.4c-9.7-5.6-17.8-13.7-23.4-23.4h-46c-5.4-15.4-14.6-28.9-26.5-39.6V192h72.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H311.4z\"],poop:[512,512,[],\"f619\",\"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7C315.8 7.2 352 47.4 352 96c0 11.2-1.9 22-5.5 32H352c35.3 0 64 28.7 64 64c0 19.1-8.4 36.3-21.7 48H408c39.8 0 72 32.2 72 72c0 23.2-11 43.8-28 57c34.1 5.7 60 35.3 60 71c0 39.8-32.2 72-72 72H72c-39.8 0-72-32.2-72-72c0-35.7 25.9-65.3 60-71c-17-13.2-28-33.8-28-57c0-39.8 32.2-72 72-72h13.7C104.4 228.3 96 211.1 96 192c0-35.3 28.7-64 64-64h16.2c44.1-.1 79.8-35.9 79.8-80c0-9.2-1.5-17.9-4.3-26.1c-1.8-5.2-.8-11.1 2.8-15.4z\"],\"location-pin\":[384,512,[\"map-marker\"],\"f041\",\"M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z\"],kaaba:[576,512,[128331],\"f66b\",\"M60 120l228 71.2L516 120 288 48.8 60 120zM278.5 1.5c6.2-1.9 12.9-1.9 19.1 0l256 80C566.9 85.6 576 98 576 112v16 0 21.2L292.8 237.7c-3.1 1-6.4 1-9.5 0L0 149.2V128 112C0 98 9.1 85.6 22.5 81.5l256-80zm23.9 266.8L576 182.8v46.5l-52.8 16.5c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5L576 262.8V400c0 14-9.1 26.4-22.5 30.5l-256 80c-6.2 1.9-12.9 1.9-19.1 0l-256-80C9.1 426.4 0 414 0 400V262.8l43.2 13.5c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20L0 229.2V182.8l273.7 85.5c9.3 2.9 19.3 2.9 28.6 0zm-185.5-2.6c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l64 20c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20l-64-20zm352 30.5c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-64 20c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5l64-20zm-224 9.5c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l38.5 12c9.3 2.9 19.3 2.9 28.6 0l38.5-12c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-38.5 12c-3.1 1-6.4 1-9.5 0l-38.5-12z\"],\"toilet-paper\":[640,512,[129531],\"f71e\",\"M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1H48c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0H444.2zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM144 208a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm64 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"],\"helmet-safety\":[576,512,[\"hard-hat\",\"hat-hard\"],\"f807\",\"M256 32c-17.7 0-32 14.3-32 32v2.3 99.6c0 5.6-4.5 10.1-10.1 10.1c-3.6 0-7-1.9-8.8-5.1L157.1 87C83 123.5 32 199.8 32 288v64H544l0-66.4c-.9-87.2-51.7-162.4-125.1-198.6l-48 83.9c-1.8 3.2-5.2 5.1-8.8 5.1c-5.6 0-10.1-4.5-10.1-10.1V66.3 64c0-17.7-14.3-32-32-32H256zM16.6 384C7.4 384 0 391.4 0 400.6c0 4.7 2 9.2 5.8 11.9C27.5 428.4 111.8 480 288 480s260.5-51.6 282.2-67.5c3.8-2.8 5.8-7.2 5.8-11.9c0-9.2-7.4-16.6-16.6-16.6H16.6z\"],eject:[448,512,[9167],\"f052\",\"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320H48c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48s-21.5 48-48 48H48c-26.5 0-48-21.5-48-48z\"],\"circle-right\":[512,512,[61838,\"arrow-alt-circle-right\"],\"f35a\",\"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 135.1l99.9 107.1c3.5 3.8 5.5 8.7 5.5 13.8s-2 10.1-5.5 13.8L294.6 376.9c-4.2 4.5-10.1 7.1-16.3 7.1C266 384 256 374 256 361.7l0-57.7-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-57.7c0-12.3 10-22.3 22.3-22.3c6.2 0 12.1 2.6 16.3 7.1z\"],\"plane-circle-check\":[640,512,[],\"e555\",\"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"],\"face-rolling-eyes\":[512,512,[128580,\"meh-rolling-eyes\"],\"f5a5\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 368H320c8.8 0 16 7.2 16 16s-7.2 16-16 16H192c-8.8 0-16-7.2-16-16s7.2-16 16-16zm32-144c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C208.5 175.6 224 198 224 224zm128 64c-35.3 0-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C400.5 175.6 416 198 416 224c0 35.3-28.7 64-64 64z\"],\"object-group\":[576,512,[],\"f247\",\"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H456.6C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM456.6 96H119.4c-5.6 9.7-13.7 17.8-23.4 23.4V392.6c9.7 5.6 17.8 13.7 23.4 23.4H456.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z\"],\"chart-line\":[512,512,[\"line-chart\"],\"f201\",\"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"],\"mask-ventilator\":[640,512,[],\"e524\",\"M159.1 176C139.4 219.2 128 264.7 128 300.8c0 15.9 2.2 31.4 6.3 46l-31.8-7.9C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H159.1zm26-48H56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l71.3 17.8c22.7 30.5 55.4 54.1 93.8 66.6V393.3c-19.7-16.4-32-40.3-32-66.9c0-49.5 43-134.4 96-134.4c52.5 0 96 84.9 96 134.4c0 26.7-12.4 50.4-32 66.8v76.6c38-12.6 70.6-36 93.5-66.4l71.6-17.9C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H454.5C419.7 73.8 372.1 32 320 32c-52.6 0-100.2 41.8-134.9 96zm295.6 48H584c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9l-31.8 8c4.2-14.7 6.4-30.1 6.4-46.1c0-36.1-11.6-81.6-31.3-124.8zM288 320V512h64V320c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"],\"arrow-right\":[448,512,[8594],\"f061\",\"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"],\"signs-post\":[512,512,[\"map-signs\"],\"f277\",\"M224 32H64C46.3 32 32 46.3 32 64v64c0 17.7 14.3 32 32 32H441.4c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7H288c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 256c0-17.7-14.3-32-32-32H288V192H224v32H70.6c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7H448c17.7 0 32-14.3 32-32V256zM288 480V384H224v96c0 17.7 14.3 32 32 32s32-14.3 32-32z\"],\"cash-register\":[512,512,[],\"f788\",\"M64 0C46.3 0 32 14.3 32 32V96c0 17.7 14.3 32 32 32h80v32H87c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V378.4c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160H208V128h80c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H64zM96 48H256c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 432c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm48-168a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm120-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM160 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM328 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM256 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM424 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM352 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48z\"],\"person-circle-question\":[576,512,[],\"e542\",\"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"],h:[384,512,[104],\"48\",\"M320 256l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192L64 192 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0z\"],tarp:[576,512,[],\"e57b\",\"M576 128c0-35.3-28.7-64-64-64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64l352 0 0-128c0-17.7 14.3-32 32-32H576V128zM448 448L576 320H448l0 128zM96 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"screwdriver-wrench\":[512,512,[\"tools\"],\"f7d9\",\"M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4h54.1l109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109V104c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7H352c-8.8 0-16-7.2-16-16V102.6c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM56 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"],\"arrows-to-eye\":[640,512,[],\"e4bf\",\"M15 15C24.4 5.7 39.6 5.7 49 15l63 63V40c0-13.3 10.7-24 24-24s24 10.7 24 24v96c0 13.3-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H78.1L15 49C5.7 39.6 5.7 24.4 15 15zM133.5 243.9C158.6 193.6 222.7 112 320 112s161.4 81.6 186.5 131.9c3.8 7.6 3.8 16.5 0 24.2C481.4 318.4 417.3 400 320 400s-161.4-81.6-186.5-131.9c-3.8-7.6-3.8-16.5 0-24.2zM320 320a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM591 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-63 63H600c13.3 0 24 10.7 24 24s-10.7 24-24 24H504c-13.3 0-24-10.7-24-24V40c0-13.3 10.7-24 24-24s24 10.7 24 24V78.1l63-63zM15 497c-9.4-9.4-9.4-24.6 0-33.9l63-63H40c-13.3 0-24-10.7-24-24s10.7-24 24-24h96c13.3 0 24 10.7 24 24v96c0 13.3-10.7 24-24 24s-24-10.7-24-24V433.9L49 497c-9.4 9.4-24.6 9.4-33.9 0zm576 0l-63-63V472c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H561.9l63 63c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"],\"plug-circle-bolt\":[576,512,[],\"e55b\",\"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"],heart:[512,512,[128153,128154,128155,128156,128420,129293,129294,129505,9829,10084,61578],\"f004\",\"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z\"],\"mars-and-venus\":[512,512,[9893],\"f224\",\"M337.8 14.8C341.5 5.8 350.3 0 360 0H472c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-24.7 24.7C407 163.3 416 192.6 416 224c0 80.2-59 146.6-136 158.2V408h24c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V456H208c-13.3 0-24-10.7-24-24s10.7-24 24-24h24V382.2C155 370.6 96 304.2 96 224c0-88.4 71.6-160 160-160c39.6 0 75.9 14.4 103.8 38.2L382.1 80 343 41c-6.9-6.9-8.9-17.2-5.2-26.2zM448 48l0 0h0v0zM352 224a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"],\"house-user\":[576,512,[\"home-user\"],\"e1b0\",\"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24zM352 224a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm-96 96c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H256z\"],\"dumpster-fire\":[640,512,[],\"f794\",\"M49.7 32l90.8 0L114.9 160l-94 0C9.3 160 0 150.7 0 139.1c0-2.1 .3-4.1 .9-6.1L26.8 48.9C29.9 38.9 39.2 32 49.7 32zM272 160l-124.5 0L173.1 32 272 32l0 128zm32 0l0-128 98.9 0 14.4 72.1c-1.7 1.1-3.3 2.4-4.8 3.8c-18.4 16.4-35.4 34-50.5 52.1l-58 0zm209.9-23.7c-1.7 1.6-3.4 3.2-5 4.8C498 129.6 486.7 118.6 475 108c-7.6-6.9-17-10.8-26.6-11.8L435.5 32l90.8 0c10.5 0 19.8 6.9 22.9 16.9L575.1 133c.2 .7 .4 1.4 .5 2.1c-17.8-15-44.3-14.6-61.7 1.2zM325.2 210.7C304.3 244.5 288 282.9 288 318.1c0 49.3 18.6 95.2 49.6 129.9L128 448c0 17.7-14.3 32-32 32s-32-14.3-32-32L44 288l-12 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l4 0-4-32 305.5 0c-4.4 6.2-8.5 12.5-12.3 18.7zm180.6-34.5L518 162.5c5.4-6.1 13.3-8.8 20.9-8.9c7.2 0 14.3 2.6 19.9 7.8c19.7 18.3 39.8 43.2 55 70.6C629 259.2 640 290.2 640 320.2C640 408.8 568.7 480 480 480c-89.6 0-160-71.3-160-159.8c0-37.3 16-73.4 36.8-104.5c20.9-31.3 47.5-59 70.9-80.2c5.7-5.2 13.1-7.7 20.3-7.5c14.1 .3 23.8 11.4 32.7 21.6c0 0 0 0 0 0c2 2.3 4 4.6 6 6.7l19 19.9zM544 368.2c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C453 295.1 416 331.6 416 368.2c0 35.3 28.7 64 64 64s64-28.7 64-64z\"],\"house-crack\":[576,512,[],\"e3b1\",\"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H230.4l-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L288 368l-60.2-82.8c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L288 448l38.4 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32z\"],\"martini-glass-citrus\":[576,512,[\"cocktail\"],\"f561\",\"M432 240c53 0 96-43 96-96s-43-96-96-96c-35.5 0-66.6 19.3-83.2 48H296.2C316 40.1 369.3 0 432 0c79.5 0 144 64.5 144 144s-64.5 144-144 144c-27.7 0-53.5-7.8-75.5-21.3l35.4-35.4c12.2 5.6 25.8 8.7 40.1 8.7zM1.8 142.8C5.5 133.8 14.3 128 24 128H392c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-177 177V464h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H208 120c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V345.9L7 169c-6.9-6.9-8.9-17.2-5.2-26.2z\"],\"face-surprise\":[512,512,[128558,\"surprise\"],\"f5c2\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"],\"bottle-water\":[320,512,[],\"e4c5\",\"M120 0l80 0c13.3 0 24 10.7 24 24l0 40L96 64l0-40c0-13.3 10.7-24 24-24zM32 167.5c0-19.5 10-37.6 26.6-47.9l15.8-9.9C88.7 100.7 105.2 96 122.1 96l75.8 0c16.9 0 33.4 4.7 47.7 13.7l15.8 9.9C278 129.9 288 148 288 167.5c0 17-7.5 32.3-19.4 42.6C280.6 221.7 288 238 288 256c0 19.1-8.4 36.3-21.7 48c13.3 11.7 21.7 28.9 21.7 48s-8.4 36.3-21.7 48c13.3 11.7 21.7 28.9 21.7 48c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64c0-19.1 8.4-36.3 21.7-48C40.4 388.3 32 371.1 32 352s8.4-36.3 21.7-48C40.4 292.3 32 275.1 32 256c0-18 7.4-34.3 19.4-45.9C39.5 199.7 32 184.5 32 167.5zM96 240c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0c-8.8 0-16 7.2-16 16zm16 112c-8.8 0-16 7.2-16 16s7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0z\"],\"circle-pause\":[512,512,[62092,\"pause-circle\"],\"f28b\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM224 192V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32z\"],\"toilet-paper-slash\":[640,512,[],\"e072\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-109.7-86C569.9 374 608 291.9 608 192C608 86 565 0 512 0s-96 86-96 192c0 49.1 9.2 93.9 24.4 127.9l-59-46.2c1.6-24.8 2.6-52 2.6-81.6c0-65.5 13.2-142.4 60.2-192H160c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM367.3 385.4L66.5 148.4C64.9 162.4 64 177 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512H285.9c22.3 0 45.4-12.1 55.4-36.1c7.4-17.7 17.5-47.2 26-90.6zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z\"],\"apple-whole\":[448,512,[127822,127823,\"apple-alt\"],\"f5d1\",\"M224 112c-8.8 0-16-7.2-16-16V80c0-44.2 35.8-80 80-80h16c8.8 0 16 7.2 16 16V32c0 44.2-35.8 80-80 80H224zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z\"],\"kitchen-set\":[576,512,[],\"e51a\",\"M240 144A96 96 0 1 0 48 144a96 96 0 1 0 192 0zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112h71.8c8.8-9.8 21.6-16 35.8-16H496c26.5 0 48 21.5 48 48s-21.5 48-48 48H392c-14.2 0-27-6.2-35.8-16H284.4zM144 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c13.3 0 24 10.7 24 24v8h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H280c-13.3 0-24-10.7-24-24s10.7-24 24-24h96v-8c0-13.3 10.7-24 24-24zM288 464V352H512V464c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48zM48 320h80 16 32c26.5 0 48 21.5 48 48s-21.5 48-48 48H160c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V336c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160v32h16zM24 464H200c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"],r:[320,512,[114],\"52\",\"M64 32C28.7 32 0 60.7 0 96V288 448c0 17.7 14.3 32 32 32s32-14.3 32-32V320h95.3L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144H64zM176 256H64V96H176c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"],\"temperature-quarter\":[320,512,[\"temperature-1\",\"thermometer-1\",\"thermometer-quarter\"],\"f2ca\",\"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"],cube:[512,512,[],\"f1b2\",\"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6V377.4c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4V134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1v-188L288 246.6v188z\"],\"bitcoin-sign\":[320,512,[],\"e0b4\",\"M48 32C48 14.3 62.3 0 80 0s32 14.3 32 32V64h32V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64c0 1.5-.1 3.1-.3 4.5C254.1 82.2 288 125.1 288 176c0 24.2-7.7 46.6-20.7 64.9c31.7 19.8 52.7 55 52.7 95.1c0 61.9-50.1 112-112 112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H41.7C18.7 448 0 429.3 0 406.3V288 265.7 224 101.6C0 80.8 16.8 64 37.6 64H48V32zM64 224H176c26.5 0 48-21.5 48-48s-21.5-48-48-48H64v96zm112 64H64v96H208c26.5 0 48-21.5 48-48s-21.5-48-48-48H176z\"],\"shield-dog\":[512,512,[],\"e573\",\"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8c35.3 0 64-28.7 64-64V160h44.2c12.1 0 23.2 6.8 28.6 17.7L320 192h64c8.8 0 16 7.2 16 16v32c0 44.2-35.8 80-80 80H272v50.7c0 7.3-5.9 13.3-13.3 13.3c-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4c0-2.8 .6-5.5 1.9-8l15-30zM160 160h40 8v32 32c0 17.7-14.3 32-32 32s-32-14.3-32-32V176c0-8.8 7.2-16 16-16zm128 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"],\"solar-panel\":[640,512,[],\"f5ba\",\"M122.2 0C91.7 0 65.5 21.5 59.5 51.4L8.3 307.4C.4 347 30.6 384 71 384H288v64H224c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H569c40.4 0 70.7-36.9 62.8-76.6l-51.2-256C574.5 21.5 548.3 0 517.8 0H122.2zM260.9 64H379.1l10.4 104h-139L260.9 64zM202.3 168H101.4L122.2 64h90.4L202.3 168zM91.8 216H197.5L187.1 320H71L91.8 216zm153.9 0H394.3l10.4 104-169.4 0 10.4-104zm196.8 0H548.2L569 320h-116L442.5 216zm96-48H437.7L427.3 64h90.4l31.4-6.3L517.8 64l20.8 104z\"],\"lock-open\":[576,512,[],\"f3c1\",\"M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z\"],elevator:[512,512,[],\"e16d\",\"M132.7 4.7l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H208c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H64zm96 96a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM80 400c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V400zm192 0c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32V400zm32-128a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM356.7 91.3c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5 0 432 0H304c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64z\"],\"money-bill-transfer\":[640,512,[],\"e528\",\"M535 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L384 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l174.1 0L535 41zM105 377l-23 23L256 400c13.3 0 24 10.7 24 24s-10.7 24-24 24L81.9 448l23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 441c-4.5-4.5-7-10.6-7-17s2.5-12.5 7-17l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM96 64H337.9c-3.7 7.2-5.9 15.3-5.9 24c0 28.7 23.3 52 52 52l117.4 0c-4 17 .6 35.5 13.8 48.8c20.3 20.3 53.2 20.3 73.5 0L608 169.5V384c0 35.3-28.7 64-64 64H302.1c3.7-7.2 5.9-15.3 5.9-24c0-28.7-23.3-52-52-52l-117.4 0c4-17-.6-35.5-13.8-48.8c-20.3-20.3-53.2-20.3-73.5 0L32 342.5V128c0-35.3 28.7-64 64-64zm64 64H96v64c35.3 0 64-28.7 64-64zM544 320c-35.3 0-64 28.7-64 64h64V320zM320 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"],\"money-bill-trend-up\":[512,512,[],\"e529\",\"M470.7 9.4c3 3.1 5.3 6.6 6.9 10.3s2.4 7.8 2.4 12.2l0 .1v0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3L310.6 214.6c-11.8 11.8-30.8 12.6-43.5 1.7L176 138.1 84.8 216.3c-13.4 11.5-33.6 9.9-45.1-3.5s-9.9-33.6 3.5-45.1l112-96c12-10.3 29.7-10.3 41.7 0l89.5 76.7L370.7 64H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0c8.8 0 16.8 3.6 22.6 9.3l.1 .1zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"],\"house-flood-water-circle-arrow-right\":[640,512,[],\"e50f\",\"M288 144A144 144 0 1 0 0 144a144 144 0 1 0 288 0zM140.7 76.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L169.4 160H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h89.4L140.7 99.3c-6.2-6.2-6.2-16.4 0-22.6zM320 144c0 57.3-27.4 108.2-69.8 140.3c11.8-3.6 23-9.4 33-16.2c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c2.1 1.7 4.2 3.3 6.5 4.9l-.3-84.4H576c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128C407.6-2 392.4-2 381.2 6.1L301 64.4c12.1 23.9 19 50.9 19 79.6zm18.5 165.9c-11.1-7.9-25.9-7.9-37 0C279 325.4 251.5 336 224 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 389.7 191 400 224 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C471.4 325.2 442.9 336 416 336c-27.5 0-55-10.6-77.5-26.1zm0 112c-11.1-7.9-25.9-7.9-37 0C279 437.4 251.5 448 224 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 501.7 191 512 224 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C471.4 437.2 442.9 448 416 448c-27.5 0-55-10.6-77.5-26.1z\"],\"square-poll-horizontal\":[448,512,[\"poll-h\"],\"f682\",\"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z\"],circle:[512,512,[128308,128309,128992,128993,128994,128995,128996,9679,9898,9899,11044,61708,61915],\"f111\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z\"],\"backward-fast\":[512,512,[9198,\"fast-backward\"],\"f049\",\"M493.6 445c-11.2 5.3-24.5 3.6-34.1-4.4L288 297.7V416c0 12.4-7.2 23.7-18.4 29s-24.5 3.6-34.1-4.4L64 297.7V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V214.3L235.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S288 83.6 288 96V214.3L459.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S512 83.6 512 96V416c0 12.4-7.2 23.7-18.4 29z\"],recycle:[512,512,[9842,9850,9851],\"f1b8\",\"M174.7 45.1C192.2 17 223 0 256 0s63.8 17 81.3 45.1l38.6 61.7 27-15.6c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3l-23.4 87.4c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l28.4-16.4L283 79c-5.8-9.3-16-15-27-15s-21.2 5.7-27 15l-17.5 28c-9.2 14.8-28.6 19.5-43.6 10.5c-15.3-9.2-20.2-29.2-10.7-44.4l17.5-28zM429.5 251.9c15-9 34.4-4.3 43.6 10.5l24.4 39.1c9.4 15.1 14.4 32.4 14.6 50.2c.3 53.1-42.7 96.4-95.8 96.4L320 448v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2v32l96.2 0c17.6 0 31.9-14.4 31.8-32c0-5.9-1.7-11.7-4.8-16.7l-24.4-39.1c-9.5-15.2-4.7-35.2 10.7-44.4zm-364.6-31L36 204.2c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20l87.4-23.4c12.8-3.4 26 4.2 29.4 17L182 241.2c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-26.5-15.3L68.8 335.3c-3.1 5-4.8 10.8-4.8 16.7c-.1 17.6 14.2 32 31.8 32l32.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.2 0C42.7 448-.3 404.8 0 351.6c.1-17.8 5.1-35.1 14.6-50.2l50.3-80.5z\"],\"user-astronaut\":[448,512,[],\"f4fb\",\"M370.7 96.1C346.1 39.5 289.7 0 224 0S101.9 39.5 77.3 96.1C60.9 97.5 48 111.2 48 128v64c0 16.8 12.9 30.5 29.3 31.9C101.9 280.5 158.3 320 224 320s122.1-39.5 146.7-96.1c16.4-1.4 29.3-15.1 29.3-31.9V128c0-16.8-12.9-30.5-29.3-31.9zM336 144v16c0 53-43 96-96 96H208c-53 0-96-43-96-96V144c0-26.5 21.5-48 48-48H288c26.5 0 48 21.5 48 48zM189.3 162.7l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM112.7 316.5C46.7 342.6 0 407 0 482.3C0 498.7 13.3 512 29.7 512H128V448c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64l98.3 0c16.4 0 29.7-13.3 29.7-29.7c0-75.3-46.7-139.7-112.7-165.8C303.9 338.8 265.5 352 224 352s-79.9-13.2-111.3-35.5zM176 448c-8.8 0-16 7.2-16 16v48h32V464c0-8.8-7.2-16-16-16zm96 32a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"],\"plane-slash\":[640,512,[],\"e069\",\"M440.6 320h73.8c34.2 0 93.7-28 93.7-64c0-35-59.5-64-93.7-64l-116.6 0L297.2 16.1C291.5 6.2 280.9 0 269.4 0H213.2c-10.6 0-18.3 10.2-15.4 20.4l40.3 140.9L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320zm-78.1 61.6L41.5 128.7C36 130.6 32 135.9 32 142c0 1.3 .2 2.6 .5 3.9L64 256 32.5 366.1c-.4 1.3-.5 2.6-.5 3.9c0 7.8 6.3 14 14 14H88c5 0 9.8-2.4 12.8-6.4L144 320H246.9l-49 171.6c-2.9 10.2 4.8 20.4 15.4 20.4l56.2 0c11.5 0 22.1-6.2 27.8-16.1l65.3-114.3z\"],trademark:[640,512,[8482],\"f25c\",\"M345.6 108.8c-8.3-11-22.7-15.5-35.7-11.2S288 114.2 288 128V384c0 17.7 14.3 32 32 32s32-14.3 32-32V224l86.4 115.2c6 8.1 15.5 12.8 25.6 12.8s19.6-4.7 25.6-12.8L576 224V384c0 17.7 14.3 32 32 32s32-14.3 32-32V128c0-13.8-8.8-26-21.9-30.4s-27.5 .1-35.7 11.2L464 266.7 345.6 108.8zM0 128c0 17.7 14.3 32 32 32H96V384c0 17.7 14.3 32 32 32s32-14.3 32-32V160h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32C14.3 96 0 110.3 0 128z\"],basketball:[512,512,[127936,\"basketball-ball\"],\"f434\",\"M86.6 64l85.2 85.2C194.5 121.7 208 86.4 208 48c0-14.7-2-28.9-5.7-42.4C158.6 15 119 35.5 86.6 64zM64 86.6C35.5 119 15 158.6 5.6 202.3C19.1 206 33.3 208 48 208c38.4 0 73.7-13.5 101.3-36.1L64 86.6zM256 0c-7.3 0-14.6 .3-21.8 .9C238 16 240 31.8 240 48c0 47.3-17.1 90.5-45.4 124L256 233.4 425.4 64C380.2 24.2 320.9 0 256 0zM48 240c-16.2 0-32-2-47.1-5.8C.3 241.4 0 248.7 0 256c0 64.9 24.2 124.2 64 169.4L233.4 256 172 194.6C138.5 222.9 95.3 240 48 240zm463.1 37.8c.6-7.2 .9-14.5 .9-21.8c0-64.9-24.2-124.2-64-169.4L278.6 256 340 317.4c33.4-28.3 76.7-45.4 124-45.4c16.2 0 32 2 47.1 5.8zm-4.7 31.9C492.9 306 478.7 304 464 304c-38.4 0-73.7 13.5-101.3 36.1L448 425.4c28.5-32.3 49.1-71.9 58.4-115.7zM340.1 362.7C317.5 390.3 304 425.6 304 464c0 14.7 2 28.9 5.7 42.4C353.4 497 393 476.5 425.4 448l-85.2-85.2zM317.4 340L256 278.6 86.6 448c45.1 39.8 104.4 64 169.4 64c7.3 0 14.6-.3 21.8-.9C274 496 272 480.2 272 464c0-47.3 17.1-90.5 45.4-124z\"],\"satellite-dish\":[512,512,[128225],\"f7c0\",\"M192 32c0-17.7 14.3-32 32-32C383.1 0 512 128.9 512 288c0 17.7-14.3 32-32 32s-32-14.3-32-32C448 164.3 347.7 64 224 64c-17.7 0-32-14.3-32-32zM60.6 220.6L164.7 324.7l28.4-28.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1l-28.4 28.4L291.4 451.4c14.5 14.5 11.8 38.8-7.3 46.3C260.5 506.9 234.9 512 208 512C93.1 512 0 418.9 0 304c0-26.9 5.1-52.5 14.4-76.1c7.5-19 31.8-21.8 46.3-7.3zM224 96c106 0 192 86 192 192c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-70.7-57.3-128-128-128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"],\"circle-up\":[512,512,[61467,\"arrow-alt-circle-up\"],\"f35b\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM135.1 217.4l107.1-99.9c3.8-3.5 8.7-5.5 13.8-5.5s10.1 2 13.8 5.5l107.1 99.9c4.5 4.2 7.1 10.1 7.1 16.3c0 12.3-10 22.3-22.3 22.3H304v96c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V256H150.3C138 256 128 246 128 233.7c0-6.2 2.6-12.1 7.1-16.3z\"],\"mobile-screen-button\":[384,512,[\"mobile-alt\"],\"f3cd\",\"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM224 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM304 64H80V384H304V64z\"],\"volume-high\":[640,512,[128266,\"volume-up\"],\"f028\",\"M533.6 32.5C598.5 85.2 640 165.8 640 256s-41.5 170.7-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"],\"users-rays\":[640,512,[],\"e593\",\"M41 7C31.6-2.3 16.4-2.3 7 7S-2.3 31.6 7 41l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41 7zM599 7L527 79c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7 505c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 471c-9.4 9.4-9.4 24.6 0 33.9zm592 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM212.1 336c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-.5-1.4-1-2.7-1.6-4c-9.4-22.3-29.8-38.9-54.3-43c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-.8 .1-1.7 .3-2.5 .5c-24.9 5.1-45.1 23-53.4 46.5zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"],wallet:[512,512,[],\"f555\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H80c-8.8 0-16-7.2-16-16s7.2-16 16-16H448c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM416 272a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"clipboard-check\":[384,512,[],\"f46c\",\"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"],\"file-audio\":[384,512,[],\"f1c7\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376H80c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h33.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z\"],burger:[512,512,[\"hamburger\"],\"f805\",\"M61.1 224C45 224 32 211 32 194.9c0-1.9 .2-3.7 .6-5.6C37.9 168.3 78.8 32 256 32s218.1 136.3 223.4 157.3c.5 1.9 .6 3.7 .6 5.6c0 16.1-13 29.1-29.1 29.1H61.1zM144 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm240 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM272 96a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM16 304c0-26.5 21.5-48 48-48H448c26.5 0 48 21.5 48 48s-21.5 48-48 48H64c-26.5 0-48-21.5-48-48zm16 96c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16v16c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V400z\"],wrench:[512,512,[128295],\"f0ad\",\"M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"],bugs:[576,512,[],\"e4d0\",\"M164.5 107.4l33.4-73.5c5.5-12.1 .1-26.3-11.9-31.8s-26.3-.1-31.8 11.9L128 71.7 101.9 14.1C96.4 2 82.1-3.3 70.1 2.1S52.7 21.9 58.1 33.9l33.4 73.5c-10.2 7.1-18.2 17-22.9 28.6h-17l-4.1-20.7c-2.6-13-15.2-21.4-28.2-18.8S-2.1 111.7 .5 124.7l8 40C10.7 175.9 20.6 184 32 184H64v23.3l-37.8 9.5c-9.5 2.4-16.6 10.2-17.9 19.9l-8 56c-1.9 13.1 7.2 25.3 20.4 27.2s25.3-7.2 27.2-20.4l5.7-40 18.4-4.6C82.7 274.6 103.8 288 128 288s45.3-13.4 56.1-33.2l18.4 4.6 5.7 40c1.9 13.1 14 22.2 27.2 20.4s22.2-14 20.4-27.2l-8-56c-1.4-9.7-8.5-17.5-17.9-19.9L192 207.3V184h32c11.4 0 21.3-8.1 23.5-19.3l8-40c2.6-13-5.8-25.6-18.8-28.2s-25.6 5.8-28.2 18.8L204.3 136h-17c-4.7-11.6-12.7-21.5-22.9-28.6zM496 286.5l65.6-47c10.8-7.7 13.3-22.7 5.6-33.5s-22.7-13.3-33.5-5.6l-51.4 36.8 6.1-62.9c1.3-13.2-8.4-24.9-21.6-26.2s-24.9 8.4-26.2 21.6L432.8 250c-12.3 1-24.2 5.6-34.1 13.3L384 254.8l6.8-20c4.2-12.6-2.5-26.2-15-30.4s-26.2 2.5-30.4 15l-13.1 38.6c-3.7 10.8 .8 22.8 10.7 28.5l27.7 16L359 322.7 321.5 312c-9.4-2.7-19.5 .6-25.5 8.3l-34.9 44.5c-8.2 10.4-6.4 25.5 4.1 33.7s25.5 6.4 33.7-4.1l25-31.8 18.2 5.2c-.5 22.6 11 44.7 32 56.8s45.9 11 65.2-.7l13.6 13.2-15.1 37.5c-4.9 12.3 1 26.3 13.3 31.2s26.3-1 31.2-13.3L503.5 440c3.6-9.1 1.4-19.4-5.6-26.2l-28-27.1 11.6-20.1 27.7 16c9.9 5.7 22.5 3.7 30-4.9L566.2 347c8.7-10 7.8-25.1-2.2-33.9s-25.1-7.8-33.9 2.2l-13.9 15.9-14.7-8.5c1.7-12.4-.2-25-5.5-36.2z\"],\"rupee-sign\":[448,512,[8360,\"rupee\"],\"f156\",\"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256.5 16.4c-.9 6 0 8.7 .4 9.8c.4 1.1 1.4 2.6 4.2 4.9c7.2 5.7 18.7 10 37.9 16.8l1.3 .5c16 5.6 38.7 13.6 55.7 28.1c9.5 8.1 17.9 18.6 23.1 32.3c5.1 13.7 6.1 28.5 3.8 44c-4.2 28.1-20.5 49.3-43.8 60.9c-22.1 11-48.1 12.5-73.2 8l-.2 0 0 0c-9.3-1.8-20.5-5.7-29.3-9c-6-2.3-12.6-4.9-17.7-6.9l0 0c-2.5-1-4.6-1.8-6.3-2.5c-16.5-6.4-24.6-25-18.2-41.4s24.9-24.6 41.4-18.2c2.6 1 5.2 2 7.9 3.1l0 0c4.8 1.9 9.8 3.9 15.4 6c8.8 3.3 15.3 5.4 18.7 6c15.7 2.8 26.7 .8 32.9-2.3c5-2.5 8-6 9.1-13c1-6.9 .2-10.5-.5-12.3c-.6-1.7-1.8-3.6-4.5-5.9c-6.9-5.8-18.2-10.4-36.9-17l-3-1.1c-15.5-5.4-37-13-53.3-25.9c-9.5-7.5-18.3-17.6-23.7-31c-5.5-13.4-6.6-28-4.4-43.2c8.4-57.1 67-78 116.9-68.9c6.9 1.3 27.3 5.8 35.4 8.4c16.9 5.2 26.3 23.2 21.1 40.1s-23.2 26.3-40.1 21.1c-4.7-1.4-22.3-5.5-27.9-6.5c-14.6-2.7-25.8-.4-32.6 3.2c-6.3 3.3-8.9 7.6-9.5 12z\"],\"file-image\":[384,512,[128443],\"f1c5\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm152 32c5.3 0 10.2 2.6 13.2 6.9l88 128c3.4 4.9 3.7 11.3 1 16.5s-8.2 8.6-14.2 8.6H216 176 128 80c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l48-80c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l12.8 21.4 48.3-70.2c3-4.3 7.9-6.9 13.2-6.9z\"],\"circle-question\":[512,512,[62108,\"question-circle\"],\"f059\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"],\"plane-departure\":[640,512,[128747],\"f5b0\",\"M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2H248.4c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48H542.8c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"],\"handshake-slash\":[640,512,[],\"e060\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.3-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM413.6 421.9L128 196.8V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6zM96 171.6L40.6 128H16c-8.8 0-16 7.2-16 16V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V171.6zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V144c0-8.8-7.2-16-16-16H544zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"],\"book-bookmark\":[448,512,[],\"e0bb\",\"M0 96C0 43 43 0 96 0h96V190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5V0h32 32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32z\"],\"code-branch\":[448,512,[],\"f126\",\"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3v87.8c18.8-10.9 40.7-17.1 64-17.1h96c35.3 0 64-28.7 64-64v-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V160c0 70.7-57.3 128-128 128H176c-35.3 0-64 28.7-64 64v6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V352 153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"],\"hat-cowboy\":[640,512,[],\"f8c0\",\"M320 64c14.4 0 22.3-7 30.8-14.4C360.4 41.1 370.7 32 392 32c49.3 0 84.4 152.2 97.9 221.9C447.8 272.1 390.9 288 320 288s-127.8-15.9-169.9-34.1C163.6 184.2 198.7 32 248 32c21.3 0 31.6 9.1 41.2 17.6C297.7 57 305.6 64 320 64zM111.1 270.7c47.2 24.5 117.5 49.3 209 49.3s161.8-24.8 208.9-49.3c24.8-12.9 49.8-28.3 70.1-47.7c7.9-7.9 20.2-9.2 29.6-3.3c9.5 5.9 13.5 17.9 9.9 28.5c-13.5 37.7-38.4 72.3-66.1 100.6C523.7 398.9 443.6 448 320 448s-203.6-49.1-252.5-99.2C39.8 320.4 14.9 285.8 1.4 248.1c-3.6-10.6 .4-22.6 9.9-28.5c9.5-5.9 21.7-4.5 29.6 3.3c20.4 19.4 45.3 34.8 70.1 47.7z\"],bridge:[576,512,[],\"e4c8\",\"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H72v64H0V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96s96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96V160H504V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM456 96v64H376V96h80zM328 96v64H248V96h80zM200 96v64H120V96h80z\"],\"phone-flip\":[512,512,[128381,\"phone-alt\"],\"f879\",\"M347.1 24.6c7.7-18.6 28-28.5 47.4-23.2l88 24C499.9 30.2 512 46 512 64c0 247.4-200.6 448-448 448c-18 0-33.8-12.1-38.6-29.5l-24-88c-5.3-19.4 4.6-39.7 23.2-47.4l96-40c16.3-6.8 35.2-2.1 46.3 11.6L207.3 368c70.4-33.3 127.4-90.3 160.7-160.7L318.7 167c-13.7-11.2-18.4-30-11.6-46.3l40-96z\"],\"truck-front\":[512,512,[],\"e2b7\",\"M0 80C0 35.8 35.8 0 80 0H432c44.2 0 80 35.8 80 80V368c0 26.2-12.6 49.4-32 64v48c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V432C12.6 417.4 0 394.2 0 368V80zm129.9 72.2L112 224H400l-17.9-71.8C378.5 138 365.7 128 351 128H161c-14.7 0-27.5 10-31 24.2zM128 320a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],cat:[576,512,[128008],\"f6be\",\"M320 192h17.1c22.1 38.3 63.5 64 110.9 64c11 0 21.8-1.4 32-4v4 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V339.2L280 448h56c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-53 0-96-43-96-96V192.5c0-16.1-12-29.8-28-31.8l-7.9-1c-17.5-2.2-30-18.2-27.8-35.7s18.2-30 35.7-27.8l7.9 1c48 6 84.1 46.8 84.1 95.3v85.3c34.4-51.7 93.2-85.8 160-85.8zm160 26.5v0c-10 3.5-20.8 5.5-32 5.5c-28.4 0-54-12.4-71.6-32h0c-3.7-4.1-7-8.5-9.9-13.2C357.3 164 352 146.6 352 128v0V32 12 10.7C352 4.8 356.7 .1 362.6 0h.2c3.3 0 6.4 1.6 8.4 4.2l0 .1L384 21.3l27.2 36.3L416 64h64l4.8-6.4L512 21.3 524.8 4.3l0-.1c2-2.6 5.1-4.2 8.4-4.2h.2C539.3 .1 544 4.8 544 10.7V12 32v96c0 17.3-4.6 33.6-12.6 47.6c-11.3 19.8-29.6 35.2-51.4 42.9zM432 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"],\"anchor-circle-exclamation\":[640,512,[],\"e4ab\",\"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"],\"truck-field\":[640,512,[],\"e58d\",\"M32 96c0-35.3 28.7-64 64-64H320c23.7 0 44.4 12.9 55.4 32h51.8c25.3 0 48.2 14.9 58.5 38l52.8 118.8c.5 1.1 .9 2.1 1.3 3.2H544c35.3 0 64 28.7 64 64v32c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V288c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32V96zM384 224h85.9l-42.7-96H384v96zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"],route:[512,512,[],\"f4d7\",\"M512 96c0 50.2-59.1 125.1-84.6 155c-3.8 4.4-9.4 6.1-14.5 5H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c53 0 96 43 96 96s-43 96-96 96H139.6c8.7-9.9 19.3-22.6 30-36.8c6.3-8.4 12.8-17.6 19-27.2H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-53 0-96-43-96-96s43-96 96-96h39.8c-21-31.5-39.8-67.7-39.8-96c0-53 43-96 96-96s96 43 96 96zM117.1 489.1c-3.8 4.3-7.2 8.1-10.1 11.3l-1.8 2-.2-.2c-6 4.6-14.6 4-20-1.8C59.8 473 0 402.5 0 352c0-53 43-96 96-96s96 43 96 96c0 30-21.1 67-43.5 97.9c-10.7 14.7-21.7 28-30.8 38.5l-.6 .7zM128 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"clipboard-question\":[384,512,[],\"e4e3\",\"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V314.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H158.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"],panorama:[640,512,[],\"e209\",\"M45.6 32C20.4 32 0 52.4 0 77.6V434.4C0 459.6 20.4 480 45.6 480c5.1 0 10-.8 14.7-2.4C74.6 472.8 177.6 440 320 440s245.4 32.8 259.6 37.6c4.7 1.6 9.7 2.4 14.7 2.4c25.2 0 45.6-20.4 45.6-45.6V77.6C640 52.4 619.6 32 594.4 32c-5 0-10 .8-14.7 2.4C565.4 39.2 462.4 72 320 72S74.6 39.2 60.4 34.4C55.6 32.8 50.7 32 45.6 32zM96 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm272 0c7.9 0 15.4 3.9 19.8 10.5L512.3 353c5.4 8 5.6 18.4 .4 26.5s-14.7 12.3-24.2 10.7C442.7 382.4 385.2 376 320 376c-65.6 0-123.4 6.5-169.3 14.4c-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L197.3 265c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l26.4 33.1 87-127.6c4.5-6.6 11.9-10.5 19.8-10.5z\"],\"comment-medical\":[512,512,[],\"f7f5\",\"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM224 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V272H176c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"],\"teeth-open\":[576,512,[],\"f62f\",\"M96 32C43 32 0 75 0 128v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-53-43-96-96-96H96zM224 96c26.5 0 48 21.5 48 48v56c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V144c0-26.5 21.5-48 48-48zm80 48c0-26.5 21.5-48 48-48s48 21.5 48 48v56c0 13.3-10.7 24-24 24H328c-13.3 0-24-10.7-24-24V144zM96 128c26.5 0 48 21.5 48 48v24c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V176c0-26.5 21.5-48 48-48zm336 48c0-26.5 21.5-48 48-48s48 21.5 48 48v24c0 13.3-10.7 24-24 24H456c-13.3 0-24-10.7-24-24V176zM96 480H480c53 0 96-43 96-96V352c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v32c0 53 43 96 96 96zm0-64c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48zm176 48c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48z\"],\"file-circle-minus\":[576,512,[],\"e4ed\",\"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"],tags:[512,512,[],\"f02c\",\"M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5V80C0 53.5 21.5 32 48 32H197.5c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"],\"wine-glass\":[320,512,[127863],\"f4e3\",\"M32.1 29.3C33.5 12.8 47.4 0 64 0H256c16.6 0 30.5 12.8 31.9 29.3l14 168.4c6 72-42.5 135.2-109.9 150.6V448h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H160 80c-17.7 0-32-14.3-32-32s14.3-32 32-32h48V348.4C60.6 333 12.1 269.8 18.1 197.8l14-168.4zm56 98.7H231.9l-5.3-64H93.4l-5.3 64z\"],\"forward-fast\":[512,512,[9197,\"fast-forward\"],\"f050\",\"M18.4 445c11.2 5.3 24.5 3.6 34.1-4.4L224 297.7V416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4L448 297.7V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96c0-17.7-14.3-32-32-32s-32 14.3-32 32V214.3L276.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S224 83.6 224 96V214.3L52.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S0 83.6 0 96V416c0 12.4 7.2 23.7 18.4 29z\"],\"face-meh-blank\":[512,512,[128566,\"meh-blank\"],\"f5a4\",\"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm208.4-48a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"square-parking\":[448,512,[127359,\"parking\"],\"f540\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM192 256h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H192v64zm48 64H192v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 168c0-22.1 17.9-40 40-40h72c53 0 96 43 96 96s-43 96-96 96z\"],\"house-signal\":[576,512,[],\"e012\",\"M357.7 8.5c-12.3-11.3-31.2-11.3-43.4 0l-208 192c-9.4 8.6-12.7 22-8.5 34c87.1 25.3 155.6 94.2 180.3 181.6H464c26.5 0 48-21.5 48-48V256h32c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8.1-35.2l-208-192zM288 208c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V208zM24 256c-13.3 0-24 10.7-24 24s10.7 24 24 24c101.6 0 184 82.4 184 184c0 13.3 10.7 24 24 24s24-10.7 24-24c0-128.1-103.9-232-232-232zm8 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM0 376c0 13.3 10.7 24 24 24c48.6 0 88 39.4 88 88c0 13.3 10.7 24 24 24s24-10.7 24-24c0-75.1-60.9-136-136-136c-13.3 0-24 10.7-24 24z\"],\"bars-progress\":[512,512,[\"tasks-alt\"],\"f828\",\"M448 160H320V128H448v32zM48 64C21.5 64 0 85.5 0 112v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zM448 352v32H192V352H448zM48 288c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H48z\"],\"faucet-drip\":[512,512,[128688],\"e006\",\"M224 0c17.7 0 32 14.3 32 32V44l96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12V32c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32h96l22.6-22.6c6-6 14.1-9.4 22.6-9.4H192V116.2l32-4 32 4V160h18.7c8.5 0 16.6 3.4 22.6 9.4L320 192h32c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32s-14.3-32-32-32H315.9c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48H32c-17.7 0-32-14.3-32-32V224zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V480c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z\"],\"cart-flatbed\":[640,512,[\"dolly-flatbed\"],\"f474\",\"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64H48c8.8 0 16 7.2 16 16V368c0 44.2 35.8 80 80 80h18.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H450.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H144c-8.8 0-16-7.2-16-16V80C128 35.8 92.2 0 48 0H32zM192 80V272c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H464V176c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L400 163.2l-39.1 26.1c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1V32H240c-26.5 0-48 21.5-48 48z\"],\"ban-smoking\":[512,512,[128685,\"smoking-ban\"],\"f54d\",\"M99.5 144.8L178.7 224l96 96 92.5 92.5C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32H384v32H333.3zm32 32H400c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H269.3L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM272 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16s7.2 16 16 16s16-7.2 16-16c0-26.5-21.5-48-48-48H304c-8.8 0-16-7.2-16-16s-7.2-16-16-16zM229.5 320l-96-96H112c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H229.5z\"],terminal:[576,512,[],\"f120\",\"M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"],\"mobile-button\":[384,512,[],\"f10b\",\"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zM192 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"house-medical-flag\":[640,512,[],\"e514\",\"M480 0c17.7 0 32 14.3 32 32H624c8.8 0 16 7.2 16 16V176c0 8.8-7.2 16-16 16H512V512H448V192 32c0-17.7 14.3-32 32-32zM276.8 39.7L416 159V512h1l-.2 0H96c-17.7 0-32-14.3-32-32V288H32c-13.4 0-25.4-8.3-30-20.9s-1-26.7 9.2-35.4l224-192c12-10.3 29.7-10.3 41.7 0zM224 208v48H176c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H288V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16z\"],\"basket-shopping\":[576,512,[\"shopping-basket\"],\"f291\",\"M253.3 35.1c6.1-11.8 1.5-26.3-10.2-32.4s-26.3-1.5-32.4 10.2L117.6 192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32L83.9 463.5C91 492 116.6 512 146 512H430c29.4 0 55-20 62.1-48.5L544 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H458.4L365.3 12.9C359.2 1.2 344.7-3.4 332.9 2.7s-16.3 20.6-10.2 32.4L404.3 192H171.7L253.3 35.1zM192 304v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16zm96-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"],tape:[576,512,[],\"f4db\",\"M380.8 416c41.5-40.7 67.2-97.3 67.2-160C448 132.3 347.7 32 224 32S0 132.3 0 256S100.3 480 224 480H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H380.8zM224 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm64 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"],\"bus-simple\":[448,512,[\"bus-alt\"],\"f55e\",\"M224 0C348.8 0 448 35.2 448 80V96 416c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32V96 80C0 35.2 99.2 0 224 0zM64 128V256c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],eye:[576,512,[128065],\"f06e\",\"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z\"],\"face-sad-cry\":[512,512,[128557,\"sad-cry\"],\"f5b3\",\"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V477.8C51.5 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 94.8-51.5 177.5-128 221.8V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V493.4zM195.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm121.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM208 336v32c0 26.5 21.5 48 48 48s48-21.5 48-48V336c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"],\"audio-description\":[576,512,[],\"f29e\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM213.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7l-9.4-18.9H150.9l-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zm-.4 106.6L192 237.7l-21.1 42.2h42.2zM304 184c0-13.3 10.7-24 24-24h56c53 0 96 43 96 96s-43 96-96 96H328c-13.3 0-24-10.7-24-24V184zm48 24v96h32c26.5 0 48-21.5 48-48s-21.5-48-48-48H352z\"],\"person-military-to-person\":[512,512,[],\"e54c\",\"M71 12.5c-8.6 1-15 8.2-15 16.8c0 9.3 7.5 16.8 16.7 16.9H184.1c8.8-.1 15.9-7.2 15.9-16V16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1H66.5C64.9 83.8 64 89.8 64 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256v32c0 17.7 14.3 32 32 32H192c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5V256c0-35.3-28.7-64-64-64H96c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32H448c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H352zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376v32l-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0v32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 2.9 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9s14.1-12.4 14.1-21.9l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"],\"file-shield\":[576,512,[],\"e4f0\",\"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v47l-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"],\"user-slash\":[640,512,[],\"f506\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L353.3 251.6C407.9 237 448 187.2 448 128C448 57.3 390.7 0 320 0C250.2 0 193.5 55.8 192 125.2L38.8 5.1zM264.3 304.3C170.5 309.4 96 387.2 96 482.3c0 16.4 13.3 29.7 29.7 29.7H514.3c3.9 0 7.6-.7 11-2.1l-261-205.6z\"],pen:[512,512,[128394],\"f304\",\"M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z\"],\"tower-observation\":[512,512,[],\"e586\",\"M241.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9C439 137.5 427.7 144 416 144v80c0 17.7-14.3 32-32 32h-4.9l32 192H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H384.5c-.4 0-.8 0-1.1 0H128.6c-.4 0-.8 0-1.1 0H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l32-192H128c-17.7 0-32-14.3-32-32V144c-11.7 0-23-6.5-28.6-17.7c-7.9-15.8-1.5-35 14.3-42.9l160-80zM314.5 448L256 399.2 197.5 448h117zM197.8 256l-4.7 28.3L256 336.8l62.9-52.5L314.2 256H197.8zm-13.9 83.2l-11.2 67L218.5 368l-34.6-28.8zM293.5 368l45.8 38.1-11.2-67L293.5 368zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176z\"],\"file-code\":[384,512,[],\"f1c9\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"],signal:[640,512,[128246,\"signal-5\",\"signal-perfect\"],\"f012\",\"M576 0c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM448 96c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM352 224V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zM192 288c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32zM96 416v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c0-17.7 14.3-32 32-32s32 14.3 32 32z\"],bus:[576,512,[128653],\"f207\",\"M288 0C422.4 0 512 35.2 512 80V96l0 32c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H192v32c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h0V96h0V80C64 35.2 153.6 0 288 0zM128 160v96c0 17.7 14.3 32 32 32H272V128H160c-17.7 0-32 14.3-32 32zM304 288H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H304V288zM144 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM384 80c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16s7.2 16 16 16H368c8.8 0 16-7.2 16-16z\"],\"heart-circle-xmark\":[576,512,[],\"e501\",\"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"],\"house-chimney\":[576,512,[63499,\"home-lg\"],\"e3af\",\"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v64 24c0 22.1 17.9 40 40 40h24 32.5c1.4 0 2.8 0 4.2-.1c1.1 .1 2.2 .1 3.3 .1h16c22.1 0 40-17.9 40-40V455.8c.3-2.6 .5-5.3 .5-8.1l-.7-160.2h32z\"],\"window-maximize\":[512,512,[128470],\"f2d0\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"],\"face-frown\":[512,512,[9785,\"frown\"],\"f119\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],prescription:[448,512,[],\"f5b1\",\"M32 0C14.3 0 0 14.3 0 32V192v96c0 17.7 14.3 32 32 32s32-14.3 32-32V224h50.7l128 128L137.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7l-85.8-85.8C251.4 209.1 288 164.8 288 112C288 50.1 237.9 0 176 0H32zM176 160H64V64H176c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"],shop:[640,512,[\"store-alt\"],\"f54f\",\"M36.8 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM64 224V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 224H320V384H128V224H64zm448 0V480c0 17.7 14.3 32 32 32s32-14.3 32-32V224H512z\"],\"floppy-disk\":[448,512,[128190,128426,\"save\"],\"f0c7\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"],vihara:[640,512,[],\"f6a7\",\"M281 22L305.8 4.7c1.3-.9 2.7-1.8 4.1-2.4C313.1 .7 316.6 0 320 0s6.9 .7 10.1 2.2c1.4 .7 2.8 1.5 4.1 2.4L359 22C393 45.8 430.8 63.5 470.8 74.4l23 6.3c1.8 .5 3.6 1.1 5.2 2c3.2 1.7 5.9 4 8.1 6.8c3.8 4.9 5.6 11.3 4.7 17.8c-.4 2.8-1.2 5.4-2.5 7.8c-1.7 3.2-4 5.9-6.8 8.1c-4.3 3.2-9.6 5.1-15.1 4.9H480v56.1l6.4 5.1 5.2 4.1c21.1 16.7 45 29.6 70.5 38.1l28.9 9.6c1.6 .5 3.2 1.2 4.6 2c3.1 1.7 5.8 4.1 7.8 6.9s3.5 6.1 4.1 9.6c.5 2.7 .6 5.5 .1 8.3s-1.4 5.4-2.7 7.8c-1.7 3.1-4.1 5.8-6.9 7.8s-6.1 3.5-9.6 4.1c-1.6 .3-3.3 .4-5 .4H544v65.9c20.5 22.8 47.4 39.2 77.4 46.7C632 403 640 412.6 640 424c0 13.3-10.7 24-24 24H576v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H24c-13.3 0-24-10.7-24-24c0-11.4 8-21 18.6-23.4c30-7.6 56.9-23.9 77.4-46.7V288H56.6c-1.7 0-3.4-.1-5-.4c-3.5-.7-6.8-2.1-9.6-4.1s-5.2-4.7-7-7.8c-1.3-2.4-2.3-5-2.7-7.8s-.4-5.6 .1-8.3c.7-3.5 2.1-6.8 4.1-9.6s4.7-5.2 7.8-6.9c1.4-.8 3-1.5 4.6-2l28.9-9.6c25.5-8.5 49.4-21.4 70.5-38.1l5.2-4.1 6.4-5.1V176 128h-7.5c-5.5 .1-10.8-1.7-15.1-4.9c-2.8-2.1-5.1-4.8-6.8-8.1c-1.2-2.4-2.1-5-2.5-7.8c-.9-6.5 .9-12.8 4.7-17.8c2.1-2.8 4.8-5.1 8.1-6.8c1.6-.8 3.4-1.5 5.2-2l23-6.3C209.2 63.5 247 45.8 281 22zM416 128H320 224v64h72 48 72V128zM160 288v64H296h24 24H480V288H344 320h0H296 160z\"],\"scale-unbalanced\":[640,512,[\"balance-scale-left\"],\"f515\",\"M522.1 62.4c16.8-5.6 25.8-23.7 20.2-40.5S518.6-3.9 501.9 1.6l-113 37.7C375 15.8 349.3 0 320 0c-44.2 0-80 35.8-80 80c0 3 .2 5.9 .5 8.8L117.9 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2V480c0 17.7 14.3 32 32 32H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V153.3c21-9.2 37.2-27 44.2-49l125.9-42zM439.6 288L512 163.8 584.4 288H439.6zM512 384c62.9 0 115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L536.1 109.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L392.7 273.1c-5.7 9.8-9.3 21.1-6.7 32.1C396.8 350 449.1 384 512 384zM129.2 291.8L201.6 416H56.7l72.4-124.2zM3.2 433.1C14 478 66.3 512 129.2 512s115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L153.2 237.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L9.9 401.1c-5.7 9.8-9.3 21.1-6.7 32.1z\"],\"sort-up\":[320,512,[\"sort-asc\"],\"f0de\",\"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"],\"comment-dots\":[512,512,[128172,62075,\"commenting\"],\"f4ad\",\"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"],\"plant-wilt\":[512,512,[],\"e5aa\",\"M288 120c0-30.9 25.1-56 56-56s56 25.1 56 56v13c-29.3 10-48 34.5-48 70.1c0 27.9 25.3 74.8 66 111.6c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V120C464 53.7 410.3 0 344 0S224 53.7 224 120v21.8C207.3 133 188.2 128 168 128c-66.3 0-120 53.7-120 120v13c-29.3 10-48 34.5-48 70.1C0 359 25.3 405.9 66 442.7c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V248c0-30.9 25.1-56 56-56s56 25.1 56 56v32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V280 248 120z\"],diamond:[512,512,[9830],\"f219\",\"M284.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z\"],\"face-grin-squint\":[512,512,[128518,\"grin-squint\"],\"f585\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM133.5 146.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"],\"hand-holding-dollar\":[576,512,[\"hand-holding-usd\"],\"f4c0\",\"M312 24V34.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8V232c0 13.3-10.7 24-24 24s-24-10.7-24-24V220.6c-9.5-2.3-18.2-5.3-25.6-7.8c-2.1-.7-4.1-1.4-6-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"],bacterium:[512,512,[],\"e05a\",\"M423.1 30.6c3.6-12.7-3.7-26-16.5-29.7s-26 3.7-29.7 16.5l-4.2 14.7c-9.8-.4-19.9 .5-29.9 2.8c-12.1 2.8-23.7 5.9-34.9 9.4l-5.9-13.7c-5.2-12.2-19.3-17.8-31.5-12.6s-17.8 19.3-12.6 31.5l4.9 11.3c-22 9.4-42 20.1-60.2 31.8L196 82.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l7.8 11.6c-18 15-33.7 30.8-47.3 47.1L103 157.3c-10.4-8.3-25.5-6.6-33.7 3.7s-6.6 25.5 3.7 33.7l15 12c-2.1 3.2-4.1 6.5-6 9.7c-9.4 15.7-17 31-23.2 45.3l-9.9-3.9c-12.3-4.9-26.3 1.1-31.2 13.4s1.1 26.3 13.4 31.2l11.6 4.6c-.3 1.1-.6 2.1-.9 3.1c-3.5 12.5-5.7 23.2-7.1 31.3c-.7 4.1-1.2 7.5-1.6 10.3c-.2 1.4-.3 2.6-.4 3.6l-.1 1.4-.1 .6 0 .3 0 .1c0 0 0 .1 39.2 3.7l0 0-39.2-3.6c-.5 5-.6 10-.4 14.9l-14.7 4.2C4.7 380.6-2.7 393.8 .9 406.6s16.9 20.1 29.7 16.5l13.8-3.9c10.6 20.7 27.6 37.8 48.5 48.5l-3.9 13.7c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5l4.2-14.7c23.8 1 46.3-5.5 65.1-17.6L215 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c9.1-14.1 15.1-30.5 17-48.3l.1-.8c.3-1.7 1-5.1 2.3-9.8l.2-.8 12.6 5.4c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-11.3-4.8c9.9-14.9 24.9-31.6 48.6-46l2.1 7.5c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7L371 259.2c6.9-2.2 14.3-4.3 22.2-6.1c12.9-3 24.7-8 35.2-14.8L439 249c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c12.2-19 18.6-41.6 17.6-65.1l14.7-4.2c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5l-13.7 3.9c-10.8-21.2-28-38-48.5-48.5l3.9-13.8zM92.1 363.3l0 0L144 368l-51.9-4.7zM112 320a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM240 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"],\"hand-pointer\":[448,512,[],\"f25a\",\"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40V188.2c8.5-7.6 19.7-12.2 32-12.2c20.6 0 38.2 13 45 31.2c8.8-9.3 21.2-15.2 35-15.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48v48 16 48c0 70.7-57.3 128-128 128l-16 0H240l-.1 0h-5.2c-5 0-9.9-.3-14.7-1c-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7V40zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z\"],\"drum-steelpan\":[576,512,[],\"f56a\",\"M288 32c159.1 0 288 48 288 128V352c0 80-128.9 128-288 128S0 432 0 352V160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8c-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4c0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5c47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4C56 130.1 48 150.1 48 160s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5c0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8C224.5 87 224 91.5 224 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2C330.8 81 309.8 80 288 80s-42.8 1-62.6 2.8z\"],\"hand-scissors\":[512,512,[],\"f257\",\"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9l0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"],\"hands-praying\":[640,512,[\"praying-hands\"],\"f684\",\"M351.2 4.8c3.2-2 6.6-3.3 10-4.1c4.7-1 9.6-.9 14.1 .1c7.7 1.8 14.8 6.5 19.4 13.6L514.6 194.2c8.8 13.1 13.4 28.6 13.4 44.4v73.5c0 6.9 4.4 13 10.9 15.2l79.2 26.4C631.2 358 640 370.2 640 384v96c0 9.9-4.6 19.3-12.5 25.4s-18.1 8.1-27.7 5.5L431 465.9c-56-14.9-95-65.7-95-123.7V224c0-17.7 14.3-32 32-32s32 14.3 32 32v80c0 8.8 7.2 16 16 16s16-7.2 16-16V219.1c0-7-1.8-13.8-5.3-19.8L340.3 48.1c-1.7-3-2.9-6.1-3.6-9.3c-1-4.7-1-9.6 .1-14.1c1.9-8 6.8-15.2 14.3-19.9zm-62.4 0c7.5 4.6 12.4 11.9 14.3 19.9c1.1 4.6 1.2 9.4 .1 14.1c-.7 3.2-1.9 6.3-3.6 9.3L213.3 199.3c-3.5 6-5.3 12.9-5.3 19.8V304c0 8.8 7.2 16 16 16s16-7.2 16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32V342.3c0 58-39 108.7-95 123.7l-168.7 45c-9.6 2.6-19.9 .5-27.7-5.5S0 490 0 480V384c0-13.8 8.8-26 21.9-30.4l79.2-26.4c6.5-2.2 10.9-8.3 10.9-15.2V238.5c0-15.8 4.7-31.2 13.4-44.4L245.2 14.5c4.6-7.1 11.7-11.8 19.4-13.6c4.6-1.1 9.4-1.2 14.1-.1c3.5 .8 6.9 2.1 10 4.1z\"],\"arrow-rotate-right\":[512,512,[8635,\"arrow-right-rotate\",\"arrow-rotate-forward\",\"redo\"],\"f01e\",\"M386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H464c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z\"],biohazard:[576,512,[9763],\"f780\",\"M173.2 0c-1.8 0-3.5 .7-4.8 2C138.5 32.3 120 74 120 120c0 26.2 6 50.9 16.6 73c-22 2.4-43.8 9.1-64.2 20.5C37.9 232.8 13.3 262.4 .4 296c-.7 1.7-.5 3.7 .5 5.2c2.2 3.7 7.4 4.3 10.6 1.3C64.2 254.3 158 245.1 205 324s-8.1 153.1-77.6 173.2c-4.2 1.2-6.3 5.9-4.1 9.6c1 1.6 2.6 2.7 4.5 3c36.5 5.9 75.2 .1 109.7-19.2c20.4-11.4 37.4-26.5 50.5-43.8c13.1 17.3 30.1 32.4 50.5 43.8c34.5 19.3 73.3 25.2 109.7 19.2c1.9-.3 3.5-1.4 4.5-3c2.2-3.7 .1-8.4-4.1-9.6C379.1 477.1 324 403 371 324s140.7-69.8 193.5-21.4c3.2 2.9 8.4 2.3 10.6-1.3c1-1.6 1.1-3.5 .5-5.2c-12.9-33.6-37.5-63.2-72.1-82.5c-20.4-11.4-42.2-18.1-64.2-20.5C450 170.9 456 146.2 456 120c0-46-18.5-87.7-48.4-118c-1.3-1.3-3-2-4.8-2c-5 0-8.4 5.2-6.7 9.9C421.7 80.5 385.6 176 288 176S154.3 80.5 179.9 9.9c1.7-4.7-1.6-9.9-6.7-9.9zM240 272a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM181.7 417.6c6.3-11.8 9.8-25.1 8.6-39.8c-19.5-18-34-41.4-41.2-67.8c-12.5-8.1-26.2-11.8-40-12.4c-9-.4-18.1 .6-27.1 2.7c7.8 57.1 38.7 106.8 82.9 139.4c6.8-6.7 12.6-14.1 16.8-22.1zM288 64c-28.8 0-56.3 5.9-81.2 16.5c2 8.3 5 16.2 9 23.5c6.8 12.4 16.7 23.1 30.1 30.3c13.3-4.1 27.5-6.3 42.2-6.3s28.8 2.2 42.2 6.3c13.4-7.2 23.3-17.9 30.1-30.3c4-7.3 7-15.2 9-23.5C344.3 69.9 316.8 64 288 64zM426.9 310c-7.2 26.4-21.7 49.7-41.2 67.8c-1.2 14.7 2.2 28.1 8.6 39.8c4.3 8 10 15.4 16.8 22.1c44.3-32.6 75.2-82.3 82.9-139.4c-9-2.2-18.1-3.1-27.1-2.7c-13.8 .6-27.5 4.4-40 12.4z\"],\"location-crosshairs\":[512,512,[\"location\"],\"f601\",\"M256 0c17.7 0 32 14.3 32 32V66.7C368.4 80.1 431.9 143.6 445.3 224H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H445.3C431.9 368.4 368.4 431.9 288 445.3V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C143.6 431.9 80.1 368.4 66.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H66.7C80.1 143.6 143.6 80.1 224 66.7V32c0-17.7 14.3-32 32-32zM128 256a128 128 0 1 0 256 0 128 128 0 1 0 -256 0zm128-80a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"],\"mars-double\":[640,512,[9891],\"f227\",\"M312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L275.8 159c-28.4-19.5-62.7-31-99.8-31C78.8 128 0 206.8 0 304s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L407 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312zm88 48h0v0l0 0zM64 304a112 112 0 1 1 224 0A112 112 0 1 1 64 304zM368 480c97.2 0 176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L599 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H504c-9.7 0-18.5 5.8-22.2 14.8c-1.2 2.9-1.8 6-1.8 9l0 .2v.2c0 6.2 2.5 12.2 7 16.8l33.4 33.4L480 146.7V168c0 22.6-13.6 43.1-34.6 51.7c-.8 .3-1.7 .7-2.5 1C465.7 241.2 480 270.9 480 304c0 61.9-50.1 112-112 112c-5.4 0-10.8-.4-16-1.1c-12.9 20.4-29.1 38.3-48.1 53.1c19.8 7.8 41.4 12 64 12z\"],\"child-dress\":[320,512,[],\"e59c\",\"M224 64A64 64 0 1 0 96 64a64 64 0 1 0 128 0zM88 400v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h16v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h17.8c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.6 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2l28.7-37.8L55 378.9C51.6 389.3 59.3 400 70.2 400H88z\"],\"users-between-lines\":[640,512,[],\"e591\",\"M0 24C0 10.7 10.7 0 24 0H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24C10.7 48 0 37.3 0 24zM0 488c0-13.3 10.7-24 24-24H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zM83.2 160a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 320c0-35.3 28.7-64 64-64h96c12.2 0 23.7 3.4 33.4 9.4c-37.2 15.1-65.6 47.2-75.8 86.6H64c-17.7 0-32-14.3-32-32zm461.6 32c-10.3-40.1-39.6-72.6-77.7-87.4c9.4-5.5 20.4-8.6 32.1-8.6h96c35.3 0 64 28.7 64 64c0 17.7-14.3 32-32 32H493.6zM391.2 290.4c32.1 7.4 58.1 30.9 68.9 61.6c3.5 10 5.5 20.8 5.5 32c0 17.7-14.3 32-32 32h-224c-17.7 0-32-14.3-32-32c0-11.2 1.9-22 5.5-32c10.5-29.7 35.3-52.8 66.1-60.9c7.8-2.1 16-3.1 24.5-3.1h96c7.4 0 14.7 .8 21.6 2.4zm44-130.4a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM321.6 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"],\"lungs-virus\":[640,512,[],\"e067\",\"M320 0c17.7 0 32 14.3 32 32V156.2c-8.5-7.6-19.7-12.2-32-12.2s-23.5 4.6-32 12.2V32c0-17.7 14.3-32 32-32zM444.5 195.5c-16.4-16.4-41.8-18.5-60.5-6.1V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2c-20.9-5.2-38.7-17.1-51.5-32.9c14 1.5 28.5-3 39.2-13.8l-22.6-22.6 22.6 22.6c18.7-18.7 18.7-49.1 0-67.9c-1.1-1.1-1.4-2-1.5-2.5c-.1-.8-.1-1.8 .4-2.9s1.2-1.9 1.8-2.3c.5-.3 1.3-.8 2.9-.8c26.5 0 48-21.5 48-48s-21.5-48-48-48c-1.6 0-2.4-.4-2.9-.8c-.6-.4-1.3-1.2-1.8-2.3s-.5-2.2-.4-2.9c.1-.6 .4-1.4 1.5-2.5c18.7-18.7 18.7-49.1 0-67.9zM421.8 421.8c-6.2 6.2-16.4 6.2-22.6 0C375.9 398.5 336 415 336 448c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C241.5 375.9 225 336 192 336c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C264.1 241.5 304 225 304 192c0-8.8 7.2-16 16-16s16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C398.5 264.1 415 304 448 304c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6zM183.3 491.2l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v24.1c-18.6-12.4-44-10.3-60.5 6.1c-18.7 18.7-18.7 49.1 0 67.9c1.1 1.1 1.4 2 1.5 2.5c.1 .8 .1 1.8-.4 2.9s-1.2 1.9-1.8 2.3c-.5 .3-1.3 .8-2.9 .8c-26.5 0-48 21.5-48 48s21.5 48 48 48c1.6 0 2.4 .4 2.9 .8c.6 .4 1.3 1.2 1.8 2.3s.5 2.2 .4 2.9c-.1 .6-.4 1.4-1.5 2.5c-18.7 18.7-18.7 49.1 0 67.9c10.7 10.7 25.3 15.3 39.2 13.8c-12.8 15.9-30.6 27.7-51.5 32.9zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"],\"face-grin-tears\":[640,512,[128514,\"grin-tears\"],\"f588\",\"M548.6 371.4C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c3.6-8.8 6.5-18.4 8.8-27.5c4.6-18.2 7.7-37 9.3-48.2c3.9-26.5-18.8-49.2-45.2-45.4c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-26.5-3.9-49.2 18.8-45.2 45.4c1.6 11.3 4.6 30 9.3 48.2c2.3 9.1 5.2 18.8 8.8 27.5c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3zM107 254.1c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9zm454.5 87.1c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zm-90.1-9.7c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM281.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C190.7 188.4 184 206.1 184 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C350.7 188.4 344 206.1 344 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z\"],phone:[512,512,[128222,128379],\"f095\",\"M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z\"],\"calendar-xmark\":[448,512,[\"calendar-times\"],\"f273\",\"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM305 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z\"],\"child-reaching\":[384,512,[],\"e59d\",\"M256 64A64 64 0 1 0 128 64a64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384h32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V221.6c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z\"],\"head-side-virus\":[512,512,[],\"e064\",\"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM224 64c-8.8 0-16 7.2-16 16c0 33-39.9 49.5-63.2 26.2c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6C145.5 152.1 129 192 96 192c-8.8 0-16 7.2-16 16s7.2 16 16 16c33 0 49.5 39.9 26.2 63.2c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0C168.1 286.5 208 303 208 336c0 8.8 7.2 16 16 16s16-7.2 16-16c0-33 39.9-49.5 63.2-26.2c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6C302.5 263.9 319 224 352 224c8.8 0 16-7.2 16-16s-7.2-16-16-16c-33 0-49.5-39.9-26.2-63.2c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0C279.9 129.5 240 113 240 80c0-8.8-7.2-16-16-16zm-24 96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"],\"user-gear\":[640,512,[\"user-cog\"],\"f4fe\",\"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7v.9c0 9.2 2.7 18.5 7.9 26.3H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8v17.7c0 7.8 4.8 14.8 11.6 18.7c6.8 3.9 15.1 4.5 21.8 .6l13.8-7.9c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-14.4 8.3c-6.5 3.7-10 10.9-10 18.4s3.5 14.7 10 18.4l14.4 8.3c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-13.8-7.9c-6.7-3.9-15.1-3.3-21.8 .6c-6.8 3.9-11.6 10.9-11.6 18.7v17.7c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8V467.8c0-7.9-4.9-14.9-11.7-18.9c-6.8-3.9-15.2-4.5-22-.6l-13.5 7.8c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l14-8.1c6.5-3.8 10.1-11.1 10.1-18.6s-3.5-14.8-10.1-18.6l-14-8.1c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l13.6 7.8c6.8 3.9 15.2 3.3 22-.6c6.9-3.9 11.7-11 11.7-18.9V218.2zm92.1 133.5a48.1 48.1 0 1 0 -96.1 0 48.1 48.1 0 1 0 96.1 0z\"],\"arrow-up-1-9\":[576,512,[\"sort-numeric-up\"],\"f163\",\"M450.7 38c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V108.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM445.7 364.9A32 32 0 1 0 418.3 307a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"],\"door-closed\":[576,512,[128682],\"f52a\",\"M96 64c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V448h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 144 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96V64zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"shield-virus\":[512,512,[],\"e06c\",\"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 112c8.8 0 16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C334.5 200.1 351 240 384 240c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C311.9 334.5 272 351 272 384c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C177.5 311.9 161 272 128 272c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C200.1 177.5 240 161 240 128c0-8.8 7.2-16 16-16zM232 256a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"],\"dice-six\":[448,512,[9861],\"f526\",\"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"mosquito-net\":[640,512,[],\"e52c\",\"M168.8 462.3c-7.9-4-11.1-13.6-7.2-21.5L192 380.2l0-44.2c0-4.2 1.7-8.3 4.7-11.3L256 265.4V242.2L139.2 344C87.8 395.3 0 358.9 0 286.3c0-41.1 30.6-75.8 71.4-80.9l159.9-23.9-49.6-41.3c-5.1-4.2-7-11.1-4.9-17.4l13.9-41.7-29-58.1c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l32 64c1.9 3.8 2.2 8.2 .9 12.2l-12.5 37.6L256 160.5V137.9c0-14.9 10.1-27.3 23.8-31V63.7c0-4.5 3.7-8.2 8.2-8.2s8.2 3.7 8.2 8.2V107c13.7 3.6 23.8 16.1 23.8 31v22.6l45.4-37.8L352.8 85.1c-1.3-4-1-8.4 .9-12.2l32-64c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-29 58.1 13.9 41.7c2.1 6.2 .1 13.1-4.9 17.4l-49.6 41.3 159.9 23.9c22.5 2.8 41.8 14.6 54.7 31.4c-2.7 2.6-5.2 5.4-7.3 8.6c-8.6-12.9-23.3-21.5-40-21.5s-31.4 8.5-40 21.5c-8.6-12.9-23.3-21.5-40-21.5c-21.7 0-40 14.3-45.9 34.1c-10.7 3.2-19.8 10.1-25.9 19.2l-40.2-35v23.1l32.4 32.4c-.3 2-.4 4.1-.4 6.2c0 16.7 8.5 31.4 21.5 40c-4 2.6-7.5 5.9-10.6 9.5L320 310.6v50c0 17.7-14.3 32-32 32s-32-14.3-32-32v-50l-32 32 0 41.4c0 2.5-.6 4.9-1.7 7.2l-32 64c-4 7.9-13.6 11.1-21.5 7.2zM512 256c8.8 0 16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H528v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H448v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V400H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V320H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16zm16 112h48V320H528v48zm0 80h48V400H528v48zM448 320v48h48V320H448zm0 80v48h48V400H448z\"],\"bridge-water\":[576,512,[],\"e4ce\",\"M0 96C0 78.3 14.3 64 32 64H544c17.7 0 32 14.3 32 32v35.6c0 15.7-12.7 28.4-28.4 28.4c-37.3 0-67.6 30.2-67.6 67.6V352.5c-12.9 0-25.8 3.9-36.8 11.7c-18 12.4-40.1 20.3-59.2 20.3h0l0-.5V256c0-53-43-96-96-96s-96 43-96 96V384l0 .5c-19 0-41.2-7.9-59.1-20.3c-11.1-7.8-24-11.7-36.9-11.7V227.6C96 190.2 65.8 160 28.4 160C12.7 160 0 147.3 0 131.6V96zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"],\"person-booth\":[576,512,[],\"f756\",\"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64V32zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM224 512c17.7 0 32-14.3 32-32V320H192V480c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM112 80A48 48 0 1 0 16 80a48 48 0 1 0 96 0zm0 261.3V269.3l4.7 4.7c9 9 21.2 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H157.3l-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6v55.7l0 .9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384l32 42.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V421.3c0-10.4-3.4-20.5-9.6-28.8L112 341.3z\"],\"text-width\":[448,512,[],\"f035\",\"M64 128V96H192l0 128H176c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H256l0-128H384v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H224 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V416H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H128V320c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"],\"hat-wizard\":[512,512,[],\"f6e8\",\"M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6v1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416H240.9l11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416H64zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"],\"pen-fancy\":[512,512,[128395,10002],\"f5ac\",\"M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.4 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z\"],\"person-digging\":[576,512,[\"digging\"],\"f85e\",\"M208 64a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2H288c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7h32l22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V405.1l-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z\"],trash:[448,512,[],\"f1f8\",\"M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z\"],\"gauge-simple\":[512,512,[\"gauge-simple-med\",\"tachometer-average\"],\"f629\",\"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64z\"],\"book-medical\":[448,512,[],\"f7e6\",\"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM208 112v48H160c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h48c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16z\"],poo:[512,512,[128169],\"f2fe\",\"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1c0 44.1-35.7 79.9-79.8 80H160c-35.3 0-64 28.7-64 64c0 19.1 8.4 36.3 21.7 48H104c-39.8 0-72 32.2-72 72c0 23.2 11 43.8 28 57c-34.1 5.7-60 35.3-60 71c0 39.8 32.2 72 72 72H440c39.8 0 72-32.2 72-72c0-35.7-25.9-65.3-60-71c17-13.2 28-33.8 28-57c0-39.8-32.2-72-72-72H394.3c13.3-11.7 21.7-28.9 21.7-48c0-35.3-28.7-64-64-64h-5.5c3.5-10 5.5-20.8 5.5-32c0-48.6-36.2-88.8-83.1-95.1zM192 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm64 108.3c0 2.4-.7 4.8-2.2 6.7c-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7c0-6.8 5.5-12.3 12.3-12.3H339.7c6.8 0 12.3 5.5 12.3 12.3z\"],\"quote-right\":[448,512,[8221,\"quote-right-alt\"],\"f10e\",\"M448 296c0 66.3-53.7 120-120 120h-8c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H320c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72zm-256 0c0 66.3-53.7 120-120 120H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72z\"],shirt:[640,512,[128085,\"t-shirt\",\"tshirt\"],\"f553\",\"M211.8 0c7.8 0 14.3 5.7 16.7 13.2C240.8 51.9 277.1 80 320 80s79.2-28.1 91.5-66.8C413.9 5.7 420.4 0 428.2 0h12.6c22.5 0 44.2 7.9 61.5 22.3L628.5 127.4c6.6 5.5 10.7 13.5 11.4 22.1s-2.1 17.1-7.8 23.6l-56 64c-11.4 13.1-31.2 14.6-44.6 3.5L480 197.7V448c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64V197.7l-51.5 42.9c-13.3 11.1-33.1 9.6-44.6-3.5l-56-64c-5.7-6.5-8.5-15-7.8-23.6s4.8-16.6 11.4-22.1L137.7 22.3C155 7.9 176.7 0 199.2 0h12.6z\"],cubes:[576,512,[],\"f1b3\",\"M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5V204.7c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7V413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3V294.7c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3V92.5c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2V152.6L392 121v89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4V354.8L256 323.2v95.9l-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1V354.8L528 323.2v90.7c0 3.2-1.9 6-4.8 7.3z\"],divide:[448,512,[10135,247],\"f529\",\"M272 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 320a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 288c17.7 0 32-14.3 32-32s-14.3-32-32-32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H400z\"],\"tenge-sign\":[384,512,[8376,\"tenge\"],\"f7d7\",\"M0 64C0 46.3 14.3 32 32 32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM0 192c0-17.7 14.3-32 32-32H192 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V224H32c-17.7 0-32-14.3-32-32z\"],headphones:[512,512,[127911],\"f025\",\"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80V384 336 288C0 146.6 114.6 32 256 32s256 114.6 256 256v48 48 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"],\"hands-holding\":[640,512,[],\"f4c2\",\"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104v56 64V325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7H240c26.5 0 48-21.5 48-48V385.1c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3 0 0-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3V224 144 104zm480 0v40 80 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2 0 0-25.3 25.3c-21 21-32.8 49.5-32.8 79.2V464c0 26.5 21.5 48 48 48h66.7c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9V224 160 104c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"],\"hands-clapping\":[512,512,[],\"e1a8\",\"M336 16V80c0 8.8-7.2 16-16 16s-16-7.2-16-16V16c0-8.8 7.2-16 16-16s16 7.2 16 16zm-98.7 7.1l32 48c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-32-48c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4zM135 119c9.4-9.4 24.6-9.4 33.9 0L292.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4c-64 38.4-145.8 28.3-198.5-24.4L7 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L23 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM433.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1c48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4zM424.9 18.7c7.4 4.9 9.3 14.8 4.4 22.2l-32 48c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l32-48c4.9-7.4 14.8-9.3 22.2-4.4z\"],republican:[640,512,[],\"f75e\",\"M0 192C0 103.6 71.6 32 160 32H384c88.4 0 160 71.6 160 160v64H0V192zm415.9-64c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L466 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm-138.3 3.4c-1.1-2.1-3.3-3.4-5.7-3.4s-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L322 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6zM127.9 128c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L178 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm.1 160H320h96 32 64 32v32 80c0 8.8 7.2 16 16 16s16-7.2 16-16V352c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80s-80-35.8-80-80V352H448v32 64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V384H128v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V384 288H128z\"],\"arrow-left\":[448,512,[8592],\"f060\",\"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"],\"person-circle-xmark\":[576,512,[],\"e543\",\"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"],ruler:[512,512,[128207],\"f545\",\"M177.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L17.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L177.9 494.1z\"],\"align-left\":[448,512,[],\"f036\",\"M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"],\"dice-d6\":[448,512,[],\"f6d1\",\"M201 10.3c14.3-7.8 31.6-7.8 46 0L422.3 106c5.1 2.8 8.3 8.2 8.3 14s-3.2 11.2-8.3 14L231.7 238c-4.8 2.6-10.5 2.6-15.3 0L25.7 134c-5.1-2.8-8.3-8.2-8.3-14s3.2-11.2 8.3-14L201 10.3zM23.7 170l176 96c5.1 2.8 8.3 8.2 8.3 14V496c0 5.6-3 10.9-7.8 13.8s-10.9 3-15.8 .3L25 423.1C9.6 414.7 0 398.6 0 381V184c0-5.6 3-10.9 7.8-13.8s10.9-3 15.8-.3zm400.7 0c5-2.7 11-2.6 15.8 .3s7.8 8.1 7.8 13.8V381c0 17.6-9.6 33.7-25 42.1L263.7 510c-5 2.7-11 2.6-15.8-.3s-7.8-8.1-7.8-13.8V280c0-5.9 3.2-11.2 8.3-14l176-96z\"],restroom:[640,512,[],\"f7bd\",\"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V325.2c-8.1 9.2-21.1 13.2-33.5 9.4c-16.9-5.3-26.3-23.2-21-40.1l30.9-99.1C44.9 155.3 82 128 124 128h8c42 0 79.1 27.3 91.6 67.4l30.9 99.1c5.3 16.9-4.1 34.8-21 40.1c-12.4 3.9-25.4-.2-33.5-9.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H120zM320 0c13.3 0 24 10.7 24 24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24zM464 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM440 480V384H422.2c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5c-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1c-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1H584v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H504v96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"],j:[320,512,[106],\"4a\",\"M288 32c17.7 0 32 14.3 32 32V320c0 88.4-71.6 160-160 160S0 408.4 0 320V288c0-17.7 14.3-32 32-32s32 14.3 32 32v32c0 53 43 96 96 96s96-43 96-96V64c0-17.7 14.3-32 32-32z\"],\"users-viewfinder\":[640,512,[],\"e595\",\"M48 48h88c13.3 0 24-10.7 24-24s-10.7-24-24-24H32C14.3 0 0 14.3 0 32V136c0 13.3 10.7 24 24 24s24-10.7 24-24V48zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zm-89.4 0c-8.6-24.3-29.9-42.6-55.9-47c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80-32a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM504 48h88v88c0 13.3 10.7 24 24 24s24-10.7 24-24V32c0-17.7-14.3-32-32-32H504c-13.3 0-24 10.7-24 24s10.7 24 24 24zM48 464V376c0-13.3-10.7-24-24-24s-24 10.7-24 24V480c0 17.7 14.3 32 32 32H136c13.3 0 24-10.7 24-24s-10.7-24-24-24H48zm456 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H608c17.7 0 32-14.3 32-32V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v88H504z\"],\"file-video\":[384,512,[],\"f1c8\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V288zM300.9 397.9L256 368V304l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z\"],\"up-right-from-square\":[512,512,[\"external-link-alt\"],\"f35d\",\"M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"],\"table-cells\":[512,512,[\"th\"],\"f00a\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 64v64H64V96h88zm56 0h88v64H208V96zm240 0v64H360V96h88zM64 224h88v64H64V224zm232 0v64H208V224h88zm64 0h88v64H360V224zM152 352v64H64V352h88zm56 0h88v64H208V352zm240 0v64H360V352h88z\"],\"file-pdf\":[512,512,[],\"f1c1\",\"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 144-208 0c-35.3 0-64 28.7-64 64l0 144-48 0c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM176 352l32 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-16 0 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-80c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0 48 16 0zm96-80l32 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16l0-128c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-16 0 0 96 16 0zm80-112c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64 0-64z\"],\"book-bible\":[448,512,[\"bible\"],\"f647\",\"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zM208 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272V304c0 8.8-7.2 16-16 16H224c-8.8 0-16-7.2-16-16V192H160c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h48V80z\"],o:[448,512,[111],\"4f\",\"M224 96a160 160 0 1 0 0 320 160 160 0 1 0 0-320zM448 256A224 224 0 1 1 0 256a224 224 0 1 1 448 0z\"],\"suitcase-medical\":[512,512,[\"medkit\"],\"f0fa\",\"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96v32V480H384V128 96 56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM96 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H96V96zM416 480h32c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H416V480zM224 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"],\"user-secret\":[448,512,[128373],\"f21b\",\"M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48H45.4C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4H342.7c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.8 3.3-8.8 6.1-15.5 6.1zm56 208H267.6c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2H168c-22.1 0-40-17.9-40-40V169.6c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4V184c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z\"],otter:[640,512,[129446],\"f700\",\"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5c23.5 0 42.6-19.1 42.6-42.6V144c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v21.4c0 23.5 19.1 42.6 42.6 42.6c6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2L135.1 185c-4.5-3-7.1-8-7.1-13.3V168c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6c-3.6 0-7.1-.2-10.6-.6v.6c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V336 320c0-23.7 12.9-44.4 32-55.4c9.4-5.4 20.3-8.6 32-8.6V240c0-26.5 21.5-48 48-48c8.8 0 16 7.2 16 16v32 16 48c0 8.8 7.2 16 16 16s16-7.2 16-16V204.3c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1h0c0 123.7-100.3 224-224 224h-1.1H256h-.6C132 480 32 380 32 256.6V256 216.8c-10.1-14.6-16-32.3-16-51.4V144l0-1.4C6.7 139.3 0 130.5 0 120c0-13.3 10.7-24 24-24h2.8C44.8 58.2 83.3 32 128 32h64c44.7 0 83.2 26.2 101.2 64H296c13.3 0 24 10.7 24 24c0 10.5-6.7 19.3-16 22.6l0 1.4v21.4c0 1.4 0 2.8-.1 4.3c12-6.2 25.7-9.6 40.1-9.6h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-13.3 0-24 10.7-24 24v8h56.4c-15.2 17-24.4 39.4-24.4 64H320c-42.3 0-78.2-27.4-91-65.3c-5.1 .9-10.3 1.3-15.6 1.3c-14.1 0-27.9-3.3-40.5-9.6zM96 128a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm112 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"],\"person-dress\":[320,512,[\"female\"],\"f182\",\"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM88 384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2c20.3-33.7 56.7-54.3 96-54.3h11.6c39.3 0 75.7 20.6 96 54.3l53.6 89.2c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9l-33.9-56.3L265 362.9c3.5 10.4-4.3 21.1-15.2 21.1H232v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H152v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"],\"comment-dollar\":[512,512,[],\"f651\",\"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm20-312v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V344c0 11-9 20-20 20s-20-9-20-20V329.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V136c0-11 9-20 20-20s20 9 20 20z\"],\"business-time\":[640,512,[\"briefcase-clock\"],\"f64a\",\"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 352h8.2c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16 .7V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM320 352H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H360.2C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7 .7-16l-.7 0zm320 16a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM496 288c8.8 0 16 7.2 16 16v48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16z\"],\"table-cells-large\":[512,512,[\"th-large\"],\"f009\",\"M448 96V224H288V96H448zm0 192V416H288V288H448zM224 224H64V96H224V224zM64 288H224V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"],\"book-tanakh\":[448,512,[\"tanakh\"],\"f827\",\"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM138.7 208l13.9 24H124.9l13.9-24zm-13.9-24L97.1 232c-6.2 10.7 1.5 24 13.9 24h55.4l27.7 48c6.2 10.7 21.6 10.7 27.7 0l27.7-48H305c12.3 0 20-13.3 13.9-24l-27.7-48 27.7-48c6.2-10.7-1.5-24-13.9-24H249.6L221.9 64c-6.2-10.7-21.6-10.7-27.7 0l-27.7 48H111c-12.3 0-20 13.3-13.9 24l27.7 48zm27.7 0l27.7-48h55.4l27.7 48-27.7 48H180.3l-27.7-48zm0-48l-13.9 24-13.9-24h27.7zm41.6-24L208 88l13.9 24H194.1zm69.3 24h27.7l-13.9 24-13.9-24zm13.9 72l13.9 24H263.4l13.9-24zm-55.4 48L208 280l-13.9-24h27.7z\"],\"phone-volume\":[512,512,[\"volume-control-phone\"],\"f2a0\",\"M280 0C408.1 0 512 103.9 512 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32-72c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24zM117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24z\"],\"hat-cowboy-side\":[640,512,[],\"f8c1\",\"M152.7 135.9l-10.4 57.2c6.8-.7 13.6-1.1 20.5-1.1h10.7c39.4 0 77.8 12.1 110.1 34.7L562.4 421.8l35.1 24.6c24.4-6 42.5-28.1 42.5-54.4c0-75.8-94.7-126.6-134.6-144.7L474 83.9C468.2 53.8 441.8 32 411.1 32h-2.7c-5.6 0-11.1 .7-16.5 2.2L199.2 85.5c-23.9 6.4-42 26-46.5 50.4zM0 384c0 35.3 28.7 64 64 64H544L265.3 252.9c-26.9-18.8-58.9-28.9-91.8-28.9H162.9c-60.6 0-116 34.2-143.1 88.4L13.5 325C4.6 342.7 0 362.3 0 382.2V384z\"],\"clipboard-user\":[384,512,[],\"f7f3\",\"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM128 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 432c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"],child:[320,512,[],\"f1ae\",\"M96 64a64 64 0 1 1 128 0A64 64 0 1 1 96 64zm48 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V287.8L59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H144z\"],\"lira-sign\":[320,512,[8356],\"f195\",\"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4V192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H46c-2.2 10.5-6.1 20.6-11.7 29.9L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H88.5l.7-1.1c11.6-19.3 18.9-40.7 21.6-62.9H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V160.4z\"],satellite:[512,512,[128752],\"f7bf\",\"M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z\"],\"plane-lock\":[640,512,[],\"e558\",\"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7v84.6l101.8 58.2C418 247.6 416 259.6 416 272v24.6c-17.9 10.4-30.3 29.1-31.8 50.9L320 329.1V400l57.6 43.2c4 3 6.4 7.8 6.4 12.8v24 18c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400l0-70.9-171.6 49C10.2 381.1 0 373.4 0 362.8V297.3c0-5.7 3.1-11 8.1-13.9L192 178.3V93.7zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"],tag:[448,512,[127991],\"f02b\",\"M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],comment:[512,512,[128489,61669],\"f075\",\"M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4l0 0 0 0 0 0 0 0 .3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z\"],\"cake-candles\":[448,512,[127874,\"birthday-cake\",\"cake\"],\"f1fd\",\"M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c-35.3 0-64 28.7-64 64v71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1 0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4l0 0 0 0 .1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8l0 0 0 0 0 0 .1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9V288c0-35.3-28.7-64-64-64V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H256V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H128V176zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4V480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V394.6z\"],envelope:[512,512,[128386,9993,61443],\"f0e0\",\"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z\"],\"angles-up\":[448,512,[\"angle-double-up\"],\"f102\",\"M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"],paperclip:[448,512,[128206],\"f0c6\",\"M364.2 83.8c-24.4-24.4-64-24.4-88.4 0l-184 184c-42.1 42.1-42.1 110.3 0 152.4s110.3 42.1 152.4 0l152-152c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-152 152c-64 64-167.6 64-231.6 0s-64-167.6 0-231.6l184-184c46.3-46.3 121.3-46.3 167.6 0s46.3 121.3 0 167.6l-176 176c-28.6 28.6-75 28.6-103.6 0s-28.6-75 0-103.6l144-144c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-144 144c-6.7 6.7-6.7 17.7 0 24.4s17.7 6.7 24.4 0l176-176c24.4-24.4 24.4-64 0-88.4z\"],\"arrow-right-to-city\":[640,512,[],\"e4b3\",\"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM166.6 153.4l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H146.7l-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"],ribbon:[448,512,[127895],\"f4d6\",\"M333.2 322.8l0 0-133.9-146 0 0L146 118.6c7.8-5.1 37-22.6 78-22.6s70.2 17.4 78 22.6L245.7 180l85.6 93.4 27.4-29.8c16.3-17.7 25.3-40.9 25.3-65V149.1c0-19-5.6-37.5-16.1-53.3L327.8 35.6C312.9 13.4 287.9 0 261.2 0h-76c-25.8 0-50.1 12.5-65.1 33.5L81.9 87C70.3 103.2 64 122.8 64 142.8V164c0 23.2 8.4 45.6 23.6 63.1l56 64.2 0 0 83.3 95.6 0 0 91.8 105.3c10 11.5 26.8 14.3 40 6.8l54.5-31.1c17.8-10.2 21.6-34.3 7.7-49.4l-87.7-95.7zM205.2 410.6l-83.3-95.6L27.1 418.5c-13.9 15.1-10.1 39.2 7.7 49.4l55.1 31.5c13 7.4 29.3 4.9 39.4-6.1l75.9-82.6z\"],lungs:[640,512,[129729],\"f604\",\"M320 0c17.7 0 32 14.3 32 32V164.1c0 16.4 8.4 31.7 22.2 40.5l9.8 6.2V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2C414 480.5 384 442.1 384 398V325l90.5 57.6c7.5 4.7 17.3 2.5 22.1-4.9s2.5-17.3-4.9-22.1L384 287.1v-.4l-44.1-28.1c-7.3-4.6-13.9-10.1-19.9-16.1c-5.9 6-12.6 11.5-19.9 16.1L256 286.7 161.2 347l-13.5 8.6c0 0 0 0-.1 0c-7.4 4.8-9.6 14.6-4.8 22.1c4.7 7.5 14.6 9.7 22.1 4.9l91.1-58V398c0 44.1-30 82.5-72.7 93.1l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v45.5l9.8-6.2c13.8-8.8 22.2-24.1 22.2-40.5V32c0-17.7 14.3-32 32-32z\"],\"arrow-up-9-1\":[576,512,[\"sort-numeric-up-alt\"],\"f887\",\"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM450.7 294c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V364.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zm-5-145.1A32 32 0 1 0 418.3 91a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 192.4 344 159.2 344 120c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 251c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"],\"litecoin-sign\":[384,512,[],\"e1d3\",\"M128 64c0-17.7-14.3-32-32-32S64 46.3 64 64V213.6L23.2 225.2c-17 4.9-26.8 22.6-22 39.6s22.6 26.8 39.6 22L64 280.1V448c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V261.9l136.8-39.1c17-4.9 26.8-22.6 22-39.6s-22.6-26.8-39.6-22L128 195.3V64z\"],\"border-none\":[448,512,[],\"f850\",\"M32 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM320 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-320a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 288a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm192 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM416 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"],\"circle-nodes\":[512,512,[],\"e4e2\",\"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"],\"parachute-box\":[512,512,[],\"f4cd\",\"M383.5 192c.3-5.3 .5-10.6 .5-16c0-51-15.9-96-40.2-127.6C319.5 16.9 288.2 0 256 0s-63.5 16.9-87.8 48.4C143.9 80 128 125 128 176c0 5.4 .2 10.7 .5 16H240V320H208c-7 0-13.7 1.5-19.7 4.2L68.2 192H96.5c-.3-5.3-.5-10.6-.5-16c0-64 22.2-121.2 57.1-159.3C62 49.3 18.6 122.6 4.2 173.6C1.5 183.1 9 192 18.9 192h6L165.2 346.3c-3.3 6.5-5.2 13.9-5.2 21.7v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V368c0-7.8-1.9-15.2-5.2-21.7L487.1 192h6c9.9 0 17.4-8.9 14.7-18.4C493.4 122.6 450 49.3 358.9 16.7C393.8 54.8 416 112.1 416 176c0 5.4-.2 10.7-.5 16h28.3L323.7 324.2c-6-2.7-12.7-4.2-19.7-4.2H272V192H383.5z\"],indent:[448,512,[],\"f03c\",\"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3V176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"],\"truck-field-un\":[640,512,[],\"e58e\",\"M96 32C60.7 32 32 60.7 32 96v32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32v32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288c0-35.3-28.7-64-64-64h-4.2c-.4-1.1-.9-2.1-1.3-3.2L485.7 102c-10.3-23.1-33.2-38-58.5-38H375.4C364.4 44.9 343.7 32 320 32H96zm288 96h43.2l42.7 96H384V128zM112 384a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM253.3 135.1l34.7 52V144c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM128 144v64c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V144c0-8.8 7.2-16 16-16s16 7.2 16 16z\"],hourglass:[384,512,[9203,62032,\"hourglass-empty\"],\"f254\",\"M0 32C0 14.3 14.3 0 32 0H64 320h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V75c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1v11c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V437c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75V64C14.3 64 0 49.7 0 32zM96 64V75c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9V64H96zm0 384H288V437c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9v11z\"],mountain:[512,512,[127956],\"f6fc\",\"M256 32c12.5 0 24.1 6.4 30.8 17L503.4 394.4c5.6 8.9 8.6 19.2 8.6 29.7c0 30.9-25 55.9-55.9 55.9H55.9C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17zm65 192L256 120.4 176.9 246.5l18.3 24.4c6.4 8.5 19.2 8.5 25.6 0l25.6-34.1c6-8.1 15.5-12.8 25.6-12.8h49z\"],\"user-doctor\":[448,512,[\"user-md\"],\"f0f0\",\"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-96 55.2C54 332.9 0 401.3 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-81-54-149.4-128-171.1V362c27.6 7.1 48 32.2 48 62v40c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16s7.2-16 16-16V424c0-17.7-14.3-32-32-32s-32 14.3-32 32v24c8.8 0 16 7.2 16 16s-7.2 16-16 16H256c-8.8 0-16-7.2-16-16V424c0-29.8 20.4-54.9 48-62V304.9c-6-.6-12.1-.9-18.3-.9H178.3c-6.2 0-12.3 .3-18.3 .9v65.4c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7V311.2zM144 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"],\"circle-info\":[512,512,[\"info-circle\"],\"f05a\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"cloud-meatball\":[512,512,[],\"f73b\",\"M0 224c0 53 43 96 96 96h44.7c9.5-23.5 32.5-40 59.3-40c2 0 3.9 .1 5.8 .3C217.6 265.5 235.7 256 256 256s38.4 9.5 50.2 24.3c1.9-.2 3.9-.3 5.8-.3c26.9 0 49.9 16.5 59.3 40H416c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 1 .1 2.1 .1 3.1c-.7-.8-1.4-1.6-2.1-2.3c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c.7 .7 1.5 1.4 2.3 2.1c-1-.1-2.1-.1-3.1-.1c-17.7 0-32 14.3-32 32s14.3 32 32 32c1 0 2.1-.1 3.1-.1c-.8 .7-1.6 1.3-2.3 2.1c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0c.7-.7 1.4-1.5 2.1-2.3c-.1 1-.1 2.1-.1 3.1c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1-.1-2.1-.1-3.1c.7 .8 1.3 1.6 2.1 2.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3c-.7-.7-1.5-1.4-2.3-2.1c1 .1 2.1 .1 3.1 .1c17.7 0 32-14.3 32-32s-14.3-32-32-32c-1 0-2.1 .1-3.1 .1c.8-.7 1.6-1.3 2.3-2.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-.7 .7-1.4 1.5-2.1 2.3c.1-1 .1-2.1 .1-3.1zM48 448a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm416 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"],camera:[512,512,[62258,\"camera-alt\"],\"f030\",\"M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"],\"square-virus\":[448,512,[],\"e578\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM223.8 93.7c13.3 0 24 10.7 24 24c0 29.3 35.4 43.9 56.1 23.2c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.7 20.7-6 56.1 23.2 56.1c13.3 0 24 10.7 24 24s-10.7 24-24 24c-29.3 0-43.9 35.4-23.2 56.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.7-20.7-56.1-6-56.1 23.2c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-29.3-35.4-43.9-56.1-23.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.7-20.7 6-56.1-23.2-56.1c-13.3 0-24-10.7-24-24s10.7-24 24-24c29.3 0 43.9-35.4 23.2-56.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.7 20.7 56.1 6 56.1-23.2c0-13.3 10.7-24 24-24zM192 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm88 32a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"],meteor:[512,512,[9732],\"f753\",\"M493.7 .9L299.4 75.6l2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309C0 421.1 90.9 512 203 512c72.4 0 139.4-38.6 175.7-101.3L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3L511.1 18.3c.6-1.5 .9-3.2 .9-4.8C512 6 506 0 498.5 0c-1.7 0-3.3 .3-4.8 .9zM192 192a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm16 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"],\"car-on\":[512,512,[],\"e4dd\",\"M280 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V24zM185.8 224H326.2c6.8 0 12.8 4.3 15.1 10.6L360.3 288H151.7l19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344v40 64 32c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V448H384v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448 384 344c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160H185.8c-33.8 0-64 21.3-75.3 53.1zM128 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM39 39c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L73 39c-9.4-9.4-24.6-9.4-33.9 0zm400 0L391 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z\"],sleigh:[640,512,[],\"f7cc\",\"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V256c0 53 43 96 96 96v32h64V352H384v32h64V352c53 0 96-43 96-96V160c17.7 0 32-14.3 32-32s-14.3-32-32-32H512 480c-17.7 0-32 14.3-32 32v41.3c0 30.2-24.5 54.7-54.7 54.7c-75.5 0-145.6-38.9-185.6-102.9l-4.3-6.9C174.2 67.6 125 37.6 70.7 32.7c-2.2-.5-4.4-.7-6.7-.7H55 32zM640 384c0-17.7-14.3-32-32-32s-32 14.3-32 32v8c0 13.3-10.7 24-24 24H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H552c48.6 0 88-39.4 88-88v-8z\"],\"arrow-down-1-9\":[576,512,[\"sort-numeric-asc\",\"sort-numeric-down\"],\"f162\",\"M450.7 38c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V160H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V64c0-10.3-4.9-19.9-13.3-26zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM418.3 307a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 307zM405.1 419.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"],\"hand-holding-droplet\":[576,512,[\"hand-holding-water\"],\"f4c1\",\"M275.5 6.6C278.3 2.5 283 0 288 0s9.7 2.5 12.5 6.6L366.8 103C378 119.3 384 138.6 384 158.3V160c0 53-43 96-96 96s-96-43-96-96v-1.7c0-19.8 6-39 17.2-55.3L275.5 6.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"],water:[576,512,[],\"f773\",\"M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"],\"calendar-check\":[448,512,[],\"f274\",\"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM329 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L329 305z\"],braille:[640,512,[],\"f2a1\",\"M0 96a64 64 0 1 1 128 0A64 64 0 1 1 0 96zM224 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM80 416a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM224 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM352 96a64 64 0 1 1 128 0A64 64 0 1 1 352 96zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0A64 64 0 1 1 512 96zm64 176a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM416 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"],\"prescription-bottle-medical\":[384,512,[\"prescription-bottle-alt\"],\"f486\",\"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zM160 240v48H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V352h48c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"],landmark:[512,512,[127963],\"f66f\",\"M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8H32c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9V104l4.4-1.6L240.1 4.2zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"],truck:[640,512,[128666,9951],\"f0d1\",\"M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM112 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"],crosshairs:[512,512,[],\"f05b\",\"M256 0c17.7 0 32 14.3 32 32V42.4c93.7 13.9 167.7 88 181.6 181.6H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H469.6c-13.9 93.7-88 167.7-181.6 181.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V469.6C130.3 455.7 56.3 381.7 42.4 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H42.4C56.3 130.3 130.3 56.3 224 42.4V32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6V384c0-17.7 14.3-32 32-32s32 14.3 32 32v20.6c58.3-12.5 104.1-58.4 116.6-116.6H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h20.6C392.1 165.7 346.3 119.9 288 107.4V128c0 17.7-14.3 32-32 32s-32-14.3-32-32V107.4C165.7 119.9 119.9 165.7 107.4 224H128c17.7 0 32 14.3 32 32s-14.3 32-32 32H107.4zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"person-cane\":[448,512,[],\"e53c\",\"M272 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-8 187.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3zM352 376c0-4.4 3.6-8 8-8s8 3.6 8 8V488c0 13.3 10.7 24 24 24s24-10.7 24-24V376c0-30.9-25.1-56-56-56s-56 25.1-56 56v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8z\"],tent:[576,512,[],\"e57d\",\"M269.4 6C280.5-2 295.5-2 306.6 6l224 160c7.4 5.3 12.2 13.5 13.2 22.5l32 288c1 9-1.9 18.1-8 24.9s-14.7 10.7-23.8 10.7H464 435.8c-12.1 0-23.2-6.8-28.6-17.7L306.7 293.5c-1.7-3.4-5.1-5.5-8.8-5.5c-5.5 0-9.9 4.4-9.9 9.9V480c0 17.7-14.3 32-32 32H240 32c-9.1 0-17.8-3.9-23.8-10.7s-9-15.8-8-24.9l32-288c1-9 5.8-17.2 13.2-22.5L269.4 6z\"],\"vest-patches\":[448,512,[],\"e086\",\"M151.2 69.7l55.9 167.7-11 33.1c-2.7 8.2-4.1 16.7-4.1 25.3V464c0 14.5 3.9 28.2 10.7 39.9C195 509 185.9 512 176 512H48c-26.5 0-48-21.5-48-48V270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6V128 54.3 48C64 21.5 85.5 0 112 0h4.5c.2 0 .4 0 .6 0c.4 0 .8 0 1.2 0c18.8 0 34.1 9.7 44.1 18.8C171.6 27.2 190.8 40 224 40s52.4-12.8 61.7-21.2C295.7 9.7 311 0 329.7 0c.4 0 .8 0 1.2 0c.2 0 .4 0 .6 0H336c26.5 0 48 21.5 48 48v6.3V128v17.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6V464c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V295.8c0-5.2 .8-10.3 2.5-15.2L296.8 69.7C279.4 79.7 255.4 88 224 88s-55.4-8.3-72.8-18.3zM96 456a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305l15.5 15.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288l15.5-15.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280v8 32c0 8.8 7.2 16 16 16h32 8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"],\"check-double\":[448,512,[],\"f560\",\"M342.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 54.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z\"],\"arrow-down-a-z\":[576,512,[\"sort-alpha-asc\",\"sort-alpha-down\"],\"f15d\",\"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z\"],\"money-bill-wheat\":[512,512,[],\"e52a\",\"M176 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zM56 16h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56C42.7 64 32 53.3 32 40s10.7-24 24-24zM24 88H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24S10.7 88 24 88zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 16c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80zM400 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 128c8.8 0 16 7.2 16 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"],cookie:[512,512,[127850],\"f563\",\"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"arrow-rotate-left\":[512,512,[8634,\"arrow-left-rotate\",\"arrow-rotate-back\",\"arrow-rotate-backward\",\"undo\"],\"f0e2\",\"M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z\"],\"hard-drive\":[512,512,[128436,\"hdd\"],\"f0a0\",\"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V280.4c-17-15.2-39.4-24.4-64-24.4H64c-24.6 0-47 9.2-64 24.4V96zM64 288H448c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64zM320 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"],\"face-grin-squint-tears\":[512,512,[129315,\"grin-squint-tears\"],\"f586\",\"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-6.8 6.8-21.4 12.4-37.4 16.7c-16.3 4.4-34.1 7.5-46.3 9.3c-1.6 .2-3.1 .5-4.6 .6c-5.6 .9-10.3-3.9-9.5-9.5c1.6-11.2 4.6-29.6 9-47c.3-1.3 .7-2.6 1-3.9c4.3-15.9 9.8-30.5 16.7-37.4zm-44.7 19c-1.5 4.8-2.9 9.6-4.1 14.3c-4.8 18.9-8 38.5-9.7 50.3c-4 26.8 18.9 49.7 45.7 45.8c11.9-1.6 31.5-4.8 50.4-9.7c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c4.8-18.9 8-38.5 9.7-50.3c4-26.8-18.9-49.7-45.7-45.8c-11.9 1.6-31.5 4.8-50.4 9.7c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75C158.2-8.3 284.5-22.2 382.2 33.2zM51.5 410.1c18.5-5 38.8-8.3 50.9-10c5.6-.9 10.3 3.9 9.5 9.5c-1.7 12.1-5 32.4-10 50.9C97.6 476.4 92 491 85.2 497.8C66 517 34.5 516.6 14.9 497.1s-20-51-.7-70.3c6.8-6.8 21.4-12.4 37.4-16.7zM416.4 202.3c-4.8-11.9-20.9-10.9-26.9 .4c-19.4 36.7-46.3 73.2-79.8 106.7s-70 60.3-106.7 79.8c-11.3 6-12.3 22.1-.4 26.9c59.4 24.1 129.9 12.2 177.9-35.8s59.9-118.5 35.8-177.9zM87.1 285.1c2 2 4.6 3.2 7.3 3.4l56.1 5.1 5.1 56.1c.3 2.8 1.5 5.4 3.4 7.3c6.3 6.3 17.2 3.6 19.8-4.9l29.7-97.4c3.5-11.6-7.3-22.5-19-19L92 265.3c-8.6 2.6-11.3 13.4-4.9 19.8zM265.3 92l-29.7 97.4c-3.5 11.6 7.3 22.5 19 19l97.4-29.7c8.6-2.6 11.3-13.4 4.9-19.8c-2-2-4.6-3.2-7.3-3.4l-56.1-5.1-5.1-56.1c-.3-2.8-1.5-5.4-3.4-7.3c-6.3-6.3-17.2-3.6-19.8 4.9z\"],dumbbell:[640,512,[],\"f44b\",\"M96 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V224v64V448c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V384H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H96V64zm448 0v64h32c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32v64c0 17.7-14.3 32-32 32H544v64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V288 224 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32zM416 224v64H224V224H416z\"],\"rectangle-list\":[576,512,[\"list-alt\"],\"f022\",\"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224z\"],\"tarp-droplet\":[576,512,[],\"e57c\",\"M288 160c-35.3 0-64-26.9-64-60c0-24 33.7-70.1 52.2-93.5c6.1-7.7 17.5-7.7 23.6 0C318.3 29.9 352 76 352 100c0 33.1-28.7 60-64 60zM64 128H197.5c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H512c35.3 0 64 28.7 64 64V352H448c-17.7 0-32 14.3-32 32l0 128L64 512c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zM448 512l0-128H576L448 512zM96 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"house-medical-circle-check\":[640,512,[],\"e511\",\"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm32 0a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"],\"person-skiing-nordic\":[576,512,[\"skiing-nordic\"],\"f7ca\",\"M336 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM227.2 160c1.9 0 3.8 .1 5.6 .3L201.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9L291.3 464H202.8l41.1-88.1-32.4-20.3c-7.8-4.9-14.7-10.7-20.6-17.3L132.2 464H99.7l54.2-257.6c4.6-1.5 9-4.1 12.7-7.8l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5zM121.4 198.6c.4 .4 .8 .8 1.3 1.2L67 464H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H159.3c.4 0 .9 0 1.3 0H319.3c.5 0 1 0 1.4 0H504c39.8 0 72-32.2 72-72v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24v8c0 13.3-10.7 24-24 24H434.6l27.6-179.3c10.5-5.2 17.8-16.1 17.8-28.7c0-17.7-14.3-32-32-32H426.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c-12.5 12.5-12.5 32.8 0 45.3zm308 89.4L402.3 464H357.8l21.6-75.6c5.9-20.6-2.6-42.6-20.7-53.9L302 299l30.9-82.4 5.1 12.3C353 264.7 387.9 288 426.7 288h2.7z\"],\"calendar-plus\":[448,512,[],\"f271\",\"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192zM224 248c13.3 0 24 10.7 24 24v56h56c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V376H144c-13.3 0-24-10.7-24-24s10.7-24 24-24h56V272c0-13.3 10.7-24 24-24z\"],\"plane-arrival\":[640,512,[128748],\"f5af\",\"M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0h40.1c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14.1-9.3-22.5zM32 448H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm96-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"circle-left\":[512,512,[61840,\"arrow-alt-circle-left\"],\"f359\",\"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9L117.5 269.8c-3.5-3.8-5.5-8.7-5.5-13.8s2-10.1 5.5-13.8l99.9-107.1c4.2-4.5 10.1-7.1 16.3-7.1c12.3 0 22.3 10 22.3 22.3l0 57.7 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 57.7c0 12.3-10 22.3-22.3 22.3c-6.2 0-12.1-2.6-16.3-7.1z\"],\"train-subway\":[448,512,[\"subway\"],\"f239\",\"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 128c0-17.7 14.3-32 32-32h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM272 96h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H272c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM64 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm288-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"chart-gantt\":[512,512,[],\"e0e4\",\"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32zm96 64H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"],\"indian-rupee-sign\":[320,512,[\"indian-rupee\",\"inr\"],\"e1bc\",\"M0 64C0 46.3 14.3 32 32 32H96h16H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H231.8c9.6 14.4 16.7 30.6 20.7 48H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H252.4c-13.2 58.3-61.9 103.2-122.2 110.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256h80c32.8 0 61-19.7 73.3-48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H185.3C173 115.7 144.8 96 112 96H96 32C14.3 96 0 81.7 0 64z\"],\"crop-simple\":[512,512,[\"crop-alt\"],\"f565\",\"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H128V32zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-256c0-35.3-28.7-64-64-64L160 64v64l224 0 0 352z\"],\"money-bill-1\":[576,512,[\"money-bill-alt\"],\"f3d1\",\"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm76-48c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"],\"left-long\":[512,512,[\"long-arrow-alt-left\"],\"f30a\",\"M177.5 414c-8.8 3.8-19 2-26-4.6l-144-136C2.7 268.9 0 262.6 0 256s2.7-12.9 7.5-17.4l144-136c7-6.6 17.2-8.4 26-4.6s14.5 12.5 14.5 22l0 72 288 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-288 0 0 72c0 9.6-5.7 18.2-14.5 22z\"],dna:[448,512,[129516],\"f471\",\"M416 0c17.7 0 32 14.3 32 32c0 59.8-30.3 107.5-69.4 146.6c-28 28-62.5 53.5-97.3 77.4l-2.5 1.7c-11.9 8.1-23.8 16.1-35.5 23.9l0 0 0 0 0 0-1.6 1c-6 4-11.9 7.9-17.8 11.9c-20.9 14-40.8 27.7-59.3 41.5H283.3c-9.8-7.4-20.1-14.7-30.7-22.1l7-4.7 3-2c15.1-10.1 30.9-20.6 46.7-31.6c25 18.1 48.9 37.3 69.4 57.7C417.7 372.5 448 420.2 448 480c0 17.7-14.3 32-32 32s-32-14.3-32-32H64c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-59.8 30.3-107.5 69.4-146.6c28-28 62.5-53.5 97.3-77.4c-34.8-23.9-69.3-49.3-97.3-77.4C30.3 139.5 0 91.8 0 32C0 14.3 14.3 0 32 0S64 14.3 64 32H384c0-17.7 14.3-32 32-32zM338.6 384H109.4c-10.1 10.6-18.6 21.3-25.5 32H364.1c-6.8-10.7-15.3-21.4-25.5-32zM109.4 128H338.6c10.1-10.7 18.6-21.3 25.5-32H83.9c6.8 10.7 15.3 21.3 25.5 32zm55.4 48c18.4 13.8 38.4 27.5 59.3 41.5c20.9-14 40.8-27.7 59.3-41.5H164.7z\"],\"virus-slash\":[640,512,[],\"e075\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-154.3-121c-2-30.1 20.8-60.1 56-60.1H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H532.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C412.3 118.4 352 93.4 352 43.5V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L184.2 75c-12.5-12.5-32.8-12.5-45.3 0c-1.6 1.6-3.1 3.4-4.3 5.3L38.8 5.1zm225.8 177c6.9-3.9 14.9-6.1 23.4-6.1c26.5 0 48 21.5 48 48c0 4.4-.6 8.7-1.7 12.7l-69.7-54.6zM402 412.7L144.7 210c-9.5 8.5-22.2 14-37.2 14H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h11.5c49.9 0 74.9 60.3 39.6 95.6l-8.2 8.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-31.2 23.6-52.7 50-55.7z\"],minus:[448,512,[8211,8722,10134,\"subtract\"],\"f068\",\"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"],chess:[512,512,[],\"f439\",\"M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16V32H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h16V96H60.2C49.1 96 40 105.1 40 116.2c0 2.5 .5 4.9 1.3 7.3L73.8 208H72c-13.3 0-24 10.7-24 24s10.7 24 24 24h4L60 384H196L180 256h4c13.3 0 24-10.7 24-24s-10.7-24-24-24h-1.8l32.5-84.5c.9-2.3 1.3-4.8 1.3-7.3c0-11.2-9.1-20.2-20.2-20.2H144V64h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H144V16zM48 416L4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24H232c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L208 416H48zm288 0l-43.2 57.6c-3.1 4.2-4.8 9.2-4.8 14.4c0 13.3 10.7 24 24 24H488c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L464 416H336zM304 208v51.9c0 7.8 2.8 15.3 8 21.1L339.2 312 337 384H462.5l-3.3-72 28.3-30.8c5.4-5.9 8.5-13.6 8.5-21.7V208c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16v16H424V208c0-8.8-7.2-16-16-16H392c-8.8 0-16 7.2-16 16v16H352V208c0-8.8-7.2-16-16-16H320c-8.8 0-16 7.2-16 16zm80 96c0-8.8 7.2-16 16-16s16 7.2 16 16v32H384V304z\"],\"arrow-left-long\":[512,512,[\"long-arrow-left\"],\"f177\",\"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128z\"],\"plug-circle-check\":[576,512,[],\"e55c\",\"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"],\"street-view\":[512,512,[],\"f21d\",\"M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64v48c0 17.7 14.3 32 32 32h1.8l11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5h38.7c16.3 0 30-12.3 31.8-28.5L318.2 304H320c17.7 0 32-14.3 32-32V224c0-35.3-28.7-64-64-64H224zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\"],\"franc-sign\":[320,512,[],\"e18f\",\"M80 32C62.3 32 48 46.3 48 64V224v96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"],\"volume-off\":[320,512,[],\"f026\",\"M320 64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L131.8 160H64c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64h67.8L266.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S320 460.6 320 448V64z\"],\"hands-asl-interpreting\":[640,512,[\"american-sign-language-interpreting\",\"asl-interpreting\",\"hands-american-sign-language-interpreting\"],\"f2a3\",\"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7V256c0 70.7 57.3 128 128 128h72 8v-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2V256c0-70.7-57.3-128-128-128H440h-8v.3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"],gear:[512,512,[9881,\"cog\"],\"f013\",\"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"],\"droplet-slash\":[640,512,[\"tint-slash\"],\"f5c7\",\"M320 512c53.2 0 101.4-21.6 136.1-56.6l-298.3-235C140 257.1 128 292.3 128 320c0 106 86 192 192 192zM505.2 370.7c4.4-16.1 6.8-33.1 6.8-50.7c0-91.2-130.2-262.3-166.6-308.3C339.4 4.2 330.5 0 320.9 0h-1.8c-9.6 0-18.5 4.2-24.5 11.7C277.8 33 240.7 81.3 205.8 136L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L505.2 370.7zM224 336c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"],mosque:[640,512,[128332],\"f678\",\"M400 0c5 0 9.8 2.4 12.8 6.4c34.7 46.3 78.1 74.9 133.5 111.5l0 0 0 0c5.2 3.4 10.5 7 16 10.6c28.9 19.2 45.7 51.7 45.7 86.1c0 28.6-11.3 54.5-29.8 73.4H221.8c-18.4-19-29.8-44.9-29.8-73.4c0-34.4 16.7-66.9 45.7-86.1c5.4-3.6 10.8-7.1 16-10.6l0 0 0 0C309.1 81.3 352.5 52.7 387.2 6.4c3-4 7.8-6.4 12.8-6.4zM288 512V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H192c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H560V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H448V454c0-19-8.4-37-23-49.2L400 384l-25 20.8C360.4 417 352 435 352 454v58H288zM70.4 5.2c5.7-4.3 13.5-4.3 19.2 0l16 12C139.8 42.9 160 83.2 160 126v2H0v-2C0 83.2 20.2 42.9 54.4 17.2l16-12zM0 160H160V296.6c-19.1 11.1-32 31.7-32 55.4V480c0 9.6 2.1 18.6 5.8 26.8c-6.6 3.4-14 5.2-21.8 5.2H48c-26.5 0-48-21.5-48-48V176 160z\"],mosquito:[640,512,[],\"e52b\",\"M463.7 505.9c9.8-8.9 10.7-24.3 2.1-34.3l-42.1-49 0-54.7c0-5.5-1.8-10.8-5.1-15.1L352 266.3l0-.3L485.4 387.8C542.4 447.6 640 405.2 640 320.6c0-47.9-34-88.3-79.4-94.2l-153-23.9 40.8-40.9c7.8-7.8 9.4-20.1 3.9-29.8L428.5 90.1l38.2-50.9c8-10.6 6.1-25.9-4.3-34.1s-25.2-6.3-33.2 4.4l-48 63.9c-5.9 7.9-6.6 18.6-1.7 27.2L402.2 140 352 190.3l0-38.2c0-14.9-10.2-27.4-24-31l0-57.2c0-4.4-3.6-8-8-8s-8 3.6-8 8l0 57.2c-13.8 3.6-24 16.1-24 31l0 38.1L237.8 140l22.6-39.5c4.9-8.6 4.2-19.3-1.7-27.2l-48-63.9c-8-10.6-22.8-12.6-33.2-4.4s-12.2 23.5-4.3 34.1l38.2 50.9-23.9 41.7c-5.5 9.7-3.9 22 3.9 29.8l40.8 40.9-153 23.9C34 232.3 0 272.7 0 320.6c0 84.6 97.6 127 154.6 67.1L288 266l0 .3-66.5 86.4c-3.3 4.3-5.1 9.6-5.1 15.1l0 54.7-42.1 49c-8.6 10.1-7.7 25.5 2.1 34.3s24.7 7.9 33.4-2.1l48-55.9c3.8-4.4 5.9-10.2 5.9-16.1l0-55.4L288 344.7l0 63.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-63.1 24.3 31.6 0 55.4c0 5.9 2.1 11.7 5.9 16.1l48 55.9c8.6 10.1 23.6 11 33.4 2.1z\"],\"star-of-david\":[512,512,[10017],\"f69a\",\"M404.2 309.5L383.1 344h42.3l-21.1-34.5zM371.4 256l-54-88H194.6l-54 88 54 88H317.4l54-88zm65.7 0l53.4 87c3.6 5.9 5.5 12.7 5.5 19.6c0 20.7-16.8 37.4-37.4 37.4H348.7l-56.2 91.5C284.8 504.3 270.9 512 256 512s-28.8-7.7-36.6-20.5L163.3 400H53.4C32.8 400 16 383.2 16 362.6c0-6.9 1.9-13.7 5.5-19.6l53.4-87L21.5 169c-3.6-5.9-5.5-12.7-5.5-19.6C16 128.8 32.8 112 53.4 112H163.3l56.2-91.5C227.2 7.7 241.1 0 256 0s28.8 7.7 36.6 20.5L348.7 112H458.6c20.7 0 37.4 16.8 37.4 37.4c0 6.9-1.9 13.7-5.5 19.6l-53.4 87zm-54-88l21.1 34.5L425.4 168H383.1zM283 112L256 68l-27 44h54zM128.9 168H86.6l21.1 34.5L128.9 168zM107.8 309.5L86.6 344h42.3l-21.1-34.5zM229 400l27 44 27-44H229z\"],\"person-military-rifle\":[512,512,[],\"e54b\",\"M160 39c0-13 10-23.8 22.9-24.9L334.7 1.4C344 .7 352 8 352 17.4V48c0 8.8-7.2 16-16 16H185c-13.8 0-25-11.2-25-25zm17.6 57H334.4c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L352 369.7V480c0 1.3-.1 2.5-.2 3.8L177.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9h50.4c15.9 0 31.3 2.8 45.8 7.9L421.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l13.9 8 13.9 8c7.7 4.4 10.3 14.2 5.9 21.9L416 173.9l1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L392.6 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM320 512H192c-17.7 0-32-14.3-32-32V369.7l-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8l76.1-128.8c9.4-15.8 21.7-29.3 36-40L331.1 510c-3.5 1.3-7.2 2-11.1 2zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"],\"cart-shopping\":[576,512,[128722,\"shopping-cart\"],\"f07a\",\"M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"],vials:[512,512,[],\"f493\",\"M0 64C0 46.3 14.3 32 32 32H88h48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96C14.3 96 0 81.7 0 64zM136 96H88V256h48V96zM288 64c0-17.7 14.3-32 32-32h56 48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96c-17.7 0-32-14.3-32-32zM424 96H376V256h48V96z\"],\"plug-circle-plus\":[576,512,[],\"e55f\",\"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"],\"place-of-worship\":[640,512,[],\"f67f\",\"M224 109.3V217.6L183.3 242c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V283.2c0-16.9-8.8-32.5-23.3-41.2L416 217.6V109.3c0-8.5-3.4-16.6-9.4-22.6L331.3 11.3c-6.2-6.2-16.4-6.2-22.6 0L233.4 86.6c-6 6-9.4 14.1-9.4 22.6zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"],\"grip-vertical\":[320,512,[],\"f58e\",\"M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z\"],\"arrow-turn-up\":[384,512,[\"level-up\"],\"f148\",\"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"],u:[384,512,[117],\"55\",\"M32 32c17.7 0 32 14.3 32 32V288c0 70.7 57.3 128 128 128s128-57.3 128-128V64c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 106-86 192-192 192S0 394 0 288V64C0 46.3 14.3 32 32 32z\"],\"square-root-variable\":[576,512,[\"square-root-alt\"],\"f698\",\"M282.6 78.1c8-27.3 33-46.1 61.4-46.1H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H344L238.7 457c-3.6 12.3-14.1 21.2-26.8 22.8s-25.1-4.6-31.5-15.6L77.6 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H77.6c22.8 0 43.8 12.1 55.3 31.8l65.2 111.8L282.6 78.1zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0L480 274.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 320l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 365.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 320l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"],clock:[512,512,[128339,\"clock-four\"],\"f017\",\"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"],\"backward-step\":[320,512,[\"step-backward\"],\"f048\",\"M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241V96c0-17.7-14.3-32-32-32S0 78.3 0 96V416c0 17.7 14.3 32 32 32s32-14.3 32-32V271l11.5 9.6 192 160z\"],pallet:[640,512,[],\"f482\",\"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 320 544h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H576V384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H544 320 96 32zm96 64H288v64H128V384zm224 0H512v64H352V384z\"],faucet:[512,512,[],\"e005\",\"M192 96v12L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l96-12 31-3.9 1-.1 1 .1 31 3.9 96 12c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 12V96c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 256c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H132.1c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48H352c17.7 0 32 14.3 32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32c0-88.4-71.6-160-160-160H320l-22.6-22.6c-6-6-14.1-9.4-22.6-9.4H256V180.2l-32-4-32 4V224H173.3c-8.5 0-16.6 3.4-22.6 9.4L128 256H32z\"],\"baseball-bat-ball\":[512,512,[],\"f432\",\"M424 0c-12.4 0-24.2 4.9-33 13.7L233.5 171.2c-10.5 10.5-19.8 22.1-27.7 34.6L132.7 321.6c-7.3 11.5-15.8 22.2-25.5 31.9L69.9 390.7l51.3 51.3 37.3-37.3c9.6-9.6 20.3-18.2 31.9-25.5l115.8-73.1c12.5-7.9 24.1-17.2 34.6-27.7L498.3 121c8.7-8.7 13.7-20.6 13.7-33s-4.9-24.2-13.7-33L457 13.7C448.2 4.9 436.4 0 424 0zm88 432a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM15 399c-9.4 9.4-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L49 399c-9.4-9.4-24.6-9.4-33.9 0z\"],s:[320,512,[115],\"53\",\"M99.1 105.4C79 114 68.2 127.2 65.2 144.8c-2.4 14.1-.7 23.2 2 29.4c2.8 6.3 7.9 12.4 16.7 18.6c19.2 13.4 48.3 22.1 84.9 32.5c1 .3 1.9 .6 2.9 .8c32.7 9.3 72 20.6 100.9 40.7c15.7 10.9 29.9 25.5 38.6 45.1c8.8 19.8 10.8 42 6.6 66.3c-7.3 42.5-35.3 71.7-71.8 87.3c-35.4 15.2-79.1 17.9-123.7 10.9l-.2 0 0 0c-24-3.9-62.7-17.1-87.6-25.6c-4.8-1.7-9.2-3.1-12.8-4.3C5.1 440.8-3.9 422.7 1.6 405.9s23.7-25.8 40.5-20.3c4.9 1.6 10.2 3.4 15.9 5.4c25.4 8.6 56.4 19.2 74.4 22.1c36.8 5.7 67.5 2.5 88.5-6.5c20.1-8.6 30.8-21.8 33.9-39.4c2.4-14.1 .7-23.2-2-29.4c-2.8-6.3-7.9-12.4-16.7-18.6c-19.2-13.4-48.3-22.1-84.9-32.5c-1-.3-1.9-.6-2.9-.8c-32.7-9.3-72-20.6-100.9-40.7c-15.7-10.9-29.9-25.5-38.6-45.1c-8.8-19.8-10.8-42-6.6-66.3l31.5 5.5L2.1 133.9C9.4 91.4 37.4 62.2 73.9 46.6c35.4-15.2 79.1-17.9 123.7-10.9c13 2 52.4 9.6 66.6 13.4c17.1 4.5 27.2 22.1 22.7 39.2s-22.1 27.2-39.2 22.7c-11.2-3-48.1-10.2-60.1-12l4.9-31.5-4.9 31.5c-36.9-5.8-67.5-2.5-88.6 6.5z\"],timeline:[640,512,[],\"e29c\",\"M128 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32 97.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288v54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V288H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V169.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3V224H160V169.3zM488 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM320 392a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"],keyboard:[576,512,[9e3],\"f11c\",\"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm16 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V144zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM160 336c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336zM272 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM256 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM368 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM352 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V240zM464 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM448 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16z\"],\"caret-down\":[320,512,[],\"f0d7\",\"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"],\"house-chimney-medical\":[576,512,[\"clinic-medical\"],\"f7f2\",\"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM272 192c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H320V208c0-8.8-7.2-16-16-16H272z\"],\"temperature-three-quarters\":[320,512,[\"temperature-3\",\"thermometer-3\",\"thermometer-three-quarters\"],\"f2c8\",\"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V144c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"],\"mobile-screen\":[384,512,[\"mobile-android-alt\"],\"f3cf\",\"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM144 448c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160c-8.8 0-16 7.2-16 16zM304 64H80V384H304V64z\"],\"plane-up\":[512,512,[],\"e22d\",\"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 66.3L497.8 278.5c8.9 5.9 14.2 15.9 14.2 26.6v56.7c0 10.9-10.7 18.6-21.1 15.2L320 320v80l57.6 43.2c4 3 6.4 7.8 6.4 12.8v42c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400V320L21.1 377C10.7 380.4 0 372.7 0 361.8V305.1c0-10.7 5.3-20.7 14.2-26.6L192 160V93.7z\"],\"piggy-bank\":[576,512,[],\"f4d3\",\"M400 96l0 .7c-5.3-.4-10.6-.7-16-.7H256c-16.5 0-32.5 2.1-47.8 6c-.1-2-.2-4-.2-6c0-53 43-96 96-96s96 43 96 96zm-16 32c3.5 0 7 .1 10.4 .3c4.2 .3 8.4 .7 12.6 1.3C424.6 109.1 450.8 96 480 96h11.5c10.4 0 18 9.8 15.5 19.9l-13.8 55.2c15.8 14.8 28.7 32.8 37.5 52.9H544c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H512c-9.1 12.1-19.9 22.9-32 32v64c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H256v32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V416c-34.9-26.2-58.7-66.3-63.2-112H68c-37.6 0-68-30.4-68-68s30.4-68 68-68h4c13.3 0 24 10.7 24 24s-10.7 24-24 24H68c-11 0-20 9-20 20s9 20 20 20H99.2c12.1-59.8 57.7-107.5 116.3-122.8c12.9-3.4 26.5-5.2 40.5-5.2H384zm64 136a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"],\"battery-half\":[576,512,[\"battery-3\"],\"f242\",\"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm208 96H96V320H288V192z\"],\"mountain-city\":[640,512,[],\"e52e\",\"M336 0c-26.5 0-48 21.5-48 48v92.1l71.4 118.4c2.5-1.6 5.4-2.5 8.6-2.5h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16h-3.5l73.8 122.4c12.4 20.6 12.9 46.3 1.2 67.3c-.4 .8-.9 1.6-1.4 2.3H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H568V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H480V48c0-26.5-21.5-48-48-48H336zm32 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zM352 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176zm160 96c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zM224 188.9L283.8 288H223l-48 64-24.6-41.2L224 188.9zm29.4-44.2C247.1 134.3 236 128 224 128s-23.1 6.3-29.4 16.7L5.1 458.9c-6.5 10.8-6.7 24.3-.7 35.3S22 512 34.5 512H413.5c12.5 0 24-6.8 30.1-17.8s5.8-24.5-.7-35.3L253.4 144.7z\"],coins:[512,512,[],\"f51e\",\"M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2l0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5V176c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336V300.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4V304v5.7V336zm32 0V304 278.1c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5V272c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5V432c0 44.2-86 80-192 80S0 476.2 0 432V396.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z\"],khanda:[512,512,[9772],\"f66d\",\"M245.8 3.7c5.9-4.9 14.6-4.9 20.5 0l48 40c5.9 4.9 7.5 13.2 3.8 19.9l0 0 0 0 0 0 0 0-.1 .1-.3 .6c-.3 .5-.7 1.3-1.2 2.3c-1 2-2.6 5-4.4 8.6c-.5 .9-.9 1.9-1.4 2.9C344.9 97.4 368 134 368 176s-23.1 78.6-57.3 97.8c.5 1 1 2 1.4 2.9c1.8 3.7 3.3 6.6 4.4 8.6c.5 1 .9 1.8 1.2 2.3l.3 .6 .1 .1 0 0 0 0c3.6 6.7 2 15-3.8 19.9L272 343.5v19.8l35.6-24.5 41.1-28.2c42.8-29.4 68.4-78 68.4-130c0-31.1-9.2-61.6-26.5-87.5l-2.8-4.2c-4-6-3.5-14 1.3-19.5s12.7-7 19.2-3.7L401.1 80c7.2-14.3 7.2-14.3 7.2-14.3l0 0 0 0 .1 0 .3 .2 1 .5c.8 .4 2 1.1 3.5 1.9c2.9 1.7 7 4.1 11.8 7.3c9.6 6.4 22.5 16.1 35.4 29c25.7 25.7 52.7 65.6 52.7 119.3c0 53.1-26.4 100.5-51.2 133.6c-12.6 16.7-25.1 30.3-34.5 39.7c-4.7 4.7-8.7 8.4-11.5 10.9c-1.4 1.3-2.5 2.2-3.3 2.9l-.9 .8-.3 .2-.1 .1 0 0 0 0s0 0-10.2-12.3l10.2 12.3c-5.1 4.3-12.4 4.9-18.2 1.6l-75.6-43-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21L272 423.4v28.9c9.6 5.5 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7V424.1l-40.3 27.7C197.8 463.3 187.9 472 176 472c-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-75.6 43c-5.8 3.3-13 2.7-18.2-1.6L112 400c-10.2 12.3-10.2 12.3-10.3 12.3l0 0 0 0-.1-.1-.3-.2-.9-.8c-.8-.7-1.9-1.7-3.3-2.9c-2.8-2.5-6.7-6.2-11.5-10.9c-9.4-9.4-21.9-23-34.5-39.7C26.4 324.5 0 277.1 0 224c0-53.7 26.9-93.6 52.7-119.3c12.9-12.9 25.8-22.6 35.4-29C93 72.5 97 70 99.9 68.4c1.5-.8 2.6-1.5 3.5-1.9l1-.5 .3-.2 .1 0 0 0 0 0s0 0 7.2 14.3l-7.2-14.3c6.5-3.2 14.3-1.7 19.2 3.7s5.3 13.4 1.3 19.5l-2.8 4.2C105.2 119 96 149.5 96 180.6c0 51.9 25.6 100.6 68.4 130l41.1 28.2L240 362.6V343.5l-42.2-35.2c-5.9-4.9-7.5-13.2-3.8-19.9l0 0 0 0 0 0 .1-.1 .3-.6c.3-.5 .7-1.3 1.2-2.3c1-2 2.6-5 4.4-8.6c.5-.9 .9-1.9 1.4-2.9C167.1 254.6 144 218 144 176s23.1-78.6 57.3-97.8c-.5-1-1-2-1.4-2.9c-1.8-3.7-3.3-6.6-4.4-8.6c-.5-1-.9-1.8-1.2-2.3l-.3-.6-.1-.1 0 0 0 0 0 0c-3.6-6.7-2-15 3.8-19.9l48-40zM220.2 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1C227 210.2 232 190.9 232 176s-5-34.2-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1C285 141.8 280 161.1 280 176s5 34.2 11.8 53.1z\"],sliders:[512,512,[\"sliders-h\"],\"f1de\",\"M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z\"],\"folder-tree\":[576,512,[],\"f802\",\"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32v96V384c0 35.3 28.7 64 64 64H256V384H64V160H256V96H64V32zM288 192c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V192zm0 288c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V480z\"],\"network-wired\":[640,512,[],\"f6ff\",\"M256 64H384v64H256V64zM240 0c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96v32H80c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H240c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H192V288H448v32H400c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H512V288h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V192h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H240zM96 448V384H224v64H96zm320-64H544v64H416V384z\"],\"map-pin\":[320,512,[128205],\"f276\",\"M16 144a144 144 0 1 1 288 0A144 144 0 1 1 16 144zM160 80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-53 0-96 43-96 96c0 8.8 7.2 16 16 16s16-7.2 16-16c0-35.3 28.7-64 64-64zM128 480V317.1c10.4 1.9 21.1 2.9 32 2.9s21.6-1 32-2.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"],hamsa:[512,512,[],\"f665\",\"M34.6 288H80c8.8 0 16-7.2 16-16V72c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V40c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V72c0-22.1 17.9-40 40-40s40 17.9 40 40V272c0 8.8 7.2 16 16 16h45.4c19.1 0 34.6 15.5 34.6 34.6c0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71s-119.4-25.8-160.6-71L9 345.9c-5.8-6.4-9-14.7-9-23.3C0 303.5 15.5 288 34.6 288zM256 288c-38.4 0-76.8 35.8-90.6 50.2c-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"cent-sign\":[384,512,[],\"e3f5\",\"M224 0c17.7 0 32 14.3 32 32V66.7c30.9 5.2 59.2 17.7 83.2 35.8c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4C279.4 137.5 252.9 128 224 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c28.9 0 55.4-9.5 76.8-25.6c14.1-10.6 34.2-7.8 44.8 6.4s7.8 34.2-6.4 44.8c-24 18-52.4 30.6-83.2 35.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C101.2 430.1 32 351.1 32 256s69.2-174.1 160-189.3V32c0-17.7 14.3-32 32-32z\"],flask:[448,512,[],\"f0c3\",\"M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM192 196.8V64h64V196.8c0 23.7 6.6 46.9 19 67.1L309.5 320h-171L173 263.9c12.4-20.2 19-43.4 19-67.1z\"],\"person-pregnant\":[384,512,[],\"e31e\",\"M192 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM120 383c-13.8-3.6-24-16.1-24-31V296.9l-4.6 7.6c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c15-24.9 40.3-41.5 68.7-45.6c4.1-.6 8.2-1 12.5-1h1.1 12.5H192c1.4 0 2.8 .1 4.1 .3c35.7 2.9 65.4 29.3 72.1 65l6.1 32.5c44.3 8.6 77.7 47.5 77.7 94.3v32c0 17.7-14.3 32-32 32H304 264v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384h-8-8v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V383z\"],\"wand-sparkles\":[512,512,[],\"f72b\",\"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7V176c0 8.8-7.2 16-16 16H384.2c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9V272c0-8.8 7.2-16 16-16h34.6c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"],\"ellipsis-vertical\":[128,512,[\"ellipsis-v\"],\"f142\",\"M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z\"],ticket:[576,512,[127903],\"f145\",\"M64 64C28.7 64 0 92.7 0 128v64c0 8.8 7.4 15.7 15.7 18.6C34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V320c0-8.8-7.4-15.7-15.7-18.6C541.5 294.9 528 277 528 256s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6V128c0-35.3-28.7-64-64-64H64zm64 112l0 160c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16zM96 160c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V160z\"],\"power-off\":[512,512,[9211],\"f011\",\"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V256c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z\"],\"right-long\":[512,512,[\"long-arrow-alt-right\"],\"f30b\",\"M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 72L32 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l288 0 0 72c0 9.6 5.7 18.2 14.5 22z\"],\"flag-usa\":[448,512,[],\"f74d\",\"M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1v36.1l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-20.3-9-41.8-14.7-63.6-16.9v32.2c17.4 2.1 34.4 6.7 50.6 13.9l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 136.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 203.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 232.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 299.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 328.3v33.5c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 400v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V416 345.5 312.8 249.5 216.8 153.5 120.8 64 32C0 14.3 14.3 0 32 0zm80 96A16 16 0 1 0 80 96a16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-32 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"],\"laptop-file\":[640,512,[],\"e51d\",\"M128 0C92.7 0 64 28.7 64 64V288H19.2C8.6 288 0 296.6 0 307.2C0 349.6 34.4 384 76.8 384H320V288H128V64H448V96h64V64c0-35.3-28.7-64-64-64H128zM512 128H400c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V256H544c-17.7 0-32-14.3-32-32V128zm32 0v96h96l-96-96z\"],tty:[512,512,[\"teletype\"],\"f1e4\",\"M38.3 241.3L15.1 200.6c-9.2-16.2-8.4-36.5 4.5-50C61.4 106.8 144.7 48 256 48s194.6 58.8 236.4 102.6c12.9 13.5 13.7 33.8 4.5 50l-23.1 40.7c-7.5 13.2-23.3 19.3-37.8 14.6l-81.1-26.6c-13.1-4.3-22-16.6-22-30.4V144c-49.6-18.1-104-18.1-153.6 0v54.8c0 13.8-8.9 26.1-22 30.4L76.1 255.8c-14.5 4.7-30.3-1.4-37.8-14.6zM32 336c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V336zm0 96c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V432zM144 320h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V336zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V336zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V432c0-8.8 7.2-16 16-16zM128 432c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V432z\"],\"diagram-next\":[512,512,[],\"e476\",\"M512 160c0 35.3-28.7 64-64 64H280v64h46.1c21.4 0 32.1 25.9 17 41L273 399c-9.4 9.4-24.6 9.4-33.9 0L169 329c-15.1-15.1-4.4-41 17-41H232V224H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64v64zM448 416V352H365.3l.4-.4c18.4-18.4 20.4-43.7 11-63.6l71.3 0c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64l71.3 0c-9.4 19.9-7.4 45.2 11 63.6l.4 .4H64v64H210.7l5.7 5.7c21.9 21.9 57.3 21.9 79.2 0l5.7-5.7H448z\"],\"person-rifle\":[576,512,[],\"e54e\",\"M265.2 192c25.4 0 49.8 7.1 70.8 19.9V512H144V337.7L90.4 428.3c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8L97.7 258.8c24.5-41.4 69-66.8 117.1-66.8h50.4zM160 80a80 80 0 1 1 160 0A80 80 0 1 1 160 80zM448 0c8.8 0 16 7.2 16 16V132.3c9.6 5.5 16 15.9 16 27.7V269.3l16-5.3V208c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v84.5c0 6.9-4.4 13-10.9 15.2L480 325.3V352h48c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H484l23 92.1c2.5 10.1-5.1 19.9-15.5 19.9H432c-8.8 0-16-7.2-16-16V400H400c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32V160c0-11.8 6.4-22.2 16-27.7V32c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 16z\"],\"house-medical-circle-exclamation\":[640,512,[],\"e512\",\"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"],\"closed-captioning\":[576,512,[],\"f20a\",\"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"],\"person-hiking\":[384,512,[\"hiking\"],\"f6ec\",\"M192 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm51.3 182.7L224.2 307l49.7 49.7c9 9 14.1 21.2 14.1 33.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3l-73.9-73.9c-15.8-15.8-22.2-38.6-16.9-60.3l20.4-84c8.3-34.1 42.7-54.9 76.7-46.4c19 4.8 35.6 16.4 46.4 32.7L305.1 208H336V184c0-13.3 10.7-24 24-24s24 10.7 24 24v55.8c0 .1 0 .2 0 .2s0 .2 0 .2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V272H296.6c-16 0-31-8-39.9-21.4l-13.3-20zM81.1 471.9L117.3 334c3 4.2 6.4 8.2 10.1 11.9l41.9 41.9L142.9 488.1c-4.5 17.1-22 27.3-39.1 22.8s-27.3-22-22.8-39.1zm55.5-346L101.4 266.5c-3 12.1-14.9 19.9-27.2 17.9l-47.9-8c-14-2.3-22.9-16.3-19.2-30L31.9 155c9.5-34.8 41.1-59 77.2-59h4.2c15.6 0 27.1 14.7 23.3 29.8z\"],\"venus-double\":[640,512,[9890],\"f226\",\"M192 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM368 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H224v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C78.1 334.1 16 262.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176zM344 318c14.6-15.6 26.8-33.4 36-53c18.8 14.4 42.4 23 68 23c61.9 0 112-50.1 112-112s-50.1-112-112-112c-25.6 0-49.1 8.6-68 23c-9.3-19.5-21.5-37.4-36-53C373.1 12.6 409.1 0 448 0c97.2 0 176 78.8 176 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H480v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1c-26.6-4.9-51.1-15.7-72-31.1z\"],images:[576,512,[],\"f302\",\"M160 32c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320H328 280 200c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM192 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"],calculator:[384,512,[128425],\"f1ec\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM96 64H288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32zm32 160a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 352a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM64 416c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM192 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"],\"people-pulling\":[576,512,[],\"e535\",\"M80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zM64 128c-35.3 0-64 28.7-64 64V320c0 17.7 14.3 32 32 32c9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8L123.1 352h15.7l30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7c8.6 3.6 18 3.1 25.9-.7c3.4-1.6 6.6-3.9 9.3-6.7c3.1-3.2 5.5-7 7.1-11.4c.1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L537 232.7l-15.3-36.8C504.5 154.8 464.3 128 419.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128H64zM464 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"],n:[384,512,[110],\"4e\",\"M21.1 33.9c12.7-4.6 26.9-.7 35.5 9.6L320 359.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V448c0 13.5-8.4 25.5-21.1 30.1s-26.9 .7-35.5-9.6L64 152.4V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 50.5 8.4 38.5 21.1 33.9z\"],\"cable-car\":[512,512,[128673,57551,\"tram\"],\"f7da\",\"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 56a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 288c0-35.3 28.7-64 64-64H232V157.5l-203.1 42c-13 2.7-25.7-5.7-28.4-18.6s5.7-25.7 18.6-28.4l232-48 232-48c13-2.7 25.7 5.7 28.4 18.6s-5.7 25.7-18.6 28.4L280 147.5V224H416c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V288zm64 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H96zm112 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H352z\"],\"cloud-rain\":[512,512,[127783,9926],\"f73d\",\"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zm-6.8 52c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L89.2 372zm160 0c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L249.2 372zm124.9 64.6L409.2 372c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3z\"],\"building-circle-xmark\":[640,512,[],\"e4d4\",\"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"],ship:[576,512,[128674],\"f21a\",\"M192 32c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V64h48c26.5 0 48 21.5 48 48V240l44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240V112c0-26.5 21.5-48 48-48h48V32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7V128H160v90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"],\"arrows-down-to-line\":[576,512,[],\"e4b8\",\"M544 416L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zm22.6-137.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L480 274.7 480 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zm-320-45.3c-12.5-12.5-32.8-12.5-45.3 0L160 274.7 160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7L54.6 233.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3z\"],download:[512,512,[],\"f019\",\"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"],\"face-grin\":[512,512,[128512,\"grin\"],\"f580\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"delete-left\":[576,512,[9003,\"backspace\"],\"f55a\",\"M576 128c0-35.3-28.7-64-64-64H205.3c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7H512c35.3 0 64-28.7 64-64V128zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"],\"eye-dropper\":[512,512,[\"eye-dropper-empty\",\"eyedropper\"],\"f1fb\",\"M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6v42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480h42.4c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7H96V379.9c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z\"],\"file-circle-check\":[576,512,[],\"e5a0\",\"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"],forward:[512,512,[9193],\"f04e\",\"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L224 214.3V256v41.7L52.5 440.6zM256 352V256 128 96c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l192 160c7.3 6.1 11.5 15.1 11.5 24.6s-4.2 18.5-11.5 24.6l-192 160c-9.5 7.9-22.8 9.7-34.1 4.4s-18.4-16.6-18.4-29V352z\"],mobile:[384,512,[128241,\"mobile-android\",\"mobile-phone\"],\"f3ce\",\"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zm80 432h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],\"face-meh\":[512,512,[128528,\"meh\"],\"f11a\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 336H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],\"align-center\":[448,512,[],\"f037\",\"M352 64c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32z\"],\"book-skull\":[448,512,[\"book-dead\"],\"f6b7\",\"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM320 112c0-35.3-35.8-64-80-64s-80 28.7-80 64c0 20.9 12.6 39.5 32 51.2V176c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V163.2c19.4-11.7 32-30.3 32-51.2zM208 96a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM134.3 209.3c-8.1-3.5-17.5 .3-21 8.4s.3 17.5 8.4 21L199.4 272l-77.7 33.3c-8.1 3.5-11.9 12.9-8.4 21s12.9 11.9 21 8.4L240 289.4l105.7 45.3c8.1 3.5 17.5-.3 21-8.4s-.3-17.5-8.4-21L280.6 272l77.7-33.3c8.1-3.5 11.9-12.9 8.4-21s-12.9-11.9-21-8.4L240 254.6 134.3 209.3z\"],\"id-card\":[576,512,[62147,\"drivers-license\"],\"f2c2\",\"M0 96l576 0c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm0 32V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128H0zM64 405.3c0-29.5 23.9-53.3 53.3-53.3H234.7c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7H74.7c-5.9 0-10.7-4.8-10.7-10.7zM176 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm176 16c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16z\"],outdent:[448,512,[\"dedent\"],\"f03b\",\"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM.2 268.6c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6V335.3c0 13.3-15.3 20.8-25.8 12.6L.2 268.6z\"],\"heart-circle-exclamation\":[576,512,[],\"e4fe\",\"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"],house:[576,512,[127968,63498,63500,\"home\",\"home-alt\",\"home-lg-alt\"],\"f015\",\"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"],\"calendar-week\":[448,512,[],\"f784\",\"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H368c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"],\"laptop-medical\":[640,512,[],\"f812\",\"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H352v48c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V272H240c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"],b:[320,512,[98],\"42\",\"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H192c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128H64zm96 192H64V96h96c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288h96 32c35.3 0 64 28.7 64 64s-28.7 64-64 64H64V288z\"],\"file-medical\":[384,512,[],\"f477\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM160 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H224v48c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V352H112c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16h48V240z\"],\"dice-one\":[448,512,[9856],\"f525\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"kiwi-bird\":[576,512,[],\"f535\",\"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4H448c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1s11.2-8.3 11.2-15.3V224c0-70.7-57.3-128-128-128H392.3c-36.4 0-69.9-17.6-101.1-36.4C262.3 42.1 228.3 32 192 32C86 32 0 118 0 224c0 71.1 38.6 133.1 96 166.3V456c0 13.3 10.7 24 24 24s24-10.7 24-24V410c15.3 3.9 31.4 6 48 6c5.4 0 10.7-.2 16-.7V456c0 13.3 10.7 24 24 24s24-10.7 24-24V405.1c12.4-4.4 24.2-10 35.2-16.7zM448 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"],\"arrow-right-arrow-left\":[448,512,[8644,\"exchange\"],\"f0ec\",\"M438.6 150.6c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96 32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l306.7 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96zm-333.3 352c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 416 416 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96z\"],\"rotate-right\":[512,512,[\"redo-alt\",\"rotate-forward\"],\"f2f9\",\"M463.5 224H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5z\"],utensils:[448,512,[127860,61685,\"cutlery\"],\"f2e7\",\"M416 0C400 0 288 32 288 176V288c0 35.3 28.7 64 64 64h32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352 240 32c0-17.7-14.3-32-32-32zM64 16C64 7.8 57.9 1 49.7 .1S34.2 4.6 32.4 12.5L2.1 148.8C.7 155.1 0 161.5 0 167.9c0 45.9 35.1 83.6 80 87.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V255.6c44.9-4.1 80-41.8 80-87.7c0-6.4-.7-12.8-2.1-19.1L191.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S160 7.8 160 16V150.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L127.9 14.6C127.2 6.3 120.3 0 112 0s-15.2 6.3-15.9 14.6L83.7 151c-.5 5.1-4.7 9-9.8 9c-5.4 0-9.8-4.4-9.8-9.8V16zm48.3 152l-.3 0-.3 0 .3-.7 .3 .7z\"],\"arrow-up-wide-short\":[576,512,[\"sort-amount-up\"],\"f161\",\"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"],\"mill-sign\":[384,512,[],\"e1ed\",\"M302.1 42.8c5.9-16.6-2.7-35-19.4-40.9s-35 2.7-40.9 19.4L208 116.1c-5.7 4-11.1 8.5-16 13.5C171.7 108.9 143.3 96 112 96c-19.5 0-37.8 5-53.7 13.7C52.5 101.4 42.9 96 32 96C14.3 96 0 110.3 0 128v80V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-26.5 21.5-48 48-48s48 21.5 48 48v42.5L81.9 469.2c-5.9 16.6 2.7 35 19.4 40.9s35-2.7 40.9-19.4l21.4-60C168.9 441 179.6 448 192 448c17.7 0 32-14.3 32-32V261.5l35.7-100c3.9-1 8.1-1.6 12.3-1.6c26.5 0 48 21.5 48 48V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-58.2-44.3-106-101.1-111.5l19.2-53.8z\"],\"bowl-rice\":[512,512,[],\"e2eb\",\"M176 56c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24zm24 48h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176H72c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H248c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H104c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H344c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H440c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H392c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"],skull:[512,512,[128128],\"f54c\",\"M416 398.9c58.5-41.1 96-104.1 96-174.9C512 100.3 397.4 0 256 0S0 100.3 0 224c0 70.7 37.5 133.8 96 174.9c0 .4 0 .7 0 1.1v64c0 26.5 21.5 48 48 48h48V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h64V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h48c26.5 0 48-21.5 48-48V400c0-.4 0-.7 0-1.1zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm256-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"],\"tower-broadcast\":[576,512,[\"broadcast-tower\"],\"f519\",\"M80.3 44C69.8 69.9 64 98.2 64 128s5.8 58.1 16.3 84c6.6 16.4-1.3 35-17.7 41.7s-35-1.3-41.7-17.7C7.4 202.6 0 166.1 0 128S7.4 53.4 20.9 20C27.6 3.6 46.2-4.3 62.6 2.3S86.9 27.6 80.3 44zM555.1 20C568.6 53.4 576 89.9 576 128s-7.4 74.6-20.9 108c-6.6 16.4-25.3 24.3-41.7 17.7S489.1 228.4 495.7 212c10.5-25.9 16.3-54.2 16.3-84s-5.8-58.1-16.3-84C489.1 27.6 497 9 513.4 2.3s35 1.3 41.7 17.7zM352 128c0 23.7-12.9 44.4-32 55.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V183.4c-19.1-11.1-32-31.7-32-55.4c0-35.3 28.7-64 64-64s64 28.7 64 64zM170.6 76.8C163.8 92.4 160 109.7 160 128s3.8 35.6 10.6 51.2c7.1 16.2-.3 35.1-16.5 42.1s-35.1-.3-42.1-16.5c-10.3-23.6-16-49.6-16-76.8s5.7-53.2 16-76.8c7.1-16.2 25.9-23.6 42.1-16.5s23.6 25.9 16.5 42.1zM464 51.2c10.3 23.6 16 49.6 16 76.8s-5.7 53.2-16 76.8c-7.1 16.2-25.9 23.6-42.1 16.5s-23.6-25.9-16.5-42.1c6.8-15.6 10.6-32.9 10.6-51.2s-3.8-35.6-10.6-51.2c-7.1-16.2 .3-35.1 16.5-42.1s35.1 .3 42.1 16.5z\"],\"truck-pickup\":[640,512,[128763],\"f63c\",\"M368.6 96l76.8 96H288V96h80.6zM224 80V192H64c-17.7 0-32 14.3-32 32v64c-17.7 0-32 14.3-32 32s14.3 32 32 32H65.1c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16h66.3c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32V224c0-17.7-14.3-32-32-32H527.4L418.6 56c-12.1-15.2-30.5-24-50-24H272c-26.5 0-48 21.5-48 48zm0 288a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm288 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0z\"],\"up-long\":[320,512,[\"long-arrow-alt-up\"],\"f30c\",\"M318 177.5c3.8-8.8 2-19-4.6-26l-136-144C172.9 2.7 166.6 0 160 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26S14.4 192 24 192H96l0 288c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32l0-288h72c9.6 0 18.2-5.7 22-14.5z\"],stop:[384,512,[9209],\"f04d\",\"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"],\"code-merge\":[448,512,[],\"f387\",\"M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3V358.7C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V272c26.7 20.1 60 32 96 32h86.7c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48H208c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"],upload:[512,512,[],\"f093\",\"M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"],hurricane:[384,512,[],\"f751\",\"M0 208C0 104.4 75.7 18.5 174.9 2.6C184 1.2 192 8.6 192 17.9V81.2c0 8.4 6.5 15.3 14.7 16.5C307 112.5 384 199 384 303.4c0 103.6-75.7 189.5-174.9 205.4c-9.2 1.5-17.1-5.9-17.1-15.2V430.2c0-8.4-6.5-15.3-14.7-16.5C77 398.9 0 312.4 0 208zm288 48A96 96 0 1 0 96 256a96 96 0 1 0 192 0zm-96-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],mound:[576,512,[],\"e52d\",\"M144.1 179.2C173.8 127.7 228.6 96 288 96s114.2 31.7 143.9 83.2L540.4 368c12.3 21.3-3.1 48-27.7 48H63.3c-24.6 0-40-26.6-27.7-48L144.1 179.2z\"],\"toilet-portable\":[320,512,[],\"e583\",\"M0 32V64H320V32c0-17.7-14.3-32-32-32H32C14.3 0 0 14.3 0 32zM24 96H0v24V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H272v8c0 13.3 10.7 24 24 24s24-10.7 24-24V120 96H296 24zM256 240v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V240c0-8.8 7.2-16 16-16s16 7.2 16 16z\"],\"compact-disc\":[512,512,[128191,128192,128440],\"f51f\",\"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-96-32a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zM96 240c0-35 17.5-71.1 45.2-98.8S205 96 240 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-45.4 0-89.2 22.3-121.5 54.5S64 194.6 64 240c0 8.8 7.2 16 16 16s16-7.2 16-16z\"],\"file-arrow-down\":[384,512,[\"file-download\"],\"f56d\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z\"],caravan:[640,512,[],\"f8ff\",\"M0 112C0 67.8 35.8 32 80 32H416c88.4 0 160 71.6 160 160V352h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0H288c0 53-43 96-96 96s-96-43-96-96H80c-44.2 0-80-35.8-80-80V112zM320 352H448V256H416c-8.8 0-16-7.2-16-16s7.2-16 16-16h32V160c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32V352zM96 128c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96zm96 336a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"],\"shield-cat\":[512,512,[],\"e572\",\"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4h.2c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4h48c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3h.2c5.8 0 10.4 4.7 10.4 10.4V272c0 53-43 96-96 96s-96-43-96-96V154.4zM216 288a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm96-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"],bolt:[448,512,[9889,\"zap\"],\"f0e7\",\"M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288H175.5L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H272.5L349.4 44.6z\"],\"glass-water\":[384,512,[],\"e4f4\",\"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM73 156.5L66.4 64H317.6L311 156.5l-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0c-20.9-10.4-45.5-10.4-66.4 0c-19.4 9.7-42.2 9.7-61.6 0L73 156.5z\"],\"oil-well\":[576,512,[],\"e532\",\"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4L308.5 167.5l-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39L96 222.6V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H406.7L340 257.5l-62.2 16.1L305.3 352H238.7L265 277l-74.6 19.3L137.3 448H96V288.8l337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l11.2-32H327.7l11.2 32H205.1z\"],vault:[576,512,[],\"e2c5\",\"M64 0C28.7 0 0 28.7 0 64V416c0 35.3 28.7 64 64 64H80l16 32h64l16-32H400l16 32h64l16-32h16c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 320a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-240a160 160 0 1 1 0 320 160 160 0 1 1 0-320zM480 221.3V336c0 8.8-7.2 16-16 16s-16-7.2-16-16V221.3c-18.6-6.6-32-24.4-32-45.3c0-26.5 21.5-48 48-48s48 21.5 48 48c0 20.9-13.4 38.7-32 45.3z\"],mars:[448,512,[9794],\"f222\",\"M289.8 46.8c3.7-9 12.5-14.8 22.2-14.8H424c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L321 204.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176S0 401.2 0 304s78.8-176 176-176c37 0 71.4 11.4 99.8 31l52.6-52.6L295 73c-6.9-6.9-8.9-17.2-5.2-26.2zM400 80l0 0h0v0zM176 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"],toilet:[448,512,[128701],\"f7d8\",\"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V196.9c-1.9 1.4-3.8 2.9-5.6 4.4C10.9 214.5 0 232.9 0 256c0 46.9 14.3 84.1 37 112.5c14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H352c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8c22.7-28.4 37-65.5 37-112.5c0-23.1-10.9-41.5-26.4-54.6c-1.8-1.5-3.7-3-5.6-4.4V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM384 256.3c0 1-.3 2.6-3.8 5.6c-4.8 4.1-14 9-29.3 13.4C320.5 284 276.1 288 224 288s-96.5-4-126.9-12.8c-15.3-4.4-24.5-9.3-29.3-13.4c-3.5-3-3.8-4.6-3.8-5.6l0-.3 0-.1c0-1 0-2.5 3.8-5.8c4.8-4.1 14-9 29.3-13.4C127.5 228 171.9 224 224 224s96.5 4 126.9 12.8c15.3 4.4 24.5 9.3 29.3 13.4c3.8 3.2 3.8 4.8 3.8 5.8l0 .1 0 .3zM328.2 384l-.2 .5 0-.5h.2zM112 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],\"plane-circle-xmark\":[640,512,[],\"e557\",\"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"],\"yen-sign\":[320,512,[165,\"cny\",\"jpy\",\"rmb\",\"yen\"],\"f157\",\"M58.6 46.2C48.8 31.5 29 27.6 14.3 37.4S-4.4 67 5.4 81.7L100.2 224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V288h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H219.8L314.6 81.7c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L160 198.3 58.6 46.2z\"],\"ruble-sign\":[384,512,[8381,\"rouble\",\"rub\",\"ruble\"],\"f158\",\"M96 32C78.3 32 64 46.3 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V416H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V320H240c79.5 0 144-64.5 144-144s-64.5-144-144-144H96zM240 256H128V96H240c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"],sun:[512,512,[9728],\"f185\",\"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"],guitar:[512,512,[],\"f7a6\",\"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 256a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"],\"face-laugh-wink\":[512,512,[\"laugh-wink\"],\"f59c\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"],\"horse-head\":[640,512,[],\"f7ab\",\"M64 464V316.9c0-108.4 68.3-205.1 170.5-241.3L404.2 15.5C425.6 7.9 448 23.8 448 46.4c0 11-5.5 21.2-14.6 27.3L400 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5c-16 16-37.8 25.1-60.5 25.1h-3.4c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4l-.1 0 0 0c-6.3 0-12.5-.5-18.6-1.5c-3.6-.6-7.2-1.4-10.7-2.3l0 0c-28.9-7.8-53.1-26.8-67.8-52.2c-4.4-7.6-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4c0 20.3-16.5 36.8-36.8 36.8H112c-26.5 0-48-21.5-48-48zM392 224a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"],\"bore-hole\":[512,512,[],\"e4c3\",\"M256 0c-17.7 0-32 14.3-32 32V296.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4V32c0-17.7-14.3-32-32-32zM48 128c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H384c-17.7 0-32 14.3-32 32V352c0 53-43 96-96 96s-96-43-96-96V160c0-17.7-14.3-32-32-32H48z\"],industry:[576,512,[],\"f275\",\"M64 32C46.3 32 32 46.3 32 64V304v48 80c0 26.5 21.5 48 48 48H496c26.5 0 48-21.5 48-48V304 152.2c0-18.2-19.4-29.7-35.4-21.1L352 215.4V152.2c0-18.2-19.4-29.7-35.4-21.1L160 215.4V64c0-17.7-14.3-32-32-32H64z\"],\"circle-down\":[512,512,[61466,\"arrow-alt-circle-down\"],\"f358\",\"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6L269.8 394.5c-3.8 3.5-8.7 5.5-13.8 5.5s-10.1-2-13.8-5.5L135.1 294.6c-4.5-4.2-7.1-10.1-7.1-16.3c0-12.3 10-22.3 22.3-22.3l57.7 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 57.7 0c12.3 0 22.3 10 22.3 22.3c0 6.2-2.6 12.1-7.1 16.3z\"],\"arrows-turn-to-dots\":[512,512,[],\"e4c1\",\"M249.4 25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 96 416 96c53 0 96 43 96 96v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7-14.3-32-32-32l-146.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm13.3 256l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM384 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192A64 64 0 1 1 64 64a64 64 0 1 1 0 128z\"],\"florin-sign\":[384,512,[],\"e184\",\"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32h80L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H69.3c38.8 0 73.7-23.3 88.6-59.1L213.3 288H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H240l45.1-108.3c5-11.9 16.6-19.7 29.5-19.7H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H314.7z\"],\"arrow-down-short-wide\":[576,512,[\"sort-amount-desc\",\"sort-amount-down-alt\"],\"f884\",\"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"],\"less-than\":[384,512,[62774],\"3c\",\"M380.6 81.7c7.9 15.8 1.5 35-14.3 42.9L103.6 256 366.3 387.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-320-160C6.8 279.2 0 268.1 0 256s6.8-23.2 17.7-28.6l320-160c15.8-7.9 35-1.5 42.9 14.3z\"],\"angle-down\":[448,512,[8964],\"f107\",\"M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"],\"car-tunnel\":[512,512,[],\"e4de\",\"M256 0C114.6 0 0 114.6 0 256V448c0 35.3 28.7 64 64 64h42.8c-6.6-5.9-10.8-14.4-10.8-24V376c0-20.8 11.3-38.9 28.1-48.6l21-64.7c7.5-23.1 29-38.7 53.3-38.7H313.6c24.3 0 45.8 15.6 53.3 38.7l21 64.7c16.8 9.7 28.2 27.8 28.2 48.6V488c0 9.6-4.2 18.1-10.8 24H448c35.3 0 64-28.7 64-64V256C512 114.6 397.4 0 256 0zM362.8 512c-6.6-5.9-10.8-14.4-10.8-24V448H160v40c0 9.6-4.2 18.1-10.8 24H362.8zM190.8 277.5L177 320H335l-13.8-42.5c-1.1-3.3-4.1-5.5-7.6-5.5H198.4c-3.5 0-6.5 2.2-7.6 5.5zM168 408a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm200-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"],\"head-side-cough\":[640,512,[],\"e061\",\"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v0 32L339.2 365.6c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9L448 416v16c0 26.5-21.5 48-48 48H320v8c0 13.3-10.7 24-24 24H256v0H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm352-.2a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM464 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm152-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM592 480a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 312a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"],\"grip-lines\":[448,512,[],\"f7a4\",\"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"],\"thumbs-down\":[512,512,[128078,61576],\"f165\",\"M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2H464c26.5 0 48-21.5 48-48c0-18.5-10.5-34.6-25.9-42.6C497 236.6 504 223.1 504 208c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48H294.5c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7V192v48 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 384H96c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H32C14.3 96 0 110.3 0 128V352c0 17.7 14.3 32 32 32z\"],\"user-lock\":[640,512,[],\"f502\",\"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H392.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-2.1 .1-4.2 .3-6.3c-31-26-71-41.7-114.6-41.7H178.3zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"],\"arrow-right-long\":[512,512,[\"long-arrow-right\"],\"f178\",\"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"],\"anchor-circle-xmark\":[640,512,[],\"e4ac\",\"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"],ellipsis:[448,512,[\"ellipsis-h\"],\"f141\",\"M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"],\"chess-pawn\":[320,512,[9823],\"f443\",\"M215.5 224c29.2-18.4 48.5-50.9 48.5-88c0-57.4-46.6-104-104-104S56 78.6 56 136c0 37.1 19.4 69.6 48.5 88H96c-17.7 0-32 14.3-32 32c0 16.5 12.5 30 28.5 31.8L80 400H240L227.5 287.8c16-1.8 28.5-15.3 28.5-31.8c0-17.7-14.3-32-32-32h-8.5zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512H281.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L256 432H64L22.6 473.4z\"],\"kit-medical\":[576,512,[\"first-aid\"],\"f479\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H96V32H64zm64 0V480H448V32H128zM512 480c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H480V480h32zM256 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V288H208c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16h48V176z\"],\"person-through-window\":[640,512,[],\"e5a9\",\"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4C167.6 186.5 128 245 128 310.2l0 73.8s0 0 0 0H64V64zm288 0l224 0V384H508.3l-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4c44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320H379.2l42.7 64H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48V400c0 26.5 21.5 48 48 48H308.2l33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4L310.5 336l74.6 0 40 48zm-159.5 0H192s0 0 0 0l0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"],toolbox:[512,512,[129520],\"f552\",\"M176 88l0 40 160 0 0-40c0-4.4-3.6-8-8-8L184 80c-4.4 0-8 3.6-8 8zm-48 40l0-40c0-30.9 25.1-56 56-56l144 0c30.9 0 56 25.1 56 56l0 40 28.1 0c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9l0 92.1-128 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32-128 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L0 320l0-92.1c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1l28.1 0zM0 416l0-64 128 0c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0 0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64z\"],\"hands-holding-circle\":[640,512,[],\"e4fb\",\"M320 0a128 128 0 1 1 0 256A128 128 0 1 1 320 0zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"],bug:[512,512,[],\"f188\",\"M256 0c53 0 96 43 96 96v3.6c0 15.7-12.7 28.4-28.4 28.4H188.4c-15.7 0-28.4-12.7-28.4-28.4V96c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4H312c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6V240c0-8.8-7.2-16-16-16s-16 7.2-16 16V479.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96.3c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z\"],\"credit-card\":[576,512,[128179,62083,\"credit-card-alt\"],\"f09d\",\"M64 32C28.7 32 0 60.7 0 96v32H576V96c0-35.3-28.7-64-64-64H64zM576 224H0V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V224zM112 352h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"],car:[512,512,[128664,\"automobile\"],\"f1b9\",\"M135.2 117.4L109.1 192H402.9l-26.1-74.6C372.3 104.6 360.2 96 346.6 96H165.4c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32H346.6c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2V400v48c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V400H96v48c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V400 256c0-26.7 16.4-49.6 39.6-59.2zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"hand-holding-hand\":[576,512,[],\"e4f7\",\"M7.8 207.7c-13.1-17.8-9.3-42.8 8.5-55.9L142.9 58.5C166.2 41.3 194.5 32 223.5 32H384 544c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H507.2l-44.9 36c-22.7 18.2-50.9 28-80 28H304 288 224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64 16c8.8 0 16-7.2 16-16s-7.2-16-16-16H183.4L63.7 216.2c-17.8 13.1-42.8 9.3-55.9-8.5zM382.4 160l0 0 .9 0c-.3 0-.6 0-.9 0zM568.2 304.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 453.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 352l0 0-.9 0c.3 0 .6 0 .9 0z\"],\"book-open-reader\":[512,512,[\"book-reader\"],\"f5da\",\"M160 96a96 96 0 1 1 192 0A96 96 0 1 1 160 96zm80 152V512l-48.4-24.2c-20.9-10.4-43.5-17-66.8-19.3l-96-9.6C12.5 457.2 0 443.5 0 427V224c0-17.7 14.3-32 32-32H62.3c63.6 0 125.6 19.6 177.7 56zm32 264V248c52.1-36.4 114.1-56 177.7-56H480c17.7 0 32 14.3 32 32V427c0 16.4-12.5 30.2-28.8 31.8l-96 9.6c-23.2 2.3-45.9 8.9-66.8 19.3L272 512z\"],\"mountain-sun\":[640,512,[],\"e52f\",\"M560 160A80 80 0 1 0 560 0a80 80 0 1 0 0 160zM55.9 512H381.1h75H578.9c33.8 0 61.1-27.4 61.1-61.1c0-11.2-3.1-22.2-8.9-31.8l-132-216.3C495 196.1 487.8 192 480 192s-15 4.1-19.1 10.7l-48.2 79L286.8 81c-6.6-10.6-18.3-17-30.8-17s-24.1 6.4-30.8 17L8.6 426.4C3 435.3 0 445.6 0 456.1C0 487 25 512 55.9 512z\"],\"arrows-left-right-to-line\":[640,512,[],\"e4ba\",\"M32 64c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64zm214.6 73.4c12.5 12.5 12.5 32.8 0 45.3L205.3 224l229.5 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 288l-229.5 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0zM640 96V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"],\"dice-d20\":[512,512,[],\"f6cf\",\"M48.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L201.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L47.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM16 171.7V295.3c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L40.2 158C29.6 151.6 16 159.3 16 171.7zM310.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L322.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM496 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4V171.7zm-49.3 246L286.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9v52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM233.2 512c3.7 0 6.8-3 6.8-6.8V452.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM41.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L30.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L402.9 238.1c-6.5-10-21.4-9.6-27.3 .8L290.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9H183.1c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM174.4 176H337.6c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2h-3.2c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z\"],\"truck-droplet\":[640,512,[],\"e58c\",\"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 272c39.8 0 72-29.6 72-66c0-27-39.4-82.9-59.9-110.3c-6.1-8.2-18.1-8.2-24.2 0C175.4 123 136 179 136 206c0 36.5 32.2 66 72 66z\"],\"file-circle-xmark\":[576,512,[],\"e5a1\",\"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"],\"temperature-arrow-up\":[576,512,[\"temperature-up\"],\"e040\",\"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM176 0C114.1 0 64 50.1 64 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM480 160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V160z\"],medal:[512,512,[127941],\"f5a2\",\"M4.1 38.2C1.4 34.2 0 29.4 0 24.6C0 11 11 0 24.6 0H133.9c11.2 0 21.7 5.9 27.4 15.5l68.5 114.1c-48.2 6.1-91.3 28.6-123.4 61.9L4.1 38.2zm503.7 0L405.6 191.5c-32.1-33.3-75.2-55.8-123.4-61.9L350.7 15.5C356.5 5.9 366.9 0 378.1 0H487.4C501 0 512 11 512 24.6c0 4.8-1.4 9.6-4.1 13.6zM80 336a176 176 0 1 1 352 0A176 176 0 1 1 80 336zm184.4-94.9c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1L168 298.9c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.2 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9l44.8-23.6c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.6-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1l-22.4-45.4z\"],bed:[640,512,[128716],\"f236\",\"M32 32c17.7 0 32 14.3 32 32V320H288V160c0-17.7 14.3-32 32-32H544c53 0 96 43 96 96V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V416H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32zm144 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"],\"square-h\":[448,512,[\"h-square\"],\"f0fd\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM336 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H160l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H288V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"],podcast:[448,512,[],\"f2ce\",\"M319.4 372c48.5-31.3 80.6-85.9 80.6-148c0-97.2-78.8-176-176-176S48 126.8 48 224c0 62.1 32.1 116.6 80.6 148c1.2 17.3 4 38 7.2 57.1l.2 1C56 395.8 0 316.5 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224c0 92.5-56 171.9-136 206.1l.2-1.1c3.1-19.2 6-39.8 7.2-57zm-2.3-38.1c-1.6-5.7-3.9-11.1-7-16.2c-5.8-9.7-13.5-17-21.9-22.4c19.5-17.6 31.8-43 31.8-71.3c0-53-43-96-96-96s-96 43-96 96c0 28.3 12.3 53.8 31.8 71.3c-8.4 5.4-16.1 12.7-21.9 22.4c-3.1 5.1-5.4 10.5-7 16.2C99.8 307.5 80 268 80 224c0-79.5 64.5-144 144-144s144 64.5 144 144c0 44-19.8 83.5-50.9 109.9zM224 312c32.9 0 64 8.6 64 43.8c0 33-12.9 104.1-20.6 132.9c-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8c0-35.1 31.1-43.8 64-43.8zm0-144a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"],\"temperature-full\":[320,512,[\"temperature-4\",\"thermometer-4\",\"thermometer-full\"],\"f2c7\",\"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V112c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"],bell:[448,512,[128276,61602],\"f0f3\",\"M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"],superscript:[512,512,[],\"f12b\",\"M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V32zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32z\"],\"plug-circle-xmark\":[576,512,[],\"e560\",\"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"],\"star-of-life\":[512,512,[],\"f621\",\"M208 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V172.9l122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.5 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1V480c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V339.1L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4V32z\"],\"phone-slash\":[640,512,[],\"f3dd\",\"M601.2 5.1c10.4-8.2 25.5-6.3 33.7 4.1s6.3 25.5-4.1 33.7l-592 464c-10.4 8.2-25.5 6.3-33.7-4.1s-6.3-25.5 4.1-33.7l155.6-122C101.8 270 64 171.4 64 64c0-18 12.1-33.8 29.5-38.6l88-24c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L208 207.3c12 25.5 27.2 49.2 45 70.7L601.2 5.1zM234.3 415.6l91.3-72c13.7 9.1 28 17.3 43 24.3L409 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C545.8 499.9 530 512 512 512c-104.9 0-201.3-36-277.7-96.4z\"],\"paint-roller\":[512,512,[],\"f5aa\",\"M0 64C0 28.7 28.7 0 64 0H352c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 352c0-17.7 14.3-32 32-32V304c0-44.2 35.8-80 80-80H416c17.7 0 32-14.3 32-32V160 69.5c37.3 13.2 64 48.7 64 90.5v32c0 53-43 96-96 96H272c-8.8 0-16 7.2-16 16v16c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V352z\"],\"handshake-angle\":[640,512,[\"hands-helping\"],\"f4c4\",\"M544 248v3.3l69.7-69.7c21.9-21.9 21.9-57.3 0-79.2L535.6 24.4c-21.9-21.9-57.3-21.9-79.2 0L416.3 64.5c-2.7-.3-5.5-.5-8.3-.5H296c-37.1 0-67.6 28-71.6 64H224V248c0 22.1 17.9 40 40 40s40-17.9 40-40V176c0 0 0-.1 0-.1V160l16 0 136 0c0 0 0 0 .1 0H464c44.2 0 80 35.8 80 80v8zM336 192v56c0 39.8-32.2 72-72 72s-72-32.2-72-72V129.4c-35.9 6.2-65.8 32.3-76 68.2L99.5 255.2 26.3 328.4c-21.9 21.9-21.9 57.3 0 79.2l78.1 78.1c21.9 21.9 57.3 21.9 79.2 0l37.7-37.7c.9 0 1.8 .1 2.7 .1H384c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16H432c26.5 0 48-21.5 48-48c0-12.8-5-24.4-13.2-33c25.7-5 45.1-27.6 45.2-54.8v-.4c-.1-30.8-25.1-55.8-56-55.8c0 0 0 0 0 0l-120 0z\"],\"location-dot\":[384,512,[\"map-marker-alt\"],\"f3c5\",\"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"],file:[384,512,[128196,128459,61462],\"f15b\",\"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z\"],\"greater-than\":[384,512,[62769],\"3e\",\"M3.4 81.7c-7.9 15.8-1.5 35 14.3 42.9L280.5 256 17.7 387.4C1.9 395.3-4.5 414.5 3.4 430.3s27.1 22.2 42.9 14.3l320-160c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-320-160c-15.8-7.9-35-1.5-42.9 14.3z\"],\"person-swimming\":[576,512,[127946,\"swimmer\"],\"f5c4\",\"M309.5 178.4L447.9 297.1c-1.6 .9-3.2 2-4.8 3c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-10.1 0-21.1-2.2-31.9-6.2C163.1 193.2 262.2 96 384 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-26.9 0-52.3 6.6-74.5 18.4zM160 160A64 64 0 1 1 32 160a64 64 0 1 1 128 0zM306.5 325.9C329 341.4 356.5 352 384 352c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 405.7 417 416 384 416c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 341.2 165.1 352 192 352c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"],\"arrow-down\":[384,512,[8595],\"f063\",\"M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"],droplet:[384,512,[128167,\"tint\"],\"f043\",\"M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0h1.8c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z\"],eraser:[576,512,[],\"f12d\",\"M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7H288h9.4H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H387.9L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416H288l-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z\"],\"earth-americas\":[512,512,[127758,\"earth\",\"earth-america\",\"globe-americas\"],\"f57d\",\"M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5v39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9v39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7v-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1H257c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"],\"person-burst\":[640,512,[],\"e53b\",\"M480 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H465.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L408 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.3-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"],dove:[512,512,[128330],\"f4ba\",\"M160.8 96.5c14 17 31 30.9 49.5 42.2c25.9 15.8 53.7 25.9 77.7 31.6V138.8C265.8 108.5 250 71.5 248.6 28c-.4-11.3-7.5-21.5-18.4-24.4c-7.6-2-15.8-.2-21 5.8c-13.3 15.4-32.7 44.6-48.4 87.2zM320 144v30.6l0 0v1.3l0 0 0 32.1c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8 .9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5L245.6 448H320c88.4 0 160-71.6 160-160V128l29.9-44.9c1.3-2 2.1-4.4 2.1-6.8c0-6.8-5.5-12.3-12.3-12.3H400c-44.2 0-80 35.8-80 80zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"],\"battery-empty\":[576,512,[\"battery-0\"],\"f244\",\"M80 160c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zM0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176z\"],socks:[512,512,[129510],\"f696\",\"M175.2 476.6c-9.7-18-15.2-38.7-15.2-60.6c0-40.3 19-78.2 51.2-102.4l64-48c8.1-6 12.8-15.5 12.8-25.6V96H128V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C14.2 357.3 0 385.8 0 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l21.6-16.2zM128 64H288V48c0-14.5 3.9-28.2 10.7-39.9C291 3 281.9 0 272 0H176c-26.5 0-48 21.5-48 48V64zM320 96V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C206.2 357.3 192 385.8 192 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l115.2-86.4C493 382.2 512 344.3 512 304V96H320zM512 64V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48V64H512z\"],inbox:[512,512,[],\"f01c\",\"M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V323.9c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32H121zm0 64H391l48 192H387.8c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7H195.8c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7H73L121 96z\"],section:[256,512,[],\"e447\",\"M64.9 96C67.1 84.4 73.7 76.2 86 70.6c13.8-6.2 34.8-8.9 61.2-4.5c8.8 1.4 36.1 7.1 44.1 9.3c17 4.8 34.7-5.1 39.5-22.2s-5.1-34.7-22.2-39.5c-11.1-3.1-41-9.2-50.9-10.8C123-2.7 88.3-.6 59.7 12.3C29.9 25.8 7.5 50.9 1.6 86.5c-.1 .5-.2 1.1-.2 1.6c-2.2 19.7 .3 37.9 8.1 54.1c7.7 16.1 19.4 28 32 36.9c.6 .5 1.3 .9 2 1.4C22.3 194.2 6.5 215.1 1.7 243c-.1 .6-.2 1.1-.2 1.7c-2.3 19.3 .4 37.1 8.4 53c7.9 15.6 19.8 27 32.3 35.5c22.4 15.2 51.9 24 75.4 31l0 0 3.7 1.1c27.2 8.2 46.9 14.6 59.4 23.8c5.5 4 8.2 7.6 9.5 10.9c1.3 3.2 2.6 8.6 .9 18.1c-1.7 10.1-7.7 18-20.7 23.5c-14 6-35.4 8.5-62 4.4c-12.8-2.1-35.1-9.7-54.1-16.2l0 0c-4.3-1.5-8.5-2.9-12.3-4.2C25.3 420 7.2 429.1 1.6 445.8s3.5 34.9 20.3 40.5c2.6 .8 5.7 1.9 9.2 3.1c18.6 6.3 48.5 16.6 67.3 19.6l0 0 .2 0c34.5 5.4 68.8 3.4 97.2-8.7c29.4-12.6 52.5-36.5 58.5-71.5c3.3-19.3 1.9-37.4-5-53.9c-6.3-15-16.4-26.4-27.6-35.2c16.5-13.9 28.5-33.2 32.6-58.2c3.2-19.8 1.9-38.3-4.8-55.1c-6.7-16.8-17.8-29.4-30.2-39c-22.8-17.6-53.6-27.4-77.7-35l-1.4-.5c-27.4-8.7-47.8-15.3-61.5-25c-6.1-4.4-9.5-8.5-11.4-12.4c-1.8-3.7-3.2-9.3-2.3-18.5zm76.7 208.5c-.2-.1-.4-.1-.6-.2l-1.4-.4c-27.4-8.2-47.9-14.5-61.7-23.8c-6.2-4.2-9.3-7.9-11-11.3c-1.5-3-2.9-7.7-2.1-15.7c1.9-9.7 7.9-17.3 20.5-22.7c14-6 35.4-8.5 62.1-4.3l16.4 2.6c6.3 2.9 11.7 6 16.2 9.5c5.5 4.2 8.4 8.2 10 12.2c1.6 4 2.8 10.4 1.1 20.9c-2.4 14.7-12.8 26.4-37.1 31l-12.4 2.3z\"],\"gauge-high\":[512,512,[62461,\"tachometer-alt\",\"tachometer-alt-fast\"],\"f625\",\"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"],\"envelope-open-text\":[512,512,[],\"f658\",\"M215.4 96H144 107.8 96v8.8V144v40.4 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3V96c0-26.5 21.5-48 48-48h76.6l49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48H416c26.5 0 48 21.5 48 48v44.3l22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4v-89V144 104.8 96H404.2 368 296.6 215.4zM0 448V242.1L217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1V448v0c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64v0zM176 160H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],hospital:[640,512,[127973,62589,\"hospital-alt\",\"hospital-wide\"],\"f0f8\",\"M192 48c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48V512H368V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H192V48zM48 96H160V512H48c-26.5 0-48-21.5-48-48V320H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V224H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V144c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v48H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80V464c0 26.5-21.5 48-48 48H480V96H592zM312 64c-8.8 0-16 7.2-16 16v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V152h24c8.8 0 16-7.2 16-16V120c0-8.8-7.2-16-16-16H344V80c0-8.8-7.2-16-16-16H312z\"],\"wine-bottle\":[512,512,[],\"f72f\",\"M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l64 64c12.5 12.5 12.5 32.8 0 45.3c-11.8 11.8-30.7 12.5-43.2 1.9l-9.5 9.5-48.8 48.8c-9.2 9.2-11.5 22.9-8.6 35.6c9.4 40.9-1.9 85.6-33.8 117.5L197.3 493.3c-25 25-65.5 25-90.5 0l-88-88c-25-25-25-65.5 0-90.5L180.2 153.3c31.9-31.9 76.6-43.1 117.5-33.8c12.6 2.9 26.4 .5 35.5-8.6l48.8-48.8 9.5-9.5c-10.6-12.6-10-31.4 1.9-43.2zM99.3 347.3l65.4 65.4c6.2 6.2 16.4 6.2 22.6 0l97.4-97.4c6.2-6.2 6.2-16.4 0-22.6l-65.4-65.4c-6.2-6.2-16.4-6.2-22.6 0L99.3 324.7c-6.2 6.2-6.2 16.4 0 22.6z\"],\"chess-rook\":[448,512,[9820],\"f447\",\"M32 192V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V192c0 10.1-4.7 19.6-12.8 25.6L352 256l16 144H80L96 256 44.8 217.6C36.7 211.6 32 202.1 32 192zm176 96h32c8.8 0 16-7.2 16-16V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 8.8 7.2 16 16 16zM22.6 473.4L64 432H384l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H38.6C26.1 512 16 501.9 16 489.4c0-6 2.4-11.8 6.6-16z\"],\"bars-staggered\":[512,512,[\"reorder\",\"stream\"],\"f550\",\"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"],dharmachakra:[512,512,[9784],\"f655\",\"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.5 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.5-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],hotdog:[512,512,[127789],\"f80f\",\"M488.6 23.4c31.2 31.2 31.2 81.9 0 113.1l-352 352c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1l352-352c31.2-31.2 81.9-31.2 113.1 0zM443.3 92.7c-6.2-6.2-16.4-6.2-22.6 0c-12.5 12.5-23.8 15.1-37.5 17.6l-2.5 .4c-13.8 2.5-31.6 5.6-48 22c-16.7 16.7-20.9 36-24.1 50.9l0 0v0l-.2 1c-3.4 15.6-6 26.4-15.7 36.1s-20.5 12.3-36.1 15.7l-1 .2c-14.9 3.2-34.2 7.4-50.9 24.1s-20.9 36-24.1 50.9l-.2 1c-3.4 15.6-6 26.4-15.7 36.1c-9.2 9.2-18 10.8-32.7 13.4l0 0-.9 .2c-15.6 2.8-34.9 6.9-54.4 26.4c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0c12.5-12.5 23.8-15.1 37.5-17.6l2.5-.4c13.8-2.5 31.6-5.6 48-22c16.7-16.7 20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1s20.5-12.3 36.1-15.7l1-.2c14.9-3.2 34.2-7.4 50.9-24.1s20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1c9.2-9.2 18-10.8 32.7-13.4l.9-.2c15.6-2.8 34.9-6.9 54.4-26.4c6.2-6.2 6.2-16.4 0-22.6zM191.2 479.2l288-288L495 207c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L289 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17l-15.8-15.8zM17 305C6.1 294.1 0 279.4 0 264s6.1-30.1 17-41L223 17C233.9 6.1 248.6 0 264 0s30.1 6.1 41 17l15.8 15.8-288 288L17 305z\"],\"person-walking-with-cane\":[512,512,[\"blind\"],\"f29d\",\"M176 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8.4 32c-36.4 0-69.6 20.5-85.9 53.1L35.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L128 231.6v43.2c0 17 6.7 33.3 18.7 45.3L224 397.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V390.6c0-12.7-5.1-24.9-14.1-33.9L224 306.7V213.3l70.4 93.9c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8L268.8 166.4C250.7 142.2 222.2 128 192 128H167.6zM128.3 346.8L97 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l22-88.2-52.8-52.8zM450.8 505.1c5 7.3 15 9.1 22.3 4s9.1-15 4-22.3L358.9 316.1c-2.8 3.8-6.1 7.3-10.1 10.3c-5 3.8-10.5 6.4-16.2 7.9L450.8 505.1z\"],drum:[512,512,[129345],\"f569\",\"M501.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L370.2 104.5C335.8 98.7 297 96 256 96C114.6 96 0 128 0 208V368c0 31.3 27.4 58.8 72 78.7V344c0-13.3 10.7-24 24-24s24 10.7 24 24V463.4c33 8.9 71.1 14.5 112 16.1V376c0-13.3 10.7-24 24-24s24 10.7 24 24V479.5c40.9-1.6 79-7.2 112-16.1V344c0-13.3 10.7-24 24-24s24 10.7 24 24V446.7c44.6-19.9 72-47.4 72-78.7V208c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM307.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5C458.4 181.8 464 197.4 464 208c0 .8-2.7 17.2-46 35.9C379.1 260.7 322 272 256 272s-123.1-11.3-162-28.1C50.7 225.2 48 208.8 48 208c0-10.6 5.6-26.2 44.4-41.3C130.6 151.9 187.8 144 256 144c18 0 35.1 .5 51.4 1.6z\"],\"ice-cream\":[448,512,[127848],\"f810\",\"M367.1 160c.6-5.3 .9-10.6 .9-16C368 64.5 303.5 0 224 0S80 64.5 80 144c0 5.4 .3 10.7 .9 16H80c-26.5 0-48 21.5-48 48s21.5 48 48 48h53.5 181H368c26.5 0 48-21.5 48-48s-21.5-48-48-48h-.9zM96 288L200.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L352 288H96z\"],\"heart-circle-bolt\":[576,512,[],\"e4fc\",\"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"],fax:[512,512,[128224,128439],\"f1ac\",\"M128 64v96h64V64H386.7L416 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L432 18.7C420 6.7 403.7 0 386.7 0H192c-35.3 0-64 28.7-64 64zM0 160V480c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zm480 32H128V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM256 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"],paragraph:[448,512,[182],\"f1dd\",\"M192 32h64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352H288V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H192c-88.4 0-160-71.6-160-160s71.6-160 160-160z\"],\"check-to-slot\":[576,512,[\"vote-yea\"],\"f772\",\"M96 80c0-26.5 21.5-48 48-48H432c26.5 0 48 21.5 48 48V384H96V80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48H64V416H512V288h16c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336z\"],\"star-half\":[576,512,[61731],\"f089\",\"M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8V0zM429.9 512c1.1 .1 2.1 .1 3.2 0h-3.2z\"],\"boxes-stacked\":[576,512,[62625,\"boxes\",\"boxes-alt\"],\"f468\",\"M248 0H208c-26.5 0-48 21.5-48 48V160c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V48c0-26.5-21.5-48-48-48H328V80c0 8.8-7.2 16-16 16H264c-8.8 0-16-7.2-16-16V0zM64 256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H184v80c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V256H64zM352 512H512c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H472v80c0 8.8-7.2 16-16 16H408c-8.8 0-16-7.2-16-16V256H352c-15 0-28.8 5.1-39.7 13.8c4.9 10.4 7.7 22 7.7 34.2V464c0 12.2-2.8 23.8-7.7 34.2C323.2 506.9 337 512 352 512z\"],link:[640,512,[128279,\"chain\"],\"f0c1\",\"M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z\"],\"ear-listen\":[512,512,[\"assistive-listening-systems\"],\"f2a2\",\"M398.3 3.4c-15.8-7.9-35-1.5-42.9 14.3c-7.9 15.8-1.5 34.9 14.2 42.9l.4 .2c.4 .2 1.1 .6 2.1 1.2c2 1.2 5 3 8.7 5.6c7.5 5.2 17.6 13.2 27.7 24.2C428.5 113.4 448 146 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7C441.6 33.2 427.7 22.2 417.3 15c-5.3-3.7-9.7-6.4-13-8.3c-1.6-1-3-1.7-4-2.2c-.5-.3-.9-.5-1.2-.7l-.4-.2-.2-.1-.1 0 0 0c0 0 0 0-14.3 28.6L398.3 3.4zM128.7 227.5c6.2-56 53.7-99.5 111.3-99.5c61.9 0 112 50.1 112 112c0 29.3-11.2 55.9-29.6 75.9c-17 18.4-34.4 45.1-34.4 78V400c0 26.5-21.5 48-48 48c-17.7 0-32 14.3-32 32s14.3 32 32 32c61.9 0 112-50.1 112-112v-6.1c0-9.8 5.4-21.7 17.4-34.7C398.3 327.9 416 286 416 240c0-97.2-78.8-176-176-176C149.4 64 74.8 132.5 65.1 220.5c-1.9 17.6 10.7 33.4 28.3 35.3s33.4-10.7 35.3-28.3zM32 512a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM192 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM208 240c0-17.7 14.3-32 32-32s32 14.3 32 32c0 13.3 10.7 24 24 24s24-10.7 24-24c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 13.3 10.7 24 24 24s24-10.7 24-24z\"],\"tree-city\":[640,512,[],\"e587\",\"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM224 160c0 6-1 11-2 16c20 14 34 38 34 64c0 45-36 80-80 80H160V480c0 18-15 32-32 32c-18 0-32-14-32-32V320H80c-45 0-80-35-80-80c0-26 13-50 33-64c-1-5-1-10-1-16c0-53 42-96 96-96c53 0 96 43 96 96z\"],play:[384,512,[9654],\"f04b\",\"M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z\"],font:[448,512,[],\"f031\",\"M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-1.8l18-48H303.8l18 48H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H390.2L254 52.8zM279.8 304H168.2L224 155.1 279.8 304z\"],\"table-cells-row-lock\":[640,512,[],\"e67a\",\"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 224l0 64 88 0 0-64-88 0zm232 0l-88 0 0 64 88 0 0-64zM152 352l-88 0 0 64 88 0 0-64zm56 0l0 64 88 0 0-64-88 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"],\"rupiah-sign\":[512,512,[],\"e23d\",\"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256-96h80c61.9 0 112 50.1 112 112s-50.1 112-112 112H352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 192c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48H352v96h48z\"],\"magnifying-glass\":[512,512,[128269,\"search\"],\"f002\",\"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"],\"table-tennis-paddle-ball\":[640,512,[127955,\"ping-pong-paddle-ball\",\"table-tennis\"],\"f45d\",\"M480 288c-50.1 0-93.6 28.8-114.6 70.8L132.9 126.3l.6-.6 60.1-60.1c87.5-87.5 229.3-87.5 316.8 0c67.1 67.1 82.7 166.3 46.8 248.3C535.8 297.6 509 288 480 288zM113.3 151.9L354.1 392.7c-1.4 7.5-2.1 15.3-2.1 23.3c0 23.2 6.2 44.9 16.9 63.7c-3 .2-6.1 .3-9.2 .3H357c-33.9 0-66.5-13.5-90.5-37.5l-9.8-9.8c-13.1-13.1-34.6-12.4-46.8 1.7L152.2 501c-5.8 6.7-14.2 10.7-23 11s-17.5-3.1-23.8-9.4l-32-32c-6.3-6.3-9.7-14.9-9.4-23.8s4.3-17.2 11-23l66.6-57.7c14-12.2 14.8-33.7 1.7-46.8l-9.8-9.8c-24-24-37.5-56.6-37.5-90.5v-2.7c0-22.8 6.1-44.9 17.3-64.3zM480 320a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"],\"person-dots-from-line\":[576,512,[\"diagnoses\"],\"f470\",\"M288 176A88 88 0 1 0 288 0a88 88 0 1 0 0 176zM78.7 372.9c15-12.5 50-34.4 97.3-50.1V432H400V322.7c47.3 15.8 82.3 37.7 97.3 50.1c20.4 17 50.6 14.2 67.6-6.1s14.2-50.6-6.1-67.6c-12-10-30.1-22.5-53.2-35C497.2 278.4 481.7 288 464 288c-26.5 0-48-21.5-48-48c0-4.3 .6-8.4 1.6-12.4C379.1 215.9 335.3 208 288 208c-60.2 0-114.9 12.9-160 29.9c0 .7 0 1.4 0 2.1c0 26.5-21.5 48-48 48c-11.8 0-22.7-4.3-31-11.4c-13.1 8.1-23.7 15.9-31.7 22.5c-20.4 17-23.1 47.2-6.1 67.6s47.2 23.1 67.6 6.1zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM224 280a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM96 240a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm368 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"],\"trash-can-arrow-up\":[448,512,[\"trash-restore-alt\"],\"f82a\",\"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"],\"naira-sign\":[448,512,[],\"e1f6\",\"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H228.2l97.2 145.8c7.8 11.7 22.4 17 35.9 12.9s22.7-16.5 22.7-30.6V320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V256H262.5L122.6 46.3zM305.1 320H320v22.3L305.1 320zM185.5 256H128V169.7L185.5 256z\"],\"cart-arrow-down\":[576,512,[],\"f218\",\"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H69.5c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H199.7c-11.5 0-21.4-8.2-23.6-19.5L170.7 288H459.2c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32H360V134.1l23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23V32H120.1C111 12.8 91.6 0 69.5 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"],\"walkie-talkie\":[384,512,[],\"f8ef\",\"M112 24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144V300.1c0 12.7 5.1 24.9 14.1 33.9l3.9 3.9c9 9 14.1 21.2 14.1 33.9V464c0 26.5 21.5 48 48 48H304c26.5 0 48-21.5 48-48V371.9c0-12.7 5.1-24.9 14.1-33.9l3.9-3.9c9-9 14.1-21.2 14.1-33.9V144c0-26.5-21.5-48-48-48H320c0-17.7-14.3-32-32-32s-32 14.3-32 32H224c0-17.7-14.3-32-32-32s-32 14.3-32 32H112V24zm0 136H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],\"file-pen\":[576,512,[128221,\"file-edit\"],\"f31c\",\"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V299.6l-94.7 94.7c-8.2 8.2-14 18.5-16.8 29.7l-15 60.1c-2.3 9.4-1.8 19 1.4 27.8H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"],receipt:[384,512,[129534],\"f543\",\"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.3-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6s14 12.4 14 21.8V488c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6L304 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L192 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488V24C0 14.6 5.5 6.1 14 2.2zM96 144c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96zM80 352c0 8.8 7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zM96 240c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96z\"],\"square-pen\":[448,512,[\"pen-square\",\"pencil-square\"],\"f14b\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"],\"suitcase-rolling\":[384,512,[],\"f5c1\",\"M144 56c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v72H144V56zm176 72H288V56c0-30.9-25.1-56-56-56H152C121.1 0 96 25.1 96 56v72H64c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32H256c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64zM112 224H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],\"person-circle-exclamation\":[576,512,[],\"e53f\",\"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"],\"chevron-down\":[512,512,[],\"f078\",\"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"],\"battery-full\":[576,512,[128267,\"battery\",\"battery-5\"],\"f240\",\"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm368 96H96V320H448V192z\"],\"skull-crossbones\":[448,512,[128369,9760],\"f714\",\"M368 128c0 44.4-25.4 83.5-64 106.4V256c0 17.7-14.3 32-32 32H176c-17.7 0-32-14.3-32-32V234.4c-38.6-23-64-62.1-64-106.4C80 57.3 144.5 0 224 0s144 57.3 144 128zM168 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM3.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L224 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L295.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L224 419.8 46.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L152.4 384 17.7 316.6C1.9 308.7-4.5 289.5 3.4 273.7z\"],\"code-compare\":[512,512,[],\"e13a\",\"M320 488c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1s14.2 12.4 14.2 21.9v40h16c35.3 0 64-28.7 64-64V153.3C371.7 141 352 112.8 352 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V320c0 70.7-57.3 128-128 128H320v40zM456 80a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 24c0-9.5 5.6-18.1 14.2-21.9s18.8-2.3 25.8 4.1l80 72c5.1 4.6 7.9 11 7.9 17.8s-2.9 13.3-7.9 17.8l-80 72c-7 6.3-17.2 7.9-25.8 4.1s-14.2-12.4-14.2-21.9V128H176c-35.3 0-64 28.7-64 64V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-70.7 57.3-128 128-128h16V24zM56 432a24 24 0 1 0 48 0 24 24 0 1 0 -48 0z\"],\"list-ul\":[512,512,[\"list-dots\"],\"f0ca\",\"M64 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM64 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48-208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"],\"school-lock\":[640,512,[],\"e56f\",\"M302.2 5.4c10.7-7.2 24.8-7.2 35.5 0L473.7 96H592c26.5 0 48 21.5 48 48V272c0-61.9-50.1-112-112-112s-112 50.1-112 112v24.6c-19.1 11.1-32 31.7-32 55.4H320.3l-.3 0c-35.3 0-64 28.7-64 64v96h64v0H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48H166.3L302.2 5.4zM80 208v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm0 128v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm240-72a88 88 0 1 0 0-176 88 88 0 1 0 0 176zm16-120v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 96c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"],\"tower-cell\":[576,512,[],\"e585\",\"M62.6 2.3C46.2-4.3 27.6 3.6 20.9 20C7.4 53.4 0 89.9 0 128s7.4 74.6 20.9 108c6.6 16.4 25.3 24.3 41.7 17.7S86.9 228.4 80.3 212C69.8 186.1 64 157.8 64 128s5.8-58.1 16.3-84C86.9 27.6 79 9 62.6 2.3zm450.8 0C497 9 489.1 27.6 495.7 44C506.2 69.9 512 98.2 512 128s-5.8 58.1-16.3 84c-6.6 16.4 1.3 35 17.7 41.7s35-1.3 41.7-17.7c13.5-33.4 20.9-69.9 20.9-108s-7.4-74.6-20.9-108C548.4 3.6 529.8-4.3 513.4 2.3zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9L177.7 448H398.3l20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM369.2 384H206.8l14.5-32H354.7l14.5 32zM288 205.3L325.6 288H250.4L288 205.3zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"],\"down-long\":[320,512,[\"long-arrow-alt-down\"],\"f309\",\"M2 334.5c-3.8 8.8-2 19 4.6 26l136 144c4.5 4.8 10.8 7.5 17.4 7.5s12.9-2.7 17.4-7.5l136-144c6.6-7 8.4-17.2 4.6-26s-12.5-14.5-22-14.5l-72 0 0-288c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32l0 288-72 0c-9.6 0-18.2 5.7-22 14.5z\"],\"ranking-star\":[640,512,[],\"e561\",\"M353.8 54.1L330.2 6.3c-3.9-8.3-16.1-8.6-20.4 0L286.2 54.1l-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V288c0-17.7-14.3-32-32-32H256zM32 320c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H160c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zm416 96v64c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V416c0-17.7-14.3-32-32-32H480c-17.7 0-32 14.3-32 32z\"],\"chess-king\":[448,512,[9818],\"f43f\",\"M224 0c17.7 0 32 14.3 32 32V48h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H256v48H408c22.1 0 40 17.9 40 40c0 5.3-1 10.5-3.1 15.4L368 400H80L3.1 215.4C1 210.5 0 205.3 0 200c0-22.1 17.9-40 40-40H192V112H176c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V32c0-17.7 14.3-32 32-32zM38.6 473.4L80 432H368l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H54.6C42.1 512 32 501.9 32 489.4c0-6 2.4-11.8 6.6-16z\"],\"person-harassing\":[576,512,[],\"e549\",\"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM59.4 304.5L88 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H145.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM464 344v58.7l-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L408.8 438l54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3c36.4 0 65.9-29.5 65.9-65.9V344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16h56c8.8 0 16-7.2 16-16s-7.2-16-16-16H304c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"],\"brazilian-real-sign\":[512,512,[],\"e46c\",\"M400 0c17.7 0 32 14.3 32 32V50.2c12.5 2.3 24.7 6.4 36.2 12.1l10.1 5.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-10.2-5.1c-9.9-5-20.9-7.5-32-7.5h-1.7c-29.8 0-53.9 24.1-53.9 53.9c0 22 13.4 41.8 33.9 50l52 20.8c44.7 17.9 74.1 61.2 74.1 109.4v3.4c0 51.2-33.6 94.6-80 109.2V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V460.6c-15-3.5-29.4-9.7-42.3-18.3l-23.4-15.6c-14.7-9.8-18.7-29.7-8.9-44.4s29.7-18.7 44.4-8.9L361.2 389c10.8 7.2 23.4 11 36.3 11c27.9 0 50.5-22.6 50.5-50.5v-3.4c0-22-13.4-41.8-33.9-50l-52-20.8C317.3 257.4 288 214.1 288 165.9C288 114 321.5 70 368 54.2V32c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256z\"],\"landmark-dome\":[512,512,[\"landmark-alt\"],\"f752\",\"M248 0h16c13.3 0 24 10.7 24 24V34.7C368.4 48.1 431.9 111.6 445.3 192H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h2.7C80.1 111.6 143.6 48.1 224 34.7V24c0-13.3 10.7-24 24-24zM64 288h64V416h40V288h64V416h48V288h64V416h40V288h64V420.3c.6 .3 1.2 .7 1.7 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V288z\"],\"arrow-up\":[384,512,[8593],\"f062\",\"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"],tv:[640,512,[63717,\"television\",\"tv-alt\"],\"f26c\",\"M64 64V352H576V64H64zM0 64C0 28.7 28.7 0 64 0H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM128 448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"],shrimp:[512,512,[129424],\"e448\",\"M64 32C28.7 32 0 60.7 0 96s28.7 64 64 64h1c3.7 88.9 77 160 167 160h56V128H264 88.8 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H464c8.8 0 16-7.2 16-16s-7.2-16-16-16H64zM224 456c0 13.3 10.7 24 24 24h72V407.8l-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3v69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111c0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6c0 4.6-.7 9-1.9 13.1L472.6 415zM336 128H320V320h18.3c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM168 192a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"],\"list-check\":[512,512,[\"tasks\"],\"f0ae\",\"M152.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 113C-2.3 103.6-2.3 88.4 7 79s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM224 96c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32zM48 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"],\"jug-detergent\":[384,512,[],\"e519\",\"M96 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24V48h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H88C74.7 96 64 85.3 64 72s10.7-24 24-24h8V24zM0 256c0-70.7 57.3-128 128-128H256c70.7 0 128 57.3 128 128V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256zm256 0v96c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"],\"circle-user\":[512,512,[62142,\"user-circle\"],\"f2bd\",\"M399 384.2C376.9 345.8 335.4 320 288 320H224c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z\"],\"user-shield\":[640,512,[],\"f505\",\"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c1.8 0 3.5-.2 5.3-.5c-76.3-55.1-99.8-141-103.1-200.2c-16.1-4.8-33.1-7.3-50.7-7.3H178.3zm308.8-78.3l-120 48C358 277.4 352 286.2 352 296c0 63.3 25.9 168.8 134.8 214.2c5.9 2.5 12.6 2.5 18.5 0C614.1 464.8 640 359.3 640 296c0-9.8-6-18.6-15.1-22.3l-120-48c-5.7-2.3-12.1-2.3-17.8 0zM591.4 312c-3.9 50.7-27.2 116.7-95.4 149.7V273.8L591.4 312z\"],wind:[512,512,[],\"f72e\",\"M288 32c0 17.7 14.3 32 32 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c53 0 96-43 96-96s-43-96-96-96H320c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32 14.3-32 32zM128 512h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H160c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"],\"car-burst\":[640,512,[\"car-crash\"],\"f5e1\",\"M176 8c-6.6 0-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6l35.3-32.5 9.5-35.4 10.4-38.6c8-29.9 30.5-52.1 57.9-60.9l41-59.2c11.3-16.3 26.4-28.9 43.5-37.2c-.4-.6-.8-1.2-1.3-1.8c-4.1-5.1-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74C188.4 12 182.6 8 176 8zM367.7 161.5l135.6 36.3c6.5 1.8 11.3 7.4 11.8 14.2l4.6 56.5-201.5-54 32.2-46.6c3.8-5.6 10.8-8.1 17.3-6.4zm-69.9-30l-47.9 69.3c-21.6 3-40.3 18.6-46.3 41l-10.4 38.6-16.6 61.8-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 247.3 66.3-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9L595 388l10.4-38.6c6-22.4-2.5-45.2-19.6-58.7l-6.8-84c-2.7-33.7-26.4-62-59-70.8L384.2 99.7c-32.7-8.8-67.3 4-86.5 31.8zm-17 131a24 24 0 1 1 -12.4 46.4 24 24 0 1 1 12.4-46.4zm217.9 83.2A24 24 0 1 1 545 358.1a24 24 0 1 1 -46.4-12.4z\"],y:[384,512,[121],\"59\",\"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V298.3L378 82.6c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"],\"person-snowboarding\":[512,512,[127938,\"snowboarding\"],\"f7ce\",\"M209.7 3.4c15.8-7.9 35-1.5 42.9 14.3l25 50 42.4 8.5c19.5 3.9 37.8 12.3 53.5 24.5l126.1 98.1c14 10.9 16.5 31 5.6 44.9s-31 16.5-44.9 5.6l-72.1-56.1-71.5 31.8 33.1 27.6c23.2 19.3 33.5 50 26.7 79.4l-17.4 75.2c-2.2 9.4-8.2 16.8-16.1 21l86.5 33.1c4.6 1.8 9.4 2.6 14.3 2.6H472c13.3 0 24 10.7 24 24s-10.7 24-24 24H443.8c-10.8 0-21.4-2-31.5-5.8L60.1 371.3c-11.5-4.4-22-11.2-30.8-20L7 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l22.4 8.6c-.8-1.6-1.5-3.2-2.1-4.9c-5.6-16.8 3.5-34.9 20.2-40.5L192 264.9l0-53.2c0-24.2 13.7-46.4 35.4-57.2l45.2-22.6-7.5-1.5c-19.4-3.9-35.9-16.5-44.7-34.1l-25-50c-7.9-15.8-1.5-35 14.3-42.9zM139 350.1l159 60.9c-2.1-5.6-2.6-11.9-1.1-18.2l17.4-75.2c1.4-5.9-.7-12-5.3-15.9l-52.8-44 0 18.8c0 20.7-13.2 39-32.8 45.5L139 350.1zM432 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"],\"truck-fast\":[640,512,[\"shipping-fast\"],\"f48b\",\"M112 0C85.5 0 64 21.5 64 48V96H16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 272c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 48c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 240c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 208c8.8 0 16 7.2 16 16s-7.2 16-16 16H64V416c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H112zM544 237.3V256H416V160h50.7L544 237.3zM160 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm272 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"],fish:[576,512,[128031],\"f578\",\"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8C452.3 403.5 399.4 432 336 432s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"],\"user-graduate\":[448,512,[],\"f501\",\"M219.3 .5c3.1-.6 6.3-.6 9.4 0l200 40C439.9 42.7 448 52.6 448 64s-8.1 21.3-19.3 23.5L352 102.9V160c0 70.7-57.3 128-128 128s-128-57.3-128-128V102.9L48 93.3v65.1l15.7 78.4c.9 4.7-.3 9.6-3.3 13.3s-7.6 5.9-12.4 5.9H16c-4.8 0-9.3-2.1-12.4-5.9s-4.3-8.6-3.3-13.3L16 158.4V86.6C6.5 83.3 0 74.3 0 64C0 52.6 8.1 42.7 19.3 40.5l200-40zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6z\"],\"circle-half-stroke\":[512,512,[9680,\"adjust\"],\"f042\",\"M448 256c0-106-86-192-192-192V448c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"],clapperboard:[512,512,[],\"e131\",\"M448 32H361.9l-1 1-127 127h92.1l1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128V96c0-15.1-5.3-29.1-14-40l-104 104H512zM294.1 32H201.9l-1 1L73.9 160h92.1l1-1 127-127zM64 32C28.7 32 0 60.7 0 96v64H6.1l1-1 127-127H64zM512 192H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192z\"],\"circle-radiation\":[512,512,[9762,\"radiation-alt\"],\"f7ba\",\"M256 64a192 192 0 1 1 0 384 192 192 0 1 1 0-384zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM200 256c0-20.7 11.3-38.8 28-48.5l-36-62.3c-8.8-15.3-28.7-20.8-42-9c-25.6 22.6-43.9 53.3-50.9 88.1C95.7 241.5 110.3 256 128 256l72 0zm28 48.5l-36 62.4c-8.8 15.3-3.6 35.2 13.1 40.8c16 5.4 33.1 8.3 50.9 8.3s34.9-2.9 50.9-8.3c16.7-5.6 21.9-25.5 13.1-40.8l-36-62.4c-8.2 4.8-17.8 7.5-28 7.5s-19.8-2.7-28-7.5zM312 256l72 0c17.7 0 32.3-14.5 28.8-31.8c-7-34.8-25.3-65.5-50.9-88.1c-13.2-11.7-33.1-6.3-42 9l-36 62.3c16.7 9.7 28 27.8 28 48.5zm-56 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],baseball:[512,512,[129358,9918,\"baseball-ball\"],\"f433\",\"M62.7 223.4c-4.8 .4-9.7 .6-14.7 .6c-15.6 0-30.8-2-45.2-5.9C19.2 107.1 107.1 19.2 218.1 2.8C222 17.2 224 32.4 224 48c0 4.9-.2 9.8-.6 14.7c-.7 8.8 5.8 16.5 14.6 17.3s16.5-5.8 17.3-14.6c.5-5.7 .7-11.5 .7-17.3c0-16.5-1.9-32.6-5.6-47.9c1.8 0 3.7-.1 5.6-.1C397.4 0 512 114.6 512 256c0 1.9 0 3.7-.1 5.6c-15.4-3.6-31.4-5.6-47.9-5.6c-5.8 0-11.6 .2-17.3 .7c-8.8 .7-15.4 8.5-14.6 17.3s8.5 15.4 17.3 14.6c4.8-.4 9.7-.6 14.7-.6c15.6 0 30.8 2 45.2 5.9C492.8 404.9 404.9 492.8 293.9 509.2C290 494.8 288 479.6 288 464c0-4.9 .2-9.8 .6-14.7c.7-8.8-5.8-16.5-14.6-17.3s-16.5 5.8-17.3 14.6c-.5 5.7-.7 11.5-.7 17.3c0 16.5 1.9 32.6 5.6 47.9c-1.8 0-3.7 .1-5.6 .1C114.6 512 0 397.4 0 256c0-1.9 0-3.7 .1-5.6C15.4 254.1 31.5 256 48 256c5.8 0 11.6-.2 17.3-.7c8.8-.7 15.4-8.5 14.6-17.3s-8.5-15.4-17.3-14.6zM121.3 208c-8 3.7-11.6 13.2-7.9 21.2s13.2 11.6 21.2 7.9c45.2-20.8 81.7-57.2 102.5-102.5c3.7-8 .2-17.5-7.9-21.2s-17.5-.2-21.2 7.9c-17.6 38.3-48.5 69.2-86.7 86.7zm277.2 74.7c-3.7-8-13.2-11.6-21.2-7.9c-45.2 20.8-81.7 57.2-102.5 102.5c-3.7 8-.2 17.5 7.9 21.2s17.5 .2 21.2-7.9c17.6-38.3 48.5-69.2 86.7-86.7c8-3.7 11.6-13.2 7.9-21.2z\"],\"jet-fighter-up\":[512,512,[],\"e518\",\"M270.7 9.7C268.2 3.8 262.4 0 256 0s-12.2 3.8-14.7 9.7L197.2 112.6c-3.4 8-5.2 16.5-5.2 25.2v77l-144 84V280c0-13.3-10.7-24-24-24s-24 10.7-24 24v56 32 24c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H192v32.7L133.5 468c-3.5 3-5.5 7.4-5.5 12v16c0 8.8 7.2 16 16 16h96V448c0-8.8 7.2-16 16-16s16 7.2 16 16v64h96c8.8 0 16-7.2 16-16V480c0-4.6-2-9-5.5-12L320 416.7V384H464v8c0 13.3 10.7 24 24 24s24-10.7 24-24V368 336 280c0-13.3-10.7-24-24-24s-24 10.7-24 24v18.8l-144-84v-77c0-8.7-1.8-17.2-5.2-25.2L270.7 9.7z\"],\"diagram-project\":[576,512,[\"project-diagram\"],\"f542\",\"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48V96H384V80c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H432c-26.5 0-48-21.5-48-48V160H192v16c0 1.7-.1 3.4-.3 5L272 288h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V336c0-1.7 .1-3.4 .3-5L144 224H48c-26.5 0-48-21.5-48-48V80z\"],copy:[448,512,[],\"f0c5\",\"M208 0H332.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128h80v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z\"],\"volume-xmark\":[576,512,[\"volume-mute\",\"volume-times\"],\"f6a9\",\"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM425 167l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"],\"hand-sparkles\":[640,512,[],\"e05d\",\"M320 0c17.7 0 32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V128c0-17.7 14.3-32 32-32s32 14.3 32 32V323.1c-11.9 4.8-21.3 14.9-25 27.8l-8.9 31.2L478.9 391C460.6 396.3 448 413 448 432c0 18.9 12.5 35.6 30.6 40.9C448.4 497.4 409.9 512 368 512H348.8c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V32c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L288 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L288 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L320 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L320 352l-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456l-13.8 48.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456l-48.3-13.8c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408l13.8-48.3c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"],grip:[448,512,[\"grip-horizontal\"],\"f58d\",\"M128 136c0-22.1-17.9-40-40-40L40 96C17.9 96 0 113.9 0 136l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40l0-48zm0 192c0-22.1-17.9-40-40-40H40c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40H200c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40H360c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328z\"],\"share-from-square\":[576,512,[61509,\"share-square\"],\"f14d\",\"M352 224H305.5c-45 0-81.5 36.5-81.5 81.5c0 22.3 10.3 34.3 19.2 40.5c6.8 4.7 12.8 12 12.8 20.3c0 9.8-8 17.8-17.8 17.8h-2.5c-2.4 0-4.8-.4-7.1-1.4C210.8 374.8 128 333.4 128 240c0-79.5 64.5-144 144-144h80V34.7C352 15.5 367.5 0 386.7 0c8.6 0 16.8 3.2 23.2 8.9L548.1 133.3c7.6 6.8 11.9 16.5 11.9 26.7s-4.3 19.9-11.9 26.7l-139 125.1c-5.9 5.3-13.5 8.2-21.4 8.2H384c-17.7 0-32-14.3-32-32V224zM80 96c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16H400c8.8 0 16-7.2 16-16V384c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V112C0 67.8 35.8 32 80 32h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H80z\"],\"child-combatant\":[576,512,[\"child-rifle\"],\"e4e0\",\"M176 128A64 64 0 1 0 176 0a64 64 0 1 0 0 128zm-8 352V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V300.5L260.9 321c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-51.7-82.1c-17.6-27.9-48.3-44.9-81.2-44.9H169.8c-33 0-63.7 16.9-81.2 44.9L36.9 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10L104 300.5V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM448 0H432 416c-8.8 0-16 7.2-16 16s7.2 16 16 16V132.3c-9.6 5.5-16 15.9-16 27.7v32c-17.7 0-32 14.3-32 32V368c0 17.7 14.3 32 32 32h16v96c0 8.8 7.2 16 16 16h59.5c10.4 0 18-9.8 15.5-19.9L484 400h44c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H480V325.3l53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2V208c0-8.8-7.2-16-16-16H512c-8.8 0-16 7.2-16 16v56l-16 5.3V160c0-11.8-6.4-22.2-16-27.7V16c0-8.8-7.2-16-16-16z\"],gun:[576,512,[],\"e19b\",\"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24v8H32C14.3 64 0 78.3 0 96V208c0 17.7 14.3 32 32 32H42c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480h96c14.7 0 27.5-10 31-24.2L217 352H321.4c23.7 0 44.8-14.9 52.7-37.2L400.9 240H432c8.5 0 16.6-3.4 22.6-9.4L477.3 208H544c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32H528V56zM321.4 304H229l16-64h105l-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],\"square-phone\":[448,512,[\"phone-square\"],\"f098\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm90.7 96.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L168 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C336.9 378 329 384 320 384C196.3 384 96 283.7 96 160c0-9 6-16.9 14.7-19.3l44-12z\"],plus:[448,512,[10133,61543,\"add\"],\"2b\",\"M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z\"],expand:[448,512,[],\"f065\",\"M32 32C14.3 32 0 46.3 0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V352zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H320zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V352z\"],computer:[640,512,[],\"e4e5\",\"M384 96V320H64L64 96H384zM64 32C28.7 32 0 60.7 0 96V320c0 35.3 28.7 64 64 64H181.3l-10.7 32H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H277.3l-10.7-32H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm464 0c-26.5 0-48 21.5-48 48V432c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H528zm16 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],xmark:[384,512,[128473,10005,10006,10060,215,\"close\",\"multiply\",\"remove\",\"times\"],\"f00d\",\"M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z\"],\"arrows-up-down-left-right\":[512,512,[\"arrows\"],\"f047\",\"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4V224H109.3l9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4H224V402.7l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4V288H402.7l-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4H288V109.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"],\"chalkboard-user\":[640,512,[\"chalkboard-teacher\"],\"f51c\",\"M160 64c0-35.3 28.7-64 64-64H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H336.8c-11.8-25.5-29.9-47.5-52.4-64H384V320c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v32h64V64L224 64v49.1C205.2 102.2 183.3 96 160 96V64zm0 64a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM133.3 352h53.3C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7H26.7C11.9 512 0 500.1 0 485.3C0 411.7 59.7 352 133.3 352z\"],\"peso-sign\":[384,512,[],\"e222\",\"M64 32C46.3 32 32 46.3 32 64v64c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c68.4 0 127.7-39 156.8-96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.7c.5-5.3 .7-10.6 .7-16s-.2-10.7-.7-16h.7c17.7 0 32-14.3 32-32s-14.3-32-32-32H332.8C303.7 71 244.4 32 176 32H64zm190.4 96H96V96h80c30.5 0 58.2 12.2 78.4 32zM96 192H286.9c.7 5.2 1.1 10.6 1.1 16s-.4 10.8-1.1 16H96V192zm158.4 96c-20.2 19.8-47.9 32-78.4 32H96V288H254.4z\"],\"building-shield\":[576,512,[],\"e4d8\",\"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V207l-42.4 17H304 272c-8.8 0-16 7.2-16 16v32 24.2V304c0 .9 .1 1.7 .2 2.6c2.3 58.1 24.1 144.8 98.7 201.5c-5.8 2.5-12.2 3.9-18.9 3.9H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zM423.1 225.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"],baby:[448,512,[],\"f77c\",\"M152 88a72 72 0 1 1 144 0A72 72 0 1 1 152 88zM39.7 144.5c13-17.9 38-21.8 55.9-8.8L131.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25V288H128V251.7c-15.2-6.7-29.7-15.1-43.3-25L48.5 200.3c-17.9-13-21.8-38-8.8-55.9zm89.8 184.8l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C70 438.6 68.1 417 79.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L284 419.4l-26-37.2z\"],\"users-line\":[640,512,[],\"e592\",\"M211.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM32 256c0 17.7 14.3 32 32 32h85.6c10.1-39.4 38.6-71.5 75.8-86.6c-9.7-6-21.2-9.4-33.4-9.4H96c-35.3 0-64 28.7-64 64zm461.6 32H576c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H448c-11.7 0-22.7 3.1-32.1 8.6c38.1 14.8 67.4 47.3 77.7 87.4zM391.2 226.4c-6.9-1.6-14.2-2.4-21.6-2.4h-96c-8.5 0-16.7 1.1-24.5 3.1c-30.8 8.1-55.6 31.1-66.1 60.9c-3.5 10-5.5 20.8-5.5 32c0 17.7 14.3 32 32 32h224c17.7 0 32-14.3 32-32c0-11.2-1.9-22-5.5-32c-10.8-30.7-36.8-54.2-68.9-61.6zM563.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM321.6 192a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"],\"quote-left\":[448,512,[8220,\"quote-left-alt\"],\"f10d\",\"M0 216C0 149.7 53.7 96 120 96h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320 288 216zm256 0c0-66.3 53.7-120 120-120h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H320c-35.3 0-64-28.7-64-64V320 288 216z\"],tractor:[640,512,[128668],\"f722\",\"M96 64c0-35.3 28.7-64 64-64H266.3c26.2 0 49.7 15.9 59.4 40.2L373.7 160H480V126.2c0-24.8 5.8-49.3 16.9-71.6l2.5-5c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.5 5c-6.7 13.3-10.1 28-10.1 42.9V160h56c22.1 0 40 17.9 40 40v45.4c0 16.5-8.5 31.9-22.6 40.7l-43.3 27.1c-14.2-5.9-29.8-9.2-46.1-9.2c-39.3 0-74.1 18.9-96 48H352c0 17.7-14.3 32-32 32h-8.2c-1.7 4.8-3.7 9.5-5.8 14.1l5.8 5.8c12.5 12.5 12.5 32.8 0 45.3l-22.6 22.6c-12.5 12.5-32.8 12.5-45.3 0l-5.8-5.8c-4.6 2.2-9.3 4.1-14.1 5.8V480c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32v-8.2c-4.8-1.7-9.5-3.7-14.1-5.8l-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1H32c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h8.2c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6V192 160 64zm170.3 0H160v96h32H304.7L266.3 64zM176 256a80 80 0 1 0 0 160 80 80 0 1 0 0-160zM528 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z\"],\"trash-arrow-up\":[448,512,[\"trash-restore\"],\"f829\",\"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"],\"arrow-down-up-lock\":[640,512,[],\"e4b0\",\"M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7V288H416V272c0-17.2 3.9-33.5 10.8-48H352V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3V224l-128 0H96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32H96V402.7L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0zM160 192V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64zM288 320V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H288zm240-80c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"],\"lines-leaning\":[384,512,[],\"e51e\",\"M190.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM352 32c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32z\"],\"ruler-combined\":[512,512,[],\"f546\",\"M.2 468.9C2.7 493.1 23.1 512 48 512l96 0 320 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-48c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 368l0 96c0 1.7 .1 3.3 .2 4.9z\"],copyright:[512,512,[169],\"f1f9\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z\"],equals:[448,512,[62764],\"3d\",\"M48 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48z\"],blender:[512,512,[],\"f517\",\"M0 64C0 28.7 28.7 0 64 0h64 32H470.1c21.1 0 36.4 20.1 30.9 40.4L494.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.8l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H459.6l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L416 352H160l-8.7-96H64c-35.3 0-64-28.7-64-64V64zM145.5 192L133.8 64H64V192h81.5zM144 384H432c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],teeth:[576,512,[],\"f62e\",\"M0 128C0 75 43 32 96 32H480c53 0 96 43 96 96V384c0 53-43 96-96 96H96c-53 0-96-43-96-96V128zm176 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48s-48 21.5-48 48zm176-48c-26.5 0-48 21.5-48 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48zM48 208v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zM96 384c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H72c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-48c0 26.5 21.5 48 48 48s48-21.5 48-48V312c0-13.3-10.7-24-24-24H200c-13.3 0-24 10.7-24 24v24zm176 48c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H328c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-176v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zm48 176c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H456c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48z\"],\"shekel-sign\":[448,512,[8362,\"ils\",\"shekel\",\"sheqel\",\"sheqel-sign\"],\"f20b\",\"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H192c35.3 0 64 28.7 64 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-70.7-57.3-128-128-128H32zM320 480c70.7 0 128-57.3 128-128V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 35.3-28.7 64-64 64H192V192c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32H320z\"],map:[576,512,[128506,62072],\"f279\",\"M384 476.1L192 421.2V35.9L384 90.8V476.1zm32-1.2V88.4L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3V394.6c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2V423.6L32.9 474.5C17.1 480.8 0 469.2 0 452.2V117.4c0-9.8 6-18.6 15.1-22.3z\"],rocket:[512,512,[],\"f135\",\"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2v82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9V380.8c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"],\"photo-film\":[640,512,[\"photo-video\"],\"f87c\",\"M256 0H576c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H256c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h80 48H552c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 128h96V384v32c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V384H512v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V312c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H72zm336 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H424c-8.8 0-16 7.2-16 16z\"],\"folder-minus\":[512,512,[],\"f65d\",\"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM184 272c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"],store:[576,512,[],\"f54e\",\"M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0H109.6C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4zM499.7 254.9l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V384H128V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V384 252.6c-4 1-8 1.8-12.3 2.3z\"],\"arrow-trend-up\":[576,512,[],\"e098\",\"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32s-32-14.3-32-32V205.3L342.6 374.6c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160H384z\"],\"plug-circle-minus\":[576,512,[],\"e55e\",\"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"],\"sign-hanging\":[512,512,[\"sign\"],\"f4d9\",\"M96 0c17.7 0 32 14.3 32 32V64l352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128H32C14.3 128 0 113.7 0 96S14.3 64 32 64H64V32C64 14.3 78.3 0 96 0zm96 160H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"],\"bezier-curve\":[640,512,[],\"f55b\",\"M296 136V88h48v48H296zM288 32c-26.5 0-48 21.5-48 48v4H121.6C111.2 62.7 89.3 48 64 48C28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36h66.9c-58.9 39.6-98.9 105-104 180H80c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-3.3c5.9-67 48.5-123.4 107.5-149.1c8.6 12.7 23.2 21.1 39.8 21.1h64c16.6 0 31.1-8.4 39.8-21.1c59 25.7 101.6 82.1 107.5 149.1H496c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-4.5c-5-75-45.1-140.4-104-180h66.9c10.4 21.3 32.3 36 57.6 36c35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36H400V80c0-26.5-21.5-48-48-48H288zM88 376h48v48H88V376zm416 48V376h48v48H504z\"],\"bell-slash\":[640,512,[128277,61943],\"f1f6\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-90.2-70.7c.2-.4 .4-.9 .6-1.3c5.2-11.5 3.1-25-5.3-34.4l-7.4-8.3C497.3 319.2 480 273.9 480 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V51.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM406.2 416L160 222.1v4.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S115.4 416 128 416H406.2zm-40.9 77.3c12-12 18.7-28.3 18.7-45.3H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"],tablet:[448,512,[\"tablet-android\"],\"f3fb\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM176 432h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],\"school-flag\":[576,512,[],\"e56e\",\"M288 0H400c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H320.7l89.6 64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H336V400c0-26.5-21.5-48-48-48s-48 21.5-48 48V512H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64H165.7L256 95.5V32c0-17.7 14.3-32 32-32zm48 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM80 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm368 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H80zm384 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H464z\"],fill:[512,512,[],\"f575\",\"M86.6 9.4C74.1-3.1 53.9-3.1 41.4 9.4s-12.5 32.8 0 45.3L122.7 136 30.6 228.1c-37.5 37.5-37.5 98.3 0 135.8L148.1 481.4c37.5 37.5 98.3 37.5 135.8 0L474.3 290.9c28.1-28.1 28.1-73.7 0-101.8L322.9 37.7c-28.1-28.1-73.7-28.1-101.8 0L168 90.7 86.6 9.4zM168 181.3l49.4 49.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L213.3 136l53.1-53.1c3.1-3.1 8.2-3.1 11.3 0L429.1 234.3c3.1 3.1 3.1 8.2 0 11.3L386.7 288H67.5c1.4-5.4 4.2-10.4 8.4-14.6L168 181.3z\"],\"angle-up\":[448,512,[8963],\"f106\",\"M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"],\"drumstick-bite\":[512,512,[],\"f6d7\",\"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2C69.8 320.6 65 320 60 320c-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12c0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5c-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4H336c6.3 0 12.4-.3 18.5-1c11.9-1.2 16.4-15.5 10.8-26c-8.5-15.8-13.3-33.8-13.3-53c0-61.9 50.1-112 112-112c8 0 15.7 .8 23.2 2.4c11.7 2.5 24.1-5.9 22-17.6C494.5 62.5 422.5 0 336 0C238.8 0 160 78.8 160 176v89.2z\"],\"holly-berry\":[512,512,[],\"f7aa\",\"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM276.8 383.8c1 .1 2.1 .2 3.2 .2c39.8 0 72 32.2 72 72v22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.6 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6c-34.6 0-62.7-28.1-62.7-62.7v-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7c4.2 9.7 5.8 20.8 3.7 32.3L275 298.7c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.6 234.5c-15.5-5.2-31.6 6.4-31.6 22.8v32C96 323.9 67.9 352 33.3 352c-16.4 0-27.9 16-22.8 31.6l4.3 12.8c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.2 489.4 22.6 505.8 40.5 501L60 495.6c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8v-32c0-34.6 28.1-62.7 62.7-62.7c16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5L196 240.4c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384 144a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"],\"chevron-left\":[320,512,[9001],\"f053\",\"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"],bacteria:[640,512,[],\"e059\",\"M304.9 .7c-9.6-2.7-19.5 2.8-22.3 12.4l-4.3 15.2c-8.3-.6-16.8 0-25.2 1.9c-7.3 1.7-14.3 3.5-21.1 5.5l-5.5-12.7c-3.9-9.1-14.5-13.4-23.6-9.5s-13.4 14.5-9.5 23.6l4.4 10.4c-16.6 6.7-31.7 14.4-45.4 22.8L147 62c-5.5-8.3-16.7-10.5-25-5s-10.5 16.7-5 25l6 9c-13.7 11-25.5 22.8-35.8 34.9l-10-8c-7.8-6.2-19.1-5-25.3 2.8s-5 19.1 2.8 25.3L65.9 155c-1.8 2.8-3.5 5.7-5.1 8.5c-6.6 11.4-11.8 22.6-16 33l-8-3.2c-9.2-3.7-19.7 .8-23.4 10s.8 19.7 10 23.4l10.4 4.2c-.2 .8-.4 1.5-.5 2.3c-2.2 9.3-3.4 17.3-4.1 23.4c-.4 3.1-.6 5.7-.8 7.8c-.1 1.1-.1 2-.2 2.8l-.1 1.1 0 .5 0 .2 0 .1c0 0 0 .1 29.1 1l-.1 0L28 269.3c-.1 3.1 0 6.1 .2 9.1l-15.2 4.3C3.5 285.4-2 295.4 .7 304.9s12.7 15.1 22.3 12.4l15.6-4.5c7.6 13.6 18.9 25 32.6 32.6L66.7 361c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.3-12.4l4.3-15.2c1.2 .1 2.4 .2 3.6 .2c15.6 .5 30.3-3.3 43-10.2l9 9c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-7.2-7.2c9.3-12.6 15.2-27.8 16.3-44.5l7.1 3c9.1 3.9 19.7-.3 23.6-9.5s-.3-19.7-9.5-23.6l-8.6-3.7c6.4-9.9 17.3-22.4 36.9-33.3l1.3 4.4c2.7 9.6 12.7 15.1 22.3 12.4s15.1-12.7 12.4-22.3l-2.3-8.1c3.8-1.1 7.7-2.1 11.9-3.1c11.6-2.7 22.1-7.7 31.1-14.4l7.2 7.2c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-9-9c7.6-13.9 11.3-30.1 10.1-46.6l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3S370.6 64 361 66.7l-15.6 4.5c-7.7-13.9-19.1-25.1-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3zM112 272l-48-1.5 0 0c11.7 .4 27.3 .9 48 1.6zm16-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-48a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM322.7 489c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.2-12.4l4.3-15.2c8.3 .6 16.8 0 25.2-1.9c7.3-1.7 14.3-3.5 21.1-5.5l5.5 12.7c3.9 9.1 14.5 13.4 23.6 9.5s13.4-14.5 9.5-23.6l-4.4-10.4c16.6-6.7 31.7-14.4 45.4-22.8L493 450c5.5 8.3 16.7 10.5 25 5s10.5-16.7 5-25l-6-9c13.7-11 25.5-22.8 35.8-34.9l10 8c7.8 6.2 19.1 5 25.3-2.8s5-19.1-2.8-25.3L574.1 357c1.8-2.8 3.5-5.7 5.1-8.5c6.6-11.4 11.8-22.6 16-33l8 3.2c9.2 3.7 19.7-.8 23.4-10s-.8-19.7-10-23.4l-10.4-4.2c.2-.8 .4-1.5 .5-2.3c2.2-9.3 3.4-17.3 4.1-23.4c.4-3.1 .6-5.7 .8-7.8c.1-1.1 .1-2 .2-2.8l.1-1.1 0-.5 0-.2 0-.1c0 0 0-.1-29.1-1l.1 0 29.1 .9c.1-3.1 0-6.1-.2-9.1l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3s-12.7-15.1-22.3-12.4l-15.6 4.5c-7.6-13.6-18.9-25-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3s-19.5 2.8-22.3 12.4l-4.3 15.2c-1.2-.1-2.4-.2-3.6-.2c-15.6-.5-30.3 3.3-43 10.2l-9-9c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l7.2 7.2c-9.3 12.6-15.2 27.8-16.3 44.5l-7.1-3c-9.1-3.9-19.7 .3-23.6 9.5s.3 19.7 9.5 23.6l8.6 3.7c-6.4 9.9-17.3 22.4-36.9 33.3l-1.3-4.4c-2.7-9.6-12.7-15.1-22.3-12.4s-15.1 12.7-12.4 22.3l2.3 8.1c-3.8 1.1-7.7 2.1-11.9 3.1c-11.6 2.7-22.1 7.7-31.1 14.4l-7.2-7.2c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l9 9c-7.6 13.9-11.3 30.1-10.1 46.6l-15.2 4.3c-9.6 2.7-15.1 12.7-12.4 22.2s12.7 15.1 22.3 12.4l15.6-4.5c7.7 13.9 19.1 25.1 32.6 32.6L322.7 489zM576 241.5l0 0c-11.7-.4-27.3-.9-48-1.6l48 1.5zM448 384a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"],\"hand-lizard\":[512,512,[],\"f258\",\"M0 112C0 85.5 21.5 64 48 64H160h80 46.5c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8v12 16 48c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V402.2L273.9 352H240 160 112c-26.5 0-48-21.5-48-48s21.5-48 48-48h48 80c26.5 0 48-21.5 48-48s-21.5-48-48-48H160 48c-26.5 0-48-21.5-48-48z\"],notdef:[384,512,[],\"e1fe\",\"M64 390.3L153.5 256 64 121.7V390.3zM102.5 448H281.5L192 313.7 102.5 448zm128-192L320 390.3V121.7L230.5 256zM281.5 64H102.5L192 198.3 281.5 64zM0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"],disease:[512,512,[],\"f7fa\",\"M236.4 61.4L227 75.5c-21.3 32-59.4 48.5-97.3 42.1l-59.6-9.9C33.4 101.6 0 129.9 .1 167.1c0 15.9 6.4 31.2 17.6 42.5l29.2 29.2c11 11 17.2 25.9 17.2 41.5c0 15.8-6.4 30.9-17.7 42L33.3 335.1C22.2 345.9 16 360.7 16 376.2c0 36.8 34.1 64.2 70.1 56.2l62.3-13.8c7.7-1.7 15.7-2.6 23.6-2.6h10c27.2 0 53.7 9.3 75 26.3L287.8 467c10.5 8.4 23.6 13 37 13c32.7 0 59.3-26.5 59.3-59.3l0-25.2c0-34.9 21.4-66.2 53.9-78.8l36.9-14.3c22.4-8.7 37.2-30.3 37.2-54.3c0-28.1-20.1-52.3-47.8-57.3l-28-5.1c-36.5-6.7-65.4-34.5-73.6-70.7l-7.1-31.5C348.9 53.4 322.1 32 291.3 32c-22 0-42.6 11-54.9 29.4zM160 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm0 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"briefcase-medical\":[512,512,[],\"f469\",\"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zm96 152c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"],genderless:[384,512,[],\"f22d\",\"M192 144a112 112 0 1 1 0 224 112 112 0 1 1 0-224zm0 288a176 176 0 1 0 0-352 176 176 0 1 0 0 352z\"],\"chevron-right\":[320,512,[9002],\"f054\",\"M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"],retweet:[576,512,[],\"f079\",\"M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32-14.3-32-32V192h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96H272zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0V192c0-53-43-96-96-96L304 96z\"],\"car-rear\":[512,512,[\"car-alt\"],\"f5de\",\"M165.4 96H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 192H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256v80c0 23.7 12.9 44.4 32 55.4V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V400H384v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V391.4c19.1-11.1 32-31.7 32-55.4V256c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32H165.4c-40.8 0-77.1 25.8-90.6 64.3zM208 272h96c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V288c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-13.3 0-24-10.7-24-24zm360-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H408c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"],\"pump-soap\":[448,512,[],\"e06b\",\"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM256 360c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9c3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C219 279.1 256 327.5 256 360z\"],\"video-slash\":[640,512,[],\"f4e2\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9V192 320v5.8l-32-25.1V128c0-35.3-28.7-64-64-64H113.9L38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5V384c0 35.3 28.7 64 64 64H352c23.4 0 43.9-12.6 55-31.3z\"],\"battery-quarter\":[576,512,[\"battery-2\"],\"f243\",\"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm112 96H96V320h96V192z\"],radio:[512,512,[128251],\"f8d7\",\"M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192v4V304 448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H218.5L494.8 47zM368 240a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM80 256c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16zM64 320c0-8.8 7.2-16 16-16H208c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm16 64c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"],\"baby-carriage\":[512,512,[\"carriage-baby\"],\"f77d\",\"M256 192H.1C2.7 117.9 41.3 52.9 99 14.1c13.3-8.9 30.8-4.3 39.9 8.8L256 192zm128-32c0-35.3 28.7-64 64-64h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0v64c0 25.2-5.8 50.2-17 73.5s-27.8 44.5-48.6 62.3s-45.5 32-72.7 41.6S253.4 416 224 416s-58.5-5-85.7-14.6s-51.9-23.8-72.7-41.6s-37.3-39-48.6-62.3S0 249.2 0 224l224 0 160 0V160zM80 416a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm240 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"],\"traffic-light\":[320,512,[128678],\"f637\",\"M64 0C28.7 0 0 28.7 0 64V352c0 88.4 71.6 160 160 160s160-71.6 160-160V64c0-35.3-28.7-64-64-64H64zm96 416a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm48-176a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm-48-80a48 48 0 1 1 0-96 48 48 0 1 1 0 96z\"],thermometer:[512,512,[],\"f491\",\"M96 382.1V293.3c0-14.9 5.9-29.1 16.4-39.6l27.3-27.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 45.5-45.5C355.2 10.9 381.4 0 408.8 0C465.8 0 512 46.2 512 103.2c0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4H129.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l89-89z\"],\"vr-cardboard\":[640,512,[],\"f729\",\"M576 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H184.4c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"],\"hand-middle-finger\":[448,512,[128405],\"f806\",\"M232 0c-22.1 0-40 17.9-40 40V204.2c-8.5-7.6-19.7-12.2-32-12.2c-26.5 0-48 21.5-48 48v7 73c0 8.8-7.2 16-16 16s-16-7.2-16-16V264.3c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334V372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1H304c70.7 0 128-57.3 128-128V320 288c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 227.5 329.3 208 304 208c-12.3 0-23.5 4.6-32 12.2V40c0-22.1-17.9-40-40-40z\"],percent:[384,512,[62101,62785,\"percentage\"],\"25\",\"M374.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l320-320zM128 128A64 64 0 1 0 0 128a64 64 0 1 0 128 0zM384 384a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"],\"truck-moving\":[640,512,[],\"f4df\",\"M64 32C28.7 32 0 60.7 0 96V304v80 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16H416h33.6c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H608c17.7 0 32-14.3 32-32V288 272 261.7c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5H480V96c0-35.3-28.7-64-64-64H64zM585 256H480V192h48.8c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM176 400a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM80 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"glass-water-droplet\":[384,512,[],\"e4f5\",\"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM83 297.5L66.4 64H317.6L301 297.5 288 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0s-43.9 10.1-64 0l-13-6.5zM256 196c0-24-33.7-70.1-52.2-93.5c-6.1-7.7-17.5-7.7-23.6 0C161.7 125.9 128 172 128 196c0 33.1 28.7 60 64 60s64-26.9 64-60z\"],display:[576,512,[],\"e163\",\"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V352H64V64H512z\"],\"face-smile\":[512,512,[128578,\"smile\"],\"f118\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],thumbtack:[384,512,[128204,128392,\"thumb-tack\"],\"f08d\",\"M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"],trophy:[576,512,[127942],\"f091\",\"M400 0H176c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8H24C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H357.9C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24H446.4c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112h84.4c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6h84.4c-5.1 66.3-31.1 111.2-63 142.3z\"],\"person-praying\":[448,512,[128720,\"pray\"],\"f683\",\"M352 64A64 64 0 1 0 224 64a64 64 0 1 0 128 0zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432H72c-22.1 0-40 17.9-40 40s17.9 40 40 40H280c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z\"],hammer:[576,512,[128296],\"f6e3\",\"M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6V105.5L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0h18.1c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z\"],\"hand-peace\":[512,512,[9996],\"f25b\",\"M224 0c17.7 0 32 14.3 32 32V240H192V32c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zM93.3 51.2L175.9 240H106.1L34.7 76.8C27.6 60.6 35 41.8 51.2 34.7s35.1 .3 42.1 16.5zm27 221.3l-.2-.5h69.9H216c22.1 0 40 17.9 40 40s-17.9 40-40 40H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H226.3c-42.4 0-83.1-16.9-113.1-46.9l-11.6-11.6C77.5 429.5 64 396.9 64 363V336c0-32.7 24.6-59.7 56.3-63.5z\"],rotate:[512,512,[128260,\"sync-alt\"],\"f2f1\",\"M142.9 142.9c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5c0 0 0 0 0 0H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5c7.7-21.8 20.2-42.3 37.8-59.8zM16 312v7.6 .7V440c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l41.6-41.6c87.6 86.5 228.7 86.2 315.8-1c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.2 62.2-162.7 62.5-225.3 1L185 329c6.9-6.9 8.9-17.2 5.2-26.2s-12.5-14.8-22.2-14.8H48.4h-.7H40c-13.3 0-24 10.7-24 24z\"],spinner:[512,512,[],\"f110\",\"M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z\"],robot:[640,512,[129302],\"f544\",\"M320 0c17.7 0 32 14.3 32 32V96H472c39.8 0 72 32.2 72 72V440c0 39.8-32.2 72-72 72H168c-39.8 0-72-32.2-72-72V168c0-39.8 32.2-72 72-72H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z\"],peace:[512,512,[9774],\"f67c\",\"M224 445.3V323.5l-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8V66.7C133.2 81.9 64 160.9 64 256c0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5L288 323.5V445.3c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1c0-95.1-69.2-174.1-160-189.3V240.8L422.8 351.1zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"],gears:[640,512,[\"cogs\"],\"f085\",\"M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8h-.7c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"],warehouse:[640,512,[],\"f494\",\"M0 488V171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4V488c0 13.3-10.7 24-24 24H568c-13.3 0-24-10.7-24-24V224c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32V488c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm488 24l-336 0c-13.3 0-24-10.7-24-24V432H512l0 56c0 13.3-10.7 24-24 24zM128 400V336H512v64H128zm0-96V224H512l0 80H128z\"],\"arrow-up-right-dots\":[576,512,[],\"e4b7\",\"M160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L9.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V160c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H160zM576 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM448 208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm128 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM272 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM144 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM576 336a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-48-80a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"],splotch:[512,512,[],\"f5bc\",\"M208.5 62.3l28.1-36.9C248.8 9.4 267.8 0 288 0c28.5 0 53.6 18.7 61.8 46l17.8 59.4c10.3 34.4 36.1 62 69.8 74.6l39.8 14.9c20.9 7.9 34.8 27.9 34.8 50.2c0 16.9-7.9 32.8-21.5 42.9l-67.3 50.5c-24.3 18.2-37.2 47.9-33.8 78.1l2.5 22.7c4.3 38.7-26 72.6-65 72.6c-14.8 0-29.3-5.1-40.8-14.3l-55.4-44.3c-4.5-3.6-9.3-6.7-14.5-9.2c-15.8-7.9-33.7-10.4-51-7.3L82.4 451.9C47.8 458.2 16 431.6 16 396.5c0-13.2 4.7-26 13.1-36.2l11.2-13.4c14.6-17.4 22.6-39.4 22.6-62.1c0-18.8-5.5-37.2-15.8-53L8.8 173.5C3.1 164.7 0 154.4 0 143.9c0-33.4 30.1-58.8 63-53.2l51.3 8.7c35.9 6.1 72.2-8.2 94.2-37.1z\"],\"face-grin-hearts\":[512,512,[128525,\"grin-hearts\"],\"f584\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM199.3 129.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm154.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"],\"dice-four\":[448,512,[9859],\"f524\",\"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM352 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"sim-card\":[384,512,[],\"f7c4\",\"M64 0H242.7c17 0 33.3 6.7 45.3 18.7L365.3 96c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0zM96 192c-17.7 0-32 14.3-32 32v32h64V192H96zM64 352h80 96 80V288H240 144 64v64zM320 224c0-17.7-14.3-32-32-32H256v64h64V224zM160 192v64h64V192H160zM288 448c17.7 0 32-14.3 32-32V384H256v64h32zM160 384v64h64V384H160zM64 416c0 17.7 14.3 32 32 32h32V384H64v32z\"],transgender:[512,512,[9895,\"transgender-alt\"],\"f225\",\"M112 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-31 31L112 78.1l7-7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-7 7 15.2 15.2C187.7 107.6 220.5 96 256 96s68.3 11.6 94.9 31.2l68.8-68.8-31-31c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9h96c8.8 0 16 7.2 16 16v96c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-31-31-68.8 68.8C404.4 187.7 416 220.5 416 256c0 80.2-59 146.6-136 158.2V432h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v8c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V414.2C155 402.6 96 336.2 96 256c0-35.5 11.6-68.3 31.2-94.9L112 145.9l-7 7c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l7-7L58.3 92.3l-31 31c-4.6 4.6-11.5 5.9-17.4 3.5S0 118.5 0 112V16C0 7.2 7.2 0 16 0h96zM352 256a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"],mercury:[384,512,[9791],\"f223\",\"M72.1 7C85.8-4 106-1.8 117 12c17.6 22 44.7 36 75 36s57.3-14 75-36c11.1-13.8 31.2-16 45-5s16 31.2 5 45c-7.8 9.7-16.6 18.4-26.4 26.1C337.3 109.7 368 163.3 368 224c0 89.1-66.2 162.7-152 174.4V424h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V472H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V398.4C82.2 386.7 16 313.1 16 224c0-60.7 30.7-114.3 77.5-145.9C83.7 70.5 74.9 61.7 67.1 52c-11.1-13.8-8.8-33.9 5-45zM80 224a112 112 0 1 0 224 0A112 112 0 1 0 80 224z\"],\"arrow-turn-down\":[384,512,[\"level-down\"],\"f149\",\"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"],\"person-falling-burst\":[640,512,[],\"e547\",\"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 9.8c0 39-23.7 74-59.9 88.4C71.6 154.5 32 213 32 278.2V352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-73.8c0-10 1.6-19.8 4.5-29L261.1 497.4c9.6 14.8 29.4 19.1 44.3 9.5s19.1-29.4 9.5-44.3L222.6 320H224l80 0 38.4 51.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C341.3 263.1 327.1 256 312 256l-71.5 0-56.8-80.2-.2-.3c44.7-29 72.5-79 72.5-133.6l0-9.8zM96 80A48 48 0 1 0 0 80a48 48 0 1 0 96 0zM464 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 78.7-12.2c6.5-1 11.7-5.9 13.1-12.2s-1.1-13-6.5-16.7l-65.6-45.1L603 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L508.3 92.1l-29.4-74C476.4 12 470.6 8 464 8s-12.4 4-14.9 10.1l-29.4 74L343.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7c.1 .3 .1 .6 .2 .8l19.4 0c20.1 0 39.2 7.5 53.8 20.8l18.4 2.9L383 265.3l36.2 48.3c2.1 2.8 3.9 5.7 5.5 8.6L464 286.1z\"],award:[384,512,[],\"f559\",\"M173.8 5.5c11-7.3 25.4-7.3 36.4 0L228 17.2c6 3.9 13 5.8 20.1 5.4l21.3-1.3c13.2-.8 25.6 6.4 31.5 18.2l9.6 19.1c3.2 6.4 8.4 11.5 14.7 14.7L344.5 83c11.8 5.9 19 18.3 18.2 31.5l-1.3 21.3c-.4 7.1 1.5 14.2 5.4 20.1l11.8 17.8c7.3 11 7.3 25.4 0 36.4L366.8 228c-3.9 6-5.8 13-5.4 20.1l1.3 21.3c.8 13.2-6.4 25.6-18.2 31.5l-19.1 9.6c-6.4 3.2-11.5 8.4-14.7 14.7L301 344.5c-5.9 11.8-18.3 19-31.5 18.2l-21.3-1.3c-7.1-.4-14.2 1.5-20.1 5.4l-17.8 11.8c-11 7.3-25.4 7.3-36.4 0L156 366.8c-6-3.9-13-5.8-20.1-5.4l-21.3 1.3c-13.2 .8-25.6-6.4-31.5-18.2l-9.6-19.1c-3.2-6.4-8.4-11.5-14.7-14.7L39.5 301c-11.8-5.9-19-18.3-18.2-31.5l1.3-21.3c.4-7.1-1.5-14.2-5.4-20.1L5.5 210.2c-7.3-11-7.3-25.4 0-36.4L17.2 156c3.9-6 5.8-13 5.4-20.1l-1.3-21.3c-.8-13.2 6.4-25.6 18.2-31.5l19.1-9.6C65 70.2 70.2 65 73.4 58.6L83 39.5c5.9-11.8 18.3-19 31.5-18.2l21.3 1.3c7.1 .4 14.2-1.5 20.1-5.4L173.8 5.5zM272 192a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM1.3 441.8L44.4 339.3c.2 .1 .3 .2 .4 .4l9.6 19.1c11.7 23.2 36 37.3 62 35.8l21.3-1.3c.2 0 .5 0 .7 .2l17.8 11.8c5.1 3.3 10.5 5.9 16.1 7.7l-37.6 89.3c-2.3 5.5-7.4 9.2-13.3 9.7s-11.6-2.2-14.8-7.2L74.4 455.5l-56.1 8.3c-5.7 .8-11.4-1.5-15-6s-4.3-10.7-2.1-16zm248 60.4L211.7 413c5.6-1.8 11-4.3 16.1-7.7l17.8-11.8c.2-.1 .4-.2 .7-.2l21.3 1.3c26 1.5 50.3-12.6 62-35.8l9.6-19.1c.1-.2 .2-.3 .4-.4l43.2 102.5c2.2 5.3 1.4 11.4-2.1 16s-9.3 6.9-15 6l-56.1-8.3-32.2 49.2c-3.2 5-8.9 7.7-14.8 7.2s-11-4.3-13.3-9.7z\"],\"ticket-simple\":[576,512,[\"ticket-alt\"],\"f3ff\",\"M0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64v64c0 8.8-7.4 15.7-15.7 18.6C541.5 217.1 528 235 528 256s13.5 38.9 32.3 45.4c8.3 2.9 15.7 9.8 15.7 18.6v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320c0-8.8 7.4-15.7 15.7-18.6C34.5 294.9 48 277 48 256s-13.5-38.9-32.3-45.4C7.4 207.7 0 200.8 0 192V128z\"],building:[384,512,[127970,61687],\"f1ad\",\"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16z\"],\"angles-left\":[512,512,[171,\"angle-double-left\"],\"f100\",\"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"],qrcode:[448,512,[],\"f029\",\"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zM64 96v64h64V96H64zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336zm64 16v64h64V352H64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm80 64H320v64h64V96zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V304zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z\"],\"clock-rotate-left\":[512,512,[\"history\"],\"f1da\",\"M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z\"],\"face-grin-beam-sweat\":[512,512,[128517,\"grin-beam-sweat\"],\"f583\",\"M476.8 126.3c-4.1 1.1-8.4 1.7-12.8 1.7c-26.5 0-48-21-48-47c0-5 1.8-11.3 4.6-18.1c.3-.7 .6-1.4 .9-2.1c9-20.2 26.5-44.9 36-57.5c3.2-4.4 9.6-4.4 12.8 0C483.4 20.6 512 61 512 81c0 21.7-14.9 39.8-35.2 45.3zM256 0c51.4 0 99.3 15.2 139.4 41.2c-1.5 3.1-3 6.2-4.3 9.3c-3.4 8-7.1 19-7.1 30.5c0 44.3 36.6 79 80 79c9.6 0 18.8-1.7 27.4-4.8c13.3 30.9 20.6 65 20.6 100.8c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0zM388.1 312.8c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5c5-11.8-7-22.5-19.3-18.7zm-170.5-84l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0zm160 0l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0z\"],\"file-export\":[576,512,[\"arrow-right-from-file\"],\"f56e\",\"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V288H216c-13.3 0-24 10.7-24 24s10.7 24 24 24H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM384 336V288H494.1l-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H384zm0-208H256V0L384 128z\"],shield:[512,512,[128737,\"shield-blank\"],\"f132\",\"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0z\"],\"arrow-up-short-wide\":[576,512,[\"sort-amount-up-alt\"],\"f885\",\"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"],\"house-medical\":[576,512,[],\"e3b2\",\"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM256 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V320H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"],\"golf-ball-tee\":[384,512,[\"golf-ball\"],\"f450\",\"M384 192c0 66.8-34.1 125.6-85.8 160H85.8C34.1 317.6 0 258.8 0 192C0 86 86 0 192 0S384 86 384 192zM242.1 256.6c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zm-52.3-49.3c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4c0 18.5-15 33.5-33.5 33.5zm113.5-17.5c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zM96 416c0-17.7 14.3-32 32-32h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H240c-8.8 0-16 7.2-16 16v16c0 17.7-14.3 32-32 32s-32-14.3-32-32V464c0-8.8-7.2-16-16-16H128c-17.7 0-32-14.3-32-32z\"],\"circle-chevron-left\":[512,512,[\"chevron-circle-left\"],\"f137\",\"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"],\"house-chimney-window\":[576,512,[],\"e00d\",\"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM248 192c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V216c0-13.3-10.7-24-24-24H248z\"],\"pen-nib\":[512,512,[10001],\"f5ad\",\"M368.4 18.3L312.7 74.1 437.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L447.6 18.3c-21.9-21.9-57.3-21.9-79.2 0zM288 94.6l-9.2 2.8L134.7 140.6c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-3.8 11.3-1 23.9 7.3 32.4L164.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48c-7.4 0-14.4-1.7-20.7-4.7L33.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 2.8-9.2L288 94.6z\"],\"tent-arrow-turn-left\":[576,512,[],\"e580\",\"M120.1 41.8c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120 456 120c39.8 0 72 32.2 72 72v40c0 13.3 10.7 24 24 24s24-10.7 24-24V192c0-66.3-53.7-120-120-120L86.5 72l33.5-30.2zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H240h16c17.7 0 32-14.3 32-32V361.9c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7H464h16c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"],tents:[640,512,[],\"e582\",\"M396.6 6.5L235.8 129.1c9.6 1.8 18.9 5.8 27 12l168 128c13.2 10.1 22 24.9 24.5 41.4l6.2 41.5H608c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128c-11.5-8.7-27.3-8.7-38.8 0zm-153.2 160c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S22.7 512 32 512H176h16c17.7 0 32-14.3 32-32V361.9c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7H400h16c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"],\"wand-magic\":[512,512,[\"magic\"],\"f0d0\",\"M14.1 463.3c-18.7-18.7-18.7-49.1 0-67.9L395.4 14.1c18.7-18.7 49.1-18.7 67.9 0l34.6 34.6c18.7 18.7 18.7 49.1 0 67.9L116.5 497.9c-18.7 18.7-49.1 18.7-67.9 0L14.1 463.3zM347.6 187.6l105-105L429.4 59.3l-105 105 23.3 23.3z\"],dog:[576,512,[128021],\"f6d3\",\"M309.6 158.5L332.7 19.8C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32h52.1c12.7 0 24.9 5.1 33.9 14.1L496 64h56c13.3 0 24 10.7 24 24v24c0 44.2-35.8 80-80 80H464 448 426.7l-5.1 30.5-112-64zM416 256.1L416 480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V364.8c-24 12.3-51.2 19.2-80 19.2s-56-6.9-80-19.2V480c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V249.8c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192h30 16H303.8L416 256.1zM464 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"],carrot:[512,512,[129365],\"f787\",\"M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM244.6 136c-40 0-77.1 18.1-101.7 48.2l60.5 60.5c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-55.3-55.3 0 .1L2.2 477.9C-2 487-.1 497.8 7 505s17.9 9 27.1 4.8l134.7-62.4-52.1-52.1c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L199.7 433l100.2-46.4c46.4-21.5 76.2-68 76.2-119.2C376 194.8 317.2 136 244.6 136z\"],moon:[384,512,[127769,9214],\"f186\",\"M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z\"],\"wine-glass-empty\":[320,512,[\"wine-glass-alt\"],\"f5ce\",\"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348.4c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0H64zM81.9 203.1L93.4 64H226.6l11.6 139.1C242 248.8 205.9 288 160 288s-82-39.2-78.1-84.9z\"],cheese:[512,512,[],\"f7ef\",\"M512 240.2V256H0c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7C418.8 32 512 125.2 512 240.2zm0 47.8V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V288H512z\"],\"yin-yang\":[512,512,[9775],\"f6ad\",\"M256 64c53 0 96 43 96 96s-43 96-96 96s-96 43-96 96s43 96 96 96C150 448 64 362 64 256S150 64 256 64zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm32-352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"],music:[512,512,[127925],\"f001\",\"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7v72V368c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V147L192 223.8V432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V200 128c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"],\"code-commit\":[640,512,[],\"f386\",\"M320 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm156.8-48C462 361 397.4 416 320 416s-142-55-156.8-128H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H163.2C178 151 242.6 96 320 96s142 55 156.8 128H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H476.8z\"],\"temperature-low\":[512,512,[],\"f76b\",\"M448 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 96a96 96 0 1 1 192 0A96 96 0 1 1 320 96zM144 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C70.2 332.6 64 349.5 64 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM32 112C32 50.2 82.1 0 144 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S0 447.5 0 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM192 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"],\"person-biking\":[640,512,[128692,\"biking\"],\"f84a\",\"M400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1V416c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H427.2zM56 384a72 72 0 1 1 144 0A72 72 0 1 1 56 384zm200 0A128 128 0 1 0 0 384a128 128 0 1 0 256 0zm184 0a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zm200 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"],broom:[576,512,[129529],\"f51a\",\"M566.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192-34.7-34.7c-4.2-4.2-10-6.6-16-6.6c-12.5 0-22.6 10.1-22.6 22.6v29.1L364.3 320h29.1c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16l-34.7-34.7 192-192zM341.1 353.4L222.6 234.9c-42.7-3.7-85.2 11.7-115.8 42.3l-8 8C76.5 307.5 64 337.7 64 369.2c0 6.8 7.1 11.2 13.2 8.2l51.1-25.5c5-2.5 9.5 4.1 5.4 7.9L7.3 473.4C2.7 477.6 0 483.6 0 489.9C0 502.1 9.9 512 22.1 512l173.3 0c38.8 0 75.9-15.4 103.4-42.8c30.6-30.6 45.9-73.1 42.3-115.8z\"],\"shield-heart\":[512,512,[],\"e574\",\"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM144 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"],gopuram:[512,512,[],\"f664\",\"M120 0c13.3 0 24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h48V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8V64v64c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H416V352H384V224H352V128H320v96h32V352h32V512H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H128V352h32V224h32V128H160v96H128V352H96V512H32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32V256c0-17.7 14.3-32 32-32V160c0-17.7 14.3-32 32-32V64 32 24c0-13.3 10.7-24 24-24zM256 272c-17.7 0-32 14.3-32 32v48h64V304c0-17.7-14.3-32-32-32zm-32-80v32h64V192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"],\"earth-oceania\":[512,512,[\"globe-oceania\"],\"e47b\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208.6 357.3l-39-13.5c-6.5-2.2-13.6-2.3-20.1-.3l-15.3 4.9c-18.5 5.9-38.5-2.4-47.5-19.5l-3.3-6.2c-10.6-20.1-2.3-45 18.2-54.7l35.3-16.8c2.3-1.1 4.4-2.8 5.9-4.8l5.3-7c7.2-9.6 18.6-15.3 30.6-15.3s23.4 5.7 30.6 15.3l4.6 6.1c2 2.6 4.9 4.5 8.1 5.1c7.8 1.6 15.7-1.5 20.4-7.9l10.4-14.2c2-2.8 5.3-4.4 8.7-4.4c4.4 0 8.4 2.7 10 6.8l10.1 25.9c2.8 7.2 6.7 14 11.5 20.2L311 299.8c5.8 7.4 9 16.6 9 26s-3.2 18.6-9 26L299 367.2c-8.3 10.6-21 16.8-34.4 16.8c-8.4 0-16.6-2.4-23.7-7l-25.4-16.4c-2.2-1.4-4.5-2.5-6.9-3.4zm65.2-214.8L296 164.7c10.1 10.1 2.9 27.3-11.3 27.3H254.8c-5.6 0-11.1-1.2-16.2-3.4l-42.8-19c-14.3-6.3-11.9-27.3 3.4-30.3l38.5-7.7c13.1-2.6 26.7 1.5 36.1 10.9zM248 432c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H264c-8.8 0-16-7.2-16-16zM431.2 298.9l8 24c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1l-8-24c-2.8-8.4 1.7-17.4 10.1-20.2s17.4 1.7 20.2 10.1zm-19.9 80.4l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"],\"square-xmark\":[448,512,[10062,\"times-square\",\"xmark-square\"],\"f2d3\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm79 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"],hashtag:[448,512,[62098],\"23\",\"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128h95.1l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H347.1L325.8 320H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H315.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7H155.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l21.3-128H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320h95.1l21.3-128H187.1z\"],\"up-right-and-down-left-from-center\":[512,512,[\"expand-alt\"],\"f424\",\"M344 0H488c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512H24c-13.3 0-24-10.7-24-24V344c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z\"],\"oil-can\":[640,512,[],\"f613\",\"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32H144 96 48c-26.5 0-48 21.5-48 48v64.8c0 19 11.2 36.2 28.5 43.9l67.5 30V368c0 26.5 21.5 48 48 48H403.1c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192l-50.5-25.2c-8.9-4.4-18.7-6.8-28.6-6.8H288V128h32zM96 208v86.1L48 272.8V208H96z\"],t:[384,512,[116],\"54\",\"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H160V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H192 32z\"],hippo:[640,512,[129435],\"f6ed\",\"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2h32c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1c0 10.2 7.4 18.8 16.7 23c27.9 12.5 47.3 40.5 47.3 73c0 26.2-12.6 49.4-32 64v32c0 8.8-7.2 16-16 16H560c-8.8 0-16-7.2-16-16V320H480v16c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V318.4c-11.8-2.4-22.7-7.4-32-14.4c-1.5-1.1-2.9-2.3-4.3-3.5c-17-14.7-27.7-36.4-27.7-60.5c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2V352c0 17.7 14.3 32 32 32h32v64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V372c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12v76c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V329.1L45.9 369.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7C32 155.7 117.2 68 223.8 64.1l.2-.1h7.2H256h32c41.7 0 83.4 12.1 117.2 25.7c1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM480 144a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"],\"chart-column\":[512,512,[],\"e0e3\",\"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm128-64V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64 32c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32zM480 96V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"],infinity:[640,512,[8734,9854],\"f534\",\"M0 241.1C0 161 65 96 145.1 96c38.5 0 75.4 15.3 102.6 42.5L320 210.7l72.2-72.2C419.5 111.3 456.4 96 494.9 96C575 96 640 161 640 241.1v29.7C640 351 575 416 494.9 416c-38.5 0-75.4-15.3-102.6-42.5L320 301.3l-72.2 72.2C220.5 400.7 183.6 416 145.1 416C65 416 0 351 0 270.9V241.1zM274.7 256l-72.2-72.2c-15.2-15.2-35.9-23.8-57.4-23.8C100.3 160 64 196.3 64 241.1v29.7c0 44.8 36.3 81.1 81.1 81.1c21.5 0 42.2-8.5 57.4-23.8L274.7 256zm90.5 0l72.2 72.2c15.2 15.2 35.9 23.8 57.4 23.8c44.8 0 81.1-36.3 81.1-81.1V241.1c0-44.8-36.3-81.1-81.1-81.1c-21.5 0-42.2 8.5-57.4 23.8L365.3 256z\"],\"vial-circle-check\":[512,512,[],\"e596\",\"M0 64C0 46.3 14.3 32 32 32H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V266.8c-20.2 28.6-32 63.5-32 101.2c0 25.2 5.3 49.1 14.8 70.8C189.5 463.7 160.6 480 128 480c-53 0-96-43-96-96V96C14.3 96 0 81.7 0 64zM96 96v96h64V96H96zM224 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L352 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"],\"person-arrow-down-to-line\":[640,512,[],\"e538\",\"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM464 64V306.7l-25.4-25.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L528 306.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"],voicemail:[640,512,[],\"f897\",\"M144 320a80 80 0 1 1 0-160 80 80 0 1 1 0 160zm119.8 0c15.3-22.9 24.2-50.4 24.2-80c0-79.5-64.5-144-144-144S0 160.5 0 240s64.5 144 144 144H496c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144c0 29.6 8.9 57.1 24.2 80H263.8zM496 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"],fan:[512,512,[],\"f863\",\"M258.6 0c-1.7 0-3.4 .1-5.1 .5C168 17 115.6 102.3 130.5 189.3c2.9 17 8.4 32.9 15.9 47.4L32 224H29.4C13.2 224 0 237.2 0 253.4c0 1.7 .1 3.4 .5 5.1C17 344 102.3 396.4 189.3 381.5c17-2.9 32.9-8.4 47.4-15.9L224 480v2.6c0 16.2 13.2 29.4 29.4 29.4c1.7 0 3.4-.1 5.1-.5C344 495 396.4 409.7 381.5 322.7c-2.9-17-8.4-32.9-15.9-47.4L480 288h2.6c16.2 0 29.4-13.2 29.4-29.4c0-1.7-.1-3.4-.5-5.1C495 168 409.7 115.6 322.7 130.5c-17 2.9-32.9 8.4-47.4 15.9L288 32V29.4C288 13.2 274.8 0 258.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"person-walking-luggage\":[576,512,[],\"e554\",\"M432 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM347.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L505 232.7l-15.3-36.8C472.5 154.8 432.3 128 387.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L340.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM256 274.1c-7.7-4.4-17.4-1.8-21.9 5.9l-32 55.4L147.7 304c-15.3-8.8-34.9-3.6-43.7 11.7L40 426.6c-8.8 15.3-3.6 34.9 11.7 43.7l55.4 32c15.3 8.8 34.9 3.6 43.7-11.7l64-110.9c1.5-2.6 2.6-5.2 3.3-8L261.9 296c4.4-7.7 1.8-17.4-5.9-21.9z\"],\"up-down\":[256,512,[8597,11021,\"arrows-alt-v\"],\"f338\",\"M145.6 7.7C141 2.8 134.7 0 128 0s-13 2.8-17.6 7.7l-104 112c-6.5 7-8.2 17.2-4.4 25.9S14.5 160 24 160H80V352H24c-9.5 0-18.2 5.7-22 14.4s-2.1 18.9 4.4 25.9l104 112c4.5 4.9 10.9 7.7 17.6 7.7s13-2.8 17.6-7.7l104-112c6.5-7 8.2-17.2 4.4-25.9s-12.5-14.4-22-14.4H176V160h56c9.5 0 18.2-5.7 22-14.4s2.1-18.9-4.4-25.9l-104-112z\"],\"cloud-moon-rain\":[576,512,[],\"f73c\",\"M481.2 0C417 0 363.5 46.5 353.7 107.6c35.4 17.6 60.2 53.3 62.1 95.1c23.2 11 42 29.7 53.1 52.7c4 .4 8.1 .6 12.3 .6c34.9 0 66.7-13.8 89.9-36.1c5.1-4.9 6.4-12.5 3.2-18.7s-10.1-9.7-17-8.6c-4.9 .8-10 1.3-15.2 1.3c-49 0-88.4-39.3-88.4-87.4c0-32.6 18-61.1 44.9-76.1c6.1-3.4 9.3-10.5 7.8-17.4s-7.3-12-14.3-12.6c-3.6-.3-7.3-.5-10.9-.5zM367.9 383.9c44.2 0 80-35.8 80-80c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C241.3 114.6 210.8 96 176 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96H367.9zM85.4 420.1c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3z\"],calendar:[448,512,[128197,128198],\"f133\",\"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\"],trailer:[640,512,[],\"e041\",\"M48 32C21.5 32 0 53.5 0 80V336c0 26.5 21.5 48 48 48H65.1c7.8-54.3 54.4-96 110.9-96s103.1 41.7 110.9 96H488h8H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V80c0-26.5-21.5-48-48-48H48zM80 96c8.8 0 16 7.2 16 16l0 131.2c-11.4 5.9-22.2 12.9-32 21V112c0-8.8 7.2-16 16-16zm96 128c-5.4 0-10.7 .2-16 .7L160 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112.7c-5.3-.5-10.6-.7-16-.7zm80 19.2L256 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 152.2c-9.8-8.1-20.6-15.2-32-21zM368 96c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16zm112 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16s16 7.2 16 16zM176 480a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-112a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],bahai:[576,512,[\"haykal\"],\"f666\",\"M288 0c14.5 0 27.2 9.7 30.9 23.8l23.9 89.6 75.9-53.3c11.9-8.3 27.8-7.6 39 1.7s14.6 24.9 8.4 38.1l-39.3 84 92.4 8c14.4 1.2 26.2 12 28.8 26.3s-4.9 28.5-18 34.6l-84.1 39.1 65.7 65.5c10.3 10.2 12.4 26.1 5.1 38.7s-22 18.7-36 14.9L391 386.8l8.2 92.4c1.3 14.4-7.3 27.9-20.9 32.9s-28.9 .1-37.2-11.7l-53.1-76-53.1 76c-8.3 11.9-23.6 16.7-37.2 11.7s-22.2-18.5-20.9-32.9l8.2-92.4L95.4 410.9c-14 3.8-28.8-2.3-36-14.9s-5.2-28.4 5.1-38.7l65.7-65.5L46 252.7c-13.1-6.1-20.5-20.3-18-34.6s14.3-25.1 28.8-26.3l92.4-8-39.3-84c-6.1-13.1-2.7-28.8 8.4-38.1s27.1-10 39-1.7l75.9 53.3 23.9-89.6C260.8 9.7 273.5 0 288 0zm0 156.2l-4.8 18c-2.7 10.1-10.2 18.2-20 21.8s-20.8 2.1-29.3-3.9l-15.2-10.7 7.9 16.8c4.4 9.5 4 20.5-1.3 29.6s-14.5 15-25 15.9l-18.5 1.6 16.8 7.8c9.5 4.4 16.2 13.2 18 23.5s-1.5 20.8-8.9 28.2l-13.2 13.1 17.9-4.8c10.1-2.7 20.9-.3 28.9 6.4s12.2 16.9 11.3 27.3l-1.6 18.5 10.6-15.2c6-8.6 15.8-13.7 26.2-13.7s20.2 5.1 26.2 13.7l10.6 15.2-1.6-18.5c-.9-10.4 3.3-20.6 11.3-27.3s18.8-9.1 28.9-6.4l17.9 4.8-13.2-13.1c-7.4-7.4-10.7-17.9-8.9-28.2s8.5-19.1 18-23.5l16.8-7.8-18.5-1.6c-10.4-.9-19.7-6.8-25-15.9s-5.7-20.1-1.3-29.6l7.9-16.8-15.2 10.7c-8.6 6-19.5 7.5-29.3 3.9s-17.3-11.7-20-21.8l-4.8-18z\"],\"sd-card\":[384,512,[],\"f7c2\",\"M320 0H141.3C124.3 0 108 6.7 96 18.7L18.7 96C6.7 108 0 124.3 0 141.3V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 88v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24z\"],dragon:[640,512,[128009],\"f6d5\",\"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4L294.4 28.8c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0H416h32 16c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8c0 26.5-21.5 48-48 48H538.5c-17 0-33.3-6.7-45.3-18.7L480 160H448v21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1C640 462.9 590.9 512 530.2 512H496 432 32.3c-3.3 0-6.6-.4-9.6-1.4C13.5 507.8 6 501 2.4 492.1C1 488.7 .2 485.2 0 481.4c-.2-3.7 .3-7.3 1.3-10.7c2.8-9.2 9.6-16.7 18.6-20.4c3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1c0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1V181.5v-57zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3v.6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9c0 13.3 10.7 24 24 24c10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87V227c0 32.8 8.4 64.8 24 93H112c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9s-1.5-14.1 3.8-18.8L130.9 116.5z\"],\"shoe-prints\":[640,512,[],\"f54b\",\"M416 0C352.3 0 256 32 256 32V160c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64h32V32H192c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32V480s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64H96V352H64c-35.3 0-64 28.7-64 64z\"],\"circle-plus\":[512,512,[\"plus-circle\"],\"f055\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"],\"face-grin-tongue-wink\":[512,512,[128540,\"grin-tongue-wink\"],\"f58b\",\"M174.5 498.8C73.1 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 112.9-73.1 208.7-174.5 242.8C346.7 484 352 466.6 352 448V401.1c24.3-17.5 43.6-41.6 55.4-69.6c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c11.7 27.8 30.8 51.7 54.8 69.2V448c0 18.6 5.3 36 14.5 50.8zm20.7-265.2c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM336 272a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM320 402.6V448c0 35.3-28.7 64-64 64s-64-28.7-64-64V402.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6zM336 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"],\"hand-holding\":[576,512,[],\"f4bd\",\"M559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-366.1-8.3a.5 .5 0 1 1 -.9 .2 .5 .5 0 1 1 .9-.2z\"],\"plug-circle-exclamation\":[576,512,[],\"e55d\",\"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"],\"link-slash\":[640,512,[\"chain-broken\",\"chain-slash\",\"unlink\"],\"f127\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM116.6 187.9L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9zM220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3L220.9 270z\"],clone:[512,512,[],\"f24d\",\"M288 448H64V224h64V160H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H288v64zm-64-96H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64z\"],\"person-walking-arrow-loop-left\":[640,512,[],\"e551\",\"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384H480c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96H461.3l25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z\"],\"arrow-up-z-a\":[576,512,[\"sort-alpha-up-alt\"],\"f882\",\"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 64c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zm96 192c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 262.8 428.1 256 416 256zM395.8 400L416 359.6 436.2 400H395.8z\"],\"fire-flame-curved\":[384,512,[\"fire-alt\"],\"f7e4\",\"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0C198.4 0 208 9.6 208 21.3V43.5c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7C384 434 306 512 209.7 512H192C86 512 0 426 0 320v-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6C85.9 176 96 186.1 96 198.6V288c0 35.3 28.7 64 64 64s64-28.7 64-64v-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7c0-27.7 9-54.8 25.6-76.9z\"],tornado:[448,512,[127786],\"f76f\",\"M0 32V45.6C0 62.7 1.7 79.6 5 96H357.8c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16C416 10.1 405.9 0 393.4 0H32C14.3 0 0 14.3 0 32zm352.2 96H13.6c12.2 35.9 32.3 68.7 58.8 96H412l-47.2-62.9c-7.3-9.7-11.6-21.2-12.6-33.1zm-226 138.2l116.4 68.5c8.2 4.8 15.8 10.7 22.5 17.3H445c2-9.8 3-19.9 3-30.1c0-23-5.3-45.5-15.3-65.9H110.2c5.2 3.6 10.5 7 16 10.2zM288 384c10.3 21.4 13.8 45.5 9.9 69l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4c5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c12.8-12.8 23.1-27.7 30.4-43.9H288z\"],\"file-circle-plus\":[576,512,[58606],\"e494\",\"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"],\"book-quran\":[448,512,[\"quran\"],\"f687\",\"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM274.1 150.2l-8.9 21.4-23.1 1.9c-5.7 .5-8 7.5-3.7 11.2L256 199.8l-5.4 22.6c-1.3 5.5 4.7 9.9 9.6 6.9L280 217.2l19.8 12.1c4.9 3 10.9-1.4 9.6-6.9L304 199.8l17.6-15.1c4.3-3.7 2-10.8-3.7-11.2l-23.1-1.9-8.9-21.4c-2.2-5.3-9.6-5.3-11.8 0zM96 192c0 70.7 57.3 128 128 128c25.6 0 49.5-7.5 69.5-20.5c3.2-2.1 4.5-6.2 3.1-9.7s-5.2-5.6-9-4.8c-6.1 1.2-12.5 1.9-19 1.9c-52.4 0-94.9-42.5-94.9-94.9s42.5-94.9 94.9-94.9c6.5 0 12.8 .7 19 1.9c3.8 .8 7.5-1.3 9-4.8s.2-7.6-3.1-9.7C273.5 71.5 249.6 64 224 64C153.3 64 96 121.3 96 192z\"],anchor:[576,512,[9875],\"f13d\",\"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c88.4 0 160-71.6 160-160v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 53-43 96-96 96H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1z\"],\"border-all\":[448,512,[],\"f84c\",\"M384 96V224H256V96H384zm0 192V416H256V288H384zM192 224H64V96H192V224zM64 288H192V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"],\"face-angry\":[512,512,[128544,\"angry\"],\"f556\",\"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM338.7 395.9c6.6-5.9 7.1-16 1.2-22.6C323.8 355.4 295.7 336 256 336s-67.8 19.4-83.9 37.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c11.7-13 31.6-26.7 60.1-26.7s48.4 13.7 60.1 26.7c5.9 6.6 16 7.1 22.6 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"],\"cookie-bite\":[512,512,[],\"f564\",\"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6v0c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9v0c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"arrow-trend-down\":[576,512,[],\"e097\",\"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v82.7L342.6 137.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352H384z\"],rss:[448,512,[\"feed\"],\"f09e\",\"M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"],\"draw-polygon\":[448,512,[],\"f5ee\",\"M96 151.4V360.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c0-.1 .1-.2 .1-.3l-4.5-7.9-32-56 0 0c-1.4 .1-2.8 .1-4.2 .1c-35.3 0-64-28.7-64-64s28.7-64 64-64c1.4 0 2.8 0 4.2 .1l0 0 32-56 4.5-7.9-.1-.3H119.4c-5.6 9.7-13.7 17.8-23.4 23.4zM384.3 352c35.2 .2 63.7 28.7 63.7 64c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V151.4C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32H328.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 35.3-28.5 63.8-63.7 64l-4.5 7.9-32 56-2.3 4c4.2 8.5 6.5 18 6.5 28.1s-2.3 19.6-6.5 28.1l2.3 4 32 56 4.5 7.9z\"],\"scale-balanced\":[640,512,[9878,\"balance-scale\"],\"f24e\",\"M384 32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H398.4c-5.2 25.8-22.9 47.1-46.4 57.3V448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-23.5-10.3-41.2-31.6-46.4-57.3H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288H584.4L512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C627.2 382 574.9 416 512 416zM126.8 195.8L54.4 320H199.3L126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C242 382 189.7 416 126.8 416S11.7 382 .9 337.1z\"],\"gauge-simple-high\":[512,512,[61668,\"tachometer\",\"tachometer-fast\"],\"f62a\",\"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-15.9-5.8-30.4-15.3-41.6l76.6-147.4c6.1-11.8 1.5-26.3-10.2-32.4s-26.2-1.5-32.4 10.2L262.1 288.3c-2-.2-4-.3-6.1-.3c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"],shower:[512,512,[128703],\"f2cc\",\"M64 131.9C64 112.1 80.1 96 99.9 96c9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.2-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32C44.7 32 0 76.7 0 131.9V448c0 17.7 14.3 32 32 32s32-14.3 32-32V131.9zM256 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],desktop:[576,512,[128421,61704,\"desktop-alt\"],\"f390\",\"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V288H64V64H512z\"],m:[448,512,[109],\"4d\",\"M22.7 33.4c13.5-4.1 28.1 1.1 35.9 12.9L224 294.3 389.4 46.2c7.8-11.7 22.4-17 35.9-12.9S448 49.9 448 64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V169.7L250.6 369.8c-5.9 8.9-15.9 14.2-26.6 14.2s-20.7-5.3-26.6-14.2L64 169.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 49.9 9.2 37.5 22.7 33.4z\"],\"table-list\":[512,512,[\"th-list\"],\"f00b\",\"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 0v64h64V96H64zm384 0H192v64H448V96zM64 224v64h64V224H64zm384 0H192v64H448V224zM64 352v64h64V352H64zm384 0H192v64H448V352z\"],\"comment-sms\":[512,512,[\"sms\"],\"f7cd\",\"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM96 212.8c0-20.3 16.5-36.8 36.8-36.8H152c8.8 0 16 7.2 16 16s-7.2 16-16 16H132.8c-2.7 0-4.8 2.2-4.8 4.8c0 1.6 .8 3.1 2.2 4l29.4 19.6c10.3 6.8 16.4 18.3 16.4 30.7c0 20.3-16.5 36.8-36.8 36.8H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h27.2c2.7 0 4.8-2.2 4.8-4.8c0-1.6-.8-3.1-2.2-4l-29.4-19.6C102.2 236.7 96 225.2 96 212.8zM372.8 176H392c8.8 0 16 7.2 16 16s-7.2 16-16 16H372.8c-2.7 0-4.8 2.2-4.8 4.8c0 1.6 .8 3.1 2.2 4l29.4 19.6c10.2 6.8 16.4 18.3 16.4 30.7c0 20.3-16.5 36.8-36.8 36.8H352c-8.8 0-16-7.2-16-16s7.2-16 16-16h27.2c2.7 0 4.8-2.2 4.8-4.8c0-1.6-.8-3.1-2.2-4l-29.4-19.6c-10.2-6.8-16.4-18.3-16.4-30.7c0-20.3 16.5-36.8 36.8-36.8zm-152 6.4L256 229.3l35.2-46.9c4.1-5.5 11.3-7.8 17.9-5.6s10.9 8.3 10.9 15.2v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V240l-19.2 25.6c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L224 240v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-6.9 4.4-13 10.9-15.2s13.7 .1 17.9 5.6z\"],book:[448,512,[128212],\"f02d\",\"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],\"user-plus\":[640,512,[],\"f234\",\"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM504 312V248H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V136c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"],check:[448,512,[10003,10004],\"f00c\",\"M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\"],\"battery-three-quarters\":[576,512,[\"battery-4\"],\"f241\",\"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm272 96H96V320H352V192z\"],\"house-circle-check\":[640,512,[],\"e509\",\"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"],\"angle-left\":[320,512,[8249],\"f104\",\"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"],\"diagram-successor\":[512,512,[],\"e47a\",\"M512 416l0-64c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64zM64 160l0-64 144 0 16 0 0 64L64 160zm224 0l0-64 80 0c8.8 0 16 7.2 16 16l0 16-38.1 0c-21.4 0-32.1 25.9-17 41L399 239c9.4 9.4 24.6 9.4 33.9 0L503 169c15.1-15.1 4.4-41-17-41L448 128l0-16c0-44.2-35.8-80-80-80L224 32l-16 0L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64z\"],\"truck-arrow-right\":[640,512,[],\"e58b\",\"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM257 95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H262.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9L257 95z\"],\"arrows-split-up-and-left\":[512,512,[],\"e4bc\",\"M246.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 109.3V384c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c-70.7 0-128-57.3-128-128c0-35.3-28.7-64-64-64H109.3l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256H224c23.3 0 45.2 6.2 64 17.1V109.3l-41.4 41.4z\"],\"hand-fist\":[448,512,[9994,\"fist-raised\"],\"f6de\",\"M192 0c17.7 0 32 14.3 32 32V144H160V32c0-17.7 14.3-32 32-32zM64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v80H64V64zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V64zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V128zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V256c0 52.3-25.1 98.8-64 128v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V401.6c-17.3-7.9-33.2-18.8-46.9-32.5L69.5 357.5C45.5 333.5 32 300.9 32 267V240c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H128c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"],\"cloud-moon\":[640,512,[],\"f6c3\",\"M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80H96c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"],briefcase:[512,512,[128188],\"f0b1\",\"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 320 512V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM512 288H320v32c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V288z\"],\"person-falling\":[512,512,[],\"e546\",\"M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0h-1.4l92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32V278.2c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 32a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"],\"image-portrait\":[384,512,[\"portrait\"],\"f3e0\",\"M384 64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64l0-384zM128 192a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 356.6c0-37.9 30.7-68.6 68.6-68.6h86.9c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4H107.4C92.3 384 80 371.7 80 356.6z\"],\"user-tag\":[640,512,[],\"f507\",\"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c10 0 18.8-4.9 24.2-12.5l-99.2-99.2c-14.9-14.9-23.3-35.1-23.3-56.1v-33c-15.9-4.7-32.8-7.2-50.3-7.2H178.3zM384 224c-17.7 0-32 14.3-32 32v82.7c0 17 6.7 33.3 18.7 45.3L478.1 491.3c18.7 18.7 49.1 18.7 67.9 0l73.4-73.4c18.7-18.7 18.7-49.1 0-67.9L512 242.7c-12-12-28.3-18.7-45.3-18.7H384zm24 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"],rug:[640,512,[],\"e569\",\"M24 64H56 80V88v88 80 80 88 24H56 24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V360H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V280H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V200H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V112H24C10.7 112 0 101.3 0 88S10.7 64 24 64zm88 0H528V448H112V64zM640 88c0 13.3-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H584 560V424 336 256 176 88 64h24 32c13.3 0 24 10.7 24 24z\"],\"earth-europe\":[512,512,[\"globe-europe\"],\"f7a2\",\"M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1v9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1h1c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24v4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H379.3c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3h11.3c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16H454c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.7-15.4H251.4c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3v3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3H248c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z\"],\"cart-flatbed-suitcase\":[640,512,[\"luggage-cart\"],\"f59d\",\"M0 32C0 14.3 14.3 0 32 0H48c44.2 0 80 35.8 80 80V368c0 8.8 7.2 16 16 16H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H541.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H253.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H144c-44.2 0-80-35.8-80-80V80c0-8.8-7.2-16-16-16H32C14.3 64 0 49.7 0 32zM432 96V56c0-4.4-3.6-8-8-8H344c-4.4 0-8 3.6-8 8V96h96zM288 96V56c0-30.9 25.1-56 56-56h80c30.9 0 56 25.1 56 56V96 320H288V96zM512 320V96h16c26.5 0 48 21.5 48 48V272c0 26.5-21.5 48-48 48H512zM240 96h16V320H240c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"],\"rectangle-xmark\":[512,512,[62164,\"rectangle-times\",\"times-rectangle\",\"window-close\"],\"f410\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"],\"baht-sign\":[320,512,[],\"e0ac\",\"M144 0c-17.7 0-32 14.3-32 32V64H37.6C16.8 64 0 80.8 0 101.6V224v41.7V288 406.3c0 23 18.7 41.7 41.7 41.7H112v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c61.9 0 112-50.1 112-112c0-40.1-21.1-75.3-52.7-95.1C280.3 222.6 288 200.2 288 176c0-61.9-50.1-112-112-112V32c0-17.7-14.3-32-32-32zM112 128v96H64V128h48zm64 96V128c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-64 64v96H64V288h48zm64 96V288h32c26.5 0 48 21.5 48 48s-21.5 48-48 48H176z\"],\"book-open\":[576,512,[128214,128366],\"f518\",\"M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5V78.6c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C93.5 32 46.3 45.3 18.1 56.1C6.8 60.5 0 71.7 0 83.8V454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5V83.8c0-12.1-6.8-23.3-18.1-27.6C529.7 45.3 482.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11V456c0 11.4 11.7 19.3 22.4 15.5z\"],\"book-journal-whills\":[448,512,[\"journal-whills\"],\"f66a\",\"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zm90.4-234.4l-21.2-21.2c-3 10.1-5.1 20.6-5.1 31.6c0 .2 0 .5 .1 .8s.1 .5 .1 .8L165.2 226c2.5 2.1 3.4 5.8 2.3 8.9c-1.3 3-4.1 5.1-7.5 5.1c-1.9-.1-3.8-.8-5.2-2l-23.6-20.6C142.8 267 186.9 304 240 304s97.3-37 108.9-86.6L325.3 238c-1.4 1.2-3.3 2-5.3 2c-2.2-.1-4.4-1.1-6-2.8c-1.2-1.5-1.9-3.4-2-5.2c.1-2.2 1.1-4.4 2.8-6l37.1-32.5c0-.3 0-.5 .1-.8s.1-.5 .1-.8c0-11-2.1-21.5-5.1-31.6l-21.2 21.2c-3.1 3.1-8.1 3.1-11.3 0s-3.1-8.1 0-11.2l26.4-26.5c-8.2-17-20.5-31.7-35.9-42.6c-2.7-1.9-6.2 1.4-5 4.5c8.5 22.4 3.6 48-13 65.6c-3.2 3.4-3.6 8.9-.9 12.7c9.8 14 12.7 31.9 7.5 48.5c-5.9 19.4-22 34.1-41.9 38.3l-1.4-34.3 12.6 8.6c.6 .4 1.5 .6 2.3 .6c1.5 0 2.7-.8 3.5-2s.6-2.8-.1-4L260 225.4l18-3.6c1.8-.4 3.1-2.1 3.1-4s-1.4-3.5-3.1-3.9l-18-3.7 8.5-14.3c.8-1.2 .9-2.9 .1-4.1s-2-2-3.5-2l-.1 0c-.7 .1-1.5 .3-2.1 .7l-14.1 9.6L244 87.9c-.1-2.2-1.9-3.9-4-3.9s-3.9 1.6-4 3.9l-4.6 110.8-12-8.1c-1.5-1.1-3.6-.9-5 .4s-1.6 3.4-.8 5l8.6 14.3-18 3.7c-1.8 .4-3.1 2-3.1 3.9s1.4 3.6 3.1 4l18 3.8-8.6 14.2c-.2 .6-.5 1.4-.5 2c0 1.1 .5 2.1 1.2 3c.8 .6 1.8 1 2.8 1c.7 0 1.6-.2 2.2-.6l10.4-7.1-1.4 32.8c-19.9-4.1-36-18.9-41.9-38.3c-5.1-16.6-2.2-34.4 7.6-48.5c2.7-3.9 2.3-9.3-.9-12.7c-16.6-17.5-21.6-43.1-13.1-65.5c1.2-3.1-2.3-6.4-5-4.5c-15.3 10.9-27.6 25.6-35.8 42.6l26.4 26.5c3.1 3.1 3.1 8.1 0 11.2s-8.1 3.1-11.2 0z\"],handcuffs:[640,512,[],\"e4f8\",\"M240 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM192 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32 80c17.7 0 32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C280.3 229.6 320 286.2 320 352c0 88.4-71.6 160-160 160S0 440.4 0 352c0-65.8 39.7-122.4 96.5-146.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32zm0 320a96 96 0 1 0 0-192 96 96 0 1 0 0 192zm192-96c0-25.9-5.1-50.5-14.4-73.1c16.9-32.9 44.8-59.1 78.9-73.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32s32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C600.3 229.6 640 286.2 640 352c0 88.4-71.6 160-160 160c-62 0-115.8-35.3-142.4-86.9c9.3-22.5 14.4-47.2 14.4-73.1zm224 0a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM368 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm80 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"triangle-exclamation\":[512,512,[9888,\"exclamation-triangle\",\"warning\"],\"f071\",\"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"],database:[448,512,[],\"f1c0\",\"M448 80v48c0 44.2-100.3 80-224 80S0 172.2 0 128V80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6V288c0 44.2-100.3 80-224 80S0 332.2 0 288V186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6V432c0 44.2-100.3 80-224 80S0 476.2 0 432V346.1z\"],share:[512,512,[\"mail-forward\"],\"f064\",\"M307 34.8c-11.5 5.1-19 16.6-19 29.2v64H176C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96h96v64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z\"],\"bottle-droplet\":[320,512,[],\"e4c4\",\"M96 0C82.7 0 72 10.7 72 24s10.7 24 24 24c4.4 0 8 3.6 8 8v64.9c0 12.2-7.2 23.1-17.2 30.1C53.7 174.1 32 212.5 32 256V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V256c0-43.5-21.7-81.9-54.8-105c-10-7-17.2-17.9-17.2-30.1V56c0-4.4 3.6-8 8-8c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0 0 0 0H104l0 0 0 0L96 0zm64 382c-26.5 0-48-20.1-48-45c0-16.8 22.1-48.1 36.3-66.4c6-7.8 17.5-7.8 23.5 0C185.9 288.9 208 320.2 208 337c0 24.9-21.5 45-48 45z\"],\"mask-face\":[640,512,[],\"e1d7\",\"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1H144 128 56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l108 27C233.8 435 275.4 448 320 448s86.2-13 121.1-35.5l108-27C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H512 496h-9.2c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM132.3 346.3l-29.8-7.4C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H96v48c0 45.1 13.4 87.2 36.3 122.3zm405.1-7.4l-29.8 7.4c23-35.2 36.3-77.2 36.3-122.3V176h40c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9zM192 208c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zm16 48H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 80c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"],\"hill-rockslide\":[576,512,[],\"e508\",\"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2H293.4c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9V309.4c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9v53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"right-left\":[512,512,[\"exchange-alt\"],\"f362\",\"M32 96l320 0V32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H160v64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64H480z\"],\"paper-plane\":[512,512,[61913],\"f1d8\",\"M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z\"],\"road-circle-exclamation\":[640,512,[],\"e565\",\"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"],dungeon:[512,512,[],\"f6d9\",\"M336.6 156.5c1.3 1.1 2.7 2.2 3.9 3.3c9.3 8.2 23 10.5 33.4 3.6l67.6-45.1c11.4-7.6 14.2-23.2 5.1-33.4C430 66.6 410.9 50.6 389.7 37.6c-11.9-7.3-26.9-1.4-32.1 11.6l-30.5 76.2c-4.5 11.1 .2 23.6 9.5 31.2zM328 36.8c5.1-12.8-1.6-27.4-15-30.5C294.7 2.2 275.6 0 256 0s-38.7 2.2-57 6.4C185.5 9.4 178.8 24 184 36.8l30.3 75.8c4.5 11.3 16.8 17.2 29 16c4.2-.4 8.4-.6 12.7-.6s8.6 .2 12.7 .6c12.1 1.2 24.4-4.7 29-16L328 36.8zM65.5 85c-9.1 10.2-6.3 25.8 5.1 33.4l67.6 45.1c10.3 6.9 24.1 4.6 33.4-3.6c1.3-1.1 2.6-2.3 4-3.3c9.3-7.5 13.9-20.1 9.5-31.2L154.4 49.2c-5.2-12.9-20.3-18.8-32.1-11.6C101.1 50.6 82 66.6 65.5 85zm314 137.1c.9 3.3 1.7 6.6 2.3 10c2.5 13 13 23.9 26.2 23.9h80c13.3 0 24.1-10.8 22.9-24c-2.5-27.2-9.3-53.2-19.7-77.3c-5.5-12.9-21.4-16.6-33.1-8.9l-68.6 45.7c-9.8 6.5-13.2 19.2-10 30.5zM53.9 145.8c-11.6-7.8-27.6-4-33.1 8.9C10.4 178.8 3.6 204.8 1.1 232c-1.2 13.2 9.6 24 22.9 24h80c13.3 0 23.8-10.8 26.2-23.9c.6-3.4 1.4-6.7 2.3-10c3.1-11.4-.2-24-10-30.5L53.9 145.8zM104 288H24c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24zm304 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24H408zM24 416c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H24zm384 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H408zM272 192c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V192zm-64 32c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224zm128 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224z\"],\"align-right\":[448,512,[],\"f038\",\"M448 64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"],\"money-bill-1-wave\":[576,512,[\"money-bill-wave-alt\"],\"f53b\",\"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM128 416H64V352c35.3 0 64 28.7 64 64zM64 224V160h64c0 35.3-28.7 64-64 64zM448 352c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM384 256c0 61.9-43 112-96 112s-96-50.1-96-112s43-112 96-112s96 50.1 96 112zM252 208c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"],\"life-ring\":[512,512,[],\"f1cd\",\"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3s-20.2-113.9-54-157.3c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256s20.2 113.9 54 157.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"],hands:[576,512,[\"sign-language\",\"signing\"],\"f2a7\",\"M544 160l-.1 72.6c-.1 52.2-24 101-64 133.1c.1-1.9 .1-3.8 .1-5.7v-8c0-71.8-37-138.6-97.9-176.7l-60.2-37.6c-8.6-5.4-17.9-8.4-27.3-9.4L248.7 48.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8l78 135.1c3.3 5.7 10.7 7.7 16.4 4.4s7.7-10.7 4.4-16.4l-62-107.4c-6.6-11.5-2.7-26.2 8.8-32.8S362 5 368.6 16.5l68 117.8 0 0 0 0 43.3 75L480 160c0-17.7 14.4-32 32-32s32 14.4 32 32zM243.9 88.5L268.5 131c-13.9 4.5-26.4 13.7-34.7 27c-.9 1.4-1.7 2.9-2.5 4.4l-28.9-50c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zm-46.4 63.7l26.8 46.4c.6 6 2.1 11.8 4.3 17.4H224 210.7l0 0H179l-23-39.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zM260.9 175c9.4-15 29.1-19.5 44.1-10.2l60.2 37.6C416.7 234.7 448 291.2 448 352v8c0 83.9-68.1 152-152 152H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h92c6.6 0 12-5.4 12-12s-5.4-12-12-12H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H212c6.6 0 12-5.4 12-12s-5.4-12-12-12H56c-13.3 0-24-10.7-24-24s10.7-24 24-24H212c6.6 0 12-5.4 12-12s-5.4-12-12-12H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H224l0 0 0 0h93.2L271 219.1c-15-9.4-19.5-29.1-10.2-44.1z\"],\"calendar-day\":[448,512,[],\"f783\",\"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"],\"water-ladder\":[576,512,[\"ladder-water\",\"swimming-pool\"],\"f5c5\",\"M128 127.7C128 74.9 170.9 32 223.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V224H384V127.7C384 74.9 426.9 32 479.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V361c-1.6 1-3.3 2-4.8 3.1c-18 12.4-40.1 20.3-59.2 20.3h0V288H192v96.5c-19 0-41.2-7.9-59.1-20.3c-1.6-1.1-3.2-2.2-4.9-3.1V127.7zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"],\"arrows-up-down\":[320,512,[\"arrows-v\"],\"f07d\",\"M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"],\"face-grimace\":[512,512,[128556,\"grimace\"],\"f57f\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm96-112h-8V360l55.3 0c-3.8 22.7-23.6 40-47.3 40zm47.3-56L344 344V304h8c23.8 0 43.5 17.3 47.3 40zM328 344H264V304h64v40zm0 56H264V360h64v40zm-80-96v40l-64 0V304h64zm0 56v40H184V360l64 0zm-80-16H112.7c3.8-22.7 23.6-40 47.3-40h8v40zm0 56h-8c-23.8 0-43.5-17.3-47.3-40H168v40zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],\"wheelchair-move\":[448,512,[\"wheelchair-alt\"],\"e2ce\",\"M320 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM204.5 121.3c-5.4-2.5-11.7-1.9-16.4 1.7l-40.9 30.7c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l40.9-30.7c23.7-17.8 55.3-21 82.1-8.4l90.4 42.5c29.1 13.7 36.8 51.6 15.2 75.5L299.1 224h97.4c30.3 0 53 27.7 47.1 57.4L415.4 422.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L377 288H306.7c8.6 19.6 13.3 41.2 13.3 64c0 88.4-71.6 160-160 160S0 440.4 0 352s71.6-160 160-160c11.1 0 22 1.1 32.4 3.3l54.2-54.2-42.1-19.8zM160 448a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"],\"turn-down\":[384,512,[10549,\"level-down-alt\"],\"f3be\",\"M350 334.5c3.8 8.8 2 19-4.6 26l-136 144c-4.5 4.8-10.8 7.5-17.4 7.5s-12.9-2.7-17.4-7.5l-136-144c-6.6-7-8.4-17.2-4.6-26s12.5-14.5 22-14.5h88l0-192c0-17.7-14.3-32-32-32H32C14.3 96 0 81.7 0 64V32C0 14.3 14.3 0 32 0l80 0c70.7 0 128 57.3 128 128l0 192h88c9.6 0 18.2 5.7 22 14.5z\"],\"person-walking-arrow-right\":[640,512,[],\"e552\",\"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z\"],\"square-envelope\":[448,512,[\"envelope-square\"],\"f199\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM218 271.7L64.2 172.4C66 156.4 79.5 144 96 144H352c16.5 0 30 12.4 31.8 28.4L230 271.7c-1.8 1.2-3.9 1.8-6 1.8s-4.2-.6-6-1.8zm29.4 26.9L384 210.4V336c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V210.4l136.6 88.2c7 4.5 15.1 6.9 23.4 6.9s16.4-2.4 23.4-6.9z\"],dice:[640,512,[127922],\"f522\",\"M274.9 34.3c-28.1-28.1-73.7-28.1-101.8 0L34.3 173.1c-28.1 28.1-28.1 73.7 0 101.8L173.1 413.7c28.1 28.1 73.7 28.1 101.8 0L413.7 274.9c28.1-28.1 28.1-73.7 0-101.8L274.9 34.3zM200 224a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM96 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 376a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM352 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 120a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm96 328c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H461.7c11.6 36 3.1 77-25.4 105.5L320 413.8V448zM480 328a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"],\"bowling-ball\":[512,512,[],\"f436\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM240 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM208 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-64-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],brain:[512,512,[129504],\"f5dc\",\"M184 0c30.9 0 56 25.1 56 56V456c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56V56c0-30.9 25.1-56 56-56z\"],bandage:[640,512,[129657,\"band-aid\"],\"f462\",\"M480 416h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H480V416zM448 96H192V416H448V96zM64 96C28.7 96 0 124.7 0 160V352c0 35.3 28.7 64 64 64h96V96H64zM248 208a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM248 304a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"],\"calendar-minus\":[448,512,[],\"f272\",\"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM312 376c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-13.3 0-24 10.7-24 24s10.7 24 24 24H312z\"],\"circle-xmark\":[512,512,[61532,\"times-circle\",\"xmark-circle\"],\"f057\",\"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"],gifts:[640,512,[],\"f79c\",\"M200.6 32C205 19.5 198.5 5.8 186 1.4S159.8 3.5 155.4 16L144.7 46.2l-9.9-29.8C130.6 3.8 117-3 104.4 1.2S85 19 89.2 31.6l8.3 25-27.4-20c-10.7-7.8-25.7-5.4-33.5 5.3s-5.4 25.7 5.3 33.5L70.2 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H200.6c-5.4-9.4-8.6-20.3-8.6-32V256c0-29.9 20.5-55 48.2-62c1.8-31 17.1-58.2 40.1-76.1C271.7 104.7 256.9 96 240 96H217.8l28.3-20.6c10.7-7.8 13.1-22.8 5.3-33.5s-22.8-13.1-33.5-5.3L192.5 55.1 200.6 32zM363.5 185.5L393.1 224H344c-13.3 0-24-10.7-24-24c0-13.1 10.8-24 24.2-24c7.6 0 14.7 3.5 19.3 9.5zM272 200c0 8.4 1.4 16.5 4.1 24H272c-26.5 0-48 21.5-48 48v80H416V256h32v96H640V272c0-26.5-21.5-48-48-48h-4.1c2.7-7.5 4.1-15.6 4.1-24c0-39.9-32.5-72-72.2-72c-22.4 0-43.6 10.4-57.3 28.2L432 195.8l-30.5-39.6c-13.7-17.8-35-28.2-57.3-28.2c-39.7 0-72.2 32.1-72.2 72zM224 464c0 26.5 21.5 48 48 48H416V384H224v80zm224 48H592c26.5 0 48-21.5 48-48V384H448V512zm96-312c0 13.3-10.7 24-24 24H470.9l29.6-38.5c4.6-5.9 11.7-9.5 19.3-9.5c13.4 0 24.2 10.9 24.2 24z\"],hotel:[512,512,[127976],\"f594\",\"M0 32C0 14.3 14.3 0 32 0H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64C14.3 64 0 49.7 0 32zm96 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zM240 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H240zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zM112 192c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H112zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H368zM328 384c13.3 0 24.3-10.9 21-23.8c-10.6-41.5-48.2-72.2-93-72.2s-82.5 30.7-93 72.2c-3.3 12.8 7.8 23.8 21 23.8H328z\"],\"earth-asia\":[512,512,[127759,\"globe-asia\"],\"f57e\",\"M51.7 295.1l31.7 6.3c7.9 1.6 16-.9 21.7-6.6l15.4-15.4c11.6-11.6 31.1-8.4 38.4 6.2l9.3 18.5c4.8 9.6 14.6 15.7 25.4 15.7c15.2 0 26.1-14.6 21.7-29.2l-6-19.9c-4.6-15.4 6.9-30.9 23-30.9h2.3c13.4 0 25.9-6.7 33.3-17.8l10.7-16.1c5.6-8.5 5.3-19.6-.8-27.7l-16.1-21.5c-10.3-13.7-3.3-33.5 13.4-37.7l17-4.3c7.5-1.9 13.6-7.2 16.5-14.4l16.4-40.9C303.4 52.1 280.2 48 256 48C141.1 48 48 141.1 48 256c0 13.4 1.3 26.5 3.7 39.1zm407.7 4.6c-3-.3-6-.1-9 .8l-15.8 4.4c-6.7 1.9-13.8-.9-17.5-6.7l-2-3.1c-6-9.4-16.4-15.1-27.6-15.1s-21.6 5.7-27.6 15.1l-6.1 9.5c-1.4 2.2-3.4 4.1-5.7 5.3L312 330.1c-18.1 10.1-25.5 32.4-17 51.3l5.5 12.4c8.6 19.2 30.7 28.5 50.5 21.1l2.6-1c10-3.7 21.3-2.2 29.9 4.1l1.5 1.1c37.2-29.5 64.1-71.4 74.4-119.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm144.5 92.1c-2.1 8.6 3.1 17.3 11.6 19.4l32 8c8.6 2.1 17.3-3.1 19.4-11.6s-3.1-17.3-11.6-19.4l-32-8c-8.6-2.1-17.3 3.1-19.4 11.6zm92-20c-2.1 8.6 3.1 17.3 11.6 19.4s17.3-3.1 19.4-11.6l8-32c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-8 32zM343.2 113.7c-7.9-4-17.5-.7-21.5 7.2l-16 32c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l16-32c4-7.9 .7-17.5-7.2-21.5z\"],\"id-card-clip\":[576,512,[\"id-card-alt\"],\"f47f\",\"M256 0h64c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM64 64H192v48c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64zM176 437.3c0 5.9 4.8 10.7 10.7 10.7H389.3c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3H229.3c-29.5 0-53.3 23.9-53.3 53.3zM288 352a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"],\"magnifying-glass-plus\":[512,512,[\"search-plus\"],\"f00e\",\"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"],\"thumbs-up\":[512,512,[128077,61575],\"f164\",\"M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z\"],\"user-clock\":[640,512,[],\"f4fd\",\"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c20.6 0 40.4 3.5 58.8 9.9C323 331 320 349.1 320 368c0 59.5 29.5 112.1 74.8 144H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-80c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H512V304c0-8.8-7.2-16-16-16z\"],\"hand-dots\":[512,512,[\"allergies\"],\"f461\",\"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32zM240 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80 16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48-16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-16 80a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM240 432a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-48-48a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"],\"file-invoice\":[384,512,[],\"f570\",\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 96H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm0 32v64H288V256H96zM240 416h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"],\"window-minimize\":[512,512,[128469],\"f2d1\",\"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"],\"mug-saucer\":[640,512,[\"coffee\"],\"f0f4\",\"M96 64c0-17.7 14.3-32 32-32H448h64c70.7 0 128 57.3 128 128s-57.3 128-128 128H480c0 53-43 96-96 96H192c-53 0-96-43-96-96V64zM480 224h32c35.3 0 64-28.7 64-64s-28.7-64-64-64H480V224zM32 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"],brush:[384,512,[],\"f55d\",\"M162.4 6c-1.5-3.6-5-6-8.9-6h-19c-3.9 0-7.5 2.4-8.9 6L104.9 57.7c-3.2 8-14.6 8-17.8 0L66.4 6c-1.5-3.6-5-6-8.9-6H48C21.5 0 0 21.5 0 48V224v22.4V256H9.6 374.4 384v-9.6V224 48c0-26.5-21.5-48-48-48H230.5c-3.9 0-7.5 2.4-8.9 6L200.9 57.7c-3.2 8-14.6 8-17.8 0L162.4 6zM0 288v32c0 35.3 28.7 64 64 64h64v64c0 35.3 28.7 64 64 64s64-28.7 64-64V384h64c35.3 0 64-28.7 64-64V288H0zM192 432a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"],mask:[576,512,[],\"f6fa\",\"M288 64C64 64 0 160 0 272S80 448 176 448h8.4c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4H400c96 0 176-64 176-176s-64-208-288-208zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm320-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"],\"magnifying-glass-minus\":[512,512,[\"search-minus\"],\"f010\",\"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H136z\"],\"ruler-vertical\":[256,512,[],\"f548\",\"M0 48C0 21.5 21.5 0 48 0H208c26.5 0 48 21.5 48 48V96H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"],\"user-large\":[512,512,[\"user-alt\"],\"f406\",\"M256 288A144 144 0 1 0 256 0a144 144 0 1 0 0 288zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7H481.3c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320H161.3z\"],\"train-tram\":[448,512,[128650],\"e5b4\",\"M86.8 48c-12.2 0-23.6 5.5-31.2 15L42.7 79C34.5 89.3 19.4 91 9 82.7S-3 59.4 5.3 49L18 33C34.7 12.2 60 0 86.8 0H361.2c26.7 0 52 12.2 68.7 33l12.8 16c8.3 10.4 6.6 25.5-3.8 33.7s-25.5 6.6-33.7-3.7L392.5 63c-7.6-9.5-19.1-15-31.2-15H248V96h40c53 0 96 43 96 96V352c0 30.6-14.3 57.8-36.6 75.4l65.5 65.5c7.1 7.1 2.1 19.1-7.9 19.1H365.3c-8.5 0-16.6-3.4-22.6-9.4L288 448H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H43c-10 0-15-12.1-7.9-19.1l65.5-65.5C78.3 409.8 64 382.6 64 352V192c0-53 43-96 96-96h40V48H86.8zM160 160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H160zm32 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"],\"user-nurse\":[448,512,[],\"f82f\",\"M96 128V70.2c0-13.3 8.3-25.3 20.8-30l96-36c7.2-2.7 15.2-2.7 22.5 0l96 36c12.5 4.7 20.8 16.6 20.8 30V128h-.3c.2 2.6 .3 5.3 .3 8v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V136c0-2.7 .1-5.4 .3-8H96zm48 48c0 44.2 35.8 80 80 80s80-35.8 80-80V160H144v16zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6zM208 48V64H192c-4.4 0-8 3.6-8 8V88c0 4.4 3.6 8 8 8h16v16c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V96h16c4.4 0 8-3.6 8-8V72c0-4.4-3.6-8-8-8H240V48c0-4.4-3.6-8-8-8H216c-4.4 0-8 3.6-8 8z\"],syringe:[512,512,[128137],\"f48e\",\"M441 7l32 32 32 32c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15L417.9 128l55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72L295 73c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l55 55L422.1 56 407 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM210.3 155.7l61.1-61.1c.3 .3 .6 .7 1 1l16 16 56 56 56 56 16 16c.3 .3 .6 .6 1 1l-191 191c-10.5 10.5-24.7 16.4-39.6 16.4H97.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V325.3c0-14.9 5.9-29.1 16.4-39.6l43.3-43.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57z\"],\"cloud-sun\":[640,512,[9925],\"f6c4\",\"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 84.7 14.1c5.4 .9 10 4.5 12.1 9.6s1.5 10.9-1.6 15.4l-38.5 55c-2.2-.1-4.4-.2-6.7-.2c-23.3 0-45.1 6.2-64 17.1l0-1.1c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17c-4.5 3.1-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM639.9 431.9c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"],\"stopwatch-20\":[448,512,[],\"e06f\",\"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H176zM288 204c28.7 0 52 23.3 52 52v96c0 28.7-23.3 52-52 52s-52-23.3-52-52V256c0-28.7 23.3-52 52-52zm-12 52v96c0 6.6 5.4 12 12 12s12-5.4 12-12V256c0-6.6-5.4-12-12-12s-12 5.4-12 12zM159.5 244c-5.4 0-10.2 3.5-11.9 8.6l-.6 1.7c-3.5 10.5-14.8 16.1-25.3 12.6s-16.1-14.8-12.6-25.3l.6-1.7c7.2-21.5 27.2-35.9 49.8-35.9c29 0 52.5 23.5 52.5 52.5v2.2c0 13.4-4.9 26.4-13.8 36.4l-39 43.9c-6.2 7-10 15.7-10.9 24.9H192c11 0 20 9 20 20s-9 20-20 20H128c-11 0-20-9-20-20V368.3c0-20.6 7.5-40.4 21.2-55.8l39-43.9c2.4-2.7 3.7-6.2 3.7-9.8v-2.2c0-6.9-5.6-12.5-12.5-12.5z\"],\"square-full\":[512,512,[128997,128998,128999,129e3,129001,129002,129003,11035,11036],\"f45c\",\"M0 0H512V512H0V0z\"],magnet:[448,512,[129522],\"f076\",\"M0 160v96C0 379.7 100.3 480 224 480s224-100.3 224-224V160H320v96c0 53-43 96-96 96s-96-43-96-96V160H0zm0-32H128V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64zm320 0H448V64c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32v64z\"],jar:[320,512,[],\"e516\",\"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm96 64c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H96z\"],\"note-sticky\":[448,512,[62026,\"sticky-note\"],\"f249\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H288V368c0-26.5 21.5-48 48-48H448V96c0-35.3-28.7-64-64-64H64zM448 352H402.7 336c-8.8 0-16 7.2-16 16v66.7V480l32-32 64-64 32-32z\"],\"bug-slash\":[640,512,[],\"e490\",\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L477.4 348.9c1.7-9.4 2.6-19 2.6-28.9h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H479.7c-1.1-14.1-5-27.5-11.1-39.5c.7-.6 1.4-1.2 2.1-1.9l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-.7 .7-1.3 1.4-1.9 2.1C409.2 164.1 393.1 160 376 160H264c-8.3 0-16.3 1-24 2.8L38.8 5.1zm392 430.3L336 360.7V479.2c36.6-3.6 69.7-19.6 94.8-43.8zM166.7 227.3c-3.4 9-5.6 18.7-6.4 28.7H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c0 24.6 5.5 47.8 15.4 68.6c-2.2 1.3-4.2 2.9-6 4.8l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l63.1-63.1c24.5 21.8 55.8 36.2 90.3 39.6V335.5L166.7 227.3zM320 0c-53 0-96 43-96 96v3.6c0 15.7 12.7 28.4 28.4 28.4H387.6c15.7 0 28.4-12.7 28.4-28.4V96c0-53-43-96-96-96z\"],\"arrow-up-from-water-pump\":[576,512,[],\"e4b6\",\"M112 0C85.5 0 64 21.5 64 48V256H48c-26.5 0-48 21.5-48 48v96c0 8 2 15.6 5.4 22.2c3.8-1.7 7.8-3.1 12-4.1c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c4.2 1 8.2 2.4 12 4.1C574 415.6 576 408 576 400V304c0-26.5-21.5-48-48-48H480l0-146.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 109.3 416 256H288V48c0-26.5-21.5-48-48-48H112zM306.5 421.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"],bone:[576,512,[129460],\"f5d7\",\"M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2H384c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336H192c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z\"],\"user-injured\":[448,512,[],\"f728\",\"M240 80H342.7c-7.9-19.5-20.4-36.5-36.2-49.9L240 80zm37.7-68.2C261.3 4.2 243.2 0 224 0c-53.7 0-99.7 33.1-118.7 80h81.4l91-68.2zM224 256c70.7 0 128-57.3 128-128c0-5.4-.3-10.8-1-16H97c-.7 5.2-1 10.6-1 16c0 70.7 57.3 128 128 128zM124 312.4c-9.7 3.1-19.1 7-28 11.7V512H243.7L181.5 408.2 124 312.4zm33-7.2L204.3 384H272c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48h82.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3c-7.2 0-14.3 .4-21.3 1.3zM0 482.3C0 498.7 13.3 512 29.7 512H64V345.4C24.9 378.1 0 427.3 0 482.3zM320 464c0-26.5-21.5-48-48-48H223.5l57.1 95.2C303 507.2 320 487.6 320 464z\"],\"face-sad-tear\":[512,512,[128546,\"sad-tear\"],\"f5b4\",\"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM367.6 208a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],plane:[576,512,[],\"f072\",\"M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z\"],\"tent-arrows-down\":[576,512,[],\"e581\",\"M209.8 111.9c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L136 24c0-13.3-10.7-24-24-24S88 10.7 88 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zm352 0c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V146.1l-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H240h16c17.7 0 32-14.3 32-32V361.9c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7H464h16c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"],exclamation:[64,512,[10069,10071,61738],\"21\",\"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM32 480a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"],\"arrows-spin\":[512,512,[],\"e4bb\",\"M256 96c38.4 0 73.7 13.5 101.3 36.1l-32.6 32.6c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H448c8.8 0 16-7.2 16-16V64c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-34 34C363.4 52.6 312.1 32 256 32c-10.9 0-21.5 .8-32 2.3V99.2c10.3-2.1 21-3.2 32-3.2zM132.1 154.7l32.6 32.6c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8V64c0-8.8-7.2-16-16-16H64c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l34 34C52.6 148.6 32 199.9 32 256c0 10.9 .8 21.5 2.3 32H99.2c-2.1-10.3-3.2-21-3.2-32c0-38.4 13.5-73.7 36.1-101.3zM477.7 224H412.8c2.1 10.3 3.2 21 3.2 32c0 38.4-13.5 73.7-36.1 101.3l-32.6-32.6c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8V448c0 8.8 7.2 16 16 16H448c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-34-34C459.4 363.4 480 312.1 480 256c0-10.9-.8-21.5-2.3-32zM256 416c-38.4 0-73.7-13.5-101.3-36.1l32.6-32.6c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9H64c-8.8 0-16 7.2-16 16l0 112c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l34-34C148.6 459.4 199.9 480 256 480c10.9 0 21.5-.8 32-2.3V412.8c-10.3 2.1-21 3.2-32 3.2z\"],print:[512,512,[128424,128438,9113],\"f02f\",\"M128 0C92.7 0 64 28.7 64 64v96h64V64H354.7L384 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0H128zM384 352v32 64H128V384 368 352H384zm64 32h32c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v96c0 17.7 14.3 32 32 32H64v64c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V384zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"],\"turkish-lira-sign\":[384,512,[\"try\",\"turkish-lira\"],\"e2bb\",\"M96 32c17.7 0 32 14.3 32 32V99.3L247.2 65.2c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 165.9v29.4l119.2-34.1c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 261.9V416h63.8c68.2 0 124.4-53.5 127.8-121.6l.4-8c.9-17.7 15.9-31.2 33.6-30.4s31.2 15.9 30.4 33.6l-.4 8C378.5 399.8 294.1 480 191.8 480H96c-17.7 0-32-14.3-32-32V280.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 213.6V184.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 117.6V64c0-17.7 14.3-32 32-32z\"],\"dollar-sign\":[320,512,[128178,61781,\"dollar\",\"usd\"],\"24\",\"M160 0c17.7 0 32 14.3 32 32V67.7c1.6 .2 3.1 .4 4.7 .7c.4 .1 .7 .1 1.1 .2l48 8.8c17.4 3.2 28.9 19.9 25.7 37.2s-19.9 28.9-37.2 25.7l-47.5-8.7c-31.3-4.6-58.9-1.5-78.3 6.2s-27.2 18.3-29 28.1c-2 10.7-.5 16.7 1.2 20.4c1.8 3.9 5.5 8.3 12.8 13.2c16.3 10.7 41.3 17.7 73.7 26.3l2.9 .8c28.6 7.6 63.6 16.8 89.6 33.8c14.2 9.3 27.6 21.9 35.9 39.5c8.5 17.9 10.3 37.9 6.4 59.2c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.1c-.4-.1-.9-.1-1.3-.2l-.2 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.1-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.5 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.6 .4-16.7-1.3-20.4c-1.9-4-5.6-8.4-13-13.3c-16.4-10.7-41.5-17.7-74-26.3l-2.8-.7 0 0C119.4 279.3 84.4 270 58.4 253c-14.2-9.3-27.5-22-35.8-39.6c-8.4-17.9-10.1-37.9-6.1-59.2C23.7 116 52.3 91.2 84.8 78.3c13.3-5.3 27.9-8.9 43.2-11V32c0-17.7 14.3-32 32-32z\"],x:[384,512,[120],\"58\",\"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"],\"magnifying-glass-dollar\":[512,512,[\"search-dollar\"],\"f688\",\"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM228 104c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V312c0 11 9 20 20 20s20-9 20-20V298.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V104z\"],\"users-gear\":[640,512,[\"users-cog\"],\"f509\",\"M144 160A80 80 0 1 0 144 0a80 80 0 1 0 0 160zm368 0A80 80 0 1 0 512 0a80 80 0 1 0 0 160zM0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7H106.7C47.8 192 0 239.8 0 298.7zM320 320c24 0 45.9-8.8 62.7-23.3c2.5-3.7 5.2-7.3 8-10.7c2.7-3.3 5.7-6.1 9-8.3C410 262.3 416 243.9 416 224c0-53-43-96-96-96s-96 43-96 96s43 96 96 96zm65.4 60.2c-10.3-5.9-18.1-16.2-20.8-28.2H261.3C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H455.2c-2.1-5.2-3.2-10.9-3.2-16.4v-3c-1.3-.7-2.7-1.5-4-2.3l-2.6 1.5c-16.8 9.7-40.5 8-54.7-9.7c-4.5-5.6-8.6-11.5-12.4-17.6l-.1-.2-.1-.2-2.4-4.1-.1-.2-.1-.2c-3.4-6.2-6.4-12.6-9-19.3c-8.2-21.2 2.2-42.6 19-52.3l2.7-1.5c0-.8 0-1.5 0-2.3s0-1.5 0-2.3l-2.7-1.5zM533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 17.4-3.5 33.9-9.7 49c2.5 .9 4.9 2 7.1 3.3l2.6 1.5c1.3-.8 2.6-1.6 4-2.3v-3c0-19.4 13.3-39.1 35.8-42.6c7.9-1.2 16-1.9 24.2-1.9s16.3 .6 24.2 1.9c22.5 3.5 35.8 23.2 35.8 42.6v3c1.3 .7 2.7 1.5 4 2.3l2.6-1.5c16.8-9.7 40.5-8 54.7 9.7c2.3 2.8 4.5 5.8 6.6 8.7c-2.1-57.1-49-102.7-106.6-102.7zm91.3 163.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3l-2.9 1.7c-9.2 5.3-20.4 4-29.6-1.3s-16.1-14.5-16.1-25.1v-3.4c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9v3.4c0 10.6-6.9 19.8-16.1 25.1s-20.4 6.6-29.6 1.3l-2.9-1.7c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 17.9l2.9 1.7c9.2 5.3 13.7 15.8 13.7 26.4s-4.5 21.1-13.7 26.4l-3 1.7c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3l2.9-1.7c9.2-5.3 20.4-4 29.6 1.3s16.1 14.5 16.1 25.1v3.4c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9v-3.4c0-10.6 6.9-19.8 16.1-25.1s20.4-6.6 29.6-1.3l2.9 1.7c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-3-1.7c-9.2-5.3-13.7-15.8-13.7-26.4s4.5-21.1 13.7-26.4l3-1.7zM472 384a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"],\"person-military-pointing\":[576,512,[],\"e54a\",\"M246.9 14.1C234 15.2 224 26 224 39c0 13.8 11.2 25 25 25H400c8.8 0 16-7.2 16-16V17.4C416 8 408 .7 398.7 1.4L246.9 14.1zM240 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H241.6c-1 5.2-1.6 10.5-1.6 16zM72 224c-22.1 0-40 17.9-40 40s17.9 40 40 40H224v89.4L386.8 230.5c-13.3-4.3-27.3-6.5-41.6-6.5H240 72zm345.7 20.9L246.6 416H416V369.7l53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L462.3 290.8c-11.2-18.9-26.6-34.5-44.6-45.9zM224 448v32c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V448H224z\"],\"building-columns\":[512,512,[\"bank\",\"institution\",\"museum\",\"university\"],\"f19c\",\"M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160v8c0 13.3 10.7 24 24 24H456c13.3 0 24-10.7 24-24v-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8-3.4-17.2-3.4-25.2 0zM128 224H64V420.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512H480c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1V224H384V416H344V224H280V416H232V224H168V416H128V224zM256 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"],umbrella:[576,512,[],\"f0e9\",\"M288 0c17.7 0 32 14.3 32 32V49.7C451.8 63.4 557.7 161 573.9 285.9c2 15.6-17.3 24.4-27.8 12.7C532.1 283 504.8 272 480 272c-38.7 0-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C359 299.5 326.7 272 288 272s-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C167 299.5 134.7 272 96 272c-24.8 0-52.1 11-66.1 26.7C19.4 310.4 .1 301.5 2.1 285.9C18.3 161 124.2 63.4 256 49.7V32c0-17.7 14.3-32 32-32zm0 304c12.3 0 23.5 4.6 32 12.2V430.6c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4V316.2c8.5-7.6 19.7-12.2 32-12.2z\"],trowel:[512,512,[],\"e589\",\"M343.9 213.4L245.3 312l65.4 65.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9S-2.1 481.8 1.5 470.5l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L200 266.7l98.6-98.6c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"],d:[384,512,[100],\"44\",\"M0 96C0 60.7 28.7 32 64 32h96c123.7 0 224 100.3 224 224s-100.3 224-224 224H64c-35.3 0-64-28.7-64-64V96zm160 0H64V416h96c88.4 0 160-71.6 160-160s-71.6-160-160-160z\"],stapler:[640,512,[],\"e5af\",\"M640 299.3V304 432c0 26.5-21.5 48-48 48H512 448 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H448V368H96c-17.7 0-32-14.3-32-32V219.4L33.8 214C14.2 210.5 0 193.5 0 173.7c0-8.9 2.9-17.5 8.2-24.6l35.6-47.5C76.7 57.8 128.2 32 182.9 32c27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304V288L128 230.9V304H448z\"],\"masks-theater\":[640,512,[127917,\"theater-masks\"],\"f630\",\"M74.6 373.2c41.7 36.1 108 82.5 166.1 73.7c6.1-.9 12.1-2.5 18-4.5c-9.2-12.3-17.3-24.4-24.2-35.4c-21.9-35-28.8-75.2-25.9-113.6c-20.6 4.1-39.2 13-54.7 25.4c-6.5 5.2-16.3 1.3-14.8-7c6.4-33.5 33-60.9 68.2-66.3c2.6-.4 5.3-.7 7.9-.8l19.4-131.3c2-13.8 8-32.7 25-45.9C278.2 53.2 310.5 37 363.2 32.2c-.8-.7-1.6-1.4-2.4-2.1C340.6 14.5 288.4-11.5 175.7 5.6S20.5 63 5.7 83.9C0 91.9-.8 102 .6 111.8L24.8 276.1c5.5 37.3 21.5 72.6 49.8 97.2zm87.7-219.6c4.4-3.1 10.8-2 11.8 3.3c.1 .5 .2 1.1 .3 1.6c3.2 21.8-11.6 42-33.1 45.3s-41.5-11.8-44.7-33.5c-.1-.5-.1-1.1-.2-1.6c-.6-5.4 5.2-8.4 10.3-6.7c9 3 18.8 3.9 28.7 2.4s19.1-5.3 26.8-10.8zM261.6 390c29.4 46.9 79.5 110.9 137.6 119.7s124.5-37.5 166.1-73.7c28.3-24.5 44.3-59.8 49.8-97.2l24.2-164.3c1.4-9.8 .6-19.9-5.1-27.9c-14.8-20.9-57.3-61.2-170-78.3S299.4 77.2 279.2 92.8c-7.8 6-11.5 15.4-12.9 25.2L242.1 282.3c-5.5 37.3-.4 75.8 19.6 107.7zM404.5 235.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6c-1 5.3-7.4 6.4-11.8 3.3zm136.2 15.5c-1 5.3-7.4 6.4-11.8 3.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6zM530 350.2c-19.6 44.7-66.8 72.5-116.8 64.9s-87.1-48.2-93-96.7c-1-8.3 8.9-12.1 15.2-6.7c23.9 20.8 53.6 35.3 87 40.3s66.1 .1 94.9-12.8c7.6-3.4 16 3.2 12.6 10.9z\"],\"kip-sign\":[384,512,[],\"e1c4\",\"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4V64c0-17.7-14.3-32-32-32S64 46.3 64 64V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V325.6L299.2 472.3c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L182.5 288H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H182.5L340.8 88.3z\"],\"hand-point-left\":[512,512,[],\"f0a5\",\"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0 0-64L32 96zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm-64-64c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32c0 13.2-4 25.4-10.8 35.6c24.9 8.7 42.8 32.5 42.8 60.4c0 11.7-3.1 22.6-8.6 32l8.6 0c88.4 0 160-71.6 160-160l0-61.7c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64l0 88c0 22.1 17.9 40 40 40s40-17.9 40-40l0-56c0-8.8 7.2-16 16-16s16 7.2 16 16l0 56c0 39.8-32.2 72-72 72z\"],\"handshake-simple\":[640,512,[129309,\"handshake-alt\"],\"f4c6\",\"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48H48c-26.5 0-48 21.5-48 48V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z\"],\"jet-fighter\":[640,512,[\"fighter-jet\"],\"f0fb\",\"M160 24c0-13.3 10.7-24 24-24H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H280L384 192H500.4c7.7 0 15.3 1.4 22.5 4.1L625 234.4c9 3.4 15 12 15 21.6s-6 18.2-15 21.6L522.9 315.9c-7.2 2.7-14.8 4.1-22.5 4.1H384L280 464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V320H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H82.7c8.5 0 16.6 3.4 22.6 9.4L160 192h32V48h-8c-13.3 0-24-10.7-24-24zM80 240c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z\"],\"square-share-nodes\":[448,512,[\"share-alt-square\"],\"f1e1\",\"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM384 160c0 35.3-28.7 64-64 64c-15.4 0-29.5-5.4-40.6-14.5L194.1 256l85.3 46.5c11-9.1 25.2-14.5 40.6-14.5c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L174.5 300c-11.7 12.3-28.2 20-46.5 20c-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3c0-35.3 28.7-64 64-64s64 28.7 64 64z\"],barcode:[512,512,[],\"f02a\",\"M24 32C10.7 32 0 42.7 0 56V456c0 13.3 10.7 24 24 24H40c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H24zm88 0c-8.8 0-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16zm72 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H184zm96 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H280zM448 56V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H472c-13.3 0-24 10.7-24 24zm-64-8V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"],\"plus-minus\":[384,512,[],\"e43c\",\"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V144H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H160V320c0 17.7 14.3 32 32 32s32-14.3 32-32V208H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V32zM0 480c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"],video:[576,512,[\"video-camera\"],\"f03d\",\"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2V384c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V320 192 174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z\"],\"graduation-cap\":[640,512,[127891,\"mortar-board\"],\"f19d\",\"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"],\"hand-holding-medical\":[576,512,[],\"e05c\",\"M224 24V80H168c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h56v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176h56c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H320V24c0-13.3-10.7-24-24-24H248c-13.3 0-24 10.7-24 24zM559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2l.9 0 0 0c-.3 0-.6 0-.9 0z\"],\"person-circle-check\":[576,512,[],\"e53e\",\"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"],\"turn-up\":[384,512,[10548,\"level-up-alt\"],\"f3bf\",\"M350 177.5c3.8-8.8 2-19-4.6-26l-136-144C204.9 2.7 198.6 0 192 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26s12.5 14.5 22 14.5h88l0 192c0 17.7-14.3 32-32 32H32c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32l80 0c70.7 0 128-57.3 128-128l0-192h88c9.6 0 18.2-5.7 22-14.5z\"]};!function(c){try{for(var l=arguments.length,s=new Array(1<l?l-1:0),a=1;a<l;a++)s[a-1]=arguments[a];c.apply(void 0,s)}catch(c){if(!h)throw c}}(function(){d(\"fas\",p),d(\"fa-solid\",p)})}(),function(){\"use strict\";function a(l,c){var s,a=Object.keys(l);return Object.getOwnPropertySymbols&&(s=Object.getOwnPropertySymbols(l),c&&(s=s.filter(function(c){return Object.getOwnPropertyDescriptor(l,c).enumerable})),a.push.apply(a,s)),a}function u(l){for(var c=1;c<arguments.length;c++){var s=null!=arguments[c]?arguments[c]:{};c%2?a(Object(s),!0).forEach(function(c){t(l,c,s[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(l,Object.getOwnPropertyDescriptors(s)):a(Object(s)).forEach(function(c){Object.defineProperty(l,c,Object.getOwnPropertyDescriptor(s,c))})}return l}function z(c){return(z=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(c){return typeof c}:function(c){return c&&\"function\"==typeof Symbol&&c.constructor===Symbol&&c!==Symbol.prototype?\"symbol\":typeof c})(c)}function e(c,l){for(var s=0;s<l.length;s++){var a=l[s];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function t(c,l,s){return l in c?Object.defineProperty(c,l,{value:s,enumerable:!0,configurable:!0,writable:!0}):c[l]=s,c}function n(c,l){return function(c){if(Array.isArray(c))return c}(c)||function(c,l){var s=null==c?null:\"undefined\"!=typeof Symbol&&c[Symbol.iterator]||c[\"@@iterator\"];if(null!=s){var a,z,e=[],H=!0,t=!1;try{for(s=s.call(c);!(H=(a=s.next()).done)&&(e.push(a.value),!l||e.length!==l);H=!0);}catch(c){t=!0,z=c}finally{try{H||null==s.return||s.return()}finally{if(t)throw z}}return e}}(c,l)||s(c,l)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function M(c){return function(c){if(Array.isArray(c))return H(c)}(c)||function(c){if(\"undefined\"!=typeof Symbol&&null!=c[Symbol.iterator]||null!=c[\"@@iterator\"])return Array.from(c)}(c)||s(c)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function s(c,l){if(c){if(\"string\"==typeof c)return H(c,l);var s=Object.prototype.toString.call(c).slice(8,-1);return\"Map\"===(s=\"Object\"===s&&c.constructor?c.constructor.name:s)||\"Set\"===s?Array.from(c):\"Arguments\"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?H(c,l):void 0}}function H(c,l){(null==l||l>c.length)&&(l=c.length);for(var s=0,a=new Array(l);s<l;s++)a[s]=c[s];return a}function c(){}var l={},V={},r=null,h={mark:c,measure:c};try{\"undefined\"!=typeof window&&(l=window),\"undefined\"!=typeof document&&(V=document),\"undefined\"!=typeof MutationObserver&&(r=MutationObserver),\"undefined\"!=typeof performance&&(h=performance)}catch(c){}var i=(l.navigator||{}).userAgent,m=void 0===i?\"\":i,C=l,v=V,o=r,i=h,f=!!C.document,L=!!v.documentElement&&!!v.head&&\"function\"==typeof v.addEventListener&&\"function\"==typeof v.createElement,d=~m.indexOf(\"MSIE\")||~m.indexOf(\"Trident/\"),l=\"___FONT_AWESOME___\",p=16,b=\"svg-inline--fa\",g=\"data-fa-i2svg\",w=\"data-fa-pseudo-element\",k=\"data-fa-pseudo-element-pending\",y=\"data-prefix\",S=\"data-icon\",A=\"fontawesome-i2svg\",x=\"async\",q=[\"HTML\",\"HEAD\",\"STYLE\",\"SCRIPT\"],Z=function(){try{return!0}catch(c){return!1}}(),O=\"classic\",j=\"sharp\",P=[O,j];function N(c){return new Proxy(c,{get:function(c,l){return l in c?c[l]:c[O]}})}var E=N((t(V={},O,{fa:\"solid\",fas:\"solid\",\"fa-solid\":\"solid\",far:\"regular\",\"fa-regular\":\"regular\",fal:\"light\",\"fa-light\":\"light\",fat:\"thin\",\"fa-thin\":\"thin\",fad:\"duotone\",\"fa-duotone\":\"duotone\",fab:\"brands\",\"fa-brands\":\"brands\",fak:\"kit\",fakd:\"kit\",\"fa-kit\":\"kit\",\"fa-kit-duotone\":\"kit\"}),t(V,j,{fa:\"solid\",fass:\"solid\",\"fa-solid\":\"solid\",fasr:\"regular\",\"fa-regular\":\"regular\",fasl:\"light\",\"fa-light\":\"light\",fast:\"thin\",\"fa-thin\":\"thin\"}),V)),I=N((t(r={},O,{solid:\"fas\",regular:\"far\",light:\"fal\",thin:\"fat\",duotone:\"fad\",brands:\"fab\",kit:\"fak\"}),t(r,j,{solid:\"fass\",regular:\"fasr\",light:\"fasl\",thin:\"fast\"}),r)),T=N((t(h={},O,{fab:\"fa-brands\",fad:\"fa-duotone\",fak:\"fa-kit\",fal:\"fa-light\",far:\"fa-regular\",fas:\"fa-solid\",fat:\"fa-thin\"}),t(h,j,{fass:\"fa-solid\",fasr:\"fa-regular\",fasl:\"fa-light\",fast:\"fa-thin\"}),h)),D=N((t(m={},O,{\"fa-brands\":\"fab\",\"fa-duotone\":\"fad\",\"fa-kit\":\"fak\",\"fa-light\":\"fal\",\"fa-regular\":\"far\",\"fa-solid\":\"fas\",\"fa-thin\":\"fat\"}),t(m,j,{\"fa-solid\":\"fass\",\"fa-regular\":\"fasr\",\"fa-light\":\"fasl\",\"fa-thin\":\"fast\"}),m)),Y=/fa(s|r|l|t|d|b|k|ss|sr|sl|st)?[\\-\\ ]/,R=\"fa-layers-text\",F=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i,_=N((t(V={},O,{900:\"fas\",400:\"far\",normal:\"far\",300:\"fal\",100:\"fat\"}),t(V,j,{900:\"fass\",400:\"fasr\",300:\"fasl\",100:\"fast\"}),V)),r=[1,2,3,4,5,6,7,8,9,10],h=r.concat([11,12,13,14,15,16,17,18,19,20]),W=[\"class\",\"data-prefix\",\"data-icon\",\"data-fa-transform\",\"data-fa-mask\"],U={GROUP:\"duotone-group\",SWAP_OPACITY:\"swap-opacity\",PRIMARY:\"primary\",SECONDARY:\"secondary\"},m=new Set;Object.keys(I[O]).map(m.add.bind(m)),Object.keys(I[j]).map(m.add.bind(m));var X=[].concat(P,M(m),[\"2xs\",\"xs\",\"sm\",\"lg\",\"xl\",\"2xl\",\"beat\",\"border\",\"fade\",\"beat-fade\",\"bounce\",\"flip-both\",\"flip-horizontal\",\"flip-vertical\",\"flip\",\"fw\",\"inverse\",\"layers-counter\",\"layers-text\",\"layers\",\"li\",\"pull-left\",\"pull-right\",\"pulse\",\"rotate-180\",\"rotate-270\",\"rotate-90\",\"rotate-by\",\"shake\",\"spin-pulse\",\"spin-reverse\",\"spin\",\"stack-1x\",\"stack-2x\",\"stack\",\"ul\",U.GROUP,U.SWAP_OPACITY,U.PRIMARY,U.SECONDARY]).concat(r.map(function(c){return\"\".concat(c,\"x\")})).concat(h.map(function(c){return\"w-\".concat(c)})),B=C.FontAwesomeConfig||{};v&&\"function\"==typeof v.querySelector&&[[\"data-family-prefix\",\"familyPrefix\"],[\"data-css-prefix\",\"cssPrefix\"],[\"data-family-default\",\"familyDefault\"],[\"data-style-default\",\"styleDefault\"],[\"data-replacement-class\",\"replacementClass\"],[\"data-auto-replace-svg\",\"autoReplaceSvg\"],[\"data-auto-add-css\",\"autoAddCss\"],[\"data-auto-a11y\",\"autoA11y\"],[\"data-search-pseudo-elements\",\"searchPseudoElements\"],[\"data-observe-mutations\",\"observeMutations\"],[\"data-mutate-approach\",\"mutateApproach\"],[\"data-keep-original-source\",\"keepOriginalSource\"],[\"data-measure-performance\",\"measurePerformance\"],[\"data-show-missing-icons\",\"showMissingIcons\"]].forEach(function(c){var l=n(c,2),c=l[0],l=l[1],c=\"\"===(c=function(c){var l=v.querySelector(\"script[\"+c+\"]\");if(l)return l.getAttribute(c)}(c))||\"false\"!==c&&(\"true\"===c||c);null!=c&&(B[l]=c)});V={styleDefault:\"solid\",familyDefault:\"classic\",cssPrefix:\"fa\",replacementClass:b,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:\"async\",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};B.familyPrefix&&(B.cssPrefix=B.familyPrefix);var G=u(u({},V),B);G.autoReplaceSvg||(G.observeMutations=!1);var Q={};Object.keys(V).forEach(function(l){Object.defineProperty(Q,l,{enumerable:!0,set:function(c){G[l]=c,K.forEach(function(c){return c(Q)})},get:function(){return G[l]}})}),Object.defineProperty(Q,\"familyPrefix\",{enumerable:!0,set:function(c){G.cssPrefix=c,K.forEach(function(c){return c(Q)})},get:function(){return G.cssPrefix}}),C.FontAwesomeConfig=Q;var K=[];var $=p,J={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};var c1=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";function l1(){for(var c=12,l=\"\";0<c--;)l+=c1[62*Math.random()|0];return l}function s1(c){for(var l=[],s=(c||[]).length>>>0;s--;)l[s]=c[s];return l}function a1(c){return c.classList?s1(c.classList):(c.getAttribute(\"class\")||\"\").split(\" \").filter(function(c){return c})}function z1(c){return\"\".concat(c).replace(/&/g,\"&amp;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&#39;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\")}function e1(s){return Object.keys(s||{}).reduce(function(c,l){return c+\"\".concat(l,\": \").concat(s[l].trim(),\";\")},\"\")}function H1(c){return c.size!==J.size||c.x!==J.x||c.y!==J.y||c.rotate!==J.rotate||c.flipX||c.flipY}function t1(){var c,l,s=b,a=Q.cssPrefix,z=Q.replacementClass,e=':host,:root{--fa-font-solid:normal 900 1em/1 \"Font Awesome 6 Solid\";--fa-font-regular:normal 400 1em/1 \"Font Awesome 6 Regular\";--fa-font-light:normal 300 1em/1 \"Font Awesome 6 Light\";--fa-font-thin:normal 100 1em/1 \"Font Awesome 6 Thin\";--fa-font-duotone:normal 900 1em/1 \"Font Awesome 6 Duotone\";--fa-font-sharp-solid:normal 900 1em/1 \"Font Awesome 6 Sharp\";--fa-font-sharp-regular:normal 400 1em/1 \"Font Awesome 6 Sharp\";--fa-font-sharp-light:normal 300 1em/1 \"Font Awesome 6 Sharp\";--fa-font-sharp-thin:normal 100 1em/1 \"Font Awesome 6 Sharp\";--fa-font-brands:normal 400 1em/1 \"Font Awesome 6 Brands\"}svg:not(:host).svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible;box-sizing:content-box}.svg-inline--fa{display:var(--fa-display,inline-block);height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.0714285705em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left{margin-right:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-pull-right{margin-left:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-li{width:var(--fa-li-width,2em);top:.25em}.svg-inline--fa.fa-fw{width:var(--fa-fw-width,1.25em)}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;color:var(--fa-inverse,#fff);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);overflow:hidden;padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-counter-scale,.25));transform:scale(var(--fa-counter-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);right:auto;top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{top:var(--fa-top,0);right:var(--fa-right,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top left;transform-origin:top left}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width,2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.08em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,0));transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;vertical-align:middle;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;z-index:var(--fa-stack-z-index,auto)}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-sr-only,.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.fa-sr-only-focusable:not(:focus),.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fa-duotone.fa-inverse,.fad.fa-inverse{color:var(--fa-inverse,#fff)}';return\"fa\"===a&&z===s||(c=new RegExp(\"\\\\.\".concat(\"fa\",\"\\\\-\"),\"g\"),l=new RegExp(\"\\\\--\".concat(\"fa\",\"\\\\-\"),\"g\"),s=new RegExp(\"\\\\.\".concat(s),\"g\"),e=e.replace(c,\".\".concat(a,\"-\")).replace(l,\"--\".concat(a,\"-\")).replace(s,\".\".concat(z))),e}var V1=!1;function r1(){Q.autoAddCss&&!V1&&(function(c){if(c&&L){var l=v.createElement(\"style\");l.setAttribute(\"type\",\"text/css\"),l.innerHTML=c;for(var s=v.head.childNodes,a=null,z=s.length-1;-1<z;z--){var e=s[z],H=(e.tagName||\"\").toUpperCase();-1<[\"STYLE\",\"LINK\"].indexOf(H)&&(a=e)}v.head.insertBefore(l,a)}}(t1()),V1=!0)}m={mixout:function(){return{dom:{css:t1,insertCss:r1}}},hooks:function(){return{beforeDOMElementCreation:function(){r1()},beforeI2svg:function(){r1()}}}},r=C||{};r[l]||(r[l]={}),r[l].styles||(r[l].styles={}),r[l].hooks||(r[l].hooks={}),r[l].shims||(r[l].shims=[]);function M1(){v.removeEventListener(\"DOMContentLoaded\",M1),i1=1,n1.map(function(c){return c()})}var h1=r[l],n1=[],i1=!1;function m1(c){L&&(i1?setTimeout(c,0):n1.push(c))}function o1(c){var s,l=c.tag,a=c.attributes,z=void 0===a?{}:a,a=c.children,a=void 0===a?[]:a;return\"string\"==typeof c?z1(c):\"<\".concat(l,\" \").concat((s=z,Object.keys(s||{}).reduce(function(c,l){return c+\"\".concat(l,'=\"').concat(z1(s[l]),'\" ')},\"\").trim()),\">\").concat(a.map(o1).join(\"\"),\"</\").concat(l,\">\")}function f1(c,l,s){if(c&&c[l]&&c[l][s])return{prefix:l,iconName:s,icon:c[l][s]}}L&&((i1=(v.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(v.readyState))||v.addEventListener(\"DOMContentLoaded\",M1));function C1(c,l,s,a){for(var z,e,H=Object.keys(c),t=H.length,V=void 0!==a?v1(l,a):l,r=void 0===s?(z=1,c[H[0]]):(z=0,s);z<t;z++)r=V(r,c[e=H[z]],e,c);return r}var v1=function(z,e){return function(c,l,s,a){return z.call(e,c,l,s,a)}};function L1(c){c=function(c){for(var l=[],s=0,a=c.length;s<a;){var z,e=c.charCodeAt(s++);55296<=e&&e<=56319&&s<a?56320==(64512&(z=c.charCodeAt(s++)))?l.push(((1023&e)<<10)+(1023&z)+65536):(l.push(e),s--):l.push(e)}return l}(c);return 1===c.length?c[0].toString(16):null}function u1(a){return Object.keys(a).reduce(function(c,l){var s=a[l];return!!s.icon?c[s.iconName]=s.icon:c[l]=s,c},{})}function d1(c,l,s){var a=(2<arguments.length&&void 0!==s?s:{}).skipHooks,s=void 0!==a&&a,a=u1(l);\"function\"!=typeof h1.hooks.addPack||s?h1.styles[c]=u(u({},h1.styles[c]||{}),a):h1.hooks.addPack(c,u1(l)),\"fas\"===c&&d1(\"fa\",l)}var p1=h1.styles,b1=h1.shims,g1=(t(h={},O,Object.values(T[O])),t(h,j,Object.values(T[j])),h),w1=null,k1={},y1={},S1={},A1={},x1={},q1=(t(V={},O,Object.keys(E[O])),t(V,j,Object.keys(E[j])),V);function Z1(c,l){var s=l.split(\"-\"),l=s[0],s=s.slice(1).join(\"-\");return l!==c||\"\"===s||~X.indexOf(s)?null:s}function O1(){function c(a){return C1(p1,function(c,l,s){return c[s]=C1(l,a,{}),c},{})}k1=c(function(l,c,s){return c[3]&&(l[c[3]]=s),c[2]&&c[2].filter(function(c){return\"number\"==typeof c}).forEach(function(c){l[c.toString(16)]=s}),l}),y1=c(function(l,c,s){return l[s]=s,c[2]&&c[2].filter(function(c){return\"string\"==typeof c}).forEach(function(c){l[c]=s}),l}),x1=c(function(l,c,s){c=c[2];return l[s]=s,c.forEach(function(c){l[c]=s}),l});var z=\"far\"in p1||Q.autoFetchSvg,l=C1(b1,function(c,l){var s=l[0],a=l[1],l=l[2];return\"far\"!==a||z||(a=\"fas\"),\"string\"==typeof s&&(c.names[s]={prefix:a,iconName:l}),\"number\"==typeof s&&(c.unicodes[s.toString(16)]={prefix:a,iconName:l}),c},{names:{},unicodes:{}});S1=l.names,A1=l.unicodes,w1=I1(Q.styleDefault,{family:Q.familyDefault})}function j1(c,l){return(k1[c]||{})[l]}function P1(c,l){return(x1[c]||{})[l]}function N1(c){return S1[c]||{prefix:null,iconName:null}}r=function(c){w1=I1(c.styleDefault,{family:Q.familyDefault})},K.push(r),O1();function E1(){return{prefix:null,iconName:null,rest:[]}}function I1(c,l){var s=(1<arguments.length&&void 0!==l?l:{}).family,l=void 0===s?O:s,s=E[l][c],s=I[l][c]||I[l][s],c=c in h1.styles?c:null;return s||c||null}var T1=(t(l={},O,Object.keys(T[O])),t(l,j,Object.keys(T[j])),l);function D1(c,l){var l=(1<arguments.length&&void 0!==l?l:{}).skipLookups,a=void 0!==l&&l,z=(t(l={},O,\"\".concat(Q.cssPrefix,\"-\").concat(O)),t(l,j,\"\".concat(Q.cssPrefix,\"-\").concat(j)),l),e=null,H=O;(c.includes(z[O])||c.some(function(c){return T1[O].includes(c)}))&&(H=O),(c.includes(z[j])||c.some(function(c){return T1[j].includes(c)}))&&(H=j);l=c.reduce(function(c,l){var s=Z1(Q.cssPrefix,l);return p1[l]?(l=g1[H].includes(l)?D[H][l]:l,e=l,c.prefix=l):-1<q1[H].indexOf(l)?(e=l,c.prefix=I1(l,{family:H})):s?c.iconName=s:l!==Q.replacementClass&&l!==z[O]&&l!==z[j]&&c.rest.push(l),!a&&c.prefix&&c.iconName&&(s=\"fa\"===e?N1(c.iconName):{},l=P1(c.prefix,c.iconName),s.prefix&&(e=null),c.iconName=s.iconName||l||c.iconName,c.prefix=s.prefix||c.prefix,\"far\"!==c.prefix||p1.far||!p1.fas||Q.autoFetchSvg||(c.prefix=\"fas\")),c},E1());return(c.includes(\"fa-brands\")||c.includes(\"fab\"))&&(l.prefix=\"fab\"),(c.includes(\"fa-duotone\")||c.includes(\"fad\"))&&(l.prefix=\"fad\"),l.prefix||H!==j||!p1.fass&&!Q.autoFetchSvg||(l.prefix=\"fass\",l.iconName=P1(l.prefix,l.iconName)||l.iconName),\"fa\"!==l.prefix&&\"fa\"!==e||(l.prefix=w1||\"fas\"),l}var h=function(){function c(){!function(c,l){if(!(c instanceof l))throw new TypeError(\"Cannot call a class as a function\")}(this,c),this.definitions={}}var l,s,a;return l=c,(s=[{key:\"add\",value:function(){for(var s=this,c=arguments.length,l=new Array(c),a=0;a<c;a++)l[a]=arguments[a];var z=l.reduce(this._pullDefinitions,{});Object.keys(z).forEach(function(c){s.definitions[c]=u(u({},s.definitions[c]||{}),z[c]),d1(c,z[c]);var l=T[O][c];l&&d1(l,z[c]),O1()})}},{key:\"reset\",value:function(){this.definitions={}}},{key:\"_pullDefinitions\",value:function(z,c){var e=c.prefix&&c.iconName&&c.icon?{0:c}:c;return Object.keys(e).map(function(c){var l=e[c],s=l.prefix,c=l.iconName,a=l.icon,l=a[2];z[s]||(z[s]={}),0<l.length&&l.forEach(function(c){\"string\"==typeof c&&(z[s][c]=a)}),z[s][c]=a}),z}}])&&e(l.prototype,s),a&&e(l,a),Object.defineProperty(l,\"prototype\",{writable:!1}),c}(),V=[],Y1={},R1={},F1=Object.keys(R1);function _1(c,l){for(var s=arguments.length,a=new Array(2<s?s-2:0),z=2;z<s;z++)a[z-2]=arguments[z];return(Y1[c]||[]).forEach(function(c){l=c.apply(null,[l].concat(a))}),l}function W1(c){for(var l=arguments.length,s=new Array(1<l?l-1:0),a=1;a<l;a++)s[a-1]=arguments[a];(Y1[c]||[]).forEach(function(c){c.apply(null,s)})}function U1(c){var l=c,c=Array.prototype.slice.call(arguments,1);return R1[l]?R1[l].apply(null,c):void 0}function X1(c){\"fa\"===c.prefix&&(c.prefix=\"fas\");var l=c.iconName,c=c.prefix||w1;if(l)return l=P1(c,l)||l,f1(B1.definitions,c,l)||f1(h1.styles,c,l)}var B1=new h,G1={noAuto:function(){Q.autoReplaceSvg=!1,Q.observeMutations=!1,W1(\"noAuto\")},config:Q,dom:{i2svg:function(){var c=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return L?(W1(\"beforeI2svg\",c),U1(\"pseudoElements2svg\",c),U1(\"i2svg\",c)):Promise.reject(\"Operation requires a DOM of some kind.\")},watch:function(){var c=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},l=c.autoReplaceSvgRoot;!1===Q.autoReplaceSvg&&(Q.autoReplaceSvg=!0),Q.observeMutations=!0,m1(function(){Q1({autoReplaceSvgRoot:l}),W1(\"watch\",c)})}},parse:{icon:function(c){if(null===c)return null;if(\"object\"===z(c)&&c.prefix&&c.iconName)return{prefix:c.prefix,iconName:P1(c.prefix,c.iconName)||c.iconName};if(Array.isArray(c)&&2===c.length){var l=0===c[1].indexOf(\"fa-\")?c[1].slice(3):c[1],s=I1(c[0]);return{prefix:s,iconName:P1(s,l)||l}}if(\"string\"==typeof c&&(-1<c.indexOf(\"\".concat(Q.cssPrefix,\"-\"))||c.match(Y))){l=D1(c.split(\" \"),{skipLookups:!0});return{prefix:l.prefix||w1,iconName:P1(l.prefix,l.iconName)||l.iconName}}return\"string\"==typeof c?{prefix:w1,iconName:P1(w1,c)||c}:void 0}},library:B1,findIconDefinition:X1,toHtml:o1},Q1=function(){var c=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).autoReplaceSvgRoot,c=void 0===c?v:c;(0<Object.keys(h1.styles).length||Q.autoFetchSvg)&&L&&Q.autoReplaceSvg&&G1.dom.i2svg({node:c})};function K1(l,c){return Object.defineProperty(l,\"abstract\",{get:c}),Object.defineProperty(l,\"html\",{get:function(){return l.abstract.map(o1)}}),Object.defineProperty(l,\"node\",{get:function(){if(L){var c=v.createElement(\"div\");return c.innerHTML=l.html,c.children}}}),l}function $1(c){var l=c.icons,s=l.main,a=l.mask,z=c.prefix,e=c.iconName,H=c.transform,t=c.symbol,V=c.title,r=c.maskId,M=c.titleId,h=c.extra,n=c.watchable,i=void 0!==n&&n,m=a.found?a:s,l=m.width,c=m.height,n=\"fak\"===z,m=[Q.replacementClass,e?\"\".concat(Q.cssPrefix,\"-\").concat(e):\"\"].filter(function(c){return-1===h.classes.indexOf(c)}).filter(function(c){return\"\"!==c||!!c}).concat(h.classes).join(\" \"),m={children:[],attributes:u(u({},h.attributes),{},{\"data-prefix\":z,\"data-icon\":e,class:m,role:h.attributes.role||\"img\",xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 \".concat(l,\" \").concat(c)})},c=n&&!~h.classes.indexOf(\"fa-fw\")?{width:\"\".concat(l/c*16*.0625,\"em\")}:{};i&&(m.attributes[g]=\"\"),V&&(m.children.push({tag:\"title\",attributes:{id:m.attributes[\"aria-labelledby\"]||\"title-\".concat(M||l1())},children:[V]}),delete m.attributes.title);var o,f,C,v,L,c=u(u({},m),{},{prefix:z,iconName:e,main:s,mask:a,maskId:r,transform:H,symbol:t,styles:u(u({},c),h.styles)}),a=a.found&&s.found?U1(\"generateAbstractMask\",c)||{children:[],attributes:{}}:U1(\"generateAbstractIcon\",c)||{children:[],attributes:{}},s=a.children,a=a.attributes;return c.children=s,c.attributes=a,t?(f=(o=c).prefix,C=o.iconName,v=o.children,L=o.attributes,o=!0===(o=o.symbol)?\"\".concat(f,\"-\").concat(Q.cssPrefix,\"-\").concat(C):o,[{tag:\"svg\",attributes:{style:\"display: none;\"},children:[{tag:\"symbol\",attributes:u(u({},L),{},{id:o}),children:v}]}]):(C=(f=c).children,L=f.main,o=f.mask,v=f.attributes,c=f.styles,H1(f=f.transform)&&L.found&&!o.found&&(o=L.width/L.height/2,L=.5,v.style=e1(u(u({},c),{},{\"transform-origin\":\"\".concat(o+f.x/16,\"em \").concat(L+f.y/16,\"em\")}))),[{tag:\"svg\",attributes:v,children:C}])}function J1(c){var l=c.content,s=c.width,a=c.height,z=c.transform,e=c.title,H=c.extra,t=c.watchable,V=void 0!==t&&t,c=u(u(u({},H.attributes),e?{title:e}:{}),{},{class:H.classes.join(\" \")});V&&(c[g]=\"\");t=u({},H.styles);H1(z)&&(t.transform=(H=(V={transform:z,startCentered:!0,width:s,height:a}).transform,z=V.width,a=void 0===(s=V.height)?p:s,V=void 0!==(s=V.startCentered)&&s,s=\"\",s+=V&&d?\"translate(\".concat(H.x/$-(void 0===z?p:z)/2,\"em, \").concat(H.y/$-a/2,\"em) \"):V?\"translate(calc(-50% + \".concat(H.x/$,\"em), calc(-50% + \").concat(H.y/$,\"em)) \"):\"translate(\".concat(H.x/$,\"em, \").concat(H.y/$,\"em) \"),s+=\"scale(\".concat(H.size/$*(H.flipX?-1:1),\", \").concat(H.size/$*(H.flipY?-1:1),\") \"),s+=\"rotate(\".concat(H.rotate,\"deg) \")),t[\"-webkit-transform\"]=t.transform);t=e1(t);0<t.length&&(c.style=t);t=[];return t.push({tag:\"span\",attributes:c,children:[l]}),e&&t.push({tag:\"span\",attributes:{class:\"sr-only\"},children:[e]}),t}var c2=h1.styles;function l2(c){var l=c[0],s=c[1],c=n(c.slice(4),1)[0];return{found:!0,width:l,height:s,icon:Array.isArray(c)?{tag:\"g\",attributes:{class:\"\".concat(Q.cssPrefix,\"-\").concat(U.GROUP)},children:[{tag:\"path\",attributes:{class:\"\".concat(Q.cssPrefix,\"-\").concat(U.SECONDARY),fill:\"currentColor\",d:c[0]}},{tag:\"path\",attributes:{class:\"\".concat(Q.cssPrefix,\"-\").concat(U.PRIMARY),fill:\"currentColor\",d:c[1]}}]}:{tag:\"path\",attributes:{fill:\"currentColor\",d:c}}}}var s2={found:!1,width:512,height:512};function a2(z,e){var H=e;return\"fa\"===e&&null!==Q.styleDefault&&(e=w1),new Promise(function(c,l){var s,a;U1(\"missingIconAbstract\");if(\"fa\"===H&&(a=N1(z)||{},z=a.iconName||z,e=a.prefix||e),z&&e&&c2[e]&&c2[e][z])return c(l2(c2[e][z]));s=z,a=e,Z||Q.showMissingIcons||!s||console.error('Icon with name \"'.concat(s,'\" and prefix \"').concat(a,'\" is missing.')),c(u(u({},s2),{},{icon:Q.showMissingIcons&&z&&U1(\"missingIconAbstract\")||{}}))})}function z2(){}function e2(c){H2.mark(\"\".concat(t2,\" \").concat(c,\" ends\")),H2.measure(\"\".concat(t2,\" \").concat(c),\"\".concat(t2,\" \").concat(c,\" begins\"),\"\".concat(t2,\" \").concat(c,\" ends\"))}var H2=Q.measurePerformance&&i&&i.mark&&i.measure?i:{mark:z2,measure:z2},t2='FA \"6.5.2\"',V2={begin:function(c){return H2.mark(\"\".concat(t2,\" \").concat(c,\" begins\")),function(){return e2(c)}},end:e2},r2=function(){};function M2(c){return\"string\"==typeof(c.getAttribute?c.getAttribute(g):null)}function h2(c){return v.createElementNS(\"http://www.w3.org/2000/svg\",c)}function n2(c){return v.createElement(c)}var i2={replace:function(c){var l=c[0];l.parentNode&&(c[1].forEach(function(c){l.parentNode.insertBefore(function l(s,c){var c=(1<arguments.length&&void 0!==c?c:{}).ceFn,a=void 0===c?\"svg\"===s.tag?h2:n2:c;if(\"string\"==typeof s)return v.createTextNode(s);var z=a(s.tag);return Object.keys(s.attributes||[]).forEach(function(c){z.setAttribute(c,s.attributes[c])}),(s.children||[]).forEach(function(c){z.appendChild(l(c,{ceFn:a}))}),z}(c),l)}),null===l.getAttribute(g)&&Q.keepOriginalSource?(c=v.createComment((c=\" \".concat((c=l).outerHTML,\" \"),c=\"\".concat(c,\"Font Awesome fontawesome.com \"))),l.parentNode.replaceChild(c,l)):l.remove())},nest:function(c){var l=c[0],s=c[1];if(~a1(l).indexOf(Q.replacementClass))return i2.replace(c);var a=new RegExp(\"\".concat(Q.cssPrefix,\"-.*\"));delete s[0].attributes.id,s[0].attributes.class&&(c=s[0].attributes.class.split(\" \").reduce(function(c,l){return(l===Q.replacementClass||l.match(a)?c.toSvg:c.toNode).push(l),c},{toNode:[],toSvg:[]}),s[0].attributes.class=c.toSvg.join(\" \"),0===c.toNode.length?l.removeAttribute(\"class\"):l.setAttribute(\"class\",c.toNode.join(\" \")));s=s.map(o1).join(\"\\n\");l.setAttribute(g,\"\"),l.innerHTML=s}};function m2(c){c()}function o2(s,c){var a=\"function\"==typeof c?c:r2;0===s.length?a():(Q.mutateApproach===x?C.requestAnimationFrame||m2:m2)(function(){var c=!0!==Q.autoReplaceSvg&&i2[Q.autoReplaceSvg]||i2.replace,l=V2.begin(\"mutate\");s.map(c),l(),a()})}var f2=!1;function C2(){f2=!0}function v2(){f2=!1}var L2=null;function u2(c){var e,H,l,t;o&&Q.observeMutations&&(l=c.treeCallback,e=void 0===l?r2:l,l=c.nodeCallback,H=void 0===l?r2:l,l=c.pseudoElementsCallback,t=void 0===l?r2:l,c=void 0===(c=c.observeMutationsRoot)?v:c,L2=new o(function(c){var z;f2||(z=w1,s1(c).forEach(function(c){var l,s,a;\"childList\"===c.type&&0<c.addedNodes.length&&!M2(c.addedNodes[0])&&(Q.searchPseudoElements&&t(c.target),e(c.target)),\"attributes\"===c.type&&c.target.parentNode&&Q.searchPseudoElements&&t(c.target.parentNode),\"attributes\"===c.type&&M2(c.target)&&~W.indexOf(c.attributeName)&&(\"class\"===c.attributeName&&(s=c.target,a=s.getAttribute?s.getAttribute(y):null,s=s.getAttribute?s.getAttribute(S):null,a&&s)?(s=(l=D1(a1(c.target))).prefix,l=l.iconName,c.target.setAttribute(y,s||z),l&&c.target.setAttribute(S,l)):(l=c.target)&&l.classList&&l.classList.contains&&l.classList.contains(Q.replacementClass)&&H(c.target))}))}),L&&L2.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0}))}function d2(c){var l=c.getAttribute(\"data-prefix\"),s=c.getAttribute(\"data-icon\"),a=void 0!==c.innerText?c.innerText.trim():\"\",z=D1(a1(c));return z.prefix||(z.prefix=w1),l&&s&&(z.prefix=l,z.iconName=s),z.iconName&&z.prefix||(z.prefix&&0<a.length&&(z.iconName=(s=z.prefix,a=c.innerText,(y1[s]||{})[a]||j1(z.prefix,L1(c.innerText)))),!z.iconName&&Q.autoFetchSvg&&c.firstChild&&c.firstChild.nodeType===Node.TEXT_NODE&&(z.iconName=c.firstChild.data)),z}function p2(c,l){var s=1<arguments.length&&void 0!==l?l:{styleParser:!0},a=d2(c),z=a.iconName,e=a.prefix,H=a.rest,t=(l=s1((t=c).attributes).reduce(function(c,l){return\"class\"!==c.name&&\"style\"!==c.name&&(c[l.name]=l.value),c},{}),a=t.getAttribute(\"title\"),t=t.getAttribute(\"data-fa-title-id\"),Q.autoA11y&&(a?l[\"aria-labelledby\"]=\"\".concat(Q.replacementClass,\"-title-\").concat(t||l1()):(l[\"aria-hidden\"]=\"true\",l.focusable=\"false\")),l),l=_1(\"parseNodeAttributes\",{},c),V=s.styleParser?(s=(V=c).getAttribute(\"style\"),V=[],V=s?s.split(\";\").reduce(function(c,l){var s=l.split(\":\"),l=s[0],s=s.slice(1);return l&&0<s.length&&(c[l]=s.join(\":\").trim()),c},{}):V):[];return u({iconName:z,title:c.getAttribute(\"title\"),titleId:c.getAttribute(\"data-fa-title-id\"),prefix:e,transform:J,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:H,styles:V,attributes:t}},l)}var b2=h1.styles;function g2(c){var l=\"nest\"===Q.autoReplaceSvg?p2(c,{styleParser:!1}):p2(c);return~l.extra.classes.indexOf(R)?U1(\"generateLayersText\",c,l):U1(\"generateSvgReplacementMutation\",c,l)}var w2=new Set;function k2(c){var a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;if(!L)return Promise.resolve();function z(c){return l.add(\"\".concat(A,\"-\").concat(c))}function e(c){return l.remove(\"\".concat(A,\"-\").concat(c))}var l=v.documentElement.classList,s=Q.autoFetchSvg?w2:P.map(function(c){return\"fa-\".concat(c)}).concat(Object.keys(b2));s.includes(\"fa\")||s.push(\"fa\");var H=[\".\".concat(R,\":not([\").concat(g,\"])\")].concat(s.map(function(c){return\".\".concat(c,\":not([\").concat(g,\"])\")})).join(\", \");if(0===H.length)return Promise.resolve();s=[];try{s=s1(c.querySelectorAll(H))}catch(c){}if(!(0<s.length))return Promise.resolve();z(\"pending\"),e(\"complete\");var t=V2.begin(\"onTree\"),V=s.reduce(function(c,l){try{var s=g2(l);s&&c.push(s)}catch(c){Z||\"MissingIcon\"===c.name&&console.error(c)}return c},[]);return new Promise(function(l,s){Promise.all(V).then(function(c){o2(c,function(){z(\"active\"),z(\"complete\"),e(\"pending\"),\"function\"==typeof a&&a(),t(),l()})}).catch(function(c){t(),s(c)})})}function y2(c){var l=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;g2(c).then(function(c){c&&o2([c],l)})}P.map(function(c){w2.add(\"fa-\".concat(c))}),Object.keys(E[O]).map(w2.add.bind(w2)),Object.keys(E[j]).map(w2.add.bind(w2));function S2(c){var l=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},s=l.transform,a=void 0===s?J:s,z=void 0!==(s=l.symbol)&&s,e=void 0===(s=l.mask)?null:s,H=void 0===(s=l.maskId)?null:s,t=void 0===(s=l.title)?null:s,V=void 0===(s=l.titleId)?null:s,r=void 0===(s=l.classes)?[]:s,M=void 0===(s=l.attributes)?{}:s,h=void 0===(s=l.styles)?{}:s;if(c){var n=c.prefix,i=c.iconName,m=c.icon;return K1(u({type:\"icon\"},c),function(){return W1(\"beforeDOMElementCreation\",{iconDefinition:c,params:l}),Q.autoA11y&&(t?M[\"aria-labelledby\"]=\"\".concat(Q.replacementClass,\"-title-\").concat(V||l1()):(M[\"aria-hidden\"]=\"true\",M.focusable=\"false\")),$1({icons:{main:l2(m),mask:e?l2(e.icon):{found:!1,width:null,height:null,icon:{}}},prefix:n,iconName:i,transform:u(u({},J),a),symbol:z,title:t,maskId:H,titleId:V,extra:{attributes:M,styles:h,classes:r}})})}}var w2=M(w2),r={mixout:function(){return{icon:(a=S2,function(c){var l=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},s=(c||{}).icon?c:X1(c||{}),c=(c=l.mask)&&((c||{}).icon?c:X1(c||{}));return a(s,u(u({},l),{},{mask:c}))})};var a},hooks:function(){return{mutationObserverCallbacks:function(c){return c.treeCallback=k2,c.nodeCallback=y2,c}}},provides:function(c){c.i2svg=function(c){var l=c.node,c=c.callback;return k2(void 0===l?v:l,void 0===c?function(){}:c)},c.generateSvgReplacementMutation=function(a,c){var z=c.iconName,e=c.title,H=c.titleId,t=c.prefix,V=c.transform,r=c.symbol,l=c.mask,M=c.maskId,h=c.extra;return new Promise(function(s,c){Promise.all([a2(z,t),l.iconName?a2(l.iconName,l.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(function(c){var l=n(c,2),c=l[0],l=l[1];s([a,$1({icons:{main:c,mask:l},prefix:t,iconName:z,transform:V,symbol:r,maskId:M,title:e,titleId:H,extra:h,watchable:!0})])}).catch(c)})},c.generateAbstractIcon=function(c){var l,s=c.children,a=c.attributes,z=c.main,e=c.transform,c=e1(c.styles);return 0<c.length&&(a.style=c),H1(e)&&(l=U1(\"generateAbstractTransformGrouping\",{main:z,transform:e,containerWidth:z.width,iconWidth:z.width})),s.push(l||z.icon),{children:s,attributes:a}}}},l={mixout:function(){return{layer:function(c){var s=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},l=s.classes,a=void 0===l?[]:l;return K1({type:\"layer\"},function(){W1(\"beforeDOMElementCreation\",{assembler:c,params:s});var l=[];return c(function(c){Array.isArray(c)?c.map(function(c){l=l.concat(c.abstract)}):l=l.concat(c.abstract)}),[{tag:\"span\",attributes:{class:[\"\".concat(Q.cssPrefix,\"-layers\")].concat(M(a)).join(\" \")},children:l}]})}}}},h={mixout:function(){return{counter:function(z){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},c=e.title,H=void 0===c?null:c,c=e.classes,t=void 0===c?[]:c,c=e.attributes,V=void 0===c?{}:c,c=e.styles,r=void 0===c?{}:c;return K1({type:\"counter\",content:z},function(){return W1(\"beforeDOMElementCreation\",{content:z,params:e}),c={content:z.toString(),title:H,extra:{attributes:V,styles:r,classes:[\"\".concat(Q.cssPrefix,\"-layers-counter\")].concat(M(t))}},l=c.content,s=c.title,a=c.extra,c=u(u(u({},a.attributes),s?{title:s}:{}),{},{class:a.classes.join(\" \")}),0<(a=e1(a.styles)).length&&(c.style=a),(a=[]).push({tag:\"span\",attributes:c,children:[l]}),s&&a.push({tag:\"span\",attributes:{class:\"sr-only\"},children:[s]}),a;var c,l,s,a})}}}},i={mixout:function(){return{text:function(c){var l=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},s=l.transform,a=void 0===s?J:s,s=l.title,z=void 0===s?null:s,s=l.classes,e=void 0===s?[]:s,s=l.attributes,H=void 0===s?{}:s,s=l.styles,t=void 0===s?{}:s;return K1({type:\"text\",content:c},function(){return W1(\"beforeDOMElementCreation\",{content:c,params:l}),J1({content:c,transform:u(u({},J),a),title:z,extra:{attributes:H,styles:t,classes:[\"\".concat(Q.cssPrefix,\"-layers-text\")].concat(M(e))}})})}}},provides:function(c){c.generateLayersText=function(c,l){var s,a=l.title,z=l.transform,e=l.extra,H=null,t=null;return d&&(s=parseInt(getComputedStyle(c).fontSize,10),H=(l=c.getBoundingClientRect()).width/s,t=l.height/s),Q.autoA11y&&!a&&(e.attributes[\"aria-hidden\"]=\"true\"),Promise.resolve([c,J1({content:c.innerHTML,width:H,height:t,transform:z,title:a,extra:e,watchable:!0})])}}},A2=new RegExp('\"',\"ug\"),x2=[1105920,1112319];function q2(m,o){var f=\"\".concat(k).concat(o.replace(\":\",\"-\"));return new Promise(function(s,c){if(null!==m.getAttribute(f))return s();var a,z,e,H,l,t,V,r=s1(m.children).filter(function(c){return c.getAttribute(w)===o})[0],M=C.getComputedStyle(m,o),h=M.getPropertyValue(\"font-family\").match(F),n=M.getPropertyValue(\"font-weight\"),i=M.getPropertyValue(\"content\");if(r&&!h)return m.removeChild(r),s();h&&\"none\"!==i&&\"\"!==i?(t=M.getPropertyValue(\"content\"),l=~[\"Sharp\"].indexOf(h[2])?j:O,a=~[\"Solid\",\"Regular\",\"Light\",\"Thin\",\"Duotone\",\"Brands\",\"Kit\"].indexOf(h[2])?I[l][h[2].toLowerCase()]:_[l][n],i=(M=(M=(i=t).replace(A2,\"\"),l=0,t=(n=M).length,V=55296<=(i=n.charCodeAt(l))&&i<=56319&&l+1<t&&56320<=(V=n.charCodeAt(l+1))&&V<=57343?1024*(i-55296)+V-56320+65536:i,i=x2[0]<=V&&V<=x2[1],{value:L1((V=2===M.length&&M[0]===M[1])?M[0]:M),isSecondary:i||V})).value,V=M.isSecondary,M=h[0].startsWith(\"FontAwesome\"),h=j1(a,i),z=h,M&&(i=A1[M=i],M=j1(\"fas\",M),(M=i||(M?{prefix:\"fas\",iconName:M}:null)||{prefix:null,iconName:null}).iconName&&M.prefix&&(h=M.iconName,a=M.prefix)),!h||V||r&&r.getAttribute(y)===a&&r.getAttribute(S)===z?s():(m.setAttribute(f,z),r&&m.removeChild(r),(H=(e={iconName:null,title:null,titleId:null,prefix:null,transform:J,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}).extra).attributes[w]=o,a2(h,a).then(function(c){var l=$1(u(u({},e),{},{icons:{main:c,mask:E1()},prefix:a,iconName:z,extra:H,watchable:!0})),c=v.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");\"::before\"===o?m.insertBefore(c,m.firstChild):m.appendChild(c),c.outerHTML=l.map(o1).join(\"\\n\"),m.removeAttribute(f),s()}).catch(c))):s()})}function Z2(c){return Promise.all([q2(c,\"::before\"),q2(c,\"::after\")])}function O2(c){return!(c.parentNode===document.head||~q.indexOf(c.tagName.toUpperCase())||c.getAttribute(w)||c.parentNode&&\"svg\"===c.parentNode.tagName)}function j2(z){if(L)return new Promise(function(c,l){var s=s1(z.querySelectorAll(\"*\")).filter(O2).map(Z2),a=V2.begin(\"searchPseudoElements\");C2(),Promise.all(s).then(function(){a(),v2(),c()}).catch(function(){a(),v2(),l()})})}function P2(c){return c.toLowerCase().split(\" \").reduce(function(c,l){var s=l.toLowerCase().split(\"-\"),l=s[0],a=s.slice(1).join(\"-\");if(l&&\"h\"===a)return c.flipX=!0,c;if(l&&\"v\"===a)return c.flipY=!0,c;if(a=parseFloat(a),isNaN(a))return c;switch(l){case\"grow\":c.size=c.size+a;break;case\"shrink\":c.size=c.size-a;break;case\"left\":c.x=c.x-a;break;case\"right\":c.x=c.x+a;break;case\"up\":c.y=c.y-a;break;case\"down\":c.y=c.y+a;break;case\"rotate\":c.rotate=c.rotate+a}return c},{size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0})}var N2=!1,E2={x:0,y:0,width:\"100%\",height:\"100%\"};function I2(c){return c.attributes&&(c.attributes.fill||(!(1<arguments.length&&void 0!==arguments[1])||arguments[1]))&&(c.attributes.fill=\"black\"),c}var T2;T2={mixoutsTo:G1}.mixoutsTo,V=[m,r,l,h,i,{hooks:function(){return{mutationObserverCallbacks:function(c){return c.pseudoElementsCallback=j2,c}}},provides:function(c){c.pseudoElements2svg=function(c){c=c.node;Q.searchPseudoElements&&j2(void 0===c?v:c)}}},{mixout:function(){return{dom:{unwatch:function(){C2(),N2=!0}}}},hooks:function(){return{bootstrap:function(){u2(_1(\"mutationObserverCallbacks\",{}))},noAuto:function(){L2&&L2.disconnect()},watch:function(c){c=c.observeMutationsRoot;N2?v2():u2(_1(\"mutationObserverCallbacks\",{observeMutationsRoot:c}))}}}},{mixout:function(){return{parse:{transform:P2}}},hooks:function(){return{parseNodeAttributes:function(c,l){l=l.getAttribute(\"data-fa-transform\");return l&&(c.transform=P2(l)),c}}},provides:function(c){c.generateAbstractTransformGrouping=function(c){var l=c.main,s=c.transform,a=c.containerWidth,z=c.iconWidth,e={transform:\"translate(\".concat(a/2,\" 256)\")},c=\"translate(\".concat(32*s.x,\", \").concat(32*s.y,\") \"),a=\"scale(\".concat(s.size/16*(s.flipX?-1:1),\", \").concat(s.size/16*(s.flipY?-1:1),\") \"),s=\"rotate(\".concat(s.rotate,\" 0 0)\"),z={outer:e,inner:{transform:\"\".concat(c,\" \").concat(a,\" \").concat(s)},path:{transform:\"translate(\".concat(z/2*-1,\" -256)\")}};return{tag:\"g\",attributes:u({},z.outer),children:[{tag:\"g\",attributes:u({},z.inner),children:[{tag:l.icon.tag,children:l.icon.children,attributes:u(u({},l.icon.attributes),z.path)}]}]}}}},{hooks:function(){return{parseNodeAttributes:function(c,l){var s=l.getAttribute(\"data-fa-mask\"),s=s?D1(s.split(\" \").map(function(c){return c.trim()})):E1();return s.prefix||(s.prefix=w1),c.mask=s,c.maskId=l.getAttribute(\"data-fa-mask-id\"),c}}},provides:function(c){c.generateAbstractMask=function(c){var l=c.children,s=c.attributes,a=c.main,z=c.mask,e=c.maskId,H=c.transform,t=a.width,V=a.icon,r=z.width,c=z.icon,H=(z=(a={transform:H,containerWidth:r,iconWidth:t}).transform,H=a.containerWidth,r=a.iconWidth,t={transform:\"translate(\".concat(H/2,\" 256)\")},a=\"translate(\".concat(32*z.x,\", \").concat(32*z.y,\") \"),H=\"scale(\".concat(z.size/16*(z.flipX?-1:1),\", \").concat(z.size/16*(z.flipY?-1:1),\") \"),z=\"rotate(\".concat(z.rotate,\" 0 0)\"),{outer:t,inner:{transform:\"\".concat(a,\" \").concat(H,\" \").concat(z)},path:{transform:\"translate(\".concat(r/2*-1,\" -256)\")}}),z={tag:\"rect\",attributes:u(u({},E2),{},{fill:\"white\"})},r=V.children?{children:V.children.map(I2)}:{},r={tag:\"g\",attributes:u({},H.inner),children:[I2(u({tag:V.tag,attributes:u(u({},V.attributes),H.path)},r))]},H={tag:\"g\",attributes:u({},H.outer),children:[r]},r=\"mask-\".concat(e||l1()),e=\"clip-\".concat(e||l1()),H={tag:\"mask\",attributes:u(u({},E2),{},{id:r,maskUnits:\"userSpaceOnUse\",maskContentUnits:\"userSpaceOnUse\"}),children:[z,H]},H={tag:\"defs\",children:[{tag:\"clipPath\",attributes:{id:e},children:\"g\"===(c=c).tag?c.children:[c]},H]};return l.push(H,{tag:\"rect\",attributes:u({fill:\"currentColor\",\"clip-path\":\"url(#\".concat(e,\")\"),mask:\"url(#\".concat(r,\")\")},E2)}),{children:l,attributes:s}}}},{provides:function(c){var e=!1;C.matchMedia&&(e=C.matchMedia(\"(prefers-reduced-motion: reduce)\").matches),c.missingIconAbstract=function(){var c=[],l={fill:\"currentColor\"},s={attributeType:\"XML\",repeatCount:\"indefinite\",dur:\"2s\"};c.push({tag:\"path\",attributes:u(u({},l),{},{d:\"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z\"})});var a=u(u({},s),{},{attributeName:\"opacity\"}),z={tag:\"circle\",attributes:u(u({},l),{},{cx:\"256\",cy:\"364\",r:\"28\"}),children:[]};return e||z.children.push({tag:\"animate\",attributes:u(u({},s),{},{attributeName:\"r\",values:\"28;14;28;28;14;28;\"})},{tag:\"animate\",attributes:u(u({},a),{},{values:\"1;0;1;1;0;1;\"})}),c.push(z),c.push({tag:\"path\",attributes:u(u({},l),{},{opacity:\"1\",d:\"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z\"}),children:e?[]:[{tag:\"animate\",attributes:u(u({},a),{},{values:\"1;0;0;0;0;1;\"})}]}),e||c.push({tag:\"path\",attributes:u(u({},l),{},{opacity:\"0\",d:\"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z\"}),children:[{tag:\"animate\",attributes:u(u({},a),{},{values:\"0;0;1;1;0;0;\"})}]}),{tag:\"g\",attributes:{class:\"missing\"},children:c}}}},{hooks:function(){return{parseNodeAttributes:function(c,l){l=l.getAttribute(\"data-fa-symbol\");return c.symbol=null!==l&&(\"\"===l||l),c}}}}],Y1={},Object.keys(R1).forEach(function(c){-1===F1.indexOf(c)&&delete R1[c]}),V.forEach(function(c){var l,s=c.mixout?c.mixout():{};Object.keys(s).forEach(function(l){\"function\"==typeof s[l]&&(T2[l]=s[l]),\"object\"===z(s[l])&&Object.keys(s[l]).forEach(function(c){T2[l]||(T2[l]={}),T2[l][c]=s[l][c]})}),c.hooks&&(l=c.hooks(),Object.keys(l).forEach(function(c){Y1[c]||(Y1[c]=[]),Y1[c].push(l[c])})),c.provides&&c.provides(R1)}),function(c){try{for(var l=arguments.length,s=new Array(1<l?l-1:0),a=1;a<l;a++)s[a-1]=arguments[a];c.apply(void 0,s)}catch(c){if(!Z)throw c}}(function(c){f&&(C.FontAwesome||(C.FontAwesome=G1),m1(function(){Q1(),W1(\"bootstrap\")})),h1.hooks=u(u({},h1.hooks),{},{addPack:function(c,l){h1.styles[c]=u(u({},h1.styles[c]||{}),l),O1(),Q1()},addPacks:function(c){c.forEach(function(c){var l=n(c,2),c=l[0],l=l[1];h1.styles[c]=u(u({},h1.styles[c]||{}),l)}),O1(),Q1()},addShims:function(c){var l;(l=h1.shims).push.apply(l,M(c)),O1(),Q1()}})})}();","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))"],"names":["c","l","window","document","a","s","navigator","userAgent","z","e","H","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","apply","t","arguments","length","forEach","V","getOwnPropertyDescriptors","defineProperties","defineProperty","value","configurable","writable","r","Array","documentElement","head","addEventListener","createElement","indexOf","M","h","n","i","m","o","Proxy","get","C","fa","fas","far","fal","fat","fad","fab","fak","fakd","fass","fasr","fasl","fast","f","v","solid","regular","light","thin","duotone","brands","kit","normal","concat","Set","map","add","bind","isArray","Symbol","iterator","from","prototype","toString","call","slice","constructor","name","test","TypeError","styles","hooks","shims","L","u","reduce","icon","iconName","d","skipHooks","addPack","p","monero","hooli","yelp","lastfm","shopware","aws","redhat","yoast","cloudflare","ups","pixiv","wpexplorer","dyalog","bity","stackpath","buysellads","modx","guilded","vnv","microsoft","qq","orcid","java","invision","centercode","drupal","jxl","unity","whmcs","rocketchat","vk","untappd","mailchimp","contao","deskpro","brave","sistrix","edge","threads","napster","artstation","markdown","sourcetree","diaspora","foursquare","pagelines","algolia","safari","google","atlassian","nimblr","chromecast","evernote","adversal","fonticons","weixin","shirtsinbulk","codepen","lyft","rev","windows","meetup","centos","adn","cloudsmith","opensuse","codiepie","node","mix","steam","scribd","debian","openid","instalod","expeditedssl","sellcast","delicious","freebsd","vuejs","accusoft","ioxhost","golang","kickstarter","grav","weibo","uncharted","firstdraft","wpressr","angellist","skype","joget","fedora","meta","laravel","hotjar","hips","behance","reddit","discord","chrome","wpbeginner","confluence","shoelace","mdb","dochub","ebay","amazon","unsplash","yarn","asymmetrik","gratipay","apple","hive","gitkraken","keybase","padlet","stumbleupon","fedex","shopify","neos","hackerrank","researchgate","swift","angular","speakap","angrycreative","empire","envira","studiovinari","wordpress","firefox","linode","goodreads","jsfiddle","sith","themeisle","page4","hashnode","react","squarespace","bitcoin","keycdn","opera","umbraco","ubuntu","draft2digital","stripe","houzz","gg","dhl","xing","blackberry","playstation","quinscape","less","opencart","vine","paypal","gitlab","typo3","yahoo","dailymotion","affiliatetheme","bootstrap","odnoklassniki","mintbit","ethereum","patreon","avianex","ello","gofore","bimobject","mandalorian","osi","periscope","fulcrum","cloudscale","forumbee","mizuni","schlix","bandcamp","wpforms","cloudversify","usps","megaport","magento","spotify","fly","aviato","itunes","cuttlefish","blogger","flickr","viber","soundcloud","digg","letterboxd","symfony","maxcdn","etsy","audible","bilibili","erlang","dashcube","elementor","palfed","superpowers","resolving","xbox","searchengin","tiktok","renren","linux","glide","linkedin","hubspot","deploydog","twitch","ravelry","mixer","vimeo","mendeley","uniregistry","figma","dropbox","instagram","cmplid","upwork","facebook","gripfire","uikit","phabricator","ussunnah","earlybirds","autoprefixer","whatsapp","slideshare","viadeo","line","servicestack","simplybuilt","bitbucket","imdb","deezer","jira","docker","screenpal","bluetooth","gitter","microblog","yandex","readme","html5","sellsy","sass","wirsindhandwerk","buromobelexperte","salesforce","medapps","ns8","apper","waze","bluesky","snapchat","rust","wix","supple","webflow","rebel","css3","staylinked","kaggle","deviantart","cpanel","trello","perbyte","grunt","weebly","connectdevelop","leanpub","themeco","python","android","bots","hornbill","js","ideal","git","dev","sketch","uber","github","php","alipay","youtube","skyatlas","replyd","suse","jenkins","twitter","rockrms","pinterest","buffer","npm","yammer","btc","dribbble","stubber","telegram","odysee","slack","medrt","usb","tumblr","vaadin","quora","reacteurope","medium","amilia","mixcloud","flipboard","viacoin","sitrox","discourse","joomla","mastodon","airbnb","gulp","strava","ember","teamspeak","pushed","nutritionix","wodu","intercom","zhihu","korvue","pix","message","comments","paste","compass","lightbulb","flag","futbol","hand","bookmark","folder","user","star","clipboard","image","lemon","handshake","gem","registered","square","snowflake","newspaper","heart","circle","eye","comment","envelope","hourglass","clock","keyboard","images","sun","bell","file","hospital","copy","copyright","building","moon","calendar","clone","at","stethoscope","info","explosion","ring","volleyball","atom","soap","icons","fingerprint","football","crop","person","laptop","menorah","bong","spoon","pager","strikethrough","k","pencil","backward","blog","w","rainbow","paw","cloud","gavel","binoculars","motorcycle","scissors","table","clover","reply","helicopter","swatchbook","bars","film","sitemap","memory","hanukiah","feather","compress","ankh","asterisk","heading","ghost","list","gamepad","egg","campground","paintbrush","lock","tree","microscope","sink","mitten","users","om","worm","plug","stopwatch","stamp","stairs","pills","tooth","bicycle","snowman","school","igloo","joint","horse","q","g","capsules","bullseye","bacon","radiation","vial","gauge","dumpster","highlighter","key","bullhorn","globe","synagogue","ban","repeat","cross","box","maximize","shapes","shuffle","spider","slash","server","venus","passport","microchip","crown","wheelchair","fire","city","unlock","headset","wifi","bath","underline","signature","stroopwafel","bold","jedi","gift","glasses","train","crow","sailboat","frog","bucket","microphone","cow","screwdriver","dolly","smoking","minimize","monument","snowplow","cannabis","tablets","ethernet","chair","icicles","neuter","marker","volcano","viruses","certificate","suitcase","scroll","spa","pause","bomb","subscript","burst","smog","crutch","palette","vest","ferry","seedling","children","chalkboard","virus","archway","couch","italic","church","democrat","locust","sort","language","question","code","leaf","road","taxi","poop","kaaba","eject","tarp","cube","elevator","recycle","trademark","basketball","wallet","burger","wrench","bugs","bridge","cat","route","panorama","tags","terminal","tape","pen","signal","bus","prescription","shop","vihara","diamond","bacterium","biohazard","phone","trash","poo","shirt","cubes","divide","headphones","republican","ruler","restroom","j","otter","child","satellite","tag","paperclip","ribbon","lungs","indent","mountain","camera","meteor","sleigh","water","braille","landmark","truck","crosshairs","tent","cookie","dumbbell","dna","minus","chess","gear","mosque","mosquito","vials","pallet","faucet","timeline","coins","khanda","sliders","hamsa","flask","ticket","tty","calculator","ship","download","forward","mobile","outdent","house","b","utensils","skull","stop","upload","hurricane","mound","caravan","bolt","vault","mars","toilet","guitar","industry","ellipsis","toolbox","bug","car","medal","bed","podcast","superscript","droplet","eraser","dove","socks","inbox","section","dharmachakra","hotdog","drum","fax","paragraph","link","play","font","receipt","tv","shrimp","wind","y","fish","clapperboard","baseball","grip","gun","plus","expand","computer","xmark","baby","tractor","equals","blender","teeth","rocket","store","tablet","fill","bacteria","notdef","disease","genderless","retweet","radio","thermometer","percent","display","thumbtack","trophy","hammer","rotate","spinner","robot","peace","gears","warehouse","splotch","transgender","mercury","award","qrcode","shield","tents","dog","carrot","cheese","music","broom","gopuram","hashtag","hippo","infinity","voicemail","fan","trailer","bahai","dragon","tornado","anchor","rss","shower","desktop","book","check","briefcase","rug","handcuffs","database","share","dungeon","hands","dice","brain","bandage","gifts","hotel","brush","mask","syringe","magnet","jar","bone","plane","exclamation","print","x","umbrella","trowel","stapler","barcode","video","next","done","return","mark","measure","MutationObserver","performance","S","A","Z","O","P","N","E","I","T","D","Y","R","F","_","W","U","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","X","B","FontAwesomeConfig","querySelector","getAttribute","styleDefault","familyDefault","cssPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","familyPrefix","G","Q","set","K","$","J","size","flipX","flipY","c1","l1","Math","random","s1","a1","classList","split","z1","replace","e1","trim","H1","t1","RegExp","V1","r1","setAttribute","innerHTML","childNodes","tagName","toUpperCase","insertBefore","mixout","dom","css","insertCss","beforeDOMElementCreation","beforeI2svg","h1","n1","i1","m1","setTimeout","o1","attributes","join","f1","prefix","C1","v1","doScroll","readyState","M1","removeEventListener","L1","charCodeAt","u1","d1","p1","b1","g1","values","w1","k1","y1","S1","A1","x1","q1","O1","autoFetchSvg","names","unicodes","I1","family","j1","P1","N1","T1","D1","skipLookups","includes","some","Z1","rest","this","definitions","_pullDefinitions","Y1","R1","F1","_1","W1","U1","X1","B1","G1","noAuto","config","i2svg","Promise","reject","watch","autoReplaceSvgRoot","Q1","parse","match","library","findIconDefinition","toHtml","K1","abstract","html","$1","main","transform","symbol","title","maskId","titleId","extra","watchable","found","width","height","classes","class","role","xmlns","viewBox","id","style","J1","content","startCentered","c2","l2","s2","a2","console","error","z2","e2","H2","t2","V2","begin","end","r2","M2","h2","createElementNS","n2","i2","parentNode","ceFn","createTextNode","appendChild","createComment","outerHTML","replaceChild","remove","nest","toSvg","toNode","removeAttribute","m2","o2","requestAnimationFrame","f2","C2","v2","L2","u2","treeCallback","nodeCallback","pseudoElementsCallback","observeMutationsRoot","type","addedNodes","target","attributeName","contains","observe","childList","characterData","subtree","p2","styleParser","innerText","firstChild","nodeType","Node","TEXT_NODE","data","d2","focusable","b2","g2","w2","k2","resolve","querySelectorAll","all","then","catch","y2","S2","iconDefinition","params","mutationObserverCallbacks","provides","callback","generateSvgReplacementMutation","generateAbstractIcon","containerWidth","iconWidth","layer","assembler","counter","text","generateLayersText","parseInt","getComputedStyle","fontSize","getBoundingClientRect","A2","x2","q2","getPropertyValue","removeChild","toLowerCase","isSecondary","startsWith","Z2","O2","j2","P2","parseFloat","isNaN","T2","N2","E2","I2","pseudoElements2svg","unwatch","disconnect","parseNodeAttributes","generateAbstractTransformGrouping","outer","inner","path","generateAbstractMask","maskUnits","maskContentUnits","matchMedia","matches","missingIconAbstract","attributeType","repeatCount","dur","cx","cy","opacity","FontAwesome","addPacks","addShims","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","getter","__esModule","definition","obj","prop","hasOwnProperty"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/scripts/pydata-sphinx-theme.js b/_static/scripts/pydata-sphinx-theme.js new file mode 100644 index 000000000..771fed0d2 --- /dev/null +++ b/_static/scripts/pydata-sphinx-theme.js @@ -0,0 +1,2 @@ +(()=>{"use strict";function e(e){"loading"!=document.readyState?e():document.addEventListener("DOMContentLoaded",e)}const t=e=>"string"==typeof e&&/^[v\d]/.test(e)&&o.test(e),n=(e,t,n)=>{u(n);const o=((e,t)=>{const n=r(e),o=r(t),a=n.pop(),s=o.pop(),i=c(n,o);return 0!==i?i:a&&s?c(a.split("."),s.split(".")):a||s?a?-1:1:0})(e,t);return l[n].includes(o)},o=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,r=e=>{if("string"!=typeof e)throw new TypeError("Invalid argument expected string");const t=e.match(o);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},a=e=>"*"===e||"x"===e||"X"===e,s=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},i=(e,t)=>{if(a(e)||a(t))return 0;const[n,o]=((e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t])(s(e),s(t));return n>o?1:n<o?-1:0},c=(e,t)=>{for(let n=0;n<Math.max(e.length,t.length);n++){const o=i(e[n]||"0",t[n]||"0");if(0!==o)return o}return 0},l={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},d=Object.keys(l),u=e=>{if("string"!=typeof e)throw new TypeError("Invalid operator type, expected string but got "+typeof e);if(-1===d.indexOf(e))throw new Error(`Invalid operator, expected one of ${d.join("|")}`)};var m=window.matchMedia("(prefers-color-scheme: dark)");function h(e){document.documentElement.dataset.theme=m.matches?"dark":"light"}function p(e){"light"!==e&&"dark"!==e&&"auto"!==e&&(console.error(`Got invalid theme mode: ${e}. Resetting to auto.`),e="auto");var t=m.matches?"dark":"light";document.documentElement.dataset.mode=e;var n="auto"==e?t:e;document.documentElement.dataset.theme=n,document.querySelectorAll(".dropdown-menu").forEach((e=>{"dark"===n?e.classList.add("dropdown-menu-dark"):e.classList.remove("dropdown-menu-dark")})),localStorage.setItem("mode",e),localStorage.setItem("theme",n),console.log(`[PST]: Changed to ${e} mode using the ${n} theme.`),m.onchange="auto"==e?h:""}function f(){const e=document.documentElement.dataset.defaultMode||"auto",t=localStorage.getItem("mode")||e;var n,o;p(((o=(n=m.matches?["auto","light","dark"]:["auto","dark","light"]).indexOf(t)+1)===n.length&&(o=0),n[o]))}var g=()=>{let e=document.querySelectorAll("form.bd-search");return e.length?(1==e.length?e[0]:document.querySelector(":not(#pst-search-dialog) > form.bd-search")).querySelector("input"):void 0},v=()=>{const e=g(),t=document.getElementById("pst-search-dialog");e===t.querySelector("input")?t.open?t.close():t.showModal():document.activeElement===e?e.blur():(e.focus(),e.select(),e.scrollIntoView({block:"center"}))},y=0===navigator.platform.indexOf("Mac")||"iPhone"===navigator.platform;const w=({currentTarget:e,clientX:t,clientY:n})=>{if(!e.open)return;const{left:o,right:r,top:a,bottom:s}=e.getBoundingClientRect();(t<o||r<t||n<a||s<n)&&e.close()};var E=()=>"dirhtml"==DOCUMENTATION_OPTIONS.BUILDER?DOCUMENTATION_OPTIONS.pagename.endsWith("index")?`${DOCUMENTATION_OPTIONS.pagename.substring(0,DOCUMENTATION_OPTIONS.pagename.length-5)}`:`${DOCUMENTATION_OPTIONS.pagename}/`:`${DOCUMENTATION_OPTIONS.pagename}.html`;async function T(e){document.querySelector("#bd-header-version-warning").remove();const t=DOCUMENTATION_OPTIONS.VERSION,n=new Date,o=JSON.parse(localStorage.getItem("pst_banner_pref")||"{}");console.debug(`[PST] Dismissing the version warning banner on ${t} starting ${n}.`),o[t]=n,localStorage.setItem("pst_banner_pref",JSON.stringify(o))}async function S(e){e.preventDefault();const t=E();let n=e.currentTarget.getAttribute("href"),o=n.replace(t,"");try{(await fetch(n,{method:"HEAD"})).ok?location.href=n:location.href=o}catch(e){location.href=o}}async function b(){var e=document.querySelectorAll(".version-switcher__button");const o=e.length>0,r=DOCUMENTATION_OPTIONS.hasOwnProperty("theme_switcher_json_url"),a=DOCUMENTATION_OPTIONS.show_version_warning_banner;if(r&&(o||a)){const o=await async function(e){const t=E();try{var n=new URL(e)}catch(o){if(!(o instanceof TypeError))throw o;{"file:"==window.location.protocol&&console.info("[PST] looks like you're viewing this site from a local filesystem, so the version switcher won't work unless you've disabled CORS. See https://pydata-sphinx-theme.readthedocs.io/en/stable/user_guide/version-dropdown.html");const o=window.location.href.indexOf(t),r=-1==o?window.location.href:window.location.href.substring(0,o);n=new URL(e,r)}}const o=await fetch(n);return await o.json()}(DOCUMENTATION_OPTIONS.theme_switcher_json_url);o&&(function(e,t){const n=E();t.forEach((e=>{e.dataset.activeVersionName="",e.dataset.activeVersion=""}));const o=(e=e.map((e=>(e.match=e.version==DOCUMENTATION_OPTIONS.theme_switcher_version_match,e.preferred=e.preferred||!1,"name"in e||(e.name=e.version),e)))).map((e=>e.preferred&&e.match)).some(Boolean);var r=!1;e.forEach((e=>{const a=document.createElement("a");a.setAttribute("class","dropdown-item list-group-item list-group-item-action py-1"),a.setAttribute("href",`${e.url}${n}`),a.setAttribute("role","option");const s=document.createElement("span");s.textContent=`${e.name}`,a.appendChild(s),a.dataset.versionName=e.name,a.dataset.version=e.version;let i=o&&e.preferred,c=!o&&!r&&e.match;(i||c)&&(a.classList.add("active"),t.forEach((t=>{t.innerText=e.name,t.dataset.activeVersionName=e.name,t.dataset.activeVersion=e.version})),r=!0),document.querySelectorAll(".version-switcher__menu").forEach((e=>{let t=a.cloneNode(!0);t.onclick=S,e.append(t)}))}))}(o,e),a&&function(e){var o=DOCUMENTATION_OPTIONS.VERSION,r=e.filter((e=>e.preferred));if(1!==r.length){const e=0==r.length?"No":"Multiple";return void console.log(`[PST] ${e} versions marked "preferred" found in versions JSON, ignoring.`)}const a=r[0].version,s=r[0].url,i=t(o)&&t(a);if(i&&n(o,a,"="))return void console.log("[PST]: This is the preferred version of the docs, not showing the warning banner.");const c=JSON.parse(localStorage.getItem("pst_banner_pref")||"{}")[o];if(null!=c){const e=new Date(c),t=(new Date-e)/864e5;if(t<14)return void console.info(`[PST] Suppressing version warning banner; was dismissed ${Math.floor(t)} day(s) ago`)}const l=document.querySelector("#bd-header-version-warning"),d=document.createElement("div"),u=document.createElement("div"),m=document.createElement("strong"),h=document.createElement("a"),p=document.createElement("a");d.classList="bd-header-announcement__content ms-auto me-auto",u.classList="sidebar-message",h.classList="btn text-wrap font-weight-bold ms-3 my-1 align-baseline pst-button-link-to-stable-version",h.href=`${s}${E()}`,h.innerText="Switch to stable version",h.onclick=S,p.classList="ms-3 my-1 align-baseline";const f=document.createElement("i");p.append(f),f.classList="fa-solid fa-xmark",p.onclick=T,u.innerText="This is documentation for ";const g=o.includes("dev")||o.includes("rc")||o.includes("pre"),v=i&&n(o,a,">");g||v?m.innerText="an unstable development version":i&&n(o,a,"<")?m.innerText=`an old version (${o})`:m.innerText=o?`version ${o}`:"an unknown version",l.appendChild(d),l.append(p),d.appendChild(u),u.appendChild(m),u.appendChild(document.createTextNode(".")),u.appendChild(h),l.classList.remove("d-none")}(o))}}function O(){const e=()=>{document.querySelectorAll(["pre",".nboutput > .output_area",".cell_output > .output",".jp-RenderedHTMLCommon",".pst-scrollable-table-container"].join(", ")).forEach((e=>{e.tabIndex=e.scrollWidth>e.clientWidth||e.scrollHeight>e.clientHeight?0:-1}))},t=function(e,t){let n=null;return(...t)=>{clearTimeout(n),n=setTimeout((()=>{e(...t)}),300)}}(e);window.addEventListener("resize",t),new MutationObserver(t).observe(document.getElementById("main-content"),{subtree:!0,childList:!0}),e()}async function N(){const e=document.querySelector(".bd-header-announcement"),{pstAnnouncementUrl:t}=e?e.dataset:null;if(t)try{const n=await fetch(t);if(!n.ok)throw new Error(`[PST]: HTTP response status not ok: ${n.status} ${n.statusText}`);const o=await n.text();if(0===o.length)return void console.log(`[PST]: Empty announcement at: ${t}`);e.innerHTML=`<div class="bd-header-announcement__content">${o}</div>`,e.classList.remove("d-none")}catch(e){console.log(`[PST]: Failed to load announcement at: ${t}`),console.error(e)}}e((async function(){await Promise.allSettled([b(),N()]);const e=document.querySelector(".pst-async-banner-revealer");if(!e)return;e.classList.remove("d-none");const t=Array.from(e.children).reduce(((e,t)=>e+t.offsetHeight),0);e.style.setProperty("height",`${t}px`),setTimeout((()=>{e.style.setProperty("height","auto")}),320)})),e((function(){p(document.documentElement.dataset.mode),document.querySelectorAll(".theme-switch-button").forEach((e=>{e.addEventListener("click",f)}))})),e((function(){if(!document.querySelector(".bd-docs-nav"))return;var e=document.querySelector("div.bd-sidebar");let t=parseInt(sessionStorage.getItem("sidebar-scroll-top"),10);if(isNaN(t)){var n=document.querySelector(".bd-docs-nav").querySelectorAll(".active");if(n.length>0){var o=n[n.length-1],r=o.getBoundingClientRect().y-e.getBoundingClientRect().y;if(o.getBoundingClientRect().y>.5*window.innerHeight){let t=.25;e.scrollTop=r-e.clientHeight*t,console.log("[PST]: Scrolled sidebar using last active link...")}}}else e.scrollTop=t,console.log("[PST]: Scrolled sidebar using stored browser position...");window.addEventListener("beforeunload",(()=>{sessionStorage.setItem("sidebar-scroll-top",e.scrollTop)}))})),e((function(){window.addEventListener("activate.bs.scrollspy",(function(){document.querySelectorAll(".bd-toc-nav a").forEach((e=>{e.parentElement.classList.remove("active")})),document.querySelectorAll(".bd-toc-nav a.active").forEach((e=>{e.parentElement.classList.add("active")}))}))})),e((()=>{(()=>{let e=document.querySelectorAll(".search-button__kbd-shortcut");y&&e.forEach((e=>e.querySelector("kbd.kbd-shortcut__modifier").innerText="⌘"))})(),window.addEventListener("keydown",(e=>{let t=g();e.shiftKey||e.altKey||(y?!e.metaKey||e.ctrlKey:e.metaKey||!e.ctrlKey)||!/^k$/i.test(e.key)?document.activeElement===t&&/Escape/i.test(e.key)&&v():(e.preventDefault(),v())}),!0),document.querySelectorAll(".search-button__button").forEach((e=>{e.onclick=v})),document.getElementById("pst-search-dialog").addEventListener("click",w)})),e((function(){const e=document.getElementById("pst-primary-sidebar"),t=document.getElementById("pst-secondary-sidebar"),n=document.getElementById("pst-primary-sidebar-modal"),o=document.getElementById("pst-secondary-sidebar-modal"),r=document.querySelector(".primary-toggle"),a=document.querySelector(".secondary-toggle"),s=(e,t)=>{Array.from(e.childNodes).forEach((e=>t.appendChild(e))),Array.from(e.classList).forEach((n=>{e.classList.remove(n),t.classList.add(n)}))};[[r,n,e],[a,o,t]].forEach((([e,t,n])=>{e&&t&&n&&(e.addEventListener("click",(e=>{e.preventDefault(),e.stopPropagation(),s(n,t),t.showModal()})),t.addEventListener("click",w),t.addEventListener("keydown",(e=>{"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),t.close())})),t.addEventListener("close",(()=>{s(t,n)})))}))})),"complete"===document.readyState?O():window.addEventListener("load",O)})(); +//# sourceMappingURL=pydata-sphinx-theme.js.map \ No newline at end of file diff --git a/_static/scripts/pydata-sphinx-theme.js.map b/_static/scripts/pydata-sphinx-theme.js.map new file mode 100644 index 000000000..0ed1d5e5a --- /dev/null +++ b/_static/scripts/pydata-sphinx-theme.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts/pydata-sphinx-theme.js","mappings":"mBASO,SAASA,EAAcC,GACD,WAAvBC,SAASC,WAAyBF,IACjCC,SAASE,iBAAiB,mBAAoBH,EACrD,CCLO,MAiCMI,EAAYC,GAA+B,iBAAZA,GAAwB,SAASC,KAAKD,IAAYE,EAAOD,KAAKD,GAkB7FG,EAAU,CAACC,EAAIC,EAAIC,KAE5BC,EAAoBD,GAGpB,MAAME,EAxDqB,EAACJ,EAAIC,KAEhC,MAAMI,EAAKC,EAAiBN,GACtBO,EAAKD,EAAiBL,GAEtBO,EAAKH,EAAGI,MACRC,EAAKH,EAAGE,MAERE,EAAIC,EAAgBP,EAAIE,GAC9B,OAAU,IAANI,EACOA,EAEPH,GAAME,EACCE,EAAgBJ,EAAGK,MAAM,KAAMH,EAAGG,MAAM,MAE1CL,GAAME,EACJF,GAAM,EAAI,EAEd,CAAC,EAsCIM,CAAgBd,EAAIC,GAChC,OAAOc,EAAeb,GAAUc,SAASZ,EAAI,EAgD3CN,EAAS,6IACTQ,EAAoBV,IACtB,GAAuB,iBAAZA,EACP,MAAM,IAAIqB,UAAU,oCAExB,MAAMC,EAAQtB,EAAQsB,MAAMpB,GAC5B,IAAKoB,EACD,MAAM,IAAIC,MAAM,uCAAuCvB,gBAG3D,OADAsB,EAAME,QACCF,CAAK,EAEVG,EAAcC,GAAY,MAANA,GAAmB,MAANA,GAAmB,MAANA,EAC9CC,EAAYC,IACd,MAAMC,EAAIC,SAASF,EAAG,IACtB,OAAOG,MAAMF,GAAKD,EAAIC,CAAC,EAGrBG,EAAiB,CAACC,EAAGC,KACvB,GAAIT,EAAWQ,IAAMR,EAAWS,GAC5B,OAAO,EACX,MAAOC,EAAIC,GAJG,EAACH,EAAGC,WAAaD,UAAaC,EAAI,CAACG,OAAOJ,GAAII,OAAOH,IAAM,CAACD,EAAGC,GAI5DI,CAAUX,EAASM,GAAIN,EAASO,IACjD,OAAIC,EAAKC,EACE,EACPD,EAAKC,GACG,EACL,CAAC,EAENpB,EAAkB,CAACiB,EAAGC,KACxB,IAAK,IAAIK,EAAI,EAAGA,EAAIC,KAAKC,IAAIR,EAAES,OAAQR,EAAEQ,QAASH,IAAK,CACnD,MAAMxB,EAAIiB,EAAeC,EAAEM,IAAM,IAAKL,EAAEK,IAAM,KAC9C,GAAU,IAANxB,EACA,OAAOA,CACf,CACA,OAAO,CAAC,EAENI,EAAiB,CACnB,IAAK,CAAC,GACN,KAAM,CAAC,EAAG,GACV,IAAK,CAAC,GACN,KAAM,EAAE,EAAG,GACX,IAAK,EAAE,IAELwB,EAAmBC,OAAOC,KAAK1B,GAC/BZ,EAAuBuC,IACzB,GAAkB,iBAAPA,EACP,MAAM,IAAIzB,UAAU,yDAAyDyB,GAEjF,IAAsC,IAAlCH,EAAiBI,QAAQD,GACzB,MAAM,IAAIvB,MAAM,qCAAqCoB,EAAiBK,KAAK,OAC/E,ECxJJ,IAAIC,EAAcC,OAAOC,WAAW,gCAOpC,SAASC,EAAUC,GACjBzD,SAAS0D,gBAAgBC,QAAQC,MAAQP,EAAYQ,QACjD,OACA,OACN,CAQA,SAASC,EAASC,GACH,UAATA,GAA6B,SAATA,GAA4B,SAATA,IACzCC,QAAQC,MAAM,2BAA2BF,yBACzCA,EAAO,QAIT,IAAIG,EAAcb,EAAYQ,QAAU,OAAS,QACjD7D,SAAS0D,gBAAgBC,QAAQI,KAAOA,EACxC,IAAIH,EAAgB,QAARG,EAAiBG,EAAcH,EAC3C/D,SAAS0D,gBAAgBC,QAAQC,MAAQA,EAGzC5D,SAASmE,iBAAiB,kBAAkBC,SAASC,IACrC,SAAVT,EACFS,EAAGC,UAAUC,IAAI,sBAEjBF,EAAGC,UAAUE,OAAO,qBACtB,IAIFC,aAAaC,QAAQ,OAAQX,GAC7BU,aAAaC,QAAQ,QAASd,GAC9BI,QAAQW,IAAI,qBAAqBZ,oBAAuBH,YAGxDP,EAAYuB,SAAmB,QAARb,EAAiBP,EAAY,EACtD,CAMA,SAASqB,IACP,MAAMC,EAAc9E,SAAS0D,gBAAgBC,QAAQmB,aAAe,OAC9DC,EAAcN,aAAaO,QAAQ,SAAWF,EAEpD,IAAiBG,EACXC,EAYNpB,IAZMoB,GADWD,EASF5B,EAAYQ,QACvB,CAAC,OAAQ,QAAS,QAClB,CAAC,OAAQ,OAAQ,UAVIV,QAWS4B,GAXU,KACrBE,EAAInC,SACvBoC,EAAe,GAEVD,EAAIC,IASf,CAsGA,IAAIC,EAAkB,KACpB,IAAIC,EAAQpF,SAASmE,iBAAiB,kBACtC,OAAKiB,EAAMtC,QAKW,GAAhBsC,EAAMtC,OAEDsC,EAAM,GAGNpF,SAASqF,cACd,8CAGQA,cAAc,cAZ1B,CAaF,EAQEC,EAAoB,KAEtB,MAAMC,EAAQJ,IAIRK,EAAexF,SAASyF,eAAe,qBAEzCF,IADgBC,EAAaH,cAAc,SAEzCG,EAAaE,KACfF,EAAaG,QAIbH,EAAaI,YAKX5F,SAAS6F,gBAAkBN,EAC7BA,EAAMO,QAENP,EAAMQ,QACNR,EAAMS,SACNT,EAAMU,eAAe,CAAEC,MAAO,WAElC,EA2CEC,EACoC,IAAtCC,UAAUC,SAASlD,QAAQ,QAAuC,WAAvBiD,UAAUC,SAevD,MAAMC,EAA6B,EACjCC,cAAeC,EACfC,UACAC,cAEA,IAAKF,EAAOd,KACV,OAMF,MAAM,KAAEiB,EAAI,MAAEC,EAAK,IAAEC,EAAG,OAAEC,GAAWN,EAAOO,yBAI1CN,EAAUE,GAAQC,EAAQH,GAAWC,EAAUG,GAAOC,EAASJ,IAG/DF,EAAOb,OACT,EAMF,IA2BIqB,EAAoB,IACe,WAAjCC,sBAAsBC,QACjBD,sBAAsBE,SAASC,SAAS,SAC3C,GAAGH,sBAAsBE,SAASE,UAAU,EAAGJ,sBAAsBE,SAASrE,OAAS,KACvF,GAAGmE,sBAAsBE,YAExB,GAAGF,sBAAsBE,gBAUlCG,eAAeC,EAA0BC,GACxBxH,SAASqF,cAAc,8BAC/Bb,SACP,MAAMpE,EAAU6G,sBAAsBQ,QAChCC,EAAM,IAAIC,KACVC,EAAcC,KAAKC,MACvBrD,aAAaO,QAAQ,oBAAsB,MAE7ChB,QAAQ+D,MACN,kDAAkD3H,cAAoBsH,MAExEE,EAAYxH,GAAWsH,EACvBjD,aAAaC,QAAQ,kBAAmBmD,KAAKG,UAAUJ,GACzD,CAQAN,eAAeW,EAA2BT,GAExCA,EAAMU,iBACN,MAAMC,EAAkBnB,IACxB,IAAIoB,EAASZ,EAAMjB,cAAc8B,aAAa,QAC1CC,EAAoBF,EAAOG,QAAQJ,EAAiB,IACxD,WACmBK,MAAMJ,EAAQ,CAAEK,OAAQ,UAChCC,GACPC,SAASC,KAAOR,EAEhBO,SAASC,KAAON,CAEpB,CAAE,MAAOO,GAEPF,SAASC,KAAON,CAClB,CACF,CA2NAhB,eAAewB,IAGb,IAAIC,EAAsB/I,SAASmE,iBACjC,6BAEF,MAAM6E,EAAkBD,EAAoBjG,OAAS,EAC/CmG,EAAkBhC,sBAAsBiC,eAC5C,2BAEIC,EAAqBlC,sBAAsBmC,4BAEjD,GAAIH,IAAoBD,GAAmBG,GAAqB,CAC9D,MAAME,QAjOV/B,eAAwCgC,GACtC,MAAMC,EAAcvC,IAEpB,IACE,IAAIwC,EAAS,IAAIC,IAAIH,EACvB,CAAE,MAAOT,GACP,KAAIA,aAAepH,WAsBjB,MAAMoH,EAtBsB,CAEI,SAA5BvF,OAAOqF,SAASe,UAIlB1F,QAAQ2F,KACN,gOAKJ,MAAMC,EAAStG,OAAOqF,SAASC,KAAKzF,QAAQoG,GAGtCM,GACO,GAAXD,EACItG,OAAOqF,SAASC,KAChBtF,OAAOqF,SAASC,KAAKvB,UAAU,EAAGuC,GACxCJ,EAAS,IAAIC,IAAIH,EAAKO,EACxB,CAIF,CAEA,MAAMC,QAAiBtB,MAAMgB,GAE7B,aADmBM,EAASC,MAE9B,CA8LuBC,CACjB/C,sBAAsBgD,yBAIpBZ,IAhMR,SAAiCA,EAAMN,GACrC,MAAMZ,EAAkBnB,IACxB+B,EAAoB3E,SAAS8F,IAE3BA,EAAIvG,QAA2B,kBAAI,GACnCuG,EAAIvG,QAAuB,cAAI,EAAE,IAkBnC,MAAMwG,GAXNd,EAAOA,EAAKe,KAAKC,IAEfA,EAAM3I,MACJ2I,EAAMjK,SAAW6G,sBAAsBqD,6BACzCD,EAAME,UAAYF,EAAME,YAAa,EAE/B,SAAUF,IACdA,EAAMG,KAAOH,EAAMjK,SAEdiK,MAGND,KAAKC,GAAUA,EAAME,WAAaF,EAAM3I,QACxC+I,KAAKC,SACR,IAAIC,GAAa,EAEjBtB,EAAKjF,SAASiG,IAEZ,MAAMO,EAAS5K,SAAS6K,cAAc,KACtCD,EAAOE,aACL,QACA,6DAEFF,EAAOE,aAAa,OAAQ,GAAGT,EAAMf,MAAMnB,KAC3CyC,EAAOE,aAAa,OAAQ,UAC5B,MAAMC,EAAO/K,SAAS6K,cAAc,QACpCE,EAAKC,YAAc,GAAGX,EAAMG,OAC5BI,EAAOK,YAAYF,GAGnBH,EAAOjH,QAAqB,YAAI0G,EAAMG,KACtCI,EAAOjH,QAAiB,QAAI0G,EAAMjK,QAIlC,IAAI8K,EAAwBf,GAA6BE,EAAME,UAC3DY,GACDhB,IAA8BQ,GAAcN,EAAM3I,OACjDwJ,GAAyBC,KAC3BP,EAAOtG,UAAUC,IAAI,UACrBwE,EAAoB3E,SAAS8F,IAC3BA,EAAIkB,UAAYf,EAAMG,KACtBN,EAAIvG,QAA2B,kBAAI0G,EAAMG,KACzCN,EAAIvG,QAAuB,cAAI0G,EAAMjK,OAAO,IAE9CuK,GAAa,GAIf3K,SAASmE,iBAAiB,2BAA2BC,SAASiH,IAG5D,IAAIC,EAAOV,EAAOW,WAAU,GAC5BD,EAAKE,QAAUvD,EAIfoD,EAAKI,OAAOH,EAAK,GACjB,GAEN,CAyHMI,CAAwBrC,EAAMN,GAC1BI,GA5GV,SAAkCE,GAChC,IAAIjJ,EAAU6G,sBAAsBQ,QAEhCkE,EAAmBtC,EAAKuC,QAAQvB,GAAUA,EAAME,YACpD,GAAgC,IAA5BoB,EAAiB7I,OAAc,CACjC,MAAM+I,EAAqC,GAA3BF,EAAiB7I,OAAc,KAAO,WAItD,YAHAkB,QAAQW,IACN,SAASkH,kEAGb,CACA,MAAMC,EAAmBH,EAAiB,GAAGvL,QACvC2L,EAAeJ,EAAiB,GAAGrC,IAEnC0C,EAAwB7L,EAASC,IAAYD,EAAS2L,GAC5D,GAAIE,GAAyBzL,EAAQH,EAAS0L,EAAkB,KAI9D,YAHA9H,QAAQW,IACN,qFAKJ,MAAMsH,EAAmBpE,KAAKC,MAC5BrD,aAAaO,QAAQ,oBAAsB,MAC3C5E,GACF,GAAwB,MAApB6L,EAA0B,CAC5B,MAAMC,EAAe,IAAIvE,KAAKsE,GAGxBE,GAFM,IAAIxE,KAEWuE,GADG,MAG9B,GAAIC,EADoB,GAOtB,YALAnI,QAAQ2F,KACN,2DAA2D/G,KAAKwJ,MAC9DD,gBAKR,CAGA,MAAME,EAASrM,SAASqF,cAAc,8BAChCiH,EAAStM,SAAS6K,cAAc,OAChC0B,EAAQvM,SAAS6K,cAAc,OAC/B2B,EAAOxM,SAAS6K,cAAc,UAC9B4B,EAASzM,SAAS6K,cAAc,KAChC6B,EAAY1M,SAAS6K,cAAc,KAGzCyB,EAAOhI,UAAY,mDACnBiI,EAAMjI,UAAY,kBAClBmI,EAAOnI,UACL,4FACFmI,EAAO7D,KAAO,GAAGmD,IAAe/E,MAChCyF,EAAOrB,UAAY,2BACnBqB,EAAOjB,QAAUvD,EACjByE,EAAUpI,UAAY,2BACtB,MAAMqI,EAAU3M,SAAS6K,cAAc,KACvC6B,EAAUjB,OAAOkB,GACjBA,EAAQrI,UAAY,oBACpBoI,EAAUlB,QAAUjE,EAEpBgF,EAAMnB,UAAY,6BAClB,MAAMwB,EACJxM,EAAQoB,SAAS,QACjBpB,EAAQoB,SAAS,OACjBpB,EAAQoB,SAAS,OACbqL,EACJb,GAAyBzL,EAAQH,EAAS0L,EAAkB,KAC1Dc,GAASC,EACXL,EAAKpB,UAAY,kCACRY,GAAyBzL,EAAQH,EAAS0L,EAAkB,KACrEU,EAAKpB,UAAY,mBAAmBhL,KAIpCoM,EAAKpB,UAHKhL,EAGO,WAAWA,IAFX,qBAInBiM,EAAOpB,YAAYqB,GACnBD,EAAOZ,OAAOiB,GACdJ,EAAOrB,YAAYsB,GACnBA,EAAMtB,YAAYuB,GAClBD,EAAMtB,YAAYjL,SAAS8M,eAAe,MAC1CP,EAAMtB,YAAYwB,GAClBJ,EAAO/H,UAAUE,OAAO,SAC1B,CAuBQuI,CAAyB1D,GAG/B,CACF,CAkFA,SAAS2D,IACP,MAAMC,EAAiB,KACrBjN,SACGmE,iBACC,CAEE,MAEA,2BAEA,yBAEA,yBAEA,mCACAf,KAAK,OAERgB,SAASC,IACRA,EAAG6I,SACD7I,EAAG8I,YAAc9I,EAAG+I,aAAe/I,EAAGgJ,aAAehJ,EAAGiJ,aACpD,GACC,CAAC,GACR,EAEAC,EAqBR,SAAkBxN,EAAUyN,GAC1B,IAAIC,EAAY,KAChB,MAAO,IAAIC,KACTC,aAAaF,GACbA,EAAYG,YAAW,KACrB7N,KAAY2N,EAAK,GA1BoC,IA2B/C,CAEZ,CA7BkCG,CAASZ,GAGzC3J,OAAOpD,iBAAiB,SAAUqN,GAOb,IAAIO,iBAAiBP,GAG7BQ,QAAQ/N,SAASyF,eAAe,gBAAiB,CAC5DuI,SAAS,EACTC,WAAW,IAIbhB,GACF,CAcA3F,eAAe4G,IACb,MAAM7B,EAASrM,SAASqF,cAAc,4BAChC,mBAAE8I,GAAuB9B,EAASA,EAAO1I,QAAU,KAEzD,GAAKwK,EAIL,IACE,MAAMrE,QAAiBtB,MAAM2F,GAC7B,IAAKrE,EAASpB,GACZ,MAAM,IAAI/G,MACR,uCAAuCmI,EAASsE,UAAUtE,EAASuE,cAGvE,MAAMhF,QAAaS,EAASwE,OAC5B,GAAoB,IAAhBjF,EAAKvG,OAEP,YADAkB,QAAQW,IAAI,iCAAiCwJ,KAG/C9B,EAAOkC,UAAY,gDAAgDlF,UACnEgD,EAAO/H,UAAUE,OAAO,SAC1B,CAAE,MAAOgK,GACPxK,QAAQW,IAAI,0CAA0CwJ,KACtDnK,QAAQC,MAAMuK,EAChB,CACF,CA2CA1O,GAtCAwH,uBAEQmH,QAAQC,WAAW,CAAC5F,IAAuBoF,MAKjD,MAAMS,EAAW3O,SAASqF,cAAc,8BACxC,IAAKsJ,EACH,OAIFA,EAASrK,UAAUE,OAAO,UAG1B,MAAMoK,EAASC,MAAMC,KAAKH,EAASI,UAAUC,QAC3C,CAACJ,EAAQvK,IAAOuK,EAASvK,EAAG4K,cAC5B,GAKFN,EAASO,MAAMC,YAAY,SAAU,GAAGP,OAIxChB,YAAW,KACTe,EAASO,MAAMC,YAAY,SAAU,OAAO,GAC3C,IACL,IAUArP,GAjwBA,WAGEgE,EAAS9D,SAAS0D,gBAAgBC,QAAQI,MAG1C/D,SAASmE,iBAAiB,wBAAwBC,SAASC,IACzDA,EAAGnE,iBAAiB,QAAS2E,EAAU,GAE3C,IAyvBA/E,GAptBA,WAEE,IAAKE,SAASqF,cAAc,gBAC1B,OAGF,IAAI+J,EAAUpP,SAASqF,cAAc,kBAIrC,IAAIgK,EAAkBnN,SACpBoN,eAAetK,QAAQ,sBACvB,IAGF,GAAK7C,MAAMkN,GAIJ,CAEL,IACIE,EADavP,SAASqF,cAAc,gBACVlB,iBAAiB,WAC/C,GAAIoL,EAAazM,OAAS,EAAG,CAE3B,IAAI0M,EAAgBD,EAAaA,EAAazM,OAAS,GACnD2M,EACFD,EAAczI,wBAAwB2I,EACtCN,EAAQrI,wBAAwB2I,EAElC,GAAIF,EAAczI,wBAAwB2I,EAAyB,GAArBpM,OAAOqM,YAAmB,CACtE,IAAIC,EAAS,IACbR,EAAQS,UAAYJ,EAASL,EAAQ9B,aAAesC,EACpD5L,QAAQW,IAAI,oDACd,CACF,CACF,MAnBEyK,EAAQS,UAAYR,EACpBrL,QAAQW,IAAI,4DAqBdrB,OAAOpD,iBAAiB,gBAAgB,KACtCoP,eAAe5K,QAAQ,qBAAsB0K,EAAQS,UAAU,GAEnE,IA2qBA/P,GA3uBA,WACEwD,OAAOpD,iBAAiB,yBAAyB,WAC9BF,SAASmE,iBAAiB,iBAElCC,SAAS0L,IAChBA,EAAQC,cAAczL,UAAUE,OAAO,SAAS,IAG3BxE,SAASmE,iBAAiB,wBAClCC,SAAS0L,IACtBA,EAAQC,cAAczL,UAAUC,IAAI,SAAS,GAEjD,GACF,IA+tBAzE,GA3hByB,KAnCK,MAC5B,IAAIkQ,EAAYhQ,SAASmE,iBAAiB,gCACtCgC,GACF6J,EAAU5L,SACP6L,GAAOA,EAAE5K,cAAc,8BAA8B+F,UAAY,KAEtE,EA8BA8E,GA/EA5M,OAAOpD,iBACL,WACCsH,IACC,IAAIjC,EAAQJ,IAITqC,EAAM2I,UACN3I,EAAM4I,SAENjK,GACGqB,EAAM6I,SAAY7I,EAAM8I,QACvB9I,EAAM6I,UAAW7I,EAAM8I,WAE5B,OAAOjQ,KAAKmH,EAAM+I,KAMXvQ,SAAS6F,gBAAkBN,GAAS,UAAUlF,KAAKmH,EAAM+I,MAChEjL,KALAkC,EAAMU,iBACN5C,IAKF,IAEF,GA2DFtF,SAASmE,iBAAiB,0BAA0BC,SAAS8F,IAC3DA,EAAIsB,QAAUlG,CAAiB,IAIZtF,SAASyF,eAAe,qBAEhCvF,iBAAiB,QAASoG,EAA2B,IAghBpExG,GAlNA,WAIE,MAAM0Q,EAAiBxQ,SAASyF,eAAe,uBACzCgL,EAAmBzQ,SAASyF,eAAe,yBAI3CiL,EAAgB1Q,SAASyF,eAAe,6BACxCkL,EAAkB3Q,SAASyF,eAC/B,+BAKImL,EAAgB5Q,SAASqF,cAAc,mBACvCwL,EAAkB7Q,SAASqF,cAAc,qBAGzCyL,EAA6B,CAAChC,EAAMiC,KACxClC,MAAMC,KAAKA,EAAKkC,YAAY5M,SAASkH,GAASyF,EAAG9F,YAAYK,KAC7DuD,MAAMC,KAAKA,EAAKxK,WAAWF,SAAS6M,IAClCnC,EAAKxK,UAAUE,OAAOyM,GACtBF,EAAGzM,UAAUC,IAAI0M,EAAI,GACrB,EAIJ,CACE,CAACL,EAAeF,EAAeF,GAC/B,CAACK,EAAiBF,EAAiBF,IACnCrM,SAAQ,EAAE8M,EAAc1K,EAAQ4I,MAC3B8B,GAAiB1K,GAAW4I,IAMjC8B,EAAahR,iBAAiB,SAAUsH,IACtCA,EAAMU,iBACNV,EAAM2J,kBAINL,EAA2B1B,EAAS5I,GAEpCA,EAAOZ,WAAW,IAIpBY,EAAOtG,iBAAiB,QAASoG,GAKjCE,EAAOtG,iBAAiB,WAAYsH,IAChB,WAAdA,EAAM+I,MACR/I,EAAMU,iBACNV,EAAM2J,kBACN3K,EAAOb,QACT,IAKFa,EAAOtG,iBAAiB,SAAS,KAC/B4Q,EAA2BtK,EAAQ4I,EAAQ,IAC3C,GAEN,IAgJ4B,aAAxBpP,SAASC,WACX+M,IAEA1J,OAAOpD,iBAAiB,OAAQ8M,E","sources":["webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/mixin.js","webpack://pydata_sphinx_theme/./node_modules/compare-versions/lib/esm/index.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/pydata-sphinx-theme.js"],"sourcesContent":["/* define several functions to replace jQuery methods\n * inspired by https://tobiasahlin.com/blog/move-from-jquery-to-vanilla-javascript/\n */\n\n/**\n * Execute a method if DOM has finished loading\n *\n * @param {function} callback the method to execute\n */\nexport function documentReady(callback) {\n if (document.readyState != \"loading\") callback();\n else document.addEventListener(\"DOMContentLoaded\", callback);\n}\n","/**\n * Compare [semver](https://semver.org/) version strings to find greater, equal or lesser.\n * This library supports the full semver specification, including comparing versions with different number of digits like `1.0.0`, `1.0`, `1`, and pre-release versions like `1.0.0-alpha`.\n * @param v1 - First version to compare\n * @param v2 - Second version to compare\n * @returns Numeric value compatible with the [Array.sort(fn) interface](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Parameters).\n */\nexport const compareVersions = (v1, v2) => {\n // validate input and split into segments\n const n1 = validateAndParse(v1);\n const n2 = validateAndParse(v2);\n // pop off the patch\n const p1 = n1.pop();\n const p2 = n2.pop();\n // validate numbers\n const r = compareSegments(n1, n2);\n if (r !== 0)\n return r;\n // validate pre-release\n if (p1 && p2) {\n return compareSegments(p1.split('.'), p2.split('.'));\n }\n else if (p1 || p2) {\n return p1 ? -1 : 1;\n }\n return 0;\n};\n/**\n * Validate [semver](https://semver.org/) version strings.\n *\n * @param version Version number to validate\n * @returns `true` if the version number is a valid semver version number, `false` otherwise.\n *\n * @example\n * ```\n * validate('1.0.0-rc.1'); // return true\n * validate('1.0-rc.1'); // return false\n * validate('foo'); // return false\n * ```\n */\nexport const validate = (version) => typeof version === 'string' && /^[v\\d]/.test(version) && semver.test(version);\n/**\n * Compare [semver](https://semver.org/) version strings using the specified operator.\n *\n * @param v1 First version to compare\n * @param v2 Second version to compare\n * @param operator Allowed arithmetic operator to use\n * @returns `true` if the comparison between the firstVersion and the secondVersion satisfies the operator, `false` otherwise.\n *\n * @example\n * ```\n * compare('10.1.8', '10.0.4', '>'); // return true\n * compare('10.0.1', '10.0.1', '='); // return true\n * compare('10.1.1', '10.2.2', '<'); // return true\n * compare('10.1.1', '10.2.2', '<='); // return true\n * compare('10.1.1', '10.2.2', '>='); // return false\n * ```\n */\nexport const compare = (v1, v2, operator) => {\n // validate input operator\n assertValidOperator(operator);\n // since result of compareVersions can only be -1 or 0 or 1\n // a simple map can be used to replace switch\n const res = compareVersions(v1, v2);\n return operatorResMap[operator].includes(res);\n};\n/**\n * Match [npm semver](https://docs.npmjs.com/cli/v6/using-npm/semver) version range.\n *\n * @param version Version number to match\n * @param range Range pattern for version\n * @returns `true` if the version number is within the range, `false` otherwise.\n *\n * @example\n * ```\n * satisfies('1.1.0', '^1.0.0'); // return true\n * satisfies('1.1.0', '~1.0.0'); // return false\n * ```\n */\nexport const satisfies = (version, range) => {\n // if no range operator then \"=\"\n const m = range.match(/^([<>=~^]+)/);\n const op = m ? m[1] : '=';\n // if gt/lt/eq then operator compare\n if (op !== '^' && op !== '~')\n return compare(version, range, op);\n // else range of either \"~\" or \"^\" is assumed\n const [v1, v2, v3, , vp] = validateAndParse(version);\n const [r1, r2, r3, , rp] = validateAndParse(range);\n const v = [v1, v2, v3];\n const r = [r1, r2 !== null && r2 !== void 0 ? r2 : 'x', r3 !== null && r3 !== void 0 ? r3 : 'x'];\n // validate pre-release\n if (rp) {\n if (!vp)\n return false;\n if (compareSegments(v, r) !== 0)\n return false;\n if (compareSegments(vp.split('.'), rp.split('.')) === -1)\n return false;\n }\n // first non-zero number\n const nonZero = r.findIndex((v) => v !== '0') + 1;\n // pointer to where segments can be >=\n const i = op === '~' ? 2 : nonZero > 1 ? nonZero : 1;\n // before pointer must be equal\n if (compareSegments(v.slice(0, i), r.slice(0, i)) !== 0)\n return false;\n // after pointer must be >=\n if (compareSegments(v.slice(i), r.slice(i)) === -1)\n return false;\n return true;\n};\nconst semver = /^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\-]+(?:\\.[\\da-z\\-]+)*))?(?:\\+[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?)?)?$/i;\nconst validateAndParse = (version) => {\n if (typeof version !== 'string') {\n throw new TypeError('Invalid argument expected string');\n }\n const match = version.match(semver);\n if (!match) {\n throw new Error(`Invalid argument not valid semver ('${version}' received)`);\n }\n match.shift();\n return match;\n};\nconst isWildcard = (s) => s === '*' || s === 'x' || s === 'X';\nconst tryParse = (v) => {\n const n = parseInt(v, 10);\n return isNaN(n) ? v : n;\n};\nconst forceType = (a, b) => typeof a !== typeof b ? [String(a), String(b)] : [a, b];\nconst compareStrings = (a, b) => {\n if (isWildcard(a) || isWildcard(b))\n return 0;\n const [ap, bp] = forceType(tryParse(a), tryParse(b));\n if (ap > bp)\n return 1;\n if (ap < bp)\n return -1;\n return 0;\n};\nconst compareSegments = (a, b) => {\n for (let i = 0; i < Math.max(a.length, b.length); i++) {\n const r = compareStrings(a[i] || '0', b[i] || '0');\n if (r !== 0)\n return r;\n }\n return 0;\n};\nconst operatorResMap = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n};\nconst allowedOperators = Object.keys(operatorResMap);\nconst assertValidOperator = (op) => {\n if (typeof op !== 'string') {\n throw new TypeError(`Invalid operator type, expected string but got ${typeof op}`);\n }\n if (allowedOperators.indexOf(op) === -1) {\n throw new Error(`Invalid operator, expected one of ${allowedOperators.join('|')}`);\n }\n};\n//# sourceMappingURL=index.js.map","// Define the custom behavior of the page\nimport { documentReady } from \"./mixin\";\nimport { compare, validate } from \"compare-versions\";\n\nimport \"../styles/pydata-sphinx-theme.scss\";\n\n/*******************************************************************************\n * Theme interaction\n */\n\nvar prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\");\n\n/**\n * set the the body theme to the one specified by the user browser\n *\n * @param {event} e\n */\nfunction autoTheme(e) {\n document.documentElement.dataset.theme = prefersDark.matches\n ? \"dark\"\n : \"light\";\n}\n\n/**\n * Set the theme using the specified mode.\n * It can be one of [\"auto\", \"dark\", \"light\"]\n *\n * @param {str} mode\n */\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n // get the theme\n var colorScheme = prefersDark.matches ? \"dark\" : \"light\";\n document.documentElement.dataset.mode = mode;\n var theme = mode == \"auto\" ? colorScheme : mode;\n document.documentElement.dataset.theme = theme;\n // TODO: remove this line after Bootstrap upgrade\n // v5.3 has a colors mode: https://getbootstrap.com/docs/5.3/customize/color-modes/\n document.querySelectorAll(\".dropdown-menu\").forEach((el) => {\n if (theme === \"dark\") {\n el.classList.add(\"dropdown-menu-dark\");\n } else {\n el.classList.remove(\"dropdown-menu-dark\");\n }\n });\n\n // save mode and theme\n localStorage.setItem(\"mode\", mode);\n localStorage.setItem(\"theme\", theme);\n console.log(`[PST]: Changed to ${mode} mode using the ${theme} theme.`);\n\n // add a listener if set on auto\n prefersDark.onchange = mode == \"auto\" ? autoTheme : \"\";\n}\n\n/**\n * Change the theme option order so that clicking on the btn is always a change\n * from \"auto\"\n */\nfunction cycleMode() {\n const defaultMode = document.documentElement.dataset.defaultMode || \"auto\";\n const currentMode = localStorage.getItem(\"mode\") || defaultMode;\n\n var loopArray = (arr, current) => {\n var nextPosition = arr.indexOf(current) + 1;\n if (nextPosition === arr.length) {\n nextPosition = 0;\n }\n return arr[nextPosition];\n };\n\n // make sure the next theme after auto is always a change\n var modeList = prefersDark.matches\n ? [\"auto\", \"light\", \"dark\"]\n : [\"auto\", \"dark\", \"light\"];\n var newMode = loopArray(modeList, currentMode);\n setTheme(newMode);\n}\n\n/**\n * add the theme listener on the btns of the navbar\n */\nfunction addModeListener() {\n // the theme was set a first time using the initial mini-script\n // running setMode will ensure the use of the dark mode if auto is selected\n setTheme(document.documentElement.dataset.mode);\n\n // Attach event handlers for toggling themes colors\n document.querySelectorAll(\".theme-switch-button\").forEach((el) => {\n el.addEventListener(\"click\", cycleMode);\n });\n}\n\n/*******************************************************************************\n * TOC interactivity\n */\n\n/**\n * TOC sidebar - add \"active\" class to parent list\n *\n * Bootstrap's scrollspy adds the active class to the <a> link,\n * but for the automatic collapsing we need this on the parent list item.\n *\n * The event is triggered on \"window\" (and not the nav item as documented),\n * see https://github.com/twbs/bootstrap/issues/20086\n */\nfunction addTOCInteractivity() {\n window.addEventListener(\"activate.bs.scrollspy\", function () {\n const navLinks = document.querySelectorAll(\".bd-toc-nav a\");\n\n navLinks.forEach((navLink) => {\n navLink.parentElement.classList.remove(\"active\");\n });\n\n const activeNavLinks = document.querySelectorAll(\".bd-toc-nav a.active\");\n activeNavLinks.forEach((navLink) => {\n navLink.parentElement.classList.add(\"active\");\n });\n });\n}\n\n/*******************************************************************************\n * Scroll\n */\n\n/**\n * Navigation sidebar scrolling to active page\n */\nfunction scrollToActive() {\n // If the docs nav doesn't exist, do nothing (e.g., on search page)\n if (!document.querySelector(\".bd-docs-nav\")) {\n return;\n }\n\n var sidebar = document.querySelector(\"div.bd-sidebar\");\n\n // Remember the sidebar scroll position between page loads\n // Inspired on source of revealjs.com\n let storedScrollTop = parseInt(\n sessionStorage.getItem(\"sidebar-scroll-top\"),\n 10,\n );\n\n if (!isNaN(storedScrollTop)) {\n // If we've got a saved scroll position, just use that\n sidebar.scrollTop = storedScrollTop;\n console.log(\"[PST]: Scrolled sidebar using stored browser position...\");\n } else {\n // Otherwise, calculate a position to scroll to based on the lowest `active` link\n var sidebarNav = document.querySelector(\".bd-docs-nav\");\n var active_pages = sidebarNav.querySelectorAll(\".active\");\n if (active_pages.length > 0) {\n // Use the last active page as the offset since it's the page we're on\n var latest_active = active_pages[active_pages.length - 1];\n var offset =\n latest_active.getBoundingClientRect().y -\n sidebar.getBoundingClientRect().y;\n // Only scroll the navbar if the active link is lower than 50% of the page\n if (latest_active.getBoundingClientRect().y > window.innerHeight * 0.5) {\n let buffer = 0.25; // Buffer so we have some space above the scrolled item\n sidebar.scrollTop = offset - sidebar.clientHeight * buffer;\n console.log(\"[PST]: Scrolled sidebar using last active link...\");\n }\n }\n }\n\n // Store the sidebar scroll position\n window.addEventListener(\"beforeunload\", () => {\n sessionStorage.setItem(\"sidebar-scroll-top\", sidebar.scrollTop);\n });\n}\n\n/*******************************************************************************\n * Search\n */\n\n/**\n * Find any search forms on the page and return their input element\n */\nvar findSearchInput = () => {\n let forms = document.querySelectorAll(\"form.bd-search\");\n if (!forms.length) {\n // no search form found\n return;\n } else {\n var form;\n if (forms.length == 1) {\n // there is exactly one search form (persistent or hidden)\n form = forms[0];\n } else {\n // must be at least one persistent form, use the first persistent one\n form = document.querySelector(\n \":not(#pst-search-dialog) > form.bd-search\",\n );\n }\n return form.querySelector(\"input\");\n }\n};\n\n/**\n * Activate the search field on the page.\n * - If there is a search field already visible it will be activated.\n * - If not, then a search field will pop up.\n */\nvar toggleSearchField = () => {\n // Find the search input to highlight\n const input = findSearchInput();\n\n // if the input field is the hidden one (the one associated with the\n // search button) then toggle the button state (to show/hide the field)\n const searchDialog = document.getElementById(\"pst-search-dialog\");\n const hiddenInput = searchDialog.querySelector(\"input\");\n if (input === hiddenInput) {\n if (searchDialog.open) {\n searchDialog.close();\n } else {\n // Note: browsers should focus the input field inside the modal dialog\n // automatically when it is opened.\n searchDialog.showModal();\n }\n } else {\n // if the input field is not the hidden one, then toggle its focus state\n\n if (document.activeElement === input) {\n input.blur();\n } else {\n input.focus();\n input.select();\n input.scrollIntoView({ block: \"center\" });\n }\n }\n};\n\n/**\n * Add an event listener for toggleSearchField() for Ctrl/Cmd + K\n */\nvar addEventListenerForSearchKeyboard = () => {\n window.addEventListener(\n \"keydown\",\n (event) => {\n let input = findSearchInput();\n // toggle on Ctrl+k or ⌘+k\n if (\n // Ignore if shift or alt are pressed\n !event.shiftKey &&\n !event.altKey &&\n // On Mac use ⌘, all other OS use Ctrl\n (useCommandKey\n ? event.metaKey && !event.ctrlKey\n : !event.metaKey && event.ctrlKey) &&\n // Case-insensitive so the shortcut still works with caps lock\n /^k$/i.test(event.key)\n ) {\n event.preventDefault();\n toggleSearchField();\n }\n // also allow Escape key to hide (but not show) the dynamic search field\n else if (document.activeElement === input && /Escape/i.test(event.key)) {\n toggleSearchField();\n }\n },\n true,\n );\n};\n\n/**\n * If the user is on a Mac, use command (⌘) instead of control (ctrl) key\n *\n * Note: `navigator.platform` is deprecated; however MDN still recommends using\n * it for the one specific use case of detecting whether a keyboard shortcut\n * should use control or command:\n * https://developer.mozilla.org/en-US/docs/Web/API/Navigator/platform#examples\n */\nvar useCommandKey =\n navigator.platform.indexOf(\"Mac\") === 0 || navigator.platform === \"iPhone\";\n\n/**\n * Change the search hint to `meta key` if we are a Mac\n */\n\nvar changeSearchShortcutKey = () => {\n let shortcuts = document.querySelectorAll(\".search-button__kbd-shortcut\");\n if (useCommandKey) {\n shortcuts.forEach(\n (f) => (f.querySelector(\"kbd.kbd-shortcut__modifier\").innerText = \"⌘\"),\n );\n }\n};\n\nconst closeDialogOnBackdropClick = ({\n currentTarget: dialog,\n clientX,\n clientY,\n}) => {\n if (!dialog.open) {\n return;\n }\n\n // Dialog.getBoundingClientRect() does not include ::backdrop. (This is the\n // trick that allows us to determine if click was inside or outside of the\n // dialog: click handler includes backdrop, getBoundingClientRect does not.)\n const { left, right, top, bottom } = dialog.getBoundingClientRect();\n\n // 0, 0 means top left\n const clickWasOutsideDialog =\n clientX < left || right < clientX || clientY < top || bottom < clientY;\n\n if (clickWasOutsideDialog) {\n dialog.close();\n }\n};\n\n/**\n * Activate callbacks for search button popup\n */\nvar setupSearchButtons = () => {\n changeSearchShortcutKey();\n addEventListenerForSearchKeyboard();\n\n // Add the search button trigger event callback\n document.querySelectorAll(\".search-button__button\").forEach((btn) => {\n btn.onclick = toggleSearchField;\n });\n\n // If user clicks outside the search modal dialog, then close it.\n const searchDialog = document.getElementById(\"pst-search-dialog\");\n // Dialog click handler includes clicks on dialog ::backdrop.\n searchDialog.addEventListener(\"click\", closeDialogOnBackdropClick);\n};\n\n/*******************************************************************************\n * Version Switcher\n * Note that this depends on two variables existing that are defined in\n * and `html-page-context` hook:\n *\n * - DOCUMENTATION_OPTIONS.pagename\n * - DOCUMENTATION_OPTIONS.theme_switcher_url\n */\n\n/**\n * path component of URL\n */\nvar getCurrentUrlPath = () => {\n if (DOCUMENTATION_OPTIONS.BUILDER == \"dirhtml\") {\n return DOCUMENTATION_OPTIONS.pagename.endsWith(\"index\")\n ? `${DOCUMENTATION_OPTIONS.pagename.substring(0, DOCUMENTATION_OPTIONS.pagename.length - \"index\".length)}`\n : `${DOCUMENTATION_OPTIONS.pagename}/`;\n }\n return `${DOCUMENTATION_OPTIONS.pagename}.html`;\n};\n\n/**\n * Allow user to dismiss the warning banner about the docs version being dev / old.\n * We store the dismissal date and version, to give us flexibility about making the\n * dismissal last for longer than one browser session, if we decide to do that.\n *\n * @param {event} event the event that trigger the check\n */\nasync function DismissBannerAndStorePref(event) {\n const banner = document.querySelector(\"#bd-header-version-warning\");\n banner.remove();\n const version = DOCUMENTATION_OPTIONS.VERSION;\n const now = new Date();\n const banner_pref = JSON.parse(\n localStorage.getItem(\"pst_banner_pref\") || \"{}\",\n );\n console.debug(\n `[PST] Dismissing the version warning banner on ${version} starting ${now}.`,\n );\n banner_pref[version] = now;\n localStorage.setItem(\"pst_banner_pref\", JSON.stringify(banner_pref));\n}\n\n/**\n * Check if corresponding page path exists in other version of docs\n * and, if so, go there instead of the homepage of the other docs version\n *\n * @param {event} event the event that trigger the check\n */\nasync function checkPageExistsAndRedirect(event) {\n // ensure we don't follow the initial link\n event.preventDefault();\n const currentFilePath = getCurrentUrlPath();\n let tryUrl = event.currentTarget.getAttribute(\"href\");\n let otherDocsHomepage = tryUrl.replace(currentFilePath, \"\");\n try {\n let head = await fetch(tryUrl, { method: \"HEAD\" });\n if (head.ok) {\n location.href = tryUrl; // the page exists, go there\n } else {\n location.href = otherDocsHomepage;\n }\n } catch (err) {\n // something went wrong, probably CORS restriction, fallback to other docs homepage\n location.href = otherDocsHomepage;\n }\n}\n\n/**\n * Load and parse the version switcher JSON file from an absolute or relative URL.\n *\n * @param {string} url The URL to load version switcher entries from.\n */\nasync function fetchVersionSwitcherJSON(url) {\n const currentPath = getCurrentUrlPath();\n // first check if it's a valid URL\n try {\n var result = new URL(url);\n } catch (err) {\n if (err instanceof TypeError) {\n // Assume we got a relative path, and fix accordingly.\n if (window.location.protocol == \"file:\") {\n // Here instead of returning `null` we work out what the file path would be\n // anyway (same code path as for served docs), as a convenience to folks who\n // routinely disable CORS when they boot up their browser.\n console.info(\n \"[PST] looks like you're viewing this site from a local filesystem, so \" +\n \"the version switcher won't work unless you've disabled CORS. See \" +\n \"https://pydata-sphinx-theme.readthedocs.io/en/stable/user_guide/version-dropdown.html\",\n );\n }\n const cutoff = window.location.href.indexOf(currentPath);\n // cutoff == -1 can happen e.g. on the homepage of locally served docs, where you\n // get something like http://127.0.0.1:8000/ (no trailing `index.html`)\n const origin =\n cutoff == -1\n ? window.location.href\n : window.location.href.substring(0, cutoff);\n result = new URL(url, origin);\n } else {\n // something unexpected happened\n throw err;\n }\n }\n // load and return the JSON\n const response = await fetch(result);\n const data = await response.json();\n return data;\n}\n\n// Populate the version switcher from the JSON data\nfunction populateVersionSwitcher(data, versionSwitcherBtns) {\n const currentFilePath = getCurrentUrlPath();\n versionSwitcherBtns.forEach((btn) => {\n // Set empty strings by default so that these attributes exist and can be used in CSS selectors\n btn.dataset[\"activeVersionName\"] = \"\";\n btn.dataset[\"activeVersion\"] = \"\";\n });\n // in case there are multiple entries with the same version string, this helps us\n // decide which entry's `name` to put on the button itself. Without this, it would\n // always be the *last* version-matching entry; now it will be either the\n // version-matching entry that is also marked as `\"preferred\": true`, or if that\n // doesn't exist: the *first* version-matching entry.\n data = data.map((entry) => {\n // does this entry match the version that we're currently building/viewing?\n entry.match =\n entry.version == DOCUMENTATION_OPTIONS.theme_switcher_version_match;\n entry.preferred = entry.preferred || false;\n // if no custom name specified (e.g., \"latest\"), use version string\n if (!(\"name\" in entry)) {\n entry.name = entry.version;\n }\n return entry;\n });\n const hasMatchingPreferredEntry = data\n .map((entry) => entry.preferred && entry.match)\n .some(Boolean);\n var foundMatch = false;\n // create links to the corresponding page in the other docs versions\n data.forEach((entry) => {\n // create the node\n const anchor = document.createElement(\"a\");\n anchor.setAttribute(\n \"class\",\n \"dropdown-item list-group-item list-group-item-action py-1\",\n );\n anchor.setAttribute(\"href\", `${entry.url}${currentFilePath}`);\n anchor.setAttribute(\"role\", \"option\");\n const span = document.createElement(\"span\");\n span.textContent = `${entry.name}`;\n anchor.appendChild(span);\n // Add dataset values for the version and name in case people want\n // to apply CSS styling based on this information.\n anchor.dataset[\"versionName\"] = entry.name;\n anchor.dataset[\"version\"] = entry.version;\n // replace dropdown button text with the preferred display name of the\n // currently-viewed version, rather than using sphinx's {{ version }} variable.\n // also highlight the dropdown entry for the currently-viewed version's entry\n let matchesAndIsPreferred = hasMatchingPreferredEntry && entry.preferred;\n let matchesAndIsFirst =\n !hasMatchingPreferredEntry && !foundMatch && entry.match;\n if (matchesAndIsPreferred || matchesAndIsFirst) {\n anchor.classList.add(\"active\");\n versionSwitcherBtns.forEach((btn) => {\n btn.innerText = entry.name;\n btn.dataset[\"activeVersionName\"] = entry.name;\n btn.dataset[\"activeVersion\"] = entry.version;\n });\n foundMatch = true;\n }\n // There may be multiple version-switcher elements, e.g. one\n // in a slide-over panel displayed on smaller screens.\n document.querySelectorAll(\".version-switcher__menu\").forEach((menu) => {\n // we need to clone the node for each menu, but onclick attributes are not\n // preserved by `.cloneNode()` so we add onclick here after cloning.\n let node = anchor.cloneNode(true);\n node.onclick = checkPageExistsAndRedirect;\n // on click, AJAX calls will check if the linked page exists before\n // trying to redirect, and if not, will redirect to the homepage\n // for that version of the docs.\n menu.append(node);\n });\n });\n}\n\n/*******************************************************************************\n * Warning banner when viewing non-stable version of the docs.\n */\n\n/**\n * Show a warning banner when viewing a non-stable version of the docs.\n *\n * adapted 2023-06 from https://mne.tools/versionwarning.js, which was\n * originally adapted 2020-05 from https://scikit-learn.org/versionwarning.js\n *\n * @param {Array} data The version data used to populate the switcher menu.\n */\nfunction showVersionWarningBanner(data) {\n var version = DOCUMENTATION_OPTIONS.VERSION;\n // figure out what latest stable version is\n var preferredEntries = data.filter((entry) => entry.preferred);\n if (preferredEntries.length !== 1) {\n const howMany = preferredEntries.length == 0 ? \"No\" : \"Multiple\";\n console.log(\n `[PST] ${howMany} versions marked \"preferred\" found in versions JSON, ignoring.`,\n );\n return;\n }\n const preferredVersion = preferredEntries[0].version;\n const preferredURL = preferredEntries[0].url;\n // if already on preferred version, nothing to do\n const versionsAreComparable = validate(version) && validate(preferredVersion);\n if (versionsAreComparable && compare(version, preferredVersion, \"=\")) {\n console.log(\n \"[PST]: This is the preferred version of the docs, not showing the warning banner.\",\n );\n return;\n }\n // check if banner has been dismissed recently\n const dismiss_date_str = JSON.parse(\n localStorage.getItem(\"pst_banner_pref\") || \"{}\",\n )[version];\n if (dismiss_date_str != null) {\n const dismiss_date = new Date(dismiss_date_str);\n const now = new Date();\n const milliseconds_in_a_day = 24 * 60 * 60 * 1000;\n const days_passed = (now - dismiss_date) / milliseconds_in_a_day;\n const timeout_in_days = 14;\n if (days_passed < timeout_in_days) {\n console.info(\n `[PST] Suppressing version warning banner; was dismissed ${Math.floor(\n days_passed,\n )} day(s) ago`,\n );\n return;\n }\n }\n\n // now construct the warning banner\n const banner = document.querySelector(\"#bd-header-version-warning\");\n const middle = document.createElement(\"div\");\n const inner = document.createElement(\"div\");\n const bold = document.createElement(\"strong\");\n const button = document.createElement(\"a\");\n const close_btn = document.createElement(\"a\");\n // these classes exist since pydata-sphinx-theme v0.10.0\n // the init class is used for animation\n middle.classList = \"bd-header-announcement__content ms-auto me-auto\";\n inner.classList = \"sidebar-message\";\n button.classList =\n \"btn text-wrap font-weight-bold ms-3 my-1 align-baseline pst-button-link-to-stable-version\";\n button.href = `${preferredURL}${getCurrentUrlPath()}`;\n button.innerText = \"Switch to stable version\";\n button.onclick = checkPageExistsAndRedirect;\n close_btn.classList = \"ms-3 my-1 align-baseline\";\n const close_x = document.createElement(\"i\");\n close_btn.append(close_x);\n close_x.classList = \"fa-solid fa-xmark\";\n close_btn.onclick = DismissBannerAndStorePref;\n // add the version-dependent text\n inner.innerText = \"This is documentation for \";\n const isDev =\n version.includes(\"dev\") ||\n version.includes(\"rc\") ||\n version.includes(\"pre\");\n const newerThanPreferred =\n versionsAreComparable && compare(version, preferredVersion, \">\");\n if (isDev || newerThanPreferred) {\n bold.innerText = \"an unstable development version\";\n } else if (versionsAreComparable && compare(version, preferredVersion, \"<\")) {\n bold.innerText = `an old version (${version})`;\n } else if (!version) {\n bold.innerText = \"an unknown version\"; // e.g., an empty string\n } else {\n bold.innerText = `version ${version}`;\n }\n banner.appendChild(middle);\n banner.append(close_btn);\n middle.appendChild(inner);\n inner.appendChild(bold);\n inner.appendChild(document.createTextNode(\".\"));\n inner.appendChild(button);\n banner.classList.remove(\"d-none\");\n}\n\nasync function fetchAndUseVersions() {\n // fetch the JSON version data (only once), then use it to populate the version\n // switcher and maybe show the version warning bar\n var versionSwitcherBtns = document.querySelectorAll(\n \".version-switcher__button\",\n );\n const hasSwitcherMenu = versionSwitcherBtns.length > 0;\n const hasVersionsJSON = DOCUMENTATION_OPTIONS.hasOwnProperty(\n \"theme_switcher_json_url\",\n );\n const wantsWarningBanner = DOCUMENTATION_OPTIONS.show_version_warning_banner;\n\n if (hasVersionsJSON && (hasSwitcherMenu || wantsWarningBanner)) {\n const data = await fetchVersionSwitcherJSON(\n DOCUMENTATION_OPTIONS.theme_switcher_json_url,\n );\n // TODO: remove the `if(data)` once the `return null` is fixed within fetchVersionSwitcherJSON.\n // We don't really want the switcher and warning bar to silently not work.\n if (data) {\n populateVersionSwitcher(data, versionSwitcherBtns);\n if (wantsWarningBanner) {\n showVersionWarningBanner(data);\n }\n }\n }\n}\n\n/*******************************************************************************\n * Sidebar modals (for mobile / narrow screens)\n */\nfunction setupMobileSidebarKeyboardHandlers() {\n // These are the left and right sidebars for wider screens. We cut and paste\n // the content from these widescreen sidebars into the mobile dialogs, when\n // the user clicks the hamburger icon button\n const primarySidebar = document.getElementById(\"pst-primary-sidebar\");\n const secondarySidebar = document.getElementById(\"pst-secondary-sidebar\");\n\n // These are the corresponding left/right <dialog> elements, which are empty\n // until the user clicks the hamburger icon\n const primaryDialog = document.getElementById(\"pst-primary-sidebar-modal\");\n const secondaryDialog = document.getElementById(\n \"pst-secondary-sidebar-modal\",\n );\n\n // These are the hamburger-style buttons in the header nav bar. They only\n // appear at narrow screen width.\n const primaryToggle = document.querySelector(\".primary-toggle\");\n const secondaryToggle = document.querySelector(\".secondary-toggle\");\n\n // Cut nodes and classes from `from`, paste into/onto `to`\n const cutAndPasteNodesAndClasses = (from, to) => {\n Array.from(from.childNodes).forEach((node) => to.appendChild(node));\n Array.from(from.classList).forEach((cls) => {\n from.classList.remove(cls);\n to.classList.add(cls);\n });\n };\n\n // Hook up the ways to open and close the dialog\n [\n [primaryToggle, primaryDialog, primarySidebar],\n [secondaryToggle, secondaryDialog, secondarySidebar],\n ].forEach(([toggleButton, dialog, sidebar]) => {\n if (!toggleButton || !dialog || !sidebar) {\n return;\n }\n\n // Clicking the button can only open the sidebar, not close it.\n // Clicking the button is also the *only* way to open the sidebar.\n toggleButton.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n // When we open the dialog, we cut and paste the nodes and classes from\n // the widescreen sidebar into the dialog\n cutAndPasteNodesAndClasses(sidebar, dialog);\n\n dialog.showModal();\n });\n\n // Listen for clicks on the backdrop in order to close the dialog\n dialog.addEventListener(\"click\", closeDialogOnBackdropClick);\n\n // We have to manually attach the escape key because there's some code in\n // Sphinx's Sphinx_highlight.js that prevents the default behavior of the\n // escape key\n dialog.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n event.stopPropagation();\n dialog.close();\n }\n });\n\n // When the dialog is closed, move the nodes (and classes) back to their\n // original place\n dialog.addEventListener(\"close\", () => {\n cutAndPasteNodesAndClasses(dialog, sidebar);\n });\n });\n}\n\n/**\n * When the page loads, or the window resizes, or descendant nodes are added or\n * removed from the main element, check all code blocks and Jupyter notebook\n * outputs, and for each one that has scrollable overflow, set tabIndex = 0.\n */\nfunction addTabStopsToScrollableElements() {\n const updateTabStops = () => {\n document\n .querySelectorAll(\n [\n // code blocks\n \"pre\",\n // NBSphinx notebook output\n \".nboutput > .output_area\",\n // Myst-NB\n \".cell_output > .output\",\n // ipywidgets\n \".jp-RenderedHTMLCommon\",\n // [rST table nodes](https://www.docutils.org/docs/ref/doctree.html#table)\n \".pst-scrollable-table-container\",\n ].join(\", \"),\n )\n .forEach((el) => {\n el.tabIndex =\n el.scrollWidth > el.clientWidth || el.scrollHeight > el.clientHeight\n ? 0\n : -1;\n });\n };\n const debouncedUpdateTabStops = debounce(updateTabStops, 300);\n\n // On window resize\n window.addEventListener(\"resize\", debouncedUpdateTabStops);\n\n // The following MutationObserver is for ipywidgets, which take some time to\n // finish loading and rendering on the page (so even after the \"load\" event is\n // fired, they still have not finished rendering). Would be nice to replace\n // the MutationObserver if there is a way to hook into the ipywidgets code to\n // know when it is done.\n const mainObserver = new MutationObserver(debouncedUpdateTabStops);\n\n // On descendant nodes added/removed from main element\n mainObserver.observe(document.getElementById(\"main-content\"), {\n subtree: true,\n childList: true,\n });\n\n // On page load (when this function gets called)\n updateTabStops();\n}\nfunction debounce(callback, wait) {\n let timeoutId = null;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n callback(...args);\n }, wait);\n };\n}\n\n/*******************************************************************************\n * Announcement banner - fetch and load remote HTML\n */\nasync function setupAnnouncementBanner() {\n const banner = document.querySelector(\".bd-header-announcement\");\n const { pstAnnouncementUrl } = banner ? banner.dataset : null;\n\n if (!pstAnnouncementUrl) {\n return;\n }\n\n try {\n const response = await fetch(pstAnnouncementUrl);\n if (!response.ok) {\n throw new Error(\n `[PST]: HTTP response status not ok: ${response.status} ${response.statusText}`,\n );\n }\n const data = await response.text();\n if (data.length === 0) {\n console.log(`[PST]: Empty announcement at: ${pstAnnouncementUrl}`);\n return;\n }\n banner.innerHTML = `<div class=\"bd-header-announcement__content\">${data}</div>`;\n banner.classList.remove(\"d-none\");\n } catch (_error) {\n console.log(`[PST]: Failed to load announcement at: ${pstAnnouncementUrl}`);\n console.error(_error);\n }\n}\n\n/*******************************************************************************\n * Reveal (and animate) the banners (version warning, announcement) together\n */\nasync function fetchRevealBannersTogether() {\n // Wait until finished fetching and loading banners\n await Promise.allSettled([fetchAndUseVersions(), setupAnnouncementBanner()]);\n\n // The revealer element should have CSS rules that set height to 0, overflow\n // to hidden, and an animation transition on the height (unless the user has\n // turned off animations)\n const revealer = document.querySelector(\".pst-async-banner-revealer\");\n if (!revealer) {\n return;\n }\n\n // Remove the d-none (display-none) class to calculate the children heights.\n revealer.classList.remove(\"d-none\");\n\n // Add together the heights of the element's children\n const height = Array.from(revealer.children).reduce(\n (height, el) => height + el.offsetHeight,\n 0,\n );\n\n // Use the calculated height to give the revealer a non-zero height (if\n // animations allowed, the height change will animate)\n revealer.style.setProperty(\"height\", `${height}px`);\n\n // Wait for a bit more than 300ms (the transition duration), then set height\n // to auto so the banner can resize if the window is resized.\n setTimeout(() => {\n revealer.style.setProperty(\"height\", \"auto\");\n }, 320);\n}\n\n/*******************************************************************************\n * Call functions after document loading.\n */\n\n// This one first to kick off the network request for the version warning\n// and announcement banner data as early as possible.\ndocumentReady(fetchRevealBannersTogether);\n\ndocumentReady(addModeListener);\ndocumentReady(scrollToActive);\ndocumentReady(addTOCInteractivity);\ndocumentReady(setupSearchButtons);\ndocumentReady(setupMobileSidebarKeyboardHandlers);\n\n// Determining whether an element has scrollable content depends on stylesheets,\n// so we're checking for the \"load\" event rather than \"DOMContentLoaded\"\nif (document.readyState === \"complete\") {\n addTabStopsToScrollableElements();\n} else {\n window.addEventListener(\"load\", addTabStopsToScrollableElements);\n}\n"],"names":["documentReady","callback","document","readyState","addEventListener","validate","version","test","semver","compare","v1","v2","operator","assertValidOperator","res","n1","validateAndParse","n2","p1","pop","p2","r","compareSegments","split","compareVersions","operatorResMap","includes","TypeError","match","Error","shift","isWildcard","s","tryParse","v","n","parseInt","isNaN","compareStrings","a","b","ap","bp","String","forceType","i","Math","max","length","allowedOperators","Object","keys","op","indexOf","join","prefersDark","window","matchMedia","autoTheme","e","documentElement","dataset","theme","matches","setTheme","mode","console","error","colorScheme","querySelectorAll","forEach","el","classList","add","remove","localStorage","setItem","log","onchange","cycleMode","defaultMode","currentMode","getItem","arr","nextPosition","findSearchInput","forms","querySelector","toggleSearchField","input","searchDialog","getElementById","open","close","showModal","activeElement","blur","focus","select","scrollIntoView","block","useCommandKey","navigator","platform","closeDialogOnBackdropClick","currentTarget","dialog","clientX","clientY","left","right","top","bottom","getBoundingClientRect","getCurrentUrlPath","DOCUMENTATION_OPTIONS","BUILDER","pagename","endsWith","substring","async","DismissBannerAndStorePref","event","VERSION","now","Date","banner_pref","JSON","parse","debug","stringify","checkPageExistsAndRedirect","preventDefault","currentFilePath","tryUrl","getAttribute","otherDocsHomepage","replace","fetch","method","ok","location","href","err","fetchAndUseVersions","versionSwitcherBtns","hasSwitcherMenu","hasVersionsJSON","hasOwnProperty","wantsWarningBanner","show_version_warning_banner","data","url","currentPath","result","URL","protocol","info","cutoff","origin","response","json","fetchVersionSwitcherJSON","theme_switcher_json_url","btn","hasMatchingPreferredEntry","map","entry","theme_switcher_version_match","preferred","name","some","Boolean","foundMatch","anchor","createElement","setAttribute","span","textContent","appendChild","matchesAndIsPreferred","matchesAndIsFirst","innerText","menu","node","cloneNode","onclick","append","populateVersionSwitcher","preferredEntries","filter","howMany","preferredVersion","preferredURL","versionsAreComparable","dismiss_date_str","dismiss_date","days_passed","floor","banner","middle","inner","bold","button","close_btn","close_x","isDev","newerThanPreferred","createTextNode","showVersionWarningBanner","addTabStopsToScrollableElements","updateTabStops","tabIndex","scrollWidth","clientWidth","scrollHeight","clientHeight","debouncedUpdateTabStops","wait","timeoutId","args","clearTimeout","setTimeout","debounce","MutationObserver","observe","subtree","childList","setupAnnouncementBanner","pstAnnouncementUrl","status","statusText","text","innerHTML","_error","Promise","allSettled","revealer","height","Array","from","children","reduce","offsetHeight","style","setProperty","sidebar","storedScrollTop","sessionStorage","active_pages","latest_active","offset","y","innerHeight","buffer","scrollTop","navLink","parentElement","shortcuts","f","changeSearchShortcutKey","shiftKey","altKey","metaKey","ctrlKey","key","primarySidebar","secondarySidebar","primaryDialog","secondaryDialog","primaryToggle","secondaryToggle","cutAndPasteNodesAndClasses","to","childNodes","cls","toggleButton","stopPropagation"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 000000000..2c774d17a --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,632 @@ +/* + * Sphinx JavaScript utilities for the full-text search. + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename, kind] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +// Global search result kind enum, used by themes to style search results. +class SearchResultKind { + static get index() { return "index"; } + static get object() { return "object"; } + static get text() { return "text"; } + static get title() { return "title"; } +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename, kind] = item; + + let listItem = document.createElement("li"); + // Add a class representing the item's type: + // can be used by a theme's CSS selector for styling + // See SearchResultKind for the class names. + listItem.classList.add(`kind-${kind}`); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, anchor) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = Documentation.ngettext( + "Search finished, found one page matching the search query.", + "Search finished, found ${resultCount} pages matching the search query.", + resultCount, + ).replace('${resultCount}', resultCount); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename, kind]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + for (const removalQuery of [".headerlink", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent) return docContent.textContent; + + console.warn( + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.setAttribute("role", "list"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + _parseQuery: (query) => { + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename, kind]. + const normalResults = []; + const nonMainIndexResults = []; + + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase().trim(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + const score = Math.round(Scorer.title * queryLower.length / title.length); + const boost = titles[file] === title ? 1 : 0; // add a boost for document titles + normalResults.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score + boost, + filenames[file], + SearchResultKind.title, + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + SearchResultKind.index, + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } + } + } + } + + // lookup as object + objectTerms.forEach((term) => + normalResults.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + SearchResultKind.object, + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + SearchResultKind.text, + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/sphinx-design.min.css b/_static/sphinx-design.min.css new file mode 100644 index 000000000..860c36da0 --- /dev/null +++ b/_static/sphinx-design.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative;font-size:var(--sd-fontsize-dropdown)}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary.sd-summary-title{padding:.5em .6em .5em 1em;font-size:var(--sd-fontsize-dropdown-title);font-weight:var(--sd-fontweight-dropdown-title);user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;list-style:none;display:inline-flex;justify-content:space-between}details.sd-dropdown summary.sd-summary-title::-webkit-details-marker{display:none}details.sd-dropdown summary.sd-summary-title:focus{outline:none}details.sd-dropdown summary.sd-summary-title .sd-summary-icon{margin-right:.6em;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary.sd-summary-title .sd-summary-text{flex-grow:1;line-height:1.5;padding-right:.5rem}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker{pointer-events:none;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker svg{opacity:.6}details.sd-dropdown summary.sd-summary-title:hover .sd-summary-state-marker svg{opacity:1;transform:scale(1.1)}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown .sd-summary-chevron-right{transition:.25s}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-right{transform:rotate(90deg)}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-down{transform:rotate(180deg)}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-bg: rgba(0, 113, 188, 0.2);--sd-color-secondary-bg: rgba(108, 117, 125, 0.2);--sd-color-success-bg: rgba(40, 167, 69, 0.2);--sd-color-info-bg: rgba(23, 162, 184, 0.2);--sd-color-warning-bg: rgba(240, 179, 126, 0.2);--sd-color-danger-bg: rgba(220, 53, 69, 0.2);--sd-color-light-bg: rgba(248, 249, 250, 0.2);--sd-color-muted-bg: rgba(108, 117, 125, 0.2);--sd-color-dark-bg: rgba(33, 37, 41, 0.2);--sd-color-black-bg: rgba(0, 0, 0, 0.2);--sd-color-white-bg: rgba(255, 255, 255, 0.2);--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem;--sd-fontsize-dropdown: inherit;--sd-fontsize-dropdown-title: 1rem;--sd-fontweight-dropdown-title: 700} diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 000000000..8a96c69a1 --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '<p class="highlight-link">' + + '<a href="javascript:SphinxHighlight.hideSearchWords()">' + + _("Hide Search Matches") + + "</a></p>" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/_static/styles/pydata-sphinx-theme.css b/_static/styles/pydata-sphinx-theme.css new file mode 100644 index 000000000..d26dd09d8 --- /dev/null +++ b/_static/styles/pydata-sphinx-theme.css @@ -0,0 +1,32 @@ +@charset "UTF-8"; +/*! + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg,hsla(0,0%,100%,.15),hsla(0,0%,100%,0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33,37,41,.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33,37,41,.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0,0,0,.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0,0,0,.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0,0,0,.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0,0,0,.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0,0,0,.075);--bs-focus-ring-width:0.1875rem;--bs-focus-ring-opacity:1;--bs-focus-ring-color:var(--pst-color-accent);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222,226,230,.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222,226,230,.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:hsla(0,0%,100%,.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f;color-scheme:dark}*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:var(--bs-body-bg);color:var(--bs-body-color);font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);margin:0;text-align:var(--bs-body-text-align)}hr{border-top:var(--bs-border-width) solid;color:inherit;margin:1rem 0;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:var(--bs-heading-color);font-weight:500;line-height:1.2;margin-bottom:.5rem;margin-top:0}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-bottom:1rem;margin-top:0}abbr[title]{cursor:help;text-decoration:underline dotted;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit;margin-bottom:1rem}ol,ul{padding-left:2rem}dl,ol,ul{margin-bottom:1rem;margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{background-color:var(--bs-highlight-bg);color:var(--bs-highlight-color);padding:.1875em}sub,sup{font-size:.75em;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1))}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;font-size:.875em;margin-bottom:1rem;margin-top:0;overflow:auto}pre code{color:inherit;font-size:inherit;word-break:normal}code{word-wrap:break-word;color:var(--bs-code-color);font-size:.875em}a>code{color:inherit}kbd{background-color:var(--bs-body-color);border-radius:.25rem;color:var(--bs-body-bg);font-size:.875em;padding:.1875rem .375rem}kbd kbd{font-size:1em;padding:0}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{border-collapse:collapse;caption-side:bottom}caption{color:var(--bs-secondary-color);padding-bottom:.5rem;padding-top:.5rem;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border:0 solid;border-color:inherit}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{border-style:none;padding:0}textarea{resize:vertical}fieldset{border:0;margin:0;min-width:0;padding:0}legend{float:left;font-size:calc(1.275rem + .3vw);line-height:inherit;margin-bottom:.5rem;padding:0;width:100%}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{-webkit-appearance:button;font:inherit}output{display:inline-block}iframe{border:0}summary{cursor:pointer;display:list-item}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-inline,.list-unstyled{list-style:none;padding-left:0}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{font-size:1.25rem;margin-bottom:1rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{color:#6c757d;font-size:.875em;margin-bottom:1rem;margin-top:-1rem}.blockquote-footer:before{content:"— "}.img-fluid,.img-thumbnail{height:auto;max-width:100%}.img-thumbnail{background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);padding:.25rem}.figure{display:inline-block}.figure-img{line-height:1;margin-bottom:.5rem}.figure-caption{color:var(--bs-secondary-color);font-size:.875em}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;margin-left:auto;margin-right:auto;padding-left:calc(var(--bs-gutter-x)*.5);padding-right:calc(var(--bs-gutter-x)*.5);width:100%}@media (min-width:540px){.container,.container-sm{max-width:540px}}@media (min-width:720px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:960px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1400px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:540px;--bs-breakpoint-md:720px;--bs-breakpoint-lg:960px;--bs-breakpoint-xl:1200px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-left:calc(var(--bs-gutter-x)*-.5);margin-right:calc(var(--bs-gutter-x)*-.5);margin-top:calc(var(--bs-gutter-y)*-1)}.row>*{flex-shrink:0;margin-top:var(--bs-gutter-y);max-width:100%;padding-left:calc(var(--bs-gutter-x)*.5);padding-right:calc(var(--bs-gutter-x)*.5);width:100%}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:540px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:720px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:960px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb),0.05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb),0.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb),0.075);border-color:var(--bs-table-border-color);margin-bottom:1rem;vertical-align:top;width:100%}.table>:not(caption)>*>*{background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)));color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));padding:.5rem}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width)*2) solid}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped-columns>:not(caption)>tr>:nth-child(2n),.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000}.table-primary,.table-secondary{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000}.table-info,.table-success{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000}.table-danger,.table-warning{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000}.table-dark,.table-light{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff}.table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}@media (max-width:539.98px){.table-responsive-sm{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:719.98px){.table-responsive-md{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:959.98px){.table-responsive-lg{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:1199.98px){.table-responsive-xl{-webkit-overflow-scrolling:touch;overflow-x:auto}}.form-label{margin-bottom:.5rem}.col-form-label{font-size:inherit;line-height:1.5;margin-bottom:0;padding-bottom:calc(.375rem + var(--bs-border-width));padding-top:calc(.375rem + var(--bs-border-width))}.col-form-label-lg{font-size:1.25rem;padding-bottom:calc(.5rem + var(--bs-border-width));padding-top:calc(.5rem + var(--bs-border-width))}.col-form-label-sm{font-size:.875rem;padding-bottom:calc(.25rem + var(--bs-border-width));padding-top:calc(.25rem + var(--bs-border-width))}.form-text{color:var(--bs-secondary-color);font-size:.875em;margin-top:.25rem}.form-control{appearance:none;background-clip:padding-box;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);color:var(--bs-body-color);display:block;font-size:1rem;font-weight:400;line-height:1.5;padding:.375rem .75rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:100%}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{background-color:var(--bs-body-bg);border-color:#86b7fe;box-shadow:0 0 0 .1875rem var(--pst-color-accent);color:var(--bs-body-color);outline:0}.form-control::-webkit-date-and-time-value{height:1.5em;margin:0;min-width:85px}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::file-selector-button{background-color:var(--bs-tertiary-bg);border:0 solid;border-color:inherit;border-inline-end-width:var(--bs-border-width);border-radius:0;color:var(--bs-body-color);margin:-.375rem -.75rem;margin-inline-end:.75rem;padding:.375rem .75rem;pointer-events:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0;color:var(--bs-body-color);display:block;line-height:1.5;margin-bottom:0;padding:.375rem 0;width:100%}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-left:0;padding-right:0}.form-control-sm{border-radius:var(--bs-border-radius-sm);font-size:.875rem;min-height:calc(1.5em + .5rem + var(--bs-border-width)*2);padding:.25rem .5rem}.form-control-sm::file-selector-button{margin:-.25rem -.5rem;margin-inline-end:.5rem;padding:.25rem .5rem}.form-control-lg{border-radius:var(--bs-border-radius-lg);font-size:1.25rem;min-height:calc(1.5em + 1rem + var(--bs-border-width)*2);padding:.5rem 1rem}.form-control-lg::file-selector-button{margin:-.5rem -1rem;margin-inline-end:1rem;padding:.5rem 1rem}textarea.form-control{min-height:calc(1.5em + .75rem + var(--bs-border-width)*2)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + var(--bs-border-width)*2)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + var(--bs-border-width)*2)}.form-control-color{height:calc(1.5em + .75rem + var(--bs-border-width)*2);padding:.375rem;width:3rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + var(--bs-border-width)*2)}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + var(--bs-border-width)*2)}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3E%3C/svg%3E");appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-position:right .75rem center;background-repeat:no-repeat;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);color:var(--bs-body-color);display:block;font-size:1rem;font-weight:400;line-height:1.5;padding:.375rem 2.25rem .375rem .75rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:100%}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;box-shadow:0 0 0 .1875rem var(--pst-color-accent);outline:0}.form-select[multiple],.form-select[size]:not([size="1"]){background-image:none;padding-right:.75rem}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{border-radius:var(--bs-border-radius-sm);font-size:.875rem;padding-bottom:.25rem;padding-left:.5rem;padding-top:.25rem}.form-select-lg{border-radius:var(--bs-border-radius-lg);font-size:1.25rem;padding-bottom:.5rem;padding-left:1rem;padding-top:.5rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3E%3C/svg%3E")}.form-check{display:block;margin-bottom:.125rem;min-height:1.5rem;padding-left:1.5em}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-left:0;padding-right:1.5em;text-align:right}.form-check-reverse .form-check-input{float:right;margin-left:0;margin-right:-1.5em}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-position:50%;background-repeat:no-repeat;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);flex-shrink:0;height:1em;margin-top:.25em;print-color-adjust:exact;vertical-align:top;width:1em}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;box-shadow:0 0 0 .1875rem var(--pst-color-accent);outline:0}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='2' fill='%23fff'/%3E%3C/svg%3E")}.form-check-input[type=checkbox]:indeterminate{--bs-form-check-bg-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3E%3C/svg%3E");background-color:#0d6efd;border-color:#0d6efd}.form-check-input:disabled{filter:none;opacity:.5;pointer-events:none}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(0, 0, 0, 0.25)'/%3E%3C/svg%3E");background-image:var(--bs-form-switch-bg);background-position:0;border-radius:2em;margin-left:-2.5em;transition:background-position .15s ease-in-out;width:2em}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%2386b7fe'/%3E%3C/svg%3E")}.form-switch .form-check-input:checked{--bs-form-switch-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E");background-position:100%}.form-switch.form-check-reverse{padding-left:0;padding-right:2.5em}.form-switch.form-check-reverse .form-check-input{margin-left:0;margin-right:-2.5em}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{clip:rect(0,0,0,0);pointer-events:none;position:absolute}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{filter:none;opacity:.65;pointer-events:none}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(255, 255, 255, 0.25)'/%3E%3C/svg%3E")}.form-range{appearance:none;background-color:transparent;height:1.375rem;padding:0;width:100%}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .1875rem var(--pst-color-accent)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .1875rem var(--pst-color-accent)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;height:1rem;margin-top:-.25rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1rem}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem;color:transparent;cursor:pointer;height:.5rem;width:100%}.form-range::-moz-range-thumb{appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;height:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1rem}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem;color:transparent;cursor:pointer;height:.5rem;width:100%}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + var(--bs-border-width)*2);line-height:1.25;min-height:calc(3.5rem + var(--bs-border-width)*2)}.form-floating>label{border:var(--bs-border-width) solid transparent;height:100%;left:0;overflow:hidden;padding:1rem .75rem;pointer-events:none;position:absolute;text-align:start;text-overflow:ellipsis;top:0;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out;white-space:nowrap;z-index:2}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-bottom:.625rem;padding-top:1.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-bottom:.625rem;padding-top:1.625rem}.form-floating>.form-select{padding-bottom:.625rem;padding-top:1.625rem}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label:after,.form-floating>.form-control:focus~label:after,.form-floating>.form-control:not(:placeholder-shown)~label:after,.form-floating>.form-select~label:after{background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius);content:"";height:1.5em;inset:1rem .375rem;position:absolute;z-index:-1}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.form-floating>.form-control:disabled~label:after,.form-floating>:disabled~label:after{background-color:var(--bs-secondary-bg)}.input-group{align-items:stretch;display:flex;flex-wrap:wrap;position:relative;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{flex:1 1 auto;min-width:0;position:relative;width:1%}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{align-items:center;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);color:var(--bs-body-color);display:flex;font-size:1rem;font-weight:400;line-height:1.5;padding:.375rem .75rem;text-align:center;white-space:nowrap}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{border-radius:var(--bs-border-radius-lg);font-size:1.25rem;padding:.5rem 1rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{border-radius:var(--bs-border-radius-sm);font-size:.875rem;padding:.25rem .5rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-bottom-right-radius:0;border-top-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:calc(var(--bs-border-width)*-1)}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-bottom-left-radius:0;border-top-left-radius:0}.valid-feedback{color:var(--bs-form-valid-color);display:none;font-size:.875em;margin-top:.25rem;width:100%}.valid-tooltip{background-color:var(--bs-success);border-radius:var(--bs-border-radius);color:#fff;display:none;font-size:.875rem;margin-top:.1rem;max-width:100%;padding:.25rem .5rem;position:absolute;top:100%;z-index:5}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-position:right calc(.375em + .1875rem) center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem);border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .1875rem rgba(var(--bs-success-rgb),1)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem);padding-right:calc(1.5em + .75rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem);padding-right:4.125rem}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .1875rem rgba(var(--bs-success-rgb),1)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3.75rem + 1.5em)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .1875rem rgba(var(--bs-success-rgb),1)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{color:var(--bs-form-invalid-color);display:none;font-size:.875em;margin-top:.25rem;width:100%}.invalid-tooltip{background-color:var(--bs-danger);border-radius:var(--bs-border-radius);color:#fff;display:none;font-size:.875rem;margin-top:.1rem;max-width:100%;padding:.25rem .5rem;position:absolute;top:100%;z-index:5}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E");background-position:right calc(.375em + .1875rem) center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem);border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .1875rem rgba(var(--bs-danger-rgb),1)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem);padding-right:calc(1.5em + .75rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem);padding-right:4.125rem}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .1875rem rgba(var(--bs-danger-rgb),1)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3.75rem + 1.5em)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .1875rem rgba(var(--bs-danger-rgb),1)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.1875rem rgba(var(--bs-btn-focus-shadow-rgb),.5);background-color:var(--bs-btn-bg);border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);color:var(--bs-btn-color);cursor:pointer;display:inline-block;font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;user-select:none;vertical-align:middle}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);color:var(--bs-btn-hover-color)}.btn-check+.btn:hover{background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);color:var(--bs-btn-color)}.btn:focus-visible{background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-focus-box-shadow);color:var(--bs-btn-hover-color);outline:0}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-focus-box-shadow);outline:0}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color);color:var(--bs-btn-active-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);color:var(--bs-btn-disabled-color);opacity:var(--bs-btn-disabled-opacity);pointer-events:none}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{height:auto;transition:width .35s ease;width:0}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{border-bottom:0;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:.3em solid;content:"";display:inline-block;margin-left:.255em;vertical-align:.255em}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--pst-color-surface);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:var(--pst-color-surface);--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;background-clip:padding-box;background-color:var(--bs-dropdown-bg);border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius);color:var(--bs-dropdown-color);display:none;font-size:var(--bs-dropdown-font-size);list-style:none;margin:0;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);position:absolute;text-align:left;z-index:var(--bs-dropdown-zindex)}.dropdown-menu[data-bs-popper]{left:0;margin-top:var(--bs-dropdown-spacer);top:100%}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{left:auto;right:0}@media (min-width:540px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{left:auto;right:0}}@media (min-width:720px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{left:auto;right:0}}@media (min-width:960px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{left:auto;right:0}}.dropup .dropdown-menu[data-bs-popper]{bottom:100%;margin-bottom:var(--bs-dropdown-spacer);margin-top:0;top:auto}.dropup .dropdown-toggle:after{border-bottom:.3em solid;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:0;content:"";display:inline-block;margin-left:.255em;vertical-align:.255em}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{left:100%;margin-left:var(--bs-dropdown-spacer);margin-top:0;right:auto;top:0}.dropend .dropdown-toggle:after{border-bottom:.3em solid transparent;border-left:.3em solid;border-right:0;border-top:.3em solid transparent;content:"";display:inline-block;margin-left:.255em;vertical-align:.255em}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{left:auto;margin-right:var(--bs-dropdown-spacer);margin-top:0;right:100%;top:0}.dropstart .dropdown-toggle:after{content:"";display:inline-block;display:none;margin-left:.255em;vertical-align:.255em}.dropstart .dropdown-toggle:before{border-bottom:.3em solid transparent;border-right:.3em solid;border-top:.3em solid transparent;content:"";display:inline-block;margin-right:.255em;vertical-align:.255em}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{border-top:1px solid var(--bs-dropdown-divider-bg);height:0;margin:var(--bs-dropdown-divider-margin-y) 0;opacity:1;overflow:hidden}.dropdown-item{background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0);clear:both;color:var(--bs-dropdown-link-color);display:block;font-weight:400;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);text-align:inherit;text-decoration:none;white-space:nowrap;width:100%}.dropdown-item:focus,.dropdown-item:hover{background-color:var(--bs-dropdown-link-hover-bg);color:var(--bs-dropdown-link-hover-color)}.dropdown-item.active,.dropdown-item:active{background-color:var(--bs-dropdown-link-active-bg);color:var(--bs-dropdown-link-active-color);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{background-color:transparent;color:var(--bs-dropdown-link-disabled-color);pointer-events:none}.dropdown-menu.show{display:block}.dropdown-header{color:var(--bs-dropdown-header-color);display:block;font-size:.875rem;margin-bottom:0;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);white-space:nowrap}.dropdown-item-text{color:var(--bs-dropdown-link-color);display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:var(--pst-color-surface);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:var(--pst-color-surface);--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{display:inline-flex;position:relative;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{flex:1 1 auto;position:relative}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width)*-1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-bottom-left-radius:0;border-top-left-radius:0}.dropdown-toggle-split{padding-left:.5625rem;padding-right:.5625rem}.dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-left:.375rem;padding-right:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-left:.75rem;padding-right:.75rem}.btn-group-vertical{align-items:flex-start;flex-direction:column;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width)*-1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-left-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;list-style:none;margin-bottom:0;padding-left:0}.nav-link{background:none;border:0;color:var(--bs-nav-link-color);display:block;font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{box-shadow:0 0 0 .1875rem var(--pst-color-accent);outline:0}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);cursor:default;pointer-events:none}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius);margin-bottom:calc(var(--bs-nav-tabs-border-width)*-1)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:var(--bs-nav-tabs-link-hover-border-color);isolation:isolate}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color);color:var(--bs-nav-tabs-link-active-color)}.nav-tabs .dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;margin-top:calc(var(--bs-nav-tabs-border-width)*-1)}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{background-color:var(--bs-nav-pills-link-active-bg);color:var(--bs-nav-pills-link-active-color)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:0.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{border-bottom:var(--bs-nav-underline-border-width) solid transparent;padding-left:0;padding-right:0}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{border-bottom-color:currentcolor;color:var(--bs-nav-underline-link-active-color);font-weight:700}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb),0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb),0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb),0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(33, 37, 41, 0.75)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb),0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.1875rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);position:relative}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl{align-items:center;display:flex;flex-wrap:inherit;justify-content:space-between}.navbar-brand{color:var(--bs-navbar-brand-color);font-size:var(--bs-navbar-brand-font-size);margin-right:var(--bs-navbar-brand-margin-end);padding-bottom:var(--bs-navbar-brand-padding-y);padding-top:var(--bs-navbar-brand-padding-y);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;list-style:none;margin-bottom:0;padding-left:0}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{color:var(--bs-navbar-color);padding-bottom:.5rem;padding-top:.5rem}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{align-items:center;flex-basis:100%;flex-grow:1}.navbar-toggler{background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);color:var(--bs-navbar-color);font-size:var(--bs-navbar-toggler-font-size);line-height:1;padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width);outline:0;text-decoration:none}.navbar-toggler-icon{background-image:var(--bs-navbar-toggler-icon-bg);background-position:50%;background-repeat:no-repeat;background-size:100%;display:inline-block;height:1.5em;vertical-align:middle;width:1.5em}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:540px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:720px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:960px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:hsla(0,0%,100%,.55);--bs-navbar-hover-color:hsla(0,0%,100%,.75);--bs-navbar-disabled-color:hsla(0,0%,100%,.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:hsla(0,0%,100%,.1)}.navbar-dark,.navbar[data-bs-theme=dark],[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(255, 255, 255, 0.55)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb),0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;word-wrap:break-word;background-clip:border-box;background-color:var(--bs-card-bg);border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius);color:var(--bs-body-color);display:flex;flex-direction:column;height:var(--bs-card-height);min-width:0;position:relative}.card>hr{margin-left:0;margin-right:0}.card>.list-group{border-bottom:inherit;border-top:inherit}.card>.list-group:first-child{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius);border-top-width:0}.card>.list-group:last-child{border-bottom-left-radius:var(--bs-card-inner-border-radius);border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{color:var(--bs-card-color);flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x)}.card-title{color:var(--bs-card-title-color);margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{color:var(--bs-card-subtitle-color);margin-top:calc(var(--bs-card-title-spacer-y)*-.5)}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color);color:var(--bs-card-cap-color);margin-bottom:0;padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color);color:var(--bs-card-cap-color);padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{border-bottom:0;margin-bottom:calc(var(--bs-card-cap-padding-y)*-1);margin-left:calc(var(--bs-card-cap-padding-x)*-.5);margin-right:calc(var(--bs-card-cap-padding-x)*-.5)}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-left:calc(var(--bs-card-cap-padding-x)*-.5);margin-right:calc(var(--bs-card-cap-padding-x)*-.5)}.card-img-overlay{border-radius:var(--bs-card-inner-border-radius);bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);position:absolute;right:0;top:0}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-left-radius:var(--bs-card-inner-border-radius);border-bottom-right-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:540px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{border-left:0;margin-left:0}.card-group>.card:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m2 5 6 6 6-6'/%3E%3C/svg%3E");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m2 5 6 6 6-6'/%3E%3C/svg%3E");--bs-accordion-btn-focus-box-shadow:0 0 0 0.1875rem var(--pst-color-accent);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{align-items:center;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;color:var(--bs-accordion-btn-color);display:flex;font-size:1rem;overflow-anchor:none;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);position:relative;text-align:left;transition:var(--bs-accordion-transition);width:100%}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(var(--bs-accordion-border-width)*-1) 0 var(--bs-accordion-border-color);color:var(--bs-accordion-active-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);content:"";flex-shrink:0;height:var(--bs-accordion-btn-icon-width);margin-left:auto;transition:var(--bs-accordion-btn-icon-transition);width:var(--bs-accordion-btn-icon-width)}@media (prefers-reduced-motion:reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{box-shadow:var(--bs-accordion-btn-focus-box-shadow);outline:0;z-index:3}.accordion-header{margin-bottom:0}.accordion-item{background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);color:var(--bs-accordion-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-left-radius:var(--bs-accordion-border-radius);border-bottom-right-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-left-radius:var(--bs-accordion-inner-border-radius);border-bottom-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-left-radius:var(--bs-accordion-border-radius);border-bottom-right-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush>.accordion-item{border-left:0;border-radius:0;border-right:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-collapse,.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");--bs-accordion-btn-active-icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius);display:flex;flex-wrap:wrap;font-size:var(--bs-breadcrumb-font-size);list-style:none;margin-bottom:var(--bs-breadcrumb-margin-bottom);padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider,"/");float:left;padding-right:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.1875rem var(--pst-color-accent);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;list-style:none;padding-left:0}.page-link{background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);color:var(--bs-pagination-color);display:block;font-size:var(--bs-pagination-font-size);padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);position:relative;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color);color:var(--bs-pagination-hover-color);z-index:2}.page-link:focus{background-color:var(--bs-pagination-focus-bg);box-shadow:var(--bs-pagination-focus-box-shadow);color:var(--bs-pagination-focus-color);outline:0;z-index:3}.active>.page-link,.page-link.active{background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color);color:var(--bs-pagination-active-color);z-index:3}.disabled>.page-link,.page-link.disabled{background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color);color:var(--bs-pagination-disabled-color);pointer-events:none}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width)*-1)}.page-item:first-child .page-link{border-bottom-left-radius:var(--bs-pagination-border-radius);border-top-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-bottom-right-radius:var(--bs-pagination-border-radius);border-top-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);border-radius:var(--bs-badge-border-radius);color:var(--bs-badge-color);display:inline-block;font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);text-align:center;vertical-align:baseline;white-space:nowrap}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius);color:var(--bs-alert-color);margin-bottom:var(--bs-alert-margin-bottom);padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);position:relative}.alert-heading{color:inherit}.alert-link{color:var(--bs-alert-link-color);font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{padding:1.25rem 1rem;position:absolute;right:0;top:0;z-index:2}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius);display:flex;font-size:var(--bs-progress-font-size);height:var(--bs-progress-height);overflow:hidden}.progress-bar{background-color:var(--bs-progress-bar-bg);color:var(--bs-progress-bar-color);display:flex;flex-direction:column;justify-content:center;overflow:hidden;text-align:center;transition:var(--bs-progress-bar-transition);white-space:nowrap}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;border-radius:var(--bs-list-group-border-radius);display:flex;flex-direction:column;margin-bottom:0;padding-left:0}.list-group-numbered{counter-reset:section;list-style-type:none}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{color:var(--bs-list-group-action-color);text-align:inherit;width:100%}.list-group-item-action:focus,.list-group-item-action:hover{background-color:var(--bs-list-group-action-hover-bg);color:var(--bs-list-group-action-hover-color);text-decoration:none;z-index:1}.list-group-item-action:active{background-color:var(--bs-list-group-action-active-bg);color:var(--bs-list-group-action-active-color)}.list-group-item{background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);color:var(--bs-list-group-color);display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);position:relative;text-decoration:none}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{background-color:var(--bs-list-group-disabled-bg);color:var(--bs-list-group-disabled-color);pointer-events:none}.list-group-item.active{background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color);color:var(--bs-list-group-active-color);z-index:2}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{border-top-width:var(--bs-list-group-border-width);margin-top:calc(var(--bs-list-group-border-width)*-1)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}@media (min-width:540px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}}@media (min-width:720px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal-md>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}}@media (min-width:960px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3E%3C/svg%3E");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.1875rem var(--pst-color-accent);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;box-sizing:content-box;height:1em;opacity:var(--bs-btn-close-opacity);padding:.25em;width:1em}.btn-close,.btn-close:hover{color:var(--bs-btn-close-color)}.btn-close:hover{opacity:var(--bs-btn-close-hover-opacity);text-decoration:none}.btn-close:focus{box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity);outline:0}.btn-close.disabled,.btn-close:disabled{opacity:var(--bs-btn-close-disabled-opacity);pointer-events:none;user-select:none}.btn-close-white,[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb),0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb),0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);background-clip:padding-box;background-color:var(--bs-toast-bg);border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);border-radius:var(--bs-toast-border-radius);box-shadow:var(--bs-toast-box-shadow);color:var(--bs-toast-color);font-size:var(--bs-toast-font-size);max-width:100%;pointer-events:auto;width:var(--bs-toast-max-width)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;max-width:100%;pointer-events:none;position:absolute;width:max-content;z-index:var(--bs-toast-zindex)}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{align-items:center;background-clip:padding-box;background-color:var(--bs-toast-header-bg);border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));color:var(--bs-toast-header-color);display:flex;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x)}.toast-header .btn-close{margin-left:var(--bs-toast-padding-x);margin-right:calc(var(--bs-toast-padding-x)*-.5)}.toast-body{word-wrap:break-word;padding:var(--bs-toast-padding-x)}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);display:none;height:100%;left:0;outline:0;overflow-x:hidden;overflow-y:auto;position:fixed;top:0;width:100%;z-index:var(--bs-modal-zindex)}.modal-dialog{margin:var(--bs-modal-margin);pointer-events:none;position:relative;width:auto}.modal.fade .modal-dialog{transform:translateY(-50px);transition:transform .3s ease-out}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{align-items:center;display:flex;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{background-clip:padding-box;background-color:var(--bs-modal-bg);border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);color:var(--bs-modal-color);display:flex;flex-direction:column;outline:0;pointer-events:auto;position:relative;width:100%}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;background-color:var(--bs-backdrop-bg);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:var(--bs-backdrop-zindex)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{align-items:center;border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius);display:flex;flex-shrink:0;padding:var(--bs-modal-header-padding)}.modal-header .btn-close{margin:calc(var(--bs-modal-header-padding-y)*-.5) calc(var(--bs-modal-header-padding-x)*-.5) calc(var(--bs-modal-header-padding-y)*-.5) auto;padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5)}.modal-title{line-height:var(--bs-modal-title-line-height);margin-bottom:0}.modal-body{flex:1 1 auto;padding:var(--bs-modal-padding);position:relative}.modal-footer{align-items:center;background-color:var(--bs-modal-footer-bg);border-bottom-left-radius:var(--bs-modal-inner-border-radius);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media (min-width:540px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow)}.modal-dialog{margin-left:auto;margin-right:auto;max-width:var(--bs-modal-width)}.modal-sm{--bs-modal-width:300px}}@media (min-width:960px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:539.98px){.modal-fullscreen-sm-down{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen-sm-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:719.98px){.modal-fullscreen-md-down{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen-md-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:959.98px){.modal-fullscreen-lg-down{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen-lg-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen-xl-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;word-wrap:break-word;display:block;font-family:var(--bs-font-sans-serif);font-size:var(--bs-tooltip-font-size);font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;margin:var(--bs-tooltip-margin);opacity:0;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;z-index:var(--bs-tooltip-zindex)}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;height:var(--bs-tooltip-arrow-height);width:var(--bs-tooltip-arrow-width)}.tooltip .tooltip-arrow:before{border-color:transparent;border-style:solid;content:"";position:absolute}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(var(--bs-tooltip-arrow-height)*-1)}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,.bs-tooltip-top .tooltip-arrow:before{border-top-color:var(--bs-tooltip-bg);border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;top:-1px}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{height:var(--bs-tooltip-arrow-width);left:calc(var(--bs-tooltip-arrow-height)*-1);width:var(--bs-tooltip-arrow-height)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,.bs-tooltip-end .tooltip-arrow:before{border-right-color:var(--bs-tooltip-bg);border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;right:-1px}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(var(--bs-tooltip-arrow-height)*-1)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,.bs-tooltip-bottom .tooltip-arrow:before{border-bottom-color:var(--bs-tooltip-bg);border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);bottom:-1px}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{height:var(--bs-tooltip-arrow-width);right:calc(var(--bs-tooltip-arrow-height)*-1);width:var(--bs-tooltip-arrow-height)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,.bs-tooltip-start .tooltip-arrow:before{border-left-color:var(--bs-tooltip-bg);border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);left:-1px}.tooltip-inner{background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius);color:var(--bs-tooltip-color);max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);text-align:center}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);word-wrap:break-word;background-clip:padding-box;background-color:var(--bs-popover-bg);border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius);display:block;font-family:var(--bs-font-sans-serif);font-size:var(--bs-popover-font-size);font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;max-width:var(--bs-popover-max-width);text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;z-index:var(--bs-popover-zindex)}.popover .popover-arrow{display:block;height:var(--bs-popover-arrow-height);width:var(--bs-popover-arrow-width)}.popover .popover-arrow:after,.popover .popover-arrow:before{border:0 solid transparent;content:"";display:block;position:absolute}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc((var(--bs-popover-arrow-height))*-1 - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-top>.popover-arrow:before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:before{border-top-color:var(--bs-popover-arrow-border);bottom:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-top>.popover-arrow:after{border-top-color:var(--bs-popover-bg);bottom:var(--bs-popover-border-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{height:var(--bs-popover-arrow-width);left:calc((var(--bs-popover-arrow-height))*-1 - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-end>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:before{border-right-color:var(--bs-popover-arrow-border);left:0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-end>.popover-arrow:after{border-right-color:var(--bs-popover-bg);left:var(--bs-popover-border-width)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc((var(--bs-popover-arrow-height))*-1 - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:before{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:before{border-bottom-color:var(--bs-popover-arrow-border);top:0}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:after{border-bottom-color:var(--bs-popover-bg);top:var(--bs-popover-border-width)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg);content:"";display:block;left:50%;margin-left:calc(var(--bs-popover-arrow-width)*-.5);position:absolute;top:0;width:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{height:var(--bs-popover-arrow-width);right:calc((var(--bs-popover-arrow-height))*-1 - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-start>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:before{border-left-color:var(--bs-popover-arrow-border);right:0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-start>.popover-arrow:after{border-left-color:var(--bs-popover-bg);right:var(--bs-popover-border-width)}.popover-header{background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius);color:var(--bs-popover-header-color);font-size:var(--bs-popover-header-font-size);margin-bottom:0;padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x)}.popover-header:empty{display:none}.popover-body{color:var(--bs-popover-body-color);padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{overflow:hidden;position:relative;width:100%}.carousel-inner:after{clear:both;content:"";display:block}.carousel-item{backface-visibility:hidden;display:none;float:left;margin-right:-100%;position:relative;transition:transform .6s ease-in-out;width:100%}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transform:none;transition-property:opacity}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{opacity:1;z-index:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{opacity:0;transition:opacity 0s .6s;z-index:0}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{align-items:center;background:none;border:0;bottom:0;color:#fff;display:flex;justify-content:center;opacity:.5;padding:0;position:absolute;text-align:center;top:0;transition:opacity .15s ease;width:15%;z-index:1}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;opacity:.9;outline:0;text-decoration:none}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{background-position:50%;background-repeat:no-repeat;background-size:100% 100%;display:inline-block;height:2rem;width:2rem}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3E%3Cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3E%3Cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E")}.carousel-indicators{bottom:0;display:flex;justify-content:center;left:0;margin-bottom:1rem;margin-left:15%;margin-right:15%;padding:0;position:absolute;right:0;z-index:2}.carousel-indicators [data-bs-target]{background-clip:padding-box;background-color:#fff;border:0;border-bottom:10px solid transparent;border-top:10px solid transparent;box-sizing:content-box;cursor:pointer;flex:0 1 auto;height:3px;margin-left:3px;margin-right:3px;opacity:.5;padding:0;text-indent:-999px;transition:opacity .6s ease;width:30px}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{bottom:1.25rem;color:#fff;left:15%;padding-bottom:1.25rem;padding-top:1.25rem;position:absolute;right:15%;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);border-radius:50%;display:inline-block;height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);width:var(--bs-spinner-width)}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border-right-color:currentcolor;border:var(--bs-spinner-border-width) solid;border-right:var(--bs-spinner-border-width) solid transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform 0.3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:539.98px){.offcanvas-sm{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:var(--bs-offcanvas-transition);visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:539.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:539.98px){.offcanvas-sm.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-sm.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-sm.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom,.offcanvas-sm.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-sm.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:540px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:719.98px){.offcanvas-md{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:var(--bs-offcanvas-transition);visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:719.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:719.98px){.offcanvas-md.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-md.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-md.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom,.offcanvas-md.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-md.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:720px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:959.98px){.offcanvas-lg{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:var(--bs-offcanvas-transition);visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:959.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:959.98px){.offcanvas-lg.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-lg.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-lg.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom,.offcanvas-lg.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-lg.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:960px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:1199.98px){.offcanvas-xl{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:var(--bs-offcanvas-transition);visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-xl.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-xl.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom,.offcanvas-xl.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-xl.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}.offcanvas{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:var(--bs-offcanvas-transition);visibility:hidden;z-index:var(--bs-offcanvas-zindex)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas.offcanvas-bottom,.offcanvas.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{background-color:#000;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:1040}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{align-items:center;display:flex;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{margin:calc(var(--bs-offcanvas-padding-y)*-.5) calc(var(--bs-offcanvas-padding-x)*-.5) calc(var(--bs-offcanvas-padding-y)*-.5) auto;padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5)}.offcanvas-title{line-height:var(--bs-offcanvas-title-line-height);margin-bottom:0}.offcanvas-body{flex-grow:1;overflow-y:auto;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.placeholder{background-color:currentcolor;cursor:wait;display:inline-block;min-height:1em;opacity:.5;vertical-align:middle}.placeholder.btn:before{content:"";display:inline-block}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{animation:placeholder-wave 2s linear infinite;mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);mask-size:200% 100%}@keyframes placeholder-wave{to{mask-position:-200% 0}}.clearfix:after{clear:both;content:"";display:block}.text-bg-primary{background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-secondary{background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-success{background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-info{background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-warning{background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-danger{background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-light{background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-dark{background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important;color:#fff!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important}.focus-ring:focus{box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);outline:0}.icon-link{align-items:center;backface-visibility:hidden;display:inline-flex;gap:.375rem;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));text-underline-offset:.25em}.icon-link>.bi{fill:currentcolor;flex-shrink:0;height:1em;transition:transform .2s ease-in-out;width:1em}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio:before{content:"";display:block;padding-top:var(--bs-aspect-ratio)}.ratio>*{height:100%;left:0;position:absolute;top:0;width:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{top:0}.fixed-bottom,.fixed-top{left:0;position:fixed;right:0;z-index:1030}.fixed-bottom{bottom:0}.sticky-top{top:0}.sticky-bottom,.sticky-top{position:sticky;z-index:1020}.sticky-bottom{bottom:0}@media (min-width:540px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{bottom:0;position:sticky;z-index:1020}}@media (min-width:720px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{bottom:0;position:sticky;z-index:1020}}@media (min-width:960px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{bottom:0;position:sticky;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{bottom:0;position:sticky;z-index:1020}}.hstack{align-items:center;flex-direction:row}.hstack,.vstack{align-self:stretch;display:flex}.vstack{flex:1 1 auto;flex-direction:column}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){clip:rect(0,0,0,0)!important;border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;white-space:nowrap!important;width:1px!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link:after{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:1}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{align-self:stretch;background-color:currentcolor;display:inline-block;min-height:1em;opacity:.25;width:var(--bs-border-width)}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{object-fit:contain!important}.object-fit-cover{object-fit:cover!important}.object-fit-fill{object-fit:fill!important}.object-fit-scale{object-fit:scale-down!important}.object-fit-none{object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb),var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb),var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb),var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb),var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb),var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb),var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb),var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb),var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-bottom:0!important;margin-top:0!important}.my-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-bottom:0!important;padding-top:0!important}.py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{column-gap:0!important}.column-gap-1{column-gap:.25rem!important}.column-gap-2{column-gap:.5rem!important}.column-gap-3{column-gap:1rem!important}.column-gap-4{column-gap:1.5rem!important}.column-gap-5{column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:hsla(0,0%,100%,.5)!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10,.link-opacity-10-hover:hover{--bs-link-opacity:0.1}.link-opacity-25,.link-opacity-25-hover:hover{--bs-link-opacity:0.25}.link-opacity-50,.link-opacity-50-hover:hover{--bs-link-opacity:0.5}.link-opacity-75,.link-opacity-75-hover:hover{--bs-link-opacity:0.75}.link-opacity-100,.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:0.1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:0.25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:0.5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:0.75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-bottom-right-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.rounded-end-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-bottom-right-radius:50%!important;border-top-right-radius:50%!important}.rounded-end-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-left-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.rounded-bottom-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-left-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-bottom-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:540px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{object-fit:contain!important}.object-fit-sm-cover{object-fit:cover!important}.object-fit-sm-fill{object-fit:fill!important}.object-fit-sm-scale{object-fit:scale-down!important}.object-fit-sm-none{object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-bottom:0!important;margin-top:0!important}.my-sm-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-sm-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-sm-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-sm-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-sm-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-sm-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-bottom:0!important;padding-top:0!important}.py-sm-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-sm-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-sm-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-sm-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-sm-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{column-gap:0!important}.column-gap-sm-1{column-gap:.25rem!important}.column-gap-sm-2{column-gap:.5rem!important}.column-gap-sm-3{column-gap:1rem!important}.column-gap-sm-4{column-gap:1.5rem!important}.column-gap-sm-5{column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:720px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{object-fit:contain!important}.object-fit-md-cover{object-fit:cover!important}.object-fit-md-fill{object-fit:fill!important}.object-fit-md-scale{object-fit:scale-down!important}.object-fit-md-none{object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-bottom:0!important;margin-top:0!important}.my-md-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-md-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-md-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-md-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-md-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-md-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-bottom:0!important;padding-top:0!important}.py-md-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-md-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-md-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-md-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-md-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{column-gap:0!important}.column-gap-md-1{column-gap:.25rem!important}.column-gap-md-2{column-gap:.5rem!important}.column-gap-md-3{column-gap:1rem!important}.column-gap-md-4{column-gap:1.5rem!important}.column-gap-md-5{column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:960px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{object-fit:contain!important}.object-fit-lg-cover{object-fit:cover!important}.object-fit-lg-fill{object-fit:fill!important}.object-fit-lg-scale{object-fit:scale-down!important}.object-fit-lg-none{object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-bottom:0!important;margin-top:0!important}.my-lg-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-lg-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-lg-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-lg-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-lg-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-lg-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-bottom:0!important;padding-top:0!important}.py-lg-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-lg-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-lg-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-lg-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-lg-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{column-gap:0!important}.column-gap-lg-1{column-gap:.25rem!important}.column-gap-lg-2{column-gap:.5rem!important}.column-gap-lg-3{column-gap:1rem!important}.column-gap-lg-4{column-gap:1.5rem!important}.column-gap-lg-5{column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{object-fit:contain!important}.object-fit-xl-cover{object-fit:cover!important}.object-fit-xl-fill{object-fit:fill!important}.object-fit-xl-scale{object-fit:scale-down!important}.object-fit-xl-none{object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-bottom:0!important;margin-top:0!important}.my-xl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-bottom:0!important;padding-top:0!important}.py-xl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{column-gap:0!important}.column-gap-xl-1{column-gap:.25rem!important}.column-gap-xl-2{column-gap:.5rem!important}.column-gap-xl-3{column-gap:1rem!important}.column-gap-xl-4{column-gap:1.5rem!important}.column-gap-xl-5{column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:Font Awesome\ 6 Free}.fa-brands,.fab{font-family:Font Awesome\ 6 Brands}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);line-height:inherit;position:absolute;text-align:center;width:var(--fa-li-width,2em)}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.08em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-beat;animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-bounce;animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-fade;animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-beat-fade;animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-flip;animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-shake;animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-spin;animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-spin;animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}24%,8%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0:before{content:"\30 "}.fa-1:before{content:"\31 "}.fa-2:before{content:"\32 "}.fa-3:before{content:"\33 "}.fa-4:before{content:"\34 "}.fa-5:before{content:"\35 "}.fa-6:before{content:"\36 "}.fa-7:before{content:"\37 "}.fa-8:before{content:"\38 "}.fa-9:before{content:"\39 "}.fa-fill-drip:before{content:"\f576"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-at:before{content:"\@"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-text-height:before{content:"\f034"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-stethoscope:before{content:"\f0f1"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-info:before{content:"\f129"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-explosion:before{content:"\e4e9"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-wave-square:before{content:"\f83e"}.fa-ring:before{content:"\f70b"}.fa-building-un:before{content:"\e4d9"}.fa-dice-three:before{content:"\f527"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-door-open:before{content:"\f52b"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-atom:before{content:"\f5d2"}.fa-soap:before{content:"\e06e"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-pump-medical:before{content:"\e06a"}.fa-fingerprint:before{content:"\f577"}.fa-hand-point-right:before{content:"\f0a4"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-flag-checkered:before{content:"\f11e"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-crop:before{content:"\f125"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-users-rectangle:before{content:"\e594"}.fa-people-roof:before{content:"\e537"}.fa-people-line:before{content:"\e534"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-diagram-predecessor:before{content:"\e477"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-laptop:before{content:"\f109"}.fa-file-csv:before{content:"\f6dd"}.fa-menorah:before{content:"\f676"}.fa-truck-plane:before{content:"\e58f"}.fa-record-vinyl:before{content:"\f8d9"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-bong:before{content:"\f55c"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-jar-wheat:before{content:"\e517"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-pager:before{content:"\f815"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-strikethrough:before{content:"\f0cc"}.fa-k:before{content:"K"}.fa-landmark-flag:before{content:"\e51c"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-backward:before{content:"\f04a"}.fa-caret-right:before{content:"\f0da"}.fa-comments:before{content:"\f086"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-code-pull-request:before{content:"\e13c"}.fa-clipboard-list:before{content:"\f46d"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-user-check:before{content:"\f4fc"}.fa-vial-virus:before{content:"\e597"}.fa-sheet-plastic:before{content:"\e571"}.fa-blog:before{content:"\f781"}.fa-user-ninja:before{content:"\f504"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-toggle-off:before{content:"\f204"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-person-drowning:before{content:"\e545"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-spray-can:before{content:"\f5bd"}.fa-truck-monster:before{content:"\f63b"}.fa-w:before{content:"W"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-rainbow:before{content:"\f75b"}.fa-circle-notch:before{content:"\f1ce"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-paw:before{content:"\f1b0"}.fa-cloud:before{content:"\f0c2"}.fa-trowel-bricks:before{content:"\e58a"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-hospital-user:before{content:"\f80d"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-binoculars:before{content:"\f1e5"}.fa-microphone-slash:before{content:"\f131"}.fa-box-tissue:before{content:"\e05b"}.fa-motorcycle:before{content:"\f21c"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-toilets-portable:before{content:"\e584"}.fa-hockey-puck:before{content:"\f453"}.fa-table:before{content:"\f0ce"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-users-slash:before{content:"\e073"}.fa-clover:before{content:"\e139"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-star-and-crescent:before{content:"\f699"}.fa-house-fire:before{content:"\e50c"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-helicopter:before{content:"\f533"}.fa-compass:before{content:"\f14e"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-file-circle-question:before{content:"\e4ef"}.fa-laptop-code:before{content:"\f5fc"}.fa-swatchbook:before{content:"\f5c3"}.fa-prescription-bottle:before{content:"\f485"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-people-group:before{content:"\e533"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-film:before{content:"\f008"}.fa-ruler-horizontal:before{content:"\f547"}.fa-people-robbery:before{content:"\e536"}.fa-lightbulb:before{content:"\f0eb"}.fa-caret-left:before{content:"\f0d9"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-sitemap:before{content:"\f0e8"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-memory:before{content:"\f538"}.fa-road-spikes:before{content:"\e568"}.fa-fire-burner:before{content:"\e4f1"}.fa-flag:before{content:"\f024"}.fa-hanukiah:before{content:"\f6e6"}.fa-feather:before{content:"\f52d"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-comment-slash:before{content:"\f4b3"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-compress:before{content:"\f066"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-ankh:before{content:"\f644"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-asterisk:before{content:"\*"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-peseta-sign:before{content:"\e221"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-ghost:before{content:"\f6e2"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-cart-plus:before{content:"\f217"}.fa-gamepad:before{content:"\f11b"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-egg:before{content:"\f7fb"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-campground:before{content:"\f6bb"}.fa-folder-plus:before{content:"\f65e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-lock:before{content:"\f023"}.fa-gas-pump:before{content:"\f52f"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-house-flood-water:before{content:"\e50e"}.fa-tree:before{content:"\f1bb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-sack-dollar:before{content:"\f81d"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-car-side:before{content:"\f5e4"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-microscope:before{content:"\f610"}.fa-sink:before{content:"\e06d"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-mitten:before{content:"\f7b5"}.fa-person-rays:before{content:"\e54d"}.fa-users:before{content:"\f0c0"}.fa-eye-slash:before{content:"\f070"}.fa-flask-vial:before{content:"\e4f3"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-om:before{content:"\f679"}.fa-worm:before{content:"\e599"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-plug:before{content:"\f1e6"}.fa-chevron-up:before{content:"\f077"}.fa-hand-spock:before{content:"\f259"}.fa-stopwatch:before{content:"\f2f2"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-chess-bishop:before{content:"\f43a"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-road-circle-check:before{content:"\e564"}.fa-dice-five:before{content:"\f523"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-land-mine-on:before{content:"\e51b"}.fa-i-cursor:before{content:"\f246"}.fa-stamp:before{content:"\f5bf"}.fa-stairs:before{content:"\e289"}.fa-i:before{content:"I"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-pills:before{content:"\f484"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-tooth:before{content:"\f5c9"}.fa-v:before{content:"V"}.fa-bangladeshi-taka-sign:before{content:"\e2e6"}.fa-bicycle:before{content:"\f206"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-snowman:before{content:"\f7d0"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-road-barrier:before{content:"\e562"}.fa-school:before{content:"\f549"}.fa-igloo:before{content:"\f7ae"}.fa-joint:before{content:"\f595"}.fa-angle-right:before{content:"\f105"}.fa-horse:before{content:"\f6f0"}.fa-q:before{content:"Q"}.fa-g:before{content:"G"}.fa-notes-medical:before{content:"\f481"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-dong-sign:before{content:"\e169"}.fa-capsules:before{content:"\f46b"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-hand-point-up:before{content:"\f0a6"}.fa-money-bill:before{content:"\f0d6"}.fa-bookmark:before{content:"\f02e"}.fa-align-justify:before{content:"\f039"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-helmet-un:before{content:"\e503"}.fa-bullseye:before{content:"\f140"}.fa-bacon:before{content:"\f7e5"}.fa-hand-point-down:before{content:"\f0a7"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-radiation:before{content:"\f7b9"}.fa-chart-simple:before{content:"\e473"}.fa-mars-stroke:before{content:"\f229"}.fa-vial:before{content:"\f492"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-e:before{content:"E"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-user:before{content:"\f007"}.fa-school-circle-check:before{content:"\e56b"}.fa-dumpster:before{content:"\f793"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-building-user:before{content:"\e4da"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-highlighter:before{content:"\f591"}.fa-key:before{content:"\f084"}.fa-bullhorn:before{content:"\f0a1"}.fa-globe:before{content:"\f0ac"}.fa-synagogue:before{content:"\f69b"}.fa-person-half-dress:before{content:"\e548"}.fa-road-bridge:before{content:"\e563"}.fa-location-arrow:before{content:"\f124"}.fa-c:before{content:"C"}.fa-tablet-button:before{content:"\f10a"}.fa-building-lock:before{content:"\e4d6"}.fa-pizza-slice:before{content:"\f818"}.fa-money-bill-wave:before{content:"\f53a"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-house-flag:before{content:"\e50d"}.fa-person-circle-minus:before{content:"\e540"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-camera-rotate:before{content:"\e0d8"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-star:before{content:"\f005"}.fa-repeat:before{content:"\f363"}.fa-cross:before{content:"\f654"}.fa-box:before{content:"\f466"}.fa-venus-mars:before{content:"\f228"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-charging-station:before{content:"\f5e7"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-mobile-retro:before{content:"\e527"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-spider:before{content:"\f717"}.fa-hands-bound:before{content:"\e4f9"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-x-ray:before{content:"\f497"}.fa-spell-check:before{content:"\f891"}.fa-slash:before{content:"\f715"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-server:before{content:"\f233"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-shop-lock:before{content:"\e4a5"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-blender-phone:before{content:"\f6b6"}.fa-building-wheat:before{content:"\e4db"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-venus:before{content:"\f221"}.fa-passport:before{content:"\f5ab"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-temperature-high:before{content:"\f769"}.fa-microchip:before{content:"\f2db"}.fa-crown:before{content:"\f521"}.fa-weight-hanging:before{content:"\f5cd"}.fa-xmarks-lines:before{content:"\e59a"}.fa-file-prescription:before{content:"\f572"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-chess-knight:before{content:"\f441"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-wheelchair:before{content:"\f193"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-toggle-on:before{content:"\f205"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-l:before{content:"L"}.fa-fire:before{content:"\f06d"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-folder-open:before{content:"\f07c"}.fa-heart-circle-plus:before{content:"\e500"}.fa-code-fork:before{content:"\e13b"}.fa-city:before{content:"\f64f"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-pepper-hot:before{content:"\f816"}.fa-unlock:before{content:"\f09c"}.fa-colon-sign:before{content:"\e140"}.fa-headset:before{content:"\f590"}.fa-store-slash:before{content:"\e071"}.fa-road-circle-xmark:before{content:"\e566"}.fa-user-minus:before{content:"\f503"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-clipboard:before{content:"\f328"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-underline:before{content:"\f0cd"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-signature:before{content:"\f5b7"}.fa-stroopwafel:before{content:"\f551"}.fa-bold:before{content:"\f032"}.fa-anchor-lock:before{content:"\e4ad"}.fa-building-ngo:before{content:"\e4d7"}.fa-manat-sign:before{content:"\e1d5"}.fa-not-equal:before{content:"\f53e"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-jedi:before{content:"\f669"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-mug-hot:before{content:"\f7b6"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-gift:before{content:"\f06b"}.fa-dice-two:before{content:"\f528"}.fa-chess-queen:before{content:"\f445"}.fa-glasses:before{content:"\f530"}.fa-chess-board:before{content:"\f43c"}.fa-building-circle-check:before{content:"\e4d2"}.fa-person-chalkboard:before{content:"\e53d"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-less-than-equal:before{content:"\f537"}.fa-train:before{content:"\f238"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-crow:before{content:"\f520"}.fa-sailboat:before{content:"\e445"}.fa-window-restore:before{content:"\f2d2"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-torii-gate:before{content:"\f6a1"}.fa-frog:before{content:"\f52e"}.fa-bucket:before{content:"\e4cf"}.fa-image:before{content:"\f03e"}.fa-microphone:before{content:"\f130"}.fa-cow:before{content:"\f6c8"}.fa-caret-up:before{content:"\f0d8"}.fa-screwdriver:before{content:"\f54a"}.fa-folder-closed:before{content:"\e185"}.fa-house-tsunami:before{content:"\e515"}.fa-square-nfi:before{content:"\e576"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-lemon:before{content:"\f094"}.fa-head-side-mask:before{content:"\e063"}.fa-handshake:before{content:"\f2b5"}.fa-gem:before{content:"\f3a5"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-smoking:before{content:"\f48d"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-monument:before{content:"\f5a6"}.fa-snowplow:before{content:"\f7d2"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-cannabis:before{content:"\f55f"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-tablets:before{content:"\f490"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-chair:before{content:"\f6c0"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-plate-wheat:before{content:"\e55a"}.fa-icicles:before{content:"\f7ad"}.fa-person-shelter:before{content:"\e54f"}.fa-neuter:before{content:"\f22c"}.fa-id-badge:before{content:"\f2c1"}.fa-marker:before{content:"\f5a1"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-helicopter-symbol:before{content:"\e502"}.fa-universal-access:before{content:"\f29a"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-lari-sign:before{content:"\e1c8"}.fa-volcano:before{content:"\f770"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-viruses:before{content:"\e076"}.fa-square-person-confined:before{content:"\e577"}.fa-user-tie:before{content:"\f508"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-certificate:before{content:"\f0a3"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-suitcase:before{content:"\f0f2"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-camera-retro:before{content:"\f083"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-box-open:before{content:"\f49e"}.fa-scroll:before{content:"\f70e"}.fa-spa:before{content:"\f5bb"}.fa-location-pin-lock:before{content:"\e51f"}.fa-pause:before{content:"\f04c"}.fa-hill-avalanche:before{content:"\e507"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-bomb:before{content:"\f1e2"}.fa-registered:before{content:"\f25d"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-subscript:before{content:"\f12c"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-burst:before{content:"\e4dc"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-money-bills:before{content:"\e1f3"}.fa-smog:before{content:"\f75f"}.fa-crutch:before{content:"\f7f7"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-palette:before{content:"\f53f"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-vest:before{content:"\e085"}.fa-ferry:before{content:"\e4ea"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-boxes-packing:before{content:"\e4c7"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-bowl-food:before{content:"\e4c6"}.fa-candy-cane:before{content:"\f786"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-file-word:before{content:"\f1c2"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-house-lock:before{content:"\e510"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-children:before{content:"\e4e1"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-envelope-open:before{content:"\f2b6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-mattress-pillow:before{content:"\e525"}.fa-guarani-sign:before{content:"\e19a"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-fire-extinguisher:before{content:"\f134"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-greater-than-equal:before{content:"\f532"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-virus:before{content:"\e074"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-layer-group:before{content:"\f5fd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-archway:before{content:"\f557"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-square:before{content:"\f0c8"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-couch:before{content:"\f4b8"}.fa-cedi-sign:before{content:"\e0df"}.fa-italic:before{content:"\f033"}.fa-table-cells-column-lock:before{content:"\e678"}.fa-church:before{content:"\f51d"}.fa-comments-dollar:before{content:"\f653"}.fa-democrat:before{content:"\f747"}.fa-z:before{content:"Z"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-road-lock:before{content:"\e567"}.fa-a:before{content:"A"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-p:before{content:"P"}.fa-snowflake:before{content:"\f2dc"}.fa-newspaper:before{content:"\f1ea"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-locust:before{content:"\e520"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-person-dress-burst:before{content:"\e544"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-vector-square:before{content:"\f5cb"}.fa-bread-slice:before{content:"\f7ec"}.fa-language:before{content:"\f1ab"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-filter:before{content:"\f0b0"}.fa-question:before{content:"\?"}.fa-file-signature:before{content:"\f573"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-house-chimney-user:before{content:"\e065"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-puzzle-piece:before{content:"\f12e"}.fa-money-check:before{content:"\f53c"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-code:before{content:"\f121"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-virus-covid:before{content:"\e4a8"}.fa-austral-sign:before{content:"\e0a9"}.fa-f:before{content:"F"}.fa-leaf:before{content:"\f06c"}.fa-road:before{content:"\f018"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-person-circle-plus:before{content:"\e541"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-sack-xmark:before{content:"\e56a"}.fa-file-excel:before{content:"\f1c3"}.fa-file-contract:before{content:"\f56c"}.fa-fish-fins:before{content:"\e4f2"}.fa-building-flag:before{content:"\e4d5"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-object-ungroup:before{content:"\f248"}.fa-poop:before{content:"\f619"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-kaaba:before{content:"\f66b"}.fa-toilet-paper:before{content:"\f71e"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-eject:before{content:"\f052"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-plane-circle-check:before{content:"\e555"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-object-group:before{content:"\f247"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-mask-ventilator:before{content:"\e524"}.fa-arrow-right:before{content:"\f061"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-cash-register:before{content:"\f788"}.fa-person-circle-question:before{content:"\e542"}.fa-h:before{content:"H"}.fa-tarp:before{content:"\e57b"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-heart:before{content:"\f004"}.fa-mars-and-venus:before{content:"\f224"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-dumpster-fire:before{content:"\f794"}.fa-house-crack:before{content:"\e3b1"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-bottle-water:before{content:"\e4c5"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-kitchen-set:before{content:"\e51a"}.fa-r:before{content:"R"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-cube:before{content:"\f1b2"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-shield-dog:before{content:"\e573"}.fa-solar-panel:before{content:"\f5ba"}.fa-lock-open:before{content:"\f3c1"}.fa-elevator:before{content:"\e16d"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-circle:before{content:"\f111"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-recycle:before{content:"\f1b8"}.fa-user-astronaut:before{content:"\f4fb"}.fa-plane-slash:before{content:"\e069"}.fa-trademark:before{content:"\f25c"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-satellite-dish:before{content:"\f7c0"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-users-rays:before{content:"\e593"}.fa-wallet:before{content:"\f555"}.fa-clipboard-check:before{content:"\f46c"}.fa-file-audio:before{content:"\f1c7"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-wrench:before{content:"\f0ad"}.fa-bugs:before{content:"\e4d0"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-file-image:before{content:"\f1c5"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-plane-departure:before{content:"\f5b0"}.fa-handshake-slash:before{content:"\e060"}.fa-book-bookmark:before{content:"\e0bb"}.fa-code-branch:before{content:"\f126"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-bridge:before{content:"\e4c8"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-truck-front:before{content:"\e2b7"}.fa-cat:before{content:"\f6be"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-truck-field:before{content:"\e58d"}.fa-route:before{content:"\f4d7"}.fa-clipboard-question:before{content:"\e4e3"}.fa-panorama:before{content:"\e209"}.fa-comment-medical:before{content:"\f7f5"}.fa-teeth-open:before{content:"\f62f"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-tags:before{content:"\f02c"}.fa-wine-glass:before{content:"\f4e3"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-house-signal:before{content:"\e012"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-faucet-drip:before{content:"\e006"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-terminal:before{content:"\f120"}.fa-mobile-button:before{content:"\f10b"}.fa-house-medical-flag:before{content:"\e514"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-tape:before{content:"\f4db"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-eye:before{content:"\f06e"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-audio-description:before{content:"\f29e"}.fa-person-military-to-person:before{content:"\e54c"}.fa-file-shield:before{content:"\e4f0"}.fa-user-slash:before{content:"\f506"}.fa-pen:before{content:"\f304"}.fa-tower-observation:before{content:"\e586"}.fa-file-code:before{content:"\f1c9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-bus:before{content:"\f207"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-window-maximize:before{content:"\f2d0"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-prescription:before{content:"\f5b1"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-vihara:before{content:"\f6a7"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-plant-wilt:before{content:"\e5aa"}.fa-diamond:before{content:"\f219"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-bacterium:before{content:"\e05a"}.fa-hand-pointer:before{content:"\f25a"}.fa-drum-steelpan:before{content:"\f56a"}.fa-hand-scissors:before{content:"\f257"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-biohazard:before{content:"\f780"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-mars-double:before{content:"\f227"}.fa-child-dress:before{content:"\e59c"}.fa-users-between-lines:before{content:"\e591"}.fa-lungs-virus:before{content:"\e067"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-phone:before{content:"\f095"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-child-reaching:before{content:"\e59d"}.fa-head-side-virus:before{content:"\e064"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-door-closed:before{content:"\f52a"}.fa-shield-virus:before{content:"\e06c"}.fa-dice-six:before{content:"\f526"}.fa-mosquito-net:before{content:"\e52c"}.fa-bridge-water:before{content:"\e4ce"}.fa-person-booth:before{content:"\f756"}.fa-text-width:before{content:"\f035"}.fa-hat-wizard:before{content:"\f6e8"}.fa-pen-fancy:before{content:"\f5ac"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-trash:before{content:"\f1f8"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-book-medical:before{content:"\f7e6"}.fa-poo:before{content:"\f2fe"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-cubes:before{content:"\f1b3"}.fa-divide:before{content:"\f529"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-headphones:before{content:"\f025"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-clapping:before{content:"\e1a8"}.fa-republican:before{content:"\f75e"}.fa-arrow-left:before{content:"\f060"}.fa-person-circle-xmark:before{content:"\e543"}.fa-ruler:before{content:"\f545"}.fa-align-left:before{content:"\f036"}.fa-dice-d6:before{content:"\f6d1"}.fa-restroom:before{content:"\f7bd"}.fa-j:before{content:"J"}.fa-users-viewfinder:before{content:"\e595"}.fa-file-video:before{content:"\f1c8"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-file-pdf:before{content:"\f1c1"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-o:before{content:"O"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-user-secret:before{content:"\f21b"}.fa-otter:before{content:"\f700"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-comment-dollar:before{content:"\f651"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-clipboard-user:before{content:"\f7f3"}.fa-child:before{content:"\f1ae"}.fa-lira-sign:before{content:"\f195"}.fa-satellite:before{content:"\f7bf"}.fa-plane-lock:before{content:"\e558"}.fa-tag:before{content:"\f02b"}.fa-comment:before{content:"\f075"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-envelope:before{content:"\f0e0"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-paperclip:before{content:"\f0c6"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-ribbon:before{content:"\f4d6"}.fa-lungs:before{content:"\f604"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-border-none:before{content:"\f850"}.fa-circle-nodes:before{content:"\e4e2"}.fa-parachute-box:before{content:"\f4cd"}.fa-indent:before{content:"\f03c"}.fa-truck-field-un:before{content:"\e58e"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-mountain:before{content:"\f6fc"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-cloud-meatball:before{content:"\f73b"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-square-virus:before{content:"\e578"}.fa-meteor:before{content:"\f753"}.fa-car-on:before{content:"\e4dd"}.fa-sleigh:before{content:"\f7cc"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-water:before{content:"\f773"}.fa-calendar-check:before{content:"\f274"}.fa-braille:before{content:"\f2a1"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-landmark:before{content:"\f66f"}.fa-truck:before{content:"\f0d1"}.fa-crosshairs:before{content:"\f05b"}.fa-person-cane:before{content:"\e53c"}.fa-tent:before{content:"\e57d"}.fa-vest-patches:before{content:"\e086"}.fa-check-double:before{content:"\f560"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-cookie:before{content:"\f563"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-dumbbell:before{content:"\f44b"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-tarp-droplet:before{content:"\e57c"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-calendar-plus:before{content:"\f271"}.fa-plane-arrival:before{content:"\f5af"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-chart-gantt:before{content:"\e0e4"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-dna:before{content:"\f471"}.fa-virus-slash:before{content:"\e075"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-chess:before{content:"\f439"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-plug-circle-check:before{content:"\e55c"}.fa-street-view:before{content:"\f21d"}.fa-franc-sign:before{content:"\e18f"}.fa-volume-off:before{content:"\f026"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-star-of-david:before{content:"\f69a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-vials:before{content:"\f493"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-place-of-worship:before{content:"\f67f"}.fa-grip-vertical:before{content:"\f58e"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-u:before{content:"U"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-pallet:before{content:"\f482"}.fa-faucet:before{content:"\e005"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-s:before{content:"S"}.fa-timeline:before{content:"\e29c"}.fa-keyboard:before{content:"\f11c"}.fa-caret-down:before{content:"\f0d7"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-plane-up:before{content:"\e22d"}.fa-piggy-bank:before{content:"\f4d3"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-mountain-city:before{content:"\e52e"}.fa-coins:before{content:"\f51e"}.fa-khanda:before{content:"\f66d"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-folder-tree:before{content:"\f802"}.fa-network-wired:before{content:"\f6ff"}.fa-map-pin:before{content:"\f276"}.fa-hamsa:before{content:"\f665"}.fa-cent-sign:before{content:"\e3f5"}.fa-flask:before{content:"\f0c3"}.fa-person-pregnant:before{content:"\e31e"}.fa-wand-sparkles:before{content:"\f72b"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-ticket:before{content:"\f145"}.fa-power-off:before{content:"\f011"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-flag-usa:before{content:"\f74d"}.fa-laptop-file:before{content:"\e51d"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-diagram-next:before{content:"\e476"}.fa-person-rifle:before{content:"\e54e"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-closed-captioning:before{content:"\f20a"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-venus-double:before{content:"\f226"}.fa-images:before{content:"\f302"}.fa-calculator:before{content:"\f1ec"}.fa-people-pulling:before{content:"\e535"}.fa-n:before{content:"N"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-cloud-rain:before{content:"\f73d"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-ship:before{content:"\f21a"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-download:before{content:"\f019"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-file-circle-check:before{content:"\e5a0"}.fa-forward:before{content:"\f04e"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-align-center:before{content:"\f037"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-calendar-week:before{content:"\f784"}.fa-laptop-medical:before{content:"\f812"}.fa-b:before{content:"B"}.fa-file-medical:before{content:"\f477"}.fa-dice-one:before{content:"\f525"}.fa-kiwi-bird:before{content:"\f535"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-mill-sign:before{content:"\e1ed"}.fa-bowl-rice:before{content:"\e2eb"}.fa-skull:before{content:"\f54c"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-truck-pickup:before{content:"\f63c"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-stop:before{content:"\f04d"}.fa-code-merge:before{content:"\f387"}.fa-upload:before{content:"\f093"}.fa-hurricane:before{content:"\f751"}.fa-mound:before{content:"\e52d"}.fa-toilet-portable:before{content:"\e583"}.fa-compact-disc:before{content:"\f51f"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-caravan:before{content:"\f8ff"}.fa-shield-cat:before{content:"\e572"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-glass-water:before{content:"\e4f4"}.fa-oil-well:before{content:"\e532"}.fa-vault:before{content:"\e2c5"}.fa-mars:before{content:"\f222"}.fa-toilet:before{content:"\f7d8"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-sun:before{content:"\f185"}.fa-guitar:before{content:"\f7a6"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-horse-head:before{content:"\f7ab"}.fa-bore-hole:before{content:"\e4c3"}.fa-industry:before{content:"\f275"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-florin-sign:before{content:"\e184"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-less-than:before{content:"\<"}.fa-angle-down:before{content:"\f107"}.fa-car-tunnel:before{content:"\e4de"}.fa-head-side-cough:before{content:"\e061"}.fa-grip-lines:before{content:"\f7a4"}.fa-thumbs-down:before{content:"\f165"}.fa-user-lock:before{content:"\f502"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-chess-pawn:before{content:"\f443"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-person-through-window:before{content:"\e5a9"}.fa-toolbox:before{content:"\f552"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-bug:before{content:"\f188"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-mountain-sun:before{content:"\e52f"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-dice-d20:before{content:"\f6cf"}.fa-truck-droplet:before{content:"\e58c"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-medal:before{content:"\f5a2"}.fa-bed:before{content:"\f236"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-podcast:before{content:"\f2ce"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-bell:before{content:"\f0f3"}.fa-superscript:before{content:"\f12b"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-star-of-life:before{content:"\f621"}.fa-phone-slash:before{content:"\f3dd"}.fa-paint-roller:before{content:"\f5aa"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-file:before{content:"\f15b"}.fa-greater-than:before{content:"\>"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-arrow-down:before{content:"\f063"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-eraser:before{content:"\f12d"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-person-burst:before{content:"\e53b"}.fa-dove:before{content:"\f4ba"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-socks:before{content:"\f696"}.fa-inbox:before{content:"\f01c"}.fa-section:before{content:"\e447"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-envelope-open-text:before{content:"\f658"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-wine-bottle:before{content:"\f72f"}.fa-chess-rook:before{content:"\f447"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-dharmachakra:before{content:"\f655"}.fa-hotdog:before{content:"\f80f"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-drum:before{content:"\f569"}.fa-ice-cream:before{content:"\f810"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-fax:before{content:"\f1ac"}.fa-paragraph:before{content:"\f1dd"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-star-half:before{content:"\f089"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-tree-city:before{content:"\e587"}.fa-play:before{content:"\f04b"}.fa-font:before{content:"\f031"}.fa-table-cells-row-lock:before{content:"\e67a"}.fa-rupiah-sign:before{content:"\e23d"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-naira-sign:before{content:"\e1f6"}.fa-cart-arrow-down:before{content:"\f218"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-receipt:before{content:"\f543"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-chevron-down:before{content:"\f078"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-skull-crossbones:before{content:"\f714"}.fa-code-compare:before{content:"\e13a"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-school-lock:before{content:"\e56f"}.fa-tower-cell:before{content:"\e585"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-ranking-star:before{content:"\e561"}.fa-chess-king:before{content:"\f43f"}.fa-person-harassing:before{content:"\e549"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-arrow-up:before{content:"\f062"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-shrimp:before{content:"\e448"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-jug-detergent:before{content:"\e519"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-user-shield:before{content:"\f505"}.fa-wind:before{content:"\f72e"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-y:before{content:"Y"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-fish:before{content:"\f578"}.fa-user-graduate:before{content:"\f501"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-clapperboard:before{content:"\e131"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-jet-fighter-up:before{content:"\e518"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-copy:before{content:"\f0c5"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-hand-sparkles:before{content:"\e05d"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-child-combatant:before,.fa-child-rifle:before{content:"\e4e0"}.fa-gun:before{content:"\e19b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-add:before,.fa-plus:before{content:"\+"}.fa-expand:before{content:"\f065"}.fa-computer:before{content:"\e4e5"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-peso-sign:before{content:"\e222"}.fa-building-shield:before{content:"\e4d8"}.fa-baby:before{content:"\f77c"}.fa-users-line:before{content:"\e592"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-tractor:before{content:"\f722"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-lines-leaning:before{content:"\e51e"}.fa-ruler-combined:before{content:"\f546"}.fa-copyright:before{content:"\f1f9"}.fa-equals:before{content:"\="}.fa-blender:before{content:"\f517"}.fa-teeth:before{content:"\f62e"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-map:before{content:"\f279"}.fa-rocket:before{content:"\f135"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-folder-minus:before{content:"\f65d"}.fa-store:before{content:"\f54e"}.fa-arrow-trend-up:before{content:"\e098"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-bezier-curve:before{content:"\f55b"}.fa-bell-slash:before{content:"\f1f6"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-school-flag:before{content:"\e56e"}.fa-fill:before{content:"\f575"}.fa-angle-up:before{content:"\f106"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-holly-berry:before{content:"\f7aa"}.fa-chevron-left:before{content:"\f053"}.fa-bacteria:before{content:"\e059"}.fa-hand-lizard:before{content:"\f258"}.fa-notdef:before{content:"\e1fe"}.fa-disease:before{content:"\f7fa"}.fa-briefcase-medical:before{content:"\f469"}.fa-genderless:before{content:"\f22d"}.fa-chevron-right:before{content:"\f054"}.fa-retweet:before{content:"\f079"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-pump-soap:before{content:"\e06b"}.fa-video-slash:before{content:"\f4e2"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-radio:before{content:"\f8d7"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-traffic-light:before{content:"\f637"}.fa-thermometer:before{content:"\f491"}.fa-vr-cardboard:before{content:"\f729"}.fa-hand-middle-finger:before{content:"\f806"}.fa-percent:before,.fa-percentage:before{content:"\%"}.fa-truck-moving:before{content:"\f4df"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-display:before{content:"\e163"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-trophy:before{content:"\f091"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-hammer:before{content:"\f6e3"}.fa-hand-peace:before{content:"\f25b"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-spinner:before{content:"\f110"}.fa-robot:before{content:"\f544"}.fa-peace:before{content:"\f67c"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-warehouse:before{content:"\f494"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-splotch:before{content:"\f5bc"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-dice-four:before{content:"\f524"}.fa-sim-card:before{content:"\f7c4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-mercury:before{content:"\f223"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-person-falling-burst:before{content:"\e547"}.fa-award:before{content:"\f559"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-building:before{content:"\f1ad"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-qrcode:before{content:"\f029"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-house-medical:before{content:"\e3b2"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-house-chimney-window:before{content:"\e00d"}.fa-pen-nib:before{content:"\f5ad"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tents:before{content:"\e582"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-dog:before{content:"\f6d3"}.fa-carrot:before{content:"\f787"}.fa-moon:before{content:"\f186"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-cheese:before{content:"\f7ef"}.fa-yin-yang:before{content:"\f6ad"}.fa-music:before{content:"\f001"}.fa-code-commit:before{content:"\f386"}.fa-temperature-low:before{content:"\f76b"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-broom:before{content:"\f51a"}.fa-shield-heart:before{content:"\e574"}.fa-gopuram:before{content:"\f664"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-hashtag:before{content:"\#"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-oil-can:before{content:"\f613"}.fa-t:before{content:"T"}.fa-hippo:before{content:"\f6ed"}.fa-chart-column:before{content:"\e0e3"}.fa-infinity:before{content:"\f534"}.fa-vial-circle-check:before{content:"\e596"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-voicemail:before{content:"\f897"}.fa-fan:before{content:"\f863"}.fa-person-walking-luggage:before{content:"\e554"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-calendar:before{content:"\f133"}.fa-trailer:before{content:"\e041"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-sd-card:before{content:"\f7c2"}.fa-dragon:before{content:"\f6d5"}.fa-shoe-prints:before{content:"\f54b"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-hand-holding:before{content:"\f4bd"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-clone:before{content:"\f24d"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-tornado:before{content:"\f76f"}.fa-file-circle-plus:before{content:"\e494"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-anchor:before{content:"\f13d"}.fa-border-all:before{content:"\f84c"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-cookie-bite:before{content:"\f564"}.fa-arrow-trend-down:before{content:"\e097"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-draw-polygon:before{content:"\f5ee"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-shower:before{content:"\f2cc"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-m:before{content:"M"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-book:before{content:"\f02d"}.fa-user-plus:before{content:"\f234"}.fa-check:before{content:"\f00c"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-house-circle-check:before{content:"\e509"}.fa-angle-left:before{content:"\f104"}.fa-diagram-successor:before{content:"\e47a"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-cloud-moon:before{content:"\f6c3"}.fa-briefcase:before{content:"\f0b1"}.fa-person-falling:before{content:"\e546"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-user-tag:before{content:"\f507"}.fa-rug:before{content:"\e569"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-baht-sign:before{content:"\e0ac"}.fa-book-open:before{content:"\f518"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-handcuffs:before{content:"\e4f8"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-database:before{content:"\f1c0"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-mask-face:before{content:"\e1d7"}.fa-hill-rockslide:before{content:"\e508"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-paper-plane:before{content:"\f1d8"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-dungeon:before{content:"\f6d9"}.fa-align-right:before{content:"\f038"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-life-ring:before{content:"\f1cd"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-calendar-day:before{content:"\f783"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-dice:before{content:"\f522"}.fa-bowling-ball:before{content:"\f436"}.fa-brain:before{content:"\f5dc"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-calendar-minus:before{content:"\f272"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-gifts:before{content:"\f79c"}.fa-hotel:before{content:"\f594"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-thumbs-up:before{content:"\f164"}.fa-user-clock:before{content:"\f4fd"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-file-invoice:before{content:"\f570"}.fa-window-minimize:before{content:"\f2d1"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-brush:before{content:"\f55d"}.fa-mask:before{content:"\f6fa"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-ruler-vertical:before{content:"\f548"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-train-tram:before{content:"\e5b4"}.fa-user-nurse:before{content:"\f82f"}.fa-syringe:before{content:"\f48e"}.fa-cloud-sun:before{content:"\f6c4"}.fa-stopwatch-20:before{content:"\e06f"}.fa-square-full:before{content:"\f45c"}.fa-magnet:before{content:"\f076"}.fa-jar:before{content:"\e516"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-bug-slash:before{content:"\e490"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-bone:before{content:"\f5d7"}.fa-user-injured:before{content:"\f728"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-plane:before{content:"\f072"}.fa-tent-arrows-down:before{content:"\e581"}.fa-exclamation:before{content:"\!"}.fa-arrows-spin:before{content:"\e4bb"}.fa-print:before{content:"\f02f"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\$"}.fa-x:before{content:"X"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-person-military-pointing:before{content:"\e54a"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-umbrella:before{content:"\f0e9"}.fa-trowel:before{content:"\e589"}.fa-d:before{content:"D"}.fa-stapler:before{content:"\e5af"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-kip-sign:before{content:"\e1c4"}.fa-hand-point-left:before{content:"\f0a5"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-barcode:before{content:"\f02a"}.fa-plus-minus:before{content:"\e43c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-person-circle-check:before{content:"\e53e"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px} + +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-display:block;font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:900;src:url(../vendor/fontawesome/webfonts/fa-solid-900.woff2) format("woff2"),url(../vendor/fontawesome/webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900} + +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-display:block;font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:400;src:url(../vendor/fontawesome/webfonts/fa-regular-400.woff2) format("woff2"),url(../vendor/fontawesome/webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400} + +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-display:block;font-family:Font Awesome\ 6 Brands;font-style:normal;font-weight:400;src:url(../vendor/fontawesome/webfonts/fa-brands-400.woff2) format("woff2"),url(../vendor/fontawesome/webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero:before{content:"\f3d0"}.fa-hooli:before{content:"\f427"}.fa-yelp:before{content:"\f1e9"}.fa-cc-visa:before{content:"\f1f0"}.fa-lastfm:before{content:"\f202"}.fa-shopware:before{content:"\f5b5"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-aws:before{content:"\f375"}.fa-redhat:before{content:"\f7bc"}.fa-yoast:before{content:"\f2b1"}.fa-cloudflare:before{content:"\e07d"}.fa-ups:before{content:"\f7e0"}.fa-pixiv:before{content:"\e640"}.fa-wpexplorer:before{content:"\f2de"}.fa-dyalog:before{content:"\f399"}.fa-bity:before{content:"\f37a"}.fa-stackpath:before{content:"\f842"}.fa-buysellads:before{content:"\f20d"}.fa-first-order:before{content:"\f2b0"}.fa-modx:before{content:"\f285"}.fa-guilded:before{content:"\e07e"}.fa-vnv:before{content:"\f40b"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-microsoft:before{content:"\f3ca"}.fa-qq:before{content:"\f1d6"}.fa-orcid:before{content:"\f8d2"}.fa-java:before{content:"\f4e4"}.fa-invision:before{content:"\f7b0"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-centercode:before{content:"\f380"}.fa-glide-g:before{content:"\f2a6"}.fa-drupal:before{content:"\f1a9"}.fa-jxl:before{content:"\e67b"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-unity:before{content:"\e049"}.fa-whmcs:before{content:"\f40d"}.fa-rocketchat:before{content:"\f3e8"}.fa-vk:before{content:"\f189"}.fa-untappd:before{content:"\f405"}.fa-mailchimp:before{content:"\f59e"}.fa-css3-alt:before{content:"\f38b"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-vimeo-v:before{content:"\f27d"}.fa-contao:before{content:"\f26d"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-deskpro:before{content:"\f38f"}.fa-brave:before{content:"\e63c"}.fa-sistrix:before{content:"\f3ee"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-battle-net:before{content:"\f835"}.fa-the-red-yeti:before{content:"\f69d"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-edge:before{content:"\f282"}.fa-threads:before{content:"\e618"}.fa-napster:before{content:"\f3d2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-google-plus-g:before{content:"\f0d5"}.fa-artstation:before{content:"\f77a"}.fa-markdown:before{content:"\f60f"}.fa-sourcetree:before{content:"\f7d3"}.fa-google-plus:before{content:"\f2b3"}.fa-diaspora:before{content:"\f791"}.fa-foursquare:before{content:"\f180"}.fa-stack-overflow:before{content:"\f16c"}.fa-github-alt:before{content:"\f113"}.fa-phoenix-squadron:before{content:"\f511"}.fa-pagelines:before{content:"\f18c"}.fa-algolia:before{content:"\f36c"}.fa-red-river:before{content:"\f3e3"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-safari:before{content:"\f267"}.fa-google:before{content:"\f1a0"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-atlassian:before{content:"\f77b"}.fa-linkedin-in:before{content:"\f0e1"}.fa-digital-ocean:before{content:"\f391"}.fa-nimblr:before{content:"\f5a8"}.fa-chromecast:before{content:"\f838"}.fa-evernote:before{content:"\f839"}.fa-hacker-news:before{content:"\f1d4"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-adversal:before{content:"\f36a"}.fa-creative-commons:before{content:"\f25e"}.fa-watchman-monitoring:before{content:"\e087"}.fa-fonticons:before{content:"\f280"}.fa-weixin:before{content:"\f1d7"}.fa-shirtsinbulk:before{content:"\f214"}.fa-codepen:before{content:"\f1cb"}.fa-git-alt:before{content:"\f841"}.fa-lyft:before{content:"\f3c3"}.fa-rev:before{content:"\f5b2"}.fa-windows:before{content:"\f17a"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-meetup:before{content:"\f2e0"}.fa-centos:before{content:"\f789"}.fa-adn:before{content:"\f170"}.fa-cloudsmith:before{content:"\f384"}.fa-opensuse:before{content:"\e62b"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-codiepie:before{content:"\f284"}.fa-node:before{content:"\f419"}.fa-mix:before{content:"\f3cb"}.fa-steam:before{content:"\f1b6"}.fa-cc-apple-pay:before{content:"\f416"}.fa-scribd:before{content:"\f28a"}.fa-debian:before{content:"\e60b"}.fa-openid:before{content:"\f19b"}.fa-instalod:before{content:"\e081"}.fa-expeditedssl:before{content:"\f23e"}.fa-sellcast:before{content:"\f2da"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-r-project:before{content:"\f4f7"}.fa-delicious:before{content:"\f1a5"}.fa-freebsd:before{content:"\f3a4"}.fa-vuejs:before{content:"\f41f"}.fa-accusoft:before{content:"\f369"}.fa-ioxhost:before{content:"\f208"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-app-store:before{content:"\f36f"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-itunes-note:before{content:"\f3b5"}.fa-golang:before{content:"\e40f"}.fa-kickstarter:before,.fa-square-kickstarter:before{content:"\f3bb"}.fa-grav:before{content:"\f2d6"}.fa-weibo:before{content:"\f18a"}.fa-uncharted:before{content:"\e084"}.fa-firstdraft:before{content:"\f3a1"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-wikipedia-w:before{content:"\f266"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-angellist:before{content:"\f209"}.fa-galactic-republic:before{content:"\f50c"}.fa-nfc-directional:before{content:"\e530"}.fa-skype:before{content:"\f17e"}.fa-joget:before{content:"\f3b7"}.fa-fedora:before{content:"\f798"}.fa-stripe-s:before{content:"\f42a"}.fa-meta:before{content:"\e49b"}.fa-laravel:before{content:"\f3bd"}.fa-hotjar:before{content:"\f3b1"}.fa-bluetooth-b:before{content:"\f294"}.fa-square-letterboxd:before{content:"\e62e"}.fa-sticker-mule:before{content:"\f3f7"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-hips:before{content:"\f452"}.fa-behance:before{content:"\f1b4"}.fa-reddit:before{content:"\f1a1"}.fa-discord:before{content:"\f392"}.fa-chrome:before{content:"\f268"}.fa-app-store-ios:before{content:"\f370"}.fa-cc-discover:before{content:"\f1f2"}.fa-wpbeginner:before{content:"\f297"}.fa-confluence:before{content:"\f78d"}.fa-shoelace:before{content:"\e60c"}.fa-mdb:before{content:"\f8ca"}.fa-dochub:before{content:"\f394"}.fa-accessible-icon:before{content:"\f368"}.fa-ebay:before{content:"\f4f4"}.fa-amazon:before{content:"\f270"}.fa-unsplash:before{content:"\e07c"}.fa-yarn:before{content:"\f7e3"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-500px:before{content:"\f26e"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-asymmetrik:before{content:"\f372"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-gratipay:before{content:"\f184"}.fa-apple:before{content:"\f179"}.fa-hive:before{content:"\e07f"}.fa-gitkraken:before{content:"\f3a6"}.fa-keybase:before{content:"\f4f5"}.fa-apple-pay:before{content:"\f415"}.fa-padlet:before{content:"\e4a0"}.fa-amazon-pay:before{content:"\f42c"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-stumbleupon:before{content:"\f1a4"}.fa-fedex:before{content:"\f797"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-shopify:before{content:"\e057"}.fa-neos:before{content:"\f612"}.fa-square-threads:before{content:"\e619"}.fa-hackerrank:before{content:"\f5f7"}.fa-researchgate:before{content:"\f4f8"}.fa-swift:before{content:"\f8e1"}.fa-angular:before{content:"\f420"}.fa-speakap:before{content:"\f3f3"}.fa-angrycreative:before{content:"\f36e"}.fa-y-combinator:before{content:"\f23b"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-google-scholar:before{content:"\e63b"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-studiovinari:before{content:"\f3f8"}.fa-pied-piper:before{content:"\f2ae"}.fa-wordpress:before{content:"\f19a"}.fa-product-hunt:before{content:"\f288"}.fa-firefox:before{content:"\f269"}.fa-linode:before{content:"\f2b8"}.fa-goodreads:before{content:"\f3a8"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-jsfiddle:before{content:"\f1cc"}.fa-sith:before{content:"\f512"}.fa-themeisle:before{content:"\f2b2"}.fa-page4:before{content:"\f3d7"}.fa-hashnode:before{content:"\e499"}.fa-react:before{content:"\f41b"}.fa-cc-paypal:before{content:"\f1f4"}.fa-squarespace:before{content:"\f5be"}.fa-cc-stripe:before{content:"\f1f5"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-bitcoin:before{content:"\f379"}.fa-keycdn:before{content:"\f3ba"}.fa-opera:before{content:"\f26a"}.fa-itch-io:before{content:"\f83a"}.fa-umbraco:before{content:"\f8e8"}.fa-galactic-senate:before{content:"\f50d"}.fa-ubuntu:before{content:"\f7df"}.fa-draft2digital:before{content:"\f396"}.fa-stripe:before{content:"\f429"}.fa-houzz:before{content:"\f27c"}.fa-gg:before{content:"\f260"}.fa-dhl:before{content:"\f790"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-xing:before{content:"\f168"}.fa-blackberry:before{content:"\f37b"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-playstation:before{content:"\f3df"}.fa-quinscape:before{content:"\f459"}.fa-less:before{content:"\f41d"}.fa-blogger-b:before{content:"\f37d"}.fa-opencart:before{content:"\f23d"}.fa-vine:before{content:"\f1ca"}.fa-signal-messenger:before{content:"\e663"}.fa-paypal:before{content:"\f1ed"}.fa-gitlab:before{content:"\f296"}.fa-typo3:before{content:"\f42b"}.fa-reddit-alien:before{content:"\f281"}.fa-yahoo:before{content:"\f19e"}.fa-dailymotion:before{content:"\e052"}.fa-affiliatetheme:before{content:"\f36b"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-bootstrap:before{content:"\f836"}.fa-odnoklassniki:before{content:"\f263"}.fa-nfc-symbol:before{content:"\e531"}.fa-mintbit:before{content:"\e62f"}.fa-ethereum:before{content:"\f42e"}.fa-speaker-deck:before{content:"\f83c"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-patreon:before{content:"\f3d9"}.fa-avianex:before{content:"\f374"}.fa-ello:before{content:"\f5f1"}.fa-gofore:before{content:"\f3a7"}.fa-bimobject:before{content:"\f378"}.fa-brave-reverse:before{content:"\e63d"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-web-awesome:before{content:"\e682"}.fa-mandalorian:before{content:"\f50f"}.fa-first-order-alt:before{content:"\f50a"}.fa-osi:before{content:"\f41a"}.fa-google-wallet:before{content:"\f1ee"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-periscope:before{content:"\f3da"}.fa-fulcrum:before{content:"\f50b"}.fa-cloudscale:before{content:"\f383"}.fa-forumbee:before{content:"\f211"}.fa-mizuni:before{content:"\f3cc"}.fa-schlix:before{content:"\f3ea"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-bandcamp:before{content:"\f2d5"}.fa-wpforms:before{content:"\f298"}.fa-cloudversify:before{content:"\f385"}.fa-usps:before{content:"\f7e1"}.fa-megaport:before{content:"\f5a3"}.fa-magento:before{content:"\f3c4"}.fa-spotify:before{content:"\f1bc"}.fa-optin-monster:before{content:"\f23c"}.fa-fly:before{content:"\f417"}.fa-aviato:before{content:"\f421"}.fa-itunes:before{content:"\f3b4"}.fa-cuttlefish:before{content:"\f38c"}.fa-blogger:before{content:"\f37c"}.fa-flickr:before{content:"\f16e"}.fa-viber:before{content:"\f409"}.fa-soundcloud:before{content:"\f1be"}.fa-digg:before{content:"\f1a6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-letterboxd:before{content:"\e62d"}.fa-symfony:before{content:"\f83d"}.fa-maxcdn:before{content:"\f136"}.fa-etsy:before{content:"\f2d7"}.fa-facebook-messenger:before{content:"\f39f"}.fa-audible:before{content:"\f373"}.fa-think-peaks:before{content:"\f731"}.fa-bilibili:before{content:"\e3d9"}.fa-erlang:before{content:"\f39d"}.fa-x-twitter:before{content:"\e61b"}.fa-cotton-bureau:before{content:"\f89e"}.fa-dashcube:before{content:"\f210"}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-stack-exchange:before{content:"\f18d"}.fa-elementor:before{content:"\f430"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-palfed:before{content:"\f3d8"}.fa-superpowers:before{content:"\f2dd"}.fa-resolving:before{content:"\f3e7"}.fa-xbox:before{content:"\f412"}.fa-square-web-awesome-stroke:before{content:"\e684"}.fa-searchengin:before{content:"\f3eb"}.fa-tiktok:before{content:"\e07b"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-renren:before{content:"\f18b"}.fa-linux:before{content:"\f17c"}.fa-glide:before{content:"\f2a5"}.fa-linkedin:before{content:"\f08c"}.fa-hubspot:before{content:"\f3b2"}.fa-deploydog:before{content:"\f38e"}.fa-twitch:before{content:"\f1e8"}.fa-ravelry:before{content:"\f2d9"}.fa-mixer:before{content:"\e056"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-vimeo:before{content:"\f40a"}.fa-mendeley:before{content:"\f7b3"}.fa-uniregistry:before{content:"\f404"}.fa-figma:before{content:"\f799"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-dropbox:before{content:"\f16b"}.fa-instagram:before{content:"\f16d"}.fa-cmplid:before{content:"\e360"}.fa-upwork:before{content:"\e641"}.fa-facebook:before{content:"\f09a"}.fa-gripfire:before{content:"\f3ac"}.fa-jedi-order:before{content:"\f50e"}.fa-uikit:before{content:"\f403"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-phabricator:before{content:"\f3db"}.fa-ussunnah:before{content:"\f407"}.fa-earlybirds:before{content:"\f39a"}.fa-trade-federation:before{content:"\f513"}.fa-autoprefixer:before{content:"\f41c"}.fa-whatsapp:before{content:"\f232"}.fa-square-upwork:before{content:"\e67c"}.fa-slideshare:before{content:"\f1e7"}.fa-google-play:before{content:"\f3ab"}.fa-viadeo:before{content:"\f2a9"}.fa-line:before{content:"\f3c0"}.fa-google-drive:before{content:"\f3aa"}.fa-servicestack:before{content:"\f3ec"}.fa-simplybuilt:before{content:"\f215"}.fa-bitbucket:before{content:"\f171"}.fa-imdb:before{content:"\f2d8"}.fa-deezer:before{content:"\e077"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-jira:before{content:"\f7b1"}.fa-docker:before{content:"\f395"}.fa-screenpal:before{content:"\e570"}.fa-bluetooth:before{content:"\f293"}.fa-gitter:before{content:"\f426"}.fa-d-and-d:before{content:"\f38d"}.fa-microblog:before{content:"\e01a"}.fa-cc-diners-club:before{content:"\f24c"}.fa-gg-circle:before{content:"\f261"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-yandex:before{content:"\f413"}.fa-readme:before{content:"\f4d5"}.fa-html5:before{content:"\f13b"}.fa-sellsy:before{content:"\f213"}.fa-square-web-awesome:before{content:"\e683"}.fa-sass:before{content:"\f41e"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-buromobelexperte:before{content:"\f37f"}.fa-salesforce:before{content:"\f83b"}.fa-octopus-deploy:before{content:"\e082"}.fa-medapps:before{content:"\f3c6"}.fa-ns8:before{content:"\f3d5"}.fa-pinterest-p:before{content:"\f231"}.fa-apper:before{content:"\f371"}.fa-fort-awesome:before{content:"\f286"}.fa-waze:before{content:"\f83f"}.fa-bluesky:before{content:"\e671"}.fa-cc-jcb:before{content:"\f24b"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-rust:before{content:"\e07a"}.fa-wix:before{content:"\f5cf"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-supple:before{content:"\f3f9"}.fa-webflow:before{content:"\e65c"}.fa-rebel:before{content:"\f1d0"}.fa-css3:before{content:"\f13c"}.fa-staylinked:before{content:"\f3f5"}.fa-kaggle:before{content:"\f5fa"}.fa-space-awesome:before{content:"\e5ac"}.fa-deviantart:before{content:"\f1bd"}.fa-cpanel:before{content:"\f388"}.fa-goodreads-g:before{content:"\f3a9"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-trello:before{content:"\f181"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-get-pocket:before{content:"\f265"}.fa-perbyte:before{content:"\e083"}.fa-grunt:before{content:"\f3ad"}.fa-weebly:before{content:"\f5cc"}.fa-connectdevelop:before{content:"\f20e"}.fa-leanpub:before{content:"\f212"}.fa-black-tie:before{content:"\f27e"}.fa-themeco:before{content:"\f5c6"}.fa-python:before{content:"\f3e2"}.fa-android:before{content:"\f17b"}.fa-bots:before{content:"\e340"}.fa-free-code-camp:before{content:"\f2c5"}.fa-hornbill:before{content:"\f592"}.fa-js:before{content:"\f3b8"}.fa-ideal:before{content:"\e013"}.fa-git:before{content:"\f1d3"}.fa-dev:before{content:"\f6cc"}.fa-sketch:before{content:"\f7c6"}.fa-yandex-international:before{content:"\f414"}.fa-cc-amex:before{content:"\f1f3"}.fa-uber:before{content:"\f402"}.fa-github:before{content:"\f09b"}.fa-php:before{content:"\f457"}.fa-alipay:before{content:"\f642"}.fa-youtube:before{content:"\f167"}.fa-skyatlas:before{content:"\f216"}.fa-firefox-browser:before{content:"\e007"}.fa-replyd:before{content:"\f3e6"}.fa-suse:before{content:"\f7d6"}.fa-jenkins:before{content:"\f3b6"}.fa-twitter:before{content:"\f099"}.fa-rockrms:before{content:"\f3e9"}.fa-pinterest:before{content:"\f0d2"}.fa-buffer:before{content:"\f837"}.fa-npm:before{content:"\f3d4"}.fa-yammer:before{content:"\f840"}.fa-btc:before{content:"\f15a"}.fa-dribbble:before{content:"\f17d"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-internet-explorer:before{content:"\f26b"}.fa-stubber:before{content:"\e5c7"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-old-republic:before{content:"\f510"}.fa-odysee:before{content:"\e5c6"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-node-js:before{content:"\f3d3"}.fa-edge-legacy:before{content:"\e078"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-medrt:before{content:"\f3c8"}.fa-usb:before{content:"\f287"}.fa-tumblr:before{content:"\f173"}.fa-vaadin:before{content:"\f408"}.fa-quora:before{content:"\f2c4"}.fa-square-x-twitter:before{content:"\e61a"}.fa-reacteurope:before{content:"\f75d"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-amilia:before{content:"\f36d"}.fa-mixcloud:before{content:"\f289"}.fa-flipboard:before{content:"\f44d"}.fa-viacoin:before{content:"\f237"}.fa-critical-role:before{content:"\f6c9"}.fa-sitrox:before{content:"\e44a"}.fa-discourse:before{content:"\f393"}.fa-joomla:before{content:"\f1aa"}.fa-mastodon:before{content:"\f4f6"}.fa-airbnb:before{content:"\f834"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-buy-n-large:before{content:"\f8a6"}.fa-gulp:before{content:"\f3ae"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-strava:before{content:"\f428"}.fa-ember:before{content:"\f423"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-teamspeak:before{content:"\f4f9"}.fa-pushed:before{content:"\f3e1"}.fa-wordpress-simple:before{content:"\f411"}.fa-nutritionix:before{content:"\f3d6"}.fa-wodu:before{content:"\e088"}.fa-google-pay:before{content:"\e079"}.fa-intercom:before{content:"\f7af"}.fa-zhihu:before{content:"\f63f"}.fa-korvue:before{content:"\f42f"}.fa-pix:before{content:"\e43a"}.fa-steam-symbol:before{content:"\f3f6"}html{--pst-header-height:4rem;--pst-header-article-height:calc(var(--pst-header-height)*2/3);--pst-sidebar-secondary:17rem;--pst-font-size-base:1rem;--pst-font-size-h1:2.625rem;--pst-font-size-h2:2.125rem;--pst-font-size-h3:1.75rem;--pst-font-size-h4:1.5rem;--pst-font-size-h5:1.25rem;--pst-font-size-h6:1rem;--pst-font-size-milli:0.9rem;--pst-sidebar-font-size:0.9rem;--pst-sidebar-font-size-mobile:1.1rem;--pst-sidebar-header-font-size:1.2rem;--pst-sidebar-header-font-weight:600;--pst-admonition-font-weight-heading:600;--pst-font-weight-caption:300;--pst-font-weight-heading:600;--pst-font-family-base-system:-apple-system,"BlinkMacSystemFont","Segoe UI","Helvetica Neue","Arial",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--pst-font-family-monospace-system:"SFMono-Regular","Menlo","Consolas","Monaco","Liberation Mono","Lucida Console",monospace;--pst-font-family-base:var(--pst-font-family-base-system);--pst-font-family-heading:var(--pst-font-family-base-system);--pst-font-family-monospace:var(--pst-font-family-monospace-system);--pst-font-size-icon:1.5rem;--pst-icon-check-circle:"";--pst-icon-info-circle:"";--pst-icon-exclamation-triangle:"";--pst-icon-exclamation-circle:"";--pst-icon-times-circle:"";--pst-icon-lightbulb:"";--pst-icon-download:"";--pst-icon-angle-left:"";--pst-icon-angle-right:"";--pst-icon-external-link:"";--pst-icon-search-minus:"";--pst-icon-github:"";--pst-icon-gitlab:"";--pst-icon-share:"";--pst-icon-bell:"";--pst-icon-pencil:"";--pst-breadcrumb-divider:"";--pst-icon-admonition-default:var(--pst-icon-bell);--pst-icon-admonition-note:var(--pst-icon-info-circle);--pst-icon-admonition-attention:var(--pst-icon-exclamation-circle);--pst-icon-admonition-caution:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-warning:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-danger:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-error:var(--pst-icon-times-circle);--pst-icon-admonition-hint:var(--pst-icon-lightbulb);--pst-icon-admonition-tip:var(--pst-icon-lightbulb);--pst-icon-admonition-important:var(--pst-icon-exclamation-circle);--pst-icon-admonition-seealso:var(--pst-icon-share);--pst-icon-admonition-todo:var(--pst-icon-pencil);--pst-icon-versionmodified-default:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-added:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-changed:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-deprecated:var(--pst-icon-exclamation-circle);font-size:var(--pst-font-size-base);scroll-padding-top:calc(var(--pst-header-height) + 1rem)}body{background-color:var(--pst-color-background);color:var(--pst-color-text-base);display:flex;flex-direction:column;font-family:var(--pst-font-family-base);font-weight:400;line-height:1.65;min-height:100vh}body::-webkit-scrollbar-track{background-color:var(--pst-color-background)}p{font-size:1em;margin-bottom:1.15rem}p.rubric{border-bottom:1px solid var(--pst-color-border)}p.centered{text-align:center}a{word-wrap:break-word;color:var(--pst-color-link);text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em}a:hover{color:var(--pst-color-link-hover);text-decoration-skip-ink:none;text-decoration-thickness:max(3px,.1875rem,.12em)}a:active,a:visited{color:var(--pst-color-link)}a:visited:hover{color:var(--pst-color-link-hover)}a.headerlink{color:var(--pst-color-secondary);font-size:.8em;margin-left:.2em;padding:0 4px;text-decoration:none;user-select:none}a.github:before,a.gitlab:before{color:var(--pst-color-text-muted);font:var(--fa-font-brands);margin-right:.25rem}a.github:before{content:var(--pst-icon-github)}a.gitlab:before{content:var(--pst-icon-gitlab)}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:var(--pst-font-family-heading);font-weight:var(--pst-font-weight-heading);line-height:1.15;margin:2.75rem 0 1.05rem}.h1,h1{font-size:var(--pst-font-size-h1);margin-top:0}.h1,.h2,h1,h2{color:var(--pst-color-heading)}.h2,h2{font-size:var(--pst-font-size-h2)}.h3,h3{font-size:var(--pst-font-size-h3)}.h3,.h4,h3,h4{color:var(--pst-color-heading)}.h4,h4{font-size:var(--pst-font-size-h4)}.h5,h5{font-size:var(--pst-font-size-h5)}.h5,.h6,h5,h6{color:var(--pst-color-text-base)}.h6,h6{font-size:var(--pst-font-size-h6)}.small,.text_small,small{font-size:var(--pst-font-size-milli)}hr{border:0;border-top:1px solid var(--pst-color-border)}code,kbd,pre,samp{font-family:var(--pst-font-family-monospace)}kbd{background-color:var(--pst-color-on-background);color:var(--pst-color-text-muted)}kbd:not(.compound){border:1px solid var(--pst-color-border);box-shadow:1px 1px 1px var(--pst-color-shadow);margin:0 .1rem;padding:.1rem .4rem}code{color:var(--pst-color-inline-code)}pre{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:.25rem;color:var(--pst-color-text-base);line-height:1.2em;margin:1.5em 0;padding:1rem}pre .linenos{opacity:.8;padding-right:10px}#pst-back-to-top{background-color:var(--pst-color-secondary);border:none;color:var(--pst-color-secondary-text);display:none;left:50vw;position:fixed;top:90vh;transform:translate(-50%);z-index:1080}#pst-back-to-top .fa-arrow-up{margin-inline-end:.5em}#pst-back-to-top:hover{background-color:var(--pst-color-secondary-highlight);color:var(--pst-color-link-hover);color:var(--pst-color-secondary-highlight-text);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-decoration-thickness:1px;text-underline-offset:.1578em}#pst-back-to-top:focus-visible{box-shadow:none;outline:var(--pst-color-accent) solid .1875rem;outline-color:var(--pst-color-secondary);outline-offset:.1875rem}:focus-visible{box-shadow:none;outline:var(--pst-color-accent) solid .1875rem}.skip-link{background-color:var(--pst-color-warning);border-bottom:1px solid var(--pst-color-border);left:0;padding:.5rem;position:fixed;right:0;text-align:center;top:0;transform:translateY(-100%);transition:transform .15s ease-in-out;z-index:1055}.skip-link:focus-within{transform:translateY(0)}.skip-link a{color:var(--pst-color-warning-text)!important}.skip-link a:focus-visible{outline-color:#14181e}.bd-container{display:flex;flex-grow:1;justify-content:center}.bd-container .bd-container__inner{display:flex}.bd-page-width{width:100%}@media (min-width:960px){.bd-page-width{max-width:88rem}}.pst-async-banner-revealer{height:0;overflow:hidden;transition:height .3s ease-in-out}@media (prefers-reduced-motion){.pst-async-banner-revealer{transition:none}}#bd-header-version-warning,.bd-header-announcement{align-items:center;display:flex;justify-content:center;min-height:3rem;padding:.5rem 12.5%;position:relative;text-align:center;width:100%}@media (max-width:959.98px){#bd-header-version-warning,.bd-header-announcement{padding:.5rem 2%}}#bd-header-version-warning p,.bd-header-announcement p{font-weight:700;margin:0}#bd-header-version-warning a,.bd-header-announcement a{color:var(--pst-color-inline-code-links)}#bd-header-version-warning .pst-button-link-to-stable-version,.bd-header-announcement .pst-button-link-to-stable-version{background-color:var(--pst-color-danger);border-color:var(--pst-color-danger);border-radius:.25rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;color:var(--pst-color-danger-text)}#bd-header-version-warning .pst-button-link-to-stable-version:hover,.bd-header-announcement .pst-button-link-to-stable-version:hover{background-color:var(--pst-color-danger-highlight);border-color:var(--pst-color-danger-highlight);color:var(--pst-color-link-hover);color:var(--pst-color-danger-highlight-text);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-decoration-thickness:1px;text-underline-offset:.1578em}#bd-header-version-warning .pst-button-link-to-stable-version:focus-visible,.bd-header-announcement .pst-button-link-to-stable-version:focus-visible{outline:.1875rem solid var(--pst-color-danger);outline-offset:.1875rem}.bd-header-announcement{background-color:var(--pst-color-secondary-bg)}#bd-header-version-warning{background-color:var(--pst-color-danger-bg)}.bd-main{display:flex;flex-direction:column;flex-grow:1;min-width:0}.bd-main .bd-content{display:flex;height:100%;justify-content:center}.bd-main .bd-content .bd-article-container{display:flex;flex-direction:column;justify-content:start;max-width:60em;overflow-x:auto;padding:1rem;width:100%}@media (min-width:1200px){.bd-main .bd-content .bd-article-container .bd-article{padding-left:2rem;padding-top:1.5rem}}.bd-footer{border-top:1px solid var(--pst-color-border);width:100%}.bd-footer .bd-footer__inner{display:flex;flex-grow:1;margin:auto;padding:1rem}.bd-footer .footer-items__center,.bd-footer .footer-items__end,.bd-footer .footer-items__start{display:flex;flex-direction:column;flex-grow:1;gap:.5rem;justify-content:center}.bd-footer .footer-items__center{text-align:center}.bd-footer .footer-items__end{text-align:end}.bd-footer .footer-item p{margin-bottom:0}.bd-footer-article{margin-top:auto}.bd-footer-article .footer-article-items{display:flex;flex-direction:column}.bd-footer-content .footer-content-items{display:flex;flex-direction:column;margin-top:auto}.bd-header{background-color:var(--pst-color-on-background)!important;box-shadow:0 .125rem .25rem 0 var(--pst-color-shadow);justify-content:center;max-width:100vw;padding:0;position:sticky;top:0;width:100%;z-index:1030}.bd-header .bd-header__inner{align-items:center;display:flex;height:fit-content;padding-left:1rem;padding-right:1rem}.bd-header :focus-visible{border-radius:.125rem}.bd-header .navbar-item{align-items:center;display:flex;height:var(--pst-header-height);max-height:var(--pst-header-height)}.bd-header .navbar-header-items{display:none;flex-shrink:1}@media (min-width:960px){.bd-header .navbar-header-items{display:inherit;flex-grow:1;padding:0 0 0 .5rem}}.bd-header .navbar-header-items__center,.bd-header .navbar-header-items__end,.bd-header .navbar-header-items__start{align-items:center;display:flex;flex-flow:wrap;row-gap:0}.bd-header .navbar-header-items__center,.bd-header .navbar-header-items__end{column-gap:1.12rem}.bd-header .navbar-header-items__start{flex-shrink:0;gap:.5rem;margin-right:auto}.bd-header .navbar-header-items__end{justify-content:end}.bd-header ul.navbar-nav{display:flex}@media (min-width:960px){.bd-header ul.navbar-nav{align-items:baseline}}.bd-header ul.navbar-nav>li.nav-item{margin-inline:2px}.bd-header ul.navbar-nav>li.nav-item>.nav-link{color:var(--pst-color-text-muted);padding-inline:6px;position:relative}.bd-header ul.navbar-nav>li.nav-item>.nav-link:before{background-color:transparent;content:"";display:block;inset:0;bottom:calc(max(3px, .1875rem, .12em)*-1);margin:max(3px,.1875rem,.12em) 0;position:absolute}.bd-header ul.navbar-nav>li.nav-item>.nav-link:hover{color:var(--pst-color-secondary);text-decoration:none}.bd-header ul.navbar-nav>li.nav-item>.nav-link:hover:before{border-bottom:max(3px,.1875rem,.12em) solid var(--pst-color-secondary)}.bd-header ul.navbar-nav>li.nav-item>.nav-link:focus-visible{box-shadow:none;outline:3px solid var(--pst-color-accent);outline-offset:.1875rem}.bd-header ul.navbar-nav>li.nav-item.current>.nav-link{color:var(--pst-color-primary)}.bd-header ul.navbar-nav>li.nav-item.current>.nav-link:before{border-bottom:3px solid var(--pst-color-primary)}.bd-header ul.navbar-nav>li.nav-item.dropdown{margin-inline:4px}.bd-header ul.navbar-nav>li.nav-item.dropdown button{padding-inline:8px}.bd-header ul.navbar-nav>li.nav-item.dropdown>.dropdown-toggle{border-radius:.125rem;color:var(--pst-color-text-muted)}.bd-header ul.navbar-nav>li.nav-item.dropdown>.dropdown-toggle:focus-visible{box-shadow:0 0 0 .1875rem var(--pst-color-accent)}.bd-header ul.navbar-nav>li.nav-item.dropdown>.dropdown-toggle:hover{box-shadow:0 0 0 .1875rem var(--pst-color-link-hover);color:var(--pst-color-text-base);text-decoration:none}.bd-header ul.navbar-nav li a.nav-link.dropdown-item{color:var(--pst-color-text-muted);text-decoration:none}.bd-header ul.navbar-nav li a.nav-link.dropdown-item:hover{color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.bd-header ul.navbar-nav .dropdown button{border:none;display:unset}.bd-header ul.navbar-nav .dropdown button:hover{color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.bd-header ul.navbar-nav .dropdown .dropdown-menu{background-color:var(--pst-color-on-background);border:1px solid var(--pst-color-border);box-shadow:0 0 .3rem .1rem var(--pst-color-shadow);margin:.5rem 0;min-width:20rem;padding:.5rem 0;z-index:1070}.bd-header ul.navbar-nav .dropdown .dropdown-menu .dropdown-item{padding:.25rem 1.5rem}.bd-header ul.navbar-nav .dropdown .dropdown-menu .dropdown-item:focus:not(:hover,:active){background-color:inherit}.bd-header ul.navbar-nav .dropdown .dropdown-menu .dropdown-item:focus-visible{z-index:10}.bd-header ul.navbar-nav .dropdown .dropdown-menu:not(.show){display:none}.bd-header button.sidebar-toggle{background-color:inherit;color:var(--pst-color-muted);font-size:var(--pst-font-size-icon);margin-bottom:0;padding:.5rem}.bd-header button.primary-toggle{margin-right:1rem}@media (min-width:960px){.bd-header button.primary-toggle{display:none}}.bd-header button.secondary-toggle{margin-left:1rem}@media (min-width:1200px){.bd-header button.secondary-toggle{display:none}}@media (min-width:960px){.navbar-center-items .navbar-item{display:inline-block}}.nav-link{transition:none}.nav-link:hover{color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.nav-link.nav-external:after{content:var(--pst-icon-external-link);font:var(--fa-font-solid);font-size:.75em;margin-left:.3em}.bd-navbar-elements li.nav-item i{font-size:.7rem;padding-left:2px;vertical-align:middle}.navbar-persistent--mobile{margin-left:auto}@media (min-width:960px){.navbar-persistent--mobile{display:none}}.navbar-persistent--container{display:none}@media (min-width:960px){.navbar-persistent--container{display:flex}}.header-article__inner{padding:0 .5rem}.header-article__inner .header-article-item{min-height:var(--pst-header-article-height)}.header-article__inner .header-article-items__end{margin-left:auto}.bd-sidebar-primary{background-color:var(--pst-color-background);border-right:1px solid var(--pst-color-border);display:flex;flex:0 0 auto;flex-direction:column;font-size:var(--pst-sidebar-font-size-mobile);gap:1rem;max-height:calc(100vh - var(--pst-header-height));overflow-y:auto;padding:2rem 1rem 1rem;position:sticky;top:var(--pst-header-height);width:25%}@media (min-width:960px){.bd-sidebar-primary{font-size:var(--pst-sidebar-font-size)}}.bd-sidebar-primary :focus-visible{border-radius:.125rem}.bd-sidebar-primary .nav-link{font-size:var(--pst-sidebar-font-size-mobile)}.bd-sidebar-primary.no-sidebar{border-right:0}@media (min-width:960px){.bd-sidebar-primary.hide-on-wide{display:none}}.bd-sidebar-primary .h1,.bd-sidebar-primary .h2,.bd-sidebar-primary .h3,.bd-sidebar-primary .h4,.bd-sidebar-primary h1,.bd-sidebar-primary h2,.bd-sidebar-primary h3,.bd-sidebar-primary h4{color:var(--pst-color-text-base)}.bd-sidebar-primary .sidebar-primary-items__end .sidebar-primary-item,.bd-sidebar-primary .sidebar-primary-items__start .sidebar-primary-item{padding:.5rem 0}.bd-sidebar-primary .sidebar-header-items{display:flex;flex-direction:column}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__title{color:var(--pst-color-text-base);font-size:var(--pst-sidebar-header-font-size);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}.bd-sidebar-primary .sidebar-header-items .bd-navbar-elements .nav-link:focus-visible{box-shadow:none;outline:var(--pst-color-accent) solid .1875rem;outline-offset:.1875rem}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__center{display:flex;flex-direction:column}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__end{align-items:center;display:flex;gap:1rem}@media (min-width:960px){.bd-sidebar-primary .sidebar-header-items{display:none}}.bd-sidebar-primary .sidebar-primary-items__start{border-top:1px solid var(--pst-color-border)}@media (min-width:960px){.bd-sidebar-primary .sidebar-primary-items__start{border-top:none}}.bd-sidebar-primary .sidebar-primary-items__end{margin-bottom:1em;margin-top:auto}.bd-sidebar-primary .list-caption{list-style:none;padding-left:0}.bd-sidebar-primary .list-caption li.toctree-l0.has-children>details>summary{align-items:baseline;display:flex;height:auto;justify-content:space-between;position:relative;width:auto}.bd-sidebar-primary .list-caption li.toctree-l0.has-children>details>summary .toctree-toggle{flex:0 0 auto}.bd-sidebar-primary .list-caption li.toctree-l0.has-children>details>summary .toctree-toggle .fa-chevron-down{font-size:1rem}.bd-sidebar-primary li.has-children{position:relative}.bd-sidebar-primary li.has-children .caption,.bd-sidebar-primary li.has-children>.reference{margin-right:calc(30px + .1875rem);padding-top:.25rem}.bd-sidebar-primary li.has-children>details>summary{list-style:none}.bd-sidebar-primary li.has-children>details>summary::-webkit-details-marker{display:none}.bd-sidebar-primary li.has-children>details>summary:focus-visible{outline:none}.bd-sidebar-primary li.has-children>details>summary:focus-visible>.toctree-toggle{outline:var(--pst-color-accent) solid .1875rem;outline-offset:-.1875rem}.bd-sidebar-primary li.has-children>details>summary .toctree-toggle{align-items:center;cursor:pointer;display:inline-flex;height:30px;justify-content:center;position:absolute;right:0;top:0;width:30px}.bd-sidebar-primary li.has-children>details>summary .toctree-toggle .fa-chevron-down{font-size:.75rem}.bd-sidebar-primary li.has-children>details[open]>summary .fa-chevron-down{transform:rotate(180deg)}nav.bd-links{margin-right:-1rem}@media (min-width:960px){nav.bd-links{display:block}}nav.bd-links ul{display:block;list-style:none}nav.bd-links ul ul{padding:0 0 0 1rem}nav.bd-links li>a{box-shadow:none;color:var(--pst-color-text-muted);display:block;margin-right:.1875rem;padding:.25rem .65rem;text-decoration:none}nav.bd-links li>a:hover{background-color:transparent;text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(3px,.1875rem,.12em)}nav.bd-links li>a:active,nav.bd-links li>a:hover{color:var(--pst-color-link-hover)}nav.bd-links li>a:focus-visible{box-shadow:0 0 0 .1875rem var(--pst-color-accent);outline:none;z-index:10}nav.bd-links li>a.reference.external:after{content:var(--pst-icon-external-link);font:var(--fa-font-solid);font-size:.75em;margin-left:.3em}nav.bd-links .current>a{background-color:transparent;box-shadow:inset max(3px,.1875rem,.12em) 0 0 var(--pst-color-primary);color:var(--pst-color-primary);font-weight:600}nav.bd-links .current>a:focus-visible{box-shadow:inset max(3px,.1875rem,.12em) 0 0 var(--pst-color-primary),0 0 0 .1875rem var(--pst-color-accent);outline:none}nav.bd-links p.bd-links__title{font-size:var(--pst-sidebar-header-font-size)}nav.bd-links p.bd-links__title,nav.bd-links p.caption{font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}nav.bd-links p.caption{color:var(--pst-color-text-base);font-size:var(--pst-sidebar-font-size-mobile);margin-top:1.25rem;position:relative}nav.bd-links p.caption:first-child{margin-top:0}@media (min-width:960px){nav.bd-links p.caption{font-size:var(--pst-sidebar-font-size)}}.bd-sidebar-secondary{background-color:var(--pst-color-background);display:flex;flex-direction:column;flex-shrink:0;font-size:var(--pst-sidebar-font-size-mobile);max-height:calc(100vh - var(--pst-header-height));order:2;overflow-y:auto;padding:2rem 1rem 1rem;position:sticky;top:var(--pst-header-height);width:var(--pst-sidebar-secondary)}@media (min-width:1200px){.bd-sidebar-secondary{font-size:var(--pst-sidebar-font-size)}}.sidebar-secondary-item{padding:.5rem}@media (min-width:1200px){.sidebar-secondary-item{border-left:1px solid var(--pst-color-border);padding-left:1rem}}.sidebar-secondary-item i{padding-right:.5rem}.bd-sidebar::backdrop{background-color:#000;opacity:.5}@media (max-width:959.98px){.bd-sidebar-primary{border:0;flex-grow:0.75;height:100vh;left:0;margin-left:-75%;max-height:100vh;max-width:350px;position:fixed;top:0;transition:visibility .2s ease-out,margin .2s ease-out;visibility:hidden;width:75%;z-index:1055}}.bd-sidebar-primary[open]{margin-left:0;visibility:visible}@media (max-width:1199.98px){.bd-sidebar-secondary{border:0;flex-grow:0.75;height:100vh;margin-right:-75%;max-height:100vh;max-width:350px;position:fixed;right:0;top:0;transition:visibility .2s ease-out,margin .2s ease-out;visibility:hidden;width:75%;z-index:1055}}.bd-sidebar-secondary[open]{margin-right:0;visibility:visible}ul.bd-breadcrumbs{display:flex;flex-wrap:wrap;font-size:.8rem;list-style:none;padding-left:0}ul.bd-breadcrumbs li.breadcrumb-item{align-items:center;display:flex;font-weight:700;overflow-x:hidden;white-space:nowrap}ul.bd-breadcrumbs li.breadcrumb-item .ellipsis,ul.bd-breadcrumbs li.breadcrumb-item a{margin:.1875rem;overflow-x:hidden;text-overflow:ellipsis}ul.bd-breadcrumbs li.breadcrumb-item a{color:var(--pst-color-text-muted);text-decoration:none}ul.bd-breadcrumbs li.breadcrumb-item a:hover{color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}ul.bd-breadcrumbs li.breadcrumb-item:not(.breadcrumb-home):before{color:var(--pst-color-text-muted);content:var(--pst-breadcrumb-divider);font:var(--fa-font-solid);font-size:.8rem;padding:0 .5rem}html .pst-navbar-icon{align-items:center;border:none;border-radius:0;box-sizing:border-box;color:var(--pst-color-text-muted);display:flex;font-size:1rem;height:2.15rem;justify-content:center;line-height:1.65;min-height:24px;min-width:24px;padding:.25rem 0;position:relative}html .pst-navbar-icon:before{background-color:transparent;content:"";display:block;inset:0;bottom:calc(max(3px, .1875rem, .12em)*-1);margin:max(3px,.1875rem,.12em) 0;position:absolute}html .pst-navbar-icon:hover{color:var(--pst-color-secondary);text-decoration:none}html .pst-navbar-icon:hover:before{border-bottom:max(3px,.1875rem,.12em) solid var(--pst-color-secondary)}html .pst-navbar-icon:focus-visible{box-shadow:none;outline:3px solid var(--pst-color-accent);outline-offset:.1875rem}ul.navbar-icon-links{align-items:center;column-gap:1.12rem;display:flex;flex-flow:row wrap;justify-content:space-evenly;list-style:none;margin-bottom:0;padding-left:0}ul.navbar-icon-links i.fa-brands,ul.navbar-icon-links i.fa-regular,ul.navbar-icon-links i.fa-solid{font-size:var(--pst-font-size-icon);font-style:normal;vertical-align:middle}ul.navbar-icon-links i.fa-square-twitter:before{color:#55acee}ul.navbar-icon-links i.fa-square-gitlab:before{color:#548}ul.navbar-icon-links i.fa-bitbucket:before{color:#0052cc}ul.navbar-icon-links img.icon-link-image{border-radius:.2rem;height:1.5em}ul.navbar-icon-links .fa-pydata{stroke:var(--pst-color-background);stroke-linejoin:round;stroke-width:.35}.navbar-brand{align-items:center;display:flex;flex-shrink:0;gap:.5rem;height:var(--pst-header-height);margin:0;max-height:var(--pst-header-height);padding:.5rem 0;position:relative;width:auto}.navbar-brand p{color:var(--pst-color-text-base);margin-bottom:0}.navbar-brand img{height:100%;max-width:100%;width:auto}.navbar-brand:hover,.navbar-brand:visited:hover{color:var(--pst-color-link-hover);color:var(--pst-color-text-base);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}ul.navbar-nav ul{padding:0 0 0 1rem}ul.navbar-nav li{display:flex;flex-direction:column}ul.navbar-nav li a{align-items:center;color:var(--pst-color-text-muted);display:flex;height:100%;padding-bottom:.25rem;padding-top:.25rem;text-decoration:none}ul.navbar-nav li a:hover{color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.page-toc .section-nav{border-bottom:none;padding-left:0}.page-toc .section-nav ul{padding-left:1rem}.page-toc .nav-link{font-size:var(--pst-sidebar-font-size-mobile)}@media (min-width:1200px){.page-toc .nav-link{font-size:var(--pst-sidebar-font-size)}}.page-toc .onthispage{color:var(--pst-color-text-base);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}.prev-next-area{width:100%}.prev-next-area p{color:var(--pst-color-text-muted);line-height:1.3em;margin:0 .3em}.prev-next-area i{font-size:1.2em}.prev-next-area a{align-items:center;border:none;color:var(--pst-color-text-muted);display:flex;max-width:45%;overflow-x:hidden;padding:10px;text-decoration:none}.prev-next-area a p.prev-next-title{word-wrap:break-word;color:var(--pst-color-link);font-size:1.1em;font-weight:var(--pst-admonition-font-weight-heading);text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em}.prev-next-area a p.prev-next-title:hover{color:var(--pst-color-link-hover);text-decoration-skip-ink:none;text-decoration-thickness:max(3px,.1875rem,.12em)}.prev-next-area a p.prev-next-title:active,.prev-next-area a p.prev-next-title:visited{color:var(--pst-color-link)}.prev-next-area a p.prev-next-title:visited:hover{color:var(--pst-color-link-hover)}.prev-next-area a:hover p.prev-next-title,.prev-next-area a:visited:hover p.prev-next-title{color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.prev-next-area a .prev-next-info{flex-direction:column;margin:0 .5em}.prev-next-area a .prev-next-info .prev-next-subtitle{text-transform:capitalize}.prev-next-area a.left-prev{float:left}.prev-next-area a.right-next{float:right}.prev-next-area a.right-next div.prev-next-info{text-align:right}.bd-search{border:1px solid var(--pst-color-border);border-radius:.25rem;color:var(--pst-color-text-base);gap:.5rem;padding-left:.5rem;position:relative}.bd-search,.bd-search:active{background-color:var(--pst-color-background)}.bd-search:active{color:var(--pst-color-text-muted)}.bd-search:focus-within{box-shadow:0 0 0 .1875rem var(--pst-color-accent)}.bd-search:focus-within input:focus{box-shadow:none}.bd-search .icon{color:var(--pst-color-border);left:25px;position:absolute}.bd-search .fa-solid.fa-magnifying-glass{color:var(--pst-color-text-muted);left:calc(1.25rem - .35em);position:absolute}.bd-search input.form-control{background-color:var(--pst-color-background);border:none;color:var(--pst-color-text-base)}.bd-search input.form-control::placeholder{color:var(--pst-color-text-muted)}.bd-search input.form-control::-webkit-search-cancel-button,.bd-search input.form-control::-webkit-search-decoration{appearance:none}.bd-search input.form-control:focus,.bd-search input.form-control:focus-visible{color:var(--pst-color-text-muted)}.bd-search .search-button__kbd-shortcut{color:var(--pst-color-border);display:none;margin-inline-end:.5rem}@media (min-width:720px){.bd-search .search-button__kbd-shortcut{display:flex}}.search-button i{font-size:1.3rem}#pst-search-dialog{display:none}#pst-search-dialog[open]{background-color:transparent;border:none;display:flex;left:50%;margin-top:.5rem;max-width:800px;padding:.1875rem;position:fixed;right:1rem;top:30%;transform:translate(-50%,-50%);width:90%;z-index:1055}#pst-search-dialog[open]::backdrop{background-color:#000;opacity:.5}#pst-search-dialog[open] form.bd-search{flex-grow:1}#pst-search-dialog[open] form.bd-search input,#pst-search-dialog[open] form.bd-search svg{font-size:var(--pst-font-size-icon)}.search-button-field{align-items:center;background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:1.5em;color:var(--pst-color-text-muted);display:inline-flex;padding:.5em}.search-button-field:hover{box-shadow:0 0 0 .1875rem var(--pst-color-link-hover)}.search-button-field:focus-visible{border-radius:1.5em}.search-button-field .search-button__default-text{font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);margin-left:.5em;margin-right:.5em}.search-button-field .kbd-shortcut__modifier{font-size:.75em}.search-button-field>*{align-items:center}.search-button-field>:not(svg){display:none}@media (min-width:960px){.search-button-field>:not(svg){display:flex}}div#searchbox p.highlight-link{box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;margin:1rem 0;width:fit-content}@media (min-width:1200px){div#searchbox p.highlight-link{margin-left:2rem}}div#searchbox p.highlight-link a{background-color:var(--pst-color-primary);border-radius:.25rem;color:var(--pst-color-primary-text);font-size:1.25rem;padding:.75rem;text-decoration:none;transition:box-shadow .25s ease-out}div#searchbox p.highlight-link a:hover{box-shadow:inset 0 0 50px 50px rgba(0,0,0,.25)}div#searchbox p.highlight-link a:before{color:unset;content:var(--pst-icon-search-minus);font:var(--fa-font-solid);margin-right:.5rem}.theme-switch-button .theme-switch{display:none}.theme-switch-button .theme-switch:active{color:var(--pst-color-link-hover);text-decoration:none}.theme-switch-button .theme-switch .fa-lg{aspect-ratio:1/1}html[data-mode=auto] .theme-switch-button .theme-switch[data-mode=auto],html[data-mode=dark] .theme-switch-button .theme-switch[data-mode=dark],html[data-mode=light] .theme-switch-button .theme-switch[data-mode=light]{display:inline}button.btn.version-switcher__button{border-color:var(--pst-color-border);color:var(--pst-color-text-base);margin-bottom:1em}@media (min-width:960px){button.btn.version-switcher__button{margin-bottom:unset}}button.btn.version-switcher__button:hover{border-color:transparent;box-shadow:0 0 0 .1875rem var(--pst-color-secondary)}button.btn.version-switcher__button:active{border-color:var(--pst-color-border);color:var(--pst-color-text-base)}button.btn.version-switcher__button:focus-visible{border-color:transparent}.version-switcher__menu{border-color:var(--pst-color-border);border-radius:var(--bs-dropdown-border-radius)}.version-switcher__menu a.list-group-item{background-color:var(--pst-color-on-background);color:var(--pst-color-text-base);padding:.75rem 1.25rem}.version-switcher__menu a.list-group-item:not(:last-child){border-bottom:1px solid var(--pst-color-border)}.version-switcher__menu a.list-group-item:hover{background-color:var(--pst-color-surface);color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.version-switcher__menu a.list-group-item.active{box-shadow:inset max(3px,.1875rem,.12em) 0 0 var(--pst-color-primary);color:var(--pst-color-primary);font-weight:600;position:relative;z-index:1}.version-switcher__menu a.list-group-item.active:focus-visible{box-shadow:inset max(3px,.1875rem,.12em) 0 0 var(--pst-color-primary),0 0 0 .1875rem var(--pst-color-accent);outline:none}.version-switcher__menu a.list-group-item.active span:before{content:"";height:100%;left:0;position:absolute;top:0;width:100%;z-index:-1}.version-switcher__menu a.list-group-item:focus-visible{z-index:10}.version-switcher__menu,button.version-switcher__button{box-sizing:border-box;font-size:1.1em;min-height:24px;min-width:24px;z-index:1055}@media (min-width:960px){.version-switcher__menu,button.version-switcher__button{font-size:unset}}nav.page-toc{margin-bottom:1rem}.bd-toc .nav .nav{display:none}.bd-toc .nav .nav.visible,.bd-toc .nav>.active>ul,.toc-entry{display:block}.toc-entry a.nav-link,.toc-entry a>code{color:var(--pst-color-text-muted)}.toc-entry a.nav-link{display:block;margin-left:-1rem;padding:.25rem 0 .25rem 1rem;text-decoration:none}.toc-entry a.nav-link:hover{background-color:transparent;text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(3px,.1875rem,.12em)}.toc-entry a.nav-link:active,.toc-entry a.nav-link:hover{color:var(--pst-color-link-hover)}.toc-entry a.nav-link:focus-visible{box-shadow:0 0 0 .1875rem var(--pst-color-accent);outline:none;z-index:10}.toc-entry a.nav-link.active{background-color:transparent;box-shadow:inset max(3px,.1875rem,.12em) 0 0 var(--pst-color-primary);color:var(--pst-color-primary);font-weight:600}.toc-entry a.nav-link.active:focus-visible{box-shadow:inset max(3px,.1875rem,.12em) 0 0 var(--pst-color-primary),0 0 0 .1875rem var(--pst-color-accent);outline:none}.toc-entry a.nav-link.active:hover{color:var(--pst-color-link-hover)}.toc-entry a.nav-link:focus-visible{border-radius:.125rem}div.deprecated,div.versionadded,div.versionchanged{background-color:var(--pst-color-on-background);border-left:.2rem solid;border-color:var(--pst-color-info);border-radius:.25rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;break-inside:avoid;margin:1.5625em auto;overflow:hidden;padding:0 .6rem;page-break-inside:avoid;position:relative;vertical-align:middle}div.deprecated>p,div.versionadded>p,div.versionchanged>p{margin-bottom:.6rem;margin-top:.6rem}div.versionadded{background-color:var(--pst-color-success-bg);border-color:var(--pst-color-success)}div.versionchanged{background-color:var(--pst-color-warning-bg);border-color:var(--pst-color-warning)}div.deprecated{background-color:var(--pst-color-danger-bg);border-color:var(--pst-color-danger)}span.versionmodified{font-weight:600}span.versionmodified:before{color:var(--pst-color-info);content:var(--pst-icon-versionmodified-default);font:var(--fa-font-solid);margin-right:.6rem}span.versionmodified.added:before{color:var(--pst-color-success);content:var(--pst-icon-versionmodified-added)}span.versionmodified.changed:before{color:var(--pst-color-warning);content:var(--pst-icon-versionmodified-changed)}span.versionmodified.deprecated:before{color:var(--pst-color-danger);content:var(--pst-icon-versionmodified-deprecated)}.sidebar-indices-items{border-top:1px solid var(--pst-color-border);display:flex;flex-direction:column}@media (min-width:960px){.sidebar-indices-items{border-top:none}}.sidebar-indices-items .sidebar-indices-items__title{color:var(--pst-color-text-base);font-size:var(--pst-sidebar-header-font-size);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}.sidebar-indices-items ul.indices-link{list-style:none;margin-right:-1rem;padding:0}.sidebar-indices-items ul.indices-link li>a{color:var(--pst-color-text-muted);display:block;padding:.25rem 0}.sidebar-indices-items ul.indices-link li>a:hover{background-color:transparent;color:var(--pst-color-primary);text-decoration:none}.admonition,div.admonition{background-color:var(--pst-color-on-background);border-left:.2rem solid;border-color:var(--pst-color-info);border-radius:.25rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;break-inside:avoid;margin:1.5625em auto;overflow:hidden;padding:0 .6rem .8rem;page-break-inside:avoid}.admonition :last-child,div.admonition :last-child{margin-bottom:0}.admonition p.admonition-title~*,div.admonition p.admonition-title~*{margin-left:1.4rem;margin-right:1.4rem}.admonition>ol,.admonition>ul,div.admonition>ol,div.admonition>ul{margin-left:1em}.admonition>.admonition-title,div.admonition>.admonition-title{background-color:var(--pst-color-info-bg);font-weight:var(--pst-admonition-font-weight-heading);margin:0 -.6rem;padding:.4rem .6rem .4rem 2rem;position:relative;z-index:1}.admonition>.admonition-title:before,div.admonition>.admonition-title:before{content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}.admonition>.admonition-title:after,div.admonition>.admonition-title:after{color:var(--pst-color-info);content:var(--pst-icon-admonition-default);font:var(--fa-font-solid);height:1rem;left:.5rem;line-height:inherit;opacity:1;position:absolute;width:1rem}.admonition>.admonition-title+*,div.admonition>.admonition-title+*{margin-top:.4em}.admonition.attention,div.admonition.attention{border-color:var(--pst-color-attention)}.admonition.attention>.admonition-title,div.admonition.attention>.admonition-title{background-color:var(--pst-color-attention-bg)}.admonition.attention>.admonition-title:after,div.admonition.attention>.admonition-title:after{color:var(--pst-color-attention);content:var(--pst-icon-admonition-attention)}.admonition.caution,div.admonition.caution{border-color:var(--pst-color-warning)}.admonition.caution>.admonition-title,div.admonition.caution>.admonition-title{background-color:var(--pst-color-warning-bg)}.admonition.caution>.admonition-title:after,div.admonition.caution>.admonition-title:after{color:var(--pst-color-warning);content:var(--pst-icon-admonition-caution)}.admonition.warning,div.admonition.warning{border-color:var(--pst-color-warning)}.admonition.warning>.admonition-title,div.admonition.warning>.admonition-title{background-color:var(--pst-color-warning-bg)}.admonition.warning>.admonition-title:after,div.admonition.warning>.admonition-title:after{color:var(--pst-color-warning);content:var(--pst-icon-admonition-warning)}.admonition.danger,div.admonition.danger{border-color:var(--pst-color-danger)}.admonition.danger>.admonition-title,div.admonition.danger>.admonition-title{background-color:var(--pst-color-danger-bg)}.admonition.danger>.admonition-title:after,div.admonition.danger>.admonition-title:after{color:var(--pst-color-danger);content:var(--pst-icon-admonition-danger)}.admonition.error,div.admonition.error{border-color:var(--pst-color-danger)}.admonition.error>.admonition-title,div.admonition.error>.admonition-title{background-color:var(--pst-color-danger-bg)}.admonition.error>.admonition-title:after,div.admonition.error>.admonition-title:after{color:var(--pst-color-danger);content:var(--pst-icon-admonition-error)}.admonition.hint,div.admonition.hint{border-color:var(--pst-color-success)}.admonition.hint>.admonition-title,div.admonition.hint>.admonition-title{background-color:var(--pst-color-success-bg)}.admonition.hint>.admonition-title:after,div.admonition.hint>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-hint)}.admonition.tip,div.admonition.tip{border-color:var(--pst-color-success)}.admonition.tip>.admonition-title,div.admonition.tip>.admonition-title{background-color:var(--pst-color-success-bg)}.admonition.tip>.admonition-title:after,div.admonition.tip>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-tip)}.admonition.important,div.admonition.important{border-color:var(--pst-color-attention)}.admonition.important>.admonition-title,div.admonition.important>.admonition-title{background-color:var(--pst-color-attention-bg)}.admonition.important>.admonition-title:after,div.admonition.important>.admonition-title:after{color:var(--pst-color-attention);content:var(--pst-icon-admonition-important)}.admonition.note,div.admonition.note{border-color:var(--pst-color-info)}.admonition.note>.admonition-title,div.admonition.note>.admonition-title{background-color:var(--pst-color-info-bg)}.admonition.note>.admonition-title:after,div.admonition.note>.admonition-title:after{color:var(--pst-color-info);content:var(--pst-icon-admonition-note)}.admonition.seealso,div.admonition.seealso{border-color:var(--pst-color-success)}.admonition.seealso>.admonition-title,div.admonition.seealso>.admonition-title{background-color:var(--pst-color-success-bg)}.admonition.seealso>.admonition-title:after,div.admonition.seealso>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-seealso)}.admonition.admonition-todo,div.admonition.admonition-todo{border-color:var(--pst-color-secondary)}.admonition.admonition-todo>.admonition-title,div.admonition.admonition-todo>.admonition-title{background-color:var(--pst-color-secondary-bg)}.admonition.admonition-todo>.admonition-title:after,div.admonition.admonition-todo>.admonition-title:after{color:var(--pst-color-secondary);content:var(--pst-icon-admonition-todo)}.admonition.sidebar,div.admonition.sidebar{border-width:0 0 0 .2rem;clear:both;float:right;margin-left:.5rem;margin-top:0;max-width:40%}.admonition.sidebar.attention,.admonition.sidebar.important,div.admonition.sidebar.attention,div.admonition.sidebar.important{border-color:var(--pst-color-attention)}.admonition.sidebar.caution,.admonition.sidebar.warning,div.admonition.sidebar.caution,div.admonition.sidebar.warning{border-color:var(--pst-color-warning)}.admonition.sidebar.danger,.admonition.sidebar.error,div.admonition.sidebar.danger,div.admonition.sidebar.error{border-color:var(--pst-color-danger)}.admonition.sidebar.hint,.admonition.sidebar.seealso,.admonition.sidebar.tip,div.admonition.sidebar.hint,div.admonition.sidebar.seealso,div.admonition.sidebar.tip{border-color:var(--pst-color-success)}.admonition.sidebar.note,.admonition.sidebar.todo,div.admonition.sidebar.note,div.admonition.sidebar.todo{border-color:var(--pst-color-info)}.admonition.sidebar p.admonition-title~*,div.admonition.sidebar p.admonition-title~*{margin-left:0;margin-right:0}aside.topic,div.topic,div.topic.contents,nav.contents{background-color:var(--pst-color-surface);border-color:var(--pst-color-border);border-radius:.25rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;display:flex;flex-direction:column;padding:1rem 1.25rem}aside.topic .topic-title,div.topic .topic-title,div.topic.contents .topic-title,nav.contents .topic-title{margin:0 0 .5rem}aside.topic p,div.topic p,div.topic.contents p,nav.contents p{color:var(--pst-color-on-surface)!important}aside.topic ul.simple,div.topic ul.simple,div.topic.contents ul.simple,nav.contents ul.simple{padding-left:1rem}aside.topic ul.simple ul,div.topic ul.simple ul,div.topic.contents ul.simple ul,nav.contents ul.simple ul{padding-left:2em}aside.sidebar{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:.25rem;margin-left:.5rem;padding:0}aside.sidebar>:last-child{padding-bottom:1rem}aside.sidebar p.sidebar-title{border-bottom:1px solid var(--pst-color-border);font-family:var(--pst-font-family-heading);font-weight:var(--pst-admonition-font-weight-heading);margin-bottom:0;padding-bottom:.5rem;padding-top:.5rem;position:relative}aside.sidebar>:not(.sidebar-title):first-child,aside.sidebar>p.sidebar-title+*{margin-top:1rem}aside.sidebar>*{padding-left:1rem;padding-right:1rem}p.rubric{display:flex;flex-direction:column}.seealso dd{margin-bottom:0;margin-top:0}table.field-list{border-collapse:separate;border-spacing:10px;margin-left:1px}table.field-list th.field-name{background-color:var(--pst-color-surface);padding:1px 8px 1px 5px;white-space:nowrap}table.field-list td.field-body p{font-style:italic}table.field-list td.field-body p>strong{font-style:normal}table.field-list td.field-body blockquote{border-left:none;margin:0 0 .3em;padding-left:30px}.table.autosummary td:first-child{white-space:nowrap}.sig{font-family:var(--pst-font-family-monospace)}.sig-inline.c-texpr,.sig-inline.cpp-texpr{font-family:unset}.sig.c .k,.sig.c .kt,.sig.c .m,.sig.c .s,.sig.c .sc,.sig.cpp .k,.sig.cpp .kt,.sig.cpp .m,.sig.cpp .s,.sig.cpp .sc{color:var(--pst-color-text-base)}.sig-name{color:var(--pst-color-inline-code)}.sig-param .default_value,.sig-param .o{color:var(--pst-color-text-muted);font-weight:400}dt:target,span.highlighted{background-color:var(--pst-color-target)}.viewcode-back{font-family:var(--pst-font-family-base)}.viewcode-block:target{background-color:var(--pst-color-target);border-bottom:1px solid var(--pst-color-border);border-top:1px solid var(--pst-color-border);position:relative}dl>dt>a:has(.viewcode-link){float:right}dl>dt>a:has(.viewcode-link) .viewcode-link{float:none}dl[class]:not(.option-list,.field-list,.footnote,.glossary,.simple){margin-bottom:3rem}dl[class]:not(.option-list,.field-list,.footnote,.glossary,.simple) dd{margin-left:2rem}dl[class]:not(.option-list,.field-list,.footnote,.glossary,.simple) dd>dl.simple>dt{display:flex}dl[class]:not(.option-list,.field-list,.footnote,.glossary,.simple) dl.field-list{display:grid;grid-template-columns:unset}dl[class]:not(.option-list,.field-list,.footnote,.glossary,.simple) dt.field-even,dl[class]:not(.option-list,.field-list,.footnote,.glossary,.simple) dt.field-odd{background-color:var(--pst-color-surface);margin-bottom:.1rem;margin-top:.2rem}div.highlight,div.literal-block-wrapper,div[class*=highlight-]{border-radius:.25rem;break-inside:avoid;display:flex;flex-direction:column;width:unset}div.literal-block-wrapper{border:1px solid var(--pst-color-border);border-radius:.25rem}div.literal-block-wrapper div.code-block-caption{border-bottom:1px solid var(--pst-color-border);font-size:1rem;font-weight:var(--pst-font-weight-caption);margin:0;padding:.5rem}div.literal-block-wrapper div.code-block-caption a.headerlink{font-size:inherit}div.literal-block-wrapper div[class*=highlight-]{border-radius:0;margin:0}div.literal-block-wrapper div[class*=highlight-] pre{border:none;box-shadow:none}code.literal{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:.25rem;padding:.1rem .25rem}a>code{color:var(--pst-color-inline-code-links)}a>code:hover{color:var(--pst-color-link-hover)}span.linenos{opacity:.8!important}figure>a,figure>a>img,figure>img,figure>video{display:block;margin-left:auto;margin-right:auto}figure a.headerlink{font-size:inherit;position:absolute}figure:hover a.headerlink{visibility:visible}figure figcaption{color:var(--pst-color-text-muted);font-family:var(--pst-font-family-heading);font-weight:var(--pst-font-weight-caption);margin-left:auto;margin-right:auto;margin-top:.3rem;text-align:center}figure figcaption>p:last-child{margin-bottom:0}figure figcaption p{display:inline-block;text-align:start}figure figcaption table.table{margin-left:auto;margin-right:auto;width:fit-content}dt.label>span.brackets:not(:only-child):before{content:"["}dt.label>span.brackets:not(:only-child):after{content:"]"}a.footnote-reference{font-size:small;vertical-align:super}aside.footnote{margin-bottom:.5rem}aside.footnote:last-child{margin-bottom:1rem}aside.footnote span.backrefs,aside.footnote span.label{font-weight:700}aside.footnote:target{background-color:var(--pst-color-target)}div.doctest>div.highlight span.gp,span.linenos,table.highlighttable td.linenos{user-select:none}dd{margin-bottom:10px;margin-left:30px;margin-top:3px}ol,ul{padding-inline-start:2rem}ol li>p:first-child,ul li>p:first-child{margin-bottom:.25rem;margin-top:.25rem}blockquote{background-color:var(--pst-color-surface);border-left:.25em solid var(--pst-color-blockquote-notch);border-radius:.25rem;color:var(--pst-color-text-muted);padding:1em;position:relative}blockquote p{color:var(--pst-color-text-base)}blockquote .line-block{margin:0}blockquote p:last-child{margin-bottom:0}blockquote:before{content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}blockquote a{color:var(--pst-color-inline-code-links)}blockquote:before{z-index:-1}span.guilabel{background-color:var(--pst-color-info-bg);border:1px solid var(--pst-color-info);border-radius:4px;font-size:80%;font-weight:700;margin:auto 2px;padding:2.4px 6px;position:relative}span.guilabel:before{content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}a.reference.download:before{color:var(--pst-color-text-muted);content:var(--pst-icon-download);font:var(--fa-font-solid);font-size:.8em;padding:0 .25em}table{margin-left:auto;margin-right:auto}table.table-right{margin-right:0}table.table-left{margin-left:0}table caption{caption-side:top;color:var(--pst-color-text-muted);text-align:center}td.text-left,th.text-left{text-align:left}td.text-right,th.text-right{text-align:right}td.text-center,th.text-center{text-align:center}.table{--bs-table-bg:transparent;--bs-table-color:var( + --pst-color-text-base + );border:1px solid var(--pst-color-table-outer-border);color:var(--pst-color-table)}.table td~td,.table td~th,.table th~td,.table th~th{border-left:1px solid var(--pst-color-table-inner-border)}.table thead tr{background-color:var(--pst-color-table-heading-bg);border-bottom:2px solid var(--pst-color-primary)}.table tbody tr:nth-child(odd){background-color:var(--pst-color-table-row-zebra-low-bg)}.table tbody tr:nth-child(2n){background-color:var(--pst-color-table-row-zebra-high-bg)}.pst-scrollable-table-container{overflow-x:auto}.toctree-wrapper p.caption{font-size:1.5em;margin-bottom:0}.toctree-wrapper>ul{padding-left:0}.toctree-wrapper li[class^=toctree-l]{list-style:none;margin-bottom:.2em}.toctree-wrapper li[class^=toctree-l]>a{font-size:1.1em;list-style:none}.toctree-wrapper li[class^=toctree-l]>ul{list-style:none;padding-inline-start:1.5em}.toctree-wrapper .toctree-l1>a{font-size:1.3em}div.topic.contents ul.simple,nav.contents ul.simple{list-style:none;padding-left:0}div.math,span.math{align-items:center;display:flex;max-width:100%;overflow:hidden}span.math{display:inline-flex}div.math{flex-direction:row-reverse;gap:.5em}div.math span.eqno a.headerlink{font-size:1em;position:relative}div.math mjx-container{flex-grow:1;overflow:auto;padding-bottom:.2rem}div.math mjx-container mjx-assistive-mml{height:0}.ablog-sidebar-item .h2,.ablog-sidebar-item .h3,.ablog-sidebar-item h2,.ablog-sidebar-item h3{font-size:var(--pst-sidebar-header-font-size);margin-top:.5rem}.ablog-sidebar-item .h2 a,.ablog-sidebar-item .h3 a,.ablog-sidebar-item h2 a,.ablog-sidebar-item h3 a{color:var(--pst-color-text-base)}.ablog-sidebar-item ul{display:flex;flex-direction:column;gap:.5em;list-style:none;margin-bottom:0;overflow-y:hidden;padding-left:0}.ablog-sidebar-item ul.ablog-cloud{flex-flow:row wrap;gap:.5rem}.ablog-sidebar-item ul.ablog-cloud li{align-items:center;display:flex}.ablog__prev-next{display:flex;font-size:1.2em;padding:1rem 0}.ablog__prev-next>span{display:flex;max-width:45%}.ablog__prev-next>span a{align-items:center;display:flex;gap:1rem;line-height:1.5rem;margin-left:auto}.ablog__prev-next>span a i:before{color:var(--pst-color-text-base)}.ablog__prev-next span.ablog__prev i.fa-arrow-circle-left:before{content:var(--pst-icon-angle-left)}.ablog__prev-next span.ablog__spacer{display:none}.ablog__prev-next span.ablog__next{margin-left:auto;text-align:right}.ablog__prev-next span.ablog__next i.fa-arrow-circle-right:before{content:var(--pst-icon-angle-right)}.ablog__collection,.postlist{padding-left:0}.ablog__collection .ablog-post,.postlist .ablog-post{list-style:none}.ablog__collection .ablog-post .ablog-archive,.postlist .ablog-post .ablog-archive{display:flex;flex-flow:row wrap;font-size:.75rem;gap:1rem;list-style:none;padding-left:0}.ablog__collection .ablog-post .ablog-post-title,.postlist .ablog-post .ablog-post-title{font-size:1.25rem;margin-top:0}.ablog__collection .ablog-post .ablog-post-title a,.postlist .ablog-post .ablog-post-title a{font-weight:700}.ablog__collection .ablog-post .ablog-post-expand,.postlist .ablog-post .ablog-post-expand{margin-bottom:.5rem}.docutils.container{margin-left:unset;margin-right:unset;max-width:unset;padding-left:unset;padding-right:unset;width:unset}.btn{--bs-btn-focus-box-shadow:0 0 0 0.1875rem var(--pst-color-accent)}div.highlight button.copybtn{align-items:center;background-color:var(--pst-color-surface);border:none;display:flex;justify-content:center}div.highlight button.copybtn:not(.success){color:var(--pst-color-muted)}div.highlight button.copybtn:hover:not(.success){background-color:var(--pst-color-shadow);color:var(--pst-color-text)}div.highlight button.copybtn.o-tooltip--left:after{background-color:var(--pst-color-surface);color:var(--pst-color-text)}div.highlight button.copybtn:focus{opacity:1}div.highlight button.copybtn:focus-visible{outline:var(--pst-color-accent) solid .1875rem}div.highlight:has(button.copybtn){min-height:2em}#ethical-ad-placement .ethical-footer a,#ethical-ad-placement .ethical-footer a:active,#ethical-ad-placement .ethical-footer a:hover,#ethical-ad-placement .ethical-footer a:visited,#ethical-ad-placement .ethical-sidebar a,#ethical-ad-placement .ethical-sidebar a:active,#ethical-ad-placement .ethical-sidebar a:hover,#ethical-ad-placement .ethical-sidebar a:visited{color:var(--pst-color-text-base)}#ethical-ad-placement .ethical-footer,#ethical-ad-placement .ethical-sidebar{background-color:var(--pst-color-background);border:1px solid var(--pst-color-border);border-radius:5px;color:var(--pst-color-text-base);font-size:14px;line-height:20px}.bd-content div.jupyter_container{background-color:unset;border:none;box-shadow:none}.bd-content div.jupyter_container div.highlight,.bd-content div.jupyter_container div.output{border-radius:.25rem}.bd-content div.jupyter_container div.highlight{background-color:var(--pst-color-surface)}.bd-content div.jupyter_container .cell_input,.bd-content div.jupyter_container .cell_output{border-radius:.25rem}.bd-content div.jupyter_container .cell_input pre,.bd-content div.jupyter_container .cell_output pre{padding:1rem}html[data-theme=dark] div.graphviz>object.inheritance{color-scheme:normal;filter:brightness(.8) invert(.82) contrast(1.2)}.xr-wrap[hidden]{display:block!important}.jp-OutputArea-output.lm-Widget{overflow:auto}:root{--pst-teal-50:#f4fbfc;--pst-teal-100:#e9f6f8;--pst-teal-200:#d0ecf1;--pst-teal-300:#abdde6;--pst-teal-400:#3fb1c5;--pst-teal-500:#0a7d91;--pst-teal-600:#085d6c;--pst-teal-700:#064752;--pst-teal-800:#042c33;--pst-teal-900:#021b1f;--pst-violet-50:#f4eefb;--pst-violet-100:#e0c7ff;--pst-violet-200:#d5b4fd;--pst-violet-300:#b780ff;--pst-violet-400:#9c5ffd;--pst-violet-500:#8045e5;--pst-violet-600:#6432bd;--pst-violet-700:#4b258f;--pst-violet-800:#341a61;--pst-violet-900:#1e0e39;--pst-gray-50:#f9f9fa;--pst-gray-100:#f3f4f5;--pst-gray-200:#e5e7ea;--pst-gray-300:#d1d5da;--pst-gray-400:#9ca4af;--pst-gray-500:#677384;--pst-gray-600:#48566b;--pst-gray-700:#29313d;--pst-gray-800:#222832;--pst-gray-900:#14181e;--pst-pink-50:#fcf8fd;--pst-pink-100:#fcf0fa;--pst-pink-200:#f8dff5;--pst-pink-300:#f3c7ee;--pst-pink-400:#e47fd7;--pst-pink-500:#c132af;--pst-pink-600:#912583;--pst-pink-700:#6e1c64;--pst-pink-800:#46123f;--pst-pink-900:#2b0b27;--pst-foundation-white:#fff;--pst-foundation-black:#14181e}html:not([data-theme]){--pst-color-primary:#0a7d91;--pst-color-primary-bg:#d0ecf1;--pst-color-secondary:#8045e5;--pst-color-secondary-bg:#e0c7ff;--pst-color-accent:#c132af;--pst-color-accent-bg:#f8dff5;--pst-color-info:#276be9;--pst-color-info-bg:#dce7fc;--pst-color-warning:#f66a0a;--pst-color-warning-bg:#f8e3d0;--pst-color-success:#00843f;--pst-color-success-bg:#d6ece1;--pst-color-attention:var(--pst-color-warning);--pst-color-attention-bg:var(--pst-color-warning-bg);--pst-color-danger:#d72d47;--pst-color-danger-bg:#f9e1e4;--pst-color-text-base:#222832;--pst-color-text-muted:#48566b;--pst-color-shadow:rgba(0,0,0,.1);--pst-color-border:#d1d5da;--pst-color-border-muted:rgba(23,23,26,.2);--pst-color-blockquote-notch:#677384;--pst-color-inline-code:#912583;--pst-color-inline-code-links:#085d6c;--pst-color-target:#f3cf95;--pst-color-table:#14181e;--pst-color-table-row-hover-bg:#d5b4fd;--pst-color-table-inner-border:#e5e7ea;--pst-color-background:#fff;--pst-color-on-background:#fff;--pst-color-surface:#f3f4f5;--pst-color-on-surface:#222832;--pst-color-heading:var(--pst-color-text-base);--pst-color-link:var(--pst-color-primary);--pst-color-link-hover:var(--pst-color-secondary);--pst-color-table-outer-border:var(--pst-color-surface);--pst-color-table-heading-bg:var(--pst-color-surface);--pst-color-table-row-zebra-high-bg:var(--pst-color-on-background);--pst-color-table-row-zebra-low-bg:var(--pst-color-surface)}html:not([data-theme]) .only-dark,html:not([data-theme]) .only-dark~figcaption{display:none!important}html[data-theme=light]{--pst-color-primary-bg:#d0ecf1;--pst-color-secondary-bg:#e0c7ff;--pst-color-accent:#c132af;--pst-color-accent-bg:#f8dff5;--pst-color-info-bg:#dce7fc;--pst-color-warning-bg:#f8e3d0;--pst-color-success-bg:#d6ece1;--pst-color-attention:var(--pst-color-warning);--pst-color-attention-bg:var(--pst-color-warning-bg);--pst-color-danger-bg:#f9e1e4;--pst-color-text-base:#222832;--pst-color-text-muted:#48566b;--pst-color-shadow:rgba(0,0,0,.1);--pst-color-border:#d1d5da;--pst-color-border-muted:rgba(23,23,26,.2);--pst-color-blockquote-notch:#677384;--pst-color-inline-code:#912583;--pst-color-inline-code-links:#085d6c;--pst-color-target:#f3cf95;--pst-color-table:#14181e;--pst-color-table-row-hover-bg:#d5b4fd;--pst-color-table-inner-border:#e5e7ea;--pst-color-background:#fff;--pst-color-on-background:#fff;--pst-color-surface:#f3f4f5;--pst-color-on-surface:#222832;--pst-color-heading:var(--pst-color-text-base);--pst-color-link:var(--pst-color-primary);--pst-color-link-hover:var(--pst-color-secondary);--pst-color-table-outer-border:var(--pst-color-surface);--pst-color-table-heading-bg:var(--pst-color-surface);--pst-color-table-row-zebra-high-bg:var(--pst-color-on-background);--pst-color-table-row-zebra-low-bg:var(--pst-color-surface);color-scheme:light}html[data-theme=light] .only-dark,html[data-theme=light] .only-dark~figcaption{display:none!important}html[data-theme=dark]{--pst-color-primary-bg:#042c33;--pst-color-secondary-bg:#341a61;--pst-color-accent:#e47fd7;--pst-color-accent-bg:#46123f;--pst-color-info-bg:#06245d;--pst-color-warning-bg:#652a02;--pst-color-success-bg:#002f17;--pst-color-attention:var(--pst-color-warning);--pst-color-attention-bg:var(--pst-color-warning-bg);--pst-color-danger-bg:#4e111b;--pst-color-text-base:#ced6dd;--pst-color-text-muted:#9ca4af;--pst-color-shadow:rgba(0,0,0,.2);--pst-color-border:#48566b;--pst-color-border-muted:#29313d;--pst-color-blockquote-notch:#9ca4af;--pst-color-inline-code:#f3c7ee;--pst-color-inline-code-links:#3fb1c5;--pst-color-target:#675c04;--pst-color-table:#fff;--pst-color-table-row-hover-bg:#4b258f;--pst-color-table-inner-border:#364150;--pst-color-background:#14181e;--pst-color-on-background:#222832;--pst-color-surface:#29313d;--pst-color-on-surface:#f3f4f5;--pst-color-heading:var(--pst-color-text-base);--pst-color-link:var(--pst-color-primary);--pst-color-link-hover:var(--pst-color-secondary);--pst-color-table-outer-border:var(--pst-color-surface);--pst-color-table-heading-bg:var(--pst-color-surface);--pst-color-table-row-zebra-high-bg:var(--pst-color-on-background);--pst-color-table-row-zebra-low-bg:var(--pst-color-surface);color-scheme:dark}html[data-theme=dark] .only-light,html[data-theme=dark] .only-light~figcaption{display:none!important}html[data-theme=dark] img:not(.only-dark,.dark-light){filter:brightness(.8) contrast(1.2)}html[data-theme=dark] .bd-content img:not(.only-dark,.dark-light){background-color:#fff;border-radius:.25rem}html[data-theme=dark] .MathJax_SVG *{fill:var(--pst-color-text-base)}.pst-color-primary{color:var(--pst-color-primary)}.pst-color-secondary{color:var(--pst-color-secondary)}.pst-color-accent{color:var(--pst-color-accent)}.pst-color-info{color:var(--pst-color-info)}.pst-color-warning{color:var(--pst-color-warning)}.pst-color-success{color:var(--pst-color-success)}.pst-color-attention{color:var(--pst-color-attention)}.pst-color-danger{color:var(--pst-color-danger)}.pst-color-text-base{color:var(--pst-color-text-base)}.pst-color-text-muted{color:var(--pst-color-text-muted)}.pst-color-shadow{color:var(--pst-color-shadow)}.pst-color-border{color:var(--pst-color-border)}.pst-color-border-muted{color:var(--pst-color-border-muted)}.pst-color-blockquote-notch{color:var(--pst-color-blockquote-notch)}.pst-color-inline-code{color:var(--pst-color-inline-code)}.pst-color-inline-code-links{color:var(--pst-color-inline-code-links)}.pst-color-target{color:var(--pst-color-target)}.pst-color-table{color:var(--pst-color-table)}.pst-color-table-row-hover{color:var(--pst-color-table-row-hover)}.pst-color-table-inner-border{color:var(--pst-color-table-inner-border)}.pst-color-background{color:var(--pst-color-background)}.pst-color-on-background{color:var(--pst-color-on-background)}.pst-color-surface{color:var(--pst-color-surface)}.pst-color-on-surface{color:var(--pst-color-on-surface)}html[data-theme=light]{--pst-color-primary:#0a7d91;--pst-color-primary-text:#fff;--pst-color-primary-highlight:#086b7c;--sd-color-primary:var(--pst-color-primary);--sd-color-primary-text:var(--pst-color-primary-text);--sd-color-primary-highlight:var(--pst-color-primary-highlight);--pst-color-primary-highlight-text:#fff;--sd-color-primary-bg:#d0ecf1;--sd-color-primary-bg-text:#14181e;--pst-color-secondary:#8045e5;--pst-color-secondary-text:#fff;--pst-color-secondary-highlight:#651ee0;--sd-color-secondary:var(--pst-color-secondary);--sd-color-secondary-text:var(--pst-color-secondary-text);--sd-color-secondary-highlight:var(--pst-color-secondary-highlight);--pst-color-secondary-highlight-text:#fff;--sd-color-secondary-bg:#e0c7ff;--sd-color-secondary-bg-text:#14181e;--pst-color-success:#00843f;--pst-color-success-text:#fff;--pst-color-success-highlight:#007036;--sd-color-success:var(--pst-color-success);--sd-color-success-text:var(--pst-color-success-text);--sd-color-success-highlight:var(--pst-color-success-highlight);--pst-color-success-highlight-text:#fff;--sd-color-success-bg:#d6ece1;--sd-color-success-bg-text:#14181e;--pst-color-info:#276be9;--pst-color-info-text:#fff;--pst-color-info-highlight:#1457d3;--sd-color-info:var(--pst-color-info);--sd-color-info-text:var(--pst-color-info-text);--sd-color-info-highlight:var(--pst-color-info-highlight);--pst-color-info-highlight-text:#fff;--sd-color-info-bg:#dce7fc;--sd-color-info-bg-text:#14181e;--pst-color-warning:#f66a0a;--pst-color-warning-text:#14181e;--pst-color-warning-highlight:#d25a07;--sd-color-warning:var(--pst-color-warning);--sd-color-warning-text:var(--pst-color-warning-text);--sd-color-warning-highlight:var(--pst-color-warning-highlight);--pst-color-warning-highlight-text:#14181e;--sd-color-warning-bg:#f8e3d0;--sd-color-warning-bg-text:#14181e;--pst-color-danger:#d72d47;--pst-color-danger-text:#fff;--pst-color-danger-highlight:#bb2239;--sd-color-danger:var(--pst-color-danger);--sd-color-danger-text:var(--pst-color-danger-text);--sd-color-danger-highlight:var(--pst-color-danger-highlight);--pst-color-danger-highlight-text:#fff;--sd-color-danger-bg:#f9e1e4;--sd-color-danger-bg-text:#14181e;--pst-color-light:#f3f4f5;--pst-color-light-text:#14181e;--pst-color-light-highlight:#c9cfd6;--sd-color-light:var(--pst-color-light);--sd-color-light-text:var(--pst-color-light-text);--sd-color-light-highlight:var(--pst-color-light-highlight);--pst-color-light-highlight-text:#14181e;--sd-color-light-bg:#f7f7f8;--sd-color-light-bg-text:#14181e;--pst-color-muted:#29313d;--pst-color-muted-text:#fff;--pst-color-muted-highlight:#212936;--sd-color-muted:var(--pst-color-muted);--sd-color-muted-text:var(--pst-color-muted-text);--sd-color-muted-highlight:var(--pst-color-muted-highlight);--pst-color-muted-highlight-text:#fff;--sd-color-muted-bg:#5a6c86;--sd-color-muted-bg-text:#fff;--pst-color-dark:#222832;--pst-color-dark-text:#fff;--pst-color-dark-highlight:#1b222c;--sd-color-dark:var(--pst-color-dark);--sd-color-dark-text:var(--pst-color-dark-text);--sd-color-dark-highlight:var(--pst-color-dark-highlight);--pst-color-dark-highlight-text:#fff;--pst-color-black:#14181e;--pst-color-black-text:#fff;--pst-color-black-highlight:#10141a;--sd-color-black:var(--pst-color-black);--sd-color-black-text:var(--pst-color-black-text);--sd-color-black-highlight:var(--pst-color-black-highlight);--pst-color-black-highlight-text:#fff;--pst-color-white:#fff;--pst-color-white-text:#14181e;--pst-color-white-highlight:#dbd7d7;--sd-color-white:var(--pst-color-white);--sd-color-white-text:var(--pst-color-white-text);--sd-color-white-highlight:var(--pst-color-white-highlight);--pst-color-white-highlight-text:#14181e}html[data-theme=dark]{--pst-color-primary:#3fb1c5;--pst-color-primary-text:#14181e;--pst-color-primary-highlight:#319aac;--sd-color-primary:var(--pst-color-primary);--sd-color-primary-text:var(--pst-color-primary-text);--sd-color-primary-highlight:var(--pst-color-primary-highlight);--pst-color-primary-highlight-text:#14181e;--sd-color-primary-bg:#042c33;--sd-color-primary-bg-text:#fff;--pst-color-secondary:#9c5ffd;--pst-color-secondary-text:#14181e;--pst-color-secondary-highlight:#7c2bfc;--sd-color-secondary:var(--pst-color-secondary);--sd-color-secondary-text:var(--pst-color-secondary-text);--sd-color-secondary-highlight:var(--pst-color-secondary-highlight);--pst-color-secondary-highlight-text:#fff;--sd-color-secondary-bg:#341a61;--sd-color-secondary-bg-text:#fff;--pst-color-success:#5fb488;--pst-color-success-text:#14181e;--pst-color-success-highlight:#47a373;--sd-color-success:var(--pst-color-success);--sd-color-success-text:var(--pst-color-success-text);--sd-color-success-highlight:var(--pst-color-success-highlight);--pst-color-success-highlight-text:#14181e;--sd-color-success-bg:#002f17;--sd-color-success-bg-text:#fff;--pst-color-info:#79a3f2;--pst-color-info-text:#14181e;--pst-color-info-highlight:#4681ee;--sd-color-info:var(--pst-color-info);--sd-color-info-text:var(--pst-color-info-text);--sd-color-info-highlight:var(--pst-color-info-highlight);--pst-color-info-highlight-text:#14181e;--sd-color-info-bg:#06245d;--sd-color-info-bg-text:#fff;--pst-color-warning:#ff9245;--pst-color-warning-text:#14181e;--pst-color-warning-highlight:#ff7614;--sd-color-warning:var(--pst-color-warning);--sd-color-warning-text:var(--pst-color-warning-text);--sd-color-warning-highlight:var(--pst-color-warning-highlight);--pst-color-warning-highlight-text:#14181e;--sd-color-warning-bg:#652a02;--sd-color-warning-bg-text:#fff;--pst-color-danger:#e78894;--pst-color-danger-text:#14181e;--pst-color-danger-highlight:#df596a;--sd-color-danger:var(--pst-color-danger);--sd-color-danger-text:var(--pst-color-danger-text);--sd-color-danger-highlight:var(--pst-color-danger-highlight);--pst-color-danger-highlight-text:#14181e;--sd-color-danger-bg:#4e111b;--sd-color-danger-bg-text:#fff;--pst-color-light:#f3f4f5;--pst-color-light-text:#14181e;--pst-color-light-highlight:#c9cfd6;--sd-color-light:var(--pst-color-light);--sd-color-light-text:var(--pst-color-light-text);--sd-color-light-highlight:var(--pst-color-light-highlight);--pst-color-light-highlight-text:#14181e;--sd-color-light-bg:#a3abb2;--sd-color-light-bg-text:#14181e;--pst-color-muted:#f3f4f5;--pst-color-muted-text:#14181e;--pst-color-muted-highlight:#c9cfd6;--sd-color-muted:var(--pst-color-muted);--sd-color-muted-text:var(--pst-color-muted-text);--sd-color-muted-highlight:var(--pst-color-muted-highlight);--pst-color-muted-highlight-text:#14181e;--sd-color-muted-bg:#1d222b;--sd-color-muted-bg-text:#fff;--pst-color-dark:#222832;--pst-color-dark-text:#fff;--pst-color-dark-highlight:#1b222c;--sd-color-dark:var(--pst-color-dark);--sd-color-dark-text:var(--pst-color-dark-text);--sd-color-dark-highlight:var(--pst-color-dark-highlight);--pst-color-dark-highlight-text:#fff;--pst-color-black:#14181e;--pst-color-black-text:#fff;--pst-color-black-highlight:#10141a;--sd-color-black:var(--pst-color-black);--sd-color-black-text:var(--pst-color-black-text);--sd-color-black-highlight:var(--pst-color-black-highlight);--pst-color-black-highlight-text:#fff;--pst-color-white:#fff;--pst-color-white-text:#14181e;--pst-color-white-highlight:#dbd7d7;--sd-color-white:var(--pst-color-white);--sd-color-white-text:var(--pst-color-white-text);--sd-color-white-highlight:var(--pst-color-white-highlight);--pst-color-white-highlight-text:#14181e}html[data-theme=dark],html[data-theme=light]{--sd-color-card-border:var(--pst-color-border)}html[data-theme=light] .sd-shadow-lg,html[data-theme=light] .sd-shadow-md,html[data-theme=light] .sd-shadow-sm,html[data-theme=light] .sd-shadow-xs{box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important}.bd-content .sd-card{border:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-header{background-color:var(--pst-color-on-background);border-bottom:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-footer{border-top:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-body,.bd-content .sd-card .sd-card-footer{background-color:var(--pst-color-on-background)}.bd-content .sd-card .sd-stretched-link:focus-visible{outline:none}.bd-content .sd-card .sd-stretched-link:focus-visible:after{border-radius:.25rem;outline:var(--pst-color-accent) solid .1875rem}.bd-content .sd-card.sd-card-hover:hover{border-color:var(--pst-color-link-hover)}.bd-content .sd-tab-set>input:checked+label{background-color:var(--pst-color-on-background);border-color:var(--pst-color-primary) var(--pst-color-primary) transparent;border-radius:.125rem .125rem 0 0;border-style:solid solid none;border-width:.125rem .125rem 0;color:var(--pst-color-primary);transform:translateY(.125rem)}.bd-content .sd-tab-set>input:focus-visible+label{background-color:var(--pst-color-accent-bg);border:.125rem solid var(--pst-color-accent);border-radius:.125rem;color:var(--pst-color-on-surface)}.bd-content .sd-tab-set>input:not(:checked,:focus-visible)+label:hover{border-color:transparent;color:var(--pst-color-secondary);text-decoration-line:underline;text-decoration-thickness:max(3px,.1875rem,.12em)}.bd-content .sd-tab-set>label{background-color:var(--pst-color-surface);border:.125rem solid transparent;border-radius:.125rem .125rem 0 0;color:var(--pst-color-on-surface);line-height:1.95;margin-inline-end:.25rem;padding:0 .75em}.bd-content .sd-tab-set .sd-tab-content,html[data-theme=dark] .bd-content .sd-tab-set>label{background-color:var(--pst-color-on-background)}.bd-content .sd-tab-set .sd-tab-content{border:.125rem solid var(--pst-color-primary);border-radius:.1875rem;box-shadow:unset;padding:.625rem}details.sd-dropdown{border:0!important;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important}details.sd-dropdown summary.sd-card-header{--pst-sd-dropdown-color:var(--pst-gray-500);--pst-sd-dropdown-bg-color:var(--pst-color-surface);align-items:center;background-color:var(--pst-sd-dropdown-bg-color)!important;border:0!important;border-left:.2rem solid var(--pst-sd-dropdown-color)!important;display:flex;font-weight:600;padding-bottom:.5rem;padding-top:.5rem;position:relative}details.sd-dropdown summary.sd-card-header+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-card-border);border:0}details.sd-dropdown summary.sd-card-header.sd-bg-primary,details.sd-dropdown summary.sd-card-header.sd-bg-primary+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-primary);--pst-sd-dropdown-bg-color:var(--sd-color-primary-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-primary{color:var(--sd-color-primary-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-secondary,details.sd-dropdown summary.sd-card-header.sd-bg-secondary+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-secondary);--pst-sd-dropdown-bg-color:var(--sd-color-secondary-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-secondary{color:var(--sd-color-secondary-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-success,details.sd-dropdown summary.sd-card-header.sd-bg-success+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-success);--pst-sd-dropdown-bg-color:var(--sd-color-success-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-success{color:var(--sd-color-success-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-info,details.sd-dropdown summary.sd-card-header.sd-bg-info+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-info);--pst-sd-dropdown-bg-color:var(--sd-color-info-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-info{color:var(--sd-color-info-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-warning,details.sd-dropdown summary.sd-card-header.sd-bg-warning+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-warning);--pst-sd-dropdown-bg-color:var(--sd-color-warning-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-warning{color:var(--sd-color-warning-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-danger,details.sd-dropdown summary.sd-card-header.sd-bg-danger+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-danger);--pst-sd-dropdown-bg-color:var(--sd-color-danger-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-danger{color:var(--sd-color-danger-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-light,details.sd-dropdown summary.sd-card-header.sd-bg-light+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-light);--pst-sd-dropdown-bg-color:var(--sd-color-light-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-light{color:var(--sd-color-light-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-muted,details.sd-dropdown summary.sd-card-header.sd-bg-muted+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-muted);--pst-sd-dropdown-bg-color:var(--sd-color-muted-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-muted{color:var(--sd-color-muted-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-dark,details.sd-dropdown summary.sd-card-header.sd-bg-dark+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-dark);--pst-sd-dropdown-bg-color:var(--sd-color-dark-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-dark{color:var(--sd-color-dark-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-black,details.sd-dropdown summary.sd-card-header.sd-bg-black+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-black);--pst-sd-dropdown-bg-color:var(--sd-color-black-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-black{color:var(--sd-color-black-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-white,details.sd-dropdown summary.sd-card-header.sd-bg-white+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-white);--pst-sd-dropdown-bg-color:var(--sd-color-white-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-white{color:var(--sd-color-white-bg-text)!important}details.sd-dropdown summary.sd-card-header:before{content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}details.sd-dropdown summary.sd-card-header+div.sd-summary-content{background-color:var(--pst-color-on-background);border-bottom-left-radius:calc(.25rem - 1px);border-left:.2rem solid var(--pst-sd-dropdown-color)!important}details.sd-dropdown summary.sd-card-header span.sd-summary-icon{align-items:center;color:var(--pst-sd-dropdown-color)!important;display:inline-flex}details.sd-dropdown summary.sd-card-header span.sd-summary-icon svg{opacity:1}details.sd-dropdown summary.sd-card-header .sd-summary-down,details.sd-dropdown summary.sd-card-header .sd-summary-up{top:.7rem}details.sd-dropdown summary.sd-card-header:hover{filter:brightness(.9)}html[data-theme=dark] details.sd-dropdown summary.sd-card-header:hover{filter:brightness(1.1)}details.sd-dropdown summary.sd-card-header:focus:focus-visible{border-radius:.1875rem;outline:var(--pst-color-accent) solid .1875rem;outline-offset:.125rem}details.sd-dropdown[open] summary.sd-card-header:focus:focus-visible{border-bottom-left-radius:0;border-bottom-right-radius:0}html .sd-btn{min-width:2.25rem;padding:.3125rem .75rem .4375rem}html .sd-btn:hover{color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-decoration-thickness:1px;text-underline-offset:.1578em}html .sd-btn-primary:hover{color:var(--pst-color-primary-highlight-text)!important}html .sd-btn-secondary:hover{color:var(--pst-color-secondary-highlight-text)!important}html .sd-btn-success:hover{color:var(--pst-color-success-highlight-text)!important}html .sd-btn-info:hover{color:var(--pst-color-info-highlight-text)!important}html .sd-btn-warning:hover{color:var(--pst-color-warning-highlight-text)!important}html .sd-btn-danger:hover{color:var(--pst-color-danger-highlight-text)!important}html .sd-btn-light:hover{color:var(--pst-color-light-highlight-text)!important}html .sd-btn-muted:hover{color:var(--pst-color-muted-highlight-text)!important}html .sd-btn-dark:hover{color:var(--pst-color-dark-highlight-text)!important}html .sd-btn-black:hover{color:var(--pst-color-black-highlight-text)!important}html .sd-btn-white:hover{color:var(--pst-color-white-highlight-text)!important}html .sd-btn-outline-primary:focus-visible,html .sd-btn-primary:focus-visible{background-color:var(--sd-color-primary)!important;border-color:var(--sd-color-primary)!important;border-radius:.1875rem;outline:var(--sd-color-primary) solid .1875rem;outline-offset:.125rem}html .sd-btn-outline-secondary:focus-visible,html .sd-btn-secondary:focus-visible{background-color:var(--sd-color-secondary)!important;border-color:var(--sd-color-secondary)!important;border-radius:.1875rem;outline:var(--sd-color-secondary) solid .1875rem;outline-offset:.125rem}html .sd-btn-outline-success:focus-visible,html .sd-btn-success:focus-visible{background-color:var(--sd-color-success)!important;border-color:var(--sd-color-success)!important;border-radius:.1875rem;outline:var(--sd-color-success) solid .1875rem;outline-offset:.125rem}html .sd-btn-info:focus-visible,html .sd-btn-outline-info:focus-visible{background-color:var(--sd-color-info)!important;border-color:var(--sd-color-info)!important;border-radius:.1875rem;outline:var(--sd-color-info) solid .1875rem;outline-offset:.125rem}html .sd-btn-outline-warning:focus-visible,html .sd-btn-warning:focus-visible{background-color:var(--sd-color-warning)!important;border-color:var(--sd-color-warning)!important;border-radius:.1875rem;outline:var(--sd-color-warning) solid .1875rem;outline-offset:.125rem}html .sd-btn-danger:focus-visible,html .sd-btn-outline-danger:focus-visible{background-color:var(--sd-color-danger)!important;border-color:var(--sd-color-danger)!important;border-radius:.1875rem;outline:var(--sd-color-danger) solid .1875rem;outline-offset:.125rem}html .sd-btn-light:focus-visible,html .sd-btn-outline-light:focus-visible{background-color:var(--sd-color-light)!important;border-color:var(--sd-color-light)!important;border-radius:.1875rem;outline:var(--sd-color-light) solid .1875rem;outline-offset:.125rem}html .sd-btn-muted:focus-visible,html .sd-btn-outline-muted:focus-visible{background-color:var(--sd-color-muted)!important;border-color:var(--sd-color-muted)!important;border-radius:.1875rem;outline:var(--sd-color-muted) solid .1875rem;outline-offset:.125rem}html .sd-btn-dark:focus-visible,html .sd-btn-outline-dark:focus-visible{background-color:var(--sd-color-dark)!important;border-color:var(--sd-color-dark)!important;border-radius:.1875rem;outline:var(--sd-color-dark) solid .1875rem;outline-offset:.125rem}html .sd-btn-black:focus-visible,html .sd-btn-outline-black:focus-visible{background-color:var(--sd-color-black)!important;border-color:var(--sd-color-black)!important;border-radius:.1875rem;outline:var(--sd-color-black) solid .1875rem;outline-offset:.125rem}html .sd-btn-outline-white:focus-visible,html .sd-btn-white:focus-visible{background-color:var(--sd-color-white)!important;border-color:var(--sd-color-white)!important;border-radius:.1875rem;outline:var(--sd-color-white) solid .1875rem;outline-offset:.125rem}.bd-content .dropdown.admonition.toggle .admonition-title:hover .tb-icon{opacity:1;scale:1.1}.bd-content .dropdown.admonition.toggle .admonition-title .tb-icon{opacity:.6}.bd-content .dropdown.admonition.toggle .admonition-title:hover{filter:brightness(.9)}html[data-theme=dark] .bd-content .dropdown.admonition.toggle .admonition-title:hover{filter:brightness(1.1)}.bd-content .dropdown.admonition.toggle .admonition-title:hover{box-shadow:none}.bd-content .dropdown.admonition.toggle button.toggle-button{color:inherit}.bd-content .dropdown.admonition.toggle button.toggle-button.toggle-button-hidden .toggle-chevron-right{transform:rotate(90deg);transition:none}.bd-content .dropdown.admonition.toggle button.toggle-button .toggle-chevron-right{transform:rotate(-90deg);transition:none}.bd-content .dropdown.admonition.toggle:has(:focus-visible){overflow:visible}.bd-content .dropdown.admonition.toggle:has(:focus-visible) .admonition-title:before{border-radius:.1875rem;content:"";height:100%;left:-.2rem;outline:var(--pst-color-accent) solid .1875rem;outline-offset:.125rem;width:calc(100% + .2rem)}.bd-content .dropdown.admonition.toggle:has(:focus-visible):not(.toggle-hidden) .admonition-title:before{border-bottom-left-radius:0;border-bottom-right-radius:0}.bd-content details.toggle-details summary{border-left:3px solid var(--pst-color-primary)}.bd-content details.toggle-details summary .toggle-chevron-right{transform:rotate(90deg);transition:none}.bd-content details.toggle-details summary:hover .tb-icon{opacity:1;scale:1.1}.bd-content details.toggle-details summary .tb-icon{opacity:.6}.bd-content details.toggle-details summary:hover{filter:brightness(.9)}html[data-theme=dark] .bd-content details.toggle-details summary:hover{filter:brightness(1.1)}.bd-content details.toggle-details summary:hover{box-shadow:none}.bd-content details.toggle-details summary:focus-visible{outline-offset:.125rem}.bd-content details.toggle-details[open] .toggle-chevron-right{transform:rotate(-90deg);transition:none}.bd-content details.toggle-details[open] :focus-visible{border-bottom-left-radius:0;border-bottom-right-radius:0}html .jp-RenderedHTMLCommon,html div.rendered_html{margin:.1875rem}html .jp-RenderedHTMLCommon table,html div.rendered_html table{table-layout:auto}.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe,.bd-content .nboutput .output_area.rendered_html table.dataframe{border:1px solid var(--pst-color-table-outer-border);color:var(--pst-color-table)}.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe td~td,.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe td~th,.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe th~td,.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe th~th,.bd-content .nboutput .output_area.rendered_html table.dataframe td~td,.bd-content .nboutput .output_area.rendered_html table.dataframe td~th,.bd-content .nboutput .output_area.rendered_html table.dataframe th~td,.bd-content .nboutput .output_area.rendered_html table.dataframe th~th{border-left:1px solid var(--pst-color-table-inner-border)}.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe thead tr,.bd-content .nboutput .output_area.rendered_html table.dataframe thead tr{background-color:var(--pst-color-table-heading-bg);border-bottom:2px solid var(--pst-color-primary)}.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe tbody tr:nth-child(odd),.bd-content .nboutput .output_area.rendered_html table.dataframe tbody tr:nth-child(odd){background-color:var(--pst-color-table-row-zebra-low-bg)}.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe tbody tr:nth-child(2n),.bd-content .nboutput .output_area.rendered_html table.dataframe tbody tr:nth-child(2n){background-color:var(--pst-color-table-row-zebra-high-bg)}.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe tbody tr:hover,.bd-content .nboutput .output_area.rendered_html table.dataframe tbody tr:hover{background-color:var(--pst-color-table-row-hover-bg)}html[data-theme=dark] .bd-content .nboutput .output_area .widget-subarea,html[data-theme=dark] .bd-content .nboutput .output_area.rendered_html:not(:has(table.dataframe)){background-color:var(--pst-color-text-base);border-radius:.25rem;color:var(--pst-color-on-background);padding:.5rem}html[data-theme=dark] .bd-content .nboutput .output_area.stderr{background-color:var(--pst-color-danger)}div.nblast.container{margin-bottom:1rem}html[data-theme=light] .nbinput.container .prompt pre{color:#005b82}html[data-theme=dark] .nbinput.container .prompt pre{color:#00e0e0}html[data-theme=light] .nboutput.container .prompt pre{color:#a12236}html[data-theme=dark] .nboutput.container .prompt pre{color:#ffa07a}div.cell_output .output{max-width:100%;overflow-x:auto}.bd-content div.cell_output table.dataframe{border:1px solid var(--pst-color-table-outer-border);color:var(--pst-color-table)}.bd-content div.cell_output table.dataframe td~td,.bd-content div.cell_output table.dataframe td~th,.bd-content div.cell_output table.dataframe th~td,.bd-content div.cell_output table.dataframe th~th{border-left:1px solid var(--pst-color-table-inner-border)}.bd-content div.cell_output table.dataframe thead tr{background-color:var(--pst-color-table-heading-bg);border-bottom:2px solid var(--pst-color-primary)}.bd-content div.cell_output table.dataframe tbody tr:nth-child(odd){background-color:var(--pst-color-table-row-zebra-low-bg)}.bd-content div.cell_output table.dataframe tbody tr:nth-child(2n){background-color:var(--pst-color-table-row-zebra-high-bg)}.bd-content div.cell_output table.dataframe tbody tr:hover{background-color:var(--pst-color-table-row-hover-bg)}html[data-theme=dark] .bd-content div.cell_output .text_html:not(:has(table.dataframe)),html[data-theme=dark] .bd-content div.cell_output .widget-subarea,html[data-theme=dark] .bd-content div.cell_output img{background-color:var(--pst-color-text-base);border-radius:.25rem;color:var(--pst-color-on-background);padding:.5rem}.bd-content div.cell_input{display:flex;flex-direction:column;justify-content:stretch}.bd-content div.cell_input,.bd-content div.output{border-radius:.25rem}.bd-content div.output table{table-layout:auto}html[data-theme=dark] .bd-content img.leaflet-tile.leaflet-tile-loaded{border-radius:0;padding:0}.bd-search-container div#search-results>.h2,.bd-search-container div#search-results>h2{font-size:var(--pst-font-size-icon);margin-top:1rem}.bd-search-container div#search-results p.search-summary{color:var(--pst-color-text-muted)}.bd-search-container ul.search{list-style:none;margin:0}.bd-search-container ul.search li{background-image:none;border-top:1px solid var(--pst-color-text-muted);margin:1rem 0;padding:1rem 0}.bd-search-container ul.search li>a{font-size:1.2em}.bd-search-container ul.search li div.context,.bd-search-container ul.search li p.context{color:var(--pst-color-text-base);margin:.5em 0 0}.bd-search-container ul.search li div.context a:before,.bd-search-container ul.search li p.context a:before{color:var(--pst-color-text-muted);content:"#";padding-right:.2em} +/*# sourceMappingURL=pydata-sphinx-theme.css.map*/ \ No newline at end of file diff --git a/_static/styles/pydata-sphinx-theme.css.map b/_static/styles/pydata-sphinx-theme.css.map new file mode 100644 index 000000000..1142bcdf1 --- /dev/null +++ b/_static/styles/pydata-sphinx-theme.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/pydata-sphinx-theme.css","mappings":"AAsGE,gBCqlBF;AC1rBE;;;;EAAA,CCDF,4BASI,qQAIA,sMAIA,iKAIA,sNAIA,iRAIA,iPAIA,iRAGF,2BACA,qBAMA,yMACA,mGACA,4EAOA,gDC2OI,wBALI,CDpOR,0BACA,0BAKA,wBACA,6BACA,kBACA,6BAEA,yBACA,8BAEA,wCACA,kCACA,0BACA,kCAEA,sCACA,iCACA,yBACA,iCAGA,2BAEA,wBACA,+BACA,+BAEA,8BACA,oCAMA,wBACA,6BACA,0BAGA,sBACA,wBACA,0BACA,+CAEA,4BACA,8BACA,6BACA,2BACA,4BACA,mDACA,8BAGA,8CACA,uDACA,gDACA,uDAIA,gCACA,0BACA,8CAIA,8BACA,qCACA,gCACA,sCFFF,CI9GI,qBFyHA,wBACA,gCACA,qBACA,0BAEA,yBACA,oCAEA,2CACA,qCACA,0BACA,+BAEA,yCACA,oCACA,yBACA,8BAGE,iRAIA,iPAIA,iRAGF,2BAEA,wBACA,8BACA,gCACA,sCAEA,wBACA,6BACA,0BAEA,0BACA,kDAEA,8BACA,qCACA,gCACA,uCAlDA,iBFgDJ,CKtKA,iBAGE,qBLyKF,CK1JI,8CANJ,MAOM,sBL8JJ,CACF,CKjJA,KASE,6BAA8B,CAC9B,0CAFA,mCAFA,2BAJA,uCF6OI,kCALI,CEtOR,uCACA,uCAJA,QAAS,CAMT,oCLuJF,CK3IA,GAIE,wCAFA,aCmnB4B,CDpnB5B,cAIA,WL8IF,CKpIA,0CAOE,8BAFA,eCwjB4B,CDvjB5B,eCwjB4B,CD5jB5B,mBCwjB4B,CDzjB5B,YL2IF,CKlIA,OFuMQ,gCHjER,CG3FI,0BE3CJ,OF8MQ,gBHpEN,CACF,CKtIA,OFkMQ,+BHxDR,CGpGI,0BEtCJ,OFyMQ,cH3DN,CACF,CK1IA,OF6LQ,6BH/CR,CG7GI,0BEjCJ,OFoMQ,iBHlDN,CACF,CK9IA,OFwLQ,+BHtCR,CGtHI,0BE5BJ,OF+LQ,gBHzCN,CACF,CKlJA,OF+KM,iBHzBN,CKjJA,OF0KM,cHrBN,CK1IA,EAEE,kBCwV0B,CDzV1B,YL8IF,CKnIA,YAEE,WAAY,CADZ,gCAAiC,CAEjC,6BLsIF,CKhIA,QAEE,iBAAkB,CAClB,mBAAoB,CAFpB,kBLqIF,CK7HA,MAEE,iBLgIF,CK7HA,SAIE,kBAAmB,CADnB,YLiIF,CK7HA,wBAIE,eLgIF,CK7HA,GACE,eLgIF,CK3HA,GACE,oBACA,aL8HF,CKxHA,WACE,eL2HF,CKnHA,SAEE,kBLsHF,CK9GA,aF6EM,gBHqCN,CK3GA,WAGE,wCADA,gCADA,eLgHF,CKrGA,QF0DM,eALI,CEjDR,aAAc,CAFd,iBAAkB,CAGlB,uBLwGF,CKrGA,IAAM,aLyGN,CKxGA,IAAM,SL4GN,CKvGA,EACE,6DL2GF,CKxGE,QACE,kDL0GJ,CK/FE,4DAEE,aAAc,CACd,oBLiGJ,CK1FA,kBAIE,oCCgV4B,CHlUxB,aHgFN,CKtFA,IACE,aAAc,CFKV,gBALI,CEER,kBAAmB,CADnB,YAAa,CAEb,aL0FF,CKrFE,SAEE,aAAc,CFLZ,iBALI,CEWN,iBLuFJ,CKnFA,KAGE,oBAAqB,CADrB,2BFZI,gBHmGN,CKnFE,OACE,aLqFJ,CKjFA,IAIE,qCCy5CkC,CC9rDhC,qBFoSF,uBCy5CkC,CHj7C9B,gBALI,CE2BR,wBLwFF,CKlFE,QF5BI,aALI,CEkCN,SLqFJ,CK1EA,OACE,eL6EF,CKvEA,QAEE,qBL0EF,CKlEA,MAEE,wBAAyB,CADzB,mBLsEF,CKlEA,QAGE,+BC4Z4B,CD7Z5B,oBC2X4B,CD5X5B,iBC4X4B,CDzX5B,eLqEF,CK9DA,GAEE,kBAAmB,CACnB,+BLgEF,CK7DA,2BAQE,cAAe,CAFf,oBLkEF,CKxDA,MACE,oBL2DF,CKrDA,OAEE,eLuDF,CK/CA,iCACE,SLkDF,CK7CA,sCAME,mBAAoB,CF5HhB,iBALI,CEmIR,mBAAoB,CAHpB,QLmDF,CK5CA,cAEE,mBL+CF,CK1CA,cACE,cL6CF,CK1CA,OAGE,gBL2CF,CKxCE,gBACE,SL0CJ,CKnCA,0IACE,sBLsCF,CK9BA,gDAIE,yBLiCF,CK9BI,4GACE,cLmCN,CK5BA,mBAEE,iBAAkB,CADlB,SLgCF,CK1BA,SACE,eL6BF,CKnBA,SAIE,QAAS,CADT,QAAS,CAFT,WAAY,CACZ,SLwBF,CKdA,OACE,UAAW,CF9ML,gCEoNN,mBAAoB,CAHpB,mBCmN4B,CDpN5B,SAAU,CADV,ULqBF,CGhYI,0BEyWJ,OFtMQ,gBHiON,CACF,CKnBE,SACE,ULqBJ,CKdA,+OAOE,SLiBF,CKdA,4BACE,WLiBF,CKRA,cACE,4BAA6B,CAC7B,mBLWF,CKQA,4BACE,uBLGF,CKEA,+BACE,SLCF,CKMA,uBAEE,yBAA0B,CAD1B,YLFF,CKQA,OACE,oBLLF,CKUA,OACE,QLPF,CKcA,QAEE,cAAe,CADf,iBLVF,CKmBA,SACE,uBLhBF,CKwBA,SACE,sBLrBF,CDhjBA,MImQM,iBALI,CJ5PR,eCmjBF,CD9iBE,WIgQM,iCJ5PJ,eOynBkB,CPxnBlB,eC+iBJ,CGhdI,0BJpGF,WIuQM,cHiTN,CACF,CDzjBE,WIgQM,iCJ5PJ,eOynBkB,CPxnBlB,eC0jBJ,CG3dI,0BJpGF,WIuQM,gBH4TN,CACF,CDpkBE,WIgQM,iCJ5PJ,eOynBkB,CPxnBlB,eCqkBJ,CGteI,0BJpGF,WIuQM,cHuUN,CACF,CD/kBE,WIgQM,iCJ5PJ,eOynBkB,CPxnBlB,eCglBJ,CGjfI,0BJpGF,WIuQM,gBHkVN,CACF,CD1lBE,WIgQM,iCJ5PJ,eOynBkB,CPxnBlB,eC2lBJ,CG5fI,0BJpGF,WIuQM,cH6VN,CACF,CDrmBE,WIgQM,iCJ5PJ,eOynBkB,CPxnBlB,eCsmBJ,CGvgBI,0BJpGF,WIuQM,gBHwWN,CACF,CDnlBA,4BS3DE,eAAgB,CADhB,cRypBF,CD1lBA,kBACE,oBC6lBF,CD3lBE,mCACE,kBC6lBJ,CDnlBA,YI8MM,gBALI,CJvMR,wBCslBF,CDllBA,YIwMM,iBALI,CJlMR,kBCslBF,CDnlBE,wBACE,eCqlBJ,CDjlBA,mBAIE,aOtFS,CHiRL,gBALI,CJxLR,kBUjGO,CVgGP,gBCulBF,CDllBE,0BACE,YColBJ,CU9qBA,0BCCE,WAAY,CAHZ,cX8rBF,CU5rBA,eAEE,kCJ+jDkC,CI9jDlC,2DHGE,sCGLF,cV2rBF,CU7qBA,QAEE,oBV+qBF,CU5qBA,YAEE,aAAc,CADd,mBVgrBF,CU5qBA,gBAEE,+BJkjDkC,CH3zC9B,gBHwbN,CYjtBE,oFCHA,qBACA,gBAKA,gBAAiB,CADjB,iBAAkB,CADlB,yCADA,0CADA,UbiuBF,CcvqBI,yBF5CE,yBACE,eZutBN,CACF,Cc7qBI,yBF5CE,uCACE,eZ4tBN,CACF,CclrBI,yBF5CE,qDACE,eZiuBN,CACF,CcvrBI,0BF5CE,mEACE,gBZsuBN,CACF,CevvBA,MAEI,yHf4vBJ,CevvBE,KCNA,qBACA,gBACA,YAAa,CACb,cAAe,CAIf,yCADA,0CADA,sChBkwBF,Ce9vBI,OCOF,aAAc,CAKd,8BAHA,cAAe,CAEf,yCADA,0CAFA,UhB8vBF,CgB3sBM,KACE,WhB8sBR,CgB3sBM,iBApCJ,aAAc,CACd,UhBmvBF,CgBruBE,cACE,aAAc,CACd,UhBwuBJ,CgB1uBE,cACE,aAAc,CACd,ShB6uBJ,CgB/uBE,cACE,aAAc,CACd,kBhBkvBJ,CgBpvBE,cACE,aAAc,CACd,ShBuvBJ,CgBzvBE,cACE,aAAc,CACd,ShB4vBJ,CgB9vBE,cACE,aAAc,CACd,kBhBiwBJ,CgBluBM,UAhDJ,aAAc,CACd,UhBsxBF,CgBjuBU,OAhEN,aAAc,CACd,iBhBqyBJ,CgBtuBU,OAhEN,aAAc,CACd,kBhB0yBJ,CgB3uBU,OAhEN,aAAc,CACd,ShB+yBJ,CgBhvBU,OAhEN,aAAc,CACd,kBhBozBJ,CgBrvBU,OAhEN,aAAc,CACd,kBhByzBJ,CgB1vBU,OAhEN,aAAc,CACd,ShB8zBJ,CgB/vBU,OAhEN,aAAc,CACd,kBhBm0BJ,CgBpwBU,OAhEN,aAAc,CACd,kBhBw0BJ,CgBzwBU,OAhEN,aAAc,CACd,ShB60BJ,CgB9wBU,QAhEN,aAAc,CACd,kBhBk1BJ,CgBnxBU,QAhEN,aAAc,CACd,kBhBu1BJ,CgBxxBU,QAhEN,aAAc,CACd,UhB41BJ,CgBrxBY,UAxDV,uBhBi1BF,CgBzxBY,UAxDV,wBhBq1BF,CgB7xBY,UAxDV,ehBy1BF,CgBjyBY,UAxDV,wBhB61BF,CgBryBY,UAxDV,wBhBi2BF,CgBzyBY,UAxDV,ehBq2BF,CgB7yBY,UAxDV,wBhBy2BF,CgBjzBY,UAxDV,wBhB62BF,CgBrzBY,UAxDV,ehBi3BF,CgBzzBY,WAxDV,wBhBq3BF,CgB7zBY,WAxDV,wBhBy3BF,CgBtzBQ,WAEE,ehByzBV,CgBtzBQ,WAEE,ehByzBV,CgBh0BQ,WAEE,qBhBm0BV,CgBh0BQ,WAEE,qBhBm0BV,CgB10BQ,WAEE,oBhB60BV,CgB10BQ,WAEE,oBhB60BV,CgBp1BQ,WAEE,kBhBu1BV,CgBp1BQ,WAEE,kBhBu1BV,CgB91BQ,WAEE,oBhBi2BV,CgB91BQ,WAEE,oBhBi2BV,CgBx2BQ,WAEE,kBhB22BV,CgBx2BQ,WAEE,kBhB22BV,Ccr6BI,yBEUE,QACE,WhB+5BN,CgB55BI,oBApCJ,aAAc,CACd,UhBm8BA,CgBr7BA,iBACE,aAAc,CACd,UhBu7BF,CgBz7BA,iBACE,aAAc,CACd,ShB27BF,CgB77BA,iBACE,aAAc,CACd,kBhB+7BF,CgBj8BA,iBACE,aAAc,CACd,ShBm8BF,CgBr8BA,iBACE,aAAc,CACd,ShBu8BF,CgBz8BA,iBACE,aAAc,CACd,kBhB28BF,CgB56BI,aAhDJ,aAAc,CACd,UhB+9BA,CgB16BQ,UAhEN,aAAc,CACd,iBhB6+BF,CgB96BQ,UAhEN,aAAc,CACd,kBhBi/BF,CgBl7BQ,UAhEN,aAAc,CACd,ShBq/BF,CgBt7BQ,UAhEN,aAAc,CACd,kBhBy/BF,CgB17BQ,UAhEN,aAAc,CACd,kBhB6/BF,CgB97BQ,UAhEN,aAAc,CACd,ShBigCF,CgBl8BQ,UAhEN,aAAc,CACd,kBhBqgCF,CgBt8BQ,UAhEN,aAAc,CACd,kBhBygCF,CgB18BQ,UAhEN,aAAc,CACd,ShB6gCF,CgB98BQ,WAhEN,aAAc,CACd,kBhBihCF,CgBl9BQ,WAhEN,aAAc,CACd,kBhBqhCF,CgBt9BQ,WAhEN,aAAc,CACd,UhByhCF,CgBl9BU,aAxDV,ahB6gCA,CgBr9BU,aAxDV,uBhBghCA,CgBx9BU,aAxDV,wBhBmhCA,CgB39BU,aAxDV,ehBshCA,CgB99BU,aAxDV,wBhByhCA,CgBj+BU,aAxDV,wBhB4hCA,CgBp+BU,aAxDV,ehB+hCA,CgBv+BU,aAxDV,wBhBkiCA,CgB1+BU,aAxDV,wBhBqiCA,CgB7+BU,aAxDV,ehBwiCA,CgBh/BU,cAxDV,wBhB2iCA,CgBn/BU,cAxDV,wBhB8iCA,CgB3+BM,iBAEE,ehB6+BR,CgB1+BM,iBAEE,ehB4+BR,CgBn/BM,iBAEE,qBhBq/BR,CgBl/BM,iBAEE,qBhBo/BR,CgB3/BM,iBAEE,oBhB6/BR,CgB1/BM,iBAEE,oBhB4/BR,CgBngCM,iBAEE,kBhBqgCR,CgBlgCM,iBAEE,kBhBogCR,CgB3gCM,iBAEE,oBhB6gCR,CgB1gCM,iBAEE,oBhB4gCR,CgBnhCM,iBAEE,kBhBqhCR,CgBlhCM,iBAEE,kBhBohCR,CACF,Cc/kCI,yBEUE,QACE,WhBwkCN,CgBrkCI,oBApCJ,aAAc,CACd,UhB4mCA,CgB9lCA,iBACE,aAAc,CACd,UhBgmCF,CgBlmCA,iBACE,aAAc,CACd,ShBomCF,CgBtmCA,iBACE,aAAc,CACd,kBhBwmCF,CgB1mCA,iBACE,aAAc,CACd,ShB4mCF,CgB9mCA,iBACE,aAAc,CACd,ShBgnCF,CgBlnCA,iBACE,aAAc,CACd,kBhBonCF,CgBrlCI,aAhDJ,aAAc,CACd,UhBwoCA,CgBnlCQ,UAhEN,aAAc,CACd,iBhBspCF,CgBvlCQ,UAhEN,aAAc,CACd,kBhB0pCF,CgB3lCQ,UAhEN,aAAc,CACd,ShB8pCF,CgB/lCQ,UAhEN,aAAc,CACd,kBhBkqCF,CgBnmCQ,UAhEN,aAAc,CACd,kBhBsqCF,CgBvmCQ,UAhEN,aAAc,CACd,ShB0qCF,CgB3mCQ,UAhEN,aAAc,CACd,kBhB8qCF,CgB/mCQ,UAhEN,aAAc,CACd,kBhBkrCF,CgBnnCQ,UAhEN,aAAc,CACd,ShBsrCF,CgBvnCQ,WAhEN,aAAc,CACd,kBhB0rCF,CgB3nCQ,WAhEN,aAAc,CACd,kBhB8rCF,CgB/nCQ,WAhEN,aAAc,CACd,UhBksCF,CgB3nCU,aAxDV,ahBsrCA,CgB9nCU,aAxDV,uBhByrCA,CgBjoCU,aAxDV,wBhB4rCA,CgBpoCU,aAxDV,ehB+rCA,CgBvoCU,aAxDV,wBhBksCA,CgB1oCU,aAxDV,wBhBqsCA,CgB7oCU,aAxDV,ehBwsCA,CgBhpCU,aAxDV,wBhB2sCA,CgBnpCU,aAxDV,wBhB8sCA,CgBtpCU,aAxDV,ehBitCA,CgBzpCU,cAxDV,wBhBotCA,CgB5pCU,cAxDV,wBhButCA,CgBppCM,iBAEE,ehBspCR,CgBnpCM,iBAEE,ehBqpCR,CgB5pCM,iBAEE,qBhB8pCR,CgB3pCM,iBAEE,qBhB6pCR,CgBpqCM,iBAEE,oBhBsqCR,CgBnqCM,iBAEE,oBhBqqCR,CgB5qCM,iBAEE,kBhB8qCR,CgB3qCM,iBAEE,kBhB6qCR,CgBprCM,iBAEE,oBhBsrCR,CgBnrCM,iBAEE,oBhBqrCR,CgB5rCM,iBAEE,kBhB8rCR,CgB3rCM,iBAEE,kBhB6rCR,CACF,CcxvCI,yBEUE,QACE,WhBivCN,CgB9uCI,oBApCJ,aAAc,CACd,UhBqxCA,CgBvwCA,iBACE,aAAc,CACd,UhBywCF,CgB3wCA,iBACE,aAAc,CACd,ShB6wCF,CgB/wCA,iBACE,aAAc,CACd,kBhBixCF,CgBnxCA,iBACE,aAAc,CACd,ShBqxCF,CgBvxCA,iBACE,aAAc,CACd,ShByxCF,CgB3xCA,iBACE,aAAc,CACd,kBhB6xCF,CgB9vCI,aAhDJ,aAAc,CACd,UhBizCA,CgB5vCQ,UAhEN,aAAc,CACd,iBhB+zCF,CgBhwCQ,UAhEN,aAAc,CACd,kBhBm0CF,CgBpwCQ,UAhEN,aAAc,CACd,ShBu0CF,CgBxwCQ,UAhEN,aAAc,CACd,kBhB20CF,CgB5wCQ,UAhEN,aAAc,CACd,kBhB+0CF,CgBhxCQ,UAhEN,aAAc,CACd,ShBm1CF,CgBpxCQ,UAhEN,aAAc,CACd,kBhBu1CF,CgBxxCQ,UAhEN,aAAc,CACd,kBhB21CF,CgB5xCQ,UAhEN,aAAc,CACd,ShB+1CF,CgBhyCQ,WAhEN,aAAc,CACd,kBhBm2CF,CgBpyCQ,WAhEN,aAAc,CACd,kBhBu2CF,CgBxyCQ,WAhEN,aAAc,CACd,UhB22CF,CgBpyCU,aAxDV,ahB+1CA,CgBvyCU,aAxDV,uBhBk2CA,CgB1yCU,aAxDV,wBhBq2CA,CgB7yCU,aAxDV,ehBw2CA,CgBhzCU,aAxDV,wBhB22CA,CgBnzCU,aAxDV,wBhB82CA,CgBtzCU,aAxDV,ehBi3CA,CgBzzCU,aAxDV,wBhBo3CA,CgB5zCU,aAxDV,wBhBu3CA,CgB/zCU,aAxDV,ehB03CA,CgBl0CU,cAxDV,wBhB63CA,CgBr0CU,cAxDV,wBhBg4CA,CgB7zCM,iBAEE,ehB+zCR,CgB5zCM,iBAEE,ehB8zCR,CgBr0CM,iBAEE,qBhBu0CR,CgBp0CM,iBAEE,qBhBs0CR,CgB70CM,iBAEE,oBhB+0CR,CgB50CM,iBAEE,oBhB80CR,CgBr1CM,iBAEE,kBhBu1CR,CgBp1CM,iBAEE,kBhBs1CR,CgB71CM,iBAEE,oBhB+1CR,CgB51CM,iBAEE,oBhB81CR,CgBr2CM,iBAEE,kBhBu2CR,CgBp2CM,iBAEE,kBhBs2CR,CACF,Ccj6CI,0BEUE,QACE,WhB05CN,CgBv5CI,oBApCJ,aAAc,CACd,UhB87CA,CgBh7CA,iBACE,aAAc,CACd,UhBk7CF,CgBp7CA,iBACE,aAAc,CACd,ShBs7CF,CgBx7CA,iBACE,aAAc,CACd,kBhB07CF,CgB57CA,iBACE,aAAc,CACd,ShB87CF,CgBh8CA,iBACE,aAAc,CACd,ShBk8CF,CgBp8CA,iBACE,aAAc,CACd,kBhBs8CF,CgBv6CI,aAhDJ,aAAc,CACd,UhB09CA,CgBr6CQ,UAhEN,aAAc,CACd,iBhBw+CF,CgBz6CQ,UAhEN,aAAc,CACd,kBhB4+CF,CgB76CQ,UAhEN,aAAc,CACd,ShBg/CF,CgBj7CQ,UAhEN,aAAc,CACd,kBhBo/CF,CgBr7CQ,UAhEN,aAAc,CACd,kBhBw/CF,CgBz7CQ,UAhEN,aAAc,CACd,ShB4/CF,CgB77CQ,UAhEN,aAAc,CACd,kBhBggDF,CgBj8CQ,UAhEN,aAAc,CACd,kBhBogDF,CgBr8CQ,UAhEN,aAAc,CACd,ShBwgDF,CgBz8CQ,WAhEN,aAAc,CACd,kBhB4gDF,CgB78CQ,WAhEN,aAAc,CACd,kBhBghDF,CgBj9CQ,WAhEN,aAAc,CACd,UhBohDF,CgB78CU,aAxDV,ahBwgDA,CgBh9CU,aAxDV,uBhB2gDA,CgBn9CU,aAxDV,wBhB8gDA,CgBt9CU,aAxDV,ehBihDA,CgBz9CU,aAxDV,wBhBohDA,CgB59CU,aAxDV,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CAXT,crBs3DJ,CqBt2DE,qCACE,aAAc,CACd,SrBw2DJ,CqBp2DE,2BACE,+Bf40BoC,Ce10BpC,SrBq2DJ,CqB71DE,uBAEE,uCf8yBoC,Ce3yBpC,SrB41DJ,CqBx1DE,oCE1FA,sCjBqiCgC,Cel8B9B,cAAe,CAFf,oBAAqB,CAGrB,8CfgsB0B,Ce/rB1B,eAAgB,CAPhB,0BfsyBoC,CexyBpC,wBACA,wBforB0B,CetrB1B,uBAKA,mBAAoB,CCpFlB,6HtBo7DN,CsBh7DM,uCD0EJ,oCCzEM,etBm7DN,CACF,CqB51DE,yEACE,uCrB81DJ,CqBr1DA,wBAOE,4BAA6B,CAC7B,wBAAyB,CACzB,sCAHA,0Bf2xBsC,CehyBtC,aAAc,CAId,efwf4B,Cezf5B,eAAgB,CADhB,kBADA,UrB+1DF,CqBt1DE,8BACE,SrBw1DJ,CqBr1DE,gFAGE,cAAe,CADf,erBu1DJ,CqB30DA,iBdjII,yCJ4QE,iBALI,CkBrIR,yDf4wBsC,Ce3wBtC,oBrBg1DF,CqB50DE,uCAEE,sBACA,uBfooB0B,CetoB1B,oBrBg1DJ,CqB10DA,iBd9II,yCJ4QE,iBALI,CkBxHR,wDfgwBsC,Ce/vBtC,kBrB+0DF,CqB30DE,uCAEE,oBACA,sBf2nB0B,Ce7nB1B,kBrB+0DJ,CqBr0DE,sBACE,0DrBw0DJ,CqBr0DE,yBACE,yDrBu0DJ,CqBp0DE,yBACE,wDrBs0DJ,CqBj0DA,oBAEE,sDf8tBsC,Ce7tBtC,efilB4B,CenlB5B,UrBs0DF,CqBl0DE,mDACE,crBo0DJ,CqBj0DE,uCACE,kBAAoB,CdvLpB,qCP2/DJ,CqBh0DE,0CACE,kBAAoB,Cd5LpB,qCP+/DJ,CqB/zDE,oCAAoB,qDrBk0DtB,CqBj0DE,oCAAoB,oDrBo0DtB,CwBnhEA,aACE,sQAUA,eAAgB,CAChB,kClBk3BsC,CkBj3BtC,iFAEA,uClB+9BkC,CkBh+BlC,2BAA4B,CAE5B,yBlB+9BkC,CkB99BlC,2DjBHE,sCiBJF,0BlBy3BsC,CkBh4BtC,aAAc,CrBuRV,cALI,CqB7QR,elB+lB4B,CkB9lB5B,elBsmB4B,CkB1mB5B,uCFMI,oEESJ,CAhBA,UxBmiEF,CsBxhEM,uCEfN,aFgBQ,etB2hEN,CACF,CwBthEE,mBACE,oBlBs3BoC,CkBh3BlC,iDlBi+B4B,CkBt+B9B,SxByhEJ,CwBhhEE,0DAGE,qBAAsB,CADtB,oBxBkhEJ,CwB9gEE,sBAEE,uCxB+gEJ,CwB1gEE,4BACE,iBAAkB,CAClB,sCxB4gEJ,CwBxgEA,gBjBtCI,yCJ4QE,iBALI,CqB/NR,qBlBquB4B,CkBpuB5B,kBlBquB4B,CkBvuB5B,kBxB+gEF,CwBxgEA,gBjB9CI,yCJ4QE,iBALI,CqBvNR,oBlBiuB4B,CkBhuB5B,iBlBiuB4B,CkBnuB5B,iBxB+gEF,CwBtgEI,kCACE,qQxBygEN,CyBjlEA,YACE,aAAc,CAGd,qBnBq6BwC,CmBv6BxC,iBnBq6BwC,CmBp6BxC,kBzBqlEF,CyBllEE,8BACE,UAAW,CACX,kBzBolEJ,CyBhlEA,oBAEE,cAAe,CADf,mBnB25BwC,CmBz5BxC,gBzBmlEF,CyBjlEE,sCACE,WAAY,CAEZ,aAAc,CADd,mBzBolEJ,CyB/kEA,kBACE,qCAOA,eAAgB,CAChB,yCACA,+CAEA,uBAA2B,CAD3B,2BAA4B,CAE5B,uBAAwB,CACxB,0DnB24BwC,CmBt5BxC,aAAc,CAEd,UnBy4BwC,CmBx4BxC,iBASA,wBAAyB,CARzB,kBAAmB,CAHnB,SzB4lEF,CyB9kEE,iClB3BE,mBP4mEJ,CyB7kEE,8BAEE,iBzB8kEJ,CyB3kEE,yBACE,sBzB6kEJ,CyB1kEE,wBACE,oBnBs1BoC,CmBp1BpC,iDhBpCoB,CgBmCpB,SzB6kEJ,CyBzkEE,0BACE,wBnB5BM,CmB6BN,oBzB2kEJ,CyBzkEI,yCAII,oQzBwkER,CyBpkEI,sCAII,4KzBmkER,CyB9jEE,+CAOI,+PANF,wBnBjDM,CmBkDN,oBzBikEJ,CyBxjEE,2BAEE,WAAY,CACZ,UnBk2BuC,CmBp2BvC,mBzB4jEJ,CyBnjEI,2FACE,cAAe,CACf,UzBqjEN,CyBviEA,aACE,kBzB0iEF,CyBxiEE,+BACE,qLAIA,0CACA,qBAAgC,ClBjHhC,kBkB+GA,mBHlHE,+CGsHF,CALA,SzB8iEJ,CsB3pEM,uCG0GJ,+BHzGM,etB8pEN,CACF,CyB5iEI,qCACE,0KzB8iEN,CyB3iEI,uCAMI,wKALF,wBzB8iEN,CyBpiEE,gCAEE,cAAe,CADf,mBzBuiEJ,CyBpiEI,kDAEE,aAAc,CADd,mBzBuiEN,CyBjiEA,mBACE,oBAAqB,CACrB,iBzBoiEF,CyBjiEA,WAEE,kBAAsB,CACtB,mBAAoB,CAFpB,iBzBsiEF,CyBhiEI,mDAEE,WAAY,CACZ,WnBspBwB,CmBxpBxB,mBzBoiEN,CyB3hEI,8EACE,0LzB8hEN,C0BjtEA,YAIE,eAAgB,CAChB,4BAA6B,CAH7B,gBACA,SAAU,CAFV,U1BwtEF,C0BltEE,kBACE,S1BotEJ,C0BhtEI,wCAA0B,gE1BmtE9B,C0BltEI,oCAA0B,gE1BqtE9B,C0BltEE,8BACE,Q1BotEJ,C0BjtEE,kCAIE,eAAgB,CH1BlB,wBjBkCQ,CoBNN,QpB6/BuC,CC1gCvC,mBmBSA,WpB8/BuC,CoB7/BvC,mBJbE,sGImBF,CARA,U1B0tEJ,CsBjuEM,uCIMJ,kCJLM,etBouEN,CACF,C0BrtEI,yCHjCF,wBvByvEF,C0BntEE,2CAKE,uCpBu+B8B,CoBt+B9B,wBAAyB,CnB7BzB,mBmB0BA,iBAAkB,CAClB,cpBu+B8B,CoBz+B9B,YpBw+B8B,CoBz+B9B,U1B2tEJ,C0BjtEE,8BAGE,eAAgB,CHpDlB,wBjBkCQ,CoBoBN,QpBm+BuC,CC1gCvC,mBmBoCA,WpBm+BuC,CgB1gCrC,sGI6CF,CAPA,U1BytEJ,CsB3vEM,uCIiCJ,8BJhCM,etB8vEN,CACF,C0BrtEI,qCH3DF,wBvBmxEF,C0BntEE,8BAKE,uCpB68B8B,CoB58B9B,wBAAyB,CnBvDzB,mBmBoDA,iBAAkB,CAClB,cpB68B8B,CoB/8B9B,YpB88B8B,CoB/8B9B,U1B2tEJ,C0BjtEE,qBACE,mB1BmtEJ,C0BjtEI,2CACE,0C1BmtEN,C0BhtEI,uCACE,0C1BktEN,C2BzyEA,eACE,iB3B4yEF,C2B1yEE,gGAGE,8CrBwiCoC,CqBtiCpC,gBrBuiCoC,CqBxiCpC,kD3B6yEJ,C2BzyEE,qBAYE,gDAPA,WAAY,CAFZ,MAAO,CAIP,eAAgB,CADhB,oBAKA,mBAAoB,CAVpB,iBAAkB,CAOlB,gBAAiB,CACjB,sBAAuB,CAPvB,KAAM,CAWN,oBAAqB,CLRnB,4DKSF,CAJA,kBAAmB,CANnB,S3BqzEJ,CsBhzEM,uCKTJ,qBLUM,etBmzEN,CACF,C2B7yEE,oEAEE,mB3B+yEJ,C2B7yEI,8FACE,iB3BgzEN,C2B7yEI,oMAGE,sBrB4gCkC,CqB7gClC,oB3BizEN,C2B7yEI,sGAEE,sBrBugCkC,CqBxgClC,oB3BizEN,C2B5yEE,4BAEE,sBrBigCoC,CqBlgCpC,oB3B+yEJ,C2BvyEI,mLACE,yCACA,0D3B4yEN,C2B1yEM,2MAME,kCrBg0BgC,CCh3BpC,sCoB+CI,UAAW,CADX,YrBm/BgC,CqBr/BhC,mBADA,iBAAkB,CAElB,U3BmzER,C2BzyEI,oDACE,yCACA,0D3B2yEN,C2BtyEI,6CACE,qC3BwyEN,C2BpyEE,2EAEE,a3BsyEJ,C2BpyEI,uFACE,uC3BuyEN,C4B93EA,aAIE,mBAAoB,CAFpB,YAAa,CACb,cAAe,CAFf,iBAAkB,CAIlB,U5Bi4EF,C4B/3EE,iFAIE,aAAc,CAEd,WAAY,CAHZ,iBAAkB,CAElB,Q5Bk4EJ,C4B73EE,0GAGE,S5B+3EJ,C4Bz3EE,kBACE,iBAAkB,CAClB,S5B23EJ,C4Bz3EI,wBACE,S5B23EN,C4Bh3EA,kBAEE,kBAAmB,CAQnB,sCtB06BsC,CsBz6BtC,2DrBtCE,sCqBkCF,0BtBm1BsC,CsBz1BtC,YAAa,CzBgPT,cALI,CyBvOR,etByjB4B,CsBxjB5B,etBgkB4B,CsBnkB5B,uBAKA,iBAAkB,CAClB,kB5Bs3EF,C4B12EA,kHrBhDI,yCJ4QE,iBALI,CyBnNR,kB5B+2EF,C4B12EA,kHrBzDI,yCJ4QE,iBALI,CyB1MR,oB5B+2EF,C4B12EA,0DAEE,kB5B62EF,C4Bv1EI,iqBrBzEA,6BADA,yBPg7EJ,C4Bz1EE,0IrBxEE,4BADA,yBqB0EA,2C5B61EJ,C4Bz1EE,uHrB7EE,4BADA,wBP46EJ,C6Bn8EE,gBAME,gCvBkjCqB,CuBvjCrB,YAAa,C1BoQX,gBALI,C0B7PN,iBvBu0BoC,CuBx0BpC,U7By8EJ,C6Bl8EE,eAWE,kCvBoiCqB,CC/jCrB,sCsB0BA,UvBqiCqB,CuB3iCrB,YAAa,C1BwPX,iBALI,C0BhPN,iBAFA,cAAe,CACf,qBALA,iBAAkB,CAClB,QAAS,CACT,S7B68EJ,C6Bh8EI,8HAEE,a7Bq8EN,C6Bp/EI,0DAyDI,yQAEA,yDADA,2BAA4B,CAE5B,4DAPF,8CvBuhCmB,CuBphCjB,kC7Bq8ER,C6B97EM,sEACE,8CvB4gCiB,CuBvgCf,uD7B47EV,C6BjgFI,0EAgFI,8EADA,kC7Bu7ER,C6BtgFI,wDAuFE,8C7Bm7EN,C6Bh7EQ,4NAEE,iRAEA,6DACA,sEAFA,sB7Bm7EV,C6B76EM,oEACE,8CvBw+BiB,CuBn+Bf,uD7B26EV,C6BphFI,sEAkHI,2B7Bs6ER,C6BxhFI,kEAyHE,8C7Bm6EN,C6Bj6EM,kFACE,2C7Bm6ER,C6Bh6EM,8EACE,uD7Bk6ER,C6B/5EM,sGACE,gC7Bi6ER,C6B55EI,qDACE,gB7B+5EN,C6BziFI,kVAoJM,S7B65EV,C6B7hFE,kBAME,kCvBkjCqB,CuBvjCrB,YAAa,C1BoQX,gBALI,C0B7PN,iBvBu0BoC,CuBx0BpC,U7BmiFJ,C6B5hFE,iBAWE,iCvBoiCqB,CC/jCrB,sCsB0BA,UvBqiCqB,CuB3iCrB,YAAa,C1BwPX,iBALI,C0BhPN,iBAFA,cAAe,CACf,qBALA,iBAAkB,CAClB,QAAS,CACT,S7BuiFJ,C6B1hFI,8IAEE,a7B+hFN,C6B9kFI,8DAyDI,sUAEA,yDADA,2BAA4B,CAE5B,4DAPF,gDvBuhCmB,CuBphCjB,kC7B+hFR,C6BxhFM,0EACE,gDvB4gCiB,CuBvgCf,sD7BshFV,C6B3lFI,8EAgFI,8EADA,kC7BihFR,C6BhmFI,4DAuFE,gD7B6gFN,C6B1gFQ,oOAEE,8UAEA,6DACA,sEAFA,sB7B6gFV,C6BvgFM,wEACE,gDvBw+BiB,CuBn+Bf,sD7BqgFV,C6B9mFI,0EAkHI,2B7BggFR,C6BlnFI,sEAyHE,gD7B6/EN,C6B3/EM,sFACE,6C7B6/ER,C6B1/EM,kFACE,sD7B4/ER,C6Bz/EM,0GACE,kC7B2/ER,C6Bt/EI,uDACE,gB7By/EN,C6BnoFI,8VAsJM,S7Bq/EV,C8B7oFA,KAEE,2BACA,4BACA,uB3BuRI,uBALI,C2BhRR,yBACA,yBACA,oCACA,wBACA,6CACA,kCACA,+CACA,wCACA,iFACA,+BACA,kFPhBA,iCOkCqB,CAFrB,mEvBjBE,0CuBUF,0BAKA,eAXA,oBAAqB,CAErB,sC3BsQI,iCALI,C2B/PR,sCACA,sCAJA,wDAMA,iBAAkB,CAClB,qBRfI,6HQwBJ,CALA,gBAAiB,CAFjB,qB9BkpFF,CsB/pFM,uCQhBN,KRiBQ,etBkqFN,CACF,C8B9oFE,WAGE,wCACA,8CAHA,+B9BkpFJ,C8B5oFE,sBAGE,kCACA,wCAFA,yB9B+oFJ,C8B1oFE,mBPpDA,uCOsDuB,CACrB,8CAME,0CARF,gCAGA,S9B6oFJ,C8BpoFE,8BACE,8CAME,0CALF,S9BuoFJ,C8B9nFE,mGAME,yCAGA,+CAJA,gC9B8nFJ,C8BvnFI,yKAKI,yC9BqnFR,C8BhnFE,sCAKI,yC9B8mFN,C8B1mFE,mDAKE,2CAEA,iDAJA,mCAKA,uCAJA,mB9B6mFJ,C8B7lFE,aC/GA,oBACA,oBACA,8BACA,0BACA,0BACA,oCACA,qCACA,2BACA,2BACA,qCACA,wDACA,6BACA,6BACA,sC/BgtFF,C8B9mFE,eC/GA,oBACA,oBACA,8BACA,0BACA,0BACA,oCACA,sCACA,2BACA,2BACA,qCACA,wDACA,6BACA,6BACA,sC/BiuFF,C8B/nFE,aC/GA,oBACA,oBACA,8BACA,0BACA,0BACA,oCACA,qCACA,2BACA,2BACA,qCACA,wDACA,6BACA,6BACA,sC/BkvFF,C8BhpFE,UC/GA,oBACA,oBACA,8BACA,0BACA,0BACA,oCACA,qCACA,2BACA,2BACA,qCACA,wDACA,6BACA,6BACA,sC/BmwFF,C8BjqFE,aC/GA,oBACA,oBACA,8BACA,0BACA,0BACA,oCACA,oCACA,2BACA,2BACA,qCACA,wDACA,6BACA,6BACA,sC/BoxFF,C8BlrFE,YC/GA,oBACA,oBACA,8BACA,0BACA,0BACA,oCACA,oCACA,2BACA,2BACA,qCACA,wDACA,6BACA,6BACA,sC/BqyFF,C8BnsFE,WC/GA,oBACA,oBACA,8BACA,0BACA,0BACA,oCACA,sCACA,2BACA,2BACA,qCACA,wDACA,6BACA,6BACA,sC/BszFF,C8BptFE,UC/GA,oBACA,oBACA,8BACA,0BACA,0BACA,oCACA,mCACA,2BACA,2BACA,qCACA,wDACA,6BACA,6BACA,sC/Bu0FF,C8B3sFE,qBChHA,uBACA,8BACA,0BACA,0BACA,oCACA,qCACA,2BACA,2BACA,qCACA,wDACA,gCACA,iCACA,uCACA,kB/B+zFF,C8B5tFE,uBChHA,uBACA,8BACA,0BACA,0BACA,oCACA,sCACA,2BACA,2BACA,qCACA,wDACA,gCACA,iCACA,uCACA,kB/Bg1FF,C8B7uFE,qBChHA,uBACA,8BACA,0BACA,0BACA,oCACA,oCACA,2BACA,2BACA,qCACA,wDACA,gCACA,iCACA,uCACA,kB/Bi2FF,C8B9vFE,kBChHA,uBACA,8BACA,0BACA,0BACA,oCACA,qCACA,2BACA,2BACA,qCACA,wDACA,gCACA,iCACA,uCACA,kB/Bk3FF,C8B/wFE,qBChHA,uBACA,8BACA,0BACA,0BACA,oCACA,oCACA,2BACA,2BACA,qCACA,wDACA,gCACA,iCACA,uCACA,kB/Bm4FF,C8BhyFE,oBChHA,uBACA,8BACA,0BACA,0BACA,oCACA,oCACA,2BACA,2BACA,qCACA,wDACA,gCACA,iCACA,uCACA,kB/Bo5FF,C8BjzFE,mBChHA,uBACA,8BACA,0BACA,0BACA,oCACA,sCACA,2BACA,2BACA,qCACA,wDACA,gCACA,iCACA,uCACA,kB/Bq6FF,C8Bl0FE,kBChHA,uBACA,8BACA,0BACA,0BACA,oCACA,mCACA,2BACA,2BACA,qCACA,wDACA,gCACA,iCACA,uCACA,kB/Bs7FF,C8Bv0FA,UACE,yBACA,oCACA,wBACA,kCACA,gDACA,wCACA,iDACA,yCACA,gCACA,2CACA,+BACA,qCAEA,yB9By0FF,C8B/zFE,wBACE,yB9Bi0FJ,C8B9zFE,gBACE,+B9Bg0FJ,C8Br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8C7iJE,wBAGE,gDACA,sDAFA,wCADA,S9CkjJJ,C8C3iJE,kCACE,kB9C6iJJ,C8C3iJI,yCAEE,mDADA,qD9C8iJN,C8ChiJI,uBACE,kB9CmiJN,C8ChiJQ,qEvCvDJ,6DAZA,yBPumJJ,C8C/hJQ,qEvC5DJ,4BAZA,0DP2mJJ,C8C9hJQ,+CACE,Y9CgiJV,C8C7hJQ,yDAEE,mBAAoB,CADpB,kD9CgiJV,C8C7hJU,gEAEE,oDADA,sD9CgiJZ,CcrnJI,yBgC8DA,0BACE,kB9C2jJJ,C8CxjJM,wEvCvDJ,6DAZA,yBP+nJF,C8CvjJM,wEvC5DJ,4BAZA,0DPmoJF,C8CtjJM,kDACE,Y9CwjJR,C8CrjJM,4DAEE,mBAAoB,CADpB,kD9CwjJR,C8CrjJQ,mEAEE,oDADA,sD9CwjJV,CACF,Cc9oJI,yBgC8DA,0BACE,kB9CmlJJ,C8ChlJM,wEvCvDJ,6DAZA,yBPupJF,C8C/kJM,wEvC5DJ,4BAZA,0DP2pJF,C8C9kJM,kDACE,Y9CglJR,C8C7kJM,4DAEE,mBAAoB,CADpB,kD9CglJR,C8C7kJQ,mEAEE,oDADA,sD9CglJV,CACF,CctqJI,yBgC8DA,0BACE,kB9C2mJJ,C8CxmJM,wEvCvDJ,6DAZA,yBP+qJF,C8CvmJM,wEvC5DJ,4BAZA,0DPmrJF,C8CtmJM,kDACE,Y9CwmJR,C8CrmJM,4DAEE,mBAAoB,CADpB,kD9CwmJR,C8CrmJQ,mEAEE,oDADA,sD9CwmJV,CACF,Cc9rJI,0BgC8DA,0BACE,kB9CmoJJ,C8ChoJM,wEvCvDJ,6DAZA,yBPusJF,C8C/nJM,wEvC5DJ,4BAZA,0DP2sJF,C8C9nJM,kDACE,Y9CgoJR,C8C7nJM,4DAEE,mBAAoB,CADpB,kD9CgoJR,C8C7nJQ,mEAEE,oDADA,sD9CgoJV,CACF,C8ClnJA,kBvChJI,ePqwJJ,C8ClnJE,mCACE,kD9ConJJ,C8ClnJI,8CACE,qB9ConJN,C8CvmJE,yBACE,sDACA,+CACA,6DACA,4DACA,gEACA,6DACA,iEACA,yDACA,0DACA,mE9C0mJJ,C8CpnJE,2BACE,wDACA,iDACA,+DACA,4DACA,kEACA,6DACA,mEACA,2DACA,4DACA,qE9CunJJ,C8CjoJE,yBACE,sDACA,+CACA,6DACA,4DACA,gEACA,6DACA,iEACA,yDACA,0DACA,mE9CooJJ,C8C9oJE,sBACE,mDACA,4CACA,0DACA,4DACA,6DACA,6DACA,8DACA,sDACA,uDACA,gE9CipJJ,C8C3pJE,yBACE,sDACA,+CACA,6DACA,4DACA,gEACA,6DACA,iEACA,yDACA,0DACA,mE9C8pJJ,C8CxqJE,wBACE,qDACA,8CACA,4DACA,4DACA,+DACA,6DACA,gEACA,wDACA,yDACA,kE9C2qJJ,C8CrrJE,uBACE,oDACA,6CACA,2DACA,4DACA,8DACA,6DACA,+DACA,uDACA,wDACA,iE9CwrJJ,C8ClsJE,sBACE,mDACA,4CACA,0DACA,4DACA,6DACA,6DACA,8DACA,sDACA,uDACA,gE9CqsJJ,C+Cj4JA,WAEE,0BACA,oVACA,2BACA,kCACA,oEACA,+BACA,qCACA,uEAQA,wEACA,QAAS,CxCJP,sBwCFF,sBAAuB,CAEvB,UzCopD2B,CyC9oD3B,oCALA,cAFA,S/Cw4JF,C+C93JE,4BAPA,+B/C04JF,C+Cn4JE,iBAGE,0CADA,oB/Ci4JJ,C+C73JE,iBAEE,4CACA,0CAFA,S/Ci4JJ,C+C53JE,wCAIE,6CAFA,mBAAoB,CACpB,gB/C83JJ,C+C/2JI,iDATF,uC/Cg4JF,CgDj7JA,OAEE,uBACA,6BACA,4BACA,0BACA,2B7CyRI,6BALI,C6ClRR,mBACA,+CACA,+CACA,2DACA,iDACA,2CACA,kDACA,sDACA,kEASA,2BAA4B,CAD5B,oCAEA,uEzCPE,4CyCQF,sCALA,4B7CyQI,mCALI,C6CtQR,cAAe,CAGf,mBAAoB,CAJpB,+BhD07JF,CgD/6JE,eACE,ShDi7JJ,CgD96JE,kBACE,YhDg7JJ,CgD56JA,iBACE,uBAKA,cAAe,CACf,mBAAoB,CAJpB,iBAAkB,CAElB,iBAAkB,CADlB,8BhDi7JF,CgD56JE,mCACE,qChD86JJ,CgD16JA,cAEE,kBAAmB,CAInB,2BAA4B,CAD5B,2CAEA,qFzChCE,0FACA,2FyC4BF,mCAHA,YAAa,CAEb,2DhDm7JF,CgD56JE,yBAEE,sCADA,gDhD+6JJ,CgD16JA,YAEE,oBAAqB,CADrB,iChD86JF,CiD3+JA,OAEE,uBACA,uBACA,wBACA,yBACA,mBACA,gCACA,2DACA,+CACA,oDACA,8CACA,yFACA,iCACA,iCACA,oCACA,sDACA,sDACA,iCACA,6BACA,uBACA,sDACA,sDAOA,YAAa,CAEb,WAAY,CAJZ,MAAO,CASP,SAAU,CAJV,iBAAkB,CAClB,eAAgB,CARhB,cAAe,CACf,KAAM,CAIN,UAAW,CAFX,8BjDi/JF,CiDl+JA,cAGE,8BAEA,mBAAoB,CAJpB,iBAAkB,CAClB,UjDu+JF,CiDj+JE,0BAEE,2B3Ck8CgC,CgBh/C9B,iCtBihKN,CsB7gKM,uC2BwCJ,0B3BvCM,etBghKN,CACF,CiDt+JE,0BACE,cjDw+JJ,CiDp+JE,kCACE,qBjDs+JJ,CiDl+JA,yBACE,4CjDq+JF,CiDn+JE,wCACE,eAAgB,CAChB,ejDq+JJ,CiDl+JE,qCACE,ejDo+JJ,CiDh+JA,uBAEE,kBAAmB,CADnB,YAAa,CAEb,gDjDm+JF,CiD/9JA,eASE,2BAA4B,CAD5B,oCAEA,uE1CrFE,4C0CiFF,4BAJA,YAAa,CACb,qBAAsB,CAWtB,SAAU,CAPV,mBAAoB,CANpB,iBAAkB,CAGlB,UjDy+JF,CiD39JA,gBAEE,0BACA,sBACA,0BC5GA,sCD+G4D,CChH5D,YAAa,CAHb,MAAO,CAFP,cAAe,CACf,KAAM,CAGN,WAAY,CADZ,iClDmlKF,CkD7kKE,qBAAS,SlDglKX,CkD/kKE,qBAAS,kClDklKX,CiDl+JA,cAGE,kBAAmB,CAEnB,4F1CrGE,2DACA,4D0CgGF,YAAa,CACb,aAAc,CAEd,sCjDw+JF,CiDp+JE,yBAEE,6IADA,2FjDu+JJ,CiDj+JA,aAEE,8CADA,ejDq+JF,CiD/9JA,YAIE,aAAc,CACd,gCAJA,iBjDo+JF,CiD59JA,cAIE,kBAAmB,CAGnB,2C1CvHE,8DADA,+D0CyHF,yFAPA,YAAa,CACb,aAAc,CACd,cAAe,CAEf,wBAAyB,CACzB,qEjDm+JF,CiD39JE,gBACE,0CjD69JJ,CcxkKI,yBmCiHF,OACE,0BACA,0CjD29JF,CiDv9JA,cAGE,gBAAiB,CADjB,iBAAkB,CADlB,+BjD29JF,CiDt9JA,UACE,sBjDw9JF,CACF,CcvlKI,yBmCmIF,oBAEE,sBjDu9JF,CACF,Cc7lKI,0BmC0IF,UACE,uBjDs9JF,CACF,CiD78JI,kBAGE,WAAY,CACZ,QAAS,CAFT,cAAe,CADf,WjDk9JN,CiD78JM,iCAEE,QAAS,C1CzMb,gB0CwMI,WjDi9JR,CiD58JM,gE1C7MF,eP6pKJ,CiD38JM,8BACE,ejD68JR,CcvmKI,4BmCwIA,0BAGE,WAAY,CACZ,QAAS,CAFT,cAAe,CADf,WjDs+JJ,CiDj+JI,yCAEE,QAAS,C1CzMb,gB0CwMI,WjDq+JN,CiDh+JI,gF1C7MF,ePirKF,CiD/9JI,sCACE,ejDi+JN,CACF,Cc5nKI,4BmCwIA,0BAGE,WAAY,CACZ,QAAS,CAFT,cAAe,CADf,WjD0/JJ,CiDr/JI,yCAEE,QAAS,C1CzMb,gB0CwMI,WjDy/JN,CiDp/JI,gF1C7MF,ePqsKF,CiDn/JI,sCACE,ejDq/JN,CACF,CchpKI,4BmCwIA,0BAGE,WAAY,CACZ,QAAS,CAFT,cAAe,CADf,WjD8gKJ,CiDzgKI,yCAEE,QAAS,C1CzMb,gB0CwMI,WjD6gKN,CiDxgKI,gF1C7MF,ePytKF,CiDvgKI,sCACE,ejDygKN,CACF,CcpqKI,6BmCwIA,0BAGE,WAAY,CACZ,QAAS,CAFT,cAAe,CADf,WjDkiKJ,CiD7hKI,yCAEE,QAAS,C1CzMb,gB0CwMI,WjDiiKN,CiD5hKI,gF1C7MF,eP6uKF,CiD3hKI,sCACE,ejD6hKN,CACF,CmDnwKA,SAEE,yBACA,6BACA,8BACA,+BACA,sBhDwRI,+BALI,CgDjRR,qCACA,yCACA,mDACA,yBACA,gCACA,iCAYA,oBAAqB,CARrB,aAAc,CCjBd,qC9C+lB4B,CHjUxB,qCALI,CiDvRR,iBAAkB,CAClB,e9CwmB4B,C8CjmB5B,qBAAsB,CAItB,eAAgB,CAVhB,e9C+mB4B,C6CjmB5B,gCAQA,SAAU,CCrBV,eAAgB,CAChB,gBAAiB,CACjB,oBAAqB,CACrB,gBAAiB,CACjB,mBAAoB,CAGpB,kBAAmB,CADnB,iBAAkB,CAElB,mBAAoB,CDGpB,gCnDqxKF,CmDzwKE,cAAS,iCnD4wKX,CmD1wKE,wBACE,aAAc,CAEd,sCADA,mCnD6wKJ,CmD1wKI,+BAGE,wBAAyB,CACzB,kBAAmB,CAFnB,UAAW,CADX,iBnD+wKN,CmDvwKA,2FACE,8CnD0wKF,CmDxwKE,yGAGE,sCADA,qFADA,QnD4wKJ,CmDrwKA,6FAGE,qCAFA,6CACA,oCnD0wKF,CmDvwKE,2GAGE,wCADA,4HADA,UnD2wKJ,CmDnwKA,iGACE,2CnDuwKF,CmDrwKE,+GAGE,yCADA,qFADA,WnDywKJ,CmDlwKA,8FAGE,qCAFA,8CACA,oCnDuwKF,CmDpwKE,4GAGE,uCADA,4HADA,SnDwwKJ,CmDhvKA,eAKE,sC5CjGE,8C4C+FF,8BAFA,sCACA,gEAEA,iBnDsvKF,CqDz2KA,SAEE,yBACA,6BlD4RI,+BALI,CkDrRR,kCACA,iDACA,6DACA,sDACA,2FACA,6CACA,mCACA,qClDmRI,kCALI,CkD5QR,kCACA,8CACA,iCACA,iCACA,6CACA,8BACA,iCACA,yDAWA,oBAAqB,CAErB,2BAA4B,CAD5B,sCAEA,2E9ChBE,8C8CMF,aAAc,CDxBd,qC9C+lB4B,CHjUxB,qCALI,CiDvRR,iBAAkB,CAClB,e9CwmB4B,C8CjmB5B,qBAAsB,CAItB,eAAgB,CAVhB,e9C+mB4B,C+C1lB5B,sCDpBA,eAAgB,CAChB,gBAAiB,CACjB,oBAAqB,CACrB,gBAAiB,CACjB,mBAAoB,CAGpB,kBAAmB,CADnB,iBAAkB,CAElB,mBAAoB,CCUpB,gCrD+3KF,CqDh3KE,wBACE,aAAc,CAEd,sCADA,mCrDm3KJ,CqDh3KI,6DAOE,0BAAe,CAHf,UAAW,CADX,aAAc,CADd,iBrDs3KN,CqD32KE,2FACE,iFrD82KJ,CqD52KI,gNAEE,oFrD62KN,CqD12KI,yGAEE,gDADA,QrD62KN,CqDz2KI,uGAEE,sCADA,qCrD42KN,CqDp2KE,6FAGE,qCAFA,gFACA,oCrDy2KJ,CqDt2KI,oNAEE,2HrDu2KN,CqDp2KI,2GAEE,kDADA,MrDu2KN,CqDn2KI,yGAEE,wCADA,mCrDs2KN,CqD71KE,iGACE,8ErDi2KJ,CqD/1KI,4NAEE,oFrDg2KN,CqD71KI,+GAEE,mDADA,KrDg2KN,CqD51KI,6GAEE,yCADA,kCrD+1KN,CqDz1KE,iHAQE,+EADA,UAAW,CAHX,aAAc,CADd,QAAS,CAGT,oDALA,iBAAkB,CAClB,KAAM,CAGN,mCrD81KJ,CqDr1KE,8FAGE,qCAFA,iFACA,oCrD01KJ,CqDv1KI,sNAEE,2HrDw1KN,CqDr1KI,4GAEE,iDADA,OrDw1KN,CqDp1KI,0GAEE,uCADA,oCrDu1KN,CqD/zKA,gBAKE,6CACA,kF9C5JE,6DACA,8D8CyJF,qClDyGI,4CALI,CkDtGR,eAAgB,CADhB,6ErD00KF,CqDl0KE,sBACE,YrDo0KJ,CqDh0KA,cAEE,mCADA,yErDo0KF,CsDx/KA,UACE,iBtD2/KF,CsDx/KA,wBACE,kBtD2/KF,CsDx/KA,gBAGE,eAAgB,CAFhB,iBAAkB,CAClB,UtD4/KF,CuDjhLE,sBAEE,UAAW,CACX,UAAW,CAFX,avDqhLJ,CsD5/KA,eAME,0BAA2B,CAJ3B,YAAa,CACb,UAAW,CAEX,kBAAmB,CAJnB,iBAAkB,ChCbd,oCgCmBJ,CAHA,UtDkgLF,CsB9gLM,uCgCQN,ehCPQ,etBihLN,CACF,CsDjgLA,8DAGE,atDogLF,CsDjgLA,wEAEE,0BtDogLF,CsDjgLA,wEAEE,2BtDogLF,CsD3/KE,8BACE,SAAU,CAEV,cAAe,CADf,2BtD+/KJ,CsD3/KE,iJAIE,SAAU,CADV,StD8/KJ,CsD1/KE,oFAGE,SAAU,ChC5DR,yBgC6DF,CAFA,StD8/KJ,CsBrjLM,uCgCqDJ,oFhCpDM,etByjLN,CACF,CsDz/KA,8CAQE,kBAAmB,CAMnB,eAAgB,CAChB,QAAS,CAXT,QAAS,CAQT,UhD1FS,CgDqFT,YAAa,CAEb,sBAAuB,CAOvB,UhD6gDmC,CgDlhDnC,SAAU,CATV,iBAAkB,CAWlB,iBAAkB,CAVlB,KAAM,ChCzEF,4BgCuFJ,CAPA,ShDkhDmC,CgDvhDnC,StDugLF,CsB9kLM,uCgCkEN,8ChCjEQ,etBklLN,CACF,CsD9/KE,oHAEE,UhDpGO,CgDuGP,UhDqgDiC,CgDtgDjC,SAAU,CADV,oBtDmgLJ,CsD9/KA,uBACE,MtDigLF,CsD9/KA,uBACE,OtDigLF,CsD5/KA,wDAME,uBAAwB,CADxB,2BAA4B,CAE5B,yBAA0B,CAL1B,oBAAqB,CAErB,WhDqgDmC,CgDtgDnC,UtDmgLF,CsD5/KA,4BACE,sRtD+/KF,CsD7/KA,4BACE,uRtDggLF,CsDx/KA,qBAGE,QAAS,CAGT,YAAa,CACb,sBAAuB,CAHvB,MAAO,CAOP,kBAAmB,CACnB,ehDo9CmC,CgDt9CnC,gBhDs9CmC,CgDx9CnC,SAAU,CAPV,iBAAkB,CAClB,OAAQ,CAGR,StDigLF,CsDx/KE,sCAWE,2BAA4B,CAD5B,qBhDlKO,CgDoKP,QAAS,CAGT,qCADA,kCAbA,sBAAuB,CAQvB,cAAe,CAPf,aAAc,CAEd,UhDo9CiC,CgDj9CjC,ehDm9CiC,CgDp9CjC,gBhDo9CiC,CgD18CjC,UhD28CiC,CgDt9CjC,SAAU,CAGV,kBAAmB,ChCxJjB,2BgCiKF,CAdA,UtDugLJ,CsBtpLM,uCgC4IJ,sChC3IM,etBypLN,CACF,CsD3/KE,6BACE,StD6/KJ,CsDp/KA,kBAGE,chDk8CmC,CgD97CnC,UhD7LS,CgD0LT,SAEA,sBhD87CmC,CgD/7CnC,mBhD+7CmC,CgDn8CnC,iBAAkB,CAClB,UAMA,iBtDu/KF,CsDj/KE,sFAEE,+BtDo/KJ,CsDj/KE,qDACE,qBtDm/KJ,CsDh/KE,iCACE,UtDk/KJ,CsD5/KE,0OAEE,+BtDggLJ,CsD7/KE,yIACE,qBtD+/KJ,CsD5/KE,iGACE,UtD8/KJ,CwDhtLA,8BAQE,6FADA,iBAAkB,CALlB,oBAAqB,CAErB,gCACA,gDAFA,6BxDutLF,CwD9sLA,0BACE,GAAK,uBxDktLL,CACF,CwD/sLA,gBAEE,wBACA,yBACA,qCACA,iCACA,mCACA,2CAGA,gCACA,2CAA+B,CAA/B,6DxD8sLF,CwD3sLA,mBAEE,wBACA,yBACA,+BxD6sLF,CwDpsLA,wBACE,GACE,kBxDusLF,CwDrsLA,IACE,SAAU,CACV,cxDusLF,CACF,CwDnsLA,cAEE,wBACA,yBACA,qCACA,mCACA,yCAGA,6BAA8B,CAC9B,SxDksLF,CwD/rLA,iBACE,wBACA,wBxDksLF,CwD9rLE,uCACE,8BAEE,iCxDisLJ,CACF,CyDjxLA,mEAEE,2BACA,2BACA,2BACA,8BACA,8BACA,0CACA,oCACA,mDACA,+DACA,kDACA,qDACA,oCzDkxLF,CcrtLI,4B2C5CF,cAWI,2BAA4B,CAD5B,wCAPA,QAAS,CAKT,gCAHA,YAAa,CACb,qBAAsB,CACtB,cAAe,CAKf,SAAU,CAVV,cAAe,CnClBf,yCmC8BA,CALA,iBAAkB,CALlB,kCzD6wLJ,CACF,CsB9xLM,gEmCYJ,cnCXM,etBiyLN,CACF,Cc3uLI,4B2C5BE,8BAIE,qFAFA,MAAO,CADP,KAAM,CAIN,2BAA4B,CAF5B,+BzD4wLN,CyDvwLI,4BAIE,oFAFA,OAAQ,CADR,KAAM,CAIN,0BAA2B,CAF3B,+BzD2wLN,CyDtwLI,4BAME,sFALA,KAAM,CAMN,2BzDwwLN,CyDrwLI,2DANE,kCADA,MAAO,CAEP,eAAgB,CAHhB,OzDqxLN,CyD7wLI,+BAKE,mFACA,0BzDuwLN,CyDpwLI,sDAEE,czDqwLN,CyDlwLI,8DAGE,kBzDkwLN,CACF,Cc/xLI,yB2C/BF,cAiEM,2BACA,8BACA,sCzDiwLN,CyD/vLM,gCACE,YzDiwLR,CyD9vLM,8BAME,sCAAwC,CALxC,YAAa,CACb,WAAY,CAEZ,kBAAmB,CADnB,SzDkwLR,CACF,CcnyLI,4B2C5CF,cAWI,2BAA4B,CAD5B,wCAPA,QAAS,CAKT,gCAHA,YAAa,CACb,qBAAsB,CACtB,cAAe,CAKf,SAAU,CAVV,cAAe,CnClBf,yCmC8BA,CALA,iBAAkB,CALlB,kCzD21LJ,CACF,CsB52LM,gEmCYJ,cnCXM,etB+2LN,CACF,CczzLI,4B2C5BE,8BAIE,qFAFA,MAAO,CADP,KAAM,CAIN,2BAA4B,CAF5B,+BzD01LN,CyDr1LI,4BAIE,oFAFA,OAAQ,CADR,KAAM,CAIN,0BAA2B,CAF3B,+BzDy1LN,CyDp1LI,4BAME,sFALA,KAAM,CAMN,2BzDs1LN,CyDn1LI,2DANE,kCADA,MAAO,CAEP,eAAgB,CAHhB,OzDm2LN,CyD31LI,+BAKE,mFACA,0BzDq1LN,CyDl1LI,sDAEE,czDm1LN,CyDh1LI,8DAGE,kBzDg1LN,CACF,Cc72LI,yB2C/BF,cAiEM,2BACA,8BACA,sCzD+0LN,CyD70LM,gCACE,YzD+0LR,CyD50LM,8BAME,sCAAwC,CALxC,YAAa,CACb,WAAY,CAEZ,kBAAmB,CADnB,SzDg1LR,CACF,Ccj3LI,4B2C5CF,cAWI,2BAA4B,CAD5B,wCAPA,QAAS,CAKT,gCAHA,YAAa,CACb,qBAAsB,CACtB,cAAe,CAKf,SAAU,CAVV,cAAe,CnClBf,yCmC8BA,CALA,iBAAkB,CALlB,kCzDy6LJ,CACF,CsB17LM,gEmCYJ,cnCXM,etB67LN,CACF,Ccv4LI,4B2C5BE,8BAIE,qFAFA,MAAO,CADP,KAAM,CAIN,2BAA4B,CAF5B,+BzDw6LN,CyDn6LI,4BAIE,oFAFA,OAAQ,CADR,KAAM,CAIN,0BAA2B,CAF3B,+BzDu6LN,CyDl6LI,4BAME,sFALA,KAAM,CAMN,2BzDo6LN,CyDj6LI,2DANE,kCADA,MAAO,CAEP,eAAgB,CAHhB,OzDi7LN,CyDz6LI,+BAKE,mFACA,0BzDm6LN,CyDh6LI,sDAEE,czDi6LN,CyD95LI,8DAGE,kBzD85LN,CACF,Cc37LI,yB2C/BF,cAiEM,2BACA,8BACA,sCzD65LN,CyD35LM,gCACE,YzD65LR,CyD15LM,8BAME,sCAAwC,CALxC,YAAa,CACb,WAAY,CAEZ,kBAAmB,CADnB,SzD85LR,CACF,Cc/7LI,6B2C5CF,cAWI,2BAA4B,CAD5B,wCAPA,QAAS,CAKT,gCAHA,YAAa,CACb,qBAAsB,CACtB,cAAe,CAKf,SAAU,CAVV,cAAe,CnClBf,yCmC8BA,CALA,iBAAkB,CALlB,kCzDu/LJ,CACF,CsBxgMM,iEmCYJ,cnCXM,etB2gMN,CACF,Ccr9LI,6B2C5BE,8BAIE,qFAFA,MAAO,CADP,KAAM,CAIN,2BAA4B,CAF5B,+BzDs/LN,CyDj/LI,4BAIE,oFAFA,OAAQ,CADR,KAAM,CAIN,0BAA2B,CAF3B,+BzDq/LN,CyDh/LI,4BAME,sFALA,KAAM,CAMN,2BzDk/LN,CyD/+LI,2DANE,kCADA,MAAO,CAEP,eAAgB,CAHhB,OzD+/LN,CyDv/LI,+BAKE,mFACA,0BzDi/LN,CyD9+LI,sDAEE,czD++LN,CyD5+LI,8DAGE,kBzD4+LN,CACF,CczgMI,0B2C/BF,cAiEM,2BACA,8BACA,sCzD2+LN,CyDz+LM,gCACE,YzD2+LR,CyDx+LM,8BAME,sCAAwC,CALxC,YAAa,CACb,WAAY,CAEZ,kBAAmB,CADnB,SzD4+LR,CACF,CyDzjME,WAWI,2BAA4B,CAD5B,wCAPA,QAAS,CAKT,gCAHA,YAAa,CACb,qBAAsB,CACtB,cAAe,CAKf,SAAU,CAVV,cAAe,CnClBf,yCmC8BA,CALA,iBAAkB,CALlB,kCzDokMN,CsBplMM,uCmCYJ,WnCXM,etBulMN,CACF,CyD7jMM,2BAIE,qFAFA,MAAO,CADP,KAAM,CAIN,2BAA4B,CAF5B,+BzDikMR,CyD5jMM,yBAIE,oFAFA,OAAQ,CADR,KAAM,CAIN,0BAA2B,CAF3B,+BzDgkMR,CyD3jMM,yBAME,sFALA,KAAM,CAMN,2BzD6jMR,CyD1jMM,qDANE,kCADA,MAAO,CAEP,eAAgB,CAHhB,OzD0kMR,CyDlkMM,4BAKE,mFACA,0BzD4jMR,CyDzjMM,gDAEE,czD0jMR,CyDvjMM,qDAGE,kBzDujMR,CyD5hMA,oBP9GE,qB5CUS,C4CXT,YAAa,CAHb,MAAO,CAFP,cAAe,CACf,KAAM,CAGN,WAAY,CADZ,YlDupMF,CkDjpME,yBAAS,SlDopMX,CkDnpME,yBAAS,UlDspMX,CyDxiMA,kBAEE,kBAAmB,CADnB,YAAa,CAEb,mEzD2iMF,CyDziME,6BAEE,oIADA,qFzD4iMJ,CyDviMA,iBAEE,kDADA,ezD2iMF,CyDviMA,gBACE,WAAY,CAEZ,eAAgB,CADhB,mEzD2iMF,C0DvrMA,aAKE,6BAA8B,CAD9B,WAAY,CAHZ,oBAAqB,CACrB,cAAe,CAIf,UpDgzCkC,CoDnzClC,qB1D6rMF,C0DxrME,wBAEE,UAAW,CADX,oB1D2rMJ,C0DrrMA,gBACE,e1DwrMF,C0DrrMA,gBACE,e1DwrMF,C0DrrMA,gBACE,gB1DwrMF,C0DnrME,+BACE,kD1DsrMJ,C0DlrMA,4BACE,IACE,U1DqrMF,CACF,C0DlrMA,kBAGE,6CAA8C,CAF9C,wEACA,mB1DqrMF,C0DjrMA,4BACE,GACE,qB1DorMF,CACF,CuDnuME,gBAEE,UAAW,CACX,UAAW,CAFX,avDuuMJ,C2DxuME,iBAEE,8EADA,oB3D4uMJ,C2D7uME,mBAEE,gFADA,oB3DivMJ,C2DlvME,iBAEE,8EADA,oB3DsvMJ,C2DvvME,cAEE,2EADA,oB3D2vMJ,C2D5vME,iBAEE,8EADA,oB3DgwMJ,C2DjwME,gBAEE,6EADA,oB3DqwMJ,C2DtwME,eAEE,4EADA,oB3D0wMJ,C2D3wME,cAEE,2EADA,oB3D+wMJ,C4DhxME,cACE,qEACA,8F5DmxMJ,C4DhxMM,wCAGE,yDACA,kF5DgxMR,C4DzxME,gBACE,uEACA,gG5D4xMJ,C4DzxMM,4CAGE,yDACA,kF5DyxMR,C4DlyME,cACE,qEACA,8F5DqyMJ,C4DlyMM,wCAGE,yDACA,kF5DkyMR,C4D3yME,WACE,kEACA,2F5D8yMJ,C4D3yMM,kCAGE,0DACA,mF5D2yMR,C4DpzME,cACE,qEACA,8F5DuzMJ,C4DpzMM,wCAGE,0DACA,mF5DozMR,C4D7zME,aACE,oEACA,6F5Dg0MJ,C4D7zMM,sCAGE,yDACA,kF5D6zMR,C4Dt0ME,YACE,mEACA,4F5Dy0MJ,C4Dt0MM,oCAGE,2DACA,oF5Ds0MR,C4D/0ME,WACE,kEACA,2F5Dk1MJ,C4D/0MM,kCAGE,wDACA,iF5D+0MR,C4Dx0MA,oBACE,4EACA,qG5D20MF,C4Dx0MI,oDAEE,8EACA,uG5Dy0MN,C6Dn2MA,kBAGE,+IAFA,S7Du2MF,C8Dx2MA,WAGE,kBAAmB,CAGnB,0BAA2B,CAL3B,mBAAoB,CACpB,WxD6c4B,CwD3c5B,+EACA,2B9D42MF,C8Dz2ME,eAIE,iBAAkB,CAHlB,aAAc,CAEd,UxDsc0B,CgBjcxB,oCwCHF,CAHA,S9D82MJ,CsBp2MM,uCwCZJ,exCaM,etBu2MN,CACF,C8Dz2MI,8DACE,8D9D42MN,C+D/3MA,OACE,iBAAkB,CAClB,U/Dk4MF,C+Dh4ME,cAGE,UAAW,CAFX,aAAc,CACd,kC/Dm4MJ,C+D/3ME,SAKE,WAAY,CAFZ,MAAO,CAFP,iBAAkB,CAClB,KAAM,CAEN,U/Dk4MJ,C+D53ME,WACE,sB/D+3MJ,C+Dh4ME,WACE,qB/Dm4MJ,C+Dp4ME,YACE,wB/Du4MJ,C+Dx4ME,YACE,gC/D24MJ,CgEh6MA,WAEE,KhEs6MF,CgEh6MA,yBAJE,MAAO,CAHP,cAAe,CAEf,OAAQ,CAER,YhE26MF,CgEx6MA,cAGE,QhEq6MF,CgE35MI,YAEE,KhE+5MN,CgE35MI,2BALE,eAAgB,CAEhB,YhEo6MN,CgEj6MI,eAEE,QhE+5MN,Cc/3MI,yBkDxCA,eACE,eAAgB,CAChB,KAAM,CACN,YhE26MJ,CgEx6ME,kBAEE,QAAS,CADT,eAAgB,CAEhB,YhE06MJ,CACF,Cc54MI,yBkDxCA,eACE,eAAgB,CAChB,KAAM,CACN,YhEu7MJ,CgEp7ME,kBAEE,QAAS,CADT,eAAgB,CAEhB,YhEs7MJ,CACF,Ccx5MI,yBkDxCA,eACE,eAAgB,CAChB,KAAM,CACN,YhEm8MJ,CgEh8ME,kBAEE,QAAS,CADT,eAAgB,CAEhB,YhEk8MJ,CACF,Ccp6MI,0BkDxCA,eACE,eAAgB,CAChB,KAAM,CACN,YhE+8MJ,CgE58ME,kBAEE,QAAS,CADT,eAAgB,CAEhB,YhE88MJ,CACF,CiE9+MA,QAGE,kBAAmB,CADnB,kBjEk/MF,CiE7+MA,gBAHE,kBAAmB,CAHnB,YjE0/MF,CiEp/MA,QAEE,aAAc,CACd,qBjEi/MF,CkEx/MA,2ECSE,4BAAiC,CAEjC,kBAAoB,CANpB,oBAAsB,CAEtB,qBAAuB,CACvB,yBAA2B,CAF3B,mBAAqB,CAIrB,4BAA8B,CAN9B,mBnEggNF,CmEt/ME,qGACE,2BnEy/MJ,CoEvgNE,sBAIE,QAAS,CAGT,UAAW,CAFX,MAAO,CAJP,iBAAkB,CAElB,OAAQ,CADR,KAAM,CAIN,SpE2gNJ,CqElhNA,eCAE,eAAgB,CAChB,sBAAuB,CACvB,kBtEshNF,CuE5hNA,IAEE,kBAAmB,CAGnB,6BAA8B,CAJ9B,oBAAqB,CAGrB,cAAe,CAEf,WjE2rB4B,CiE9rB5B,4BvEkiNF,CwEn+MQ,gBAOI,iCxEg+MZ,CwEv+MQ,WAOI,4BxEo+MZ,CwE3+MQ,cAOI,+BxEw+MZ,CwE/+MQ,cAOI,+BxE4+MZ,CwEn/MQ,mBAOI,oCxEg/MZ,CwEv/MQ,gBAOI,iCxEo/MZ,CwE3/MQ,aAOI,oBxEw/MZ,CwE//MQ,WAOI,qBxE4/MZ,CwEngNQ,YAOI,oBxEggNZ,CwEvgNQ,oBAOI,4BxEogNZ,CwE3gNQ,kBAOI,0BxEwgNZ,CwE/gNQ,iBAOI,yBxE4gNZ,CwEnhNQ,kBAOI,+BxEghNZ,CwEvhNQ,iBAOI,yBxEohNZ,CwE3hNQ,WAOI,mBxEwhNZ,CwE/hNQ,YAOI,qBxE4hNZ,CwEniNQ,YAOI,oBxEgiNZ,CwEviNQ,YAOI,qBxEoiNZ,CwE3iNQ,aAOI,mBxEwiNZ,CwE/iNQ,eAOI,uBxE4iNZ,CwEnjNQ,iBAOI,yBxEgjNZ,CwEvjNQ,kBAOI,0BxEojNZ,CwE3jNQ,iBAOI,yBxEwjNZ,CwE/jNQ,iBAOI,yBxE4jNZ,CwEnkNQ,mBAOI,2BxEgkNZ,CwEvkNQ,oBAOI,4BxEokNZ,CwE3kNQ,mBAOI,2BxEwkNZ,CwE/kNQ,iBAOI,yBxE4kNZ,CwEnlNQ,mBAOI,2BxEglNZ,CwEvlNQ,oBAOI,4BxEolNZ,CwE3lNQ,mBAOI,2BxEwlNZ,CwE/lNQ,UAOI,wBxE4lNZ,CwEnmNQ,gBAOI,8BxEgmNZ,CwEvmNQ,SAOI,uBxEomNZ,CwE3mNQ,QAOI,sBxEwmNZ,CwE/mNQ,eAOI,6BxE4mNZ,CwEnnNQ,SAOI,uBxEgnNZ,CwEvnNQ,aAOI,2BxEonNZ,CwE3nNQ,cAOI,4BxEwnNZ,CwE/nNQ,QAOI,sBxE4nNZ,CwEnoNQ,eAOI,6BxEgoNZ,CwEvoNQ,QAOI,sBxEooNZ,CwE3oNQ,QAOI,yCxEwoNZ,CwE/oNQ,WAOI,4CxE4oNZ,CwEnpNQ,WAOI,4CxEgpNZ,CwEvpNQ,aAOI,yBxEopNZ,CwErqNQ,oBACE,8ExEwqNV,CwEzqNQ,sBACE,gFxE4qNV,CwE7qNQ,oBACE,8ExEgrNV,CwEjrNQ,iBACE,2ExEorNV,CwErrNQ,oBACE,8ExEwrNV,CwEzrNQ,mBACE,6ExE4rNV,CwE7rNQ,kBACE,4ExEgsNV,CwEjsNQ,iBACE,2ExEosNV,CwE3rNQ,iBAOI,yBxEwrNZ,CwE/rNQ,mBAOI,2BxE4rNZ,CwEnsNQ,mBAOI,2BxEgsNZ,CwEvsNQ,gBAOI,wBxEosNZ,CwE3sNQ,iBAOI,yBxEwsNZ,CwE/sNQ,OAOI,exE4sNZ,CwEntNQ,QAOI,iBxEgtNZ,CwEvtNQ,SAOI,kBxEotNZ,CwE3tNQ,UAOI,kBxEwtNZ,CwE/tNQ,WAOI,oBxE4tNZ,CwEnuNQ,YAOI,qBxEguNZ,CwEvuNQ,SAOI,gBxEouNZ,CwE3uNQ,UAOI,kBxEwuNZ,CwE/uNQ,WAOI,mBxE4uNZ,CwEnvNQ,OAOI,iBxEgvNZ,CwEvvNQ,QAOI,mBxEovNZ,CwE3vNQ,SAOI,oBxEwvNZ,CwE/vNQ,kBAOI,wCxE4vNZ,CwEnwNQ,oBAOI,oCxEgwNZ,CwEvwNQ,oBAOI,oCxEowNZ,CwE3wNQ,QAOI,qFxEwwNZ,CwE/wNQ,UAOI,kBxE4wNZ,CwEnxNQ,YAOI,yFxEgxNZ,CwEvxNQ,cAOI,sBxEoxNZ,CwE3xNQ,YAOI,2FxEwxNZ,CwE/xNQ,cAOI,wBxE4xNZ,CwEnyNQ,eAOI,4FxEgyNZ,CwEvyNQ,iBAOI,yBxEoyNZ,CwE3yNQ,cAOI,0FxEwyNZ,CwE/yNQ,gBAOI,uBxE4yNZ,CwEnzNQ,gBAIQ,sBAGJ,2ExEizNZ,CwExzNQ,kBAIQ,sBAGJ,6ExEszNZ,CwE7zNQ,gBAIQ,sBAGJ,2ExE2zNZ,CwEl0NQ,aAIQ,sBAGJ,wExEg0NZ,CwEv0NQ,gBAIQ,sBAGJ,2ExEq0NZ,CwE50NQ,eAIQ,sBAGJ,0ExE00NZ,CwEj1NQ,cAIQ,sBAGJ,yExE+0NZ,CwEt1NQ,aAIQ,sBAGJ,wExEo1NZ,CwE31NQ,cAIQ,sBAGJ,yExEy1NZ,CwEh2NQ,cAIQ,sBAGJ,yExE81NZ,CwEr2NQ,uBAOI,sDxEk2NZ,CwEz2NQ,yBAOI,wDxEs2NZ,CwE72NQ,uBAOI,sDxE02NZ,CwEj3NQ,oBAOI,mDxE82NZ,CwEr3NQ,uBAOI,sDxEk3NZ,CwEz3NQ,sBAOI,qDxEs3NZ,CwE73NQ,qBAOI,oDxE03NZ,CwEj4NQ,oBAOI,mDxE83NZ,CwEr4NQ,UAOI,0BxEk4NZ,CwEz4NQ,UAOI,0BxEs4NZ,CwE74NQ,UAOI,0BxE04NZ,CwEj5NQ,UAOI,0BxE84NZ,CwEr5NQ,UAOI,0BxEk5NZ,CwEn6NQ,mBACE,uBxEs6NV,CwEv6NQ,mBACE,wBxE06NV,CwE36NQ,mBACE,uBxE86NV,CwE/6NQ,mBACE,wBxEk7NV,CwEn7NQ,oBACE,qBxEs7NV,CwE76NQ,MAOI,mBxE06NZ,CwEj7NQ,MAOI,mBxE86NZ,CwEr7NQ,MAOI,mBxEk7NZ,CwEz7NQ,OAOI,oBxEs7NZ,CwE77NQ,QAOI,oBxE07NZ,CwEj8NQ,QAOI,wBxE87NZ,CwEr8NQ,QAOI,qBxEk8NZ,CwEz8NQ,YAOI,yBxEs8NZ,CwE78NQ,MAOI,oBxE08NZ,CwEj9NQ,MAOI,oBxE88NZ,CwEr9NQ,MAOI,oBxEk9NZ,CwEz9NQ,OAOI,qBxEs9NZ,CwE79NQ,QAOI,qBxE09NZ,CwEj+NQ,QAOI,yBxE89NZ,CwEr+NQ,QAOI,sBxEk+NZ,CwEz+NQ,YAOI,0BxEs+NZ,CwE7+NQ,WAOI,uBxE0+NZ,CwEj/NQ,UAOI,4BxE8+NZ,CwEr/NQ,aAOI,+BxEk/NZ,CwEz/NQ,kBAOI,oCxEs/NZ,CwE7/NQ,qBAOI,uCxE0/NZ,CwEjgOQ,aAOI,qBxE8/NZ,CwErgOQ,aAOI,qBxEkgOZ,CwEzgOQ,eAOI,uBxEsgOZ,CwE7gOQ,eAOI,uBxE0gOZ,CwEjhOQ,WAOI,wBxE8gOZ,CwErhOQ,aAOI,0BxEkhOZ,CwEzhOQ,mBAOI,gCxEshOZ,CwE7hOQ,uBAOI,oCxE0hOZ,CwEjiOQ,qBAOI,kCxE8hOZ,CwEriOQ,wBAOI,gCxEkiOZ,CwEziOQ,yBAOI,uCxEsiOZ,CwE7iOQ,wBAOI,sCxE0iOZ,CwEjjOQ,wBAOI,sCxE8iOZ,CwErjOQ,mBAOI,gCxEkjOZ,CwEzjOQ,iBAOI,8BxEsjOZ,CwE7jOQ,oBAOI,4BxE0jOZ,CwEjkOQ,sBAOI,8BxE8jOZ,CwErkOQ,qBAOI,6BxEkkOZ,CwEzkOQ,qBAOI,kCxEskOZ,CwE7kOQ,mBAOI,gCxE0kOZ,CwEjlOQ,sBAOI,8BxE8kOZ,CwErlOQ,uBAOI,qCxEklOZ,CwEzlOQ,sBAOI,oCxEslOZ,CwE7lOQ,uBAOI,+BxE0lOZ,CwEjmOQ,iBAOI,yBxE8lOZ,CwErmOQ,kBAOI,+BxEkmOZ,CwEzmOQ,gBAOI,6BxEsmOZ,CwE7mOQ,mBAOI,2BxE0mOZ,CwEjnOQ,qBAOI,6BxE8mOZ,CwErnOQ,oBAOI,4BxEknOZ,CwEznOQ,aAOI,kBxEsnOZ,CwE7nOQ,SAOI,iBxE0nOZ,CwEjoOQ,SAOI,iBxE8nOZ,CwEroOQ,SAOI,iBxEkoOZ,CwEzoOQ,SAOI,iBxEsoOZ,CwE7oOQ,SAOI,iBxE0oOZ,CwEjpOQ,SAOI,iBxE8oOZ,CwErpOQ,YAOI,iBxEkpOZ,CwEzpOQ,KAOI,kBxEspOZ,CwE7pOQ,KAOI,uBxE0pOZ,CwEjqOQ,KAOI,sBxE8pOZ,CwErqOQ,KAOI,qBxEkqOZ,CwEzqOQ,KAOI,uBxEsqOZ,CwE7qOQ,KAOI,qBxE0qOZ,CwEjrOQ,QAOI,qBxE8qOZ,CwErrOQ,MAOI,gDxEmrOZ,CwE1rOQ,MAOI,0DxEwrOZ,CwE/rOQ,MAOI,wDxE6rOZ,CwEpsOQ,MAOI,sDxEksOZ,CwEzsOQ,MAOI,0DxEusOZ,CwE9sOQ,MAOI,sDxE4sOZ,CwEntOQ,SAOI,sDxEitOZ,CwExtOQ,MAOI,gDxEstOZ,CwE7tOQ,MAOI,0DxE2tOZ,CwEluOQ,MAOI,wDxEguOZ,CwEvuOQ,MAOI,sDxEquOZ,CwE5uOQ,MAOI,0DxE0uOZ,CwEjvOQ,MAOI,sDxE+uOZ,CwEtvOQ,SAOI,sDxEovOZ,CwE3vOQ,MAOI,sBxEwvOZ,CwE/vOQ,MAOI,2BxE4vOZ,CwEnwOQ,MAOI,0BxEgwOZ,CwEvwOQ,MAOI,yBxEowOZ,CwE3wOQ,MAOI,2BxEwwOZ,CwE/wOQ,MAOI,yBxE4wOZ,CwEnxOQ,SAOI,yBxEgxOZ,CwEvxOQ,MAOI,wBxEoxOZ,CwE3xOQ,MAOI,6BxEwxOZ,CwE/xOQ,MAOI,4BxE4xOZ,CwEnyOQ,MAOI,2BxEgyOZ,CwEvyOQ,MAOI,6BxEoyOZ,CwE3yOQ,MAOI,2BxEwyOZ,CwE/yOQ,SAOI,2BxE4yOZ,CwEnzOQ,MAOI,yBxEgzOZ,CwEvzOQ,MAOI,8BxEozOZ,CwE3zOQ,MAOI,6BxEwzOZ,CwE/zOQ,MAOI,4BxE4zOZ,CwEn0OQ,MAOI,8BxEg0OZ,CwEv0OQ,MAOI,4BxEo0OZ,CwE30OQ,SAOI,4BxEw0OZ,CwE/0OQ,MAOI,uBxE40OZ,CwEn1OQ,MAOI,4BxEg1OZ,CwEv1OQ,MAOI,2BxEo1OZ,CwE31OQ,MAOI,0BxEw1OZ,CwE/1OQ,MAOI,4BxE41OZ,CwEn2OQ,MAOI,0BxEg2OZ,CwEv2OQ,SAOI,0BxEo2OZ,CwE32OQ,KAOI,mBxEw2OZ,CwE/2OQ,KAOI,wBxE42OZ,CwEn3OQ,KAOI,uBxEg3OZ,CwEv3OQ,KAOI,sBxEo3OZ,CwE33OQ,KAOI,wBxEw3OZ,CwE/3OQ,KAOI,sBxE43OZ,CwEn4OQ,MAOI,kDxEi4OZ,CwEx4OQ,MAOI,4DxEs4OZ,CwE74OQ,MAOI,0DxE24OZ,CwEl5OQ,MAOI,wDxEg5OZ,CwEv5OQ,MAOI,4DxEq5OZ,CwE55OQ,MAOI,wDxE05OZ,CwEj6OQ,MAOI,kDxE+5OZ,CwEt6OQ,MAOI,4DxEo6OZ,CwE36OQ,MAOI,0DxEy6OZ,CwEh7OQ,MAOI,wDxE86OZ,CwEr7OQ,MAOI,4DxEm7OZ,CwE17OQ,MAOI,wDxEw7OZ,CwE/7OQ,MAOI,uBxE47OZ,CwEn8OQ,MAOI,4BxEg8OZ,CwEv8OQ,MAOI,2BxEo8OZ,CwE38OQ,MAOI,0BxEw8OZ,CwE/8OQ,MAOI,4BxE48OZ,CwEn9OQ,MAOI,0BxEg9OZ,CwEv9OQ,MAOI,yBxEo9OZ,CwE39OQ,MAOI,8BxEw9OZ,CwE/9OQ,MAOI,6BxE49OZ,CwEn+OQ,MAOI,4BxEg+OZ,CwEv+OQ,MAOI,8BxEo+OZ,CwE3+OQ,MAOI,4BxEw+OZ,CwE/+OQ,MAOI,0BxE4+OZ,CwEn/OQ,MAOI,+BxEg/OZ,CwEv/OQ,MAOI,8BxEo/OZ,CwE3/OQ,MAOI,6BxEw/OZ,CwE//OQ,MAOI,+BxE4/OZ,CwEngPQ,MAOI,6BxEggPZ,CwEvgPQ,MAOI,wBxEogPZ,CwE3gPQ,MAOI,6BxEwgPZ,CwE/gPQ,MAOI,4BxE4gPZ,CwEnhPQ,MAOI,2BxEghPZ,CwEvhPQ,MAOI,6BxEohPZ,CwE3hPQ,MAOI,2BxEwhPZ,CwE/hPQ,OAOI,exE4hPZ,CwEniPQ,OAOI,oBxEgiPZ,CwEviPQ,OAOI,mBxEoiPZ,CwE3iPQ,OAOI,kBxEwiPZ,CwE/iPQ,OAOI,oBxE4iPZ,CwEnjPQ,OAOI,kBxEgjPZ,CwEvjPQ,WAOI,mBxEojPZ,CwE3jPQ,WAOI,wBxEwjPZ,CwE/jPQ,WAOI,uBxE4jPZ,CwEnkPQ,WAOI,sBxEgkPZ,CwEvkPQ,WAOI,wBxEokPZ,CwE3kPQ,WAOI,sBxEwkPZ,CwE/kPQ,cAOI,sBxE4kPZ,CwEnlPQ,cAOI,2BxEglPZ,CwEvlPQ,cAOI,0BxEolPZ,CwE3lPQ,cAOI,yBxEwlPZ,CwE/lPQ,cAOI,2BxE4lPZ,CwEnmPQ,cAOI,yBxEgmPZ,CwEvmPQ,gBAOI,8CxEomPZ,CwE3mPQ,MAOI,0CxEwmPZ,CwE/mPQ,MAOI,yCxE4mPZ,CwEnnPQ,MAOI,uCxEgnPZ,CwEvnPQ,MAOI,yCxEonPZ,CwE3nPQ,MAOI,2BxEwnPZ,CwE/nPQ,MAOI,wBxE4nPZ,CwEnoPQ,YAOI,2BxEgoPZ,CwEvoPQ,YAOI,2BxEooPZ,CwE3oPQ,YAOI,6BxEwoPZ,CwE/oPQ,UAOI,yBxE4oPZ,CwEnpPQ,WAOI,yBxEgpPZ,CwEvpPQ,WAOI,yBxEopPZ,CwE3pPQ,aAOI,yBxEwpPZ,CwE/pPQ,SAOI,yBxE4pPZ,CwEnqPQ,WAOI,4BxEgqPZ,CwEvqPQ,MAOI,uBxEoqPZ,CwE3qPQ,OAOI,0BxEwqPZ,CwE/qPQ,SAOI,yBxE4qPZ,CwEnrPQ,OAOI,uBxEgrPZ,CwEvrPQ,YAOI,yBxEorPZ,CwE3rPQ,UAOI,0BxEwrPZ,CwE/rPQ,aAOI,2BxE4rPZ,CwEnsPQ,sBAOI,8BxEgsPZ,CwEvsPQ,2BAOI,mCxEosPZ,CwE3sPQ,8BAOI,sCxEwsPZ,CwE/sPQ,gBAOI,kCxE4sPZ,CwEntPQ,gBAOI,kCxEgtPZ,CwEvtPQ,iBAOI,mCxEotPZ,CwE3tPQ,WAOI,4BxEwtPZ,CwE/tPQ,aAOI,4BxE4tPZ,CwEnuPQ,YAOI,8DxEkuPZ,CwEzuPQ,cAIQ,oBAGJ,kExEwuPZ,CwE/uPQ,gBAIQ,oBAGJ,oExE6uPZ,CwEpvPQ,cAIQ,oBAGJ,kExEkvPZ,CwEzvPQ,WAIQ,oBAGJ,+DxEuvPZ,CwE9vPQ,cAIQ,oBAGJ,kExE4vPZ,CwEnwPQ,aAIQ,oBAGJ,iExEiwPZ,CwExwPQ,YAIQ,oBAGJ,gExEswPZ,CwE7wPQ,WAIQ,oBAGJ,+DxE2wPZ,CwElxPQ,YAIQ,oBAGJ,gExEgxPZ,CwEvxPQ,YAIQ,oBAGJ,gExEqxPZ,CwE5xPQ,WAIQ,oBAGJ,qExE0xPZ,CwEjyPQ,YAIQ,oBAGJ,yCxE+xPZ,CwEtyPQ,eAIQ,oBAGJ,8BxEoyPZ,CwE3yPQ,eAIQ,oBAGJ,kCxEyyPZ,CwEhzPQ,qBAIQ,oBAGJ,yCxE8yPZ,CwErzPQ,oBAIQ,oBAGJ,wCxEmzPZ,CwE1zPQ,oBAIQ,oBAGJ,wCxEwzPZ,CwE/zPQ,YAIQ,oBAGJ,uBxE6zPZ,CwE90PQ,iBACE,sBxEi1PV,CwEl1PQ,iBACE,qBxEq1PV,CwEt1PQ,iBACE,sBxEy1PV,CwE11PQ,kBACE,mBxE61PV,CwEp1PQ,uBAOI,+CxEi1PZ,CwEx1PQ,yBAOI,iDxEq1PZ,CwE51PQ,uBAOI,+CxEy1PZ,CwEh2PQ,oBAOI,4CxE61PZ,CwEp2PQ,uBAOI,+CxEi2PZ,CwEx2PQ,sBAOI,8CxEq2PZ,CwE52PQ,qBAOI,6CxEy2PZ,CwEh3PQ,oBAOI,4CxE62PZ,CwEz3PU,8CACE,qBxEg4PZ,CwEj4PU,8CACE,sBxEw4PZ,CwEz4PU,8CACE,qBxEg5PZ,CwEj5PU,8CACE,sBxEw5PZ,CwEz5PU,gDACE,mBxEg6PZ,CwEh5PU,0CAOI,sCxEi5Pd,CwEx5PU,0CAOI,qCxEy5Pd,CwEh6PU,0CAOI,sCxEi6Pd,CwEp7PQ,wBAIQ,8BAGJ,4FxEk7PZ,CwEz7PQ,0BAIQ,8BAGJ,8FxEu7PZ,CwE97PQ,wBAIQ,8BAGJ,4FxE47PZ,CwEn8PQ,qBAIQ,8BAGJ,yFxEi8PZ,CwEx8PQ,wBAIQ,8BAGJ,4FxEs8PZ,CwE78PQ,uBAIQ,8BAGJ,2FxE28PZ,CwEl9PQ,sBAIQ,8BAGJ,0FxEg9PZ,CwEv9PQ,qBAIQ,8BAGJ,yFxEq9PZ,CwE59PQ,gBAIQ,8BAGJ,iGxE09PZ,CwEt+PU,gEACE,6BxE6+PZ,CwE9+PU,kEACE,+BxEq/PZ,CwEt/PU,kEACE,gCxE6/PZ,CwE9/PU,kEACE,+BxEqgQZ,CwEtgQU,kEACE,gCxE6gQZ,CwE9gQU,oEACE,6BxEqhQZ,CwEjhQQ,YAIQ,kBAGJ,2ExE+gQZ,CwEthQQ,cAIQ,kBAGJ,6ExEohQZ,CwE3hQQ,YAIQ,kBAGJ,2ExEyhQZ,CwEhiQQ,SAIQ,kBAGJ,wExE8hQZ,CwEriQQ,YAIQ,kBAGJ,2ExEmiQZ,CwE1iQQ,WAIQ,kBAGJ,0ExEwiQZ,CwE/iQQ,UAIQ,kBAGJ,yExE6iQZ,CwEpjQQ,SAIQ,kBAGJ,wExEkjQZ,CwEzjQQ,UAIQ,kBAGJ,yExEujQZ,CwE9jQQ,UAIQ,kBAGJ,yExE4jQZ,CwEnkQQ,SAIQ,kBAGJ,2ExEikQZ,CwExkQQ,gBAIQ,kBAGJ,sCxEskQZ,CwE7kQQ,mBAIQ,kBAGJ,gFxE2kQZ,CwEllQQ,kBAIQ,kBAGJ,+ExEglQZ,CwEjmQQ,eACE,mBxEomQV,CwErmQQ,eACE,oBxEwmQV,CwEzmQQ,eACE,mBxE4mQV,CwE7mQQ,eACE,oBxEgnQV,CwEjnQQ,gBACE,iBxEonQV,CwE3mQQ,mBAOI,sDxEwmQZ,CwE/mQQ,qBAOI,wDxE4mQZ,CwEnnQQ,mBAOI,sDxEgnQZ,CwEvnQQ,gBAOI,mDxEonQZ,CwE3nQQ,mBAOI,sDxEwnQZ,CwE/nQQ,kBAOI,qDxE4nQZ,CwEnoQQ,iBAOI,oDxEgoQZ,CwEvoQQ,gBAOI,mDxEooQZ,CwE3oQQ,aAOI,6CxEwoQZ,CwE/oQQ,iBAOI,yBxE4oQZ,CwEnpQQ,kBAOI,0BxEgpQZ,CwEvpQQ,kBAOI,0BxEopQZ,CwE3pQQ,SAOI,6BxEwpQZ,CwE/pQQ,SAOI,6BxE4pQZ,CwEnqQQ,SAOI,+CxEgqQZ,CwEvqQQ,WAOI,yBxEoqQZ,CwE3qQQ,WAOI,kDxEwqQZ,CwE/qQQ,WAOI,+CxE4qQZ,CwEnrQQ,WAOI,kDxEgrQZ,CwEvrQQ,WAOI,kDxEorQZ,CwE3rQQ,WAOI,mDxEwrQZ,CwE/rQQ,gBAOI,2BxE4rQZ,CwEnsQQ,cAOI,oDxEgsQZ,CwEvsQQ,aAOI,kHxEqsQZ,CwE5sQQ,eAOI,sExE0sQZ,CwEjtQQ,eAOI,wHxE+sQZ,CwEttQQ,eAOI,kHxEotQZ,CwE3tQQ,eAOI,wHxEytQZ,CwEhuQQ,eAOI,wHxE8tQZ,CwEruQQ,eAOI,0HxEmuQZ,CwE1uQQ,oBAOI,0ExEwuQZ,CwE/uQQ,kBAOI,4HxE6uQZ,CwEpvQQ,aAOI,sHxEkvQZ,CwEzvQQ,eAOI,0ExEuvQZ,CwE9vQQ,eAOI,4HxE4vQZ,CwEnwQQ,eAOI,sHxEiwQZ,CwExwQQ,eAOI,4HxEswQZ,CwE7wQQ,eAOI,4HxE2wQZ,CwElxQQ,eAOI,8HxEgxQZ,CwEvxQQ,oBAOI,8ExEqxQZ,CwE5xQQ,kBAOI,gIxE0xQZ,CwEjyQQ,gBAOI,wHxE+xQZ,CwEtyQQ,kBAOI,4ExEoyQZ,CwE3yQQ,kBAOI,8HxEyyQZ,CwEhzQQ,kBAOI,wHxE8yQZ,CwErzQQ,kBAOI,8HxEmzQZ,CwE1zQQ,kBAOI,8HxEwzQZ,CwE/zQQ,kBAOI,gIxE6zQZ,CwEp0QQ,uBAOI,gFxEk0QZ,CwEz0QQ,qBAOI,kIxEu0QZ,CwE90QQ,eAOI,oHxE40QZ,CwEn1QQ,iBAOI,wExEi1QZ,CwEx1QQ,iBAOI,0HxEs1QZ,CwE71QQ,iBAOI,oHxE21QZ,CwEl2QQ,iBAOI,0HxEg2QZ,CwEv2QQ,iBAOI,0HxEq2QZ,CwE52QQ,iBAOI,4HxE02QZ,CwEj3QQ,sBAOI,4ExE+2QZ,CwEt3QQ,oBAOI,8HxEo3QZ,CwE33QQ,SAOI,4BxEw3QZ,CwE/3QQ,WAOI,2BxE43QZ,CwEn4QQ,MAOI,oBxEg4QZ,CwEv4QQ,KAOI,mBxEo4QZ,CwE34QQ,KAOI,mBxEw4QZ,CwE/4QQ,KAOI,mBxE44QZ,CwEn5QQ,KAOI,mBxEg5QZ,Cc15QI,yB0DGI,gBAOI,oBxEq5QV,CwE55QM,cAOI,qBxEw5QV,CwE/5QM,eAOI,oBxE25QV,CwEl6QM,uBAOI,4BxE85QV,CwEr6QM,qBAOI,0BxEi6QV,CwEx6QM,oBAOI,yBxEo6QV,CwE36QM,qBAOI,+BxEu6QV,CwE96QM,oBAOI,yBxE06QV,CwEj7QM,aAOI,wBxE66QV,CwEp7QM,mBAOI,8BxEg7QV,CwEv7QM,YAOI,uBxEm7QV,CwE17QM,WAOI,sBxEs7QV,CwE77QM,kBAOI,6BxEy7QV,CwEh8QM,YAOI,uBxE47QV,CwEn8QM,gBAOI,2BxE+7QV,CwEt8QM,iBAOI,4BxEk8QV,CwEz8QM,WAOI,sBxEq8QV,CwE58QM,kBAOI,6BxEw8QV,CwE/8QM,WAOI,sBxE28QV,CwEl9QM,cAOI,uBxE88QV,CwEr9QM,aAOI,4BxEi9QV,CwEx9QM,gBAOI,+BxEo9QV,CwE39QM,qBAOI,oCxEu9QV,CwE99QM,wBAOI,uCxE09QV,CwEj+QM,gBAOI,qBxE69QV,CwEp+QM,gBAOI,qBxEg+QV,CwEv+QM,kBAOI,uBxEm+QV,CwE1+QM,kBAOI,uBxEs+QV,CwE7+QM,cAOI,wBxEy+QV,CwEh/QM,gBAOI,0BxE4+QV,CwEn/QM,sBAOI,gCxE++QV,CwEt/QM,0BAOI,oCxEk/QV,CwEz/QM,wBAOI,kCxEq/QV,CwE5/QM,2BAOI,gCxEw/QV,CwE//QM,4BAOI,uCxE2/QV,CwElgRM,2BAOI,sCxE8/QV,CwErgRM,2BAOI,sCxEigRV,CwExgRM,sBAOI,gCxEogRV,CwE3gRM,oBAOI,8BxEugRV,CwE9gRM,uBAOI,4BxE0gRV,CwEjhRM,yBAOI,8BxE6gRV,CwEphRM,wBAOI,6BxEghRV,CwEvhRM,wBAOI,kCxEmhRV,CwE1hRM,sBAOI,gCxEshRV,CwE7hRM,yBAOI,8BxEyhRV,CwEhiRM,0BAOI,qCxE4hRV,CwEniRM,yBAOI,oCxE+hRV,CwEtiRM,0BAOI,+BxEkiRV,CwEziRM,oBAOI,yBxEqiRV,CwE5iRM,qBAOI,+BxEwiRV,CwE/iRM,mBAOI,6BxE2iRV,CwEljRM,sBAOI,2BxE8iRV,CwErjRM,wBAOI,6BxEijRV,CwExjRM,uBAOI,4BxEojRV,CwE3jRM,gBAOI,kBxEujRV,CwE9jRM,YAOI,iBxE0jRV,CwEjkRM,YAOI,iBxE6jRV,CwEpkRM,YAOI,iBxEgkRV,CwEvkRM,YAOI,iBxEmkRV,CwE1kRM,YAOI,iBxEskRV,CwE7kRM,YAOI,iBxEykRV,CwEhlRM,eAOI,iBxE4kRV,CwEnlRM,QAOI,kBxE+kRV,CwEtlRM,QAOI,uBxEklRV,CwEzlRM,QAOI,sBxEqlRV,CwE5lRM,QAOI,qBxEwlRV,CwE/lRM,QAOI,uBxE2lRV,CwElmRM,QAOI,qBxE8lRV,CwErmRM,WAOI,qBxEimRV,CwExmRM,SAOI,gDxEqmRV,CwE5mRM,SAOI,0DxEymRV,CwEhnRM,SAOI,wDxE6mRV,CwEpnRM,SAOI,sDxEinRV,CwExnRM,SAOI,0DxEqnRV,CwE5nRM,SAOI,sDxEynRV,CwEhoRM,YAOI,sDxE6nRV,CwEpoRM,SAOI,gDxEioRV,CwExoRM,SAOI,0DxEqoRV,CwE5oRM,SAOI,wDxEyoRV,CwEhpRM,SAOI,sDxE6oRV,CwEppRM,SAOI,0DxEipRV,CwExpRM,SAOI,sDxEqpRV,CwE5pRM,YAOI,sDxEypRV,CwEhqRM,SAOI,sBxE4pRV,CwEnqRM,SAOI,2BxE+pRV,CwEtqRM,SAOI,0BxEkqRV,CwEzqRM,SAOI,yBxEqqRV,CwE5qRM,SAOI,2BxEwqRV,CwE/qRM,SAOI,yBxE2qRV,CwElrRM,YAOI,yBxE8qRV,CwErrRM,SAOI,wBxEirRV,CwExrRM,SAOI,6BxEorRV,CwE3rRM,SAOI,4BxEurRV,CwE9rRM,SAOI,2BxE0rRV,CwEjsRM,SAOI,6BxE6rRV,CwEpsRM,SAOI,2BxEgsRV,CwEvsRM,YAOI,2BxEmsRV,CwE1sRM,SAOI,yBxEssRV,CwE7sRM,SAOI,8BxEysRV,CwEhtRM,SAOI,6BxE4sRV,CwEntRM,SAOI,4BxE+sRV,CwEttRM,SAOI,8BxEktRV,CwEztRM,SAOI,4BxEqtRV,CwE5tRM,YAOI,4BxEwtRV,CwE/tRM,SAOI,uBxE2tRV,CwEluRM,SAOI,4BxE8tRV,CwEruRM,SAOI,2BxEiuRV,CwExuRM,SAOI,0BxEouRV,CwE3uRM,SAOI,4BxEuuRV,CwE9uRM,SAOI,0BxE0uRV,CwEjvRM,YAOI,0BxE6uRV,CwEpvRM,QAOI,mBxEgvRV,CwEvvRM,QAOI,wBxEmvRV,CwE1vRM,QAOI,uBxEsvRV,CwE7vRM,QAOI,sBxEyvRV,CwEhwRM,QAOI,wBxE4vRV,CwEnwRM,QAOI,sBxE+vRV,CwEtwRM,SAOI,kDxEmwRV,CwE1wRM,SAOI,4DxEuwRV,CwE9wRM,SAOI,0DxE2wRV,CwElxRM,SAOI,wDxE+wRV,CwEtxRM,SAOI,4DxEmxRV,CwE1xRM,SAOI,wDxEuxRV,CwE9xRM,SAOI,kDxE2xRV,CwElyRM,SAOI,4DxE+xRV,CwEtyRM,SAOI,0DxEmyRV,CwE1yRM,SAOI,wDxEuyRV,CwE9yRM,SAOI,4DxE2yRV,CwElzRM,SAOI,wDxE+yRV,CwEtzRM,SAOI,uBxEkzRV,CwEzzRM,SAOI,4BxEqzRV,CwE5zRM,SAOI,2BxEwzRV,CwE/zRM,SAOI,0BxE2zRV,CwEl0RM,SAOI,4BxE8zRV,CwEr0RM,SAOI,0BxEi0RV,CwEx0RM,SAOI,yBxEo0RV,CwE30RM,SAOI,8BxEu0RV,CwE90RM,SAOI,6BxE00RV,CwEj1RM,SAOI,4BxE60RV,CwEp1RM,SAOI,8BxEg1RV,CwEv1RM,SAOI,4BxEm1RV,CwE11RM,SAOI,0BxEs1RV,CwE71RM,SAOI,+BxEy1RV,CwEh2RM,SAOI,8BxE41RV,CwEn2RM,SAOI,6BxE+1RV,CwEt2RM,SAOI,+BxEk2RV,CwEz2RM,SAOI,6BxEq2RV,CwE52RM,SAOI,wBxEw2RV,CwE/2RM,SAOI,6BxE22RV,CwEl3RM,SAOI,4BxE82RV,CwEr3RM,SAOI,2BxEi3RV,CwEx3RM,SAOI,6BxEo3RV,CwE33RM,SAOI,2BxEu3RV,CwE93RM,UAOI,exE03RV,CwEj4RM,UAOI,oBxE63RV,CwEp4RM,UAOI,mBxEg4RV,CwEv4RM,UAOI,kBxEm4RV,CwE14RM,UAOI,oBxEs4RV,CwE74RM,UAOI,kBxEy4RV,CwEh5RM,cAOI,mBxE44RV,CwEn5RM,cAOI,wBxE+4RV,CwEt5RM,cAOI,uBxEk5RV,CwEz5RM,cAOI,sBxEq5RV,CwE55RM,cAOI,wBxEw5RV,CwE/5RM,cAOI,sBxE25RV,CwEl6RM,iBAOI,sBxE85RV,CwEr6RM,iBAOI,2BxEi6RV,CwEx6RM,iBAOI,0BxEo6RV,CwE36RM,iBAOI,yBxEu6RV,CwE96RM,iBAOI,2BxE06RV,CwEj7RM,iBAOI,yBxE66RV,CwEp7RM,eAOI,yBxEg7RV,CwEv7RM,aAOI,0BxEm7RV,CwE17RM,gBAOI,2BxEs7RV,CACF,Ccj8RI,yB0DGI,gBAOI,oBxE27RV,CwEl8RM,cAOI,qBxE87RV,CwEr8RM,eAOI,oBxEi8RV,CwEx8RM,uBAOI,4BxEo8RV,CwE38RM,qBAOI,0BxEu8RV,CwE98RM,oBAOI,yBxE08RV,CwEj9RM,qBAOI,+BxE68RV,CwEp9RM,oBAOI,yBxEg9RV,CwEv9RM,aAOI,wBxEm9RV,CwE19RM,mBAOI,8BxEs9RV,CwE79RM,YAOI,uBxEy9RV,CwEh+RM,WAOI,sBxE49RV,CwEn+RM,kBAOI,6BxE+9RV,CwEt+RM,YAOI,uBxEk+RV,CwEz+RM,gBAOI,2BxEq+RV,CwE5+RM,iBAOI,4BxEw+RV,CwE/+RM,WAOI,sBxE2+RV,CwEl/RM,kBAOI,6BxE8+RV,CwEr/RM,WAOI,sBxEi/RV,CwEx/RM,cAOI,uBxEo/RV,CwE3/RM,aAOI,4BxEu/RV,CwE9/RM,gBAOI,+BxE0/RV,CwEjgSM,qBAOI,oCxE6/RV,CwEpgSM,wBAOI,uCxEggSV,CwEvgSM,gBAOI,qBxEmgSV,CwE1gSM,gBAOI,qBxEsgSV,CwE7gSM,kBAOI,uBxEygSV,CwEhhSM,kBAOI,uBxE4gSV,CwEnhSM,cAOI,wBxE+gSV,CwEthSM,gBAOI,0BxEkhSV,CwEzhSM,sBAOI,gCxEqhSV,CwE5hSM,0BAOI,oCxEwhSV,CwE/hSM,wBAOI,kCxE2hSV,CwEliSM,2BAOI,gCxE8hSV,CwEriSM,4BAOI,uCxEiiSV,CwExiSM,2BAOI,sCxEoiSV,CwE3iSM,2BAOI,sCxEuiSV,CwE9iSM,sBAOI,gCxE0iSV,CwEjjSM,oBAOI,8BxE6iSV,CwEpjSM,uBAOI,4BxEgjSV,CwEvjSM,yBAOI,8BxEmjSV,CwE1jSM,wBAOI,6BxEsjSV,CwE7jSM,wBAOI,kCxEyjSV,CwEhkSM,sBAOI,gCxE4jSV,CwEnkSM,yBAOI,8BxE+jSV,CwEtkSM,0BAOI,qCxEkkSV,CwEzkSM,yBAOI,oCxEqkSV,CwE5kSM,0BAOI,+BxEwkSV,CwE/kSM,oBAOI,yBxE2kSV,CwEllSM,qBAOI,+BxE8kSV,CwErlSM,mBAOI,6BxEilSV,CwExlSM,sBAOI,2BxEolSV,CwE3lSM,wBAOI,6BxEulSV,CwE9lSM,uBAOI,4BxE0lSV,CwEjmSM,gBAOI,kBxE6lSV,CwEpmSM,YAOI,iBxEgmSV,CwEvmSM,YAOI,iBxEmmSV,CwE1mSM,YAOI,iBxEsmSV,CwE7mSM,YAOI,iBxEymSV,CwEhnSM,YAOI,iBxE4mSV,CwEnnSM,YAOI,iBxE+mSV,CwEtnSM,eAOI,iBxEknSV,CwEznSM,QAOI,kBxEqnSV,CwE5nSM,QAOI,uBxEwnSV,CwE/nSM,QAOI,sBxE2nSV,CwEloSM,QAOI,qBxE8nSV,CwEroSM,QAOI,uBxEioSV,CwExoSM,QAOI,qBxEooSV,CwE3oSM,WAOI,qBxEuoSV,CwE9oSM,SAOI,gDxE2oSV,CwElpSM,SAOI,0DxE+oSV,CwEtpSM,SAOI,wDxEmpSV,CwE1pSM,SAOI,sDxEupSV,CwE9pSM,SAOI,0DxE2pSV,CwElqSM,SAOI,sDxE+pSV,CwEtqSM,YAOI,sDxEmqSV,CwE1qSM,SAOI,gDxEuqSV,CwE9qSM,SAOI,0DxE2qSV,CwElrSM,SAOI,wDxE+qSV,CwEtrSM,SAOI,sDxEmrSV,CwE1rSM,SAOI,0DxEurSV,CwE9rSM,SAOI,sDxE2rSV,CwElsSM,YAOI,sDxE+rSV,CwEtsSM,SAOI,sBxEksSV,CwEzsSM,SAOI,2BxEqsSV,CwE5sSM,SAOI,0BxEwsSV,CwE/sSM,SAOI,yBxE2sSV,CwEltSM,SAOI,2BxE8sSV,CwErtSM,SAOI,yBxEitSV,CwExtSM,YAOI,yBxEotSV,CwE3tSM,SAOI,wBxEutSV,CwE9tSM,SAOI,6BxE0tSV,CwEjuSM,SAOI,4BxE6tSV,CwEpuSM,SAOI,2BxEguSV,CwEvuSM,SAOI,6BxEmuSV,CwE1uSM,SAOI,2BxEsuSV,CwE7uSM,YAOI,2BxEyuSV,CwEhvSM,SAOI,yBxE4uSV,CwEnvSM,SAOI,8BxE+uSV,CwEtvSM,SAOI,6BxEkvSV,CwEzvSM,SAOI,4BxEqvSV,CwE5vSM,SAOI,8BxEwvSV,CwE/vSM,SAOI,4BxE2vSV,CwElwSM,YAOI,4BxE8vSV,CwErwSM,SAOI,uBxEiwSV,CwExwSM,SAOI,4BxEowSV,CwE3wSM,SAOI,2BxEuwSV,CwE9wSM,SAOI,0BxE0wSV,CwEjxSM,SAOI,4BxE6wSV,CwEpxSM,SAOI,0BxEgxSV,CwEvxSM,YAOI,0BxEmxSV,CwE1xSM,QAOI,mBxEsxSV,CwE7xSM,QAOI,wBxEyxSV,CwEhySM,QAOI,uBxE4xSV,CwEnySM,QAOI,sBxE+xSV,CwEtySM,QAOI,wBxEkySV,CwEzySM,QAOI,sBxEqySV,CwE5ySM,SAOI,kDxEyySV,CwEhzSM,SAOI,4DxE6ySV,CwEpzSM,SAOI,0DxEizSV,CwExzSM,SAOI,wDxEqzSV,CwE5zSM,SAOI,4DxEyzSV,CwEh0SM,SAOI,wDxE6zSV,CwEp0SM,SAOI,kDxEi0SV,CwEx0SM,SAOI,4DxEq0SV,CwE50SM,SAOI,0DxEy0SV,CwEh1SM,SAOI,wDxE60SV,CwEp1SM,SAOI,4DxEi1SV,CwEx1SM,SAOI,wDxEq1SV,CwE51SM,SAOI,uBxEw1SV,CwE/1SM,SAOI,4BxE21SV,CwEl2SM,SAOI,2BxE81SV,CwEr2SM,SAOI,0BxEi2SV,CwEx2SM,SAOI,4BxEo2SV,CwE32SM,SAOI,0BxEu2SV,CwE92SM,SAOI,yBxE02SV,CwEj3SM,SAOI,8BxE62SV,CwEp3SM,SAOI,6BxEg3SV,CwEv3SM,SAOI,4BxEm3SV,CwE13SM,SAOI,8BxEs3SV,CwE73SM,SAOI,4BxEy3SV,CwEh4SM,SAOI,0BxE43SV,CwEn4SM,SAOI,+BxE+3SV,CwEt4SM,SAOI,8BxEk4SV,CwEz4SM,SAOI,6BxEq4SV,CwE54SM,SAOI,+BxEw4SV,CwE/4SM,SAOI,6BxE24SV,CwEl5SM,SAOI,wBxE84SV,CwEr5SM,SAOI,6BxEi5SV,CwEx5SM,SAOI,4BxEo5SV,CwE35SM,SAOI,2BxEu5SV,CwE95SM,SAOI,6BxE05SV,CwEj6SM,SAOI,2BxE65SV,CwEp6SM,UAOI,exEg6SV,CwEv6SM,UAOI,oBxEm6SV,CwE16SM,UAOI,mBxEs6SV,CwE76SM,UAOI,kBxEy6SV,CwEh7SM,UAOI,oBxE46SV,CwEn7SM,UAOI,kBxE+6SV,CwEt7SM,cAOI,mBxEk7SV,CwEz7SM,cAOI,wBxEq7SV,CwE57SM,cAOI,uBxEw7SV,CwE/7SM,cAOI,sBxE27SV,CwEl8SM,cAOI,wBxE87SV,CwEr8SM,cAOI,sBxEi8SV,CwEx8SM,iBAOI,sBxEo8SV,CwE38SM,iBAOI,2BxEu8SV,CwE98SM,iBAOI,0BxE08SV,CwEj9SM,iBAOI,yBxE68SV,CwEp9SM,iBAOI,2BxEg9SV,CwEv9SM,iBAOI,yBxEm9SV,CwE19SM,eAOI,yBxEs9SV,CwE79SM,aAOI,0BxEy9SV,CwEh+SM,gBAOI,2BxE49SV,CACF,Ccv+SI,yB0DGI,gBAOI,oBxEi+SV,CwEx+SM,cAOI,qBxEo+SV,CwE3+SM,eAOI,oBxEu+SV,CwE9+SM,uBAOI,4BxE0+SV,CwEj/SM,qBAOI,0BxE6+SV,CwEp/SM,oBAOI,yBxEg/SV,CwEv/SM,qBAOI,+BxEm/SV,CwE1/SM,oBAOI,yBxEs/SV,CwE7/SM,aAOI,wBxEy/SV,CwEhgTM,mBAOI,8BxE4/SV,CwEngTM,YAOI,uBxE+/SV,CwEtgTM,WAOI,sBxEkgTV,CwEzgTM,kBAOI,6BxEqgTV,CwE5gTM,YAOI,uBxEwgTV,CwE/gTM,gBAOI,2BxE2gTV,CwElhTM,iBAOI,4BxE8gTV,CwErhTM,WAOI,sBxEihTV,CwExhTM,kBAOI,6BxEohTV,CwE3hTM,WAOI,sBxEuhTV,CwE9hTM,cAOI,uBxE0hTV,CwEjiTM,aAOI,4BxE6hTV,CwEpiTM,gBAOI,+BxEgiTV,CwEviTM,qBAOI,oCxEmiTV,CwE1iTM,wBAOI,uCxEsiTV,CwE7iTM,gBAOI,qBxEyiTV,CwEhjTM,gBAOI,qBxE4iTV,CwEnjTM,kBAOI,uBxE+iTV,CwEtjTM,kBAOI,uBxEkjTV,CwEzjTM,cAOI,wBxEqjTV,CwE5jTM,gBAOI,0BxEwjTV,CwE/jTM,sBAOI,gCxE2jTV,CwElkTM,0BAOI,oCxE8jTV,CwErkTM,wBAOI,kCxEikTV,CwExkTM,2BAOI,gCxEokTV,CwE3kTM,4BAOI,uCxEukTV,CwE9kTM,2BAOI,sCxE0kTV,CwEjlTM,2BAOI,sCxE6kTV,CwEplTM,sBAOI,gCxEglTV,CwEvlTM,oBAOI,8BxEmlTV,CwE1lTM,uBAOI,4BxEslTV,CwE7lTM,yBAOI,8BxEylTV,CwEhmTM,wBAOI,6BxE4lTV,CwEnmTM,wBAOI,kCxE+lTV,CwEtmTM,sBAOI,gCxEkmTV,CwEzmTM,yBAOI,8BxEqmTV,CwE5mTM,0BAOI,qCxEwmTV,CwE/mTM,yBAOI,oCxE2mTV,CwElnTM,0BAOI,+BxE8mTV,CwErnTM,oBAOI,yBxEinTV,CwExnTM,qBAOI,+BxEonTV,CwE3nTM,mBAOI,6BxEunTV,CwE9nTM,sBAOI,2BxE0nTV,CwEjoTM,wBAOI,6BxE6nTV,CwEpoTM,uBAOI,4BxEgoTV,CwEvoTM,gBAOI,kBxEmoTV,CwE1oTM,YAOI,iBxEsoTV,CwE7oTM,YAOI,iBxEyoTV,CwEhpTM,YAOI,iBxE4oTV,CwEnpTM,YAOI,iBxE+oTV,CwEtpTM,YAOI,iBxEkpTV,CwEzpTM,YAOI,iBxEqpTV,CwE5pTM,eAOI,iBxEwpTV,CwE/pTM,QAOI,kBxE2pTV,CwElqTM,QAOI,uBxE8pTV,CwErqTM,QAOI,sBxEiqTV,CwExqTM,QAOI,qBxEoqTV,CwE3qTM,QAOI,uBxEuqTV,CwE9qTM,QAOI,qBxE0qTV,CwEjrTM,WAOI,qBxE6qTV,CwEprTM,SAOI,gDxEirTV,CwExrTM,SAOI,0DxEqrTV,CwE5rTM,SAOI,wDxEyrTV,CwEhsTM,SAOI,sDxE6rTV,CwEpsTM,SAOI,0DxEisTV,CwExsTM,SAOI,sDxEqsTV,CwE5sTM,YAOI,sDxEysTV,CwEhtTM,SAOI,gDxE6sTV,CwEptTM,SAOI,0DxEitTV,CwExtTM,SAOI,wDxEqtTV,CwE5tTM,SAOI,sDxEytTV,CwEhuTM,SAOI,0DxE6tTV,CwEpuTM,SAOI,sDxEiuTV,CwExuTM,YAOI,sDxEquTV,CwE5uTM,SAOI,sBxEwuTV,CwE/uTM,SAOI,2BxE2uTV,CwElvTM,SAOI,0BxE8uTV,CwErvTM,SAOI,yBxEivTV,CwExvTM,SAOI,2BxEovTV,CwE3vTM,SAOI,yBxEuvTV,CwE9vTM,YAOI,yBxE0vTV,CwEjwTM,SAOI,wBxE6vTV,CwEpwTM,SAOI,6BxEgwTV,CwEvwTM,SAOI,4BxEmwTV,CwE1wTM,SAOI,2BxEswTV,CwE7wTM,SAOI,6BxEywTV,CwEhxTM,SAOI,2BxE4wTV,CwEnxTM,YAOI,2BxE+wTV,CwEtxTM,SAOI,yBxEkxTV,CwEzxTM,SAOI,8BxEqxTV,CwE5xTM,SAOI,6BxEwxTV,CwE/xTM,SAOI,4BxE2xTV,CwElyTM,SAOI,8BxE8xTV,CwEryTM,SAOI,4BxEiyTV,CwExyTM,YAOI,4BxEoyTV,CwE3yTM,SAOI,uBxEuyTV,CwE9yTM,SAOI,4BxE0yTV,CwEjzTM,SAOI,2BxE6yTV,CwEpzTM,SAOI,0BxEgzTV,CwEvzTM,SAOI,4BxEmzTV,CwE1zTM,SAOI,0BxEszTV,CwE7zTM,YAOI,0BxEyzTV,CwEh0TM,QAOI,mBxE4zTV,CwEn0TM,QAOI,wBxE+zTV,CwEt0TM,QAOI,uBxEk0TV,CwEz0TM,QAOI,sBxEq0TV,CwE50TM,QAOI,wBxEw0TV,CwE/0TM,QAOI,sBxE20TV,CwEl1TM,SAOI,kDxE+0TV,CwEt1TM,SAOI,4DxEm1TV,CwE11TM,SAOI,0DxEu1TV,CwE91TM,SAOI,wDxE21TV,CwEl2TM,SAOI,4DxE+1TV,CwEt2TM,SAOI,wDxEm2TV,CwE12TM,SAOI,kDxEu2TV,CwE92TM,SAOI,4DxE22TV,CwEl3TM,SAOI,0DxE+2TV,CwEt3TM,SAOI,wDxEm3TV,CwE13TM,SAOI,4DxEu3TV,CwE93TM,SAOI,wDxE23TV,CwEl4TM,SAOI,uBxE83TV,CwEr4TM,SAOI,4BxEi4TV,CwEx4TM,SAOI,2BxEo4TV,CwE34TM,SAOI,0BxEu4TV,CwE94TM,SAOI,4BxE04TV,CwEj5TM,SAOI,0BxE64TV,CwEp5TM,SAOI,yBxEg5TV,CwEv5TM,SAOI,8BxEm5TV,CwE15TM,SAOI,6BxEs5TV,CwE75TM,SAOI,4BxEy5TV,CwEh6TM,SAOI,8BxE45TV,CwEn6TM,SAOI,4BxE+5TV,CwEt6TM,SAOI,0BxEk6TV,CwEz6TM,SAOI,+BxEq6TV,CwE56TM,SAOI,8BxEw6TV,CwE/6TM,SAOI,6BxE26TV,CwEl7TM,SAOI,+BxE86TV,CwEr7TM,SAOI,6BxEi7TV,CwEx7TM,SAOI,wBxEo7TV,CwE37TM,SAOI,6BxEu7TV,CwE97TM,SAOI,4BxE07TV,CwEj8TM,SAOI,2BxE67TV,CwEp8TM,SAOI,6BxEg8TV,CwEv8TM,SAOI,2BxEm8TV,CwE18TM,UAOI,exEs8TV,CwE78TM,UAOI,oBxEy8TV,CwEh9TM,UAOI,mBxE48TV,CwEn9TM,UAOI,kBxE+8TV,CwEt9TM,UAOI,oBxEk9TV,CwEz9TM,UAOI,kBxEq9TV,CwE59TM,cAOI,mBxEw9TV,CwE/9TM,cAOI,wBxE29TV,CwEl+TM,cAOI,uBxE89TV,CwEr+TM,cAOI,sBxEi+TV,CwEx+TM,cAOI,wBxEo+TV,CwE3+TM,cAOI,sBxEu+TV,CwE9+TM,iBAOI,sBxE0+TV,CwEj/TM,iBAOI,2BxE6+TV,CwEp/TM,iBAOI,0BxEg/TV,CwEv/TM,iBAOI,yBxEm/TV,CwE1/TM,iBAOI,2BxEs/TV,CwE7/TM,iBAOI,yBxEy/TV,CwEhgUM,eAOI,yBxE4/TV,CwEngUM,aAOI,0BxE+/TV,CwEtgUM,gBAOI,2BxEkgUV,CACF,Cc7gUI,0B0DGI,gBAOI,oBxEugUV,CwE9gUM,cAOI,qBxE0gUV,CwEjhUM,eAOI,oBxE6gUV,CwEphUM,uBAOI,4BxEghUV,CwEvhUM,qBAOI,0BxEmhUV,CwE1hUM,oBAOI,yBxEshUV,CwE7hUM,qBAOI,+BxEyhUV,CwEhiUM,oBAOI,yBxE4hUV,CwEniUM,aAOI,wBxE+hUV,CwEtiUM,mBAOI,8BxEkiUV,CwEziUM,YAOI,uBxEqiUV,CwE5iUM,WAOI,sBxEwiUV,CwE/iUM,kBAOI,6BxE2iUV,CwEljUM,YAOI,uBxE8iUV,CwErjUM,gBAOI,2BxEijUV,CwExjUM,iBAOI,4BxEojUV,CwE3jUM,WAOI,sBxEujUV,CwE9jUM,kBAOI,6BxE0jUV,CwEjkUM,WAOI,sBxE6jUV,CwEpkUM,cAOI,uBxEgkUV,CwEvkUM,aAOI,4BxEmkUV,CwE1kUM,gBAOI,+BxEskUV,CwE7kUM,qBAOI,oCxEykUV,CwEhlUM,wBAOI,uCxE4kUV,CwEnlUM,gBAOI,qBxE+kUV,CwEtlUM,gBAOI,qBxEklUV,CwEzlUM,kBAOI,uBxEqlUV,CwE5lUM,kBAOI,uBxEwlUV,CwE/lUM,cAOI,wBxE2lUV,CwElmUM,gBAOI,0BxE8lUV,CwErmUM,sBAOI,gCxEimUV,CwExmUM,0BAOI,oCxEomUV,CwE3mUM,wBAOI,kCxEumUV,CwE9mUM,2BAOI,gCxE0mUV,CwEjnUM,4BAOI,uCxE6mUV,CwEpnUM,2BAOI,sCxEgnUV,CwEvnUM,2BAOI,sCxEmnUV,CwE1nUM,sBAOI,gCxEsnUV,CwE7nUM,oBAOI,8BxEynUV,CwEhoUM,uBAOI,4BxE4nUV,CwEnoUM,yBAOI,8BxE+nUV,CwEtoUM,wBAOI,6BxEkoUV,CwEzoUM,wBAOI,kCxEqoUV,CwE5oUM,sBAOI,gCxEwoUV,CwE/oUM,yBAOI,8BxE2oUV,CwElpUM,0BAOI,qCxE8oUV,CwErpUM,yBAOI,oCxEipUV,CwExpUM,0BAOI,+BxEopUV,CwE3pUM,oBAOI,yBxEupUV,CwE9pUM,qBAOI,+BxE0pUV,CwEjqUM,mBAOI,6BxE6pUV,CwEpqUM,sBAOI,2BxEgqUV,CwEvqUM,wBAOI,6BxEmqUV,CwE1qUM,uBAOI,4BxEsqUV,CwE7qUM,gBAOI,kBxEyqUV,CwEhrUM,YAOI,iBxE4qUV,CwEnrUM,YAOI,iBxE+qUV,CwEtrUM,YAOI,iBxEkrUV,CwEzrUM,YAOI,iBxEqrUV,CwE5rUM,YAOI,iBxEwrUV,CwE/rUM,YAOI,iBxE2rUV,CwElsUM,eAOI,iBxE8rUV,CwErsUM,QAOI,kBxEisUV,CwExsUM,QAOI,uBxEosUV,CwE3sUM,QAOI,sBxEusUV,CwE9sUM,QAOI,qBxE0sUV,CwEjtUM,QAOI,uBxE6sUV,CwEptUM,QAOI,qBxEgtUV,CwEvtUM,WAOI,qBxEmtUV,CwE1tUM,SAOI,gDxEutUV,CwE9tUM,SAOI,0DxE2tUV,CwEluUM,SAOI,wDxE+tUV,CwEtuUM,SAOI,sDxEmuUV,CwE1uUM,SAOI,0DxEuuUV,CwE9uUM,SAOI,sDxE2uUV,CwElvUM,YAOI,sDxE+uUV,CwEtvUM,SAOI,gDxEmvUV,CwE1vUM,SAOI,0DxEuvUV,CwE9vUM,SAOI,wDxE2vUV,CwElwUM,SAOI,sDxE+vUV,CwEtwUM,SAOI,0DxEmwUV,CwE1wUM,SAOI,sDxEuwUV,CwE9wUM,YAOI,sDxE2wUV,CwElxUM,SAOI,sBxE8wUV,CwErxUM,SAOI,2BxEixUV,CwExxUM,SAOI,0BxEoxUV,CwE3xUM,SAOI,yBxEuxUV,CwE9xUM,SAOI,2BxE0xUV,CwEjyUM,SAOI,yBxE6xUV,CwEpyUM,YAOI,yBxEgyUV,CwEvyUM,SAOI,wBxEmyUV,CwE1yUM,SAOI,6BxEsyUV,CwE7yUM,SAOI,4BxEyyUV,CwEhzUM,SAOI,2BxE4yUV,CwEnzUM,SAOI,6BxE+yUV,CwEtzUM,SAOI,2BxEkzUV,CwEzzUM,YAOI,2BxEqzUV,CwE5zUM,SAOI,yBxEwzUV,CwE/zUM,SAOI,8BxE2zUV,CwEl0UM,SAOI,6BxE8zUV,CwEr0UM,SAOI,4BxEi0UV,CwEx0UM,SAOI,8BxEo0UV,CwE30UM,SAOI,4BxEu0UV,CwE90UM,YAOI,4BxE00UV,CwEj1UM,SAOI,uBxE60UV,CwEp1UM,SAOI,4BxEg1UV,CwEv1UM,SAOI,2BxEm1UV,CwE11UM,SAOI,0BxEs1UV,CwE71UM,SAOI,4BxEy1UV,CwEh2UM,SAOI,0BxE41UV,CwEn2UM,YAOI,0BxE+1UV,CwEt2UM,QAOI,mBxEk2UV,CwEz2UM,QAOI,wBxEq2UV,CwE52UM,QAOI,uBxEw2UV,CwE/2UM,QAOI,sBxE22UV,CwEl3UM,QAOI,wBxE82UV,CwEr3UM,QAOI,sBxEi3UV,CwEx3UM,SAOI,kDxEq3UV,CwE53UM,SAOI,4DxEy3UV,CwEh4UM,SAOI,0DxE63UV,CwEp4UM,SAOI,wDxEi4UV,CwEx4UM,SAOI,4DxEq4UV,CwE54UM,SAOI,wDxEy4UV,CwEh5UM,SAOI,kDxE64UV,CwEp5UM,SAOI,4DxEi5UV,CwEx5UM,SAOI,0DxEq5UV,CwE55UM,SAOI,wDxEy5UV,CwEh6UM,SAOI,4DxE65UV,CwEp6UM,SAOI,wDxEi6UV,CwEx6UM,SAOI,uBxEo6UV,CwE36UM,SAOI,4BxEu6UV,CwE96UM,SAOI,2BxE06UV,CwEj7UM,SAOI,0BxE66UV,CwEp7UM,SAOI,4BxEg7UV,CwEv7UM,SAOI,0BxEm7UV,CwE17UM,SAOI,yBxEs7UV,CwE77UM,SAOI,8BxEy7UV,CwEh8UM,SAOI,6BxE47UV,CwEn8UM,SAOI,4BxE+7UV,CwEt8UM,SAOI,8BxEk8UV,CwEz8UM,SAOI,4BxEq8UV,CwE58UM,SAOI,0BxEw8UV,CwE/8UM,SAOI,+BxE28UV,CwEl9UM,SAOI,8BxE88UV,CwEr9UM,SAOI,6BxEi9UV,CwEx9UM,SAOI,+BxEo9UV,CwE39UM,SAOI,6BxEu9UV,CwE99UM,SAOI,wBxE09UV,CwEj+UM,SAOI,6BxE69UV,CwEp+UM,SAOI,4BxEg+UV,CwEv+UM,SAOI,2BxEm+UV,CwE1+UM,SAOI,6BxEs+UV,CwE7+UM,SAOI,2BxEy+UV,CwEh/UM,UAOI,exE4+UV,CwEn/UM,UAOI,oBxE++UV,CwEt/UM,UAOI,mBxEk/UV,CwEz/UM,UAOI,kBxEq/UV,CwE5/UM,UAOI,oBxEw/UV,CwE//UM,UAOI,kBxE2/UV,CwElgVM,cAOI,mBxE8/UV,CwErgVM,cAOI,wBxEigVV,CwExgVM,cAOI,uBxEogVV,CwE3gVM,cAOI,sBxEugVV,CwE9gVM,cAOI,wBxE0gVV,CwEjhVM,cAOI,sBxE6gVV,CwEphVM,iBAOI,sBxEghVV,CwEvhVM,iBAOI,2BxEmhVV,CwE1hVM,iBAOI,0BxEshVV,CwE7hVM,iBAOI,yBxEyhVV,CwEhiVM,iBAOI,2BxE4hVV,CwEniVM,iBAOI,yBxE+hVV,CwEtiVM,eAOI,yBxEkiVV,CwEziVM,aAOI,0BxEqiVV,CwE5iVM,gBAOI,2BxEwiVV,CwE/iVM,MAOI,0BxE6iVV,CwEpjVM,MAOI,wBxEgjVV,CwEvjVM,MAOI,2BxEmjVV,CwE1jVM,MAOI,0BxEsjVV,CAbF,CyE5kVA,aD4BQ,gBAOI,wBxE2jVV,CwElkVM,sBAOI,8BxE8jVV,CwErkVM,eAOI,uBxEikVV,CwExkVM,cAOI,sBxEokVV,CwE3kVM,qBAOI,6BxEukVV,CwE9kVM,eAOI,uBxE0kVV,CwEjlVM,mBAOI,2BxE6kVV,CwEplVM,oBAOI,4BxEglVV,CwEvlVM,cAOI,sBxEmlVV,CwE1lVM,qBAOI,6BxEslVV,CwE7lVM,cAOI,sBxEylVV,CACF;A0EnqVA;;;;EAAA,CCGA,IACE,yDACA,+B3EuqVF,C2EpqVA,0EASE,iCAAkC,CAClC,kCAAmC,CACnC,uCACA,iBAAkB,CAClB,mBAAoB,CACpB,aAAc,CACd,mB3EuqVF,C2EpqVA,4CAKE,gC3EuqVF,C2EpqVA,gBAEE,kC3EuqVF,C4EtsVE,OACE,a5EysVJ,C4E1sVE,OACE,a5E6sVJ,C4E9sVE,OACE,a5EitVJ,C4EltVE,OACE,a5EqtVJ,C4EttVE,OACE,a5EytVJ,C4E1tVE,OACE,a5E6tVJ,C4E9tVE,OACE,a5EiuVJ,C4EluVE,OACE,a5EquVJ,C4EtuVE,OACE,a5EyuVJ,C4E1uVE,QACE,c5E6uVJ,C4EvuVE,QCIA,iBACA,iBACA,qB7EuuVF,C4E7uVE,OCIA,gBACA,0BACA,qB7E6uVF,C4EnvVE,OCIA,iBACA,0BACA,4B7EmvVF,C4EzvVE,OCIA,iBACA,kBACA,sB7EyvVF,C4E/vVE,OCIA,gBACA,0BACA,sB7E+vVF,C4ErwVE,QCIA,cACA,qBACA,uB7EqwVF,C8EpxVA,OACE,iBAAkB,CAClB,Y9EuxVF,C+EzxVA,OACE,oBAAqB,CACrB,sCACA,c/E4xVF,C+E1xVE,UAAO,iB/E6xVT,C+E1xVA,OACE,sCAIA,mBAAoB,CAHpB,iBAAkB,CAClB,iBAAkB,CAClB,4B/E8xVF,CgF1yVA,WACE,yCACA,2CACA,0CACA,0CACA,iDhF6yVF,CgF1yVA,cACE,UAAW,CACX,uChF6yVF,CgF1yVA,eACE,WAAY,CACZ,sChF6yVF,CiF5zVA,SAEE,6CACA,yDACA,mDACA,uEAJA,uBAKA,gEjF+zVF,CiF5zVA,WAEE,6CACA,yDACA,mDACA,uEAJA,yBAKA,gFjF+zVF,CiF5zVA,SAKE,uEAJA,uBAKA,4EjF+zVF,CiF5zVA,uBAPE,6CACA,yDACA,kDjF00VF,CiFr0VA,cAKE,uEAJA,4BAKA,4EjF+zVF,CiF5zVA,SAEE,6CACA,yDACA,mDACA,uEAJA,uBAKA,gEjF+zVF,CiF5zVA,UAIE,mDACA,uEAJA,wBAKA,2DjF+zVF,CiF5zVA,mBAPE,6CACA,wDjF20VF,CiFr0VA,SAIE,mDACA,uEAJA,uBAKA,2DjF+zVF,CiF5zVA,iBACE,gCjF+zVF,CiF5zVA,yBAGE,yDACA,mDACA,uEAHA,uBAIA,6DjF+zVF,CiFzzVA,uCACE,gGASE,oBAAqB,CACrB,sBAAuB,CACvB,2BAA4B,CAC5B,mBAAoB,CACpB,sBjF4zVF,CACF,CiFzzVA,mBACE,OAAU,kBjF4zVV,CiF3zVA,IAAM,0CjF8zVN,CACF,CiF5zVA,qBACE,GAAO,gCjF+zVP,CiF9zVA,IAAO,mGjFi0VP,CiFh0VA,IAAO,6HjFm0VP,CiFl0VA,IAAO,mGjFq0VP,CiFp0VA,IAAO,+DjFu0VP,CiFt0VA,IAAO,gCjFy0VP,CiFx0VA,GAAO,gCjF20VP,CACF,CiFz0VA,mBACE,IAAM,iCjF40VN,CACF,CiF10VA,wBACE,MACE,uCACA,kBjF40VF,CiF10VA,IACE,SAAU,CACV,gDjF40VF,CACF,CiFz0VA,mBACE,IACE,yGjF20VF,CACF,CiFx0VA,oBACE,GAAK,wBjF20VL,CiF10VA,GAAK,uBjF60VL,CiF50VA,OAAU,wBjF+0VV,CiF90VA,QAAW,uBjFi1VX,CiFh1VA,IAAM,wBjFm1VN,CiFl1VA,IAAM,uBjFq1VN,CiFp1VA,IAAM,wBjFu1VN,CiFt1VA,IAAM,uBjFy1VN,CiFx1VA,OAAY,sBjF21VZ,CACF,CiFz1VA,mBACE,GAAK,sBjF41VL,CiF31VA,GAAO,uBjF81VP,CACF,CkFl/VA,cACE,uBlFo/VF,CkFj/VA,eACE,wBlFo/VF,CkFj/VA,eACE,wBlFo/VF,CkFj/VA,oBACE,oBlFo/VF,CkFj/VA,kBACE,oBlFo/VF,CkFj/VA,mDAEE,mBlFo/VF,CkFj/VA,cACE,0ClFo/VF,CmF9gWA,UACE,oBAAqB,CACrB,UAAW,CACX,eAAgB,CAChB,iBAAkB,CAClB,qBCmCwB,CDlCxB,WnFihWF,CmF9gWA,0BAEE,MAAO,CACP,iBAAkB,CAClB,iBAAkB,CAClB,UAAW,CACX,oCnFihWF,CmF9gWA,aACE,mBnFihWF,CmF9gWA,aACE,anFihWF,CmF9gWA,YACE,4BnFihWF,CqFxiWE,aAAsC,crF8iWxC,CqF9iWE,aAAsC,crFkjWxC,CqFljWE,aAAsC,crFsjWxC,CqFtjWE,aAAsC,crF0jWxC,CqF1jWE,aAAsC,crF8jWxC,CqF9jWE,aAAsC,crFkkWxC,CqFlkWE,aAAsC,crFskWxC,CqFtkWE,aAAsC,crF0kWxC,CqF1kWE,aAAsC,crF8kWxC,CqF9kWE,aAAsC,crFklWxC,CqFllWE,qBAAsC,erFslWxC,CqFtlWE,4BAAsC,erF0lWxC,CqF1lWE,gEAAsC,erFkmWxC,CqFlmWE,cAAsC,YrFsmWxC,CqFtmWE,0CAAsC,erF8mWxC,CqF9mWE,uBAAsC,erFknWxC,CqFlnWE,4CAAsC,erF0nWxC,CqF1nWE,uBAAsC,erF8nWxC,CqF9nWE,0CAAsC,erFsoWxC,CqFtoWE,gBAAsC,erF0oWxC,CqF1oWE,oEAAsC,erFkpWxC,CqFlpWE,qBAAsC,erFspWxC,CqFtpWE,+DAAsC,erFkqWxC,CqFlqWE,uBAAsC,erFsqWxC,CqFtqWE,gBAAsC,erF0qWxC,CqF1qWE,uBAAsC,erF8qWxC,CqF9qWE,sBAAsC,erFkrWxC,CqFlrWE,iDAAsC,erF0rWxC,CqF1rWE,+BAAsC,erF8rWxC,CqF9rWE,uCAAsC,erFksWxC,CqFlsWE,iDAAsC,erF0sWxC,CqF1sWE,6BAAsC,erF8sWxC,CqF9sWE,0CAAsC,erFstWxC,CqFttWE,gDAAsC,erF8tWxC,CqF9tWE,qBAAsC,erFkuWxC,CqFluWE,sDAAsC,erF0uWxC,CqF1uWE,gBAAsC,erF8uWxC,CqF9uWE,gBAAsC,erFkvWxC,CqFlvWE,oDAAsC,erF0vWxC,CqF1vWE,kEAAsC,erFkwWxC,CqFlwWE,+BAAsC,erFswWxC,CqFtwWE,wBAAsC,erF0wWxC,CqF1wWE,uBAAsC,erF8wWxC,CqF9wWE,4BAAsC,erFkxWxC,CqFlxWE,gEAAsC,erF0xWxC,CqF1xWE,gDAAsC,erFkyWxC,CqFlyWE,iDAAsC,erF0yWxC,CqF1yWE,0BAAsC,erF8yWxC,CqF9yWE,6CAAsC,erFszWxC,CqFtzWE,qCAAsC,erF0zWxC,CqF1zWE,gBAAsC,erF8zWxC,CqF9zWE,oDAAsC,erFs0WxC,CqFt0WE,2BAAsC,erF00WxC,CqF10WE,uBAAsC,erF80WxC,CqF90WE,uBAAsC,erFk1WxC,CqFl1WE,0CAAsC,erF01WxC,CqF11WE,+BAAsC,erF81WxC,CqF91WE,kDAAsC,erFs2WxC,CqFt2WE,6CAAsC,erF82WxC,CqF92WE,kCAAsC,erFs3WxC,CqFt3WE,kBAAsC,erF03WxC,CqF13WE,oBAAsC,erF83WxC,CqF93WE,mBAAsC,erFk4WxC,CqFl4WE,uBAAsC,erFs4WxC,CqFt4WE,wBAAsC,erF04WxC,CqF14WE,iDAAsC,erFk5WxC,CqFl5WE,gBAAsC,erFs5WxC,CqFt5WE,8DAAsC,erF85WxC,CqF95WE,qCAAsC,erFk6WxC,CqFl6WE,0CAAsC,erF06WxC,CqF16WE,qBAAsC,erF86WxC,CqF96WE,+CAAsC,erFs7WxC,CqFt7WE,mCAAsC,erF07WxC,CqF17WE,+CAAsC,erFk8WxC,CqFl8WE,iBAAsC,erFs8WxC,CqFt8WE,gDAAsC,erF88WxC,CqF98WE,yBAAsC,erFk9WxC,CqFl9WE,aAAsC,WrFs9WxC,CqFt9WE,yBAAsC,erF09WxC,CqF19WE,wCAAsC,erFk+WxC,CqFl+WE,oBAAsC,erFs+WxC,CqFt+WE,uBAAsC,erF0+WxC,CqF1+WE,oBAAsC,erF8+WxC,CqF9+WE,2CAAsC,erFs/WxC,CqFt/WE,6BAAsC,erF0/WxC,CqF1/WE,0BAAsC,erF8/WxC,CqF9/WE,mDAAsC,erFsgXxC,CqFtgXE,sBAAsC,erF0gXxC,CqF1gXE,sBAAsC,erF8gXxC,CqF9gXE,yBAAsC,erFkhXxC,CqFlhXE,gBAAsC,erFshXxC,CqFthXE,sBAAsC,erF0hXxC,CqF1hXE,qCAAsC,erF8hXxC,CqF9hXE,yCAAsC,erFsiXxC,CqFtiXE,2EAAsC,erFkjXxC,CqFljXE,sBAAsC,erFsjXxC,CqFtjXE,0CAAsC,erF8jXxC,CqF9jXE,2BAAsC,erFkkXxC,CqFlkXE,wFAAsC,erF8kXxC,CqF9kXE,iEAAsC,erFslXxC,CqFtlXE,qBAAsC,erF0lXxC,CqF1lXE,yBAAsC,erF8lXxC,CqF9lXE,aAAsC,WrFkmXxC,CqFlmXE,gDAAsC,erF0mXxC,CqF1mXE,mBAAsC,erF8mXxC,CqF9mXE,wBAAsC,erFknXxC,CqFlnXE,sDAAsC,erF0nXxC,CqF1nXE,eAAsC,erF8nXxC,CqF9nXE,iBAAsC,erFkoXxC,CqFloXE,yBAAsC,erFsoXxC,CqFtoXE,2CAAsC,erF8oXxC,CqF9oXE,yBAAsC,erFkpXxC,CqFlpXE,iCAAsC,erFspXxC,CqFtpXE,kCAAsC,erF8pXxC,CqF9pXE,sBAAsC,erFkqXxC,CqFlqXE,4BAAsC,erFsqXxC,CqFtqXE,sBAAsC,erF0qXxC,CqF1qXE,sBAAsC,erF8qXxC,CqF9qXE,oDAAsC,erFsrXxC,CqFtrXE,6CAAsC,erF8rXxC,CqF9rXE,6DAAsC,erFssXxC,CqFtsXE,gCAAsC,erF0sXxC,CqF1sXE,4DAAsC,erFktXxC,CqFltXE,mCAAsC,erF0tXxC,CqF1tXE,0BAAsC,erF8tXxC,CqF9tXE,4BAAsC,erFkuXxC,CqFluXE,uBAAsC,erFsuXxC,CqFtuXE,iBAAsC,erF0uXxC,CqF1uXE,wCAAsC,erF8uXxC,CqF9uXE,4DAAsC,erFsvXxC,CqFtvXE,uBAAsC,erF0vXxC,CqF1vXE,kBAAsC,erF8vXxC,CqF9vXE,uCAAsC,erFswXxC,CqFtwXE,6BAAsC,erF0wXxC,CqF1wXE,sBAAsC,erF8wXxC,CqF9wXE,gDAAsC,erFsxXxC,CqFtxXE,sBAAsC,erF0xXxC,CqF1xXE,mBAAsC,erF8xXxC,CqF9xXE,0DAAsC,erFsyXxC,CqFtyXE,gCAAsC,erF0yXxC,CqF1yXE,uBAAsC,erF8yXxC,CqF9yXE,sBAAsC,erFkzXxC,CqFlzXE,+BAAsC,erFszXxC,CqFtzXE,mCAAsC,erF8zXxC,CqF9zXE,wBAAsC,erFk0XxC,CqFl0XE,gDAAsC,erF00XxC,CqF10XE,+CAAsC,erFk1XxC,CqFl1XE,+DAAsC,erF01XxC,CqF11XE,+CAAsC,erFk2XxC,CqFl2XE,gBAAsC,erFs2XxC,CqFt2XE,4BAAsC,erF02XxC,CqF12XE,0BAAsC,erF82XxC,CqF92XE,qBAAsC,erFk3XxC,CqFl3XE,sBAAsC,erFs3XxC,CqFt3XE,4DAAsC,erF83XxC,CqF93XE,+BAAsC,erFk4XxC,CqFl4XE,wDAAsC,erF04XxC,CqF14XE,8DAAsC,erFk5XxC,CqFl5XE,gDAAsC,erF05XxC,CqF15XE,+BAAsC,erF85XxC,CqF95XE,uDAAsC,erFs6XxC,CqFt6XE,mBAAsC,erF06XxC,CqF16XE,mDAAsC,erFk7XxC,CqFl7XE,kBAAsC,erFs7XxC,CqFt7XE,uBAAsC,erF07XxC,CqF17XE,uBAAsC,erF87XxC,CqF97XE,gBAAsC,erFk8XxC,CqFl8XE,oBAAsC,erFs8XxC,CqFt8XE,mBAAsC,erF08XxC,CqF18XE,6CAAsC,erFk9XxC,CqFl9XE,yBAAsC,erFs9XxC,CqFt9XE,0BAAsC,erF09XxC,CqF19XE,oBAAsC,erF89XxC,CqF99XE,0CAAsC,erFs+XxC,CqFt+XE,gBAAsC,erF0+XxC,CqF1+XE,+BAAsC,erF8+XxC,CqF9+XE,oBAAsC,YrFk/XxC,CqFl/XE,gDAAsC,erF0/XxC,CqF1/XE,uBAAsC,erF8/XxC,CqF9/XE,qCAAsC,erFsgYxC,CqFtgYE,iBAAsC,erF0gYxC,CqF1gYE,wCAAsC,erFkhYxC,CqFlhYE,yDAAsC,erF0hYxC,CqF1hYE,qBAAsC,erF8hYxC,CqF9hYE,mBAAsC,erFkiYxC,CqFliYE,4CAAsC,erF0iYxC,CqF1iYE,uCAAsC,erFkjYxC,CqFljYE,eAAsC,erFsjYxC,CqFtjYE,sCAAsC,erF0jYxC,CqF1jYE,sBAAsC,erF8jYxC,CqF9jYE,uBAAsC,erFkkYxC,CqFlkYE,gEAAsC,erF8kYxC,CqF9kYE,6CAAsC,erFslYxC,CqFtlYE,gBAAsC,erF0lYxC,CqF1lYE,oBAAsC,erF8lYxC,CqF9lYE,6CAAsC,erFsmYxC,CqFtmYE,8CAAsC,erF8mYxC,CqF9mYE,6BAAsC,erFknYxC,CqFlnYE,gBAAsC,erFsnYxC,CqFtnYE,uBAAsC,erF0nYxC,CqF1nYE,uBAAsC,erF8nYxC,CqF9nYE,yCAAsC,erFsoYxC,CqFtoYE,oBAAsC,erF0oYxC,CqF1oYE,4CAAsC,erFkpYxC,CqFlpYE,8BAAsC,erFspYxC,CqFtpYE,iDAAsC,erF8pYxC,CqF9pYE,sBAAsC,erFkqYxC,CqFlqYE,gBAAsC,erFsqYxC,CqFtqYE,gDAAsC,erF8qYxC,CqF9qYE,oFAAsC,erF0rYxC,CqF1rYE,kBAAsC,erF8rYxC,CqF9rYE,uBAAsC,erFksYxC,CqFlsYE,iBAAsC,erFssYxC,CqFtsYE,qBAAsC,erF0sYxC,CqF1sYE,sBAAsC,erF8sYxC,CqF9sYE,sCAAsC,erFstYxC,CqFttYE,cAAsC,erF0tYxC,CqF1tYE,gBAAsC,erF8tYxC,CqF9tYE,8BAAsC,erFkuYxC,CqFluYE,gBAAsC,erFsuYxC,CqFtuYE,sBAAsC,erF0uYxC,CqF1uYE,sBAAsC,erF8uYxC,CqF9uYE,qBAAsC,erFkvYxC,CqFlvYE,qCAAsC,erF0vYxC,CqF1vYE,+BAAsC,erF8vYxC,CqF9vYE,mDAAsC,erFswYxC,CqFtwYE,wBAAsC,erF0wYxC,CqF1wYE,+CAAsC,erFkxYxC,CqFlxYE,mFAAsC,erFkyYxC,CqFlyYE,6BAAsC,erFsyYxC,CqFtyYE,qBAAsC,erF0yYxC,CqF1yYE,4CAAsC,erFkzYxC,CqFlzYE,wBAAsC,erFszYxC,CqFtzYE,oBAAsC,erF0zYxC,CqF1zYE,iBAAsC,erF8zYxC,CqF9zYE,kBAAsC,erFk0YxC,CqFl0YE,aAAsC,WrFs0YxC,CqFt0YE,2CAAsC,erF80YxC,CqF90YE,iBAAsC,erFk1YxC,CqFl1YE,8CAAsC,erF01YxC,CqF11YE,iBAAsC,erF81YxC,CqF91YE,aAAsC,WrFk2YxC,CqFl2YE,iCAAsC,erFs2YxC,CqFt2YE,mBAAsC,erF02YxC,CqF12YE,kGAAsC,erF03YxC,CqF13YE,iCAAsC,erF83YxC,CqF93YE,8CAAsC,erFs4YxC,CqFt4YE,wCAAsC,erF04YxC,CqF14YE,mBAAsC,erF84YxC,CqF94YE,yBAAsC,erFk5YxC,CqFl5YE,wBAAsC,erFs5YxC,CqFt5YE,kBAAsC,erF05YxC,CqF15YE,iBAAsC,erF85YxC,CqF95YE,iBAAsC,erFk6YxC,CqFl6YE,uBAAsC,erFs6YxC,CqFt6YE,iBAAsC,erF06YxC,CqF16YE,aAAsC,WrF86YxC,CqF96YE,aAAsC,WrFk7YxC,CqFl7YE,yBAAsC,erFs7YxC,CqFt7YE,0GAAsC,erFs8YxC,CqFt8YE,qBAAsC,erF08YxC,CqF18YE,oBAAsC,erF88YxC,CqF98YE,yCAAsC,erFs9YxC,CqFt9YE,iDAAsC,erF89YxC,CqF99YE,yBAAsC,erFk+YxC,CqFl+YE,sBAAsC,erFs+YxC,CqFt+YE,oBAAsC,erF0+YxC,CqF1+YE,yBAAsC,erF8+YxC,CqF9+YE,0BAAsC,erFk/YxC,CqFl/YE,qBAAsC,erFs/YxC,CqFt/YE,oBAAsC,erF0/YxC,CqF1/YE,iBAAsC,erF8/YxC,CqF9/YE,2BAAsC,erFkgZxC,CqFlgZE,iCAAsC,erFsgZxC,CqFtgZE,0CAAsC,erF8gZxC,CqF9gZE,qDAAsC,erFshZxC,CqFthZE,qBAAsC,erF0hZxC,CqF1hZE,wBAAsC,erF8hZxC,CqF9hZE,uBAAsC,erFkiZxC,CqFliZE,gBAAsC,erFsiZxC,CqFtiZE,6FAAsC,erFsjZxC,CqFtjZE,8DAAsC,erF8jZxC,CqF9jZE,aAAsC,WrFkkZxC,CqFlkZE,uCAAsC,erF0kZxC,CqF1kZE,qCAAsC,erF8kZxC,CqF9kZE,gBAAsC,erFklZxC,CqFllZE,+BAAsC,erFslZxC,CqFtlZE,oBAAsC,erF0lZxC,CqF1lZE,8CAAsC,erFkmZxC,CqFlmZE,yBAAsC,erFsmZxC,CqFtmZE,0DAAsC,erF8mZxC,CqF9mZE,uBAAsC,erFknZxC,CqFlnZE,eAAsC,erFsnZxC,CqFtnZE,oBAAsC,erF0nZxC,CqF1nZE,iBAAsC,erF8nZxC,CqF9nZE,qBAAsC,erFkoZxC,CqFloZE,6BAAsC,erFsoZxC,CqFtoZE,uBAAsC,erF0oZxC,CqF1oZE,0BAAsC,erF8oZxC,CqF9oZE,aAAsC,WrFkpZxC,CqFlpZE,yBAAsC,erFspZxC,CqFtpZE,yBAAsC,erF0pZxC,CqF1pZE,uBAAsC,erF8pZxC,CqF9pZE,2BAAsC,erFkqZxC,CqFlqZE,4CAAsC,erF0qZxC,CqF1qZE,sBAAsC,erF8qZxC,CqF9qZE,+BAAsC,erFkrZxC,CqFlrZE,iCAAsC,erF0rZxC,CqF1rZE,yBAAsC,erF8rZxC,CqF9rZE,uDAAsC,erFssZxC,CqFtsZE,gBAAsC,erF0sZxC,CqF1sZE,kBAAsC,erF8sZxC,CqF9sZE,iBAAsC,erFktZxC,CqFltZE,eAAsC,erFstZxC,CqFttZE,sBAAsC,erF0tZxC,CqF1tZE,kDAAsC,erFkuZxC,CqFluZE,iDAAsC,erF0uZxC,CqF1uZE,4BAAsC,erF8uZxC,CqF9uZE,oDAAsC,erFsvZxC,CqFtvZE,qCAAsC,erF8vZxC,CqF9vZE,6CAAsC,erFswZxC,CqFtwZE,wBAAsC,erF0wZxC,CqF1wZE,+BAAsC,erF8wZxC,CqF9wZE,kBAAsC,erFkxZxC,CqFlxZE,uBAAsC,erFsxZxC,CqFtxZE,+BAAsC,erF0xZxC,CqF1xZE,oCAAsC,erF8xZxC,CqF9xZE,iBAAsC,erFkyZxC,CqFlyZE,uBAAsC,erFsyZxC,CqFtyZE,iBAAsC,erF0yZxC,CqF1yZE,2CAAsC,erFkzZxC,CqFlzZE,qDAAsC,erF0zZxC,CqF1zZE,iDAAsC,erFk0ZxC,CqFl0ZE,kBAAsC,erFs0ZxC,CqFt0ZE,6BAAsC,erF00ZxC,CqF10ZE,qBAAsC,erF80ZxC,CqF90ZE,kDAAsC,erFs1ZxC,CqFt1ZE,yBAAsC,erF01ZxC,CqF11ZE,0BAAsC,erF81ZxC,CqF91ZE,gCAAsC,erFk2ZxC,CqFl2ZE,mDAAsC,erF02ZxC,CqF12ZE,iBAAsC,erF82ZxC,CqF92ZE,oBAAsC,erFk3ZxC,CqFl3ZE,4CAAsC,erF03ZxC,CqF13ZE,oDAAsC,erFk4ZxC,CqFl4ZE,4BAAsC,erFs4ZxC,CqFt4ZE,qBAAsC,erF04ZxC,CqF14ZE,iBAAsC,erF84ZxC,CqF94ZE,0BAAsC,erFk5ZxC,CqFl5ZE,wBAAsC,erFs5ZxC,CqFt5ZE,6BAAsC,erF05ZxC,CqF15ZE,0CAAsC,erFk6ZxC,CqFl6ZE,8CAAsC,erF06ZxC,CqF16ZE,iDAAsC,erFk7ZxC,CqFl7ZE,wBAAsC,erFs7ZxC,CqFt7ZE,qDAAsC,erF87ZxC,CqF97ZE,sBAAsC,erFk8ZxC,CqFl8ZE,sDAAsC,erF08ZxC,CqF18ZE,qBAAsC,erF88ZxC,CqF98ZE,6CAAsC,erFs9ZxC,CqFt9ZE,aAAsC,WrF09ZxC,CqF19ZE,gBAAsC,erF89ZxC,CqF99ZE,2CAAsC,erFs+ZxC,CqFt+ZE,kDAAsC,erF8+ZxC,CqF9+ZE,uCAAsC,erFs/ZxC,CqFt/ZE,uBAAsC,erF0/ZxC,CqF1/ZE,6BAAsC,erF8/ZxC,CqF9/ZE,qBAAsC,erFkgaxC,CqFlgaE,gBAAsC,erFsgaxC,CqFtgaE,sDAAsC,erF8gaxC,CqF9gaE,sBAAsC,erFkhaxC,CqFlhaE,kBAAsC,erFshaxC,CqFthaE,sBAAsC,erF0haxC,CqF1haE,mBAAsC,erF8haxC,CqF9haE,uBAAsC,erFkiaxC,CqFliaE,6BAAsC,erFsiaxC,CqFtiaE,sBAAsC,erF0iaxC,CqF1iaE,mDAAsC,erFkjaxC,CqFljaE,qDAAsC,erF0jaxC,CqF1jaE,qBAAsC,erF8jaxC,CqF9jaE,oCAAsC,erFkkaxC,CqFlkaE,gDAAsC,erF0kaxC,CqF1kaE,yDAAsC,erFslaxC,CqFtlaE,mCAAsC,erF8laxC,CqF9laE,qBAAsC,erFkmaxC,CqFlmaE,yCAAsC,erF0maxC,CqF1maE,qBAAsC,erF8maxC,CqF9maE,uBAAsC,erFknaxC,CqFlnaE,gBAAsC,erFsnaxC,CqFtnaE,uBAAsC,erF0naxC,CqF1naE,wBAAsC,erF8naxC,CqF9naE,sBAAsC,erFkoaxC,CqFloaE,qBAAsC,erFsoaxC,CqFtoaE,mDAAsC,erF8oaxC,CqF9oaE,sDAAsC,erFspaxC,CqFtpaE,gBAAsC,erF0paxC,CqF1paE,gDAAsC,erFkqaxC,CqFlqaE,mBAAsC,erFsqaxC,CqFtqaE,8CAAsC,erF8qaxC,CqF9qaE,gBAAsC,erFkraxC,CqFlraE,oBAAsC,erFsraxC,CqFtraE,uBAAsC,erF0raxC,CqF1raE,mBAAsC,erF8raxC,CqF9raE,uBAAsC,erFksaxC,CqFlsaE,iCAAsC,erFssaxC,CqFtsaE,6BAAsC,erF0saxC,CqF1saE,sDAAsC,erFktaxC,CqFltaE,+CAAsC,erF0taxC,CqF1taE,sDAAsC,erFkuaxC,CqFluaE,+BAAsC,erFsuaxC,CqFtuaE,0CAAsC,erF8uaxC,CqF9uaE,+CAAsC,erFsvaxC,CqFtvaE,2BAAsC,erF0vaxC,CqF1vaE,iBAAsC,erF8vaxC,CqF9vaE,gDAAsC,erFswaxC,CqFtwaE,gBAAsC,erF0waxC,CqF1waE,oBAAsC,erF8waxC,CqF9waE,0BAAsC,erFkxaxC,CqFlxaE,8CAAsC,erF0xaxC,CqF1xaE,sBAAsC,erF8xaxC,CqF9xaE,gBAAsC,erFkyaxC,CqFlyaE,kBAAsC,erFsyaxC,CqFtyaE,iBAAsC,erF0yaxC,CqF1yaE,sBAAsC,erF8yaxC,CqF9yaE,eAAsC,erFkzaxC,CqFlzaE,oBAAsC,erFszaxC,CqFtzaE,uBAAsC,erF0zaxC,CqF1zaE,yBAAsC,erF8zaxC,CqF9zaE,yBAAsC,erFk0axC,CqFl0aE,sBAAsC,erFs0axC,CqFt0aE,sCAAsC,erF00axC,CqF10aE,sDAAsC,erFk1axC,CqFl1aE,6FAAsC,erFk2axC,CqFl2aE,4CAAsC,erF02axC,CqF12aE,iBAAsC,erF82axC,CqF92aE,0BAAsC,erFk3axC,CqFl3aE,qBAAsC,erFs3axC,CqFt3aE,eAAsC,erF03axC,CqF13aE,sCAAsC,erFk4axC,CqFl4aE,mBAAsC,erFs4axC,CqFt4aE,mDAAsC,erF84axC,CqF94aE,oBAAsC,erFk5axC,CqFl5aE,oBAAsC,erFs5axC,CqFt5aE,sDAAsC,erF85axC,CqF95aE,oBAAsC,erFk6axC,CqFl6aE,8CAAsC,erF06axC,CqF16aE,mBAAsC,erF86axC,CqF96aE,oBAAsC,erFk7axC,CqFl7aE,oDAAsC,erF87axC,CqF97aE,iBAAsC,erFk8axC,CqFl8aE,gDAAsC,erF08axC,CqF18aE,8CAAsC,erFk9axC,CqFl9aE,wDAAsC,erF09axC,CqF19aE,uBAAsC,erF89axC,CqF99aE,mBAAsC,erFk+axC,CqFl+aE,0BAAsC,erFs+axC,CqFt+aE,kBAAsC,erF0+axC,CqF1+aE,oBAAsC,erF8+axC,CqF9+aE,kBAAsC,erFk/axC,CqFl/aE,iDAAsC,erF0/axC,CqF1/aE,6BAAsC,erF8/axC,CqF9/aE,4BAAsC,erFkgbxC,CqFlgbE,0DAAsC,erF0gbxC,CqF1gbE,qBAAsC,erF8gbxC,CqF9gbE,mBAAsC,erFkhbxC,CqFlhbE,kDAAsC,erFshbxC,CqFthbE,8DAAsC,erFkibxC,CqFlibE,mBAAsC,erFsibxC,CqFtibE,kCAAsC,erF0ibxC,CqF1ibE,oBAAsC,erF8ibxC,CqF9ibE,sDAAsC,erFsjbxC,CqFtjbE,mCAAsC,erF0jbxC,CqF1jbE,uBAAsC,erF8jbxC,CqF9jbE,+CAAsC,erFskbxC,CqFtkbE,oBAAsC,erF0kbxC,CqF1kbE,6CAAsC,erFklbxC,CqFllbE,yDAAsC,erF0lbxC,CqF1lbE,wBAAsC,erF8lbxC,CqF9lbE,0DAAsC,erFsmbxC,CqFtmbE,sDAAsC,erF8mbxC,CqF9mbE,iEAAsC,erFsnbxC,CqFtnbE,oBAAsC,erF0nbxC,CqF1nbE,kBAAsC,erF8nbxC,CqF9nbE,eAAsC,erFkobxC,CqFlobE,6BAAsC,erFsobxC,CqFtobE,iBAAsC,erF0obxC,CqF1obE,0BAAsC,erF8obxC,CqF9obE,4GAAsC,erF8pbxC,CqF9pbE,gBAAsC,erFkqbxC,CqFlqbE,sBAAsC,erFsqbxC,CqFtqbE,iEAAsC,erFkrbxC,CqFlrbE,gEAAsC,erF0rbxC,CqF1rbE,qBAAsC,erF8rbxC,CqF9rbE,oDAAsC,erFssbxC,CqFtsbE,iBAAsC,erF0sbxC,CqF1sbE,gDAAsC,erFktbxC,CqFltbE,uCAAsC,erF0tbxC,CqF1tbE,uBAAsC,erF8tbxC,CqF9tbE,gBAAsC,erFkubxC,CqFlubE,kBAAsC,erFsubxC,CqFtubE,8EAAsC,erFkvbxC,CqFlvbE,mBAAsC,erFsvbxC,CqFtvbE,6BAAsC,erF0vbxC,CqF1vbE,gBAAsC,erF8vbxC,CqF9vbE,iBAAsC,erFkwbxC,CqFlwbE,iCAAsC,erFswbxC,CqFtwbE,sCAAsC,erF8wbxC,CqF9wbE,8CAAsC,erFsxbxC,CqFtxbE,yBAAsC,erF0xbxC,CqF1xbE,0DAAsC,erFkybxC,CqFlybE,+BAAsC,erFsybxC,CqFtybE,qBAAsC,erF0ybxC,CqF1ybE,sBAAsC,erF8ybxC,CqF9ybE,wFAAsC,erF0zbxC,CqF1zbE,8CAAsC,erFk0bxC,CqFl0bE,+CAAsC,erF00bxC,CqF10bE,iDAAsC,erFk1bxC,CqFl1bE,qBAAsC,erFs1bxC,CqFt1bE,2BAAsC,erF01bxC,CqF11bE,iDAAsC,erFk2bxC,CqFl2bE,sBAAsC,erFs2bxC,CqFt2bE,oFAAsC,erFk3bxC,CqFl3bE,oBAAsC,erFs3bxC,CqFt3bE,4CAAsC,erF83bxC,CqF93bE,sDAAsC,erFs4bxC,CqFt4bE,yBAAsC,erF04bxC,CqF14bE,iEAAsC,erFk5bxC,CqFl5bE,2BAAsC,erFs5bxC,CqFt5bE,wBAAsC,erF05bxC,CqF15bE,4DAAsC,erFs6bxC,CqFt6bE,6BAAsC,erF06bxC,CqF16bE,yBAAsC,erF86bxC,CqF96bE,8BAAsC,erFk7bxC,CqFl7bE,+CAAsC,erF07bxC,CqF17bE,uCAAsC,erFk8bxC,CqFl8bE,iBAAsC,erFs8bxC,CqFt8bE,iCAAsC,erF08bxC,CqF18bE,uBAAsC,erF88bxC,CqF98bE,yBAAsC,erFk9bxC,CqFl9bE,mBAAsC,erFs9bxC,CqFt9bE,8BAAsC,erF09bxC,CqF19bE,uDAAsC,erFk+bxC,CqFl+bE,+CAAsC,erF0+bxC,CqF1+bE,kBAAsC,erF8+bxC,CqF9+bE,wDAAsC,erFs/bxC,CqFt/bE,iBAAsC,erF0/bxC,CqF1/bE,qBAAsC,erF8/bxC,CqF9/bE,kBAAsC,erFkgcxC,CqFlgcE,mCAAsC,erFsgcxC,CqFtgcE,kBAAsC,erF0gcxC,CqF1gcE,2BAAsC,erF8gcxC,CqF9gcE,oBAAsC,erFkhcxC,CqFlhcE,aAAsC,WrFshcxC,CqFthcE,2CAAsC,erF8hcxC,CqF9hcE,qBAAsC,erFkicxC,CqFlicE,aAAsC,WrFsicxC,CqFticE,8DAAsC,erF8icxC,CqF9icE,kDAAsC,erFsjcxC,CqFtjcE,aAAsC,WrF0jcxC,CqF1jcE,qBAAsC,erF8jcxC,CqF9jcE,qBAAsC,erFkkcxC,CqFlkcE,sCAAsC,erF0kcxC,CqF1kcE,4DAAsC,erFklcxC,CqFllcE,+BAAsC,erFslcxC,CqFtlcE,kBAAsC,erF0lcxC,CqF1lcE,oCAAsC,erFkmcxC,CqFlmcE,+DAAsC,erF8mcxC,CqF9mcE,8BAAsC,erFkncxC,CqFlncE,yDAAsC,erF0ncxC,CqF1ncE,yBAAsC,erF8ncxC,CqF9ncE,uBAAsC,erFkocxC,CqFlocE,oBAAsC,erFsocxC,CqFtocE,2DAAsC,erF8ocxC,CqF9ocE,kBAAsC,erFkpcxC,CqFlpcE,oBAAsC,YrFspcxC,CqFtpcE,0BAAsC,erF0pcxC,CqF1pcE,oDAAsC,erFkqcxC,CqFlqcE,8BAAsC,erFsqcxC,CqFtqcE,8BAAsC,erF0qcxC,CqF1qcE,wBAAsC,erF8qcxC,CqF9qcE,uBAAsC,erFkrcxC,CqFlrcE,qDAAsC,erF0rcxC,CqF1rcE,gBAAsC,erF8rcxC,CqF9rcE,kDAAsC,erFsscxC,CqFtscE,uCAAsC,erF0scxC,CqF1scE,kCAAsC,erF8scxC,CqF9scE,+DAAsC,erFstcxC,CqFttcE,yBAAsC,erF0tcxC,CqF1tcE,kDAAsC,erFsucxC,CqFtucE,uBAAsC,erF0ucxC,CqF1ucE,wBAAsC,erF8ucxC,CqF9ucE,aAAsC,WrFkvcxC,CqFlvcE,gBAAsC,erFsvcxC,CqFtvcE,gBAAsC,erF0vcxC,CqF1vcE,+BAAsC,erFkwcxC,CqFlwcE,8BAAsC,erFswcxC,CqFtwcE,0CAAsC,erF8wcxC,CqF9wcE,0BAAsC,erFkxcxC,CqFlxcE,sBAAsC,erFsxcxC,CqFtxcE,sBAAsC,erF0xcxC,CqF1xcE,yBAAsC,erF8xcxC,CqF9xcE,qBAAsC,erFkycxC,CqFlycE,yBAAsC,erFsycxC,CqFtycE,+CAAsC,erF8ycxC,CqF9ycE,0BAAsC,erFkzcxC,CqFlzcE,gBAAsC,erFszcxC,CqFtzcE,8CAAsC,erF8zcxC,CqF9zcE,iBAAsC,erFk0cxC,CqFl0cE,wBAAsC,erFs0cxC,CqFt0cE,iEAAsC,erFk1cxC,CqFl1cE,iBAAsC,erFs1cxC,CqFt1cE,0DAAsC,erF81cxC,CqF91cE,8BAAsC,erFk2cxC,CqFl2cE,yDAAsC,erF02cxC,CqF12cE,wBAAsC,erF82cxC,CqF92cE,4CAAsC,erFs3cxC,CqFt3cE,2BAAsC,erF03cxC,CqF13cE,uBAAsC,erF83cxC,CqF93cE,2CAAsC,erFs4cxC,CqFt4cE,yBAAsC,erF04cxC,CqF14cE,kCAAsC,erF84cxC,CqF94cE,aAAsC,WrFk5cxC,CqFl5cE,gBAAsC,erFs5cxC,CqFt5cE,+CAAsC,erF85cxC,CqF95cE,yBAAsC,erFk6cxC,CqFl6cE,4BAAsC,erFs6cxC,CqFt6cE,iBAAsC,erF06cxC,CqF16cE,0BAAsC,erF86cxC,CqF96cE,2CAAsC,erFs7cxC,CqFt7cE,yBAAsC,erF07cxC,CqF17cE,uBAAsC,erF87cxC,CqF97cE,oDAAsC,erFs8cxC,CqFt8cE,6CAAsC,erF88cxC,CqF98cE,wBAAsC,erFk9cxC,CqFl9cE,gDAAsC,erF09cxC,CqF19cE,8BAAsC,erF89cxC,CqF99cE,4CAAsC,erFs+cxC,CqFt+cE,uBAAsC,erF0+cxC,CqF1+cE,aAAsC,WrF8+cxC,CqF9+cE,gHAAsC,erF8/cxC,CqF9/cE,gBAAsC,erFkgdxC,CqFlgdE,wBAAsC,erFsgdxC,CqFtgdE,sBAAsC,erF0gdxC,CqF1gdE,uBAAsC,erF8gdxC,CqF9gdE,qBAAsC,erFkhdxC,CqFlhdE,oBAAsC,erFshdxC,CqFthdE,+BAAsC,erF0hdxC,CqF1hdE,+BAAsC,erF8hdxC,CqF9hdE,gDAAsC,erFkidxC,CqFlidE,oDAAsC,erF0idxC,CqF1idE,kBAAsC,erF8idxC,CqF9idE,kDAAsC,erFsjdxC,CqFtjdE,mBAAsC,erF0jdxC,CqF1jdE,0BAAsC,erF8jdxC,CqF9jdE,uBAAsC,erFkkdxC,CqFlkdE,qBAAsC,erFskdxC,CqFtkdE,iDAAsC,erF8kdxC,CqF9kdE,0BAAsC,erFkldxC,CqFlldE,oDAAsC,erF0ldxC,CqF1ldE,sDAAsC,erFkmdxC,CqFlmdE,4CAAsC,erF0mdxC,CqF1mdE,sBAAsC,erF8mdxC,CqF9mdE,kBAAsC,erFkndxC,CqFlndE,2BAAsC,erFsndxC,CqFtndE,sBAAsC,erF0ndxC,CqF1ndE,uCAAsC,erFkodxC,CqFlodE,kBAAsC,erFsodxC,CqFtodE,gBAAsC,erF0odxC,CqF1odE,uCAAsC,erFkpdxC,CqFlpdE,sBAAsC,erFspdxC,CqFtpdE,sDAAsC,erF8pdxC,CqF9pdE,2BAAsC,erFkqdxC,CqFlqdE,2BAAsC,erFsqdxC,CqFtqdE,yBAAsC,erF0qdxC,CqF1qdE,uBAAsC,erF8qdxC,CqF9qdE,sBAAsC,erFkrdxC,CqFlrdE,kBAAsC,erFsrdxC,CqFtrdE,2CAAsC,erF8rdxC,CqF9rdE,uBAAsC,erFksdxC,CqFlsdE,eAAsC,erFssdxC,CqFtsdE,qCAAsC,erF0sdxC,CqF1sdE,uBAAsC,erF8sdxC,CqF9sdE,iBAAsC,erFktdxC,CqFltdE,8BAAsC,erFstdxC,CqFttdE,oBAAsC,erF0tdxC,CqF1tdE,2BAAsC,erF8tdxC,CqF9tdE,sBAAsC,erFkudxC,CqFludE,6BAAsC,erFsudxC,CqFtudE,gBAAsC,erF0udxC,CqF1udE,sBAAsC,erF8udxC,CqF9udE,gDAAsC,erFsvdxC,CqFtvdE,+CAAsC,erF8vdxC,CqF9vdE,6CAAsC,erFswdxC,CqFtwdE,wBAAsC,erF0wdxC,CqF1wdE,8CAAsC,erFkxdxC,CqFlxdE,uBAAsC,erFsxdxC,CqFtxdE,iDAAsC,erF8xdxC,CqF9xdE,8CAAsC,erFsydxC,CqFtydE,oBAAsC,erF0ydxC,CqF1ydE,yBAAsC,erF8ydxC,CqF9ydE,8BAAsC,erFkzdxC,CqFlzdE,sDAAsC,erF0zdxC,CqF1zdE,gBAAsC,erF8zdxC,CqF9zdE,yCAAsC,erFs0dxC,CqFt0dE,eAAsC,erF00dxC,CqF10dE,2CAAsC,erFk1dxC,CqFl1dE,6BAAsC,erFs1dxC,CqFt1dE,qCAAsC,erF01dxC,CqF11dE,uBAAsC,erF81dxC,CqF91dE,sBAAsC,erFk2dxC,CqFl2dE,eAAsC,erFs2dxC,CqFt2dE,6BAAsC,erF02dxC,CqF12dE,qBAAsC,erF82dxC,CqF92dE,gEAAsC,erF03dxC,CqF13dE,eAAsC,erF83dxC,CqF93dE,8BAAsC,erFk4dxC,CqFl4dE,4CAAsC,erF04dxC,CqF14dE,2BAAsC,erF84dxC,CqF94dE,uCAAsC,erFs5dxC,CqFt5dE,wBAAsC,erF05dxC,CqF15dE,qCAAsC,erFk6dxC,CqFl6dE,uCAAsC,erF06dxC,CqF16dE,kBAAsC,erF86dxC,CqF96dE,0DAAsC,erFs7dxC,CqFt7dE,uCAAsC,erF87dxC,CqF97dE,8CAAsC,erFs8dxC,CqFt8dE,sBAAsC,erF08dxC,CqF18dE,mBAAsC,erF88dxC,CqF98dE,mDAAsC,erFs9dxC,CqFt9dE,2DAAsC,erF89dxC,CqF99dE,qBAAsC,erFk+dxC,CqFl+dE,wBAAsC,erFs+dxC,CqFt+dE,yBAAsC,erF0+dxC,CqF1+dE,yBAAsC,erF8+dxC,CqF9+dE,kDAAsC,erFs/dxC,CqFt/dE,4GAAsC,erFsgexC,CqFtgeE,qBAAsC,erF0gexC,CqF1geE,mDAAsC,erFkhexC,CqFlheE,uBAAsC,erFshexC,CqFtheE,uBAAsC,erF0hexC,CqF1heE,+BAAsC,erF8hexC,CqF9heE,uBAAsC,erFkiexC,CqFlieE,iDAAsC,erF0iexC,CqF1ieE,iBAAsC,erF8iexC,CqF9ieE,oDAAsC,erFsjexC,CqFtjeE,0BAAsC,erF0jexC,CqF1jeE,2BAAsC,erF8jexC,CqF9jeE,yCAAsC,erFskexC,CqFtkeE,mDAAsC,erF8kexC,CqF9keE,uBAAsC,erFklexC,CqFlleE,wBAAsC,erFslexC,CqFtleE,oBAAsC,erF0lexC,CqF1leE,wBAAsC,erF8lexC,CqF9leE,wBAAsC,erFkmexC,CqFlmeE,wBAAsC,erFsmexC,CqFtmeE,sBAAsC,erF0mexC,CqF1meE,sBAAsC,erF8mexC,CqF9meE,qBAAsC,erFknexC,CqFlneE,6CAAsC,erF0nexC,CqF1neE,iBAAsC,erF8nexC,CqF9neE,kFAAsC,erF0oexC,CqF1oeE,wBAAsC,erF8oexC,CqF9oeE,eAAsC,erFkpexC,CqFlpeE,kDAAsC,erF0pexC,CqF1peE,sDAAsC,erFsqexC,CqFtqeE,iBAAsC,erF0qexC,CqF1qeE,kBAAsC,erF8qexC,CqF9qeE,uCAAsC,erFsrexC,CqFtreE,sBAAsC,erF0rexC,CqF1reE,yBAAsC,erF8rexC,CqF9reE,0BAAsC,erFksexC,CqFlseE,sBAAsC,erFssexC,CqFtseE,sBAAsC,erF0sexC,CqF1seE,+BAAsC,erF8sexC,CqF9seE,iBAAsC,erFktexC,CqFlteE,sBAAsC,erFstexC,CqFtteE,mBAAsC,erF0texC,CqF1teE,oBAAsC,erF8texC,CqF9teE,aAAsC,WrFkuexC,CqFlueE,4BAAsC,erFsuexC,CqFtueE,sBAAsC,erF0uexC,CqF1ueE,6DAAsC,erFkvexC,CqFlveE,qCAAsC,erF0vexC,CqF1veE,oBAAsC,erF8vexC,CqF9veE,uCAAsC,erFswexC,CqFtweE,aAAsC,WrF0wexC,CqF1weE,8CAAsC,erFkxexC,CqFlxeE,uBAAsC,erFsxexC,CqFtxeE,iBAAsC,erF0xexC,CqF1xeE,0CAAsC,erFkyexC,CqFlyeE,0BAAsC,erFsyexC,CqFtyeE,oDAAsC,erF8yexC,CqF9yeE,iDAAsC,erFszexC,CqFtzeE,yCAAsC,erF8zexC,CqF9zeE,wDAAsC,erFs0exC,CqFt0eE,2BAAsC,erF00exC,CqF10eE,0BAAsC,erF80exC,CqF90eE,iBAAsC,erFk1exC,CqFl1eE,qBAAsC,erFs1exC,CqFt1eE,qBAAsC,erF01exC,CqF11eE,sBAAsC,erF81exC,CqF91eE,eAAsC,erFk2exC,CqFl2eE,mBAAsC,erFs2exC,CqFt2eE,iEAAsC,erFk3exC,CqFl3eE,oBAAsC,erFs3exC,CqFt3eE,gDAAsC,erF83exC,CqF93eE,qBAAsC,erFk4exC,CqFl4eE,+BAAsC,erFs4exC,CqFt4eE,kBAAsC,erF04exC,CqF14eE,iBAAsC,erF84exC,CqF94eE,uDAAsC,erFs5exC,CqFt5eE,yBAAsC,erF05exC,CqF15eE,uBAAsC,erF85exC,CqF95eE,wBAAsC,erFk6exC,CqFl6eE,yBAAsC,erFs6exC,CqFt6eE,kBAAsC,erF06exC,CqF16eE,0BAAsC,erF86exC,CqF96eE,gDAAsC,erFs7exC,CqFt7eE,oBAAsC,erF07exC,CqF17eE,0CAAsC,erFk8exC,CqFl8eE,8CAAsC,erF08exC,CqF18eE,0BAAsC,erF88exC,CqF98eE,wCAAsC,erFs9exC,CqFt9eE,wBAAsC,erF09exC,CqF19eE,kBAAsC,erF89exC,CqF99eE,kBAAsC,erFk+exC,CqFl+eE,kBAAsC,erFs+exC,CqFt+eE,mFAAsC,erFk/exC,CqFl/eE,8DAAsC,erF0/exC,CqF1/eE,iBAAsC,erF8/exC,CqF9/eE,0BAAsC,erFkgfxC,CqFlgfE,mBAAsC,erFsgfxC,CqFtgfE,0EAAsC,erF8gfxC,CqF9gfE,oBAAsC,erFkhfxC,CqFlhfE,iBAAsC,erFshfxC,CqFthfE,sBAAsC,erF0hfxC,CqF1hfE,uBAAsC,erF8hfxC,CqF9hfE,gBAAsC,erFkifxC,CqFlifE,wBAAsC,erFsifxC,CqFtifE,wBAAsC,erF0ifxC,CqF1ifE,+EAAsC,erFsjfxC,CqFtjfE,4BAAsC,erF0jfxC,CqF1jfE,kBAAsC,erF8jfxC,CqF9jfE,wIAAsC,erFklfxC,CqFllfE,qCAAsC,erF0lfxC,CqF1lfE,+DAAsC,erFkmfxC,CqFlmfE,oBAAsC,erFsmfxC,CqFtmfE,8CAAsC,erF8mfxC,CqF9mfE,wBAAsC,erFknfxC,CqFlnfE,sCAAsC,erFsnfxC,CqFtnfE,yDAAsC,erF8nfxC,CqF9nfE,yBAAsC,erFkofxC,CqFlofE,yBAAsC,erFsofxC,CqFtofE,wDAAsC,erF8ofxC,CqF9ofE,0CAAsC,erFspfxC,CqFtpfE,uBAAsC,erF0pfxC,CqF1pfE,oEAAsC,erFsqfxC,CqFtqfE,2CAAsC,erF8qfxC,CqF9qfE,kDAAsC,erFsrfxC,CqFtrfE,oDAAsC,erF8rfxC,CqF9rfE,eAAsC,erFksfxC,CqFlsfE,uBAAsC,erFssfxC,CqFtsfE,qCAAsC,erF8sfxC,CqF9sfE,iBAAsC,erFktfxC,CqFltfE,sDAAsC,erF0tfxC,CqF1tfE,6BAAsC,erF8tfxC,CqF9tfE,uBAAsC,erFkufxC,CqFlufE,sBAAsC,erFsufxC,CqFtufE,sBAAsC,erF0ufxC,CqF1ufE,kKAAsC,erF0vfxC,CqF1vfE,+BAAsC,erFkwfxC,CqFlwfE,+CAAsC,erF0wfxC,CqF1wfE,kBAAsC,erF8wfxC,CqF9wfE,oBAAsC,erFkxfxC,CqFlxfE,yBAAsC,erFsxfxC,CqFtxfE,iCAAsC,erF0xfxC,CqF1xfE,kDAAsC,erFkyfxC,CqFlyfE,iBAAsC,erFsyfxC,CqFtyfE,4BAAsC,erF0yfxC,CqF1yfE,4BAAsC,erF8yfxC,CqF9yfE,yBAAsC,erFkzfxC,CqFlzfE,6CAAsC,erF0zfxC,CqF1zfE,aAAsC,WrF8zfxC,CqF9zfE,2DAAsC,erFs0fxC,CqFt0fE,uCAAsC,erF80fxC,CqF90fE,kDAAsC,erFs1fxC,CqFt1fE,kBAAsC,erF01fxC,CqF11fE,kBAAsC,erF81fxC,CqF91fE,6BAAsC,erFk2fxC,CqFl2fE,aAAsC,WrFs2fxC,CqFt2fE,oBAAsC,erF02fxC,CqF12fE,oBAAsC,erF82fxC,CqF92fE,sBAAsC,erFk3fxC,CqFl3fE,2DAAsC,erF03fxC,CqF13fE,8HAAsC,erF04fxC,CqF14fE,uDAAsC,erFk5fxC,CqFl5fE,oBAAsC,erFs5fxC,CqFt5fE,sBAAsC,erF05fxC,CqF15fE,6CAAsC,erFk6fxC,CqFl6fE,yBAAsC,erFs6fxC,CqFt6fE,iBAAsC,erF06fxC,CqF16fE,kBAAsC,erF86fxC,CqF96fE,wCAAsC,erFs7fxC,CqFt7fE,uBAAsC,erF07fxC,CqF17fE,yBAAsC,erF87fxC,CqF97fE,mBAAsC,erFk8fxC,CqFl8fE,iBAAsC,erFs8fxC,CqFt8fE,qBAAsC,erF08fxC,CqF18fE,iBAAsC,erF88fxC,CqF98fE,2BAAsC,erFk9fxC,CqFl9fE,yBAAsC,erFs9fxC,CqFt9fE,mDAAsC,erF89fxC,CqF99fE,kBAAsC,erFk+fxC,CqFl+fE,qBAAsC,erFs+fxC,CqFt+fE,sDAAsC,erF8+fxC,CqF9+fE,oBAAsC,erFk/fxC,CqFl/fE,uBAAsC,erFs/fxC,CqFt/fE,mCAAsC,erF8/fxC,CqF9/fE,wBAAsC,erFkggBxC,CqFlggBE,wBAAsC,erFsggBxC,CqFtggBE,4CAAsC,erF0ggBxC,CqF1ggBE,6BAAsC,erF8ggBxC,CqF9ggBE,2CAAsC,erFshgBxC,CqFthgBE,wBAAsC,erF0hgBxC,CqF1hgBE,kBAAsC,erF8hgBxC,CqF9hgBE,sBAAsC,erFkigBxC,CqFligBE,0BAAsC,erFsigBxC,CqFtigBE,aAAsC,WrF0igBxC,CqF1igBE,qCAAsC,erFkjgBxC,CqFljgBE,sBAAsC,erFsjgBxC,CqFtjgBE,iCAAsC,erF0jgBxC,CqF1jgBE,gBAAsC,erF8jgBxC,CqF9jgBE,+BAAsC,erFkkgBxC,CqFlkgBE,oBAAsC,erFskgBxC,CqFtkgBE,qCAAsC,erF8kgBxC,CqF9kgBE,4CAAsC,erFslgBxC,CqFtlgBE,0EAAsC,erFkmgBxC,CqFlmgBE,6BAAsC,erFsmgBxC,CqFtmgBE,mBAAsC,erF0mgBxC,CqF1mgBE,oEAAsC,erFsngBxC,CqFtngBE,mCAAsC,erF8ngBxC,CqF9ngBE,wBAAsC,erFkogBxC,CqFlogBE,2CAAsC,erF0ogBxC,CqF1ogBE,8CAAsC,erFkpgBxC,CqFlpgBE,qCAAsC,erF0pgBxC,CqF1pgBE,oCAAsC,erF8pgBxC,CqF9pgBE,4EAAsC,erF8qgBxC,CqF9qgBE,yBAAsC,erFkrgBxC,CqFlrgBE,0BAAsC,erFsrgBxC,CqFtrgBE,aAAsC,WrF0rgBxC,CqF1rgBE,wBAAsC,erF8rgBxC,CqF9rgBE,oBAAsC,erFksgBxC,CqFlsgBE,qBAAsC,erFssgBxC,CqFtsgBE,sDAAsC,erF8sgBxC,CqF9sgBE,sEAAsC,erF0tgBxC,CqF1tgBE,uCAAsC,erFkugBxC,CqFlugBE,yDAAsC,erF0ugBxC,CqF1ugBE,qBAAsC,erF8ugBxC,CqF9ugBE,qBAAsC,erFkvgBxC,CqFlvgBE,iBAAsC,erFsvgBxC,CqFtvgBE,sDAAsC,erF8vgBxC,CqF9vgBE,wBAAsC,erFkwgBxC,CqFlwgBE,gDAAsC,erF0wgBxC,CqF1wgBE,gBAAsC,erF8wgBxC,CqF9wgBE,sBAAsC,erFkxgBxC,CqFlxgBE,kBAAsC,erFsxgBxC,CqFtxgBE,qBAAsC,erF0xgBxC,CqF1xgBE,iBAAsC,erF8xgBxC,CqF9xgBE,2BAAsC,erFkygBxC,CqFlygBE,wBAAsC,erFsygBxC,CqFtygBE,oDAAsC,erF8ygBxC,CqF9ygBE,mBAAsC,erFkzgBxC,CqFlzgBE,sBAAsC,erFszgBxC,CqFtzgBE,+BAAsC,erF8zgBxC,CqF9zgBE,uBAAsC,erFk0gBxC,CqFl0gBE,oBAAsC,erFs0gBxC,CqFt0gBE,iBAAsC,erF00gBxC,CqF10gBE,gBAAsC,erF80gBxC,CqF90gBE,kBAAsC,erFk1gBxC,CqFl1gBE,8BAAsC,erFs1gBxC,CqFt1gBE,gFAAsC,erF02gBxC,CqF12gBE,wEAAsC,erF03gBxC,CqF13gBE,eAAsC,erF83gBxC,CqF93gBE,kBAAsC,erFk4gBxC,CqFl4gBE,iDAAsC,erF04gBxC,CqF14gBE,sBAAsC,erF84gBxC,CqF94gBE,qBAAsC,erFk5gBxC,CqFl5gBE,oBAAsC,erFs5gBxC,CqFt5gBE,wDAAsC,erF85gBxC,CqF95gBE,+BAAsC,erFk6gBxC,CqFl6gBE,uBAAsC,erFs6gBxC,CqFt6gBE,6FAAsC,erFk7gBxC,CqFl7gBE,qBAAsC,YrFs7gBxC,CqFt7gBE,sBAAsC,erF07gBxC,CqF17gBE,sBAAsC,erF87gBxC,CqF97gBE,2BAAsC,erFk8gBxC,CqFl8gBE,sBAAsC,erFs8gBxC,CqFt8gBE,uBAAsC,erF08gBxC,CqF18gBE,qBAAsC,erF88gBxC,CqF98gBE,wDAAsC,erFs9gBxC,CqFt9gBE,+BAAsC,erF09gBxC,CqF19gBE,0CAAsC,erFk+gBxC,CqFl+gBE,sBAAsC,erFs+gBxC,CqFt+gBE,4CAAsC,erF8+gBxC,CqF9+gBE,iCAAsC,erFk/gBxC,CqFl/gBE,mBAAsC,erFs/gBxC,CqFt/gBE,gCAAsC,erF0/gBxC,CqF1/gBE,eAAsC,erF8/gBxC,CqF9/gBE,kDAAsC,erFsghBxC,CqFtghBE,qCAAsC,erF8ghBxC,CqF9ghBE,6BAAsC,erFkhhBxC,CqFlhhBE,mDAAsC,erF0hhBxC,CqF1hhBE,wBAAsC,erF8hhBxC,CqF9hhBE,qCAAsC,erFkihBxC,CqFlihBE,oBAAsC,erFsihBxC,CqFtihBE,yBAAsC,erF0ihBxC,CqF1ihBE,6BAAsC,erF8ihBxC,CqF9ihBE,0DAAsC,erFsjhBxC,CqFtjhBE,iBAAsC,erF0jhBxC,CqF1jhBE,eAAsC,erF8jhBxC,CqF9jhBE,wCAAsC,erFskhBxC,CqFtkhBE,mBAAsC,erF0khBxC,CqF1khBE,0GAAsC,erF0lhBxC,CqF1lhBE,gBAAsC,erF8lhBxC,CqF9lhBE,uBAAsC,erFkmhBxC,CqFlmhBE,6BAAsC,erFsmhBxC,CqFtmhBE,wBAAsC,erF0mhBxC,CqF1mhBE,uBAAsC,erF8mhBxC,CqF9mhBE,wBAAsC,erFknhBxC,CqFlnhBE,oDAAsC,erF0nhBxC,CqF1nhBE,kDAAsC,erFkohBxC,CqFlohBE,gBAAsC,erFsohBxC,CqFtohBE,wBAAsC,YrF0ohBxC,CqF1ohBE,8CAAsC,erFkphBxC,CqFlphBE,sBAAsC,erFsphBxC,CqFtphBE,mCAAsC,erF8phBxC,CqF9phBE,kBAAsC,erFkqhBxC,CqFlqhBE,8FAAsC,erFkrhBxC,CqFlrhBE,wBAAsC,erFsrhBxC,CqFtrhBE,gBAAsC,erF0rhBxC,CqF1rhBE,8CAAsC,erFkshBxC,CqFlshBE,iBAAsC,erFsshBxC,CqFtshBE,iBAAsC,erF0shBxC,CqF1shBE,mBAAsC,erF8shBxC,CqF9shBE,+EAAsC,erF0thBxC,CqF1thBE,8BAAsC,erF8thBxC,CqF9thBE,qEAAsC,erF0uhBxC,CqF1uhBE,uBAAsC,erF8uhBxC,CqF9uhBE,sBAAsC,erFkvhBxC,CqFlvhBE,+DAAsC,erF8vhBxC,CqF9vhBE,wBAAsC,erFkwhBxC,CqFlwhBE,kBAAsC,erFswhBxC,CqFtwhBE,qDAAsC,erF8whBxC,CqF9whBE,gBAAsC,erFkxhBxC,CqFlxhBE,qBAAsC,erFsxhBxC,CqFtxhBE,6BAAsC,erF0xhBxC,CqF1xhBE,eAAsC,erF8xhBxC,CqF9xhBE,qBAAsC,erFkyhBxC,CqFlyhBE,6CAAsC,erF0yhBxC,CqF1yhBE,qBAAsC,erF8yhBxC,CqF9yhBE,+DAAsC,erF0zhBxC,CqF1zhBE,iCAAsC,erFk0hBxC,CqFl0hBE,6DAAsC,erF00hBxC,CqF10hBE,qBAAsC,erF80hBxC,CqF90hBE,gBAAsC,erFk1hBxC,CqFl1hBE,gBAAsC,erFs1hBxC,CqFt1hBE,gCAAsC,erF01hBxC,CqF11hBE,uBAAsC,erF81hBxC,CqF91hBE,8CAAsC,erFs2hBxC,CqFt2hBE,6FAAsC,erFk3hBxC,CqFl3hBE,sDAAsC,erF03hBxC,CqF13hBE,2DAAsC,erFk4hBxC,CqFl4hBE,sBAAsC,erFs4hBxC,CqFt4hBE,2BAAsC,erF04hBxC,CqF14hBE,yBAAsC,erF84hBxC,CqF94hBE,yCAAsC,erFs5hBxC,CqFt5hBE,mBAAsC,erF05hBxC,CqF15hBE,qEAAsC,erFs6hBxC,CqFt6hBE,4BAAsC,erF06hBxC,CqF16hBE,qCAAsC,erF86hBxC,CqF96hBE,wBAAsC,erFk7hBxC,CqFl7hBE,gEAAsC,erF87hBxC,CqF97hBE,4BAAsC,erFk8hBxC,CqFl8hBE,wBAAsC,erFs8hBxC,CqFt8hBE,wCAAsC,erF88hBxC,CqF98hBE,uBAAsC,erFk9hBxC,CqFl9hBE,sBAAsC,erFs9hBxC,CqFt9hBE,oDAAsC,erF89hBxC,CqF99hBE,wBAAsC,erFk+hBxC,CqFl+hBE,sBAAsC,erFs+hBxC,CqFt+hBE,4BAAsC,erF0+hBxC,CqF1+hBE,+BAAsC,erF8+hBxC,CqF9+hBE,iDAAsC,erFs/hBxC,CqFt/hBE,oBAAsC,erF0/hBxC,CqF1/hBE,sDAAsC,erFsgiBxC,CqFtgiBE,kBAAsC,erF0giBxC,CqF1giBE,uCAAsC,erFkhiBxC,CqFlhiBE,yBAAsC,erFshiBxC,CqFthiBE,8CAAsC,erF8hiBxC,CqF9hiBE,uBAAsC,erFkiiBxC,CqFliiBE,gBAAsC,erFsiiBxC,CqFtiiBE,0CAAsC,erF8iiBxC,CqF9iiBE,aAAsC,WrFkjiBxC,CqFljiBE,uDAAsC,erF0jiBxC,CqF1jiBE,+CAAsC,erFkkiBxC,CqFlkiBE,gBAAsC,erFskiBxC,CqFtkiBE,yBAAsC,erF0kiBxC,CqF1kiBE,gDAAsC,erFkliBxC,CqFlliBE,wBAAsC,erFsliBxC,CqFtliBE,qDAAsC,erF8liBxC,CqF9liBE,6CAAsC,erFsmiBxC,CqFtmiBE,0BAAsC,erF0miBxC,CqF1miBE,sDAAsC,erFkniBxC,CqFlniBE,gBAAsC,erFsniBxC,CqFtniBE,uEAAsC,erFkoiBxC,CqFloiBE,yBAAsC,erFsoiBxC,CqFtoiBE,2CAAsC,erF8oiBxC,CqF9oiBE,qDAAsC,erFspiBxC,CqFtpiBE,kDAAsC,erF8piBxC,CqF9piBE,eAAsC,erFkqiBxC,CqFlqiBE,gDAAsC,erF0qiBxC,CqF1qiBE,+BAAsC,YrFkriBxC,CqFlriBE,kBAAsC,erFsriBxC,CqFtriBE,oBAAsC,erF0riBxC,CqF1riBE,yFAAsC,erF8siBxC,CqF9siBE,uDAAsC,erFstiBxC,CqFttiBE,yDAAsC,erF8tiBxC,CqF9tiBE,qBAAsC,erFkuiBxC,CqFluiBE,2BAAsC,erFsuiBxC,CqFtuiBE,gBAAsC,erF0uiBxC,CqF1uiBE,sBAAsC,erF8uiBxC,CqF9uiBE,gDAAsC,erFsviBxC,CqFtviBE,mBAAsC,erF0viBxC,CqF1viBE,mDAAsC,erFkwiBxC,CqFlwiBE,8BAAsC,erFswiBxC,CqFtwiBE,yBAAsC,erF0wiBxC,CqF1wiBE,0BAAsC,erF8wiBxC,CqF9wiBE,qBAAsC,erFkxiBxC,CqFlxiBE,kBAAsC,YrFsxiBxC,CqFtxiBE,mBAAsC,erF0xiBxC,CqF1xiBE,iBAAsC,erF8xiBxC,CqF9xiBE,iGAAsC,erFkziBxC,CqFlziBE,eAAsC,erFsziBxC,CqFtziBE,kBAAsC,erF0ziBxC,CqF1ziBE,6CAAsC,erFk0iBxC,CqFl0iBE,wBAAsC,erFs0iBxC,CqFt0iBE,iBAAsC,erF00iBxC,CqF10iBE,0BAAsC,erF80iBxC,CqF90iBE,6BAAsC,erFk1iBxC,CqFl1iBE,wCAAsC,erF01iBxC,CqF11iBE,wBAAsC,erF81iBxC,CqF91iBE,sBAAsC,erFk2iBxC,CqFl2iBE,4CAAsC,erF02iBxC,CqF12iBE,uBAAsC,erF82iBxC,CqF92iBE,gBAAsC,erFk3iBxC,CqFl3iBE,oBAAsC,erFs3iBxC,CqFt3iBE,0BAAsC,erF03iBxC,CqF13iBE,uBAAsC,erF83iBxC,CqF93iBE,wBAAsC,erFk4iBxC,CqFl4iBE,oBAAsC,erFs4iBxC,CqFt4iBE,uBAAsC,erF04iBxC,CqF14iBE,kBAAsC,erF84iBxC,CqF94iBE,mBAAsC,erFk5iBxC,CqFl5iBE,6BAAsC,erFs5iBxC,CqFt5iBE,sBAAsC,erF05iBxC,CqF15iBE,yBAAsC,erF85iBxC,CqF95iBE,mBAAsC,erFk6iBxC,CqFl6iBE,uCAAsC,erF06iBxC,CqF16iBE,qBAAsC,erF86iBxC,CqF96iBE,uBAAsC,erFk7iBxC,CqFl7iBE,gDAAsC,erF07iBxC,CqF17iBE,iBAAsC,erF87iBxC,CqF97iBE,kDAAsC,erFs8iBxC,CqFt8iBE,yBAAsC,erF08iBxC,CqF18iBE,uBAAsC,erF88iBxC,CqF98iBE,wBAAsC,erFk9iBxC,CqFl9iBE,8BAAsC,erFs9iBxC,CqFt9iBE,yCAAsC,YrF89iBxC,CqF99iBE,wBAAsC,erFk+iBxC,CqFl+iBE,+BAAsC,erFs+iBxC,CqFt+iBE,mBAAsC,erF0+iBxC,CqF1+iBE,uCAAsC,erFk/iBxC,CqFl/iBE,2CAAsC,erF0/iBxC,CqF1/iBE,kBAAsC,erF8/iBxC,CqF9/iBE,0CAAsC,erFsgjBxC,CqFtgjBE,kBAAsC,erF0gjBxC,CqF1gjBE,sBAAsC,erF8gjBxC,CqF9gjBE,sCAAsC,erFshjBxC,CqFthjBE,mBAAsC,erF0hjBxC,CqF1hjBE,iBAAsC,erF8hjBxC,CqF9hjBE,iBAAsC,erFkijBxC,CqFlijBE,iCAAsC,erF0ijBxC,CqF1ijBE,qBAAsC,erF8ijBxC,CqF9ijBE,+BAAsC,erFkjjBxC,CqFljjBE,mBAAsC,erFsjjBxC,CqFtjjBE,mDAAsC,erF8jjBxC,CqF9jjBE,qBAAsC,erFkkjBxC,CqFlkjBE,oBAAsC,erFskjBxC,CqFtkjBE,kDAAsC,erF8kjBxC,CqF9kjBE,mBAAsC,erFkljBxC,CqFlljBE,iDAAsC,erF0ljBxC,CqF1ljBE,gCAAsC,erF8ljBxC,CqF9ljBE,iBAAsC,erFkmjBxC,CqFlmjBE,+CAAsC,erF0mjBxC,CqF1mjBE,oBAAsC,erF8mjBxC,CqF9mjBE,oDAAsC,erFsnjBxC,CqFtnjBE,kBAAsC,erF0njBxC,CqF1njBE,gDAAsC,erFkojBxC,CqFlojBE,2DAAsC,erF0ojBxC,CqF1ojBE,wDAAsC,erFkpjBxC,CqFlpjBE,0CAAsC,erF0pjBxC,CqF1pjBE,6DAAsC,erFkqjBxC,CqFlqjBE,yBAAsC,erFsqjBxC,CqFtqjBE,8CAAsC,erF8qjBxC,CqF9qjBE,8DAAsC,erFsrjBxC,CqFtrjBE,gCAAsC,erF0rjBxC,CqF1rjBE,mBAAsC,erF8rjBxC,CqF9rjBE,gCAAsC,erFksjBxC,CqFlsjBE,iBAAsC,erFssjBxC,CqFtsjBE,uCAAsC,erF8sjBxC,CqF9sjBE,eAAsC,erFktjBxC,CqFltjBE,kBAAsC,erFstjBxC,CqFttjBE,gBAAsC,erF0tjBxC,CqF1tjBE,sDAAsC,erFkujBxC,CqFlujBE,kBAAsC,erFsujBxC,CqFtujBE,oBAAsC,erF0ujBxC,CqF1ujBE,iBAAsC,erF8ujBxC,CqF9ujBE,uBAAsC,erFkvjBxC,CqFlvjBE,2BAAsC,erFsvjBxC,CqFtvjBE,2CAAsC,erF8vjBxC,CqF9vjBE,iBAAsC,erFkwjBxC,CqFlwjBE,wBAAsC,erFswjBxC,CqFtwjBE,mBAAsC,erF0wjBxC,CqF1wjBE,kDAAsC,erFkxjBxC,CqFlxjBE,wEAAsC,erF8xjBxC,CqF9xjBE,mBAAsC,YrFkyjBxC,CqFlyjBE,oEAAsC,erF0yjBxC,CqF1yjBE,mBAAsC,erF8yjBxC,CqF9yjBE,aAAsC,WrFkzjBxC,CqFlzjBE,iBAAsC,erFszjBxC,CqFtzjBE,wBAAsC,erF0zjBxC,CqF1zjBE,oBAAsC,erF8zjBxC,CqF9zjBE,6BAAsC,erFk0jBxC,CqFl0jBE,qCAAsC,erFs0jBxC,CqFt0jBE,qBAAsC,erF00jBxC,CqF10jBE,eAAsC,erF80jBxC,CqF90jBE,kCAAsC,erFk1jBxC,CqFl1jBE,2CAAsC,erF01jBxC,CqF11jBE,2BAAsC,erF81jBxC,CqF91jBE,oBAAsC,erFk2jBxC,CqFl2jBE,mBAAsC,erFs2jBxC,CqFt2jBE,mCAAsC,erF82jBxC,CqF92jBE,mBAAsC,erFk3jBxC,CqFl3jBE,kBAAsC,erFs3jBxC,CqFt3jBE,uBAAsC,erF03jBxC,CqF13jBE,8CAAsC,erFk4jBxC,CqFl4jBE,6DAAsC,erF04jBxC,CqF14jBE,wBAAsC,erF84jBxC,CqF94jBE,mCAAsC,erFk5jBxC,CqFl5jBE,uFAAsC,erFk6jBxC,CqFl6jBE,iBAAsC,erFs6jBxC,CqFt6jBE,0CAAsC,erF06jBxC,CqF16jBE,qDAAsC,erFk7jBxC,CqFl7jBE,iDAAsC,erF07jBxC,CqF17jBE,mBAAsC,erF87jBxC,CqF97jBE,4BAAsC,erFk8jBxC,CqFl8jBE,uCAAsC,erF08jBxC,CqF18jBE,kBAAsC,erF88jBxC,CqF98jBE,sBAAsC,erFk9jBxC,CqFl9jBE,uCAAsC,erF09jBxC,CqF19jBE,uBAAsC,erF89jBxC,CqF99jBE,4BAAsC,erFk+jBxC,CqFl+jBE,+BAAsC,erF0+jBxC,CqF1+jBE,wBAAsC,erF8+jBxC,CqF9+jBE,mDAAsC,erFs/jBxC,CqFt/jBE,8EAAsC,erFkgkBxC,CqFlgkBE,kBAAsC,erFsgkBxC,CqFtgkBE,0CAAsC,erF8gkBxC,CqF9gkBE,aAAsC,WrFkhkBxC,CqFlhkBE,yCAAsC,erF0hkBxC,CqF1hkBE,sCAAsC,erFkikBxC,CqFlikBE,gBAAsC,erFsikBxC,CqFtikBE,qBAAsC,erF0ikBxC,CqF1ikBE,iBAAsC,erF8ikBxC,CqF9ikBE,uDAAsC,erFsjkBxC,CqFtjkBE,8BAAsC,erF0jkBxC,CqF1jkBE,sBAAsC,erF8jkBxC,CqF9jkBE,6BAAsC,erFkkkBxC,CqFlkkBE,6BAAsC,erFskkBxC,CqFtkkBE,oCAAsC,erF0kkBxC,CqF1kkBE,4CAAsC,erFklkBxC,CqFllkBE,sBAAsC,erFslkBxC,CqFtlkBE,qBAAsC,erF0lkBxC,CqF1lkBE,0BAAsC,erF8lkBxC,CqF9lkBE,8CAAsC,erFsmkBxC,CqFtmkBE,oBAAsC,erF0mkBxC,CqF1mkBE,eAAsC,erF8mkBxC,CqF9mkBE,gDAAsC,erFsnkBxC,CqFtnkBE,yDAAsC,erF8nkBxC,CqF9nkBE,yGAAsC,erF8okBxC,CqF9okBE,qBAAsC,erFkpkBxC,CqFlpkBE,qBAAsC,erFspkBxC,CqFtpkBE,yDAAsC,erF8pkBxC,CqF9pkBE,qBAAsC,erFkqkBxC,CqFlqkBE,mFAAsC,erF8qkBxC,CqF9qkBE,oBAAsC,erFkrkBxC,CqFlrkBE,yCAAsC,erF0rkBxC,CqF1rkBE,0BAAsC,erF8rkBxC,CqF9rkBE,qBAAsC,erFkskBxC,CqFlskBE,0BAAsC,erFsskBxC,CqFtskBE,8CAAsC,erF8skBxC,CqF9skBE,uBAAsC,erFktkBxC,CqFltkBE,mCAAsC,erFstkBxC,CqFttkBE,mBAAsC,erF0tkBxC,CqF1tkBE,uBAAsC,erF8tkBxC,CqF9tkBE,4DAAsC,erFsukBxC,CqFtukBE,qBAAsC,erF0ukBxC,CqF1ukBE,6DAAsC,erFsvkBxC,CqFtvkBE,wBAAsC,erF0vkBxC,CqF1vkBE,yEAAsC,erFswkBxC,CqFtwkBE,8CAAsC,erF8wkBxC,CqF9wkBE,2CAAsC,erFsxkBxC,CqFtxkBE,qDAAsC,erF8xkBxC,CqF9xkBE,+CAAsC,erFsykBxC,CqFtykBE,sCAAsC,erF0ykBxC,CqF1ykBE,sDAAsC,erFkzkBxC,CqFlzkBE,gBAAsC,erFszkBxC,CqFtzkBE,wBAAsC,erF0zkBxC,CqF1zkBE,iBAAsC,erF8zkBxC,CqF9zkBE,uCAAsC,erFs0kBxC,CqFt0kBE,0BAAsC,erF00kBxC,CqF10kBE,wEAAsC,erFs1kBxC,CqFt1kBE,iBAAsC,erF01kBxC,CqF11kBE,iBAAsC,erF81kBxC,CqF91kBE,4CAAsC,erFs2kBxC,CqFt2kBE,+CAAsC,erF82kBxC,CqF92kBE,wDAAsC,erFs3kBxC,CqFt3kBE,qBAAsC,erF03kBxC,CqF13kBE,sBAAsC,erF83kBxC,CqF93kBE,0CAAsC,erFs4kBxC,CqFt4kBE,wBAAsC,erF04kBxC,CqF14kBE,2BAAsC,erF84kBxC,CqF94kBE,wCAAsC,erFs5kBxC,CqFt5kBE,iBAAsC,erF05kBxC,CqF15kBE,gBAAsC,erF85kBxC,CqF95kBE,0DAAsC,erFs6kBxC,CqFt6kBE,0BAAsC,erF06kBxC,CqF16kBE,0CAAsC,erFk7kBxC,CqFl7kBE,sBAAsC,erFs7kBxC,CqFt7kBE,sBAAsC,erF07kBxC,CqF17kBE,mBAAsC,erF87kBxC,CqF97kBE,qBAAsC,erFk8kBxC,CqFl8kBE,wBAAsC,erFs8kBxC,CqFt8kBE,uBAAsC,erF08kBxC,CqF18kBE,kBAAsC,erF88kBxC,CqF98kBE,eAAsC,erFk9kBxC,CqFl9kBE,8CAAsC,erF09kBxC,CqF19kBE,qBAAsC,erF89kBxC,CqF99kBE,oCAAsC,erFk+kBxC,CqFl+kBE,gBAAsC,erFs+kBxC,CqFt+kBE,wBAAsC,erF0+kBxC,CqF1+kBE,6CAAsC,erFk/kBxC,CqFl/kBE,iBAAsC,erFs/kBxC,CqFt/kBE,4BAAsC,erF0/kBxC,CqF1/kBE,uBAAsC,YrF8/kBxC,CqF9/kBE,uBAAsC,erFkglBxC,CqFlglBE,iBAAsC,erFsglBxC,CqFtglBE,oEAAsC,erFkhlBxC,CqFlhlBE,wDAAsC,YrF8hlBxC,CqF9hlBE,aAAsC,WrFkilBxC,CqFlilBE,4DAAsC,erF0ilBxC,CqF1ilBE,2CAAsC,erFkjlBxC,CqFljlBE,oCAAsC,erFsjlBxC,CqFtjlBE,2GAAsC,erF0klBxC,CqF1klBE,oBAAsC,erF8klBxC,CqF9klBE,kBAAsC,erFkllBxC,CqFlllBE,aAAsC,WrFsllBxC,CqFtllBE,mBAAsC,erF0llBxC,CqF1llBE,kDAAsC,erFkmlBxC,CqFlmlBE,oBAAsC,erFsmlBxC,CqFtmlBE,2BAAsC,erF0mlBxC,CqF1mlBE,qDAAsC,erFknlBxC,CqFlnlBE,8CAAsC,erF0nlBxC,CqF1nlBE,0DAAsC,erFkolBxC,CqFlolBE,mBAAsC,erFsolBxC,CqFtolBE,sBAAsC,erF0olBxC,CqF1olBE,yCAAsC,erFkplBxC,CqFlplBE,kDAAsC,erF0plBxC,CqF1plBE,gCAAsC,erF8plBxC,CqF9plBE,+BAAsC,erFkqlBxC,CqFlqlBE,2CAAsC,erF0qlBxC,C6E3olBE,sFAPA,kBAAsB,CAEtB,cAAe,CANf,UAAW,CAEX,WAAY,CACZ,eAAgB,CAFhB,SAAU,CAHV,iBAAkB,CAOlB,kBAAmB,CANnB,S7EirlBF;;AsF3slBA;;;;EAAA,CAQA,YAEE,sDtF2slBF,CsFxslBA,WAIE,kBF8BwB,CEjCxB,iCACA,iBAAkB,CAClB,eAAgB,CAEhB,kJtF2slBF,CsFvslBA,eAEE,etFyslBF;;AuFjulBA;;;;EAAA,CAQA,YACE,gDACA,wDvFiulBF,CuF9tlBA,WAIE,kBH8BwB,CGjCxB,iCACA,iBAAkB,CAClB,eAAgB,CAEhB,sJvFiulBF,CuF7tlBA,iBAEE,evF+tlBF;;AwFvvlBA;;;;EAAA,CAQA,YACE,iDACA,yDxFuvlBF,CwFpvlBA,WAIE,kBJ8BwB,CIjCxB,mCACA,iBAAkB,CAClB,eAAgB,CAEhB,oJxFuvlBF,CwFnvlBA,gBAEE,exFqvlBF,CwFjvlBE,kBAAqC,exFqvlBvC,CwFrvlBE,iBAAqC,exFyvlBvC,CwFzvlBE,gBAAqC,exF6vlBvC,CwF7vlBE,mBAAqC,exFiwlBvC,CwFjwlBE,kBAAqC,exFqwlBvC,CwFrwlBE,oBAAqC,exFywlBvC,CwFzwlBE,+BAAqC,exF6wlBvC,CwF7wlBE,eAAqC,exFixlBvC,CwFjxlBE,kBAAqC,exFqxlBvC,CwFrxlBE,iBAAqC,exFyxlBvC,CwFzxlBE,sBAAqC,exF6xlBvC,CwF7xlBE,eAAqC,exFiylBvC,CwFjylBE,iBAAqC,exFqylBvC,CwFrylBE,sBAAqC,exFyylBvC,CwFzylBE,kBAAqC,exF6ylBvC,CwF7ylBE,gBAAqC,exFizlBvC,CwFjzlBE,qBAAqC,exFqzlBvC,CwFrzlBE,sBAAqC,exFyzlBvC,CwFzzlBE,uBAAqC,exF6zlBvC,CwF7zlBE,gBAAqC,exFi0lBvC,CwFj0lBE,mBAAqC,exFq0lBvC,CwFr0lBE,eAAqC,exFy0lBvC,CwFz0lBE,0CAAqC,exFi1lBvC,CwFj1lBE,qBAAqC,exFq1lBvC,CwFr1lBE,cAAqC,exFy1lBvC,CwFz1lBE,iBAAqC,exF61lBvC,CwF71lBE,gBAAqC,exFi2lBvC,CwFj2lBE,oBAAqC,exFq2lBvC,CwFr2lBE,mCAAqC,exFy2lBvC,CwFz2lBE,sBAAqC,exF62lBvC,CwF72lBE,mBAAqC,exFi3lBvC,CwFj3lBE,kBAAqC,exFq3lBvC,CwFr3lBE,eAAqC,exFy3lBvC,CwFz3lBE,yBAAqC,exF63lBvC,CwF73lBE,+BAAqC,exFi4lBvC,CwFj4lBE,iBAAqC,exFq4lBvC,CwFr4lBE,iBAAqC,exFy4lBvC,CwFz4lBE,sBAAqC,exF64lBvC,CwF74lBE,cAAqC,exFi5lBvC,CwFj5lBE,mBAAqC,exFq5lBvC,CwFr5lBE,qBAAqC,exFy5lBvC,CwFz5lBE,oBAAqC,exF65lBvC,CwF75lBE,kDAAqC,exFq6lBvC,CwFr6lBE,mBAAqC,exFy6lBvC,CwFz6lBE,kBAAqC,exF66lBvC,CwF76lBE,+BAAqC,exFi7lBvC,CwFj7lBE,mBAAqC,exFq7lBvC,CwFr7lBE,iBAAqC,exFy7lBvC,CwFz7lBE,mBAAqC,exF67lBvC,CwF77lBE,wDAAqC,exFq8lBvC,CwFr8lBE,sBAAqC,exFy8lBvC,CwFz8lBE,wBAAqC,exF68lBvC,CwF78lBE,4DAAqC,exFq9lBvC,CwFr9lBE,gBAAqC,exFy9lBvC,CwFz9lBE,mBAAqC,exF69lBvC,CwF79lBE,mBAAqC,exFi+lBvC,CwFj+lBE,sDAAqC,exFy+lBvC,CwFz+lBE,yBAAqC,exF6+lBvC,CwF7+lBE,sBAAqC,exFi/lBvC,CwFj/lBE,oBAAqC,exFq/lBvC,CwFr/lBE,sBAAqC,exFy/lBvC,CwFz/lBE,uBAAqC,exF6/lBvC,CwF7/lBE,oBAAqC,exFigmBvC,CwFjgmBE,sBAAqC,exFqgmBvC,CwFrgmBE,0BAAqC,exFygmBvC,CwFzgmBE,sBAAqC,exF6gmBvC,CwF7gmBE,4BAAqC,exFihmBvC,CwFjhmBE,qBAAqC,exFqhmBvC,CwFrhmBE,mBAAqC,exFyhmBvC,CwFzhmBE,qBAAqC,exF6hmBvC,CwF7hmBE,+BAAqC,exFiimBvC,CwFjimBE,kBAAqC,exFqimBvC,CwFrimBE,kBAAqC,exFyimBvC,CwFzimBE,kEAAqC,exFijmBvC,CwFjjmBE,qBAAqC,exFqjmBvC,CwFrjmBE,uBAAqC,exFyjmBvC,CwFzjmBE,yBAAqC,exF6jmBvC,CwF7jmBE,kBAAqC,exFikmBvC,CwFjkmBE,sBAAqC,exFqkmBvC,CwFrkmBE,oBAAqC,exFykmBvC,CwFzkmBE,uBAAqC,exF6kmBvC,CwF7kmBE,qCAAqC,exFilmBvC,CwFjlmBE,oBAAqC,exFqlmBvC,CwFrlmBE,4BAAqC,exFylmBvC,CwFzlmBE,+BAAqC,exF6lmBvC,CwF7lmBE,qBAAqC,exFimmBvC,CwFjmmBE,kBAAqC,exFqmmBvC,CwFrmmBE,wBAAqC,exFymmBvC,CwFzmmBE,mBAAqC,exF6mmBvC,CwF7mmBE,mBAAqC,exFinmBvC,CwFjnmBE,gBAAqC,exFqnmBvC,CwFrnmBE,eAAqC,exFynmBvC,CwFznmBE,mBAAqC,exF6nmBvC,CwF7nmBE,gCAAqC,exFiomBvC,CwFjomBE,kDAAqC,exFyomBvC,CwFzomBE,kBAAqC,exF6omBvC,CwF7omBE,kBAAqC,exFipmBvC,CwFjpmBE,eAAqC,exFqpmBvC,CwFrpmBE,sBAAqC,exFypmBvC,CwFzpmBE,oBAAqC,exF6pmBvC,CwF7pmBE,0BAAqC,exFiqmBvC,CwFjqmBE,sDAAqC,exFyqmBvC,CwFzqmBE,oBAAqC,exF6qmBvC,CwF7qmBE,gBAAqC,exFirmBvC,CwFjrmBE,eAAqC,exFqrmBvC,CwFrrmBE,iBAAqC,exFyrmBvC,CwFzrmBE,wBAAqC,exF6rmBvC,CwF7rmBE,kBAAqC,exFismBvC,CwFjsmBE,kBAAqC,exFqsmBvC,CwFrsmBE,kBAAqC,exFysmBvC,CwFzsmBE,oBAAqC,exF6smBvC,CwF7smBE,wBAAqC,exFitmBvC,CwFjtmBE,oBAAqC,exFqtmBvC,CwFrtmBE,oDAAqC,exF6tmBvC,CwF7tmBE,qBAAqC,exFiumBvC,CwFjumBE,qBAAqC,exFqumBvC,CwFrumBE,mBAAqC,exFyumBvC,CwFzumBE,iBAAqC,exF6umBvC,CwF7umBE,oBAAqC,exFivmBvC,CwFjvmBE,mBAAqC,exFqvmBvC,CwFrvmBE,wBAAqC,exFyvmBvC,CwFzvmBE,qBAAqC,exF6vmBvC,CwF7vmBE,yBAAqC,exFiwmBvC,CwFjwmBE,uBAAqC,exFqwmBvC,CwFrwmBE,kBAAqC,exFywmBvC,CwFzwmBE,qDAAqC,exFixmBvC,CwFjxmBE,gBAAqC,exFqxmBvC,CwFrxmBE,iBAAqC,exFyxmBvC,CwFzxmBE,qBAAqC,exF6xmBvC,CwF7xmBE,sBAAqC,exFiymBvC,CwFjymBE,oDAAqC,exFyymBvC,CwFzymBE,uBAAqC,exF6ymBvC,CwF7ymBE,sCAAqC,exFqzmBvC,CwFrzmBE,qBAAqC,exFyzmBvC,CwFzzmBE,6BAAqC,exF6zmBvC,CwF7zmBE,2BAAqC,exFi0mBvC,CwFj0mBE,iBAAqC,exFq0mBvC,CwFr0mBE,iBAAqC,exFy0mBvC,CwFz0mBE,kBAAqC,exF60mBvC,CwF70mBE,oBAAqC,exFi1mBvC,CwFj1mBE,gBAAqC,exFq1mBvC,CwFr1mBE,mBAAqC,exFy1mBvC,CwFz1mBE,kBAAqC,exF61mBvC,CwF71mBE,uBAAqC,exFi2mBvC,CwFj2mBE,6BAAqC,exFq2mBvC,CwFr2mBE,wBAAqC,exFy2mBvC,CwFz2mBE,iCAAqC,exF62mBvC,CwF72mBE,gBAAqC,exFi3mBvC,CwFj3mBE,mBAAqC,exFq3mBvC,CwFr3mBE,kBAAqC,exFy3mBvC,CwFz3mBE,mBAAqC,exF63mBvC,CwF73mBE,kBAAqC,exFi4mBvC,CwFj4mBE,yBAAqC,exFq4mBvC,CwFr4mBE,uBAAqC,exFy4mBvC,CwFz4mBE,sBAAqC,exF64mBvC,CwF74mBE,sBAAqC,exFi5mBvC,CwFj5mBE,oBAAqC,exFq5mBvC,CwFr5mBE,eAAqC,exFy5mBvC,CwFz5mBE,kBAAqC,exF65mBvC,CwF75mBE,2BAAqC,exFi6mBvC,CwFj6mBE,gBAAqC,exFq6mBvC,CwFr6mBE,kBAAqC,exFy6mBvC,CwFz6mBE,oBAAqC,exF66mBvC,CwF76mBE,gBAAqC,exFi7mBvC,CwFj7mBE,gDAAqC,exFy7mBvC,CwFz7mBE,iBAAqC,exF67mBvC,CwF77mBE,gDAAqC,exFq8mBvC,CwFr8mBE,sBAAqC,exFy8mBvC,CwFz8mBE,uFAAqC,exFq9mBvC,CwFr9mBE,oBAAqC,exFy9mBvC,CwFz9mBE,iBAAqC,exF69mBvC,CwF79mBE,gBAAqC,exFi+mBvC,CwFj+mBE,qBAAqC,exFq+mBvC,CwFr+mBE,mBAAqC,exFy+mBvC,CwFz+mBE,qBAAqC,exF6+mBvC,CwF7+mBE,kBAAqC,exFi/mBvC,CwFj/mBE,sBAAqC,exFq/mBvC,CwFr/mBE,kDAAqC,exF6/mBvC,CwF7/mBE,uBAAqC,exFignBvC,CwFjgnBE,iBAAqC,exFqgnBvC,CwFrgnBE,6BAAqC,exFygnBvC,CwFzgnBE,mBAAqC,exF6gnBvC,CwF7gnBE,gBAAqC,exFihnBvC,CwFjhnBE,0BAAqC,exFqhnBvC,CwFrhnBE,sBAAqC,exFyhnBvC,CwFzhnBE,wBAAqC,exF6hnBvC,CwF7hnBE,iBAAqC,exFiinBvC,CwFjinBE,mBAAqC,exFqinBvC,CwFrinBE,mBAAqC,exFyinBvC,CwFzinBE,yBAAqC,exF6inBvC,CwF7inBE,wBAAqC,exFijnBvC,CwFjjnBE,kBAAqC,exFqjnBvC,CwFrjnBE,kBAAqC,exFyjnBvC,CwFzjnBE,0BAAqC,exF6jnBvC,CwF7jnBE,kDAAqC,exFqknBvC,CwFrknBE,wBAAqC,exFyknBvC,CwFzknBE,sBAAqC,exF6knBvC,CwF7knBE,qBAAqC,exFilnBvC,CwFjlnBE,wBAAqC,exFqlnBvC,CwFrlnBE,mBAAqC,exFylnBvC,CwFzlnBE,kBAAqC,exF6lnBvC,CwF7lnBE,qBAAqC,exFimnBvC,CwFjmnBE,gEAAqC,exFymnBvC,CwFzmnBE,oBAAqC,exF6mnBvC,CwF7mnBE,gBAAqC,exFinnBvC,CwFjnnBE,qBAAqC,exFqnnBvC,CwFrnnBE,iBAAqC,exFynnBvC,CwFznnBE,oBAAqC,exF6nnBvC,CwF7nnBE,iBAAqC,exFionBvC,CwFjonBE,qBAAqC,exFqonBvC,CwFronBE,uBAAqC,exFyonBvC,CwFzonBE,qBAAqC,exF6onBvC,CwF7onBE,kCAAqC,exFipnBvC,CwFjpnBE,mBAAqC,exFqpnBvC,CwFrpnBE,kBAAqC,exFypnBvC,CwFzpnBE,iBAAqC,exF6pnBvC,CwF7pnBE,mBAAqC,exFiqnBvC,CwFjqnBE,mBAAqC,exFqqnBvC,CwFrqnBE,2BAAqC,exFyqnBvC,CwFzqnBE,kBAAqC,exF6qnBvC,CwF7qnBE,yBAAqC,exFirnBvC,CwFjrnBE,kBAAqC,exFqrnBvC,CwFrrnBE,iBAAqC,exFyrnBvC,CwFzrnBE,cAAqC,exF6rnBvC,CwF7rnBE,eAAqC,exFisnBvC,CwFjsnBE,wDAAqC,exFysnBvC,CwFzsnBE,gBAAqC,exF6snBvC,CwF7snBE,sBAAqC,exFitnBvC,CwFjtnBE,+BAAqC,exFqtnBvC,CwFrtnBE,uBAAqC,exFytnBvC,CwFztnBE,qBAAqC,exF6tnBvC,CwF7tnBE,gBAAqC,exFiunBvC,CwFjunBE,qBAAqC,exFqunBvC,CwFrunBE,oBAAqC,exFyunBvC,CwFzunBE,gBAAqC,exF6unBvC,CwF7unBE,4BAAqC,exFivnBvC,CwFjvnBE,kBAAqC,exFqvnBvC,CwFrvnBE,kBAAqC,exFyvnBvC,CwFzvnBE,iBAAqC,exF6vnBvC,CwF7vnBE,wBAAqC,exFiwnBvC,CwFjwnBE,iBAAqC,exFqwnBvC,CwFrwnBE,uBAAqC,exFywnBvC,CwFzwnBE,0BAAqC,exF6wnBvC,CwF7wnBE,yBAAqC,exFixnBvC,CwFjxnBE,qBAAqC,exFqxnBvC,CwFrxnBE,yBAAqC,exFyxnBvC,CwFzxnBE,sBAAqC,exF6xnBvC,CwF7xnBE,mBAAqC,exFiynBvC,CwFjynBE,oBAAqC,exFqynBvC,CwFrynBE,wBAAqC,exFyynBvC,CwFzynBE,kCAAqC,exF6ynBvC,CwF7ynBE,mBAAqC,exFiznBvC,CwFjznBE,mBAAqC,exFqznBvC,CwFrznBE,gBAAqC,exFyznBvC,CwFzznBE,kBAAqC,exF6znBvC,CwF7znBE,qBAAqC,exFi0nBvC,CwFj0nBE,yBAAqC,exFq0nBvC,CwFr0nBE,sBAAqC,exFy0nBvC,CwFz0nBE,4DAAqC,exFi1nBvC,CwFj1nBE,uBAAqC,exFq1nBvC,CwFr1nBE,uBAAqC,exFy1nBvC,CwFz1nBE,2BAAqC,exF61nBvC,CwF71nBE,eAAqC,exFi2nBvC,CwFj2nBE,yBAAqC,exFq2nBvC,CwFr2nBE,0BAAqC,exFy2nBvC,CwFz2nBE,qBAAqC,exF62nBvC,CwF72nBE,mBAAqC,exFi3nBvC,CwFj3nBE,sBAAqC,exFq3nBvC,CwFr3nBE,oBAAqC,exFy3nBvC,CwFz3nBE,kBAAqC,exF63nBvC,CwF73nBE,kBAAqC,exFi4nBvC,CwFj4nBE,8CAAqC,exFy4nBvC,CwFz4nBE,oBAAqC,exF64nBvC,CwF74nBE,mBAAqC,exFi5nBvC,CwFj5nBE,wBAAqC,exFq5nBvC,CwFr5nBE,gBAAqC,exFy5nBvC,CwFz5nBE,oBAAqC,exF65nBvC,CwF75nBE,mBAAqC,exFi6nBvC,CwFj6nBE,mBAAqC,exFq6nBvC,CwFr6nBE,yBAAqC,exFy6nBvC,CwFz6nBE,eAAqC,exF66nBvC,CwF76nBE,kBAAqC,exFi7nBvC,CwFj7nBE,kBAAqC,exFq7nBvC,CwFr7nBE,sBAAqC,exFy7nBvC,CwFz7nBE,mBAAqC,exF67nBvC,CwF77nBE,kBAAqC,exFi8nBvC,CwFj8nBE,iBAAqC,exFq8nBvC,CwFr8nBE,sBAAqC,exFy8nBvC,CwFz8nBE,gBAAqC,exF68nBvC,CwF78nBE,yBAAqC,exFi9nBvC,CwFj9nBE,sBAAqC,exFq9nBvC,CwFr9nBE,mBAAqC,exFy9nBvC,CwFz9nBE,kBAAqC,exF69nBvC,CwF79nBE,gBAAqC,exFi+nBvC,CwFj+nBE,8BAAqC,exFq+nBvC,CwFr+nBE,mBAAqC,exFy+nBvC,CwFz+nBE,uBAAqC,exF6+nBvC,CwF7+nBE,oBAAqC,exFi/nBvC,CwFj/nBE,kBAAqC,exFq/nBvC,CwFr/nBE,qBAAqC,exFy/nBvC,CwFz/nBE,yBAAqC,exF6/nBvC,CwF7/nBE,oBAAqC,exFigoBvC,CwFjgoBE,wCAAqC,exFygoBvC,CwFzgoBE,0BAAqC,exF6goBvC,CwF7goBE,qBAAqC,exFihoBvC,CwFjhoBE,0DAAqC,exFyhoBvC,CwFzhoBE,+BAAqC,exF6hoBvC,CwF7hoBE,kBAAqC,exFiioBvC,CwFjioBE,uBAAqC,exFqioBvC,CwFrioBE,qBAAqC,exFyioBvC,CwFzioBE,gBAAqC,exF6ioBvC,CwF7ioBE,qCAAqC,exFijoBvC,CwFjjoBE,uBAAqC,exFqjoBvC,CwFrjoBE,kBAAqC,exFyjoBvC,CwFzjoBE,sDAAqC,exFikoBvC,CwFjkoBE,kBAAqC,exFqkoBvC,CwFrkoBE,iBAAqC,exFykoBvC,CwFzkoBE,iBAAqC,exF6koBvC,CwF7koBE,oBAAqC,exFiloBvC,CwFjloBE,mBAAqC,exFqloBvC,CwFrloBE,qBAAqC,exFyloBvC,CwFzloBE,kBAAqC,exF6loBvC,CwF7loBE,mBAAqC,exFimoBvC,CwFjmoBE,iBAAqC,exFqmoBvC,CwFrmoBE,kDAAqC,exF6moBvC,CwF7moBE,iBAAqC,exFinoBvC,CwFjnoBE,oBAAqC,exFqnoBvC,CwFrnoBE,uBAAqC,exFynoBvC,CwFznoBE,iBAAqC,exF6noBvC,CwF7noBE,kCAAqC,exFiooBvC,CwFjooBE,yBAAqC,exFqooBvC,CwFrooBE,mBAAqC,exFyooBvC,CwFzooBE,qBAAqC,exF6ooBvC,CwF7ooBE,kBAAqC,exFipoBvC,CwFjpoBE,kBAAqC,exFqpoBvC,CwFrpoBE,oBAAqC,exFypoBvC,CwFzpoBE,oBAAqC,exF6poBvC,CwF7poBE,sBAAqC,exFiqoBvC,CwFjqoBE,iBAAqC,exFqqoBvC,CwFrqoBE,4BAAqC,exFyqoBvC,CwFzqoBE,uBAAqC,exF6qoBvC,CwF7qoBE,oBAAqC,exFiroBvC,CwFjroBE,sBAAqC,exFqroBvC,CwFrroBE,4BAAqC,exFyroBvC,CwFzroBE,wBAAqC,exF6roBvC,CwF7roBE,oBAAqC,exFisoBvC,CwFjsoBE,yBAAqC,exFqsoBvC,CwFrsoBE,sBAAqC,exFysoBvC,CwFzsoBE,uBAAqC,exF6soBvC,CwF7soBE,kBAAqC,exFitoBvC,CwFjtoBE,gBAAqC,exFqtoBvC,CwFrtoBE,wBAAqC,exFytoBvC,CwFztoBE,wBAAqC,exF6toBvC,CwF7toBE,uBAAqC,exFiuoBvC,CwFjuoBE,qBAAqC,exFquoBvC,CwFruoBE,gBAAqC,exFyuoBvC,CwFzuoBE,kBAAqC,exF6uoBvC,CwF7uoBE,wBAAqC,exFivoBvC,CwFjvoBE,gBAAqC,exFqvoBvC,CwFrvoBE,kBAAqC,exFyvoBvC,CwFzvoBE,qBAAqC,exF6voBvC,CwF7voBE,qBAAqC,exFiwoBvC,CwFjwoBE,kBAAqC,exFqwoBvC,CwFrwoBE,mBAAqC,exFywoBvC,CwFzwoBE,qBAAqC,exF6woBvC,CwF7woBE,0BAAqC,exFixoBvC,CwFjxoBE,qBAAqC,exFqxoBvC,CwFrxoBE,0BAAqC,exFyxoBvC,CwFzxoBE,yBAAqC,exF6xoBvC,CwF7xoBE,kBAAqC,exFiyoBvC,CwFjyoBE,kBAAqC,exFqyoBvC,CwFryoBE,iBAAqC,exFyyoBvC,CwFzyoBE,kBAAqC,exF6yoBvC,CwF7yoBE,8BAAqC,exFizoBvC,CwFjzoBE,gBAAqC,exFqzoBvC,CwFrzoBE,0CAAqC,exF6zoBvC,CwF7zoBE,4BAAqC,exFi0oBvC,CwFj0oBE,sBAAqC,exFq0oBvC,CwFr0oBE,0BAAqC,exFy0oBvC,CwFz0oBE,mBAAqC,exF60oBvC,CwF70oBE,eAAqC,exFi1oBvC,CwFj1oBE,uBAAqC,exFq1oBvC,CwFr1oBE,iBAAqC,exFy1oBvC,CwFz1oBE,wBAAqC,exF61oBvC,CwF71oBE,gBAAqC,exFi2oBvC,CwFj2oBE,mBAAqC,exFq2oBvC,CwFr2oBE,kBAAqC,exFy2oBvC,CwFz2oBE,8CAAqC,exFi3oBvC,CwFj3oBE,gCAAqC,exFq3oBvC,CwFr3oBE,gBAAqC,exFy3oBvC,CwFz3oBE,eAAqC,exF63oBvC,CwF73oBE,oDAAqC,exFq4oBvC,CwFr4oBE,kBAAqC,exFy4oBvC,CwFz4oBE,mBAAqC,exF64oBvC,CwF74oBE,iBAAqC,exFi5oBvC,CwFj5oBE,gBAAqC,exFq5oBvC,CwFr5oBE,sBAAqC,exFy5oBvC,CwFz5oBE,kBAAqC,exF65oBvC,CwF75oBE,yBAAqC,exFi6oBvC,CwFj6oBE,sBAAqC,exFq6oBvC,CwFr6oBE,kBAAqC,exFy6oBvC,CwFz6oBE,uBAAqC,exF66oBvC,CwF76oBE,4CAAqC,exFq7oBvC,CwFr7oBE,kDAAqC,exF67oBvC,CwF77oBE,kBAAqC,exFi8oBvC,CwFj8oBE,kCAAqC,exFq8oBvC,CwFr8oBE,sBAAqC,exFy8oBvC,CwFz8oBE,mBAAqC,exF68oBvC,CwF78oBE,iBAAqC,exFi9oBvC,CwFj9oBE,kBAAqC,exFq9oBvC,CwFr9oBE,0BAAqC,exFy9oBvC,CwFz9oBE,mBAAqC,exF69oBvC,CwF79oBE,qBAAqC,exFi+oBvC,CwFj+oBE,mBAAqC,exFq+oBvC,CwFr+oBE,kBAAqC,exFy+oBvC,CwFz+oBE,mBAAqC,exF6+oBvC,CwF7+oBE,gBAAqC,exFi/oBvC,CwFj/oBE,0BAAqC,exFq/oBvC,CwFr/oBE,oBAAqC,exFy/oBvC,CwFz/oBE,cAAqC,exF6/oBvC,CwF7/oBE,iBAAqC,exFigpBvC,CwFjgpBE,eAAqC,exFqgpBvC,CwFrgpBE,eAAqC,exFygpBvC,CwFzgpBE,kBAAqC,exF6gpBvC,CwF7gpBE,gCAAqC,exFihpBvC,CwFjhpBE,mBAAqC,exFqhpBvC,CwFrhpBE,gBAAqC,exFyhpBvC,CwFzhpBE,kBAAqC,exF6hpBvC,CwF7hpBE,eAAqC,exFiipBvC,CwFjipBE,kBAAqC,exFqipBvC,CwFripBE,mBAAqC,exFyipBvC,CwFzipBE,oBAAqC,exF6ipBvC,CwF7ipBE,2BAAqC,exFijpBvC,CwFjjpBE,kBAAqC,exFqjpBvC,CwFrjpBE,gBAAqC,exFyjpBvC,CwFzjpBE,mBAAqC,exF6jpBvC,CwF7jpBE,mBAAqC,exFikpBvC,CwFjkpBE,mBAAqC,exFqkpBvC,CwFrkpBE,qBAAqC,exFykpBvC,CwFzkpBE,kBAAqC,exF6kpBvC,CwF7kpBE,eAAqC,exFilpBvC,CwFjlpBE,kBAAqC,exFqlpBvC,CwFrlpBE,eAAqC,exFylpBvC,CwFzlpBE,oBAAqC,exF6lpBvC,CwF7lpBE,8BAAqC,exFimpBvC,CwFjmpBE,6BAAqC,exFqmpBvC,CwFrmpBE,mBAAqC,exFympBvC,CwFzmpBE,8CAAqC,exFinpBvC,CwFjnpBE,wBAAqC,exFqnpBvC,CwFrnpBE,kBAAqC,exFynpBvC,CwFznpBE,sDAAqC,exFiopBvC,CwFjopBE,mBAAqC,exFqopBvC,CwFropBE,uBAAqC,exFyopBvC,CwFzopBE,uCAAqC,exFippBvC,CwFjppBE,iBAAqC,exFqppBvC,CwFrppBE,eAAqC,exFyppBvC,CwFzppBE,kBAAqC,exF6ppBvC,CwF7ppBE,kBAAqC,exFiqpBvC,CwFjqpBE,iBAAqC,exFqqpBvC,CwFrqpBE,4BAAqC,exFyqpBvC,CwFzqpBE,uBAAqC,exF6qpBvC,CwF7qpBE,sCAAqC,exFqrpBvC,CwFrrpBE,kBAAqC,exFyrpBvC,CwFzrpBE,oBAAqC,exF6rpBvC,CwF7rpBE,qBAAqC,exFispBvC,CwFjspBE,mBAAqC,exFqspBvC,CwFrspBE,yBAAqC,exFyspBvC,CwFzspBE,kBAAqC,e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G6oxBJ,CmG3oxBI,uEACE,sBnG6oxBN,C+Ih5wBI,+DAGE,sBtIpTa,CsIkTb,8CtItSe,CsIuSf,sB/Im5wBN,C+I94wBE,qEACE,2BAA4B,CAC5B,4B/Ig5wBJ,C+Iv4wBE,aACE,iBAAkB,CAClB,gC/I84wBJ,C+I54wBI,mBhDjSF,iCAAkC,CA7BlC,yBAA0B,CAkBxB,6BAA8B,CAf9B,2CAvBuB,CAmCvB,iDAtB8B,CgDwU5B,6BAA8B,ChD1ThC,6B/F4sxBJ,C+I54wBM,2BACE,uD/I84wBR,C+I/4wBM,6BACE,yD/Ii5wBR,C+Il5wBM,2BACE,uD/Io5wBR,C+Ir5wBM,wBACE,oD/Iu5wBR,C+Ix5wBM,2BACE,uD/I05wBR,C+I35wBM,0BACE,sD/I65wBR,C+I95wBM,yBACE,qD/Ig6wBR,C+Ij6wBM,yBACE,qD/Im6wBR,C+Ip6wBM,wBACE,oD/Is6wBR,C+Iv6wBM,yBACE,qD/Iy6wBR,C+I16wBM,yBACE,qD/I46wBR,C+Ip6wBM,8EASE,mDACA,+CAPA,sBtI5VW,CsI0VX,+CACA,sB/I06wBR,C+I56wBM,kFASE,qDACA,iDAPA,sBtI5VW,CsI0VX,iDACA,sB/Ik7wBR,C+Ip7wBM,8EASE,mDACA,+CAPA,sBtI5VW,CsI0VX,+CACA,sB/I07wBR,C+I57wBM,wEASE,gDACA,4CAPA,sBtI5VW,CsI0VX,4CACA,sB/Ik8wBR,C+Ip8wBM,8EASE,mDACA,+CAPA,sBtI5VW,CsI0VX,+CACA,sB/I08wBR,C+I58wBM,4EASE,kDACA,8CAPA,sBtI5VW,CsI0VX,8CACA,sB/Ik9wBR,C+Ip9wBM,0EASE,iDACA,6CAPA,sBtI5VW,CsI0VX,6CACA,sB/I09wBR,C+I59wBM,0EASE,iDACA,6CAPA,sBtI5VW,CsI0VX,6CACA,sB/Ik+wBR,C+Ip+wBM,wEASE,gDACA,4CAPA,sBtI5VW,CsI0VX,4CACA,sB/I0+wBR,C+I5+wBM,0EASE,iDACA,6CAPA,sBtI5VW,CsI0VX,6CACA,sB/Ik/wBR,C+Ip/wBM,0EASE,iDACA,6CAPA,sBtI5VW,CsI0VX,6CACA,sB/I0/wBR,CgJj1xBI,yEACE,SAAU,CACV,ShJ21xBN,CgJx1xBI,mEACE,UhJ01xBN,CmGpzxBE,gEACE,qBnGszxBJ,CmGpzxBI,sFACE,sBnGszxBN,CgJr1xBM,gEACE,ehJu1xBR,CgJn1xBI,6DACE,ahJq1xBN,CgJ53xBI,wGACE,uBAAwB,CACxB,ehJ83xBN,CgJz3xBI,mFACE,wBAAyB,CACzB,ehJ23xBN,CgJ50xBI,4DAGE,gBhJq2xBN,CgJ50xBM,qFAUE,sBvIlFW,CuIyEX,UAAW,CAMX,WAAY,CAFZ,YAGA,8CvIpEa,CuIqEb,sBvIxEY,CuIqEZ,wBhJ+0xBR,CgJv0xBM,yGACE,2BAA4B,CAC5B,4BhJy0xBR,CgJj0xBI,2CACE,8ChJm0xBN,CgJh7xBI,iEACE,uBAAwB,CACxB,ehJk7xBN,CgJp6xBI,0DACE,SAAU,CACV,ShJs6xBN,CgJn6xBI,oDACE,UhJq6xBN,CmG/3xBE,iDACE,qBnGi4xBJ,CmG/3xBI,uEACE,sBnGi4xBN,CgJ90xBM,iDACE,ehJg1xBR,CgJ70xBM,yDACE,sBhJ+0xBR,CgJh8xBI,+DACE,wBAAyB,CACzB,ehJk8xBN,CgJ30xBM,wDACE,2BAA4B,CAC5B,4BhJ60xBR,CiJ98xBA,mDAME,ejJu9xBF,CiJr9xBE,+DACE,iBjJw9xBJ,CiJ/8xBM,2I9CHJ,oDAAqD,CADrD,4BnGy9xBF,CmGp9xBI,4lBAEE,yDnG49xBN,CmGv9xBI,6JACE,kDAAmD,CACnD,gDnG09xBN,CmGp9xBM,2LACE,wDnGu9xBR,CmGp9xBM,yLACE,yDnGu9xBR,CiJx+xBU,yKACE,oDjJ2+xBZ,CiJn+xBM,2K9CvBJ,2CAA4C,CAC5C,oBAAsB,CAFtB,oCAAqC,CAGrC,anG+/xBF,CiJp+xBM,gEACE,wCjJs+xBR,CiJ/9xBA,qBACE,kBjJk+xBF,CiJx9xBE,sDAEE,ajJ09xBJ,CiJv9xBE,qDAEE,ajJw9xBJ,CiJj9xBE,uDAEE,ajJm9xBJ,CiJh9xBE,sDAEE,ajJi9xBJ,CiJz8xBA,wBACE,cAAe,CACf,ejJ+8xBF,CiJ18xBE,4C9C7EA,oDAAqD,CADrD,4BnG6hyBF,CmGxhyBI,wMAEE,yDnG4hyBN,CmGvhyBI,qDACE,kDAAmD,CACnD,gDnGyhyBN,CmGnhyBM,oEACE,wDnGqhyBR,CmGlhyBM,mEACE,yDnGohyBR,CiJ39xBM,2DACE,oDjJ69xBR,CiJv9xBI,gN9C/FF,2CAA4C,CAC5C,oBAAsB,CAFtB,oCAAqC,CAGrC,anG4jyBF,CiJp9xBE,2BACE,YAAa,CACb,qBAAsB,CACtB,uBjJu9xBJ,CiJp9xBE,kDAEE,oBjJs9xBJ,CiJl9xBI,6BACE,iBjJo9xBN,CkJplyBA,uEACE,eAAgB,CAChB,SlJgmyBF,CmJlmyBI,uFACE,mCAAoC,CACpC,enJ6myBN,CmJ1myBI,yDACE,iCnJ4myBN,CmJxmyBE,+BAEE,eAAgB,CADhB,QnJ2myBJ,CmJxmyBI,kCACE,qBAAsB,CAGtB,gDAAiD,CADjD,aAAc,CADd,cnJ4myBN,CmJvmyBM,oCACE,enJymyBR,CmJtmyBM,0FAEE,gCAAiC,CACjC,enJwmyBR,CmJrmyBQ,4GAGE,iCAAkC,CAFlC,WAAY,CACZ,kBnJymyBV","sources":["webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_type.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/pydata-sphinx-theme.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_banner.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_root.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/vendor/_rfs.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_color-mode.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_reboot.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_variables.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_border-radius.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_lists.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/variables/_bootstrap.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_images.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_image.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_containers.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_container.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_breakpoints.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_grid.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_grid.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_tables.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_table-variants.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/forms/_labels.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/forms/_form-text.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/forms/_form-control.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_transition.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_gradients.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/forms/_form-select.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/forms/_form-check.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/forms/_form-range.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/forms/_floating-labels.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/forms/_input-group.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_forms.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_buttons.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_buttons.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_transitions.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_dropdown.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_caret.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_button-group.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_nav.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_navbar.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_card.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_accordion.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_breadcrumb.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_pagination.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_pagination.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_badge.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_alert.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_progress.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_list-group.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_close.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_toasts.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_modal.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_backdrop.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_tooltip.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_reset-text.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_popover.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_carousel.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_clearfix.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_spinners.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_offcanvas.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_placeholders.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/helpers/_color-bg.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/helpers/_colored-links.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/helpers/_focus-ring.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/helpers/_icon-link.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/helpers/_ratio.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/helpers/_position.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/helpers/_stacks.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/helpers/_visually-hidden.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_visually-hidden.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/helpers/_stretched-link.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/helpers/_text-truncation.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_text-truncate.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/helpers/_vr.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_utilities.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/utilities/_api.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/fontawesome.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/_core.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/_sizing.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/_mixins.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/_fixed-width.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/_list.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/_bordered-pulled.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/_animated.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/_rotated-flipped.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/_stacked.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/_variables.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/_icons.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/solid.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/regular.scss","webpack://pydata_sphinx_theme/./node_modules/@fortawesome/fontawesome-free/scss/brands.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/variables/_layout.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/variables/_fonts.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/variables/_icons.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/variables/_admonitions.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/variables/_versionmodified.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/base/_base.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/abstracts/_links.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_skip-link.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_container.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_announcement.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/abstracts/_mixins.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_article.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_footer.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_footer-article.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_footer-content.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_header.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_header-article.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_sidebar-primary.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_sidebar-secondary.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_sidebar-toggle.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_breadcrumbs.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_icon-links.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/header/_header-logo.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_navbar-links.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_page-toc.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_prev-next.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_search.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_searchbox.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_switcher-theme.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_switcher-version.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_toc-inpage.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_versionmodified.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_indices.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_admonitions.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/abstracts/_color.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_api.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_code.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_figures.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_footnotes.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_hacks.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_lists.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_quotes.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_spans.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_tables.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_toctree.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_math.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_ablog.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_bootstrap.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_copybutton.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_ethical-ads.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_execution.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_graphviz.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_pydata.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/variables/_color.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_sphinx_design.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_togglebutton.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_notebooks.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_leaflet.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/pages/_search.scss"],"sourcesContent":["//\n// Headings\n//\n.h1 {\n @extend h1;\n}\n\n.h2 {\n @extend h2;\n}\n\n.h3 {\n @extend h3;\n}\n\n.h4 {\n @extend h4;\n}\n\n.h5 {\n @extend h5;\n}\n\n.h6 {\n @extend h6;\n}\n\n\n.lead {\n @include font-size($lead-font-size);\n font-weight: $lead-font-weight;\n}\n\n// Type display classes\n@each $display, $font-size in $display-font-sizes {\n .display-#{$display} {\n @include font-size($font-size);\n font-family: $display-font-family;\n font-style: $display-font-style;\n font-weight: $display-font-weight;\n line-height: $display-line-height;\n }\n}\n\n//\n// Emphasis\n//\n.small {\n @extend small;\n}\n\n.mark {\n @extend mark;\n}\n\n//\n// Lists\n//\n\n.list-unstyled {\n @include list-unstyled();\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n @include list-unstyled();\n}\n.list-inline-item {\n display: inline-block;\n\n &:not(:last-child) {\n margin-right: $list-inline-padding;\n }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n @include font-size($initialism-font-size);\n text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n margin-bottom: $blockquote-margin-y;\n @include font-size($blockquote-font-size);\n\n > :last-child {\n margin-bottom: 0;\n }\n}\n\n.blockquote-footer {\n margin-top: -$blockquote-margin-y;\n margin-bottom: $blockquote-margin-y;\n @include font-size($blockquote-footer-font-size);\n color: $blockquote-footer-color;\n\n &::before {\n content: \"\\2014\\00A0\"; // em dash, nbsp\n }\n}\n","@charset \"UTF-8\";\n/*!\n * Bootstrap v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text-emphasis: #052c65;\n --bs-secondary-text-emphasis: #2b2f32;\n --bs-success-text-emphasis: #0a3622;\n --bs-info-text-emphasis: #055160;\n --bs-warning-text-emphasis: #664d03;\n --bs-danger-text-emphasis: #58151c;\n --bs-light-text-emphasis: #495057;\n --bs-dark-text-emphasis: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #e2e3e5;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #c4c8cb;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-heading-color: inherit;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-color: #212529;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-xxl: 2rem;\n --bs-border-radius-2xl: var(--bs-border-radius-xxl);\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n --bs-focus-ring-width: 0.1875rem;\n --bs-focus-ring-opacity: 1;\n --bs-focus-ring-color: var(--pst-color-accent);\n --bs-form-valid-color: #198754;\n --bs-form-valid-border-color: #198754;\n --bs-form-invalid-color: #dc3545;\n --bs-form-invalid-border-color: #dc3545;\n}\n\n[data-bs-theme=dark] {\n color-scheme: dark;\n --bs-body-color: #dee2e6;\n --bs-body-color-rgb: 222, 226, 230;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #fff;\n --bs-emphasis-color-rgb: 255, 255, 255;\n --bs-secondary-color: rgba(222, 226, 230, 0.75);\n --bs-secondary-color-rgb: 222, 226, 230;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(222, 226, 230, 0.5);\n --bs-tertiary-color-rgb: 222, 226, 230;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-primary-text-emphasis: #6ea8fe;\n --bs-secondary-text-emphasis: #a7acb1;\n --bs-success-text-emphasis: #75b798;\n --bs-info-text-emphasis: #6edff6;\n --bs-warning-text-emphasis: #ffda6a;\n --bs-danger-text-emphasis: #ea868f;\n --bs-light-text-emphasis: #f8f9fa;\n --bs-dark-text-emphasis: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #161719;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #41464b;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #087990;\n --bs-warning-border-subtle: #997404;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: inherit;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #8bb9fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 139, 185, 254;\n --bs-code-color: #e685b5;\n --bs-highlight-color: #dee2e6;\n --bs-highlight-bg: #664d03;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n --bs-form-valid-color: #75b798;\n --bs-form-valid-border-color: #75b798;\n --bs-form-invalid-color: #ea868f;\n --bs-form-invalid-border-color: #ea868f;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n margin: 0;\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n margin: 1rem 0;\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: 0.25;\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n color: var(--bs-heading-color);\n}\n\nh1, .h1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n h1, .h1 {\n font-size: 2.5rem;\n }\n}\n\nh2, .h2 {\n font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n h2, .h2 {\n font-size: 2rem;\n }\n}\n\nh3, .h3 {\n font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n h3, .h3 {\n font-size: 1.75rem;\n }\n}\n\nh4, .h4 {\n font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n h4, .h4 {\n font-size: 1.5rem;\n }\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n text-decoration: underline dotted;\n cursor: help;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall, .small {\n font-size: 0.875em;\n}\n\nmark, .mark {\n padding: 0.1875em;\n color: var(--bs-highlight-color);\n background-color: var(--bs-highlight-bg);\n}\n\nsub,\nsup {\n position: relative;\n font-size: 0.75em;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n font-size: 0.875em;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n font-size: 0.875em;\n color: var(--bs-code-color);\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.1875rem 0.375rem;\n font-size: 0.875em;\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: 0.25rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-secondary-color);\n text-align: left;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=button] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n float: left;\n width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n font-size: calc(1.275rem + 0.3vw);\n line-height: inherit;\n}\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\nlegend + * {\n clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=search] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: calc(1.625rem + 4.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-1 {\n font-size: 5rem;\n }\n}\n\n.display-2 {\n font-size: calc(1.575rem + 3.9vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-2 {\n font-size: 4.5rem;\n }\n}\n\n.display-3 {\n font-size: calc(1.525rem + 3.3vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-3 {\n font-size: 4rem;\n }\n}\n\n.display-4 {\n font-size: calc(1.475rem + 2.7vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-4 {\n font-size: 3.5rem;\n }\n}\n\n.display-5 {\n font-size: calc(1.425rem + 2.1vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-5 {\n font-size: 3rem;\n }\n}\n\n.display-6 {\n font-size: calc(1.375rem + 1.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-6 {\n font-size: 2.5rem;\n }\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 0.875em;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n.blockquote > :last-child {\n margin-bottom: 0;\n}\n\n.blockquote-footer {\n margin-top: -1rem;\n margin-bottom: 1rem;\n font-size: 0.875em;\n color: #6c757d;\n}\n.blockquote-footer::before {\n content: \"— \";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: var(--bs-body-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 0.875em;\n color: var(--bs-secondary-color);\n}\n\n.container,\n.container-fluid,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 540px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 720px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 960px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1400px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 540px;\n --bs-breakpoint-md: 720px;\n --bs-breakpoint-lg: 960px;\n --bs-breakpoint-xl: 1200px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 540px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 720px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 960px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.table {\n --bs-table-color-type: initial;\n --bs-table-bg-type: initial;\n --bs-table-color-state: initial;\n --bs-table-bg-state: initial;\n --bs-table-color: var(--bs-emphasis-color);\n --bs-table-bg: var(--bs-body-bg);\n --bs-table-border-color: var(--bs-border-color);\n --bs-table-accent-bg: transparent;\n --bs-table-striped-color: var(--bs-emphasis-color);\n --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05);\n --bs-table-active-color: var(--bs-emphasis-color);\n --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1);\n --bs-table-hover-color: var(--bs-emphasis-color);\n --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075);\n width: 100%;\n margin-bottom: 1rem;\n vertical-align: top;\n border-color: var(--bs-table-border-color);\n}\n.table > :not(caption) > * > * {\n padding: 0.5rem 0.5rem;\n color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));\n background-color: var(--bs-table-bg);\n border-bottom-width: var(--bs-border-width);\n box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));\n}\n.table > tbody {\n vertical-align: inherit;\n}\n.table > thead {\n vertical-align: bottom;\n}\n\n.table-group-divider {\n border-top: calc(var(--bs-border-width) * 2) solid currentcolor;\n}\n\n.caption-top {\n caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n padding: 0.25rem 0.25rem;\n}\n\n.table-bordered > :not(caption) > * {\n border-width: var(--bs-border-width) 0;\n}\n.table-bordered > :not(caption) > * > * {\n border-width: 0 var(--bs-border-width);\n}\n\n.table-borderless > :not(caption) > * > * {\n border-bottom-width: 0;\n}\n.table-borderless > :not(:first-child) {\n border-top-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) > * {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-striped-columns > :not(caption) > tr > :nth-child(even) {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-active {\n --bs-table-color-state: var(--bs-table-active-color);\n --bs-table-bg-state: var(--bs-table-active-bg);\n}\n\n.table-hover > tbody > tr:hover > * {\n --bs-table-color-state: var(--bs-table-hover-color);\n --bs-table-bg-state: var(--bs-table-hover-bg);\n}\n\n.table-primary {\n --bs-table-color: #000;\n --bs-table-bg: #cfe2ff;\n --bs-table-border-color: #a6b5cc;\n --bs-table-striped-bg: #c5d7f2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bacbe6;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfd1ec;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-secondary {\n --bs-table-color: #000;\n --bs-table-bg: #e2e3e5;\n --bs-table-border-color: #b5b6b7;\n --bs-table-striped-bg: #d7d8da;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #cbccce;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #d1d2d4;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-success {\n --bs-table-color: #000;\n --bs-table-bg: #d1e7dd;\n --bs-table-border-color: #a7b9b1;\n --bs-table-striped-bg: #c7dbd2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bcd0c7;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #c1d6cc;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-info {\n --bs-table-color: #000;\n --bs-table-bg: #cff4fc;\n --bs-table-border-color: #a6c3ca;\n --bs-table-striped-bg: #c5e8ef;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #badce3;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfe2e9;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-warning {\n --bs-table-color: #000;\n --bs-table-bg: #fff3cd;\n --bs-table-border-color: #ccc2a4;\n --bs-table-striped-bg: #f2e7c3;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #e6dbb9;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #ece1be;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-danger {\n --bs-table-color: #000;\n --bs-table-bg: #f8d7da;\n --bs-table-border-color: #c6acae;\n --bs-table-striped-bg: #eccccf;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfc2c4;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5c7ca;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-light {\n --bs-table-color: #000;\n --bs-table-bg: #f8f9fa;\n --bs-table-border-color: #c6c7c8;\n --bs-table-striped-bg: #ecedee;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfe0e1;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5e6e7;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-dark {\n --bs-table-color: #fff;\n --bs-table-bg: #212529;\n --bs-table-border-color: #4d5154;\n --bs-table-striped-bg: #2c3034;\n --bs-table-striped-color: #fff;\n --bs-table-active-bg: #373b3e;\n --bs-table-active-color: #fff;\n --bs-table-hover-bg: #323539;\n --bs-table-hover-color: #fff;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-responsive {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n@media (max-width: 539.98px) {\n .table-responsive-sm {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 719.98px) {\n .table-responsive-md {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 959.98px) {\n .table-responsive-lg {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n.form-label {\n margin-bottom: 0.5rem;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + var(--bs-border-width));\n padding-bottom: calc(0.375rem + var(--bs-border-width));\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + var(--bs-border-width));\n padding-bottom: calc(0.5rem + var(--bs-border-width));\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + var(--bs-border-width));\n padding-bottom: calc(0.25rem + var(--bs-border-width));\n font-size: 0.875rem;\n}\n\n.form-text {\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-secondary-color);\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n appearance: none;\n background-color: var(--bs-body-bg);\n background-clip: padding-box;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n.form-control[type=file] {\n overflow: hidden;\n}\n.form-control[type=file]:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n.form-control:focus {\n color: var(--bs-body-color);\n background-color: var(--bs-body-bg);\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.1875rem var(--pst-color-accent);\n}\n.form-control::-webkit-date-and-time-value {\n min-width: 85px;\n height: 1.5em;\n margin: 0;\n}\n.form-control::-webkit-datetime-edit {\n display: block;\n padding: 0;\n}\n.form-control::placeholder {\n color: var(--bs-secondary-color);\n opacity: 1;\n}\n.form-control:disabled {\n background-color: var(--bs-secondary-bg);\n opacity: 1;\n}\n.form-control::file-selector-button {\n padding: 0.375rem 0.75rem;\n margin: -0.375rem -0.75rem;\n margin-inline-end: 0.75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control::file-selector-button {\n transition: none;\n }\n}\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n background-color: var(--bs-secondary-bg);\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: 0.375rem 0;\n margin-bottom: 0;\n line-height: 1.5;\n color: var(--bs-body-color);\n background-color: transparent;\n border: solid transparent;\n border-width: var(--bs-border-width) 0;\n}\n.form-control-plaintext:focus {\n outline: 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n.form-control-sm::file-selector-button {\n padding: 0.25rem 0.5rem;\n margin: -0.25rem -0.5rem;\n margin-inline-end: 0.5rem;\n}\n\n.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n.form-control-lg::file-selector-button {\n padding: 0.5rem 1rem;\n margin: -0.5rem -1rem;\n margin-inline-end: 1rem;\n}\n\ntextarea.form-control {\n min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));\n}\ntextarea.form-control-sm {\n min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n}\ntextarea.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-control-color {\n width: 3rem;\n height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));\n padding: 0.375rem;\n}\n.form-control-color:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n.form-control-color::-moz-color-swatch {\n border: 0 !important;\n border-radius: var(--bs-border-radius);\n}\n.form-control-color::-webkit-color-swatch {\n border: 0 !important;\n border-radius: var(--bs-border-radius);\n}\n.form-control-color.form-control-sm {\n height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n}\n.form-control-color.form-control-lg {\n height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n display: block;\n width: 100%;\n padding: 0.375rem 2.25rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n appearance: none;\n background-color: var(--bs-body-bg);\n background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);\n background-repeat: no-repeat;\n background-position: right 0.75rem center;\n background-size: 16px 12px;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-select {\n transition: none;\n }\n}\n.form-select:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.1875rem var(--pst-color-accent);\n}\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n padding-right: 0.75rem;\n background-image: none;\n}\n.form-select:disabled {\n background-color: var(--bs-secondary-bg);\n}\n.form-select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 var(--bs-body-color);\n}\n\n.form-select-sm {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n\n.form-select-lg {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n\n[data-bs-theme=dark] .form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n}\n\n.form-check {\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5em;\n margin-bottom: 0.125rem;\n}\n.form-check .form-check-input {\n float: left;\n margin-left: -1.5em;\n}\n\n.form-check-reverse {\n padding-right: 1.5em;\n padding-left: 0;\n text-align: right;\n}\n.form-check-reverse .form-check-input {\n float: right;\n margin-right: -1.5em;\n margin-left: 0;\n}\n\n.form-check-input {\n --bs-form-check-bg: var(--bs-body-bg);\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n margin-top: 0.25em;\n vertical-align: top;\n appearance: none;\n background-color: var(--bs-form-check-bg);\n background-image: var(--bs-form-check-bg-image);\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n border: var(--bs-border-width) solid var(--bs-border-color);\n print-color-adjust: exact;\n}\n.form-check-input[type=checkbox] {\n border-radius: 0.25em;\n}\n.form-check-input[type=radio] {\n border-radius: 50%;\n}\n.form-check-input:active {\n filter: brightness(90%);\n}\n.form-check-input:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.1875rem var(--pst-color-accent);\n}\n.form-check-input:checked {\n background-color: #0d6efd;\n border-color: #0d6efd;\n}\n.form-check-input:checked[type=checkbox] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e\");\n}\n.form-check-input:checked[type=radio] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-check-input[type=checkbox]:indeterminate {\n background-color: #0d6efd;\n border-color: #0d6efd;\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n}\n.form-check-input:disabled {\n pointer-events: none;\n filter: none;\n opacity: 0.5;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n cursor: default;\n opacity: 0.5;\n}\n\n.form-switch {\n padding-left: 2.5em;\n}\n.form-switch .form-check-input {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n width: 2em;\n margin-left: -2.5em;\n background-image: var(--bs-form-switch-bg);\n background-position: left center;\n border-radius: 2em;\n transition: background-position 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-switch .form-check-input {\n transition: none;\n }\n}\n.form-switch .form-check-input:focus {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n.form-switch .form-check-input:checked {\n background-position: right center;\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-switch.form-check-reverse {\n padding-right: 2.5em;\n padding-left: 0;\n}\n.form-switch.form-check-reverse .form-check-input {\n margin-right: -2.5em;\n margin-left: 0;\n}\n\n.form-check-inline {\n display: inline-block;\n margin-right: 1rem;\n}\n\n.btn-check {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\n pointer-events: none;\n filter: none;\n opacity: 0.65;\n}\n\n[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e\");\n}\n\n.form-range {\n width: 100%;\n height: 1.375rem;\n padding: 0;\n appearance: none;\n background-color: transparent;\n}\n.form-range:focus {\n outline: 0;\n}\n.form-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.1875rem var(--pst-color-accent);\n}\n.form-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.1875rem var(--pst-color-accent);\n}\n.form-range::-moz-focus-outer {\n border: 0;\n}\n.form-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-range::-webkit-slider-thumb {\n transition: none;\n }\n}\n.form-range::-webkit-slider-thumb:active {\n background-color: #b6d4fe;\n}\n.form-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: transparent;\n border-radius: 1rem;\n}\n.form-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-range::-moz-range-thumb {\n transition: none;\n }\n}\n.form-range::-moz-range-thumb:active {\n background-color: #b6d4fe;\n}\n.form-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: transparent;\n border-radius: 1rem;\n}\n.form-range:disabled {\n pointer-events: none;\n}\n.form-range:disabled::-webkit-slider-thumb {\n background-color: var(--bs-secondary-color);\n}\n.form-range:disabled::-moz-range-thumb {\n background-color: var(--bs-secondary-color);\n}\n\n.form-floating {\n position: relative;\n}\n.form-floating > .form-control,\n.form-floating > .form-control-plaintext,\n.form-floating > .form-select {\n height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n min-height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n line-height: 1.25;\n}\n.form-floating > label {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n height: 100%;\n padding: 1rem 0.75rem;\n overflow: hidden;\n text-align: start;\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n border: var(--bs-border-width) solid transparent;\n transform-origin: 0 0;\n transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-floating > label {\n transition: none;\n }\n}\n.form-floating > .form-control,\n.form-floating > .form-control-plaintext {\n padding: 1rem 0.75rem;\n}\n.form-floating > .form-control::placeholder,\n.form-floating > .form-control-plaintext::placeholder {\n color: transparent;\n}\n.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),\n.form-floating > .form-control-plaintext:focus,\n.form-floating > .form-control-plaintext:not(:placeholder-shown) {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:-webkit-autofill,\n.form-floating > .form-control-plaintext:-webkit-autofill {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-select {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:focus ~ label,\n.form-floating > .form-control:not(:placeholder-shown) ~ label,\n.form-floating > .form-control-plaintext ~ label,\n.form-floating > .form-select ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control:focus ~ label::after,\n.form-floating > .form-control:not(:placeholder-shown) ~ label::after,\n.form-floating > .form-control-plaintext ~ label::after,\n.form-floating > .form-select ~ label::after {\n position: absolute;\n inset: 1rem 0.375rem;\n z-index: -1;\n height: 1.5em;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n}\n.form-floating > .form-control:-webkit-autofill ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control-plaintext ~ label {\n border-width: var(--bs-border-width) 0;\n}\n.form-floating > :disabled ~ label,\n.form-floating > .form-control:disabled ~ label {\n color: #6c757d;\n}\n.form-floating > :disabled ~ label::after,\n.form-floating > .form-control:disabled ~ label::after {\n background-color: var(--bs-secondary-bg);\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-select,\n.input-group > .form-floating {\n position: relative;\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n}\n.input-group > .form-control:focus,\n.input-group > .form-select:focus,\n.input-group > .form-floating:focus-within {\n z-index: 5;\n}\n.input-group .btn {\n position: relative;\n z-index: 2;\n}\n.input-group .btn:focus {\n z-index: 5;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-tertiary-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n padding-right: 3rem;\n}\n\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3),\n.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,\n.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4),\n.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,\n.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n margin-left: calc(var(--bs-border-width) * -1);\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group > .form-floating:not(:first-child) > .form-control,\n.input-group > .form-floating:not(:first-child) > .form-select {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-form-valid-color);\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n color: #fff;\n background-color: var(--bs-success);\n border-radius: var(--bs-border-radius);\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: var(--bs-form-valid-border-color);\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 0.1875rem rgba(var(--bs-success-rgb), 1);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:valid, .form-select.is-valid {\n border-color: var(--bs-form-valid-border-color);\n}\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n padding-right: 4.125rem;\n background-position: right 0.75rem center, center right 2.25rem;\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 0.1875rem rgba(var(--bs-success-rgb), 1);\n}\n\n.was-validated .form-control-color:valid, .form-control-color.is-valid {\n width: calc(3rem + calc(1.5em + 0.75rem));\n}\n\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\n border-color: var(--bs-form-valid-border-color);\n}\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n background-color: var(--bs-form-valid-color);\n}\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\n box-shadow: 0 0 0 0.1875rem rgba(var(--bs-success-rgb), 1);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: var(--bs-form-valid-color);\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n margin-left: 0.5em;\n}\n\n.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,\n.was-validated .input-group > .form-select:not(:focus):valid,\n.input-group > .form-select:not(:focus).is-valid,\n.was-validated .input-group > .form-floating:not(:focus-within):valid,\n.input-group > .form-floating:not(:focus-within).is-valid {\n z-index: 3;\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-form-invalid-color);\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n color: #fff;\n background-color: var(--bs-danger);\n border-radius: var(--bs-border-radius);\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 0.1875rem rgba(var(--bs-danger-rgb), 1);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:invalid, .form-select.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n padding-right: 4.125rem;\n background-position: right 0.75rem center, center right 2.25rem;\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 0.1875rem rgba(var(--bs-danger-rgb), 1);\n}\n\n.was-validated .form-control-color:invalid, .form-control-color.is-invalid {\n width: calc(3rem + calc(1.5em + 0.75rem));\n}\n\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n background-color: var(--bs-form-invalid-color);\n}\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\n box-shadow: 0 0 0 0.1875rem rgba(var(--bs-danger-rgb), 1);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: var(--bs-form-invalid-color);\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n margin-left: 0.5em;\n}\n\n.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,\n.was-validated .input-group > .form-select:not(:focus):invalid,\n.input-group > .form-select:not(:focus).is-invalid,\n.was-validated .input-group > .form-floating:not(:focus-within):invalid,\n.input-group > .form-floating:not(:focus-within).is-invalid {\n z-index: 4;\n}\n\n.btn {\n --bs-btn-padding-x: 0.75rem;\n --bs-btn-padding-y: 0.375rem;\n --bs-btn-font-family: ;\n --bs-btn-font-size: 1rem;\n --bs-btn-font-weight: 400;\n --bs-btn-line-height: 1.5;\n --bs-btn-color: var(--bs-body-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-width: var(--bs-border-width);\n --bs-btn-border-color: transparent;\n --bs-btn-border-radius: var(--bs-border-radius);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n --bs-btn-disabled-opacity: 0.65;\n --bs-btn-focus-box-shadow: 0 0 0 0.1875rem rgba(var(--bs-btn-focus-shadow-rgb), .5);\n display: inline-block;\n padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);\n font-family: var(--bs-btn-font-family);\n font-size: var(--bs-btn-font-size);\n font-weight: var(--bs-btn-font-weight);\n line-height: var(--bs-btn-line-height);\n color: var(--bs-btn-color);\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n user-select: none;\n border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);\n border-radius: var(--bs-btn-border-radius);\n background-color: var(--bs-btn-bg);\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n.btn:hover {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n}\n.btn-check + .btn:hover {\n color: var(--bs-btn-color);\n background-color: var(--bs-btn-bg);\n border-color: var(--bs-btn-border-color);\n}\n.btn:focus-visible {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:focus-visible + .btn {\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show {\n color: var(--bs-btn-active-color);\n background-color: var(--bs-btn-active-bg);\n border-color: var(--bs-btn-active-border-color);\n}\n.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible {\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:checked:focus-visible + .btn {\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\n color: var(--bs-btn-disabled-color);\n pointer-events: none;\n background-color: var(--bs-btn-disabled-bg);\n border-color: var(--bs-btn-disabled-border-color);\n opacity: var(--bs-btn-disabled-opacity);\n}\n\n.btn-primary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0b5ed7;\n --bs-btn-hover-border-color: #0a58ca;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0a58ca;\n --bs-btn-active-border-color: #0a53be;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #0d6efd;\n --bs-btn-disabled-border-color: #0d6efd;\n}\n\n.btn-secondary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #5c636a;\n --bs-btn-hover-border-color: #565e64;\n --bs-btn-focus-shadow-rgb: 130, 138, 145;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #565e64;\n --bs-btn-active-border-color: #51585e;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #6c757d;\n --bs-btn-disabled-border-color: #6c757d;\n}\n\n.btn-success {\n --bs-btn-color: #fff;\n --bs-btn-bg: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #157347;\n --bs-btn-hover-border-color: #146c43;\n --bs-btn-focus-shadow-rgb: 60, 153, 110;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #146c43;\n --bs-btn-active-border-color: #13653f;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #198754;\n --bs-btn-disabled-border-color: #198754;\n}\n\n.btn-info {\n --bs-btn-color: #000;\n --bs-btn-bg: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #31d2f2;\n --bs-btn-hover-border-color: #25cff2;\n --bs-btn-focus-shadow-rgb: 11, 172, 204;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #3dd5f3;\n --bs-btn-active-border-color: #25cff2;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #0dcaf0;\n --bs-btn-disabled-border-color: #0dcaf0;\n}\n\n.btn-warning {\n --bs-btn-color: #000;\n --bs-btn-bg: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffca2c;\n --bs-btn-hover-border-color: #ffc720;\n --bs-btn-focus-shadow-rgb: 217, 164, 6;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffcd39;\n --bs-btn-active-border-color: #ffc720;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #ffc107;\n --bs-btn-disabled-border-color: #ffc107;\n}\n\n.btn-danger {\n --bs-btn-color: #fff;\n --bs-btn-bg: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #bb2d3b;\n --bs-btn-hover-border-color: #b02a37;\n --bs-btn-focus-shadow-rgb: 225, 83, 97;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #b02a37;\n --bs-btn-active-border-color: #a52834;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #dc3545;\n --bs-btn-disabled-border-color: #dc3545;\n}\n\n.btn-light {\n --bs-btn-color: #000;\n --bs-btn-bg: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #d3d4d5;\n --bs-btn-hover-border-color: #c6c7c8;\n --bs-btn-focus-shadow-rgb: 211, 212, 213;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #c6c7c8;\n --bs-btn-active-border-color: #babbbc;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #f8f9fa;\n --bs-btn-disabled-border-color: #f8f9fa;\n}\n\n.btn-dark {\n --bs-btn-color: #fff;\n --bs-btn-bg: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #424649;\n --bs-btn-hover-border-color: #373b3e;\n --bs-btn-focus-shadow-rgb: 66, 70, 73;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #4d5154;\n --bs-btn-active-border-color: #373b3e;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #212529;\n --bs-btn-disabled-border-color: #212529;\n}\n\n.btn-outline-primary {\n --bs-btn-color: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0d6efd;\n --bs-btn-hover-border-color: #0d6efd;\n --bs-btn-focus-shadow-rgb: 13, 110, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0d6efd;\n --bs-btn-active-border-color: #0d6efd;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #0d6efd;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0d6efd;\n --bs-gradient: none;\n}\n\n.btn-outline-secondary {\n --bs-btn-color: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #6c757d;\n --bs-btn-hover-border-color: #6c757d;\n --bs-btn-focus-shadow-rgb: 108, 117, 125;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #6c757d;\n --bs-btn-active-border-color: #6c757d;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #6c757d;\n --bs-gradient: none;\n}\n\n.btn-outline-success {\n --bs-btn-color: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #198754;\n --bs-btn-hover-border-color: #198754;\n --bs-btn-focus-shadow-rgb: 25, 135, 84;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #198754;\n --bs-btn-active-border-color: #198754;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #198754;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #198754;\n --bs-gradient: none;\n}\n\n.btn-outline-info {\n --bs-btn-color: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #0dcaf0;\n --bs-btn-hover-border-color: #0dcaf0;\n --bs-btn-focus-shadow-rgb: 13, 202, 240;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #0dcaf0;\n --bs-btn-active-border-color: #0dcaf0;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #0dcaf0;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0dcaf0;\n --bs-gradient: none;\n}\n\n.btn-outline-warning {\n --bs-btn-color: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffc107;\n --bs-btn-hover-border-color: #ffc107;\n --bs-btn-focus-shadow-rgb: 255, 193, 7;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffc107;\n --bs-btn-active-border-color: #ffc107;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #ffc107;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #ffc107;\n --bs-gradient: none;\n}\n\n.btn-outline-danger {\n --bs-btn-color: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #dc3545;\n --bs-btn-hover-border-color: #dc3545;\n --bs-btn-focus-shadow-rgb: 220, 53, 69;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #dc3545;\n --bs-btn-active-border-color: #dc3545;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #dc3545;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #dc3545;\n --bs-gradient: none;\n}\n\n.btn-outline-light {\n --bs-btn-color: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #f8f9fa;\n --bs-btn-hover-border-color: #f8f9fa;\n --bs-btn-focus-shadow-rgb: 248, 249, 250;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #f8f9fa;\n --bs-btn-active-border-color: #f8f9fa;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #f8f9fa;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #f8f9fa;\n --bs-gradient: none;\n}\n\n.btn-outline-dark {\n --bs-btn-color: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #212529;\n --bs-btn-hover-border-color: #212529;\n --bs-btn-focus-shadow-rgb: 33, 37, 41;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #212529;\n --bs-btn-active-border-color: #212529;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #212529;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #212529;\n --bs-gradient: none;\n}\n\n.btn-link {\n --bs-btn-font-weight: 400;\n --bs-btn-color: var(--bs-link-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-color: transparent;\n --bs-btn-hover-color: var(--bs-link-hover-color);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-active-color: var(--bs-link-hover-color);\n --bs-btn-active-border-color: transparent;\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-border-color: transparent;\n --bs-btn-box-shadow: 0 0 0 #000;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n text-decoration: underline;\n}\n.btn-link:focus-visible {\n color: var(--bs-btn-color);\n}\n.btn-link:hover {\n color: var(--bs-btn-hover-color);\n}\n\n.btn-lg, .btn-group-lg > .btn {\n --bs-btn-padding-y: 0.5rem;\n --bs-btn-padding-x: 1rem;\n --bs-btn-font-size: 1.25rem;\n --bs-btn-border-radius: var(--bs-border-radius-lg);\n}\n\n.btn-sm, .btn-group-sm > .btn {\n --bs-btn-padding-y: 0.25rem;\n --bs-btn-padding-x: 0.5rem;\n --bs-btn-font-size: 0.875rem;\n --bs-btn-border-radius: var(--bs-border-radius-sm);\n}\n\n.fade {\n transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\n}\n.fade:not(.show) {\n opacity: 0;\n}\n\n.collapse:not(.show) {\n display: none;\n}\n\n.collapsing {\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n.collapsing.collapse-horizontal {\n width: 0;\n height: auto;\n transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .collapsing.collapse-horizontal {\n transition: none;\n }\n}\n\n.dropup,\n.dropend,\n.dropdown,\n.dropstart,\n.dropup-center,\n.dropdown-center {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n --bs-dropdown-zindex: 1000;\n --bs-dropdown-min-width: 10rem;\n --bs-dropdown-padding-x: 0;\n --bs-dropdown-padding-y: 0.5rem;\n --bs-dropdown-spacer: 0.125rem;\n --bs-dropdown-font-size: 1rem;\n --bs-dropdown-color: var(--bs-body-color);\n --bs-dropdown-bg: var(--bs-body-bg);\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-border-radius: var(--bs-border-radius);\n --bs-dropdown-border-width: var(--bs-border-width);\n --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-divider-margin-y: 0.5rem;\n --bs-dropdown-box-shadow: var(--bs-box-shadow);\n --bs-dropdown-link-color: var(--bs-body-color);\n --bs-dropdown-link-hover-color: var(--bs-body-color);\n --bs-dropdown-link-hover-bg: var(--pst-color-surface);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: var(--pst-color-surface);\n --bs-dropdown-link-disabled-color: var(--bs-tertiary-color);\n --bs-dropdown-item-padding-x: 1rem;\n --bs-dropdown-item-padding-y: 0.25rem;\n --bs-dropdown-header-color: #6c757d;\n --bs-dropdown-header-padding-x: 1rem;\n --bs-dropdown-header-padding-y: 0.5rem;\n position: absolute;\n z-index: var(--bs-dropdown-zindex);\n display: none;\n min-width: var(--bs-dropdown-min-width);\n padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);\n margin: 0;\n font-size: var(--bs-dropdown-font-size);\n color: var(--bs-dropdown-color);\n text-align: left;\n list-style: none;\n background-color: var(--bs-dropdown-bg);\n background-clip: padding-box;\n border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);\n border-radius: var(--bs-dropdown-border-radius);\n}\n.dropdown-menu[data-bs-popper] {\n top: 100%;\n left: 0;\n margin-top: var(--bs-dropdown-spacer);\n}\n\n.dropdown-menu-start {\n --bs-position: start;\n}\n.dropdown-menu-start[data-bs-popper] {\n right: auto;\n left: 0;\n}\n\n.dropdown-menu-end {\n --bs-position: end;\n}\n.dropdown-menu-end[data-bs-popper] {\n right: 0;\n left: auto;\n}\n\n@media (min-width: 540px) {\n .dropdown-menu-sm-start {\n --bs-position: start;\n }\n .dropdown-menu-sm-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-sm-end {\n --bs-position: end;\n }\n .dropdown-menu-sm-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 720px) {\n .dropdown-menu-md-start {\n --bs-position: start;\n }\n .dropdown-menu-md-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-md-end {\n --bs-position: end;\n }\n .dropdown-menu-md-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 960px) {\n .dropdown-menu-lg-start {\n --bs-position: start;\n }\n .dropdown-menu-lg-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-lg-end {\n --bs-position: end;\n }\n .dropdown-menu-lg-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 1200px) {\n .dropdown-menu-xl-start {\n --bs-position: start;\n }\n .dropdown-menu-xl-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xl-end {\n --bs-position: end;\n }\n .dropdown-menu-xl-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n.dropup .dropdown-menu[data-bs-popper] {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: var(--bs-dropdown-spacer);\n}\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: var(--bs-dropdown-spacer);\n}\n.dropend .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n.dropend .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropend .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: var(--bs-dropdown-spacer);\n}\n.dropstart .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n.dropstart .dropdown-toggle::after {\n display: none;\n}\n.dropstart .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n.dropstart .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropstart .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-divider {\n height: 0;\n margin: var(--bs-dropdown-divider-margin-y) 0;\n overflow: hidden;\n border-top: 1px solid var(--bs-dropdown-divider-bg);\n opacity: 1;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n clear: both;\n font-weight: 400;\n color: var(--bs-dropdown-link-color);\n text-align: inherit;\n text-decoration: none;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n border-radius: var(--bs-dropdown-item-border-radius, 0);\n}\n.dropdown-item:hover, .dropdown-item:focus {\n color: var(--bs-dropdown-link-hover-color);\n background-color: var(--bs-dropdown-link-hover-bg);\n}\n.dropdown-item.active, .dropdown-item:active {\n color: var(--bs-dropdown-link-active-color);\n text-decoration: none;\n background-color: var(--bs-dropdown-link-active-bg);\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: var(--bs-dropdown-link-disabled-color);\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);\n margin-bottom: 0;\n font-size: 0.875rem;\n color: var(--bs-dropdown-header-color);\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n color: var(--bs-dropdown-link-color);\n}\n\n.dropdown-menu-dark {\n --bs-dropdown-color: #dee2e6;\n --bs-dropdown-bg: #343a40;\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-box-shadow: ;\n --bs-dropdown-link-color: #dee2e6;\n --bs-dropdown-link-hover-color: #fff;\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-link-hover-bg: var(--pst-color-surface);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: var(--pst-color-surface);\n --bs-dropdown-link-disabled-color: #adb5bd;\n --bs-dropdown-header-color: #adb5bd;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 1 1 auto;\n}\n.btn-group > .btn-check:checked + .btn,\n.btn-group > .btn-check:focus + .btn,\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn-check:checked + .btn,\n.btn-group-vertical > .btn-check:focus + .btn,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group {\n border-radius: var(--bs-border-radius);\n}\n.btn-group > :not(.btn-check:first-child) + .btn,\n.btn-group > .btn-group:not(:first-child) {\n margin-left: calc(var(--bs-border-width) * -1);\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn.dropdown-toggle-split:first-child,\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:nth-child(n+3),\n.btn-group > :not(.btn-check) + .btn,\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n margin-left: 0;\n}\n.dropstart .dropdown-toggle-split::before {\n margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: calc(var(--bs-border-width) * -1);\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn ~ .btn,\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav {\n --bs-nav-link-padding-x: 1rem;\n --bs-nav-link-padding-y: 0.5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-link-color);\n --bs-nav-link-hover-color: var(--bs-link-hover-color);\n --bs-nav-link-disabled-color: var(--bs-secondary-color);\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);\n font-size: var(--bs-nav-link-font-size);\n font-weight: var(--bs-nav-link-font-weight);\n color: var(--bs-nav-link-color);\n text-decoration: none;\n background: none;\n border: 0;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .nav-link {\n transition: none;\n }\n}\n.nav-link:hover, .nav-link:focus {\n color: var(--bs-nav-link-hover-color);\n}\n.nav-link:focus-visible {\n outline: 0;\n box-shadow: 0 0 0 0.1875rem var(--pst-color-accent);\n}\n.nav-link.disabled, .nav-link:disabled {\n color: var(--bs-nav-link-disabled-color);\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n --bs-nav-tabs-border-width: var(--bs-border-width);\n --bs-nav-tabs-border-color: var(--bs-border-color);\n --bs-nav-tabs-border-radius: var(--bs-border-radius);\n --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);\n --bs-nav-tabs-link-active-color: var(--bs-emphasis-color);\n --bs-nav-tabs-link-active-bg: var(--bs-body-bg);\n --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);\n border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color);\n}\n.nav-tabs .nav-link {\n margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width));\n border: var(--bs-nav-tabs-border-width) solid transparent;\n border-top-left-radius: var(--bs-nav-tabs-border-radius);\n border-top-right-radius: var(--bs-nav-tabs-border-radius);\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n isolation: isolate;\n border-color: var(--bs-nav-tabs-link-hover-border-color);\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: var(--bs-nav-tabs-link-active-color);\n background-color: var(--bs-nav-tabs-link-active-bg);\n border-color: var(--bs-nav-tabs-link-active-border-color);\n}\n.nav-tabs .dropdown-menu {\n margin-top: calc(-1 * var(--bs-nav-tabs-border-width));\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills {\n --bs-nav-pills-border-radius: var(--bs-border-radius);\n --bs-nav-pills-link-active-color: #fff;\n --bs-nav-pills-link-active-bg: #0d6efd;\n}\n.nav-pills .nav-link {\n border-radius: var(--bs-nav-pills-border-radius);\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: var(--bs-nav-pills-link-active-color);\n background-color: var(--bs-nav-pills-link-active-bg);\n}\n\n.nav-underline {\n --bs-nav-underline-gap: 1rem;\n --bs-nav-underline-border-width: 0.125rem;\n --bs-nav-underline-link-active-color: var(--bs-emphasis-color);\n gap: var(--bs-nav-underline-gap);\n}\n.nav-underline .nav-link {\n padding-right: 0;\n padding-left: 0;\n border-bottom: var(--bs-nav-underline-border-width) solid transparent;\n}\n.nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n border-bottom-color: currentcolor;\n}\n.nav-underline .nav-link.active,\n.nav-underline .show > .nav-link {\n font-weight: 700;\n color: var(--bs-nav-underline-link-active-color);\n border-bottom-color: currentcolor;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.nav-fill .nav-item .nav-link,\n.nav-justified .nav-item .nav-link {\n width: 100%;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n --bs-navbar-padding-x: 0;\n --bs-navbar-padding-y: 0.5rem;\n --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);\n --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);\n --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);\n --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-padding-y: 0.3125rem;\n --bs-navbar-brand-margin-end: 1rem;\n --bs-navbar-brand-font-size: 1.25rem;\n --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-nav-link-padding-x: 0.5rem;\n --bs-navbar-toggler-padding-y: 0.25rem;\n --bs-navbar-toggler-padding-x: 0.75rem;\n --bs-navbar-toggler-font-size: 1.25rem;\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);\n --bs-navbar-toggler-border-radius: var(--bs-border-radius);\n --bs-navbar-toggler-focus-width: 0.1875rem;\n --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);\n}\n.navbar > .container,\n.navbar > .container-fluid,\n.navbar > .container-sm,\n.navbar > .container-md,\n.navbar > .container-lg,\n.navbar > .container-xl {\n display: flex;\n flex-wrap: inherit;\n align-items: center;\n justify-content: space-between;\n}\n.navbar-brand {\n padding-top: var(--bs-navbar-brand-padding-y);\n padding-bottom: var(--bs-navbar-brand-padding-y);\n margin-right: var(--bs-navbar-brand-margin-end);\n font-size: var(--bs-navbar-brand-font-size);\n color: var(--bs-navbar-brand-color);\n text-decoration: none;\n white-space: nowrap;\n}\n.navbar-brand:hover, .navbar-brand:focus {\n color: var(--bs-navbar-brand-hover-color);\n}\n\n.navbar-nav {\n --bs-nav-link-padding-x: 0;\n --bs-nav-link-padding-y: 0.5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-navbar-color);\n --bs-nav-link-hover-color: var(--bs-navbar-hover-color);\n --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n color: var(--bs-navbar-active-color);\n}\n.navbar-nav .dropdown-menu {\n position: static;\n}\n\n.navbar-text {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-navbar-color);\n}\n.navbar-text a,\n.navbar-text a:hover,\n.navbar-text a:focus {\n color: var(--bs-navbar-active-color);\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);\n font-size: var(--bs-navbar-toggler-font-size);\n line-height: 1;\n color: var(--bs-navbar-color);\n background-color: transparent;\n border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);\n border-radius: var(--bs-navbar-toggler-border-radius);\n transition: var(--bs-navbar-toggler-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .navbar-toggler {\n transition: none;\n }\n}\n.navbar-toggler:hover {\n text-decoration: none;\n}\n.navbar-toggler:focus {\n text-decoration: none;\n outline: 0;\n box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width);\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n background-image: var(--bs-navbar-toggler-icon-bg);\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100%;\n}\n\n.navbar-nav-scroll {\n max-height: var(--bs-scroll-height, 75vh);\n overflow-y: auto;\n}\n\n@media (min-width: 540px) {\n .navbar-expand-sm {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-sm .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n .navbar-expand-sm .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-sm .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-sm .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 720px) {\n .navbar-expand-md {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-md .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n .navbar-expand-md .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-md .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-md .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 960px) {\n .navbar-expand-lg {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-lg .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n .navbar-expand-lg .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-lg .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-lg .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-xl .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xl .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-xl .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-xl .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n.navbar-expand {\n flex-wrap: nowrap;\n justify-content: flex-start;\n}\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n}\n.navbar-expand .navbar-nav-scroll {\n overflow: visible;\n}\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n display: none;\n}\n.navbar-expand .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n}\n.navbar-expand .offcanvas .offcanvas-header {\n display: none;\n}\n.navbar-expand .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n}\n\n.navbar-dark,\n.navbar[data-bs-theme=dark] {\n --bs-navbar-color: rgba(255, 255, 255, 0.55);\n --bs-navbar-hover-color: rgba(255, 255, 255, 0.75);\n --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);\n --bs-navbar-active-color: #fff;\n --bs-navbar-brand-color: #fff;\n --bs-navbar-brand-hover-color: #fff;\n --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n[data-bs-theme=dark] .navbar-toggler-icon {\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.card {\n --bs-card-spacer-y: 1rem;\n --bs-card-spacer-x: 1rem;\n --bs-card-title-spacer-y: 0.5rem;\n --bs-card-title-color: ;\n --bs-card-subtitle-color: ;\n --bs-card-border-width: var(--bs-border-width);\n --bs-card-border-color: var(--bs-border-color-translucent);\n --bs-card-border-radius: var(--bs-border-radius);\n --bs-card-box-shadow: ;\n --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-card-cap-padding-y: 0.5rem;\n --bs-card-cap-padding-x: 1rem;\n --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);\n --bs-card-cap-color: ;\n --bs-card-height: ;\n --bs-card-color: ;\n --bs-card-bg: var(--bs-body-bg);\n --bs-card-img-overlay-padding: 1rem;\n --bs-card-group-margin: 0.75rem;\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n height: var(--bs-card-height);\n color: var(--bs-body-color);\n word-wrap: break-word;\n background-color: var(--bs-card-bg);\n background-clip: border-box;\n border: var(--bs-card-border-width) solid var(--bs-card-border-color);\n border-radius: var(--bs-card-border-radius);\n}\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n.card > .list-group {\n border-top: inherit;\n border-bottom: inherit;\n}\n.card > .list-group:first-child {\n border-top-width: 0;\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n}\n.card > .list-group:last-child {\n border-bottom-width: 0;\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n}\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n border-top: 0;\n}\n\n.card-body {\n flex: 1 1 auto;\n padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);\n color: var(--bs-card-color);\n}\n\n.card-title {\n margin-bottom: var(--bs-card-title-spacer-y);\n color: var(--bs-card-title-color);\n}\n\n.card-subtitle {\n margin-top: calc(-0.5 * var(--bs-card-title-spacer-y));\n margin-bottom: 0;\n color: var(--bs-card-subtitle-color);\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link + .card-link {\n margin-left: var(--bs-card-spacer-x);\n}\n\n.card-header {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n margin-bottom: 0;\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n.card-header:first-child {\n border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0;\n}\n\n.card-footer {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n.card-footer:last-child {\n border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);\n}\n\n.card-header-tabs {\n margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));\n margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));\n margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));\n border-bottom: 0;\n}\n.card-header-tabs .nav-link.active {\n background-color: var(--bs-card-bg);\n border-bottom-color: var(--bs-card-bg);\n}\n\n.card-header-pills {\n margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));\n margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: var(--bs-card-img-overlay-padding);\n border-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n width: 100%;\n}\n\n.card-img,\n.card-img-top {\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img,\n.card-img-bottom {\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-group > .card {\n margin-bottom: var(--bs-card-group-margin);\n}\n@media (min-width: 540px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group > .card {\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n .card-group > .card:not(:last-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n .card-group > .card:not(:last-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n .card-group > .card:not(:first-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n .card-group > .card:not(:first-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n\n.accordion {\n --bs-accordion-color: var(--bs-body-color);\n --bs-accordion-bg: var(--bs-body-bg);\n --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;\n --bs-accordion-border-color: var(--bs-border-color);\n --bs-accordion-border-width: var(--bs-border-width);\n --bs-accordion-border-radius: var(--bs-border-radius);\n --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-accordion-btn-padding-x: 1.25rem;\n --bs-accordion-btn-padding-y: 1rem;\n --bs-accordion-btn-color: var(--bs-body-color);\n --bs-accordion-btn-bg: var(--bs-accordion-bg);\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e\");\n --bs-accordion-btn-icon-width: 1.25rem;\n --bs-accordion-btn-icon-transform: rotate(-180deg);\n --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e\");\n --bs-accordion-btn-focus-box-shadow: 0 0 0 0.1875rem var(--pst-color-accent);\n --bs-accordion-body-padding-x: 1.25rem;\n --bs-accordion-body-padding-y: 1rem;\n --bs-accordion-active-color: var(--bs-primary-text-emphasis);\n --bs-accordion-active-bg: var(--bs-primary-bg-subtle);\n}\n\n.accordion-button {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);\n font-size: 1rem;\n color: var(--bs-accordion-btn-color);\n text-align: left;\n background-color: var(--bs-accordion-btn-bg);\n border: 0;\n border-radius: 0;\n overflow-anchor: none;\n transition: var(--bs-accordion-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .accordion-button {\n transition: none;\n }\n}\n.accordion-button:not(.collapsed) {\n color: var(--bs-accordion-active-color);\n background-color: var(--bs-accordion-active-bg);\n box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color);\n}\n.accordion-button:not(.collapsed)::after {\n background-image: var(--bs-accordion-btn-active-icon);\n transform: var(--bs-accordion-btn-icon-transform);\n}\n.accordion-button::after {\n flex-shrink: 0;\n width: var(--bs-accordion-btn-icon-width);\n height: var(--bs-accordion-btn-icon-width);\n margin-left: auto;\n content: \"\";\n background-image: var(--bs-accordion-btn-icon);\n background-repeat: no-repeat;\n background-size: var(--bs-accordion-btn-icon-width);\n transition: var(--bs-accordion-btn-icon-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .accordion-button::after {\n transition: none;\n }\n}\n.accordion-button:hover {\n z-index: 2;\n}\n.accordion-button:focus {\n z-index: 3;\n outline: 0;\n box-shadow: var(--bs-accordion-btn-focus-box-shadow);\n}\n\n.accordion-header {\n margin-bottom: 0;\n}\n\n.accordion-item {\n color: var(--bs-accordion-color);\n background-color: var(--bs-accordion-bg);\n border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);\n}\n.accordion-item:first-of-type {\n border-top-left-radius: var(--bs-accordion-border-radius);\n border-top-right-radius: var(--bs-accordion-border-radius);\n}\n.accordion-item:first-of-type > .accordion-header .accordion-button {\n border-top-left-radius: var(--bs-accordion-inner-border-radius);\n border-top-right-radius: var(--bs-accordion-inner-border-radius);\n}\n.accordion-item:not(:first-of-type) {\n border-top: 0;\n}\n.accordion-item:last-of-type {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n.accordion-item:last-of-type > .accordion-header .accordion-button.collapsed {\n border-bottom-right-radius: var(--bs-accordion-inner-border-radius);\n border-bottom-left-radius: var(--bs-accordion-inner-border-radius);\n}\n.accordion-item:last-of-type > .accordion-collapse {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n\n.accordion-body {\n padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x);\n}\n\n.accordion-flush > .accordion-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n.accordion-flush > .accordion-item:first-child {\n border-top: 0;\n}\n.accordion-flush > .accordion-item:last-child {\n border-bottom: 0;\n}\n.accordion-flush > .accordion-item > .accordion-header .accordion-button, .accordion-flush > .accordion-item > .accordion-header .accordion-button.collapsed {\n border-radius: 0;\n}\n.accordion-flush > .accordion-item > .accordion-collapse {\n border-radius: 0;\n}\n\n[data-bs-theme=dark] .accordion-button::after {\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.breadcrumb {\n --bs-breadcrumb-padding-x: 0;\n --bs-breadcrumb-padding-y: 0;\n --bs-breadcrumb-margin-bottom: 1rem;\n --bs-breadcrumb-bg: ;\n --bs-breadcrumb-border-radius: ;\n --bs-breadcrumb-divider-color: var(--bs-secondary-color);\n --bs-breadcrumb-item-padding-x: 0.5rem;\n --bs-breadcrumb-item-active-color: var(--bs-secondary-color);\n display: flex;\n flex-wrap: wrap;\n padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);\n margin-bottom: var(--bs-breadcrumb-margin-bottom);\n font-size: var(--bs-breadcrumb-font-size);\n list-style: none;\n background-color: var(--bs-breadcrumb-bg);\n border-radius: var(--bs-breadcrumb-border-radius);\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: var(--bs-breadcrumb-item-padding-x);\n}\n.breadcrumb-item + .breadcrumb-item::before {\n float: left;\n padding-right: var(--bs-breadcrumb-item-padding-x);\n color: var(--bs-breadcrumb-divider-color);\n content: var(--bs-breadcrumb-divider, \"/\") /* rtl: var(--bs-breadcrumb-divider, \"/\") */;\n}\n.breadcrumb-item.active {\n color: var(--bs-breadcrumb-item-active-color);\n}\n\n.pagination {\n --bs-pagination-padding-x: 0.75rem;\n --bs-pagination-padding-y: 0.375rem;\n --bs-pagination-font-size: 1rem;\n --bs-pagination-color: var(--bs-link-color);\n --bs-pagination-bg: var(--bs-body-bg);\n --bs-pagination-border-width: var(--bs-border-width);\n --bs-pagination-border-color: var(--bs-border-color);\n --bs-pagination-border-radius: var(--bs-border-radius);\n --bs-pagination-hover-color: var(--bs-link-hover-color);\n --bs-pagination-hover-bg: var(--bs-tertiary-bg);\n --bs-pagination-hover-border-color: var(--bs-border-color);\n --bs-pagination-focus-color: var(--bs-link-hover-color);\n --bs-pagination-focus-bg: var(--bs-secondary-bg);\n --bs-pagination-focus-box-shadow: 0 0 0 0.1875rem var(--pst-color-accent);\n --bs-pagination-active-color: #fff;\n --bs-pagination-active-bg: #0d6efd;\n --bs-pagination-active-border-color: #0d6efd;\n --bs-pagination-disabled-color: var(--bs-secondary-color);\n --bs-pagination-disabled-bg: var(--bs-secondary-bg);\n --bs-pagination-disabled-border-color: var(--bs-border-color);\n display: flex;\n padding-left: 0;\n list-style: none;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);\n font-size: var(--bs-pagination-font-size);\n color: var(--bs-pagination-color);\n text-decoration: none;\n background-color: var(--bs-pagination-bg);\n border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .page-link {\n transition: none;\n }\n}\n.page-link:hover {\n z-index: 2;\n color: var(--bs-pagination-hover-color);\n background-color: var(--bs-pagination-hover-bg);\n border-color: var(--bs-pagination-hover-border-color);\n}\n.page-link:focus {\n z-index: 3;\n color: var(--bs-pagination-focus-color);\n background-color: var(--bs-pagination-focus-bg);\n outline: 0;\n box-shadow: var(--bs-pagination-focus-box-shadow);\n}\n.page-link.active, .active > .page-link {\n z-index: 3;\n color: var(--bs-pagination-active-color);\n background-color: var(--bs-pagination-active-bg);\n border-color: var(--bs-pagination-active-border-color);\n}\n.page-link.disabled, .disabled > .page-link {\n color: var(--bs-pagination-disabled-color);\n pointer-events: none;\n background-color: var(--bs-pagination-disabled-bg);\n border-color: var(--bs-pagination-disabled-border-color);\n}\n\n.page-item:not(:first-child) .page-link {\n margin-left: calc(var(--bs-border-width) * -1);\n}\n.page-item:first-child .page-link {\n border-top-left-radius: var(--bs-pagination-border-radius);\n border-bottom-left-radius: var(--bs-pagination-border-radius);\n}\n.page-item:last-child .page-link {\n border-top-right-radius: var(--bs-pagination-border-radius);\n border-bottom-right-radius: var(--bs-pagination-border-radius);\n}\n\n.pagination-lg {\n --bs-pagination-padding-x: 1.5rem;\n --bs-pagination-padding-y: 0.75rem;\n --bs-pagination-font-size: 1.25rem;\n --bs-pagination-border-radius: var(--bs-border-radius-lg);\n}\n\n.pagination-sm {\n --bs-pagination-padding-x: 0.5rem;\n --bs-pagination-padding-y: 0.25rem;\n --bs-pagination-font-size: 0.875rem;\n --bs-pagination-border-radius: var(--bs-border-radius-sm);\n}\n\n.badge {\n --bs-badge-padding-x: 0.65em;\n --bs-badge-padding-y: 0.35em;\n --bs-badge-font-size: 0.75em;\n --bs-badge-font-weight: 700;\n --bs-badge-color: #fff;\n --bs-badge-border-radius: var(--bs-border-radius);\n display: inline-block;\n padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);\n font-size: var(--bs-badge-font-size);\n font-weight: var(--bs-badge-font-weight);\n line-height: 1;\n color: var(--bs-badge-color);\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: var(--bs-badge-border-radius);\n}\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.alert {\n --bs-alert-bg: transparent;\n --bs-alert-padding-x: 1rem;\n --bs-alert-padding-y: 1rem;\n --bs-alert-margin-bottom: 1rem;\n --bs-alert-color: inherit;\n --bs-alert-border-color: transparent;\n --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);\n --bs-alert-border-radius: var(--bs-border-radius);\n --bs-alert-link-color: inherit;\n position: relative;\n padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);\n margin-bottom: var(--bs-alert-margin-bottom);\n color: var(--bs-alert-color);\n background-color: var(--bs-alert-bg);\n border: var(--bs-alert-border);\n border-radius: var(--bs-alert-border-radius);\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n color: var(--bs-alert-link-color);\n}\n\n.alert-dismissible {\n padding-right: 3rem;\n}\n.alert-dismissible .btn-close {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n padding: 1.25rem 1rem;\n}\n\n.alert-primary {\n --bs-alert-color: var(--bs-primary-text-emphasis);\n --bs-alert-bg: var(--bs-primary-bg-subtle);\n --bs-alert-border-color: var(--bs-primary-border-subtle);\n --bs-alert-link-color: var(--bs-primary-text-emphasis);\n}\n\n.alert-secondary {\n --bs-alert-color: var(--bs-secondary-text-emphasis);\n --bs-alert-bg: var(--bs-secondary-bg-subtle);\n --bs-alert-border-color: var(--bs-secondary-border-subtle);\n --bs-alert-link-color: var(--bs-secondary-text-emphasis);\n}\n\n.alert-success {\n --bs-alert-color: var(--bs-success-text-emphasis);\n --bs-alert-bg: var(--bs-success-bg-subtle);\n --bs-alert-border-color: var(--bs-success-border-subtle);\n --bs-alert-link-color: var(--bs-success-text-emphasis);\n}\n\n.alert-info {\n --bs-alert-color: var(--bs-info-text-emphasis);\n --bs-alert-bg: var(--bs-info-bg-subtle);\n --bs-alert-border-color: var(--bs-info-border-subtle);\n --bs-alert-link-color: var(--bs-info-text-emphasis);\n}\n\n.alert-warning {\n --bs-alert-color: var(--bs-warning-text-emphasis);\n --bs-alert-bg: var(--bs-warning-bg-subtle);\n --bs-alert-border-color: var(--bs-warning-border-subtle);\n --bs-alert-link-color: var(--bs-warning-text-emphasis);\n}\n\n.alert-danger {\n --bs-alert-color: var(--bs-danger-text-emphasis);\n --bs-alert-bg: var(--bs-danger-bg-subtle);\n --bs-alert-border-color: var(--bs-danger-border-subtle);\n --bs-alert-link-color: var(--bs-danger-text-emphasis);\n}\n\n.alert-light {\n --bs-alert-color: var(--bs-light-text-emphasis);\n --bs-alert-bg: var(--bs-light-bg-subtle);\n --bs-alert-border-color: var(--bs-light-border-subtle);\n --bs-alert-link-color: var(--bs-light-text-emphasis);\n}\n\n.alert-dark {\n --bs-alert-color: var(--bs-dark-text-emphasis);\n --bs-alert-bg: var(--bs-dark-bg-subtle);\n --bs-alert-border-color: var(--bs-dark-border-subtle);\n --bs-alert-link-color: var(--bs-dark-text-emphasis);\n}\n\n@keyframes progress-bar-stripes {\n 0% {\n background-position-x: 1rem;\n }\n}\n.progress,\n.progress-stacked {\n --bs-progress-height: 1rem;\n --bs-progress-font-size: 0.75rem;\n --bs-progress-bg: var(--bs-secondary-bg);\n --bs-progress-border-radius: var(--bs-border-radius);\n --bs-progress-box-shadow: var(--bs-box-shadow-inset);\n --bs-progress-bar-color: #fff;\n --bs-progress-bar-bg: #0d6efd;\n --bs-progress-bar-transition: width 0.6s ease;\n display: flex;\n height: var(--bs-progress-height);\n overflow: hidden;\n font-size: var(--bs-progress-font-size);\n background-color: var(--bs-progress-bg);\n border-radius: var(--bs-progress-border-radius);\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n color: var(--bs-progress-bar-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-progress-bar-bg);\n transition: var(--bs-progress-bar-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: var(--bs-progress-height) var(--bs-progress-height);\n}\n\n.progress-stacked > .progress {\n overflow: visible;\n}\n\n.progress-stacked > .progress > .progress-bar {\n width: 100%;\n}\n\n.progress-bar-animated {\n animation: 1s linear infinite progress-bar-stripes;\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n animation: none;\n }\n}\n\n.list-group {\n --bs-list-group-color: var(--bs-body-color);\n --bs-list-group-bg: var(--bs-body-bg);\n --bs-list-group-border-color: var(--bs-border-color);\n --bs-list-group-border-width: var(--bs-border-width);\n --bs-list-group-border-radius: var(--bs-border-radius);\n --bs-list-group-item-padding-x: 1rem;\n --bs-list-group-item-padding-y: 0.5rem;\n --bs-list-group-action-color: var(--bs-secondary-color);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-tertiary-bg);\n --bs-list-group-action-active-color: var(--bs-body-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-bg);\n --bs-list-group-disabled-color: var(--bs-secondary-color);\n --bs-list-group-disabled-bg: var(--bs-body-bg);\n --bs-list-group-active-color: #fff;\n --bs-list-group-active-bg: #0d6efd;\n --bs-list-group-active-border-color: #0d6efd;\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n border-radius: var(--bs-list-group-border-radius);\n}\n\n.list-group-numbered {\n list-style-type: none;\n counter-reset: section;\n}\n.list-group-numbered > .list-group-item::before {\n content: counters(section, \".\") \". \";\n counter-increment: section;\n}\n\n.list-group-item-action {\n width: 100%;\n color: var(--bs-list-group-action-color);\n text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: var(--bs-list-group-action-hover-color);\n text-decoration: none;\n background-color: var(--bs-list-group-action-hover-bg);\n}\n.list-group-item-action:active {\n color: var(--bs-list-group-action-active-color);\n background-color: var(--bs-list-group-action-active-bg);\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);\n color: var(--bs-list-group-color);\n text-decoration: none;\n background-color: var(--bs-list-group-bg);\n border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);\n}\n.list-group-item:first-child {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n}\n.list-group-item:last-child {\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n color: var(--bs-list-group-disabled-color);\n pointer-events: none;\n background-color: var(--bs-list-group-disabled-bg);\n}\n.list-group-item.active {\n z-index: 2;\n color: var(--bs-list-group-active-color);\n background-color: var(--bs-list-group-active-bg);\n border-color: var(--bs-list-group-active-border-color);\n}\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n margin-top: calc(-1 * var(--bs-list-group-border-width));\n border-top-width: var(--bs-list-group-border-width);\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n.list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n}\n.list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n}\n.list-group-horizontal > .list-group-item.active {\n margin-top: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n}\n\n@media (min-width: 540px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 720px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 960px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n.list-group-flush {\n border-radius: 0;\n}\n.list-group-flush > .list-group-item {\n border-width: 0 0 var(--bs-list-group-border-width);\n}\n.list-group-flush > .list-group-item:last-child {\n border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n --bs-list-group-color: var(--bs-primary-text-emphasis);\n --bs-list-group-bg: var(--bs-primary-bg-subtle);\n --bs-list-group-border-color: var(--bs-primary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-primary-border-subtle);\n --bs-list-group-active-color: var(--bs-primary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-primary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-primary-text-emphasis);\n}\n\n.list-group-item-secondary {\n --bs-list-group-color: var(--bs-secondary-text-emphasis);\n --bs-list-group-bg: var(--bs-secondary-bg-subtle);\n --bs-list-group-border-color: var(--bs-secondary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-active-color: var(--bs-secondary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-secondary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis);\n}\n\n.list-group-item-success {\n --bs-list-group-color: var(--bs-success-text-emphasis);\n --bs-list-group-bg: var(--bs-success-bg-subtle);\n --bs-list-group-border-color: var(--bs-success-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-success-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-success-border-subtle);\n --bs-list-group-active-color: var(--bs-success-bg-subtle);\n --bs-list-group-active-bg: var(--bs-success-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-success-text-emphasis);\n}\n\n.list-group-item-info {\n --bs-list-group-color: var(--bs-info-text-emphasis);\n --bs-list-group-bg: var(--bs-info-bg-subtle);\n --bs-list-group-border-color: var(--bs-info-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-info-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-info-border-subtle);\n --bs-list-group-active-color: var(--bs-info-bg-subtle);\n --bs-list-group-active-bg: var(--bs-info-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-info-text-emphasis);\n}\n\n.list-group-item-warning {\n --bs-list-group-color: var(--bs-warning-text-emphasis);\n --bs-list-group-bg: var(--bs-warning-bg-subtle);\n --bs-list-group-border-color: var(--bs-warning-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-warning-border-subtle);\n --bs-list-group-active-color: var(--bs-warning-bg-subtle);\n --bs-list-group-active-bg: var(--bs-warning-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-warning-text-emphasis);\n}\n\n.list-group-item-danger {\n --bs-list-group-color: var(--bs-danger-text-emphasis);\n --bs-list-group-bg: var(--bs-danger-bg-subtle);\n --bs-list-group-border-color: var(--bs-danger-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-danger-border-subtle);\n --bs-list-group-active-color: var(--bs-danger-bg-subtle);\n --bs-list-group-active-bg: var(--bs-danger-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-danger-text-emphasis);\n}\n\n.list-group-item-light {\n --bs-list-group-color: var(--bs-light-text-emphasis);\n --bs-list-group-bg: var(--bs-light-bg-subtle);\n --bs-list-group-border-color: var(--bs-light-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-light-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-light-border-subtle);\n --bs-list-group-active-color: var(--bs-light-bg-subtle);\n --bs-list-group-active-bg: var(--bs-light-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-light-text-emphasis);\n}\n\n.list-group-item-dark {\n --bs-list-group-color: var(--bs-dark-text-emphasis);\n --bs-list-group-bg: var(--bs-dark-bg-subtle);\n --bs-list-group-border-color: var(--bs-dark-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-dark-border-subtle);\n --bs-list-group-active-color: var(--bs-dark-bg-subtle);\n --bs-list-group-active-bg: var(--bs-dark-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-dark-text-emphasis);\n}\n\n.btn-close {\n --bs-btn-close-color: #000;\n --bs-btn-close-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e\");\n --bs-btn-close-opacity: 0.5;\n --bs-btn-close-hover-opacity: 0.75;\n --bs-btn-close-focus-shadow: 0 0 0 0.1875rem var(--pst-color-accent);\n --bs-btn-close-focus-opacity: 1;\n --bs-btn-close-disabled-opacity: 0.25;\n --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);\n box-sizing: content-box;\n width: 1em;\n height: 1em;\n padding: 0.25em 0.25em;\n color: var(--bs-btn-close-color);\n background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;\n border: 0;\n border-radius: 0.375rem;\n opacity: var(--bs-btn-close-opacity);\n}\n.btn-close:hover {\n color: var(--bs-btn-close-color);\n text-decoration: none;\n opacity: var(--bs-btn-close-hover-opacity);\n}\n.btn-close:focus {\n outline: 0;\n box-shadow: var(--bs-btn-close-focus-shadow);\n opacity: var(--bs-btn-close-focus-opacity);\n}\n.btn-close:disabled, .btn-close.disabled {\n pointer-events: none;\n user-select: none;\n opacity: var(--bs-btn-close-disabled-opacity);\n}\n\n.btn-close-white {\n filter: var(--bs-btn-close-white-filter);\n}\n\n[data-bs-theme=dark] .btn-close {\n filter: var(--bs-btn-close-white-filter);\n}\n\n.toast {\n --bs-toast-zindex: 1090;\n --bs-toast-padding-x: 0.75rem;\n --bs-toast-padding-y: 0.5rem;\n --bs-toast-spacing: 1.5rem;\n --bs-toast-max-width: 350px;\n --bs-toast-font-size: 0.875rem;\n --bs-toast-color: ;\n --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);\n --bs-toast-border-width: var(--bs-border-width);\n --bs-toast-border-color: var(--bs-border-color-translucent);\n --bs-toast-border-radius: var(--bs-border-radius);\n --bs-toast-box-shadow: var(--bs-box-shadow);\n --bs-toast-header-color: var(--bs-secondary-color);\n --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);\n --bs-toast-header-border-color: var(--bs-border-color-translucent);\n width: var(--bs-toast-max-width);\n max-width: 100%;\n font-size: var(--bs-toast-font-size);\n color: var(--bs-toast-color);\n pointer-events: auto;\n background-color: var(--bs-toast-bg);\n background-clip: padding-box;\n border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);\n box-shadow: var(--bs-toast-box-shadow);\n border-radius: var(--bs-toast-border-radius);\n}\n.toast.showing {\n opacity: 0;\n}\n.toast:not(.show) {\n display: none;\n}\n\n.toast-container {\n --bs-toast-zindex: 1090;\n position: absolute;\n z-index: var(--bs-toast-zindex);\n width: max-content;\n max-width: 100%;\n pointer-events: none;\n}\n.toast-container > :not(:last-child) {\n margin-bottom: var(--bs-toast-spacing);\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);\n color: var(--bs-toast-header-color);\n background-color: var(--bs-toast-header-bg);\n background-clip: padding-box;\n border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);\n border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n}\n.toast-header .btn-close {\n margin-right: calc(-0.5 * var(--bs-toast-padding-x));\n margin-left: var(--bs-toast-padding-x);\n}\n\n.toast-body {\n padding: var(--bs-toast-padding-x);\n word-wrap: break-word;\n}\n\n.modal {\n --bs-modal-zindex: 1055;\n --bs-modal-width: 500px;\n --bs-modal-padding: 1rem;\n --bs-modal-margin: 0.5rem;\n --bs-modal-color: ;\n --bs-modal-bg: var(--bs-body-bg);\n --bs-modal-border-color: var(--bs-border-color-translucent);\n --bs-modal-border-width: var(--bs-border-width);\n --bs-modal-border-radius: var(--bs-border-radius-lg);\n --bs-modal-box-shadow: var(--bs-box-shadow-sm);\n --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));\n --bs-modal-header-padding-x: 1rem;\n --bs-modal-header-padding-y: 1rem;\n --bs-modal-header-padding: 1rem 1rem;\n --bs-modal-header-border-color: var(--bs-border-color);\n --bs-modal-header-border-width: var(--bs-border-width);\n --bs-modal-title-line-height: 1.5;\n --bs-modal-footer-gap: 0.5rem;\n --bs-modal-footer-bg: ;\n --bs-modal-footer-border-color: var(--bs-border-color);\n --bs-modal-footer-border-width: var(--bs-border-width);\n position: fixed;\n top: 0;\n left: 0;\n z-index: var(--bs-modal-zindex);\n display: none;\n width: 100%;\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: var(--bs-modal-margin);\n pointer-events: none;\n}\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n.modal.show .modal-dialog {\n transform: none;\n}\n.modal.modal-static .modal-dialog {\n transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n height: calc(100% - var(--bs-modal-margin) * 2);\n}\n.modal-dialog-scrollable .modal-content {\n max-height: 100%;\n overflow: hidden;\n}\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - var(--bs-modal-margin) * 2);\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n color: var(--bs-modal-color);\n pointer-events: auto;\n background-color: var(--bs-modal-bg);\n background-clip: padding-box;\n border: var(--bs-modal-border-width) solid var(--bs-modal-border-color);\n border-radius: var(--bs-modal-border-radius);\n outline: 0;\n}\n\n.modal-backdrop {\n --bs-backdrop-zindex: 1050;\n --bs-backdrop-bg: #000;\n --bs-backdrop-opacity: 0.5;\n position: fixed;\n top: 0;\n left: 0;\n z-index: var(--bs-backdrop-zindex);\n width: 100vw;\n height: 100vh;\n background-color: var(--bs-backdrop-bg);\n}\n.modal-backdrop.fade {\n opacity: 0;\n}\n.modal-backdrop.show {\n opacity: var(--bs-backdrop-opacity);\n}\n\n.modal-header {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n padding: var(--bs-modal-header-padding);\n border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);\n border-top-left-radius: var(--bs-modal-inner-border-radius);\n border-top-right-radius: var(--bs-modal-inner-border-radius);\n}\n.modal-header .btn-close {\n padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5);\n margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: var(--bs-modal-title-line-height);\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: var(--bs-modal-padding);\n}\n\n.modal-footer {\n display: flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5);\n background-color: var(--bs-modal-footer-bg);\n border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);\n border-bottom-right-radius: var(--bs-modal-inner-border-radius);\n border-bottom-left-radius: var(--bs-modal-inner-border-radius);\n}\n.modal-footer > * {\n margin: calc(var(--bs-modal-footer-gap) * 0.5);\n}\n\n@media (min-width: 540px) {\n .modal {\n --bs-modal-margin: 1.75rem;\n --bs-modal-box-shadow: var(--bs-box-shadow);\n }\n .modal-dialog {\n max-width: var(--bs-modal-width);\n margin-right: auto;\n margin-left: auto;\n }\n .modal-sm {\n --bs-modal-width: 300px;\n }\n}\n@media (min-width: 960px) {\n .modal-lg,\n .modal-xl {\n --bs-modal-width: 800px;\n }\n}\n@media (min-width: 1200px) {\n .modal-xl {\n --bs-modal-width: 1140px;\n }\n}\n.modal-fullscreen {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n}\n.modal-fullscreen .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n}\n.modal-fullscreen .modal-header,\n.modal-fullscreen .modal-footer {\n border-radius: 0;\n}\n.modal-fullscreen .modal-body {\n overflow-y: auto;\n}\n\n@media (max-width: 539.98px) {\n .modal-fullscreen-sm-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-sm-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-sm-down .modal-header,\n .modal-fullscreen-sm-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-sm-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 719.98px) {\n .modal-fullscreen-md-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-md-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-md-down .modal-header,\n .modal-fullscreen-md-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-md-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 959.98px) {\n .modal-fullscreen-lg-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-lg-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-lg-down .modal-header,\n .modal-fullscreen-lg-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-lg-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 1199.98px) {\n .modal-fullscreen-xl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-xl-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-xl-down .modal-header,\n .modal-fullscreen-xl-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-xl-down .modal-body {\n overflow-y: auto;\n }\n}\n.tooltip {\n --bs-tooltip-zindex: 1080;\n --bs-tooltip-max-width: 200px;\n --bs-tooltip-padding-x: 0.5rem;\n --bs-tooltip-padding-y: 0.25rem;\n --bs-tooltip-margin: ;\n --bs-tooltip-font-size: 0.875rem;\n --bs-tooltip-color: var(--bs-body-bg);\n --bs-tooltip-bg: var(--bs-emphasis-color);\n --bs-tooltip-border-radius: var(--bs-border-radius);\n --bs-tooltip-opacity: 0.9;\n --bs-tooltip-arrow-width: 0.8rem;\n --bs-tooltip-arrow-height: 0.4rem;\n z-index: var(--bs-tooltip-zindex);\n display: block;\n margin: var(--bs-tooltip-margin);\n font-family: var(--bs-font-sans-serif);\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n white-space: normal;\n word-spacing: normal;\n line-break: auto;\n font-size: var(--bs-tooltip-font-size);\n word-wrap: break-word;\n opacity: 0;\n}\n.tooltip.show {\n opacity: var(--bs-tooltip-opacity);\n}\n.tooltip .tooltip-arrow {\n display: block;\n width: var(--bs-tooltip-arrow-width);\n height: var(--bs-tooltip-arrow-height);\n}\n.tooltip .tooltip-arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\n bottom: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\n top: -1px;\n border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;\n border-top-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\n left: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\n right: -1px;\n border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;\n border-right-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:end:ignore */\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\n top: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\n bottom: -1px;\n border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);\n border-bottom-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\n right: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\n left: -1px;\n border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);\n border-left-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:end:ignore */\n.tooltip-inner {\n max-width: var(--bs-tooltip-max-width);\n padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);\n color: var(--bs-tooltip-color);\n text-align: center;\n background-color: var(--bs-tooltip-bg);\n border-radius: var(--bs-tooltip-border-radius);\n}\n\n.popover {\n --bs-popover-zindex: 1070;\n --bs-popover-max-width: 276px;\n --bs-popover-font-size: 0.875rem;\n --bs-popover-bg: var(--bs-body-bg);\n --bs-popover-border-width: var(--bs-border-width);\n --bs-popover-border-color: var(--bs-border-color-translucent);\n --bs-popover-border-radius: var(--bs-border-radius-lg);\n --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));\n --bs-popover-box-shadow: var(--bs-box-shadow);\n --bs-popover-header-padding-x: 1rem;\n --bs-popover-header-padding-y: 0.5rem;\n --bs-popover-header-font-size: 1rem;\n --bs-popover-header-color: inherit;\n --bs-popover-header-bg: var(--bs-secondary-bg);\n --bs-popover-body-padding-x: 1rem;\n --bs-popover-body-padding-y: 1rem;\n --bs-popover-body-color: var(--bs-body-color);\n --bs-popover-arrow-width: 1rem;\n --bs-popover-arrow-height: 0.5rem;\n --bs-popover-arrow-border: var(--bs-popover-border-color);\n z-index: var(--bs-popover-zindex);\n display: block;\n max-width: var(--bs-popover-max-width);\n font-family: var(--bs-font-sans-serif);\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n white-space: normal;\n word-spacing: normal;\n line-break: auto;\n font-size: var(--bs-popover-font-size);\n word-wrap: break-word;\n background-color: var(--bs-popover-bg);\n background-clip: padding-box;\n border: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-radius: var(--bs-popover-border-radius);\n}\n.popover .popover-arrow {\n display: block;\n width: var(--bs-popover-arrow-width);\n height: var(--bs-popover-arrow-height);\n}\n.popover .popover-arrow::before, .popover .popover-arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n border-width: 0;\n}\n\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\n bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\n bottom: 0;\n border-top-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n bottom: var(--bs-popover-border-width);\n border-top-color: var(--bs-popover-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\n left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\n left: 0;\n border-right-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n left: var(--bs-popover-border-width);\n border-right-color: var(--bs-popover-bg);\n}\n\n/* rtl:end:ignore */\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\n top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\n top: 0;\n border-bottom-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n top: var(--bs-popover-border-width);\n border-bottom-color: var(--bs-popover-bg);\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: var(--bs-popover-arrow-width);\n margin-left: calc(-0.5 * var(--bs-popover-arrow-width));\n content: \"\";\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\n right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\n right: 0;\n border-left-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n right: var(--bs-popover-border-width);\n border-left-color: var(--bs-popover-bg);\n}\n\n/* rtl:end:ignore */\n.popover-header {\n padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);\n margin-bottom: 0;\n font-size: var(--bs-popover-header-font-size);\n color: var(--bs-popover-header-color);\n background-color: var(--bs-popover-header-bg);\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-top-left-radius: var(--bs-popover-inner-border-radius);\n border-top-right-radius: var(--bs-popover-inner-border-radius);\n}\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);\n color: var(--bs-popover-body-color);\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n backface-visibility: hidden;\n transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-start,\n.carousel-fade .carousel-item-prev.carousel-item-end {\n z-index: 1;\n opacity: 1;\n}\n.carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n z-index: 0;\n opacity: 0;\n transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-start,\n .carousel-fade .active.carousel-item-end {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n padding: 0;\n color: #fff;\n text-align: center;\n background: none;\n border: 0;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n transition: none;\n }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n background-repeat: no-repeat;\n background-position: 50%;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\") /*rtl:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\")*/;\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\") /*rtl:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\")*/;\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 2;\n display: flex;\n justify-content: center;\n padding: 0;\n margin-right: 15%;\n margin-bottom: 1rem;\n margin-left: 15%;\n}\n.carousel-indicators [data-bs-target] {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n padding: 0;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: 0.5;\n transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators [data-bs-target] {\n transition: none;\n }\n}\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 1.25rem;\n left: 15%;\n padding-top: 1.25rem;\n padding-bottom: 1.25rem;\n color: #fff;\n text-align: center;\n}\n\n.carousel-dark .carousel-control-prev-icon,\n.carousel-dark .carousel-control-next-icon {\n filter: invert(1) grayscale(100);\n}\n.carousel-dark .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n.carousel-dark .carousel-caption {\n color: #000;\n}\n\n[data-bs-theme=dark] .carousel .carousel-control-prev-icon,\n[data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon,\n[data-bs-theme=dark].carousel .carousel-control-next-icon {\n filter: invert(1) grayscale(100);\n}\n[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption {\n color: #000;\n}\n\n.spinner-grow,\n.spinner-border {\n display: inline-block;\n width: var(--bs-spinner-width);\n height: var(--bs-spinner-height);\n vertical-align: var(--bs-spinner-vertical-align);\n border-radius: 50%;\n animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);\n}\n\n@keyframes spinner-border {\n to {\n transform: rotate(360deg) /* rtl:ignore */;\n }\n}\n.spinner-border {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -0.125em;\n --bs-spinner-border-width: 0.25em;\n --bs-spinner-animation-speed: 0.75s;\n --bs-spinner-animation-name: spinner-border;\n border: var(--bs-spinner-border-width) solid currentcolor;\n border-right-color: transparent;\n}\n\n.spinner-border-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n --bs-spinner-border-width: 0.2em;\n}\n\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n transform: none;\n }\n}\n.spinner-grow {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -0.125em;\n --bs-spinner-animation-speed: 0.75s;\n --bs-spinner-animation-name: spinner-grow;\n background-color: currentcolor;\n opacity: 0;\n}\n\n.spinner-grow-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .spinner-border,\n .spinner-grow {\n --bs-spinner-animation-speed: 1.5s;\n }\n}\n.offcanvas, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {\n --bs-offcanvas-zindex: 1045;\n --bs-offcanvas-width: 400px;\n --bs-offcanvas-height: 30vh;\n --bs-offcanvas-padding-x: 1rem;\n --bs-offcanvas-padding-y: 1rem;\n --bs-offcanvas-color: var(--bs-body-color);\n --bs-offcanvas-bg: var(--bs-body-bg);\n --bs-offcanvas-border-width: var(--bs-border-width);\n --bs-offcanvas-border-color: var(--bs-border-color-translucent);\n --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);\n --bs-offcanvas-transition: transform 0.3s ease-in-out;\n --bs-offcanvas-title-line-height: 1.5;\n}\n\n@media (max-width: 539.98px) {\n .offcanvas-sm {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 539.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-sm {\n transition: none;\n }\n}\n@media (max-width: 539.98px) {\n .offcanvas-sm.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-sm.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-sm.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-sm.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {\n visibility: visible;\n }\n}\n@media (min-width: 540px) {\n .offcanvas-sm {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-sm .offcanvas-header {\n display: none;\n }\n .offcanvas-sm .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 719.98px) {\n .offcanvas-md {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 719.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-md {\n transition: none;\n }\n}\n@media (max-width: 719.98px) {\n .offcanvas-md.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-md.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-md.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-md.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {\n visibility: visible;\n }\n}\n@media (min-width: 720px) {\n .offcanvas-md {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-md .offcanvas-header {\n display: none;\n }\n .offcanvas-md .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 959.98px) {\n .offcanvas-lg {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 959.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-lg {\n transition: none;\n }\n}\n@media (max-width: 959.98px) {\n .offcanvas-lg.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-lg.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-lg.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-lg.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {\n visibility: visible;\n }\n}\n@media (min-width: 960px) {\n .offcanvas-lg {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-lg .offcanvas-header {\n display: none;\n }\n .offcanvas-lg .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 1199.98px) {\n .offcanvas-xl {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xl {\n transition: none;\n }\n}\n@media (max-width: 1199.98px) {\n .offcanvas-xl.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-xl.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-xl.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-xl.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {\n visibility: visible;\n }\n}\n@media (min-width: 1200px) {\n .offcanvas-xl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-xl .offcanvas-header {\n display: none;\n }\n .offcanvas-xl .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n.offcanvas {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .offcanvas {\n transition: none;\n }\n}\n.offcanvas.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n}\n.offcanvas.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n}\n.offcanvas.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n}\n.offcanvas.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n}\n.offcanvas.showing, .offcanvas.show:not(.hiding) {\n transform: none;\n}\n.offcanvas.showing, .offcanvas.hiding, .offcanvas.show {\n visibility: visible;\n}\n\n.offcanvas-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n.offcanvas-backdrop.fade {\n opacity: 0;\n}\n.offcanvas-backdrop.show {\n opacity: 0.5;\n}\n\n.offcanvas-header {\n display: flex;\n align-items: center;\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n}\n.offcanvas-header .btn-close {\n padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5);\n margin: calc(-0.5 * var(--bs-offcanvas-padding-y)) calc(-0.5 * var(--bs-offcanvas-padding-x)) calc(-0.5 * var(--bs-offcanvas-padding-y)) auto;\n}\n\n.offcanvas-title {\n margin-bottom: 0;\n line-height: var(--bs-offcanvas-title-line-height);\n}\n\n.offcanvas-body {\n flex-grow: 1;\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n overflow-y: auto;\n}\n\n.placeholder {\n display: inline-block;\n min-height: 1em;\n vertical-align: middle;\n cursor: wait;\n background-color: currentcolor;\n opacity: 0.5;\n}\n.placeholder.btn::before {\n display: inline-block;\n content: \"\";\n}\n\n.placeholder-xs {\n min-height: 0.6em;\n}\n\n.placeholder-sm {\n min-height: 0.8em;\n}\n\n.placeholder-lg {\n min-height: 1.2em;\n}\n\n.placeholder-glow .placeholder {\n animation: placeholder-glow 2s ease-in-out infinite;\n}\n\n@keyframes placeholder-glow {\n 50% {\n opacity: 0.2;\n }\n}\n.placeholder-wave {\n mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n mask-size: 200% 100%;\n animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n 100% {\n mask-position: -200% 0%;\n }\n}\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.text-bg-primary {\n color: #fff !important;\n background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-secondary {\n color: #fff !important;\n background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-success {\n color: #fff !important;\n background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-info {\n color: #000 !important;\n background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-warning {\n color: #000 !important;\n background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-danger {\n color: #fff !important;\n background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-light {\n color: #000 !important;\n background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-dark {\n color: #fff !important;\n background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.link-primary {\n color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-primary:hover, .link-primary:focus {\n color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-secondary {\n color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-secondary:hover, .link-secondary:focus {\n color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-success {\n color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-success:hover, .link-success:focus {\n color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-info {\n color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-info:hover, .link-info:focus {\n color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-warning {\n color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-warning:hover, .link-warning:focus {\n color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-danger {\n color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-danger:hover, .link-danger:focus {\n color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-light {\n color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-light:hover, .link-light:focus {\n color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-dark {\n color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-dark:hover, .link-dark:focus {\n color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-body-emphasis {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-body-emphasis:hover, .link-body-emphasis:focus {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;\n}\n\n.focus-ring:focus {\n outline: 0;\n box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);\n}\n\n.icon-link {\n display: inline-flex;\n gap: 0.375rem;\n align-items: center;\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));\n text-underline-offset: 0.25em;\n backface-visibility: hidden;\n}\n.icon-link > .bi {\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n fill: currentcolor;\n transition: 0.2s ease-in-out transform;\n}\n@media (prefers-reduced-motion: reduce) {\n .icon-link > .bi {\n transition: none;\n }\n}\n\n.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0));\n}\n\n.ratio {\n position: relative;\n width: 100%;\n}\n.ratio::before {\n display: block;\n padding-top: var(--bs-aspect-ratio);\n content: \"\";\n}\n.ratio > * {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.ratio-1x1 {\n --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n --bs-aspect-ratio: 75%;\n}\n\n.ratio-16x9 {\n --bs-aspect-ratio: 56.25%;\n}\n\n.ratio-21x9 {\n --bs-aspect-ratio: 42.8571428571%;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n.sticky-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n}\n\n.sticky-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n}\n\n@media (min-width: 540px) {\n .sticky-sm-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-sm-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 720px) {\n .sticky-md-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-md-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 960px) {\n .sticky-lg-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-lg-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 1200px) {\n .sticky-xl-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-xl-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n.hstack {\n display: flex;\n flex-direction: row;\n align-items: center;\n align-self: stretch;\n}\n\n.vstack {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n.visually-hidden:not(caption),\n.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n position: absolute !important;\n}\n\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n content: \"\";\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.vr {\n display: inline-block;\n align-self: stretch;\n width: var(--bs-border-width);\n min-height: 1em;\n background-color: currentcolor;\n opacity: 0.25;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.float-start {\n float: left !important;\n}\n\n.float-end {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n.object-fit-contain {\n object-fit: contain !important;\n}\n\n.object-fit-cover {\n object-fit: cover !important;\n}\n\n.object-fit-fill {\n object-fit: fill !important;\n}\n\n.object-fit-scale {\n object-fit: scale-down !important;\n}\n\n.object-fit-none {\n object-fit: none !important;\n}\n\n.opacity-0 {\n opacity: 0 !important;\n}\n\n.opacity-25 {\n opacity: 0.25 !important;\n}\n\n.opacity-50 {\n opacity: 0.5 !important;\n}\n\n.opacity-75 {\n opacity: 0.75 !important;\n}\n\n.opacity-100 {\n opacity: 1 !important;\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.overflow-visible {\n overflow: visible !important;\n}\n\n.overflow-scroll {\n overflow: scroll !important;\n}\n\n.overflow-x-auto {\n overflow-x: auto !important;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden !important;\n}\n\n.overflow-x-visible {\n overflow-x: visible !important;\n}\n\n.overflow-x-scroll {\n overflow-x: scroll !important;\n}\n\n.overflow-y-auto {\n overflow-y: auto !important;\n}\n\n.overflow-y-hidden {\n overflow-y: hidden !important;\n}\n\n.overflow-y-visible {\n overflow-y: visible !important;\n}\n\n.overflow-y-scroll {\n overflow-y: scroll !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.shadow {\n box-shadow: var(--bs-box-shadow) !important;\n}\n\n.shadow-sm {\n box-shadow: var(--bs-box-shadow-sm) !important;\n}\n\n.shadow-lg {\n box-shadow: var(--bs-box-shadow-lg) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.focus-ring-primary {\n --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-secondary {\n --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-success {\n --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-info {\n --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-warning {\n --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-danger {\n --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-light {\n --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-dark {\n --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity));\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: sticky !important;\n}\n\n.top-0 {\n top: 0 !important;\n}\n\n.top-50 {\n top: 50% !important;\n}\n\n.top-100 {\n top: 100% !important;\n}\n\n.bottom-0 {\n bottom: 0 !important;\n}\n\n.bottom-50 {\n bottom: 50% !important;\n}\n\n.bottom-100 {\n bottom: 100% !important;\n}\n\n.start-0 {\n left: 0 !important;\n}\n\n.start-50 {\n left: 50% !important;\n}\n\n.start-100 {\n left: 100% !important;\n}\n\n.end-0 {\n right: 0 !important;\n}\n\n.end-50 {\n right: 50% !important;\n}\n\n.end-100 {\n right: 100% !important;\n}\n\n.translate-middle {\n transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n transform: translateY(-50%) !important;\n}\n\n.border {\n border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top {\n border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-end {\n border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-end-0 {\n border-right: 0 !important;\n}\n\n.border-bottom {\n border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-start {\n border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-start-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-secondary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-success {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-info {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-warning {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-danger {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-light {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-dark {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-black {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-white {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-primary-subtle {\n border-color: var(--bs-primary-border-subtle) !important;\n}\n\n.border-secondary-subtle {\n border-color: var(--bs-secondary-border-subtle) !important;\n}\n\n.border-success-subtle {\n border-color: var(--bs-success-border-subtle) !important;\n}\n\n.border-info-subtle {\n border-color: var(--bs-info-border-subtle) !important;\n}\n\n.border-warning-subtle {\n border-color: var(--bs-warning-border-subtle) !important;\n}\n\n.border-danger-subtle {\n border-color: var(--bs-danger-border-subtle) !important;\n}\n\n.border-light-subtle {\n border-color: var(--bs-light-border-subtle) !important;\n}\n\n.border-dark-subtle {\n border-color: var(--bs-dark-border-subtle) !important;\n}\n\n.border-1 {\n border-width: 1px !important;\n}\n\n.border-2 {\n border-width: 2px !important;\n}\n\n.border-3 {\n border-width: 3px !important;\n}\n\n.border-4 {\n border-width: 4px !important;\n}\n\n.border-5 {\n border-width: 5px !important;\n}\n\n.border-opacity-10 {\n --bs-border-opacity: 0.1;\n}\n\n.border-opacity-25 {\n --bs-border-opacity: 0.25;\n}\n\n.border-opacity-50 {\n --bs-border-opacity: 0.5;\n}\n\n.border-opacity-75 {\n --bs-border-opacity: 0.75;\n}\n\n.border-opacity-100 {\n --bs-border-opacity: 1;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n.gap-0 {\n gap: 0 !important;\n}\n\n.gap-1 {\n gap: 0.25rem !important;\n}\n\n.gap-2 {\n gap: 0.5rem !important;\n}\n\n.gap-3 {\n gap: 1rem !important;\n}\n\n.gap-4 {\n gap: 1.5rem !important;\n}\n\n.gap-5 {\n gap: 3rem !important;\n}\n\n.row-gap-0 {\n row-gap: 0 !important;\n}\n\n.row-gap-1 {\n row-gap: 0.25rem !important;\n}\n\n.row-gap-2 {\n row-gap: 0.5rem !important;\n}\n\n.row-gap-3 {\n row-gap: 1rem !important;\n}\n\n.row-gap-4 {\n row-gap: 1.5rem !important;\n}\n\n.row-gap-5 {\n row-gap: 3rem !important;\n}\n\n.column-gap-0 {\n column-gap: 0 !important;\n}\n\n.column-gap-1 {\n column-gap: 0.25rem !important;\n}\n\n.column-gap-2 {\n column-gap: 0.5rem !important;\n}\n\n.column-gap-3 {\n column-gap: 1rem !important;\n}\n\n.column-gap-4 {\n column-gap: 1.5rem !important;\n}\n\n.column-gap-5 {\n column-gap: 3rem !important;\n}\n\n.font-monospace {\n font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n font-size: 1.25rem !important;\n}\n\n.fs-6 {\n font-size: 1rem !important;\n}\n\n.fst-italic {\n font-style: italic !important;\n}\n\n.fst-normal {\n font-style: normal !important;\n}\n\n.fw-lighter {\n font-weight: lighter !important;\n}\n\n.fw-light {\n font-weight: 300 !important;\n}\n\n.fw-normal {\n font-weight: 400 !important;\n}\n\n.fw-medium {\n font-weight: 500 !important;\n}\n\n.fw-semibold {\n font-weight: 600 !important;\n}\n\n.fw-bold {\n font-weight: 700 !important;\n}\n\n.fw-bolder {\n font-weight: bolder !important;\n}\n\n.lh-1 {\n line-height: 1 !important;\n}\n\n.lh-sm {\n line-height: 1.25 !important;\n}\n\n.lh-base {\n line-height: 1.5 !important;\n}\n\n.lh-lg {\n line-height: 2 !important;\n}\n\n.text-start {\n text-align: left !important;\n}\n\n.text-end {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-decoration-underline {\n text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n text-decoration: line-through !important;\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n word-wrap: break-word !important;\n word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-black-50 {\n --bs-text-opacity: 1;\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n --bs-text-opacity: 1;\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-body-secondary {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-body-tertiary {\n --bs-text-opacity: 1;\n color: var(--bs-tertiary-color) !important;\n}\n\n.text-body-emphasis {\n --bs-text-opacity: 1;\n color: var(--bs-emphasis-color) !important;\n}\n\n.text-reset {\n --bs-text-opacity: 1;\n color: inherit !important;\n}\n\n.text-opacity-25 {\n --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n --bs-text-opacity: 1;\n}\n\n.text-primary-emphasis {\n color: var(--bs-primary-text-emphasis) !important;\n}\n\n.text-secondary-emphasis {\n color: var(--bs-secondary-text-emphasis) !important;\n}\n\n.text-success-emphasis {\n color: var(--bs-success-text-emphasis) !important;\n}\n\n.text-info-emphasis {\n color: var(--bs-info-text-emphasis) !important;\n}\n\n.text-warning-emphasis {\n color: var(--bs-warning-text-emphasis) !important;\n}\n\n.text-danger-emphasis {\n color: var(--bs-danger-text-emphasis) !important;\n}\n\n.text-light-emphasis {\n color: var(--bs-light-text-emphasis) !important;\n}\n\n.text-dark-emphasis {\n color: var(--bs-dark-text-emphasis) !important;\n}\n\n.link-opacity-10 {\n --bs-link-opacity: 0.1;\n}\n\n.link-opacity-10-hover:hover {\n --bs-link-opacity: 0.1;\n}\n\n.link-opacity-25 {\n --bs-link-opacity: 0.25;\n}\n\n.link-opacity-25-hover:hover {\n --bs-link-opacity: 0.25;\n}\n\n.link-opacity-50 {\n --bs-link-opacity: 0.5;\n}\n\n.link-opacity-50-hover:hover {\n --bs-link-opacity: 0.5;\n}\n\n.link-opacity-75 {\n --bs-link-opacity: 0.75;\n}\n\n.link-opacity-75-hover:hover {\n --bs-link-opacity: 0.75;\n}\n\n.link-opacity-100 {\n --bs-link-opacity: 1;\n}\n\n.link-opacity-100-hover:hover {\n --bs-link-opacity: 1;\n}\n\n.link-offset-1 {\n text-underline-offset: 0.125em !important;\n}\n\n.link-offset-1-hover:hover {\n text-underline-offset: 0.125em !important;\n}\n\n.link-offset-2 {\n text-underline-offset: 0.25em !important;\n}\n\n.link-offset-2-hover:hover {\n text-underline-offset: 0.25em !important;\n}\n\n.link-offset-3 {\n text-underline-offset: 0.375em !important;\n}\n\n.link-offset-3-hover:hover {\n text-underline-offset: 0.375em !important;\n}\n\n.link-underline-primary {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-secondary {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-success {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-info {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-warning {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-danger {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-light {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-dark {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-underline-opacity-0 {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-0-hover:hover {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-10 {\n --bs-link-underline-opacity: 0.1;\n}\n\n.link-underline-opacity-10-hover:hover {\n --bs-link-underline-opacity: 0.1;\n}\n\n.link-underline-opacity-25 {\n --bs-link-underline-opacity: 0.25;\n}\n\n.link-underline-opacity-25-hover:hover {\n --bs-link-underline-opacity: 0.25;\n}\n\n.link-underline-opacity-50 {\n --bs-link-underline-opacity: 0.5;\n}\n\n.link-underline-opacity-50-hover:hover {\n --bs-link-underline-opacity: 0.5;\n}\n\n.link-underline-opacity-75 {\n --bs-link-underline-opacity: 0.75;\n}\n\n.link-underline-opacity-75-hover:hover {\n --bs-link-underline-opacity: 0.75;\n}\n\n.link-underline-opacity-100 {\n --bs-link-underline-opacity: 1;\n}\n\n.link-underline-opacity-100-hover:hover {\n --bs-link-underline-opacity: 1;\n}\n\n.bg-primary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n --bs-bg-opacity: 1;\n background-color: transparent !important;\n}\n\n.bg-body-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body-tertiary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-opacity-10 {\n --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n --bs-bg-opacity: 1;\n}\n\n.bg-primary-subtle {\n background-color: var(--bs-primary-bg-subtle) !important;\n}\n\n.bg-secondary-subtle {\n background-color: var(--bs-secondary-bg-subtle) !important;\n}\n\n.bg-success-subtle {\n background-color: var(--bs-success-bg-subtle) !important;\n}\n\n.bg-info-subtle {\n background-color: var(--bs-info-bg-subtle) !important;\n}\n\n.bg-warning-subtle {\n background-color: var(--bs-warning-bg-subtle) !important;\n}\n\n.bg-danger-subtle {\n background-color: var(--bs-danger-bg-subtle) !important;\n}\n\n.bg-light-subtle {\n background-color: var(--bs-light-bg-subtle) !important;\n}\n\n.bg-dark-subtle {\n background-color: var(--bs-dark-bg-subtle) !important;\n}\n\n.bg-gradient {\n background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n user-select: all !important;\n}\n\n.user-select-auto {\n user-select: auto !important;\n}\n\n.user-select-none {\n user-select: none !important;\n}\n\n.pe-none {\n pointer-events: none !important;\n}\n\n.pe-auto {\n pointer-events: auto !important;\n}\n\n.rounded {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.rounded-1 {\n border-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-2 {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-3 {\n border-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-4 {\n border-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-5 {\n border-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-top {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-0 {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n}\n\n.rounded-top-1 {\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-top-2 {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-3 {\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-top-4 {\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-top-5 {\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-top-circle {\n border-top-left-radius: 50% !important;\n border-top-right-radius: 50% !important;\n}\n\n.rounded-top-pill {\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-end {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-0 {\n border-top-right-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n}\n\n.rounded-end-1 {\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-end-2 {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-3 {\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-end-4 {\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-end-5 {\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-end-circle {\n border-top-right-radius: 50% !important;\n border-bottom-right-radius: 50% !important;\n}\n\n.rounded-end-pill {\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-0 {\n border-bottom-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n}\n\n.rounded-bottom-1 {\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-bottom-2 {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-3 {\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-bottom-4 {\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-bottom-5 {\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-bottom-circle {\n border-bottom-right-radius: 50% !important;\n border-bottom-left-radius: 50% !important;\n}\n\n.rounded-bottom-pill {\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-start {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-0 {\n border-bottom-left-radius: 0 !important;\n border-top-left-radius: 0 !important;\n}\n\n.rounded-start-1 {\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-start-2 {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-3 {\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-start-4 {\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-start-5 {\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-start-circle {\n border-bottom-left-radius: 50% !important;\n border-top-left-radius: 50% !important;\n}\n\n.rounded-start-pill {\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n.z-n1 {\n z-index: -1 !important;\n}\n\n.z-0 {\n z-index: 0 !important;\n}\n\n.z-1 {\n z-index: 1 !important;\n}\n\n.z-2 {\n z-index: 2 !important;\n}\n\n.z-3 {\n z-index: 3 !important;\n}\n\n@media (min-width: 540px) {\n .float-sm-start {\n float: left !important;\n }\n .float-sm-end {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n .object-fit-sm-contain {\n object-fit: contain !important;\n }\n .object-fit-sm-cover {\n object-fit: cover !important;\n }\n .object-fit-sm-fill {\n object-fit: fill !important;\n }\n .object-fit-sm-scale {\n object-fit: scale-down !important;\n }\n .object-fit-sm-none {\n object-fit: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n .gap-sm-0 {\n gap: 0 !important;\n }\n .gap-sm-1 {\n gap: 0.25rem !important;\n }\n .gap-sm-2 {\n gap: 0.5rem !important;\n }\n .gap-sm-3 {\n gap: 1rem !important;\n }\n .gap-sm-4 {\n gap: 1.5rem !important;\n }\n .gap-sm-5 {\n gap: 3rem !important;\n }\n .row-gap-sm-0 {\n row-gap: 0 !important;\n }\n .row-gap-sm-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-sm-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-sm-3 {\n row-gap: 1rem !important;\n }\n .row-gap-sm-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-sm-5 {\n row-gap: 3rem !important;\n }\n .column-gap-sm-0 {\n column-gap: 0 !important;\n }\n .column-gap-sm-1 {\n column-gap: 0.25rem !important;\n }\n .column-gap-sm-2 {\n column-gap: 0.5rem !important;\n }\n .column-gap-sm-3 {\n column-gap: 1rem !important;\n }\n .column-gap-sm-4 {\n column-gap: 1.5rem !important;\n }\n .column-gap-sm-5 {\n column-gap: 3rem !important;\n }\n .text-sm-start {\n text-align: left !important;\n }\n .text-sm-end {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n@media (min-width: 720px) {\n .float-md-start {\n float: left !important;\n }\n .float-md-end {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n .object-fit-md-contain {\n object-fit: contain !important;\n }\n .object-fit-md-cover {\n object-fit: cover !important;\n }\n .object-fit-md-fill {\n object-fit: fill !important;\n }\n .object-fit-md-scale {\n object-fit: scale-down !important;\n }\n .object-fit-md-none {\n object-fit: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n .gap-md-0 {\n gap: 0 !important;\n }\n .gap-md-1 {\n gap: 0.25rem !important;\n }\n .gap-md-2 {\n gap: 0.5rem !important;\n }\n .gap-md-3 {\n gap: 1rem !important;\n }\n .gap-md-4 {\n gap: 1.5rem !important;\n }\n .gap-md-5 {\n gap: 3rem !important;\n }\n .row-gap-md-0 {\n row-gap: 0 !important;\n }\n .row-gap-md-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-md-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-md-3 {\n row-gap: 1rem !important;\n }\n .row-gap-md-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-md-5 {\n row-gap: 3rem !important;\n }\n .column-gap-md-0 {\n column-gap: 0 !important;\n }\n .column-gap-md-1 {\n column-gap: 0.25rem !important;\n }\n .column-gap-md-2 {\n column-gap: 0.5rem !important;\n }\n .column-gap-md-3 {\n column-gap: 1rem !important;\n }\n .column-gap-md-4 {\n column-gap: 1.5rem !important;\n }\n .column-gap-md-5 {\n column-gap: 3rem !important;\n }\n .text-md-start {\n text-align: left !important;\n }\n .text-md-end {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n@media (min-width: 960px) {\n .float-lg-start {\n float: left !important;\n }\n .float-lg-end {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n .object-fit-lg-contain {\n object-fit: contain !important;\n }\n .object-fit-lg-cover {\n object-fit: cover !important;\n }\n .object-fit-lg-fill {\n object-fit: fill !important;\n }\n .object-fit-lg-scale {\n object-fit: scale-down !important;\n }\n .object-fit-lg-none {\n object-fit: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n .gap-lg-0 {\n gap: 0 !important;\n }\n .gap-lg-1 {\n gap: 0.25rem !important;\n }\n .gap-lg-2 {\n gap: 0.5rem !important;\n }\n .gap-lg-3 {\n gap: 1rem !important;\n }\n .gap-lg-4 {\n gap: 1.5rem !important;\n }\n .gap-lg-5 {\n gap: 3rem !important;\n }\n .row-gap-lg-0 {\n row-gap: 0 !important;\n }\n .row-gap-lg-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-lg-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-lg-3 {\n row-gap: 1rem !important;\n }\n .row-gap-lg-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-lg-5 {\n row-gap: 3rem !important;\n }\n .column-gap-lg-0 {\n column-gap: 0 !important;\n }\n .column-gap-lg-1 {\n column-gap: 0.25rem !important;\n }\n .column-gap-lg-2 {\n column-gap: 0.5rem !important;\n }\n .column-gap-lg-3 {\n column-gap: 1rem !important;\n }\n .column-gap-lg-4 {\n column-gap: 1.5rem !important;\n }\n .column-gap-lg-5 {\n column-gap: 3rem !important;\n }\n .text-lg-start {\n text-align: left !important;\n }\n .text-lg-end {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .float-xl-start {\n float: left !important;\n }\n .float-xl-end {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n .object-fit-xl-contain {\n object-fit: contain !important;\n }\n .object-fit-xl-cover {\n object-fit: cover !important;\n }\n .object-fit-xl-fill {\n object-fit: fill !important;\n }\n .object-fit-xl-scale {\n object-fit: scale-down !important;\n }\n .object-fit-xl-none {\n object-fit: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n .gap-xl-0 {\n gap: 0 !important;\n }\n .gap-xl-1 {\n gap: 0.25rem !important;\n }\n .gap-xl-2 {\n gap: 0.5rem !important;\n }\n .gap-xl-3 {\n gap: 1rem !important;\n }\n .gap-xl-4 {\n gap: 1.5rem !important;\n }\n .gap-xl-5 {\n gap: 3rem !important;\n }\n .row-gap-xl-0 {\n row-gap: 0 !important;\n }\n .row-gap-xl-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-xl-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-xl-3 {\n row-gap: 1rem !important;\n }\n .row-gap-xl-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-xl-5 {\n row-gap: 3rem !important;\n }\n .column-gap-xl-0 {\n column-gap: 0 !important;\n }\n .column-gap-xl-1 {\n column-gap: 0.25rem !important;\n }\n .column-gap-xl-2 {\n column-gap: 0.5rem !important;\n }\n .column-gap-xl-3 {\n column-gap: 1rem !important;\n }\n .column-gap-xl-4 {\n column-gap: 1.5rem !important;\n }\n .column-gap-xl-5 {\n column-gap: 3rem !important;\n }\n .text-xl-start {\n text-align: left !important;\n }\n .text-xl-end {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .fs-1 {\n font-size: 2.5rem !important;\n }\n .fs-2 {\n font-size: 2rem !important;\n }\n .fs-3 {\n font-size: 1.75rem !important;\n }\n .fs-4 {\n font-size: 1.5rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n/*!\n * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n.fa {\n font-family: var(--fa-style-family, \"Font Awesome 6 Free\");\n font-weight: var(--fa-style, 900);\n}\n\n.fa,\n.fa-classic,\n.fa-sharp,\n.fas,\n.fa-solid,\n.far,\n.fa-regular,\n.fab,\n.fa-brands {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n display: var(--fa-display, inline-block);\n font-style: normal;\n font-variant: normal;\n line-height: 1;\n text-rendering: auto;\n}\n\n.fas,\n.fa-classic,\n.fa-solid,\n.far,\n.fa-regular {\n font-family: \"Font Awesome 6 Free\";\n}\n\n.fab,\n.fa-brands {\n font-family: \"Font Awesome 6 Brands\";\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-2xs {\n font-size: 0.625em;\n line-height: 0.1em;\n vertical-align: 0.225em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n line-height: 0.0833333337em;\n vertical-align: 0.125em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n line-height: 0.0714285718em;\n vertical-align: 0.0535714295em;\n}\n\n.fa-lg {\n font-size: 1.25em;\n line-height: 0.05em;\n vertical-align: -0.075em;\n}\n\n.fa-xl {\n font-size: 1.5em;\n line-height: 0.0416666682em;\n vertical-align: -0.125em;\n}\n\n.fa-2xl {\n font-size: 2em;\n line-height: 0.03125em;\n vertical-align: -0.1875em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: var(--fa-li-margin, 2.5em);\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: calc(var(--fa-li-width, 2em) * -1);\n position: absolute;\n text-align: center;\n width: var(--fa-li-width, 2em);\n line-height: inherit;\n}\n\n.fa-border {\n border-color: var(--fa-border-color, #eee);\n border-radius: var(--fa-border-radius, 0.1em);\n border-style: var(--fa-border-style, solid);\n border-width: var(--fa-border-width, 0.08em);\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\n}\n\n.fa-pull-left {\n float: left;\n margin-right: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-pull-right {\n float: right;\n margin-left: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-beat {\n animation-name: fa-beat;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-bounce {\n animation-name: fa-bounce;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n}\n\n.fa-fade {\n animation-name: fa-fade;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-beat-fade {\n animation-name: fa-beat-fade;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-flip {\n animation-name: fa-flip;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-shake {\n animation-name: fa-shake;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin {\n animation-name: fa-spin;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 2s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin-reverse {\n --fa-animation-direction: reverse;\n}\n\n.fa-pulse,\n.fa-spin-pulse {\n animation-name: fa-spin;\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, steps(8));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fa-beat,\n .fa-bounce,\n .fa-fade,\n .fa-beat-fade,\n .fa-flip,\n .fa-pulse,\n .fa-shake,\n .fa-spin,\n .fa-spin-pulse {\n animation-delay: -1ms;\n animation-duration: 1ms;\n animation-iteration-count: 1;\n transition-delay: 0s;\n transition-duration: 0s;\n }\n}\n@keyframes fa-beat {\n 0%, 90% {\n transform: scale(1);\n }\n 45% {\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@keyframes fa-bounce {\n 0% {\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n transform: scale(1, 1) translateY(0);\n }\n}\n@keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@keyframes fa-flip {\n 50% {\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@keyframes fa-shake {\n 0% {\n transform: rotate(-15deg);\n }\n 4% {\n transform: rotate(15deg);\n }\n 8%, 24% {\n transform: rotate(-18deg);\n }\n 12%, 28% {\n transform: rotate(18deg);\n }\n 16% {\n transform: rotate(-22deg);\n }\n 20% {\n transform: rotate(22deg);\n }\n 32% {\n transform: rotate(-12deg);\n }\n 36% {\n transform: rotate(12deg);\n }\n 40%, 100% {\n transform: rotate(0deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n transform: scale(1, -1);\n}\n\n.fa-flip-both,\n.fa-flip-horizontal.fa-flip-vertical {\n transform: scale(-1, -1);\n}\n\n.fa-rotate-by {\n transform: rotate(var(--fa-rotate-angle, 0));\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n line-height: 2em;\n position: relative;\n vertical-align: middle;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n left: 0;\n position: absolute;\n text-align: center;\n width: 100%;\n z-index: var(--fa-stack-z-index, auto);\n}\n\n.fa-stack-1x {\n line-height: inherit;\n}\n\n.fa-stack-2x {\n font-size: 2em;\n}\n\n.fa-inverse {\n color: var(--fa-inverse, #fff);\n}\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n.fa-0::before {\n content: \"\\30 \";\n}\n\n.fa-1::before {\n content: \"\\31 \";\n}\n\n.fa-2::before {\n content: \"\\32 \";\n}\n\n.fa-3::before {\n content: \"\\33 \";\n}\n\n.fa-4::before {\n content: \"\\34 \";\n}\n\n.fa-5::before {\n content: \"\\35 \";\n}\n\n.fa-6::before {\n content: \"\\36 \";\n}\n\n.fa-7::before {\n content: \"\\37 \";\n}\n\n.fa-8::before {\n content: \"\\38 \";\n}\n\n.fa-9::before {\n content: \"\\39 \";\n}\n\n.fa-fill-drip::before {\n content: \"\\f576\";\n}\n\n.fa-arrows-to-circle::before {\n content: \"\\e4bd\";\n}\n\n.fa-circle-chevron-right::before {\n content: \"\\f138\";\n}\n\n.fa-chevron-circle-right::before {\n content: \"\\f138\";\n}\n\n.fa-at::before {\n content: \"\\@\";\n}\n\n.fa-trash-can::before {\n content: \"\\f2ed\";\n}\n\n.fa-trash-alt::before {\n content: \"\\f2ed\";\n}\n\n.fa-text-height::before {\n content: \"\\f034\";\n}\n\n.fa-user-xmark::before {\n content: \"\\f235\";\n}\n\n.fa-user-times::before {\n content: \"\\f235\";\n}\n\n.fa-stethoscope::before {\n content: \"\\f0f1\";\n}\n\n.fa-message::before {\n content: \"\\f27a\";\n}\n\n.fa-comment-alt::before {\n content: \"\\f27a\";\n}\n\n.fa-info::before {\n content: \"\\f129\";\n}\n\n.fa-down-left-and-up-right-to-center::before {\n content: \"\\f422\";\n}\n\n.fa-compress-alt::before {\n content: \"\\f422\";\n}\n\n.fa-explosion::before {\n content: \"\\e4e9\";\n}\n\n.fa-file-lines::before {\n content: \"\\f15c\";\n}\n\n.fa-file-alt::before {\n content: \"\\f15c\";\n}\n\n.fa-file-text::before {\n content: \"\\f15c\";\n}\n\n.fa-wave-square::before {\n content: \"\\f83e\";\n}\n\n.fa-ring::before {\n content: \"\\f70b\";\n}\n\n.fa-building-un::before {\n content: \"\\e4d9\";\n}\n\n.fa-dice-three::before {\n content: \"\\f527\";\n}\n\n.fa-calendar-days::before {\n content: \"\\f073\";\n}\n\n.fa-calendar-alt::before {\n content: \"\\f073\";\n}\n\n.fa-anchor-circle-check::before {\n content: \"\\e4aa\";\n}\n\n.fa-building-circle-arrow-right::before {\n content: \"\\e4d1\";\n}\n\n.fa-volleyball::before {\n content: \"\\f45f\";\n}\n\n.fa-volleyball-ball::before {\n content: \"\\f45f\";\n}\n\n.fa-arrows-up-to-line::before {\n content: \"\\e4c2\";\n}\n\n.fa-sort-down::before {\n content: \"\\f0dd\";\n}\n\n.fa-sort-desc::before {\n content: \"\\f0dd\";\n}\n\n.fa-circle-minus::before {\n content: \"\\f056\";\n}\n\n.fa-minus-circle::before {\n content: \"\\f056\";\n}\n\n.fa-door-open::before {\n content: \"\\f52b\";\n}\n\n.fa-right-from-bracket::before {\n content: \"\\f2f5\";\n}\n\n.fa-sign-out-alt::before {\n content: \"\\f2f5\";\n}\n\n.fa-atom::before {\n content: \"\\f5d2\";\n}\n\n.fa-soap::before {\n content: \"\\e06e\";\n}\n\n.fa-icons::before {\n content: \"\\f86d\";\n}\n\n.fa-heart-music-camera-bolt::before {\n content: \"\\f86d\";\n}\n\n.fa-microphone-lines-slash::before {\n content: \"\\f539\";\n}\n\n.fa-microphone-alt-slash::before {\n content: \"\\f539\";\n}\n\n.fa-bridge-circle-check::before {\n content: \"\\e4c9\";\n}\n\n.fa-pump-medical::before {\n content: \"\\e06a\";\n}\n\n.fa-fingerprint::before {\n content: \"\\f577\";\n}\n\n.fa-hand-point-right::before {\n content: \"\\f0a4\";\n}\n\n.fa-magnifying-glass-location::before {\n content: \"\\f689\";\n}\n\n.fa-search-location::before {\n content: \"\\f689\";\n}\n\n.fa-forward-step::before {\n content: \"\\f051\";\n}\n\n.fa-step-forward::before {\n content: \"\\f051\";\n}\n\n.fa-face-smile-beam::before {\n content: \"\\f5b8\";\n}\n\n.fa-smile-beam::before {\n content: \"\\f5b8\";\n}\n\n.fa-flag-checkered::before {\n content: \"\\f11e\";\n}\n\n.fa-football::before {\n content: \"\\f44e\";\n}\n\n.fa-football-ball::before {\n content: \"\\f44e\";\n}\n\n.fa-school-circle-exclamation::before {\n content: \"\\e56c\";\n}\n\n.fa-crop::before {\n content: \"\\f125\";\n}\n\n.fa-angles-down::before {\n content: \"\\f103\";\n}\n\n.fa-angle-double-down::before {\n content: \"\\f103\";\n}\n\n.fa-users-rectangle::before {\n content: \"\\e594\";\n}\n\n.fa-people-roof::before {\n content: \"\\e537\";\n}\n\n.fa-people-line::before {\n content: \"\\e534\";\n}\n\n.fa-beer-mug-empty::before {\n content: \"\\f0fc\";\n}\n\n.fa-beer::before {\n content: \"\\f0fc\";\n}\n\n.fa-diagram-predecessor::before {\n content: \"\\e477\";\n}\n\n.fa-arrow-up-long::before {\n content: \"\\f176\";\n}\n\n.fa-long-arrow-up::before {\n content: \"\\f176\";\n}\n\n.fa-fire-flame-simple::before {\n content: \"\\f46a\";\n}\n\n.fa-burn::before {\n content: \"\\f46a\";\n}\n\n.fa-person::before {\n content: \"\\f183\";\n}\n\n.fa-male::before {\n content: \"\\f183\";\n}\n\n.fa-laptop::before {\n content: \"\\f109\";\n}\n\n.fa-file-csv::before {\n content: \"\\f6dd\";\n}\n\n.fa-menorah::before {\n content: \"\\f676\";\n}\n\n.fa-truck-plane::before {\n content: \"\\e58f\";\n}\n\n.fa-record-vinyl::before {\n content: \"\\f8d9\";\n}\n\n.fa-face-grin-stars::before {\n content: \"\\f587\";\n}\n\n.fa-grin-stars::before {\n content: \"\\f587\";\n}\n\n.fa-bong::before {\n content: \"\\f55c\";\n}\n\n.fa-spaghetti-monster-flying::before {\n content: \"\\f67b\";\n}\n\n.fa-pastafarianism::before {\n content: \"\\f67b\";\n}\n\n.fa-arrow-down-up-across-line::before {\n content: \"\\e4af\";\n}\n\n.fa-spoon::before {\n content: \"\\f2e5\";\n}\n\n.fa-utensil-spoon::before {\n content: \"\\f2e5\";\n}\n\n.fa-jar-wheat::before {\n content: \"\\e517\";\n}\n\n.fa-envelopes-bulk::before {\n content: \"\\f674\";\n}\n\n.fa-mail-bulk::before {\n content: \"\\f674\";\n}\n\n.fa-file-circle-exclamation::before {\n content: \"\\e4eb\";\n}\n\n.fa-circle-h::before {\n content: \"\\f47e\";\n}\n\n.fa-hospital-symbol::before {\n content: \"\\f47e\";\n}\n\n.fa-pager::before {\n content: \"\\f815\";\n}\n\n.fa-address-book::before {\n content: \"\\f2b9\";\n}\n\n.fa-contact-book::before {\n content: \"\\f2b9\";\n}\n\n.fa-strikethrough::before {\n content: \"\\f0cc\";\n}\n\n.fa-k::before {\n content: \"K\";\n}\n\n.fa-landmark-flag::before {\n content: \"\\e51c\";\n}\n\n.fa-pencil::before {\n content: \"\\f303\";\n}\n\n.fa-pencil-alt::before {\n content: \"\\f303\";\n}\n\n.fa-backward::before {\n content: \"\\f04a\";\n}\n\n.fa-caret-right::before {\n content: \"\\f0da\";\n}\n\n.fa-comments::before {\n content: \"\\f086\";\n}\n\n.fa-paste::before {\n content: \"\\f0ea\";\n}\n\n.fa-file-clipboard::before {\n content: \"\\f0ea\";\n}\n\n.fa-code-pull-request::before {\n content: \"\\e13c\";\n}\n\n.fa-clipboard-list::before {\n content: \"\\f46d\";\n}\n\n.fa-truck-ramp-box::before {\n content: \"\\f4de\";\n}\n\n.fa-truck-loading::before {\n content: \"\\f4de\";\n}\n\n.fa-user-check::before {\n content: \"\\f4fc\";\n}\n\n.fa-vial-virus::before {\n content: \"\\e597\";\n}\n\n.fa-sheet-plastic::before {\n content: \"\\e571\";\n}\n\n.fa-blog::before {\n content: \"\\f781\";\n}\n\n.fa-user-ninja::before {\n content: \"\\f504\";\n}\n\n.fa-person-arrow-up-from-line::before {\n content: \"\\e539\";\n}\n\n.fa-scroll-torah::before {\n content: \"\\f6a0\";\n}\n\n.fa-torah::before {\n content: \"\\f6a0\";\n}\n\n.fa-broom-ball::before {\n content: \"\\f458\";\n}\n\n.fa-quidditch::before {\n content: \"\\f458\";\n}\n\n.fa-quidditch-broom-ball::before {\n content: \"\\f458\";\n}\n\n.fa-toggle-off::before {\n content: \"\\f204\";\n}\n\n.fa-box-archive::before {\n content: \"\\f187\";\n}\n\n.fa-archive::before {\n content: \"\\f187\";\n}\n\n.fa-person-drowning::before {\n content: \"\\e545\";\n}\n\n.fa-arrow-down-9-1::before {\n content: \"\\f886\";\n}\n\n.fa-sort-numeric-desc::before {\n content: \"\\f886\";\n}\n\n.fa-sort-numeric-down-alt::before {\n content: \"\\f886\";\n}\n\n.fa-face-grin-tongue-squint::before {\n content: \"\\f58a\";\n}\n\n.fa-grin-tongue-squint::before {\n content: \"\\f58a\";\n}\n\n.fa-spray-can::before {\n content: \"\\f5bd\";\n}\n\n.fa-truck-monster::before {\n content: \"\\f63b\";\n}\n\n.fa-w::before {\n content: \"W\";\n}\n\n.fa-earth-africa::before {\n content: \"\\f57c\";\n}\n\n.fa-globe-africa::before {\n content: \"\\f57c\";\n}\n\n.fa-rainbow::before {\n content: \"\\f75b\";\n}\n\n.fa-circle-notch::before {\n content: \"\\f1ce\";\n}\n\n.fa-tablet-screen-button::before {\n content: \"\\f3fa\";\n}\n\n.fa-tablet-alt::before {\n content: \"\\f3fa\";\n}\n\n.fa-paw::before {\n content: \"\\f1b0\";\n}\n\n.fa-cloud::before {\n content: \"\\f0c2\";\n}\n\n.fa-trowel-bricks::before {\n content: \"\\e58a\";\n}\n\n.fa-face-flushed::before {\n content: \"\\f579\";\n}\n\n.fa-flushed::before {\n content: \"\\f579\";\n}\n\n.fa-hospital-user::before {\n content: \"\\f80d\";\n}\n\n.fa-tent-arrow-left-right::before {\n content: \"\\e57f\";\n}\n\n.fa-gavel::before {\n content: \"\\f0e3\";\n}\n\n.fa-legal::before {\n content: \"\\f0e3\";\n}\n\n.fa-binoculars::before {\n content: \"\\f1e5\";\n}\n\n.fa-microphone-slash::before {\n content: \"\\f131\";\n}\n\n.fa-box-tissue::before {\n content: \"\\e05b\";\n}\n\n.fa-motorcycle::before {\n content: \"\\f21c\";\n}\n\n.fa-bell-concierge::before {\n content: \"\\f562\";\n}\n\n.fa-concierge-bell::before {\n content: \"\\f562\";\n}\n\n.fa-pen-ruler::before {\n content: \"\\f5ae\";\n}\n\n.fa-pencil-ruler::before {\n content: \"\\f5ae\";\n}\n\n.fa-people-arrows::before {\n content: \"\\e068\";\n}\n\n.fa-people-arrows-left-right::before {\n content: \"\\e068\";\n}\n\n.fa-mars-and-venus-burst::before {\n content: \"\\e523\";\n}\n\n.fa-square-caret-right::before {\n content: \"\\f152\";\n}\n\n.fa-caret-square-right::before {\n content: \"\\f152\";\n}\n\n.fa-scissors::before {\n content: \"\\f0c4\";\n}\n\n.fa-cut::before {\n content: \"\\f0c4\";\n}\n\n.fa-sun-plant-wilt::before {\n content: \"\\e57a\";\n}\n\n.fa-toilets-portable::before {\n content: \"\\e584\";\n}\n\n.fa-hockey-puck::before {\n content: \"\\f453\";\n}\n\n.fa-table::before {\n content: \"\\f0ce\";\n}\n\n.fa-magnifying-glass-arrow-right::before {\n content: \"\\e521\";\n}\n\n.fa-tachograph-digital::before {\n content: \"\\f566\";\n}\n\n.fa-digital-tachograph::before {\n content: \"\\f566\";\n}\n\n.fa-users-slash::before {\n content: \"\\e073\";\n}\n\n.fa-clover::before {\n content: \"\\e139\";\n}\n\n.fa-reply::before {\n content: \"\\f3e5\";\n}\n\n.fa-mail-reply::before {\n content: \"\\f3e5\";\n}\n\n.fa-star-and-crescent::before {\n content: \"\\f699\";\n}\n\n.fa-house-fire::before {\n content: \"\\e50c\";\n}\n\n.fa-square-minus::before {\n content: \"\\f146\";\n}\n\n.fa-minus-square::before {\n content: \"\\f146\";\n}\n\n.fa-helicopter::before {\n content: \"\\f533\";\n}\n\n.fa-compass::before {\n content: \"\\f14e\";\n}\n\n.fa-square-caret-down::before {\n content: \"\\f150\";\n}\n\n.fa-caret-square-down::before {\n content: \"\\f150\";\n}\n\n.fa-file-circle-question::before {\n content: \"\\e4ef\";\n}\n\n.fa-laptop-code::before {\n content: \"\\f5fc\";\n}\n\n.fa-swatchbook::before {\n content: \"\\f5c3\";\n}\n\n.fa-prescription-bottle::before {\n content: \"\\f485\";\n}\n\n.fa-bars::before {\n content: \"\\f0c9\";\n}\n\n.fa-navicon::before {\n content: \"\\f0c9\";\n}\n\n.fa-people-group::before {\n content: \"\\e533\";\n}\n\n.fa-hourglass-end::before {\n content: \"\\f253\";\n}\n\n.fa-hourglass-3::before {\n content: \"\\f253\";\n}\n\n.fa-heart-crack::before {\n content: \"\\f7a9\";\n}\n\n.fa-heart-broken::before {\n content: \"\\f7a9\";\n}\n\n.fa-square-up-right::before {\n content: \"\\f360\";\n}\n\n.fa-external-link-square-alt::before {\n content: \"\\f360\";\n}\n\n.fa-face-kiss-beam::before {\n content: \"\\f597\";\n}\n\n.fa-kiss-beam::before {\n content: \"\\f597\";\n}\n\n.fa-film::before {\n content: \"\\f008\";\n}\n\n.fa-ruler-horizontal::before {\n content: \"\\f547\";\n}\n\n.fa-people-robbery::before {\n content: \"\\e536\";\n}\n\n.fa-lightbulb::before {\n content: \"\\f0eb\";\n}\n\n.fa-caret-left::before {\n content: \"\\f0d9\";\n}\n\n.fa-circle-exclamation::before {\n content: \"\\f06a\";\n}\n\n.fa-exclamation-circle::before {\n content: \"\\f06a\";\n}\n\n.fa-school-circle-xmark::before {\n content: \"\\e56d\";\n}\n\n.fa-arrow-right-from-bracket::before {\n content: \"\\f08b\";\n}\n\n.fa-sign-out::before {\n content: \"\\f08b\";\n}\n\n.fa-circle-chevron-down::before {\n content: \"\\f13a\";\n}\n\n.fa-chevron-circle-down::before {\n content: \"\\f13a\";\n}\n\n.fa-unlock-keyhole::before {\n content: \"\\f13e\";\n}\n\n.fa-unlock-alt::before {\n content: \"\\f13e\";\n}\n\n.fa-cloud-showers-heavy::before {\n content: \"\\f740\";\n}\n\n.fa-headphones-simple::before {\n content: \"\\f58f\";\n}\n\n.fa-headphones-alt::before {\n content: \"\\f58f\";\n}\n\n.fa-sitemap::before {\n content: \"\\f0e8\";\n}\n\n.fa-circle-dollar-to-slot::before {\n content: \"\\f4b9\";\n}\n\n.fa-donate::before {\n content: \"\\f4b9\";\n}\n\n.fa-memory::before {\n content: \"\\f538\";\n}\n\n.fa-road-spikes::before {\n content: \"\\e568\";\n}\n\n.fa-fire-burner::before {\n content: \"\\e4f1\";\n}\n\n.fa-flag::before {\n content: \"\\f024\";\n}\n\n.fa-hanukiah::before {\n content: \"\\f6e6\";\n}\n\n.fa-feather::before {\n content: \"\\f52d\";\n}\n\n.fa-volume-low::before {\n content: \"\\f027\";\n}\n\n.fa-volume-down::before {\n content: \"\\f027\";\n}\n\n.fa-comment-slash::before {\n content: \"\\f4b3\";\n}\n\n.fa-cloud-sun-rain::before {\n content: \"\\f743\";\n}\n\n.fa-compress::before {\n content: \"\\f066\";\n}\n\n.fa-wheat-awn::before {\n content: \"\\e2cd\";\n}\n\n.fa-wheat-alt::before {\n content: \"\\e2cd\";\n}\n\n.fa-ankh::before {\n content: \"\\f644\";\n}\n\n.fa-hands-holding-child::before {\n content: \"\\e4fa\";\n}\n\n.fa-asterisk::before {\n content: \"\\*\";\n}\n\n.fa-square-check::before {\n content: \"\\f14a\";\n}\n\n.fa-check-square::before {\n content: \"\\f14a\";\n}\n\n.fa-peseta-sign::before {\n content: \"\\e221\";\n}\n\n.fa-heading::before {\n content: \"\\f1dc\";\n}\n\n.fa-header::before {\n content: \"\\f1dc\";\n}\n\n.fa-ghost::before {\n content: \"\\f6e2\";\n}\n\n.fa-list::before {\n content: \"\\f03a\";\n}\n\n.fa-list-squares::before {\n content: \"\\f03a\";\n}\n\n.fa-square-phone-flip::before {\n content: \"\\f87b\";\n}\n\n.fa-phone-square-alt::before {\n content: \"\\f87b\";\n}\n\n.fa-cart-plus::before {\n content: \"\\f217\";\n}\n\n.fa-gamepad::before {\n content: \"\\f11b\";\n}\n\n.fa-circle-dot::before {\n content: \"\\f192\";\n}\n\n.fa-dot-circle::before {\n content: \"\\f192\";\n}\n\n.fa-face-dizzy::before {\n content: \"\\f567\";\n}\n\n.fa-dizzy::before {\n content: \"\\f567\";\n}\n\n.fa-egg::before {\n content: \"\\f7fb\";\n}\n\n.fa-house-medical-circle-xmark::before {\n content: \"\\e513\";\n}\n\n.fa-campground::before {\n content: \"\\f6bb\";\n}\n\n.fa-folder-plus::before {\n content: \"\\f65e\";\n}\n\n.fa-futbol::before {\n content: \"\\f1e3\";\n}\n\n.fa-futbol-ball::before {\n content: \"\\f1e3\";\n}\n\n.fa-soccer-ball::before {\n content: \"\\f1e3\";\n}\n\n.fa-paintbrush::before {\n content: \"\\f1fc\";\n}\n\n.fa-paint-brush::before {\n content: \"\\f1fc\";\n}\n\n.fa-lock::before {\n content: \"\\f023\";\n}\n\n.fa-gas-pump::before {\n content: \"\\f52f\";\n}\n\n.fa-hot-tub-person::before {\n content: \"\\f593\";\n}\n\n.fa-hot-tub::before {\n content: \"\\f593\";\n}\n\n.fa-map-location::before {\n content: \"\\f59f\";\n}\n\n.fa-map-marked::before {\n content: \"\\f59f\";\n}\n\n.fa-house-flood-water::before {\n content: \"\\e50e\";\n}\n\n.fa-tree::before {\n content: \"\\f1bb\";\n}\n\n.fa-bridge-lock::before {\n content: \"\\e4cc\";\n}\n\n.fa-sack-dollar::before {\n content: \"\\f81d\";\n}\n\n.fa-pen-to-square::before {\n content: \"\\f044\";\n}\n\n.fa-edit::before {\n content: \"\\f044\";\n}\n\n.fa-car-side::before {\n content: \"\\f5e4\";\n}\n\n.fa-share-nodes::before {\n content: \"\\f1e0\";\n}\n\n.fa-share-alt::before {\n content: \"\\f1e0\";\n}\n\n.fa-heart-circle-minus::before {\n content: \"\\e4ff\";\n}\n\n.fa-hourglass-half::before {\n content: \"\\f252\";\n}\n\n.fa-hourglass-2::before {\n content: \"\\f252\";\n}\n\n.fa-microscope::before {\n content: \"\\f610\";\n}\n\n.fa-sink::before {\n content: \"\\e06d\";\n}\n\n.fa-bag-shopping::before {\n content: \"\\f290\";\n}\n\n.fa-shopping-bag::before {\n content: \"\\f290\";\n}\n\n.fa-arrow-down-z-a::before {\n content: \"\\f881\";\n}\n\n.fa-sort-alpha-desc::before {\n content: \"\\f881\";\n}\n\n.fa-sort-alpha-down-alt::before {\n content: \"\\f881\";\n}\n\n.fa-mitten::before {\n content: \"\\f7b5\";\n}\n\n.fa-person-rays::before {\n content: \"\\e54d\";\n}\n\n.fa-users::before {\n content: \"\\f0c0\";\n}\n\n.fa-eye-slash::before {\n content: \"\\f070\";\n}\n\n.fa-flask-vial::before {\n content: \"\\e4f3\";\n}\n\n.fa-hand::before {\n content: \"\\f256\";\n}\n\n.fa-hand-paper::before {\n content: \"\\f256\";\n}\n\n.fa-om::before {\n content: \"\\f679\";\n}\n\n.fa-worm::before {\n content: \"\\e599\";\n}\n\n.fa-house-circle-xmark::before {\n content: \"\\e50b\";\n}\n\n.fa-plug::before {\n content: \"\\f1e6\";\n}\n\n.fa-chevron-up::before {\n content: \"\\f077\";\n}\n\n.fa-hand-spock::before {\n content: \"\\f259\";\n}\n\n.fa-stopwatch::before {\n content: \"\\f2f2\";\n}\n\n.fa-face-kiss::before {\n content: \"\\f596\";\n}\n\n.fa-kiss::before {\n content: \"\\f596\";\n}\n\n.fa-bridge-circle-xmark::before {\n content: \"\\e4cb\";\n}\n\n.fa-face-grin-tongue::before {\n content: \"\\f589\";\n}\n\n.fa-grin-tongue::before {\n content: \"\\f589\";\n}\n\n.fa-chess-bishop::before {\n content: \"\\f43a\";\n}\n\n.fa-face-grin-wink::before {\n content: \"\\f58c\";\n}\n\n.fa-grin-wink::before {\n content: \"\\f58c\";\n}\n\n.fa-ear-deaf::before {\n content: \"\\f2a4\";\n}\n\n.fa-deaf::before {\n content: \"\\f2a4\";\n}\n\n.fa-deafness::before {\n content: \"\\f2a4\";\n}\n\n.fa-hard-of-hearing::before {\n content: \"\\f2a4\";\n}\n\n.fa-road-circle-check::before {\n content: \"\\e564\";\n}\n\n.fa-dice-five::before {\n content: \"\\f523\";\n}\n\n.fa-square-rss::before {\n content: \"\\f143\";\n}\n\n.fa-rss-square::before {\n content: \"\\f143\";\n}\n\n.fa-land-mine-on::before {\n content: \"\\e51b\";\n}\n\n.fa-i-cursor::before {\n content: \"\\f246\";\n}\n\n.fa-stamp::before {\n content: \"\\f5bf\";\n}\n\n.fa-stairs::before {\n content: \"\\e289\";\n}\n\n.fa-i::before {\n content: \"I\";\n}\n\n.fa-hryvnia-sign::before {\n content: \"\\f6f2\";\n}\n\n.fa-hryvnia::before {\n content: \"\\f6f2\";\n}\n\n.fa-pills::before {\n content: \"\\f484\";\n}\n\n.fa-face-grin-wide::before {\n content: \"\\f581\";\n}\n\n.fa-grin-alt::before {\n content: \"\\f581\";\n}\n\n.fa-tooth::before {\n content: \"\\f5c9\";\n}\n\n.fa-v::before {\n content: \"V\";\n}\n\n.fa-bangladeshi-taka-sign::before {\n content: \"\\e2e6\";\n}\n\n.fa-bicycle::before {\n content: \"\\f206\";\n}\n\n.fa-staff-snake::before {\n content: \"\\e579\";\n}\n\n.fa-rod-asclepius::before {\n content: \"\\e579\";\n}\n\n.fa-rod-snake::before {\n content: \"\\e579\";\n}\n\n.fa-staff-aesculapius::before {\n content: \"\\e579\";\n}\n\n.fa-head-side-cough-slash::before {\n content: \"\\e062\";\n}\n\n.fa-truck-medical::before {\n content: \"\\f0f9\";\n}\n\n.fa-ambulance::before {\n content: \"\\f0f9\";\n}\n\n.fa-wheat-awn-circle-exclamation::before {\n content: \"\\e598\";\n}\n\n.fa-snowman::before {\n content: \"\\f7d0\";\n}\n\n.fa-mortar-pestle::before {\n content: \"\\f5a7\";\n}\n\n.fa-road-barrier::before {\n content: \"\\e562\";\n}\n\n.fa-school::before {\n content: \"\\f549\";\n}\n\n.fa-igloo::before {\n content: \"\\f7ae\";\n}\n\n.fa-joint::before {\n content: \"\\f595\";\n}\n\n.fa-angle-right::before {\n content: \"\\f105\";\n}\n\n.fa-horse::before {\n content: \"\\f6f0\";\n}\n\n.fa-q::before {\n content: \"Q\";\n}\n\n.fa-g::before {\n content: \"G\";\n}\n\n.fa-notes-medical::before {\n content: \"\\f481\";\n}\n\n.fa-temperature-half::before {\n content: \"\\f2c9\";\n}\n\n.fa-temperature-2::before {\n content: \"\\f2c9\";\n}\n\n.fa-thermometer-2::before {\n content: \"\\f2c9\";\n}\n\n.fa-thermometer-half::before {\n content: \"\\f2c9\";\n}\n\n.fa-dong-sign::before {\n content: \"\\e169\";\n}\n\n.fa-capsules::before {\n content: \"\\f46b\";\n}\n\n.fa-poo-storm::before {\n content: \"\\f75a\";\n}\n\n.fa-poo-bolt::before {\n content: \"\\f75a\";\n}\n\n.fa-face-frown-open::before {\n content: \"\\f57a\";\n}\n\n.fa-frown-open::before {\n content: \"\\f57a\";\n}\n\n.fa-hand-point-up::before {\n content: \"\\f0a6\";\n}\n\n.fa-money-bill::before {\n content: \"\\f0d6\";\n}\n\n.fa-bookmark::before {\n content: \"\\f02e\";\n}\n\n.fa-align-justify::before {\n content: \"\\f039\";\n}\n\n.fa-umbrella-beach::before {\n content: \"\\f5ca\";\n}\n\n.fa-helmet-un::before {\n content: \"\\e503\";\n}\n\n.fa-bullseye::before {\n content: \"\\f140\";\n}\n\n.fa-bacon::before {\n content: \"\\f7e5\";\n}\n\n.fa-hand-point-down::before {\n content: \"\\f0a7\";\n}\n\n.fa-arrow-up-from-bracket::before {\n content: \"\\e09a\";\n}\n\n.fa-folder::before {\n content: \"\\f07b\";\n}\n\n.fa-folder-blank::before {\n content: \"\\f07b\";\n}\n\n.fa-file-waveform::before {\n content: \"\\f478\";\n}\n\n.fa-file-medical-alt::before {\n content: \"\\f478\";\n}\n\n.fa-radiation::before {\n content: \"\\f7b9\";\n}\n\n.fa-chart-simple::before {\n content: \"\\e473\";\n}\n\n.fa-mars-stroke::before {\n content: \"\\f229\";\n}\n\n.fa-vial::before {\n content: \"\\f492\";\n}\n\n.fa-gauge::before {\n content: \"\\f624\";\n}\n\n.fa-dashboard::before {\n content: \"\\f624\";\n}\n\n.fa-gauge-med::before {\n content: \"\\f624\";\n}\n\n.fa-tachometer-alt-average::before {\n content: \"\\f624\";\n}\n\n.fa-wand-magic-sparkles::before {\n content: \"\\e2ca\";\n}\n\n.fa-magic-wand-sparkles::before {\n content: \"\\e2ca\";\n}\n\n.fa-e::before {\n content: \"E\";\n}\n\n.fa-pen-clip::before {\n content: \"\\f305\";\n}\n\n.fa-pen-alt::before {\n content: \"\\f305\";\n}\n\n.fa-bridge-circle-exclamation::before {\n content: \"\\e4ca\";\n}\n\n.fa-user::before {\n content: \"\\f007\";\n}\n\n.fa-school-circle-check::before {\n content: \"\\e56b\";\n}\n\n.fa-dumpster::before {\n content: \"\\f793\";\n}\n\n.fa-van-shuttle::before {\n content: \"\\f5b6\";\n}\n\n.fa-shuttle-van::before {\n content: \"\\f5b6\";\n}\n\n.fa-building-user::before {\n content: \"\\e4da\";\n}\n\n.fa-square-caret-left::before {\n content: \"\\f191\";\n}\n\n.fa-caret-square-left::before {\n content: \"\\f191\";\n}\n\n.fa-highlighter::before {\n content: \"\\f591\";\n}\n\n.fa-key::before {\n content: \"\\f084\";\n}\n\n.fa-bullhorn::before {\n content: \"\\f0a1\";\n}\n\n.fa-globe::before {\n content: \"\\f0ac\";\n}\n\n.fa-synagogue::before {\n content: \"\\f69b\";\n}\n\n.fa-person-half-dress::before {\n content: \"\\e548\";\n}\n\n.fa-road-bridge::before {\n content: \"\\e563\";\n}\n\n.fa-location-arrow::before {\n content: \"\\f124\";\n}\n\n.fa-c::before {\n content: \"C\";\n}\n\n.fa-tablet-button::before {\n content: \"\\f10a\";\n}\n\n.fa-building-lock::before {\n content: \"\\e4d6\";\n}\n\n.fa-pizza-slice::before {\n content: \"\\f818\";\n}\n\n.fa-money-bill-wave::before {\n content: \"\\f53a\";\n}\n\n.fa-chart-area::before {\n content: \"\\f1fe\";\n}\n\n.fa-area-chart::before {\n content: \"\\f1fe\";\n}\n\n.fa-house-flag::before {\n content: \"\\e50d\";\n}\n\n.fa-person-circle-minus::before {\n content: \"\\e540\";\n}\n\n.fa-ban::before {\n content: \"\\f05e\";\n}\n\n.fa-cancel::before {\n content: \"\\f05e\";\n}\n\n.fa-camera-rotate::before {\n content: \"\\e0d8\";\n}\n\n.fa-spray-can-sparkles::before {\n content: \"\\f5d0\";\n}\n\n.fa-air-freshener::before {\n content: \"\\f5d0\";\n}\n\n.fa-star::before {\n content: \"\\f005\";\n}\n\n.fa-repeat::before {\n content: \"\\f363\";\n}\n\n.fa-cross::before {\n content: \"\\f654\";\n}\n\n.fa-box::before {\n content: \"\\f466\";\n}\n\n.fa-venus-mars::before {\n content: \"\\f228\";\n}\n\n.fa-arrow-pointer::before {\n content: \"\\f245\";\n}\n\n.fa-mouse-pointer::before {\n content: \"\\f245\";\n}\n\n.fa-maximize::before {\n content: \"\\f31e\";\n}\n\n.fa-expand-arrows-alt::before {\n content: \"\\f31e\";\n}\n\n.fa-charging-station::before {\n content: \"\\f5e7\";\n}\n\n.fa-shapes::before {\n content: \"\\f61f\";\n}\n\n.fa-triangle-circle-square::before {\n content: \"\\f61f\";\n}\n\n.fa-shuffle::before {\n content: \"\\f074\";\n}\n\n.fa-random::before {\n content: \"\\f074\";\n}\n\n.fa-person-running::before {\n content: \"\\f70c\";\n}\n\n.fa-running::before {\n content: \"\\f70c\";\n}\n\n.fa-mobile-retro::before {\n content: \"\\e527\";\n}\n\n.fa-grip-lines-vertical::before {\n content: \"\\f7a5\";\n}\n\n.fa-spider::before {\n content: \"\\f717\";\n}\n\n.fa-hands-bound::before {\n content: \"\\e4f9\";\n}\n\n.fa-file-invoice-dollar::before {\n content: \"\\f571\";\n}\n\n.fa-plane-circle-exclamation::before {\n content: \"\\e556\";\n}\n\n.fa-x-ray::before {\n content: \"\\f497\";\n}\n\n.fa-spell-check::before {\n content: \"\\f891\";\n}\n\n.fa-slash::before {\n content: \"\\f715\";\n}\n\n.fa-computer-mouse::before {\n content: \"\\f8cc\";\n}\n\n.fa-mouse::before {\n content: \"\\f8cc\";\n}\n\n.fa-arrow-right-to-bracket::before {\n content: \"\\f090\";\n}\n\n.fa-sign-in::before {\n content: \"\\f090\";\n}\n\n.fa-shop-slash::before {\n content: \"\\e070\";\n}\n\n.fa-store-alt-slash::before {\n content: \"\\e070\";\n}\n\n.fa-server::before {\n content: \"\\f233\";\n}\n\n.fa-virus-covid-slash::before {\n content: \"\\e4a9\";\n}\n\n.fa-shop-lock::before {\n content: \"\\e4a5\";\n}\n\n.fa-hourglass-start::before {\n content: \"\\f251\";\n}\n\n.fa-hourglass-1::before {\n content: \"\\f251\";\n}\n\n.fa-blender-phone::before {\n content: \"\\f6b6\";\n}\n\n.fa-building-wheat::before {\n content: \"\\e4db\";\n}\n\n.fa-person-breastfeeding::before {\n content: \"\\e53a\";\n}\n\n.fa-right-to-bracket::before {\n content: \"\\f2f6\";\n}\n\n.fa-sign-in-alt::before {\n content: \"\\f2f6\";\n}\n\n.fa-venus::before {\n content: \"\\f221\";\n}\n\n.fa-passport::before {\n content: \"\\f5ab\";\n}\n\n.fa-heart-pulse::before {\n content: \"\\f21e\";\n}\n\n.fa-heartbeat::before {\n content: \"\\f21e\";\n}\n\n.fa-people-carry-box::before {\n content: \"\\f4ce\";\n}\n\n.fa-people-carry::before {\n content: \"\\f4ce\";\n}\n\n.fa-temperature-high::before {\n content: \"\\f769\";\n}\n\n.fa-microchip::before {\n content: \"\\f2db\";\n}\n\n.fa-crown::before {\n content: \"\\f521\";\n}\n\n.fa-weight-hanging::before {\n content: \"\\f5cd\";\n}\n\n.fa-xmarks-lines::before {\n content: \"\\e59a\";\n}\n\n.fa-file-prescription::before {\n content: \"\\f572\";\n}\n\n.fa-weight-scale::before {\n content: \"\\f496\";\n}\n\n.fa-weight::before {\n content: \"\\f496\";\n}\n\n.fa-user-group::before {\n content: \"\\f500\";\n}\n\n.fa-user-friends::before {\n content: \"\\f500\";\n}\n\n.fa-arrow-up-a-z::before {\n content: \"\\f15e\";\n}\n\n.fa-sort-alpha-up::before {\n content: \"\\f15e\";\n}\n\n.fa-chess-knight::before {\n content: \"\\f441\";\n}\n\n.fa-face-laugh-squint::before {\n content: \"\\f59b\";\n}\n\n.fa-laugh-squint::before {\n content: \"\\f59b\";\n}\n\n.fa-wheelchair::before {\n content: \"\\f193\";\n}\n\n.fa-circle-arrow-up::before {\n content: \"\\f0aa\";\n}\n\n.fa-arrow-circle-up::before {\n content: \"\\f0aa\";\n}\n\n.fa-toggle-on::before {\n content: \"\\f205\";\n}\n\n.fa-person-walking::before {\n content: \"\\f554\";\n}\n\n.fa-walking::before {\n content: \"\\f554\";\n}\n\n.fa-l::before {\n content: \"L\";\n}\n\n.fa-fire::before {\n content: \"\\f06d\";\n}\n\n.fa-bed-pulse::before {\n content: \"\\f487\";\n}\n\n.fa-procedures::before {\n content: \"\\f487\";\n}\n\n.fa-shuttle-space::before {\n content: \"\\f197\";\n}\n\n.fa-space-shuttle::before {\n content: \"\\f197\";\n}\n\n.fa-face-laugh::before {\n content: \"\\f599\";\n}\n\n.fa-laugh::before {\n content: \"\\f599\";\n}\n\n.fa-folder-open::before {\n content: \"\\f07c\";\n}\n\n.fa-heart-circle-plus::before {\n content: \"\\e500\";\n}\n\n.fa-code-fork::before {\n content: \"\\e13b\";\n}\n\n.fa-city::before {\n content: \"\\f64f\";\n}\n\n.fa-microphone-lines::before {\n content: \"\\f3c9\";\n}\n\n.fa-microphone-alt::before {\n content: \"\\f3c9\";\n}\n\n.fa-pepper-hot::before {\n content: \"\\f816\";\n}\n\n.fa-unlock::before {\n content: \"\\f09c\";\n}\n\n.fa-colon-sign::before {\n content: \"\\e140\";\n}\n\n.fa-headset::before {\n content: \"\\f590\";\n}\n\n.fa-store-slash::before {\n content: \"\\e071\";\n}\n\n.fa-road-circle-xmark::before {\n content: \"\\e566\";\n}\n\n.fa-user-minus::before {\n content: \"\\f503\";\n}\n\n.fa-mars-stroke-up::before {\n content: \"\\f22a\";\n}\n\n.fa-mars-stroke-v::before {\n content: \"\\f22a\";\n}\n\n.fa-champagne-glasses::before {\n content: \"\\f79f\";\n}\n\n.fa-glass-cheers::before {\n content: \"\\f79f\";\n}\n\n.fa-clipboard::before {\n content: \"\\f328\";\n}\n\n.fa-house-circle-exclamation::before {\n content: \"\\e50a\";\n}\n\n.fa-file-arrow-up::before {\n content: \"\\f574\";\n}\n\n.fa-file-upload::before {\n content: \"\\f574\";\n}\n\n.fa-wifi::before {\n content: \"\\f1eb\";\n}\n\n.fa-wifi-3::before {\n content: \"\\f1eb\";\n}\n\n.fa-wifi-strong::before {\n content: \"\\f1eb\";\n}\n\n.fa-bath::before {\n content: \"\\f2cd\";\n}\n\n.fa-bathtub::before {\n content: \"\\f2cd\";\n}\n\n.fa-underline::before {\n content: \"\\f0cd\";\n}\n\n.fa-user-pen::before {\n content: \"\\f4ff\";\n}\n\n.fa-user-edit::before {\n content: \"\\f4ff\";\n}\n\n.fa-signature::before {\n content: \"\\f5b7\";\n}\n\n.fa-stroopwafel::before {\n content: \"\\f551\";\n}\n\n.fa-bold::before {\n content: \"\\f032\";\n}\n\n.fa-anchor-lock::before {\n content: \"\\e4ad\";\n}\n\n.fa-building-ngo::before {\n content: \"\\e4d7\";\n}\n\n.fa-manat-sign::before {\n content: \"\\e1d5\";\n}\n\n.fa-not-equal::before {\n content: \"\\f53e\";\n}\n\n.fa-border-top-left::before {\n content: \"\\f853\";\n}\n\n.fa-border-style::before {\n content: \"\\f853\";\n}\n\n.fa-map-location-dot::before {\n content: \"\\f5a0\";\n}\n\n.fa-map-marked-alt::before {\n content: \"\\f5a0\";\n}\n\n.fa-jedi::before {\n content: \"\\f669\";\n}\n\n.fa-square-poll-vertical::before {\n content: \"\\f681\";\n}\n\n.fa-poll::before {\n content: \"\\f681\";\n}\n\n.fa-mug-hot::before {\n content: \"\\f7b6\";\n}\n\n.fa-car-battery::before {\n content: \"\\f5df\";\n}\n\n.fa-battery-car::before {\n content: \"\\f5df\";\n}\n\n.fa-gift::before {\n content: \"\\f06b\";\n}\n\n.fa-dice-two::before {\n content: \"\\f528\";\n}\n\n.fa-chess-queen::before {\n content: \"\\f445\";\n}\n\n.fa-glasses::before {\n content: \"\\f530\";\n}\n\n.fa-chess-board::before {\n content: \"\\f43c\";\n}\n\n.fa-building-circle-check::before {\n content: \"\\e4d2\";\n}\n\n.fa-person-chalkboard::before {\n content: \"\\e53d\";\n}\n\n.fa-mars-stroke-right::before {\n content: \"\\f22b\";\n}\n\n.fa-mars-stroke-h::before {\n content: \"\\f22b\";\n}\n\n.fa-hand-back-fist::before {\n content: \"\\f255\";\n}\n\n.fa-hand-rock::before {\n content: \"\\f255\";\n}\n\n.fa-square-caret-up::before {\n content: \"\\f151\";\n}\n\n.fa-caret-square-up::before {\n content: \"\\f151\";\n}\n\n.fa-cloud-showers-water::before {\n content: \"\\e4e4\";\n}\n\n.fa-chart-bar::before {\n content: \"\\f080\";\n}\n\n.fa-bar-chart::before {\n content: \"\\f080\";\n}\n\n.fa-hands-bubbles::before {\n content: \"\\e05e\";\n}\n\n.fa-hands-wash::before {\n content: \"\\e05e\";\n}\n\n.fa-less-than-equal::before {\n content: \"\\f537\";\n}\n\n.fa-train::before {\n content: \"\\f238\";\n}\n\n.fa-eye-low-vision::before {\n content: \"\\f2a8\";\n}\n\n.fa-low-vision::before {\n content: \"\\f2a8\";\n}\n\n.fa-crow::before {\n content: \"\\f520\";\n}\n\n.fa-sailboat::before {\n content: \"\\e445\";\n}\n\n.fa-window-restore::before {\n content: \"\\f2d2\";\n}\n\n.fa-square-plus::before {\n content: \"\\f0fe\";\n}\n\n.fa-plus-square::before {\n content: \"\\f0fe\";\n}\n\n.fa-torii-gate::before {\n content: \"\\f6a1\";\n}\n\n.fa-frog::before {\n content: \"\\f52e\";\n}\n\n.fa-bucket::before {\n content: \"\\e4cf\";\n}\n\n.fa-image::before {\n content: \"\\f03e\";\n}\n\n.fa-microphone::before {\n content: \"\\f130\";\n}\n\n.fa-cow::before {\n content: \"\\f6c8\";\n}\n\n.fa-caret-up::before {\n content: \"\\f0d8\";\n}\n\n.fa-screwdriver::before {\n content: \"\\f54a\";\n}\n\n.fa-folder-closed::before {\n content: \"\\e185\";\n}\n\n.fa-house-tsunami::before {\n content: \"\\e515\";\n}\n\n.fa-square-nfi::before {\n content: \"\\e576\";\n}\n\n.fa-arrow-up-from-ground-water::before {\n content: \"\\e4b5\";\n}\n\n.fa-martini-glass::before {\n content: \"\\f57b\";\n}\n\n.fa-glass-martini-alt::before {\n content: \"\\f57b\";\n}\n\n.fa-rotate-left::before {\n content: \"\\f2ea\";\n}\n\n.fa-rotate-back::before {\n content: \"\\f2ea\";\n}\n\n.fa-rotate-backward::before {\n content: \"\\f2ea\";\n}\n\n.fa-undo-alt::before {\n content: \"\\f2ea\";\n}\n\n.fa-table-columns::before {\n content: \"\\f0db\";\n}\n\n.fa-columns::before {\n content: \"\\f0db\";\n}\n\n.fa-lemon::before {\n content: \"\\f094\";\n}\n\n.fa-head-side-mask::before {\n content: \"\\e063\";\n}\n\n.fa-handshake::before {\n content: \"\\f2b5\";\n}\n\n.fa-gem::before {\n content: \"\\f3a5\";\n}\n\n.fa-dolly::before {\n content: \"\\f472\";\n}\n\n.fa-dolly-box::before {\n content: \"\\f472\";\n}\n\n.fa-smoking::before {\n content: \"\\f48d\";\n}\n\n.fa-minimize::before {\n content: \"\\f78c\";\n}\n\n.fa-compress-arrows-alt::before {\n content: \"\\f78c\";\n}\n\n.fa-monument::before {\n content: \"\\f5a6\";\n}\n\n.fa-snowplow::before {\n content: \"\\f7d2\";\n}\n\n.fa-angles-right::before {\n content: \"\\f101\";\n}\n\n.fa-angle-double-right::before {\n content: \"\\f101\";\n}\n\n.fa-cannabis::before {\n content: \"\\f55f\";\n}\n\n.fa-circle-play::before {\n content: \"\\f144\";\n}\n\n.fa-play-circle::before {\n content: \"\\f144\";\n}\n\n.fa-tablets::before {\n content: \"\\f490\";\n}\n\n.fa-ethernet::before {\n content: \"\\f796\";\n}\n\n.fa-euro-sign::before {\n content: \"\\f153\";\n}\n\n.fa-eur::before {\n content: \"\\f153\";\n}\n\n.fa-euro::before {\n content: \"\\f153\";\n}\n\n.fa-chair::before {\n content: \"\\f6c0\";\n}\n\n.fa-circle-check::before {\n content: \"\\f058\";\n}\n\n.fa-check-circle::before {\n content: \"\\f058\";\n}\n\n.fa-circle-stop::before {\n content: \"\\f28d\";\n}\n\n.fa-stop-circle::before {\n content: \"\\f28d\";\n}\n\n.fa-compass-drafting::before {\n content: \"\\f568\";\n}\n\n.fa-drafting-compass::before {\n content: \"\\f568\";\n}\n\n.fa-plate-wheat::before {\n content: \"\\e55a\";\n}\n\n.fa-icicles::before {\n content: \"\\f7ad\";\n}\n\n.fa-person-shelter::before {\n content: \"\\e54f\";\n}\n\n.fa-neuter::before {\n content: \"\\f22c\";\n}\n\n.fa-id-badge::before {\n content: \"\\f2c1\";\n}\n\n.fa-marker::before {\n content: \"\\f5a1\";\n}\n\n.fa-face-laugh-beam::before {\n content: \"\\f59a\";\n}\n\n.fa-laugh-beam::before {\n content: \"\\f59a\";\n}\n\n.fa-helicopter-symbol::before {\n content: \"\\e502\";\n}\n\n.fa-universal-access::before {\n content: \"\\f29a\";\n}\n\n.fa-circle-chevron-up::before {\n content: \"\\f139\";\n}\n\n.fa-chevron-circle-up::before {\n content: \"\\f139\";\n}\n\n.fa-lari-sign::before {\n content: \"\\e1c8\";\n}\n\n.fa-volcano::before {\n content: \"\\f770\";\n}\n\n.fa-person-walking-dashed-line-arrow-right::before {\n content: \"\\e553\";\n}\n\n.fa-sterling-sign::before {\n content: \"\\f154\";\n}\n\n.fa-gbp::before {\n content: \"\\f154\";\n}\n\n.fa-pound-sign::before {\n content: \"\\f154\";\n}\n\n.fa-viruses::before {\n content: \"\\e076\";\n}\n\n.fa-square-person-confined::before {\n content: \"\\e577\";\n}\n\n.fa-user-tie::before {\n content: \"\\f508\";\n}\n\n.fa-arrow-down-long::before {\n content: \"\\f175\";\n}\n\n.fa-long-arrow-down::before {\n content: \"\\f175\";\n}\n\n.fa-tent-arrow-down-to-line::before {\n content: \"\\e57e\";\n}\n\n.fa-certificate::before {\n content: \"\\f0a3\";\n}\n\n.fa-reply-all::before {\n content: \"\\f122\";\n}\n\n.fa-mail-reply-all::before {\n content: \"\\f122\";\n}\n\n.fa-suitcase::before {\n content: \"\\f0f2\";\n}\n\n.fa-person-skating::before {\n content: \"\\f7c5\";\n}\n\n.fa-skating::before {\n content: \"\\f7c5\";\n}\n\n.fa-filter-circle-dollar::before {\n content: \"\\f662\";\n}\n\n.fa-funnel-dollar::before {\n content: \"\\f662\";\n}\n\n.fa-camera-retro::before {\n content: \"\\f083\";\n}\n\n.fa-circle-arrow-down::before {\n content: \"\\f0ab\";\n}\n\n.fa-arrow-circle-down::before {\n content: \"\\f0ab\";\n}\n\n.fa-file-import::before {\n content: \"\\f56f\";\n}\n\n.fa-arrow-right-to-file::before {\n content: \"\\f56f\";\n}\n\n.fa-square-arrow-up-right::before {\n content: \"\\f14c\";\n}\n\n.fa-external-link-square::before {\n content: \"\\f14c\";\n}\n\n.fa-box-open::before {\n content: \"\\f49e\";\n}\n\n.fa-scroll::before {\n content: \"\\f70e\";\n}\n\n.fa-spa::before {\n content: \"\\f5bb\";\n}\n\n.fa-location-pin-lock::before {\n content: \"\\e51f\";\n}\n\n.fa-pause::before {\n content: \"\\f04c\";\n}\n\n.fa-hill-avalanche::before {\n content: \"\\e507\";\n}\n\n.fa-temperature-empty::before {\n content: \"\\f2cb\";\n}\n\n.fa-temperature-0::before {\n content: \"\\f2cb\";\n}\n\n.fa-thermometer-0::before {\n content: \"\\f2cb\";\n}\n\n.fa-thermometer-empty::before {\n content: \"\\f2cb\";\n}\n\n.fa-bomb::before {\n content: \"\\f1e2\";\n}\n\n.fa-registered::before {\n content: \"\\f25d\";\n}\n\n.fa-address-card::before {\n content: \"\\f2bb\";\n}\n\n.fa-contact-card::before {\n content: \"\\f2bb\";\n}\n\n.fa-vcard::before {\n content: \"\\f2bb\";\n}\n\n.fa-scale-unbalanced-flip::before {\n content: \"\\f516\";\n}\n\n.fa-balance-scale-right::before {\n content: \"\\f516\";\n}\n\n.fa-subscript::before {\n content: \"\\f12c\";\n}\n\n.fa-diamond-turn-right::before {\n content: \"\\f5eb\";\n}\n\n.fa-directions::before {\n content: \"\\f5eb\";\n}\n\n.fa-burst::before {\n content: \"\\e4dc\";\n}\n\n.fa-house-laptop::before {\n content: \"\\e066\";\n}\n\n.fa-laptop-house::before {\n content: \"\\e066\";\n}\n\n.fa-face-tired::before {\n content: \"\\f5c8\";\n}\n\n.fa-tired::before {\n content: \"\\f5c8\";\n}\n\n.fa-money-bills::before {\n content: \"\\e1f3\";\n}\n\n.fa-smog::before {\n content: \"\\f75f\";\n}\n\n.fa-crutch::before {\n content: \"\\f7f7\";\n}\n\n.fa-cloud-arrow-up::before {\n content: \"\\f0ee\";\n}\n\n.fa-cloud-upload::before {\n content: \"\\f0ee\";\n}\n\n.fa-cloud-upload-alt::before {\n content: \"\\f0ee\";\n}\n\n.fa-palette::before {\n content: \"\\f53f\";\n}\n\n.fa-arrows-turn-right::before {\n content: \"\\e4c0\";\n}\n\n.fa-vest::before {\n content: \"\\e085\";\n}\n\n.fa-ferry::before {\n content: \"\\e4ea\";\n}\n\n.fa-arrows-down-to-people::before {\n content: \"\\e4b9\";\n}\n\n.fa-seedling::before {\n content: \"\\f4d8\";\n}\n\n.fa-sprout::before {\n content: \"\\f4d8\";\n}\n\n.fa-left-right::before {\n content: \"\\f337\";\n}\n\n.fa-arrows-alt-h::before {\n content: \"\\f337\";\n}\n\n.fa-boxes-packing::before {\n content: \"\\e4c7\";\n}\n\n.fa-circle-arrow-left::before {\n content: \"\\f0a8\";\n}\n\n.fa-arrow-circle-left::before {\n content: \"\\f0a8\";\n}\n\n.fa-group-arrows-rotate::before {\n content: \"\\e4f6\";\n}\n\n.fa-bowl-food::before {\n content: \"\\e4c6\";\n}\n\n.fa-candy-cane::before {\n content: \"\\f786\";\n}\n\n.fa-arrow-down-wide-short::before {\n content: \"\\f160\";\n}\n\n.fa-sort-amount-asc::before {\n content: \"\\f160\";\n}\n\n.fa-sort-amount-down::before {\n content: \"\\f160\";\n}\n\n.fa-cloud-bolt::before {\n content: \"\\f76c\";\n}\n\n.fa-thunderstorm::before {\n content: \"\\f76c\";\n}\n\n.fa-text-slash::before {\n content: \"\\f87d\";\n}\n\n.fa-remove-format::before {\n content: \"\\f87d\";\n}\n\n.fa-face-smile-wink::before {\n content: \"\\f4da\";\n}\n\n.fa-smile-wink::before {\n content: \"\\f4da\";\n}\n\n.fa-file-word::before {\n content: \"\\f1c2\";\n}\n\n.fa-file-powerpoint::before {\n content: \"\\f1c4\";\n}\n\n.fa-arrows-left-right::before {\n content: \"\\f07e\";\n}\n\n.fa-arrows-h::before {\n content: \"\\f07e\";\n}\n\n.fa-house-lock::before {\n content: \"\\e510\";\n}\n\n.fa-cloud-arrow-down::before {\n content: \"\\f0ed\";\n}\n\n.fa-cloud-download::before {\n content: \"\\f0ed\";\n}\n\n.fa-cloud-download-alt::before {\n content: \"\\f0ed\";\n}\n\n.fa-children::before {\n content: \"\\e4e1\";\n}\n\n.fa-chalkboard::before {\n content: \"\\f51b\";\n}\n\n.fa-blackboard::before {\n content: \"\\f51b\";\n}\n\n.fa-user-large-slash::before {\n content: \"\\f4fa\";\n}\n\n.fa-user-alt-slash::before {\n content: \"\\f4fa\";\n}\n\n.fa-envelope-open::before {\n content: \"\\f2b6\";\n}\n\n.fa-handshake-simple-slash::before {\n content: \"\\e05f\";\n}\n\n.fa-handshake-alt-slash::before {\n content: \"\\e05f\";\n}\n\n.fa-mattress-pillow::before {\n content: \"\\e525\";\n}\n\n.fa-guarani-sign::before {\n content: \"\\e19a\";\n}\n\n.fa-arrows-rotate::before {\n content: \"\\f021\";\n}\n\n.fa-refresh::before {\n content: \"\\f021\";\n}\n\n.fa-sync::before {\n content: \"\\f021\";\n}\n\n.fa-fire-extinguisher::before {\n content: \"\\f134\";\n}\n\n.fa-cruzeiro-sign::before {\n content: \"\\e152\";\n}\n\n.fa-greater-than-equal::before {\n content: \"\\f532\";\n}\n\n.fa-shield-halved::before {\n content: \"\\f3ed\";\n}\n\n.fa-shield-alt::before {\n content: \"\\f3ed\";\n}\n\n.fa-book-atlas::before {\n content: \"\\f558\";\n}\n\n.fa-atlas::before {\n content: \"\\f558\";\n}\n\n.fa-virus::before {\n content: \"\\e074\";\n}\n\n.fa-envelope-circle-check::before {\n content: \"\\e4e8\";\n}\n\n.fa-layer-group::before {\n content: \"\\f5fd\";\n}\n\n.fa-arrows-to-dot::before {\n content: \"\\e4be\";\n}\n\n.fa-archway::before {\n content: \"\\f557\";\n}\n\n.fa-heart-circle-check::before {\n content: \"\\e4fd\";\n}\n\n.fa-house-chimney-crack::before {\n content: \"\\f6f1\";\n}\n\n.fa-house-damage::before {\n content: \"\\f6f1\";\n}\n\n.fa-file-zipper::before {\n content: \"\\f1c6\";\n}\n\n.fa-file-archive::before {\n content: \"\\f1c6\";\n}\n\n.fa-square::before {\n content: \"\\f0c8\";\n}\n\n.fa-martini-glass-empty::before {\n content: \"\\f000\";\n}\n\n.fa-glass-martini::before {\n content: \"\\f000\";\n}\n\n.fa-couch::before {\n content: \"\\f4b8\";\n}\n\n.fa-cedi-sign::before {\n content: \"\\e0df\";\n}\n\n.fa-italic::before {\n content: \"\\f033\";\n}\n\n.fa-table-cells-column-lock::before {\n content: \"\\e678\";\n}\n\n.fa-church::before {\n content: \"\\f51d\";\n}\n\n.fa-comments-dollar::before {\n content: \"\\f653\";\n}\n\n.fa-democrat::before {\n content: \"\\f747\";\n}\n\n.fa-z::before {\n content: \"Z\";\n}\n\n.fa-person-skiing::before {\n content: \"\\f7c9\";\n}\n\n.fa-skiing::before {\n content: \"\\f7c9\";\n}\n\n.fa-road-lock::before {\n content: \"\\e567\";\n}\n\n.fa-a::before {\n content: \"A\";\n}\n\n.fa-temperature-arrow-down::before {\n content: \"\\e03f\";\n}\n\n.fa-temperature-down::before {\n content: \"\\e03f\";\n}\n\n.fa-feather-pointed::before {\n content: \"\\f56b\";\n}\n\n.fa-feather-alt::before {\n content: \"\\f56b\";\n}\n\n.fa-p::before {\n content: \"P\";\n}\n\n.fa-snowflake::before {\n content: \"\\f2dc\";\n}\n\n.fa-newspaper::before {\n content: \"\\f1ea\";\n}\n\n.fa-rectangle-ad::before {\n content: \"\\f641\";\n}\n\n.fa-ad::before {\n content: \"\\f641\";\n}\n\n.fa-circle-arrow-right::before {\n content: \"\\f0a9\";\n}\n\n.fa-arrow-circle-right::before {\n content: \"\\f0a9\";\n}\n\n.fa-filter-circle-xmark::before {\n content: \"\\e17b\";\n}\n\n.fa-locust::before {\n content: \"\\e520\";\n}\n\n.fa-sort::before {\n content: \"\\f0dc\";\n}\n\n.fa-unsorted::before {\n content: \"\\f0dc\";\n}\n\n.fa-list-ol::before {\n content: \"\\f0cb\";\n}\n\n.fa-list-1-2::before {\n content: \"\\f0cb\";\n}\n\n.fa-list-numeric::before {\n content: \"\\f0cb\";\n}\n\n.fa-person-dress-burst::before {\n content: \"\\e544\";\n}\n\n.fa-money-check-dollar::before {\n content: \"\\f53d\";\n}\n\n.fa-money-check-alt::before {\n content: \"\\f53d\";\n}\n\n.fa-vector-square::before {\n content: \"\\f5cb\";\n}\n\n.fa-bread-slice::before {\n content: \"\\f7ec\";\n}\n\n.fa-language::before {\n content: \"\\f1ab\";\n}\n\n.fa-face-kiss-wink-heart::before {\n content: \"\\f598\";\n}\n\n.fa-kiss-wink-heart::before {\n content: \"\\f598\";\n}\n\n.fa-filter::before {\n content: \"\\f0b0\";\n}\n\n.fa-question::before {\n content: \"\\?\";\n}\n\n.fa-file-signature::before {\n content: \"\\f573\";\n}\n\n.fa-up-down-left-right::before {\n content: \"\\f0b2\";\n}\n\n.fa-arrows-alt::before {\n content: \"\\f0b2\";\n}\n\n.fa-house-chimney-user::before {\n content: \"\\e065\";\n}\n\n.fa-hand-holding-heart::before {\n content: \"\\f4be\";\n}\n\n.fa-puzzle-piece::before {\n content: \"\\f12e\";\n}\n\n.fa-money-check::before {\n content: \"\\f53c\";\n}\n\n.fa-star-half-stroke::before {\n content: \"\\f5c0\";\n}\n\n.fa-star-half-alt::before {\n content: \"\\f5c0\";\n}\n\n.fa-code::before {\n content: \"\\f121\";\n}\n\n.fa-whiskey-glass::before {\n content: \"\\f7a0\";\n}\n\n.fa-glass-whiskey::before {\n content: \"\\f7a0\";\n}\n\n.fa-building-circle-exclamation::before {\n content: \"\\e4d3\";\n}\n\n.fa-magnifying-glass-chart::before {\n content: \"\\e522\";\n}\n\n.fa-arrow-up-right-from-square::before {\n content: \"\\f08e\";\n}\n\n.fa-external-link::before {\n content: \"\\f08e\";\n}\n\n.fa-cubes-stacked::before {\n content: \"\\e4e6\";\n}\n\n.fa-won-sign::before {\n content: \"\\f159\";\n}\n\n.fa-krw::before {\n content: \"\\f159\";\n}\n\n.fa-won::before {\n content: \"\\f159\";\n}\n\n.fa-virus-covid::before {\n content: \"\\e4a8\";\n}\n\n.fa-austral-sign::before {\n content: \"\\e0a9\";\n}\n\n.fa-f::before {\n content: \"F\";\n}\n\n.fa-leaf::before {\n content: \"\\f06c\";\n}\n\n.fa-road::before {\n content: \"\\f018\";\n}\n\n.fa-taxi::before {\n content: \"\\f1ba\";\n}\n\n.fa-cab::before {\n content: \"\\f1ba\";\n}\n\n.fa-person-circle-plus::before {\n content: \"\\e541\";\n}\n\n.fa-chart-pie::before {\n content: \"\\f200\";\n}\n\n.fa-pie-chart::before {\n content: \"\\f200\";\n}\n\n.fa-bolt-lightning::before {\n content: \"\\e0b7\";\n}\n\n.fa-sack-xmark::before {\n content: \"\\e56a\";\n}\n\n.fa-file-excel::before {\n content: \"\\f1c3\";\n}\n\n.fa-file-contract::before {\n content: \"\\f56c\";\n}\n\n.fa-fish-fins::before {\n content: \"\\e4f2\";\n}\n\n.fa-building-flag::before {\n content: \"\\e4d5\";\n}\n\n.fa-face-grin-beam::before {\n content: \"\\f582\";\n}\n\n.fa-grin-beam::before {\n content: \"\\f582\";\n}\n\n.fa-object-ungroup::before {\n content: \"\\f248\";\n}\n\n.fa-poop::before {\n content: \"\\f619\";\n}\n\n.fa-location-pin::before {\n content: \"\\f041\";\n}\n\n.fa-map-marker::before {\n content: \"\\f041\";\n}\n\n.fa-kaaba::before {\n content: \"\\f66b\";\n}\n\n.fa-toilet-paper::before {\n content: \"\\f71e\";\n}\n\n.fa-helmet-safety::before {\n content: \"\\f807\";\n}\n\n.fa-hard-hat::before {\n content: \"\\f807\";\n}\n\n.fa-hat-hard::before {\n content: \"\\f807\";\n}\n\n.fa-eject::before {\n content: \"\\f052\";\n}\n\n.fa-circle-right::before {\n content: \"\\f35a\";\n}\n\n.fa-arrow-alt-circle-right::before {\n content: \"\\f35a\";\n}\n\n.fa-plane-circle-check::before {\n content: \"\\e555\";\n}\n\n.fa-face-rolling-eyes::before {\n content: \"\\f5a5\";\n}\n\n.fa-meh-rolling-eyes::before {\n content: \"\\f5a5\";\n}\n\n.fa-object-group::before {\n content: \"\\f247\";\n}\n\n.fa-chart-line::before {\n content: \"\\f201\";\n}\n\n.fa-line-chart::before {\n content: \"\\f201\";\n}\n\n.fa-mask-ventilator::before {\n content: \"\\e524\";\n}\n\n.fa-arrow-right::before {\n content: \"\\f061\";\n}\n\n.fa-signs-post::before {\n content: \"\\f277\";\n}\n\n.fa-map-signs::before {\n content: \"\\f277\";\n}\n\n.fa-cash-register::before {\n content: \"\\f788\";\n}\n\n.fa-person-circle-question::before {\n content: \"\\e542\";\n}\n\n.fa-h::before {\n content: \"H\";\n}\n\n.fa-tarp::before {\n content: \"\\e57b\";\n}\n\n.fa-screwdriver-wrench::before {\n content: \"\\f7d9\";\n}\n\n.fa-tools::before {\n content: \"\\f7d9\";\n}\n\n.fa-arrows-to-eye::before {\n content: \"\\e4bf\";\n}\n\n.fa-plug-circle-bolt::before {\n content: \"\\e55b\";\n}\n\n.fa-heart::before {\n content: \"\\f004\";\n}\n\n.fa-mars-and-venus::before {\n content: \"\\f224\";\n}\n\n.fa-house-user::before {\n content: \"\\e1b0\";\n}\n\n.fa-home-user::before {\n content: \"\\e1b0\";\n}\n\n.fa-dumpster-fire::before {\n content: \"\\f794\";\n}\n\n.fa-house-crack::before {\n content: \"\\e3b1\";\n}\n\n.fa-martini-glass-citrus::before {\n content: \"\\f561\";\n}\n\n.fa-cocktail::before {\n content: \"\\f561\";\n}\n\n.fa-face-surprise::before {\n content: \"\\f5c2\";\n}\n\n.fa-surprise::before {\n content: \"\\f5c2\";\n}\n\n.fa-bottle-water::before {\n content: \"\\e4c5\";\n}\n\n.fa-circle-pause::before {\n content: \"\\f28b\";\n}\n\n.fa-pause-circle::before {\n content: \"\\f28b\";\n}\n\n.fa-toilet-paper-slash::before {\n content: \"\\e072\";\n}\n\n.fa-apple-whole::before {\n content: \"\\f5d1\";\n}\n\n.fa-apple-alt::before {\n content: \"\\f5d1\";\n}\n\n.fa-kitchen-set::before {\n content: \"\\e51a\";\n}\n\n.fa-r::before {\n content: \"R\";\n}\n\n.fa-temperature-quarter::before {\n content: \"\\f2ca\";\n}\n\n.fa-temperature-1::before {\n content: \"\\f2ca\";\n}\n\n.fa-thermometer-1::before {\n content: \"\\f2ca\";\n}\n\n.fa-thermometer-quarter::before {\n content: \"\\f2ca\";\n}\n\n.fa-cube::before {\n content: \"\\f1b2\";\n}\n\n.fa-bitcoin-sign::before {\n content: \"\\e0b4\";\n}\n\n.fa-shield-dog::before {\n content: \"\\e573\";\n}\n\n.fa-solar-panel::before {\n content: \"\\f5ba\";\n}\n\n.fa-lock-open::before {\n content: \"\\f3c1\";\n}\n\n.fa-elevator::before {\n content: \"\\e16d\";\n}\n\n.fa-money-bill-transfer::before {\n content: \"\\e528\";\n}\n\n.fa-money-bill-trend-up::before {\n content: \"\\e529\";\n}\n\n.fa-house-flood-water-circle-arrow-right::before {\n content: \"\\e50f\";\n}\n\n.fa-square-poll-horizontal::before {\n content: \"\\f682\";\n}\n\n.fa-poll-h::before {\n content: \"\\f682\";\n}\n\n.fa-circle::before {\n content: \"\\f111\";\n}\n\n.fa-backward-fast::before {\n content: \"\\f049\";\n}\n\n.fa-fast-backward::before {\n content: \"\\f049\";\n}\n\n.fa-recycle::before {\n content: \"\\f1b8\";\n}\n\n.fa-user-astronaut::before {\n content: \"\\f4fb\";\n}\n\n.fa-plane-slash::before {\n content: \"\\e069\";\n}\n\n.fa-trademark::before {\n content: \"\\f25c\";\n}\n\n.fa-basketball::before {\n content: \"\\f434\";\n}\n\n.fa-basketball-ball::before {\n content: \"\\f434\";\n}\n\n.fa-satellite-dish::before {\n content: \"\\f7c0\";\n}\n\n.fa-circle-up::before {\n content: \"\\f35b\";\n}\n\n.fa-arrow-alt-circle-up::before {\n content: \"\\f35b\";\n}\n\n.fa-mobile-screen-button::before {\n content: \"\\f3cd\";\n}\n\n.fa-mobile-alt::before {\n content: \"\\f3cd\";\n}\n\n.fa-volume-high::before {\n content: \"\\f028\";\n}\n\n.fa-volume-up::before {\n content: \"\\f028\";\n}\n\n.fa-users-rays::before {\n content: \"\\e593\";\n}\n\n.fa-wallet::before {\n content: \"\\f555\";\n}\n\n.fa-clipboard-check::before {\n content: \"\\f46c\";\n}\n\n.fa-file-audio::before {\n content: \"\\f1c7\";\n}\n\n.fa-burger::before {\n content: \"\\f805\";\n}\n\n.fa-hamburger::before {\n content: \"\\f805\";\n}\n\n.fa-wrench::before {\n content: \"\\f0ad\";\n}\n\n.fa-bugs::before {\n content: \"\\e4d0\";\n}\n\n.fa-rupee-sign::before {\n content: \"\\f156\";\n}\n\n.fa-rupee::before {\n content: \"\\f156\";\n}\n\n.fa-file-image::before {\n content: \"\\f1c5\";\n}\n\n.fa-circle-question::before {\n content: \"\\f059\";\n}\n\n.fa-question-circle::before {\n content: \"\\f059\";\n}\n\n.fa-plane-departure::before {\n content: \"\\f5b0\";\n}\n\n.fa-handshake-slash::before {\n content: \"\\e060\";\n}\n\n.fa-book-bookmark::before {\n content: \"\\e0bb\";\n}\n\n.fa-code-branch::before {\n content: \"\\f126\";\n}\n\n.fa-hat-cowboy::before {\n content: \"\\f8c0\";\n}\n\n.fa-bridge::before {\n content: \"\\e4c8\";\n}\n\n.fa-phone-flip::before {\n content: \"\\f879\";\n}\n\n.fa-phone-alt::before {\n content: \"\\f879\";\n}\n\n.fa-truck-front::before {\n content: \"\\e2b7\";\n}\n\n.fa-cat::before {\n content: \"\\f6be\";\n}\n\n.fa-anchor-circle-exclamation::before {\n content: \"\\e4ab\";\n}\n\n.fa-truck-field::before {\n content: \"\\e58d\";\n}\n\n.fa-route::before {\n content: \"\\f4d7\";\n}\n\n.fa-clipboard-question::before {\n content: \"\\e4e3\";\n}\n\n.fa-panorama::before {\n content: \"\\e209\";\n}\n\n.fa-comment-medical::before {\n content: \"\\f7f5\";\n}\n\n.fa-teeth-open::before {\n content: \"\\f62f\";\n}\n\n.fa-file-circle-minus::before {\n content: \"\\e4ed\";\n}\n\n.fa-tags::before {\n content: \"\\f02c\";\n}\n\n.fa-wine-glass::before {\n content: \"\\f4e3\";\n}\n\n.fa-forward-fast::before {\n content: \"\\f050\";\n}\n\n.fa-fast-forward::before {\n content: \"\\f050\";\n}\n\n.fa-face-meh-blank::before {\n content: \"\\f5a4\";\n}\n\n.fa-meh-blank::before {\n content: \"\\f5a4\";\n}\n\n.fa-square-parking::before {\n content: \"\\f540\";\n}\n\n.fa-parking::before {\n content: \"\\f540\";\n}\n\n.fa-house-signal::before {\n content: \"\\e012\";\n}\n\n.fa-bars-progress::before {\n content: \"\\f828\";\n}\n\n.fa-tasks-alt::before {\n content: \"\\f828\";\n}\n\n.fa-faucet-drip::before {\n content: \"\\e006\";\n}\n\n.fa-cart-flatbed::before {\n content: \"\\f474\";\n}\n\n.fa-dolly-flatbed::before {\n content: \"\\f474\";\n}\n\n.fa-ban-smoking::before {\n content: \"\\f54d\";\n}\n\n.fa-smoking-ban::before {\n content: \"\\f54d\";\n}\n\n.fa-terminal::before {\n content: \"\\f120\";\n}\n\n.fa-mobile-button::before {\n content: \"\\f10b\";\n}\n\n.fa-house-medical-flag::before {\n content: \"\\e514\";\n}\n\n.fa-basket-shopping::before {\n content: \"\\f291\";\n}\n\n.fa-shopping-basket::before {\n content: \"\\f291\";\n}\n\n.fa-tape::before {\n content: \"\\f4db\";\n}\n\n.fa-bus-simple::before {\n content: \"\\f55e\";\n}\n\n.fa-bus-alt::before {\n content: \"\\f55e\";\n}\n\n.fa-eye::before {\n content: \"\\f06e\";\n}\n\n.fa-face-sad-cry::before {\n content: \"\\f5b3\";\n}\n\n.fa-sad-cry::before {\n content: \"\\f5b3\";\n}\n\n.fa-audio-description::before {\n content: \"\\f29e\";\n}\n\n.fa-person-military-to-person::before {\n content: \"\\e54c\";\n}\n\n.fa-file-shield::before {\n content: \"\\e4f0\";\n}\n\n.fa-user-slash::before {\n content: \"\\f506\";\n}\n\n.fa-pen::before {\n content: \"\\f304\";\n}\n\n.fa-tower-observation::before {\n content: \"\\e586\";\n}\n\n.fa-file-code::before {\n content: \"\\f1c9\";\n}\n\n.fa-signal::before {\n content: \"\\f012\";\n}\n\n.fa-signal-5::before {\n content: \"\\f012\";\n}\n\n.fa-signal-perfect::before {\n content: \"\\f012\";\n}\n\n.fa-bus::before {\n content: \"\\f207\";\n}\n\n.fa-heart-circle-xmark::before {\n content: \"\\e501\";\n}\n\n.fa-house-chimney::before {\n content: \"\\e3af\";\n}\n\n.fa-home-lg::before {\n content: \"\\e3af\";\n}\n\n.fa-window-maximize::before {\n content: \"\\f2d0\";\n}\n\n.fa-face-frown::before {\n content: \"\\f119\";\n}\n\n.fa-frown::before {\n content: \"\\f119\";\n}\n\n.fa-prescription::before {\n content: \"\\f5b1\";\n}\n\n.fa-shop::before {\n content: \"\\f54f\";\n}\n\n.fa-store-alt::before {\n content: \"\\f54f\";\n}\n\n.fa-floppy-disk::before {\n content: \"\\f0c7\";\n}\n\n.fa-save::before {\n content: \"\\f0c7\";\n}\n\n.fa-vihara::before {\n content: \"\\f6a7\";\n}\n\n.fa-scale-unbalanced::before {\n content: \"\\f515\";\n}\n\n.fa-balance-scale-left::before {\n content: \"\\f515\";\n}\n\n.fa-sort-up::before {\n content: \"\\f0de\";\n}\n\n.fa-sort-asc::before {\n content: \"\\f0de\";\n}\n\n.fa-comment-dots::before {\n content: \"\\f4ad\";\n}\n\n.fa-commenting::before {\n content: \"\\f4ad\";\n}\n\n.fa-plant-wilt::before {\n content: \"\\e5aa\";\n}\n\n.fa-diamond::before {\n content: \"\\f219\";\n}\n\n.fa-face-grin-squint::before {\n content: \"\\f585\";\n}\n\n.fa-grin-squint::before {\n content: \"\\f585\";\n}\n\n.fa-hand-holding-dollar::before {\n content: \"\\f4c0\";\n}\n\n.fa-hand-holding-usd::before {\n content: \"\\f4c0\";\n}\n\n.fa-bacterium::before {\n content: \"\\e05a\";\n}\n\n.fa-hand-pointer::before {\n content: \"\\f25a\";\n}\n\n.fa-drum-steelpan::before {\n content: \"\\f56a\";\n}\n\n.fa-hand-scissors::before {\n content: \"\\f257\";\n}\n\n.fa-hands-praying::before {\n content: \"\\f684\";\n}\n\n.fa-praying-hands::before {\n content: \"\\f684\";\n}\n\n.fa-arrow-rotate-right::before {\n content: \"\\f01e\";\n}\n\n.fa-arrow-right-rotate::before {\n content: \"\\f01e\";\n}\n\n.fa-arrow-rotate-forward::before {\n content: \"\\f01e\";\n}\n\n.fa-redo::before {\n content: \"\\f01e\";\n}\n\n.fa-biohazard::before {\n content: \"\\f780\";\n}\n\n.fa-location-crosshairs::before {\n content: \"\\f601\";\n}\n\n.fa-location::before {\n content: \"\\f601\";\n}\n\n.fa-mars-double::before {\n content: \"\\f227\";\n}\n\n.fa-child-dress::before {\n content: \"\\e59c\";\n}\n\n.fa-users-between-lines::before {\n content: \"\\e591\";\n}\n\n.fa-lungs-virus::before {\n content: \"\\e067\";\n}\n\n.fa-face-grin-tears::before {\n content: \"\\f588\";\n}\n\n.fa-grin-tears::before {\n content: \"\\f588\";\n}\n\n.fa-phone::before {\n content: \"\\f095\";\n}\n\n.fa-calendar-xmark::before {\n content: \"\\f273\";\n}\n\n.fa-calendar-times::before {\n content: \"\\f273\";\n}\n\n.fa-child-reaching::before {\n content: \"\\e59d\";\n}\n\n.fa-head-side-virus::before {\n content: \"\\e064\";\n}\n\n.fa-user-gear::before {\n content: \"\\f4fe\";\n}\n\n.fa-user-cog::before {\n content: \"\\f4fe\";\n}\n\n.fa-arrow-up-1-9::before {\n content: \"\\f163\";\n}\n\n.fa-sort-numeric-up::before {\n content: \"\\f163\";\n}\n\n.fa-door-closed::before {\n content: \"\\f52a\";\n}\n\n.fa-shield-virus::before {\n content: \"\\e06c\";\n}\n\n.fa-dice-six::before {\n content: \"\\f526\";\n}\n\n.fa-mosquito-net::before {\n content: \"\\e52c\";\n}\n\n.fa-bridge-water::before {\n content: \"\\e4ce\";\n}\n\n.fa-person-booth::before {\n content: \"\\f756\";\n}\n\n.fa-text-width::before {\n content: \"\\f035\";\n}\n\n.fa-hat-wizard::before {\n content: \"\\f6e8\";\n}\n\n.fa-pen-fancy::before {\n content: \"\\f5ac\";\n}\n\n.fa-person-digging::before {\n content: \"\\f85e\";\n}\n\n.fa-digging::before {\n content: \"\\f85e\";\n}\n\n.fa-trash::before {\n content: \"\\f1f8\";\n}\n\n.fa-gauge-simple::before {\n content: \"\\f629\";\n}\n\n.fa-gauge-simple-med::before {\n content: \"\\f629\";\n}\n\n.fa-tachometer-average::before {\n content: \"\\f629\";\n}\n\n.fa-book-medical::before {\n content: \"\\f7e6\";\n}\n\n.fa-poo::before {\n content: \"\\f2fe\";\n}\n\n.fa-quote-right::before {\n content: \"\\f10e\";\n}\n\n.fa-quote-right-alt::before {\n content: \"\\f10e\";\n}\n\n.fa-shirt::before {\n content: \"\\f553\";\n}\n\n.fa-t-shirt::before {\n content: \"\\f553\";\n}\n\n.fa-tshirt::before {\n content: \"\\f553\";\n}\n\n.fa-cubes::before {\n content: \"\\f1b3\";\n}\n\n.fa-divide::before {\n content: \"\\f529\";\n}\n\n.fa-tenge-sign::before {\n content: \"\\f7d7\";\n}\n\n.fa-tenge::before {\n content: \"\\f7d7\";\n}\n\n.fa-headphones::before {\n content: \"\\f025\";\n}\n\n.fa-hands-holding::before {\n content: \"\\f4c2\";\n}\n\n.fa-hands-clapping::before {\n content: \"\\e1a8\";\n}\n\n.fa-republican::before {\n content: \"\\f75e\";\n}\n\n.fa-arrow-left::before {\n content: \"\\f060\";\n}\n\n.fa-person-circle-xmark::before {\n content: \"\\e543\";\n}\n\n.fa-ruler::before {\n content: \"\\f545\";\n}\n\n.fa-align-left::before {\n content: \"\\f036\";\n}\n\n.fa-dice-d6::before {\n content: \"\\f6d1\";\n}\n\n.fa-restroom::before {\n content: \"\\f7bd\";\n}\n\n.fa-j::before {\n content: \"J\";\n}\n\n.fa-users-viewfinder::before {\n content: \"\\e595\";\n}\n\n.fa-file-video::before {\n content: \"\\f1c8\";\n}\n\n.fa-up-right-from-square::before {\n content: \"\\f35d\";\n}\n\n.fa-external-link-alt::before {\n content: \"\\f35d\";\n}\n\n.fa-table-cells::before {\n content: \"\\f00a\";\n}\n\n.fa-th::before {\n content: \"\\f00a\";\n}\n\n.fa-file-pdf::before {\n content: \"\\f1c1\";\n}\n\n.fa-book-bible::before {\n content: \"\\f647\";\n}\n\n.fa-bible::before {\n content: \"\\f647\";\n}\n\n.fa-o::before {\n content: \"O\";\n}\n\n.fa-suitcase-medical::before {\n content: \"\\f0fa\";\n}\n\n.fa-medkit::before {\n content: \"\\f0fa\";\n}\n\n.fa-user-secret::before {\n content: \"\\f21b\";\n}\n\n.fa-otter::before {\n content: \"\\f700\";\n}\n\n.fa-person-dress::before {\n content: \"\\f182\";\n}\n\n.fa-female::before {\n content: \"\\f182\";\n}\n\n.fa-comment-dollar::before {\n content: \"\\f651\";\n}\n\n.fa-business-time::before {\n content: \"\\f64a\";\n}\n\n.fa-briefcase-clock::before {\n content: \"\\f64a\";\n}\n\n.fa-table-cells-large::before {\n content: \"\\f009\";\n}\n\n.fa-th-large::before {\n content: \"\\f009\";\n}\n\n.fa-book-tanakh::before {\n content: \"\\f827\";\n}\n\n.fa-tanakh::before {\n content: \"\\f827\";\n}\n\n.fa-phone-volume::before {\n content: \"\\f2a0\";\n}\n\n.fa-volume-control-phone::before {\n content: \"\\f2a0\";\n}\n\n.fa-hat-cowboy-side::before {\n content: \"\\f8c1\";\n}\n\n.fa-clipboard-user::before {\n content: \"\\f7f3\";\n}\n\n.fa-child::before {\n content: \"\\f1ae\";\n}\n\n.fa-lira-sign::before {\n content: \"\\f195\";\n}\n\n.fa-satellite::before {\n content: \"\\f7bf\";\n}\n\n.fa-plane-lock::before {\n content: \"\\e558\";\n}\n\n.fa-tag::before {\n content: \"\\f02b\";\n}\n\n.fa-comment::before {\n content: \"\\f075\";\n}\n\n.fa-cake-candles::before {\n content: \"\\f1fd\";\n}\n\n.fa-birthday-cake::before {\n content: \"\\f1fd\";\n}\n\n.fa-cake::before {\n content: \"\\f1fd\";\n}\n\n.fa-envelope::before {\n content: \"\\f0e0\";\n}\n\n.fa-angles-up::before {\n content: \"\\f102\";\n}\n\n.fa-angle-double-up::before {\n content: \"\\f102\";\n}\n\n.fa-paperclip::before {\n content: \"\\f0c6\";\n}\n\n.fa-arrow-right-to-city::before {\n content: \"\\e4b3\";\n}\n\n.fa-ribbon::before {\n content: \"\\f4d6\";\n}\n\n.fa-lungs::before {\n content: \"\\f604\";\n}\n\n.fa-arrow-up-9-1::before {\n content: \"\\f887\";\n}\n\n.fa-sort-numeric-up-alt::before {\n content: \"\\f887\";\n}\n\n.fa-litecoin-sign::before {\n content: \"\\e1d3\";\n}\n\n.fa-border-none::before {\n content: \"\\f850\";\n}\n\n.fa-circle-nodes::before {\n content: \"\\e4e2\";\n}\n\n.fa-parachute-box::before {\n content: \"\\f4cd\";\n}\n\n.fa-indent::before {\n content: \"\\f03c\";\n}\n\n.fa-truck-field-un::before {\n content: \"\\e58e\";\n}\n\n.fa-hourglass::before {\n content: \"\\f254\";\n}\n\n.fa-hourglass-empty::before {\n content: \"\\f254\";\n}\n\n.fa-mountain::before {\n content: \"\\f6fc\";\n}\n\n.fa-user-doctor::before {\n content: \"\\f0f0\";\n}\n\n.fa-user-md::before {\n content: \"\\f0f0\";\n}\n\n.fa-circle-info::before {\n content: \"\\f05a\";\n}\n\n.fa-info-circle::before {\n content: \"\\f05a\";\n}\n\n.fa-cloud-meatball::before {\n content: \"\\f73b\";\n}\n\n.fa-camera::before {\n content: \"\\f030\";\n}\n\n.fa-camera-alt::before {\n content: \"\\f030\";\n}\n\n.fa-square-virus::before {\n content: \"\\e578\";\n}\n\n.fa-meteor::before {\n content: \"\\f753\";\n}\n\n.fa-car-on::before {\n content: \"\\e4dd\";\n}\n\n.fa-sleigh::before {\n content: \"\\f7cc\";\n}\n\n.fa-arrow-down-1-9::before {\n content: \"\\f162\";\n}\n\n.fa-sort-numeric-asc::before {\n content: \"\\f162\";\n}\n\n.fa-sort-numeric-down::before {\n content: \"\\f162\";\n}\n\n.fa-hand-holding-droplet::before {\n content: \"\\f4c1\";\n}\n\n.fa-hand-holding-water::before {\n content: \"\\f4c1\";\n}\n\n.fa-water::before {\n content: \"\\f773\";\n}\n\n.fa-calendar-check::before {\n content: \"\\f274\";\n}\n\n.fa-braille::before {\n content: \"\\f2a1\";\n}\n\n.fa-prescription-bottle-medical::before {\n content: \"\\f486\";\n}\n\n.fa-prescription-bottle-alt::before {\n content: \"\\f486\";\n}\n\n.fa-landmark::before {\n content: \"\\f66f\";\n}\n\n.fa-truck::before {\n content: \"\\f0d1\";\n}\n\n.fa-crosshairs::before {\n content: \"\\f05b\";\n}\n\n.fa-person-cane::before {\n content: \"\\e53c\";\n}\n\n.fa-tent::before {\n content: \"\\e57d\";\n}\n\n.fa-vest-patches::before {\n content: \"\\e086\";\n}\n\n.fa-check-double::before {\n content: \"\\f560\";\n}\n\n.fa-arrow-down-a-z::before {\n content: \"\\f15d\";\n}\n\n.fa-sort-alpha-asc::before {\n content: \"\\f15d\";\n}\n\n.fa-sort-alpha-down::before {\n content: \"\\f15d\";\n}\n\n.fa-money-bill-wheat::before {\n content: \"\\e52a\";\n}\n\n.fa-cookie::before {\n content: \"\\f563\";\n}\n\n.fa-arrow-rotate-left::before {\n content: \"\\f0e2\";\n}\n\n.fa-arrow-left-rotate::before {\n content: \"\\f0e2\";\n}\n\n.fa-arrow-rotate-back::before {\n content: \"\\f0e2\";\n}\n\n.fa-arrow-rotate-backward::before {\n content: \"\\f0e2\";\n}\n\n.fa-undo::before {\n content: \"\\f0e2\";\n}\n\n.fa-hard-drive::before {\n content: \"\\f0a0\";\n}\n\n.fa-hdd::before {\n content: \"\\f0a0\";\n}\n\n.fa-face-grin-squint-tears::before {\n content: \"\\f586\";\n}\n\n.fa-grin-squint-tears::before {\n content: \"\\f586\";\n}\n\n.fa-dumbbell::before {\n content: \"\\f44b\";\n}\n\n.fa-rectangle-list::before {\n content: \"\\f022\";\n}\n\n.fa-list-alt::before {\n content: \"\\f022\";\n}\n\n.fa-tarp-droplet::before {\n content: \"\\e57c\";\n}\n\n.fa-house-medical-circle-check::before {\n content: \"\\e511\";\n}\n\n.fa-person-skiing-nordic::before {\n content: \"\\f7ca\";\n}\n\n.fa-skiing-nordic::before {\n content: \"\\f7ca\";\n}\n\n.fa-calendar-plus::before {\n content: \"\\f271\";\n}\n\n.fa-plane-arrival::before {\n content: \"\\f5af\";\n}\n\n.fa-circle-left::before {\n content: \"\\f359\";\n}\n\n.fa-arrow-alt-circle-left::before {\n content: \"\\f359\";\n}\n\n.fa-train-subway::before {\n content: \"\\f239\";\n}\n\n.fa-subway::before {\n content: \"\\f239\";\n}\n\n.fa-chart-gantt::before {\n content: \"\\e0e4\";\n}\n\n.fa-indian-rupee-sign::before {\n content: \"\\e1bc\";\n}\n\n.fa-indian-rupee::before {\n content: \"\\e1bc\";\n}\n\n.fa-inr::before {\n content: \"\\e1bc\";\n}\n\n.fa-crop-simple::before {\n content: \"\\f565\";\n}\n\n.fa-crop-alt::before {\n content: \"\\f565\";\n}\n\n.fa-money-bill-1::before {\n content: \"\\f3d1\";\n}\n\n.fa-money-bill-alt::before {\n content: \"\\f3d1\";\n}\n\n.fa-left-long::before {\n content: \"\\f30a\";\n}\n\n.fa-long-arrow-alt-left::before {\n content: \"\\f30a\";\n}\n\n.fa-dna::before {\n content: \"\\f471\";\n}\n\n.fa-virus-slash::before {\n content: \"\\e075\";\n}\n\n.fa-minus::before {\n content: \"\\f068\";\n}\n\n.fa-subtract::before {\n content: \"\\f068\";\n}\n\n.fa-chess::before {\n content: \"\\f439\";\n}\n\n.fa-arrow-left-long::before {\n content: \"\\f177\";\n}\n\n.fa-long-arrow-left::before {\n content: \"\\f177\";\n}\n\n.fa-plug-circle-check::before {\n content: \"\\e55c\";\n}\n\n.fa-street-view::before {\n content: \"\\f21d\";\n}\n\n.fa-franc-sign::before {\n content: \"\\e18f\";\n}\n\n.fa-volume-off::before {\n content: \"\\f026\";\n}\n\n.fa-hands-asl-interpreting::before {\n content: \"\\f2a3\";\n}\n\n.fa-american-sign-language-interpreting::before {\n content: \"\\f2a3\";\n}\n\n.fa-asl-interpreting::before {\n content: \"\\f2a3\";\n}\n\n.fa-hands-american-sign-language-interpreting::before {\n content: \"\\f2a3\";\n}\n\n.fa-gear::before {\n content: \"\\f013\";\n}\n\n.fa-cog::before {\n content: \"\\f013\";\n}\n\n.fa-droplet-slash::before {\n content: \"\\f5c7\";\n}\n\n.fa-tint-slash::before {\n content: \"\\f5c7\";\n}\n\n.fa-mosque::before {\n content: \"\\f678\";\n}\n\n.fa-mosquito::before {\n content: \"\\e52b\";\n}\n\n.fa-star-of-david::before {\n content: \"\\f69a\";\n}\n\n.fa-person-military-rifle::before {\n content: \"\\e54b\";\n}\n\n.fa-cart-shopping::before {\n content: \"\\f07a\";\n}\n\n.fa-shopping-cart::before {\n content: \"\\f07a\";\n}\n\n.fa-vials::before {\n content: \"\\f493\";\n}\n\n.fa-plug-circle-plus::before {\n content: \"\\e55f\";\n}\n\n.fa-place-of-worship::before {\n content: \"\\f67f\";\n}\n\n.fa-grip-vertical::before {\n content: \"\\f58e\";\n}\n\n.fa-arrow-turn-up::before {\n content: \"\\f148\";\n}\n\n.fa-level-up::before {\n content: \"\\f148\";\n}\n\n.fa-u::before {\n content: \"U\";\n}\n\n.fa-square-root-variable::before {\n content: \"\\f698\";\n}\n\n.fa-square-root-alt::before {\n content: \"\\f698\";\n}\n\n.fa-clock::before {\n content: \"\\f017\";\n}\n\n.fa-clock-four::before {\n content: \"\\f017\";\n}\n\n.fa-backward-step::before {\n content: \"\\f048\";\n}\n\n.fa-step-backward::before {\n content: \"\\f048\";\n}\n\n.fa-pallet::before {\n content: \"\\f482\";\n}\n\n.fa-faucet::before {\n content: \"\\e005\";\n}\n\n.fa-baseball-bat-ball::before {\n content: \"\\f432\";\n}\n\n.fa-s::before {\n content: \"S\";\n}\n\n.fa-timeline::before {\n content: \"\\e29c\";\n}\n\n.fa-keyboard::before {\n content: \"\\f11c\";\n}\n\n.fa-caret-down::before {\n content: \"\\f0d7\";\n}\n\n.fa-house-chimney-medical::before {\n content: \"\\f7f2\";\n}\n\n.fa-clinic-medical::before {\n content: \"\\f7f2\";\n}\n\n.fa-temperature-three-quarters::before {\n content: \"\\f2c8\";\n}\n\n.fa-temperature-3::before {\n content: \"\\f2c8\";\n}\n\n.fa-thermometer-3::before {\n content: \"\\f2c8\";\n}\n\n.fa-thermometer-three-quarters::before {\n content: \"\\f2c8\";\n}\n\n.fa-mobile-screen::before {\n content: \"\\f3cf\";\n}\n\n.fa-mobile-android-alt::before {\n content: \"\\f3cf\";\n}\n\n.fa-plane-up::before {\n content: \"\\e22d\";\n}\n\n.fa-piggy-bank::before {\n content: \"\\f4d3\";\n}\n\n.fa-battery-half::before {\n content: \"\\f242\";\n}\n\n.fa-battery-3::before {\n content: \"\\f242\";\n}\n\n.fa-mountain-city::before {\n content: \"\\e52e\";\n}\n\n.fa-coins::before {\n content: \"\\f51e\";\n}\n\n.fa-khanda::before {\n content: \"\\f66d\";\n}\n\n.fa-sliders::before {\n content: \"\\f1de\";\n}\n\n.fa-sliders-h::before {\n content: \"\\f1de\";\n}\n\n.fa-folder-tree::before {\n content: \"\\f802\";\n}\n\n.fa-network-wired::before {\n content: \"\\f6ff\";\n}\n\n.fa-map-pin::before {\n content: \"\\f276\";\n}\n\n.fa-hamsa::before {\n content: \"\\f665\";\n}\n\n.fa-cent-sign::before {\n content: \"\\e3f5\";\n}\n\n.fa-flask::before {\n content: \"\\f0c3\";\n}\n\n.fa-person-pregnant::before {\n content: \"\\e31e\";\n}\n\n.fa-wand-sparkles::before {\n content: \"\\f72b\";\n}\n\n.fa-ellipsis-vertical::before {\n content: \"\\f142\";\n}\n\n.fa-ellipsis-v::before {\n content: \"\\f142\";\n}\n\n.fa-ticket::before {\n content: \"\\f145\";\n}\n\n.fa-power-off::before {\n content: \"\\f011\";\n}\n\n.fa-right-long::before {\n content: \"\\f30b\";\n}\n\n.fa-long-arrow-alt-right::before {\n content: \"\\f30b\";\n}\n\n.fa-flag-usa::before {\n content: \"\\f74d\";\n}\n\n.fa-laptop-file::before {\n content: \"\\e51d\";\n}\n\n.fa-tty::before {\n content: \"\\f1e4\";\n}\n\n.fa-teletype::before {\n content: \"\\f1e4\";\n}\n\n.fa-diagram-next::before {\n content: \"\\e476\";\n}\n\n.fa-person-rifle::before {\n content: \"\\e54e\";\n}\n\n.fa-house-medical-circle-exclamation::before {\n content: \"\\e512\";\n}\n\n.fa-closed-captioning::before {\n content: \"\\f20a\";\n}\n\n.fa-person-hiking::before {\n content: \"\\f6ec\";\n}\n\n.fa-hiking::before {\n content: \"\\f6ec\";\n}\n\n.fa-venus-double::before {\n content: \"\\f226\";\n}\n\n.fa-images::before {\n content: \"\\f302\";\n}\n\n.fa-calculator::before {\n content: \"\\f1ec\";\n}\n\n.fa-people-pulling::before {\n content: \"\\e535\";\n}\n\n.fa-n::before {\n content: \"N\";\n}\n\n.fa-cable-car::before {\n content: \"\\f7da\";\n}\n\n.fa-tram::before {\n content: \"\\f7da\";\n}\n\n.fa-cloud-rain::before {\n content: \"\\f73d\";\n}\n\n.fa-building-circle-xmark::before {\n content: \"\\e4d4\";\n}\n\n.fa-ship::before {\n content: \"\\f21a\";\n}\n\n.fa-arrows-down-to-line::before {\n content: \"\\e4b8\";\n}\n\n.fa-download::before {\n content: \"\\f019\";\n}\n\n.fa-face-grin::before {\n content: \"\\f580\";\n}\n\n.fa-grin::before {\n content: \"\\f580\";\n}\n\n.fa-delete-left::before {\n content: \"\\f55a\";\n}\n\n.fa-backspace::before {\n content: \"\\f55a\";\n}\n\n.fa-eye-dropper::before {\n content: \"\\f1fb\";\n}\n\n.fa-eye-dropper-empty::before {\n content: \"\\f1fb\";\n}\n\n.fa-eyedropper::before {\n content: \"\\f1fb\";\n}\n\n.fa-file-circle-check::before {\n content: \"\\e5a0\";\n}\n\n.fa-forward::before {\n content: \"\\f04e\";\n}\n\n.fa-mobile::before {\n content: \"\\f3ce\";\n}\n\n.fa-mobile-android::before {\n content: \"\\f3ce\";\n}\n\n.fa-mobile-phone::before {\n content: \"\\f3ce\";\n}\n\n.fa-face-meh::before {\n content: \"\\f11a\";\n}\n\n.fa-meh::before {\n content: \"\\f11a\";\n}\n\n.fa-align-center::before {\n content: \"\\f037\";\n}\n\n.fa-book-skull::before {\n content: \"\\f6b7\";\n}\n\n.fa-book-dead::before {\n content: \"\\f6b7\";\n}\n\n.fa-id-card::before {\n content: \"\\f2c2\";\n}\n\n.fa-drivers-license::before {\n content: \"\\f2c2\";\n}\n\n.fa-outdent::before {\n content: \"\\f03b\";\n}\n\n.fa-dedent::before {\n content: \"\\f03b\";\n}\n\n.fa-heart-circle-exclamation::before {\n content: \"\\e4fe\";\n}\n\n.fa-house::before {\n content: \"\\f015\";\n}\n\n.fa-home::before {\n content: \"\\f015\";\n}\n\n.fa-home-alt::before {\n content: \"\\f015\";\n}\n\n.fa-home-lg-alt::before {\n content: \"\\f015\";\n}\n\n.fa-calendar-week::before {\n content: \"\\f784\";\n}\n\n.fa-laptop-medical::before {\n content: \"\\f812\";\n}\n\n.fa-b::before {\n content: \"B\";\n}\n\n.fa-file-medical::before {\n content: \"\\f477\";\n}\n\n.fa-dice-one::before {\n content: \"\\f525\";\n}\n\n.fa-kiwi-bird::before {\n content: \"\\f535\";\n}\n\n.fa-arrow-right-arrow-left::before {\n content: \"\\f0ec\";\n}\n\n.fa-exchange::before {\n content: \"\\f0ec\";\n}\n\n.fa-rotate-right::before {\n content: \"\\f2f9\";\n}\n\n.fa-redo-alt::before {\n content: \"\\f2f9\";\n}\n\n.fa-rotate-forward::before {\n content: \"\\f2f9\";\n}\n\n.fa-utensils::before {\n content: \"\\f2e7\";\n}\n\n.fa-cutlery::before {\n content: \"\\f2e7\";\n}\n\n.fa-arrow-up-wide-short::before {\n content: \"\\f161\";\n}\n\n.fa-sort-amount-up::before {\n content: \"\\f161\";\n}\n\n.fa-mill-sign::before {\n content: \"\\e1ed\";\n}\n\n.fa-bowl-rice::before {\n content: \"\\e2eb\";\n}\n\n.fa-skull::before {\n content: \"\\f54c\";\n}\n\n.fa-tower-broadcast::before {\n content: \"\\f519\";\n}\n\n.fa-broadcast-tower::before {\n content: \"\\f519\";\n}\n\n.fa-truck-pickup::before {\n content: \"\\f63c\";\n}\n\n.fa-up-long::before {\n content: \"\\f30c\";\n}\n\n.fa-long-arrow-alt-up::before {\n content: \"\\f30c\";\n}\n\n.fa-stop::before {\n content: \"\\f04d\";\n}\n\n.fa-code-merge::before {\n content: \"\\f387\";\n}\n\n.fa-upload::before {\n content: \"\\f093\";\n}\n\n.fa-hurricane::before {\n content: \"\\f751\";\n}\n\n.fa-mound::before {\n content: \"\\e52d\";\n}\n\n.fa-toilet-portable::before {\n content: \"\\e583\";\n}\n\n.fa-compact-disc::before {\n content: \"\\f51f\";\n}\n\n.fa-file-arrow-down::before {\n content: \"\\f56d\";\n}\n\n.fa-file-download::before {\n content: \"\\f56d\";\n}\n\n.fa-caravan::before {\n content: \"\\f8ff\";\n}\n\n.fa-shield-cat::before {\n content: \"\\e572\";\n}\n\n.fa-bolt::before {\n content: \"\\f0e7\";\n}\n\n.fa-zap::before {\n content: \"\\f0e7\";\n}\n\n.fa-glass-water::before {\n content: \"\\e4f4\";\n}\n\n.fa-oil-well::before {\n content: \"\\e532\";\n}\n\n.fa-vault::before {\n content: \"\\e2c5\";\n}\n\n.fa-mars::before {\n content: \"\\f222\";\n}\n\n.fa-toilet::before {\n content: \"\\f7d8\";\n}\n\n.fa-plane-circle-xmark::before {\n content: \"\\e557\";\n}\n\n.fa-yen-sign::before {\n content: \"\\f157\";\n}\n\n.fa-cny::before {\n content: \"\\f157\";\n}\n\n.fa-jpy::before {\n content: \"\\f157\";\n}\n\n.fa-rmb::before {\n content: \"\\f157\";\n}\n\n.fa-yen::before {\n content: \"\\f157\";\n}\n\n.fa-ruble-sign::before {\n content: \"\\f158\";\n}\n\n.fa-rouble::before {\n content: \"\\f158\";\n}\n\n.fa-rub::before {\n content: \"\\f158\";\n}\n\n.fa-ruble::before {\n content: \"\\f158\";\n}\n\n.fa-sun::before {\n content: \"\\f185\";\n}\n\n.fa-guitar::before {\n content: \"\\f7a6\";\n}\n\n.fa-face-laugh-wink::before {\n content: \"\\f59c\";\n}\n\n.fa-laugh-wink::before {\n content: \"\\f59c\";\n}\n\n.fa-horse-head::before {\n content: \"\\f7ab\";\n}\n\n.fa-bore-hole::before {\n content: \"\\e4c3\";\n}\n\n.fa-industry::before {\n content: \"\\f275\";\n}\n\n.fa-circle-down::before {\n content: \"\\f358\";\n}\n\n.fa-arrow-alt-circle-down::before {\n content: \"\\f358\";\n}\n\n.fa-arrows-turn-to-dots::before {\n content: \"\\e4c1\";\n}\n\n.fa-florin-sign::before {\n content: \"\\e184\";\n}\n\n.fa-arrow-down-short-wide::before {\n content: \"\\f884\";\n}\n\n.fa-sort-amount-desc::before {\n content: \"\\f884\";\n}\n\n.fa-sort-amount-down-alt::before {\n content: \"\\f884\";\n}\n\n.fa-less-than::before {\n content: \"\\<\";\n}\n\n.fa-angle-down::before {\n content: \"\\f107\";\n}\n\n.fa-car-tunnel::before {\n content: \"\\e4de\";\n}\n\n.fa-head-side-cough::before {\n content: \"\\e061\";\n}\n\n.fa-grip-lines::before {\n content: \"\\f7a4\";\n}\n\n.fa-thumbs-down::before {\n content: \"\\f165\";\n}\n\n.fa-user-lock::before {\n content: \"\\f502\";\n}\n\n.fa-arrow-right-long::before {\n content: \"\\f178\";\n}\n\n.fa-long-arrow-right::before {\n content: \"\\f178\";\n}\n\n.fa-anchor-circle-xmark::before {\n content: \"\\e4ac\";\n}\n\n.fa-ellipsis::before {\n content: \"\\f141\";\n}\n\n.fa-ellipsis-h::before {\n content: \"\\f141\";\n}\n\n.fa-chess-pawn::before {\n content: \"\\f443\";\n}\n\n.fa-kit-medical::before {\n content: \"\\f479\";\n}\n\n.fa-first-aid::before {\n content: \"\\f479\";\n}\n\n.fa-person-through-window::before {\n content: \"\\e5a9\";\n}\n\n.fa-toolbox::before {\n content: \"\\f552\";\n}\n\n.fa-hands-holding-circle::before {\n content: \"\\e4fb\";\n}\n\n.fa-bug::before {\n content: \"\\f188\";\n}\n\n.fa-credit-card::before {\n content: \"\\f09d\";\n}\n\n.fa-credit-card-alt::before {\n content: \"\\f09d\";\n}\n\n.fa-car::before {\n content: \"\\f1b9\";\n}\n\n.fa-automobile::before {\n content: \"\\f1b9\";\n}\n\n.fa-hand-holding-hand::before {\n content: \"\\e4f7\";\n}\n\n.fa-book-open-reader::before {\n content: \"\\f5da\";\n}\n\n.fa-book-reader::before {\n content: \"\\f5da\";\n}\n\n.fa-mountain-sun::before {\n content: \"\\e52f\";\n}\n\n.fa-arrows-left-right-to-line::before {\n content: \"\\e4ba\";\n}\n\n.fa-dice-d20::before {\n content: \"\\f6cf\";\n}\n\n.fa-truck-droplet::before {\n content: \"\\e58c\";\n}\n\n.fa-file-circle-xmark::before {\n content: \"\\e5a1\";\n}\n\n.fa-temperature-arrow-up::before {\n content: \"\\e040\";\n}\n\n.fa-temperature-up::before {\n content: \"\\e040\";\n}\n\n.fa-medal::before {\n content: \"\\f5a2\";\n}\n\n.fa-bed::before {\n content: \"\\f236\";\n}\n\n.fa-square-h::before {\n content: \"\\f0fd\";\n}\n\n.fa-h-square::before {\n content: \"\\f0fd\";\n}\n\n.fa-podcast::before {\n content: \"\\f2ce\";\n}\n\n.fa-temperature-full::before {\n content: \"\\f2c7\";\n}\n\n.fa-temperature-4::before {\n content: \"\\f2c7\";\n}\n\n.fa-thermometer-4::before {\n content: \"\\f2c7\";\n}\n\n.fa-thermometer-full::before {\n content: \"\\f2c7\";\n}\n\n.fa-bell::before {\n content: \"\\f0f3\";\n}\n\n.fa-superscript::before {\n content: \"\\f12b\";\n}\n\n.fa-plug-circle-xmark::before {\n content: \"\\e560\";\n}\n\n.fa-star-of-life::before {\n content: \"\\f621\";\n}\n\n.fa-phone-slash::before {\n content: \"\\f3dd\";\n}\n\n.fa-paint-roller::before {\n content: \"\\f5aa\";\n}\n\n.fa-handshake-angle::before {\n content: \"\\f4c4\";\n}\n\n.fa-hands-helping::before {\n content: \"\\f4c4\";\n}\n\n.fa-location-dot::before {\n content: \"\\f3c5\";\n}\n\n.fa-map-marker-alt::before {\n content: \"\\f3c5\";\n}\n\n.fa-file::before {\n content: \"\\f15b\";\n}\n\n.fa-greater-than::before {\n content: \"\\>\";\n}\n\n.fa-person-swimming::before {\n content: \"\\f5c4\";\n}\n\n.fa-swimmer::before {\n content: \"\\f5c4\";\n}\n\n.fa-arrow-down::before {\n content: \"\\f063\";\n}\n\n.fa-droplet::before {\n content: \"\\f043\";\n}\n\n.fa-tint::before {\n content: \"\\f043\";\n}\n\n.fa-eraser::before {\n content: \"\\f12d\";\n}\n\n.fa-earth-americas::before {\n content: \"\\f57d\";\n}\n\n.fa-earth::before {\n content: \"\\f57d\";\n}\n\n.fa-earth-america::before {\n content: \"\\f57d\";\n}\n\n.fa-globe-americas::before {\n content: \"\\f57d\";\n}\n\n.fa-person-burst::before {\n content: \"\\e53b\";\n}\n\n.fa-dove::before {\n content: \"\\f4ba\";\n}\n\n.fa-battery-empty::before {\n content: \"\\f244\";\n}\n\n.fa-battery-0::before {\n content: \"\\f244\";\n}\n\n.fa-socks::before {\n content: \"\\f696\";\n}\n\n.fa-inbox::before {\n content: \"\\f01c\";\n}\n\n.fa-section::before {\n content: \"\\e447\";\n}\n\n.fa-gauge-high::before {\n content: \"\\f625\";\n}\n\n.fa-tachometer-alt::before {\n content: \"\\f625\";\n}\n\n.fa-tachometer-alt-fast::before {\n content: \"\\f625\";\n}\n\n.fa-envelope-open-text::before {\n content: \"\\f658\";\n}\n\n.fa-hospital::before {\n content: \"\\f0f8\";\n}\n\n.fa-hospital-alt::before {\n content: \"\\f0f8\";\n}\n\n.fa-hospital-wide::before {\n content: \"\\f0f8\";\n}\n\n.fa-wine-bottle::before {\n content: \"\\f72f\";\n}\n\n.fa-chess-rook::before {\n content: \"\\f447\";\n}\n\n.fa-bars-staggered::before {\n content: \"\\f550\";\n}\n\n.fa-reorder::before {\n content: \"\\f550\";\n}\n\n.fa-stream::before {\n content: \"\\f550\";\n}\n\n.fa-dharmachakra::before {\n content: \"\\f655\";\n}\n\n.fa-hotdog::before {\n content: \"\\f80f\";\n}\n\n.fa-person-walking-with-cane::before {\n content: \"\\f29d\";\n}\n\n.fa-blind::before {\n content: \"\\f29d\";\n}\n\n.fa-drum::before {\n content: \"\\f569\";\n}\n\n.fa-ice-cream::before {\n content: \"\\f810\";\n}\n\n.fa-heart-circle-bolt::before {\n content: \"\\e4fc\";\n}\n\n.fa-fax::before {\n content: \"\\f1ac\";\n}\n\n.fa-paragraph::before {\n content: \"\\f1dd\";\n}\n\n.fa-check-to-slot::before {\n content: \"\\f772\";\n}\n\n.fa-vote-yea::before {\n content: \"\\f772\";\n}\n\n.fa-star-half::before {\n content: \"\\f089\";\n}\n\n.fa-boxes-stacked::before {\n content: \"\\f468\";\n}\n\n.fa-boxes::before {\n content: \"\\f468\";\n}\n\n.fa-boxes-alt::before {\n content: \"\\f468\";\n}\n\n.fa-link::before {\n content: \"\\f0c1\";\n}\n\n.fa-chain::before {\n content: \"\\f0c1\";\n}\n\n.fa-ear-listen::before {\n content: \"\\f2a2\";\n}\n\n.fa-assistive-listening-systems::before {\n content: \"\\f2a2\";\n}\n\n.fa-tree-city::before {\n content: \"\\e587\";\n}\n\n.fa-play::before {\n content: \"\\f04b\";\n}\n\n.fa-font::before {\n content: \"\\f031\";\n}\n\n.fa-table-cells-row-lock::before {\n content: \"\\e67a\";\n}\n\n.fa-rupiah-sign::before {\n content: \"\\e23d\";\n}\n\n.fa-magnifying-glass::before {\n content: \"\\f002\";\n}\n\n.fa-search::before {\n content: \"\\f002\";\n}\n\n.fa-table-tennis-paddle-ball::before {\n content: \"\\f45d\";\n}\n\n.fa-ping-pong-paddle-ball::before {\n content: \"\\f45d\";\n}\n\n.fa-table-tennis::before {\n content: \"\\f45d\";\n}\n\n.fa-person-dots-from-line::before {\n content: \"\\f470\";\n}\n\n.fa-diagnoses::before {\n content: \"\\f470\";\n}\n\n.fa-trash-can-arrow-up::before {\n content: \"\\f82a\";\n}\n\n.fa-trash-restore-alt::before {\n content: \"\\f82a\";\n}\n\n.fa-naira-sign::before {\n content: \"\\e1f6\";\n}\n\n.fa-cart-arrow-down::before {\n content: \"\\f218\";\n}\n\n.fa-walkie-talkie::before {\n content: \"\\f8ef\";\n}\n\n.fa-file-pen::before {\n content: \"\\f31c\";\n}\n\n.fa-file-edit::before {\n content: \"\\f31c\";\n}\n\n.fa-receipt::before {\n content: \"\\f543\";\n}\n\n.fa-square-pen::before {\n content: \"\\f14b\";\n}\n\n.fa-pen-square::before {\n content: \"\\f14b\";\n}\n\n.fa-pencil-square::before {\n content: \"\\f14b\";\n}\n\n.fa-suitcase-rolling::before {\n content: \"\\f5c1\";\n}\n\n.fa-person-circle-exclamation::before {\n content: \"\\e53f\";\n}\n\n.fa-chevron-down::before {\n content: \"\\f078\";\n}\n\n.fa-battery-full::before {\n content: \"\\f240\";\n}\n\n.fa-battery::before {\n content: \"\\f240\";\n}\n\n.fa-battery-5::before {\n content: \"\\f240\";\n}\n\n.fa-skull-crossbones::before {\n content: \"\\f714\";\n}\n\n.fa-code-compare::before {\n content: \"\\e13a\";\n}\n\n.fa-list-ul::before {\n content: \"\\f0ca\";\n}\n\n.fa-list-dots::before {\n content: \"\\f0ca\";\n}\n\n.fa-school-lock::before {\n content: \"\\e56f\";\n}\n\n.fa-tower-cell::before {\n content: \"\\e585\";\n}\n\n.fa-down-long::before {\n content: \"\\f309\";\n}\n\n.fa-long-arrow-alt-down::before {\n content: \"\\f309\";\n}\n\n.fa-ranking-star::before {\n content: \"\\e561\";\n}\n\n.fa-chess-king::before {\n content: \"\\f43f\";\n}\n\n.fa-person-harassing::before {\n content: \"\\e549\";\n}\n\n.fa-brazilian-real-sign::before {\n content: \"\\e46c\";\n}\n\n.fa-landmark-dome::before {\n content: \"\\f752\";\n}\n\n.fa-landmark-alt::before {\n content: \"\\f752\";\n}\n\n.fa-arrow-up::before {\n content: \"\\f062\";\n}\n\n.fa-tv::before {\n content: \"\\f26c\";\n}\n\n.fa-television::before {\n content: \"\\f26c\";\n}\n\n.fa-tv-alt::before {\n content: \"\\f26c\";\n}\n\n.fa-shrimp::before {\n content: \"\\e448\";\n}\n\n.fa-list-check::before {\n content: \"\\f0ae\";\n}\n\n.fa-tasks::before {\n content: \"\\f0ae\";\n}\n\n.fa-jug-detergent::before {\n content: \"\\e519\";\n}\n\n.fa-circle-user::before {\n content: \"\\f2bd\";\n}\n\n.fa-user-circle::before {\n content: \"\\f2bd\";\n}\n\n.fa-user-shield::before {\n content: \"\\f505\";\n}\n\n.fa-wind::before {\n content: \"\\f72e\";\n}\n\n.fa-car-burst::before {\n content: \"\\f5e1\";\n}\n\n.fa-car-crash::before {\n content: \"\\f5e1\";\n}\n\n.fa-y::before {\n content: \"Y\";\n}\n\n.fa-person-snowboarding::before {\n content: \"\\f7ce\";\n}\n\n.fa-snowboarding::before {\n content: \"\\f7ce\";\n}\n\n.fa-truck-fast::before {\n content: \"\\f48b\";\n}\n\n.fa-shipping-fast::before {\n content: \"\\f48b\";\n}\n\n.fa-fish::before {\n content: \"\\f578\";\n}\n\n.fa-user-graduate::before {\n content: \"\\f501\";\n}\n\n.fa-circle-half-stroke::before {\n content: \"\\f042\";\n}\n\n.fa-adjust::before {\n content: \"\\f042\";\n}\n\n.fa-clapperboard::before {\n content: \"\\e131\";\n}\n\n.fa-circle-radiation::before {\n content: \"\\f7ba\";\n}\n\n.fa-radiation-alt::before {\n content: \"\\f7ba\";\n}\n\n.fa-baseball::before {\n content: \"\\f433\";\n}\n\n.fa-baseball-ball::before {\n content: \"\\f433\";\n}\n\n.fa-jet-fighter-up::before {\n content: \"\\e518\";\n}\n\n.fa-diagram-project::before {\n content: \"\\f542\";\n}\n\n.fa-project-diagram::before {\n content: \"\\f542\";\n}\n\n.fa-copy::before {\n content: \"\\f0c5\";\n}\n\n.fa-volume-xmark::before {\n content: \"\\f6a9\";\n}\n\n.fa-volume-mute::before {\n content: \"\\f6a9\";\n}\n\n.fa-volume-times::before {\n content: \"\\f6a9\";\n}\n\n.fa-hand-sparkles::before {\n content: \"\\e05d\";\n}\n\n.fa-grip::before {\n content: \"\\f58d\";\n}\n\n.fa-grip-horizontal::before {\n content: \"\\f58d\";\n}\n\n.fa-share-from-square::before {\n content: \"\\f14d\";\n}\n\n.fa-share-square::before {\n content: \"\\f14d\";\n}\n\n.fa-child-combatant::before {\n content: \"\\e4e0\";\n}\n\n.fa-child-rifle::before {\n content: \"\\e4e0\";\n}\n\n.fa-gun::before {\n content: \"\\e19b\";\n}\n\n.fa-square-phone::before {\n content: \"\\f098\";\n}\n\n.fa-phone-square::before {\n content: \"\\f098\";\n}\n\n.fa-plus::before {\n content: \"\\+\";\n}\n\n.fa-add::before {\n content: \"\\+\";\n}\n\n.fa-expand::before {\n content: \"\\f065\";\n}\n\n.fa-computer::before {\n content: \"\\e4e5\";\n}\n\n.fa-xmark::before {\n content: \"\\f00d\";\n}\n\n.fa-close::before {\n content: \"\\f00d\";\n}\n\n.fa-multiply::before {\n content: \"\\f00d\";\n}\n\n.fa-remove::before {\n content: \"\\f00d\";\n}\n\n.fa-times::before {\n content: \"\\f00d\";\n}\n\n.fa-arrows-up-down-left-right::before {\n content: \"\\f047\";\n}\n\n.fa-arrows::before {\n content: \"\\f047\";\n}\n\n.fa-chalkboard-user::before {\n content: \"\\f51c\";\n}\n\n.fa-chalkboard-teacher::before {\n content: \"\\f51c\";\n}\n\n.fa-peso-sign::before {\n content: \"\\e222\";\n}\n\n.fa-building-shield::before {\n content: \"\\e4d8\";\n}\n\n.fa-baby::before {\n content: \"\\f77c\";\n}\n\n.fa-users-line::before {\n content: \"\\e592\";\n}\n\n.fa-quote-left::before {\n content: \"\\f10d\";\n}\n\n.fa-quote-left-alt::before {\n content: \"\\f10d\";\n}\n\n.fa-tractor::before {\n content: \"\\f722\";\n}\n\n.fa-trash-arrow-up::before {\n content: \"\\f829\";\n}\n\n.fa-trash-restore::before {\n content: \"\\f829\";\n}\n\n.fa-arrow-down-up-lock::before {\n content: \"\\e4b0\";\n}\n\n.fa-lines-leaning::before {\n content: \"\\e51e\";\n}\n\n.fa-ruler-combined::before {\n content: \"\\f546\";\n}\n\n.fa-copyright::before {\n content: \"\\f1f9\";\n}\n\n.fa-equals::before {\n content: \"\\=\";\n}\n\n.fa-blender::before {\n content: \"\\f517\";\n}\n\n.fa-teeth::before {\n content: \"\\f62e\";\n}\n\n.fa-shekel-sign::before {\n content: \"\\f20b\";\n}\n\n.fa-ils::before {\n content: \"\\f20b\";\n}\n\n.fa-shekel::before {\n content: \"\\f20b\";\n}\n\n.fa-sheqel::before {\n content: \"\\f20b\";\n}\n\n.fa-sheqel-sign::before {\n content: \"\\f20b\";\n}\n\n.fa-map::before {\n content: \"\\f279\";\n}\n\n.fa-rocket::before {\n content: \"\\f135\";\n}\n\n.fa-photo-film::before {\n content: \"\\f87c\";\n}\n\n.fa-photo-video::before {\n content: \"\\f87c\";\n}\n\n.fa-folder-minus::before {\n content: \"\\f65d\";\n}\n\n.fa-store::before {\n content: \"\\f54e\";\n}\n\n.fa-arrow-trend-up::before {\n content: \"\\e098\";\n}\n\n.fa-plug-circle-minus::before {\n content: \"\\e55e\";\n}\n\n.fa-sign-hanging::before {\n content: \"\\f4d9\";\n}\n\n.fa-sign::before {\n content: \"\\f4d9\";\n}\n\n.fa-bezier-curve::before {\n content: \"\\f55b\";\n}\n\n.fa-bell-slash::before {\n content: \"\\f1f6\";\n}\n\n.fa-tablet::before {\n content: \"\\f3fb\";\n}\n\n.fa-tablet-android::before {\n content: \"\\f3fb\";\n}\n\n.fa-school-flag::before {\n content: \"\\e56e\";\n}\n\n.fa-fill::before {\n content: \"\\f575\";\n}\n\n.fa-angle-up::before {\n content: \"\\f106\";\n}\n\n.fa-drumstick-bite::before {\n content: \"\\f6d7\";\n}\n\n.fa-holly-berry::before {\n content: \"\\f7aa\";\n}\n\n.fa-chevron-left::before {\n content: \"\\f053\";\n}\n\n.fa-bacteria::before {\n content: \"\\e059\";\n}\n\n.fa-hand-lizard::before {\n content: \"\\f258\";\n}\n\n.fa-notdef::before {\n content: \"\\e1fe\";\n}\n\n.fa-disease::before {\n content: \"\\f7fa\";\n}\n\n.fa-briefcase-medical::before {\n content: \"\\f469\";\n}\n\n.fa-genderless::before {\n content: \"\\f22d\";\n}\n\n.fa-chevron-right::before {\n content: \"\\f054\";\n}\n\n.fa-retweet::before {\n content: \"\\f079\";\n}\n\n.fa-car-rear::before {\n content: \"\\f5de\";\n}\n\n.fa-car-alt::before {\n content: \"\\f5de\";\n}\n\n.fa-pump-soap::before {\n content: \"\\e06b\";\n}\n\n.fa-video-slash::before {\n content: \"\\f4e2\";\n}\n\n.fa-battery-quarter::before {\n content: \"\\f243\";\n}\n\n.fa-battery-2::before {\n content: \"\\f243\";\n}\n\n.fa-radio::before {\n content: \"\\f8d7\";\n}\n\n.fa-baby-carriage::before {\n content: \"\\f77d\";\n}\n\n.fa-carriage-baby::before {\n content: \"\\f77d\";\n}\n\n.fa-traffic-light::before {\n content: \"\\f637\";\n}\n\n.fa-thermometer::before {\n content: \"\\f491\";\n}\n\n.fa-vr-cardboard::before {\n content: \"\\f729\";\n}\n\n.fa-hand-middle-finger::before {\n content: \"\\f806\";\n}\n\n.fa-percent::before {\n content: \"\\%\";\n}\n\n.fa-percentage::before {\n content: \"\\%\";\n}\n\n.fa-truck-moving::before {\n content: \"\\f4df\";\n}\n\n.fa-glass-water-droplet::before {\n content: \"\\e4f5\";\n}\n\n.fa-display::before {\n content: \"\\e163\";\n}\n\n.fa-face-smile::before {\n content: \"\\f118\";\n}\n\n.fa-smile::before {\n content: \"\\f118\";\n}\n\n.fa-thumbtack::before {\n content: \"\\f08d\";\n}\n\n.fa-thumb-tack::before {\n content: \"\\f08d\";\n}\n\n.fa-trophy::before {\n content: \"\\f091\";\n}\n\n.fa-person-praying::before {\n content: \"\\f683\";\n}\n\n.fa-pray::before {\n content: \"\\f683\";\n}\n\n.fa-hammer::before {\n content: \"\\f6e3\";\n}\n\n.fa-hand-peace::before {\n content: \"\\f25b\";\n}\n\n.fa-rotate::before {\n content: \"\\f2f1\";\n}\n\n.fa-sync-alt::before {\n content: \"\\f2f1\";\n}\n\n.fa-spinner::before {\n content: \"\\f110\";\n}\n\n.fa-robot::before {\n content: \"\\f544\";\n}\n\n.fa-peace::before {\n content: \"\\f67c\";\n}\n\n.fa-gears::before {\n content: \"\\f085\";\n}\n\n.fa-cogs::before {\n content: \"\\f085\";\n}\n\n.fa-warehouse::before {\n content: \"\\f494\";\n}\n\n.fa-arrow-up-right-dots::before {\n content: \"\\e4b7\";\n}\n\n.fa-splotch::before {\n content: \"\\f5bc\";\n}\n\n.fa-face-grin-hearts::before {\n content: \"\\f584\";\n}\n\n.fa-grin-hearts::before {\n content: \"\\f584\";\n}\n\n.fa-dice-four::before {\n content: \"\\f524\";\n}\n\n.fa-sim-card::before {\n content: \"\\f7c4\";\n}\n\n.fa-transgender::before {\n content: \"\\f225\";\n}\n\n.fa-transgender-alt::before {\n content: \"\\f225\";\n}\n\n.fa-mercury::before {\n content: \"\\f223\";\n}\n\n.fa-arrow-turn-down::before {\n content: \"\\f149\";\n}\n\n.fa-level-down::before {\n content: \"\\f149\";\n}\n\n.fa-person-falling-burst::before {\n content: \"\\e547\";\n}\n\n.fa-award::before {\n content: \"\\f559\";\n}\n\n.fa-ticket-simple::before {\n content: \"\\f3ff\";\n}\n\n.fa-ticket-alt::before {\n content: \"\\f3ff\";\n}\n\n.fa-building::before {\n content: \"\\f1ad\";\n}\n\n.fa-angles-left::before {\n content: \"\\f100\";\n}\n\n.fa-angle-double-left::before {\n content: \"\\f100\";\n}\n\n.fa-qrcode::before {\n content: \"\\f029\";\n}\n\n.fa-clock-rotate-left::before {\n content: \"\\f1da\";\n}\n\n.fa-history::before {\n content: \"\\f1da\";\n}\n\n.fa-face-grin-beam-sweat::before {\n content: \"\\f583\";\n}\n\n.fa-grin-beam-sweat::before {\n content: \"\\f583\";\n}\n\n.fa-file-export::before {\n content: \"\\f56e\";\n}\n\n.fa-arrow-right-from-file::before {\n content: \"\\f56e\";\n}\n\n.fa-shield::before {\n content: \"\\f132\";\n}\n\n.fa-shield-blank::before {\n content: \"\\f132\";\n}\n\n.fa-arrow-up-short-wide::before {\n content: \"\\f885\";\n}\n\n.fa-sort-amount-up-alt::before {\n content: \"\\f885\";\n}\n\n.fa-house-medical::before {\n content: \"\\e3b2\";\n}\n\n.fa-golf-ball-tee::before {\n content: \"\\f450\";\n}\n\n.fa-golf-ball::before {\n content: \"\\f450\";\n}\n\n.fa-circle-chevron-left::before {\n content: \"\\f137\";\n}\n\n.fa-chevron-circle-left::before {\n content: \"\\f137\";\n}\n\n.fa-house-chimney-window::before {\n content: \"\\e00d\";\n}\n\n.fa-pen-nib::before {\n content: \"\\f5ad\";\n}\n\n.fa-tent-arrow-turn-left::before {\n content: \"\\e580\";\n}\n\n.fa-tents::before {\n content: \"\\e582\";\n}\n\n.fa-wand-magic::before {\n content: \"\\f0d0\";\n}\n\n.fa-magic::before {\n content: \"\\f0d0\";\n}\n\n.fa-dog::before {\n content: \"\\f6d3\";\n}\n\n.fa-carrot::before {\n content: \"\\f787\";\n}\n\n.fa-moon::before {\n content: \"\\f186\";\n}\n\n.fa-wine-glass-empty::before {\n content: \"\\f5ce\";\n}\n\n.fa-wine-glass-alt::before {\n content: \"\\f5ce\";\n}\n\n.fa-cheese::before {\n content: \"\\f7ef\";\n}\n\n.fa-yin-yang::before {\n content: \"\\f6ad\";\n}\n\n.fa-music::before {\n content: \"\\f001\";\n}\n\n.fa-code-commit::before {\n content: \"\\f386\";\n}\n\n.fa-temperature-low::before {\n content: \"\\f76b\";\n}\n\n.fa-person-biking::before {\n content: \"\\f84a\";\n}\n\n.fa-biking::before {\n content: \"\\f84a\";\n}\n\n.fa-broom::before {\n content: \"\\f51a\";\n}\n\n.fa-shield-heart::before {\n content: \"\\e574\";\n}\n\n.fa-gopuram::before {\n content: \"\\f664\";\n}\n\n.fa-earth-oceania::before {\n content: \"\\e47b\";\n}\n\n.fa-globe-oceania::before {\n content: \"\\e47b\";\n}\n\n.fa-square-xmark::before {\n content: \"\\f2d3\";\n}\n\n.fa-times-square::before {\n content: \"\\f2d3\";\n}\n\n.fa-xmark-square::before {\n content: \"\\f2d3\";\n}\n\n.fa-hashtag::before {\n content: \"\\#\";\n}\n\n.fa-up-right-and-down-left-from-center::before {\n content: \"\\f424\";\n}\n\n.fa-expand-alt::before {\n content: \"\\f424\";\n}\n\n.fa-oil-can::before {\n content: \"\\f613\";\n}\n\n.fa-t::before {\n content: \"T\";\n}\n\n.fa-hippo::before {\n content: \"\\f6ed\";\n}\n\n.fa-chart-column::before {\n content: \"\\e0e3\";\n}\n\n.fa-infinity::before {\n content: \"\\f534\";\n}\n\n.fa-vial-circle-check::before {\n content: \"\\e596\";\n}\n\n.fa-person-arrow-down-to-line::before {\n content: \"\\e538\";\n}\n\n.fa-voicemail::before {\n content: \"\\f897\";\n}\n\n.fa-fan::before {\n content: \"\\f863\";\n}\n\n.fa-person-walking-luggage::before {\n content: \"\\e554\";\n}\n\n.fa-up-down::before {\n content: \"\\f338\";\n}\n\n.fa-arrows-alt-v::before {\n content: \"\\f338\";\n}\n\n.fa-cloud-moon-rain::before {\n content: \"\\f73c\";\n}\n\n.fa-calendar::before {\n content: \"\\f133\";\n}\n\n.fa-trailer::before {\n content: \"\\e041\";\n}\n\n.fa-bahai::before {\n content: \"\\f666\";\n}\n\n.fa-haykal::before {\n content: \"\\f666\";\n}\n\n.fa-sd-card::before {\n content: \"\\f7c2\";\n}\n\n.fa-dragon::before {\n content: \"\\f6d5\";\n}\n\n.fa-shoe-prints::before {\n content: \"\\f54b\";\n}\n\n.fa-circle-plus::before {\n content: \"\\f055\";\n}\n\n.fa-plus-circle::before {\n content: \"\\f055\";\n}\n\n.fa-face-grin-tongue-wink::before {\n content: \"\\f58b\";\n}\n\n.fa-grin-tongue-wink::before {\n content: \"\\f58b\";\n}\n\n.fa-hand-holding::before {\n content: \"\\f4bd\";\n}\n\n.fa-plug-circle-exclamation::before {\n content: \"\\e55d\";\n}\n\n.fa-link-slash::before {\n content: \"\\f127\";\n}\n\n.fa-chain-broken::before {\n content: \"\\f127\";\n}\n\n.fa-chain-slash::before {\n content: \"\\f127\";\n}\n\n.fa-unlink::before {\n content: \"\\f127\";\n}\n\n.fa-clone::before {\n content: \"\\f24d\";\n}\n\n.fa-person-walking-arrow-loop-left::before {\n content: \"\\e551\";\n}\n\n.fa-arrow-up-z-a::before {\n content: \"\\f882\";\n}\n\n.fa-sort-alpha-up-alt::before {\n content: \"\\f882\";\n}\n\n.fa-fire-flame-curved::before {\n content: \"\\f7e4\";\n}\n\n.fa-fire-alt::before {\n content: \"\\f7e4\";\n}\n\n.fa-tornado::before {\n content: \"\\f76f\";\n}\n\n.fa-file-circle-plus::before {\n content: \"\\e494\";\n}\n\n.fa-book-quran::before {\n content: \"\\f687\";\n}\n\n.fa-quran::before {\n content: \"\\f687\";\n}\n\n.fa-anchor::before {\n content: \"\\f13d\";\n}\n\n.fa-border-all::before {\n content: \"\\f84c\";\n}\n\n.fa-face-angry::before {\n content: \"\\f556\";\n}\n\n.fa-angry::before {\n content: \"\\f556\";\n}\n\n.fa-cookie-bite::before {\n content: \"\\f564\";\n}\n\n.fa-arrow-trend-down::before {\n content: \"\\e097\";\n}\n\n.fa-rss::before {\n content: \"\\f09e\";\n}\n\n.fa-feed::before {\n content: \"\\f09e\";\n}\n\n.fa-draw-polygon::before {\n content: \"\\f5ee\";\n}\n\n.fa-scale-balanced::before {\n content: \"\\f24e\";\n}\n\n.fa-balance-scale::before {\n content: \"\\f24e\";\n}\n\n.fa-gauge-simple-high::before {\n content: \"\\f62a\";\n}\n\n.fa-tachometer::before {\n content: \"\\f62a\";\n}\n\n.fa-tachometer-fast::before {\n content: \"\\f62a\";\n}\n\n.fa-shower::before {\n content: \"\\f2cc\";\n}\n\n.fa-desktop::before {\n content: \"\\f390\";\n}\n\n.fa-desktop-alt::before {\n content: \"\\f390\";\n}\n\n.fa-m::before {\n content: \"M\";\n}\n\n.fa-table-list::before {\n content: \"\\f00b\";\n}\n\n.fa-th-list::before {\n content: \"\\f00b\";\n}\n\n.fa-comment-sms::before {\n content: \"\\f7cd\";\n}\n\n.fa-sms::before {\n content: \"\\f7cd\";\n}\n\n.fa-book::before {\n content: \"\\f02d\";\n}\n\n.fa-user-plus::before {\n content: \"\\f234\";\n}\n\n.fa-check::before {\n content: \"\\f00c\";\n}\n\n.fa-battery-three-quarters::before {\n content: \"\\f241\";\n}\n\n.fa-battery-4::before {\n content: \"\\f241\";\n}\n\n.fa-house-circle-check::before {\n content: \"\\e509\";\n}\n\n.fa-angle-left::before {\n content: \"\\f104\";\n}\n\n.fa-diagram-successor::before {\n content: \"\\e47a\";\n}\n\n.fa-truck-arrow-right::before {\n content: \"\\e58b\";\n}\n\n.fa-arrows-split-up-and-left::before {\n content: \"\\e4bc\";\n}\n\n.fa-hand-fist::before {\n content: \"\\f6de\";\n}\n\n.fa-fist-raised::before {\n content: \"\\f6de\";\n}\n\n.fa-cloud-moon::before {\n content: \"\\f6c3\";\n}\n\n.fa-briefcase::before {\n content: \"\\f0b1\";\n}\n\n.fa-person-falling::before {\n content: \"\\e546\";\n}\n\n.fa-image-portrait::before {\n content: \"\\f3e0\";\n}\n\n.fa-portrait::before {\n content: \"\\f3e0\";\n}\n\n.fa-user-tag::before {\n content: \"\\f507\";\n}\n\n.fa-rug::before {\n content: \"\\e569\";\n}\n\n.fa-earth-europe::before {\n content: \"\\f7a2\";\n}\n\n.fa-globe-europe::before {\n content: \"\\f7a2\";\n}\n\n.fa-cart-flatbed-suitcase::before {\n content: \"\\f59d\";\n}\n\n.fa-luggage-cart::before {\n content: \"\\f59d\";\n}\n\n.fa-rectangle-xmark::before {\n content: \"\\f410\";\n}\n\n.fa-rectangle-times::before {\n content: \"\\f410\";\n}\n\n.fa-times-rectangle::before {\n content: \"\\f410\";\n}\n\n.fa-window-close::before {\n content: \"\\f410\";\n}\n\n.fa-baht-sign::before {\n content: \"\\e0ac\";\n}\n\n.fa-book-open::before {\n content: \"\\f518\";\n}\n\n.fa-book-journal-whills::before {\n content: \"\\f66a\";\n}\n\n.fa-journal-whills::before {\n content: \"\\f66a\";\n}\n\n.fa-handcuffs::before {\n content: \"\\e4f8\";\n}\n\n.fa-triangle-exclamation::before {\n content: \"\\f071\";\n}\n\n.fa-exclamation-triangle::before {\n content: \"\\f071\";\n}\n\n.fa-warning::before {\n content: \"\\f071\";\n}\n\n.fa-database::before {\n content: \"\\f1c0\";\n}\n\n.fa-share::before {\n content: \"\\f064\";\n}\n\n.fa-mail-forward::before {\n content: \"\\f064\";\n}\n\n.fa-bottle-droplet::before {\n content: \"\\e4c4\";\n}\n\n.fa-mask-face::before {\n content: \"\\e1d7\";\n}\n\n.fa-hill-rockslide::before {\n content: \"\\e508\";\n}\n\n.fa-right-left::before {\n content: \"\\f362\";\n}\n\n.fa-exchange-alt::before {\n content: \"\\f362\";\n}\n\n.fa-paper-plane::before {\n content: \"\\f1d8\";\n}\n\n.fa-road-circle-exclamation::before {\n content: \"\\e565\";\n}\n\n.fa-dungeon::before {\n content: \"\\f6d9\";\n}\n\n.fa-align-right::before {\n content: \"\\f038\";\n}\n\n.fa-money-bill-1-wave::before {\n content: \"\\f53b\";\n}\n\n.fa-money-bill-wave-alt::before {\n content: \"\\f53b\";\n}\n\n.fa-life-ring::before {\n content: \"\\f1cd\";\n}\n\n.fa-hands::before {\n content: \"\\f2a7\";\n}\n\n.fa-sign-language::before {\n content: \"\\f2a7\";\n}\n\n.fa-signing::before {\n content: \"\\f2a7\";\n}\n\n.fa-calendar-day::before {\n content: \"\\f783\";\n}\n\n.fa-water-ladder::before {\n content: \"\\f5c5\";\n}\n\n.fa-ladder-water::before {\n content: \"\\f5c5\";\n}\n\n.fa-swimming-pool::before {\n content: \"\\f5c5\";\n}\n\n.fa-arrows-up-down::before {\n content: \"\\f07d\";\n}\n\n.fa-arrows-v::before {\n content: \"\\f07d\";\n}\n\n.fa-face-grimace::before {\n content: \"\\f57f\";\n}\n\n.fa-grimace::before {\n content: \"\\f57f\";\n}\n\n.fa-wheelchair-move::before {\n content: \"\\e2ce\";\n}\n\n.fa-wheelchair-alt::before {\n content: \"\\e2ce\";\n}\n\n.fa-turn-down::before {\n content: \"\\f3be\";\n}\n\n.fa-level-down-alt::before {\n content: \"\\f3be\";\n}\n\n.fa-person-walking-arrow-right::before {\n content: \"\\e552\";\n}\n\n.fa-square-envelope::before {\n content: \"\\f199\";\n}\n\n.fa-envelope-square::before {\n content: \"\\f199\";\n}\n\n.fa-dice::before {\n content: \"\\f522\";\n}\n\n.fa-bowling-ball::before {\n content: \"\\f436\";\n}\n\n.fa-brain::before {\n content: \"\\f5dc\";\n}\n\n.fa-bandage::before {\n content: \"\\f462\";\n}\n\n.fa-band-aid::before {\n content: \"\\f462\";\n}\n\n.fa-calendar-minus::before {\n content: \"\\f272\";\n}\n\n.fa-circle-xmark::before {\n content: \"\\f057\";\n}\n\n.fa-times-circle::before {\n content: \"\\f057\";\n}\n\n.fa-xmark-circle::before {\n content: \"\\f057\";\n}\n\n.fa-gifts::before {\n content: \"\\f79c\";\n}\n\n.fa-hotel::before {\n content: \"\\f594\";\n}\n\n.fa-earth-asia::before {\n content: \"\\f57e\";\n}\n\n.fa-globe-asia::before {\n content: \"\\f57e\";\n}\n\n.fa-id-card-clip::before {\n content: \"\\f47f\";\n}\n\n.fa-id-card-alt::before {\n content: \"\\f47f\";\n}\n\n.fa-magnifying-glass-plus::before {\n content: \"\\f00e\";\n}\n\n.fa-search-plus::before {\n content: \"\\f00e\";\n}\n\n.fa-thumbs-up::before {\n content: \"\\f164\";\n}\n\n.fa-user-clock::before {\n content: \"\\f4fd\";\n}\n\n.fa-hand-dots::before {\n content: \"\\f461\";\n}\n\n.fa-allergies::before {\n content: \"\\f461\";\n}\n\n.fa-file-invoice::before {\n content: \"\\f570\";\n}\n\n.fa-window-minimize::before {\n content: \"\\f2d1\";\n}\n\n.fa-mug-saucer::before {\n content: \"\\f0f4\";\n}\n\n.fa-coffee::before {\n content: \"\\f0f4\";\n}\n\n.fa-brush::before {\n content: \"\\f55d\";\n}\n\n.fa-mask::before {\n content: \"\\f6fa\";\n}\n\n.fa-magnifying-glass-minus::before {\n content: \"\\f010\";\n}\n\n.fa-search-minus::before {\n content: \"\\f010\";\n}\n\n.fa-ruler-vertical::before {\n content: \"\\f548\";\n}\n\n.fa-user-large::before {\n content: \"\\f406\";\n}\n\n.fa-user-alt::before {\n content: \"\\f406\";\n}\n\n.fa-train-tram::before {\n content: \"\\e5b4\";\n}\n\n.fa-user-nurse::before {\n content: \"\\f82f\";\n}\n\n.fa-syringe::before {\n content: \"\\f48e\";\n}\n\n.fa-cloud-sun::before {\n content: \"\\f6c4\";\n}\n\n.fa-stopwatch-20::before {\n content: \"\\e06f\";\n}\n\n.fa-square-full::before {\n content: \"\\f45c\";\n}\n\n.fa-magnet::before {\n content: \"\\f076\";\n}\n\n.fa-jar::before {\n content: \"\\e516\";\n}\n\n.fa-note-sticky::before {\n content: \"\\f249\";\n}\n\n.fa-sticky-note::before {\n content: \"\\f249\";\n}\n\n.fa-bug-slash::before {\n content: \"\\e490\";\n}\n\n.fa-arrow-up-from-water-pump::before {\n content: \"\\e4b6\";\n}\n\n.fa-bone::before {\n content: \"\\f5d7\";\n}\n\n.fa-user-injured::before {\n content: \"\\f728\";\n}\n\n.fa-face-sad-tear::before {\n content: \"\\f5b4\";\n}\n\n.fa-sad-tear::before {\n content: \"\\f5b4\";\n}\n\n.fa-plane::before {\n content: \"\\f072\";\n}\n\n.fa-tent-arrows-down::before {\n content: \"\\e581\";\n}\n\n.fa-exclamation::before {\n content: \"\\!\";\n}\n\n.fa-arrows-spin::before {\n content: \"\\e4bb\";\n}\n\n.fa-print::before {\n content: \"\\f02f\";\n}\n\n.fa-turkish-lira-sign::before {\n content: \"\\e2bb\";\n}\n\n.fa-try::before {\n content: \"\\e2bb\";\n}\n\n.fa-turkish-lira::before {\n content: \"\\e2bb\";\n}\n\n.fa-dollar-sign::before {\n content: \"\\$\";\n}\n\n.fa-dollar::before {\n content: \"\\$\";\n}\n\n.fa-usd::before {\n content: \"\\$\";\n}\n\n.fa-x::before {\n content: \"X\";\n}\n\n.fa-magnifying-glass-dollar::before {\n content: \"\\f688\";\n}\n\n.fa-search-dollar::before {\n content: \"\\f688\";\n}\n\n.fa-users-gear::before {\n content: \"\\f509\";\n}\n\n.fa-users-cog::before {\n content: \"\\f509\";\n}\n\n.fa-person-military-pointing::before {\n content: \"\\e54a\";\n}\n\n.fa-building-columns::before {\n content: \"\\f19c\";\n}\n\n.fa-bank::before {\n content: \"\\f19c\";\n}\n\n.fa-institution::before {\n content: \"\\f19c\";\n}\n\n.fa-museum::before {\n content: \"\\f19c\";\n}\n\n.fa-university::before {\n content: \"\\f19c\";\n}\n\n.fa-umbrella::before {\n content: \"\\f0e9\";\n}\n\n.fa-trowel::before {\n content: \"\\e589\";\n}\n\n.fa-d::before {\n content: \"D\";\n}\n\n.fa-stapler::before {\n content: \"\\e5af\";\n}\n\n.fa-masks-theater::before {\n content: \"\\f630\";\n}\n\n.fa-theater-masks::before {\n content: \"\\f630\";\n}\n\n.fa-kip-sign::before {\n content: \"\\e1c4\";\n}\n\n.fa-hand-point-left::before {\n content: \"\\f0a5\";\n}\n\n.fa-handshake-simple::before {\n content: \"\\f4c6\";\n}\n\n.fa-handshake-alt::before {\n content: \"\\f4c6\";\n}\n\n.fa-jet-fighter::before {\n content: \"\\f0fb\";\n}\n\n.fa-fighter-jet::before {\n content: \"\\f0fb\";\n}\n\n.fa-square-share-nodes::before {\n content: \"\\f1e1\";\n}\n\n.fa-share-alt-square::before {\n content: \"\\f1e1\";\n}\n\n.fa-barcode::before {\n content: \"\\f02a\";\n}\n\n.fa-plus-minus::before {\n content: \"\\e43c\";\n}\n\n.fa-video::before {\n content: \"\\f03d\";\n}\n\n.fa-video-camera::before {\n content: \"\\f03d\";\n}\n\n.fa-graduation-cap::before {\n content: \"\\f19d\";\n}\n\n.fa-mortar-board::before {\n content: \"\\f19d\";\n}\n\n.fa-hand-holding-medical::before {\n content: \"\\e05c\";\n}\n\n.fa-person-circle-check::before {\n content: \"\\e53e\";\n}\n\n.fa-turn-up::before {\n content: \"\\f3bf\";\n}\n\n.fa-level-up-alt::before {\n content: \"\\f3bf\";\n}\n\n.sr-only,\n.fa-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.sr-only-focusable:not(:focus),\n.fa-sr-only-focusable:not(:focus) {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n/*!\n * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n:root, :host {\n --fa-style-family-classic: \"Font Awesome 6 Free\";\n --fa-font-solid: normal 900 1em/1 \"Font Awesome 6 Free\";\n}\n\n@font-face {\n font-family: \"Font Awesome 6 Free\";\n font-style: normal;\n font-weight: 900;\n font-display: block;\n src: url(\"../webfonts/fa-solid-900.woff2\") format(\"woff2\"), url(\"../webfonts/fa-solid-900.ttf\") format(\"truetype\");\n}\n.fas,\n.fa-solid {\n font-weight: 900;\n}\n\n/*!\n * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n:root, :host {\n --fa-style-family-classic: \"Font Awesome 6 Free\";\n --fa-font-regular: normal 400 1em/1 \"Font Awesome 6 Free\";\n}\n\n@font-face {\n font-family: \"Font Awesome 6 Free\";\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"../webfonts/fa-regular-400.woff2\") format(\"woff2\"), url(\"../webfonts/fa-regular-400.ttf\") format(\"truetype\");\n}\n.far,\n.fa-regular {\n font-weight: 400;\n}\n\n/*!\n * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n:root, :host {\n --fa-style-family-brands: \"Font Awesome 6 Brands\";\n --fa-font-brands: normal 400 1em/1 \"Font Awesome 6 Brands\";\n}\n\n@font-face {\n font-family: \"Font Awesome 6 Brands\";\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"../webfonts/fa-brands-400.woff2\") format(\"woff2\"), url(\"../webfonts/fa-brands-400.ttf\") format(\"truetype\");\n}\n.fab,\n.fa-brands {\n font-weight: 400;\n}\n\n.fa-monero:before {\n content: \"\\f3d0\";\n}\n\n.fa-hooli:before {\n content: \"\\f427\";\n}\n\n.fa-yelp:before {\n content: \"\\f1e9\";\n}\n\n.fa-cc-visa:before {\n content: \"\\f1f0\";\n}\n\n.fa-lastfm:before {\n content: \"\\f202\";\n}\n\n.fa-shopware:before {\n content: \"\\f5b5\";\n}\n\n.fa-creative-commons-nc:before {\n content: \"\\f4e8\";\n}\n\n.fa-aws:before {\n content: \"\\f375\";\n}\n\n.fa-redhat:before {\n content: \"\\f7bc\";\n}\n\n.fa-yoast:before {\n content: \"\\f2b1\";\n}\n\n.fa-cloudflare:before {\n content: \"\\e07d\";\n}\n\n.fa-ups:before {\n content: \"\\f7e0\";\n}\n\n.fa-pixiv:before {\n content: \"\\e640\";\n}\n\n.fa-wpexplorer:before {\n content: \"\\f2de\";\n}\n\n.fa-dyalog:before {\n content: \"\\f399\";\n}\n\n.fa-bity:before {\n content: \"\\f37a\";\n}\n\n.fa-stackpath:before {\n content: \"\\f842\";\n}\n\n.fa-buysellads:before {\n content: \"\\f20d\";\n}\n\n.fa-first-order:before {\n content: \"\\f2b0\";\n}\n\n.fa-modx:before {\n content: \"\\f285\";\n}\n\n.fa-guilded:before {\n content: \"\\e07e\";\n}\n\n.fa-vnv:before {\n content: \"\\f40b\";\n}\n\n.fa-square-js:before {\n content: \"\\f3b9\";\n}\n\n.fa-js-square:before {\n content: \"\\f3b9\";\n}\n\n.fa-microsoft:before {\n content: \"\\f3ca\";\n}\n\n.fa-qq:before {\n content: \"\\f1d6\";\n}\n\n.fa-orcid:before {\n content: \"\\f8d2\";\n}\n\n.fa-java:before {\n content: \"\\f4e4\";\n}\n\n.fa-invision:before {\n content: \"\\f7b0\";\n}\n\n.fa-creative-commons-pd-alt:before {\n content: \"\\f4ed\";\n}\n\n.fa-centercode:before {\n content: \"\\f380\";\n}\n\n.fa-glide-g:before {\n content: \"\\f2a6\";\n}\n\n.fa-drupal:before {\n content: \"\\f1a9\";\n}\n\n.fa-jxl:before {\n content: \"\\e67b\";\n}\n\n.fa-hire-a-helper:before {\n content: \"\\f3b0\";\n}\n\n.fa-creative-commons-by:before {\n content: \"\\f4e7\";\n}\n\n.fa-unity:before {\n content: \"\\e049\";\n}\n\n.fa-whmcs:before {\n content: \"\\f40d\";\n}\n\n.fa-rocketchat:before {\n content: \"\\f3e8\";\n}\n\n.fa-vk:before {\n content: \"\\f189\";\n}\n\n.fa-untappd:before {\n content: \"\\f405\";\n}\n\n.fa-mailchimp:before {\n content: \"\\f59e\";\n}\n\n.fa-css3-alt:before {\n content: \"\\f38b\";\n}\n\n.fa-square-reddit:before {\n content: \"\\f1a2\";\n}\n\n.fa-reddit-square:before {\n content: \"\\f1a2\";\n}\n\n.fa-vimeo-v:before {\n content: \"\\f27d\";\n}\n\n.fa-contao:before {\n content: \"\\f26d\";\n}\n\n.fa-square-font-awesome:before {\n content: \"\\e5ad\";\n}\n\n.fa-deskpro:before {\n content: \"\\f38f\";\n}\n\n.fa-brave:before {\n content: \"\\e63c\";\n}\n\n.fa-sistrix:before {\n content: \"\\f3ee\";\n}\n\n.fa-square-instagram:before {\n content: \"\\e055\";\n}\n\n.fa-instagram-square:before {\n content: \"\\e055\";\n}\n\n.fa-battle-net:before {\n content: \"\\f835\";\n}\n\n.fa-the-red-yeti:before {\n content: \"\\f69d\";\n}\n\n.fa-square-hacker-news:before {\n content: \"\\f3af\";\n}\n\n.fa-hacker-news-square:before {\n content: \"\\f3af\";\n}\n\n.fa-edge:before {\n content: \"\\f282\";\n}\n\n.fa-threads:before {\n content: \"\\e618\";\n}\n\n.fa-napster:before {\n content: \"\\f3d2\";\n}\n\n.fa-square-snapchat:before {\n content: \"\\f2ad\";\n}\n\n.fa-snapchat-square:before {\n content: \"\\f2ad\";\n}\n\n.fa-google-plus-g:before {\n content: \"\\f0d5\";\n}\n\n.fa-artstation:before {\n content: \"\\f77a\";\n}\n\n.fa-markdown:before {\n content: \"\\f60f\";\n}\n\n.fa-sourcetree:before {\n content: \"\\f7d3\";\n}\n\n.fa-google-plus:before {\n content: \"\\f2b3\";\n}\n\n.fa-diaspora:before {\n content: \"\\f791\";\n}\n\n.fa-foursquare:before {\n content: \"\\f180\";\n}\n\n.fa-stack-overflow:before {\n content: \"\\f16c\";\n}\n\n.fa-github-alt:before {\n content: \"\\f113\";\n}\n\n.fa-phoenix-squadron:before {\n content: \"\\f511\";\n}\n\n.fa-pagelines:before {\n content: \"\\f18c\";\n}\n\n.fa-algolia:before {\n content: \"\\f36c\";\n}\n\n.fa-red-river:before {\n content: \"\\f3e3\";\n}\n\n.fa-creative-commons-sa:before {\n content: \"\\f4ef\";\n}\n\n.fa-safari:before {\n content: \"\\f267\";\n}\n\n.fa-google:before {\n content: \"\\f1a0\";\n}\n\n.fa-square-font-awesome-stroke:before {\n content: \"\\f35c\";\n}\n\n.fa-font-awesome-alt:before {\n content: \"\\f35c\";\n}\n\n.fa-atlassian:before {\n content: \"\\f77b\";\n}\n\n.fa-linkedin-in:before {\n content: \"\\f0e1\";\n}\n\n.fa-digital-ocean:before {\n content: \"\\f391\";\n}\n\n.fa-nimblr:before {\n content: \"\\f5a8\";\n}\n\n.fa-chromecast:before {\n content: \"\\f838\";\n}\n\n.fa-evernote:before {\n content: \"\\f839\";\n}\n\n.fa-hacker-news:before {\n content: \"\\f1d4\";\n}\n\n.fa-creative-commons-sampling:before {\n content: \"\\f4f0\";\n}\n\n.fa-adversal:before {\n content: \"\\f36a\";\n}\n\n.fa-creative-commons:before {\n content: \"\\f25e\";\n}\n\n.fa-watchman-monitoring:before {\n content: \"\\e087\";\n}\n\n.fa-fonticons:before {\n content: \"\\f280\";\n}\n\n.fa-weixin:before {\n content: \"\\f1d7\";\n}\n\n.fa-shirtsinbulk:before {\n content: \"\\f214\";\n}\n\n.fa-codepen:before {\n content: \"\\f1cb\";\n}\n\n.fa-git-alt:before {\n content: \"\\f841\";\n}\n\n.fa-lyft:before {\n content: \"\\f3c3\";\n}\n\n.fa-rev:before {\n content: \"\\f5b2\";\n}\n\n.fa-windows:before {\n content: \"\\f17a\";\n}\n\n.fa-wizards-of-the-coast:before {\n content: \"\\f730\";\n}\n\n.fa-square-viadeo:before {\n content: \"\\f2aa\";\n}\n\n.fa-viadeo-square:before {\n content: \"\\f2aa\";\n}\n\n.fa-meetup:before {\n content: \"\\f2e0\";\n}\n\n.fa-centos:before {\n content: \"\\f789\";\n}\n\n.fa-adn:before {\n content: \"\\f170\";\n}\n\n.fa-cloudsmith:before {\n content: \"\\f384\";\n}\n\n.fa-opensuse:before {\n content: \"\\e62b\";\n}\n\n.fa-pied-piper-alt:before {\n content: \"\\f1a8\";\n}\n\n.fa-square-dribbble:before {\n content: \"\\f397\";\n}\n\n.fa-dribbble-square:before {\n content: \"\\f397\";\n}\n\n.fa-codiepie:before {\n content: \"\\f284\";\n}\n\n.fa-node:before {\n content: \"\\f419\";\n}\n\n.fa-mix:before {\n content: \"\\f3cb\";\n}\n\n.fa-steam:before {\n content: \"\\f1b6\";\n}\n\n.fa-cc-apple-pay:before {\n content: \"\\f416\";\n}\n\n.fa-scribd:before {\n content: \"\\f28a\";\n}\n\n.fa-debian:before {\n content: \"\\e60b\";\n}\n\n.fa-openid:before {\n content: \"\\f19b\";\n}\n\n.fa-instalod:before {\n content: \"\\e081\";\n}\n\n.fa-expeditedssl:before {\n content: \"\\f23e\";\n}\n\n.fa-sellcast:before {\n content: \"\\f2da\";\n}\n\n.fa-square-twitter:before {\n content: \"\\f081\";\n}\n\n.fa-twitter-square:before {\n content: \"\\f081\";\n}\n\n.fa-r-project:before {\n content: \"\\f4f7\";\n}\n\n.fa-delicious:before {\n content: \"\\f1a5\";\n}\n\n.fa-freebsd:before {\n content: \"\\f3a4\";\n}\n\n.fa-vuejs:before {\n content: \"\\f41f\";\n}\n\n.fa-accusoft:before {\n content: \"\\f369\";\n}\n\n.fa-ioxhost:before {\n content: \"\\f208\";\n}\n\n.fa-fonticons-fi:before {\n content: \"\\f3a2\";\n}\n\n.fa-app-store:before {\n content: \"\\f36f\";\n}\n\n.fa-cc-mastercard:before {\n content: \"\\f1f1\";\n}\n\n.fa-itunes-note:before {\n content: \"\\f3b5\";\n}\n\n.fa-golang:before {\n content: \"\\e40f\";\n}\n\n.fa-kickstarter:before {\n content: \"\\f3bb\";\n}\n\n.fa-square-kickstarter:before {\n content: \"\\f3bb\";\n}\n\n.fa-grav:before {\n content: \"\\f2d6\";\n}\n\n.fa-weibo:before {\n content: \"\\f18a\";\n}\n\n.fa-uncharted:before {\n content: \"\\e084\";\n}\n\n.fa-firstdraft:before {\n content: \"\\f3a1\";\n}\n\n.fa-square-youtube:before {\n content: \"\\f431\";\n}\n\n.fa-youtube-square:before {\n content: \"\\f431\";\n}\n\n.fa-wikipedia-w:before {\n content: \"\\f266\";\n}\n\n.fa-wpressr:before {\n content: \"\\f3e4\";\n}\n\n.fa-rendact:before {\n content: \"\\f3e4\";\n}\n\n.fa-angellist:before {\n content: \"\\f209\";\n}\n\n.fa-galactic-republic:before {\n content: \"\\f50c\";\n}\n\n.fa-nfc-directional:before {\n content: \"\\e530\";\n}\n\n.fa-skype:before {\n content: \"\\f17e\";\n}\n\n.fa-joget:before {\n content: \"\\f3b7\";\n}\n\n.fa-fedora:before {\n content: \"\\f798\";\n}\n\n.fa-stripe-s:before {\n content: \"\\f42a\";\n}\n\n.fa-meta:before {\n content: \"\\e49b\";\n}\n\n.fa-laravel:before {\n content: \"\\f3bd\";\n}\n\n.fa-hotjar:before {\n content: \"\\f3b1\";\n}\n\n.fa-bluetooth-b:before {\n content: \"\\f294\";\n}\n\n.fa-square-letterboxd:before {\n content: \"\\e62e\";\n}\n\n.fa-sticker-mule:before {\n content: \"\\f3f7\";\n}\n\n.fa-creative-commons-zero:before {\n content: \"\\f4f3\";\n}\n\n.fa-hips:before {\n content: \"\\f452\";\n}\n\n.fa-behance:before {\n content: \"\\f1b4\";\n}\n\n.fa-reddit:before {\n content: \"\\f1a1\";\n}\n\n.fa-discord:before {\n content: \"\\f392\";\n}\n\n.fa-chrome:before {\n content: \"\\f268\";\n}\n\n.fa-app-store-ios:before {\n content: \"\\f370\";\n}\n\n.fa-cc-discover:before {\n content: \"\\f1f2\";\n}\n\n.fa-wpbeginner:before {\n content: \"\\f297\";\n}\n\n.fa-confluence:before {\n content: \"\\f78d\";\n}\n\n.fa-shoelace:before {\n content: \"\\e60c\";\n}\n\n.fa-mdb:before {\n content: \"\\f8ca\";\n}\n\n.fa-dochub:before {\n content: \"\\f394\";\n}\n\n.fa-accessible-icon:before {\n content: \"\\f368\";\n}\n\n.fa-ebay:before {\n content: \"\\f4f4\";\n}\n\n.fa-amazon:before {\n content: \"\\f270\";\n}\n\n.fa-unsplash:before {\n content: \"\\e07c\";\n}\n\n.fa-yarn:before {\n content: \"\\f7e3\";\n}\n\n.fa-square-steam:before {\n content: \"\\f1b7\";\n}\n\n.fa-steam-square:before {\n content: \"\\f1b7\";\n}\n\n.fa-500px:before {\n content: \"\\f26e\";\n}\n\n.fa-square-vimeo:before {\n content: \"\\f194\";\n}\n\n.fa-vimeo-square:before {\n content: \"\\f194\";\n}\n\n.fa-asymmetrik:before {\n content: \"\\f372\";\n}\n\n.fa-font-awesome:before {\n content: \"\\f2b4\";\n}\n\n.fa-font-awesome-flag:before {\n content: \"\\f2b4\";\n}\n\n.fa-font-awesome-logo-full:before {\n content: \"\\f2b4\";\n}\n\n.fa-gratipay:before {\n content: \"\\f184\";\n}\n\n.fa-apple:before {\n content: \"\\f179\";\n}\n\n.fa-hive:before {\n content: \"\\e07f\";\n}\n\n.fa-gitkraken:before {\n content: \"\\f3a6\";\n}\n\n.fa-keybase:before {\n content: \"\\f4f5\";\n}\n\n.fa-apple-pay:before {\n content: \"\\f415\";\n}\n\n.fa-padlet:before {\n content: \"\\e4a0\";\n}\n\n.fa-amazon-pay:before {\n content: \"\\f42c\";\n}\n\n.fa-square-github:before {\n content: \"\\f092\";\n}\n\n.fa-github-square:before {\n content: \"\\f092\";\n}\n\n.fa-stumbleupon:before {\n content: \"\\f1a4\";\n}\n\n.fa-fedex:before {\n content: \"\\f797\";\n}\n\n.fa-phoenix-framework:before {\n content: \"\\f3dc\";\n}\n\n.fa-shopify:before {\n content: \"\\e057\";\n}\n\n.fa-neos:before {\n content: \"\\f612\";\n}\n\n.fa-square-threads:before {\n content: \"\\e619\";\n}\n\n.fa-hackerrank:before {\n content: \"\\f5f7\";\n}\n\n.fa-researchgate:before {\n content: \"\\f4f8\";\n}\n\n.fa-swift:before {\n content: \"\\f8e1\";\n}\n\n.fa-angular:before {\n content: \"\\f420\";\n}\n\n.fa-speakap:before {\n content: \"\\f3f3\";\n}\n\n.fa-angrycreative:before {\n content: \"\\f36e\";\n}\n\n.fa-y-combinator:before {\n content: \"\\f23b\";\n}\n\n.fa-empire:before {\n content: \"\\f1d1\";\n}\n\n.fa-envira:before {\n content: \"\\f299\";\n}\n\n.fa-google-scholar:before {\n content: \"\\e63b\";\n}\n\n.fa-square-gitlab:before {\n content: \"\\e5ae\";\n}\n\n.fa-gitlab-square:before {\n content: \"\\e5ae\";\n}\n\n.fa-studiovinari:before {\n content: \"\\f3f8\";\n}\n\n.fa-pied-piper:before {\n content: \"\\f2ae\";\n}\n\n.fa-wordpress:before {\n content: \"\\f19a\";\n}\n\n.fa-product-hunt:before {\n content: \"\\f288\";\n}\n\n.fa-firefox:before {\n content: \"\\f269\";\n}\n\n.fa-linode:before {\n content: \"\\f2b8\";\n}\n\n.fa-goodreads:before {\n content: \"\\f3a8\";\n}\n\n.fa-square-odnoklassniki:before {\n content: \"\\f264\";\n}\n\n.fa-odnoklassniki-square:before {\n content: \"\\f264\";\n}\n\n.fa-jsfiddle:before {\n content: \"\\f1cc\";\n}\n\n.fa-sith:before {\n content: \"\\f512\";\n}\n\n.fa-themeisle:before {\n content: \"\\f2b2\";\n}\n\n.fa-page4:before {\n content: \"\\f3d7\";\n}\n\n.fa-hashnode:before {\n content: \"\\e499\";\n}\n\n.fa-react:before {\n content: \"\\f41b\";\n}\n\n.fa-cc-paypal:before {\n content: \"\\f1f4\";\n}\n\n.fa-squarespace:before {\n content: \"\\f5be\";\n}\n\n.fa-cc-stripe:before {\n content: \"\\f1f5\";\n}\n\n.fa-creative-commons-share:before {\n content: \"\\f4f2\";\n}\n\n.fa-bitcoin:before {\n content: \"\\f379\";\n}\n\n.fa-keycdn:before {\n content: \"\\f3ba\";\n}\n\n.fa-opera:before {\n content: \"\\f26a\";\n}\n\n.fa-itch-io:before {\n content: \"\\f83a\";\n}\n\n.fa-umbraco:before {\n content: \"\\f8e8\";\n}\n\n.fa-galactic-senate:before {\n content: \"\\f50d\";\n}\n\n.fa-ubuntu:before {\n content: \"\\f7df\";\n}\n\n.fa-draft2digital:before {\n content: \"\\f396\";\n}\n\n.fa-stripe:before {\n content: \"\\f429\";\n}\n\n.fa-houzz:before {\n content: \"\\f27c\";\n}\n\n.fa-gg:before {\n content: \"\\f260\";\n}\n\n.fa-dhl:before {\n content: \"\\f790\";\n}\n\n.fa-square-pinterest:before {\n content: \"\\f0d3\";\n}\n\n.fa-pinterest-square:before {\n content: \"\\f0d3\";\n}\n\n.fa-xing:before {\n content: \"\\f168\";\n}\n\n.fa-blackberry:before {\n content: \"\\f37b\";\n}\n\n.fa-creative-commons-pd:before {\n content: \"\\f4ec\";\n}\n\n.fa-playstation:before {\n content: \"\\f3df\";\n}\n\n.fa-quinscape:before {\n content: \"\\f459\";\n}\n\n.fa-less:before {\n content: \"\\f41d\";\n}\n\n.fa-blogger-b:before {\n content: \"\\f37d\";\n}\n\n.fa-opencart:before {\n content: \"\\f23d\";\n}\n\n.fa-vine:before {\n content: \"\\f1ca\";\n}\n\n.fa-signal-messenger:before {\n content: \"\\e663\";\n}\n\n.fa-paypal:before {\n content: \"\\f1ed\";\n}\n\n.fa-gitlab:before {\n content: \"\\f296\";\n}\n\n.fa-typo3:before {\n content: \"\\f42b\";\n}\n\n.fa-reddit-alien:before {\n content: \"\\f281\";\n}\n\n.fa-yahoo:before {\n content: \"\\f19e\";\n}\n\n.fa-dailymotion:before {\n content: \"\\e052\";\n}\n\n.fa-affiliatetheme:before {\n content: \"\\f36b\";\n}\n\n.fa-pied-piper-pp:before {\n content: \"\\f1a7\";\n}\n\n.fa-bootstrap:before {\n content: \"\\f836\";\n}\n\n.fa-odnoklassniki:before {\n content: \"\\f263\";\n}\n\n.fa-nfc-symbol:before {\n content: \"\\e531\";\n}\n\n.fa-mintbit:before {\n content: \"\\e62f\";\n}\n\n.fa-ethereum:before {\n content: \"\\f42e\";\n}\n\n.fa-speaker-deck:before {\n content: \"\\f83c\";\n}\n\n.fa-creative-commons-nc-eu:before {\n content: \"\\f4e9\";\n}\n\n.fa-patreon:before {\n content: \"\\f3d9\";\n}\n\n.fa-avianex:before {\n content: \"\\f374\";\n}\n\n.fa-ello:before {\n content: \"\\f5f1\";\n}\n\n.fa-gofore:before {\n content: \"\\f3a7\";\n}\n\n.fa-bimobject:before {\n content: \"\\f378\";\n}\n\n.fa-brave-reverse:before {\n content: \"\\e63d\";\n}\n\n.fa-facebook-f:before {\n content: \"\\f39e\";\n}\n\n.fa-square-google-plus:before {\n content: \"\\f0d4\";\n}\n\n.fa-google-plus-square:before {\n content: \"\\f0d4\";\n}\n\n.fa-web-awesome:before {\n content: \"\\e682\";\n}\n\n.fa-mandalorian:before {\n content: \"\\f50f\";\n}\n\n.fa-first-order-alt:before {\n content: \"\\f50a\";\n}\n\n.fa-osi:before {\n content: \"\\f41a\";\n}\n\n.fa-google-wallet:before {\n content: \"\\f1ee\";\n}\n\n.fa-d-and-d-beyond:before {\n content: \"\\f6ca\";\n}\n\n.fa-periscope:before {\n content: \"\\f3da\";\n}\n\n.fa-fulcrum:before {\n content: \"\\f50b\";\n}\n\n.fa-cloudscale:before {\n content: \"\\f383\";\n}\n\n.fa-forumbee:before {\n content: \"\\f211\";\n}\n\n.fa-mizuni:before {\n content: \"\\f3cc\";\n}\n\n.fa-schlix:before {\n content: \"\\f3ea\";\n}\n\n.fa-square-xing:before {\n content: \"\\f169\";\n}\n\n.fa-xing-square:before {\n content: \"\\f169\";\n}\n\n.fa-bandcamp:before {\n content: \"\\f2d5\";\n}\n\n.fa-wpforms:before {\n content: \"\\f298\";\n}\n\n.fa-cloudversify:before {\n content: \"\\f385\";\n}\n\n.fa-usps:before {\n content: \"\\f7e1\";\n}\n\n.fa-megaport:before {\n content: \"\\f5a3\";\n}\n\n.fa-magento:before {\n content: \"\\f3c4\";\n}\n\n.fa-spotify:before {\n content: \"\\f1bc\";\n}\n\n.fa-optin-monster:before {\n content: \"\\f23c\";\n}\n\n.fa-fly:before {\n content: \"\\f417\";\n}\n\n.fa-aviato:before {\n content: \"\\f421\";\n}\n\n.fa-itunes:before {\n content: \"\\f3b4\";\n}\n\n.fa-cuttlefish:before {\n content: \"\\f38c\";\n}\n\n.fa-blogger:before {\n content: \"\\f37c\";\n}\n\n.fa-flickr:before {\n content: \"\\f16e\";\n}\n\n.fa-viber:before {\n content: \"\\f409\";\n}\n\n.fa-soundcloud:before {\n content: \"\\f1be\";\n}\n\n.fa-digg:before {\n content: \"\\f1a6\";\n}\n\n.fa-tencent-weibo:before {\n content: \"\\f1d5\";\n}\n\n.fa-letterboxd:before {\n content: \"\\e62d\";\n}\n\n.fa-symfony:before {\n content: \"\\f83d\";\n}\n\n.fa-maxcdn:before {\n content: \"\\f136\";\n}\n\n.fa-etsy:before {\n content: \"\\f2d7\";\n}\n\n.fa-facebook-messenger:before {\n content: \"\\f39f\";\n}\n\n.fa-audible:before {\n content: \"\\f373\";\n}\n\n.fa-think-peaks:before {\n content: \"\\f731\";\n}\n\n.fa-bilibili:before {\n content: \"\\e3d9\";\n}\n\n.fa-erlang:before {\n content: \"\\f39d\";\n}\n\n.fa-x-twitter:before {\n content: \"\\e61b\";\n}\n\n.fa-cotton-bureau:before {\n content: \"\\f89e\";\n}\n\n.fa-dashcube:before {\n content: \"\\f210\";\n}\n\n.fa-42-group:before {\n content: \"\\e080\";\n}\n\n.fa-innosoft:before {\n content: \"\\e080\";\n}\n\n.fa-stack-exchange:before {\n content: \"\\f18d\";\n}\n\n.fa-elementor:before {\n content: \"\\f430\";\n}\n\n.fa-square-pied-piper:before {\n content: \"\\e01e\";\n}\n\n.fa-pied-piper-square:before {\n content: \"\\e01e\";\n}\n\n.fa-creative-commons-nd:before {\n content: \"\\f4eb\";\n}\n\n.fa-palfed:before {\n content: \"\\f3d8\";\n}\n\n.fa-superpowers:before {\n content: \"\\f2dd\";\n}\n\n.fa-resolving:before {\n content: \"\\f3e7\";\n}\n\n.fa-xbox:before {\n content: \"\\f412\";\n}\n\n.fa-square-web-awesome-stroke:before {\n content: \"\\e684\";\n}\n\n.fa-searchengin:before {\n content: \"\\f3eb\";\n}\n\n.fa-tiktok:before {\n content: \"\\e07b\";\n}\n\n.fa-square-facebook:before {\n content: \"\\f082\";\n}\n\n.fa-facebook-square:before {\n content: \"\\f082\";\n}\n\n.fa-renren:before {\n content: \"\\f18b\";\n}\n\n.fa-linux:before {\n content: \"\\f17c\";\n}\n\n.fa-glide:before {\n content: \"\\f2a5\";\n}\n\n.fa-linkedin:before {\n content: \"\\f08c\";\n}\n\n.fa-hubspot:before {\n content: \"\\f3b2\";\n}\n\n.fa-deploydog:before {\n content: \"\\f38e\";\n}\n\n.fa-twitch:before {\n content: \"\\f1e8\";\n}\n\n.fa-ravelry:before {\n content: \"\\f2d9\";\n}\n\n.fa-mixer:before {\n content: \"\\e056\";\n}\n\n.fa-square-lastfm:before {\n content: \"\\f203\";\n}\n\n.fa-lastfm-square:before {\n content: \"\\f203\";\n}\n\n.fa-vimeo:before {\n content: \"\\f40a\";\n}\n\n.fa-mendeley:before {\n content: \"\\f7b3\";\n}\n\n.fa-uniregistry:before {\n content: \"\\f404\";\n}\n\n.fa-figma:before {\n content: \"\\f799\";\n}\n\n.fa-creative-commons-remix:before {\n content: \"\\f4ee\";\n}\n\n.fa-cc-amazon-pay:before {\n content: \"\\f42d\";\n}\n\n.fa-dropbox:before {\n content: \"\\f16b\";\n}\n\n.fa-instagram:before {\n content: \"\\f16d\";\n}\n\n.fa-cmplid:before {\n content: \"\\e360\";\n}\n\n.fa-upwork:before {\n content: \"\\e641\";\n}\n\n.fa-facebook:before {\n content: \"\\f09a\";\n}\n\n.fa-gripfire:before {\n content: \"\\f3ac\";\n}\n\n.fa-jedi-order:before {\n content: \"\\f50e\";\n}\n\n.fa-uikit:before {\n content: \"\\f403\";\n}\n\n.fa-fort-awesome-alt:before {\n content: \"\\f3a3\";\n}\n\n.fa-phabricator:before {\n content: \"\\f3db\";\n}\n\n.fa-ussunnah:before {\n content: \"\\f407\";\n}\n\n.fa-earlybirds:before {\n content: \"\\f39a\";\n}\n\n.fa-trade-federation:before {\n content: \"\\f513\";\n}\n\n.fa-autoprefixer:before {\n content: \"\\f41c\";\n}\n\n.fa-whatsapp:before {\n content: \"\\f232\";\n}\n\n.fa-square-upwork:before {\n content: \"\\e67c\";\n}\n\n.fa-slideshare:before {\n content: \"\\f1e7\";\n}\n\n.fa-google-play:before {\n content: \"\\f3ab\";\n}\n\n.fa-viadeo:before {\n content: \"\\f2a9\";\n}\n\n.fa-line:before {\n content: \"\\f3c0\";\n}\n\n.fa-google-drive:before {\n content: \"\\f3aa\";\n}\n\n.fa-servicestack:before {\n content: \"\\f3ec\";\n}\n\n.fa-simplybuilt:before {\n content: \"\\f215\";\n}\n\n.fa-bitbucket:before {\n content: \"\\f171\";\n}\n\n.fa-imdb:before {\n content: \"\\f2d8\";\n}\n\n.fa-deezer:before {\n content: \"\\e077\";\n}\n\n.fa-raspberry-pi:before {\n content: \"\\f7bb\";\n}\n\n.fa-jira:before {\n content: \"\\f7b1\";\n}\n\n.fa-docker:before {\n content: \"\\f395\";\n}\n\n.fa-screenpal:before {\n content: \"\\e570\";\n}\n\n.fa-bluetooth:before {\n content: \"\\f293\";\n}\n\n.fa-gitter:before {\n content: \"\\f426\";\n}\n\n.fa-d-and-d:before {\n content: \"\\f38d\";\n}\n\n.fa-microblog:before {\n content: \"\\e01a\";\n}\n\n.fa-cc-diners-club:before {\n content: \"\\f24c\";\n}\n\n.fa-gg-circle:before {\n content: \"\\f261\";\n}\n\n.fa-pied-piper-hat:before {\n content: \"\\f4e5\";\n}\n\n.fa-kickstarter-k:before {\n content: \"\\f3bc\";\n}\n\n.fa-yandex:before {\n content: \"\\f413\";\n}\n\n.fa-readme:before {\n content: \"\\f4d5\";\n}\n\n.fa-html5:before {\n content: \"\\f13b\";\n}\n\n.fa-sellsy:before {\n content: \"\\f213\";\n}\n\n.fa-square-web-awesome:before {\n content: \"\\e683\";\n}\n\n.fa-sass:before {\n content: \"\\f41e\";\n}\n\n.fa-wirsindhandwerk:before {\n content: \"\\e2d0\";\n}\n\n.fa-wsh:before {\n content: \"\\e2d0\";\n}\n\n.fa-buromobelexperte:before {\n content: \"\\f37f\";\n}\n\n.fa-salesforce:before {\n content: \"\\f83b\";\n}\n\n.fa-octopus-deploy:before {\n content: \"\\e082\";\n}\n\n.fa-medapps:before {\n content: \"\\f3c6\";\n}\n\n.fa-ns8:before {\n content: \"\\f3d5\";\n}\n\n.fa-pinterest-p:before {\n content: \"\\f231\";\n}\n\n.fa-apper:before {\n content: \"\\f371\";\n}\n\n.fa-fort-awesome:before {\n content: \"\\f286\";\n}\n\n.fa-waze:before {\n content: \"\\f83f\";\n}\n\n.fa-bluesky:before {\n content: \"\\e671\";\n}\n\n.fa-cc-jcb:before {\n content: \"\\f24b\";\n}\n\n.fa-snapchat:before {\n content: \"\\f2ab\";\n}\n\n.fa-snapchat-ghost:before {\n content: \"\\f2ab\";\n}\n\n.fa-fantasy-flight-games:before {\n content: \"\\f6dc\";\n}\n\n.fa-rust:before {\n content: \"\\e07a\";\n}\n\n.fa-wix:before {\n content: \"\\f5cf\";\n}\n\n.fa-square-behance:before {\n content: \"\\f1b5\";\n}\n\n.fa-behance-square:before {\n content: \"\\f1b5\";\n}\n\n.fa-supple:before {\n content: \"\\f3f9\";\n}\n\n.fa-webflow:before {\n content: \"\\e65c\";\n}\n\n.fa-rebel:before {\n content: \"\\f1d0\";\n}\n\n.fa-css3:before {\n content: \"\\f13c\";\n}\n\n.fa-staylinked:before {\n content: \"\\f3f5\";\n}\n\n.fa-kaggle:before {\n content: \"\\f5fa\";\n}\n\n.fa-space-awesome:before {\n content: \"\\e5ac\";\n}\n\n.fa-deviantart:before {\n content: \"\\f1bd\";\n}\n\n.fa-cpanel:before {\n content: \"\\f388\";\n}\n\n.fa-goodreads-g:before {\n content: \"\\f3a9\";\n}\n\n.fa-square-git:before {\n content: \"\\f1d2\";\n}\n\n.fa-git-square:before {\n content: \"\\f1d2\";\n}\n\n.fa-square-tumblr:before {\n content: \"\\f174\";\n}\n\n.fa-tumblr-square:before {\n content: \"\\f174\";\n}\n\n.fa-trello:before {\n content: \"\\f181\";\n}\n\n.fa-creative-commons-nc-jp:before {\n content: \"\\f4ea\";\n}\n\n.fa-get-pocket:before {\n content: \"\\f265\";\n}\n\n.fa-perbyte:before {\n content: \"\\e083\";\n}\n\n.fa-grunt:before {\n content: \"\\f3ad\";\n}\n\n.fa-weebly:before {\n content: \"\\f5cc\";\n}\n\n.fa-connectdevelop:before {\n content: \"\\f20e\";\n}\n\n.fa-leanpub:before {\n content: \"\\f212\";\n}\n\n.fa-black-tie:before {\n content: \"\\f27e\";\n}\n\n.fa-themeco:before {\n content: \"\\f5c6\";\n}\n\n.fa-python:before {\n content: \"\\f3e2\";\n}\n\n.fa-android:before {\n content: \"\\f17b\";\n}\n\n.fa-bots:before {\n content: \"\\e340\";\n}\n\n.fa-free-code-camp:before {\n content: \"\\f2c5\";\n}\n\n.fa-hornbill:before {\n content: \"\\f592\";\n}\n\n.fa-js:before {\n content: \"\\f3b8\";\n}\n\n.fa-ideal:before {\n content: \"\\e013\";\n}\n\n.fa-git:before {\n content: \"\\f1d3\";\n}\n\n.fa-dev:before {\n content: \"\\f6cc\";\n}\n\n.fa-sketch:before {\n content: \"\\f7c6\";\n}\n\n.fa-yandex-international:before {\n content: \"\\f414\";\n}\n\n.fa-cc-amex:before {\n content: \"\\f1f3\";\n}\n\n.fa-uber:before {\n content: \"\\f402\";\n}\n\n.fa-github:before {\n content: \"\\f09b\";\n}\n\n.fa-php:before {\n content: \"\\f457\";\n}\n\n.fa-alipay:before {\n content: \"\\f642\";\n}\n\n.fa-youtube:before {\n content: \"\\f167\";\n}\n\n.fa-skyatlas:before {\n content: \"\\f216\";\n}\n\n.fa-firefox-browser:before {\n content: \"\\e007\";\n}\n\n.fa-replyd:before {\n content: \"\\f3e6\";\n}\n\n.fa-suse:before {\n content: \"\\f7d6\";\n}\n\n.fa-jenkins:before {\n content: \"\\f3b6\";\n}\n\n.fa-twitter:before {\n content: \"\\f099\";\n}\n\n.fa-rockrms:before {\n content: \"\\f3e9\";\n}\n\n.fa-pinterest:before {\n content: \"\\f0d2\";\n}\n\n.fa-buffer:before {\n content: \"\\f837\";\n}\n\n.fa-npm:before {\n content: \"\\f3d4\";\n}\n\n.fa-yammer:before {\n content: \"\\f840\";\n}\n\n.fa-btc:before {\n content: \"\\f15a\";\n}\n\n.fa-dribbble:before {\n content: \"\\f17d\";\n}\n\n.fa-stumbleupon-circle:before {\n content: \"\\f1a3\";\n}\n\n.fa-internet-explorer:before {\n content: \"\\f26b\";\n}\n\n.fa-stubber:before {\n content: \"\\e5c7\";\n}\n\n.fa-telegram:before {\n content: \"\\f2c6\";\n}\n\n.fa-telegram-plane:before {\n content: \"\\f2c6\";\n}\n\n.fa-old-republic:before {\n content: \"\\f510\";\n}\n\n.fa-odysee:before {\n content: \"\\e5c6\";\n}\n\n.fa-square-whatsapp:before {\n content: \"\\f40c\";\n}\n\n.fa-whatsapp-square:before {\n content: \"\\f40c\";\n}\n\n.fa-node-js:before {\n content: \"\\f3d3\";\n}\n\n.fa-edge-legacy:before {\n content: \"\\e078\";\n}\n\n.fa-slack:before {\n content: \"\\f198\";\n}\n\n.fa-slack-hash:before {\n content: \"\\f198\";\n}\n\n.fa-medrt:before {\n content: \"\\f3c8\";\n}\n\n.fa-usb:before {\n content: \"\\f287\";\n}\n\n.fa-tumblr:before {\n content: \"\\f173\";\n}\n\n.fa-vaadin:before {\n content: \"\\f408\";\n}\n\n.fa-quora:before {\n content: \"\\f2c4\";\n}\n\n.fa-square-x-twitter:before {\n content: \"\\e61a\";\n}\n\n.fa-reacteurope:before {\n content: \"\\f75d\";\n}\n\n.fa-medium:before {\n content: \"\\f23a\";\n}\n\n.fa-medium-m:before {\n content: \"\\f23a\";\n}\n\n.fa-amilia:before {\n content: \"\\f36d\";\n}\n\n.fa-mixcloud:before {\n content: \"\\f289\";\n}\n\n.fa-flipboard:before {\n content: \"\\f44d\";\n}\n\n.fa-viacoin:before {\n content: \"\\f237\";\n}\n\n.fa-critical-role:before {\n content: \"\\f6c9\";\n}\n\n.fa-sitrox:before {\n content: \"\\e44a\";\n}\n\n.fa-discourse:before {\n content: \"\\f393\";\n}\n\n.fa-joomla:before {\n content: \"\\f1aa\";\n}\n\n.fa-mastodon:before {\n content: \"\\f4f6\";\n}\n\n.fa-airbnb:before {\n content: \"\\f834\";\n}\n\n.fa-wolf-pack-battalion:before {\n content: \"\\f514\";\n}\n\n.fa-buy-n-large:before {\n content: \"\\f8a6\";\n}\n\n.fa-gulp:before {\n content: \"\\f3ae\";\n}\n\n.fa-creative-commons-sampling-plus:before {\n content: \"\\f4f1\";\n}\n\n.fa-strava:before {\n content: \"\\f428\";\n}\n\n.fa-ember:before {\n content: \"\\f423\";\n}\n\n.fa-canadian-maple-leaf:before {\n content: \"\\f785\";\n}\n\n.fa-teamspeak:before {\n content: \"\\f4f9\";\n}\n\n.fa-pushed:before {\n content: \"\\f3e1\";\n}\n\n.fa-wordpress-simple:before {\n content: \"\\f411\";\n}\n\n.fa-nutritionix:before {\n content: \"\\f3d6\";\n}\n\n.fa-wodu:before {\n content: \"\\e088\";\n}\n\n.fa-google-pay:before {\n content: \"\\e079\";\n}\n\n.fa-intercom:before {\n content: \"\\f7af\";\n}\n\n.fa-zhihu:before {\n content: \"\\f63f\";\n}\n\n.fa-korvue:before {\n content: \"\\f42f\";\n}\n\n.fa-pix:before {\n content: \"\\e43a\";\n}\n\n.fa-steam-symbol:before {\n content: \"\\f3f6\";\n}\n\nhtml {\n /*****************************************************************************\n * Overall Layout Variables\n */\n --pst-header-height: 4rem;\n --pst-header-article-height: calc(var(--pst-header-height) * 2 / 3);\n --pst-sidebar-secondary: 17rem;\n}\n\n/*******************************************************************************\n* Breakpoints that trigger UI changes\n*\n* Note that media-breakpoint-down begins at the next highest level!\n* So we should choose a media-breakpoint-down one *lower* than when we want to start\n* example: media-breakpoint-up(md) and media-breakpoint-down(sm) trigger at the same time\n* ref: https://github.com/twbs/bootstrap/issues/31214\n*/\n/*******************************************************************************\n* Define the animation behaviour\n*/\n/*******************************************************************************\n* UI shaping and padding\n*/\nhtml {\n /*****************************************************************************\n * Font features used in this theme\n */\n --pst-font-size-base: 1rem;\n --pst-font-size-h1: 2.625rem;\n --pst-font-size-h2: 2.125rem;\n --pst-font-size-h3: 1.75rem;\n --pst-font-size-h4: 1.5rem;\n --pst-font-size-h5: 1.25rem;\n --pst-font-size-h6: 1rem;\n --pst-font-size-milli: 0.9rem;\n --pst-sidebar-font-size: 0.9rem;\n --pst-sidebar-font-size-mobile: 1.1rem;\n --pst-sidebar-header-font-size: 1.2rem;\n --pst-sidebar-header-font-weight: 600;\n --pst-admonition-font-weight-heading: 600;\n --pst-font-weight-caption: 300;\n --pst-font-weight-heading: 600;\n --pst-font-family-base-system: -apple-system, \"BlinkMacSystemFont\", \"Segoe UI\",\n \"Helvetica Neue\", \"Arial\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\",\n \"Segoe UI Symbol\";\n --pst-font-family-monospace-system: \"SFMono-Regular\", \"Menlo\", \"Consolas\",\n \"Monaco\", \"Liberation Mono\", \"Lucida Console\", monospace;\n --pst-font-family-base: var(--pst-font-family-base-system);\n --pst-font-family-heading: var(--pst-font-family-base-system);\n --pst-font-family-monospace: var(--pst-font-family-monospace-system);\n}\n\nhtml {\n /*****************************************************************************\n * Icon\n */\n --pst-font-size-icon: 1.5rem;\n --pst-icon-check-circle: \"\";\n --pst-icon-info-circle: \"\";\n --pst-icon-exclamation-triangle: \"\";\n --pst-icon-exclamation-circle: \"\";\n --pst-icon-times-circle: \"\";\n --pst-icon-lightbulb: \"\";\n --pst-icon-download: \"\";\n --pst-icon-angle-left: \"\";\n --pst-icon-angle-right: \"\";\n --pst-icon-external-link: \"\";\n --pst-icon-search-minus: \"\";\n --pst-icon-github: \"\";\n --pst-icon-gitlab: \"\";\n --pst-icon-share: \"\";\n --pst-icon-bell: \"\";\n --pst-icon-pencil: \"\";\n --pst-breadcrumb-divider: \"\";\n}\n\nhtml {\n /*****************************************************************************\n * Admonitions\n **/\n --pst-icon-admonition-default: var(--pst-icon-bell);\n --pst-icon-admonition-note: var(--pst-icon-info-circle);\n --pst-icon-admonition-attention: var(--pst-icon-exclamation-circle);\n --pst-icon-admonition-caution: var(--pst-icon-exclamation-triangle);\n --pst-icon-admonition-warning: var(--pst-icon-exclamation-triangle);\n --pst-icon-admonition-danger: var(--pst-icon-exclamation-triangle);\n --pst-icon-admonition-error: var(--pst-icon-times-circle);\n --pst-icon-admonition-hint: var(--pst-icon-lightbulb);\n --pst-icon-admonition-tip: var(--pst-icon-lightbulb);\n --pst-icon-admonition-important: var(--pst-icon-exclamation-circle);\n --pst-icon-admonition-seealso: var(--pst-icon-share);\n --pst-icon-admonition-todo: var(--pst-icon-pencil);\n}\n\nhtml {\n /*****************************************************************************\n * versionmodified\n **/\n --pst-icon-versionmodified-default: var(--pst-icon-exclamation-circle);\n --pst-icon-versionmodified-added: var(--pst-icon-exclamation-circle);\n --pst-icon-versionmodified-changed: var(--pst-icon-exclamation-circle);\n --pst-icon-versionmodified-deprecated: var(--pst-icon-exclamation-circle);\n}\n\n/*******************************************************************************\n* master color map. Only the colors that actually differ between light and dark\n* themes are specified separately.\n*\n* To see the full list of colors see https://www.figma.com/file/rUrrHGhUBBIAAjQ82x6pz9/PyData-Design-system---proposal-for-implementation-(2)?node-id=1234%3A765&t=ifcFT1JtnrSshGfi-1\n*/\n/**\n* Function to get items from nested maps\n*/\n/* Assign base colors for the PyData theme */\n:root {\n --pst-teal-50: #f4fbfc;\n --pst-teal-100: #e9f6f8;\n --pst-teal-200: #d0ecf1;\n --pst-teal-300: #abdde6;\n --pst-teal-400: #3fb1c5;\n --pst-teal-500: #0a7d91;\n --pst-teal-600: #085d6c;\n --pst-teal-700: #064752;\n --pst-teal-800: #042c33;\n --pst-teal-900: #021b1f;\n --pst-violet-50: #f4eefb;\n --pst-violet-100: #e0c7ff;\n --pst-violet-200: #d5b4fd;\n --pst-violet-300: #b780ff;\n --pst-violet-400: #9c5ffd;\n --pst-violet-500: #8045e5;\n --pst-violet-600: #6432bd;\n --pst-violet-700: #4b258f;\n --pst-violet-800: #341a61;\n --pst-violet-900: #1e0e39;\n --pst-gray-50: #f9f9fa;\n --pst-gray-100: #f3f4f5;\n --pst-gray-200: #e5e7ea;\n --pst-gray-300: #d1d5da;\n --pst-gray-400: #9ca4af;\n --pst-gray-500: #677384;\n --pst-gray-600: #48566b;\n --pst-gray-700: #29313d;\n --pst-gray-800: #222832;\n --pst-gray-900: #14181e;\n --pst-pink-50: #fcf8fd;\n --pst-pink-100: #fcf0fa;\n --pst-pink-200: #f8dff5;\n --pst-pink-300: #f3c7ee;\n --pst-pink-400: #e47fd7;\n --pst-pink-500: #c132af;\n --pst-pink-600: #912583;\n --pst-pink-700: #6e1c64;\n --pst-pink-800: #46123f;\n --pst-pink-900: #2b0b27;\n --pst-foundation-white: #ffffff;\n --pst-foundation-black: #14181e;\n}\n\n/*******************************************************************************\n* write the color rules for each theme (light/dark)\n*/\n/* NOTE:\n * Mixins enable us to reuse the same definitions for the different modes\n * https://sass-lang.com/documentation/at-rules/mixin\n * something inserts a variable into a CSS selector or property name\n * https://sass-lang.com/documentation/interpolation\n */\n/* Defaults to light mode if data-theme is not set */\nhtml:not([data-theme]) {\n --pst-color-primary: #0a7d91;\n --pst-color-primary-bg: #d0ecf1;\n --pst-color-secondary: #8045e5;\n --pst-color-secondary-bg: #e0c7ff;\n --pst-color-accent: #c132af;\n --pst-color-accent-bg: #f8dff5;\n --pst-color-info: #276be9;\n --pst-color-info-bg: #dce7fc;\n --pst-color-warning: #f66a0a;\n --pst-color-warning-bg: #f8e3d0;\n --pst-color-success: #00843f;\n --pst-color-success-bg: #d6ece1;\n --pst-color-attention: var(--pst-color-warning);\n --pst-color-attention-bg: var(--pst-color-warning-bg);\n --pst-color-danger: #d72d47;\n --pst-color-danger-bg: #f9e1e4;\n --pst-color-text-base: #222832;\n --pst-color-text-muted: #48566b;\n --pst-color-shadow: rgba(0, 0, 0, 0.1);\n --pst-color-border: #d1d5da;\n --pst-color-border-muted: rgba(23, 23, 26, 0.2);\n --pst-color-blockquote-notch: #677384;\n --pst-color-inline-code: #912583;\n --pst-color-inline-code-links: #085d6c;\n --pst-color-target: #f3cf95;\n --pst-color-table: #14181e;\n --pst-color-table-row-hover-bg: #d5b4fd;\n --pst-color-table-inner-border: #e5e7ea;\n --pst-color-background: #ffffff;\n --pst-color-on-background: #ffffff;\n --pst-color-surface: #f3f4f5;\n --pst-color-on-surface: #222832;\n}\nhtml:not([data-theme]) {\n --pst-color-heading: var(--pst-color-text-base);\n --pst-color-link: var(--pst-color-primary);\n --pst-color-link-hover: var(--pst-color-secondary);\n --pst-color-table-outer-border: var(--pst-color-surface);\n --pst-color-table-heading-bg: var(--pst-color-surface);\n --pst-color-table-row-zebra-high-bg: var(--pst-color-on-background);\n --pst-color-table-row-zebra-low-bg: var(--pst-color-surface);\n}\nhtml:not([data-theme]) .only-dark,\nhtml:not([data-theme]) .only-dark ~ figcaption {\n display: none !important;\n}\n\n/* NOTE: @each {...} is like a for-loop\n * https://sass-lang.com/documentation/at-rules/control/each\n */\nhtml[data-theme=light] {\n --pst-color-primary: #0a7d91;\n --pst-color-primary-bg: #d0ecf1;\n --pst-color-secondary: #8045e5;\n --pst-color-secondary-bg: #e0c7ff;\n --pst-color-accent: #c132af;\n --pst-color-accent-bg: #f8dff5;\n --pst-color-info: #276be9;\n --pst-color-info-bg: #dce7fc;\n --pst-color-warning: #f66a0a;\n --pst-color-warning-bg: #f8e3d0;\n --pst-color-success: #00843f;\n --pst-color-success-bg: #d6ece1;\n --pst-color-attention: var(--pst-color-warning);\n --pst-color-attention-bg: var(--pst-color-warning-bg);\n --pst-color-danger: #d72d47;\n --pst-color-danger-bg: #f9e1e4;\n --pst-color-text-base: #222832;\n --pst-color-text-muted: #48566b;\n --pst-color-shadow: rgba(0, 0, 0, 0.1);\n --pst-color-border: #d1d5da;\n --pst-color-border-muted: rgba(23, 23, 26, 0.2);\n --pst-color-blockquote-notch: #677384;\n --pst-color-inline-code: #912583;\n --pst-color-inline-code-links: #085d6c;\n --pst-color-target: #f3cf95;\n --pst-color-table: #14181e;\n --pst-color-table-row-hover-bg: #d5b4fd;\n --pst-color-table-inner-border: #e5e7ea;\n --pst-color-background: #ffffff;\n --pst-color-on-background: #ffffff;\n --pst-color-surface: #f3f4f5;\n --pst-color-on-surface: #222832;\n color-scheme: light;\n}\nhtml[data-theme=light] {\n --pst-color-heading: var(--pst-color-text-base);\n --pst-color-link: var(--pst-color-primary);\n --pst-color-link-hover: var(--pst-color-secondary);\n --pst-color-table-outer-border: var(--pst-color-surface);\n --pst-color-table-heading-bg: var(--pst-color-surface);\n --pst-color-table-row-zebra-high-bg: var(--pst-color-on-background);\n --pst-color-table-row-zebra-low-bg: var(--pst-color-surface);\n}\nhtml[data-theme=light] .only-dark,\nhtml[data-theme=light] .only-dark ~ figcaption {\n display: none !important;\n}\n\nhtml[data-theme=dark] {\n --pst-color-primary: #3fb1c5;\n --pst-color-primary-bg: #042c33;\n --pst-color-secondary: #9c5ffd;\n --pst-color-secondary-bg: #341a61;\n --pst-color-accent: #e47fd7;\n --pst-color-accent-bg: #46123f;\n --pst-color-info: #79a3f2;\n --pst-color-info-bg: #06245d;\n --pst-color-warning: #ff9245;\n --pst-color-warning-bg: #652a02;\n --pst-color-success: #5fb488;\n --pst-color-success-bg: #002f17;\n --pst-color-attention: var(--pst-color-warning);\n --pst-color-attention-bg: var(--pst-color-warning-bg);\n --pst-color-danger: #e78894;\n --pst-color-danger-bg: #4e111b;\n --pst-color-text-base: #ced6dd;\n --pst-color-text-muted: #9ca4af;\n --pst-color-shadow: rgba(0, 0, 0, 0.2);\n --pst-color-border: #48566b;\n --pst-color-border-muted: #29313d;\n --pst-color-blockquote-notch: #9ca4af;\n --pst-color-inline-code: #f3c7ee;\n --pst-color-inline-code-links: #3fb1c5;\n --pst-color-target: #675c04;\n --pst-color-table: #ffffff;\n --pst-color-table-row-hover-bg: #4b258f;\n --pst-color-table-inner-border: #364150;\n --pst-color-background: #14181e;\n --pst-color-on-background: #222832;\n --pst-color-surface: #29313d;\n --pst-color-on-surface: #f3f4f5;\n /* Adjust images in dark mode (unless they have class .only-dark or\n * .dark-light, in which case assume they're already optimized for dark\n * mode).\n */\n /* Give images a light background in dark mode in case they have\n * transparency and black text (unless they have class .only-dark or .dark-light, in\n * which case assume they're already optimized for dark mode).\n */\n color-scheme: dark;\n}\nhtml[data-theme=dark] {\n --pst-color-heading: var(--pst-color-text-base);\n --pst-color-link: var(--pst-color-primary);\n --pst-color-link-hover: var(--pst-color-secondary);\n --pst-color-table-outer-border: var(--pst-color-surface);\n --pst-color-table-heading-bg: var(--pst-color-surface);\n --pst-color-table-row-zebra-high-bg: var(--pst-color-on-background);\n --pst-color-table-row-zebra-low-bg: var(--pst-color-surface);\n}\nhtml[data-theme=dark] .only-light,\nhtml[data-theme=dark] .only-light ~ figcaption {\n display: none !important;\n}\nhtml[data-theme=dark] img:not(.only-dark, .dark-light) {\n filter: brightness(0.8) contrast(1.2);\n}\nhtml[data-theme=dark] .bd-content img:not(.only-dark, .dark-light) {\n background-color: rgb(255, 255, 255);\n border-radius: 0.25rem;\n}\nhtml[data-theme=dark] .MathJax_SVG * {\n fill: var(--pst-color-text-base);\n}\n\n.pst-color-primary {\n color: var(--pst-color-primary);\n}\n\n.pst-color-secondary {\n color: var(--pst-color-secondary);\n}\n\n.pst-color-accent {\n color: var(--pst-color-accent);\n}\n\n.pst-color-info {\n color: var(--pst-color-info);\n}\n\n.pst-color-warning {\n color: var(--pst-color-warning);\n}\n\n.pst-color-success {\n color: var(--pst-color-success);\n}\n\n.pst-color-attention {\n color: var(--pst-color-attention);\n}\n\n.pst-color-danger {\n color: var(--pst-color-danger);\n}\n\n.pst-color-text-base {\n color: var(--pst-color-text-base);\n}\n\n.pst-color-text-muted {\n color: var(--pst-color-text-muted);\n}\n\n.pst-color-shadow {\n color: var(--pst-color-shadow);\n}\n\n.pst-color-border {\n color: var(--pst-color-border);\n}\n\n.pst-color-border-muted {\n color: var(--pst-color-border-muted);\n}\n\n.pst-color-blockquote-notch {\n color: var(--pst-color-blockquote-notch);\n}\n\n.pst-color-inline-code {\n color: var(--pst-color-inline-code);\n}\n\n.pst-color-inline-code-links {\n color: var(--pst-color-inline-code-links);\n}\n\n.pst-color-target {\n color: var(--pst-color-target);\n}\n\n.pst-color-table {\n color: var(--pst-color-table);\n}\n\n.pst-color-table-row-hover {\n color: var(--pst-color-table-row-hover);\n}\n\n.pst-color-table-inner-border {\n color: var(--pst-color-table-inner-border);\n}\n\n.pst-color-background {\n color: var(--pst-color-background);\n}\n\n.pst-color-on-background {\n color: var(--pst-color-on-background);\n}\n\n.pst-color-surface {\n color: var(--pst-color-surface);\n}\n\n.pst-color-on-surface {\n color: var(--pst-color-on-surface);\n}\n\n/**\n * Miscellaneous color functions and mixins\n**/\n/**\n* Function to get items from nested maps\n*/\n/**\n * Function to check if the color needs converting to a \"color\" type\n * if it is a string we cannot use other color manipulation functions\n * It is used to create the sphinx-design colours as these are often interpolated\n */\n/**\n * Function to convert the string representation of a color to a color type (hex)\n */\n/*********************************************\n* SASS Mixins\n*********************************************/\n/**\n * A consistent box shadow style we apply across elements.\n */\n/**\n * Set background of some cell outputs to white-ish to make sure colors work\n * This is because many libraries make output that only looks good on white\n */\nhtml {\n font-size: var(--pst-font-size-base);\n scroll-padding-top: calc(var(--pst-header-height) + 1rem);\n}\n\nbody {\n background-color: var(--pst-color-background);\n font-family: var(--pst-font-family-base);\n font-weight: 400;\n line-height: 1.65;\n color: var(--pst-color-text-base);\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n}\nbody::-webkit-scrollbar-track {\n background-color: var(--pst-color-background);\n}\n\np {\n margin-bottom: 1.15rem;\n font-size: 1em;\n /* section header in docstring pages */\n}\np.rubric {\n border-bottom: 1px solid var(--pst-color-border);\n}\np.centered {\n text-align: center;\n}\n\na {\n word-wrap: break-word;\n color: var(--pst-color-link);\n text-decoration: underline;\n text-decoration-thickness: max(1px, .0625rem);\n text-underline-offset: 0.1578em;\n}\na:hover {\n color: var(--pst-color-link-hover);\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n}\na:active {\n color: var(--pst-color-link);\n}\na:visited {\n color: var(--pst-color-link);\n}\na:visited:hover {\n color: var(--pst-color-link-hover);\n}\na.headerlink {\n color: var(--pst-color-secondary);\n font-size: 0.8em;\n padding: 0 4px;\n margin-left: 0.2em;\n text-decoration: none;\n user-select: none;\n}\na.github::before, a.gitlab::before {\n color: var(--pst-color-text-muted);\n font: var(--fa-font-brands);\n margin-right: 0.25rem;\n}\na.github::before {\n content: var(--pst-icon-github);\n}\na.gitlab::before {\n content: var(--pst-icon-gitlab);\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n margin: 2.75rem 0 1.05rem;\n font-family: var(--pst-font-family-heading);\n font-weight: var(--pst-font-weight-heading);\n line-height: 1.15;\n}\n\nh1, .h1 {\n margin-top: 0;\n font-size: var(--pst-font-size-h1);\n color: var(--pst-color-heading);\n}\n\nh2, .h2 {\n font-size: var(--pst-font-size-h2);\n color: var(--pst-color-heading);\n}\n\nh3, .h3 {\n font-size: var(--pst-font-size-h3);\n color: var(--pst-color-heading);\n}\n\nh4, .h4 {\n font-size: var(--pst-font-size-h4);\n color: var(--pst-color-heading);\n}\n\nh5, .h5 {\n font-size: var(--pst-font-size-h5);\n color: var(--pst-color-text-base);\n}\n\nh6, .h6 {\n font-size: var(--pst-font-size-h6);\n color: var(--pst-color-text-base);\n}\n\nsmall, .small,\n.text_small {\n font-size: var(--pst-font-size-milli);\n}\n\nhr {\n border: 0;\n border-top: 1px solid var(--pst-color-border);\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--pst-font-family-monospace);\n}\n\nkbd {\n background-color: var(--pst-color-on-background);\n color: var(--pst-color-text-muted);\n}\nkbd:not(.compound) {\n border: 1px solid var(--pst-color-border);\n margin: 0 0.1rem;\n padding: 0.1rem 0.4rem;\n box-shadow: 1px 1px 1px var(--pst-color-shadow);\n}\n\ncode {\n color: var(--pst-color-inline-code);\n}\n\npre {\n margin: 1.5em 0;\n padding: 1rem;\n background-color: var(--pst-color-surface);\n color: var(--pst-color-text-base);\n line-height: 1.2em;\n border: 1px solid var(--pst-color-border);\n border-radius: 0.25rem;\n}\npre .linenos {\n opacity: 0.8;\n padding-right: 10px;\n}\n\n#pst-back-to-top {\n z-index: 1080;\n position: fixed;\n display: none;\n top: 90vh;\n left: 50vw;\n transform: translate(-50%);\n color: var(--pst-color-secondary-text);\n background-color: var(--pst-color-secondary);\n border: none;\n}\n#pst-back-to-top .fa-arrow-up {\n margin-inline-end: 0.5em;\n}\n#pst-back-to-top:hover {\n text-decoration: underline;\n text-decoration-thickness: max(1px, .0625rem);\n text-underline-offset: 0.1578em;\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n color: var(--pst-color-link-hover);\n text-decoration-thickness: 1px;\n background-color: var(--pst-color-secondary-highlight);\n color: var(--pst-color-secondary-highlight-text);\n}\n#pst-back-to-top:focus-visible {\n box-shadow: none;\n outline: var(--pst-color-accent) solid 0.1875rem;\n outline-color: var(--pst-color-secondary);\n outline-offset: 0.1875rem;\n}\n\n:focus-visible {\n outline: var(--pst-color-accent) solid 0.1875rem;\n box-shadow: none;\n}\n\n/***\n * Rules for the UX/UI of skip navigation link btn.\n * It's only visible to people\n * navigating with keyboard for accessibility purposes\n * ref: https://www.youtube.com/watch?v=VUR0I5mqq7I\n ***/\n.skip-link {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n text-align: center;\n background-color: var(--pst-color-warning);\n padding: 0.5rem;\n z-index: 1055;\n border-bottom: 1px solid var(--pst-color-border);\n transform: translateY(-100%);\n transition: transform 150ms ease-in-out;\n}\n.skip-link:focus-within {\n transform: translateY(0%);\n}\n.skip-link a {\n color: var(--pst-color-warning-text) !important;\n}\n.skip-link a:focus-visible {\n outline-color: #14181e;\n}\n\n.bd-container {\n flex-grow: 1;\n display: flex;\n justify-content: center;\n}\n.bd-container .bd-container__inner {\n display: flex;\n}\n\n.bd-page-width {\n width: 100%;\n}\n@media (min-width: 960px) {\n .bd-page-width {\n max-width: 88rem;\n }\n}\n\n.pst-async-banner-revealer {\n height: 0;\n overflow: hidden;\n transition: height 300ms ease-in-out;\n}\n@media (prefers-reduced-motion) {\n .pst-async-banner-revealer {\n transition: none;\n }\n}\n\n#bd-header-version-warning,\n.bd-header-announcement {\n min-height: 3rem;\n width: 100%;\n display: flex;\n position: relative;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 0.5rem 12.5%;\n}\n@media (max-width: 959.98px) {\n #bd-header-version-warning,\n .bd-header-announcement {\n padding: 0.5rem 2%;\n }\n}\n#bd-header-version-warning p,\n.bd-header-announcement p {\n font-weight: bold;\n margin: 0;\n}\n#bd-header-version-warning a,\n.bd-header-announcement a {\n color: var(--pst-color-inline-code-links);\n}\n#bd-header-version-warning .pst-button-link-to-stable-version,\n.bd-header-announcement .pst-button-link-to-stable-version {\n box-shadow: 0 0.2rem 0.5rem var(--pst-color-shadow), 0 0 0.0625rem var(--pst-color-shadow) !important;\n background-color: var(--pst-color-danger);\n border-color: var(--pst-color-danger);\n color: var(--pst-color-danger-text);\n border-radius: 0.25rem;\n}\n#bd-header-version-warning .pst-button-link-to-stable-version:hover,\n.bd-header-announcement .pst-button-link-to-stable-version:hover {\n text-decoration: underline;\n text-decoration-thickness: max(1px, .0625rem);\n text-underline-offset: 0.1578em;\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n color: var(--pst-color-link-hover);\n text-decoration-thickness: 1px;\n background-color: var(--pst-color-danger-highlight);\n border-color: var(--pst-color-danger-highlight);\n color: var(--pst-color-danger-highlight-text);\n}\n#bd-header-version-warning .pst-button-link-to-stable-version:focus-visible,\n.bd-header-announcement .pst-button-link-to-stable-version:focus-visible {\n outline: 0.1875rem solid var(--pst-color-danger);\n outline-offset: 0.1875rem;\n}\n\n.bd-header-announcement {\n background-color: var(--pst-color-secondary-bg);\n}\n\n#bd-header-version-warning {\n background-color: var(--pst-color-danger-bg);\n}\n\n/**\n * Main content area\n */\n.bd-main {\n flex-grow: 1;\n flex-direction: column;\n display: flex;\n min-width: 0;\n}\n.bd-main .bd-content {\n display: flex;\n justify-content: center;\n height: 100%;\n}\n.bd-main .bd-content .bd-article-container {\n justify-content: start;\n display: flex;\n flex-direction: column;\n width: 100%;\n max-width: 60em;\n overflow-x: auto;\n padding: 1rem;\n}\n@media (min-width: 1200px) {\n .bd-main .bd-content .bd-article-container .bd-article {\n padding-top: 1.5rem;\n padding-left: 2rem;\n }\n}\n\n.bd-footer {\n width: 100%;\n border-top: 1px solid var(--pst-color-border);\n}\n.bd-footer .bd-footer__inner {\n display: flex;\n flex-grow: 1;\n padding: 1rem;\n margin: auto;\n}\n.bd-footer .footer-items__start,\n.bd-footer .footer-items__center,\n.bd-footer .footer-items__end {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n justify-content: center;\n flex-grow: 1;\n}\n.bd-footer .footer-items__center {\n text-align: center;\n}\n.bd-footer .footer-items__end {\n text-align: end;\n}\n.bd-footer .footer-item p {\n margin-bottom: 0;\n}\n\n.bd-footer-article {\n margin-top: auto;\n}\n.bd-footer-article .footer-article-items {\n display: flex;\n flex-direction: column;\n}\n\n.bd-footer-content .footer-content-items {\n display: flex;\n flex-direction: column;\n margin-top: auto;\n}\n\n/**\n * Header at the top of the page\n * It includes the announcement bar and the navigation bar.\n */\n.bd-header {\n position: sticky;\n top: 0;\n z-index: 1030;\n background-color: var(--pst-color-on-background) !important;\n box-shadow: 0 0.125rem 0.25rem 0 var(--pst-color-shadow);\n width: 100%;\n padding: 0;\n max-width: 100vw;\n justify-content: center;\n}\n.bd-header .bd-header__inner {\n display: flex;\n align-items: center;\n height: fit-content;\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.bd-header :focus-visible {\n border-radius: 0.125rem;\n}\n.bd-header .navbar-item {\n height: var(--pst-header-height);\n max-height: var(--pst-header-height);\n display: flex;\n align-items: center;\n}\n.bd-header .navbar-header-items {\n display: none;\n flex-shrink: 1;\n}\n@media (min-width: 960px) {\n .bd-header .navbar-header-items {\n display: inherit;\n flex-grow: 1;\n padding: 0 0 0 0.5rem;\n }\n}\n.bd-header .navbar-header-items__end,\n.bd-header .navbar-header-items__center,\n.bd-header .navbar-header-items__start {\n display: flex;\n align-items: center;\n flex-flow: wrap;\n row-gap: 0;\n}\n.bd-header .navbar-header-items__end,\n.bd-header .navbar-header-items__center {\n column-gap: 1.12rem;\n}\n.bd-header .navbar-header-items__start {\n flex-shrink: 0;\n margin-right: auto;\n gap: 0.5rem;\n}\n.bd-header .navbar-header-items__end {\n justify-content: end;\n}\n.bd-header ul.navbar-nav {\n display: flex;\n}\n@media (min-width: 960px) {\n .bd-header ul.navbar-nav {\n align-items: baseline;\n }\n}\n.bd-header ul.navbar-nav > li.nav-item {\n margin-inline: 2px;\n}\n.bd-header ul.navbar-nav > li.nav-item > .nav-link {\n color: var(--pst-color-text-muted);\n position: relative;\n padding-inline: 6px;\n}\n.bd-header ul.navbar-nav > li.nav-item > .nav-link::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: 0;\n background-color: transparent;\n bottom: calc(-1 * max(3px, .1875rem, .12em));\n margin: max(3px, .1875rem, .12em) 0;\n}\n.bd-header ul.navbar-nav > li.nav-item > .nav-link:hover {\n color: var(--pst-color-secondary);\n text-decoration: none;\n}\n.bd-header ul.navbar-nav > li.nav-item > .nav-link:hover::before {\n border-bottom: max(3px, .1875rem, .12em) solid var(--pst-color-secondary);\n}\n.bd-header ul.navbar-nav > li.nav-item > .nav-link:focus-visible {\n box-shadow: none;\n outline: 3px solid var(--pst-color-accent);\n outline-offset: 0.1875rem;\n}\n.bd-header ul.navbar-nav > li.nav-item.current > .nav-link {\n color: var(--pst-color-primary);\n}\n.bd-header ul.navbar-nav > li.nav-item.current > .nav-link::before {\n border-bottom: 3px solid var(--pst-color-primary);\n}\n.bd-header ul.navbar-nav > li.nav-item.dropdown {\n margin-inline: 4px;\n}\n.bd-header ul.navbar-nav > li.nav-item.dropdown button {\n padding-inline: 8px;\n}\n.bd-header ul.navbar-nav > li.nav-item.dropdown > .dropdown-toggle {\n border-radius: 0.125rem;\n color: var(--pst-color-text-muted);\n}\n.bd-header ul.navbar-nav > li.nav-item.dropdown > .dropdown-toggle:focus-visible {\n box-shadow: 0 0 0 0.1875rem var(--pst-color-accent);\n}\n.bd-header ul.navbar-nav > li.nav-item.dropdown > .dropdown-toggle:hover {\n text-decoration: none;\n box-shadow: 0 0 0 0.1875rem var(--pst-color-link-hover);\n color: var(--pst-color-text-base);\n}\n.bd-header ul.navbar-nav li a.nav-link.dropdown-item {\n color: var(--pst-color-text-muted);\n text-decoration: none;\n}\n.bd-header ul.navbar-nav li a.nav-link.dropdown-item:hover {\n color: var(--pst-color-link-hover);\n text-decoration: underline;\n text-decoration-thickness: max(1px, .0625rem);\n text-underline-offset: 0.1578em;\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n}\n.bd-header ul.navbar-nav .dropdown button {\n display: unset;\n border: none;\n}\n.bd-header ul.navbar-nav .dropdown button:hover {\n text-decoration: underline;\n text-decoration-thickness: max(1px, .0625rem);\n text-underline-offset: 0.1578em;\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n color: var(--pst-color-link-hover);\n}\n.bd-header ul.navbar-nav .dropdown .dropdown-menu {\n z-index: 1070;\n border: 1px solid var(--pst-color-border);\n box-shadow: 0 0 0.3rem 0.1rem var(--pst-color-shadow);\n background-color: var(--pst-color-on-background);\n padding: 0.5rem 0;\n margin: 0.5rem 0;\n min-width: 20rem;\n}\n.bd-header ul.navbar-nav .dropdown .dropdown-menu .dropdown-item {\n padding: 0.25rem 1.5rem;\n}\n.bd-header ul.navbar-nav .dropdown .dropdown-menu .dropdown-item:focus:not(:hover, :active) {\n background-color: inherit;\n}\n.bd-header ul.navbar-nav .dropdown .dropdown-menu .dropdown-item:focus-visible {\n z-index: 10;\n}\n.bd-header ul.navbar-nav .dropdown .dropdown-menu:not(.show) {\n display: none;\n}\n.bd-header button.sidebar-toggle {\n font-size: var(--pst-font-size-icon);\n color: var(--pst-color-muted);\n margin-bottom: 0;\n background-color: inherit;\n padding: 0.5rem;\n}\n.bd-header button.primary-toggle {\n margin-right: 1rem;\n}\n@media (min-width: 960px) {\n .bd-header button.primary-toggle {\n display: none;\n }\n}\n.bd-header button.secondary-toggle {\n margin-left: 1rem;\n}\n@media (min-width: 1200px) {\n .bd-header button.secondary-toggle {\n display: none;\n }\n}\n\n@media (min-width: 960px) {\n .navbar-center-items .navbar-item {\n display: inline-block;\n }\n}\n.nav-link {\n transition: none;\n}\n.nav-link:hover {\n text-decoration: underline;\n text-decoration-thickness: max(1px, .0625rem);\n text-underline-offset: 0.1578em;\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n color: var(--pst-color-link-hover);\n}\n.nav-link.nav-external::after {\n font: var(--fa-font-solid);\n content: var(--pst-icon-external-link);\n font-size: 0.75em;\n margin-left: 0.3em;\n}\n\n.bd-navbar-elements li.nav-item i {\n font-size: 0.7rem;\n padding-left: 2px;\n vertical-align: middle;\n}\n\n.navbar-persistent--mobile {\n margin-left: auto;\n}\n@media (min-width: 960px) {\n .navbar-persistent--mobile {\n display: none;\n }\n}\n\n.navbar-persistent--container {\n display: none;\n}\n@media (min-width: 960px) {\n .navbar-persistent--container {\n display: flex;\n }\n}\n\n.header-article__inner {\n padding: 0 0.5rem;\n}\n.header-article__inner .header-article-item {\n min-height: var(--pst-header-article-height);\n}\n.header-article__inner .header-article-items__end {\n margin-left: auto;\n}\n\n/**\n * The primary sidebar on the left.\n * e.g., between-pages navigation.\n */\n.bd-sidebar-primary {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n max-height: calc(100vh - var(--pst-header-height));\n position: sticky;\n top: var(--pst-header-height);\n flex: 0 0 auto;\n width: 25%;\n padding: 2rem 1rem 1rem 1rem;\n border-right: 1px solid var(--pst-color-border);\n background-color: var(--pst-color-background);\n overflow-y: auto;\n font-size: var(--pst-sidebar-font-size-mobile);\n}\n@media (min-width: 960px) {\n .bd-sidebar-primary {\n font-size: var(--pst-sidebar-font-size);\n }\n}\n.bd-sidebar-primary :focus-visible {\n border-radius: 0.125rem;\n}\n.bd-sidebar-primary .nav-link {\n font-size: var(--pst-sidebar-font-size-mobile);\n}\n.bd-sidebar-primary.no-sidebar {\n border-right: 0;\n}\n@media (min-width: 960px) {\n .bd-sidebar-primary.hide-on-wide {\n display: none;\n }\n}\n.bd-sidebar-primary h1, .bd-sidebar-primary .h1,\n.bd-sidebar-primary h2,\n.bd-sidebar-primary .h2,\n.bd-sidebar-primary h3,\n.bd-sidebar-primary .h3,\n.bd-sidebar-primary h4,\n.bd-sidebar-primary .h4 {\n color: var(--pst-color-text-base);\n}\n.bd-sidebar-primary .sidebar-primary-items__start .sidebar-primary-item,\n.bd-sidebar-primary .sidebar-primary-items__end .sidebar-primary-item {\n padding: 0.5rem 0;\n}\n.bd-sidebar-primary .sidebar-header-items {\n display: flex;\n flex-direction: column;\n}\n.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__title {\n font-weight: var(--pst-sidebar-header-font-weight);\n font-size: var(--pst-sidebar-header-font-size);\n color: var(--pst-color-text-base);\n margin-bottom: 0.5rem;\n}\n.bd-sidebar-primary .sidebar-header-items .bd-navbar-elements .nav-link:focus-visible {\n box-shadow: none;\n outline: var(--pst-color-accent) solid 0.1875rem;\n outline-offset: 0.1875rem;\n}\n.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__center {\n display: flex;\n flex-direction: column;\n}\n.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__end {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n@media (min-width: 960px) {\n .bd-sidebar-primary .sidebar-header-items {\n display: none;\n }\n}\n.bd-sidebar-primary .sidebar-primary-items__start {\n border-top: 1px solid var(--pst-color-border);\n}\n@media (min-width: 960px) {\n .bd-sidebar-primary .sidebar-primary-items__start {\n border-top: none;\n }\n}\n.bd-sidebar-primary .sidebar-primary-items__end {\n margin-top: auto;\n margin-bottom: 1em;\n}\n.bd-sidebar-primary .list-caption {\n list-style: none;\n padding-left: 0;\n}\n.bd-sidebar-primary .list-caption li.toctree-l0.has-children > details > summary {\n position: relative;\n height: auto;\n width: auto;\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n}\n.bd-sidebar-primary .list-caption li.toctree-l0.has-children > details > summary .toctree-toggle {\n flex: 0 0 auto;\n}\n.bd-sidebar-primary .list-caption li.toctree-l0.has-children > details > summary .toctree-toggle .fa-chevron-down {\n font-size: 1rem;\n}\n.bd-sidebar-primary li.has-children {\n position: relative;\n}\n.bd-sidebar-primary li.has-children > .reference,\n.bd-sidebar-primary li.has-children .caption {\n margin-right: calc(30px + 0.1875rem);\n padding-top: 0.25rem;\n}\n.bd-sidebar-primary li.has-children > details > summary {\n list-style: none;\n}\n.bd-sidebar-primary li.has-children > details > summary::-webkit-details-marker {\n display: none;\n}\n.bd-sidebar-primary li.has-children > details > summary:focus-visible {\n outline: none;\n}\n.bd-sidebar-primary li.has-children > details > summary:focus-visible > .toctree-toggle {\n outline: var(--pst-color-accent) solid 0.1875rem;\n outline-offset: -0.1875rem;\n}\n.bd-sidebar-primary li.has-children > details > summary .toctree-toggle {\n cursor: pointer;\n position: absolute;\n top: 0;\n right: 0;\n width: 30px;\n height: 30px;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n}\n.bd-sidebar-primary li.has-children > details > summary .toctree-toggle .fa-chevron-down {\n font-size: 0.75rem;\n}\n.bd-sidebar-primary li.has-children > details[open] > summary .fa-chevron-down {\n transform: rotate(180deg);\n}\n\n/* Between-page links and captions */\nnav.bd-links {\n margin-right: -1rem;\n}\n@media (min-width: 960px) {\n nav.bd-links {\n display: block;\n }\n}\nnav.bd-links ul {\n display: block;\n list-style: none;\n}\nnav.bd-links ul ul {\n padding: 0 0 0 1rem;\n}\nnav.bd-links li > a {\n display: block;\n padding: 0.25rem 0.65rem;\n color: var(--pst-color-text-muted);\n text-decoration: none;\n box-shadow: none;\n margin-right: 0.1875rem;\n}\nnav.bd-links li > a:hover {\n text-decoration: underline;\n background-color: transparent;\n color: var(--pst-color-link-hover);\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n}\nnav.bd-links li > a:active {\n color: var(--pst-color-link-hover);\n}\nnav.bd-links li > a:focus-visible {\n box-shadow: 0 0 0 0.1875rem var(--pst-color-accent);\n outline: none;\n z-index: 10;\n}\nnav.bd-links li > a.reference.external::after {\n font: var(--fa-font-solid);\n content: var(--pst-icon-external-link);\n font-size: 0.75em;\n margin-left: 0.3em;\n}\nnav.bd-links .current > a {\n font-weight: 600;\n color: var(--pst-color-primary);\n box-shadow: inset max(3px, .1875rem, .12em) 0 0 var(--pst-color-primary);\n background-color: transparent;\n}\nnav.bd-links .current > a:focus-visible {\n box-shadow: inset max(3px, .1875rem, .12em) 0 0 var(--pst-color-primary), 0 0 0 0.1875rem var(--pst-color-accent);\n outline: none;\n}\nnav.bd-links p.bd-links__title {\n font-size: var(--pst-sidebar-header-font-size);\n font-weight: var(--pst-sidebar-header-font-weight);\n margin-bottom: 0.5rem;\n}\nnav.bd-links p.caption {\n font-weight: var(--pst-sidebar-header-font-weight);\n position: relative;\n margin-top: 1.25rem;\n margin-bottom: 0.5rem;\n color: var(--pst-color-text-base);\n font-size: var(--pst-sidebar-font-size-mobile);\n}\nnav.bd-links p.caption:first-child {\n margin-top: 0;\n}\n@media (min-width: 960px) {\n nav.bd-links p.caption {\n font-size: var(--pst-sidebar-font-size);\n }\n}\n\n/**\n * Secondary sidebar on the right.\n * e.g., in-page table of contents.\n */\n.bd-sidebar-secondary {\n display: flex;\n order: 2;\n flex-shrink: 0;\n flex-direction: column;\n position: sticky;\n top: var(--pst-header-height);\n max-height: calc(100vh - var(--pst-header-height));\n padding: 2rem 1rem 1rem;\n width: var(--pst-sidebar-secondary);\n font-size: var(--pst-sidebar-font-size-mobile);\n background-color: var(--pst-color-background);\n overflow-y: auto;\n}\n@media (min-width: 1200px) {\n .bd-sidebar-secondary {\n font-size: var(--pst-sidebar-font-size);\n }\n}\n\n.sidebar-secondary-item {\n padding: 0.5rem;\n}\n@media (min-width: 1200px) {\n .sidebar-secondary-item {\n border-left: 1px solid var(--pst-color-border);\n padding-left: 1rem;\n }\n}\n.sidebar-secondary-item i {\n padding-right: 0.5rem;\n}\n\n/*******************************************************************************\n* Rules for the UX/UI of sidebar sliding drawers on mobile\n* Note that this sheet controls styles across many parts of the theme\n* It is aggregated into this one sheet instead of being split across\n* components in order to keep it easier to debug in one place.\n* It is broken up into major sections below.\n*/\n/*******************************************************************************\n* Sidebar drawer behavior\n*/\n/**\n * NOTE: We use this mixin to define the toggle behavior on narrow screens,\n * And the wide-screen behavior of the sections is defined in their own section\n * .scss files.\n */\n.bd-sidebar::backdrop {\n background-color: black;\n opacity: 0.5;\n}\n\n@media (max-width: 959.98px) {\n .bd-sidebar-primary {\n position: fixed;\n top: 0;\n z-index: 1055;\n height: 100vh;\n max-height: 100vh;\n width: 75%;\n flex-grow: 0.75;\n max-width: 350px;\n transition: visibility 200ms ease-out, margin 200ms ease-out;\n visibility: hidden;\n border: 0;\n margin-left: -75%;\n left: 0;\n }\n}\n.bd-sidebar-primary[open] {\n margin-left: 0;\n visibility: visible;\n}\n\n@media (max-width: 1199.98px) {\n .bd-sidebar-secondary {\n position: fixed;\n top: 0;\n z-index: 1055;\n height: 100vh;\n max-height: 100vh;\n width: 75%;\n flex-grow: 0.75;\n max-width: 350px;\n transition: visibility 200ms ease-out, margin 200ms ease-out;\n visibility: hidden;\n border: 0;\n margin-right: -75%;\n right: 0;\n }\n}\n.bd-sidebar-secondary[open] {\n margin-right: 0;\n visibility: visible;\n}\n\n/**\n * Breadcrumbs for parent pages meant for the article header\n */\nul.bd-breadcrumbs {\n list-style: none;\n padding-left: 0;\n display: flex;\n flex-wrap: wrap;\n font-size: 0.8rem;\n}\nul.bd-breadcrumbs li.breadcrumb-item {\n display: flex;\n align-items: center;\n white-space: nowrap;\n overflow-x: hidden;\n font-weight: bold;\n}\nul.bd-breadcrumbs li.breadcrumb-item a,\nul.bd-breadcrumbs li.breadcrumb-item .ellipsis {\n overflow-x: hidden;\n text-overflow: ellipsis;\n margin: 0.1875rem;\n}\nul.bd-breadcrumbs li.breadcrumb-item a {\n color: var(--pst-color-text-muted);\n text-decoration: none;\n}\nul.bd-breadcrumbs li.breadcrumb-item a:hover {\n color: var(--pst-color-link-hover);\n text-decoration: underline;\n text-decoration-thickness: max(1px, .0625rem);\n text-underline-offset: 0.1578em;\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n}\nul.bd-breadcrumbs li.breadcrumb-item:not(.breadcrumb-home)::before {\n font: var(--fa-font-solid);\n font-size: 0.8rem;\n content: var(--pst-breadcrumb-divider);\n color: var(--pst-color-text-muted);\n padding: 0 0.5rem;\n}\n\n/**\n * Icon links in the navbar\n */\nhtml .pst-navbar-icon {\n box-sizing: border-box;\n min-width: 24px;\n min-height: 24px;\n color: var(--pst-color-text-muted);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 0;\n border: none;\n font-size: 1rem;\n line-height: 1.65;\n padding: 0.25rem 0;\n height: 2.15rem;\n}\nhtml .pst-navbar-icon::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: 0;\n background-color: transparent;\n bottom: calc(-1 * max(3px, .1875rem, .12em));\n margin: max(3px, .1875rem, .12em) 0;\n}\nhtml .pst-navbar-icon:hover {\n color: var(--pst-color-secondary);\n text-decoration: none;\n}\nhtml .pst-navbar-icon:hover::before {\n border-bottom: max(3px, .1875rem, .12em) solid var(--pst-color-secondary);\n}\nhtml .pst-navbar-icon:focus-visible {\n box-shadow: none;\n outline: 3px solid var(--pst-color-accent);\n outline-offset: 0.1875rem;\n}\n\nul.navbar-icon-links {\n display: flex;\n flex-flow: row wrap;\n column-gap: 1.12rem;\n justify-content: space-evenly;\n align-items: center;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\nul.navbar-icon-links i {\n /* Social media buttons hard-code the brand color */\n}\nul.navbar-icon-links i.fa-brands, ul.navbar-icon-links i.fa-regular, ul.navbar-icon-links i.fa-solid {\n vertical-align: middle;\n font-style: normal;\n font-size: var(--pst-font-size-icon);\n}\nul.navbar-icon-links i.fa-square-twitter::before {\n color: #55acee;\n}\nul.navbar-icon-links i.fa-square-gitlab::before {\n color: #548;\n}\nul.navbar-icon-links i.fa-bitbucket::before {\n color: #0052cc;\n}\nul.navbar-icon-links img.icon-link-image {\n height: 1.5em;\n border-radius: 0.2rem;\n}\nul.navbar-icon-links .fa-pydata {\n stroke: var(--pst-color-background);\n stroke-linejoin: round;\n stroke-width: 0.35;\n}\n\n/**\n * Logo in the navbar\n */\n.navbar-brand {\n position: relative;\n height: var(--pst-header-height);\n max-height: var(--pst-header-height);\n padding: 0.5rem 0;\n width: auto;\n margin: 0;\n display: flex;\n flex-shrink: 0;\n align-items: center;\n gap: 0.5rem;\n}\n.navbar-brand p {\n color: var(--pst-color-text-base);\n margin-bottom: 0;\n}\n.navbar-brand img {\n max-width: 100%;\n height: 100%;\n width: auto;\n}\n.navbar-brand:hover, .navbar-brand:visited:hover {\n text-decoration: underline;\n text-decoration-thickness: max(1px, .0625rem);\n text-underline-offset: 0.1578em;\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n color: var(--pst-color-link-hover);\n color: var(--pst-color-text-base);\n}\n\n/**\n * Navigation links in the navbar and icon links\n */\nul.navbar-nav ul {\n padding: 0 0 0 1rem;\n}\nul.navbar-nav li {\n display: flex;\n flex-direction: column;\n}\nul.navbar-nav li a {\n display: flex;\n align-items: center;\n height: 100%;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n color: var(--pst-color-text-muted);\n text-decoration: none;\n}\nul.navbar-nav li a:hover {\n color: var(--pst-color-link-hover);\n text-decoration: underline;\n text-decoration-thickness: max(1px, .0625rem);\n text-underline-offset: 0.1578em;\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n}\n\n/**\n * The list of in-page TOC links\n */\n.page-toc .section-nav {\n padding-left: 0;\n border-bottom: none;\n}\n.page-toc .section-nav ul {\n padding-left: 1rem;\n}\n.page-toc .nav-link {\n font-size: var(--pst-sidebar-font-size-mobile);\n}\n@media (min-width: 1200px) {\n .page-toc .nav-link {\n font-size: var(--pst-sidebar-font-size);\n }\n}\n.page-toc .onthispage {\n color: var(--pst-color-text-base);\n font-weight: var(--pst-sidebar-header-font-weight);\n margin-bottom: 0.5rem;\n}\n\n/**\n* Previous / Next navigation buttons\n**/\n.prev-next-area {\n width: 100%;\n}\n.prev-next-area p {\n color: var(--pst-color-text-muted);\n margin: 0 0.3em;\n line-height: 1.3em;\n}\n.prev-next-area i {\n font-size: 1.2em;\n}\n.prev-next-area a {\n display: flex;\n align-items: center;\n border: none;\n padding: 10px;\n max-width: 45%;\n overflow-x: hidden;\n color: var(--pst-color-text-muted);\n text-decoration: none;\n}\n.prev-next-area a p.prev-next-title {\n word-wrap: break-word;\n color: var(--pst-color-link);\n text-decoration: underline;\n text-decoration-thickness: max(1px, .0625rem);\n text-underline-offset: 0.1578em;\n font-weight: var(--pst-admonition-font-weight-heading);\n font-size: 1.1em;\n}\n.prev-next-area a p.prev-next-title:hover {\n color: var(--pst-color-link-hover);\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n}\n.prev-next-area a p.prev-next-title:active {\n color: var(--pst-color-link);\n}\n.prev-next-area a p.prev-next-title:visited {\n color: var(--pst-color-link);\n}\n.prev-next-area a p.prev-next-title:visited:hover {\n color: var(--pst-color-link-hover);\n}\n.prev-next-area a:hover p.prev-next-title, .prev-next-area a:visited:hover p.prev-next-title {\n text-decoration: underline;\n text-decoration-thickness: max(1px, .0625rem);\n text-underline-offset: 0.1578em;\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n color: var(--pst-color-link-hover);\n}\n.prev-next-area a .prev-next-info {\n flex-direction: column;\n margin: 0 0.5em;\n}\n.prev-next-area a .prev-next-info .prev-next-subtitle {\n text-transform: capitalize;\n}\n.prev-next-area a.left-prev {\n float: left;\n}\n.prev-next-area a.right-next {\n float: right;\n}\n.prev-next-area a.right-next div.prev-next-info {\n text-align: right;\n}\n\n/**\n * Search field\n **/\n.bd-search {\n position: relative;\n padding-left: 0.5rem;\n gap: 0.5rem;\n background-color: var(--pst-color-background);\n border-radius: 0.25rem;\n border: 1px solid var(--pst-color-border);\n color: var(--pst-color-text-base);\n}\n.bd-search:active {\n background-color: var(--pst-color-background);\n color: var(--pst-color-text-muted);\n}\n.bd-search:focus-within {\n box-shadow: 0 0 0 0.1875rem var(--pst-color-accent);\n}\n.bd-search:focus-within input:focus {\n box-shadow: none;\n}\n.bd-search .icon {\n position: absolute;\n color: var(--pst-color-border);\n left: 25px;\n}\n.bd-search .fa-solid.fa-magnifying-glass {\n position: absolute;\n left: calc((2.5rem - 0.7em) / 2);\n color: var(--pst-color-text-muted);\n}\n.bd-search input.form-control {\n background-color: var(--pst-color-background);\n color: var(--pst-color-text-base);\n border: none;\n}\n.bd-search input.form-control::placeholder {\n color: var(--pst-color-text-muted);\n}\n.bd-search input.form-control::-webkit-search-cancel-button, .bd-search input.form-control::-webkit-search-decoration {\n appearance: none;\n}\n.bd-search input.form-control:focus, .bd-search input.form-control:focus-visible {\n color: var(--pst-color-text-muted);\n}\n.bd-search .search-button__kbd-shortcut {\n display: none;\n margin-inline-end: 0.5rem;\n color: var(--pst-color-border);\n}\n@media (min-width: 720px) {\n .bd-search .search-button__kbd-shortcut {\n display: flex;\n }\n}\n\n/**\n * Search button - located in the navbar\n */\n.search-button i {\n font-size: 1.3rem;\n}\n\n/**\n * The search modal <dialog>\n */\n#pst-search-dialog {\n display: none;\n}\n#pst-search-dialog[open] {\n display: flex;\n position: fixed;\n z-index: 1055;\n top: 30%;\n left: 50%;\n transform: translate(-50%, -50%);\n right: 1rem;\n margin-top: 0.5rem;\n width: 90%;\n max-width: 800px;\n background-color: transparent;\n padding: 0.1875rem;\n border: none;\n}\n#pst-search-dialog[open]::backdrop {\n background-color: black;\n opacity: 0.5;\n}\n#pst-search-dialog[open] form.bd-search {\n flex-grow: 1;\n}\n#pst-search-dialog[open] form.bd-search svg,\n#pst-search-dialog[open] form.bd-search input {\n font-size: var(--pst-font-size-icon);\n}\n\n/**\n * The search button component that looks like a field.\n * Lives at components/search-button-field.html\n */\n.search-button-field {\n display: inline-flex;\n align-items: center;\n border: var(--pst-color-border) solid 1px;\n border-radius: 1.5em;\n color: var(--pst-color-text-muted);\n padding: 0.5em;\n background-color: var(--pst-color-surface);\n}\n.search-button-field:hover {\n box-shadow: 0 0 0 0.1875rem var(--pst-color-link-hover);\n}\n.search-button-field:focus-visible {\n border-radius: 1.5em;\n}\n.search-button-field .search-button__default-text {\n font-size: var(--bs-nav-link-font-size);\n font-weight: var(--bs-nav-link-font-weight);\n margin-right: 0.5em;\n margin-left: 0.5em;\n}\n.search-button-field .kbd-shortcut__modifier {\n font-size: 0.75em;\n}\n.search-button-field > * {\n align-items: center;\n}\n.search-button-field > :not(svg) {\n display: none;\n}\n@media (min-width: 960px) {\n .search-button-field > :not(svg) {\n display: flex;\n }\n}\n\n/**\n * The 'Hide Search Matches' button.\n * This only shows up when a person lands on a page after clicking a search result.\n * Clicking it removes the highlighting of the search term from the page.\n * We want it to behave like a button.\n */\ndiv#searchbox p.highlight-link {\n margin: 1rem 0;\n width: fit-content;\n box-shadow: 0 0.2rem 0.5rem var(--pst-color-shadow), 0 0 0.0625rem var(--pst-color-shadow) !important;\n}\n@media (min-width: 1200px) {\n div#searchbox p.highlight-link {\n margin-left: 2rem;\n }\n}\ndiv#searchbox p.highlight-link a {\n border-radius: 0.25rem;\n font-size: 1.25rem;\n padding: 0.75rem;\n background-color: var(--pst-color-primary);\n color: var(--pst-color-primary-text);\n text-decoration: none;\n transition: box-shadow 0.25s ease-out;\n}\ndiv#searchbox p.highlight-link a:hover {\n box-shadow: inset 0 0 50px 50px rgba(0, 0, 0, 0.25);\n}\ndiv#searchbox p.highlight-link a::before {\n content: var(--pst-icon-search-minus);\n color: unset;\n font: var(--fa-font-solid);\n margin-right: 0.5rem;\n}\n\n/**\n * Light/dark theme switcher\n */\n.theme-switch-button .theme-switch {\n display: none;\n}\n.theme-switch-button .theme-switch:active {\n text-decoration: none;\n color: var(--pst-color-link-hover);\n}\n.theme-switch-button .theme-switch .fa-lg {\n aspect-ratio: 1/1;\n}\n\nhtml[data-mode=auto] .theme-switch-button .theme-switch[data-mode=auto] {\n display: inline;\n}\n\nhtml[data-mode=light] .theme-switch-button .theme-switch[data-mode=light] {\n display: inline;\n}\n\nhtml[data-mode=dark] .theme-switch-button .theme-switch[data-mode=dark] {\n display: inline;\n}\n\nbutton.btn.version-switcher__button {\n border-color: var(--pst-color-border);\n color: var(--pst-color-text-base);\n margin-bottom: 1em;\n}\n@media (min-width: 960px) {\n button.btn.version-switcher__button {\n margin-bottom: unset;\n }\n}\nbutton.btn.version-switcher__button:hover {\n box-shadow: 0 0 0 0.1875rem var(--pst-color-secondary);\n border-color: transparent;\n}\nbutton.btn.version-switcher__button:active {\n color: var(--pst-color-text-base);\n border-color: var(--pst-color-border);\n}\nbutton.btn.version-switcher__button:focus-visible {\n border-color: transparent;\n}\n\n.version-switcher__menu {\n border-color: var(--pst-color-border);\n border-radius: var(--bs-dropdown-border-radius);\n}\n.version-switcher__menu a.list-group-item {\n background-color: var(--pst-color-on-background);\n color: var(--pst-color-text-base);\n padding: 0.75rem 1.25rem;\n}\n.version-switcher__menu a.list-group-item:not(:last-child) {\n border-bottom: 1px solid var(--pst-color-border);\n}\n.version-switcher__menu a.list-group-item:hover {\n text-decoration: underline;\n text-decoration-thickness: max(1px, .0625rem);\n text-underline-offset: 0.1578em;\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n color: var(--pst-color-link-hover);\n background-color: var(--pst-color-surface);\n}\n.version-switcher__menu a.list-group-item.active {\n font-weight: 600;\n color: var(--pst-color-primary);\n box-shadow: inset max(3px, .1875rem, .12em) 0 0 var(--pst-color-primary);\n position: relative;\n z-index: 1;\n}\n.version-switcher__menu a.list-group-item.active:focus-visible {\n box-shadow: inset max(3px, .1875rem, .12em) 0 0 var(--pst-color-primary), 0 0 0 0.1875rem var(--pst-color-accent);\n outline: none;\n}\n.version-switcher__menu a.list-group-item.active span::before {\n content: \"\";\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: -1;\n left: 0;\n top: 0;\n}\n.version-switcher__menu a.list-group-item:focus-visible {\n z-index: 10;\n}\n\nbutton.version-switcher__button,\n.version-switcher__menu {\n font-size: 1.1em;\n z-index: 1055;\n box-sizing: border-box;\n min-width: 24px;\n min-height: 24px;\n}\n@media (min-width: 960px) {\n button.version-switcher__button,\n .version-switcher__menu {\n font-size: unset;\n }\n}\n\n/* Collapsing of the TOC sidebar while scrolling */\n/* Nav: hide second level (shown on .active) */\nnav.page-toc {\n margin-bottom: 1rem;\n}\n\n.bd-toc .nav .nav {\n display: none;\n}\n.bd-toc .nav .nav.visible {\n display: block;\n}\n.bd-toc .nav > .active > ul {\n display: block;\n}\n\n.toc-entry {\n display: block;\n}\n.toc-entry a > code {\n color: var(--pst-color-text-muted);\n}\n.toc-entry a.nav-link {\n display: block;\n padding: 0.25rem 0;\n padding-left: 1rem;\n margin-left: -1rem;\n color: var(--pst-color-text-muted);\n text-decoration: none;\n}\n.toc-entry a.nav-link:hover {\n text-decoration: underline;\n background-color: transparent;\n color: var(--pst-color-link-hover);\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n}\n.toc-entry a.nav-link:active {\n color: var(--pst-color-link-hover);\n}\n.toc-entry a.nav-link:focus-visible {\n box-shadow: 0 0 0 0.1875rem var(--pst-color-accent);\n outline: none;\n z-index: 10;\n}\n.toc-entry a.nav-link.active {\n font-weight: 600;\n color: var(--pst-color-primary);\n box-shadow: inset max(3px, .1875rem, .12em) 0 0 var(--pst-color-primary);\n background-color: transparent;\n}\n.toc-entry a.nav-link.active:focus-visible {\n box-shadow: inset max(3px, .1875rem, .12em) 0 0 var(--pst-color-primary), 0 0 0 0.1875rem var(--pst-color-accent);\n outline: none;\n}\n.toc-entry a.nav-link.active:hover {\n color: var(--pst-color-link-hover);\n}\n.toc-entry a.nav-link:focus-visible {\n border-radius: 0.125rem;\n}\n\ndiv.versionadded,\ndiv.versionchanged,\ndiv.deprecated {\n vertical-align: middle;\n margin: 1.5625em auto;\n padding: 0 0.6rem;\n overflow: hidden;\n /* break-inside has replaced page-break-inside and is widely usable since 2019 */\n page-break-inside: avoid;\n break-inside: avoid;\n border-left: 0.2rem solid;\n border-color: var(--pst-color-info);\n border-radius: 0.25rem;\n background-color: var(--pst-color-on-background);\n box-shadow: 0 0.2rem 0.5rem var(--pst-color-shadow), 0 0 0.0625rem var(--pst-color-shadow) !important;\n position: relative;\n}\ndiv.versionadded > p,\ndiv.versionchanged > p,\ndiv.deprecated > p {\n margin-bottom: 0.6rem;\n margin-top: 0.6rem;\n}\n\ndiv.versionadded {\n border-color: var(--pst-color-success);\n background-color: var(--pst-color-success-bg);\n}\n\ndiv.versionchanged {\n border-color: var(--pst-color-warning);\n background-color: var(--pst-color-warning-bg);\n}\n\ndiv.deprecated {\n border-color: var(--pst-color-danger);\n background-color: var(--pst-color-danger-bg);\n}\n\nspan.versionmodified {\n font-weight: 600;\n}\nspan.versionmodified::before {\n margin-right: 0.6rem;\n color: var(--pst-color-info);\n font: var(--fa-font-solid);\n content: var(--pst-icon-versionmodified-default);\n}\n\nspan.versionmodified.added::before {\n color: var(--pst-color-success);\n content: var(--pst-icon-versionmodified-added);\n}\n\nspan.versionmodified.changed::before {\n color: var(--pst-color-warning);\n content: var(--pst-icon-versionmodified-changed);\n}\n\nspan.versionmodified.deprecated::before {\n color: var(--pst-color-danger);\n content: var(--pst-icon-versionmodified-deprecated);\n}\n\n.sidebar-indices-items {\n display: flex;\n flex-direction: column;\n border-top: 1px solid var(--pst-color-border);\n}\n@media (min-width: 960px) {\n .sidebar-indices-items {\n border-top: none;\n }\n}\n.sidebar-indices-items .sidebar-indices-items__title {\n font-weight: var(--pst-sidebar-header-font-weight);\n font-size: var(--pst-sidebar-header-font-size);\n color: var(--pst-color-text-base);\n margin-bottom: 0.5rem;\n}\n.sidebar-indices-items ul.indices-link {\n margin-right: -1rem;\n list-style: none;\n padding: 0;\n}\n.sidebar-indices-items ul.indices-link li > a {\n display: block;\n padding: 0.25rem 0;\n color: var(--pst-color-text-muted);\n}\n.sidebar-indices-items ul.indices-link li > a:hover {\n color: var(--pst-color-primary);\n text-decoration: none;\n background-color: transparent;\n}\n\n/**\n * Admonitions and blocks of styled content.\n * Admonitions CSS originally inspired by https://squidfunk.github.io/mkdocs-material/getting-started/\n */\ndiv.admonition,\n.admonition {\n margin: 1.5625em auto;\n padding: 0 0.6rem 0.8rem;\n overflow: hidden;\n /* break-inside has replaced page-break-inside and is widely usable since 2019 */\n page-break-inside: avoid;\n break-inside: avoid;\n border-left: 0.2rem solid;\n border-color: var(--pst-color-info);\n border-radius: 0.25rem;\n background-color: var(--pst-color-on-background);\n box-shadow: 0 0.2rem 0.5rem var(--pst-color-shadow), 0 0 0.0625rem var(--pst-color-shadow) !important;\n /**\n * Special-case for a `sidebar` class that makes the admonition float to\n * the right like the {sidebar} directive.\n */\n}\ndiv.admonition *:last-child,\n.admonition *:last-child {\n margin-bottom: 0;\n}\ndiv.admonition p.admonition-title ~ *,\n.admonition p.admonition-title ~ * {\n margin-left: 1.4rem;\n margin-right: 1.4rem;\n}\ndiv.admonition > ol,\ndiv.admonition > ul,\n.admonition > ol,\n.admonition > ul {\n margin-left: 1em;\n}\ndiv.admonition > .admonition-title,\n.admonition > .admonition-title {\n margin: 0 -0.6rem;\n padding: 0.4rem 0.6rem 0.4rem 2rem;\n font-weight: var(--pst-admonition-font-weight-heading);\n position: relative;\n background-color: var(--pst-color-info-bg);\n z-index: 1;\n}\ndiv.admonition > .admonition-title::before,\n.admonition > .admonition-title::before {\n content: \"\";\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n z-index: -1;\n pointer-events: none;\n}\ndiv.admonition > .admonition-title::after,\n.admonition > .admonition-title::after {\n position: absolute;\n left: 0.5rem;\n width: 1rem;\n height: 1rem;\n color: var(--pst-color-info);\n font: var(--fa-font-solid);\n line-height: inherit;\n content: var(--pst-icon-admonition-default);\n opacity: 1;\n}\ndiv.admonition > .admonition-title + *,\n.admonition > .admonition-title + * {\n margin-top: 0.4em;\n}\ndiv.admonition.attention,\n.admonition.attention {\n border-color: var(--pst-color-attention);\n}\ndiv.admonition.attention > .admonition-title,\n.admonition.attention > .admonition-title {\n background-color: var(--pst-color-attention-bg);\n}\ndiv.admonition.attention > .admonition-title::after,\n.admonition.attention > .admonition-title::after {\n color: var(--pst-color-attention);\n content: var(--pst-icon-admonition-attention);\n}\ndiv.admonition.caution,\n.admonition.caution {\n border-color: var(--pst-color-warning);\n}\ndiv.admonition.caution > .admonition-title,\n.admonition.caution > .admonition-title {\n background-color: var(--pst-color-warning-bg);\n}\ndiv.admonition.caution > .admonition-title::after,\n.admonition.caution > .admonition-title::after {\n color: var(--pst-color-warning);\n content: var(--pst-icon-admonition-caution);\n}\ndiv.admonition.warning,\n.admonition.warning {\n border-color: var(--pst-color-warning);\n}\ndiv.admonition.warning > .admonition-title,\n.admonition.warning > .admonition-title {\n background-color: var(--pst-color-warning-bg);\n}\ndiv.admonition.warning > .admonition-title::after,\n.admonition.warning > .admonition-title::after {\n color: var(--pst-color-warning);\n content: var(--pst-icon-admonition-warning);\n}\ndiv.admonition.danger,\n.admonition.danger {\n border-color: var(--pst-color-danger);\n}\ndiv.admonition.danger > .admonition-title,\n.admonition.danger > .admonition-title {\n background-color: var(--pst-color-danger-bg);\n}\ndiv.admonition.danger > .admonition-title::after,\n.admonition.danger > .admonition-title::after {\n color: var(--pst-color-danger);\n content: var(--pst-icon-admonition-danger);\n}\ndiv.admonition.error,\n.admonition.error {\n border-color: var(--pst-color-danger);\n}\ndiv.admonition.error > .admonition-title,\n.admonition.error > .admonition-title {\n background-color: var(--pst-color-danger-bg);\n}\ndiv.admonition.error > .admonition-title::after,\n.admonition.error > .admonition-title::after {\n color: var(--pst-color-danger);\n content: var(--pst-icon-admonition-error);\n}\ndiv.admonition.hint,\n.admonition.hint {\n border-color: var(--pst-color-success);\n}\ndiv.admonition.hint > .admonition-title,\n.admonition.hint > .admonition-title {\n background-color: var(--pst-color-success-bg);\n}\ndiv.admonition.hint > .admonition-title::after,\n.admonition.hint > .admonition-title::after {\n color: var(--pst-color-success);\n content: var(--pst-icon-admonition-hint);\n}\ndiv.admonition.tip,\n.admonition.tip {\n border-color: var(--pst-color-success);\n}\ndiv.admonition.tip > .admonition-title,\n.admonition.tip > .admonition-title {\n background-color: var(--pst-color-success-bg);\n}\ndiv.admonition.tip > .admonition-title::after,\n.admonition.tip > .admonition-title::after {\n color: var(--pst-color-success);\n content: var(--pst-icon-admonition-tip);\n}\ndiv.admonition.important,\n.admonition.important {\n border-color: var(--pst-color-attention);\n}\ndiv.admonition.important > .admonition-title,\n.admonition.important > .admonition-title {\n background-color: var(--pst-color-attention-bg);\n}\ndiv.admonition.important > .admonition-title::after,\n.admonition.important > .admonition-title::after {\n color: var(--pst-color-attention);\n content: var(--pst-icon-admonition-important);\n}\ndiv.admonition.note,\n.admonition.note {\n border-color: var(--pst-color-info);\n}\ndiv.admonition.note > .admonition-title,\n.admonition.note > .admonition-title {\n background-color: var(--pst-color-info-bg);\n}\ndiv.admonition.note > .admonition-title::after,\n.admonition.note > .admonition-title::after {\n color: var(--pst-color-info);\n content: var(--pst-icon-admonition-note);\n}\ndiv.admonition.seealso,\n.admonition.seealso {\n border-color: var(--pst-color-success);\n}\ndiv.admonition.seealso > .admonition-title,\n.admonition.seealso > .admonition-title {\n background-color: var(--pst-color-success-bg);\n}\ndiv.admonition.seealso > .admonition-title::after,\n.admonition.seealso > .admonition-title::after {\n color: var(--pst-color-success);\n content: var(--pst-icon-admonition-seealso);\n}\ndiv.admonition.admonition-todo,\n.admonition.admonition-todo {\n border-color: var(--pst-color-secondary);\n}\ndiv.admonition.admonition-todo > .admonition-title,\n.admonition.admonition-todo > .admonition-title {\n background-color: var(--pst-color-secondary-bg);\n}\ndiv.admonition.admonition-todo > .admonition-title::after,\n.admonition.admonition-todo > .admonition-title::after {\n color: var(--pst-color-secondary);\n content: var(--pst-icon-admonition-todo);\n}\ndiv.admonition.sidebar,\n.admonition.sidebar {\n max-width: 40%;\n float: right;\n clear: both;\n margin-left: 0.5rem;\n margin-top: 0;\n border-width: 0 0 0 0.2rem;\n}\ndiv.admonition.sidebar.attention, div.admonition.sidebar.important,\n.admonition.sidebar.attention,\n.admonition.sidebar.important {\n border-color: var(--pst-color-attention);\n}\ndiv.admonition.sidebar.caution, div.admonition.sidebar.warning,\n.admonition.sidebar.caution,\n.admonition.sidebar.warning {\n border-color: var(--pst-color-warning);\n}\ndiv.admonition.sidebar.danger, div.admonition.sidebar.error,\n.admonition.sidebar.danger,\n.admonition.sidebar.error {\n border-color: var(--pst-color-danger);\n}\ndiv.admonition.sidebar.hint, div.admonition.sidebar.tip, div.admonition.sidebar.seealso,\n.admonition.sidebar.hint,\n.admonition.sidebar.tip,\n.admonition.sidebar.seealso {\n border-color: var(--pst-color-success);\n}\ndiv.admonition.sidebar.note, div.admonition.sidebar.todo,\n.admonition.sidebar.note,\n.admonition.sidebar.todo {\n border-color: var(--pst-color-info);\n}\ndiv.admonition.sidebar p.admonition-title ~ *,\n.admonition.sidebar p.admonition-title ~ * {\n margin-left: 0;\n margin-right: 0;\n}\n\n/**************************************************************\n * Similar content blocks that are not technically admonitions.\n */\n/**\n * Topics and the {contents} directive\n */\ndiv.topic,\ndiv.topic.contents,\nnav.contents,\naside.topic {\n display: flex;\n flex-direction: column;\n background-color: var(--pst-color-surface);\n border-color: var(--pst-color-border);\n border-radius: 0.25rem;\n padding: 1rem 1.25rem;\n box-shadow: 0 0.2rem 0.5rem var(--pst-color-shadow), 0 0 0.0625rem var(--pst-color-shadow) !important;\n}\ndiv.topic .topic-title,\ndiv.topic.contents .topic-title,\nnav.contents .topic-title,\naside.topic .topic-title {\n margin: 0 0 0.5rem;\n}\ndiv.topic p,\ndiv.topic.contents p,\nnav.contents p,\naside.topic p {\n color: var(--pst-color-on-surface) !important;\n}\ndiv.topic ul.simple,\ndiv.topic.contents ul.simple,\nnav.contents ul.simple,\naside.topic ul.simple {\n padding-left: 1rem;\n}\ndiv.topic ul.simple ul,\ndiv.topic.contents ul.simple ul,\nnav.contents ul.simple ul,\naside.topic ul.simple ul {\n padding-left: 2em;\n}\n\n/**\n * Sidebar directive\n */\naside.sidebar {\n border: 1px solid var(--pst-color-border);\n background-color: var(--pst-color-surface);\n border-radius: 0.25rem;\n margin-left: 0.5rem;\n padding: 0;\n}\naside.sidebar > *:last-child {\n padding-bottom: 1rem;\n}\naside.sidebar p.sidebar-title {\n position: relative;\n margin-bottom: 0;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n border-bottom: 1px solid var(--pst-color-border);\n font-family: var(--pst-font-family-heading);\n font-weight: var(--pst-admonition-font-weight-heading);\n}\naside.sidebar > *:not(.sidebar-title):first-child,\naside.sidebar > p.sidebar-title + * {\n margin-top: 1rem;\n}\naside.sidebar > * {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n/**\n * Rubrics look kind of like section headers\n */\np.rubric {\n display: flex;\n flex-direction: column;\n}\n\n/**\n * Seealso is kind of like a vertically-collapsed admonition\n */\n.seealso dd {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n/*******************************************************************************\n* Styling for field lists\n*/\n/* grey highlighting of 'parameter' and 'returns' field */\ntable.field-list {\n border-collapse: separate;\n border-spacing: 10px;\n margin-left: 1px;\n /* italic font for parameter types */\n}\ntable.field-list th.field-name {\n padding: 1px 8px 1px 5px;\n white-space: nowrap;\n background-color: var(--pst-color-surface);\n}\ntable.field-list td.field-body {\n /* reduced space around parameter description */\n}\ntable.field-list td.field-body p {\n font-style: italic;\n}\ntable.field-list td.field-body p > strong {\n font-style: normal;\n}\ntable.field-list td.field-body blockquote {\n border-left: none;\n margin: 0 0 0.3em;\n padding-left: 30px;\n}\n\n/*******************************************************************************\n* Styling for autosummary tables\n*/\n.table.autosummary td:first-child {\n white-space: nowrap;\n}\n\n/* overriding basic.css to use our own monospace font */\n.sig {\n font-family: var(--pst-font-family-monospace);\n}\n\n/* C++ specific styling - overriding the basic.css to avoid custom colors */\n.sig-inline.c-texpr,\n.sig-inline.cpp-texpr {\n font-family: unset;\n}\n\n.sig.c .k,\n.sig.c .kt,\n.sig.cpp .k,\n.sig.cpp .kt {\n color: var(--pst-color-text-base);\n}\n\n.sig.c .m,\n.sig.cpp .m {\n color: var(--pst-color-text-base);\n}\n\n.sig.c .s,\n.sig.c .sc,\n.sig.cpp .s,\n.sig.cpp .sc {\n color: var(--pst-color-text-base);\n}\n\n.sig-name {\n color: var(--pst-color-inline-code);\n}\n\n.sig-param .o,\n.sig-param .default_value {\n color: var(--pst-color-text-muted);\n font-weight: normal;\n}\n\ndt:target,\nspan.highlighted {\n background-color: var(--pst-color-target);\n}\n\n.viewcode-back {\n font-family: var(--pst-font-family-base);\n}\n\n.viewcode-block:target {\n border-top: 1px solid var(--pst-color-border);\n border-bottom: 1px solid var(--pst-color-border);\n position: relative;\n background-color: var(--pst-color-target);\n}\n\ndl > dt > a:has(.viewcode-link) {\n float: right;\n}\ndl > dt > a:has(.viewcode-link) .viewcode-link {\n float: none;\n}\n\n/*******************************************************************************\n* Styling for autosummary titles like \"parameters\" and \"returns\"\n*/\ndl[class]:not(.option-list, .field-list, .footnote, .glossary, .simple) {\n margin-bottom: 3rem;\n}\ndl[class]:not(.option-list, .field-list, .footnote, .glossary, .simple) dd {\n margin-left: 2rem;\n}\ndl[class]:not(.option-list, .field-list, .footnote, .glossary, .simple) dd > dl.simple > dt {\n display: flex;\n}\ndl[class]:not(.option-list, .field-list, .footnote, .glossary, .simple) dl.field-list {\n display: grid;\n grid-template-columns: unset;\n}\ndl[class]:not(.option-list, .field-list, .footnote, .glossary, .simple) dt.field-odd,\ndl[class]:not(.option-list, .field-list, .footnote, .glossary, .simple) dt.field-even {\n margin-top: 0.2rem;\n margin-bottom: 0.1rem;\n background-color: var(--pst-color-surface);\n}\n\n/**\n * Code block styling\n * Note that we inherit a lot of styling from Bootstrap so not many rules here.\n */\ndiv[class*=highlight-],\ndiv.highlight,\ndiv.literal-block-wrapper {\n display: flex;\n flex-direction: column;\n width: unset;\n border-radius: 0.25rem;\n break-inside: avoid;\n}\n\ndiv.literal-block-wrapper {\n border: 1px solid var(--pst-color-border);\n border-radius: 0.25rem;\n}\ndiv.literal-block-wrapper div.code-block-caption {\n margin: 0;\n border-bottom: 1px solid var(--pst-color-border);\n padding: 0.5rem;\n font-size: 1rem;\n font-weight: var(--pst-font-weight-caption);\n}\ndiv.literal-block-wrapper div.code-block-caption a.headerlink {\n font-size: inherit;\n}\ndiv.literal-block-wrapper div[class*=highlight-] {\n margin: 0;\n border-radius: 0;\n}\ndiv.literal-block-wrapper div[class*=highlight-] pre {\n border: none;\n box-shadow: none;\n}\n\n/**\n * In-line code\n */\ncode.literal {\n padding: 0.1rem 0.25rem;\n background-color: var(--pst-color-surface);\n border: 1px solid var(--pst-color-border);\n border-radius: 0.25rem;\n}\n\na > code {\n color: var(--pst-color-inline-code-links);\n}\na > code:hover {\n color: var(--pst-color-link-hover);\n}\n\nspan.linenos {\n opacity: 0.8 !important;\n}\n\nfigure > a,\nfigure > a > img,\nfigure > img,\nfigure > video {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n\nfigure a.headerlink {\n position: absolute;\n font-size: inherit;\n}\nfigure:hover a.headerlink {\n visibility: visible;\n}\nfigure figcaption {\n font-family: var(--pst-font-family-heading);\n font-weight: var(--pst-font-weight-caption);\n color: var(--pst-color-text-muted);\n margin-left: auto;\n margin-right: auto;\n margin-top: 0.3rem;\n text-align: center;\n}\nfigure figcaption > p:last-child {\n margin-bottom: 0;\n}\nfigure figcaption p {\n text-align: start;\n display: inline-block;\n}\nfigure figcaption table.table {\n width: fit-content;\n margin-left: auto;\n margin-right: auto;\n}\n\ndt.label > span.brackets:not(:only-child)::before {\n content: \"[\";\n}\n\ndt.label > span.brackets:not(:only-child)::after {\n content: \"]\";\n}\n\na.footnote-reference {\n vertical-align: super;\n font-size: small;\n}\n\naside.footnote {\n margin-bottom: 0.5rem;\n}\naside.footnote:last-child {\n margin-bottom: 1rem;\n}\naside.footnote span.label,\naside.footnote span.backrefs {\n font-weight: bold;\n}\naside.footnote:target {\n background-color: var(--pst-color-target);\n}\n\n/**\n * Hacky fixes that don't fit cleanly into other sections\n */\ntable.highlighttable td.linenos,\nspan.linenos,\ndiv.doctest > div.highlight span.gp {\n /* gp: Generic.Prompt */\n user-select: none;\n}\n\ndd {\n margin-top: 3px;\n margin-bottom: 10px;\n margin-left: 30px;\n}\n\nol,\nul {\n padding-inline-start: 2rem;\n}\nol li > p:first-child,\nul li > p:first-child {\n margin-bottom: 0.25rem;\n margin-top: 0.25rem;\n}\n\nblockquote {\n padding: 1em;\n color: var(--pst-color-text-muted);\n border-left: 0.25em solid var(--pst-color-blockquote-notch);\n border-radius: 0.25rem;\n position: relative;\n background-color: var(--pst-color-surface);\n}\nblockquote p {\n color: var(--pst-color-text-base);\n}\nblockquote .line-block {\n margin: 0;\n}\nblockquote p:last-child {\n margin-bottom: 0;\n}\nblockquote::before {\n content: \"\";\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n z-index: -1;\n pointer-events: none;\n}\nblockquote a {\n color: var(--pst-color-inline-code-links);\n}\nblockquote::before {\n z-index: -1;\n}\n\n/**\n * Span-level styling within content\n */\nspan.guilabel {\n border: 1px solid var(--pst-color-info);\n font-size: 80%;\n font-weight: 700;\n border-radius: 4px;\n padding: 2.4px 6px;\n margin: auto 2px;\n position: relative;\n background-color: var(--pst-color-info-bg);\n}\nspan.guilabel::before {\n content: \"\";\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n z-index: -1;\n pointer-events: none;\n}\n\na.reference.download::before {\n content: var(--pst-icon-download);\n font: var(--fa-font-solid);\n font-size: 0.8em;\n padding: 0 0.25em;\n color: var(--pst-color-text-muted);\n}\n\n/**\n * Tables\n */\ntable {\n margin-left: auto;\n margin-right: auto;\n}\ntable.table-right {\n margin-right: 0;\n}\ntable.table-left {\n margin-left: 0;\n}\n\ntable caption {\n text-align: center;\n caption-side: top;\n color: var(--pst-color-text-muted);\n}\n\nth.text-left,\ntd.text-left {\n text-align: left;\n}\nth.text-right,\ntd.text-right {\n text-align: right;\n}\nth.text-center,\ntd.text-center {\n text-align: center;\n}\n\n.table {\n color: var(--pst-color-table);\n border: 1px solid var(--pst-color-table-outer-border);\n --bs-table-bg: transparent;\n --bs-table-color: var(\n --pst-color-text-base\n );\n}\n.table th ~ th,\n.table th ~ td,\n.table td ~ th,\n.table td ~ td {\n border-left: 1px solid var(--pst-color-table-inner-border);\n}\n.table thead tr {\n background-color: var(--pst-color-table-heading-bg);\n border-bottom: 2px solid var(--pst-color-primary);\n}\n.table tbody tr:nth-child(odd) {\n background-color: var(--pst-color-table-row-zebra-low-bg);\n}\n.table tbody tr:nth-child(even) {\n background-color: var(--pst-color-table-row-zebra-high-bg);\n}\n\n.pst-scrollable-table-container {\n overflow-x: auto;\n}\n\n/**\n * Style the toctree component in pages (avoid modifying the navbars)\n */\n.toctree-wrapper p.caption {\n font-size: 1.5em;\n margin-bottom: 0;\n}\n.toctree-wrapper > ul {\n padding-left: 0;\n}\n.toctree-wrapper li[class^=toctree-l] {\n list-style: none;\n margin-bottom: 0.2em;\n}\n.toctree-wrapper li[class^=toctree-l] > a {\n list-style: none;\n font-size: 1.1em;\n}\n.toctree-wrapper li[class^=toctree-l] > ul {\n list-style: none;\n padding-inline-start: 1.5em;\n}\n.toctree-wrapper .toctree-l1 > a {\n font-size: 1.3em;\n}\n\ndiv.topic.contents ul.simple,\nnav.contents ul.simple {\n list-style: none;\n padding-left: 0;\n}\n\n/**\n * Mathematics via MathJax.\n *\n * This is designed for MathJax v3\n * ref: https://www.sphinx-doc.org/en/master/usage/extensions/math.html#module-sphinx.ext.mathjax\n */\nspan.math,\ndiv.math {\n align-items: center;\n display: flex;\n max-width: 100%;\n overflow: hidden;\n}\n\nspan.math {\n display: inline-flex;\n}\n\ndiv.math {\n gap: 0.5em;\n flex-direction: row-reverse;\n}\ndiv.math span.eqno a.headerlink {\n position: relative;\n font-size: 1em;\n}\ndiv.math mjx-container {\n flex-grow: 1;\n padding-bottom: 0.2rem;\n overflow: auto;\n}\ndiv.math mjx-container mjx-assistive-mml {\n height: 0;\n}\n\n/**\n * ABlog\n * ref: https://ablog.readthedocs.io/\n */\n/**\n * Sidebar template components\n */\n.ablog-sidebar-item h2, .ablog-sidebar-item .h2,\n.ablog-sidebar-item h3,\n.ablog-sidebar-item .h3 {\n font-size: var(--pst-sidebar-header-font-size);\n margin-top: 0.5rem;\n}\n.ablog-sidebar-item h2 a, .ablog-sidebar-item .h2 a,\n.ablog-sidebar-item h3 a,\n.ablog-sidebar-item .h3 a {\n color: var(--pst-color-text-base);\n}\n.ablog-sidebar-item ul {\n list-style: none;\n padding-left: 0;\n overflow-y: hidden;\n display: flex;\n flex-direction: column;\n gap: 0.5em;\n margin-bottom: 0;\n}\n.ablog-sidebar-item ul.ablog-cloud {\n flex-flow: row wrap;\n gap: 0.5rem;\n}\n.ablog-sidebar-item ul.ablog-cloud li {\n display: flex;\n align-items: center;\n}\n\n/**\n * Previous / next buttons at the bottom\n */\n.ablog__prev-next {\n font-size: 1.2em;\n display: flex;\n padding: 1rem 0;\n}\n.ablog__prev-next > span {\n display: flex;\n max-width: 45%;\n}\n.ablog__prev-next > span a {\n display: flex;\n align-items: center;\n margin-left: auto;\n gap: 1rem;\n line-height: 1.5rem;\n}\n.ablog__prev-next > span a i::before {\n color: var(--pst-color-text-base);\n}\n.ablog__prev-next span.ablog__prev i.fa-arrow-circle-left::before {\n content: var(--pst-icon-angle-left);\n}\n.ablog__prev-next span.ablog__spacer {\n display: none;\n}\n.ablog__prev-next span.ablog__next {\n margin-left: auto;\n text-align: right;\n}\n.ablog__prev-next span.ablog__next i.fa-arrow-circle-right::before {\n content: var(--pst-icon-angle-right);\n}\n\n/**\n * {postlist} directive and posts page\n */\n.ablog__collection,\n.postlist {\n padding-left: 0;\n}\n.ablog__collection .ablog-post,\n.postlist .ablog-post {\n list-style: none;\n}\n.ablog__collection .ablog-post .ablog-archive,\n.postlist .ablog-post .ablog-archive {\n display: flex;\n flex-flow: row wrap;\n gap: 1rem;\n list-style: none;\n font-size: 0.75rem;\n padding-left: 0;\n}\n.ablog__collection .ablog-post .ablog-post-title,\n.postlist .ablog-post .ablog-post-title {\n margin-top: 0;\n font-size: 1.25rem;\n}\n.ablog__collection .ablog-post .ablog-post-title a,\n.postlist .ablog-post .ablog-post-title a {\n font-weight: bold;\n}\n.ablog__collection .ablog-post .ablog-post-expand,\n.postlist .ablog-post .ablog-post-expand {\n margin-bottom: 0.5rem;\n}\n\n/**\n * Special cases for Bootstrap functionality\n */\n.docutils.container {\n padding-left: unset;\n padding-right: unset;\n margin-left: unset;\n margin-right: unset;\n max-width: unset;\n width: unset;\n}\n\n.btn {\n --bs-btn-focus-box-shadow: 0 0 0 0.1875rem var(--pst-color-accent);\n}\n\n/**\n * Sphinx Copybutton\n * ref: https://sphinx-copybutton.readthedocs.io/\n */\ndiv.highlight button.copybtn {\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background-color: var(--pst-color-surface);\n}\ndiv.highlight button.copybtn:not(.success) {\n color: var(--pst-color-muted);\n}\ndiv.highlight button.copybtn:hover:not(.success) {\n color: var(--pst-color-text);\n background-color: var(--pst-color-shadow);\n}\ndiv.highlight button.copybtn.o-tooltip--left::after {\n color: var(--pst-color-text);\n background-color: var(--pst-color-surface);\n}\ndiv.highlight button.copybtn:focus {\n opacity: 1;\n}\ndiv.highlight button.copybtn:focus-visible {\n outline: var(--pst-color-accent) solid 0.1875rem;\n}\n\ndiv.highlight:has(button.copybtn) {\n min-height: 2em;\n}\n\n#ethical-ad-placement .ethical-sidebar a,\n#ethical-ad-placement .ethical-sidebar a:visited,\n#ethical-ad-placement .ethical-sidebar a:hover,\n#ethical-ad-placement .ethical-sidebar a:active,\n#ethical-ad-placement .ethical-footer a,\n#ethical-ad-placement .ethical-footer a:visited,\n#ethical-ad-placement .ethical-footer a:hover,\n#ethical-ad-placement .ethical-footer a:active {\n color: var(--pst-color-text-base);\n}\n#ethical-ad-placement .ethical-sidebar,\n#ethical-ad-placement .ethical-footer {\n background-color: var(--pst-color-background);\n border: 1px solid var(--pst-color-border);\n border-radius: 5px;\n color: var(--pst-color-text-base);\n font-size: 14px;\n line-height: 20px;\n}\n\n/**\n * Styles for various Sphinx execution libraries.\n * For now, where these define output sections, we simply revert their background\n * to be a \"light theme\" background. This ensures that inputs/outputs behave similarly,\n * because the CSS is often controlled by each package.\n * In the future, we might add dark theme support for specific packages.\n */\n/******************************************************************************\n * Jupyter Sphinx\n */\n.bd-content div.jupyter_container {\n border: none;\n background-color: unset;\n box-shadow: none;\n}\n.bd-content div.jupyter_container div.output,\n.bd-content div.jupyter_container div.highlight {\n border-radius: 0.25rem;\n}\n.bd-content div.jupyter_container div.highlight {\n background-color: var(--pst-color-surface);\n}\n.bd-content div.jupyter_container .cell_input,\n.bd-content div.jupyter_container .cell_output {\n border-radius: 0.25rem;\n}\n.bd-content div.jupyter_container .cell_input pre,\n.bd-content div.jupyter_container .cell_output pre {\n padding: 1rem;\n}\n\n/* Styles for graphviz generated output from Sphinx */\n/* Style the inheritance diagram such that it has a dark mode */\nhtml[data-theme=dark] div.graphviz > object.inheritance {\n filter: brightness(0.8) invert(0.82) contrast(1.2);\n color-scheme: normal;\n}\n\n/**\n * Special-cases for packages in the PyData ecosystem\n */\n.xr-wrap[hidden] {\n display: block !important;\n}\n\n.jp-OutputArea-output.lm-Widget {\n overflow: auto;\n}\n\n/*******************************************************************************\n* master color map. Only the colors that actually differ between light and dark\n* themes are specified separately.\n*\n* To see the full list of colors see https://www.figma.com/file/rUrrHGhUBBIAAjQ82x6pz9/PyData-Design-system---proposal-for-implementation-(2)?node-id=1234%3A765&t=ifcFT1JtnrSshGfi-1\n*/\n/**\n* Function to get items from nested maps\n*/\n/* Assign base colors for the PyData theme */\n:root {\n --pst-teal-50: #f4fbfc;\n --pst-teal-100: #e9f6f8;\n --pst-teal-200: #d0ecf1;\n --pst-teal-300: #abdde6;\n --pst-teal-400: #3fb1c5;\n --pst-teal-500: #0a7d91;\n --pst-teal-600: #085d6c;\n --pst-teal-700: #064752;\n --pst-teal-800: #042c33;\n --pst-teal-900: #021b1f;\n --pst-violet-50: #f4eefb;\n --pst-violet-100: #e0c7ff;\n --pst-violet-200: #d5b4fd;\n --pst-violet-300: #b780ff;\n --pst-violet-400: #9c5ffd;\n --pst-violet-500: #8045e5;\n --pst-violet-600: #6432bd;\n --pst-violet-700: #4b258f;\n --pst-violet-800: #341a61;\n --pst-violet-900: #1e0e39;\n --pst-gray-50: #f9f9fa;\n --pst-gray-100: #f3f4f5;\n --pst-gray-200: #e5e7ea;\n --pst-gray-300: #d1d5da;\n --pst-gray-400: #9ca4af;\n --pst-gray-500: #677384;\n --pst-gray-600: #48566b;\n --pst-gray-700: #29313d;\n --pst-gray-800: #222832;\n --pst-gray-900: #14181e;\n --pst-pink-50: #fcf8fd;\n --pst-pink-100: #fcf0fa;\n --pst-pink-200: #f8dff5;\n --pst-pink-300: #f3c7ee;\n --pst-pink-400: #e47fd7;\n --pst-pink-500: #c132af;\n --pst-pink-600: #912583;\n --pst-pink-700: #6e1c64;\n --pst-pink-800: #46123f;\n --pst-pink-900: #2b0b27;\n --pst-foundation-white: #ffffff;\n --pst-foundation-black: #14181e;\n}\n\n/*******************************************************************************\n* write the color rules for each theme (light/dark)\n*/\n/* NOTE:\n * Mixins enable us to reuse the same definitions for the different modes\n * https://sass-lang.com/documentation/at-rules/mixin\n * something inserts a variable into a CSS selector or property name\n * https://sass-lang.com/documentation/interpolation\n */\n/* Defaults to light mode if data-theme is not set */\nhtml:not([data-theme]) {\n --pst-color-primary: #0a7d91;\n --pst-color-primary-bg: #d0ecf1;\n --pst-color-secondary: #8045e5;\n --pst-color-secondary-bg: #e0c7ff;\n --pst-color-accent: #c132af;\n --pst-color-accent-bg: #f8dff5;\n --pst-color-info: #276be9;\n --pst-color-info-bg: #dce7fc;\n --pst-color-warning: #f66a0a;\n --pst-color-warning-bg: #f8e3d0;\n --pst-color-success: #00843f;\n --pst-color-success-bg: #d6ece1;\n --pst-color-attention: var(--pst-color-warning);\n --pst-color-attention-bg: var(--pst-color-warning-bg);\n --pst-color-danger: #d72d47;\n --pst-color-danger-bg: #f9e1e4;\n --pst-color-text-base: #222832;\n --pst-color-text-muted: #48566b;\n --pst-color-shadow: rgba(0, 0, 0, 0.1);\n --pst-color-border: #d1d5da;\n --pst-color-border-muted: rgba(23, 23, 26, 0.2);\n --pst-color-blockquote-notch: #677384;\n --pst-color-inline-code: #912583;\n --pst-color-inline-code-links: #085d6c;\n --pst-color-target: #f3cf95;\n --pst-color-table: #14181e;\n --pst-color-table-row-hover-bg: #d5b4fd;\n --pst-color-table-inner-border: #e5e7ea;\n --pst-color-background: #ffffff;\n --pst-color-on-background: #ffffff;\n --pst-color-surface: #f3f4f5;\n --pst-color-on-surface: #222832;\n}\n\nhtml:not([data-theme]) {\n --pst-color-heading: var(--pst-color-text-base);\n --pst-color-link: var(--pst-color-primary);\n --pst-color-link-hover: var(--pst-color-secondary);\n --pst-color-table-outer-border: var(--pst-color-surface);\n --pst-color-table-heading-bg: var(--pst-color-surface);\n --pst-color-table-row-zebra-high-bg: var(--pst-color-on-background);\n --pst-color-table-row-zebra-low-bg: var(--pst-color-surface);\n}\n\nhtml:not([data-theme]) .only-dark,\nhtml:not([data-theme]) .only-dark ~ figcaption {\n display: none !important;\n}\n\n/* NOTE: @each {...} is like a for-loop\n * https://sass-lang.com/documentation/at-rules/control/each\n */\nhtml[data-theme=light] {\n --pst-color-primary: #0a7d91;\n --pst-color-primary-bg: #d0ecf1;\n --pst-color-secondary: #8045e5;\n --pst-color-secondary-bg: #e0c7ff;\n --pst-color-accent: #c132af;\n --pst-color-accent-bg: #f8dff5;\n --pst-color-info: #276be9;\n --pst-color-info-bg: #dce7fc;\n --pst-color-warning: #f66a0a;\n --pst-color-warning-bg: #f8e3d0;\n --pst-color-success: #00843f;\n --pst-color-success-bg: #d6ece1;\n --pst-color-attention: var(--pst-color-warning);\n --pst-color-attention-bg: var(--pst-color-warning-bg);\n --pst-color-danger: #d72d47;\n --pst-color-danger-bg: #f9e1e4;\n --pst-color-text-base: #222832;\n --pst-color-text-muted: #48566b;\n --pst-color-shadow: rgba(0, 0, 0, 0.1);\n --pst-color-border: #d1d5da;\n --pst-color-border-muted: rgba(23, 23, 26, 0.2);\n --pst-color-blockquote-notch: #677384;\n --pst-color-inline-code: #912583;\n --pst-color-inline-code-links: #085d6c;\n --pst-color-target: #f3cf95;\n --pst-color-table: #14181e;\n --pst-color-table-row-hover-bg: #d5b4fd;\n --pst-color-table-inner-border: #e5e7ea;\n --pst-color-background: #ffffff;\n --pst-color-on-background: #ffffff;\n --pst-color-surface: #f3f4f5;\n --pst-color-on-surface: #222832;\n color-scheme: light;\n}\n\nhtml[data-theme=light] {\n --pst-color-heading: var(--pst-color-text-base);\n --pst-color-link: var(--pst-color-primary);\n --pst-color-link-hover: var(--pst-color-secondary);\n --pst-color-table-outer-border: var(--pst-color-surface);\n --pst-color-table-heading-bg: var(--pst-color-surface);\n --pst-color-table-row-zebra-high-bg: var(--pst-color-on-background);\n --pst-color-table-row-zebra-low-bg: var(--pst-color-surface);\n}\n\nhtml[data-theme=light] .only-dark,\nhtml[data-theme=light] .only-dark ~ figcaption {\n display: none !important;\n}\n\nhtml[data-theme=dark] {\n --pst-color-primary: #3fb1c5;\n --pst-color-primary-bg: #042c33;\n --pst-color-secondary: #9c5ffd;\n --pst-color-secondary-bg: #341a61;\n --pst-color-accent: #e47fd7;\n --pst-color-accent-bg: #46123f;\n --pst-color-info: #79a3f2;\n --pst-color-info-bg: #06245d;\n --pst-color-warning: #ff9245;\n --pst-color-warning-bg: #652a02;\n --pst-color-success: #5fb488;\n --pst-color-success-bg: #002f17;\n --pst-color-attention: var(--pst-color-warning);\n --pst-color-attention-bg: var(--pst-color-warning-bg);\n --pst-color-danger: #e78894;\n --pst-color-danger-bg: #4e111b;\n --pst-color-text-base: #ced6dd;\n --pst-color-text-muted: #9ca4af;\n --pst-color-shadow: rgba(0, 0, 0, 0.2);\n --pst-color-border: #48566b;\n --pst-color-border-muted: #29313d;\n --pst-color-blockquote-notch: #9ca4af;\n --pst-color-inline-code: #f3c7ee;\n --pst-color-inline-code-links: #3fb1c5;\n --pst-color-target: #675c04;\n --pst-color-table: #ffffff;\n --pst-color-table-row-hover-bg: #4b258f;\n --pst-color-table-inner-border: #364150;\n --pst-color-background: #14181e;\n --pst-color-on-background: #222832;\n --pst-color-surface: #29313d;\n --pst-color-on-surface: #f3f4f5;\n /* Adjust images in dark mode (unless they have class .only-dark or\n * .dark-light, in which case assume they're already optimized for dark\n * mode).\n */\n /* Give images a light background in dark mode in case they have\n * transparency and black text (unless they have class .only-dark or .dark-light, in\n * which case assume they're already optimized for dark mode).\n */\n color-scheme: dark;\n}\n\nhtml[data-theme=dark] {\n --pst-color-heading: var(--pst-color-text-base);\n --pst-color-link: var(--pst-color-primary);\n --pst-color-link-hover: var(--pst-color-secondary);\n --pst-color-table-outer-border: var(--pst-color-surface);\n --pst-color-table-heading-bg: var(--pst-color-surface);\n --pst-color-table-row-zebra-high-bg: var(--pst-color-on-background);\n --pst-color-table-row-zebra-low-bg: var(--pst-color-surface);\n}\n\nhtml[data-theme=dark] .only-light,\nhtml[data-theme=dark] .only-light ~ figcaption {\n display: none !important;\n}\n\nhtml[data-theme=dark] img:not(.only-dark, .dark-light) {\n filter: brightness(0.8) contrast(1.2);\n}\n\nhtml[data-theme=dark] .bd-content img:not(.only-dark, .dark-light) {\n background-color: rgb(255, 255, 255);\n border-radius: 0.25rem;\n}\n\nhtml[data-theme=dark] .MathJax_SVG * {\n fill: var(--pst-color-text-base);\n}\n\n.pst-color-primary {\n color: var(--pst-color-primary);\n}\n\n.pst-color-secondary {\n color: var(--pst-color-secondary);\n}\n\n.pst-color-accent {\n color: var(--pst-color-accent);\n}\n\n.pst-color-info {\n color: var(--pst-color-info);\n}\n\n.pst-color-warning {\n color: var(--pst-color-warning);\n}\n\n.pst-color-success {\n color: var(--pst-color-success);\n}\n\n.pst-color-attention {\n color: var(--pst-color-attention);\n}\n\n.pst-color-danger {\n color: var(--pst-color-danger);\n}\n\n.pst-color-text-base {\n color: var(--pst-color-text-base);\n}\n\n.pst-color-text-muted {\n color: var(--pst-color-text-muted);\n}\n\n.pst-color-shadow {\n color: var(--pst-color-shadow);\n}\n\n.pst-color-border {\n color: var(--pst-color-border);\n}\n\n.pst-color-border-muted {\n color: var(--pst-color-border-muted);\n}\n\n.pst-color-blockquote-notch {\n color: var(--pst-color-blockquote-notch);\n}\n\n.pst-color-inline-code {\n color: var(--pst-color-inline-code);\n}\n\n.pst-color-inline-code-links {\n color: var(--pst-color-inline-code-links);\n}\n\n.pst-color-target {\n color: var(--pst-color-target);\n}\n\n.pst-color-table {\n color: var(--pst-color-table);\n}\n\n.pst-color-table-row-hover {\n color: var(--pst-color-table-row-hover);\n}\n\n.pst-color-table-inner-border {\n color: var(--pst-color-table-inner-border);\n}\n\n.pst-color-background {\n color: var(--pst-color-background);\n}\n\n.pst-color-on-background {\n color: var(--pst-color-on-background);\n}\n\n.pst-color-surface {\n color: var(--pst-color-surface);\n}\n\n.pst-color-on-surface {\n color: var(--pst-color-on-surface);\n}\n\n/*******************************************************************************\n * Color and variables\n *\n * This is a list of the semantic color names from sphinx-design (we only\n * need to override variables that sphinx-design has actually defined).\n * https://github.com/executablebooks/sphinx-design/blob/9226a12a/style/_colors.scss#L31-L43\n */\n/**\n * Here we create some extra --pst-color-* variables and use\n * them to override the value of the corresponding sphinx-design variables.\n * This is easier than re-writing the sphinx-design rules. Even easier would be\n * directly assigning our values to the --sd-color-* variables, but then our\n * downstream users couldn't override *our* colors and have it affect buttons\n * and badges.\n *\n * First, define the extra keys needed to cover the full range of semantic\n * color names used in sphinx-design, then merge them with the names we\n * already define for our own needs.\n * see https://sphinx-design.readthedocs.io/en/latest/css_variables.html\n */\nhtml[data-theme=light] {\n --pst-color-primary: rgb(10, 125, 145);\n --pst-color-primary-text: #fff;\n --pst-color-primary-highlight: #086b7c;\n --sd-color-primary: var(--pst-color-primary);\n --sd-color-primary-text: var(--pst-color-primary-text);\n --sd-color-primary-highlight: var(--pst-color-primary-highlight);\n --pst-color-primary-highlight-text: #fff;\n --sd-color-primary-bg: #d0ecf1;\n --sd-color-primary-bg-text: #14181e;\n --pst-color-secondary: rgb(128, 69, 229);\n --pst-color-secondary-text: #fff;\n --pst-color-secondary-highlight: #651ee0;\n --sd-color-secondary: var(--pst-color-secondary);\n --sd-color-secondary-text: var(--pst-color-secondary-text);\n --sd-color-secondary-highlight: var(--pst-color-secondary-highlight);\n --pst-color-secondary-highlight-text: #fff;\n --sd-color-secondary-bg: #e0c7ff;\n --sd-color-secondary-bg-text: #14181e;\n --pst-color-success: #00843f;\n --pst-color-success-text: #fff;\n --pst-color-success-highlight: #007036;\n --sd-color-success: var(--pst-color-success);\n --sd-color-success-text: var(--pst-color-success-text);\n --sd-color-success-highlight: var(--pst-color-success-highlight);\n --pst-color-success-highlight-text: #fff;\n --sd-color-success-bg: #d6ece1;\n --sd-color-success-bg-text: #14181e;\n --pst-color-info: #276be9;\n --pst-color-info-text: #fff;\n --pst-color-info-highlight: #1457d3;\n --sd-color-info: var(--pst-color-info);\n --sd-color-info-text: var(--pst-color-info-text);\n --sd-color-info-highlight: var(--pst-color-info-highlight);\n --pst-color-info-highlight-text: #fff;\n --sd-color-info-bg: #dce7fc;\n --sd-color-info-bg-text: #14181e;\n --pst-color-warning: #f66a0a;\n --pst-color-warning-text: #14181e;\n --pst-color-warning-highlight: #d25a07;\n --sd-color-warning: var(--pst-color-warning);\n --sd-color-warning-text: var(--pst-color-warning-text);\n --sd-color-warning-highlight: var(--pst-color-warning-highlight);\n --pst-color-warning-highlight-text: #14181e;\n --sd-color-warning-bg: #f8e3d0;\n --sd-color-warning-bg-text: #14181e;\n --pst-color-danger: #d72d47;\n --pst-color-danger-text: #fff;\n --pst-color-danger-highlight: #bb2239;\n --sd-color-danger: var(--pst-color-danger);\n --sd-color-danger-text: var(--pst-color-danger-text);\n --sd-color-danger-highlight: var(--pst-color-danger-highlight);\n --pst-color-danger-highlight-text: #fff;\n --sd-color-danger-bg: #f9e1e4;\n --sd-color-danger-bg-text: #14181e;\n --pst-color-light: #f3f4f5;\n --pst-color-light-text: #14181e;\n --pst-color-light-highlight: #c9cfd6;\n --sd-color-light: var(--pst-color-light);\n --sd-color-light-text: var(--pst-color-light-text);\n --sd-color-light-highlight: var(--pst-color-light-highlight);\n --pst-color-light-highlight-text: #14181e;\n --sd-color-light-bg: #f7f7f8;\n --sd-color-light-bg-text: #14181e;\n --pst-color-muted: #29313d;\n --pst-color-muted-text: #fff;\n --pst-color-muted-highlight: #212936;\n --sd-color-muted: var(--pst-color-muted);\n --sd-color-muted-text: var(--pst-color-muted-text);\n --sd-color-muted-highlight: var(--pst-color-muted-highlight);\n --pst-color-muted-highlight-text: #fff;\n --sd-color-muted-bg: #5a6c86;\n --sd-color-muted-bg-text: #fff;\n --pst-color-dark: #222832;\n --pst-color-dark-text: #fff;\n --pst-color-dark-highlight: #1b222c;\n --sd-color-dark: var(--pst-color-dark);\n --sd-color-dark-text: var(--pst-color-dark-text);\n --sd-color-dark-highlight: var(--pst-color-dark-highlight);\n --pst-color-dark-highlight-text: #fff;\n --pst-color-black: #14181e;\n --pst-color-black-text: #fff;\n --pst-color-black-highlight: #10141a;\n --sd-color-black: var(--pst-color-black);\n --sd-color-black-text: var(--pst-color-black-text);\n --sd-color-black-highlight: var(--pst-color-black-highlight);\n --pst-color-black-highlight-text: #fff;\n --pst-color-white: #fff;\n --pst-color-white-text: #14181e;\n --pst-color-white-highlight: #dbd7d7;\n --sd-color-white: var(--pst-color-white);\n --sd-color-white-text: var(--pst-color-white-text);\n --sd-color-white-highlight: var(--pst-color-white-highlight);\n --pst-color-white-highlight-text: #14181e;\n}\n\nhtml[data-theme=dark] {\n --pst-color-primary: rgb(63, 177, 197);\n --pst-color-primary-text: #14181e;\n --pst-color-primary-highlight: #319aac;\n --sd-color-primary: var(--pst-color-primary);\n --sd-color-primary-text: var(--pst-color-primary-text);\n --sd-color-primary-highlight: var(--pst-color-primary-highlight);\n --pst-color-primary-highlight-text: #14181e;\n --sd-color-primary-bg: #042c33;\n --sd-color-primary-bg-text: #fff;\n --pst-color-secondary: rgb(156, 95, 253);\n --pst-color-secondary-text: #14181e;\n --pst-color-secondary-highlight: #7c2bfc;\n --sd-color-secondary: var(--pst-color-secondary);\n --sd-color-secondary-text: var(--pst-color-secondary-text);\n --sd-color-secondary-highlight: var(--pst-color-secondary-highlight);\n --pst-color-secondary-highlight-text: #fff;\n --sd-color-secondary-bg: #341a61;\n --sd-color-secondary-bg-text: #fff;\n --pst-color-success: #5fb488;\n --pst-color-success-text: #14181e;\n --pst-color-success-highlight: #47a373;\n --sd-color-success: var(--pst-color-success);\n --sd-color-success-text: var(--pst-color-success-text);\n --sd-color-success-highlight: var(--pst-color-success-highlight);\n --pst-color-success-highlight-text: #14181e;\n --sd-color-success-bg: #002f17;\n --sd-color-success-bg-text: #fff;\n --pst-color-info: #79a3f2;\n --pst-color-info-text: #14181e;\n --pst-color-info-highlight: #4681ee;\n --sd-color-info: var(--pst-color-info);\n --sd-color-info-text: var(--pst-color-info-text);\n --sd-color-info-highlight: var(--pst-color-info-highlight);\n --pst-color-info-highlight-text: #14181e;\n --sd-color-info-bg: #06245d;\n --sd-color-info-bg-text: #fff;\n --pst-color-warning: #ff9245;\n --pst-color-warning-text: #14181e;\n --pst-color-warning-highlight: #ff7614;\n --sd-color-warning: var(--pst-color-warning);\n --sd-color-warning-text: var(--pst-color-warning-text);\n --sd-color-warning-highlight: var(--pst-color-warning-highlight);\n --pst-color-warning-highlight-text: #14181e;\n --sd-color-warning-bg: #652a02;\n --sd-color-warning-bg-text: #fff;\n --pst-color-danger: #e78894;\n --pst-color-danger-text: #14181e;\n --pst-color-danger-highlight: #df596a;\n --sd-color-danger: var(--pst-color-danger);\n --sd-color-danger-text: var(--pst-color-danger-text);\n --sd-color-danger-highlight: var(--pst-color-danger-highlight);\n --pst-color-danger-highlight-text: #14181e;\n --sd-color-danger-bg: #4e111b;\n --sd-color-danger-bg-text: #fff;\n --pst-color-light: #f3f4f5;\n --pst-color-light-text: #14181e;\n --pst-color-light-highlight: #c9cfd6;\n --sd-color-light: var(--pst-color-light);\n --sd-color-light-text: var(--pst-color-light-text);\n --sd-color-light-highlight: var(--pst-color-light-highlight);\n --pst-color-light-highlight-text: #14181e;\n --sd-color-light-bg: #a3abb2;\n --sd-color-light-bg-text: #14181e;\n --pst-color-muted: #f3f4f5;\n --pst-color-muted-text: #14181e;\n --pst-color-muted-highlight: #c9cfd6;\n --sd-color-muted: var(--pst-color-muted);\n --sd-color-muted-text: var(--pst-color-muted-text);\n --sd-color-muted-highlight: var(--pst-color-muted-highlight);\n --pst-color-muted-highlight-text: #14181e;\n --sd-color-muted-bg: #1d222b;\n --sd-color-muted-bg-text: #fff;\n --pst-color-dark: #222832;\n --pst-color-dark-text: #fff;\n --pst-color-dark-highlight: #1b222c;\n --sd-color-dark: var(--pst-color-dark);\n --sd-color-dark-text: var(--pst-color-dark-text);\n --sd-color-dark-highlight: var(--pst-color-dark-highlight);\n --pst-color-dark-highlight-text: #fff;\n --pst-color-black: #14181e;\n --pst-color-black-text: #fff;\n --pst-color-black-highlight: #10141a;\n --sd-color-black: var(--pst-color-black);\n --sd-color-black-text: var(--pst-color-black-text);\n --sd-color-black-highlight: var(--pst-color-black-highlight);\n --pst-color-black-highlight-text: #fff;\n --pst-color-white: #fff;\n --pst-color-white-text: #14181e;\n --pst-color-white-highlight: #dbd7d7;\n --sd-color-white: var(--pst-color-white);\n --sd-color-white-text: var(--pst-color-white-text);\n --sd-color-white-highlight: var(--pst-color-white-highlight);\n --pst-color-white-highlight-text: #14181e;\n}\n\nhtml[data-theme=light] {\n --sd-color-card-border: var(--pst-color-border);\n}\n\nhtml[data-theme=dark] {\n --sd-color-card-border: var(--pst-color-border);\n}\n\n/*******************************************************************************\n * shadows\n */\nhtml[data-theme=light] .sd-shadow-xs,\nhtml[data-theme=light] .sd-shadow-sm,\nhtml[data-theme=light] .sd-shadow-md,\nhtml[data-theme=light] .sd-shadow-lg {\n box-shadow: 0 0.2rem 0.5rem var(--pst-color-shadow), 0 0 0.0625rem var(--pst-color-shadow) !important;\n}\n\n/*******************************************************************************\n * cards\n */\n.bd-content .sd-card {\n border: 1px solid var(--pst-color-border);\n}\n.bd-content .sd-card .sd-card-header {\n background-color: var(--pst-color-on-background);\n border-bottom: 1px solid var(--pst-color-border);\n}\n.bd-content .sd-card .sd-card-footer {\n background-color: var(--pst-color-on-background);\n border-top: 1px solid var(--pst-color-border);\n}\n.bd-content .sd-card .sd-card-body {\n background-color: var(--pst-color-on-background);\n}\n.bd-content .sd-card .sd-stretched-link:focus-visible {\n outline: none;\n}\n.bd-content .sd-card .sd-stretched-link:focus-visible::after {\n outline: var(--pst-color-accent) solid 0.1875rem;\n border-radius: 0.25rem;\n}\n.bd-content .sd-card.sd-card-hover:hover {\n border-color: var(--pst-color-link-hover);\n}\n\n/*******************************************************************************\n * tabs\n */\n.bd-content .sd-tab-set > input:checked + label {\n border-style: solid solid none;\n border-color: var(--pst-color-primary) var(--pst-color-primary) transparent;\n border-width: 0.125rem 0.125rem 0;\n border-radius: 0.125rem 0.125rem 0 0;\n background-color: var(--pst-color-on-background);\n transform: translateY(0.125rem);\n color: var(--pst-color-primary);\n}\n.bd-content .sd-tab-set > input:focus-visible + label {\n border: 0.125rem solid var(--pst-color-accent);\n border-radius: 0.125rem;\n background-color: var(--pst-color-accent-bg);\n color: var(--pst-color-on-surface);\n}\n.bd-content .sd-tab-set > input:not(:checked, :focus-visible) + label:hover {\n border-color: transparent;\n color: var(--pst-color-secondary);\n text-decoration-line: underline;\n text-decoration-thickness: max(3px, .1875rem, .12em);\n}\n.bd-content .sd-tab-set > label {\n color: var(--pst-color-on-surface);\n border: 0.125rem solid transparent;\n border-radius: 0.125rem 0.125rem 0 0;\n background-color: var(--pst-color-surface);\n padding: 0 0.75em;\n margin-inline-end: 0.25rem;\n line-height: 1.95;\n}\nhtml[data-theme=dark] .bd-content .sd-tab-set > label {\n background-color: var(--pst-color-on-background);\n}\n.bd-content .sd-tab-set .sd-tab-content {\n border: 0.125rem solid var(--pst-color-primary);\n border-radius: 0.1875rem;\n box-shadow: unset;\n padding: 0.625rem;\n background-color: var(--pst-color-on-background);\n}\n\n/*******************************************************************************\n* Dropdowns\n*/\ndetails.sd-dropdown {\n border: 0 !important;\n box-shadow: 0 0.2rem 0.5rem var(--pst-color-shadow), 0 0 0.0625rem var(--pst-color-shadow) !important;\n}\ndetails.sd-dropdown summary.sd-card-header {\n border: 0 !important;\n display: flex;\n align-items: center;\n position: relative;\n font-weight: 600;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n --pst-sd-dropdown-color: var(--pst-gray-500);\n --pst-sd-dropdown-bg-color: var(--pst-color-surface);\n background-color: var(--pst-sd-dropdown-bg-color) !important;\n border-left: 0.2rem solid var(--pst-sd-dropdown-color) !important;\n}\ndetails.sd-dropdown summary.sd-card-header + div.sd-summary-content {\n border: 0;\n --pst-sd-dropdown-color: var(--sd-color-card-border);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-primary {\n --pst-sd-dropdown-color: var(--sd-color-primary);\n --pst-sd-dropdown-bg-color: var(--sd-color-primary-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-primary + div.sd-summary-content {\n --pst-sd-dropdown-color: var(--sd-color-primary);\n --pst-sd-dropdown-bg-color: var(--sd-color-primary-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-text-primary {\n color: var(--sd-color-primary-bg-text) !important;\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-secondary {\n --pst-sd-dropdown-color: var(--sd-color-secondary);\n --pst-sd-dropdown-bg-color: var(--sd-color-secondary-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-secondary + div.sd-summary-content {\n --pst-sd-dropdown-color: var(--sd-color-secondary);\n --pst-sd-dropdown-bg-color: var(--sd-color-secondary-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-text-secondary {\n color: var(--sd-color-secondary-bg-text) !important;\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-success {\n --pst-sd-dropdown-color: var(--sd-color-success);\n --pst-sd-dropdown-bg-color: var(--sd-color-success-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-success + div.sd-summary-content {\n --pst-sd-dropdown-color: var(--sd-color-success);\n --pst-sd-dropdown-bg-color: var(--sd-color-success-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-text-success {\n color: var(--sd-color-success-bg-text) !important;\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-info {\n --pst-sd-dropdown-color: var(--sd-color-info);\n --pst-sd-dropdown-bg-color: var(--sd-color-info-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-info + div.sd-summary-content {\n --pst-sd-dropdown-color: var(--sd-color-info);\n --pst-sd-dropdown-bg-color: var(--sd-color-info-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-text-info {\n color: var(--sd-color-info-bg-text) !important;\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-warning {\n --pst-sd-dropdown-color: var(--sd-color-warning);\n --pst-sd-dropdown-bg-color: var(--sd-color-warning-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-warning + div.sd-summary-content {\n --pst-sd-dropdown-color: var(--sd-color-warning);\n --pst-sd-dropdown-bg-color: var(--sd-color-warning-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-text-warning {\n color: var(--sd-color-warning-bg-text) !important;\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-danger {\n --pst-sd-dropdown-color: var(--sd-color-danger);\n --pst-sd-dropdown-bg-color: var(--sd-color-danger-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-danger + div.sd-summary-content {\n --pst-sd-dropdown-color: var(--sd-color-danger);\n --pst-sd-dropdown-bg-color: var(--sd-color-danger-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-text-danger {\n color: var(--sd-color-danger-bg-text) !important;\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-light {\n --pst-sd-dropdown-color: var(--sd-color-light);\n --pst-sd-dropdown-bg-color: var(--sd-color-light-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-light + div.sd-summary-content {\n --pst-sd-dropdown-color: var(--sd-color-light);\n --pst-sd-dropdown-bg-color: var(--sd-color-light-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-text-light {\n color: var(--sd-color-light-bg-text) !important;\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-muted {\n --pst-sd-dropdown-color: var(--sd-color-muted);\n --pst-sd-dropdown-bg-color: var(--sd-color-muted-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-muted + div.sd-summary-content {\n --pst-sd-dropdown-color: var(--sd-color-muted);\n --pst-sd-dropdown-bg-color: var(--sd-color-muted-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-text-muted {\n color: var(--sd-color-muted-bg-text) !important;\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-dark {\n --pst-sd-dropdown-color: var(--sd-color-dark);\n --pst-sd-dropdown-bg-color: var(--sd-color-dark-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-dark + div.sd-summary-content {\n --pst-sd-dropdown-color: var(--sd-color-dark);\n --pst-sd-dropdown-bg-color: var(--sd-color-dark-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-text-dark {\n color: var(--sd-color-dark-bg-text) !important;\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-black {\n --pst-sd-dropdown-color: var(--sd-color-black);\n --pst-sd-dropdown-bg-color: var(--sd-color-black-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-black + div.sd-summary-content {\n --pst-sd-dropdown-color: var(--sd-color-black);\n --pst-sd-dropdown-bg-color: var(--sd-color-black-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-text-black {\n color: var(--sd-color-black-bg-text) !important;\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-white {\n --pst-sd-dropdown-color: var(--sd-color-white);\n --pst-sd-dropdown-bg-color: var(--sd-color-white-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-white + div.sd-summary-content {\n --pst-sd-dropdown-color: var(--sd-color-white);\n --pst-sd-dropdown-bg-color: var(--sd-color-white-bg);\n}\ndetails.sd-dropdown summary.sd-card-header.sd-bg-text-white {\n color: var(--sd-color-white-bg-text) !important;\n}\ndetails.sd-dropdown summary.sd-card-header::before {\n content: \"\";\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n z-index: -1;\n pointer-events: none;\n}\ndetails.sd-dropdown summary.sd-card-header + div.sd-summary-content {\n border-left: 0.2rem solid var(--pst-sd-dropdown-color) !important;\n border-bottom-left-radius: calc(0.25rem - 1px);\n background-color: var(--pst-color-on-background);\n}\ndetails.sd-dropdown summary.sd-card-header span.sd-summary-icon {\n display: inline-flex;\n align-items: center;\n color: var(--pst-sd-dropdown-color) !important;\n}\ndetails.sd-dropdown summary.sd-card-header span.sd-summary-icon svg {\n opacity: 1;\n}\ndetails.sd-dropdown summary.sd-card-header .sd-summary-up,\ndetails.sd-dropdown summary.sd-card-header .sd-summary-down {\n top: 0.7rem;\n}\ndetails.sd-dropdown summary.sd-card-header:hover {\n filter: brightness(0.9);\n}\nhtml[data-theme=dark] details.sd-dropdown summary.sd-card-header:hover {\n filter: brightness(1.1);\n}\ndetails.sd-dropdown summary.sd-card-header:focus:focus-visible {\n outline: var(--pst-color-accent) solid 0.1875rem;\n outline-offset: 0.125rem;\n border-radius: 0.1875rem;\n}\ndetails.sd-dropdown[open] summary.sd-card-header:focus:focus-visible {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n/*******************************************************************************\n* Buttons (which in Sphinx Design are actually links that look like buttons)\n* ref: https://sphinx-design.readthedocs.io/en/pydata-theme/badges_buttons.html#buttons\n*/\nhtml .sd-btn {\n min-width: 2.25rem;\n padding: 0.3125rem 0.75rem 0.4375rem;\n}\nhtml .sd-btn:hover {\n text-decoration: underline;\n text-decoration-thickness: max(1px, .0625rem);\n text-underline-offset: 0.1578em;\n text-decoration-thickness: max(3px, .1875rem, .12em);\n text-decoration-skip-ink: none;\n color: var(--pst-color-link-hover);\n text-decoration-thickness: 1px;\n}\nhtml .sd-btn-primary:hover {\n color: var(--pst-color-primary-highlight-text) !important;\n}\nhtml .sd-btn-secondary:hover {\n color: var(--pst-color-secondary-highlight-text) !important;\n}\nhtml .sd-btn-success:hover {\n color: var(--pst-color-success-highlight-text) !important;\n}\nhtml .sd-btn-info:hover {\n color: var(--pst-color-info-highlight-text) !important;\n}\nhtml .sd-btn-warning:hover {\n color: var(--pst-color-warning-highlight-text) !important;\n}\nhtml .sd-btn-danger:hover {\n color: var(--pst-color-danger-highlight-text) !important;\n}\nhtml .sd-btn-light:hover {\n color: var(--pst-color-light-highlight-text) !important;\n}\nhtml .sd-btn-muted:hover {\n color: var(--pst-color-muted-highlight-text) !important;\n}\nhtml .sd-btn-dark:hover {\n color: var(--pst-color-dark-highlight-text) !important;\n}\nhtml .sd-btn-black:hover {\n color: var(--pst-color-black-highlight-text) !important;\n}\nhtml .sd-btn-white:hover {\n color: var(--pst-color-white-highlight-text) !important;\n}\nhtml .sd-btn-primary:focus-visible,\nhtml .sd-btn-outline-primary:focus-visible {\n outline: var(--sd-color-primary) solid 0.1875rem;\n outline-offset: 0.125rem;\n border-radius: 0.1875rem;\n background-color: var(--sd-color-primary) !important;\n border-color: var(--sd-color-primary) !important;\n}\nhtml .sd-btn-secondary:focus-visible,\nhtml .sd-btn-outline-secondary:focus-visible {\n outline: var(--sd-color-secondary) solid 0.1875rem;\n outline-offset: 0.125rem;\n border-radius: 0.1875rem;\n background-color: var(--sd-color-secondary) !important;\n border-color: var(--sd-color-secondary) !important;\n}\nhtml .sd-btn-success:focus-visible,\nhtml .sd-btn-outline-success:focus-visible {\n outline: var(--sd-color-success) solid 0.1875rem;\n outline-offset: 0.125rem;\n border-radius: 0.1875rem;\n background-color: var(--sd-color-success) !important;\n border-color: var(--sd-color-success) !important;\n}\nhtml .sd-btn-info:focus-visible,\nhtml .sd-btn-outline-info:focus-visible {\n outline: var(--sd-color-info) solid 0.1875rem;\n outline-offset: 0.125rem;\n border-radius: 0.1875rem;\n background-color: var(--sd-color-info) !important;\n border-color: var(--sd-color-info) !important;\n}\nhtml .sd-btn-warning:focus-visible,\nhtml .sd-btn-outline-warning:focus-visible {\n outline: var(--sd-color-warning) solid 0.1875rem;\n outline-offset: 0.125rem;\n border-radius: 0.1875rem;\n background-color: var(--sd-color-warning) !important;\n border-color: var(--sd-color-warning) !important;\n}\nhtml .sd-btn-danger:focus-visible,\nhtml .sd-btn-outline-danger:focus-visible {\n outline: var(--sd-color-danger) solid 0.1875rem;\n outline-offset: 0.125rem;\n border-radius: 0.1875rem;\n background-color: var(--sd-color-danger) !important;\n border-color: var(--sd-color-danger) !important;\n}\nhtml .sd-btn-light:focus-visible,\nhtml .sd-btn-outline-light:focus-visible {\n outline: var(--sd-color-light) solid 0.1875rem;\n outline-offset: 0.125rem;\n border-radius: 0.1875rem;\n background-color: var(--sd-color-light) !important;\n border-color: var(--sd-color-light) !important;\n}\nhtml .sd-btn-muted:focus-visible,\nhtml .sd-btn-outline-muted:focus-visible {\n outline: var(--sd-color-muted) solid 0.1875rem;\n outline-offset: 0.125rem;\n border-radius: 0.1875rem;\n background-color: var(--sd-color-muted) !important;\n border-color: var(--sd-color-muted) !important;\n}\nhtml .sd-btn-dark:focus-visible,\nhtml .sd-btn-outline-dark:focus-visible {\n outline: var(--sd-color-dark) solid 0.1875rem;\n outline-offset: 0.125rem;\n border-radius: 0.1875rem;\n background-color: var(--sd-color-dark) !important;\n border-color: var(--sd-color-dark) !important;\n}\nhtml .sd-btn-black:focus-visible,\nhtml .sd-btn-outline-black:focus-visible {\n outline: var(--sd-color-black) solid 0.1875rem;\n outline-offset: 0.125rem;\n border-radius: 0.1875rem;\n background-color: var(--sd-color-black) !important;\n border-color: var(--sd-color-black) !important;\n}\nhtml .sd-btn-white:focus-visible,\nhtml .sd-btn-outline-white:focus-visible {\n outline: var(--sd-color-white) solid 0.1875rem;\n outline-offset: 0.125rem;\n border-radius: 0.1875rem;\n background-color: var(--sd-color-white) !important;\n border-color: var(--sd-color-white) !important;\n}\n\n/**\n * Sphinx togglebutton\n *\n * The rules in this style sheet are meant to tweak the\n * [sphinx-togglebutton](https://sphinx-togglebutton.readthedocs.io/en/latest/index.html)\n * extension so that it matches the look and feel of this theme.\n */\n.bd-content .dropdown.admonition.toggle .admonition-title:hover .tb-icon {\n opacity: 1;\n scale: 1.1;\n}\n.bd-content .dropdown.admonition.toggle .admonition-title .tb-icon {\n opacity: 0.6;\n}\n.bd-content .dropdown.admonition.toggle .admonition-title:hover {\n filter: brightness(0.9);\n}\nhtml[data-theme=dark] .bd-content .dropdown.admonition.toggle .admonition-title:hover {\n filter: brightness(1.1);\n}\n.bd-content .dropdown.admonition.toggle .admonition-title:hover {\n box-shadow: none;\n}\n.bd-content .dropdown.admonition.toggle button.toggle-button {\n color: inherit;\n}\n.bd-content .dropdown.admonition.toggle button.toggle-button.toggle-button-hidden .toggle-chevron-right {\n transform: rotate(90deg);\n transition: none;\n}\n.bd-content .dropdown.admonition.toggle button.toggle-button .toggle-chevron-right {\n transform: rotate(-90deg);\n transition: none;\n}\n.bd-content .dropdown.admonition.toggle:has(:focus-visible) {\n /* Override Sphinx Toggle Button. Make the overflow visible, otherwise the\n focus ring is hidden. */\n overflow: visible;\n /*\n Why not just do the following?\n\n ```\n .admonition-title {\n outline: $focus-ring-outline;\n }\n ```\n\n Why use ::before? If we put the focus ring on the ::before pseudo-element,\n we can reposition the focus ring by repositioning the pseudo-element.\n\n Why reposition? The left edge of the admonition title box does not align\n with the left edge of the overall admonition box. There is a left border\n that belongs to the overall box. The border is outside of the admonition\n title, which means it is also outside of a focus ring around the title. We\n can make the focus ring bigger, with `outline-offset`, but this will\n result in a ring that looks off-centered. So we have to pull the ring left\n and stretch it right. That's what the pseudo-element allows us to do.\n\n Note: we do not have to do this for collapsible admonitions made with\n Sphinx Design (as opposed to sphinx-togglebutton).\n */\n}\n.bd-content .dropdown.admonition.toggle:has(:focus-visible) .admonition-title::before {\n content: \"\";\n left: -0.2rem;\n width: calc(100% + 0.2rem);\n height: 100%;\n outline: var(--pst-color-accent) solid 0.1875rem;\n outline-offset: 0.125rem;\n border-radius: 0.1875rem;\n}\n.bd-content .dropdown.admonition.toggle:has(:focus-visible):not(.toggle-hidden) .admonition-title::before {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n.bd-content details.toggle-details summary {\n border-left: 3px solid var(--pst-color-primary);\n}\n.bd-content details.toggle-details summary .toggle-chevron-right {\n transform: rotate(90deg);\n transition: none;\n}\n.bd-content details.toggle-details summary:hover .tb-icon {\n opacity: 1;\n scale: 1.1;\n}\n.bd-content details.toggle-details summary .tb-icon {\n opacity: 0.6;\n}\n.bd-content details.toggle-details summary:hover {\n filter: brightness(0.9);\n}\nhtml[data-theme=dark] .bd-content details.toggle-details summary:hover {\n filter: brightness(1.1);\n}\n.bd-content details.toggle-details summary:hover {\n box-shadow: none;\n}\n.bd-content details.toggle-details summary:focus-visible {\n outline-offset: 0.125rem;\n}\n.bd-content details.toggle-details[open] .toggle-chevron-right {\n transform: rotate(-90deg);\n transition: none;\n}\n.bd-content details.toggle-details[open] :focus-visible {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n/**\n * Styles for various Sphinx execution libraries to display pre-executed notebooks.\n * For now, where these define output sections, we simply revert their background\n * to be a \"light theme\" background. This ensures that inputs/outputs behave similarly,\n * because the CSS is often controlled by each package.\n * In the future, we might add dark theme support for specific packages.\n */\n/*******************************************************************************\n * nbsphinx\n */\nhtml div.rendered_html,\nhtml .jp-RenderedHTMLCommon {\n margin: 0.1875rem;\n}\nhtml div.rendered_html table,\nhtml .jp-RenderedHTMLCommon table {\n table-layout: auto;\n}\n\n.bd-content .nboutput .output_area.rendered_html table.dataframe,\n.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe {\n color: var(--pst-color-table);\n border: 1px solid var(--pst-color-table-outer-border);\n}\n.bd-content .nboutput .output_area.rendered_html table.dataframe th ~ th,\n.bd-content .nboutput .output_area.rendered_html table.dataframe th ~ td,\n.bd-content .nboutput .output_area.rendered_html table.dataframe td ~ th,\n.bd-content .nboutput .output_area.rendered_html table.dataframe td ~ td,\n.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe th ~ th,\n.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe th ~ td,\n.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe td ~ th,\n.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe td ~ td {\n border-left: 1px solid var(--pst-color-table-inner-border);\n}\n.bd-content .nboutput .output_area.rendered_html table.dataframe thead tr,\n.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe thead tr {\n background-color: var(--pst-color-table-heading-bg);\n border-bottom: 2px solid var(--pst-color-primary);\n}\n.bd-content .nboutput .output_area.rendered_html table.dataframe tbody tr:nth-child(odd),\n.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe tbody tr:nth-child(odd) {\n background-color: var(--pst-color-table-row-zebra-low-bg);\n}\n.bd-content .nboutput .output_area.rendered_html table.dataframe tbody tr:nth-child(even),\n.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe tbody tr:nth-child(even) {\n background-color: var(--pst-color-table-row-zebra-high-bg);\n}\n.bd-content .nboutput .output_area.rendered_html table.dataframe tbody tr:hover,\n.bd-content .nboutput .output_area .jp-RenderedHTMLCommon table.dataframe tbody tr:hover {\n background-color: var(--pst-color-table-row-hover-bg);\n}\nhtml[data-theme=dark] .bd-content .nboutput .output_area.rendered_html:not(:has(table.dataframe)),\nhtml[data-theme=dark] .bd-content .nboutput .output_area .widget-subarea {\n color: var(--pst-color-on-background);\n background-color: var(--pst-color-text-base);\n border-radius: 0.25rem;\n padding: 0.5rem;\n}\nhtml[data-theme=dark] .bd-content .nboutput .output_area.stderr {\n background-color: var(--pst-color-danger);\n}\n\ndiv.nblast.container {\n margin-bottom: 1rem;\n}\n\nhtml[data-theme=light] .nbinput.container .prompt pre {\n color: #005b82;\n}\nhtml[data-theme=dark] .nbinput.container .prompt pre {\n color: #00e0e0;\n}\n\nhtml[data-theme=light] .nboutput.container .prompt pre {\n color: #a12236;\n}\nhtml[data-theme=dark] .nboutput.container .prompt pre {\n color: #ffa07a;\n}\n\n/*******************************************************************************\n * myst NB\n */\ndiv.cell_output .output {\n max-width: 100%;\n overflow-x: auto;\n}\n\n.bd-content div.cell_output table.dataframe {\n color: var(--pst-color-table);\n border: 1px solid var(--pst-color-table-outer-border);\n}\n.bd-content div.cell_output table.dataframe th ~ th,\n.bd-content div.cell_output table.dataframe th ~ td,\n.bd-content div.cell_output table.dataframe td ~ th,\n.bd-content div.cell_output table.dataframe td ~ td {\n border-left: 1px solid var(--pst-color-table-inner-border);\n}\n.bd-content div.cell_output table.dataframe thead tr {\n background-color: var(--pst-color-table-heading-bg);\n border-bottom: 2px solid var(--pst-color-primary);\n}\n.bd-content div.cell_output table.dataframe tbody tr:nth-child(odd) {\n background-color: var(--pst-color-table-row-zebra-low-bg);\n}\n.bd-content div.cell_output table.dataframe tbody tr:nth-child(even) {\n background-color: var(--pst-color-table-row-zebra-high-bg);\n}\n.bd-content div.cell_output table.dataframe tbody tr:hover {\n background-color: var(--pst-color-table-row-hover-bg);\n}\nhtml[data-theme=dark] .bd-content div.cell_output img,\nhtml[data-theme=dark] .bd-content div.cell_output .text_html:not(:has(table.dataframe)),\nhtml[data-theme=dark] .bd-content div.cell_output .widget-subarea {\n color: var(--pst-color-on-background);\n background-color: var(--pst-color-text-base);\n border-radius: 0.25rem;\n padding: 0.5rem;\n}\n\n.bd-content div.cell_input {\n display: flex;\n flex-direction: column;\n justify-content: stretch;\n}\n.bd-content div.cell_input,\n.bd-content div.output {\n border-radius: 0.25rem;\n}\n.bd-content div.output table {\n table-layout: auto;\n}\n\n/**\n * style for the various mapping libs based on leaflet (folium, geemap, ipyleaflet)\n * mainly ensure the good display of the maps in both themes and avoid the customization\n * of the tiles\n */\n/**\n * avoid border override from pydata-sphinx-theme\n * minimal selctor to get the priority\n */\nhtml[data-theme=dark] .bd-content img.leaflet-tile.leaflet-tile-loaded {\n border-radius: 0;\n padding: 0;\n}\n\n/**\n * /search.html page special-cases\n */\n.bd-search-container {\n /*******************************************\n * Search results\n */\n}\n.bd-search-container div#search-results > h2, .bd-search-container div#search-results > .h2 {\n font-size: var(--pst-font-size-icon);\n margin-top: 1rem;\n}\n.bd-search-container div#search-results p.search-summary {\n color: var(--pst-color-text-muted);\n}\n.bd-search-container ul.search {\n margin: 0;\n list-style: none;\n}\n.bd-search-container ul.search li {\n background-image: none;\n padding: 1rem 0;\n margin: 1rem 0;\n border-top: 1px solid var(--pst-color-text-muted);\n}\n.bd-search-container ul.search li > a {\n font-size: 1.2em;\n}\n.bd-search-container ul.search li div.context,\n.bd-search-container ul.search li p.context {\n color: var(--pst-color-text-base);\n margin: 0.5em 0 0;\n}\n.bd-search-container ul.search li div.context a::before,\n.bd-search-container ul.search li p.context a::before {\n content: \"#\";\n padding-right: 0.2em;\n color: var(--pst-color-text-muted);\n}","@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n\n --#{$prefix}body-color: #{$body-color};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n // scss-docs-end root-body-variables\n\n --#{$prefix}heading-color: #{$headings-color};\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-color: #{$mark-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-xxl: #{$border-radius-xxl};\n --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n // Focus styles\n // scss-docs-start root-focus-variables\n --#{$prefix}focus-ring-width: #{$focus-ring-width};\n --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};\n --#{$prefix}focus-ring-color: #{$focus-ring-color};\n // scss-docs-end root-focus-variables\n\n // scss-docs-start root-form-validation-variables\n --#{$prefix}form-valid-color: #{$form-valid-color};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color};\n --#{$prefix}form-invalid-color: #{$form-invalid-color};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};\n // scss-docs-end root-form-validation-variables\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n color-scheme: dark;\n\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n @each $color, $value in $theme-colors-text-dark {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle-dark {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle-dark {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n --#{$prefix}highlight-color: #{$mark-color-dark};\n --#{$prefix}highlight-bg: #{$mark-bg-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n\n --#{$prefix}form-valid-color: #{$form-valid-color-dark};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};\n --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable scss/dimension-no-non-numeric-values\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query () {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query () {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \" \" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n } @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \" \" + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n } @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \" \" + $value;\n } @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \" calc(\" + $min-width + if($value < 0, \" - \", \" + \") + $variable-width + \")\";\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluid-val: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluid-val {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule () {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule () {\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n color: var(--#{$prefix}highlight-color);\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `<td>` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`<button>` buttons\n//\n// Details at https://github.com/twbs/bootstrap/pull/30562\n[role=\"button\"] {\n cursor: pointer;\n}\n\nselect {\n // Remove the inheritance of word-wrap in Safari.\n // See https://github.com/twbs/bootstrap/issues/24990\n word-wrap: normal;\n\n // Undo the opacity change from Chrome\n &:disabled {\n opacity: 1;\n }\n}\n\n// Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n// See https://stackoverflow.com/a/54997118\n\n[list]:not([type=\"date\"]):not([type=\"datetime-local\"]):not([type=\"month\"]):not([type=\"week\"]):not([type=\"time\"])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\n// 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n\n @if $enable-button-pointers {\n &:not(:disabled) {\n cursor: pointer; // 3\n }\n }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\n// 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\ntextarea {\n resize: vertical; // 1\n}\n\n// 1. Browsers set a default `min-width: min-content;` on fieldsets,\n// unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n// So we reset that to ensure fieldsets behave more like a standard block element.\n// See https://github.com/twbs/bootstrap/issues/12359\n// and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n// 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\nfieldset {\n min-width: 0; // 1\n padding: 0; // 2\n margin: 0; // 2\n border: 0; // 2\n}\n\n// 1. By using `float: left`, the legend will behave like a block element.\n// This way the border of a fieldset wraps around the legend if present.\n// 2. Fix wrapping bug.\n// See https://github.com/twbs/bootstrap/issues/29712\n\nlegend {\n float: left; // 1\n width: 100%;\n padding: 0;\n margin-bottom: $legend-margin-bottom;\n @include font-size($legend-font-size);\n font-weight: $legend-font-weight;\n line-height: inherit;\n\n + * {\n clear: left; // 2\n }\n}\n\n// Fix height of inputs with a type of datetime-local, date, month, week, or time\n// See https://github.com/twbs/bootstrap/issues/18842\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n// 1. This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n// 2. Correct the outline style in Safari.\n\n[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n outline-offset: -2px; // 2\n}\n\n// 1. A few input types should stay LTR\n// See https://rtlstyling.com/posts/rtl-styling#form-inputs\n// 2. RTL only output\n// See https://rtlcss.com/learn/usage-guide/control-directives/#raw\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n direction: ltr;\n}\n*/\n\n// Remove the inner padding in Chrome and Safari on macOS.\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n// Remove padding around color pickers in webkit browsers\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n\n// 1. Inherit font family and line height for file input buttons\n// 2. Correct the inability to style clickable types in iOS and Safari.\n\n::file-selector-button {\n font: inherit; // 1\n -webkit-appearance: button; // 2\n}\n\n// Correct element displays\n\noutput {\n display: inline-block;\n}\n\n// Remove border from iframe\n\niframe {\n border: 0;\n}\n\n// Summary\n//\n// 1. Add the correct display in all browsers\n\nsummary {\n display: list-item; // 1\n cursor: pointer;\n}\n\n\n// Progress\n//\n// Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\nprogress {\n vertical-align: baseline;\n}\n\n\n// Hidden attribute\n//\n// Always hide an element with the `hidden` HTML attribute.\n\n[hidden] {\n display: none !important;\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-text-variables\n$primary-text-emphasis: shade-color($primary, 60%) !default;\n$secondary-text-emphasis: shade-color($secondary, 60%) !default;\n$success-text-emphasis: shade-color($success, 60%) !default;\n$info-text-emphasis: shade-color($info, 60%) !default;\n$warning-text-emphasis: shade-color($warning, 60%) !default;\n$danger-text-emphasis: shade-color($danger, 60%) !default;\n$light-text-emphasis: $gray-700 !default;\n$dark-text-emphasis: $gray-700 !default;\n// scss-docs-end theme-text-variables\n\n// scss-docs-start theme-bg-subtle-variables\n$primary-bg-subtle: tint-color($primary, 80%) !default;\n$secondary-bg-subtle: tint-color($secondary, 80%) !default;\n$success-bg-subtle: tint-color($success, 80%) !default;\n$info-bg-subtle: tint-color($info, 80%) !default;\n$warning-bg-subtle: tint-color($warning, 80%) !default;\n$danger-bg-subtle: tint-color($danger, 80%) !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n// scss-docs-end theme-bg-subtle-variables\n\n// scss-docs-start theme-border-subtle-variables\n$primary-border-subtle: tint-color($primary, 60%) !default;\n$secondary-border-subtle: tint-color($secondary, 60%) !default;\n$success-border-subtle: tint-color($success, 60%) !default;\n$info-border-subtle: tint-color($info, 60%) !default;\n$warning-border-subtle: tint-color($warning, 60%) !default;\n$danger-border-subtle: tint-color($danger, 60%) !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n// scss-docs-end theme-border-subtle-variables\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$body-emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap: .375rem !default;\n$icon-link-underline-offset: .25em !default;\n$icon-link-icon-size: 1em !default;\n$icon-link-icon-transition: .2s ease-in-out transform !default;\n$icon-link-icon-transform: translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-xxl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n// fusv-disable\n$border-radius-2xl: $border-radius-xxl !default; // Deprecated in v5.3.0\n// fusv-enable\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start focus-ring-variables\n$focus-ring-width: .25rem !default;\n$focus-ring-opacity: .25 !default;\n$focus-ring-color: rgba($primary, $focus-ring-opacity) !default;\n$focus-ring-blur: 0 !default;\n$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;\n// scss-docs-end focus-ring-variables\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n// fusv-disable\n$text-muted: var(--#{$prefix}secondary-color) !default; // Deprecated in 5.3.0\n// fusv-enable\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n// scss-docs-start vr-variables\n$vr-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end vr-variables\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-color: $body-color !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}emphasis-color) !default;\n$table-bg: var(--#{$prefix}body-bg) !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-hover-bg-factor) !default;\n\n$table-border-factor: .2 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: var(--#{$prefix}secondary-color) !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: $focus-ring-width !default;\n$input-btn-focus-color-opacity: $focus-ring-opacity !default;\n$input-btn-focus-color: $focus-ring-color !default;\n$input-btn-focus-blur: $focus-ring-blur !default;\n$input-btn-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-color: var(--#{$prefix}body-color) !default;\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n$btn-link-focus-shadow-rgb: to-rgb(mix(color-contrast($link-color), $link-color, 15%)) !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: var(--#{$prefix}border-radius) !default;\n$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}body-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$input-border-radius: var(--#{$prefix}border-radius) !default;\n$input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$input-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc(#{$input-border-width} * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-checked-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/></svg>\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$form-check-input-checked-color}'/></svg>\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-indeterminate-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-focus-color}'/></svg>\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}secondary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.5em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color: $form-feedback-valid-color !default;\n$form-valid-border-color: $form-feedback-valid-color !default;\n$form-invalid-color: $form-feedback-invalid-color !default;\n$form-invalid-border-color: $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}form-valid-color),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-valid-border-color),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}form-invalid-color),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-invalid-border-color),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n$nav-link-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-underline-gap: 1rem !default;\n$nav-underline-border-width: .125rem !default;\n$nav-underline-link-active-color: var(--#{$prefix}emphasis-color) !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-icon-color: rgba($body-color, .75) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-icon-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-icon-color: $navbar-dark-color !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-icon-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: var(--#{$prefix}border-radius) !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: var(--#{$prefix}tertiary-color) !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $focus-ring-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$pagination-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default;\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text-emphasis) !default;\n\n// fusv-disable\n$accordion-button-focus-border-color: $input-focus-border-color !default; // Deprecated in v5.3.3\n// fusv-enable\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text-emphasis !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-color}' stroke-linecap='round' stroke-linejoin='round'><path d='M2 5L8 11L14 5'/></svg>\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-active-color}' stroke-linecap='round' stroke-linejoin='round'><path d='M2 5L8 11L14 5'/></svg>\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc(#{$popover-border-radius} - #{$popover-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: var(--#{$prefix}border-radius) !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: var(--#{$prefix}box-shadow-sm) !default;\n$modal-content-box-shadow-sm-up: var(--#{$prefix}box-shadow) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: var(--#{$prefix}border-radius) !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>\") !default;\n$btn-close-focus-shadow: $focus-ring-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n\n@import \"variables-dark\"; // TODO: can be removed safely in v6, only here to avoid breaking changes in v5.3\n","// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n $return: ();\n @each $value in $radius {\n @if type-of($value) == number {\n $return: append($return, max($value, 0));\n } @else {\n $return: append($return, $value);\n }\n }\n @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: valid-radius($radius);\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n border-top-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-end-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-right-radius: valid-radius($radius);\n border-bottom-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-bottom-right-radius: valid-radius($radius);\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-start-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-top-start-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-top-end-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-end-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-bottom-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-start-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n// scss-docs-end border-radius-mixins\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n","// Override bootstrap variables\n$spacer: 1rem;\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1400px,\n);\n$grid-breakpoints: (\n xs: 0,\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1200px,\n);\n$dropdown-link-hover-bg: var(--pst-color-surface);\n\n// --pst-color-surface can also be assigned to the dark variant because it is\n// scoped to different values depending on light/dark theme\n$dropdown-dark-link-hover-bg: var(--pst-color-surface);\n$dropdown-link-active-bg: var(--pst-color-surface);\n$dropdown-dark-link-active-bg: var(--pst-color-surface);\n$focus-ring-width: 0.1875rem; // 3px at 100% zoom (0.1875 * 16px base font = 3px)\n$focus-ring-opacity: 1;\n$focus-ring-color: var(--pst-color-accent);\n$focus-ring-blur: 0;\n$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color;\n\n// For many elements, we do not use `outline-offset`. For some we set the offset\n// equal to the focus ring width (either outwards or inwards). But for some\n// other elements (e.g., collapsible admonitions) we set it to this value.\n$focus-ring-offset: 0.125rem; // 2px at 100% zoom (0.125 * 16px base font = 2px)\n\n// outline creates the same style of focus ring, it just uses CSS outline instead of box shadow\n$focus-ring-outline: $focus-ring-color solid $focus-ring-width;\n$btn-focus-box-shadow: $focus-ring-box-shadow;\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n @include img-fluid();\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n padding: $thumbnail-padding;\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n @include border-radius($thumbnail-border-radius);\n @include box-shadow($thumbnail-box-shadow);\n\n // Keep them at most 100% wide\n @include img-fluid();\n}\n\n//\n// Figures\n//\n\n.figure {\n // Ensures the caption's text aligns with the image.\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: $spacer * .5;\n line-height: 1;\n}\n\n.figure-caption {\n @include font-size($figure-caption-font-size);\n color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: percentage(divide(1, $count));\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is an invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","//\n// Basic Bootstrap table\n//\n\n.table {\n // Reset needed for nesting tables\n --#{$prefix}table-color-type: initial;\n --#{$prefix}table-bg-type: initial;\n --#{$prefix}table-color-state: initial;\n --#{$prefix}table-bg-state: initial;\n // End of reset\n --#{$prefix}table-color: #{$table-color};\n --#{$prefix}table-bg: #{$table-bg};\n --#{$prefix}table-border-color: #{$table-border-color};\n --#{$prefix}table-accent-bg: #{$table-accent-bg};\n --#{$prefix}table-striped-color: #{$table-striped-color};\n --#{$prefix}table-striped-bg: #{$table-striped-bg};\n --#{$prefix}table-active-color: #{$table-active-color};\n --#{$prefix}table-active-bg: #{$table-active-bg};\n --#{$prefix}table-hover-color: #{$table-hover-color};\n --#{$prefix}table-hover-bg: #{$table-hover-bg};\n\n width: 100%;\n margin-bottom: $spacer;\n vertical-align: $table-cell-vertical-align;\n border-color: var(--#{$prefix}table-border-color);\n\n // Target th & td\n // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.\n // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).\n // Another advantage is that this generates less code and makes the selector less specific making it easier to override.\n // stylelint-disable-next-line selector-max-universal\n > :not(caption) > * > * {\n padding: $table-cell-padding-y $table-cell-padding-x;\n // Following the precept of cascades: https://codepen.io/miriamsuzanne/full/vYNgodb\n color: var(--#{$prefix}table-color-state, var(--#{$prefix}table-color-type, var(--#{$prefix}table-color)));\n background-color: var(--#{$prefix}table-bg);\n border-bottom-width: $table-border-width;\n box-shadow: inset 0 0 0 9999px var(--#{$prefix}table-bg-state, var(--#{$prefix}table-bg-type, var(--#{$prefix}table-accent-bg)));\n }\n\n > tbody {\n vertical-align: inherit;\n }\n\n > thead {\n vertical-align: bottom;\n }\n}\n\n.table-group-divider {\n border-top: calc(#{$table-border-width} * 2) solid $table-group-separator-color; // stylelint-disable-line function-disallowed-list\n}\n\n//\n// Change placement of captions with a class\n//\n\n.caption-top {\n caption-side: top;\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n // stylelint-disable-next-line selector-max-universal\n > :not(caption) > * > * {\n padding: $table-cell-padding-y-sm $table-cell-padding-x-sm;\n }\n}\n\n\n// Border versions\n//\n// Add or remove borders all around the table and between all the columns.\n//\n// When borders are added on all sides of the cells, the corners can render odd when\n// these borders do not have the same color or if they are semi-transparent.\n// Therefore we add top and border bottoms to the `tr`s and left and right borders\n// to the `td`s or `th`s\n\n.table-bordered {\n > :not(caption) > * {\n border-width: $table-border-width 0;\n\n // stylelint-disable-next-line selector-max-universal\n > * {\n border-width: 0 $table-border-width;\n }\n }\n}\n\n.table-borderless {\n // stylelint-disable-next-line selector-max-universal\n > :not(caption) > * > * {\n border-bottom-width: 0;\n }\n\n > :not(:first-child) {\n border-top-width: 0;\n }\n}\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n// For rows\n.table-striped {\n > tbody > tr:nth-of-type(#{$table-striped-order}) > * {\n --#{$prefix}table-color-type: var(--#{$prefix}table-striped-color);\n --#{$prefix}table-bg-type: var(--#{$prefix}table-striped-bg);\n }\n}\n\n// For columns\n.table-striped-columns {\n > :not(caption) > tr > :nth-child(#{$table-striped-columns-order}) {\n --#{$prefix}table-color-type: var(--#{$prefix}table-striped-color);\n --#{$prefix}table-bg-type: var(--#{$prefix}table-striped-bg);\n }\n}\n\n// Active table\n//\n// The `.table-active` class can be added to highlight rows or cells\n\n.table-active {\n --#{$prefix}table-color-state: var(--#{$prefix}table-active-color);\n --#{$prefix}table-bg-state: var(--#{$prefix}table-active-bg);\n}\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover > * {\n --#{$prefix}table-color-state: var(--#{$prefix}table-hover-color);\n --#{$prefix}table-bg-state: var(--#{$prefix}table-hover-bg);\n }\n}\n\n\n// Table variants\n//\n// Table variants set the table cell backgrounds, border colors\n// and the colors of the striped, hovered & active tables\n\n@each $color, $value in $table-variants {\n @include table-variant($color, $value);\n}\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @include media-breakpoint-down($breakpoint) {\n .table-responsive#{$infix} {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n }\n}\n","// scss-docs-start table-variant\n@mixin table-variant($state, $background) {\n .table-#{$state} {\n $color: color-contrast(opaque($body-bg, $background));\n $hover-bg: mix($color, $background, percentage($table-hover-bg-factor));\n $striped-bg: mix($color, $background, percentage($table-striped-bg-factor));\n $active-bg: mix($color, $background, percentage($table-active-bg-factor));\n $table-border-color: mix($color, $background, percentage($table-border-factor));\n\n --#{$prefix}table-color: #{$color};\n --#{$prefix}table-bg: #{$background};\n --#{$prefix}table-border-color: #{$table-border-color};\n --#{$prefix}table-striped-bg: #{$striped-bg};\n --#{$prefix}table-striped-color: #{color-contrast($striped-bg)};\n --#{$prefix}table-active-bg: #{$active-bg};\n --#{$prefix}table-active-color: #{color-contrast($active-bg)};\n --#{$prefix}table-hover-bg: #{$hover-bg};\n --#{$prefix}table-hover-color: #{color-contrast($hover-bg)};\n\n color: var(--#{$prefix}table-color);\n border-color: var(--#{$prefix}table-border-color);\n }\n}\n// scss-docs-end table-variant\n","//\n// Labels\n//\n\n.form-label {\n margin-bottom: $form-label-margin-bottom;\n @include font-size($form-label-font-size);\n font-style: $form-label-font-style;\n font-weight: $form-label-font-weight;\n color: $form-label-color;\n}\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n padding-top: add($input-padding-y, $input-border-width);\n padding-bottom: add($input-padding-y, $input-border-width);\n margin-bottom: 0; // Override the `<legend>` default\n @include font-size(inherit); // Override the `<legend>` default\n font-style: $form-label-font-style;\n font-weight: $form-label-font-weight;\n line-height: $input-line-height;\n color: $form-label-color;\n}\n\n.col-form-label-lg {\n padding-top: add($input-padding-y-lg, $input-border-width);\n padding-bottom: add($input-padding-y-lg, $input-border-width);\n @include font-size($input-font-size-lg);\n}\n\n.col-form-label-sm {\n padding-top: add($input-padding-y-sm, $input-border-width);\n padding-bottom: add($input-padding-y-sm, $input-border-width);\n @include font-size($input-font-size-sm);\n}\n","//\n// Form text\n//\n\n.form-text {\n margin-top: $form-text-margin-top;\n @include font-size($form-text-font-size);\n font-style: $form-text-font-style;\n font-weight: $form-text-font-weight;\n color: $form-text-color;\n}\n","//\n// General form controls (plus a few specific high-level interventions)\n//\n\n.form-control {\n display: block;\n width: 100%;\n padding: $input-padding-y $input-padding-x;\n font-family: $input-font-family;\n @include font-size($input-font-size);\n font-weight: $input-font-weight;\n line-height: $input-line-height;\n color: $input-color;\n appearance: none; // Fix appearance for date inputs in Safari\n background-color: $input-bg;\n background-clip: padding-box;\n border: $input-border-width solid $input-border-color;\n\n // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.\n @include border-radius($input-border-radius, 0);\n\n @include box-shadow($input-box-shadow);\n @include transition($input-transition);\n\n &[type=\"file\"] {\n overflow: hidden; // prevent pseudo element button overlap\n\n &:not(:disabled):not([readonly]) {\n cursor: pointer;\n }\n }\n\n // Customize the `:focus` state to imitate native WebKit styles.\n &:focus {\n color: $input-focus-color;\n background-color: $input-focus-bg;\n border-color: $input-focus-border-color;\n outline: 0;\n @if $enable-shadows {\n @include box-shadow($input-box-shadow, $input-focus-box-shadow);\n } @else {\n // Avoid using mixin so we can pass custom focus shadow properly\n box-shadow: $input-focus-box-shadow;\n }\n }\n\n &::-webkit-date-and-time-value {\n // On Android Chrome, form-control's \"width: 100%\" makes the input width too small\n // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n //\n // On iOS Safari, form-control's \"appearance: none\" + \"width: 100%\" makes the input width too small\n // Tested under iOS 16.2 / Safari 16.2\n min-width: 85px; // Seems to be a good minimum safe width\n\n // Add some height to date inputs on iOS\n // https://github.com/twbs/bootstrap/issues/23307\n // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved\n // Multiply line-height by 1em if it has no unit\n height: if(unit($input-line-height) == \"\", $input-line-height * 1em, $input-line-height);\n\n // Android Chrome type=\"date\" is taller than the other inputs\n // because of \"margin: 1px 24px 1px 4px\" inside the shadow DOM\n // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n margin: 0;\n }\n\n // Prevent excessive date input height in Webkit\n // https://github.com/twbs/bootstrap/issues/34433\n &::-webkit-datetime-edit {\n display: block;\n padding: 0;\n }\n\n // Placeholder\n &::placeholder {\n color: $input-placeholder-color;\n // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n opacity: 1;\n }\n\n // Disabled inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &:disabled {\n color: $input-disabled-color;\n background-color: $input-disabled-bg;\n border-color: $input-disabled-border-color;\n // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n opacity: 1;\n }\n\n // File input buttons theming\n &::file-selector-button {\n padding: $input-padding-y $input-padding-x;\n margin: (-$input-padding-y) (-$input-padding-x);\n margin-inline-end: $input-padding-x;\n color: $form-file-button-color;\n @include gradient-bg($form-file-button-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: $input-border-width;\n border-radius: 0; // stylelint-disable-line property-disallowed-list\n @include transition($btn-transition);\n }\n\n &:hover:not(:disabled):not([readonly])::file-selector-button {\n background-color: $form-file-button-hover-bg;\n }\n}\n\n// Readonly controls as plain text\n//\n// Apply class to a readonly input to make it appear like regular plain\n// text (without any border, background color, focus indicator)\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: $input-padding-y 0;\n margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n line-height: $input-line-height;\n color: $input-plaintext-color;\n background-color: transparent;\n border: solid transparent;\n border-width: $input-border-width 0;\n\n &:focus {\n outline: 0;\n }\n\n &.form-control-sm,\n &.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// Repeated in `_input_group.scss` to avoid Sass extend issues.\n\n.form-control-sm {\n min-height: $input-height-sm;\n padding: $input-padding-y-sm $input-padding-x-sm;\n @include font-size($input-font-size-sm);\n @include border-radius($input-border-radius-sm);\n\n &::file-selector-button {\n padding: $input-padding-y-sm $input-padding-x-sm;\n margin: (-$input-padding-y-sm) (-$input-padding-x-sm);\n margin-inline-end: $input-padding-x-sm;\n }\n}\n\n.form-control-lg {\n min-height: $input-height-lg;\n padding: $input-padding-y-lg $input-padding-x-lg;\n @include font-size($input-font-size-lg);\n @include border-radius($input-border-radius-lg);\n\n &::file-selector-button {\n padding: $input-padding-y-lg $input-padding-x-lg;\n margin: (-$input-padding-y-lg) (-$input-padding-x-lg);\n margin-inline-end: $input-padding-x-lg;\n }\n}\n\n// Make sure textareas don't shrink too much when resized\n// https://github.com/twbs/bootstrap/pull/29124\n// stylelint-disable selector-no-qualifying-type\ntextarea {\n &.form-control {\n min-height: $input-height;\n }\n\n &.form-control-sm {\n min-height: $input-height-sm;\n }\n\n &.form-control-lg {\n min-height: $input-height-lg;\n }\n}\n// stylelint-enable selector-no-qualifying-type\n\n.form-control-color {\n width: $form-color-width;\n height: $input-height;\n padding: $input-padding-y;\n\n &:not(:disabled):not([readonly]) {\n cursor: pointer;\n }\n\n &::-moz-color-swatch {\n border: 0 !important; // stylelint-disable-line declaration-no-important\n @include border-radius($input-border-radius);\n }\n\n &::-webkit-color-swatch {\n border: 0 !important; // stylelint-disable-line declaration-no-important\n @include border-radius($input-border-radius);\n }\n\n &.form-control-sm { height: $input-height-sm; }\n &.form-control-lg { height: $input-height-lg; }\n}\n","// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n @if length($transition) == 0 {\n $transition: $transition-base;\n }\n\n @if length($transition) > 1 {\n @each $value in $transition {\n @if $value == null or $value == none {\n @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n }\n }\n }\n\n @if $enable-transitions {\n @if nth($transition, 1) != null {\n transition: $transition;\n }\n\n @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none {\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n }\n}\n","// Gradients\n\n// scss-docs-start gradient-bg-mixin\n@mixin gradient-bg($color: null) {\n background-color: $color;\n\n @if $enable-gradients {\n background-image: var(--#{$prefix}gradient);\n }\n}\n// scss-docs-end gradient-bg-mixin\n\n// scss-docs-start gradient-mixins\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: null, $end-percent: null) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n}\n\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n}\n\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n// scss-docs-end gradient-mixins\n","// Select\n//\n// Replaces the browser default select with a custom one, mostly pulled from\n// https://primer.github.io/.\n\n.form-select {\n --#{$prefix}form-select-bg-img: #{escape-svg($form-select-indicator)};\n\n display: block;\n width: 100%;\n padding: $form-select-padding-y $form-select-indicator-padding $form-select-padding-y $form-select-padding-x;\n font-family: $form-select-font-family;\n @include font-size($form-select-font-size);\n font-weight: $form-select-font-weight;\n line-height: $form-select-line-height;\n color: $form-select-color;\n appearance: none;\n background-color: $form-select-bg;\n background-image: var(--#{$prefix}form-select-bg-img), var(--#{$prefix}form-select-bg-icon, none);\n background-repeat: no-repeat;\n background-position: $form-select-bg-position;\n background-size: $form-select-bg-size;\n border: $form-select-border-width solid $form-select-border-color;\n @include border-radius($form-select-border-radius, 0);\n @include box-shadow($form-select-box-shadow);\n @include transition($form-select-transition);\n\n &:focus {\n border-color: $form-select-focus-border-color;\n outline: 0;\n @if $enable-shadows {\n @include box-shadow($form-select-box-shadow, $form-select-focus-box-shadow);\n } @else {\n // Avoid using mixin so we can pass custom focus shadow properly\n box-shadow: $form-select-focus-box-shadow;\n }\n }\n\n &[multiple],\n &[size]:not([size=\"1\"]) {\n padding-right: $form-select-padding-x;\n background-image: none;\n }\n\n &:disabled {\n color: $form-select-disabled-color;\n background-color: $form-select-disabled-bg;\n border-color: $form-select-disabled-border-color;\n }\n\n // Remove outline from select box in FF\n &:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 $form-select-color;\n }\n}\n\n.form-select-sm {\n padding-top: $form-select-padding-y-sm;\n padding-bottom: $form-select-padding-y-sm;\n padding-left: $form-select-padding-x-sm;\n @include font-size($form-select-font-size-sm);\n @include border-radius($form-select-border-radius-sm);\n}\n\n.form-select-lg {\n padding-top: $form-select-padding-y-lg;\n padding-bottom: $form-select-padding-y-lg;\n padding-left: $form-select-padding-x-lg;\n @include font-size($form-select-font-size-lg);\n @include border-radius($form-select-border-radius-lg);\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark) {\n .form-select {\n --#{$prefix}form-select-bg-img: #{escape-svg($form-select-indicator-dark)};\n }\n }\n}\n","//\n// Check/radio\n//\n\n.form-check {\n display: block;\n min-height: $form-check-min-height;\n padding-left: $form-check-padding-start;\n margin-bottom: $form-check-margin-bottom;\n\n .form-check-input {\n float: left;\n margin-left: $form-check-padding-start * -1;\n }\n}\n\n.form-check-reverse {\n padding-right: $form-check-padding-start;\n padding-left: 0;\n text-align: right;\n\n .form-check-input {\n float: right;\n margin-right: $form-check-padding-start * -1;\n margin-left: 0;\n }\n}\n\n.form-check-input {\n --#{$prefix}form-check-bg: #{$form-check-input-bg};\n\n flex-shrink: 0;\n width: $form-check-input-width;\n height: $form-check-input-width;\n margin-top: ($line-height-base - $form-check-input-width) * .5; // line-height minus check height\n vertical-align: top;\n appearance: none;\n background-color: var(--#{$prefix}form-check-bg);\n background-image: var(--#{$prefix}form-check-bg-image);\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n border: $form-check-input-border;\n print-color-adjust: exact; // Keep themed appearance for print\n @include transition($form-check-transition);\n\n &[type=\"checkbox\"] {\n @include border-radius($form-check-input-border-radius);\n }\n\n &[type=\"radio\"] {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: $form-check-radio-border-radius;\n }\n\n &:active {\n filter: $form-check-input-active-filter;\n }\n\n &:focus {\n border-color: $form-check-input-focus-border;\n outline: 0;\n box-shadow: $form-check-input-focus-box-shadow;\n }\n\n &:checked {\n background-color: $form-check-input-checked-bg-color;\n border-color: $form-check-input-checked-border-color;\n\n &[type=\"checkbox\"] {\n @if $enable-gradients {\n --#{$prefix}form-check-bg-image: #{escape-svg($form-check-input-checked-bg-image)}, var(--#{$prefix}gradient);\n } @else {\n --#{$prefix}form-check-bg-image: #{escape-svg($form-check-input-checked-bg-image)};\n }\n }\n\n &[type=\"radio\"] {\n @if $enable-gradients {\n --#{$prefix}form-check-bg-image: #{escape-svg($form-check-radio-checked-bg-image)}, var(--#{$prefix}gradient);\n } @else {\n --#{$prefix}form-check-bg-image: #{escape-svg($form-check-radio-checked-bg-image)};\n }\n }\n }\n\n &[type=\"checkbox\"]:indeterminate {\n background-color: $form-check-input-indeterminate-bg-color;\n border-color: $form-check-input-indeterminate-border-color;\n\n @if $enable-gradients {\n --#{$prefix}form-check-bg-image: #{escape-svg($form-check-input-indeterminate-bg-image)}, var(--#{$prefix}gradient);\n } @else {\n --#{$prefix}form-check-bg-image: #{escape-svg($form-check-input-indeterminate-bg-image)};\n }\n }\n\n &:disabled {\n pointer-events: none;\n filter: none;\n opacity: $form-check-input-disabled-opacity;\n }\n\n // Use disabled attribute in addition of :disabled pseudo-class\n // See: https://github.com/twbs/bootstrap/issues/28247\n &[disabled],\n &:disabled {\n ~ .form-check-label {\n cursor: default;\n opacity: $form-check-label-disabled-opacity;\n }\n }\n}\n\n.form-check-label {\n color: $form-check-label-color;\n cursor: $form-check-label-cursor;\n}\n\n//\n// Switch\n//\n\n.form-switch {\n padding-left: $form-switch-padding-start;\n\n .form-check-input {\n --#{$prefix}form-switch-bg: #{escape-svg($form-switch-bg-image)};\n\n width: $form-switch-width;\n margin-left: $form-switch-padding-start * -1;\n background-image: var(--#{$prefix}form-switch-bg);\n background-position: left center;\n @include border-radius($form-switch-border-radius, 0);\n @include transition($form-switch-transition);\n\n &:focus {\n --#{$prefix}form-switch-bg: #{escape-svg($form-switch-focus-bg-image)};\n }\n\n &:checked {\n background-position: $form-switch-checked-bg-position;\n\n @if $enable-gradients {\n --#{$prefix}form-switch-bg: #{escape-svg($form-switch-checked-bg-image)}, var(--#{$prefix}gradient);\n } @else {\n --#{$prefix}form-switch-bg: #{escape-svg($form-switch-checked-bg-image)};\n }\n }\n }\n\n &.form-check-reverse {\n padding-right: $form-switch-padding-start;\n padding-left: 0;\n\n .form-check-input {\n margin-right: $form-switch-padding-start * -1;\n margin-left: 0;\n }\n }\n}\n\n.form-check-inline {\n display: inline-block;\n margin-right: $form-check-inline-margin-end;\n}\n\n.btn-check {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n\n &[disabled],\n &:disabled {\n + .btn {\n pointer-events: none;\n filter: none;\n opacity: $form-check-btn-check-disabled-opacity;\n }\n }\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark) {\n .form-switch .form-check-input:not(:checked):not(:focus) {\n --#{$prefix}form-switch-bg: #{escape-svg($form-switch-bg-image-dark)};\n }\n }\n}\n","// Range\n//\n// Style range inputs the same across browsers. Vendor-specific rules for pseudo\n// elements cannot be mixed. As such, there are no shared styles for focus or\n// active states on prefixed selectors.\n\n.form-range {\n width: 100%;\n height: add($form-range-thumb-height, $form-range-thumb-focus-box-shadow-width * 2);\n padding: 0; // Need to reset padding\n appearance: none;\n background-color: transparent;\n\n &:focus {\n outline: 0;\n\n // Pseudo-elements must be split across multiple rulesets to have an effect.\n // No box-shadow() mixin for focus accessibility.\n &::-webkit-slider-thumb { box-shadow: $form-range-thumb-focus-box-shadow; }\n &::-moz-range-thumb { box-shadow: $form-range-thumb-focus-box-shadow; }\n }\n\n &::-moz-focus-outer {\n border: 0;\n }\n\n &::-webkit-slider-thumb {\n width: $form-range-thumb-width;\n height: $form-range-thumb-height;\n margin-top: ($form-range-track-height - $form-range-thumb-height) * .5; // Webkit specific\n appearance: none;\n @include gradient-bg($form-range-thumb-bg);\n border: $form-range-thumb-border;\n @include border-radius($form-range-thumb-border-radius);\n @include box-shadow($form-range-thumb-box-shadow);\n @include transition($form-range-thumb-transition);\n\n &:active {\n @include gradient-bg($form-range-thumb-active-bg);\n }\n }\n\n &::-webkit-slider-runnable-track {\n width: $form-range-track-width;\n height: $form-range-track-height;\n color: transparent; // Why?\n cursor: $form-range-track-cursor;\n background-color: $form-range-track-bg;\n border-color: transparent;\n @include border-radius($form-range-track-border-radius);\n @include box-shadow($form-range-track-box-shadow);\n }\n\n &::-moz-range-thumb {\n width: $form-range-thumb-width;\n height: $form-range-thumb-height;\n appearance: none;\n @include gradient-bg($form-range-thumb-bg);\n border: $form-range-thumb-border;\n @include border-radius($form-range-thumb-border-radius);\n @include box-shadow($form-range-thumb-box-shadow);\n @include transition($form-range-thumb-transition);\n\n &:active {\n @include gradient-bg($form-range-thumb-active-bg);\n }\n }\n\n &::-moz-range-track {\n width: $form-range-track-width;\n height: $form-range-track-height;\n color: transparent;\n cursor: $form-range-track-cursor;\n background-color: $form-range-track-bg;\n border-color: transparent; // Firefox specific?\n @include border-radius($form-range-track-border-radius);\n @include box-shadow($form-range-track-box-shadow);\n }\n\n &:disabled {\n pointer-events: none;\n\n &::-webkit-slider-thumb {\n background-color: $form-range-thumb-disabled-bg;\n }\n\n &::-moz-range-thumb {\n background-color: $form-range-thumb-disabled-bg;\n }\n }\n}\n",".form-floating {\n position: relative;\n\n > .form-control,\n > .form-control-plaintext,\n > .form-select {\n height: $form-floating-height;\n min-height: $form-floating-height;\n line-height: $form-floating-line-height;\n }\n\n > label {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n height: 100%; // allow textareas\n padding: $form-floating-padding-y $form-floating-padding-x;\n overflow: hidden;\n text-align: start;\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n border: $input-border-width solid transparent; // Required for aligning label's text with the input as it affects inner box model\n transform-origin: 0 0;\n @include transition($form-floating-transition);\n }\n\n > .form-control,\n > .form-control-plaintext {\n padding: $form-floating-padding-y $form-floating-padding-x;\n\n &::placeholder {\n color: transparent;\n }\n\n &:focus,\n &:not(:placeholder-shown) {\n padding-top: $form-floating-input-padding-t;\n padding-bottom: $form-floating-input-padding-b;\n }\n // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n &:-webkit-autofill {\n padding-top: $form-floating-input-padding-t;\n padding-bottom: $form-floating-input-padding-b;\n }\n }\n\n > .form-select {\n padding-top: $form-floating-input-padding-t;\n padding-bottom: $form-floating-input-padding-b;\n }\n\n > .form-control:focus,\n > .form-control:not(:placeholder-shown),\n > .form-control-plaintext,\n > .form-select {\n ~ label {\n color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});\n transform: $form-floating-label-transform;\n\n &::after {\n position: absolute;\n inset: $form-floating-padding-y ($form-floating-padding-x * .5);\n z-index: -1;\n height: $form-floating-label-height;\n content: \"\";\n background-color: $input-bg;\n @include border-radius($input-border-radius);\n }\n }\n }\n // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n > .form-control:-webkit-autofill {\n ~ label {\n color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});\n transform: $form-floating-label-transform;\n }\n }\n\n > .form-control-plaintext {\n ~ label {\n border-width: $input-border-width 0; // Required to properly position label text - as explained above\n }\n }\n\n > :disabled ~ label,\n > .form-control:disabled ~ label { // Required for `.form-control`s because of specificity\n color: $form-floating-label-disabled-color;\n\n &::after {\n background-color: $input-disabled-bg;\n }\n }\n}\n","//\n// Base styles\n//\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap; // For form validation feedback\n align-items: stretch;\n width: 100%;\n\n > .form-control,\n > .form-select,\n > .form-floating {\n position: relative; // For focus state's z-index\n flex: 1 1 auto;\n width: 1%;\n min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size\n }\n\n // Bring the \"active\" form control to the top of surrounding elements\n > .form-control:focus,\n > .form-select:focus,\n > .form-floating:focus-within {\n z-index: 5;\n }\n\n // Ensure buttons are always above inputs for more visually pleasing borders.\n // This isn't needed for `.input-group-text` since it shares the same border-color\n // as our inputs.\n .btn {\n position: relative;\n z-index: 2;\n\n &:focus {\n z-index: 5;\n }\n }\n}\n\n\n// Textual addons\n//\n// Serves as a catch-all element for any text or radio/checkbox input you wish\n// to prepend or append to an input.\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: $input-group-addon-padding-y $input-group-addon-padding-x;\n @include font-size($input-font-size); // Match inputs\n font-weight: $input-group-addon-font-weight;\n line-height: $input-line-height;\n color: $input-group-addon-color;\n text-align: center;\n white-space: nowrap;\n background-color: $input-group-addon-bg;\n border: $input-border-width solid $input-group-addon-border-color;\n @include border-radius($input-border-radius);\n}\n\n\n// Sizing\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n padding: $input-padding-y-lg $input-padding-x-lg;\n @include font-size($input-font-size-lg);\n @include border-radius($input-border-radius-lg);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n padding: $input-padding-y-sm $input-padding-x-sm;\n @include font-size($input-font-size-sm);\n @include border-radius($input-border-radius-sm);\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n padding-right: $form-select-padding-x + $form-select-indicator-padding;\n}\n\n\n// Rounded corners\n//\n// These rulesets must come after the sizing ones to properly override sm and lg\n// border-radius values when extending. They're more specific than we'd like\n// with the `.input-group >` part, but without it, we cannot override the sizing.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.input-group {\n &:not(.has-validation) {\n > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n > .dropdown-toggle:nth-last-child(n + 3),\n > .form-floating:not(:last-child) > .form-control,\n > .form-floating:not(:last-child) > .form-select {\n @include border-end-radius(0);\n }\n }\n\n &.has-validation {\n > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n > .dropdown-toggle:nth-last-child(n + 4),\n > .form-floating:nth-last-child(n + 3) > .form-control,\n > .form-floating:nth-last-child(n + 3) > .form-select {\n @include border-end-radius(0);\n }\n }\n\n $validation-messages: \"\";\n @each $state in map-keys($form-validation-states) {\n $validation-messages: $validation-messages + \":not(.\" + unquote($state) + \"-tooltip)\" + \":not(.\" + unquote($state) + \"-feedback)\";\n }\n\n > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {\n margin-left: calc(#{$input-border-width} * -1); // stylelint-disable-line function-disallowed-list\n @include border-start-radius(0);\n }\n\n > .form-floating:not(:first-child) > .form-control,\n > .form-floating:not(:first-child) > .form-select {\n @include border-start-radius(0);\n }\n}\n","// This mixin uses an `if()` technique to be compatible with Dart Sass\n// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details\n\n// scss-docs-start form-validation-mixins\n@mixin form-validation-state-selector($state) {\n @if ($state == \"valid\" or $state == \"invalid\") {\n .was-validated #{if(&, \"&\", \"\")}:#{$state},\n #{if(&, \"&\", \"\")}.is-#{$state} {\n @content;\n }\n } @else {\n #{if(&, \"&\", \"\")}.is-#{$state} {\n @content;\n }\n }\n}\n\n@mixin form-validation-state(\n $state,\n $color,\n $icon,\n $tooltip-color: color-contrast($color),\n $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),\n $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity),\n $border-color: $color\n) {\n .#{$state}-feedback {\n display: none;\n width: 100%;\n margin-top: $form-feedback-margin-top;\n @include font-size($form-feedback-font-size);\n font-style: $form-feedback-font-style;\n color: $color;\n }\n\n .#{$state}-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%; // Contain to parent when possible\n padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n margin-top: .1rem;\n @include font-size($form-feedback-tooltip-font-size);\n line-height: $form-feedback-tooltip-line-height;\n color: $tooltip-color;\n background-color: $tooltip-bg-color;\n @include border-radius($form-feedback-tooltip-border-radius);\n }\n\n @include form-validation-state-selector($state) {\n ~ .#{$state}-feedback,\n ~ .#{$state}-tooltip {\n display: block;\n }\n }\n\n .form-control {\n @include form-validation-state-selector($state) {\n border-color: $border-color;\n\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-image: escape-svg($icon);\n background-repeat: no-repeat;\n background-position: right $input-height-inner-quarter center;\n background-size: $input-height-inner-half $input-height-inner-half;\n }\n\n &:focus {\n border-color: $border-color;\n @if $enable-shadows {\n @include box-shadow($input-box-shadow, $focus-box-shadow);\n } @else {\n // Avoid using mixin so we can pass custom focus shadow properly\n box-shadow: $focus-box-shadow;\n }\n }\n }\n }\n\n // stylelint-disable-next-line selector-no-qualifying-type\n textarea.form-control {\n @include form-validation-state-selector($state) {\n @if $enable-validation-icons {\n padding-right: $input-height-inner;\n background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n }\n }\n }\n\n .form-select {\n @include form-validation-state-selector($state) {\n border-color: $border-color;\n\n @if $enable-validation-icons {\n &:not([multiple]):not([size]),\n &:not([multiple])[size=\"1\"] {\n --#{$prefix}form-select-bg-icon: #{escape-svg($icon)};\n padding-right: $form-select-feedback-icon-padding-end;\n background-position: $form-select-bg-position, $form-select-feedback-icon-position;\n background-size: $form-select-bg-size, $form-select-feedback-icon-size;\n }\n }\n\n &:focus {\n border-color: $border-color;\n @if $enable-shadows {\n @include box-shadow($form-select-box-shadow, $focus-box-shadow);\n } @else {\n // Avoid using mixin so we can pass custom focus shadow properly\n box-shadow: $focus-box-shadow;\n }\n }\n }\n }\n\n .form-control-color {\n @include form-validation-state-selector($state) {\n @if $enable-validation-icons {\n width: add($form-color-width, $input-height-inner);\n }\n }\n }\n\n .form-check-input {\n @include form-validation-state-selector($state) {\n border-color: $border-color;\n\n &:checked {\n background-color: $color;\n }\n\n &:focus {\n box-shadow: $focus-box-shadow;\n }\n\n ~ .form-check-label {\n color: $color;\n }\n }\n }\n .form-check-inline .form-check-input {\n ~ .#{$state}-feedback {\n margin-left: .5em;\n }\n }\n\n .input-group {\n > .form-control:not(:focus),\n > .form-select:not(:focus),\n > .form-floating:not(:focus-within) {\n @include form-validation-state-selector($state) {\n @if $state == \"valid\" {\n z-index: 3;\n } @else if $state == \"invalid\" {\n z-index: 4;\n }\n }\n }\n }\n}\n// scss-docs-end form-validation-mixins\n","//\n// Base styles\n//\n\n.btn {\n // scss-docs-start btn-css-vars\n --#{$prefix}btn-padding-x: #{$btn-padding-x};\n --#{$prefix}btn-padding-y: #{$btn-padding-y};\n --#{$prefix}btn-font-family: #{$btn-font-family};\n @include rfs($btn-font-size, --#{$prefix}btn-font-size);\n --#{$prefix}btn-font-weight: #{$btn-font-weight};\n --#{$prefix}btn-line-height: #{$btn-line-height};\n --#{$prefix}btn-color: #{$btn-color};\n --#{$prefix}btn-bg: transparent;\n --#{$prefix}btn-border-width: #{$btn-border-width};\n --#{$prefix}btn-border-color: transparent;\n --#{$prefix}btn-border-radius: #{$btn-border-radius};\n --#{$prefix}btn-hover-border-color: transparent;\n --#{$prefix}btn-box-shadow: #{$btn-box-shadow};\n --#{$prefix}btn-disabled-opacity: #{$btn-disabled-opacity};\n --#{$prefix}btn-focus-box-shadow: 0 0 0 #{$btn-focus-width} rgba(var(--#{$prefix}btn-focus-shadow-rgb), .5);\n // scss-docs-end btn-css-vars\n\n display: inline-block;\n padding: var(--#{$prefix}btn-padding-y) var(--#{$prefix}btn-padding-x);\n font-family: var(--#{$prefix}btn-font-family);\n @include font-size(var(--#{$prefix}btn-font-size));\n font-weight: var(--#{$prefix}btn-font-weight);\n line-height: var(--#{$prefix}btn-line-height);\n color: var(--#{$prefix}btn-color);\n text-align: center;\n text-decoration: if($link-decoration == none, null, none);\n white-space: $btn-white-space;\n vertical-align: middle;\n cursor: if($enable-button-pointers, pointer, null);\n user-select: none;\n border: var(--#{$prefix}btn-border-width) solid var(--#{$prefix}btn-border-color);\n @include border-radius(var(--#{$prefix}btn-border-radius));\n @include gradient-bg(var(--#{$prefix}btn-bg));\n @include box-shadow(var(--#{$prefix}btn-box-shadow));\n @include transition($btn-transition);\n\n &:hover {\n color: var(--#{$prefix}btn-hover-color);\n text-decoration: if($link-hover-decoration == underline, none, null);\n background-color: var(--#{$prefix}btn-hover-bg);\n border-color: var(--#{$prefix}btn-hover-border-color);\n }\n\n .btn-check + &:hover {\n // override for the checkbox/radio buttons\n color: var(--#{$prefix}btn-color);\n background-color: var(--#{$prefix}btn-bg);\n border-color: var(--#{$prefix}btn-border-color);\n }\n\n &:focus-visible {\n color: var(--#{$prefix}btn-hover-color);\n @include gradient-bg(var(--#{$prefix}btn-hover-bg));\n border-color: var(--#{$prefix}btn-hover-border-color);\n outline: 0;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow);\n } @else {\n box-shadow: var(--#{$prefix}btn-focus-box-shadow);\n }\n }\n\n .btn-check:focus-visible + & {\n border-color: var(--#{$prefix}btn-hover-border-color);\n outline: 0;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow);\n } @else {\n box-shadow: var(--#{$prefix}btn-focus-box-shadow);\n }\n }\n\n .btn-check:checked + &,\n :not(.btn-check) + &:active,\n &:first-child:active,\n &.active,\n &.show {\n color: var(--#{$prefix}btn-active-color);\n background-color: var(--#{$prefix}btn-active-bg);\n // Remove CSS gradients if they're enabled\n background-image: if($enable-gradients, none, null);\n border-color: var(--#{$prefix}btn-active-border-color);\n @include box-shadow(var(--#{$prefix}btn-active-shadow));\n\n &:focus-visible {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: var(--#{$prefix}btn-active-shadow), var(--#{$prefix}btn-focus-box-shadow);\n } @else {\n box-shadow: var(--#{$prefix}btn-focus-box-shadow);\n }\n }\n }\n\n .btn-check:checked:focus-visible + & {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: var(--#{$prefix}btn-active-shadow), var(--#{$prefix}btn-focus-box-shadow);\n } @else {\n box-shadow: var(--#{$prefix}btn-focus-box-shadow);\n }\n }\n\n &:disabled,\n &.disabled,\n fieldset:disabled & {\n color: var(--#{$prefix}btn-disabled-color);\n pointer-events: none;\n background-color: var(--#{$prefix}btn-disabled-bg);\n background-image: if($enable-gradients, none, null);\n border-color: var(--#{$prefix}btn-disabled-border-color);\n opacity: var(--#{$prefix}btn-disabled-opacity);\n @include box-shadow(none);\n }\n}\n\n\n//\n// Alternate buttons\n//\n\n// scss-docs-start btn-variant-loops\n@each $color, $value in $theme-colors {\n .btn-#{$color} {\n @if $color == \"light\" {\n @include button-variant(\n $value,\n $value,\n $hover-background: shade-color($value, $btn-hover-bg-shade-amount),\n $hover-border: shade-color($value, $btn-hover-border-shade-amount),\n $active-background: shade-color($value, $btn-active-bg-shade-amount),\n $active-border: shade-color($value, $btn-active-border-shade-amount)\n );\n } @else if $color == \"dark\" {\n @include button-variant(\n $value,\n $value,\n $hover-background: tint-color($value, $btn-hover-bg-tint-amount),\n $hover-border: tint-color($value, $btn-hover-border-tint-amount),\n $active-background: tint-color($value, $btn-active-bg-tint-amount),\n $active-border: tint-color($value, $btn-active-border-tint-amount)\n );\n } @else {\n @include button-variant($value, $value);\n }\n }\n}\n\n@each $color, $value in $theme-colors {\n .btn-outline-#{$color} {\n @include button-outline-variant($value);\n }\n}\n// scss-docs-end btn-variant-loops\n\n\n//\n// Link buttons\n//\n\n// Make a button look and behave like a link\n.btn-link {\n --#{$prefix}btn-font-weight: #{$font-weight-normal};\n --#{$prefix}btn-color: #{$btn-link-color};\n --#{$prefix}btn-bg: transparent;\n --#{$prefix}btn-border-color: transparent;\n --#{$prefix}btn-hover-color: #{$btn-link-hover-color};\n --#{$prefix}btn-hover-border-color: transparent;\n --#{$prefix}btn-active-color: #{$btn-link-hover-color};\n --#{$prefix}btn-active-border-color: transparent;\n --#{$prefix}btn-disabled-color: #{$btn-link-disabled-color};\n --#{$prefix}btn-disabled-border-color: transparent;\n --#{$prefix}btn-box-shadow: 0 0 0 #000; // Can't use `none` as keyword negates all values when used with multiple shadows\n --#{$prefix}btn-focus-shadow-rgb: #{$btn-link-focus-shadow-rgb};\n\n text-decoration: $link-decoration;\n @if $enable-gradients {\n background-image: none;\n }\n\n &:hover,\n &:focus-visible {\n text-decoration: $link-hover-decoration;\n }\n\n &:focus-visible {\n color: var(--#{$prefix}btn-color);\n }\n\n &:hover {\n color: var(--#{$prefix}btn-hover-color);\n }\n\n // No need for an active state here\n}\n\n\n//\n// Button Sizes\n//\n\n.btn-lg {\n @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg);\n}\n\n.btn-sm {\n @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm);\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n// scss-docs-start btn-variant-mixin\n@mixin button-variant(\n $background,\n $border,\n $color: color-contrast($background),\n $hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),\n $hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),\n $hover-color: color-contrast($hover-background),\n $active-background: if($color == $color-contrast-light, shade-color($background, $btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),\n $active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),\n $active-color: color-contrast($active-background),\n $disabled-background: $background,\n $disabled-border: $border,\n $disabled-color: color-contrast($disabled-background)\n) {\n --#{$prefix}btn-color: #{$color};\n --#{$prefix}btn-bg: #{$background};\n --#{$prefix}btn-border-color: #{$border};\n --#{$prefix}btn-hover-color: #{$hover-color};\n --#{$prefix}btn-hover-bg: #{$hover-background};\n --#{$prefix}btn-hover-border-color: #{$hover-border};\n --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix($color, $border, 15%))};\n --#{$prefix}btn-active-color: #{$active-color};\n --#{$prefix}btn-active-bg: #{$active-background};\n --#{$prefix}btn-active-border-color: #{$active-border};\n --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};\n --#{$prefix}btn-disabled-color: #{$disabled-color};\n --#{$prefix}btn-disabled-bg: #{$disabled-background};\n --#{$prefix}btn-disabled-border-color: #{$disabled-border};\n}\n// scss-docs-end btn-variant-mixin\n\n// scss-docs-start btn-outline-variant-mixin\n@mixin button-outline-variant(\n $color,\n $color-hover: color-contrast($color),\n $active-background: $color,\n $active-border: $color,\n $active-color: color-contrast($active-background)\n) {\n --#{$prefix}btn-color: #{$color};\n --#{$prefix}btn-border-color: #{$color};\n --#{$prefix}btn-hover-color: #{$color-hover};\n --#{$prefix}btn-hover-bg: #{$active-background};\n --#{$prefix}btn-hover-border-color: #{$active-border};\n --#{$prefix}btn-focus-shadow-rgb: #{to-rgb($color)};\n --#{$prefix}btn-active-color: #{$active-color};\n --#{$prefix}btn-active-bg: #{$active-background};\n --#{$prefix}btn-active-border-color: #{$active-border};\n --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};\n --#{$prefix}btn-disabled-color: #{$color};\n --#{$prefix}btn-disabled-bg: transparent;\n --#{$prefix}btn-disabled-border-color: #{$color};\n --#{$prefix}gradient: none;\n}\n// scss-docs-end btn-outline-variant-mixin\n\n// scss-docs-start btn-size-mixin\n@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {\n --#{$prefix}btn-padding-y: #{$padding-y};\n --#{$prefix}btn-padding-x: #{$padding-x};\n @include rfs($font-size, --#{$prefix}btn-font-size);\n --#{$prefix}btn-border-radius: #{$border-radius};\n}\n// scss-docs-end btn-size-mixin\n",".fade {\n @include transition($transition-fade);\n\n &:not(.show) {\n opacity: 0;\n }\n}\n\n// scss-docs-start collapse-classes\n.collapse {\n &:not(.show) {\n display: none;\n }\n}\n\n.collapsing {\n height: 0;\n overflow: hidden;\n @include transition($transition-collapse);\n\n &.collapse-horizontal {\n width: 0;\n height: auto;\n @include transition($transition-collapse-width);\n }\n}\n// scss-docs-end collapse-classes\n","// The dropdown wrapper (`<div>`)\n.dropup,\n.dropend,\n.dropdown,\n.dropstart,\n.dropup-center,\n.dropdown-center {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n\n // Generate the caret automatically\n @include caret();\n}\n\n// The dropdown menu\n.dropdown-menu {\n // scss-docs-start dropdown-css-vars\n --#{$prefix}dropdown-zindex: #{$zindex-dropdown};\n --#{$prefix}dropdown-min-width: #{$dropdown-min-width};\n --#{$prefix}dropdown-padding-x: #{$dropdown-padding-x};\n --#{$prefix}dropdown-padding-y: #{$dropdown-padding-y};\n --#{$prefix}dropdown-spacer: #{$dropdown-spacer};\n @include rfs($dropdown-font-size, --#{$prefix}dropdown-font-size);\n --#{$prefix}dropdown-color: #{$dropdown-color};\n --#{$prefix}dropdown-bg: #{$dropdown-bg};\n --#{$prefix}dropdown-border-color: #{$dropdown-border-color};\n --#{$prefix}dropdown-border-radius: #{$dropdown-border-radius};\n --#{$prefix}dropdown-border-width: #{$dropdown-border-width};\n --#{$prefix}dropdown-inner-border-radius: #{$dropdown-inner-border-radius};\n --#{$prefix}dropdown-divider-bg: #{$dropdown-divider-bg};\n --#{$prefix}dropdown-divider-margin-y: #{$dropdown-divider-margin-y};\n --#{$prefix}dropdown-box-shadow: #{$dropdown-box-shadow};\n --#{$prefix}dropdown-link-color: #{$dropdown-link-color};\n --#{$prefix}dropdown-link-hover-color: #{$dropdown-link-hover-color};\n --#{$prefix}dropdown-link-hover-bg: #{$dropdown-link-hover-bg};\n --#{$prefix}dropdown-link-active-color: #{$dropdown-link-active-color};\n --#{$prefix}dropdown-link-active-bg: #{$dropdown-link-active-bg};\n --#{$prefix}dropdown-link-disabled-color: #{$dropdown-link-disabled-color};\n --#{$prefix}dropdown-item-padding-x: #{$dropdown-item-padding-x};\n --#{$prefix}dropdown-item-padding-y: #{$dropdown-item-padding-y};\n --#{$prefix}dropdown-header-color: #{$dropdown-header-color};\n --#{$prefix}dropdown-header-padding-x: #{$dropdown-header-padding-x};\n --#{$prefix}dropdown-header-padding-y: #{$dropdown-header-padding-y};\n // scss-docs-end dropdown-css-vars\n\n position: absolute;\n z-index: var(--#{$prefix}dropdown-zindex);\n display: none; // none by default, but block on \"open\" of the menu\n min-width: var(--#{$prefix}dropdown-min-width);\n padding: var(--#{$prefix}dropdown-padding-y) var(--#{$prefix}dropdown-padding-x);\n margin: 0; // Override default margin of ul\n @include font-size(var(--#{$prefix}dropdown-font-size));\n color: var(--#{$prefix}dropdown-color);\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n list-style: none;\n background-color: var(--#{$prefix}dropdown-bg);\n background-clip: padding-box;\n border: var(--#{$prefix}dropdown-border-width) solid var(--#{$prefix}dropdown-border-color);\n @include border-radius(var(--#{$prefix}dropdown-border-radius));\n @include box-shadow(var(--#{$prefix}dropdown-box-shadow));\n\n &[data-bs-popper] {\n top: 100%;\n left: 0;\n margin-top: var(--#{$prefix}dropdown-spacer);\n }\n\n @if $dropdown-padding-y == 0 {\n > .dropdown-item:first-child,\n > li:first-child .dropdown-item {\n @include border-top-radius(var(--#{$prefix}dropdown-inner-border-radius));\n }\n > .dropdown-item:last-child,\n > li:last-child .dropdown-item {\n @include border-bottom-radius(var(--#{$prefix}dropdown-inner-border-radius));\n }\n\n }\n}\n\n// scss-docs-start responsive-breakpoints\n// We deliberately hardcode the `bs-` prefix because we check\n// this custom property in JS to determine Popper's positioning\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .dropdown-menu#{$infix}-start {\n --bs-position: start;\n\n &[data-bs-popper] {\n right: auto;\n left: 0;\n }\n }\n\n .dropdown-menu#{$infix}-end {\n --bs-position: end;\n\n &[data-bs-popper] {\n right: 0;\n left: auto;\n }\n }\n }\n}\n// scss-docs-end responsive-breakpoints\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n// Just add .dropup after the standard .dropdown class and you're set.\n.dropup {\n .dropdown-menu[data-bs-popper] {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: var(--#{$prefix}dropdown-spacer);\n }\n\n .dropdown-toggle {\n @include caret(up);\n }\n}\n\n.dropend {\n .dropdown-menu[data-bs-popper] {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: var(--#{$prefix}dropdown-spacer);\n }\n\n .dropdown-toggle {\n @include caret(end);\n &::after {\n vertical-align: 0;\n }\n }\n}\n\n.dropstart {\n .dropdown-menu[data-bs-popper] {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: var(--#{$prefix}dropdown-spacer);\n }\n\n .dropdown-toggle {\n @include caret(start);\n &::before {\n vertical-align: 0;\n }\n }\n}\n\n\n// Dividers (basically an `<hr>`) within the dropdown\n.dropdown-divider {\n height: 0;\n margin: var(--#{$prefix}dropdown-divider-margin-y) 0;\n overflow: hidden;\n border-top: 1px solid var(--#{$prefix}dropdown-divider-bg);\n opacity: 1; // Revisit in v6 to de-dupe styles that conflict with <hr> element\n}\n\n// Links, buttons, and more within the dropdown menu\n//\n// `<button>`-specific styles are denoted with `// For <button>s`\n.dropdown-item {\n display: block;\n width: 100%; // For `<button>`s\n padding: var(--#{$prefix}dropdown-item-padding-y) var(--#{$prefix}dropdown-item-padding-x);\n clear: both;\n font-weight: $font-weight-normal;\n color: var(--#{$prefix}dropdown-link-color);\n text-align: inherit; // For `<button>`s\n text-decoration: if($link-decoration == none, null, none);\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n background-color: transparent; // For `<button>`s\n border: 0; // For `<button>`s\n @include border-radius(var(--#{$prefix}dropdown-item-border-radius, 0));\n\n &:hover,\n &:focus {\n color: var(--#{$prefix}dropdown-link-hover-color);\n text-decoration: if($link-hover-decoration == underline, none, null);\n @include gradient-bg(var(--#{$prefix}dropdown-link-hover-bg));\n }\n\n &.active,\n &:active {\n color: var(--#{$prefix}dropdown-link-active-color);\n text-decoration: none;\n @include gradient-bg(var(--#{$prefix}dropdown-link-active-bg));\n }\n\n &.disabled,\n &:disabled {\n color: var(--#{$prefix}dropdown-link-disabled-color);\n pointer-events: none;\n background-color: transparent;\n // Remove CSS gradients if they're enabled\n background-image: if($enable-gradients, none, null);\n }\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: var(--#{$prefix}dropdown-header-padding-y) var(--#{$prefix}dropdown-header-padding-x);\n margin-bottom: 0; // for use with heading elements\n @include font-size($font-size-sm);\n color: var(--#{$prefix}dropdown-header-color);\n white-space: nowrap; // as with > li > a\n}\n\n// Dropdown text\n.dropdown-item-text {\n display: block;\n padding: var(--#{$prefix}dropdown-item-padding-y) var(--#{$prefix}dropdown-item-padding-x);\n color: var(--#{$prefix}dropdown-link-color);\n}\n\n// Dark dropdowns\n.dropdown-menu-dark {\n // scss-docs-start dropdown-dark-css-vars\n --#{$prefix}dropdown-color: #{$dropdown-dark-color};\n --#{$prefix}dropdown-bg: #{$dropdown-dark-bg};\n --#{$prefix}dropdown-border-color: #{$dropdown-dark-border-color};\n --#{$prefix}dropdown-box-shadow: #{$dropdown-dark-box-shadow};\n --#{$prefix}dropdown-link-color: #{$dropdown-dark-link-color};\n --#{$prefix}dropdown-link-hover-color: #{$dropdown-dark-link-hover-color};\n --#{$prefix}dropdown-divider-bg: #{$dropdown-dark-divider-bg};\n --#{$prefix}dropdown-link-hover-bg: #{$dropdown-dark-link-hover-bg};\n --#{$prefix}dropdown-link-active-color: #{$dropdown-dark-link-active-color};\n --#{$prefix}dropdown-link-active-bg: #{$dropdown-dark-link-active-bg};\n --#{$prefix}dropdown-link-disabled-color: #{$dropdown-dark-link-disabled-color};\n --#{$prefix}dropdown-header-color: #{$dropdown-dark-header-color};\n // scss-docs-end dropdown-dark-css-vars\n}\n","// scss-docs-start caret-mixins\n@mixin caret-down($width: $caret-width) {\n border-top: $width solid;\n border-right: $width solid transparent;\n border-bottom: 0;\n border-left: $width solid transparent;\n}\n\n@mixin caret-up($width: $caret-width) {\n border-top: 0;\n border-right: $width solid transparent;\n border-bottom: $width solid;\n border-left: $width solid transparent;\n}\n\n@mixin caret-end($width: $caret-width) {\n border-top: $width solid transparent;\n border-right: 0;\n border-bottom: $width solid transparent;\n border-left: $width solid;\n}\n\n@mixin caret-start($width: $caret-width) {\n border-top: $width solid transparent;\n border-right: $width solid;\n border-bottom: $width solid transparent;\n}\n\n@mixin caret(\n $direction: down,\n $width: $caret-width,\n $spacing: $caret-spacing,\n $vertical-align: $caret-vertical-align\n) {\n @if $enable-caret {\n &::after {\n display: inline-block;\n margin-left: $spacing;\n vertical-align: $vertical-align;\n content: \"\";\n @if $direction == down {\n @include caret-down($width);\n } @else if $direction == up {\n @include caret-up($width);\n } @else if $direction == end {\n @include caret-end($width);\n }\n }\n\n @if $direction == start {\n &::after {\n display: none;\n }\n\n &::before {\n display: inline-block;\n margin-right: $spacing;\n vertical-align: $vertical-align;\n content: \"\";\n @include caret-start($width);\n }\n }\n\n &:empty::after {\n margin-left: 0;\n }\n }\n}\n// scss-docs-end caret-mixins\n","// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle; // match .btn alignment given font-size hack above\n\n > .btn {\n position: relative;\n flex: 1 1 auto;\n }\n\n // Bring the hover, focused, and \"active\" buttons to the front to overlay\n // the borders properly\n > .btn-check:checked + .btn,\n > .btn-check:focus + .btn,\n > .btn:hover,\n > .btn:focus,\n > .btn:active,\n > .btn.active {\n z-index: 1;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n\n .input-group {\n width: auto;\n }\n}\n\n.btn-group {\n @include border-radius($btn-border-radius);\n\n // Prevent double borders when buttons are next to each other\n > :not(.btn-check:first-child) + .btn,\n > .btn-group:not(:first-child) {\n margin-left: calc(#{$btn-border-width} * -1); // stylelint-disable-line function-disallowed-list\n }\n\n // Reset rounded corners\n > .btn:not(:last-child):not(.dropdown-toggle),\n > .btn.dropdown-toggle-split:first-child,\n > .btn-group:not(:last-child) > .btn {\n @include border-end-radius(0);\n }\n\n // The left radius should be 0 if the button is:\n // - the \"third or more\" child\n // - the second child and the previous element isn't `.btn-check` (making it the first child visually)\n // - part of a btn-group which isn't the first child\n > .btn:nth-child(n + 3),\n > :not(.btn-check) + .btn,\n > .btn-group:not(:first-child) > .btn {\n @include border-start-radius(0);\n }\n}\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-sm > .btn { @extend .btn-sm; }\n.btn-group-lg > .btn { @extend .btn-lg; }\n\n\n//\n// Split button dropdowns\n//\n\n.dropdown-toggle-split {\n padding-right: $btn-padding-x * .75;\n padding-left: $btn-padding-x * .75;\n\n &::after,\n .dropup &::after,\n .dropend &::after {\n margin-left: 0;\n }\n\n .dropstart &::before {\n margin-right: 0;\n }\n}\n\n.btn-sm + .dropdown-toggle-split {\n padding-right: $btn-padding-x-sm * .75;\n padding-left: $btn-padding-x-sm * .75;\n}\n\n.btn-lg + .dropdown-toggle-split {\n padding-right: $btn-padding-x-lg * .75;\n padding-left: $btn-padding-x-lg * .75;\n}\n\n\n// The clickable button for toggling the menu\n// Set the same inset shadow as the :active state\n.btn-group.show .dropdown-toggle {\n @include box-shadow($btn-active-box-shadow);\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n @include box-shadow(none);\n }\n}\n\n\n//\n// Vertical button groups\n//\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n\n > .btn,\n > .btn-group {\n width: 100%;\n }\n\n > .btn:not(:first-child),\n > .btn-group:not(:first-child) {\n margin-top: calc(#{$btn-border-width} * -1); // stylelint-disable-line function-disallowed-list\n }\n\n // Reset rounded corners\n > .btn:not(:last-child):not(.dropdown-toggle),\n > .btn-group:not(:last-child) > .btn {\n @include border-bottom-radius(0);\n }\n\n > .btn ~ .btn,\n > .btn-group:not(:first-child) > .btn {\n @include border-top-radius(0);\n }\n}\n","// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<ol>`s.\n\n.nav {\n // scss-docs-start nav-css-vars\n --#{$prefix}nav-link-padding-x: #{$nav-link-padding-x};\n --#{$prefix}nav-link-padding-y: #{$nav-link-padding-y};\n @include rfs($nav-link-font-size, --#{$prefix}nav-link-font-size);\n --#{$prefix}nav-link-font-weight: #{$nav-link-font-weight};\n --#{$prefix}nav-link-color: #{$nav-link-color};\n --#{$prefix}nav-link-hover-color: #{$nav-link-hover-color};\n --#{$prefix}nav-link-disabled-color: #{$nav-link-disabled-color};\n // scss-docs-end nav-css-vars\n\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: var(--#{$prefix}nav-link-padding-y) var(--#{$prefix}nav-link-padding-x);\n @include font-size(var(--#{$prefix}nav-link-font-size));\n font-weight: var(--#{$prefix}nav-link-font-weight);\n color: var(--#{$prefix}nav-link-color);\n text-decoration: if($link-decoration == none, null, none);\n background: none;\n border: 0;\n @include transition($nav-link-transition);\n\n &:hover,\n &:focus {\n color: var(--#{$prefix}nav-link-hover-color);\n text-decoration: if($link-hover-decoration == underline, none, null);\n }\n\n &:focus-visible {\n outline: 0;\n box-shadow: $nav-link-focus-box-shadow;\n }\n\n // Disabled state lightens text\n &.disabled,\n &:disabled {\n color: var(--#{$prefix}nav-link-disabled-color);\n pointer-events: none;\n cursor: default;\n }\n}\n\n//\n// Tabs\n//\n\n.nav-tabs {\n // scss-docs-start nav-tabs-css-vars\n --#{$prefix}nav-tabs-border-width: #{$nav-tabs-border-width};\n --#{$prefix}nav-tabs-border-color: #{$nav-tabs-border-color};\n --#{$prefix}nav-tabs-border-radius: #{$nav-tabs-border-radius};\n --#{$prefix}nav-tabs-link-hover-border-color: #{$nav-tabs-link-hover-border-color};\n --#{$prefix}nav-tabs-link-active-color: #{$nav-tabs-link-active-color};\n --#{$prefix}nav-tabs-link-active-bg: #{$nav-tabs-link-active-bg};\n --#{$prefix}nav-tabs-link-active-border-color: #{$nav-tabs-link-active-border-color};\n // scss-docs-end nav-tabs-css-vars\n\n border-bottom: var(--#{$prefix}nav-tabs-border-width) solid var(--#{$prefix}nav-tabs-border-color);\n\n .nav-link {\n margin-bottom: calc(-1 * var(--#{$prefix}nav-tabs-border-width)); // stylelint-disable-line function-disallowed-list\n border: var(--#{$prefix}nav-tabs-border-width) solid transparent;\n @include border-top-radius(var(--#{$prefix}nav-tabs-border-radius));\n\n &:hover,\n &:focus {\n // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link\n isolation: isolate;\n border-color: var(--#{$prefix}nav-tabs-link-hover-border-color);\n }\n }\n\n .nav-link.active,\n .nav-item.show .nav-link {\n color: var(--#{$prefix}nav-tabs-link-active-color);\n background-color: var(--#{$prefix}nav-tabs-link-active-bg);\n border-color: var(--#{$prefix}nav-tabs-link-active-border-color);\n }\n\n .dropdown-menu {\n // Make dropdown border overlap tab border\n margin-top: calc(-1 * var(--#{$prefix}nav-tabs-border-width)); // stylelint-disable-line function-disallowed-list\n // Remove the top rounded corners here since there is a hard edge above the menu\n @include border-top-radius(0);\n }\n}\n\n\n//\n// Pills\n//\n\n.nav-pills {\n // scss-docs-start nav-pills-css-vars\n --#{$prefix}nav-pills-border-radius: #{$nav-pills-border-radius};\n --#{$prefix}nav-pills-link-active-color: #{$nav-pills-link-active-color};\n --#{$prefix}nav-pills-link-active-bg: #{$nav-pills-link-active-bg};\n // scss-docs-end nav-pills-css-vars\n\n .nav-link {\n @include border-radius(var(--#{$prefix}nav-pills-border-radius));\n }\n\n .nav-link.active,\n .show > .nav-link {\n color: var(--#{$prefix}nav-pills-link-active-color);\n @include gradient-bg(var(--#{$prefix}nav-pills-link-active-bg));\n }\n}\n\n\n//\n// Underline\n//\n\n.nav-underline {\n // scss-docs-start nav-underline-css-vars\n --#{$prefix}nav-underline-gap: #{$nav-underline-gap};\n --#{$prefix}nav-underline-border-width: #{$nav-underline-border-width};\n --#{$prefix}nav-underline-link-active-color: #{$nav-underline-link-active-color};\n // scss-docs-end nav-underline-css-vars\n\n gap: var(--#{$prefix}nav-underline-gap);\n\n .nav-link {\n padding-right: 0;\n padding-left: 0;\n border-bottom: var(--#{$prefix}nav-underline-border-width) solid transparent;\n\n &:hover,\n &:focus {\n border-bottom-color: currentcolor;\n }\n }\n\n .nav-link.active,\n .show > .nav-link {\n font-weight: $font-weight-bold;\n color: var(--#{$prefix}nav-underline-link-active-color);\n border-bottom-color: currentcolor;\n }\n}\n\n\n//\n// Justified variants\n//\n\n.nav-fill {\n > .nav-link,\n .nav-item {\n flex: 1 1 auto;\n text-align: center;\n }\n}\n\n.nav-justified {\n > .nav-link,\n .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n }\n}\n\n.nav-fill,\n.nav-justified {\n .nav-item .nav-link {\n width: 100%; // Make sure button will grow\n }\n}\n\n\n// Tabbable tabs\n//\n// Hide tabbable panes to start, show them when `.active`\n\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n","// Navbar\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n // scss-docs-start navbar-css-vars\n --#{$prefix}navbar-padding-x: #{if($navbar-padding-x == null, 0, $navbar-padding-x)};\n --#{$prefix}navbar-padding-y: #{$navbar-padding-y};\n --#{$prefix}navbar-color: #{$navbar-light-color};\n --#{$prefix}navbar-hover-color: #{$navbar-light-hover-color};\n --#{$prefix}navbar-disabled-color: #{$navbar-light-disabled-color};\n --#{$prefix}navbar-active-color: #{$navbar-light-active-color};\n --#{$prefix}navbar-brand-padding-y: #{$navbar-brand-padding-y};\n --#{$prefix}navbar-brand-margin-end: #{$navbar-brand-margin-end};\n --#{$prefix}navbar-brand-font-size: #{$navbar-brand-font-size};\n --#{$prefix}navbar-brand-color: #{$navbar-light-brand-color};\n --#{$prefix}navbar-brand-hover-color: #{$navbar-light-brand-hover-color};\n --#{$prefix}navbar-nav-link-padding-x: #{$navbar-nav-link-padding-x};\n --#{$prefix}navbar-toggler-padding-y: #{$navbar-toggler-padding-y};\n --#{$prefix}navbar-toggler-padding-x: #{$navbar-toggler-padding-x};\n --#{$prefix}navbar-toggler-font-size: #{$navbar-toggler-font-size};\n --#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-light-toggler-icon-bg)};\n --#{$prefix}navbar-toggler-border-color: #{$navbar-light-toggler-border-color};\n --#{$prefix}navbar-toggler-border-radius: #{$navbar-toggler-border-radius};\n --#{$prefix}navbar-toggler-focus-width: #{$navbar-toggler-focus-width};\n --#{$prefix}navbar-toggler-transition: #{$navbar-toggler-transition};\n // scss-docs-end navbar-css-vars\n\n position: relative;\n display: flex;\n flex-wrap: wrap; // allow us to do the line break for collapsing content\n align-items: center;\n justify-content: space-between; // space out brand from logo\n padding: var(--#{$prefix}navbar-padding-y) var(--#{$prefix}navbar-padding-x);\n @include gradient-bg();\n\n // Because flex properties aren't inherited, we need to redeclare these first\n // few properties so that content nested within behave properly.\n // The `flex-wrap` property is inherited to simplify the expanded navbars\n %container-flex-properties {\n display: flex;\n flex-wrap: inherit;\n align-items: center;\n justify-content: space-between;\n }\n\n > .container,\n > .container-fluid {\n @extend %container-flex-properties;\n }\n\n @each $breakpoint, $container-max-width in $container-max-widths {\n > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {\n @extend %container-flex-properties;\n }\n }\n}\n\n\n// Navbar brand\n//\n// Used for brand, project, or site names.\n\n.navbar-brand {\n padding-top: var(--#{$prefix}navbar-brand-padding-y);\n padding-bottom: var(--#{$prefix}navbar-brand-padding-y);\n margin-right: var(--#{$prefix}navbar-brand-margin-end);\n @include font-size(var(--#{$prefix}navbar-brand-font-size));\n color: var(--#{$prefix}navbar-brand-color);\n text-decoration: if($link-decoration == none, null, none);\n white-space: nowrap;\n\n &:hover,\n &:focus {\n color: var(--#{$prefix}navbar-brand-hover-color);\n text-decoration: if($link-hover-decoration == underline, none, null);\n }\n}\n\n\n// Navbar nav\n//\n// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).\n\n.navbar-nav {\n // scss-docs-start navbar-nav-css-vars\n --#{$prefix}nav-link-padding-x: 0;\n --#{$prefix}nav-link-padding-y: #{$nav-link-padding-y};\n @include rfs($nav-link-font-size, --#{$prefix}nav-link-font-size);\n --#{$prefix}nav-link-font-weight: #{$nav-link-font-weight};\n --#{$prefix}nav-link-color: var(--#{$prefix}navbar-color);\n --#{$prefix}nav-link-hover-color: var(--#{$prefix}navbar-hover-color);\n --#{$prefix}nav-link-disabled-color: var(--#{$prefix}navbar-disabled-color);\n // scss-docs-end navbar-nav-css-vars\n\n display: flex;\n flex-direction: column; // cannot use `inherit` to get the `.navbar`s value\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-link {\n &.active,\n &.show {\n color: var(--#{$prefix}navbar-active-color);\n }\n }\n\n .dropdown-menu {\n position: static;\n }\n}\n\n\n// Navbar text\n//\n//\n\n.navbar-text {\n padding-top: $nav-link-padding-y;\n padding-bottom: $nav-link-padding-y;\n color: var(--#{$prefix}navbar-color);\n\n a,\n a:hover,\n a:focus {\n color: var(--#{$prefix}navbar-active-color);\n }\n}\n\n\n// Responsive navbar\n//\n// Custom styles for responsive collapsing and toggling of navbar contents.\n// Powered by the collapse Bootstrap JavaScript plugin.\n\n// When collapsed, prevent the toggleable navbar contents from appearing in\n// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`\n// on the `.navbar` parent.\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n // For always expanded or extra full navbars, ensure content aligns itself\n // properly vertically. Can be easily overridden with flex utilities.\n align-items: center;\n}\n\n// Button for toggling the navbar when in its collapsed state\n.navbar-toggler {\n padding: var(--#{$prefix}navbar-toggler-padding-y) var(--#{$prefix}navbar-toggler-padding-x);\n @include font-size(var(--#{$prefix}navbar-toggler-font-size));\n line-height: 1;\n color: var(--#{$prefix}navbar-color);\n background-color: transparent; // remove default button style\n border: var(--#{$prefix}border-width) solid var(--#{$prefix}navbar-toggler-border-color); // remove default button style\n @include border-radius(var(--#{$prefix}navbar-toggler-border-radius));\n @include transition(var(--#{$prefix}navbar-toggler-transition));\n\n &:hover {\n text-decoration: none;\n }\n\n &:focus {\n text-decoration: none;\n outline: 0;\n box-shadow: 0 0 0 var(--#{$prefix}navbar-toggler-focus-width);\n }\n}\n\n// Keep as a separate element so folks can easily override it with another icon\n// or image file as needed.\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n background-image: var(--#{$prefix}navbar-toggler-icon-bg);\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100%;\n}\n\n.navbar-nav-scroll {\n max-height: var(--#{$prefix}scroll-height, 75vh);\n overflow-y: auto;\n}\n\n// scss-docs-start navbar-expand-loop\n// Generate series of `.navbar-expand-*` responsive classes for configuring\n// where your navbar collapses.\n.navbar-expand {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n // stylelint-disable-next-line scss/selector-no-union-class-name\n &#{$infix} {\n @include media-breakpoint-up($next) {\n flex-wrap: nowrap;\n justify-content: flex-start;\n\n .navbar-nav {\n flex-direction: row;\n\n .dropdown-menu {\n position: absolute;\n }\n\n .nav-link {\n padding-right: var(--#{$prefix}navbar-nav-link-padding-x);\n padding-left: var(--#{$prefix}navbar-nav-link-padding-x);\n }\n }\n\n .navbar-nav-scroll {\n overflow: visible;\n }\n\n .navbar-collapse {\n display: flex !important; // stylelint-disable-line declaration-no-important\n flex-basis: auto;\n }\n\n .navbar-toggler {\n display: none;\n }\n\n .offcanvas {\n // stylelint-disable declaration-no-important\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n @include box-shadow(none);\n @include transition(none);\n // stylelint-enable declaration-no-important\n\n .offcanvas-header {\n display: none;\n }\n\n .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n }\n }\n }\n }\n}\n// scss-docs-end navbar-expand-loop\n\n// Navbar themes\n//\n// Styles for switching between navbars with light or dark background.\n\n.navbar-light {\n @include deprecate(\"`.navbar-light`\", \"v5.2.0\", \"v6.0.0\", true);\n}\n\n.navbar-dark,\n.navbar[data-bs-theme=\"dark\"] {\n // scss-docs-start navbar-dark-css-vars\n --#{$prefix}navbar-color: #{$navbar-dark-color};\n --#{$prefix}navbar-hover-color: #{$navbar-dark-hover-color};\n --#{$prefix}navbar-disabled-color: #{$navbar-dark-disabled-color};\n --#{$prefix}navbar-active-color: #{$navbar-dark-active-color};\n --#{$prefix}navbar-brand-color: #{$navbar-dark-brand-color};\n --#{$prefix}navbar-brand-hover-color: #{$navbar-dark-brand-hover-color};\n --#{$prefix}navbar-toggler-border-color: #{$navbar-dark-toggler-border-color};\n --#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-dark-toggler-icon-bg)};\n // scss-docs-end navbar-dark-css-vars\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark) {\n .navbar-toggler-icon {\n --#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-dark-toggler-icon-bg)};\n }\n }\n}\n","//\n// Base styles\n//\n\n.card {\n // scss-docs-start card-css-vars\n --#{$prefix}card-spacer-y: #{$card-spacer-y};\n --#{$prefix}card-spacer-x: #{$card-spacer-x};\n --#{$prefix}card-title-spacer-y: #{$card-title-spacer-y};\n --#{$prefix}card-title-color: #{$card-title-color};\n --#{$prefix}card-subtitle-color: #{$card-subtitle-color};\n --#{$prefix}card-border-width: #{$card-border-width};\n --#{$prefix}card-border-color: #{$card-border-color};\n --#{$prefix}card-border-radius: #{$card-border-radius};\n --#{$prefix}card-box-shadow: #{$card-box-shadow};\n --#{$prefix}card-inner-border-radius: #{$card-inner-border-radius};\n --#{$prefix}card-cap-padding-y: #{$card-cap-padding-y};\n --#{$prefix}card-cap-padding-x: #{$card-cap-padding-x};\n --#{$prefix}card-cap-bg: #{$card-cap-bg};\n --#{$prefix}card-cap-color: #{$card-cap-color};\n --#{$prefix}card-height: #{$card-height};\n --#{$prefix}card-color: #{$card-color};\n --#{$prefix}card-bg: #{$card-bg};\n --#{$prefix}card-img-overlay-padding: #{$card-img-overlay-padding};\n --#{$prefix}card-group-margin: #{$card-group-margin};\n // scss-docs-end card-css-vars\n\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\n height: var(--#{$prefix}card-height);\n color: var(--#{$prefix}body-color);\n word-wrap: break-word;\n background-color: var(--#{$prefix}card-bg);\n background-clip: border-box;\n border: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color);\n @include border-radius(var(--#{$prefix}card-border-radius));\n @include box-shadow(var(--#{$prefix}card-box-shadow));\n\n > hr {\n margin-right: 0;\n margin-left: 0;\n }\n\n > .list-group {\n border-top: inherit;\n border-bottom: inherit;\n\n &:first-child {\n border-top-width: 0;\n @include border-top-radius(var(--#{$prefix}card-inner-border-radius));\n }\n\n &:last-child {\n border-bottom-width: 0;\n @include border-bottom-radius(var(--#{$prefix}card-inner-border-radius));\n }\n }\n\n // Due to specificity of the above selector (`.card > .list-group`), we must\n // use a child selector here to prevent double borders.\n > .card-header + .list-group,\n > .list-group + .card-footer {\n border-top: 0;\n }\n}\n\n.card-body {\n // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n // as much space as possible, ensuring footers are aligned to the bottom.\n flex: 1 1 auto;\n padding: var(--#{$prefix}card-spacer-y) var(--#{$prefix}card-spacer-x);\n color: var(--#{$prefix}card-color);\n}\n\n.card-title {\n margin-bottom: var(--#{$prefix}card-title-spacer-y);\n color: var(--#{$prefix}card-title-color);\n}\n\n.card-subtitle {\n margin-top: calc(-.5 * var(--#{$prefix}card-title-spacer-y)); // stylelint-disable-line function-disallowed-list\n margin-bottom: 0;\n color: var(--#{$prefix}card-subtitle-color);\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link {\n &:hover {\n text-decoration: if($link-hover-decoration == underline, none, null);\n }\n\n + .card-link {\n margin-left: var(--#{$prefix}card-spacer-x);\n }\n}\n\n//\n// Optional textual caps\n//\n\n.card-header {\n padding: var(--#{$prefix}card-cap-padding-y) var(--#{$prefix}card-cap-padding-x);\n margin-bottom: 0; // Removes the default margin-bottom of <hN>\n color: var(--#{$prefix}card-cap-color);\n background-color: var(--#{$prefix}card-cap-bg);\n border-bottom: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color);\n\n &:first-child {\n @include border-radius(var(--#{$prefix}card-inner-border-radius) var(--#{$prefix}card-inner-border-radius) 0 0);\n }\n}\n\n.card-footer {\n padding: var(--#{$prefix}card-cap-padding-y) var(--#{$prefix}card-cap-padding-x);\n color: var(--#{$prefix}card-cap-color);\n background-color: var(--#{$prefix}card-cap-bg);\n border-top: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color);\n\n &:last-child {\n @include border-radius(0 0 var(--#{$prefix}card-inner-border-radius) var(--#{$prefix}card-inner-border-radius));\n }\n}\n\n\n//\n// Header navs\n//\n\n.card-header-tabs {\n margin-right: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list\n margin-bottom: calc(-1 * var(--#{$prefix}card-cap-padding-y)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list\n border-bottom: 0;\n\n .nav-link.active {\n background-color: var(--#{$prefix}card-bg);\n border-bottom-color: var(--#{$prefix}card-bg);\n }\n}\n\n.card-header-pills {\n margin-right: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list\n}\n\n// Card image\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: var(--#{$prefix}card-img-overlay-padding);\n @include border-radius(var(--#{$prefix}card-inner-border-radius));\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n}\n\n.card-img,\n.card-img-top {\n @include border-top-radius(var(--#{$prefix}card-inner-border-radius));\n}\n\n.card-img,\n.card-img-bottom {\n @include border-bottom-radius(var(--#{$prefix}card-inner-border-radius));\n}\n\n\n//\n// Card groups\n//\n\n.card-group {\n // The child selector allows nested `.card` within `.card-group`\n // to display properly.\n > .card {\n margin-bottom: var(--#{$prefix}card-group-margin);\n }\n\n @include media-breakpoint-up(sm) {\n display: flex;\n flex-flow: row wrap;\n // The child selector allows nested `.card` within `.card-group`\n // to display properly.\n > .card {\n // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n flex: 1 0 0%;\n margin-bottom: 0;\n\n + .card {\n margin-left: 0;\n border-left: 0;\n }\n\n // Handle rounded corners\n @if $enable-rounded {\n &:not(:last-child) {\n @include border-end-radius(0);\n\n .card-img-top,\n .card-header {\n // stylelint-disable-next-line property-disallowed-list\n border-top-right-radius: 0;\n }\n .card-img-bottom,\n .card-footer {\n // stylelint-disable-next-line property-disallowed-list\n border-bottom-right-radius: 0;\n }\n }\n\n &:not(:first-child) {\n @include border-start-radius(0);\n\n .card-img-top,\n .card-header {\n // stylelint-disable-next-line property-disallowed-list\n border-top-left-radius: 0;\n }\n .card-img-bottom,\n .card-footer {\n // stylelint-disable-next-line property-disallowed-list\n border-bottom-left-radius: 0;\n }\n }\n }\n }\n }\n}\n","//\n// Base styles\n//\n\n.accordion {\n // scss-docs-start accordion-css-vars\n --#{$prefix}accordion-color: #{$accordion-color};\n --#{$prefix}accordion-bg: #{$accordion-bg};\n --#{$prefix}accordion-transition: #{$accordion-transition};\n --#{$prefix}accordion-border-color: #{$accordion-border-color};\n --#{$prefix}accordion-border-width: #{$accordion-border-width};\n --#{$prefix}accordion-border-radius: #{$accordion-border-radius};\n --#{$prefix}accordion-inner-border-radius: #{$accordion-inner-border-radius};\n --#{$prefix}accordion-btn-padding-x: #{$accordion-button-padding-x};\n --#{$prefix}accordion-btn-padding-y: #{$accordion-button-padding-y};\n --#{$prefix}accordion-btn-color: #{$accordion-button-color};\n --#{$prefix}accordion-btn-bg: #{$accordion-button-bg};\n --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon)};\n --#{$prefix}accordion-btn-icon-width: #{$accordion-icon-width};\n --#{$prefix}accordion-btn-icon-transform: #{$accordion-icon-transform};\n --#{$prefix}accordion-btn-icon-transition: #{$accordion-icon-transition};\n --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon)};\n --#{$prefix}accordion-btn-focus-box-shadow: #{$accordion-button-focus-box-shadow};\n --#{$prefix}accordion-body-padding-x: #{$accordion-body-padding-x};\n --#{$prefix}accordion-body-padding-y: #{$accordion-body-padding-y};\n --#{$prefix}accordion-active-color: #{$accordion-button-active-color};\n --#{$prefix}accordion-active-bg: #{$accordion-button-active-bg};\n // scss-docs-end accordion-css-vars\n}\n\n.accordion-button {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n padding: var(--#{$prefix}accordion-btn-padding-y) var(--#{$prefix}accordion-btn-padding-x);\n @include font-size($font-size-base);\n color: var(--#{$prefix}accordion-btn-color);\n text-align: left; // Reset button style\n background-color: var(--#{$prefix}accordion-btn-bg);\n border: 0;\n @include border-radius(0);\n overflow-anchor: none;\n @include transition(var(--#{$prefix}accordion-transition));\n\n &:not(.collapsed) {\n color: var(--#{$prefix}accordion-active-color);\n background-color: var(--#{$prefix}accordion-active-bg);\n box-shadow: inset 0 calc(-1 * var(--#{$prefix}accordion-border-width)) 0 var(--#{$prefix}accordion-border-color); // stylelint-disable-line function-disallowed-list\n\n &::after {\n background-image: var(--#{$prefix}accordion-btn-active-icon);\n transform: var(--#{$prefix}accordion-btn-icon-transform);\n }\n }\n\n // Accordion icon\n &::after {\n flex-shrink: 0;\n width: var(--#{$prefix}accordion-btn-icon-width);\n height: var(--#{$prefix}accordion-btn-icon-width);\n margin-left: auto;\n content: \"\";\n background-image: var(--#{$prefix}accordion-btn-icon);\n background-repeat: no-repeat;\n background-size: var(--#{$prefix}accordion-btn-icon-width);\n @include transition(var(--#{$prefix}accordion-btn-icon-transition));\n }\n\n &:hover {\n z-index: 2;\n }\n\n &:focus {\n z-index: 3;\n outline: 0;\n box-shadow: var(--#{$prefix}accordion-btn-focus-box-shadow);\n }\n}\n\n.accordion-header {\n margin-bottom: 0;\n}\n\n.accordion-item {\n color: var(--#{$prefix}accordion-color);\n background-color: var(--#{$prefix}accordion-bg);\n border: var(--#{$prefix}accordion-border-width) solid var(--#{$prefix}accordion-border-color);\n\n &:first-of-type {\n @include border-top-radius(var(--#{$prefix}accordion-border-radius));\n\n > .accordion-header .accordion-button {\n @include border-top-radius(var(--#{$prefix}accordion-inner-border-radius));\n }\n }\n\n &:not(:first-of-type) {\n border-top: 0;\n }\n\n // Only set a border-radius on the last item if the accordion is collapsed\n &:last-of-type {\n @include border-bottom-radius(var(--#{$prefix}accordion-border-radius));\n\n > .accordion-header .accordion-button {\n &.collapsed {\n @include border-bottom-radius(var(--#{$prefix}accordion-inner-border-radius));\n }\n }\n\n > .accordion-collapse {\n @include border-bottom-radius(var(--#{$prefix}accordion-border-radius));\n }\n }\n}\n\n.accordion-body {\n padding: var(--#{$prefix}accordion-body-padding-y) var(--#{$prefix}accordion-body-padding-x);\n}\n\n\n// Flush accordion items\n//\n// Remove borders and border-radius to keep accordion items edge-to-edge.\n\n.accordion-flush {\n > .accordion-item {\n border-right: 0;\n border-left: 0;\n @include border-radius(0);\n\n &:first-child { border-top: 0; }\n &:last-child { border-bottom: 0; }\n\n // stylelint-disable selector-max-class\n > .accordion-header .accordion-button {\n &,\n &.collapsed {\n @include border-radius(0);\n }\n }\n // stylelint-enable selector-max-class\n\n > .accordion-collapse {\n @include border-radius(0);\n }\n }\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark) {\n .accordion-button::after {\n --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon-dark)};\n --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon-dark)};\n }\n }\n}\n",".breadcrumb {\n // scss-docs-start breadcrumb-css-vars\n --#{$prefix}breadcrumb-padding-x: #{$breadcrumb-padding-x};\n --#{$prefix}breadcrumb-padding-y: #{$breadcrumb-padding-y};\n --#{$prefix}breadcrumb-margin-bottom: #{$breadcrumb-margin-bottom};\n @include rfs($breadcrumb-font-size, --#{$prefix}breadcrumb-font-size);\n --#{$prefix}breadcrumb-bg: #{$breadcrumb-bg};\n --#{$prefix}breadcrumb-border-radius: #{$breadcrumb-border-radius};\n --#{$prefix}breadcrumb-divider-color: #{$breadcrumb-divider-color};\n --#{$prefix}breadcrumb-item-padding-x: #{$breadcrumb-item-padding-x};\n --#{$prefix}breadcrumb-item-active-color: #{$breadcrumb-active-color};\n // scss-docs-end breadcrumb-css-vars\n\n display: flex;\n flex-wrap: wrap;\n padding: var(--#{$prefix}breadcrumb-padding-y) var(--#{$prefix}breadcrumb-padding-x);\n margin-bottom: var(--#{$prefix}breadcrumb-margin-bottom);\n @include font-size(var(--#{$prefix}breadcrumb-font-size));\n list-style: none;\n background-color: var(--#{$prefix}breadcrumb-bg);\n @include border-radius(var(--#{$prefix}breadcrumb-border-radius));\n}\n\n.breadcrumb-item {\n // The separator between breadcrumbs (by default, a forward-slash: \"/\")\n + .breadcrumb-item {\n padding-left: var(--#{$prefix}breadcrumb-item-padding-x);\n\n &::before {\n float: left; // Suppress inline spacings and underlining of the separator\n padding-right: var(--#{$prefix}breadcrumb-item-padding-x);\n color: var(--#{$prefix}breadcrumb-divider-color);\n content: var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{\"/* rtl:\"} var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{\"*/\"};\n }\n }\n\n &.active {\n color: var(--#{$prefix}breadcrumb-item-active-color);\n }\n}\n",".pagination {\n // scss-docs-start pagination-css-vars\n --#{$prefix}pagination-padding-x: #{$pagination-padding-x};\n --#{$prefix}pagination-padding-y: #{$pagination-padding-y};\n @include rfs($pagination-font-size, --#{$prefix}pagination-font-size);\n --#{$prefix}pagination-color: #{$pagination-color};\n --#{$prefix}pagination-bg: #{$pagination-bg};\n --#{$prefix}pagination-border-width: #{$pagination-border-width};\n --#{$prefix}pagination-border-color: #{$pagination-border-color};\n --#{$prefix}pagination-border-radius: #{$pagination-border-radius};\n --#{$prefix}pagination-hover-color: #{$pagination-hover-color};\n --#{$prefix}pagination-hover-bg: #{$pagination-hover-bg};\n --#{$prefix}pagination-hover-border-color: #{$pagination-hover-border-color};\n --#{$prefix}pagination-focus-color: #{$pagination-focus-color};\n --#{$prefix}pagination-focus-bg: #{$pagination-focus-bg};\n --#{$prefix}pagination-focus-box-shadow: #{$pagination-focus-box-shadow};\n --#{$prefix}pagination-active-color: #{$pagination-active-color};\n --#{$prefix}pagination-active-bg: #{$pagination-active-bg};\n --#{$prefix}pagination-active-border-color: #{$pagination-active-border-color};\n --#{$prefix}pagination-disabled-color: #{$pagination-disabled-color};\n --#{$prefix}pagination-disabled-bg: #{$pagination-disabled-bg};\n --#{$prefix}pagination-disabled-border-color: #{$pagination-disabled-border-color};\n // scss-docs-end pagination-css-vars\n\n display: flex;\n @include list-unstyled();\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: var(--#{$prefix}pagination-padding-y) var(--#{$prefix}pagination-padding-x);\n @include font-size(var(--#{$prefix}pagination-font-size));\n color: var(--#{$prefix}pagination-color);\n text-decoration: if($link-decoration == none, null, none);\n background-color: var(--#{$prefix}pagination-bg);\n border: var(--#{$prefix}pagination-border-width) solid var(--#{$prefix}pagination-border-color);\n @include transition($pagination-transition);\n\n &:hover {\n z-index: 2;\n color: var(--#{$prefix}pagination-hover-color);\n text-decoration: if($link-hover-decoration == underline, none, null);\n background-color: var(--#{$prefix}pagination-hover-bg);\n border-color: var(--#{$prefix}pagination-hover-border-color);\n }\n\n &:focus {\n z-index: 3;\n color: var(--#{$prefix}pagination-focus-color);\n background-color: var(--#{$prefix}pagination-focus-bg);\n outline: $pagination-focus-outline;\n box-shadow: var(--#{$prefix}pagination-focus-box-shadow);\n }\n\n &.active,\n .active > & {\n z-index: 3;\n color: var(--#{$prefix}pagination-active-color);\n @include gradient-bg(var(--#{$prefix}pagination-active-bg));\n border-color: var(--#{$prefix}pagination-active-border-color);\n }\n\n &.disabled,\n .disabled > & {\n color: var(--#{$prefix}pagination-disabled-color);\n pointer-events: none;\n background-color: var(--#{$prefix}pagination-disabled-bg);\n border-color: var(--#{$prefix}pagination-disabled-border-color);\n }\n}\n\n.page-item {\n &:not(:first-child) .page-link {\n margin-left: $pagination-margin-start;\n }\n\n @if $pagination-margin-start == calc(#{$pagination-border-width} * -1) {\n &:first-child {\n .page-link {\n @include border-start-radius(var(--#{$prefix}pagination-border-radius));\n }\n }\n\n &:last-child {\n .page-link {\n @include border-end-radius(var(--#{$prefix}pagination-border-radius));\n }\n }\n } @else {\n // Add border-radius to all pageLinks in case they have left margin\n .page-link {\n @include border-radius(var(--#{$prefix}pagination-border-radius));\n }\n }\n}\n\n\n//\n// Sizing\n//\n\n.pagination-lg {\n @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $pagination-border-radius-lg);\n}\n\n.pagination-sm {\n @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $pagination-border-radius-sm);\n}\n","// Pagination\n\n// scss-docs-start pagination-mixin\n@mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) {\n --#{$prefix}pagination-padding-x: #{$padding-x};\n --#{$prefix}pagination-padding-y: #{$padding-y};\n @include rfs($font-size, --#{$prefix}pagination-font-size);\n --#{$prefix}pagination-border-radius: #{$border-radius};\n}\n// scss-docs-end pagination-mixin\n","// Base class\n//\n// Requires one of the contextual, color modifier classes for `color` and\n// `background-color`.\n\n.badge {\n // scss-docs-start badge-css-vars\n --#{$prefix}badge-padding-x: #{$badge-padding-x};\n --#{$prefix}badge-padding-y: #{$badge-padding-y};\n @include rfs($badge-font-size, --#{$prefix}badge-font-size);\n --#{$prefix}badge-font-weight: #{$badge-font-weight};\n --#{$prefix}badge-color: #{$badge-color};\n --#{$prefix}badge-border-radius: #{$badge-border-radius};\n // scss-docs-end badge-css-vars\n\n display: inline-block;\n padding: var(--#{$prefix}badge-padding-y) var(--#{$prefix}badge-padding-x);\n @include font-size(var(--#{$prefix}badge-font-size));\n font-weight: var(--#{$prefix}badge-font-weight);\n line-height: 1;\n color: var(--#{$prefix}badge-color);\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n @include border-radius(var(--#{$prefix}badge-border-radius));\n @include gradient-bg();\n\n // Empty badges collapse automatically\n &:empty {\n display: none;\n }\n}\n\n// Quick fix for badges in buttons\n.btn .badge {\n position: relative;\n top: -1px;\n}\n","//\n// Base styles\n//\n\n.alert {\n // scss-docs-start alert-css-vars\n --#{$prefix}alert-bg: transparent;\n --#{$prefix}alert-padding-x: #{$alert-padding-x};\n --#{$prefix}alert-padding-y: #{$alert-padding-y};\n --#{$prefix}alert-margin-bottom: #{$alert-margin-bottom};\n --#{$prefix}alert-color: inherit;\n --#{$prefix}alert-border-color: transparent;\n --#{$prefix}alert-border: #{$alert-border-width} solid var(--#{$prefix}alert-border-color);\n --#{$prefix}alert-border-radius: #{$alert-border-radius};\n --#{$prefix}alert-link-color: inherit;\n // scss-docs-end alert-css-vars\n\n position: relative;\n padding: var(--#{$prefix}alert-padding-y) var(--#{$prefix}alert-padding-x);\n margin-bottom: var(--#{$prefix}alert-margin-bottom);\n color: var(--#{$prefix}alert-color);\n background-color: var(--#{$prefix}alert-bg);\n border: var(--#{$prefix}alert-border);\n @include border-radius(var(--#{$prefix}alert-border-radius));\n}\n\n// Headings for larger alerts\n.alert-heading {\n // Specified to prevent conflicts of changing $headings-color\n color: inherit;\n}\n\n// Provide class for links that match alerts\n.alert-link {\n font-weight: $alert-link-font-weight;\n color: var(--#{$prefix}alert-link-color);\n}\n\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissible {\n padding-right: $alert-dismissible-padding-r;\n\n // Adjust close link position\n .btn-close {\n position: absolute;\n top: 0;\n right: 0;\n z-index: $stretched-link-z-index + 1;\n padding: $alert-padding-y * 1.25 $alert-padding-x;\n }\n}\n\n\n// scss-docs-start alert-modifiers\n// Generate contextual modifier classes for colorizing the alert\n@each $state in map-keys($theme-colors) {\n .alert-#{$state} {\n --#{$prefix}alert-color: var(--#{$prefix}#{$state}-text-emphasis);\n --#{$prefix}alert-bg: var(--#{$prefix}#{$state}-bg-subtle);\n --#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-border-subtle);\n --#{$prefix}alert-link-color: var(--#{$prefix}#{$state}-text-emphasis);\n }\n}\n// scss-docs-end alert-modifiers\n","// Disable animation if transitions are disabled\n\n// scss-docs-start progress-keyframes\n@if $enable-transitions {\n @keyframes progress-bar-stripes {\n 0% { background-position-x: $progress-height; }\n }\n}\n// scss-docs-end progress-keyframes\n\n.progress,\n.progress-stacked {\n // scss-docs-start progress-css-vars\n --#{$prefix}progress-height: #{$progress-height};\n @include rfs($progress-font-size, --#{$prefix}progress-font-size);\n --#{$prefix}progress-bg: #{$progress-bg};\n --#{$prefix}progress-border-radius: #{$progress-border-radius};\n --#{$prefix}progress-box-shadow: #{$progress-box-shadow};\n --#{$prefix}progress-bar-color: #{$progress-bar-color};\n --#{$prefix}progress-bar-bg: #{$progress-bar-bg};\n --#{$prefix}progress-bar-transition: #{$progress-bar-transition};\n // scss-docs-end progress-css-vars\n\n display: flex;\n height: var(--#{$prefix}progress-height);\n overflow: hidden; // force rounded corners by cropping it\n @include font-size(var(--#{$prefix}progress-font-size));\n background-color: var(--#{$prefix}progress-bg);\n @include border-radius(var(--#{$prefix}progress-border-radius));\n @include box-shadow(var(--#{$prefix}progress-box-shadow));\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n color: var(--#{$prefix}progress-bar-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--#{$prefix}progress-bar-bg);\n @include transition(var(--#{$prefix}progress-bar-transition));\n}\n\n.progress-bar-striped {\n @include gradient-striped();\n background-size: var(--#{$prefix}progress-height) var(--#{$prefix}progress-height);\n}\n\n.progress-stacked > .progress {\n overflow: visible;\n}\n\n.progress-stacked > .progress > .progress-bar {\n width: 100%;\n}\n\n@if $enable-transitions {\n .progress-bar-animated {\n animation: $progress-bar-animation-timing progress-bar-stripes;\n\n @if $enable-reduced-motion {\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n }\n }\n}\n","// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n // scss-docs-start list-group-css-vars\n --#{$prefix}list-group-color: #{$list-group-color};\n --#{$prefix}list-group-bg: #{$list-group-bg};\n --#{$prefix}list-group-border-color: #{$list-group-border-color};\n --#{$prefix}list-group-border-width: #{$list-group-border-width};\n --#{$prefix}list-group-border-radius: #{$list-group-border-radius};\n --#{$prefix}list-group-item-padding-x: #{$list-group-item-padding-x};\n --#{$prefix}list-group-item-padding-y: #{$list-group-item-padding-y};\n --#{$prefix}list-group-action-color: #{$list-group-action-color};\n --#{$prefix}list-group-action-hover-color: #{$list-group-action-hover-color};\n --#{$prefix}list-group-action-hover-bg: #{$list-group-hover-bg};\n --#{$prefix}list-group-action-active-color: #{$list-group-action-active-color};\n --#{$prefix}list-group-action-active-bg: #{$list-group-action-active-bg};\n --#{$prefix}list-group-disabled-color: #{$list-group-disabled-color};\n --#{$prefix}list-group-disabled-bg: #{$list-group-disabled-bg};\n --#{$prefix}list-group-active-color: #{$list-group-active-color};\n --#{$prefix}list-group-active-bg: #{$list-group-active-bg};\n --#{$prefix}list-group-active-border-color: #{$list-group-active-border-color};\n // scss-docs-end list-group-css-vars\n\n display: flex;\n flex-direction: column;\n\n // No need to set list-style: none; since .list-group-item is block level\n padding-left: 0; // reset padding because ul and ol\n margin-bottom: 0;\n @include border-radius(var(--#{$prefix}list-group-border-radius));\n}\n\n.list-group-numbered {\n list-style-type: none;\n counter-reset: section;\n\n > .list-group-item::before {\n // Increments only this instance of the section counter\n content: counters(section, \".\") \". \";\n counter-increment: section;\n }\n}\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive\n// list items. Includes an extra `.active` modifier class for selected items.\n\n.list-group-item-action {\n width: 100%; // For `<button>`s (anchors become 100% by default though)\n color: var(--#{$prefix}list-group-action-color);\n text-align: inherit; // For `<button>`s (anchors inherit)\n\n // Hover state\n &:hover,\n &:focus {\n z-index: 1; // Place hover/focus items above their siblings for proper border styling\n color: var(--#{$prefix}list-group-action-hover-color);\n text-decoration: none;\n background-color: var(--#{$prefix}list-group-action-hover-bg);\n }\n\n &:active {\n color: var(--#{$prefix}list-group-action-active-color);\n background-color: var(--#{$prefix}list-group-action-active-bg);\n }\n}\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: var(--#{$prefix}list-group-item-padding-y) var(--#{$prefix}list-group-item-padding-x);\n color: var(--#{$prefix}list-group-color);\n text-decoration: if($link-decoration == none, null, none);\n background-color: var(--#{$prefix}list-group-bg);\n border: var(--#{$prefix}list-group-border-width) solid var(--#{$prefix}list-group-border-color);\n\n &:first-child {\n @include border-top-radius(inherit);\n }\n\n &:last-child {\n @include border-bottom-radius(inherit);\n }\n\n &.disabled,\n &:disabled {\n color: var(--#{$prefix}list-group-disabled-color);\n pointer-events: none;\n background-color: var(--#{$prefix}list-group-disabled-bg);\n }\n\n // Include both here for `<a>`s and `<button>`s\n &.active {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: var(--#{$prefix}list-group-active-color);\n background-color: var(--#{$prefix}list-group-active-bg);\n border-color: var(--#{$prefix}list-group-active-border-color);\n }\n\n // stylelint-disable-next-line scss/selector-no-redundant-nesting-selector\n & + .list-group-item {\n border-top-width: 0;\n\n &.active {\n margin-top: calc(-1 * var(--#{$prefix}list-group-border-width)); // stylelint-disable-line function-disallowed-list\n border-top-width: var(--#{$prefix}list-group-border-width);\n }\n }\n}\n\n// Horizontal\n//\n// Change the layout of list group items from vertical (default) to horizontal.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .list-group-horizontal#{$infix} {\n flex-direction: row;\n\n > .list-group-item {\n &:first-child:not(:last-child) {\n @include border-bottom-start-radius(var(--#{$prefix}list-group-border-radius));\n @include border-top-end-radius(0);\n }\n\n &:last-child:not(:first-child) {\n @include border-top-end-radius(var(--#{$prefix}list-group-border-radius));\n @include border-bottom-start-radius(0);\n }\n\n &.active {\n margin-top: 0;\n }\n\n + .list-group-item {\n border-top-width: var(--#{$prefix}list-group-border-width);\n border-left-width: 0;\n\n &.active {\n margin-left: calc(-1 * var(--#{$prefix}list-group-border-width)); // stylelint-disable-line function-disallowed-list\n border-left-width: var(--#{$prefix}list-group-border-width);\n }\n }\n }\n }\n }\n}\n\n\n// Flush list items\n//\n// Remove borders and border-radius to keep list group items edge-to-edge. Most\n// useful within other components (e.g., cards).\n\n.list-group-flush {\n @include border-radius(0);\n\n > .list-group-item {\n border-width: 0 0 var(--#{$prefix}list-group-border-width);\n\n &:last-child {\n border-bottom-width: 0;\n }\n }\n}\n\n\n// scss-docs-start list-group-modifiers\n// List group contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n@each $state in map-keys($theme-colors) {\n .list-group-item-#{$state} {\n --#{$prefix}list-group-color: var(--#{$prefix}#{$state}-text-emphasis);\n --#{$prefix}list-group-bg: var(--#{$prefix}#{$state}-bg-subtle);\n --#{$prefix}list-group-border-color: var(--#{$prefix}#{$state}-border-subtle);\n --#{$prefix}list-group-action-hover-color: var(--#{$prefix}emphasis-color);\n --#{$prefix}list-group-action-hover-bg: var(--#{$prefix}#{$state}-border-subtle);\n --#{$prefix}list-group-action-active-color: var(--#{$prefix}emphasis-color);\n --#{$prefix}list-group-action-active-bg: var(--#{$prefix}#{$state}-border-subtle);\n --#{$prefix}list-group-active-color: var(--#{$prefix}#{$state}-bg-subtle);\n --#{$prefix}list-group-active-bg: var(--#{$prefix}#{$state}-text-emphasis);\n --#{$prefix}list-group-active-border-color: var(--#{$prefix}#{$state}-text-emphasis);\n }\n}\n// scss-docs-end list-group-modifiers\n","// Transparent background and border properties included for button version.\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n.btn-close {\n // scss-docs-start close-css-vars\n --#{$prefix}btn-close-color: #{$btn-close-color};\n --#{$prefix}btn-close-bg: #{ escape-svg($btn-close-bg) };\n --#{$prefix}btn-close-opacity: #{$btn-close-opacity};\n --#{$prefix}btn-close-hover-opacity: #{$btn-close-hover-opacity};\n --#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow};\n --#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity};\n --#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity};\n --#{$prefix}btn-close-white-filter: #{$btn-close-white-filter};\n // scss-docs-end close-css-vars\n\n box-sizing: content-box;\n width: $btn-close-width;\n height: $btn-close-height;\n padding: $btn-close-padding-y $btn-close-padding-x;\n color: var(--#{$prefix}btn-close-color);\n background: transparent var(--#{$prefix}btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements\n border: 0; // for button elements\n @include border-radius();\n opacity: var(--#{$prefix}btn-close-opacity);\n\n // Override <a>'s hover style\n &:hover {\n color: var(--#{$prefix}btn-close-color);\n text-decoration: none;\n opacity: var(--#{$prefix}btn-close-hover-opacity);\n }\n\n &:focus {\n outline: 0;\n box-shadow: var(--#{$prefix}btn-close-focus-shadow);\n opacity: var(--#{$prefix}btn-close-focus-opacity);\n }\n\n &:disabled,\n &.disabled {\n pointer-events: none;\n user-select: none;\n opacity: var(--#{$prefix}btn-close-disabled-opacity);\n }\n}\n\n@mixin btn-close-white() {\n filter: var(--#{$prefix}btn-close-white-filter);\n}\n\n.btn-close-white {\n @include btn-close-white();\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark) {\n .btn-close {\n @include btn-close-white();\n }\n }\n}\n",".toast {\n // scss-docs-start toast-css-vars\n --#{$prefix}toast-zindex: #{$zindex-toast};\n --#{$prefix}toast-padding-x: #{$toast-padding-x};\n --#{$prefix}toast-padding-y: #{$toast-padding-y};\n --#{$prefix}toast-spacing: #{$toast-spacing};\n --#{$prefix}toast-max-width: #{$toast-max-width};\n @include rfs($toast-font-size, --#{$prefix}toast-font-size);\n --#{$prefix}toast-color: #{$toast-color};\n --#{$prefix}toast-bg: #{$toast-background-color};\n --#{$prefix}toast-border-width: #{$toast-border-width};\n --#{$prefix}toast-border-color: #{$toast-border-color};\n --#{$prefix}toast-border-radius: #{$toast-border-radius};\n --#{$prefix}toast-box-shadow: #{$toast-box-shadow};\n --#{$prefix}toast-header-color: #{$toast-header-color};\n --#{$prefix}toast-header-bg: #{$toast-header-background-color};\n --#{$prefix}toast-header-border-color: #{$toast-header-border-color};\n // scss-docs-end toast-css-vars\n\n width: var(--#{$prefix}toast-max-width);\n max-width: 100%;\n @include font-size(var(--#{$prefix}toast-font-size));\n color: var(--#{$prefix}toast-color);\n pointer-events: auto;\n background-color: var(--#{$prefix}toast-bg);\n background-clip: padding-box;\n border: var(--#{$prefix}toast-border-width) solid var(--#{$prefix}toast-border-color);\n box-shadow: var(--#{$prefix}toast-box-shadow);\n @include border-radius(var(--#{$prefix}toast-border-radius));\n\n &.showing {\n opacity: 0;\n }\n\n &:not(.show) {\n display: none;\n }\n}\n\n.toast-container {\n --#{$prefix}toast-zindex: #{$zindex-toast};\n\n position: absolute;\n z-index: var(--#{$prefix}toast-zindex);\n width: max-content;\n max-width: 100%;\n pointer-events: none;\n\n > :not(:last-child) {\n margin-bottom: var(--#{$prefix}toast-spacing);\n }\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: var(--#{$prefix}toast-padding-y) var(--#{$prefix}toast-padding-x);\n color: var(--#{$prefix}toast-header-color);\n background-color: var(--#{$prefix}toast-header-bg);\n background-clip: padding-box;\n border-bottom: var(--#{$prefix}toast-border-width) solid var(--#{$prefix}toast-header-border-color);\n @include border-top-radius(calc(var(--#{$prefix}toast-border-radius) - var(--#{$prefix}toast-border-width)));\n\n .btn-close {\n margin-right: calc(-.5 * var(--#{$prefix}toast-padding-x)); // stylelint-disable-line function-disallowed-list\n margin-left: var(--#{$prefix}toast-padding-x);\n }\n}\n\n.toast-body {\n padding: var(--#{$prefix}toast-padding-x);\n word-wrap: break-word;\n}\n","// stylelint-disable function-disallowed-list\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and stuff\n\n\n// Container that the modal scrolls within\n.modal {\n // scss-docs-start modal-css-vars\n --#{$prefix}modal-zindex: #{$zindex-modal};\n --#{$prefix}modal-width: #{$modal-md};\n --#{$prefix}modal-padding: #{$modal-inner-padding};\n --#{$prefix}modal-margin: #{$modal-dialog-margin};\n --#{$prefix}modal-color: #{$modal-content-color};\n --#{$prefix}modal-bg: #{$modal-content-bg};\n --#{$prefix}modal-border-color: #{$modal-content-border-color};\n --#{$prefix}modal-border-width: #{$modal-content-border-width};\n --#{$prefix}modal-border-radius: #{$modal-content-border-radius};\n --#{$prefix}modal-box-shadow: #{$modal-content-box-shadow-xs};\n --#{$prefix}modal-inner-border-radius: #{$modal-content-inner-border-radius};\n --#{$prefix}modal-header-padding-x: #{$modal-header-padding-x};\n --#{$prefix}modal-header-padding-y: #{$modal-header-padding-y};\n --#{$prefix}modal-header-padding: #{$modal-header-padding}; // Todo in v6: Split this padding into x and y\n --#{$prefix}modal-header-border-color: #{$modal-header-border-color};\n --#{$prefix}modal-header-border-width: #{$modal-header-border-width};\n --#{$prefix}modal-title-line-height: #{$modal-title-line-height};\n --#{$prefix}modal-footer-gap: #{$modal-footer-margin-between};\n --#{$prefix}modal-footer-bg: #{$modal-footer-bg};\n --#{$prefix}modal-footer-border-color: #{$modal-footer-border-color};\n --#{$prefix}modal-footer-border-width: #{$modal-footer-border-width};\n // scss-docs-end modal-css-vars\n\n position: fixed;\n top: 0;\n left: 0;\n z-index: var(--#{$prefix}modal-zindex);\n display: none;\n width: 100%;\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a\n // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342\n // See also https://github.com/twbs/bootstrap/issues/17695\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: var(--#{$prefix}modal-margin);\n // allow clicks to pass through for custom click handling to close modal\n pointer-events: none;\n\n // When fading in the modal, animate it to slide down\n .modal.fade & {\n @include transition($modal-transition);\n transform: $modal-fade-transform;\n }\n .modal.show & {\n transform: $modal-show-transform;\n }\n\n // When trying to close, animate focus to scale\n .modal.modal-static & {\n transform: $modal-scale-transform;\n }\n}\n\n.modal-dialog-scrollable {\n height: calc(100% - var(--#{$prefix}modal-margin) * 2);\n\n .modal-content {\n max-height: 100%;\n overflow: hidden;\n }\n\n .modal-body {\n overflow-y: auto;\n }\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - var(--#{$prefix}modal-margin) * 2);\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`\n // counteract the pointer-events: none; in the .modal-dialog\n color: var(--#{$prefix}modal-color);\n pointer-events: auto;\n background-color: var(--#{$prefix}modal-bg);\n background-clip: padding-box;\n border: var(--#{$prefix}modal-border-width) solid var(--#{$prefix}modal-border-color);\n @include border-radius(var(--#{$prefix}modal-border-radius));\n @include box-shadow(var(--#{$prefix}modal-box-shadow));\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n // scss-docs-start modal-backdrop-css-vars\n --#{$prefix}backdrop-zindex: #{$zindex-modal-backdrop};\n --#{$prefix}backdrop-bg: #{$modal-backdrop-bg};\n --#{$prefix}backdrop-opacity: #{$modal-backdrop-opacity};\n // scss-docs-end modal-backdrop-css-vars\n\n @include overlay-backdrop(var(--#{$prefix}backdrop-zindex), var(--#{$prefix}backdrop-bg), var(--#{$prefix}backdrop-opacity));\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n padding: var(--#{$prefix}modal-header-padding);\n border-bottom: var(--#{$prefix}modal-header-border-width) solid var(--#{$prefix}modal-header-border-color);\n @include border-top-radius(var(--#{$prefix}modal-inner-border-radius));\n\n .btn-close {\n padding: calc(var(--#{$prefix}modal-header-padding-y) * .5) calc(var(--#{$prefix}modal-header-padding-x) * .5);\n margin: calc(-.5 * var(--#{$prefix}modal-header-padding-y)) calc(-.5 * var(--#{$prefix}modal-header-padding-x)) calc(-.5 * var(--#{$prefix}modal-header-padding-y)) auto;\n }\n}\n\n// Title text within header\n.modal-title {\n margin-bottom: 0;\n line-height: var(--#{$prefix}modal-title-line-height);\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n // Enable `flex-grow: 1` so that the body take up as much space as possible\n // when there should be a fixed height on `.modal-dialog`.\n flex: 1 1 auto;\n padding: var(--#{$prefix}modal-padding);\n}\n\n// Footer (for actions)\n.modal-footer {\n display: flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n align-items: center; // vertically center\n justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items\n padding: calc(var(--#{$prefix}modal-padding) - var(--#{$prefix}modal-footer-gap) * .5);\n background-color: var(--#{$prefix}modal-footer-bg);\n border-top: var(--#{$prefix}modal-footer-border-width) solid var(--#{$prefix}modal-footer-border-color);\n @include border-bottom-radius(var(--#{$prefix}modal-inner-border-radius));\n\n // Place margin between footer elements\n // This solution is far from ideal because of the universal selector usage,\n // but is needed to fix https://github.com/twbs/bootstrap/issues/24800\n > * {\n margin: calc(var(--#{$prefix}modal-footer-gap) * .5); // Todo in v6: replace with gap on parent class\n }\n}\n\n// Scale up the modal\n@include media-breakpoint-up(sm) {\n .modal {\n --#{$prefix}modal-margin: #{$modal-dialog-margin-y-sm-up};\n --#{$prefix}modal-box-shadow: #{$modal-content-box-shadow-sm-up};\n }\n\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n max-width: var(--#{$prefix}modal-width);\n margin-right: auto;\n margin-left: auto;\n }\n\n .modal-sm {\n --#{$prefix}modal-width: #{$modal-sm};\n }\n}\n\n@include media-breakpoint-up(lg) {\n .modal-lg,\n .modal-xl {\n --#{$prefix}modal-width: #{$modal-lg};\n }\n}\n\n@include media-breakpoint-up(xl) {\n .modal-xl {\n --#{$prefix}modal-width: #{$modal-xl};\n }\n}\n\n// scss-docs-start modal-fullscreen-loop\n@each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n $postfix: if($infix != \"\", $infix + \"-down\", \"\");\n\n @include media-breakpoint-down($breakpoint) {\n .modal-fullscreen#{$postfix} {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n\n .modal-content {\n height: 100%;\n border: 0;\n @include border-radius(0);\n }\n\n .modal-header,\n .modal-footer {\n @include border-radius(0);\n }\n\n .modal-body {\n overflow-y: auto;\n }\n }\n }\n}\n// scss-docs-end modal-fullscreen-loop\n","// Shared between modals and offcanvases\n@mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity) {\n position: fixed;\n top: 0;\n left: 0;\n z-index: $zindex;\n width: 100vw;\n height: 100vh;\n background-color: $backdrop-bg;\n\n // Fade for backdrop\n &.fade { opacity: 0; }\n &.show { opacity: $backdrop-opacity; }\n}\n","// Base class\n.tooltip {\n // scss-docs-start tooltip-css-vars\n --#{$prefix}tooltip-zindex: #{$zindex-tooltip};\n --#{$prefix}tooltip-max-width: #{$tooltip-max-width};\n --#{$prefix}tooltip-padding-x: #{$tooltip-padding-x};\n --#{$prefix}tooltip-padding-y: #{$tooltip-padding-y};\n --#{$prefix}tooltip-margin: #{$tooltip-margin};\n @include rfs($tooltip-font-size, --#{$prefix}tooltip-font-size);\n --#{$prefix}tooltip-color: #{$tooltip-color};\n --#{$prefix}tooltip-bg: #{$tooltip-bg};\n --#{$prefix}tooltip-border-radius: #{$tooltip-border-radius};\n --#{$prefix}tooltip-opacity: #{$tooltip-opacity};\n --#{$prefix}tooltip-arrow-width: #{$tooltip-arrow-width};\n --#{$prefix}tooltip-arrow-height: #{$tooltip-arrow-height};\n // scss-docs-end tooltip-css-vars\n\n z-index: var(--#{$prefix}tooltip-zindex);\n display: block;\n margin: var(--#{$prefix}tooltip-margin);\n @include deprecate(\"`$tooltip-margin`\", \"v5\", \"v5.x\", true);\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n @include reset-text();\n @include font-size(var(--#{$prefix}tooltip-font-size));\n // Allow breaking very long words so they don't overflow the tooltip's bounds\n word-wrap: break-word;\n opacity: 0;\n\n &.show { opacity: var(--#{$prefix}tooltip-opacity); }\n\n .tooltip-arrow {\n display: block;\n width: var(--#{$prefix}tooltip-arrow-width);\n height: var(--#{$prefix}tooltip-arrow-height);\n\n &::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n }\n }\n}\n\n.bs-tooltip-top .tooltip-arrow {\n bottom: calc(-1 * var(--#{$prefix}tooltip-arrow-height)); // stylelint-disable-line function-disallowed-list\n\n &::before {\n top: -1px;\n border-width: var(--#{$prefix}tooltip-arrow-height) calc(var(--#{$prefix}tooltip-arrow-width) * .5) 0; // stylelint-disable-line function-disallowed-list\n border-top-color: var(--#{$prefix}tooltip-bg);\n }\n}\n\n/* rtl:begin:ignore */\n.bs-tooltip-end .tooltip-arrow {\n left: calc(-1 * var(--#{$prefix}tooltip-arrow-height)); // stylelint-disable-line function-disallowed-list\n width: var(--#{$prefix}tooltip-arrow-height);\n height: var(--#{$prefix}tooltip-arrow-width);\n\n &::before {\n right: -1px;\n border-width: calc(var(--#{$prefix}tooltip-arrow-width) * .5) var(--#{$prefix}tooltip-arrow-height) calc(var(--#{$prefix}tooltip-arrow-width) * .5) 0; // stylelint-disable-line function-disallowed-list\n border-right-color: var(--#{$prefix}tooltip-bg);\n }\n}\n\n/* rtl:end:ignore */\n\n.bs-tooltip-bottom .tooltip-arrow {\n top: calc(-1 * var(--#{$prefix}tooltip-arrow-height)); // stylelint-disable-line function-disallowed-list\n\n &::before {\n bottom: -1px;\n border-width: 0 calc(var(--#{$prefix}tooltip-arrow-width) * .5) var(--#{$prefix}tooltip-arrow-height); // stylelint-disable-line function-disallowed-list\n border-bottom-color: var(--#{$prefix}tooltip-bg);\n }\n}\n\n/* rtl:begin:ignore */\n.bs-tooltip-start .tooltip-arrow {\n right: calc(-1 * var(--#{$prefix}tooltip-arrow-height)); // stylelint-disable-line function-disallowed-list\n width: var(--#{$prefix}tooltip-arrow-height);\n height: var(--#{$prefix}tooltip-arrow-width);\n\n &::before {\n left: -1px;\n border-width: calc(var(--#{$prefix}tooltip-arrow-width) * .5) 0 calc(var(--#{$prefix}tooltip-arrow-width) * .5) var(--#{$prefix}tooltip-arrow-height); // stylelint-disable-line function-disallowed-list\n border-left-color: var(--#{$prefix}tooltip-bg);\n }\n}\n\n/* rtl:end:ignore */\n\n.bs-tooltip-auto {\n &[data-popper-placement^=\"top\"] {\n @extend .bs-tooltip-top;\n }\n &[data-popper-placement^=\"right\"] {\n @extend .bs-tooltip-end;\n }\n &[data-popper-placement^=\"bottom\"] {\n @extend .bs-tooltip-bottom;\n }\n &[data-popper-placement^=\"left\"] {\n @extend .bs-tooltip-start;\n }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: var(--#{$prefix}tooltip-max-width);\n padding: var(--#{$prefix}tooltip-padding-y) var(--#{$prefix}tooltip-padding-x);\n color: var(--#{$prefix}tooltip-color);\n text-align: center;\n background-color: var(--#{$prefix}tooltip-bg);\n @include border-radius(var(--#{$prefix}tooltip-border-radius));\n}\n","@mixin reset-text {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.\n font-style: normal;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n white-space: normal;\n word-spacing: normal;\n line-break: auto;\n}\n",".popover {\n // scss-docs-start popover-css-vars\n --#{$prefix}popover-zindex: #{$zindex-popover};\n --#{$prefix}popover-max-width: #{$popover-max-width};\n @include rfs($popover-font-size, --#{$prefix}popover-font-size);\n --#{$prefix}popover-bg: #{$popover-bg};\n --#{$prefix}popover-border-width: #{$popover-border-width};\n --#{$prefix}popover-border-color: #{$popover-border-color};\n --#{$prefix}popover-border-radius: #{$popover-border-radius};\n --#{$prefix}popover-inner-border-radius: #{$popover-inner-border-radius};\n --#{$prefix}popover-box-shadow: #{$popover-box-shadow};\n --#{$prefix}popover-header-padding-x: #{$popover-header-padding-x};\n --#{$prefix}popover-header-padding-y: #{$popover-header-padding-y};\n @include rfs($popover-header-font-size, --#{$prefix}popover-header-font-size);\n --#{$prefix}popover-header-color: #{$popover-header-color};\n --#{$prefix}popover-header-bg: #{$popover-header-bg};\n --#{$prefix}popover-body-padding-x: #{$popover-body-padding-x};\n --#{$prefix}popover-body-padding-y: #{$popover-body-padding-y};\n --#{$prefix}popover-body-color: #{$popover-body-color};\n --#{$prefix}popover-arrow-width: #{$popover-arrow-width};\n --#{$prefix}popover-arrow-height: #{$popover-arrow-height};\n --#{$prefix}popover-arrow-border: var(--#{$prefix}popover-border-color);\n // scss-docs-end popover-css-vars\n\n z-index: var(--#{$prefix}popover-zindex);\n display: block;\n max-width: var(--#{$prefix}popover-max-width);\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n @include reset-text();\n @include font-size(var(--#{$prefix}popover-font-size));\n // Allow breaking very long words so they don't overflow the popover's bounds\n word-wrap: break-word;\n background-color: var(--#{$prefix}popover-bg);\n background-clip: padding-box;\n border: var(--#{$prefix}popover-border-width) solid var(--#{$prefix}popover-border-color);\n @include border-radius(var(--#{$prefix}popover-border-radius));\n @include box-shadow(var(--#{$prefix}popover-box-shadow));\n\n .popover-arrow {\n display: block;\n width: var(--#{$prefix}popover-arrow-width);\n height: var(--#{$prefix}popover-arrow-height);\n\n &::before,\n &::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n border-width: 0;\n }\n }\n}\n\n.bs-popover-top {\n > .popover-arrow {\n bottom: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list\n\n &::before,\n &::after {\n border-width: var(--#{$prefix}popover-arrow-height) calc(var(--#{$prefix}popover-arrow-width) * .5) 0; // stylelint-disable-line function-disallowed-list\n }\n\n &::before {\n bottom: 0;\n border-top-color: var(--#{$prefix}popover-arrow-border);\n }\n\n &::after {\n bottom: var(--#{$prefix}popover-border-width);\n border-top-color: var(--#{$prefix}popover-bg);\n }\n }\n}\n\n/* rtl:begin:ignore */\n.bs-popover-end {\n > .popover-arrow {\n left: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list\n width: var(--#{$prefix}popover-arrow-height);\n height: var(--#{$prefix}popover-arrow-width);\n\n &::before,\n &::after {\n border-width: calc(var(--#{$prefix}popover-arrow-width) * .5) var(--#{$prefix}popover-arrow-height) calc(var(--#{$prefix}popover-arrow-width) * .5) 0; // stylelint-disable-line function-disallowed-list\n }\n\n &::before {\n left: 0;\n border-right-color: var(--#{$prefix}popover-arrow-border);\n }\n\n &::after {\n left: var(--#{$prefix}popover-border-width);\n border-right-color: var(--#{$prefix}popover-bg);\n }\n }\n}\n\n/* rtl:end:ignore */\n\n.bs-popover-bottom {\n > .popover-arrow {\n top: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list\n\n &::before,\n &::after {\n border-width: 0 calc(var(--#{$prefix}popover-arrow-width) * .5) var(--#{$prefix}popover-arrow-height); // stylelint-disable-line function-disallowed-list\n }\n\n &::before {\n top: 0;\n border-bottom-color: var(--#{$prefix}popover-arrow-border);\n }\n\n &::after {\n top: var(--#{$prefix}popover-border-width);\n border-bottom-color: var(--#{$prefix}popover-bg);\n }\n }\n\n // This will remove the popover-header's border just below the arrow\n .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: var(--#{$prefix}popover-arrow-width);\n margin-left: calc(-.5 * var(--#{$prefix}popover-arrow-width)); // stylelint-disable-line function-disallowed-list\n content: \"\";\n border-bottom: var(--#{$prefix}popover-border-width) solid var(--#{$prefix}popover-header-bg);\n }\n}\n\n/* rtl:begin:ignore */\n.bs-popover-start {\n > .popover-arrow {\n right: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list\n width: var(--#{$prefix}popover-arrow-height);\n height: var(--#{$prefix}popover-arrow-width);\n\n &::before,\n &::after {\n border-width: calc(var(--#{$prefix}popover-arrow-width) * .5) 0 calc(var(--#{$prefix}popover-arrow-width) * .5) var(--#{$prefix}popover-arrow-height); // stylelint-disable-line function-disallowed-list\n }\n\n &::before {\n right: 0;\n border-left-color: var(--#{$prefix}popover-arrow-border);\n }\n\n &::after {\n right: var(--#{$prefix}popover-border-width);\n border-left-color: var(--#{$prefix}popover-bg);\n }\n }\n}\n\n/* rtl:end:ignore */\n\n.bs-popover-auto {\n &[data-popper-placement^=\"top\"] {\n @extend .bs-popover-top;\n }\n &[data-popper-placement^=\"right\"] {\n @extend .bs-popover-end;\n }\n &[data-popper-placement^=\"bottom\"] {\n @extend .bs-popover-bottom;\n }\n &[data-popper-placement^=\"left\"] {\n @extend .bs-popover-start;\n }\n}\n\n// Offset the popover to account for the popover arrow\n.popover-header {\n padding: var(--#{$prefix}popover-header-padding-y) var(--#{$prefix}popover-header-padding-x);\n margin-bottom: 0; // Reset the default from Reboot\n @include font-size(var(--#{$prefix}popover-header-font-size));\n color: var(--#{$prefix}popover-header-color);\n background-color: var(--#{$prefix}popover-header-bg);\n border-bottom: var(--#{$prefix}popover-border-width) solid var(--#{$prefix}popover-border-color);\n @include border-top-radius(var(--#{$prefix}popover-inner-border-radius));\n\n &:empty {\n display: none;\n }\n}\n\n.popover-body {\n padding: var(--#{$prefix}popover-body-padding-y) var(--#{$prefix}popover-body-padding-x);\n color: var(--#{$prefix}popover-body-color);\n}\n","// Notes on the classes:\n//\n// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)\n// even when their scroll action started on a carousel, but for compatibility (with Firefox)\n// we're preventing all actions instead\n// 2. The .carousel-item-start and .carousel-item-end is used to indicate where\n// the active slide is heading.\n// 3. .active.carousel-item is the current slide.\n// 4. .active.carousel-item-start and .active.carousel-item-end is the current\n// slide in its in-transition state. Only one of these occurs at a time.\n// 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end\n// is the upcoming slide in transition.\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n @include clearfix();\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n backface-visibility: hidden;\n @include transition($carousel-transition);\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n transform: translateX(-100%);\n}\n\n\n//\n// Alternate transitions\n//\n\n.carousel-fade {\n .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n }\n\n .carousel-item.active,\n .carousel-item-next.carousel-item-start,\n .carousel-item-prev.carousel-item-end {\n z-index: 1;\n opacity: 1;\n }\n\n .active.carousel-item-start,\n .active.carousel-item-end {\n z-index: 0;\n opacity: 0;\n @include transition(opacity 0s $carousel-transition-duration);\n }\n}\n\n\n//\n// Left/right controls for nav\n//\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n // Use flex for alignment (1-3)\n display: flex; // 1. allow flex styles\n align-items: center; // 2. vertically center contents\n justify-content: center; // 3. horizontally center contents\n width: $carousel-control-width;\n padding: 0;\n color: $carousel-control-color;\n text-align: center;\n background: none;\n border: 0;\n opacity: $carousel-control-opacity;\n @include transition($carousel-control-transition);\n\n // Hover/focus state\n &:hover,\n &:focus {\n color: $carousel-control-color;\n text-decoration: none;\n outline: 0;\n opacity: $carousel-control-hover-opacity;\n }\n}\n.carousel-control-prev {\n left: 0;\n background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null);\n}\n.carousel-control-next {\n right: 0;\n background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null);\n}\n\n// Icons for within\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: $carousel-control-icon-width;\n height: $carousel-control-icon-width;\n background-repeat: no-repeat;\n background-position: 50%;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: escape-svg($carousel-control-prev-icon-bg) #{\"/*rtl:\" + escape-svg($carousel-control-next-icon-bg) + \"*/\"};\n}\n.carousel-control-next-icon {\n background-image: escape-svg($carousel-control-next-icon-bg) #{\"/*rtl:\" + escape-svg($carousel-control-prev-icon-bg) + \"*/\"};\n}\n\n// Optional indicator pips/controls\n//\n// Add a container (such as a list) with the following class and add an item (ideally a focusable control,\n// like a button) with data-bs-target for each slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 2;\n display: flex;\n justify-content: center;\n padding: 0;\n // Use the .carousel-control's width as margin so we don't overlay those\n margin-right: $carousel-control-width;\n margin-bottom: 1rem;\n margin-left: $carousel-control-width;\n\n [data-bs-target] {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: $carousel-indicator-width;\n height: $carousel-indicator-height;\n padding: 0;\n margin-right: $carousel-indicator-spacer;\n margin-left: $carousel-indicator-spacer;\n text-indent: -999px;\n cursor: pointer;\n background-color: $carousel-indicator-active-bg;\n background-clip: padding-box;\n border: 0;\n // Use transparent borders to increase the hit area by 10px on top and bottom.\n border-top: $carousel-indicator-hit-area-height solid transparent;\n border-bottom: $carousel-indicator-hit-area-height solid transparent;\n opacity: $carousel-indicator-opacity;\n @include transition($carousel-indicator-transition);\n }\n\n .active {\n opacity: $carousel-indicator-active-opacity;\n }\n}\n\n\n// Optional captions\n//\n//\n\n.carousel-caption {\n position: absolute;\n right: (100% - $carousel-caption-width) * .5;\n bottom: $carousel-caption-spacer;\n left: (100% - $carousel-caption-width) * .5;\n padding-top: $carousel-caption-padding-y;\n padding-bottom: $carousel-caption-padding-y;\n color: $carousel-caption-color;\n text-align: center;\n}\n\n// Dark mode carousel\n\n@mixin carousel-dark() {\n .carousel-control-prev-icon,\n .carousel-control-next-icon {\n filter: $carousel-dark-control-icon-filter;\n }\n\n .carousel-indicators [data-bs-target] {\n background-color: $carousel-dark-indicator-active-bg;\n }\n\n .carousel-caption {\n color: $carousel-dark-caption-color;\n }\n}\n\n.carousel-dark {\n @include carousel-dark();\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark) {\n @if $color-mode-type == \"media-query\" {\n .carousel {\n @include carousel-dark();\n }\n } @else {\n .carousel,\n &.carousel {\n @include carousel-dark();\n }\n }\n }\n}\n","// scss-docs-start clearfix\n@mixin clearfix() {\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n}\n// scss-docs-end clearfix\n","//\n// Rotating border\n//\n\n.spinner-grow,\n.spinner-border {\n display: inline-block;\n width: var(--#{$prefix}spinner-width);\n height: var(--#{$prefix}spinner-height);\n vertical-align: var(--#{$prefix}spinner-vertical-align);\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 50%;\n animation: var(--#{$prefix}spinner-animation-speed) linear infinite var(--#{$prefix}spinner-animation-name);\n}\n\n// scss-docs-start spinner-border-keyframes\n@keyframes spinner-border {\n to { transform: rotate(360deg) #{\"/* rtl:ignore */\"}; }\n}\n// scss-docs-end spinner-border-keyframes\n\n.spinner-border {\n // scss-docs-start spinner-border-css-vars\n --#{$prefix}spinner-width: #{$spinner-width};\n --#{$prefix}spinner-height: #{$spinner-height};\n --#{$prefix}spinner-vertical-align: #{$spinner-vertical-align};\n --#{$prefix}spinner-border-width: #{$spinner-border-width};\n --#{$prefix}spinner-animation-speed: #{$spinner-animation-speed};\n --#{$prefix}spinner-animation-name: spinner-border;\n // scss-docs-end spinner-border-css-vars\n\n border: var(--#{$prefix}spinner-border-width) solid currentcolor;\n border-right-color: transparent;\n}\n\n.spinner-border-sm {\n // scss-docs-start spinner-border-sm-css-vars\n --#{$prefix}spinner-width: #{$spinner-width-sm};\n --#{$prefix}spinner-height: #{$spinner-height-sm};\n --#{$prefix}spinner-border-width: #{$spinner-border-width-sm};\n // scss-docs-end spinner-border-sm-css-vars\n}\n\n//\n// Growing circle\n//\n\n// scss-docs-start spinner-grow-keyframes\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n transform: none;\n }\n}\n// scss-docs-end spinner-grow-keyframes\n\n.spinner-grow {\n // scss-docs-start spinner-grow-css-vars\n --#{$prefix}spinner-width: #{$spinner-width};\n --#{$prefix}spinner-height: #{$spinner-height};\n --#{$prefix}spinner-vertical-align: #{$spinner-vertical-align};\n --#{$prefix}spinner-animation-speed: #{$spinner-animation-speed};\n --#{$prefix}spinner-animation-name: spinner-grow;\n // scss-docs-end spinner-grow-css-vars\n\n background-color: currentcolor;\n opacity: 0;\n}\n\n.spinner-grow-sm {\n --#{$prefix}spinner-width: #{$spinner-width-sm};\n --#{$prefix}spinner-height: #{$spinner-height-sm};\n}\n\n@if $enable-reduced-motion {\n @media (prefers-reduced-motion: reduce) {\n .spinner-border,\n .spinner-grow {\n --#{$prefix}spinner-animation-speed: #{$spinner-animation-speed * 2};\n }\n }\n}\n","// stylelint-disable function-disallowed-list\n\n%offcanvas-css-vars {\n // scss-docs-start offcanvas-css-vars\n --#{$prefix}offcanvas-zindex: #{$zindex-offcanvas};\n --#{$prefix}offcanvas-width: #{$offcanvas-horizontal-width};\n --#{$prefix}offcanvas-height: #{$offcanvas-vertical-height};\n --#{$prefix}offcanvas-padding-x: #{$offcanvas-padding-x};\n --#{$prefix}offcanvas-padding-y: #{$offcanvas-padding-y};\n --#{$prefix}offcanvas-color: #{$offcanvas-color};\n --#{$prefix}offcanvas-bg: #{$offcanvas-bg-color};\n --#{$prefix}offcanvas-border-width: #{$offcanvas-border-width};\n --#{$prefix}offcanvas-border-color: #{$offcanvas-border-color};\n --#{$prefix}offcanvas-box-shadow: #{$offcanvas-box-shadow};\n --#{$prefix}offcanvas-transition: #{transform $offcanvas-transition-duration ease-in-out};\n --#{$prefix}offcanvas-title-line-height: #{$offcanvas-title-line-height};\n // scss-docs-end offcanvas-css-vars\n}\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n .offcanvas#{$infix} {\n @extend %offcanvas-css-vars;\n }\n}\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n .offcanvas#{$infix} {\n @include media-breakpoint-down($next) {\n position: fixed;\n bottom: 0;\n z-index: var(--#{$prefix}offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--#{$prefix}offcanvas-color);\n visibility: hidden;\n background-color: var(--#{$prefix}offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n @include box-shadow(var(--#{$prefix}offcanvas-box-shadow));\n @include transition(var(--#{$prefix}offcanvas-transition));\n\n &.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--#{$prefix}offcanvas-width);\n border-right: var(--#{$prefix}offcanvas-border-width) solid var(--#{$prefix}offcanvas-border-color);\n transform: translateX(-100%);\n }\n\n &.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--#{$prefix}offcanvas-width);\n border-left: var(--#{$prefix}offcanvas-border-width) solid var(--#{$prefix}offcanvas-border-color);\n transform: translateX(100%);\n }\n\n &.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--#{$prefix}offcanvas-height);\n max-height: 100%;\n border-bottom: var(--#{$prefix}offcanvas-border-width) solid var(--#{$prefix}offcanvas-border-color);\n transform: translateY(-100%);\n }\n\n &.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--#{$prefix}offcanvas-height);\n max-height: 100%;\n border-top: var(--#{$prefix}offcanvas-border-width) solid var(--#{$prefix}offcanvas-border-color);\n transform: translateY(100%);\n }\n\n &.showing,\n &.show:not(.hiding) {\n transform: none;\n }\n\n &.showing,\n &.hiding,\n &.show {\n visibility: visible;\n }\n }\n\n @if not ($infix == \"\") {\n @include media-breakpoint-up($next) {\n --#{$prefix}offcanvas-height: auto;\n --#{$prefix}offcanvas-border-width: 0;\n background-color: transparent !important; // stylelint-disable-line declaration-no-important\n\n .offcanvas-header {\n display: none;\n }\n\n .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n // Reset `background-color` in case `.bg-*` classes are used in offcanvas\n background-color: transparent !important; // stylelint-disable-line declaration-no-important\n }\n }\n }\n }\n}\n\n.offcanvas-backdrop {\n @include overlay-backdrop($zindex-offcanvas-backdrop, $offcanvas-backdrop-bg, $offcanvas-backdrop-opacity);\n}\n\n.offcanvas-header {\n display: flex;\n align-items: center;\n padding: var(--#{$prefix}offcanvas-padding-y) var(--#{$prefix}offcanvas-padding-x);\n\n .btn-close {\n padding: calc(var(--#{$prefix}offcanvas-padding-y) * .5) calc(var(--#{$prefix}offcanvas-padding-x) * .5);\n margin: calc(-.5 * var(--#{$prefix}offcanvas-padding-y)) calc(-.5 * var(--#{$prefix}offcanvas-padding-x)) calc(-.5 * var(--#{$prefix}offcanvas-padding-y)) auto;\n }\n}\n\n.offcanvas-title {\n margin-bottom: 0;\n line-height: var(--#{$prefix}offcanvas-title-line-height);\n}\n\n.offcanvas-body {\n flex-grow: 1;\n padding: var(--#{$prefix}offcanvas-padding-y) var(--#{$prefix}offcanvas-padding-x);\n overflow-y: auto;\n}\n",".placeholder {\n display: inline-block;\n min-height: 1em;\n vertical-align: middle;\n cursor: wait;\n background-color: currentcolor;\n opacity: $placeholder-opacity-max;\n\n &.btn::before {\n display: inline-block;\n content: \"\";\n }\n}\n\n// Sizing\n.placeholder-xs {\n min-height: .6em;\n}\n\n.placeholder-sm {\n min-height: .8em;\n}\n\n.placeholder-lg {\n min-height: 1.2em;\n}\n\n// Animation\n.placeholder-glow {\n .placeholder {\n animation: placeholder-glow 2s ease-in-out infinite;\n }\n}\n\n@keyframes placeholder-glow {\n 50% {\n opacity: $placeholder-opacity-min;\n }\n}\n\n.placeholder-wave {\n mask-image: linear-gradient(130deg, $black 55%, rgba(0, 0, 0, (1 - $placeholder-opacity-min)) 75%, $black 95%);\n mask-size: 200% 100%;\n animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n 100% {\n mask-position: -200% 0%;\n }\n}\n","// All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251\n@each $color, $value in $theme-colors {\n .text-bg-#{$color} {\n color: color-contrast($value) if($enable-important-utilities, !important, null);\n background-color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null);\n }\n}\n","// All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251\n@each $color, $value in $theme-colors {\n .link-#{$color} {\n color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);\n text-decoration-color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);\n\n @if $link-shade-percentage != 0 {\n &:hover,\n &:focus {\n $hover-color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));\n color: RGBA(#{to-rgb($hover-color)}, var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);\n text-decoration-color: RGBA(to-rgb($hover-color), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);\n }\n }\n }\n}\n\n// One-off special link helper as a bridge until v6\n.link-body-emphasis {\n color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);\n text-decoration-color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);\n\n @if $link-shade-percentage != 0 {\n &:hover,\n &:focus {\n color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-opacity, .75)) if($enable-important-utilities, !important, null);\n text-decoration-color: RGBA(var(--#{$prefix}emphasis-color-rgb), var(--#{$prefix}link-underline-opacity, .75)) if($enable-important-utilities, !important, null);\n }\n }\n}\n",".focus-ring:focus {\n outline: 0;\n // By default, there is no `--bs-focus-ring-x`, `--bs-focus-ring-y`, or `--bs-focus-ring-blur`, but we provide CSS variables with fallbacks to initial `0` values\n box-shadow: var(--#{$prefix}focus-ring-x, 0) var(--#{$prefix}focus-ring-y, 0) var(--#{$prefix}focus-ring-blur, 0) var(--#{$prefix}focus-ring-width) var(--#{$prefix}focus-ring-color);\n}\n",".icon-link {\n display: inline-flex;\n gap: $icon-link-gap;\n align-items: center;\n text-decoration-color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, .5));\n text-underline-offset: $icon-link-underline-offset;\n backface-visibility: hidden;\n\n > .bi {\n flex-shrink: 0;\n width: $icon-link-icon-size;\n height: $icon-link-icon-size;\n fill: currentcolor;\n @include transition($icon-link-icon-transition);\n }\n}\n\n.icon-link-hover {\n &:hover,\n &:focus-visible {\n > .bi {\n transform: var(--#{$prefix}icon-link-transform, $icon-link-icon-transform);\n }\n }\n}\n","// Credit: Nicolas Gallagher and SUIT CSS.\n\n.ratio {\n position: relative;\n width: 100%;\n\n &::before {\n display: block;\n padding-top: var(--#{$prefix}aspect-ratio);\n content: \"\";\n }\n\n > * {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n}\n\n@each $key, $ratio in $aspect-ratios {\n .ratio-#{$key} {\n --#{$prefix}aspect-ratio: #{$ratio};\n }\n}\n","// Shorthand\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $zindex-fixed;\n}\n\n// Responsive sticky top and bottom\n@each $breakpoint in map-keys($grid-breakpoints) {\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n .sticky#{$infix}-top {\n position: sticky;\n top: 0;\n z-index: $zindex-sticky;\n }\n\n .sticky#{$infix}-bottom {\n position: sticky;\n bottom: 0;\n z-index: $zindex-sticky;\n }\n }\n}\n","// scss-docs-start stacks\n.hstack {\n display: flex;\n flex-direction: row;\n align-items: center;\n align-self: stretch;\n}\n\n.vstack {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n align-self: stretch;\n}\n// scss-docs-end stacks\n","//\n// Visually hidden\n//\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n @include visually-hidden();\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n\n // Fix for positioned table caption that could become anonymous cells\n &:not(caption) {\n position: absolute !important;\n }\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n\n@mixin visually-hidden-focusable() {\n &:not(:focus):not(:focus-within) {\n @include visually-hidden();\n }\n}\n","//\n// Stretched link\n//\n\n.stretched-link {\n &::#{$stretched-link-pseudo-element} {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: $stretched-link-z-index;\n content: \"\";\n }\n}\n","//\n// Text truncation\n//\n\n.text-truncate {\n @include text-truncate();\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n",".vr {\n display: inline-block;\n align-self: stretch;\n width: $vr-border-width;\n min-height: 1em;\n background-color: currentcolor;\n opacity: $hr-opacity;\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n","/*!\n * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n// Font Awesome core compile (Web Fonts-based)\n// -------------------------\n\n@import 'functions';\n@import 'variables';\n@import 'mixins';\n@import 'core';\n@import 'sizing';\n@import 'fixed-width';\n@import 'list';\n@import 'bordered-pulled';\n@import 'animated';\n@import 'rotated-flipped';\n@import 'stacked';\n@import 'icons';\n@import 'screen-reader';\n","// base icon class definition\n// -------------------------\n\n.#{$fa-css-prefix} {\n font-family: var(--#{$fa-css-prefix}-style-family, '#{$fa-style-family}');\n font-weight: var(--#{$fa-css-prefix}-style, #{$fa-style});\n}\n\n.#{$fa-css-prefix},\n.#{$fa-css-prefix}-classic,\n.#{$fa-css-prefix}-sharp,\n.fas,\n.#{$fa-css-prefix}-solid,\n.far,\n.#{$fa-css-prefix}-regular,\n.fab,\n.#{$fa-css-prefix}-brands {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n display: var(--#{$fa-css-prefix}-display, #{$fa-display});\n font-style: normal;\n font-variant: normal;\n line-height: 1;\n text-rendering: auto;\n}\n\n.fas,\n.#{$fa-css-prefix}-classic,\n.#{$fa-css-prefix}-solid,\n.far,\n.#{$fa-css-prefix}-regular {\n font-family: 'Font Awesome 6 Free';\n}\n\n.fab,\n.#{$fa-css-prefix}-brands {\n font-family: 'Font Awesome 6 Brands';\n}\n\n\n%fa-icon {\n @include fa-icon;\n}\n","// sizing icons\n// -------------------------\n\n// literal magnification scale\n@for $i from 1 through 10 {\n .#{$fa-css-prefix}-#{$i}x {\n font-size: $i * 1em;\n }\n}\n\n// step-based scale (with alignment)\n@each $size, $value in $fa-sizes {\n .#{$fa-css-prefix}-#{$size} {\n @include fa-size($value);\n }\n}\n","// mixins\n// --------------------------\n\n// base rendering for an icon\n@mixin fa-icon {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n display: inline-block;\n font-style: normal;\n font-variant: normal;\n font-weight: normal;\n line-height: 1;\n}\n\n// sets relative font-sizing and alignment (in _sizing)\n@mixin fa-size ($font-size) {\n font-size: fa-divide($font-size, $fa-size-scale-base) * 1em; // converts step in sizing scale into an em-based value that's relative to the scale's base\n line-height: fa-divide(1, $font-size) * 1em; // sets the line-height of the icon back to that of it's parent\n vertical-align: (fa-divide(6, $font-size) - fa-divide(3, 8)) * 1em; // vertically centers the icon taking into account the surrounding text's descender\n}\n\n// only display content to screen readers\n// see: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// see: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n@mixin fa-sr-only() {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n// use in conjunction with .sr-only to only display content when it's focused\n@mixin fa-sr-only-focusable() {\n &:not(:focus) {\n @include fa-sr-only();\n }\n}\n\n// sets a specific icon family to use alongside style + icon mixins\n\n// convenience mixins for declaring pseudo-elements by CSS variable,\n// including all style-specific font properties, and both the ::before\n// and ::after elements in the duotone case.\n@mixin fa-icon-solid($fa-var) {\n @extend %fa-icon;\n @extend .fa-solid;\n\n &::before {\n content: unquote(\"\\\"#{ $fa-var }\\\"\");\n }\n}\n@mixin fa-icon-regular($fa-var) {\n @extend %fa-icon;\n @extend .fa-regular;\n\n &::before {\n content: unquote(\"\\\"#{ $fa-var }\\\"\");\n }\n}\n@mixin fa-icon-brands($fa-var) {\n @extend %fa-icon;\n @extend .fa-brands;\n\n &::before {\n content: unquote(\"\\\"#{ $fa-var }\\\"\");\n }\n}\n","// fixed-width icons\n// -------------------------\n\n.#{$fa-css-prefix}-fw {\n text-align: center;\n width: $fa-fw-width;\n}\n","// icons in a list\n// -------------------------\n\n.#{$fa-css-prefix}-ul {\n list-style-type: none;\n margin-left: var(--#{$fa-css-prefix}-li-margin, #{$fa-li-margin});\n padding-left: 0;\n\n > li { position: relative; }\n}\n\n.#{$fa-css-prefix}-li {\n left: calc(var(--#{$fa-css-prefix}-li-width, #{$fa-li-width}) * -1);\n position: absolute;\n text-align: center;\n width: var(--#{$fa-css-prefix}-li-width, #{$fa-li-width});\n line-height: inherit;\n}\n","// bordered + pulled icons\n// -------------------------\n\n.#{$fa-css-prefix}-border {\n border-color: var(--#{$fa-css-prefix}-border-color, #{$fa-border-color});\n border-radius: var(--#{$fa-css-prefix}-border-radius, #{$fa-border-radius});\n border-style: var(--#{$fa-css-prefix}-border-style, #{$fa-border-style});\n border-width: var(--#{$fa-css-prefix}-border-width, #{$fa-border-width});\n padding: var(--#{$fa-css-prefix}-border-padding, #{$fa-border-padding});\n}\n\n.#{$fa-css-prefix}-pull-left {\n float: left;\n margin-right: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); \n}\n\n.#{$fa-css-prefix}-pull-right {\n float: right;\n margin-left: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); \n}\n","// animating icons\n// --------------------------\n\n.#{$fa-css-prefix}-beat {\n animation-name: #{$fa-css-prefix}-beat;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);\n}\n\n.#{$fa-css-prefix}-bounce {\n animation-name: #{$fa-css-prefix}-bounce;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(0.280, 0.840, 0.420, 1));\n}\n\n.#{$fa-css-prefix}-fade {\n animation-name: #{$fa-css-prefix}-fade;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));\n}\n\n.#{$fa-css-prefix}-beat-fade {\n animation-name: #{$fa-css-prefix}-beat-fade;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));\n}\n\n.#{$fa-css-prefix}-flip {\n animation-name: #{$fa-css-prefix}-flip;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);\n}\n\n.#{$fa-css-prefix}-shake {\n animation-name: #{$fa-css-prefix}-shake;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);\n}\n\n.#{$fa-css-prefix}-spin {\n animation-name: #{$fa-css-prefix}-spin;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 2s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);\n}\n\n.#{$fa-css-prefix}-spin-reverse {\n --#{$fa-css-prefix}-animation-direction: reverse;\n}\n\n.#{$fa-css-prefix}-pulse,\n.#{$fa-css-prefix}-spin-pulse {\n animation-name: #{$fa-css-prefix}-spin;\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, steps(8));\n}\n\n// if agent or operating system prefers reduced motion, disable animations\n// see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/\n// see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion\n@media (prefers-reduced-motion: reduce) {\n .#{$fa-css-prefix}-beat,\n .#{$fa-css-prefix}-bounce,\n .#{$fa-css-prefix}-fade,\n .#{$fa-css-prefix}-beat-fade,\n .#{$fa-css-prefix}-flip,\n .#{$fa-css-prefix}-pulse,\n .#{$fa-css-prefix}-shake,\n .#{$fa-css-prefix}-spin,\n .#{$fa-css-prefix}-spin-pulse {\n animation-delay: -1ms;\n animation-duration: 1ms;\n animation-iteration-count: 1;\n transition-delay: 0s;\n transition-duration: 0s;\n }\n}\n\n@keyframes #{$fa-css-prefix}-beat {\n 0%, 90% { transform: scale(1); }\n 45% { transform: scale(var(--#{$fa-css-prefix}-beat-scale, 1.25)); }\n}\n\n@keyframes #{$fa-css-prefix}-bounce {\n 0% { transform: scale(1,1) translateY(0); }\n 10% { transform: scale(var(--#{$fa-css-prefix}-bounce-start-scale-x, 1.1),var(--#{$fa-css-prefix}-bounce-start-scale-y, 0.9)) translateY(0); }\n 30% { transform: scale(var(--#{$fa-css-prefix}-bounce-jump-scale-x, 0.9),var(--#{$fa-css-prefix}-bounce-jump-scale-y, 1.1)) translateY(var(--#{$fa-css-prefix}-bounce-height, -0.5em)); }\n 50% { transform: scale(var(--#{$fa-css-prefix}-bounce-land-scale-x, 1.05),var(--#{$fa-css-prefix}-bounce-land-scale-y, 0.95)) translateY(0); }\n 57% { transform: scale(1,1) translateY(var(--#{$fa-css-prefix}-bounce-rebound, -0.125em)); }\n 64% { transform: scale(1,1) translateY(0); }\n 100% { transform: scale(1,1) translateY(0); }\n}\n\n@keyframes #{$fa-css-prefix}-fade {\n 50% { opacity: var(--#{$fa-css-prefix}-fade-opacity, 0.4); }\n}\n\n@keyframes #{$fa-css-prefix}-beat-fade {\n 0%, 100% {\n opacity: var(--#{$fa-css-prefix}-beat-fade-opacity, 0.4);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n transform: scale(var(--#{$fa-css-prefix}-beat-fade-scale, 1.125));\n }\n}\n\n@keyframes #{$fa-css-prefix}-flip {\n 50% {\n transform: rotate3d(var(--#{$fa-css-prefix}-flip-x, 0), var(--#{$fa-css-prefix}-flip-y, 1), var(--#{$fa-css-prefix}-flip-z, 0), var(--#{$fa-css-prefix}-flip-angle, -180deg));\n }\n}\n\n@keyframes #{$fa-css-prefix}-shake {\n 0% { transform: rotate(-15deg); }\n 4% { transform: rotate(15deg); }\n 8%, 24% { transform: rotate(-18deg); }\n 12%, 28% { transform: rotate(18deg); }\n 16% { transform: rotate(-22deg); }\n 20% { transform: rotate(22deg); }\n 32% { transform: rotate(-12deg); }\n 36% { transform: rotate(12deg); }\n 40%, 100% { transform: rotate(0deg); }\n}\n\n@keyframes #{$fa-css-prefix}-spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n","// rotating + flipping icons\n// -------------------------\n\n.#{$fa-css-prefix}-rotate-90 {\n transform: rotate(90deg);\n}\n\n.#{$fa-css-prefix}-rotate-180 {\n transform: rotate(180deg);\n}\n\n.#{$fa-css-prefix}-rotate-270 {\n transform: rotate(270deg);\n}\n\n.#{$fa-css-prefix}-flip-horizontal {\n transform: scale(-1, 1);\n}\n\n.#{$fa-css-prefix}-flip-vertical {\n transform: scale(1, -1);\n}\n\n.#{$fa-css-prefix}-flip-both,\n.#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical {\n transform: scale(-1, -1);\n}\n\n.#{$fa-css-prefix}-rotate-by {\n transform: rotate(var(--#{$fa-css-prefix}-rotate-angle, 0));\n}\n","// stacking icons\n// -------------------------\n\n.#{$fa-css-prefix}-stack {\n display: inline-block;\n height: 2em;\n line-height: 2em;\n position: relative;\n vertical-align: $fa-stack-vertical-align;\n width: $fa-stack-width;\n}\n\n.#{$fa-css-prefix}-stack-1x,\n.#{$fa-css-prefix}-stack-2x {\n left: 0;\n position: absolute;\n text-align: center;\n width: 100%;\n z-index: var(--#{$fa-css-prefix}-stack-z-index, #{$fa-stack-z-index});\n}\n\n.#{$fa-css-prefix}-stack-1x {\n line-height: inherit;\n}\n\n.#{$fa-css-prefix}-stack-2x {\n font-size: 2em;\n}\n\n.#{$fa-css-prefix}-inverse {\n color: var(--#{$fa-css-prefix}-inverse, #{$fa-inverse});\n}\n","// variables\n// --------------------------\n\n$fa-css-prefix : fa !default;\n$fa-style : 900 !default;\n$fa-style-family : \"Font Awesome 6 Free\" !default;\n\n$fa-display : inline-block !default;\n\n$fa-fw-width : fa-divide(20em, 16) !default;\n$fa-inverse : #fff !default;\n\n$fa-border-color : #eee !default;\n$fa-border-padding : .2em .25em .15em !default;\n$fa-border-radius : .1em !default;\n$fa-border-style : solid !default;\n$fa-border-width : .08em !default;\n\n$fa-size-scale-2xs : 10 !default;\n$fa-size-scale-xs : 12 !default;\n$fa-size-scale-sm : 14 !default;\n$fa-size-scale-base : 16 !default;\n$fa-size-scale-lg : 20 !default;\n$fa-size-scale-xl : 24 !default;\n$fa-size-scale-2xl : 32 !default;\n\n$fa-sizes: (\n \"2xs\" : $fa-size-scale-2xs,\n \"xs\" : $fa-size-scale-xs,\n \"sm\" : $fa-size-scale-sm,\n \"lg\" : $fa-size-scale-lg,\n \"xl\" : $fa-size-scale-xl,\n \"2xl\" : $fa-size-scale-2xl\n) !default;\n\n$fa-li-width : 2em !default;\n$fa-li-margin : $fa-li-width * fa-divide(5, 4) !default;\n\n$fa-pull-margin : .3em !default;\n\n$fa-primary-opacity : 1 !default;\n$fa-secondary-opacity : .4 !default;\n\n$fa-stack-vertical-align: middle !default;\n$fa-stack-width : ($fa-fw-width * 2) !default;\n$fa-stack-z-index : auto !default;\n\n$fa-font-display : block !default;\n$fa-font-path : \"../webfonts\" !default;\n\n$fa-var-0: \\30;\n$fa-var-1: \\31;\n$fa-var-2: \\32;\n$fa-var-3: \\33;\n$fa-var-4: \\34;\n$fa-var-5: \\35;\n$fa-var-6: \\36;\n$fa-var-7: \\37;\n$fa-var-8: \\38;\n$fa-var-9: \\39;\n$fa-var-fill-drip: \\f576;\n$fa-var-arrows-to-circle: \\e4bd;\n$fa-var-circle-chevron-right: \\f138;\n$fa-var-chevron-circle-right: \\f138;\n$fa-var-at: \\40;\n$fa-var-trash-can: \\f2ed;\n$fa-var-trash-alt: \\f2ed;\n$fa-var-text-height: \\f034;\n$fa-var-user-xmark: \\f235;\n$fa-var-user-times: \\f235;\n$fa-var-stethoscope: \\f0f1;\n$fa-var-message: \\f27a;\n$fa-var-comment-alt: \\f27a;\n$fa-var-info: \\f129;\n$fa-var-down-left-and-up-right-to-center: \\f422;\n$fa-var-compress-alt: \\f422;\n$fa-var-explosion: \\e4e9;\n$fa-var-file-lines: \\f15c;\n$fa-var-file-alt: \\f15c;\n$fa-var-file-text: \\f15c;\n$fa-var-wave-square: \\f83e;\n$fa-var-ring: \\f70b;\n$fa-var-building-un: \\e4d9;\n$fa-var-dice-three: \\f527;\n$fa-var-calendar-days: \\f073;\n$fa-var-calendar-alt: \\f073;\n$fa-var-anchor-circle-check: \\e4aa;\n$fa-var-building-circle-arrow-right: \\e4d1;\n$fa-var-volleyball: \\f45f;\n$fa-var-volleyball-ball: \\f45f;\n$fa-var-arrows-up-to-line: \\e4c2;\n$fa-var-sort-down: \\f0dd;\n$fa-var-sort-desc: \\f0dd;\n$fa-var-circle-minus: \\f056;\n$fa-var-minus-circle: \\f056;\n$fa-var-door-open: \\f52b;\n$fa-var-right-from-bracket: \\f2f5;\n$fa-var-sign-out-alt: \\f2f5;\n$fa-var-atom: \\f5d2;\n$fa-var-soap: \\e06e;\n$fa-var-icons: \\f86d;\n$fa-var-heart-music-camera-bolt: \\f86d;\n$fa-var-microphone-lines-slash: \\f539;\n$fa-var-microphone-alt-slash: \\f539;\n$fa-var-bridge-circle-check: \\e4c9;\n$fa-var-pump-medical: \\e06a;\n$fa-var-fingerprint: \\f577;\n$fa-var-hand-point-right: \\f0a4;\n$fa-var-magnifying-glass-location: \\f689;\n$fa-var-search-location: \\f689;\n$fa-var-forward-step: \\f051;\n$fa-var-step-forward: \\f051;\n$fa-var-face-smile-beam: \\f5b8;\n$fa-var-smile-beam: \\f5b8;\n$fa-var-flag-checkered: \\f11e;\n$fa-var-football: \\f44e;\n$fa-var-football-ball: \\f44e;\n$fa-var-school-circle-exclamation: \\e56c;\n$fa-var-crop: \\f125;\n$fa-var-angles-down: \\f103;\n$fa-var-angle-double-down: \\f103;\n$fa-var-users-rectangle: \\e594;\n$fa-var-people-roof: \\e537;\n$fa-var-people-line: \\e534;\n$fa-var-beer-mug-empty: \\f0fc;\n$fa-var-beer: \\f0fc;\n$fa-var-diagram-predecessor: \\e477;\n$fa-var-arrow-up-long: \\f176;\n$fa-var-long-arrow-up: \\f176;\n$fa-var-fire-flame-simple: \\f46a;\n$fa-var-burn: \\f46a;\n$fa-var-person: \\f183;\n$fa-var-male: \\f183;\n$fa-var-laptop: \\f109;\n$fa-var-file-csv: \\f6dd;\n$fa-var-menorah: \\f676;\n$fa-var-truck-plane: \\e58f;\n$fa-var-record-vinyl: \\f8d9;\n$fa-var-face-grin-stars: \\f587;\n$fa-var-grin-stars: \\f587;\n$fa-var-bong: \\f55c;\n$fa-var-spaghetti-monster-flying: \\f67b;\n$fa-var-pastafarianism: \\f67b;\n$fa-var-arrow-down-up-across-line: \\e4af;\n$fa-var-spoon: \\f2e5;\n$fa-var-utensil-spoon: \\f2e5;\n$fa-var-jar-wheat: \\e517;\n$fa-var-envelopes-bulk: \\f674;\n$fa-var-mail-bulk: \\f674;\n$fa-var-file-circle-exclamation: \\e4eb;\n$fa-var-circle-h: \\f47e;\n$fa-var-hospital-symbol: \\f47e;\n$fa-var-pager: \\f815;\n$fa-var-address-book: \\f2b9;\n$fa-var-contact-book: \\f2b9;\n$fa-var-strikethrough: \\f0cc;\n$fa-var-k: \\4b;\n$fa-var-landmark-flag: \\e51c;\n$fa-var-pencil: \\f303;\n$fa-var-pencil-alt: \\f303;\n$fa-var-backward: \\f04a;\n$fa-var-caret-right: \\f0da;\n$fa-var-comments: \\f086;\n$fa-var-paste: \\f0ea;\n$fa-var-file-clipboard: \\f0ea;\n$fa-var-code-pull-request: \\e13c;\n$fa-var-clipboard-list: \\f46d;\n$fa-var-truck-ramp-box: \\f4de;\n$fa-var-truck-loading: \\f4de;\n$fa-var-user-check: \\f4fc;\n$fa-var-vial-virus: \\e597;\n$fa-var-sheet-plastic: \\e571;\n$fa-var-blog: \\f781;\n$fa-var-user-ninja: \\f504;\n$fa-var-person-arrow-up-from-line: \\e539;\n$fa-var-scroll-torah: \\f6a0;\n$fa-var-torah: \\f6a0;\n$fa-var-broom-ball: \\f458;\n$fa-var-quidditch: \\f458;\n$fa-var-quidditch-broom-ball: \\f458;\n$fa-var-toggle-off: \\f204;\n$fa-var-box-archive: \\f187;\n$fa-var-archive: \\f187;\n$fa-var-person-drowning: \\e545;\n$fa-var-arrow-down-9-1: \\f886;\n$fa-var-sort-numeric-desc: \\f886;\n$fa-var-sort-numeric-down-alt: \\f886;\n$fa-var-face-grin-tongue-squint: \\f58a;\n$fa-var-grin-tongue-squint: \\f58a;\n$fa-var-spray-can: \\f5bd;\n$fa-var-truck-monster: \\f63b;\n$fa-var-w: \\57;\n$fa-var-earth-africa: \\f57c;\n$fa-var-globe-africa: \\f57c;\n$fa-var-rainbow: \\f75b;\n$fa-var-circle-notch: \\f1ce;\n$fa-var-tablet-screen-button: \\f3fa;\n$fa-var-tablet-alt: \\f3fa;\n$fa-var-paw: \\f1b0;\n$fa-var-cloud: \\f0c2;\n$fa-var-trowel-bricks: \\e58a;\n$fa-var-face-flushed: \\f579;\n$fa-var-flushed: \\f579;\n$fa-var-hospital-user: \\f80d;\n$fa-var-tent-arrow-left-right: \\e57f;\n$fa-var-gavel: \\f0e3;\n$fa-var-legal: \\f0e3;\n$fa-var-binoculars: \\f1e5;\n$fa-var-microphone-slash: \\f131;\n$fa-var-box-tissue: \\e05b;\n$fa-var-motorcycle: \\f21c;\n$fa-var-bell-concierge: \\f562;\n$fa-var-concierge-bell: \\f562;\n$fa-var-pen-ruler: \\f5ae;\n$fa-var-pencil-ruler: \\f5ae;\n$fa-var-people-arrows: \\e068;\n$fa-var-people-arrows-left-right: \\e068;\n$fa-var-mars-and-venus-burst: \\e523;\n$fa-var-square-caret-right: \\f152;\n$fa-var-caret-square-right: \\f152;\n$fa-var-scissors: \\f0c4;\n$fa-var-cut: \\f0c4;\n$fa-var-sun-plant-wilt: \\e57a;\n$fa-var-toilets-portable: \\e584;\n$fa-var-hockey-puck: \\f453;\n$fa-var-table: \\f0ce;\n$fa-var-magnifying-glass-arrow-right: \\e521;\n$fa-var-tachograph-digital: \\f566;\n$fa-var-digital-tachograph: \\f566;\n$fa-var-users-slash: \\e073;\n$fa-var-clover: \\e139;\n$fa-var-reply: \\f3e5;\n$fa-var-mail-reply: \\f3e5;\n$fa-var-star-and-crescent: \\f699;\n$fa-var-house-fire: \\e50c;\n$fa-var-square-minus: \\f146;\n$fa-var-minus-square: \\f146;\n$fa-var-helicopter: \\f533;\n$fa-var-compass: \\f14e;\n$fa-var-square-caret-down: \\f150;\n$fa-var-caret-square-down: \\f150;\n$fa-var-file-circle-question: \\e4ef;\n$fa-var-laptop-code: \\f5fc;\n$fa-var-swatchbook: \\f5c3;\n$fa-var-prescription-bottle: \\f485;\n$fa-var-bars: \\f0c9;\n$fa-var-navicon: \\f0c9;\n$fa-var-people-group: \\e533;\n$fa-var-hourglass-end: \\f253;\n$fa-var-hourglass-3: \\f253;\n$fa-var-heart-crack: \\f7a9;\n$fa-var-heart-broken: \\f7a9;\n$fa-var-square-up-right: \\f360;\n$fa-var-external-link-square-alt: \\f360;\n$fa-var-face-kiss-beam: \\f597;\n$fa-var-kiss-beam: \\f597;\n$fa-var-film: \\f008;\n$fa-var-ruler-horizontal: \\f547;\n$fa-var-people-robbery: \\e536;\n$fa-var-lightbulb: \\f0eb;\n$fa-var-caret-left: \\f0d9;\n$fa-var-circle-exclamation: \\f06a;\n$fa-var-exclamation-circle: \\f06a;\n$fa-var-school-circle-xmark: \\e56d;\n$fa-var-arrow-right-from-bracket: \\f08b;\n$fa-var-sign-out: \\f08b;\n$fa-var-circle-chevron-down: \\f13a;\n$fa-var-chevron-circle-down: \\f13a;\n$fa-var-unlock-keyhole: \\f13e;\n$fa-var-unlock-alt: \\f13e;\n$fa-var-cloud-showers-heavy: \\f740;\n$fa-var-headphones-simple: \\f58f;\n$fa-var-headphones-alt: \\f58f;\n$fa-var-sitemap: \\f0e8;\n$fa-var-circle-dollar-to-slot: \\f4b9;\n$fa-var-donate: \\f4b9;\n$fa-var-memory: \\f538;\n$fa-var-road-spikes: \\e568;\n$fa-var-fire-burner: \\e4f1;\n$fa-var-flag: \\f024;\n$fa-var-hanukiah: \\f6e6;\n$fa-var-feather: \\f52d;\n$fa-var-volume-low: \\f027;\n$fa-var-volume-down: \\f027;\n$fa-var-comment-slash: \\f4b3;\n$fa-var-cloud-sun-rain: \\f743;\n$fa-var-compress: \\f066;\n$fa-var-wheat-awn: \\e2cd;\n$fa-var-wheat-alt: \\e2cd;\n$fa-var-ankh: \\f644;\n$fa-var-hands-holding-child: \\e4fa;\n$fa-var-asterisk: \\2a;\n$fa-var-square-check: \\f14a;\n$fa-var-check-square: \\f14a;\n$fa-var-peseta-sign: \\e221;\n$fa-var-heading: \\f1dc;\n$fa-var-header: \\f1dc;\n$fa-var-ghost: \\f6e2;\n$fa-var-list: \\f03a;\n$fa-var-list-squares: \\f03a;\n$fa-var-square-phone-flip: \\f87b;\n$fa-var-phone-square-alt: \\f87b;\n$fa-var-cart-plus: \\f217;\n$fa-var-gamepad: \\f11b;\n$fa-var-circle-dot: \\f192;\n$fa-var-dot-circle: \\f192;\n$fa-var-face-dizzy: \\f567;\n$fa-var-dizzy: \\f567;\n$fa-var-egg: \\f7fb;\n$fa-var-house-medical-circle-xmark: \\e513;\n$fa-var-campground: \\f6bb;\n$fa-var-folder-plus: \\f65e;\n$fa-var-futbol: \\f1e3;\n$fa-var-futbol-ball: \\f1e3;\n$fa-var-soccer-ball: \\f1e3;\n$fa-var-paintbrush: \\f1fc;\n$fa-var-paint-brush: \\f1fc;\n$fa-var-lock: \\f023;\n$fa-var-gas-pump: \\f52f;\n$fa-var-hot-tub-person: \\f593;\n$fa-var-hot-tub: \\f593;\n$fa-var-map-location: \\f59f;\n$fa-var-map-marked: \\f59f;\n$fa-var-house-flood-water: \\e50e;\n$fa-var-tree: \\f1bb;\n$fa-var-bridge-lock: \\e4cc;\n$fa-var-sack-dollar: \\f81d;\n$fa-var-pen-to-square: \\f044;\n$fa-var-edit: \\f044;\n$fa-var-car-side: \\f5e4;\n$fa-var-share-nodes: \\f1e0;\n$fa-var-share-alt: \\f1e0;\n$fa-var-heart-circle-minus: \\e4ff;\n$fa-var-hourglass-half: \\f252;\n$fa-var-hourglass-2: \\f252;\n$fa-var-microscope: \\f610;\n$fa-var-sink: \\e06d;\n$fa-var-bag-shopping: \\f290;\n$fa-var-shopping-bag: \\f290;\n$fa-var-arrow-down-z-a: \\f881;\n$fa-var-sort-alpha-desc: \\f881;\n$fa-var-sort-alpha-down-alt: \\f881;\n$fa-var-mitten: \\f7b5;\n$fa-var-person-rays: \\e54d;\n$fa-var-users: \\f0c0;\n$fa-var-eye-slash: \\f070;\n$fa-var-flask-vial: \\e4f3;\n$fa-var-hand: \\f256;\n$fa-var-hand-paper: \\f256;\n$fa-var-om: \\f679;\n$fa-var-worm: \\e599;\n$fa-var-house-circle-xmark: \\e50b;\n$fa-var-plug: \\f1e6;\n$fa-var-chevron-up: \\f077;\n$fa-var-hand-spock: \\f259;\n$fa-var-stopwatch: \\f2f2;\n$fa-var-face-kiss: \\f596;\n$fa-var-kiss: \\f596;\n$fa-var-bridge-circle-xmark: \\e4cb;\n$fa-var-face-grin-tongue: \\f589;\n$fa-var-grin-tongue: \\f589;\n$fa-var-chess-bishop: \\f43a;\n$fa-var-face-grin-wink: \\f58c;\n$fa-var-grin-wink: \\f58c;\n$fa-var-ear-deaf: \\f2a4;\n$fa-var-deaf: \\f2a4;\n$fa-var-deafness: \\f2a4;\n$fa-var-hard-of-hearing: \\f2a4;\n$fa-var-road-circle-check: \\e564;\n$fa-var-dice-five: \\f523;\n$fa-var-square-rss: \\f143;\n$fa-var-rss-square: \\f143;\n$fa-var-land-mine-on: \\e51b;\n$fa-var-i-cursor: \\f246;\n$fa-var-stamp: \\f5bf;\n$fa-var-stairs: \\e289;\n$fa-var-i: \\49;\n$fa-var-hryvnia-sign: \\f6f2;\n$fa-var-hryvnia: \\f6f2;\n$fa-var-pills: \\f484;\n$fa-var-face-grin-wide: \\f581;\n$fa-var-grin-alt: \\f581;\n$fa-var-tooth: \\f5c9;\n$fa-var-v: \\56;\n$fa-var-bangladeshi-taka-sign: \\e2e6;\n$fa-var-bicycle: \\f206;\n$fa-var-staff-snake: \\e579;\n$fa-var-rod-asclepius: \\e579;\n$fa-var-rod-snake: \\e579;\n$fa-var-staff-aesculapius: \\e579;\n$fa-var-head-side-cough-slash: \\e062;\n$fa-var-truck-medical: \\f0f9;\n$fa-var-ambulance: \\f0f9;\n$fa-var-wheat-awn-circle-exclamation: \\e598;\n$fa-var-snowman: \\f7d0;\n$fa-var-mortar-pestle: \\f5a7;\n$fa-var-road-barrier: \\e562;\n$fa-var-school: \\f549;\n$fa-var-igloo: \\f7ae;\n$fa-var-joint: \\f595;\n$fa-var-angle-right: \\f105;\n$fa-var-horse: \\f6f0;\n$fa-var-q: \\51;\n$fa-var-g: \\47;\n$fa-var-notes-medical: \\f481;\n$fa-var-temperature-half: \\f2c9;\n$fa-var-temperature-2: \\f2c9;\n$fa-var-thermometer-2: \\f2c9;\n$fa-var-thermometer-half: \\f2c9;\n$fa-var-dong-sign: \\e169;\n$fa-var-capsules: \\f46b;\n$fa-var-poo-storm: \\f75a;\n$fa-var-poo-bolt: \\f75a;\n$fa-var-face-frown-open: \\f57a;\n$fa-var-frown-open: \\f57a;\n$fa-var-hand-point-up: \\f0a6;\n$fa-var-money-bill: \\f0d6;\n$fa-var-bookmark: \\f02e;\n$fa-var-align-justify: \\f039;\n$fa-var-umbrella-beach: \\f5ca;\n$fa-var-helmet-un: \\e503;\n$fa-var-bullseye: \\f140;\n$fa-var-bacon: \\f7e5;\n$fa-var-hand-point-down: \\f0a7;\n$fa-var-arrow-up-from-bracket: \\e09a;\n$fa-var-folder: \\f07b;\n$fa-var-folder-blank: \\f07b;\n$fa-var-file-waveform: \\f478;\n$fa-var-file-medical-alt: \\f478;\n$fa-var-radiation: \\f7b9;\n$fa-var-chart-simple: \\e473;\n$fa-var-mars-stroke: \\f229;\n$fa-var-vial: \\f492;\n$fa-var-gauge: \\f624;\n$fa-var-dashboard: \\f624;\n$fa-var-gauge-med: \\f624;\n$fa-var-tachometer-alt-average: \\f624;\n$fa-var-wand-magic-sparkles: \\e2ca;\n$fa-var-magic-wand-sparkles: \\e2ca;\n$fa-var-e: \\45;\n$fa-var-pen-clip: \\f305;\n$fa-var-pen-alt: \\f305;\n$fa-var-bridge-circle-exclamation: \\e4ca;\n$fa-var-user: \\f007;\n$fa-var-school-circle-check: \\e56b;\n$fa-var-dumpster: \\f793;\n$fa-var-van-shuttle: \\f5b6;\n$fa-var-shuttle-van: \\f5b6;\n$fa-var-building-user: \\e4da;\n$fa-var-square-caret-left: \\f191;\n$fa-var-caret-square-left: \\f191;\n$fa-var-highlighter: \\f591;\n$fa-var-key: \\f084;\n$fa-var-bullhorn: \\f0a1;\n$fa-var-globe: \\f0ac;\n$fa-var-synagogue: \\f69b;\n$fa-var-person-half-dress: \\e548;\n$fa-var-road-bridge: \\e563;\n$fa-var-location-arrow: \\f124;\n$fa-var-c: \\43;\n$fa-var-tablet-button: \\f10a;\n$fa-var-building-lock: \\e4d6;\n$fa-var-pizza-slice: \\f818;\n$fa-var-money-bill-wave: \\f53a;\n$fa-var-chart-area: \\f1fe;\n$fa-var-area-chart: \\f1fe;\n$fa-var-house-flag: \\e50d;\n$fa-var-person-circle-minus: \\e540;\n$fa-var-ban: \\f05e;\n$fa-var-cancel: \\f05e;\n$fa-var-camera-rotate: \\e0d8;\n$fa-var-spray-can-sparkles: \\f5d0;\n$fa-var-air-freshener: \\f5d0;\n$fa-var-star: \\f005;\n$fa-var-repeat: \\f363;\n$fa-var-cross: \\f654;\n$fa-var-box: \\f466;\n$fa-var-venus-mars: \\f228;\n$fa-var-arrow-pointer: \\f245;\n$fa-var-mouse-pointer: \\f245;\n$fa-var-maximize: \\f31e;\n$fa-var-expand-arrows-alt: \\f31e;\n$fa-var-charging-station: \\f5e7;\n$fa-var-shapes: \\f61f;\n$fa-var-triangle-circle-square: \\f61f;\n$fa-var-shuffle: \\f074;\n$fa-var-random: \\f074;\n$fa-var-person-running: \\f70c;\n$fa-var-running: \\f70c;\n$fa-var-mobile-retro: \\e527;\n$fa-var-grip-lines-vertical: \\f7a5;\n$fa-var-spider: \\f717;\n$fa-var-hands-bound: \\e4f9;\n$fa-var-file-invoice-dollar: \\f571;\n$fa-var-plane-circle-exclamation: \\e556;\n$fa-var-x-ray: \\f497;\n$fa-var-spell-check: \\f891;\n$fa-var-slash: \\f715;\n$fa-var-computer-mouse: \\f8cc;\n$fa-var-mouse: \\f8cc;\n$fa-var-arrow-right-to-bracket: \\f090;\n$fa-var-sign-in: \\f090;\n$fa-var-shop-slash: \\e070;\n$fa-var-store-alt-slash: \\e070;\n$fa-var-server: \\f233;\n$fa-var-virus-covid-slash: \\e4a9;\n$fa-var-shop-lock: \\e4a5;\n$fa-var-hourglass-start: \\f251;\n$fa-var-hourglass-1: \\f251;\n$fa-var-blender-phone: \\f6b6;\n$fa-var-building-wheat: \\e4db;\n$fa-var-person-breastfeeding: \\e53a;\n$fa-var-right-to-bracket: \\f2f6;\n$fa-var-sign-in-alt: \\f2f6;\n$fa-var-venus: \\f221;\n$fa-var-passport: \\f5ab;\n$fa-var-heart-pulse: \\f21e;\n$fa-var-heartbeat: \\f21e;\n$fa-var-people-carry-box: \\f4ce;\n$fa-var-people-carry: \\f4ce;\n$fa-var-temperature-high: \\f769;\n$fa-var-microchip: \\f2db;\n$fa-var-crown: \\f521;\n$fa-var-weight-hanging: \\f5cd;\n$fa-var-xmarks-lines: \\e59a;\n$fa-var-file-prescription: \\f572;\n$fa-var-weight-scale: \\f496;\n$fa-var-weight: \\f496;\n$fa-var-user-group: \\f500;\n$fa-var-user-friends: \\f500;\n$fa-var-arrow-up-a-z: \\f15e;\n$fa-var-sort-alpha-up: \\f15e;\n$fa-var-chess-knight: \\f441;\n$fa-var-face-laugh-squint: \\f59b;\n$fa-var-laugh-squint: \\f59b;\n$fa-var-wheelchair: \\f193;\n$fa-var-circle-arrow-up: \\f0aa;\n$fa-var-arrow-circle-up: \\f0aa;\n$fa-var-toggle-on: \\f205;\n$fa-var-person-walking: \\f554;\n$fa-var-walking: \\f554;\n$fa-var-l: \\4c;\n$fa-var-fire: \\f06d;\n$fa-var-bed-pulse: \\f487;\n$fa-var-procedures: \\f487;\n$fa-var-shuttle-space: \\f197;\n$fa-var-space-shuttle: \\f197;\n$fa-var-face-laugh: \\f599;\n$fa-var-laugh: \\f599;\n$fa-var-folder-open: \\f07c;\n$fa-var-heart-circle-plus: \\e500;\n$fa-var-code-fork: \\e13b;\n$fa-var-city: \\f64f;\n$fa-var-microphone-lines: \\f3c9;\n$fa-var-microphone-alt: \\f3c9;\n$fa-var-pepper-hot: \\f816;\n$fa-var-unlock: \\f09c;\n$fa-var-colon-sign: \\e140;\n$fa-var-headset: \\f590;\n$fa-var-store-slash: \\e071;\n$fa-var-road-circle-xmark: \\e566;\n$fa-var-user-minus: \\f503;\n$fa-var-mars-stroke-up: \\f22a;\n$fa-var-mars-stroke-v: \\f22a;\n$fa-var-champagne-glasses: \\f79f;\n$fa-var-glass-cheers: \\f79f;\n$fa-var-clipboard: \\f328;\n$fa-var-house-circle-exclamation: \\e50a;\n$fa-var-file-arrow-up: \\f574;\n$fa-var-file-upload: \\f574;\n$fa-var-wifi: \\f1eb;\n$fa-var-wifi-3: \\f1eb;\n$fa-var-wifi-strong: \\f1eb;\n$fa-var-bath: \\f2cd;\n$fa-var-bathtub: \\f2cd;\n$fa-var-underline: \\f0cd;\n$fa-var-user-pen: \\f4ff;\n$fa-var-user-edit: \\f4ff;\n$fa-var-signature: \\f5b7;\n$fa-var-stroopwafel: \\f551;\n$fa-var-bold: \\f032;\n$fa-var-anchor-lock: \\e4ad;\n$fa-var-building-ngo: \\e4d7;\n$fa-var-manat-sign: \\e1d5;\n$fa-var-not-equal: \\f53e;\n$fa-var-border-top-left: \\f853;\n$fa-var-border-style: \\f853;\n$fa-var-map-location-dot: \\f5a0;\n$fa-var-map-marked-alt: \\f5a0;\n$fa-var-jedi: \\f669;\n$fa-var-square-poll-vertical: \\f681;\n$fa-var-poll: \\f681;\n$fa-var-mug-hot: \\f7b6;\n$fa-var-car-battery: \\f5df;\n$fa-var-battery-car: \\f5df;\n$fa-var-gift: \\f06b;\n$fa-var-dice-two: \\f528;\n$fa-var-chess-queen: \\f445;\n$fa-var-glasses: \\f530;\n$fa-var-chess-board: \\f43c;\n$fa-var-building-circle-check: \\e4d2;\n$fa-var-person-chalkboard: \\e53d;\n$fa-var-mars-stroke-right: \\f22b;\n$fa-var-mars-stroke-h: \\f22b;\n$fa-var-hand-back-fist: \\f255;\n$fa-var-hand-rock: \\f255;\n$fa-var-square-caret-up: \\f151;\n$fa-var-caret-square-up: \\f151;\n$fa-var-cloud-showers-water: \\e4e4;\n$fa-var-chart-bar: \\f080;\n$fa-var-bar-chart: \\f080;\n$fa-var-hands-bubbles: \\e05e;\n$fa-var-hands-wash: \\e05e;\n$fa-var-less-than-equal: \\f537;\n$fa-var-train: \\f238;\n$fa-var-eye-low-vision: \\f2a8;\n$fa-var-low-vision: \\f2a8;\n$fa-var-crow: \\f520;\n$fa-var-sailboat: \\e445;\n$fa-var-window-restore: \\f2d2;\n$fa-var-square-plus: \\f0fe;\n$fa-var-plus-square: \\f0fe;\n$fa-var-torii-gate: \\f6a1;\n$fa-var-frog: \\f52e;\n$fa-var-bucket: \\e4cf;\n$fa-var-image: \\f03e;\n$fa-var-microphone: \\f130;\n$fa-var-cow: \\f6c8;\n$fa-var-caret-up: \\f0d8;\n$fa-var-screwdriver: \\f54a;\n$fa-var-folder-closed: \\e185;\n$fa-var-house-tsunami: \\e515;\n$fa-var-square-nfi: \\e576;\n$fa-var-arrow-up-from-ground-water: \\e4b5;\n$fa-var-martini-glass: \\f57b;\n$fa-var-glass-martini-alt: \\f57b;\n$fa-var-rotate-left: \\f2ea;\n$fa-var-rotate-back: \\f2ea;\n$fa-var-rotate-backward: \\f2ea;\n$fa-var-undo-alt: \\f2ea;\n$fa-var-table-columns: \\f0db;\n$fa-var-columns: \\f0db;\n$fa-var-lemon: \\f094;\n$fa-var-head-side-mask: \\e063;\n$fa-var-handshake: \\f2b5;\n$fa-var-gem: \\f3a5;\n$fa-var-dolly: \\f472;\n$fa-var-dolly-box: \\f472;\n$fa-var-smoking: \\f48d;\n$fa-var-minimize: \\f78c;\n$fa-var-compress-arrows-alt: \\f78c;\n$fa-var-monument: \\f5a6;\n$fa-var-snowplow: \\f7d2;\n$fa-var-angles-right: \\f101;\n$fa-var-angle-double-right: \\f101;\n$fa-var-cannabis: \\f55f;\n$fa-var-circle-play: \\f144;\n$fa-var-play-circle: \\f144;\n$fa-var-tablets: \\f490;\n$fa-var-ethernet: \\f796;\n$fa-var-euro-sign: \\f153;\n$fa-var-eur: \\f153;\n$fa-var-euro: \\f153;\n$fa-var-chair: \\f6c0;\n$fa-var-circle-check: \\f058;\n$fa-var-check-circle: \\f058;\n$fa-var-circle-stop: \\f28d;\n$fa-var-stop-circle: \\f28d;\n$fa-var-compass-drafting: \\f568;\n$fa-var-drafting-compass: \\f568;\n$fa-var-plate-wheat: \\e55a;\n$fa-var-icicles: \\f7ad;\n$fa-var-person-shelter: \\e54f;\n$fa-var-neuter: \\f22c;\n$fa-var-id-badge: \\f2c1;\n$fa-var-marker: \\f5a1;\n$fa-var-face-laugh-beam: \\f59a;\n$fa-var-laugh-beam: \\f59a;\n$fa-var-helicopter-symbol: \\e502;\n$fa-var-universal-access: \\f29a;\n$fa-var-circle-chevron-up: \\f139;\n$fa-var-chevron-circle-up: \\f139;\n$fa-var-lari-sign: \\e1c8;\n$fa-var-volcano: \\f770;\n$fa-var-person-walking-dashed-line-arrow-right: \\e553;\n$fa-var-sterling-sign: \\f154;\n$fa-var-gbp: \\f154;\n$fa-var-pound-sign: \\f154;\n$fa-var-viruses: \\e076;\n$fa-var-square-person-confined: \\e577;\n$fa-var-user-tie: \\f508;\n$fa-var-arrow-down-long: \\f175;\n$fa-var-long-arrow-down: \\f175;\n$fa-var-tent-arrow-down-to-line: \\e57e;\n$fa-var-certificate: \\f0a3;\n$fa-var-reply-all: \\f122;\n$fa-var-mail-reply-all: \\f122;\n$fa-var-suitcase: \\f0f2;\n$fa-var-person-skating: \\f7c5;\n$fa-var-skating: \\f7c5;\n$fa-var-filter-circle-dollar: \\f662;\n$fa-var-funnel-dollar: \\f662;\n$fa-var-camera-retro: \\f083;\n$fa-var-circle-arrow-down: \\f0ab;\n$fa-var-arrow-circle-down: \\f0ab;\n$fa-var-file-import: \\f56f;\n$fa-var-arrow-right-to-file: \\f56f;\n$fa-var-square-arrow-up-right: \\f14c;\n$fa-var-external-link-square: \\f14c;\n$fa-var-box-open: \\f49e;\n$fa-var-scroll: \\f70e;\n$fa-var-spa: \\f5bb;\n$fa-var-location-pin-lock: \\e51f;\n$fa-var-pause: \\f04c;\n$fa-var-hill-avalanche: \\e507;\n$fa-var-temperature-empty: \\f2cb;\n$fa-var-temperature-0: \\f2cb;\n$fa-var-thermometer-0: \\f2cb;\n$fa-var-thermometer-empty: \\f2cb;\n$fa-var-bomb: \\f1e2;\n$fa-var-registered: \\f25d;\n$fa-var-address-card: \\f2bb;\n$fa-var-contact-card: \\f2bb;\n$fa-var-vcard: \\f2bb;\n$fa-var-scale-unbalanced-flip: \\f516;\n$fa-var-balance-scale-right: \\f516;\n$fa-var-subscript: \\f12c;\n$fa-var-diamond-turn-right: \\f5eb;\n$fa-var-directions: \\f5eb;\n$fa-var-burst: \\e4dc;\n$fa-var-house-laptop: \\e066;\n$fa-var-laptop-house: \\e066;\n$fa-var-face-tired: \\f5c8;\n$fa-var-tired: \\f5c8;\n$fa-var-money-bills: \\e1f3;\n$fa-var-smog: \\f75f;\n$fa-var-crutch: \\f7f7;\n$fa-var-cloud-arrow-up: \\f0ee;\n$fa-var-cloud-upload: \\f0ee;\n$fa-var-cloud-upload-alt: \\f0ee;\n$fa-var-palette: \\f53f;\n$fa-var-arrows-turn-right: \\e4c0;\n$fa-var-vest: \\e085;\n$fa-var-ferry: \\e4ea;\n$fa-var-arrows-down-to-people: \\e4b9;\n$fa-var-seedling: \\f4d8;\n$fa-var-sprout: \\f4d8;\n$fa-var-left-right: \\f337;\n$fa-var-arrows-alt-h: \\f337;\n$fa-var-boxes-packing: \\e4c7;\n$fa-var-circle-arrow-left: \\f0a8;\n$fa-var-arrow-circle-left: \\f0a8;\n$fa-var-group-arrows-rotate: \\e4f6;\n$fa-var-bowl-food: \\e4c6;\n$fa-var-candy-cane: \\f786;\n$fa-var-arrow-down-wide-short: \\f160;\n$fa-var-sort-amount-asc: \\f160;\n$fa-var-sort-amount-down: \\f160;\n$fa-var-cloud-bolt: \\f76c;\n$fa-var-thunderstorm: \\f76c;\n$fa-var-text-slash: \\f87d;\n$fa-var-remove-format: \\f87d;\n$fa-var-face-smile-wink: \\f4da;\n$fa-var-smile-wink: \\f4da;\n$fa-var-file-word: \\f1c2;\n$fa-var-file-powerpoint: \\f1c4;\n$fa-var-arrows-left-right: \\f07e;\n$fa-var-arrows-h: \\f07e;\n$fa-var-house-lock: \\e510;\n$fa-var-cloud-arrow-down: \\f0ed;\n$fa-var-cloud-download: \\f0ed;\n$fa-var-cloud-download-alt: \\f0ed;\n$fa-var-children: \\e4e1;\n$fa-var-chalkboard: \\f51b;\n$fa-var-blackboard: \\f51b;\n$fa-var-user-large-slash: \\f4fa;\n$fa-var-user-alt-slash: \\f4fa;\n$fa-var-envelope-open: \\f2b6;\n$fa-var-handshake-simple-slash: \\e05f;\n$fa-var-handshake-alt-slash: \\e05f;\n$fa-var-mattress-pillow: \\e525;\n$fa-var-guarani-sign: \\e19a;\n$fa-var-arrows-rotate: \\f021;\n$fa-var-refresh: \\f021;\n$fa-var-sync: \\f021;\n$fa-var-fire-extinguisher: \\f134;\n$fa-var-cruzeiro-sign: \\e152;\n$fa-var-greater-than-equal: \\f532;\n$fa-var-shield-halved: \\f3ed;\n$fa-var-shield-alt: \\f3ed;\n$fa-var-book-atlas: \\f558;\n$fa-var-atlas: \\f558;\n$fa-var-virus: \\e074;\n$fa-var-envelope-circle-check: \\e4e8;\n$fa-var-layer-group: \\f5fd;\n$fa-var-arrows-to-dot: \\e4be;\n$fa-var-archway: \\f557;\n$fa-var-heart-circle-check: \\e4fd;\n$fa-var-house-chimney-crack: \\f6f1;\n$fa-var-house-damage: \\f6f1;\n$fa-var-file-zipper: \\f1c6;\n$fa-var-file-archive: \\f1c6;\n$fa-var-square: \\f0c8;\n$fa-var-martini-glass-empty: \\f000;\n$fa-var-glass-martini: \\f000;\n$fa-var-couch: \\f4b8;\n$fa-var-cedi-sign: \\e0df;\n$fa-var-italic: \\f033;\n$fa-var-table-cells-column-lock: \\e678;\n$fa-var-church: \\f51d;\n$fa-var-comments-dollar: \\f653;\n$fa-var-democrat: \\f747;\n$fa-var-z: \\5a;\n$fa-var-person-skiing: \\f7c9;\n$fa-var-skiing: \\f7c9;\n$fa-var-road-lock: \\e567;\n$fa-var-a: \\41;\n$fa-var-temperature-arrow-down: \\e03f;\n$fa-var-temperature-down: \\e03f;\n$fa-var-feather-pointed: \\f56b;\n$fa-var-feather-alt: \\f56b;\n$fa-var-p: \\50;\n$fa-var-snowflake: \\f2dc;\n$fa-var-newspaper: \\f1ea;\n$fa-var-rectangle-ad: \\f641;\n$fa-var-ad: \\f641;\n$fa-var-circle-arrow-right: \\f0a9;\n$fa-var-arrow-circle-right: \\f0a9;\n$fa-var-filter-circle-xmark: \\e17b;\n$fa-var-locust: \\e520;\n$fa-var-sort: \\f0dc;\n$fa-var-unsorted: \\f0dc;\n$fa-var-list-ol: \\f0cb;\n$fa-var-list-1-2: \\f0cb;\n$fa-var-list-numeric: \\f0cb;\n$fa-var-person-dress-burst: \\e544;\n$fa-var-money-check-dollar: \\f53d;\n$fa-var-money-check-alt: \\f53d;\n$fa-var-vector-square: \\f5cb;\n$fa-var-bread-slice: \\f7ec;\n$fa-var-language: \\f1ab;\n$fa-var-face-kiss-wink-heart: \\f598;\n$fa-var-kiss-wink-heart: \\f598;\n$fa-var-filter: \\f0b0;\n$fa-var-question: \\3f;\n$fa-var-file-signature: \\f573;\n$fa-var-up-down-left-right: \\f0b2;\n$fa-var-arrows-alt: \\f0b2;\n$fa-var-house-chimney-user: \\e065;\n$fa-var-hand-holding-heart: \\f4be;\n$fa-var-puzzle-piece: \\f12e;\n$fa-var-money-check: \\f53c;\n$fa-var-star-half-stroke: \\f5c0;\n$fa-var-star-half-alt: \\f5c0;\n$fa-var-code: \\f121;\n$fa-var-whiskey-glass: \\f7a0;\n$fa-var-glass-whiskey: \\f7a0;\n$fa-var-building-circle-exclamation: \\e4d3;\n$fa-var-magnifying-glass-chart: \\e522;\n$fa-var-arrow-up-right-from-square: \\f08e;\n$fa-var-external-link: \\f08e;\n$fa-var-cubes-stacked: \\e4e6;\n$fa-var-won-sign: \\f159;\n$fa-var-krw: \\f159;\n$fa-var-won: \\f159;\n$fa-var-virus-covid: \\e4a8;\n$fa-var-austral-sign: \\e0a9;\n$fa-var-f: \\46;\n$fa-var-leaf: \\f06c;\n$fa-var-road: \\f018;\n$fa-var-taxi: \\f1ba;\n$fa-var-cab: \\f1ba;\n$fa-var-person-circle-plus: \\e541;\n$fa-var-chart-pie: \\f200;\n$fa-var-pie-chart: \\f200;\n$fa-var-bolt-lightning: \\e0b7;\n$fa-var-sack-xmark: \\e56a;\n$fa-var-file-excel: \\f1c3;\n$fa-var-file-contract: \\f56c;\n$fa-var-fish-fins: \\e4f2;\n$fa-var-building-flag: \\e4d5;\n$fa-var-face-grin-beam: \\f582;\n$fa-var-grin-beam: \\f582;\n$fa-var-object-ungroup: \\f248;\n$fa-var-poop: \\f619;\n$fa-var-location-pin: \\f041;\n$fa-var-map-marker: \\f041;\n$fa-var-kaaba: \\f66b;\n$fa-var-toilet-paper: \\f71e;\n$fa-var-helmet-safety: \\f807;\n$fa-var-hard-hat: \\f807;\n$fa-var-hat-hard: \\f807;\n$fa-var-eject: \\f052;\n$fa-var-circle-right: \\f35a;\n$fa-var-arrow-alt-circle-right: \\f35a;\n$fa-var-plane-circle-check: \\e555;\n$fa-var-face-rolling-eyes: \\f5a5;\n$fa-var-meh-rolling-eyes: \\f5a5;\n$fa-var-object-group: \\f247;\n$fa-var-chart-line: \\f201;\n$fa-var-line-chart: \\f201;\n$fa-var-mask-ventilator: \\e524;\n$fa-var-arrow-right: \\f061;\n$fa-var-signs-post: \\f277;\n$fa-var-map-signs: \\f277;\n$fa-var-cash-register: \\f788;\n$fa-var-person-circle-question: \\e542;\n$fa-var-h: \\48;\n$fa-var-tarp: \\e57b;\n$fa-var-screwdriver-wrench: \\f7d9;\n$fa-var-tools: \\f7d9;\n$fa-var-arrows-to-eye: \\e4bf;\n$fa-var-plug-circle-bolt: \\e55b;\n$fa-var-heart: \\f004;\n$fa-var-mars-and-venus: \\f224;\n$fa-var-house-user: \\e1b0;\n$fa-var-home-user: \\e1b0;\n$fa-var-dumpster-fire: \\f794;\n$fa-var-house-crack: \\e3b1;\n$fa-var-martini-glass-citrus: \\f561;\n$fa-var-cocktail: \\f561;\n$fa-var-face-surprise: \\f5c2;\n$fa-var-surprise: \\f5c2;\n$fa-var-bottle-water: \\e4c5;\n$fa-var-circle-pause: \\f28b;\n$fa-var-pause-circle: \\f28b;\n$fa-var-toilet-paper-slash: \\e072;\n$fa-var-apple-whole: \\f5d1;\n$fa-var-apple-alt: \\f5d1;\n$fa-var-kitchen-set: \\e51a;\n$fa-var-r: \\52;\n$fa-var-temperature-quarter: \\f2ca;\n$fa-var-temperature-1: \\f2ca;\n$fa-var-thermometer-1: \\f2ca;\n$fa-var-thermometer-quarter: \\f2ca;\n$fa-var-cube: \\f1b2;\n$fa-var-bitcoin-sign: \\e0b4;\n$fa-var-shield-dog: \\e573;\n$fa-var-solar-panel: \\f5ba;\n$fa-var-lock-open: \\f3c1;\n$fa-var-elevator: \\e16d;\n$fa-var-money-bill-transfer: \\e528;\n$fa-var-money-bill-trend-up: \\e529;\n$fa-var-house-flood-water-circle-arrow-right: \\e50f;\n$fa-var-square-poll-horizontal: \\f682;\n$fa-var-poll-h: \\f682;\n$fa-var-circle: \\f111;\n$fa-var-backward-fast: \\f049;\n$fa-var-fast-backward: \\f049;\n$fa-var-recycle: \\f1b8;\n$fa-var-user-astronaut: \\f4fb;\n$fa-var-plane-slash: \\e069;\n$fa-var-trademark: \\f25c;\n$fa-var-basketball: \\f434;\n$fa-var-basketball-ball: \\f434;\n$fa-var-satellite-dish: \\f7c0;\n$fa-var-circle-up: \\f35b;\n$fa-var-arrow-alt-circle-up: \\f35b;\n$fa-var-mobile-screen-button: \\f3cd;\n$fa-var-mobile-alt: \\f3cd;\n$fa-var-volume-high: \\f028;\n$fa-var-volume-up: \\f028;\n$fa-var-users-rays: \\e593;\n$fa-var-wallet: \\f555;\n$fa-var-clipboard-check: \\f46c;\n$fa-var-file-audio: \\f1c7;\n$fa-var-burger: \\f805;\n$fa-var-hamburger: \\f805;\n$fa-var-wrench: \\f0ad;\n$fa-var-bugs: \\e4d0;\n$fa-var-rupee-sign: \\f156;\n$fa-var-rupee: \\f156;\n$fa-var-file-image: \\f1c5;\n$fa-var-circle-question: \\f059;\n$fa-var-question-circle: \\f059;\n$fa-var-plane-departure: \\f5b0;\n$fa-var-handshake-slash: \\e060;\n$fa-var-book-bookmark: \\e0bb;\n$fa-var-code-branch: \\f126;\n$fa-var-hat-cowboy: \\f8c0;\n$fa-var-bridge: \\e4c8;\n$fa-var-phone-flip: \\f879;\n$fa-var-phone-alt: \\f879;\n$fa-var-truck-front: \\e2b7;\n$fa-var-cat: \\f6be;\n$fa-var-anchor-circle-exclamation: \\e4ab;\n$fa-var-truck-field: \\e58d;\n$fa-var-route: \\f4d7;\n$fa-var-clipboard-question: \\e4e3;\n$fa-var-panorama: \\e209;\n$fa-var-comment-medical: \\f7f5;\n$fa-var-teeth-open: \\f62f;\n$fa-var-file-circle-minus: \\e4ed;\n$fa-var-tags: \\f02c;\n$fa-var-wine-glass: \\f4e3;\n$fa-var-forward-fast: \\f050;\n$fa-var-fast-forward: \\f050;\n$fa-var-face-meh-blank: \\f5a4;\n$fa-var-meh-blank: \\f5a4;\n$fa-var-square-parking: \\f540;\n$fa-var-parking: \\f540;\n$fa-var-house-signal: \\e012;\n$fa-var-bars-progress: \\f828;\n$fa-var-tasks-alt: \\f828;\n$fa-var-faucet-drip: \\e006;\n$fa-var-cart-flatbed: \\f474;\n$fa-var-dolly-flatbed: \\f474;\n$fa-var-ban-smoking: \\f54d;\n$fa-var-smoking-ban: \\f54d;\n$fa-var-terminal: \\f120;\n$fa-var-mobile-button: \\f10b;\n$fa-var-house-medical-flag: \\e514;\n$fa-var-basket-shopping: \\f291;\n$fa-var-shopping-basket: \\f291;\n$fa-var-tape: \\f4db;\n$fa-var-bus-simple: \\f55e;\n$fa-var-bus-alt: \\f55e;\n$fa-var-eye: \\f06e;\n$fa-var-face-sad-cry: \\f5b3;\n$fa-var-sad-cry: \\f5b3;\n$fa-var-audio-description: \\f29e;\n$fa-var-person-military-to-person: \\e54c;\n$fa-var-file-shield: \\e4f0;\n$fa-var-user-slash: \\f506;\n$fa-var-pen: \\f304;\n$fa-var-tower-observation: \\e586;\n$fa-var-file-code: \\f1c9;\n$fa-var-signal: \\f012;\n$fa-var-signal-5: \\f012;\n$fa-var-signal-perfect: \\f012;\n$fa-var-bus: \\f207;\n$fa-var-heart-circle-xmark: \\e501;\n$fa-var-house-chimney: \\e3af;\n$fa-var-home-lg: \\e3af;\n$fa-var-window-maximize: \\f2d0;\n$fa-var-face-frown: \\f119;\n$fa-var-frown: \\f119;\n$fa-var-prescription: \\f5b1;\n$fa-var-shop: \\f54f;\n$fa-var-store-alt: \\f54f;\n$fa-var-floppy-disk: \\f0c7;\n$fa-var-save: \\f0c7;\n$fa-var-vihara: \\f6a7;\n$fa-var-scale-unbalanced: \\f515;\n$fa-var-balance-scale-left: \\f515;\n$fa-var-sort-up: \\f0de;\n$fa-var-sort-asc: \\f0de;\n$fa-var-comment-dots: \\f4ad;\n$fa-var-commenting: \\f4ad;\n$fa-var-plant-wilt: \\e5aa;\n$fa-var-diamond: \\f219;\n$fa-var-face-grin-squint: \\f585;\n$fa-var-grin-squint: \\f585;\n$fa-var-hand-holding-dollar: \\f4c0;\n$fa-var-hand-holding-usd: \\f4c0;\n$fa-var-bacterium: \\e05a;\n$fa-var-hand-pointer: \\f25a;\n$fa-var-drum-steelpan: \\f56a;\n$fa-var-hand-scissors: \\f257;\n$fa-var-hands-praying: \\f684;\n$fa-var-praying-hands: \\f684;\n$fa-var-arrow-rotate-right: \\f01e;\n$fa-var-arrow-right-rotate: \\f01e;\n$fa-var-arrow-rotate-forward: \\f01e;\n$fa-var-redo: \\f01e;\n$fa-var-biohazard: \\f780;\n$fa-var-location-crosshairs: \\f601;\n$fa-var-location: \\f601;\n$fa-var-mars-double: \\f227;\n$fa-var-child-dress: \\e59c;\n$fa-var-users-between-lines: \\e591;\n$fa-var-lungs-virus: \\e067;\n$fa-var-face-grin-tears: \\f588;\n$fa-var-grin-tears: \\f588;\n$fa-var-phone: \\f095;\n$fa-var-calendar-xmark: \\f273;\n$fa-var-calendar-times: \\f273;\n$fa-var-child-reaching: \\e59d;\n$fa-var-head-side-virus: \\e064;\n$fa-var-user-gear: \\f4fe;\n$fa-var-user-cog: \\f4fe;\n$fa-var-arrow-up-1-9: \\f163;\n$fa-var-sort-numeric-up: \\f163;\n$fa-var-door-closed: \\f52a;\n$fa-var-shield-virus: \\e06c;\n$fa-var-dice-six: \\f526;\n$fa-var-mosquito-net: \\e52c;\n$fa-var-bridge-water: \\e4ce;\n$fa-var-person-booth: \\f756;\n$fa-var-text-width: \\f035;\n$fa-var-hat-wizard: \\f6e8;\n$fa-var-pen-fancy: \\f5ac;\n$fa-var-person-digging: \\f85e;\n$fa-var-digging: \\f85e;\n$fa-var-trash: \\f1f8;\n$fa-var-gauge-simple: \\f629;\n$fa-var-gauge-simple-med: \\f629;\n$fa-var-tachometer-average: \\f629;\n$fa-var-book-medical: \\f7e6;\n$fa-var-poo: \\f2fe;\n$fa-var-quote-right: \\f10e;\n$fa-var-quote-right-alt: \\f10e;\n$fa-var-shirt: \\f553;\n$fa-var-t-shirt: \\f553;\n$fa-var-tshirt: \\f553;\n$fa-var-cubes: \\f1b3;\n$fa-var-divide: \\f529;\n$fa-var-tenge-sign: \\f7d7;\n$fa-var-tenge: \\f7d7;\n$fa-var-headphones: \\f025;\n$fa-var-hands-holding: \\f4c2;\n$fa-var-hands-clapping: \\e1a8;\n$fa-var-republican: \\f75e;\n$fa-var-arrow-left: \\f060;\n$fa-var-person-circle-xmark: \\e543;\n$fa-var-ruler: \\f545;\n$fa-var-align-left: \\f036;\n$fa-var-dice-d6: \\f6d1;\n$fa-var-restroom: \\f7bd;\n$fa-var-j: \\4a;\n$fa-var-users-viewfinder: \\e595;\n$fa-var-file-video: \\f1c8;\n$fa-var-up-right-from-square: \\f35d;\n$fa-var-external-link-alt: \\f35d;\n$fa-var-table-cells: \\f00a;\n$fa-var-th: \\f00a;\n$fa-var-file-pdf: \\f1c1;\n$fa-var-book-bible: \\f647;\n$fa-var-bible: \\f647;\n$fa-var-o: \\4f;\n$fa-var-suitcase-medical: \\f0fa;\n$fa-var-medkit: \\f0fa;\n$fa-var-user-secret: \\f21b;\n$fa-var-otter: \\f700;\n$fa-var-person-dress: \\f182;\n$fa-var-female: \\f182;\n$fa-var-comment-dollar: \\f651;\n$fa-var-business-time: \\f64a;\n$fa-var-briefcase-clock: \\f64a;\n$fa-var-table-cells-large: \\f009;\n$fa-var-th-large: \\f009;\n$fa-var-book-tanakh: \\f827;\n$fa-var-tanakh: \\f827;\n$fa-var-phone-volume: \\f2a0;\n$fa-var-volume-control-phone: \\f2a0;\n$fa-var-hat-cowboy-side: \\f8c1;\n$fa-var-clipboard-user: \\f7f3;\n$fa-var-child: \\f1ae;\n$fa-var-lira-sign: \\f195;\n$fa-var-satellite: \\f7bf;\n$fa-var-plane-lock: \\e558;\n$fa-var-tag: \\f02b;\n$fa-var-comment: \\f075;\n$fa-var-cake-candles: \\f1fd;\n$fa-var-birthday-cake: \\f1fd;\n$fa-var-cake: \\f1fd;\n$fa-var-envelope: \\f0e0;\n$fa-var-angles-up: \\f102;\n$fa-var-angle-double-up: \\f102;\n$fa-var-paperclip: \\f0c6;\n$fa-var-arrow-right-to-city: \\e4b3;\n$fa-var-ribbon: \\f4d6;\n$fa-var-lungs: \\f604;\n$fa-var-arrow-up-9-1: \\f887;\n$fa-var-sort-numeric-up-alt: \\f887;\n$fa-var-litecoin-sign: \\e1d3;\n$fa-var-border-none: \\f850;\n$fa-var-circle-nodes: \\e4e2;\n$fa-var-parachute-box: \\f4cd;\n$fa-var-indent: \\f03c;\n$fa-var-truck-field-un: \\e58e;\n$fa-var-hourglass: \\f254;\n$fa-var-hourglass-empty: \\f254;\n$fa-var-mountain: \\f6fc;\n$fa-var-user-doctor: \\f0f0;\n$fa-var-user-md: \\f0f0;\n$fa-var-circle-info: \\f05a;\n$fa-var-info-circle: \\f05a;\n$fa-var-cloud-meatball: \\f73b;\n$fa-var-camera: \\f030;\n$fa-var-camera-alt: \\f030;\n$fa-var-square-virus: \\e578;\n$fa-var-meteor: \\f753;\n$fa-var-car-on: \\e4dd;\n$fa-var-sleigh: \\f7cc;\n$fa-var-arrow-down-1-9: \\f162;\n$fa-var-sort-numeric-asc: \\f162;\n$fa-var-sort-numeric-down: \\f162;\n$fa-var-hand-holding-droplet: \\f4c1;\n$fa-var-hand-holding-water: \\f4c1;\n$fa-var-water: \\f773;\n$fa-var-calendar-check: \\f274;\n$fa-var-braille: \\f2a1;\n$fa-var-prescription-bottle-medical: \\f486;\n$fa-var-prescription-bottle-alt: \\f486;\n$fa-var-landmark: \\f66f;\n$fa-var-truck: \\f0d1;\n$fa-var-crosshairs: \\f05b;\n$fa-var-person-cane: \\e53c;\n$fa-var-tent: \\e57d;\n$fa-var-vest-patches: \\e086;\n$fa-var-check-double: \\f560;\n$fa-var-arrow-down-a-z: \\f15d;\n$fa-var-sort-alpha-asc: \\f15d;\n$fa-var-sort-alpha-down: \\f15d;\n$fa-var-money-bill-wheat: \\e52a;\n$fa-var-cookie: \\f563;\n$fa-var-arrow-rotate-left: \\f0e2;\n$fa-var-arrow-left-rotate: \\f0e2;\n$fa-var-arrow-rotate-back: \\f0e2;\n$fa-var-arrow-rotate-backward: \\f0e2;\n$fa-var-undo: \\f0e2;\n$fa-var-hard-drive: \\f0a0;\n$fa-var-hdd: \\f0a0;\n$fa-var-face-grin-squint-tears: \\f586;\n$fa-var-grin-squint-tears: \\f586;\n$fa-var-dumbbell: \\f44b;\n$fa-var-rectangle-list: \\f022;\n$fa-var-list-alt: \\f022;\n$fa-var-tarp-droplet: \\e57c;\n$fa-var-house-medical-circle-check: \\e511;\n$fa-var-person-skiing-nordic: \\f7ca;\n$fa-var-skiing-nordic: \\f7ca;\n$fa-var-calendar-plus: \\f271;\n$fa-var-plane-arrival: \\f5af;\n$fa-var-circle-left: \\f359;\n$fa-var-arrow-alt-circle-left: \\f359;\n$fa-var-train-subway: \\f239;\n$fa-var-subway: \\f239;\n$fa-var-chart-gantt: \\e0e4;\n$fa-var-indian-rupee-sign: \\e1bc;\n$fa-var-indian-rupee: \\e1bc;\n$fa-var-inr: \\e1bc;\n$fa-var-crop-simple: \\f565;\n$fa-var-crop-alt: \\f565;\n$fa-var-money-bill-1: \\f3d1;\n$fa-var-money-bill-alt: \\f3d1;\n$fa-var-left-long: \\f30a;\n$fa-var-long-arrow-alt-left: \\f30a;\n$fa-var-dna: \\f471;\n$fa-var-virus-slash: \\e075;\n$fa-var-minus: \\f068;\n$fa-var-subtract: \\f068;\n$fa-var-chess: \\f439;\n$fa-var-arrow-left-long: \\f177;\n$fa-var-long-arrow-left: \\f177;\n$fa-var-plug-circle-check: \\e55c;\n$fa-var-street-view: \\f21d;\n$fa-var-franc-sign: \\e18f;\n$fa-var-volume-off: \\f026;\n$fa-var-hands-asl-interpreting: \\f2a3;\n$fa-var-american-sign-language-interpreting: \\f2a3;\n$fa-var-asl-interpreting: \\f2a3;\n$fa-var-hands-american-sign-language-interpreting: \\f2a3;\n$fa-var-gear: \\f013;\n$fa-var-cog: \\f013;\n$fa-var-droplet-slash: \\f5c7;\n$fa-var-tint-slash: \\f5c7;\n$fa-var-mosque: \\f678;\n$fa-var-mosquito: \\e52b;\n$fa-var-star-of-david: \\f69a;\n$fa-var-person-military-rifle: \\e54b;\n$fa-var-cart-shopping: \\f07a;\n$fa-var-shopping-cart: \\f07a;\n$fa-var-vials: \\f493;\n$fa-var-plug-circle-plus: \\e55f;\n$fa-var-place-of-worship: \\f67f;\n$fa-var-grip-vertical: \\f58e;\n$fa-var-arrow-turn-up: \\f148;\n$fa-var-level-up: \\f148;\n$fa-var-u: \\55;\n$fa-var-square-root-variable: \\f698;\n$fa-var-square-root-alt: \\f698;\n$fa-var-clock: \\f017;\n$fa-var-clock-four: \\f017;\n$fa-var-backward-step: \\f048;\n$fa-var-step-backward: \\f048;\n$fa-var-pallet: \\f482;\n$fa-var-faucet: \\e005;\n$fa-var-baseball-bat-ball: \\f432;\n$fa-var-s: \\53;\n$fa-var-timeline: \\e29c;\n$fa-var-keyboard: \\f11c;\n$fa-var-caret-down: \\f0d7;\n$fa-var-house-chimney-medical: \\f7f2;\n$fa-var-clinic-medical: \\f7f2;\n$fa-var-temperature-three-quarters: \\f2c8;\n$fa-var-temperature-3: \\f2c8;\n$fa-var-thermometer-3: \\f2c8;\n$fa-var-thermometer-three-quarters: \\f2c8;\n$fa-var-mobile-screen: \\f3cf;\n$fa-var-mobile-android-alt: \\f3cf;\n$fa-var-plane-up: \\e22d;\n$fa-var-piggy-bank: \\f4d3;\n$fa-var-battery-half: \\f242;\n$fa-var-battery-3: \\f242;\n$fa-var-mountain-city: \\e52e;\n$fa-var-coins: \\f51e;\n$fa-var-khanda: \\f66d;\n$fa-var-sliders: \\f1de;\n$fa-var-sliders-h: \\f1de;\n$fa-var-folder-tree: \\f802;\n$fa-var-network-wired: \\f6ff;\n$fa-var-map-pin: \\f276;\n$fa-var-hamsa: \\f665;\n$fa-var-cent-sign: \\e3f5;\n$fa-var-flask: \\f0c3;\n$fa-var-person-pregnant: \\e31e;\n$fa-var-wand-sparkles: \\f72b;\n$fa-var-ellipsis-vertical: \\f142;\n$fa-var-ellipsis-v: \\f142;\n$fa-var-ticket: \\f145;\n$fa-var-power-off: \\f011;\n$fa-var-right-long: \\f30b;\n$fa-var-long-arrow-alt-right: \\f30b;\n$fa-var-flag-usa: \\f74d;\n$fa-var-laptop-file: \\e51d;\n$fa-var-tty: \\f1e4;\n$fa-var-teletype: \\f1e4;\n$fa-var-diagram-next: \\e476;\n$fa-var-person-rifle: \\e54e;\n$fa-var-house-medical-circle-exclamation: \\e512;\n$fa-var-closed-captioning: \\f20a;\n$fa-var-person-hiking: \\f6ec;\n$fa-var-hiking: \\f6ec;\n$fa-var-venus-double: \\f226;\n$fa-var-images: \\f302;\n$fa-var-calculator: \\f1ec;\n$fa-var-people-pulling: \\e535;\n$fa-var-n: \\4e;\n$fa-var-cable-car: \\f7da;\n$fa-var-tram: \\f7da;\n$fa-var-cloud-rain: \\f73d;\n$fa-var-building-circle-xmark: \\e4d4;\n$fa-var-ship: \\f21a;\n$fa-var-arrows-down-to-line: \\e4b8;\n$fa-var-download: \\f019;\n$fa-var-face-grin: \\f580;\n$fa-var-grin: \\f580;\n$fa-var-delete-left: \\f55a;\n$fa-var-backspace: \\f55a;\n$fa-var-eye-dropper: \\f1fb;\n$fa-var-eye-dropper-empty: \\f1fb;\n$fa-var-eyedropper: \\f1fb;\n$fa-var-file-circle-check: \\e5a0;\n$fa-var-forward: \\f04e;\n$fa-var-mobile: \\f3ce;\n$fa-var-mobile-android: \\f3ce;\n$fa-var-mobile-phone: \\f3ce;\n$fa-var-face-meh: \\f11a;\n$fa-var-meh: \\f11a;\n$fa-var-align-center: \\f037;\n$fa-var-book-skull: \\f6b7;\n$fa-var-book-dead: \\f6b7;\n$fa-var-id-card: \\f2c2;\n$fa-var-drivers-license: \\f2c2;\n$fa-var-outdent: \\f03b;\n$fa-var-dedent: \\f03b;\n$fa-var-heart-circle-exclamation: \\e4fe;\n$fa-var-house: \\f015;\n$fa-var-home: \\f015;\n$fa-var-home-alt: \\f015;\n$fa-var-home-lg-alt: \\f015;\n$fa-var-calendar-week: \\f784;\n$fa-var-laptop-medical: \\f812;\n$fa-var-b: \\42;\n$fa-var-file-medical: \\f477;\n$fa-var-dice-one: \\f525;\n$fa-var-kiwi-bird: \\f535;\n$fa-var-arrow-right-arrow-left: \\f0ec;\n$fa-var-exchange: \\f0ec;\n$fa-var-rotate-right: \\f2f9;\n$fa-var-redo-alt: \\f2f9;\n$fa-var-rotate-forward: \\f2f9;\n$fa-var-utensils: \\f2e7;\n$fa-var-cutlery: \\f2e7;\n$fa-var-arrow-up-wide-short: \\f161;\n$fa-var-sort-amount-up: \\f161;\n$fa-var-mill-sign: \\e1ed;\n$fa-var-bowl-rice: \\e2eb;\n$fa-var-skull: \\f54c;\n$fa-var-tower-broadcast: \\f519;\n$fa-var-broadcast-tower: \\f519;\n$fa-var-truck-pickup: \\f63c;\n$fa-var-up-long: \\f30c;\n$fa-var-long-arrow-alt-up: \\f30c;\n$fa-var-stop: \\f04d;\n$fa-var-code-merge: \\f387;\n$fa-var-upload: \\f093;\n$fa-var-hurricane: \\f751;\n$fa-var-mound: \\e52d;\n$fa-var-toilet-portable: \\e583;\n$fa-var-compact-disc: \\f51f;\n$fa-var-file-arrow-down: \\f56d;\n$fa-var-file-download: \\f56d;\n$fa-var-caravan: \\f8ff;\n$fa-var-shield-cat: \\e572;\n$fa-var-bolt: \\f0e7;\n$fa-var-zap: \\f0e7;\n$fa-var-glass-water: \\e4f4;\n$fa-var-oil-well: \\e532;\n$fa-var-vault: \\e2c5;\n$fa-var-mars: \\f222;\n$fa-var-toilet: \\f7d8;\n$fa-var-plane-circle-xmark: \\e557;\n$fa-var-yen-sign: \\f157;\n$fa-var-cny: \\f157;\n$fa-var-jpy: \\f157;\n$fa-var-rmb: \\f157;\n$fa-var-yen: \\f157;\n$fa-var-ruble-sign: \\f158;\n$fa-var-rouble: \\f158;\n$fa-var-rub: \\f158;\n$fa-var-ruble: \\f158;\n$fa-var-sun: \\f185;\n$fa-var-guitar: \\f7a6;\n$fa-var-face-laugh-wink: \\f59c;\n$fa-var-laugh-wink: \\f59c;\n$fa-var-horse-head: \\f7ab;\n$fa-var-bore-hole: \\e4c3;\n$fa-var-industry: \\f275;\n$fa-var-circle-down: \\f358;\n$fa-var-arrow-alt-circle-down: \\f358;\n$fa-var-arrows-turn-to-dots: \\e4c1;\n$fa-var-florin-sign: \\e184;\n$fa-var-arrow-down-short-wide: \\f884;\n$fa-var-sort-amount-desc: \\f884;\n$fa-var-sort-amount-down-alt: \\f884;\n$fa-var-less-than: \\3c;\n$fa-var-angle-down: \\f107;\n$fa-var-car-tunnel: \\e4de;\n$fa-var-head-side-cough: \\e061;\n$fa-var-grip-lines: \\f7a4;\n$fa-var-thumbs-down: \\f165;\n$fa-var-user-lock: \\f502;\n$fa-var-arrow-right-long: \\f178;\n$fa-var-long-arrow-right: \\f178;\n$fa-var-anchor-circle-xmark: \\e4ac;\n$fa-var-ellipsis: \\f141;\n$fa-var-ellipsis-h: \\f141;\n$fa-var-chess-pawn: \\f443;\n$fa-var-kit-medical: \\f479;\n$fa-var-first-aid: \\f479;\n$fa-var-person-through-window: \\e5a9;\n$fa-var-toolbox: \\f552;\n$fa-var-hands-holding-circle: \\e4fb;\n$fa-var-bug: \\f188;\n$fa-var-credit-card: \\f09d;\n$fa-var-credit-card-alt: \\f09d;\n$fa-var-car: \\f1b9;\n$fa-var-automobile: \\f1b9;\n$fa-var-hand-holding-hand: \\e4f7;\n$fa-var-book-open-reader: \\f5da;\n$fa-var-book-reader: \\f5da;\n$fa-var-mountain-sun: \\e52f;\n$fa-var-arrows-left-right-to-line: \\e4ba;\n$fa-var-dice-d20: \\f6cf;\n$fa-var-truck-droplet: \\e58c;\n$fa-var-file-circle-xmark: \\e5a1;\n$fa-var-temperature-arrow-up: \\e040;\n$fa-var-temperature-up: \\e040;\n$fa-var-medal: \\f5a2;\n$fa-var-bed: \\f236;\n$fa-var-square-h: \\f0fd;\n$fa-var-h-square: \\f0fd;\n$fa-var-podcast: \\f2ce;\n$fa-var-temperature-full: \\f2c7;\n$fa-var-temperature-4: \\f2c7;\n$fa-var-thermometer-4: \\f2c7;\n$fa-var-thermometer-full: \\f2c7;\n$fa-var-bell: \\f0f3;\n$fa-var-superscript: \\f12b;\n$fa-var-plug-circle-xmark: \\e560;\n$fa-var-star-of-life: \\f621;\n$fa-var-phone-slash: \\f3dd;\n$fa-var-paint-roller: \\f5aa;\n$fa-var-handshake-angle: \\f4c4;\n$fa-var-hands-helping: \\f4c4;\n$fa-var-location-dot: \\f3c5;\n$fa-var-map-marker-alt: \\f3c5;\n$fa-var-file: \\f15b;\n$fa-var-greater-than: \\3e;\n$fa-var-person-swimming: \\f5c4;\n$fa-var-swimmer: \\f5c4;\n$fa-var-arrow-down: \\f063;\n$fa-var-droplet: \\f043;\n$fa-var-tint: \\f043;\n$fa-var-eraser: \\f12d;\n$fa-var-earth-americas: \\f57d;\n$fa-var-earth: \\f57d;\n$fa-var-earth-america: \\f57d;\n$fa-var-globe-americas: \\f57d;\n$fa-var-person-burst: \\e53b;\n$fa-var-dove: \\f4ba;\n$fa-var-battery-empty: \\f244;\n$fa-var-battery-0: \\f244;\n$fa-var-socks: \\f696;\n$fa-var-inbox: \\f01c;\n$fa-var-section: \\e447;\n$fa-var-gauge-high: \\f625;\n$fa-var-tachometer-alt: \\f625;\n$fa-var-tachometer-alt-fast: \\f625;\n$fa-var-envelope-open-text: \\f658;\n$fa-var-hospital: \\f0f8;\n$fa-var-hospital-alt: \\f0f8;\n$fa-var-hospital-wide: \\f0f8;\n$fa-var-wine-bottle: \\f72f;\n$fa-var-chess-rook: \\f447;\n$fa-var-bars-staggered: \\f550;\n$fa-var-reorder: \\f550;\n$fa-var-stream: \\f550;\n$fa-var-dharmachakra: \\f655;\n$fa-var-hotdog: \\f80f;\n$fa-var-person-walking-with-cane: \\f29d;\n$fa-var-blind: \\f29d;\n$fa-var-drum: \\f569;\n$fa-var-ice-cream: \\f810;\n$fa-var-heart-circle-bolt: \\e4fc;\n$fa-var-fax: \\f1ac;\n$fa-var-paragraph: \\f1dd;\n$fa-var-check-to-slot: \\f772;\n$fa-var-vote-yea: \\f772;\n$fa-var-star-half: \\f089;\n$fa-var-boxes-stacked: \\f468;\n$fa-var-boxes: \\f468;\n$fa-var-boxes-alt: \\f468;\n$fa-var-link: \\f0c1;\n$fa-var-chain: \\f0c1;\n$fa-var-ear-listen: \\f2a2;\n$fa-var-assistive-listening-systems: \\f2a2;\n$fa-var-tree-city: \\e587;\n$fa-var-play: \\f04b;\n$fa-var-font: \\f031;\n$fa-var-table-cells-row-lock: \\e67a;\n$fa-var-rupiah-sign: \\e23d;\n$fa-var-magnifying-glass: \\f002;\n$fa-var-search: \\f002;\n$fa-var-table-tennis-paddle-ball: \\f45d;\n$fa-var-ping-pong-paddle-ball: \\f45d;\n$fa-var-table-tennis: \\f45d;\n$fa-var-person-dots-from-line: \\f470;\n$fa-var-diagnoses: \\f470;\n$fa-var-trash-can-arrow-up: \\f82a;\n$fa-var-trash-restore-alt: \\f82a;\n$fa-var-naira-sign: \\e1f6;\n$fa-var-cart-arrow-down: \\f218;\n$fa-var-walkie-talkie: \\f8ef;\n$fa-var-file-pen: \\f31c;\n$fa-var-file-edit: \\f31c;\n$fa-var-receipt: \\f543;\n$fa-var-square-pen: \\f14b;\n$fa-var-pen-square: \\f14b;\n$fa-var-pencil-square: \\f14b;\n$fa-var-suitcase-rolling: \\f5c1;\n$fa-var-person-circle-exclamation: \\e53f;\n$fa-var-chevron-down: \\f078;\n$fa-var-battery-full: \\f240;\n$fa-var-battery: \\f240;\n$fa-var-battery-5: \\f240;\n$fa-var-skull-crossbones: \\f714;\n$fa-var-code-compare: \\e13a;\n$fa-var-list-ul: \\f0ca;\n$fa-var-list-dots: \\f0ca;\n$fa-var-school-lock: \\e56f;\n$fa-var-tower-cell: \\e585;\n$fa-var-down-long: \\f309;\n$fa-var-long-arrow-alt-down: \\f309;\n$fa-var-ranking-star: \\e561;\n$fa-var-chess-king: \\f43f;\n$fa-var-person-harassing: \\e549;\n$fa-var-brazilian-real-sign: \\e46c;\n$fa-var-landmark-dome: \\f752;\n$fa-var-landmark-alt: \\f752;\n$fa-var-arrow-up: \\f062;\n$fa-var-tv: \\f26c;\n$fa-var-television: \\f26c;\n$fa-var-tv-alt: \\f26c;\n$fa-var-shrimp: \\e448;\n$fa-var-list-check: \\f0ae;\n$fa-var-tasks: \\f0ae;\n$fa-var-jug-detergent: \\e519;\n$fa-var-circle-user: \\f2bd;\n$fa-var-user-circle: \\f2bd;\n$fa-var-user-shield: \\f505;\n$fa-var-wind: \\f72e;\n$fa-var-car-burst: \\f5e1;\n$fa-var-car-crash: \\f5e1;\n$fa-var-y: \\59;\n$fa-var-person-snowboarding: \\f7ce;\n$fa-var-snowboarding: \\f7ce;\n$fa-var-truck-fast: \\f48b;\n$fa-var-shipping-fast: \\f48b;\n$fa-var-fish: \\f578;\n$fa-var-user-graduate: \\f501;\n$fa-var-circle-half-stroke: \\f042;\n$fa-var-adjust: \\f042;\n$fa-var-clapperboard: \\e131;\n$fa-var-circle-radiation: \\f7ba;\n$fa-var-radiation-alt: \\f7ba;\n$fa-var-baseball: \\f433;\n$fa-var-baseball-ball: \\f433;\n$fa-var-jet-fighter-up: \\e518;\n$fa-var-diagram-project: \\f542;\n$fa-var-project-diagram: \\f542;\n$fa-var-copy: \\f0c5;\n$fa-var-volume-xmark: \\f6a9;\n$fa-var-volume-mute: \\f6a9;\n$fa-var-volume-times: \\f6a9;\n$fa-var-hand-sparkles: \\e05d;\n$fa-var-grip: \\f58d;\n$fa-var-grip-horizontal: \\f58d;\n$fa-var-share-from-square: \\f14d;\n$fa-var-share-square: \\f14d;\n$fa-var-child-combatant: \\e4e0;\n$fa-var-child-rifle: \\e4e0;\n$fa-var-gun: \\e19b;\n$fa-var-square-phone: \\f098;\n$fa-var-phone-square: \\f098;\n$fa-var-plus: \\2b;\n$fa-var-add: \\2b;\n$fa-var-expand: \\f065;\n$fa-var-computer: \\e4e5;\n$fa-var-xmark: \\f00d;\n$fa-var-close: \\f00d;\n$fa-var-multiply: \\f00d;\n$fa-var-remove: \\f00d;\n$fa-var-times: \\f00d;\n$fa-var-arrows-up-down-left-right: \\f047;\n$fa-var-arrows: \\f047;\n$fa-var-chalkboard-user: \\f51c;\n$fa-var-chalkboard-teacher: \\f51c;\n$fa-var-peso-sign: \\e222;\n$fa-var-building-shield: \\e4d8;\n$fa-var-baby: \\f77c;\n$fa-var-users-line: \\e592;\n$fa-var-quote-left: \\f10d;\n$fa-var-quote-left-alt: \\f10d;\n$fa-var-tractor: \\f722;\n$fa-var-trash-arrow-up: \\f829;\n$fa-var-trash-restore: \\f829;\n$fa-var-arrow-down-up-lock: \\e4b0;\n$fa-var-lines-leaning: \\e51e;\n$fa-var-ruler-combined: \\f546;\n$fa-var-copyright: \\f1f9;\n$fa-var-equals: \\3d;\n$fa-var-blender: \\f517;\n$fa-var-teeth: \\f62e;\n$fa-var-shekel-sign: \\f20b;\n$fa-var-ils: \\f20b;\n$fa-var-shekel: \\f20b;\n$fa-var-sheqel: \\f20b;\n$fa-var-sheqel-sign: \\f20b;\n$fa-var-map: \\f279;\n$fa-var-rocket: \\f135;\n$fa-var-photo-film: \\f87c;\n$fa-var-photo-video: \\f87c;\n$fa-var-folder-minus: \\f65d;\n$fa-var-store: \\f54e;\n$fa-var-arrow-trend-up: \\e098;\n$fa-var-plug-circle-minus: \\e55e;\n$fa-var-sign-hanging: \\f4d9;\n$fa-var-sign: \\f4d9;\n$fa-var-bezier-curve: \\f55b;\n$fa-var-bell-slash: \\f1f6;\n$fa-var-tablet: \\f3fb;\n$fa-var-tablet-android: \\f3fb;\n$fa-var-school-flag: \\e56e;\n$fa-var-fill: \\f575;\n$fa-var-angle-up: \\f106;\n$fa-var-drumstick-bite: \\f6d7;\n$fa-var-holly-berry: \\f7aa;\n$fa-var-chevron-left: \\f053;\n$fa-var-bacteria: \\e059;\n$fa-var-hand-lizard: \\f258;\n$fa-var-notdef: \\e1fe;\n$fa-var-disease: \\f7fa;\n$fa-var-briefcase-medical: \\f469;\n$fa-var-genderless: \\f22d;\n$fa-var-chevron-right: \\f054;\n$fa-var-retweet: \\f079;\n$fa-var-car-rear: \\f5de;\n$fa-var-car-alt: \\f5de;\n$fa-var-pump-soap: \\e06b;\n$fa-var-video-slash: \\f4e2;\n$fa-var-battery-quarter: \\f243;\n$fa-var-battery-2: \\f243;\n$fa-var-radio: \\f8d7;\n$fa-var-baby-carriage: \\f77d;\n$fa-var-carriage-baby: \\f77d;\n$fa-var-traffic-light: \\f637;\n$fa-var-thermometer: \\f491;\n$fa-var-vr-cardboard: \\f729;\n$fa-var-hand-middle-finger: \\f806;\n$fa-var-percent: \\25;\n$fa-var-percentage: \\25;\n$fa-var-truck-moving: \\f4df;\n$fa-var-glass-water-droplet: \\e4f5;\n$fa-var-display: \\e163;\n$fa-var-face-smile: \\f118;\n$fa-var-smile: \\f118;\n$fa-var-thumbtack: \\f08d;\n$fa-var-thumb-tack: \\f08d;\n$fa-var-trophy: \\f091;\n$fa-var-person-praying: \\f683;\n$fa-var-pray: \\f683;\n$fa-var-hammer: \\f6e3;\n$fa-var-hand-peace: \\f25b;\n$fa-var-rotate: \\f2f1;\n$fa-var-sync-alt: \\f2f1;\n$fa-var-spinner: \\f110;\n$fa-var-robot: \\f544;\n$fa-var-peace: \\f67c;\n$fa-var-gears: \\f085;\n$fa-var-cogs: \\f085;\n$fa-var-warehouse: \\f494;\n$fa-var-arrow-up-right-dots: \\e4b7;\n$fa-var-splotch: \\f5bc;\n$fa-var-face-grin-hearts: \\f584;\n$fa-var-grin-hearts: \\f584;\n$fa-var-dice-four: \\f524;\n$fa-var-sim-card: \\f7c4;\n$fa-var-transgender: \\f225;\n$fa-var-transgender-alt: \\f225;\n$fa-var-mercury: \\f223;\n$fa-var-arrow-turn-down: \\f149;\n$fa-var-level-down: \\f149;\n$fa-var-person-falling-burst: \\e547;\n$fa-var-award: \\f559;\n$fa-var-ticket-simple: \\f3ff;\n$fa-var-ticket-alt: \\f3ff;\n$fa-var-building: \\f1ad;\n$fa-var-angles-left: \\f100;\n$fa-var-angle-double-left: \\f100;\n$fa-var-qrcode: \\f029;\n$fa-var-clock-rotate-left: \\f1da;\n$fa-var-history: \\f1da;\n$fa-var-face-grin-beam-sweat: \\f583;\n$fa-var-grin-beam-sweat: \\f583;\n$fa-var-file-export: \\f56e;\n$fa-var-arrow-right-from-file: \\f56e;\n$fa-var-shield: \\f132;\n$fa-var-shield-blank: \\f132;\n$fa-var-arrow-up-short-wide: \\f885;\n$fa-var-sort-amount-up-alt: \\f885;\n$fa-var-house-medical: \\e3b2;\n$fa-var-golf-ball-tee: \\f450;\n$fa-var-golf-ball: \\f450;\n$fa-var-circle-chevron-left: \\f137;\n$fa-var-chevron-circle-left: \\f137;\n$fa-var-house-chimney-window: \\e00d;\n$fa-var-pen-nib: \\f5ad;\n$fa-var-tent-arrow-turn-left: \\e580;\n$fa-var-tents: \\e582;\n$fa-var-wand-magic: \\f0d0;\n$fa-var-magic: \\f0d0;\n$fa-var-dog: \\f6d3;\n$fa-var-carrot: \\f787;\n$fa-var-moon: \\f186;\n$fa-var-wine-glass-empty: \\f5ce;\n$fa-var-wine-glass-alt: \\f5ce;\n$fa-var-cheese: \\f7ef;\n$fa-var-yin-yang: \\f6ad;\n$fa-var-music: \\f001;\n$fa-var-code-commit: \\f386;\n$fa-var-temperature-low: \\f76b;\n$fa-var-person-biking: \\f84a;\n$fa-var-biking: \\f84a;\n$fa-var-broom: \\f51a;\n$fa-var-shield-heart: \\e574;\n$fa-var-gopuram: \\f664;\n$fa-var-earth-oceania: \\e47b;\n$fa-var-globe-oceania: \\e47b;\n$fa-var-square-xmark: \\f2d3;\n$fa-var-times-square: \\f2d3;\n$fa-var-xmark-square: \\f2d3;\n$fa-var-hashtag: \\23;\n$fa-var-up-right-and-down-left-from-center: \\f424;\n$fa-var-expand-alt: \\f424;\n$fa-var-oil-can: \\f613;\n$fa-var-t: \\54;\n$fa-var-hippo: \\f6ed;\n$fa-var-chart-column: \\e0e3;\n$fa-var-infinity: \\f534;\n$fa-var-vial-circle-check: \\e596;\n$fa-var-person-arrow-down-to-line: \\e538;\n$fa-var-voicemail: \\f897;\n$fa-var-fan: \\f863;\n$fa-var-person-walking-luggage: \\e554;\n$fa-var-up-down: \\f338;\n$fa-var-arrows-alt-v: \\f338;\n$fa-var-cloud-moon-rain: \\f73c;\n$fa-var-calendar: \\f133;\n$fa-var-trailer: \\e041;\n$fa-var-bahai: \\f666;\n$fa-var-haykal: \\f666;\n$fa-var-sd-card: \\f7c2;\n$fa-var-dragon: \\f6d5;\n$fa-var-shoe-prints: \\f54b;\n$fa-var-circle-plus: \\f055;\n$fa-var-plus-circle: \\f055;\n$fa-var-face-grin-tongue-wink: \\f58b;\n$fa-var-grin-tongue-wink: \\f58b;\n$fa-var-hand-holding: \\f4bd;\n$fa-var-plug-circle-exclamation: \\e55d;\n$fa-var-link-slash: \\f127;\n$fa-var-chain-broken: \\f127;\n$fa-var-chain-slash: \\f127;\n$fa-var-unlink: \\f127;\n$fa-var-clone: \\f24d;\n$fa-var-person-walking-arrow-loop-left: \\e551;\n$fa-var-arrow-up-z-a: \\f882;\n$fa-var-sort-alpha-up-alt: \\f882;\n$fa-var-fire-flame-curved: \\f7e4;\n$fa-var-fire-alt: \\f7e4;\n$fa-var-tornado: \\f76f;\n$fa-var-file-circle-plus: \\e494;\n$fa-var-book-quran: \\f687;\n$fa-var-quran: \\f687;\n$fa-var-anchor: \\f13d;\n$fa-var-border-all: \\f84c;\n$fa-var-face-angry: \\f556;\n$fa-var-angry: \\f556;\n$fa-var-cookie-bite: \\f564;\n$fa-var-arrow-trend-down: \\e097;\n$fa-var-rss: \\f09e;\n$fa-var-feed: \\f09e;\n$fa-var-draw-polygon: \\f5ee;\n$fa-var-scale-balanced: \\f24e;\n$fa-var-balance-scale: \\f24e;\n$fa-var-gauge-simple-high: \\f62a;\n$fa-var-tachometer: \\f62a;\n$fa-var-tachometer-fast: \\f62a;\n$fa-var-shower: \\f2cc;\n$fa-var-desktop: \\f390;\n$fa-var-desktop-alt: \\f390;\n$fa-var-m: \\4d;\n$fa-var-table-list: \\f00b;\n$fa-var-th-list: \\f00b;\n$fa-var-comment-sms: \\f7cd;\n$fa-var-sms: \\f7cd;\n$fa-var-book: \\f02d;\n$fa-var-user-plus: \\f234;\n$fa-var-check: \\f00c;\n$fa-var-battery-three-quarters: \\f241;\n$fa-var-battery-4: \\f241;\n$fa-var-house-circle-check: \\e509;\n$fa-var-angle-left: \\f104;\n$fa-var-diagram-successor: \\e47a;\n$fa-var-truck-arrow-right: \\e58b;\n$fa-var-arrows-split-up-and-left: \\e4bc;\n$fa-var-hand-fist: \\f6de;\n$fa-var-fist-raised: \\f6de;\n$fa-var-cloud-moon: \\f6c3;\n$fa-var-briefcase: \\f0b1;\n$fa-var-person-falling: \\e546;\n$fa-var-image-portrait: \\f3e0;\n$fa-var-portrait: \\f3e0;\n$fa-var-user-tag: \\f507;\n$fa-var-rug: \\e569;\n$fa-var-earth-europe: \\f7a2;\n$fa-var-globe-europe: \\f7a2;\n$fa-var-cart-flatbed-suitcase: \\f59d;\n$fa-var-luggage-cart: \\f59d;\n$fa-var-rectangle-xmark: \\f410;\n$fa-var-rectangle-times: \\f410;\n$fa-var-times-rectangle: \\f410;\n$fa-var-window-close: \\f410;\n$fa-var-baht-sign: \\e0ac;\n$fa-var-book-open: \\f518;\n$fa-var-book-journal-whills: \\f66a;\n$fa-var-journal-whills: \\f66a;\n$fa-var-handcuffs: \\e4f8;\n$fa-var-triangle-exclamation: \\f071;\n$fa-var-exclamation-triangle: \\f071;\n$fa-var-warning: \\f071;\n$fa-var-database: \\f1c0;\n$fa-var-share: \\f064;\n$fa-var-mail-forward: \\f064;\n$fa-var-bottle-droplet: \\e4c4;\n$fa-var-mask-face: \\e1d7;\n$fa-var-hill-rockslide: \\e508;\n$fa-var-right-left: \\f362;\n$fa-var-exchange-alt: \\f362;\n$fa-var-paper-plane: \\f1d8;\n$fa-var-road-circle-exclamation: \\e565;\n$fa-var-dungeon: \\f6d9;\n$fa-var-align-right: \\f038;\n$fa-var-money-bill-1-wave: \\f53b;\n$fa-var-money-bill-wave-alt: \\f53b;\n$fa-var-life-ring: \\f1cd;\n$fa-var-hands: \\f2a7;\n$fa-var-sign-language: \\f2a7;\n$fa-var-signing: \\f2a7;\n$fa-var-calendar-day: \\f783;\n$fa-var-water-ladder: \\f5c5;\n$fa-var-ladder-water: \\f5c5;\n$fa-var-swimming-pool: \\f5c5;\n$fa-var-arrows-up-down: \\f07d;\n$fa-var-arrows-v: \\f07d;\n$fa-var-face-grimace: \\f57f;\n$fa-var-grimace: \\f57f;\n$fa-var-wheelchair-move: \\e2ce;\n$fa-var-wheelchair-alt: \\e2ce;\n$fa-var-turn-down: \\f3be;\n$fa-var-level-down-alt: \\f3be;\n$fa-var-person-walking-arrow-right: \\e552;\n$fa-var-square-envelope: \\f199;\n$fa-var-envelope-square: \\f199;\n$fa-var-dice: \\f522;\n$fa-var-bowling-ball: \\f436;\n$fa-var-brain: \\f5dc;\n$fa-var-bandage: \\f462;\n$fa-var-band-aid: \\f462;\n$fa-var-calendar-minus: \\f272;\n$fa-var-circle-xmark: \\f057;\n$fa-var-times-circle: \\f057;\n$fa-var-xmark-circle: \\f057;\n$fa-var-gifts: \\f79c;\n$fa-var-hotel: \\f594;\n$fa-var-earth-asia: \\f57e;\n$fa-var-globe-asia: \\f57e;\n$fa-var-id-card-clip: \\f47f;\n$fa-var-id-card-alt: \\f47f;\n$fa-var-magnifying-glass-plus: \\f00e;\n$fa-var-search-plus: \\f00e;\n$fa-var-thumbs-up: \\f164;\n$fa-var-user-clock: \\f4fd;\n$fa-var-hand-dots: \\f461;\n$fa-var-allergies: \\f461;\n$fa-var-file-invoice: \\f570;\n$fa-var-window-minimize: \\f2d1;\n$fa-var-mug-saucer: \\f0f4;\n$fa-var-coffee: \\f0f4;\n$fa-var-brush: \\f55d;\n$fa-var-mask: \\f6fa;\n$fa-var-magnifying-glass-minus: \\f010;\n$fa-var-search-minus: \\f010;\n$fa-var-ruler-vertical: \\f548;\n$fa-var-user-large: \\f406;\n$fa-var-user-alt: \\f406;\n$fa-var-train-tram: \\e5b4;\n$fa-var-user-nurse: \\f82f;\n$fa-var-syringe: \\f48e;\n$fa-var-cloud-sun: \\f6c4;\n$fa-var-stopwatch-20: \\e06f;\n$fa-var-square-full: \\f45c;\n$fa-var-magnet: \\f076;\n$fa-var-jar: \\e516;\n$fa-var-note-sticky: \\f249;\n$fa-var-sticky-note: \\f249;\n$fa-var-bug-slash: \\e490;\n$fa-var-arrow-up-from-water-pump: \\e4b6;\n$fa-var-bone: \\f5d7;\n$fa-var-user-injured: \\f728;\n$fa-var-face-sad-tear: \\f5b4;\n$fa-var-sad-tear: \\f5b4;\n$fa-var-plane: \\f072;\n$fa-var-tent-arrows-down: \\e581;\n$fa-var-exclamation: \\21;\n$fa-var-arrows-spin: \\e4bb;\n$fa-var-print: \\f02f;\n$fa-var-turkish-lira-sign: \\e2bb;\n$fa-var-try: \\e2bb;\n$fa-var-turkish-lira: \\e2bb;\n$fa-var-dollar-sign: \\24;\n$fa-var-dollar: \\24;\n$fa-var-usd: \\24;\n$fa-var-x: \\58;\n$fa-var-magnifying-glass-dollar: \\f688;\n$fa-var-search-dollar: \\f688;\n$fa-var-users-gear: \\f509;\n$fa-var-users-cog: \\f509;\n$fa-var-person-military-pointing: \\e54a;\n$fa-var-building-columns: \\f19c;\n$fa-var-bank: \\f19c;\n$fa-var-institution: \\f19c;\n$fa-var-museum: \\f19c;\n$fa-var-university: \\f19c;\n$fa-var-umbrella: \\f0e9;\n$fa-var-trowel: \\e589;\n$fa-var-d: \\44;\n$fa-var-stapler: \\e5af;\n$fa-var-masks-theater: \\f630;\n$fa-var-theater-masks: \\f630;\n$fa-var-kip-sign: \\e1c4;\n$fa-var-hand-point-left: \\f0a5;\n$fa-var-handshake-simple: \\f4c6;\n$fa-var-handshake-alt: \\f4c6;\n$fa-var-jet-fighter: \\f0fb;\n$fa-var-fighter-jet: \\f0fb;\n$fa-var-square-share-nodes: \\f1e1;\n$fa-var-share-alt-square: \\f1e1;\n$fa-var-barcode: \\f02a;\n$fa-var-plus-minus: \\e43c;\n$fa-var-video: \\f03d;\n$fa-var-video-camera: \\f03d;\n$fa-var-graduation-cap: \\f19d;\n$fa-var-mortar-board: \\f19d;\n$fa-var-hand-holding-medical: \\e05c;\n$fa-var-person-circle-check: \\e53e;\n$fa-var-turn-up: \\f3bf;\n$fa-var-level-up-alt: \\f3bf;\n\n$fa-var-monero: \\f3d0;\n$fa-var-hooli: \\f427;\n$fa-var-yelp: \\f1e9;\n$fa-var-cc-visa: \\f1f0;\n$fa-var-lastfm: \\f202;\n$fa-var-shopware: \\f5b5;\n$fa-var-creative-commons-nc: \\f4e8;\n$fa-var-aws: \\f375;\n$fa-var-redhat: \\f7bc;\n$fa-var-yoast: \\f2b1;\n$fa-var-cloudflare: \\e07d;\n$fa-var-ups: \\f7e0;\n$fa-var-pixiv: \\e640;\n$fa-var-wpexplorer: \\f2de;\n$fa-var-dyalog: \\f399;\n$fa-var-bity: \\f37a;\n$fa-var-stackpath: \\f842;\n$fa-var-buysellads: \\f20d;\n$fa-var-first-order: \\f2b0;\n$fa-var-modx: \\f285;\n$fa-var-guilded: \\e07e;\n$fa-var-vnv: \\f40b;\n$fa-var-square-js: \\f3b9;\n$fa-var-js-square: \\f3b9;\n$fa-var-microsoft: \\f3ca;\n$fa-var-qq: \\f1d6;\n$fa-var-orcid: \\f8d2;\n$fa-var-java: \\f4e4;\n$fa-var-invision: \\f7b0;\n$fa-var-creative-commons-pd-alt: \\f4ed;\n$fa-var-centercode: \\f380;\n$fa-var-glide-g: \\f2a6;\n$fa-var-drupal: \\f1a9;\n$fa-var-jxl: \\e67b;\n$fa-var-hire-a-helper: \\f3b0;\n$fa-var-creative-commons-by: \\f4e7;\n$fa-var-unity: \\e049;\n$fa-var-whmcs: \\f40d;\n$fa-var-rocketchat: \\f3e8;\n$fa-var-vk: \\f189;\n$fa-var-untappd: \\f405;\n$fa-var-mailchimp: \\f59e;\n$fa-var-css3-alt: \\f38b;\n$fa-var-square-reddit: \\f1a2;\n$fa-var-reddit-square: \\f1a2;\n$fa-var-vimeo-v: \\f27d;\n$fa-var-contao: \\f26d;\n$fa-var-square-font-awesome: \\e5ad;\n$fa-var-deskpro: \\f38f;\n$fa-var-brave: \\e63c;\n$fa-var-sistrix: \\f3ee;\n$fa-var-square-instagram: \\e055;\n$fa-var-instagram-square: \\e055;\n$fa-var-battle-net: \\f835;\n$fa-var-the-red-yeti: \\f69d;\n$fa-var-square-hacker-news: \\f3af;\n$fa-var-hacker-news-square: \\f3af;\n$fa-var-edge: \\f282;\n$fa-var-threads: \\e618;\n$fa-var-napster: \\f3d2;\n$fa-var-square-snapchat: \\f2ad;\n$fa-var-snapchat-square: \\f2ad;\n$fa-var-google-plus-g: \\f0d5;\n$fa-var-artstation: \\f77a;\n$fa-var-markdown: \\f60f;\n$fa-var-sourcetree: \\f7d3;\n$fa-var-google-plus: \\f2b3;\n$fa-var-diaspora: \\f791;\n$fa-var-foursquare: \\f180;\n$fa-var-stack-overflow: \\f16c;\n$fa-var-github-alt: \\f113;\n$fa-var-phoenix-squadron: \\f511;\n$fa-var-pagelines: \\f18c;\n$fa-var-algolia: \\f36c;\n$fa-var-red-river: \\f3e3;\n$fa-var-creative-commons-sa: \\f4ef;\n$fa-var-safari: \\f267;\n$fa-var-google: \\f1a0;\n$fa-var-square-font-awesome-stroke: \\f35c;\n$fa-var-font-awesome-alt: \\f35c;\n$fa-var-atlassian: \\f77b;\n$fa-var-linkedin-in: \\f0e1;\n$fa-var-digital-ocean: \\f391;\n$fa-var-nimblr: \\f5a8;\n$fa-var-chromecast: \\f838;\n$fa-var-evernote: \\f839;\n$fa-var-hacker-news: \\f1d4;\n$fa-var-creative-commons-sampling: \\f4f0;\n$fa-var-adversal: \\f36a;\n$fa-var-creative-commons: \\f25e;\n$fa-var-watchman-monitoring: \\e087;\n$fa-var-fonticons: \\f280;\n$fa-var-weixin: \\f1d7;\n$fa-var-shirtsinbulk: \\f214;\n$fa-var-codepen: \\f1cb;\n$fa-var-git-alt: \\f841;\n$fa-var-lyft: \\f3c3;\n$fa-var-rev: \\f5b2;\n$fa-var-windows: \\f17a;\n$fa-var-wizards-of-the-coast: \\f730;\n$fa-var-square-viadeo: \\f2aa;\n$fa-var-viadeo-square: \\f2aa;\n$fa-var-meetup: \\f2e0;\n$fa-var-centos: \\f789;\n$fa-var-adn: \\f170;\n$fa-var-cloudsmith: \\f384;\n$fa-var-opensuse: \\e62b;\n$fa-var-pied-piper-alt: \\f1a8;\n$fa-var-square-dribbble: \\f397;\n$fa-var-dribbble-square: \\f397;\n$fa-var-codiepie: \\f284;\n$fa-var-node: \\f419;\n$fa-var-mix: \\f3cb;\n$fa-var-steam: \\f1b6;\n$fa-var-cc-apple-pay: \\f416;\n$fa-var-scribd: \\f28a;\n$fa-var-debian: \\e60b;\n$fa-var-openid: \\f19b;\n$fa-var-instalod: \\e081;\n$fa-var-expeditedssl: \\f23e;\n$fa-var-sellcast: \\f2da;\n$fa-var-square-twitter: \\f081;\n$fa-var-twitter-square: \\f081;\n$fa-var-r-project: \\f4f7;\n$fa-var-delicious: \\f1a5;\n$fa-var-freebsd: \\f3a4;\n$fa-var-vuejs: \\f41f;\n$fa-var-accusoft: \\f369;\n$fa-var-ioxhost: \\f208;\n$fa-var-fonticons-fi: \\f3a2;\n$fa-var-app-store: \\f36f;\n$fa-var-cc-mastercard: \\f1f1;\n$fa-var-itunes-note: \\f3b5;\n$fa-var-golang: \\e40f;\n$fa-var-kickstarter: \\f3bb;\n$fa-var-square-kickstarter: \\f3bb;\n$fa-var-grav: \\f2d6;\n$fa-var-weibo: \\f18a;\n$fa-var-uncharted: \\e084;\n$fa-var-firstdraft: \\f3a1;\n$fa-var-square-youtube: \\f431;\n$fa-var-youtube-square: \\f431;\n$fa-var-wikipedia-w: \\f266;\n$fa-var-wpressr: \\f3e4;\n$fa-var-rendact: \\f3e4;\n$fa-var-angellist: \\f209;\n$fa-var-galactic-republic: \\f50c;\n$fa-var-nfc-directional: \\e530;\n$fa-var-skype: \\f17e;\n$fa-var-joget: \\f3b7;\n$fa-var-fedora: \\f798;\n$fa-var-stripe-s: \\f42a;\n$fa-var-meta: \\e49b;\n$fa-var-laravel: \\f3bd;\n$fa-var-hotjar: \\f3b1;\n$fa-var-bluetooth-b: \\f294;\n$fa-var-square-letterboxd: \\e62e;\n$fa-var-sticker-mule: \\f3f7;\n$fa-var-creative-commons-zero: \\f4f3;\n$fa-var-hips: \\f452;\n$fa-var-behance: \\f1b4;\n$fa-var-reddit: \\f1a1;\n$fa-var-discord: \\f392;\n$fa-var-chrome: \\f268;\n$fa-var-app-store-ios: \\f370;\n$fa-var-cc-discover: \\f1f2;\n$fa-var-wpbeginner: \\f297;\n$fa-var-confluence: \\f78d;\n$fa-var-shoelace: \\e60c;\n$fa-var-mdb: \\f8ca;\n$fa-var-dochub: \\f394;\n$fa-var-accessible-icon: \\f368;\n$fa-var-ebay: \\f4f4;\n$fa-var-amazon: \\f270;\n$fa-var-unsplash: \\e07c;\n$fa-var-yarn: \\f7e3;\n$fa-var-square-steam: \\f1b7;\n$fa-var-steam-square: \\f1b7;\n$fa-var-500px: \\f26e;\n$fa-var-square-vimeo: \\f194;\n$fa-var-vimeo-square: \\f194;\n$fa-var-asymmetrik: \\f372;\n$fa-var-font-awesome: \\f2b4;\n$fa-var-font-awesome-flag: \\f2b4;\n$fa-var-font-awesome-logo-full: \\f2b4;\n$fa-var-gratipay: \\f184;\n$fa-var-apple: \\f179;\n$fa-var-hive: \\e07f;\n$fa-var-gitkraken: \\f3a6;\n$fa-var-keybase: \\f4f5;\n$fa-var-apple-pay: \\f415;\n$fa-var-padlet: \\e4a0;\n$fa-var-amazon-pay: \\f42c;\n$fa-var-square-github: \\f092;\n$fa-var-github-square: \\f092;\n$fa-var-stumbleupon: \\f1a4;\n$fa-var-fedex: \\f797;\n$fa-var-phoenix-framework: \\f3dc;\n$fa-var-shopify: \\e057;\n$fa-var-neos: \\f612;\n$fa-var-square-threads: \\e619;\n$fa-var-hackerrank: \\f5f7;\n$fa-var-researchgate: \\f4f8;\n$fa-var-swift: \\f8e1;\n$fa-var-angular: \\f420;\n$fa-var-speakap: \\f3f3;\n$fa-var-angrycreative: \\f36e;\n$fa-var-y-combinator: \\f23b;\n$fa-var-empire: \\f1d1;\n$fa-var-envira: \\f299;\n$fa-var-google-scholar: \\e63b;\n$fa-var-square-gitlab: \\e5ae;\n$fa-var-gitlab-square: \\e5ae;\n$fa-var-studiovinari: \\f3f8;\n$fa-var-pied-piper: \\f2ae;\n$fa-var-wordpress: \\f19a;\n$fa-var-product-hunt: \\f288;\n$fa-var-firefox: \\f269;\n$fa-var-linode: \\f2b8;\n$fa-var-goodreads: \\f3a8;\n$fa-var-square-odnoklassniki: \\f264;\n$fa-var-odnoklassniki-square: \\f264;\n$fa-var-jsfiddle: \\f1cc;\n$fa-var-sith: \\f512;\n$fa-var-themeisle: \\f2b2;\n$fa-var-page4: \\f3d7;\n$fa-var-hashnode: \\e499;\n$fa-var-react: \\f41b;\n$fa-var-cc-paypal: \\f1f4;\n$fa-var-squarespace: \\f5be;\n$fa-var-cc-stripe: \\f1f5;\n$fa-var-creative-commons-share: \\f4f2;\n$fa-var-bitcoin: \\f379;\n$fa-var-keycdn: \\f3ba;\n$fa-var-opera: \\f26a;\n$fa-var-itch-io: \\f83a;\n$fa-var-umbraco: \\f8e8;\n$fa-var-galactic-senate: \\f50d;\n$fa-var-ubuntu: \\f7df;\n$fa-var-draft2digital: \\f396;\n$fa-var-stripe: \\f429;\n$fa-var-houzz: \\f27c;\n$fa-var-gg: \\f260;\n$fa-var-dhl: \\f790;\n$fa-var-square-pinterest: \\f0d3;\n$fa-var-pinterest-square: \\f0d3;\n$fa-var-xing: \\f168;\n$fa-var-blackberry: \\f37b;\n$fa-var-creative-commons-pd: \\f4ec;\n$fa-var-playstation: \\f3df;\n$fa-var-quinscape: \\f459;\n$fa-var-less: \\f41d;\n$fa-var-blogger-b: \\f37d;\n$fa-var-opencart: \\f23d;\n$fa-var-vine: \\f1ca;\n$fa-var-signal-messenger: \\e663;\n$fa-var-paypal: \\f1ed;\n$fa-var-gitlab: \\f296;\n$fa-var-typo3: \\f42b;\n$fa-var-reddit-alien: \\f281;\n$fa-var-yahoo: \\f19e;\n$fa-var-dailymotion: \\e052;\n$fa-var-affiliatetheme: \\f36b;\n$fa-var-pied-piper-pp: \\f1a7;\n$fa-var-bootstrap: \\f836;\n$fa-var-odnoklassniki: \\f263;\n$fa-var-nfc-symbol: \\e531;\n$fa-var-mintbit: \\e62f;\n$fa-var-ethereum: \\f42e;\n$fa-var-speaker-deck: \\f83c;\n$fa-var-creative-commons-nc-eu: \\f4e9;\n$fa-var-patreon: \\f3d9;\n$fa-var-avianex: \\f374;\n$fa-var-ello: \\f5f1;\n$fa-var-gofore: \\f3a7;\n$fa-var-bimobject: \\f378;\n$fa-var-brave-reverse: \\e63d;\n$fa-var-facebook-f: \\f39e;\n$fa-var-square-google-plus: \\f0d4;\n$fa-var-google-plus-square: \\f0d4;\n$fa-var-web-awesome: \\e682;\n$fa-var-mandalorian: \\f50f;\n$fa-var-first-order-alt: \\f50a;\n$fa-var-osi: \\f41a;\n$fa-var-google-wallet: \\f1ee;\n$fa-var-d-and-d-beyond: \\f6ca;\n$fa-var-periscope: \\f3da;\n$fa-var-fulcrum: \\f50b;\n$fa-var-cloudscale: \\f383;\n$fa-var-forumbee: \\f211;\n$fa-var-mizuni: \\f3cc;\n$fa-var-schlix: \\f3ea;\n$fa-var-square-xing: \\f169;\n$fa-var-xing-square: \\f169;\n$fa-var-bandcamp: \\f2d5;\n$fa-var-wpforms: \\f298;\n$fa-var-cloudversify: \\f385;\n$fa-var-usps: \\f7e1;\n$fa-var-megaport: \\f5a3;\n$fa-var-magento: \\f3c4;\n$fa-var-spotify: \\f1bc;\n$fa-var-optin-monster: \\f23c;\n$fa-var-fly: \\f417;\n$fa-var-aviato: \\f421;\n$fa-var-itunes: \\f3b4;\n$fa-var-cuttlefish: \\f38c;\n$fa-var-blogger: \\f37c;\n$fa-var-flickr: \\f16e;\n$fa-var-viber: \\f409;\n$fa-var-soundcloud: \\f1be;\n$fa-var-digg: \\f1a6;\n$fa-var-tencent-weibo: \\f1d5;\n$fa-var-letterboxd: \\e62d;\n$fa-var-symfony: \\f83d;\n$fa-var-maxcdn: \\f136;\n$fa-var-etsy: \\f2d7;\n$fa-var-facebook-messenger: \\f39f;\n$fa-var-audible: \\f373;\n$fa-var-think-peaks: \\f731;\n$fa-var-bilibili: \\e3d9;\n$fa-var-erlang: \\f39d;\n$fa-var-x-twitter: \\e61b;\n$fa-var-cotton-bureau: \\f89e;\n$fa-var-dashcube: \\f210;\n$fa-var-42-group: \\e080;\n$fa-var-innosoft: \\e080;\n$fa-var-stack-exchange: \\f18d;\n$fa-var-elementor: \\f430;\n$fa-var-square-pied-piper: \\e01e;\n$fa-var-pied-piper-square: \\e01e;\n$fa-var-creative-commons-nd: \\f4eb;\n$fa-var-palfed: \\f3d8;\n$fa-var-superpowers: \\f2dd;\n$fa-var-resolving: \\f3e7;\n$fa-var-xbox: \\f412;\n$fa-var-square-web-awesome-stroke: \\e684;\n$fa-var-searchengin: \\f3eb;\n$fa-var-tiktok: \\e07b;\n$fa-var-square-facebook: \\f082;\n$fa-var-facebook-square: \\f082;\n$fa-var-renren: \\f18b;\n$fa-var-linux: \\f17c;\n$fa-var-glide: \\f2a5;\n$fa-var-linkedin: \\f08c;\n$fa-var-hubspot: \\f3b2;\n$fa-var-deploydog: \\f38e;\n$fa-var-twitch: \\f1e8;\n$fa-var-ravelry: \\f2d9;\n$fa-var-mixer: \\e056;\n$fa-var-square-lastfm: \\f203;\n$fa-var-lastfm-square: \\f203;\n$fa-var-vimeo: \\f40a;\n$fa-var-mendeley: \\f7b3;\n$fa-var-uniregistry: \\f404;\n$fa-var-figma: \\f799;\n$fa-var-creative-commons-remix: \\f4ee;\n$fa-var-cc-amazon-pay: \\f42d;\n$fa-var-dropbox: \\f16b;\n$fa-var-instagram: \\f16d;\n$fa-var-cmplid: \\e360;\n$fa-var-upwork: \\e641;\n$fa-var-facebook: \\f09a;\n$fa-var-gripfire: \\f3ac;\n$fa-var-jedi-order: \\f50e;\n$fa-var-uikit: \\f403;\n$fa-var-fort-awesome-alt: \\f3a3;\n$fa-var-phabricator: \\f3db;\n$fa-var-ussunnah: \\f407;\n$fa-var-earlybirds: \\f39a;\n$fa-var-trade-federation: \\f513;\n$fa-var-autoprefixer: \\f41c;\n$fa-var-whatsapp: \\f232;\n$fa-var-square-upwork: \\e67c;\n$fa-var-slideshare: \\f1e7;\n$fa-var-google-play: \\f3ab;\n$fa-var-viadeo: \\f2a9;\n$fa-var-line: \\f3c0;\n$fa-var-google-drive: \\f3aa;\n$fa-var-servicestack: \\f3ec;\n$fa-var-simplybuilt: \\f215;\n$fa-var-bitbucket: \\f171;\n$fa-var-imdb: \\f2d8;\n$fa-var-deezer: \\e077;\n$fa-var-raspberry-pi: \\f7bb;\n$fa-var-jira: \\f7b1;\n$fa-var-docker: \\f395;\n$fa-var-screenpal: \\e570;\n$fa-var-bluetooth: \\f293;\n$fa-var-gitter: \\f426;\n$fa-var-d-and-d: \\f38d;\n$fa-var-microblog: \\e01a;\n$fa-var-cc-diners-club: \\f24c;\n$fa-var-gg-circle: \\f261;\n$fa-var-pied-piper-hat: \\f4e5;\n$fa-var-kickstarter-k: \\f3bc;\n$fa-var-yandex: \\f413;\n$fa-var-readme: \\f4d5;\n$fa-var-html5: \\f13b;\n$fa-var-sellsy: \\f213;\n$fa-var-square-web-awesome: \\e683;\n$fa-var-sass: \\f41e;\n$fa-var-wirsindhandwerk: \\e2d0;\n$fa-var-wsh: \\e2d0;\n$fa-var-buromobelexperte: \\f37f;\n$fa-var-salesforce: \\f83b;\n$fa-var-octopus-deploy: \\e082;\n$fa-var-medapps: \\f3c6;\n$fa-var-ns8: \\f3d5;\n$fa-var-pinterest-p: \\f231;\n$fa-var-apper: \\f371;\n$fa-var-fort-awesome: \\f286;\n$fa-var-waze: \\f83f;\n$fa-var-bluesky: \\e671;\n$fa-var-cc-jcb: \\f24b;\n$fa-var-snapchat: \\f2ab;\n$fa-var-snapchat-ghost: \\f2ab;\n$fa-var-fantasy-flight-games: \\f6dc;\n$fa-var-rust: \\e07a;\n$fa-var-wix: \\f5cf;\n$fa-var-square-behance: \\f1b5;\n$fa-var-behance-square: \\f1b5;\n$fa-var-supple: \\f3f9;\n$fa-var-webflow: \\e65c;\n$fa-var-rebel: \\f1d0;\n$fa-var-css3: \\f13c;\n$fa-var-staylinked: \\f3f5;\n$fa-var-kaggle: \\f5fa;\n$fa-var-space-awesome: \\e5ac;\n$fa-var-deviantart: \\f1bd;\n$fa-var-cpanel: \\f388;\n$fa-var-goodreads-g: \\f3a9;\n$fa-var-square-git: \\f1d2;\n$fa-var-git-square: \\f1d2;\n$fa-var-square-tumblr: \\f174;\n$fa-var-tumblr-square: \\f174;\n$fa-var-trello: \\f181;\n$fa-var-creative-commons-nc-jp: \\f4ea;\n$fa-var-get-pocket: \\f265;\n$fa-var-perbyte: \\e083;\n$fa-var-grunt: \\f3ad;\n$fa-var-weebly: \\f5cc;\n$fa-var-connectdevelop: \\f20e;\n$fa-var-leanpub: \\f212;\n$fa-var-black-tie: \\f27e;\n$fa-var-themeco: \\f5c6;\n$fa-var-python: \\f3e2;\n$fa-var-android: \\f17b;\n$fa-var-bots: \\e340;\n$fa-var-free-code-camp: \\f2c5;\n$fa-var-hornbill: \\f592;\n$fa-var-js: \\f3b8;\n$fa-var-ideal: \\e013;\n$fa-var-git: \\f1d3;\n$fa-var-dev: \\f6cc;\n$fa-var-sketch: \\f7c6;\n$fa-var-yandex-international: \\f414;\n$fa-var-cc-amex: \\f1f3;\n$fa-var-uber: \\f402;\n$fa-var-github: \\f09b;\n$fa-var-php: \\f457;\n$fa-var-alipay: \\f642;\n$fa-var-youtube: \\f167;\n$fa-var-skyatlas: \\f216;\n$fa-var-firefox-browser: \\e007;\n$fa-var-replyd: \\f3e6;\n$fa-var-suse: \\f7d6;\n$fa-var-jenkins: \\f3b6;\n$fa-var-twitter: \\f099;\n$fa-var-rockrms: \\f3e9;\n$fa-var-pinterest: \\f0d2;\n$fa-var-buffer: \\f837;\n$fa-var-npm: \\f3d4;\n$fa-var-yammer: \\f840;\n$fa-var-btc: \\f15a;\n$fa-var-dribbble: \\f17d;\n$fa-var-stumbleupon-circle: \\f1a3;\n$fa-var-internet-explorer: \\f26b;\n$fa-var-stubber: \\e5c7;\n$fa-var-telegram: \\f2c6;\n$fa-var-telegram-plane: \\f2c6;\n$fa-var-old-republic: \\f510;\n$fa-var-odysee: \\e5c6;\n$fa-var-square-whatsapp: \\f40c;\n$fa-var-whatsapp-square: \\f40c;\n$fa-var-node-js: \\f3d3;\n$fa-var-edge-legacy: \\e078;\n$fa-var-slack: \\f198;\n$fa-var-slack-hash: \\f198;\n$fa-var-medrt: \\f3c8;\n$fa-var-usb: \\f287;\n$fa-var-tumblr: \\f173;\n$fa-var-vaadin: \\f408;\n$fa-var-quora: \\f2c4;\n$fa-var-square-x-twitter: \\e61a;\n$fa-var-reacteurope: \\f75d;\n$fa-var-medium: \\f23a;\n$fa-var-medium-m: \\f23a;\n$fa-var-amilia: \\f36d;\n$fa-var-mixcloud: \\f289;\n$fa-var-flipboard: \\f44d;\n$fa-var-viacoin: \\f237;\n$fa-var-critical-role: \\f6c9;\n$fa-var-sitrox: \\e44a;\n$fa-var-discourse: \\f393;\n$fa-var-joomla: \\f1aa;\n$fa-var-mastodon: \\f4f6;\n$fa-var-airbnb: \\f834;\n$fa-var-wolf-pack-battalion: \\f514;\n$fa-var-buy-n-large: \\f8a6;\n$fa-var-gulp: \\f3ae;\n$fa-var-creative-commons-sampling-plus: \\f4f1;\n$fa-var-strava: \\f428;\n$fa-var-ember: \\f423;\n$fa-var-canadian-maple-leaf: \\f785;\n$fa-var-teamspeak: \\f4f9;\n$fa-var-pushed: \\f3e1;\n$fa-var-wordpress-simple: \\f411;\n$fa-var-nutritionix: \\f3d6;\n$fa-var-wodu: \\e088;\n$fa-var-google-pay: \\e079;\n$fa-var-intercom: \\f7af;\n$fa-var-zhihu: \\f63f;\n$fa-var-korvue: \\f42f;\n$fa-var-pix: \\e43a;\n$fa-var-steam-symbol: \\f3f6;\n\n$fa-icons: (\n \"0\": $fa-var-0,\n \"1\": $fa-var-1,\n \"2\": $fa-var-2,\n \"3\": $fa-var-3,\n \"4\": $fa-var-4,\n \"5\": $fa-var-5,\n \"6\": $fa-var-6,\n \"7\": $fa-var-7,\n \"8\": $fa-var-8,\n \"9\": $fa-var-9,\n \"fill-drip\": $fa-var-fill-drip,\n \"arrows-to-circle\": $fa-var-arrows-to-circle,\n \"circle-chevron-right\": $fa-var-circle-chevron-right,\n \"chevron-circle-right\": $fa-var-chevron-circle-right,\n \"at\": $fa-var-at,\n \"trash-can\": $fa-var-trash-can,\n \"trash-alt\": $fa-var-trash-alt,\n \"text-height\": $fa-var-text-height,\n \"user-xmark\": $fa-var-user-xmark,\n \"user-times\": $fa-var-user-times,\n \"stethoscope\": $fa-var-stethoscope,\n \"message\": $fa-var-message,\n \"comment-alt\": $fa-var-comment-alt,\n \"info\": $fa-var-info,\n \"down-left-and-up-right-to-center\": $fa-var-down-left-and-up-right-to-center,\n \"compress-alt\": $fa-var-compress-alt,\n \"explosion\": $fa-var-explosion,\n \"file-lines\": $fa-var-file-lines,\n \"file-alt\": $fa-var-file-alt,\n \"file-text\": $fa-var-file-text,\n \"wave-square\": $fa-var-wave-square,\n \"ring\": $fa-var-ring,\n \"building-un\": $fa-var-building-un,\n \"dice-three\": $fa-var-dice-three,\n \"calendar-days\": $fa-var-calendar-days,\n \"calendar-alt\": $fa-var-calendar-alt,\n \"anchor-circle-check\": $fa-var-anchor-circle-check,\n \"building-circle-arrow-right\": $fa-var-building-circle-arrow-right,\n \"volleyball\": $fa-var-volleyball,\n \"volleyball-ball\": $fa-var-volleyball-ball,\n \"arrows-up-to-line\": $fa-var-arrows-up-to-line,\n \"sort-down\": $fa-var-sort-down,\n \"sort-desc\": $fa-var-sort-desc,\n \"circle-minus\": $fa-var-circle-minus,\n \"minus-circle\": $fa-var-minus-circle,\n \"door-open\": $fa-var-door-open,\n \"right-from-bracket\": $fa-var-right-from-bracket,\n \"sign-out-alt\": $fa-var-sign-out-alt,\n \"atom\": $fa-var-atom,\n \"soap\": $fa-var-soap,\n \"icons\": $fa-var-icons,\n \"heart-music-camera-bolt\": $fa-var-heart-music-camera-bolt,\n \"microphone-lines-slash\": $fa-var-microphone-lines-slash,\n \"microphone-alt-slash\": $fa-var-microphone-alt-slash,\n \"bridge-circle-check\": $fa-var-bridge-circle-check,\n \"pump-medical\": $fa-var-pump-medical,\n \"fingerprint\": $fa-var-fingerprint,\n \"hand-point-right\": $fa-var-hand-point-right,\n \"magnifying-glass-location\": $fa-var-magnifying-glass-location,\n \"search-location\": $fa-var-search-location,\n \"forward-step\": $fa-var-forward-step,\n \"step-forward\": $fa-var-step-forward,\n \"face-smile-beam\": $fa-var-face-smile-beam,\n \"smile-beam\": $fa-var-smile-beam,\n \"flag-checkered\": $fa-var-flag-checkered,\n \"football\": $fa-var-football,\n \"football-ball\": $fa-var-football-ball,\n \"school-circle-exclamation\": $fa-var-school-circle-exclamation,\n \"crop\": $fa-var-crop,\n \"angles-down\": $fa-var-angles-down,\n \"angle-double-down\": $fa-var-angle-double-down,\n \"users-rectangle\": $fa-var-users-rectangle,\n \"people-roof\": $fa-var-people-roof,\n \"people-line\": $fa-var-people-line,\n \"beer-mug-empty\": $fa-var-beer-mug-empty,\n \"beer\": $fa-var-beer,\n \"diagram-predecessor\": $fa-var-diagram-predecessor,\n \"arrow-up-long\": $fa-var-arrow-up-long,\n \"long-arrow-up\": $fa-var-long-arrow-up,\n \"fire-flame-simple\": $fa-var-fire-flame-simple,\n \"burn\": $fa-var-burn,\n \"person\": $fa-var-person,\n \"male\": $fa-var-male,\n \"laptop\": $fa-var-laptop,\n \"file-csv\": $fa-var-file-csv,\n \"menorah\": $fa-var-menorah,\n \"truck-plane\": $fa-var-truck-plane,\n \"record-vinyl\": $fa-var-record-vinyl,\n \"face-grin-stars\": $fa-var-face-grin-stars,\n \"grin-stars\": $fa-var-grin-stars,\n \"bong\": $fa-var-bong,\n \"spaghetti-monster-flying\": $fa-var-spaghetti-monster-flying,\n \"pastafarianism\": $fa-var-pastafarianism,\n \"arrow-down-up-across-line\": $fa-var-arrow-down-up-across-line,\n \"spoon\": $fa-var-spoon,\n \"utensil-spoon\": $fa-var-utensil-spoon,\n \"jar-wheat\": $fa-var-jar-wheat,\n \"envelopes-bulk\": $fa-var-envelopes-bulk,\n \"mail-bulk\": $fa-var-mail-bulk,\n \"file-circle-exclamation\": $fa-var-file-circle-exclamation,\n \"circle-h\": $fa-var-circle-h,\n \"hospital-symbol\": $fa-var-hospital-symbol,\n \"pager\": $fa-var-pager,\n \"address-book\": $fa-var-address-book,\n \"contact-book\": $fa-var-contact-book,\n \"strikethrough\": $fa-var-strikethrough,\n \"k\": $fa-var-k,\n \"landmark-flag\": $fa-var-landmark-flag,\n \"pencil\": $fa-var-pencil,\n \"pencil-alt\": $fa-var-pencil-alt,\n \"backward\": $fa-var-backward,\n \"caret-right\": $fa-var-caret-right,\n \"comments\": $fa-var-comments,\n \"paste\": $fa-var-paste,\n \"file-clipboard\": $fa-var-file-clipboard,\n \"code-pull-request\": $fa-var-code-pull-request,\n \"clipboard-list\": $fa-var-clipboard-list,\n \"truck-ramp-box\": $fa-var-truck-ramp-box,\n \"truck-loading\": $fa-var-truck-loading,\n \"user-check\": $fa-var-user-check,\n \"vial-virus\": $fa-var-vial-virus,\n \"sheet-plastic\": $fa-var-sheet-plastic,\n \"blog\": $fa-var-blog,\n \"user-ninja\": $fa-var-user-ninja,\n \"person-arrow-up-from-line\": $fa-var-person-arrow-up-from-line,\n \"scroll-torah\": $fa-var-scroll-torah,\n \"torah\": $fa-var-torah,\n \"broom-ball\": $fa-var-broom-ball,\n \"quidditch\": $fa-var-quidditch,\n \"quidditch-broom-ball\": $fa-var-quidditch-broom-ball,\n \"toggle-off\": $fa-var-toggle-off,\n \"box-archive\": $fa-var-box-archive,\n \"archive\": $fa-var-archive,\n \"person-drowning\": $fa-var-person-drowning,\n \"arrow-down-9-1\": $fa-var-arrow-down-9-1,\n \"sort-numeric-desc\": $fa-var-sort-numeric-desc,\n \"sort-numeric-down-alt\": $fa-var-sort-numeric-down-alt,\n \"face-grin-tongue-squint\": $fa-var-face-grin-tongue-squint,\n \"grin-tongue-squint\": $fa-var-grin-tongue-squint,\n \"spray-can\": $fa-var-spray-can,\n \"truck-monster\": $fa-var-truck-monster,\n \"w\": $fa-var-w,\n \"earth-africa\": $fa-var-earth-africa,\n \"globe-africa\": $fa-var-globe-africa,\n \"rainbow\": $fa-var-rainbow,\n \"circle-notch\": $fa-var-circle-notch,\n \"tablet-screen-button\": $fa-var-tablet-screen-button,\n \"tablet-alt\": $fa-var-tablet-alt,\n \"paw\": $fa-var-paw,\n \"cloud\": $fa-var-cloud,\n \"trowel-bricks\": $fa-var-trowel-bricks,\n \"face-flushed\": $fa-var-face-flushed,\n \"flushed\": $fa-var-flushed,\n \"hospital-user\": $fa-var-hospital-user,\n \"tent-arrow-left-right\": $fa-var-tent-arrow-left-right,\n \"gavel\": $fa-var-gavel,\n \"legal\": $fa-var-legal,\n \"binoculars\": $fa-var-binoculars,\n \"microphone-slash\": $fa-var-microphone-slash,\n \"box-tissue\": $fa-var-box-tissue,\n \"motorcycle\": $fa-var-motorcycle,\n \"bell-concierge\": $fa-var-bell-concierge,\n \"concierge-bell\": $fa-var-concierge-bell,\n \"pen-ruler\": $fa-var-pen-ruler,\n \"pencil-ruler\": $fa-var-pencil-ruler,\n \"people-arrows\": $fa-var-people-arrows,\n \"people-arrows-left-right\": $fa-var-people-arrows-left-right,\n \"mars-and-venus-burst\": $fa-var-mars-and-venus-burst,\n \"square-caret-right\": $fa-var-square-caret-right,\n \"caret-square-right\": $fa-var-caret-square-right,\n \"scissors\": $fa-var-scissors,\n \"cut\": $fa-var-cut,\n \"sun-plant-wilt\": $fa-var-sun-plant-wilt,\n \"toilets-portable\": $fa-var-toilets-portable,\n \"hockey-puck\": $fa-var-hockey-puck,\n \"table\": $fa-var-table,\n \"magnifying-glass-arrow-right\": $fa-var-magnifying-glass-arrow-right,\n \"tachograph-digital\": $fa-var-tachograph-digital,\n \"digital-tachograph\": $fa-var-digital-tachograph,\n \"users-slash\": $fa-var-users-slash,\n \"clover\": $fa-var-clover,\n \"reply\": $fa-var-reply,\n \"mail-reply\": $fa-var-mail-reply,\n \"star-and-crescent\": $fa-var-star-and-crescent,\n \"house-fire\": $fa-var-house-fire,\n \"square-minus\": $fa-var-square-minus,\n \"minus-square\": $fa-var-minus-square,\n \"helicopter\": $fa-var-helicopter,\n \"compass\": $fa-var-compass,\n \"square-caret-down\": $fa-var-square-caret-down,\n \"caret-square-down\": $fa-var-caret-square-down,\n \"file-circle-question\": $fa-var-file-circle-question,\n \"laptop-code\": $fa-var-laptop-code,\n \"swatchbook\": $fa-var-swatchbook,\n \"prescription-bottle\": $fa-var-prescription-bottle,\n \"bars\": $fa-var-bars,\n \"navicon\": $fa-var-navicon,\n \"people-group\": $fa-var-people-group,\n \"hourglass-end\": $fa-var-hourglass-end,\n \"hourglass-3\": $fa-var-hourglass-3,\n \"heart-crack\": $fa-var-heart-crack,\n \"heart-broken\": $fa-var-heart-broken,\n \"square-up-right\": $fa-var-square-up-right,\n \"external-link-square-alt\": $fa-var-external-link-square-alt,\n \"face-kiss-beam\": $fa-var-face-kiss-beam,\n \"kiss-beam\": $fa-var-kiss-beam,\n \"film\": $fa-var-film,\n \"ruler-horizontal\": $fa-var-ruler-horizontal,\n \"people-robbery\": $fa-var-people-robbery,\n \"lightbulb\": $fa-var-lightbulb,\n \"caret-left\": $fa-var-caret-left,\n \"circle-exclamation\": $fa-var-circle-exclamation,\n \"exclamation-circle\": $fa-var-exclamation-circle,\n \"school-circle-xmark\": $fa-var-school-circle-xmark,\n \"arrow-right-from-bracket\": $fa-var-arrow-right-from-bracket,\n \"sign-out\": $fa-var-sign-out,\n \"circle-chevron-down\": $fa-var-circle-chevron-down,\n \"chevron-circle-down\": $fa-var-chevron-circle-down,\n \"unlock-keyhole\": $fa-var-unlock-keyhole,\n \"unlock-alt\": $fa-var-unlock-alt,\n \"cloud-showers-heavy\": $fa-var-cloud-showers-heavy,\n \"headphones-simple\": $fa-var-headphones-simple,\n \"headphones-alt\": $fa-var-headphones-alt,\n \"sitemap\": $fa-var-sitemap,\n \"circle-dollar-to-slot\": $fa-var-circle-dollar-to-slot,\n \"donate\": $fa-var-donate,\n \"memory\": $fa-var-memory,\n \"road-spikes\": $fa-var-road-spikes,\n \"fire-burner\": $fa-var-fire-burner,\n \"flag\": $fa-var-flag,\n \"hanukiah\": $fa-var-hanukiah,\n \"feather\": $fa-var-feather,\n \"volume-low\": $fa-var-volume-low,\n \"volume-down\": $fa-var-volume-down,\n \"comment-slash\": $fa-var-comment-slash,\n \"cloud-sun-rain\": $fa-var-cloud-sun-rain,\n \"compress\": $fa-var-compress,\n \"wheat-awn\": $fa-var-wheat-awn,\n \"wheat-alt\": $fa-var-wheat-alt,\n \"ankh\": $fa-var-ankh,\n \"hands-holding-child\": $fa-var-hands-holding-child,\n \"asterisk\": $fa-var-asterisk,\n \"square-check\": $fa-var-square-check,\n \"check-square\": $fa-var-check-square,\n \"peseta-sign\": $fa-var-peseta-sign,\n \"heading\": $fa-var-heading,\n \"header\": $fa-var-header,\n \"ghost\": $fa-var-ghost,\n \"list\": $fa-var-list,\n \"list-squares\": $fa-var-list-squares,\n \"square-phone-flip\": $fa-var-square-phone-flip,\n \"phone-square-alt\": $fa-var-phone-square-alt,\n \"cart-plus\": $fa-var-cart-plus,\n \"gamepad\": $fa-var-gamepad,\n \"circle-dot\": $fa-var-circle-dot,\n \"dot-circle\": $fa-var-dot-circle,\n \"face-dizzy\": $fa-var-face-dizzy,\n \"dizzy\": $fa-var-dizzy,\n \"egg\": $fa-var-egg,\n \"house-medical-circle-xmark\": $fa-var-house-medical-circle-xmark,\n \"campground\": $fa-var-campground,\n \"folder-plus\": $fa-var-folder-plus,\n \"futbol\": $fa-var-futbol,\n \"futbol-ball\": $fa-var-futbol-ball,\n \"soccer-ball\": $fa-var-soccer-ball,\n \"paintbrush\": $fa-var-paintbrush,\n \"paint-brush\": $fa-var-paint-brush,\n \"lock\": $fa-var-lock,\n \"gas-pump\": $fa-var-gas-pump,\n \"hot-tub-person\": $fa-var-hot-tub-person,\n \"hot-tub\": $fa-var-hot-tub,\n \"map-location\": $fa-var-map-location,\n \"map-marked\": $fa-var-map-marked,\n \"house-flood-water\": $fa-var-house-flood-water,\n \"tree\": $fa-var-tree,\n \"bridge-lock\": $fa-var-bridge-lock,\n \"sack-dollar\": $fa-var-sack-dollar,\n \"pen-to-square\": $fa-var-pen-to-square,\n \"edit\": $fa-var-edit,\n \"car-side\": $fa-var-car-side,\n \"share-nodes\": $fa-var-share-nodes,\n \"share-alt\": $fa-var-share-alt,\n \"heart-circle-minus\": $fa-var-heart-circle-minus,\n \"hourglass-half\": $fa-var-hourglass-half,\n \"hourglass-2\": $fa-var-hourglass-2,\n \"microscope\": $fa-var-microscope,\n \"sink\": $fa-var-sink,\n \"bag-shopping\": $fa-var-bag-shopping,\n \"shopping-bag\": $fa-var-shopping-bag,\n \"arrow-down-z-a\": $fa-var-arrow-down-z-a,\n \"sort-alpha-desc\": $fa-var-sort-alpha-desc,\n \"sort-alpha-down-alt\": $fa-var-sort-alpha-down-alt,\n \"mitten\": $fa-var-mitten,\n \"person-rays\": $fa-var-person-rays,\n \"users\": $fa-var-users,\n \"eye-slash\": $fa-var-eye-slash,\n \"flask-vial\": $fa-var-flask-vial,\n \"hand\": $fa-var-hand,\n \"hand-paper\": $fa-var-hand-paper,\n \"om\": $fa-var-om,\n \"worm\": $fa-var-worm,\n \"house-circle-xmark\": $fa-var-house-circle-xmark,\n \"plug\": $fa-var-plug,\n \"chevron-up\": $fa-var-chevron-up,\n \"hand-spock\": $fa-var-hand-spock,\n \"stopwatch\": $fa-var-stopwatch,\n \"face-kiss\": $fa-var-face-kiss,\n \"kiss\": $fa-var-kiss,\n \"bridge-circle-xmark\": $fa-var-bridge-circle-xmark,\n \"face-grin-tongue\": $fa-var-face-grin-tongue,\n \"grin-tongue\": $fa-var-grin-tongue,\n \"chess-bishop\": $fa-var-chess-bishop,\n \"face-grin-wink\": $fa-var-face-grin-wink,\n \"grin-wink\": $fa-var-grin-wink,\n \"ear-deaf\": $fa-var-ear-deaf,\n \"deaf\": $fa-var-deaf,\n \"deafness\": $fa-var-deafness,\n \"hard-of-hearing\": $fa-var-hard-of-hearing,\n \"road-circle-check\": $fa-var-road-circle-check,\n \"dice-five\": $fa-var-dice-five,\n \"square-rss\": $fa-var-square-rss,\n \"rss-square\": $fa-var-rss-square,\n \"land-mine-on\": $fa-var-land-mine-on,\n \"i-cursor\": $fa-var-i-cursor,\n \"stamp\": $fa-var-stamp,\n \"stairs\": $fa-var-stairs,\n \"i\": $fa-var-i,\n \"hryvnia-sign\": $fa-var-hryvnia-sign,\n \"hryvnia\": $fa-var-hryvnia,\n \"pills\": $fa-var-pills,\n \"face-grin-wide\": $fa-var-face-grin-wide,\n \"grin-alt\": $fa-var-grin-alt,\n \"tooth\": $fa-var-tooth,\n \"v\": $fa-var-v,\n \"bangladeshi-taka-sign\": $fa-var-bangladeshi-taka-sign,\n \"bicycle\": $fa-var-bicycle,\n \"staff-snake\": $fa-var-staff-snake,\n \"rod-asclepius\": $fa-var-rod-asclepius,\n \"rod-snake\": $fa-var-rod-snake,\n \"staff-aesculapius\": $fa-var-staff-aesculapius,\n \"head-side-cough-slash\": $fa-var-head-side-cough-slash,\n \"truck-medical\": $fa-var-truck-medical,\n \"ambulance\": $fa-var-ambulance,\n \"wheat-awn-circle-exclamation\": $fa-var-wheat-awn-circle-exclamation,\n \"snowman\": $fa-var-snowman,\n \"mortar-pestle\": $fa-var-mortar-pestle,\n \"road-barrier\": $fa-var-road-barrier,\n \"school\": $fa-var-school,\n \"igloo\": $fa-var-igloo,\n \"joint\": $fa-var-joint,\n \"angle-right\": $fa-var-angle-right,\n \"horse\": $fa-var-horse,\n \"q\": $fa-var-q,\n \"g\": $fa-var-g,\n \"notes-medical\": $fa-var-notes-medical,\n \"temperature-half\": $fa-var-temperature-half,\n \"temperature-2\": $fa-var-temperature-2,\n \"thermometer-2\": $fa-var-thermometer-2,\n \"thermometer-half\": $fa-var-thermometer-half,\n \"dong-sign\": $fa-var-dong-sign,\n \"capsules\": $fa-var-capsules,\n \"poo-storm\": $fa-var-poo-storm,\n \"poo-bolt\": $fa-var-poo-bolt,\n \"face-frown-open\": $fa-var-face-frown-open,\n \"frown-open\": $fa-var-frown-open,\n \"hand-point-up\": $fa-var-hand-point-up,\n \"money-bill\": $fa-var-money-bill,\n \"bookmark\": $fa-var-bookmark,\n \"align-justify\": $fa-var-align-justify,\n \"umbrella-beach\": $fa-var-umbrella-beach,\n \"helmet-un\": $fa-var-helmet-un,\n \"bullseye\": $fa-var-bullseye,\n \"bacon\": $fa-var-bacon,\n \"hand-point-down\": $fa-var-hand-point-down,\n \"arrow-up-from-bracket\": $fa-var-arrow-up-from-bracket,\n \"folder\": $fa-var-folder,\n \"folder-blank\": $fa-var-folder-blank,\n \"file-waveform\": $fa-var-file-waveform,\n \"file-medical-alt\": $fa-var-file-medical-alt,\n \"radiation\": $fa-var-radiation,\n \"chart-simple\": $fa-var-chart-simple,\n \"mars-stroke\": $fa-var-mars-stroke,\n \"vial\": $fa-var-vial,\n \"gauge\": $fa-var-gauge,\n \"dashboard\": $fa-var-dashboard,\n \"gauge-med\": $fa-var-gauge-med,\n \"tachometer-alt-average\": $fa-var-tachometer-alt-average,\n \"wand-magic-sparkles\": $fa-var-wand-magic-sparkles,\n \"magic-wand-sparkles\": $fa-var-magic-wand-sparkles,\n \"e\": $fa-var-e,\n \"pen-clip\": $fa-var-pen-clip,\n \"pen-alt\": $fa-var-pen-alt,\n \"bridge-circle-exclamation\": $fa-var-bridge-circle-exclamation,\n \"user\": $fa-var-user,\n \"school-circle-check\": $fa-var-school-circle-check,\n \"dumpster\": $fa-var-dumpster,\n \"van-shuttle\": $fa-var-van-shuttle,\n \"shuttle-van\": $fa-var-shuttle-van,\n \"building-user\": $fa-var-building-user,\n \"square-caret-left\": $fa-var-square-caret-left,\n \"caret-square-left\": $fa-var-caret-square-left,\n \"highlighter\": $fa-var-highlighter,\n \"key\": $fa-var-key,\n \"bullhorn\": $fa-var-bullhorn,\n \"globe\": $fa-var-globe,\n \"synagogue\": $fa-var-synagogue,\n \"person-half-dress\": $fa-var-person-half-dress,\n \"road-bridge\": $fa-var-road-bridge,\n \"location-arrow\": $fa-var-location-arrow,\n \"c\": $fa-var-c,\n \"tablet-button\": $fa-var-tablet-button,\n \"building-lock\": $fa-var-building-lock,\n \"pizza-slice\": $fa-var-pizza-slice,\n \"money-bill-wave\": $fa-var-money-bill-wave,\n \"chart-area\": $fa-var-chart-area,\n \"area-chart\": $fa-var-area-chart,\n \"house-flag\": $fa-var-house-flag,\n \"person-circle-minus\": $fa-var-person-circle-minus,\n \"ban\": $fa-var-ban,\n \"cancel\": $fa-var-cancel,\n \"camera-rotate\": $fa-var-camera-rotate,\n \"spray-can-sparkles\": $fa-var-spray-can-sparkles,\n \"air-freshener\": $fa-var-air-freshener,\n \"star\": $fa-var-star,\n \"repeat\": $fa-var-repeat,\n \"cross\": $fa-var-cross,\n \"box\": $fa-var-box,\n \"venus-mars\": $fa-var-venus-mars,\n \"arrow-pointer\": $fa-var-arrow-pointer,\n \"mouse-pointer\": $fa-var-mouse-pointer,\n \"maximize\": $fa-var-maximize,\n \"expand-arrows-alt\": $fa-var-expand-arrows-alt,\n \"charging-station\": $fa-var-charging-station,\n \"shapes\": $fa-var-shapes,\n \"triangle-circle-square\": $fa-var-triangle-circle-square,\n \"shuffle\": $fa-var-shuffle,\n \"random\": $fa-var-random,\n \"person-running\": $fa-var-person-running,\n \"running\": $fa-var-running,\n \"mobile-retro\": $fa-var-mobile-retro,\n \"grip-lines-vertical\": $fa-var-grip-lines-vertical,\n \"spider\": $fa-var-spider,\n \"hands-bound\": $fa-var-hands-bound,\n \"file-invoice-dollar\": $fa-var-file-invoice-dollar,\n \"plane-circle-exclamation\": $fa-var-plane-circle-exclamation,\n \"x-ray\": $fa-var-x-ray,\n \"spell-check\": $fa-var-spell-check,\n \"slash\": $fa-var-slash,\n \"computer-mouse\": $fa-var-computer-mouse,\n \"mouse\": $fa-var-mouse,\n \"arrow-right-to-bracket\": $fa-var-arrow-right-to-bracket,\n \"sign-in\": $fa-var-sign-in,\n \"shop-slash\": $fa-var-shop-slash,\n \"store-alt-slash\": $fa-var-store-alt-slash,\n \"server\": $fa-var-server,\n \"virus-covid-slash\": $fa-var-virus-covid-slash,\n \"shop-lock\": $fa-var-shop-lock,\n \"hourglass-start\": $fa-var-hourglass-start,\n \"hourglass-1\": $fa-var-hourglass-1,\n \"blender-phone\": $fa-var-blender-phone,\n \"building-wheat\": $fa-var-building-wheat,\n \"person-breastfeeding\": $fa-var-person-breastfeeding,\n \"right-to-bracket\": $fa-var-right-to-bracket,\n \"sign-in-alt\": $fa-var-sign-in-alt,\n \"venus\": $fa-var-venus,\n \"passport\": $fa-var-passport,\n \"heart-pulse\": $fa-var-heart-pulse,\n \"heartbeat\": $fa-var-heartbeat,\n \"people-carry-box\": $fa-var-people-carry-box,\n \"people-carry\": $fa-var-people-carry,\n \"temperature-high\": $fa-var-temperature-high,\n \"microchip\": $fa-var-microchip,\n \"crown\": $fa-var-crown,\n \"weight-hanging\": $fa-var-weight-hanging,\n \"xmarks-lines\": $fa-var-xmarks-lines,\n \"file-prescription\": $fa-var-file-prescription,\n \"weight-scale\": $fa-var-weight-scale,\n \"weight\": $fa-var-weight,\n \"user-group\": $fa-var-user-group,\n \"user-friends\": $fa-var-user-friends,\n \"arrow-up-a-z\": $fa-var-arrow-up-a-z,\n \"sort-alpha-up\": $fa-var-sort-alpha-up,\n \"chess-knight\": $fa-var-chess-knight,\n \"face-laugh-squint\": $fa-var-face-laugh-squint,\n \"laugh-squint\": $fa-var-laugh-squint,\n \"wheelchair\": $fa-var-wheelchair,\n \"circle-arrow-up\": $fa-var-circle-arrow-up,\n \"arrow-circle-up\": $fa-var-arrow-circle-up,\n \"toggle-on\": $fa-var-toggle-on,\n \"person-walking\": $fa-var-person-walking,\n \"walking\": $fa-var-walking,\n \"l\": $fa-var-l,\n \"fire\": $fa-var-fire,\n \"bed-pulse\": $fa-var-bed-pulse,\n \"procedures\": $fa-var-procedures,\n \"shuttle-space\": $fa-var-shuttle-space,\n \"space-shuttle\": $fa-var-space-shuttle,\n \"face-laugh\": $fa-var-face-laugh,\n \"laugh\": $fa-var-laugh,\n \"folder-open\": $fa-var-folder-open,\n \"heart-circle-plus\": $fa-var-heart-circle-plus,\n \"code-fork\": $fa-var-code-fork,\n \"city\": $fa-var-city,\n \"microphone-lines\": $fa-var-microphone-lines,\n \"microphone-alt\": $fa-var-microphone-alt,\n \"pepper-hot\": $fa-var-pepper-hot,\n \"unlock\": $fa-var-unlock,\n \"colon-sign\": $fa-var-colon-sign,\n \"headset\": $fa-var-headset,\n \"store-slash\": $fa-var-store-slash,\n \"road-circle-xmark\": $fa-var-road-circle-xmark,\n \"user-minus\": $fa-var-user-minus,\n \"mars-stroke-up\": $fa-var-mars-stroke-up,\n \"mars-stroke-v\": $fa-var-mars-stroke-v,\n \"champagne-glasses\": $fa-var-champagne-glasses,\n \"glass-cheers\": $fa-var-glass-cheers,\n \"clipboard\": $fa-var-clipboard,\n \"house-circle-exclamation\": $fa-var-house-circle-exclamation,\n \"file-arrow-up\": $fa-var-file-arrow-up,\n \"file-upload\": $fa-var-file-upload,\n \"wifi\": $fa-var-wifi,\n \"wifi-3\": $fa-var-wifi-3,\n \"wifi-strong\": $fa-var-wifi-strong,\n \"bath\": $fa-var-bath,\n \"bathtub\": $fa-var-bathtub,\n \"underline\": $fa-var-underline,\n \"user-pen\": $fa-var-user-pen,\n \"user-edit\": $fa-var-user-edit,\n \"signature\": $fa-var-signature,\n \"stroopwafel\": $fa-var-stroopwafel,\n \"bold\": $fa-var-bold,\n \"anchor-lock\": $fa-var-anchor-lock,\n \"building-ngo\": $fa-var-building-ngo,\n \"manat-sign\": $fa-var-manat-sign,\n \"not-equal\": $fa-var-not-equal,\n \"border-top-left\": $fa-var-border-top-left,\n \"border-style\": $fa-var-border-style,\n \"map-location-dot\": $fa-var-map-location-dot,\n \"map-marked-alt\": $fa-var-map-marked-alt,\n \"jedi\": $fa-var-jedi,\n \"square-poll-vertical\": $fa-var-square-poll-vertical,\n \"poll\": $fa-var-poll,\n \"mug-hot\": $fa-var-mug-hot,\n \"car-battery\": $fa-var-car-battery,\n \"battery-car\": $fa-var-battery-car,\n \"gift\": $fa-var-gift,\n \"dice-two\": $fa-var-dice-two,\n \"chess-queen\": $fa-var-chess-queen,\n \"glasses\": $fa-var-glasses,\n \"chess-board\": $fa-var-chess-board,\n \"building-circle-check\": $fa-var-building-circle-check,\n \"person-chalkboard\": $fa-var-person-chalkboard,\n \"mars-stroke-right\": $fa-var-mars-stroke-right,\n \"mars-stroke-h\": $fa-var-mars-stroke-h,\n \"hand-back-fist\": $fa-var-hand-back-fist,\n \"hand-rock\": $fa-var-hand-rock,\n \"square-caret-up\": $fa-var-square-caret-up,\n \"caret-square-up\": $fa-var-caret-square-up,\n \"cloud-showers-water\": $fa-var-cloud-showers-water,\n \"chart-bar\": $fa-var-chart-bar,\n \"bar-chart\": $fa-var-bar-chart,\n \"hands-bubbles\": $fa-var-hands-bubbles,\n \"hands-wash\": $fa-var-hands-wash,\n \"less-than-equal\": $fa-var-less-than-equal,\n \"train\": $fa-var-train,\n \"eye-low-vision\": $fa-var-eye-low-vision,\n \"low-vision\": $fa-var-low-vision,\n \"crow\": $fa-var-crow,\n \"sailboat\": $fa-var-sailboat,\n \"window-restore\": $fa-var-window-restore,\n \"square-plus\": $fa-var-square-plus,\n \"plus-square\": $fa-var-plus-square,\n \"torii-gate\": $fa-var-torii-gate,\n \"frog\": $fa-var-frog,\n \"bucket\": $fa-var-bucket,\n \"image\": $fa-var-image,\n \"microphone\": $fa-var-microphone,\n \"cow\": $fa-var-cow,\n \"caret-up\": $fa-var-caret-up,\n \"screwdriver\": $fa-var-screwdriver,\n \"folder-closed\": $fa-var-folder-closed,\n \"house-tsunami\": $fa-var-house-tsunami,\n \"square-nfi\": $fa-var-square-nfi,\n \"arrow-up-from-ground-water\": $fa-var-arrow-up-from-ground-water,\n \"martini-glass\": $fa-var-martini-glass,\n \"glass-martini-alt\": $fa-var-glass-martini-alt,\n \"rotate-left\": $fa-var-rotate-left,\n \"rotate-back\": $fa-var-rotate-back,\n \"rotate-backward\": $fa-var-rotate-backward,\n \"undo-alt\": $fa-var-undo-alt,\n \"table-columns\": $fa-var-table-columns,\n \"columns\": $fa-var-columns,\n \"lemon\": $fa-var-lemon,\n \"head-side-mask\": $fa-var-head-side-mask,\n \"handshake\": $fa-var-handshake,\n \"gem\": $fa-var-gem,\n \"dolly\": $fa-var-dolly,\n \"dolly-box\": $fa-var-dolly-box,\n \"smoking\": $fa-var-smoking,\n \"minimize\": $fa-var-minimize,\n \"compress-arrows-alt\": $fa-var-compress-arrows-alt,\n \"monument\": $fa-var-monument,\n \"snowplow\": $fa-var-snowplow,\n \"angles-right\": $fa-var-angles-right,\n \"angle-double-right\": $fa-var-angle-double-right,\n \"cannabis\": $fa-var-cannabis,\n \"circle-play\": $fa-var-circle-play,\n \"play-circle\": $fa-var-play-circle,\n \"tablets\": $fa-var-tablets,\n \"ethernet\": $fa-var-ethernet,\n \"euro-sign\": $fa-var-euro-sign,\n \"eur\": $fa-var-eur,\n \"euro\": $fa-var-euro,\n \"chair\": $fa-var-chair,\n \"circle-check\": $fa-var-circle-check,\n \"check-circle\": $fa-var-check-circle,\n \"circle-stop\": $fa-var-circle-stop,\n \"stop-circle\": $fa-var-stop-circle,\n \"compass-drafting\": $fa-var-compass-drafting,\n \"drafting-compass\": $fa-var-drafting-compass,\n \"plate-wheat\": $fa-var-plate-wheat,\n \"icicles\": $fa-var-icicles,\n \"person-shelter\": $fa-var-person-shelter,\n \"neuter\": $fa-var-neuter,\n \"id-badge\": $fa-var-id-badge,\n \"marker\": $fa-var-marker,\n \"face-laugh-beam\": $fa-var-face-laugh-beam,\n \"laugh-beam\": $fa-var-laugh-beam,\n \"helicopter-symbol\": $fa-var-helicopter-symbol,\n \"universal-access\": $fa-var-universal-access,\n \"circle-chevron-up\": $fa-var-circle-chevron-up,\n \"chevron-circle-up\": $fa-var-chevron-circle-up,\n \"lari-sign\": $fa-var-lari-sign,\n \"volcano\": $fa-var-volcano,\n \"person-walking-dashed-line-arrow-right\": $fa-var-person-walking-dashed-line-arrow-right,\n \"sterling-sign\": $fa-var-sterling-sign,\n \"gbp\": $fa-var-gbp,\n \"pound-sign\": $fa-var-pound-sign,\n \"viruses\": $fa-var-viruses,\n \"square-person-confined\": $fa-var-square-person-confined,\n \"user-tie\": $fa-var-user-tie,\n \"arrow-down-long\": $fa-var-arrow-down-long,\n \"long-arrow-down\": $fa-var-long-arrow-down,\n \"tent-arrow-down-to-line\": $fa-var-tent-arrow-down-to-line,\n \"certificate\": $fa-var-certificate,\n \"reply-all\": $fa-var-reply-all,\n \"mail-reply-all\": $fa-var-mail-reply-all,\n \"suitcase\": $fa-var-suitcase,\n \"person-skating\": $fa-var-person-skating,\n \"skating\": $fa-var-skating,\n \"filter-circle-dollar\": $fa-var-filter-circle-dollar,\n \"funnel-dollar\": $fa-var-funnel-dollar,\n \"camera-retro\": $fa-var-camera-retro,\n \"circle-arrow-down\": $fa-var-circle-arrow-down,\n \"arrow-circle-down\": $fa-var-arrow-circle-down,\n \"file-import\": $fa-var-file-import,\n \"arrow-right-to-file\": $fa-var-arrow-right-to-file,\n \"square-arrow-up-right\": $fa-var-square-arrow-up-right,\n \"external-link-square\": $fa-var-external-link-square,\n \"box-open\": $fa-var-box-open,\n \"scroll\": $fa-var-scroll,\n \"spa\": $fa-var-spa,\n \"location-pin-lock\": $fa-var-location-pin-lock,\n \"pause\": $fa-var-pause,\n \"hill-avalanche\": $fa-var-hill-avalanche,\n \"temperature-empty\": $fa-var-temperature-empty,\n \"temperature-0\": $fa-var-temperature-0,\n \"thermometer-0\": $fa-var-thermometer-0,\n \"thermometer-empty\": $fa-var-thermometer-empty,\n \"bomb\": $fa-var-bomb,\n \"registered\": $fa-var-registered,\n \"address-card\": $fa-var-address-card,\n \"contact-card\": $fa-var-contact-card,\n \"vcard\": $fa-var-vcard,\n \"scale-unbalanced-flip\": $fa-var-scale-unbalanced-flip,\n \"balance-scale-right\": $fa-var-balance-scale-right,\n \"subscript\": $fa-var-subscript,\n \"diamond-turn-right\": $fa-var-diamond-turn-right,\n \"directions\": $fa-var-directions,\n \"burst\": $fa-var-burst,\n \"house-laptop\": $fa-var-house-laptop,\n \"laptop-house\": $fa-var-laptop-house,\n \"face-tired\": $fa-var-face-tired,\n \"tired\": $fa-var-tired,\n \"money-bills\": $fa-var-money-bills,\n \"smog\": $fa-var-smog,\n \"crutch\": $fa-var-crutch,\n \"cloud-arrow-up\": $fa-var-cloud-arrow-up,\n \"cloud-upload\": $fa-var-cloud-upload,\n \"cloud-upload-alt\": $fa-var-cloud-upload-alt,\n \"palette\": $fa-var-palette,\n \"arrows-turn-right\": $fa-var-arrows-turn-right,\n \"vest\": $fa-var-vest,\n \"ferry\": $fa-var-ferry,\n \"arrows-down-to-people\": $fa-var-arrows-down-to-people,\n \"seedling\": $fa-var-seedling,\n \"sprout\": $fa-var-sprout,\n \"left-right\": $fa-var-left-right,\n \"arrows-alt-h\": $fa-var-arrows-alt-h,\n \"boxes-packing\": $fa-var-boxes-packing,\n \"circle-arrow-left\": $fa-var-circle-arrow-left,\n \"arrow-circle-left\": $fa-var-arrow-circle-left,\n \"group-arrows-rotate\": $fa-var-group-arrows-rotate,\n \"bowl-food\": $fa-var-bowl-food,\n \"candy-cane\": $fa-var-candy-cane,\n \"arrow-down-wide-short\": $fa-var-arrow-down-wide-short,\n \"sort-amount-asc\": $fa-var-sort-amount-asc,\n \"sort-amount-down\": $fa-var-sort-amount-down,\n \"cloud-bolt\": $fa-var-cloud-bolt,\n \"thunderstorm\": $fa-var-thunderstorm,\n \"text-slash\": $fa-var-text-slash,\n \"remove-format\": $fa-var-remove-format,\n \"face-smile-wink\": $fa-var-face-smile-wink,\n \"smile-wink\": $fa-var-smile-wink,\n \"file-word\": $fa-var-file-word,\n \"file-powerpoint\": $fa-var-file-powerpoint,\n \"arrows-left-right\": $fa-var-arrows-left-right,\n \"arrows-h\": $fa-var-arrows-h,\n \"house-lock\": $fa-var-house-lock,\n \"cloud-arrow-down\": $fa-var-cloud-arrow-down,\n \"cloud-download\": $fa-var-cloud-download,\n \"cloud-download-alt\": $fa-var-cloud-download-alt,\n \"children\": $fa-var-children,\n \"chalkboard\": $fa-var-chalkboard,\n \"blackboard\": $fa-var-blackboard,\n \"user-large-slash\": $fa-var-user-large-slash,\n \"user-alt-slash\": $fa-var-user-alt-slash,\n \"envelope-open\": $fa-var-envelope-open,\n \"handshake-simple-slash\": $fa-var-handshake-simple-slash,\n \"handshake-alt-slash\": $fa-var-handshake-alt-slash,\n \"mattress-pillow\": $fa-var-mattress-pillow,\n \"guarani-sign\": $fa-var-guarani-sign,\n \"arrows-rotate\": $fa-var-arrows-rotate,\n \"refresh\": $fa-var-refresh,\n \"sync\": $fa-var-sync,\n \"fire-extinguisher\": $fa-var-fire-extinguisher,\n \"cruzeiro-sign\": $fa-var-cruzeiro-sign,\n \"greater-than-equal\": $fa-var-greater-than-equal,\n \"shield-halved\": $fa-var-shield-halved,\n \"shield-alt\": $fa-var-shield-alt,\n \"book-atlas\": $fa-var-book-atlas,\n \"atlas\": $fa-var-atlas,\n \"virus\": $fa-var-virus,\n \"envelope-circle-check\": $fa-var-envelope-circle-check,\n \"layer-group\": $fa-var-layer-group,\n \"arrows-to-dot\": $fa-var-arrows-to-dot,\n \"archway\": $fa-var-archway,\n \"heart-circle-check\": $fa-var-heart-circle-check,\n \"house-chimney-crack\": $fa-var-house-chimney-crack,\n \"house-damage\": $fa-var-house-damage,\n \"file-zipper\": $fa-var-file-zipper,\n \"file-archive\": $fa-var-file-archive,\n \"square\": $fa-var-square,\n \"martini-glass-empty\": $fa-var-martini-glass-empty,\n \"glass-martini\": $fa-var-glass-martini,\n \"couch\": $fa-var-couch,\n \"cedi-sign\": $fa-var-cedi-sign,\n \"italic\": $fa-var-italic,\n \"table-cells-column-lock\": $fa-var-table-cells-column-lock,\n \"church\": $fa-var-church,\n \"comments-dollar\": $fa-var-comments-dollar,\n \"democrat\": $fa-var-democrat,\n \"z\": $fa-var-z,\n \"person-skiing\": $fa-var-person-skiing,\n \"skiing\": $fa-var-skiing,\n \"road-lock\": $fa-var-road-lock,\n \"a\": $fa-var-a,\n \"temperature-arrow-down\": $fa-var-temperature-arrow-down,\n \"temperature-down\": $fa-var-temperature-down,\n \"feather-pointed\": $fa-var-feather-pointed,\n \"feather-alt\": $fa-var-feather-alt,\n \"p\": $fa-var-p,\n \"snowflake\": $fa-var-snowflake,\n \"newspaper\": $fa-var-newspaper,\n \"rectangle-ad\": $fa-var-rectangle-ad,\n \"ad\": $fa-var-ad,\n \"circle-arrow-right\": $fa-var-circle-arrow-right,\n \"arrow-circle-right\": $fa-var-arrow-circle-right,\n \"filter-circle-xmark\": $fa-var-filter-circle-xmark,\n \"locust\": $fa-var-locust,\n \"sort\": $fa-var-sort,\n \"unsorted\": $fa-var-unsorted,\n \"list-ol\": $fa-var-list-ol,\n \"list-1-2\": $fa-var-list-1-2,\n \"list-numeric\": $fa-var-list-numeric,\n \"person-dress-burst\": $fa-var-person-dress-burst,\n \"money-check-dollar\": $fa-var-money-check-dollar,\n \"money-check-alt\": $fa-var-money-check-alt,\n \"vector-square\": $fa-var-vector-square,\n \"bread-slice\": $fa-var-bread-slice,\n \"language\": $fa-var-language,\n \"face-kiss-wink-heart\": $fa-var-face-kiss-wink-heart,\n \"kiss-wink-heart\": $fa-var-kiss-wink-heart,\n \"filter\": $fa-var-filter,\n \"question\": $fa-var-question,\n \"file-signature\": $fa-var-file-signature,\n \"up-down-left-right\": $fa-var-up-down-left-right,\n \"arrows-alt\": $fa-var-arrows-alt,\n \"house-chimney-user\": $fa-var-house-chimney-user,\n \"hand-holding-heart\": $fa-var-hand-holding-heart,\n \"puzzle-piece\": $fa-var-puzzle-piece,\n \"money-check\": $fa-var-money-check,\n \"star-half-stroke\": $fa-var-star-half-stroke,\n \"star-half-alt\": $fa-var-star-half-alt,\n \"code\": $fa-var-code,\n \"whiskey-glass\": $fa-var-whiskey-glass,\n \"glass-whiskey\": $fa-var-glass-whiskey,\n \"building-circle-exclamation\": $fa-var-building-circle-exclamation,\n \"magnifying-glass-chart\": $fa-var-magnifying-glass-chart,\n \"arrow-up-right-from-square\": $fa-var-arrow-up-right-from-square,\n \"external-link\": $fa-var-external-link,\n \"cubes-stacked\": $fa-var-cubes-stacked,\n \"won-sign\": $fa-var-won-sign,\n \"krw\": $fa-var-krw,\n \"won\": $fa-var-won,\n \"virus-covid\": $fa-var-virus-covid,\n \"austral-sign\": $fa-var-austral-sign,\n \"f\": $fa-var-f,\n \"leaf\": $fa-var-leaf,\n \"road\": $fa-var-road,\n \"taxi\": $fa-var-taxi,\n \"cab\": $fa-var-cab,\n \"person-circle-plus\": $fa-var-person-circle-plus,\n \"chart-pie\": $fa-var-chart-pie,\n \"pie-chart\": $fa-var-pie-chart,\n \"bolt-lightning\": $fa-var-bolt-lightning,\n \"sack-xmark\": $fa-var-sack-xmark,\n \"file-excel\": $fa-var-file-excel,\n \"file-contract\": $fa-var-file-contract,\n \"fish-fins\": $fa-var-fish-fins,\n \"building-flag\": $fa-var-building-flag,\n \"face-grin-beam\": $fa-var-face-grin-beam,\n \"grin-beam\": $fa-var-grin-beam,\n \"object-ungroup\": $fa-var-object-ungroup,\n \"poop\": $fa-var-poop,\n \"location-pin\": $fa-var-location-pin,\n \"map-marker\": $fa-var-map-marker,\n \"kaaba\": $fa-var-kaaba,\n \"toilet-paper\": $fa-var-toilet-paper,\n \"helmet-safety\": $fa-var-helmet-safety,\n \"hard-hat\": $fa-var-hard-hat,\n \"hat-hard\": $fa-var-hat-hard,\n \"eject\": $fa-var-eject,\n \"circle-right\": $fa-var-circle-right,\n \"arrow-alt-circle-right\": $fa-var-arrow-alt-circle-right,\n \"plane-circle-check\": $fa-var-plane-circle-check,\n \"face-rolling-eyes\": $fa-var-face-rolling-eyes,\n \"meh-rolling-eyes\": $fa-var-meh-rolling-eyes,\n \"object-group\": $fa-var-object-group,\n \"chart-line\": $fa-var-chart-line,\n \"line-chart\": $fa-var-line-chart,\n \"mask-ventilator\": $fa-var-mask-ventilator,\n \"arrow-right\": $fa-var-arrow-right,\n \"signs-post\": $fa-var-signs-post,\n \"map-signs\": $fa-var-map-signs,\n \"cash-register\": $fa-var-cash-register,\n \"person-circle-question\": $fa-var-person-circle-question,\n \"h\": $fa-var-h,\n \"tarp\": $fa-var-tarp,\n \"screwdriver-wrench\": $fa-var-screwdriver-wrench,\n \"tools\": $fa-var-tools,\n \"arrows-to-eye\": $fa-var-arrows-to-eye,\n \"plug-circle-bolt\": $fa-var-plug-circle-bolt,\n \"heart\": $fa-var-heart,\n \"mars-and-venus\": $fa-var-mars-and-venus,\n \"house-user\": $fa-var-house-user,\n \"home-user\": $fa-var-home-user,\n \"dumpster-fire\": $fa-var-dumpster-fire,\n \"house-crack\": $fa-var-house-crack,\n \"martini-glass-citrus\": $fa-var-martini-glass-citrus,\n \"cocktail\": $fa-var-cocktail,\n \"face-surprise\": $fa-var-face-surprise,\n \"surprise\": $fa-var-surprise,\n \"bottle-water\": $fa-var-bottle-water,\n \"circle-pause\": $fa-var-circle-pause,\n \"pause-circle\": $fa-var-pause-circle,\n \"toilet-paper-slash\": $fa-var-toilet-paper-slash,\n \"apple-whole\": $fa-var-apple-whole,\n \"apple-alt\": $fa-var-apple-alt,\n \"kitchen-set\": $fa-var-kitchen-set,\n \"r\": $fa-var-r,\n \"temperature-quarter\": $fa-var-temperature-quarter,\n \"temperature-1\": $fa-var-temperature-1,\n \"thermometer-1\": $fa-var-thermometer-1,\n \"thermometer-quarter\": $fa-var-thermometer-quarter,\n \"cube\": $fa-var-cube,\n \"bitcoin-sign\": $fa-var-bitcoin-sign,\n \"shield-dog\": $fa-var-shield-dog,\n \"solar-panel\": $fa-var-solar-panel,\n \"lock-open\": $fa-var-lock-open,\n \"elevator\": $fa-var-elevator,\n \"money-bill-transfer\": $fa-var-money-bill-transfer,\n \"money-bill-trend-up\": $fa-var-money-bill-trend-up,\n \"house-flood-water-circle-arrow-right\": $fa-var-house-flood-water-circle-arrow-right,\n \"square-poll-horizontal\": $fa-var-square-poll-horizontal,\n \"poll-h\": $fa-var-poll-h,\n \"circle\": $fa-var-circle,\n \"backward-fast\": $fa-var-backward-fast,\n \"fast-backward\": $fa-var-fast-backward,\n \"recycle\": $fa-var-recycle,\n \"user-astronaut\": $fa-var-user-astronaut,\n \"plane-slash\": $fa-var-plane-slash,\n \"trademark\": $fa-var-trademark,\n \"basketball\": $fa-var-basketball,\n \"basketball-ball\": $fa-var-basketball-ball,\n \"satellite-dish\": $fa-var-satellite-dish,\n \"circle-up\": $fa-var-circle-up,\n \"arrow-alt-circle-up\": $fa-var-arrow-alt-circle-up,\n \"mobile-screen-button\": $fa-var-mobile-screen-button,\n \"mobile-alt\": $fa-var-mobile-alt,\n \"volume-high\": $fa-var-volume-high,\n \"volume-up\": $fa-var-volume-up,\n \"users-rays\": $fa-var-users-rays,\n \"wallet\": $fa-var-wallet,\n \"clipboard-check\": $fa-var-clipboard-check,\n \"file-audio\": $fa-var-file-audio,\n \"burger\": $fa-var-burger,\n \"hamburger\": $fa-var-hamburger,\n \"wrench\": $fa-var-wrench,\n \"bugs\": $fa-var-bugs,\n \"rupee-sign\": $fa-var-rupee-sign,\n \"rupee\": $fa-var-rupee,\n \"file-image\": $fa-var-file-image,\n \"circle-question\": $fa-var-circle-question,\n \"question-circle\": $fa-var-question-circle,\n \"plane-departure\": $fa-var-plane-departure,\n \"handshake-slash\": $fa-var-handshake-slash,\n \"book-bookmark\": $fa-var-book-bookmark,\n \"code-branch\": $fa-var-code-branch,\n \"hat-cowboy\": $fa-var-hat-cowboy,\n \"bridge\": $fa-var-bridge,\n \"phone-flip\": $fa-var-phone-flip,\n \"phone-alt\": $fa-var-phone-alt,\n \"truck-front\": $fa-var-truck-front,\n \"cat\": $fa-var-cat,\n \"anchor-circle-exclamation\": $fa-var-anchor-circle-exclamation,\n \"truck-field\": $fa-var-truck-field,\n \"route\": $fa-var-route,\n \"clipboard-question\": $fa-var-clipboard-question,\n \"panorama\": $fa-var-panorama,\n \"comment-medical\": $fa-var-comment-medical,\n \"teeth-open\": $fa-var-teeth-open,\n \"file-circle-minus\": $fa-var-file-circle-minus,\n \"tags\": $fa-var-tags,\n \"wine-glass\": $fa-var-wine-glass,\n \"forward-fast\": $fa-var-forward-fast,\n \"fast-forward\": $fa-var-fast-forward,\n \"face-meh-blank\": $fa-var-face-meh-blank,\n \"meh-blank\": $fa-var-meh-blank,\n \"square-parking\": $fa-var-square-parking,\n \"parking\": $fa-var-parking,\n \"house-signal\": $fa-var-house-signal,\n \"bars-progress\": $fa-var-bars-progress,\n \"tasks-alt\": $fa-var-tasks-alt,\n \"faucet-drip\": $fa-var-faucet-drip,\n \"cart-flatbed\": $fa-var-cart-flatbed,\n \"dolly-flatbed\": $fa-var-dolly-flatbed,\n \"ban-smoking\": $fa-var-ban-smoking,\n \"smoking-ban\": $fa-var-smoking-ban,\n \"terminal\": $fa-var-terminal,\n \"mobile-button\": $fa-var-mobile-button,\n \"house-medical-flag\": $fa-var-house-medical-flag,\n \"basket-shopping\": $fa-var-basket-shopping,\n \"shopping-basket\": $fa-var-shopping-basket,\n \"tape\": $fa-var-tape,\n \"bus-simple\": $fa-var-bus-simple,\n \"bus-alt\": $fa-var-bus-alt,\n \"eye\": $fa-var-eye,\n \"face-sad-cry\": $fa-var-face-sad-cry,\n \"sad-cry\": $fa-var-sad-cry,\n \"audio-description\": $fa-var-audio-description,\n \"person-military-to-person\": $fa-var-person-military-to-person,\n \"file-shield\": $fa-var-file-shield,\n \"user-slash\": $fa-var-user-slash,\n \"pen\": $fa-var-pen,\n \"tower-observation\": $fa-var-tower-observation,\n \"file-code\": $fa-var-file-code,\n \"signal\": $fa-var-signal,\n \"signal-5\": $fa-var-signal-5,\n \"signal-perfect\": $fa-var-signal-perfect,\n \"bus\": $fa-var-bus,\n \"heart-circle-xmark\": $fa-var-heart-circle-xmark,\n \"house-chimney\": $fa-var-house-chimney,\n \"home-lg\": $fa-var-home-lg,\n \"window-maximize\": $fa-var-window-maximize,\n \"face-frown\": $fa-var-face-frown,\n \"frown\": $fa-var-frown,\n \"prescription\": $fa-var-prescription,\n \"shop\": $fa-var-shop,\n \"store-alt\": $fa-var-store-alt,\n \"floppy-disk\": $fa-var-floppy-disk,\n \"save\": $fa-var-save,\n \"vihara\": $fa-var-vihara,\n \"scale-unbalanced\": $fa-var-scale-unbalanced,\n \"balance-scale-left\": $fa-var-balance-scale-left,\n \"sort-up\": $fa-var-sort-up,\n \"sort-asc\": $fa-var-sort-asc,\n \"comment-dots\": $fa-var-comment-dots,\n \"commenting\": $fa-var-commenting,\n \"plant-wilt\": $fa-var-plant-wilt,\n \"diamond\": $fa-var-diamond,\n \"face-grin-squint\": $fa-var-face-grin-squint,\n \"grin-squint\": $fa-var-grin-squint,\n \"hand-holding-dollar\": $fa-var-hand-holding-dollar,\n \"hand-holding-usd\": $fa-var-hand-holding-usd,\n \"bacterium\": $fa-var-bacterium,\n \"hand-pointer\": $fa-var-hand-pointer,\n \"drum-steelpan\": $fa-var-drum-steelpan,\n \"hand-scissors\": $fa-var-hand-scissors,\n \"hands-praying\": $fa-var-hands-praying,\n \"praying-hands\": $fa-var-praying-hands,\n \"arrow-rotate-right\": $fa-var-arrow-rotate-right,\n \"arrow-right-rotate\": $fa-var-arrow-right-rotate,\n \"arrow-rotate-forward\": $fa-var-arrow-rotate-forward,\n \"redo\": $fa-var-redo,\n \"biohazard\": $fa-var-biohazard,\n \"location-crosshairs\": $fa-var-location-crosshairs,\n \"location\": $fa-var-location,\n \"mars-double\": $fa-var-mars-double,\n \"child-dress\": $fa-var-child-dress,\n \"users-between-lines\": $fa-var-users-between-lines,\n \"lungs-virus\": $fa-var-lungs-virus,\n \"face-grin-tears\": $fa-var-face-grin-tears,\n \"grin-tears\": $fa-var-grin-tears,\n \"phone\": $fa-var-phone,\n \"calendar-xmark\": $fa-var-calendar-xmark,\n \"calendar-times\": $fa-var-calendar-times,\n \"child-reaching\": $fa-var-child-reaching,\n \"head-side-virus\": $fa-var-head-side-virus,\n \"user-gear\": $fa-var-user-gear,\n \"user-cog\": $fa-var-user-cog,\n \"arrow-up-1-9\": $fa-var-arrow-up-1-9,\n \"sort-numeric-up\": $fa-var-sort-numeric-up,\n \"door-closed\": $fa-var-door-closed,\n \"shield-virus\": $fa-var-shield-virus,\n \"dice-six\": $fa-var-dice-six,\n \"mosquito-net\": $fa-var-mosquito-net,\n \"bridge-water\": $fa-var-bridge-water,\n \"person-booth\": $fa-var-person-booth,\n \"text-width\": $fa-var-text-width,\n \"hat-wizard\": $fa-var-hat-wizard,\n \"pen-fancy\": $fa-var-pen-fancy,\n \"person-digging\": $fa-var-person-digging,\n \"digging\": $fa-var-digging,\n \"trash\": $fa-var-trash,\n \"gauge-simple\": $fa-var-gauge-simple,\n \"gauge-simple-med\": $fa-var-gauge-simple-med,\n \"tachometer-average\": $fa-var-tachometer-average,\n \"book-medical\": $fa-var-book-medical,\n \"poo\": $fa-var-poo,\n \"quote-right\": $fa-var-quote-right,\n \"quote-right-alt\": $fa-var-quote-right-alt,\n \"shirt\": $fa-var-shirt,\n \"t-shirt\": $fa-var-t-shirt,\n \"tshirt\": $fa-var-tshirt,\n \"cubes\": $fa-var-cubes,\n \"divide\": $fa-var-divide,\n \"tenge-sign\": $fa-var-tenge-sign,\n \"tenge\": $fa-var-tenge,\n \"headphones\": $fa-var-headphones,\n \"hands-holding\": $fa-var-hands-holding,\n \"hands-clapping\": $fa-var-hands-clapping,\n \"republican\": $fa-var-republican,\n \"arrow-left\": $fa-var-arrow-left,\n \"person-circle-xmark\": $fa-var-person-circle-xmark,\n \"ruler\": $fa-var-ruler,\n \"align-left\": $fa-var-align-left,\n \"dice-d6\": $fa-var-dice-d6,\n \"restroom\": $fa-var-restroom,\n \"j\": $fa-var-j,\n \"users-viewfinder\": $fa-var-users-viewfinder,\n \"file-video\": $fa-var-file-video,\n \"up-right-from-square\": $fa-var-up-right-from-square,\n \"external-link-alt\": $fa-var-external-link-alt,\n \"table-cells\": $fa-var-table-cells,\n \"th\": $fa-var-th,\n \"file-pdf\": $fa-var-file-pdf,\n \"book-bible\": $fa-var-book-bible,\n \"bible\": $fa-var-bible,\n \"o\": $fa-var-o,\n \"suitcase-medical\": $fa-var-suitcase-medical,\n \"medkit\": $fa-var-medkit,\n \"user-secret\": $fa-var-user-secret,\n \"otter\": $fa-var-otter,\n \"person-dress\": $fa-var-person-dress,\n \"female\": $fa-var-female,\n \"comment-dollar\": $fa-var-comment-dollar,\n \"business-time\": $fa-var-business-time,\n \"briefcase-clock\": $fa-var-briefcase-clock,\n \"table-cells-large\": $fa-var-table-cells-large,\n \"th-large\": $fa-var-th-large,\n \"book-tanakh\": $fa-var-book-tanakh,\n \"tanakh\": $fa-var-tanakh,\n \"phone-volume\": $fa-var-phone-volume,\n \"volume-control-phone\": $fa-var-volume-control-phone,\n \"hat-cowboy-side\": $fa-var-hat-cowboy-side,\n \"clipboard-user\": $fa-var-clipboard-user,\n \"child\": $fa-var-child,\n \"lira-sign\": $fa-var-lira-sign,\n \"satellite\": $fa-var-satellite,\n \"plane-lock\": $fa-var-plane-lock,\n \"tag\": $fa-var-tag,\n \"comment\": $fa-var-comment,\n \"cake-candles\": $fa-var-cake-candles,\n \"birthday-cake\": $fa-var-birthday-cake,\n \"cake\": $fa-var-cake,\n \"envelope\": $fa-var-envelope,\n \"angles-up\": $fa-var-angles-up,\n \"angle-double-up\": $fa-var-angle-double-up,\n \"paperclip\": $fa-var-paperclip,\n \"arrow-right-to-city\": $fa-var-arrow-right-to-city,\n \"ribbon\": $fa-var-ribbon,\n \"lungs\": $fa-var-lungs,\n \"arrow-up-9-1\": $fa-var-arrow-up-9-1,\n \"sort-numeric-up-alt\": $fa-var-sort-numeric-up-alt,\n \"litecoin-sign\": $fa-var-litecoin-sign,\n \"border-none\": $fa-var-border-none,\n \"circle-nodes\": $fa-var-circle-nodes,\n \"parachute-box\": $fa-var-parachute-box,\n \"indent\": $fa-var-indent,\n \"truck-field-un\": $fa-var-truck-field-un,\n \"hourglass\": $fa-var-hourglass,\n \"hourglass-empty\": $fa-var-hourglass-empty,\n \"mountain\": $fa-var-mountain,\n \"user-doctor\": $fa-var-user-doctor,\n \"user-md\": $fa-var-user-md,\n \"circle-info\": $fa-var-circle-info,\n \"info-circle\": $fa-var-info-circle,\n \"cloud-meatball\": $fa-var-cloud-meatball,\n \"camera\": $fa-var-camera,\n \"camera-alt\": $fa-var-camera-alt,\n \"square-virus\": $fa-var-square-virus,\n \"meteor\": $fa-var-meteor,\n \"car-on\": $fa-var-car-on,\n \"sleigh\": $fa-var-sleigh,\n \"arrow-down-1-9\": $fa-var-arrow-down-1-9,\n \"sort-numeric-asc\": $fa-var-sort-numeric-asc,\n \"sort-numeric-down\": $fa-var-sort-numeric-down,\n \"hand-holding-droplet\": $fa-var-hand-holding-droplet,\n \"hand-holding-water\": $fa-var-hand-holding-water,\n \"water\": $fa-var-water,\n \"calendar-check\": $fa-var-calendar-check,\n \"braille\": $fa-var-braille,\n \"prescription-bottle-medical\": $fa-var-prescription-bottle-medical,\n \"prescription-bottle-alt\": $fa-var-prescription-bottle-alt,\n \"landmark\": $fa-var-landmark,\n \"truck\": $fa-var-truck,\n \"crosshairs\": $fa-var-crosshairs,\n \"person-cane\": $fa-var-person-cane,\n \"tent\": $fa-var-tent,\n \"vest-patches\": $fa-var-vest-patches,\n \"check-double\": $fa-var-check-double,\n \"arrow-down-a-z\": $fa-var-arrow-down-a-z,\n \"sort-alpha-asc\": $fa-var-sort-alpha-asc,\n \"sort-alpha-down\": $fa-var-sort-alpha-down,\n \"money-bill-wheat\": $fa-var-money-bill-wheat,\n \"cookie\": $fa-var-cookie,\n \"arrow-rotate-left\": $fa-var-arrow-rotate-left,\n \"arrow-left-rotate\": $fa-var-arrow-left-rotate,\n \"arrow-rotate-back\": $fa-var-arrow-rotate-back,\n \"arrow-rotate-backward\": $fa-var-arrow-rotate-backward,\n \"undo\": $fa-var-undo,\n \"hard-drive\": $fa-var-hard-drive,\n \"hdd\": $fa-var-hdd,\n \"face-grin-squint-tears\": $fa-var-face-grin-squint-tears,\n \"grin-squint-tears\": $fa-var-grin-squint-tears,\n \"dumbbell\": $fa-var-dumbbell,\n \"rectangle-list\": $fa-var-rectangle-list,\n \"list-alt\": $fa-var-list-alt,\n \"tarp-droplet\": $fa-var-tarp-droplet,\n \"house-medical-circle-check\": $fa-var-house-medical-circle-check,\n \"person-skiing-nordic\": $fa-var-person-skiing-nordic,\n \"skiing-nordic\": $fa-var-skiing-nordic,\n \"calendar-plus\": $fa-var-calendar-plus,\n \"plane-arrival\": $fa-var-plane-arrival,\n \"circle-left\": $fa-var-circle-left,\n \"arrow-alt-circle-left\": $fa-var-arrow-alt-circle-left,\n \"train-subway\": $fa-var-train-subway,\n \"subway\": $fa-var-subway,\n \"chart-gantt\": $fa-var-chart-gantt,\n \"indian-rupee-sign\": $fa-var-indian-rupee-sign,\n \"indian-rupee\": $fa-var-indian-rupee,\n \"inr\": $fa-var-inr,\n \"crop-simple\": $fa-var-crop-simple,\n \"crop-alt\": $fa-var-crop-alt,\n \"money-bill-1\": $fa-var-money-bill-1,\n \"money-bill-alt\": $fa-var-money-bill-alt,\n \"left-long\": $fa-var-left-long,\n \"long-arrow-alt-left\": $fa-var-long-arrow-alt-left,\n \"dna\": $fa-var-dna,\n \"virus-slash\": $fa-var-virus-slash,\n \"minus\": $fa-var-minus,\n \"subtract\": $fa-var-subtract,\n \"chess\": $fa-var-chess,\n \"arrow-left-long\": $fa-var-arrow-left-long,\n \"long-arrow-left\": $fa-var-long-arrow-left,\n \"plug-circle-check\": $fa-var-plug-circle-check,\n \"street-view\": $fa-var-street-view,\n \"franc-sign\": $fa-var-franc-sign,\n \"volume-off\": $fa-var-volume-off,\n \"hands-asl-interpreting\": $fa-var-hands-asl-interpreting,\n \"american-sign-language-interpreting\": $fa-var-american-sign-language-interpreting,\n \"asl-interpreting\": $fa-var-asl-interpreting,\n \"hands-american-sign-language-interpreting\": $fa-var-hands-american-sign-language-interpreting,\n \"gear\": $fa-var-gear,\n \"cog\": $fa-var-cog,\n \"droplet-slash\": $fa-var-droplet-slash,\n \"tint-slash\": $fa-var-tint-slash,\n \"mosque\": $fa-var-mosque,\n \"mosquito\": $fa-var-mosquito,\n \"star-of-david\": $fa-var-star-of-david,\n \"person-military-rifle\": $fa-var-person-military-rifle,\n \"cart-shopping\": $fa-var-cart-shopping,\n \"shopping-cart\": $fa-var-shopping-cart,\n \"vials\": $fa-var-vials,\n \"plug-circle-plus\": $fa-var-plug-circle-plus,\n \"place-of-worship\": $fa-var-place-of-worship,\n \"grip-vertical\": $fa-var-grip-vertical,\n \"arrow-turn-up\": $fa-var-arrow-turn-up,\n \"level-up\": $fa-var-level-up,\n \"u\": $fa-var-u,\n \"square-root-variable\": $fa-var-square-root-variable,\n \"square-root-alt\": $fa-var-square-root-alt,\n \"clock\": $fa-var-clock,\n \"clock-four\": $fa-var-clock-four,\n \"backward-step\": $fa-var-backward-step,\n \"step-backward\": $fa-var-step-backward,\n \"pallet\": $fa-var-pallet,\n \"faucet\": $fa-var-faucet,\n \"baseball-bat-ball\": $fa-var-baseball-bat-ball,\n \"s\": $fa-var-s,\n \"timeline\": $fa-var-timeline,\n \"keyboard\": $fa-var-keyboard,\n \"caret-down\": $fa-var-caret-down,\n \"house-chimney-medical\": $fa-var-house-chimney-medical,\n \"clinic-medical\": $fa-var-clinic-medical,\n \"temperature-three-quarters\": $fa-var-temperature-three-quarters,\n \"temperature-3\": $fa-var-temperature-3,\n \"thermometer-3\": $fa-var-thermometer-3,\n \"thermometer-three-quarters\": $fa-var-thermometer-three-quarters,\n \"mobile-screen\": $fa-var-mobile-screen,\n \"mobile-android-alt\": $fa-var-mobile-android-alt,\n \"plane-up\": $fa-var-plane-up,\n \"piggy-bank\": $fa-var-piggy-bank,\n \"battery-half\": $fa-var-battery-half,\n \"battery-3\": $fa-var-battery-3,\n \"mountain-city\": $fa-var-mountain-city,\n \"coins\": $fa-var-coins,\n \"khanda\": $fa-var-khanda,\n \"sliders\": $fa-var-sliders,\n \"sliders-h\": $fa-var-sliders-h,\n \"folder-tree\": $fa-var-folder-tree,\n \"network-wired\": $fa-var-network-wired,\n \"map-pin\": $fa-var-map-pin,\n \"hamsa\": $fa-var-hamsa,\n \"cent-sign\": $fa-var-cent-sign,\n \"flask\": $fa-var-flask,\n \"person-pregnant\": $fa-var-person-pregnant,\n \"wand-sparkles\": $fa-var-wand-sparkles,\n \"ellipsis-vertical\": $fa-var-ellipsis-vertical,\n \"ellipsis-v\": $fa-var-ellipsis-v,\n \"ticket\": $fa-var-ticket,\n \"power-off\": $fa-var-power-off,\n \"right-long\": $fa-var-right-long,\n \"long-arrow-alt-right\": $fa-var-long-arrow-alt-right,\n \"flag-usa\": $fa-var-flag-usa,\n \"laptop-file\": $fa-var-laptop-file,\n \"tty\": $fa-var-tty,\n \"teletype\": $fa-var-teletype,\n \"diagram-next\": $fa-var-diagram-next,\n \"person-rifle\": $fa-var-person-rifle,\n \"house-medical-circle-exclamation\": $fa-var-house-medical-circle-exclamation,\n \"closed-captioning\": $fa-var-closed-captioning,\n \"person-hiking\": $fa-var-person-hiking,\n \"hiking\": $fa-var-hiking,\n \"venus-double\": $fa-var-venus-double,\n \"images\": $fa-var-images,\n \"calculator\": $fa-var-calculator,\n \"people-pulling\": $fa-var-people-pulling,\n \"n\": $fa-var-n,\n \"cable-car\": $fa-var-cable-car,\n \"tram\": $fa-var-tram,\n \"cloud-rain\": $fa-var-cloud-rain,\n \"building-circle-xmark\": $fa-var-building-circle-xmark,\n \"ship\": $fa-var-ship,\n \"arrows-down-to-line\": $fa-var-arrows-down-to-line,\n \"download\": $fa-var-download,\n \"face-grin\": $fa-var-face-grin,\n \"grin\": $fa-var-grin,\n \"delete-left\": $fa-var-delete-left,\n \"backspace\": $fa-var-backspace,\n \"eye-dropper\": $fa-var-eye-dropper,\n \"eye-dropper-empty\": $fa-var-eye-dropper-empty,\n \"eyedropper\": $fa-var-eyedropper,\n \"file-circle-check\": $fa-var-file-circle-check,\n \"forward\": $fa-var-forward,\n \"mobile\": $fa-var-mobile,\n \"mobile-android\": $fa-var-mobile-android,\n \"mobile-phone\": $fa-var-mobile-phone,\n \"face-meh\": $fa-var-face-meh,\n \"meh\": $fa-var-meh,\n \"align-center\": $fa-var-align-center,\n \"book-skull\": $fa-var-book-skull,\n \"book-dead\": $fa-var-book-dead,\n \"id-card\": $fa-var-id-card,\n \"drivers-license\": $fa-var-drivers-license,\n \"outdent\": $fa-var-outdent,\n \"dedent\": $fa-var-dedent,\n \"heart-circle-exclamation\": $fa-var-heart-circle-exclamation,\n \"house\": $fa-var-house,\n \"home\": $fa-var-home,\n \"home-alt\": $fa-var-home-alt,\n \"home-lg-alt\": $fa-var-home-lg-alt,\n \"calendar-week\": $fa-var-calendar-week,\n \"laptop-medical\": $fa-var-laptop-medical,\n \"b\": $fa-var-b,\n \"file-medical\": $fa-var-file-medical,\n \"dice-one\": $fa-var-dice-one,\n \"kiwi-bird\": $fa-var-kiwi-bird,\n \"arrow-right-arrow-left\": $fa-var-arrow-right-arrow-left,\n \"exchange\": $fa-var-exchange,\n \"rotate-right\": $fa-var-rotate-right,\n \"redo-alt\": $fa-var-redo-alt,\n \"rotate-forward\": $fa-var-rotate-forward,\n \"utensils\": $fa-var-utensils,\n \"cutlery\": $fa-var-cutlery,\n \"arrow-up-wide-short\": $fa-var-arrow-up-wide-short,\n \"sort-amount-up\": $fa-var-sort-amount-up,\n \"mill-sign\": $fa-var-mill-sign,\n \"bowl-rice\": $fa-var-bowl-rice,\n \"skull\": $fa-var-skull,\n \"tower-broadcast\": $fa-var-tower-broadcast,\n \"broadcast-tower\": $fa-var-broadcast-tower,\n \"truck-pickup\": $fa-var-truck-pickup,\n \"up-long\": $fa-var-up-long,\n \"long-arrow-alt-up\": $fa-var-long-arrow-alt-up,\n \"stop\": $fa-var-stop,\n \"code-merge\": $fa-var-code-merge,\n \"upload\": $fa-var-upload,\n \"hurricane\": $fa-var-hurricane,\n \"mound\": $fa-var-mound,\n \"toilet-portable\": $fa-var-toilet-portable,\n \"compact-disc\": $fa-var-compact-disc,\n \"file-arrow-down\": $fa-var-file-arrow-down,\n \"file-download\": $fa-var-file-download,\n \"caravan\": $fa-var-caravan,\n \"shield-cat\": $fa-var-shield-cat,\n \"bolt\": $fa-var-bolt,\n \"zap\": $fa-var-zap,\n \"glass-water\": $fa-var-glass-water,\n \"oil-well\": $fa-var-oil-well,\n \"vault\": $fa-var-vault,\n \"mars\": $fa-var-mars,\n \"toilet\": $fa-var-toilet,\n \"plane-circle-xmark\": $fa-var-plane-circle-xmark,\n \"yen-sign\": $fa-var-yen-sign,\n \"cny\": $fa-var-cny,\n \"jpy\": $fa-var-jpy,\n \"rmb\": $fa-var-rmb,\n \"yen\": $fa-var-yen,\n \"ruble-sign\": $fa-var-ruble-sign,\n \"rouble\": $fa-var-rouble,\n \"rub\": $fa-var-rub,\n \"ruble\": $fa-var-ruble,\n \"sun\": $fa-var-sun,\n \"guitar\": $fa-var-guitar,\n \"face-laugh-wink\": $fa-var-face-laugh-wink,\n \"laugh-wink\": $fa-var-laugh-wink,\n \"horse-head\": $fa-var-horse-head,\n \"bore-hole\": $fa-var-bore-hole,\n \"industry\": $fa-var-industry,\n \"circle-down\": $fa-var-circle-down,\n \"arrow-alt-circle-down\": $fa-var-arrow-alt-circle-down,\n \"arrows-turn-to-dots\": $fa-var-arrows-turn-to-dots,\n \"florin-sign\": $fa-var-florin-sign,\n \"arrow-down-short-wide\": $fa-var-arrow-down-short-wide,\n \"sort-amount-desc\": $fa-var-sort-amount-desc,\n \"sort-amount-down-alt\": $fa-var-sort-amount-down-alt,\n \"less-than\": $fa-var-less-than,\n \"angle-down\": $fa-var-angle-down,\n \"car-tunnel\": $fa-var-car-tunnel,\n \"head-side-cough\": $fa-var-head-side-cough,\n \"grip-lines\": $fa-var-grip-lines,\n \"thumbs-down\": $fa-var-thumbs-down,\n \"user-lock\": $fa-var-user-lock,\n \"arrow-right-long\": $fa-var-arrow-right-long,\n \"long-arrow-right\": $fa-var-long-arrow-right,\n \"anchor-circle-xmark\": $fa-var-anchor-circle-xmark,\n \"ellipsis\": $fa-var-ellipsis,\n \"ellipsis-h\": $fa-var-ellipsis-h,\n \"chess-pawn\": $fa-var-chess-pawn,\n \"kit-medical\": $fa-var-kit-medical,\n \"first-aid\": $fa-var-first-aid,\n \"person-through-window\": $fa-var-person-through-window,\n \"toolbox\": $fa-var-toolbox,\n \"hands-holding-circle\": $fa-var-hands-holding-circle,\n \"bug\": $fa-var-bug,\n \"credit-card\": $fa-var-credit-card,\n \"credit-card-alt\": $fa-var-credit-card-alt,\n \"car\": $fa-var-car,\n \"automobile\": $fa-var-automobile,\n \"hand-holding-hand\": $fa-var-hand-holding-hand,\n \"book-open-reader\": $fa-var-book-open-reader,\n \"book-reader\": $fa-var-book-reader,\n \"mountain-sun\": $fa-var-mountain-sun,\n \"arrows-left-right-to-line\": $fa-var-arrows-left-right-to-line,\n \"dice-d20\": $fa-var-dice-d20,\n \"truck-droplet\": $fa-var-truck-droplet,\n \"file-circle-xmark\": $fa-var-file-circle-xmark,\n \"temperature-arrow-up\": $fa-var-temperature-arrow-up,\n \"temperature-up\": $fa-var-temperature-up,\n \"medal\": $fa-var-medal,\n \"bed\": $fa-var-bed,\n \"square-h\": $fa-var-square-h,\n \"h-square\": $fa-var-h-square,\n \"podcast\": $fa-var-podcast,\n \"temperature-full\": $fa-var-temperature-full,\n \"temperature-4\": $fa-var-temperature-4,\n \"thermometer-4\": $fa-var-thermometer-4,\n \"thermometer-full\": $fa-var-thermometer-full,\n \"bell\": $fa-var-bell,\n \"superscript\": $fa-var-superscript,\n \"plug-circle-xmark\": $fa-var-plug-circle-xmark,\n \"star-of-life\": $fa-var-star-of-life,\n \"phone-slash\": $fa-var-phone-slash,\n \"paint-roller\": $fa-var-paint-roller,\n \"handshake-angle\": $fa-var-handshake-angle,\n \"hands-helping\": $fa-var-hands-helping,\n \"location-dot\": $fa-var-location-dot,\n \"map-marker-alt\": $fa-var-map-marker-alt,\n \"file\": $fa-var-file,\n \"greater-than\": $fa-var-greater-than,\n \"person-swimming\": $fa-var-person-swimming,\n \"swimmer\": $fa-var-swimmer,\n \"arrow-down\": $fa-var-arrow-down,\n \"droplet\": $fa-var-droplet,\n \"tint\": $fa-var-tint,\n \"eraser\": $fa-var-eraser,\n \"earth-americas\": $fa-var-earth-americas,\n \"earth\": $fa-var-earth,\n \"earth-america\": $fa-var-earth-america,\n \"globe-americas\": $fa-var-globe-americas,\n \"person-burst\": $fa-var-person-burst,\n \"dove\": $fa-var-dove,\n \"battery-empty\": $fa-var-battery-empty,\n \"battery-0\": $fa-var-battery-0,\n \"socks\": $fa-var-socks,\n \"inbox\": $fa-var-inbox,\n \"section\": $fa-var-section,\n \"gauge-high\": $fa-var-gauge-high,\n \"tachometer-alt\": $fa-var-tachometer-alt,\n \"tachometer-alt-fast\": $fa-var-tachometer-alt-fast,\n \"envelope-open-text\": $fa-var-envelope-open-text,\n \"hospital\": $fa-var-hospital,\n \"hospital-alt\": $fa-var-hospital-alt,\n \"hospital-wide\": $fa-var-hospital-wide,\n \"wine-bottle\": $fa-var-wine-bottle,\n \"chess-rook\": $fa-var-chess-rook,\n \"bars-staggered\": $fa-var-bars-staggered,\n \"reorder\": $fa-var-reorder,\n \"stream\": $fa-var-stream,\n \"dharmachakra\": $fa-var-dharmachakra,\n \"hotdog\": $fa-var-hotdog,\n \"person-walking-with-cane\": $fa-var-person-walking-with-cane,\n \"blind\": $fa-var-blind,\n \"drum\": $fa-var-drum,\n \"ice-cream\": $fa-var-ice-cream,\n \"heart-circle-bolt\": $fa-var-heart-circle-bolt,\n \"fax\": $fa-var-fax,\n \"paragraph\": $fa-var-paragraph,\n \"check-to-slot\": $fa-var-check-to-slot,\n \"vote-yea\": $fa-var-vote-yea,\n \"star-half\": $fa-var-star-half,\n \"boxes-stacked\": $fa-var-boxes-stacked,\n \"boxes\": $fa-var-boxes,\n \"boxes-alt\": $fa-var-boxes-alt,\n \"link\": $fa-var-link,\n \"chain\": $fa-var-chain,\n \"ear-listen\": $fa-var-ear-listen,\n \"assistive-listening-systems\": $fa-var-assistive-listening-systems,\n \"tree-city\": $fa-var-tree-city,\n \"play\": $fa-var-play,\n \"font\": $fa-var-font,\n \"table-cells-row-lock\": $fa-var-table-cells-row-lock,\n \"rupiah-sign\": $fa-var-rupiah-sign,\n \"magnifying-glass\": $fa-var-magnifying-glass,\n \"search\": $fa-var-search,\n \"table-tennis-paddle-ball\": $fa-var-table-tennis-paddle-ball,\n \"ping-pong-paddle-ball\": $fa-var-ping-pong-paddle-ball,\n \"table-tennis\": $fa-var-table-tennis,\n \"person-dots-from-line\": $fa-var-person-dots-from-line,\n \"diagnoses\": $fa-var-diagnoses,\n \"trash-can-arrow-up\": $fa-var-trash-can-arrow-up,\n \"trash-restore-alt\": $fa-var-trash-restore-alt,\n \"naira-sign\": $fa-var-naira-sign,\n \"cart-arrow-down\": $fa-var-cart-arrow-down,\n \"walkie-talkie\": $fa-var-walkie-talkie,\n \"file-pen\": $fa-var-file-pen,\n \"file-edit\": $fa-var-file-edit,\n \"receipt\": $fa-var-receipt,\n \"square-pen\": $fa-var-square-pen,\n \"pen-square\": $fa-var-pen-square,\n \"pencil-square\": $fa-var-pencil-square,\n \"suitcase-rolling\": $fa-var-suitcase-rolling,\n \"person-circle-exclamation\": $fa-var-person-circle-exclamation,\n \"chevron-down\": $fa-var-chevron-down,\n \"battery-full\": $fa-var-battery-full,\n \"battery\": $fa-var-battery,\n \"battery-5\": $fa-var-battery-5,\n \"skull-crossbones\": $fa-var-skull-crossbones,\n \"code-compare\": $fa-var-code-compare,\n \"list-ul\": $fa-var-list-ul,\n \"list-dots\": $fa-var-list-dots,\n \"school-lock\": $fa-var-school-lock,\n \"tower-cell\": $fa-var-tower-cell,\n \"down-long\": $fa-var-down-long,\n \"long-arrow-alt-down\": $fa-var-long-arrow-alt-down,\n \"ranking-star\": $fa-var-ranking-star,\n \"chess-king\": $fa-var-chess-king,\n \"person-harassing\": $fa-var-person-harassing,\n \"brazilian-real-sign\": $fa-var-brazilian-real-sign,\n \"landmark-dome\": $fa-var-landmark-dome,\n \"landmark-alt\": $fa-var-landmark-alt,\n \"arrow-up\": $fa-var-arrow-up,\n \"tv\": $fa-var-tv,\n \"television\": $fa-var-television,\n \"tv-alt\": $fa-var-tv-alt,\n \"shrimp\": $fa-var-shrimp,\n \"list-check\": $fa-var-list-check,\n \"tasks\": $fa-var-tasks,\n \"jug-detergent\": $fa-var-jug-detergent,\n \"circle-user\": $fa-var-circle-user,\n \"user-circle\": $fa-var-user-circle,\n \"user-shield\": $fa-var-user-shield,\n \"wind\": $fa-var-wind,\n \"car-burst\": $fa-var-car-burst,\n \"car-crash\": $fa-var-car-crash,\n \"y\": $fa-var-y,\n \"person-snowboarding\": $fa-var-person-snowboarding,\n \"snowboarding\": $fa-var-snowboarding,\n \"truck-fast\": $fa-var-truck-fast,\n \"shipping-fast\": $fa-var-shipping-fast,\n \"fish\": $fa-var-fish,\n \"user-graduate\": $fa-var-user-graduate,\n \"circle-half-stroke\": $fa-var-circle-half-stroke,\n \"adjust\": $fa-var-adjust,\n \"clapperboard\": $fa-var-clapperboard,\n \"circle-radiation\": $fa-var-circle-radiation,\n \"radiation-alt\": $fa-var-radiation-alt,\n \"baseball\": $fa-var-baseball,\n \"baseball-ball\": $fa-var-baseball-ball,\n \"jet-fighter-up\": $fa-var-jet-fighter-up,\n \"diagram-project\": $fa-var-diagram-project,\n \"project-diagram\": $fa-var-project-diagram,\n \"copy\": $fa-var-copy,\n \"volume-xmark\": $fa-var-volume-xmark,\n \"volume-mute\": $fa-var-volume-mute,\n \"volume-times\": $fa-var-volume-times,\n \"hand-sparkles\": $fa-var-hand-sparkles,\n \"grip\": $fa-var-grip,\n \"grip-horizontal\": $fa-var-grip-horizontal,\n \"share-from-square\": $fa-var-share-from-square,\n \"share-square\": $fa-var-share-square,\n \"child-combatant\": $fa-var-child-combatant,\n \"child-rifle\": $fa-var-child-rifle,\n \"gun\": $fa-var-gun,\n \"square-phone\": $fa-var-square-phone,\n \"phone-square\": $fa-var-phone-square,\n \"plus\": $fa-var-plus,\n \"add\": $fa-var-add,\n \"expand\": $fa-var-expand,\n \"computer\": $fa-var-computer,\n \"xmark\": $fa-var-xmark,\n \"close\": $fa-var-close,\n \"multiply\": $fa-var-multiply,\n \"remove\": $fa-var-remove,\n \"times\": $fa-var-times,\n \"arrows-up-down-left-right\": $fa-var-arrows-up-down-left-right,\n \"arrows\": $fa-var-arrows,\n \"chalkboard-user\": $fa-var-chalkboard-user,\n \"chalkboard-teacher\": $fa-var-chalkboard-teacher,\n \"peso-sign\": $fa-var-peso-sign,\n \"building-shield\": $fa-var-building-shield,\n \"baby\": $fa-var-baby,\n \"users-line\": $fa-var-users-line,\n \"quote-left\": $fa-var-quote-left,\n \"quote-left-alt\": $fa-var-quote-left-alt,\n \"tractor\": $fa-var-tractor,\n \"trash-arrow-up\": $fa-var-trash-arrow-up,\n \"trash-restore\": $fa-var-trash-restore,\n \"arrow-down-up-lock\": $fa-var-arrow-down-up-lock,\n \"lines-leaning\": $fa-var-lines-leaning,\n \"ruler-combined\": $fa-var-ruler-combined,\n \"copyright\": $fa-var-copyright,\n \"equals\": $fa-var-equals,\n \"blender\": $fa-var-blender,\n \"teeth\": $fa-var-teeth,\n \"shekel-sign\": $fa-var-shekel-sign,\n \"ils\": $fa-var-ils,\n \"shekel\": $fa-var-shekel,\n \"sheqel\": $fa-var-sheqel,\n \"sheqel-sign\": $fa-var-sheqel-sign,\n \"map\": $fa-var-map,\n \"rocket\": $fa-var-rocket,\n \"photo-film\": $fa-var-photo-film,\n \"photo-video\": $fa-var-photo-video,\n \"folder-minus\": $fa-var-folder-minus,\n \"store\": $fa-var-store,\n \"arrow-trend-up\": $fa-var-arrow-trend-up,\n \"plug-circle-minus\": $fa-var-plug-circle-minus,\n \"sign-hanging\": $fa-var-sign-hanging,\n \"sign\": $fa-var-sign,\n \"bezier-curve\": $fa-var-bezier-curve,\n \"bell-slash\": $fa-var-bell-slash,\n \"tablet\": $fa-var-tablet,\n \"tablet-android\": $fa-var-tablet-android,\n \"school-flag\": $fa-var-school-flag,\n \"fill\": $fa-var-fill,\n \"angle-up\": $fa-var-angle-up,\n \"drumstick-bite\": $fa-var-drumstick-bite,\n \"holly-berry\": $fa-var-holly-berry,\n \"chevron-left\": $fa-var-chevron-left,\n \"bacteria\": $fa-var-bacteria,\n \"hand-lizard\": $fa-var-hand-lizard,\n \"notdef\": $fa-var-notdef,\n \"disease\": $fa-var-disease,\n \"briefcase-medical\": $fa-var-briefcase-medical,\n \"genderless\": $fa-var-genderless,\n \"chevron-right\": $fa-var-chevron-right,\n \"retweet\": $fa-var-retweet,\n \"car-rear\": $fa-var-car-rear,\n \"car-alt\": $fa-var-car-alt,\n \"pump-soap\": $fa-var-pump-soap,\n \"video-slash\": $fa-var-video-slash,\n \"battery-quarter\": $fa-var-battery-quarter,\n \"battery-2\": $fa-var-battery-2,\n \"radio\": $fa-var-radio,\n \"baby-carriage\": $fa-var-baby-carriage,\n \"carriage-baby\": $fa-var-carriage-baby,\n \"traffic-light\": $fa-var-traffic-light,\n \"thermometer\": $fa-var-thermometer,\n \"vr-cardboard\": $fa-var-vr-cardboard,\n \"hand-middle-finger\": $fa-var-hand-middle-finger,\n \"percent\": $fa-var-percent,\n \"percentage\": $fa-var-percentage,\n \"truck-moving\": $fa-var-truck-moving,\n \"glass-water-droplet\": $fa-var-glass-water-droplet,\n \"display\": $fa-var-display,\n \"face-smile\": $fa-var-face-smile,\n \"smile\": $fa-var-smile,\n \"thumbtack\": $fa-var-thumbtack,\n \"thumb-tack\": $fa-var-thumb-tack,\n \"trophy\": $fa-var-trophy,\n \"person-praying\": $fa-var-person-praying,\n \"pray\": $fa-var-pray,\n \"hammer\": $fa-var-hammer,\n \"hand-peace\": $fa-var-hand-peace,\n \"rotate\": $fa-var-rotate,\n \"sync-alt\": $fa-var-sync-alt,\n \"spinner\": $fa-var-spinner,\n \"robot\": $fa-var-robot,\n \"peace\": $fa-var-peace,\n \"gears\": $fa-var-gears,\n \"cogs\": $fa-var-cogs,\n \"warehouse\": $fa-var-warehouse,\n \"arrow-up-right-dots\": $fa-var-arrow-up-right-dots,\n \"splotch\": $fa-var-splotch,\n \"face-grin-hearts\": $fa-var-face-grin-hearts,\n \"grin-hearts\": $fa-var-grin-hearts,\n \"dice-four\": $fa-var-dice-four,\n \"sim-card\": $fa-var-sim-card,\n \"transgender\": $fa-var-transgender,\n \"transgender-alt\": $fa-var-transgender-alt,\n \"mercury\": $fa-var-mercury,\n \"arrow-turn-down\": $fa-var-arrow-turn-down,\n \"level-down\": $fa-var-level-down,\n \"person-falling-burst\": $fa-var-person-falling-burst,\n \"award\": $fa-var-award,\n \"ticket-simple\": $fa-var-ticket-simple,\n \"ticket-alt\": $fa-var-ticket-alt,\n \"building\": $fa-var-building,\n \"angles-left\": $fa-var-angles-left,\n \"angle-double-left\": $fa-var-angle-double-left,\n \"qrcode\": $fa-var-qrcode,\n \"clock-rotate-left\": $fa-var-clock-rotate-left,\n \"history\": $fa-var-history,\n \"face-grin-beam-sweat\": $fa-var-face-grin-beam-sweat,\n \"grin-beam-sweat\": $fa-var-grin-beam-sweat,\n \"file-export\": $fa-var-file-export,\n \"arrow-right-from-file\": $fa-var-arrow-right-from-file,\n \"shield\": $fa-var-shield,\n \"shield-blank\": $fa-var-shield-blank,\n \"arrow-up-short-wide\": $fa-var-arrow-up-short-wide,\n \"sort-amount-up-alt\": $fa-var-sort-amount-up-alt,\n \"house-medical\": $fa-var-house-medical,\n \"golf-ball-tee\": $fa-var-golf-ball-tee,\n \"golf-ball\": $fa-var-golf-ball,\n \"circle-chevron-left\": $fa-var-circle-chevron-left,\n \"chevron-circle-left\": $fa-var-chevron-circle-left,\n \"house-chimney-window\": $fa-var-house-chimney-window,\n \"pen-nib\": $fa-var-pen-nib,\n \"tent-arrow-turn-left\": $fa-var-tent-arrow-turn-left,\n \"tents\": $fa-var-tents,\n \"wand-magic\": $fa-var-wand-magic,\n \"magic\": $fa-var-magic,\n \"dog\": $fa-var-dog,\n \"carrot\": $fa-var-carrot,\n \"moon\": $fa-var-moon,\n \"wine-glass-empty\": $fa-var-wine-glass-empty,\n \"wine-glass-alt\": $fa-var-wine-glass-alt,\n \"cheese\": $fa-var-cheese,\n \"yin-yang\": $fa-var-yin-yang,\n \"music\": $fa-var-music,\n \"code-commit\": $fa-var-code-commit,\n \"temperature-low\": $fa-var-temperature-low,\n \"person-biking\": $fa-var-person-biking,\n \"biking\": $fa-var-biking,\n \"broom\": $fa-var-broom,\n \"shield-heart\": $fa-var-shield-heart,\n \"gopuram\": $fa-var-gopuram,\n \"earth-oceania\": $fa-var-earth-oceania,\n \"globe-oceania\": $fa-var-globe-oceania,\n \"square-xmark\": $fa-var-square-xmark,\n \"times-square\": $fa-var-times-square,\n \"xmark-square\": $fa-var-xmark-square,\n \"hashtag\": $fa-var-hashtag,\n \"up-right-and-down-left-from-center\": $fa-var-up-right-and-down-left-from-center,\n \"expand-alt\": $fa-var-expand-alt,\n \"oil-can\": $fa-var-oil-can,\n \"t\": $fa-var-t,\n \"hippo\": $fa-var-hippo,\n \"chart-column\": $fa-var-chart-column,\n \"infinity\": $fa-var-infinity,\n \"vial-circle-check\": $fa-var-vial-circle-check,\n \"person-arrow-down-to-line\": $fa-var-person-arrow-down-to-line,\n \"voicemail\": $fa-var-voicemail,\n \"fan\": $fa-var-fan,\n \"person-walking-luggage\": $fa-var-person-walking-luggage,\n \"up-down\": $fa-var-up-down,\n \"arrows-alt-v\": $fa-var-arrows-alt-v,\n \"cloud-moon-rain\": $fa-var-cloud-moon-rain,\n \"calendar\": $fa-var-calendar,\n \"trailer\": $fa-var-trailer,\n \"bahai\": $fa-var-bahai,\n \"haykal\": $fa-var-haykal,\n \"sd-card\": $fa-var-sd-card,\n \"dragon\": $fa-var-dragon,\n \"shoe-prints\": $fa-var-shoe-prints,\n \"circle-plus\": $fa-var-circle-plus,\n \"plus-circle\": $fa-var-plus-circle,\n \"face-grin-tongue-wink\": $fa-var-face-grin-tongue-wink,\n \"grin-tongue-wink\": $fa-var-grin-tongue-wink,\n \"hand-holding\": $fa-var-hand-holding,\n \"plug-circle-exclamation\": $fa-var-plug-circle-exclamation,\n \"link-slash\": $fa-var-link-slash,\n \"chain-broken\": $fa-var-chain-broken,\n \"chain-slash\": $fa-var-chain-slash,\n \"unlink\": $fa-var-unlink,\n \"clone\": $fa-var-clone,\n \"person-walking-arrow-loop-left\": $fa-var-person-walking-arrow-loop-left,\n \"arrow-up-z-a\": $fa-var-arrow-up-z-a,\n \"sort-alpha-up-alt\": $fa-var-sort-alpha-up-alt,\n \"fire-flame-curved\": $fa-var-fire-flame-curved,\n \"fire-alt\": $fa-var-fire-alt,\n \"tornado\": $fa-var-tornado,\n \"file-circle-plus\": $fa-var-file-circle-plus,\n \"book-quran\": $fa-var-book-quran,\n \"quran\": $fa-var-quran,\n \"anchor\": $fa-var-anchor,\n \"border-all\": $fa-var-border-all,\n \"face-angry\": $fa-var-face-angry,\n \"angry\": $fa-var-angry,\n \"cookie-bite\": $fa-var-cookie-bite,\n \"arrow-trend-down\": $fa-var-arrow-trend-down,\n \"rss\": $fa-var-rss,\n \"feed\": $fa-var-feed,\n \"draw-polygon\": $fa-var-draw-polygon,\n \"scale-balanced\": $fa-var-scale-balanced,\n \"balance-scale\": $fa-var-balance-scale,\n \"gauge-simple-high\": $fa-var-gauge-simple-high,\n \"tachometer\": $fa-var-tachometer,\n \"tachometer-fast\": $fa-var-tachometer-fast,\n \"shower\": $fa-var-shower,\n \"desktop\": $fa-var-desktop,\n \"desktop-alt\": $fa-var-desktop-alt,\n \"m\": $fa-var-m,\n \"table-list\": $fa-var-table-list,\n \"th-list\": $fa-var-th-list,\n \"comment-sms\": $fa-var-comment-sms,\n \"sms\": $fa-var-sms,\n \"book\": $fa-var-book,\n \"user-plus\": $fa-var-user-plus,\n \"check\": $fa-var-check,\n \"battery-three-quarters\": $fa-var-battery-three-quarters,\n \"battery-4\": $fa-var-battery-4,\n \"house-circle-check\": $fa-var-house-circle-check,\n \"angle-left\": $fa-var-angle-left,\n \"diagram-successor\": $fa-var-diagram-successor,\n \"truck-arrow-right\": $fa-var-truck-arrow-right,\n \"arrows-split-up-and-left\": $fa-var-arrows-split-up-and-left,\n \"hand-fist\": $fa-var-hand-fist,\n \"fist-raised\": $fa-var-fist-raised,\n \"cloud-moon\": $fa-var-cloud-moon,\n \"briefcase\": $fa-var-briefcase,\n \"person-falling\": $fa-var-person-falling,\n \"image-portrait\": $fa-var-image-portrait,\n \"portrait\": $fa-var-portrait,\n \"user-tag\": $fa-var-user-tag,\n \"rug\": $fa-var-rug,\n \"earth-europe\": $fa-var-earth-europe,\n \"globe-europe\": $fa-var-globe-europe,\n \"cart-flatbed-suitcase\": $fa-var-cart-flatbed-suitcase,\n \"luggage-cart\": $fa-var-luggage-cart,\n \"rectangle-xmark\": $fa-var-rectangle-xmark,\n \"rectangle-times\": $fa-var-rectangle-times,\n \"times-rectangle\": $fa-var-times-rectangle,\n \"window-close\": $fa-var-window-close,\n \"baht-sign\": $fa-var-baht-sign,\n \"book-open\": $fa-var-book-open,\n \"book-journal-whills\": $fa-var-book-journal-whills,\n \"journal-whills\": $fa-var-journal-whills,\n \"handcuffs\": $fa-var-handcuffs,\n \"triangle-exclamation\": $fa-var-triangle-exclamation,\n \"exclamation-triangle\": $fa-var-exclamation-triangle,\n \"warning\": $fa-var-warning,\n \"database\": $fa-var-database,\n \"share\": $fa-var-share,\n \"mail-forward\": $fa-var-mail-forward,\n \"bottle-droplet\": $fa-var-bottle-droplet,\n \"mask-face\": $fa-var-mask-face,\n \"hill-rockslide\": $fa-var-hill-rockslide,\n \"right-left\": $fa-var-right-left,\n \"exchange-alt\": $fa-var-exchange-alt,\n \"paper-plane\": $fa-var-paper-plane,\n \"road-circle-exclamation\": $fa-var-road-circle-exclamation,\n \"dungeon\": $fa-var-dungeon,\n \"align-right\": $fa-var-align-right,\n \"money-bill-1-wave\": $fa-var-money-bill-1-wave,\n \"money-bill-wave-alt\": $fa-var-money-bill-wave-alt,\n \"life-ring\": $fa-var-life-ring,\n \"hands\": $fa-var-hands,\n \"sign-language\": $fa-var-sign-language,\n \"signing\": $fa-var-signing,\n \"calendar-day\": $fa-var-calendar-day,\n \"water-ladder\": $fa-var-water-ladder,\n \"ladder-water\": $fa-var-ladder-water,\n \"swimming-pool\": $fa-var-swimming-pool,\n \"arrows-up-down\": $fa-var-arrows-up-down,\n \"arrows-v\": $fa-var-arrows-v,\n \"face-grimace\": $fa-var-face-grimace,\n \"grimace\": $fa-var-grimace,\n \"wheelchair-move\": $fa-var-wheelchair-move,\n \"wheelchair-alt\": $fa-var-wheelchair-alt,\n \"turn-down\": $fa-var-turn-down,\n \"level-down-alt\": $fa-var-level-down-alt,\n \"person-walking-arrow-right\": $fa-var-person-walking-arrow-right,\n \"square-envelope\": $fa-var-square-envelope,\n \"envelope-square\": $fa-var-envelope-square,\n \"dice\": $fa-var-dice,\n \"bowling-ball\": $fa-var-bowling-ball,\n \"brain\": $fa-var-brain,\n \"bandage\": $fa-var-bandage,\n \"band-aid\": $fa-var-band-aid,\n \"calendar-minus\": $fa-var-calendar-minus,\n \"circle-xmark\": $fa-var-circle-xmark,\n \"times-circle\": $fa-var-times-circle,\n \"xmark-circle\": $fa-var-xmark-circle,\n \"gifts\": $fa-var-gifts,\n \"hotel\": $fa-var-hotel,\n \"earth-asia\": $fa-var-earth-asia,\n \"globe-asia\": $fa-var-globe-asia,\n \"id-card-clip\": $fa-var-id-card-clip,\n \"id-card-alt\": $fa-var-id-card-alt,\n \"magnifying-glass-plus\": $fa-var-magnifying-glass-plus,\n \"search-plus\": $fa-var-search-plus,\n \"thumbs-up\": $fa-var-thumbs-up,\n \"user-clock\": $fa-var-user-clock,\n \"hand-dots\": $fa-var-hand-dots,\n \"allergies\": $fa-var-allergies,\n \"file-invoice\": $fa-var-file-invoice,\n \"window-minimize\": $fa-var-window-minimize,\n \"mug-saucer\": $fa-var-mug-saucer,\n \"coffee\": $fa-var-coffee,\n \"brush\": $fa-var-brush,\n \"mask\": $fa-var-mask,\n \"magnifying-glass-minus\": $fa-var-magnifying-glass-minus,\n \"search-minus\": $fa-var-search-minus,\n \"ruler-vertical\": $fa-var-ruler-vertical,\n \"user-large\": $fa-var-user-large,\n \"user-alt\": $fa-var-user-alt,\n \"train-tram\": $fa-var-train-tram,\n \"user-nurse\": $fa-var-user-nurse,\n \"syringe\": $fa-var-syringe,\n \"cloud-sun\": $fa-var-cloud-sun,\n \"stopwatch-20\": $fa-var-stopwatch-20,\n \"square-full\": $fa-var-square-full,\n \"magnet\": $fa-var-magnet,\n \"jar\": $fa-var-jar,\n \"note-sticky\": $fa-var-note-sticky,\n \"sticky-note\": $fa-var-sticky-note,\n \"bug-slash\": $fa-var-bug-slash,\n \"arrow-up-from-water-pump\": $fa-var-arrow-up-from-water-pump,\n \"bone\": $fa-var-bone,\n \"user-injured\": $fa-var-user-injured,\n \"face-sad-tear\": $fa-var-face-sad-tear,\n \"sad-tear\": $fa-var-sad-tear,\n \"plane\": $fa-var-plane,\n \"tent-arrows-down\": $fa-var-tent-arrows-down,\n \"exclamation\": $fa-var-exclamation,\n \"arrows-spin\": $fa-var-arrows-spin,\n \"print\": $fa-var-print,\n \"turkish-lira-sign\": $fa-var-turkish-lira-sign,\n \"try\": $fa-var-try,\n \"turkish-lira\": $fa-var-turkish-lira,\n \"dollar-sign\": $fa-var-dollar-sign,\n \"dollar\": $fa-var-dollar,\n \"usd\": $fa-var-usd,\n \"x\": $fa-var-x,\n \"magnifying-glass-dollar\": $fa-var-magnifying-glass-dollar,\n \"search-dollar\": $fa-var-search-dollar,\n \"users-gear\": $fa-var-users-gear,\n \"users-cog\": $fa-var-users-cog,\n \"person-military-pointing\": $fa-var-person-military-pointing,\n \"building-columns\": $fa-var-building-columns,\n \"bank\": $fa-var-bank,\n \"institution\": $fa-var-institution,\n \"museum\": $fa-var-museum,\n \"university\": $fa-var-university,\n \"umbrella\": $fa-var-umbrella,\n \"trowel\": $fa-var-trowel,\n \"d\": $fa-var-d,\n \"stapler\": $fa-var-stapler,\n \"masks-theater\": $fa-var-masks-theater,\n \"theater-masks\": $fa-var-theater-masks,\n \"kip-sign\": $fa-var-kip-sign,\n \"hand-point-left\": $fa-var-hand-point-left,\n \"handshake-simple\": $fa-var-handshake-simple,\n \"handshake-alt\": $fa-var-handshake-alt,\n \"jet-fighter\": $fa-var-jet-fighter,\n \"fighter-jet\": $fa-var-fighter-jet,\n \"square-share-nodes\": $fa-var-square-share-nodes,\n \"share-alt-square\": $fa-var-share-alt-square,\n \"barcode\": $fa-var-barcode,\n \"plus-minus\": $fa-var-plus-minus,\n \"video\": $fa-var-video,\n \"video-camera\": $fa-var-video-camera,\n \"graduation-cap\": $fa-var-graduation-cap,\n \"mortar-board\": $fa-var-mortar-board,\n \"hand-holding-medical\": $fa-var-hand-holding-medical,\n \"person-circle-check\": $fa-var-person-circle-check,\n \"turn-up\": $fa-var-turn-up,\n \"level-up-alt\": $fa-var-level-up-alt,\n);\n\n$fa-brand-icons: (\n \"monero\": $fa-var-monero,\n \"hooli\": $fa-var-hooli,\n \"yelp\": $fa-var-yelp,\n \"cc-visa\": $fa-var-cc-visa,\n \"lastfm\": $fa-var-lastfm,\n \"shopware\": $fa-var-shopware,\n \"creative-commons-nc\": $fa-var-creative-commons-nc,\n \"aws\": $fa-var-aws,\n \"redhat\": $fa-var-redhat,\n \"yoast\": $fa-var-yoast,\n \"cloudflare\": $fa-var-cloudflare,\n \"ups\": $fa-var-ups,\n \"pixiv\": $fa-var-pixiv,\n \"wpexplorer\": $fa-var-wpexplorer,\n \"dyalog\": $fa-var-dyalog,\n \"bity\": $fa-var-bity,\n \"stackpath\": $fa-var-stackpath,\n \"buysellads\": $fa-var-buysellads,\n \"first-order\": $fa-var-first-order,\n \"modx\": $fa-var-modx,\n \"guilded\": $fa-var-guilded,\n \"vnv\": $fa-var-vnv,\n \"square-js\": $fa-var-square-js,\n \"js-square\": $fa-var-js-square,\n \"microsoft\": $fa-var-microsoft,\n \"qq\": $fa-var-qq,\n \"orcid\": $fa-var-orcid,\n \"java\": $fa-var-java,\n \"invision\": $fa-var-invision,\n \"creative-commons-pd-alt\": $fa-var-creative-commons-pd-alt,\n \"centercode\": $fa-var-centercode,\n \"glide-g\": $fa-var-glide-g,\n \"drupal\": $fa-var-drupal,\n \"jxl\": $fa-var-jxl,\n \"hire-a-helper\": $fa-var-hire-a-helper,\n \"creative-commons-by\": $fa-var-creative-commons-by,\n \"unity\": $fa-var-unity,\n \"whmcs\": $fa-var-whmcs,\n \"rocketchat\": $fa-var-rocketchat,\n \"vk\": $fa-var-vk,\n \"untappd\": $fa-var-untappd,\n \"mailchimp\": $fa-var-mailchimp,\n \"css3-alt\": $fa-var-css3-alt,\n \"square-reddit\": $fa-var-square-reddit,\n \"reddit-square\": $fa-var-reddit-square,\n \"vimeo-v\": $fa-var-vimeo-v,\n \"contao\": $fa-var-contao,\n \"square-font-awesome\": $fa-var-square-font-awesome,\n \"deskpro\": $fa-var-deskpro,\n \"brave\": $fa-var-brave,\n \"sistrix\": $fa-var-sistrix,\n \"square-instagram\": $fa-var-square-instagram,\n \"instagram-square\": $fa-var-instagram-square,\n \"battle-net\": $fa-var-battle-net,\n \"the-red-yeti\": $fa-var-the-red-yeti,\n \"square-hacker-news\": $fa-var-square-hacker-news,\n \"hacker-news-square\": $fa-var-hacker-news-square,\n \"edge\": $fa-var-edge,\n \"threads\": $fa-var-threads,\n \"napster\": $fa-var-napster,\n \"square-snapchat\": $fa-var-square-snapchat,\n \"snapchat-square\": $fa-var-snapchat-square,\n \"google-plus-g\": $fa-var-google-plus-g,\n \"artstation\": $fa-var-artstation,\n \"markdown\": $fa-var-markdown,\n \"sourcetree\": $fa-var-sourcetree,\n \"google-plus\": $fa-var-google-plus,\n \"diaspora\": $fa-var-diaspora,\n \"foursquare\": $fa-var-foursquare,\n \"stack-overflow\": $fa-var-stack-overflow,\n \"github-alt\": $fa-var-github-alt,\n \"phoenix-squadron\": $fa-var-phoenix-squadron,\n \"pagelines\": $fa-var-pagelines,\n \"algolia\": $fa-var-algolia,\n \"red-river\": $fa-var-red-river,\n \"creative-commons-sa\": $fa-var-creative-commons-sa,\n \"safari\": $fa-var-safari,\n \"google\": $fa-var-google,\n \"square-font-awesome-stroke\": $fa-var-square-font-awesome-stroke,\n \"font-awesome-alt\": $fa-var-font-awesome-alt,\n \"atlassian\": $fa-var-atlassian,\n \"linkedin-in\": $fa-var-linkedin-in,\n \"digital-ocean\": $fa-var-digital-ocean,\n \"nimblr\": $fa-var-nimblr,\n \"chromecast\": $fa-var-chromecast,\n \"evernote\": $fa-var-evernote,\n \"hacker-news\": $fa-var-hacker-news,\n \"creative-commons-sampling\": $fa-var-creative-commons-sampling,\n \"adversal\": $fa-var-adversal,\n \"creative-commons\": $fa-var-creative-commons,\n \"watchman-monitoring\": $fa-var-watchman-monitoring,\n \"fonticons\": $fa-var-fonticons,\n \"weixin\": $fa-var-weixin,\n \"shirtsinbulk\": $fa-var-shirtsinbulk,\n \"codepen\": $fa-var-codepen,\n \"git-alt\": $fa-var-git-alt,\n \"lyft\": $fa-var-lyft,\n \"rev\": $fa-var-rev,\n \"windows\": $fa-var-windows,\n \"wizards-of-the-coast\": $fa-var-wizards-of-the-coast,\n \"square-viadeo\": $fa-var-square-viadeo,\n \"viadeo-square\": $fa-var-viadeo-square,\n \"meetup\": $fa-var-meetup,\n \"centos\": $fa-var-centos,\n \"adn\": $fa-var-adn,\n \"cloudsmith\": $fa-var-cloudsmith,\n \"opensuse\": $fa-var-opensuse,\n \"pied-piper-alt\": $fa-var-pied-piper-alt,\n \"square-dribbble\": $fa-var-square-dribbble,\n \"dribbble-square\": $fa-var-dribbble-square,\n \"codiepie\": $fa-var-codiepie,\n \"node\": $fa-var-node,\n \"mix\": $fa-var-mix,\n \"steam\": $fa-var-steam,\n \"cc-apple-pay\": $fa-var-cc-apple-pay,\n \"scribd\": $fa-var-scribd,\n \"debian\": $fa-var-debian,\n \"openid\": $fa-var-openid,\n \"instalod\": $fa-var-instalod,\n \"expeditedssl\": $fa-var-expeditedssl,\n \"sellcast\": $fa-var-sellcast,\n \"square-twitter\": $fa-var-square-twitter,\n \"twitter-square\": $fa-var-twitter-square,\n \"r-project\": $fa-var-r-project,\n \"delicious\": $fa-var-delicious,\n \"freebsd\": $fa-var-freebsd,\n \"vuejs\": $fa-var-vuejs,\n \"accusoft\": $fa-var-accusoft,\n \"ioxhost\": $fa-var-ioxhost,\n \"fonticons-fi\": $fa-var-fonticons-fi,\n \"app-store\": $fa-var-app-store,\n \"cc-mastercard\": $fa-var-cc-mastercard,\n \"itunes-note\": $fa-var-itunes-note,\n \"golang\": $fa-var-golang,\n \"kickstarter\": $fa-var-kickstarter,\n \"square-kickstarter\": $fa-var-square-kickstarter,\n \"grav\": $fa-var-grav,\n \"weibo\": $fa-var-weibo,\n \"uncharted\": $fa-var-uncharted,\n \"firstdraft\": $fa-var-firstdraft,\n \"square-youtube\": $fa-var-square-youtube,\n \"youtube-square\": $fa-var-youtube-square,\n \"wikipedia-w\": $fa-var-wikipedia-w,\n \"wpressr\": $fa-var-wpressr,\n \"rendact\": $fa-var-rendact,\n \"angellist\": $fa-var-angellist,\n \"galactic-republic\": $fa-var-galactic-republic,\n \"nfc-directional\": $fa-var-nfc-directional,\n \"skype\": $fa-var-skype,\n \"joget\": $fa-var-joget,\n \"fedora\": $fa-var-fedora,\n \"stripe-s\": $fa-var-stripe-s,\n \"meta\": $fa-var-meta,\n \"laravel\": $fa-var-laravel,\n \"hotjar\": $fa-var-hotjar,\n \"bluetooth-b\": $fa-var-bluetooth-b,\n \"square-letterboxd\": $fa-var-square-letterboxd,\n \"sticker-mule\": $fa-var-sticker-mule,\n \"creative-commons-zero\": $fa-var-creative-commons-zero,\n \"hips\": $fa-var-hips,\n \"behance\": $fa-var-behance,\n \"reddit\": $fa-var-reddit,\n \"discord\": $fa-var-discord,\n \"chrome\": $fa-var-chrome,\n \"app-store-ios\": $fa-var-app-store-ios,\n \"cc-discover\": $fa-var-cc-discover,\n \"wpbeginner\": $fa-var-wpbeginner,\n \"confluence\": $fa-var-confluence,\n \"shoelace\": $fa-var-shoelace,\n \"mdb\": $fa-var-mdb,\n \"dochub\": $fa-var-dochub,\n \"accessible-icon\": $fa-var-accessible-icon,\n \"ebay\": $fa-var-ebay,\n \"amazon\": $fa-var-amazon,\n \"unsplash\": $fa-var-unsplash,\n \"yarn\": $fa-var-yarn,\n \"square-steam\": $fa-var-square-steam,\n \"steam-square\": $fa-var-steam-square,\n \"500px\": $fa-var-500px,\n \"square-vimeo\": $fa-var-square-vimeo,\n \"vimeo-square\": $fa-var-vimeo-square,\n \"asymmetrik\": $fa-var-asymmetrik,\n \"font-awesome\": $fa-var-font-awesome,\n \"font-awesome-flag\": $fa-var-font-awesome-flag,\n \"font-awesome-logo-full\": $fa-var-font-awesome-logo-full,\n \"gratipay\": $fa-var-gratipay,\n \"apple\": $fa-var-apple,\n \"hive\": $fa-var-hive,\n \"gitkraken\": $fa-var-gitkraken,\n \"keybase\": $fa-var-keybase,\n \"apple-pay\": $fa-var-apple-pay,\n \"padlet\": $fa-var-padlet,\n \"amazon-pay\": $fa-var-amazon-pay,\n \"square-github\": $fa-var-square-github,\n \"github-square\": $fa-var-github-square,\n \"stumbleupon\": $fa-var-stumbleupon,\n \"fedex\": $fa-var-fedex,\n \"phoenix-framework\": $fa-var-phoenix-framework,\n \"shopify\": $fa-var-shopify,\n \"neos\": $fa-var-neos,\n \"square-threads\": $fa-var-square-threads,\n \"hackerrank\": $fa-var-hackerrank,\n \"researchgate\": $fa-var-researchgate,\n \"swift\": $fa-var-swift,\n \"angular\": $fa-var-angular,\n \"speakap\": $fa-var-speakap,\n \"angrycreative\": $fa-var-angrycreative,\n \"y-combinator\": $fa-var-y-combinator,\n \"empire\": $fa-var-empire,\n \"envira\": $fa-var-envira,\n \"google-scholar\": $fa-var-google-scholar,\n \"square-gitlab\": $fa-var-square-gitlab,\n \"gitlab-square\": $fa-var-gitlab-square,\n \"studiovinari\": $fa-var-studiovinari,\n \"pied-piper\": $fa-var-pied-piper,\n \"wordpress\": $fa-var-wordpress,\n \"product-hunt\": $fa-var-product-hunt,\n \"firefox\": $fa-var-firefox,\n \"linode\": $fa-var-linode,\n \"goodreads\": $fa-var-goodreads,\n \"square-odnoklassniki\": $fa-var-square-odnoklassniki,\n \"odnoklassniki-square\": $fa-var-odnoklassniki-square,\n \"jsfiddle\": $fa-var-jsfiddle,\n \"sith\": $fa-var-sith,\n \"themeisle\": $fa-var-themeisle,\n \"page4\": $fa-var-page4,\n \"hashnode\": $fa-var-hashnode,\n \"react\": $fa-var-react,\n \"cc-paypal\": $fa-var-cc-paypal,\n \"squarespace\": $fa-var-squarespace,\n \"cc-stripe\": $fa-var-cc-stripe,\n \"creative-commons-share\": $fa-var-creative-commons-share,\n \"bitcoin\": $fa-var-bitcoin,\n \"keycdn\": $fa-var-keycdn,\n \"opera\": $fa-var-opera,\n \"itch-io\": $fa-var-itch-io,\n \"umbraco\": $fa-var-umbraco,\n \"galactic-senate\": $fa-var-galactic-senate,\n \"ubuntu\": $fa-var-ubuntu,\n \"draft2digital\": $fa-var-draft2digital,\n \"stripe\": $fa-var-stripe,\n \"houzz\": $fa-var-houzz,\n \"gg\": $fa-var-gg,\n \"dhl\": $fa-var-dhl,\n \"square-pinterest\": $fa-var-square-pinterest,\n \"pinterest-square\": $fa-var-pinterest-square,\n \"xing\": $fa-var-xing,\n \"blackberry\": $fa-var-blackberry,\n \"creative-commons-pd\": $fa-var-creative-commons-pd,\n \"playstation\": $fa-var-playstation,\n \"quinscape\": $fa-var-quinscape,\n \"less\": $fa-var-less,\n \"blogger-b\": $fa-var-blogger-b,\n \"opencart\": $fa-var-opencart,\n \"vine\": $fa-var-vine,\n \"signal-messenger\": $fa-var-signal-messenger,\n \"paypal\": $fa-var-paypal,\n \"gitlab\": $fa-var-gitlab,\n \"typo3\": $fa-var-typo3,\n \"reddit-alien\": $fa-var-reddit-alien,\n \"yahoo\": $fa-var-yahoo,\n \"dailymotion\": $fa-var-dailymotion,\n \"affiliatetheme\": $fa-var-affiliatetheme,\n \"pied-piper-pp\": $fa-var-pied-piper-pp,\n \"bootstrap\": $fa-var-bootstrap,\n \"odnoklassniki\": $fa-var-odnoklassniki,\n \"nfc-symbol\": $fa-var-nfc-symbol,\n \"mintbit\": $fa-var-mintbit,\n \"ethereum\": $fa-var-ethereum,\n \"speaker-deck\": $fa-var-speaker-deck,\n \"creative-commons-nc-eu\": $fa-var-creative-commons-nc-eu,\n \"patreon\": $fa-var-patreon,\n \"avianex\": $fa-var-avianex,\n \"ello\": $fa-var-ello,\n \"gofore\": $fa-var-gofore,\n \"bimobject\": $fa-var-bimobject,\n \"brave-reverse\": $fa-var-brave-reverse,\n \"facebook-f\": $fa-var-facebook-f,\n \"square-google-plus\": $fa-var-square-google-plus,\n \"google-plus-square\": $fa-var-google-plus-square,\n \"web-awesome\": $fa-var-web-awesome,\n \"mandalorian\": $fa-var-mandalorian,\n \"first-order-alt\": $fa-var-first-order-alt,\n \"osi\": $fa-var-osi,\n \"google-wallet\": $fa-var-google-wallet,\n \"d-and-d-beyond\": $fa-var-d-and-d-beyond,\n \"periscope\": $fa-var-periscope,\n \"fulcrum\": $fa-var-fulcrum,\n \"cloudscale\": $fa-var-cloudscale,\n \"forumbee\": $fa-var-forumbee,\n \"mizuni\": $fa-var-mizuni,\n \"schlix\": $fa-var-schlix,\n \"square-xing\": $fa-var-square-xing,\n \"xing-square\": $fa-var-xing-square,\n \"bandcamp\": $fa-var-bandcamp,\n \"wpforms\": $fa-var-wpforms,\n \"cloudversify\": $fa-var-cloudversify,\n \"usps\": $fa-var-usps,\n \"megaport\": $fa-var-megaport,\n \"magento\": $fa-var-magento,\n \"spotify\": $fa-var-spotify,\n \"optin-monster\": $fa-var-optin-monster,\n \"fly\": $fa-var-fly,\n \"aviato\": $fa-var-aviato,\n \"itunes\": $fa-var-itunes,\n \"cuttlefish\": $fa-var-cuttlefish,\n \"blogger\": $fa-var-blogger,\n \"flickr\": $fa-var-flickr,\n \"viber\": $fa-var-viber,\n \"soundcloud\": $fa-var-soundcloud,\n \"digg\": $fa-var-digg,\n \"tencent-weibo\": $fa-var-tencent-weibo,\n \"letterboxd\": $fa-var-letterboxd,\n \"symfony\": $fa-var-symfony,\n \"maxcdn\": $fa-var-maxcdn,\n \"etsy\": $fa-var-etsy,\n \"facebook-messenger\": $fa-var-facebook-messenger,\n \"audible\": $fa-var-audible,\n \"think-peaks\": $fa-var-think-peaks,\n \"bilibili\": $fa-var-bilibili,\n \"erlang\": $fa-var-erlang,\n \"x-twitter\": $fa-var-x-twitter,\n \"cotton-bureau\": $fa-var-cotton-bureau,\n \"dashcube\": $fa-var-dashcube,\n \"42-group\": $fa-var-42-group,\n \"innosoft\": $fa-var-innosoft,\n \"stack-exchange\": $fa-var-stack-exchange,\n \"elementor\": $fa-var-elementor,\n \"square-pied-piper\": $fa-var-square-pied-piper,\n \"pied-piper-square\": $fa-var-pied-piper-square,\n \"creative-commons-nd\": $fa-var-creative-commons-nd,\n \"palfed\": $fa-var-palfed,\n \"superpowers\": $fa-var-superpowers,\n \"resolving\": $fa-var-resolving,\n \"xbox\": $fa-var-xbox,\n \"square-web-awesome-stroke\": $fa-var-square-web-awesome-stroke,\n \"searchengin\": $fa-var-searchengin,\n \"tiktok\": $fa-var-tiktok,\n \"square-facebook\": $fa-var-square-facebook,\n \"facebook-square\": $fa-var-facebook-square,\n \"renren\": $fa-var-renren,\n \"linux\": $fa-var-linux,\n \"glide\": $fa-var-glide,\n \"linkedin\": $fa-var-linkedin,\n \"hubspot\": $fa-var-hubspot,\n \"deploydog\": $fa-var-deploydog,\n \"twitch\": $fa-var-twitch,\n \"ravelry\": $fa-var-ravelry,\n \"mixer\": $fa-var-mixer,\n \"square-lastfm\": $fa-var-square-lastfm,\n \"lastfm-square\": $fa-var-lastfm-square,\n \"vimeo\": $fa-var-vimeo,\n \"mendeley\": $fa-var-mendeley,\n \"uniregistry\": $fa-var-uniregistry,\n \"figma\": $fa-var-figma,\n \"creative-commons-remix\": $fa-var-creative-commons-remix,\n \"cc-amazon-pay\": $fa-var-cc-amazon-pay,\n \"dropbox\": $fa-var-dropbox,\n \"instagram\": $fa-var-instagram,\n \"cmplid\": $fa-var-cmplid,\n \"upwork\": $fa-var-upwork,\n \"facebook\": $fa-var-facebook,\n \"gripfire\": $fa-var-gripfire,\n \"jedi-order\": $fa-var-jedi-order,\n \"uikit\": $fa-var-uikit,\n \"fort-awesome-alt\": $fa-var-fort-awesome-alt,\n \"phabricator\": $fa-var-phabricator,\n \"ussunnah\": $fa-var-ussunnah,\n \"earlybirds\": $fa-var-earlybirds,\n \"trade-federation\": $fa-var-trade-federation,\n \"autoprefixer\": $fa-var-autoprefixer,\n \"whatsapp\": $fa-var-whatsapp,\n \"square-upwork\": $fa-var-square-upwork,\n \"slideshare\": $fa-var-slideshare,\n \"google-play\": $fa-var-google-play,\n \"viadeo\": $fa-var-viadeo,\n \"line\": $fa-var-line,\n \"google-drive\": $fa-var-google-drive,\n \"servicestack\": $fa-var-servicestack,\n \"simplybuilt\": $fa-var-simplybuilt,\n \"bitbucket\": $fa-var-bitbucket,\n \"imdb\": $fa-var-imdb,\n \"deezer\": $fa-var-deezer,\n \"raspberry-pi\": $fa-var-raspberry-pi,\n \"jira\": $fa-var-jira,\n \"docker\": $fa-var-docker,\n \"screenpal\": $fa-var-screenpal,\n \"bluetooth\": $fa-var-bluetooth,\n \"gitter\": $fa-var-gitter,\n \"d-and-d\": $fa-var-d-and-d,\n \"microblog\": $fa-var-microblog,\n \"cc-diners-club\": $fa-var-cc-diners-club,\n \"gg-circle\": $fa-var-gg-circle,\n \"pied-piper-hat\": $fa-var-pied-piper-hat,\n \"kickstarter-k\": $fa-var-kickstarter-k,\n \"yandex\": $fa-var-yandex,\n \"readme\": $fa-var-readme,\n \"html5\": $fa-var-html5,\n \"sellsy\": $fa-var-sellsy,\n \"square-web-awesome\": $fa-var-square-web-awesome,\n \"sass\": $fa-var-sass,\n \"wirsindhandwerk\": $fa-var-wirsindhandwerk,\n \"wsh\": $fa-var-wsh,\n \"buromobelexperte\": $fa-var-buromobelexperte,\n \"salesforce\": $fa-var-salesforce,\n \"octopus-deploy\": $fa-var-octopus-deploy,\n \"medapps\": $fa-var-medapps,\n \"ns8\": $fa-var-ns8,\n \"pinterest-p\": $fa-var-pinterest-p,\n \"apper\": $fa-var-apper,\n \"fort-awesome\": $fa-var-fort-awesome,\n \"waze\": $fa-var-waze,\n \"bluesky\": $fa-var-bluesky,\n \"cc-jcb\": $fa-var-cc-jcb,\n \"snapchat\": $fa-var-snapchat,\n \"snapchat-ghost\": $fa-var-snapchat-ghost,\n \"fantasy-flight-games\": $fa-var-fantasy-flight-games,\n \"rust\": $fa-var-rust,\n \"wix\": $fa-var-wix,\n \"square-behance\": $fa-var-square-behance,\n \"behance-square\": $fa-var-behance-square,\n \"supple\": $fa-var-supple,\n \"webflow\": $fa-var-webflow,\n \"rebel\": $fa-var-rebel,\n \"css3\": $fa-var-css3,\n \"staylinked\": $fa-var-staylinked,\n \"kaggle\": $fa-var-kaggle,\n \"space-awesome\": $fa-var-space-awesome,\n \"deviantart\": $fa-var-deviantart,\n \"cpanel\": $fa-var-cpanel,\n \"goodreads-g\": $fa-var-goodreads-g,\n \"square-git\": $fa-var-square-git,\n \"git-square\": $fa-var-git-square,\n \"square-tumblr\": $fa-var-square-tumblr,\n \"tumblr-square\": $fa-var-tumblr-square,\n \"trello\": $fa-var-trello,\n \"creative-commons-nc-jp\": $fa-var-creative-commons-nc-jp,\n \"get-pocket\": $fa-var-get-pocket,\n \"perbyte\": $fa-var-perbyte,\n \"grunt\": $fa-var-grunt,\n \"weebly\": $fa-var-weebly,\n \"connectdevelop\": $fa-var-connectdevelop,\n \"leanpub\": $fa-var-leanpub,\n \"black-tie\": $fa-var-black-tie,\n \"themeco\": $fa-var-themeco,\n \"python\": $fa-var-python,\n \"android\": $fa-var-android,\n \"bots\": $fa-var-bots,\n \"free-code-camp\": $fa-var-free-code-camp,\n \"hornbill\": $fa-var-hornbill,\n \"js\": $fa-var-js,\n \"ideal\": $fa-var-ideal,\n \"git\": $fa-var-git,\n \"dev\": $fa-var-dev,\n \"sketch\": $fa-var-sketch,\n \"yandex-international\": $fa-var-yandex-international,\n \"cc-amex\": $fa-var-cc-amex,\n \"uber\": $fa-var-uber,\n \"github\": $fa-var-github,\n \"php\": $fa-var-php,\n \"alipay\": $fa-var-alipay,\n \"youtube\": $fa-var-youtube,\n \"skyatlas\": $fa-var-skyatlas,\n \"firefox-browser\": $fa-var-firefox-browser,\n \"replyd\": $fa-var-replyd,\n \"suse\": $fa-var-suse,\n \"jenkins\": $fa-var-jenkins,\n \"twitter\": $fa-var-twitter,\n \"rockrms\": $fa-var-rockrms,\n \"pinterest\": $fa-var-pinterest,\n \"buffer\": $fa-var-buffer,\n \"npm\": $fa-var-npm,\n \"yammer\": $fa-var-yammer,\n \"btc\": $fa-var-btc,\n \"dribbble\": $fa-var-dribbble,\n \"stumbleupon-circle\": $fa-var-stumbleupon-circle,\n \"internet-explorer\": $fa-var-internet-explorer,\n \"stubber\": $fa-var-stubber,\n \"telegram\": $fa-var-telegram,\n \"telegram-plane\": $fa-var-telegram-plane,\n \"old-republic\": $fa-var-old-republic,\n \"odysee\": $fa-var-odysee,\n \"square-whatsapp\": $fa-var-square-whatsapp,\n \"whatsapp-square\": $fa-var-whatsapp-square,\n \"node-js\": $fa-var-node-js,\n \"edge-legacy\": $fa-var-edge-legacy,\n \"slack\": $fa-var-slack,\n \"slack-hash\": $fa-var-slack-hash,\n \"medrt\": $fa-var-medrt,\n \"usb\": $fa-var-usb,\n \"tumblr\": $fa-var-tumblr,\n \"vaadin\": $fa-var-vaadin,\n \"quora\": $fa-var-quora,\n \"square-x-twitter\": $fa-var-square-x-twitter,\n \"reacteurope\": $fa-var-reacteurope,\n \"medium\": $fa-var-medium,\n \"medium-m\": $fa-var-medium-m,\n \"amilia\": $fa-var-amilia,\n \"mixcloud\": $fa-var-mixcloud,\n \"flipboard\": $fa-var-flipboard,\n \"viacoin\": $fa-var-viacoin,\n \"critical-role\": $fa-var-critical-role,\n \"sitrox\": $fa-var-sitrox,\n \"discourse\": $fa-var-discourse,\n \"joomla\": $fa-var-joomla,\n \"mastodon\": $fa-var-mastodon,\n \"airbnb\": $fa-var-airbnb,\n \"wolf-pack-battalion\": $fa-var-wolf-pack-battalion,\n \"buy-n-large\": $fa-var-buy-n-large,\n \"gulp\": $fa-var-gulp,\n \"creative-commons-sampling-plus\": $fa-var-creative-commons-sampling-plus,\n \"strava\": $fa-var-strava,\n \"ember\": $fa-var-ember,\n \"canadian-maple-leaf\": $fa-var-canadian-maple-leaf,\n \"teamspeak\": $fa-var-teamspeak,\n \"pushed\": $fa-var-pushed,\n \"wordpress-simple\": $fa-var-wordpress-simple,\n \"nutritionix\": $fa-var-nutritionix,\n \"wodu\": $fa-var-wodu,\n \"google-pay\": $fa-var-google-pay,\n \"intercom\": $fa-var-intercom,\n \"zhihu\": $fa-var-zhihu,\n \"korvue\": $fa-var-korvue,\n \"pix\": $fa-var-pix,\n \"steam-symbol\": $fa-var-steam-symbol,\n);\n","// specific icon class definition\n// -------------------------\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n\n@each $name, $icon in $fa-icons {\n .#{$fa-css-prefix}-#{$name}::before { content: unquote(\"\\\"#{ $icon }\\\"\"); }\n}\n\n","/*!\n * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n@import 'functions';\n@import 'variables';\n\n:root, :host {\n --#{$fa-css-prefix}-style-family-classic: '#{ $fa-style-family }';\n --#{$fa-css-prefix}-font-solid: normal 900 1em/1 '#{ $fa-style-family }';\n}\n\n@font-face {\n font-family: 'Font Awesome 6 Free';\n font-style: normal;\n font-weight: 900;\n font-display: $fa-font-display;\n src: url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'),\n url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype');\n}\n\n.fas,\n.#{$fa-css-prefix}-solid {\n font-weight: 900;\n}\n","/*!\n * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n@import 'functions';\n@import 'variables';\n\n:root, :host {\n --#{$fa-css-prefix}-style-family-classic: '#{ $fa-style-family }';\n --#{$fa-css-prefix}-font-regular: normal 400 1em/1 '#{ $fa-style-family }';\n}\n\n@font-face {\n font-family: 'Font Awesome 6 Free';\n font-style: normal;\n font-weight: 400;\n font-display: $fa-font-display;\n src: url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'),\n url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype');\n}\n\n.far,\n.#{$fa-css-prefix}-regular {\n font-weight: 400;\n}\n","/*!\n * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n@import 'functions';\n@import 'variables';\n\n:root, :host {\n --#{$fa-css-prefix}-style-family-brands: 'Font Awesome 6 Brands';\n --#{$fa-css-prefix}-font-brands: normal 400 1em/1 'Font Awesome 6 Brands';\n}\n\n@font-face {\n font-family: 'Font Awesome 6 Brands';\n font-style: normal;\n font-weight: 400;\n font-display: $fa-font-display;\n src: url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'),\n url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype');\n}\n\n.fab,\n.#{$fa-css-prefix}-brands {\n font-weight: 400;\n}\n\n@each $name, $icon in $fa-brand-icons {\n .#{$fa-css-prefix}-#{$name}:before { content: unquote(\"\\\"#{ $icon }\\\"\"); }\n}\n","html {\n /*****************************************************************************\n * Overall Layout Variables\n */\n\n // Header height will impact the top offset for many sections\n // Article header is 66% of Header\n --pst-header-height: 4rem;\n --pst-header-article-height: calc(var(--pst-header-height) * 2 / 3);\n --pst-sidebar-secondary: 17rem;\n}\n\n/*******************************************************************************\n* Breakpoints that trigger UI changes\n*\n* Note that media-breakpoint-down begins at the next highest level!\n* So we should choose a media-breakpoint-down one *lower* than when we want to start\n* example: media-breakpoint-up(md) and media-breakpoint-down(sm) trigger at the same time\n* ref: https://github.com/twbs/bootstrap/issues/31214\n*/\n$breakpoint-sidebar-primary: lg; // When we collapse the primary sidebar\n$breakpoint-sidebar-secondary: xl; // When we collapse the secondary sidebar\n$breakpoint-page-width: 88rem; // taken from sphinx-basic-ng, which we are ultimately going to inherit\n\n/*******************************************************************************\n* Define the animation behaviour\n*/\n$animation-time: 200ms;\n\n/*******************************************************************************\n* UI shaping and padding\n*/\n$admonition-border-radius: 0.25rem;\n\n// In this theme, some focus rings have rounded corners while others do not.\n// This variable sets the border radius for the rounded focus rings.\n$focus-ring-radius: 0.125rem; // 2px at 100% zoom and 16px base font.\n\n$navbar-link-padding-y: 0.25rem;\n\n// Ensure that there is no overlap of bumper disks (smallest circle that\n// contains the bounding box of the interactive element).\n// - https://github.com/Quansight-Labs/czi-scientific-python-mgmt/issues/81#issuecomment-2251325783\n$nav-icon-column-gap: 1.12rem;\n\n// Determines vertical space between entries in both the section (left/primary\n// sidebar) and page (right/secondary sidebar) table of contents\n$toc-item-padding-y: 0.25rem;\n","html {\n /*****************************************************************************\n * Font features used in this theme\n */\n\n // base font size - applied at body/html level\n --pst-font-size-base: 1rem;\n\n // heading font sizes based on a medium contrast type scale\n // - see: https://github.com/Quansight-Labs/czi-scientific-python-mgmt/issues/97#issuecomment-2310531483\n --pst-font-size-h1: 2.625rem;\n --pst-font-size-h2: 2.125rem;\n --pst-font-size-h3: 1.75rem;\n --pst-font-size-h4: 1.5rem;\n --pst-font-size-h5: 1.25rem;\n --pst-font-size-h6: 1rem;\n\n // smaller than heading font sizes\n --pst-font-size-milli: 0.9rem;\n\n // Sidebar styles\n --pst-sidebar-font-size: 0.9rem;\n --pst-sidebar-font-size-mobile: 1.1rem;\n --pst-sidebar-header-font-size: 1.2rem;\n --pst-sidebar-header-font-weight: 600;\n\n // Admonition styles\n --pst-admonition-font-weight-heading: 600;\n\n // Font weights\n --pst-font-weight-caption: 300;\n --pst-font-weight-heading: 600;\n\n // Font family\n // These are adapted from https://systemfontstack.com/ */\n --pst-font-family-base-system: -apple-system, \"BlinkMacSystemFont\", \"Segoe UI\",\n \"Helvetica Neue\", \"Arial\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\",\n \"Segoe UI Symbol\";\n --pst-font-family-monospace-system: \"SFMono-Regular\", \"Menlo\", \"Consolas\",\n \"Monaco\", \"Liberation Mono\", \"Lucida Console\", monospace;\n --pst-font-family-base: var(--pst-font-family-base-system);\n --pst-font-family-heading: var(--pst-font-family-base-system);\n --pst-font-family-monospace: var(--pst-font-family-monospace-system);\n}\n\n$line-height-body: 1.65;\n$fa-font-path: \"vendor/fontawesome/webfonts/\";\n","html {\n /*****************************************************************************\n * Icon\n */\n\n // Font size across all icons\n --pst-font-size-icon: 1.5rem;\n\n // Font Awesome default icons\n --pst-icon-check-circle: \"\\f058\"; // fa-solid fa-circle-check\n --pst-icon-info-circle: \"\\f05a\"; // fa-solid fa-circle-info\n --pst-icon-exclamation-triangle: \"\\f071\"; // fa-solid fa-triangle-exclamation\n --pst-icon-exclamation-circle: \"\\f06a\"; // fa-solid fa-circle-exclamation\n --pst-icon-times-circle: \"\\f057\"; // fa-solid fa-circle-xmark\n --pst-icon-lightbulb: \"\\f0eb\"; // fa-solid fa-lightbulb\n --pst-icon-download: \"\\f019\"; // fa-solid fa-download\n --pst-icon-angle-left: \"\\f104\"; // fa-solid fa-angle-left\n --pst-icon-angle-right: \"\\f105\"; // fa-solid fa-angle-right\n --pst-icon-external-link: \"\\f35d\"; // fa-solid fa-up-right-from-square\n --pst-icon-search-minus: \"\\f010\"; // fa-solid fa-magnifying-glass-minus\n --pst-icon-github: \"\\f09b\"; // fa-brands fa-github\n --pst-icon-gitlab: \"\\f296\"; // fa-brands fa-gitlab\n --pst-icon-share: \"\\f064\"; // fa-solid fa-share\n --pst-icon-bell: \"\\f0f3\"; // fa-solid fa-bell\n --pst-icon-pencil: \"\\f303\"; // fa-solid fa-pencil\n\n // Bootstrap icons\n --pst-breadcrumb-divider: \"\\f105\";\n}\n","html {\n /*****************************************************************************\n * Admonitions\n **/\n\n --pst-icon-admonition-default: var(--pst-icon-bell);\n --pst-icon-admonition-note: var(--pst-icon-info-circle);\n --pst-icon-admonition-attention: var(--pst-icon-exclamation-circle);\n --pst-icon-admonition-caution: var(--pst-icon-exclamation-triangle);\n --pst-icon-admonition-warning: var(--pst-icon-exclamation-triangle);\n --pst-icon-admonition-danger: var(--pst-icon-exclamation-triangle);\n --pst-icon-admonition-error: var(--pst-icon-times-circle);\n --pst-icon-admonition-hint: var(--pst-icon-lightbulb);\n --pst-icon-admonition-tip: var(--pst-icon-lightbulb);\n --pst-icon-admonition-important: var(--pst-icon-exclamation-circle);\n --pst-icon-admonition-seealso: var(--pst-icon-share);\n --pst-icon-admonition-todo: var(--pst-icon-pencil);\n}\n","html {\n /*****************************************************************************\n * versionmodified\n **/\n\n --pst-icon-versionmodified-default: var(--pst-icon-exclamation-circle);\n --pst-icon-versionmodified-added: var(--pst-icon-exclamation-circle);\n --pst-icon-versionmodified-changed: var(--pst-icon-exclamation-circle);\n --pst-icon-versionmodified-deprecated: var(--pst-icon-exclamation-circle);\n}\n","html {\n font-size: var(--pst-font-size-base);\n scroll-padding-top: calc(var(--pst-header-height) + 1rem);\n}\n\nbody {\n background-color: var(--pst-color-background);\n font-family: var(--pst-font-family-base);\n font-weight: 400;\n line-height: $line-height-body;\n color: var(--pst-color-text-base);\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n\n // hack to avoid the black background on some browser including Safari\n &::-webkit-scrollbar-track {\n background-color: var(--pst-color-background);\n }\n}\n\np {\n margin-bottom: 1.15rem;\n font-size: 1em;\n\n /* section header in docstring pages */\n &.rubric {\n border-bottom: 1px solid var(--pst-color-border);\n }\n\n &.centered {\n text-align: center;\n }\n}\n\na {\n @include link-style-default;\n\n // The # anchor that appears on hover over headings\n &.headerlink {\n color: var(--pst-color-secondary);\n font-size: 0.8em;\n padding: 0 4px;\n margin-left: 0.2em;\n text-decoration: none;\n user-select: none;\n }\n\n // set up a icon next to the shorten links from github and gitlab\n &.github,\n &.gitlab {\n &::before {\n color: var(--pst-color-text-muted);\n font: var(--fa-font-brands);\n margin-right: 0.25rem;\n }\n }\n\n &.github::before {\n content: var(--pst-icon-github);\n }\n\n &.gitlab::before {\n content: var(--pst-icon-gitlab);\n }\n}\n\n%heading-style {\n margin: 2.75rem 0 1.05rem;\n font-family: var(--pst-font-family-heading);\n font-weight: var(--pst-font-weight-heading);\n line-height: 1.15;\n}\n\nh1 {\n @extend %heading-style;\n\n margin-top: 0;\n font-size: var(--pst-font-size-h1);\n color: var(--pst-color-heading);\n}\n\nh2 {\n @extend %heading-style;\n\n font-size: var(--pst-font-size-h2);\n color: var(--pst-color-heading);\n}\n\nh3 {\n @extend %heading-style;\n\n font-size: var(--pst-font-size-h3);\n color: var(--pst-color-heading);\n}\n\nh4 {\n @extend %heading-style;\n\n font-size: var(--pst-font-size-h4);\n color: var(--pst-color-heading);\n}\n\nh5 {\n @extend %heading-style;\n\n font-size: var(--pst-font-size-h5);\n color: var(--pst-color-text-base);\n}\n\nh6 {\n @extend %heading-style;\n\n font-size: var(--pst-font-size-h6);\n color: var(--pst-color-text-base);\n}\n\nsmall,\n.text_small {\n font-size: var(--pst-font-size-milli);\n}\n\nhr {\n border: 0;\n border-top: 1px solid var(--pst-color-border);\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--pst-font-family-monospace);\n}\n\nkbd {\n // use theme negative\n background-color: var(--pst-color-on-background);\n color: var(--pst-color-text-muted);\n\n // Compound keyboard elements will have nested kbd in them, so this prevents double lines\n &:not(.compound) {\n border: 1px solid var(--pst-color-border);\n margin: 0 0.1rem;\n padding: 0.1rem 0.4rem;\n box-shadow: 1px 1px 1px var(--pst-color-shadow);\n }\n}\n\ncode {\n color: var(--pst-color-inline-code);\n}\n\npre {\n margin: 1.5em 0;\n padding: 1rem;\n background-color: var(--pst-color-surface);\n color: var(--pst-color-text-base);\n line-height: 1.2em;\n border: 1px solid var(--pst-color-border);\n border-radius: $admonition-border-radius;\n\n .linenos {\n // minimum opacity to make the line numbers WCAG AA conformant\n opacity: 0.8;\n padding-right: 10px;\n }\n}\n\n// the back to top btn\n#pst-back-to-top {\n // zindex-tooltip comes from Bootstrap https://getbootstrap.com/docs/5.2/layout/z-index/\n z-index: $zindex-tooltip;\n position: fixed;\n display: none;\n top: 90vh;\n left: 50vw;\n transform: translate(-50%);\n color: var(--pst-color-secondary-text);\n background-color: var(--pst-color-secondary);\n border: none;\n\n .fa-arrow-up {\n // Using margin instead of a space character prevents the space between the\n // icon and the text from being underlined when the button is hovered.\n margin-inline-end: 0.5em;\n }\n\n &:hover {\n @include link-style-hover;\n\n text-decoration-thickness: 1px;\n background-color: var(--pst-color-secondary-highlight);\n color: var(--pst-color-secondary-highlight-text);\n }\n\n &:focus-visible {\n box-shadow: none;\n outline: $focus-ring-outline;\n outline-color: var(--pst-color-secondary);\n outline-offset: $focus-ring-width;\n }\n}\n\n// Focus ring\n// ----------\n// Note: The Bootstrap stylesheet provides the focus ring (customized by this\n// theme via Sass variables in _bootstrap.scss) in some cases. This rule covers\n// all other cases.\n:focus-visible {\n outline: $focus-ring-outline;\n box-shadow: none; // override Bootstrap\n}\n","// Consistent styling for links\n// ============================\n\n@use \"sass:string\";\n\n// Define some useful variables for links styling consistency\n\n// The default thickness of the underline for links will be either:\n// - 1px\n// - 0.0625rem if it's thicker than 1px because the user has changed the text\n// size in their browser\n$link-underline-thickness: string.unquote(\"max(1px, .0625rem)\") !default;\n\n// Offset of link underlines from text baseline\n// The default is 3px expressed as ems, as calculated against the default body\n// font size (on desktop).\n$link-underline-offset: 0.1578em !default;\n\n// Thickness of link underlines in hover state\n// The default for each link will be the thickest of the following:\n// - 3px\n// - 0.1875rem, if it's thicker than 3px because the user has changed the text\n// size in their browser\n// - 0.12em (relative to the link's text size)\n$link-hover-decoration-thickness: string.unquote(\n \"max(3px, .1875rem, .12em)\"\n) !default;\n\n// Ensures links have an underline decoration by default - needed to meet\n// WCAG SC 1.4.1\n@mixin link-decoration {\n text-decoration: underline;\n\n @if $link-underline-thickness {\n text-decoration-thickness: $link-underline-thickness;\n }\n\n @if $link-underline-offset {\n text-underline-offset: $link-underline-offset;\n }\n}\n\n// Ensures links have an underline decoration on hover - distinct from the\n// default behaviour\n@mixin link-decoration-hover {\n @if $link-hover-decoration-thickness {\n text-decoration-thickness: $link-hover-decoration-thickness;\n\n // Disable ink skipping on underlines on hover.\n text-decoration-skip-ink: none;\n }\n}\n\n// Simple hover style - can be used alone or in conjunction with other mixins\n// Add the text underline and change in thickness on hover.\n// Intended for use with the `:hover` pseudo-class.\n@mixin link-style-hover {\n @include link-decoration;\n @include link-decoration-hover;\n\n color: var(--pst-color-link-hover);\n}\n\n// Default link styles\n// -------------------\n// Defines: default unvisited, visited, hover, and active.\n// TODO: @trallard to improve focus styles in subsequent PR\n@mixin link-style-default {\n // So that really long links don't spill out of their container\n word-wrap: break-word;\n color: var(--pst-color-link);\n\n @include link-decoration;\n\n &:hover {\n color: var(--pst-color-link-hover);\n\n @include link-decoration-hover;\n }\n\n // TODO: @trallard to add active styles in subsequent PR\n &:active {\n color: var(--pst-color-link);\n }\n\n // Visited should still be hoverable\n &:visited {\n color: var(--pst-color-link);\n\n &:hover {\n color: var(--pst-color-link-hover);\n }\n }\n}\n\n// Text link styles\n// ----------------\n// Makes links use the muted text colour and removes the underline.\n// Use this mixin for navigation bar links.\n@mixin link-style-text {\n color: var(--pst-color-text-muted);\n text-decoration: none;\n\n &:hover {\n color: var(--pst-color-link-hover);\n\n @include link-decoration;\n @include link-decoration-hover;\n }\n}\n\n// Sidebar and TOC links\n// ---------------------\n// Makes links use the muted text colour and removes the underline.\n// Use this mixin for navigation the primary sidebar and table of contents.\n// Active and hover should work together rather than one overriding the other.\n@mixin link-sidebar {\n color: var(--pst-color-text-muted);\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n background-color: transparent;\n color: var(--pst-color-link-hover);\n\n @include link-decoration-hover;\n }\n\n // TODO: @trallard to update active styles in subsequent PR\n &:active {\n color: var(--pst-color-link-hover);\n }\n\n &:focus-visible {\n box-shadow: $focus-ring-box-shadow;\n outline: none;\n z-index: 10; // keep focus ring on top (prevent the link-sidebar-current notch from lying on top of the ring)\n }\n}\n\n// Sidebar current page link styles\n// --------------------------------\n// Adds a vertical line on the left hand side of the link to indicate that\n// it's the current page. Note this is distinct from an active state.\n// Used on the primary sidebar and the TOC.\n// We want the side box shadow to have the same thickness as the hover underline\n@mixin link-sidebar-current {\n font-weight: 600;\n color: var(--pst-color-primary);\n\n @if $link-hover-decoration-thickness {\n $notch-shadow: inset\n $link-hover-decoration-thickness\n 0\n 0\n var(--pst-color-primary);\n\n box-shadow: $notch-shadow;\n\n &:focus-visible {\n box-shadow: $notch-shadow, $focus-ring-box-shadow;\n outline: none;\n }\n }\n}\n\n// Header navbar text and icon links\n// ---------------------------------\n// (includes light/dark mode button)\n\n// This mixin makes it possible to show hover/underline and focus/ring styles at\n// the same time. The trick is to use:\n// - a pseudo-element with bottom border for the hover underline\n// - a CSS outline for the focus ring.\n\n// Normally we use box-shadow for underline and outline for focus ring. But we\n// cannot apply box-shadow and outline together on the same element because the\n// border-radius value that we use to round the outline will also round the\n// box-shadow used for the underline. We also cannot use text-underline because\n// it does not work on non-text links, nor do we want to use it on text links\n// that we want to treat as blocks, such as the header nav links because the\n// underline will wrap across two lines if the link text also wraps across two\n// lines.\n@mixin link-style-block {\n color: var(--pst-color-text-muted);\n\n // Set position relative so that the child ::before pseudo-element's absolute\n // position is relative to this element.\n position: relative;\n\n // Set up pseudo-element used for hover underline styles\n &::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: 0;\n background-color: transparent;\n\n @if $link-hover-decoration-thickness {\n bottom: calc(-1 * $link-hover-decoration-thickness);\n margin: $link-hover-decoration-thickness 0;\n }\n }\n\n &:hover {\n color: var(--pst-color-secondary);\n text-decoration: none; // override the link-style-hover mixin\n &::before {\n @if $link-hover-decoration-thickness {\n border-bottom: $link-hover-decoration-thickness\n solid\n var(--pst-color-secondary);\n }\n }\n }\n\n &:focus-visible {\n box-shadow: none; // override Bootstrap\n outline: 3px solid var(--pst-color-accent);\n outline-offset: $focus-ring-width;\n }\n}\n","/***\n * Rules for the UX/UI of skip navigation link btn.\n * It's only visible to people\n * navigating with keyboard for accessibility purposes\n * ref: https://www.youtube.com/watch?v=VUR0I5mqq7I\n ***/\n\n.skip-link {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n text-align: center;\n background-color: var(--pst-color-warning);\n padding: 0.5rem;\n z-index: $zindex-modal;\n border-bottom: 1px solid var(--pst-color-border);\n\n // This shows / hides the button\n transform: translateY(-100%);\n transition: transform 150ms ease-in-out;\n\n &:focus-within {\n transform: translateY(0%);\n }\n\n a {\n // Ensure we are using a WCAG conformant colour\n color: var(--pst-color-warning-text) !important;\n\n &:focus-visible {\n // use color with sufficient contrast\n outline-color: $foundation-black;\n }\n }\n}\n",".bd-container {\n flex-grow: 1;\n display: flex;\n justify-content: center;\n\n .bd-container__inner {\n display: flex;\n }\n}\n\n.bd-page-width {\n width: 100%;\n\n @include media-breakpoint-up(lg) {\n max-width: $breakpoint-page-width;\n }\n}\n",".pst-async-banner-revealer {\n // Setting height to 0 and overflow to hidden allows us to add up the heights\n // of this element's children before revealing them.\n height: 0;\n overflow: hidden;\n\n // Height to be set by JavaScript, which should trigger the following\n // transition rule (unless the user has set their system to reduce motion).\n transition: height 300ms ease-in-out;\n\n @media (prefers-reduced-motion) {\n transition: none;\n }\n}\n\n#bd-header-version-warning,\n.bd-header-announcement {\n min-height: 3rem;\n width: 100%;\n display: flex;\n position: relative;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 0.5rem 12.5%; // Horizontal padding so the width is 75%\n // One breakpoint less than $breakpoint-sidebar-primary. See variables/_layout.scss for more info.\n @include media-breakpoint-down(lg) {\n // Announcements can take a bit more width on mobile\n padding: 0.5rem 2%;\n }\n\n p {\n font-weight: bold;\n margin: 0;\n }\n\n // Ensure there is enough contrast against the background\n a {\n color: var(--pst-color-inline-code-links);\n }\n\n // The \"Switch to stable version\" link (styled like a button)\n .pst-button-link-to-stable-version {\n @include box-shadow;\n\n $background-color: var(--pst-color-danger);\n $hover-background-color: var(--pst-color-danger-highlight);\n $color: var(--pst-color-danger-text);\n\n background-color: $background-color;\n border-color: $background-color;\n color: $color;\n border-radius: 0.25rem;\n\n &:hover {\n // applying the same style as the SD \"buttons\"\n @include link-style-hover;\n\n text-decoration-thickness: 1px;\n background-color: $hover-background-color;\n border-color: $hover-background-color;\n color: var(--pst-color-danger-highlight-text);\n }\n\n &:focus-visible {\n outline: $focus-ring-width solid $background-color;\n outline-offset: $focus-ring-width;\n }\n }\n}\n\n// Bg color is now defined in the theme color palette - using our secondary color\n.bd-header-announcement {\n background-color: var(--pst-color-secondary-bg);\n}\n\n#bd-header-version-warning {\n background-color: var(--pst-color-danger-bg);\n}\n","/*********************************************\n* SASS Mixins\n*********************************************/\n\n/**\n * A consistent box shadow style we apply across elements.\n */\n@mixin box-shadow() {\n box-shadow:\n 0 0.2rem 0.5rem var(--pst-color-shadow),\n 0 0 0.0625rem var(--pst-color-shadow) !important;\n}\n\n/**\n * Set background of some cell outputs to white-ish to make sure colors work\n * This is because many libraries make output that only looks good on white\n */\n@mixin cell-output-background {\n color: var(--pst-color-on-background);\n background-color: var(--pst-color-text-base);\n border-radius: 0.25rem;\n padding: 0.5rem;\n}\n\n@mixin table-colors {\n color: var(--pst-color-table);\n border: 1px solid var(--pst-color-table-outer-border);\n\n th,\n td {\n ~ th,\n ~ td {\n border-left: 1px solid var(--pst-color-table-inner-border);\n }\n }\n\n thead {\n tr {\n background-color: var(--pst-color-table-heading-bg);\n border-bottom: 2px solid var(--pst-color-primary);\n }\n }\n\n tbody {\n tr {\n &:nth-child(odd) {\n background-color: var(--pst-color-table-row-zebra-low-bg);\n }\n\n &:nth-child(even) {\n background-color: var(--pst-color-table-row-zebra-high-bg);\n }\n }\n }\n}\n\n// Minimum mouse hit area\n// ----------------------\n// Ensures that the element has a minimum hit area that conforms to\n// accessibility guidelines. For WCAG AA, we need 24px x 24px, see:\n// https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html\n@mixin min-hit-area() {\n box-sizing: border-box;\n min-width: 24px;\n min-height: 24px;\n}\n\n// Meant to darken the element on hover in light mode, or\n// lighten on hover in dark mode.\n@mixin hover-darken-lighten {\n &:hover {\n filter: brightness(0.9);\n\n html[data-theme=\"dark\"] & {\n filter: brightness(1.1);\n }\n }\n}\n","/**\n * Main content area\n */\n.bd-main {\n flex-grow: 1;\n flex-direction: column;\n display: flex;\n min-width: 0;\n\n .bd-content {\n display: flex;\n justify-content: center;\n height: 100%;\n\n .bd-article-container {\n justify-content: start;\n display: flex;\n flex-direction: column;\n\n // Max-width is slightly more than the W3 since our docs often have images.\n // We shoot for about 100 characters per line instead of 80.\n // ref: https://www.w3.org/WAI/tutorials/page-structure/styling/#line-length\n width: 100%;\n max-width: 60em;\n overflow-x: auto; // Prevent wide content from pushing off the secondary sidebar\n padding: 1rem;\n\n .bd-article {\n // Give a bit more verticle spacing on wide screens\n @include media-breakpoint-up($breakpoint-sidebar-secondary) {\n padding-top: 1.5rem;\n padding-left: 2rem;\n }\n }\n }\n }\n}\n",".bd-footer {\n width: 100%;\n border-top: 1px solid var(--pst-color-border);\n\n .bd-footer__inner {\n display: flex;\n flex-grow: 1;\n padding: 1rem;\n margin: auto;\n }\n\n .footer-items__start,\n .footer-items__center,\n .footer-items__end {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n justify-content: center;\n flex-grow: 1;\n }\n\n .footer-items__center {\n text-align: center;\n }\n\n .footer-items__end {\n text-align: end;\n }\n\n // So that paragraphs don't take up extra room\n .footer-item p {\n margin-bottom: 0;\n }\n}\n",".bd-footer-article {\n margin-top: auto;\n\n .footer-article-items {\n display: flex;\n flex-direction: column;\n }\n}\n",".bd-footer-content {\n .footer-content-items {\n display: flex;\n flex-direction: column;\n margin-top: auto;\n }\n}\n","/**\n * Header at the top of the page\n * It includes the announcement bar and the navigation bar.\n */\n\n// Styling for the Icon links can be found in components/_icon-links.scss\n\n// If we want the shadow to only point downward in the future, set\n// box-shadow to: 0 0.125rem 0.25rem -0.125rem rgba(0, 0, 0, 0.11);\n.bd-header {\n position: sticky;\n top: 0;\n z-index: $zindex-fixed;\n\n // Overrides bootstrap\n background-color: var(--pst-color-on-background) !important;\n box-shadow: 0 0.125rem 0.25rem 0 var(--pst-color-shadow);\n width: 100%;\n padding: 0;\n max-width: 100vw;\n justify-content: center;\n\n .bd-header__inner {\n display: flex;\n align-items: center;\n height: fit-content;\n padding-left: 1rem;\n padding-right: 1rem;\n }\n\n :focus-visible {\n border-radius: $focus-ring-radius;\n }\n\n // These items will define the height of the header\n .navbar-item {\n height: var(--pst-header-height);\n max-height: var(--pst-header-height);\n display: flex;\n align-items: center;\n }\n\n // Hide the navbar header items on mobile because they're in the sidebar\n .navbar-header-items {\n display: none;\n flex-shrink: 1;\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n display: inherit;\n flex-grow: 1;\n padding: 0 0 0 0.5rem;\n }\n }\n\n .navbar-header-items__end,\n .navbar-header-items__center,\n .navbar-header-items__start {\n display: flex;\n align-items: center;\n flex-flow: wrap;\n\n // In case we wrap our items to multiple rows on small screens\n row-gap: 0;\n }\n\n .navbar-header-items__end,\n .navbar-header-items__center {\n column-gap: $nav-icon-column-gap;\n }\n\n // A little smaller because this is displayed by default on mobile\n .navbar-header-items__start {\n flex-shrink: 0;\n margin-right: auto;\n gap: 0.5rem;\n }\n\n .navbar-header-items__end {\n // End navbar items should snap to the right\n justify-content: end;\n }\n\n // Contains the navigation links within the navbar\n ul.navbar-nav {\n display: flex;\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n // Align on wide screens so the dropdown button is centered properly\n align-items: baseline;\n }\n\n > li.nav-item {\n margin-inline: 2px; // breathing room so hover and focus styles do not overlap\n\n > .nav-link {\n @include link-style-block;\n\n padding-inline: 6px;\n }\n\n &.current {\n > .nav-link {\n color: var(--pst-color-primary);\n\n // Underline the current navbar item\n &::before {\n border-bottom: 3px solid var(--pst-color-primary);\n }\n }\n }\n\n &.dropdown {\n margin-inline: 4px;\n\n button {\n padding-inline: 8px;\n }\n\n > .dropdown-toggle {\n border-radius: $focus-ring-radius; // make border radius the same for both hover ring and focus ring\n color: var(--pst-color-text-muted);\n\n &:focus-visible {\n box-shadow: $focus-ring-box-shadow;\n }\n\n &:hover {\n text-decoration: none;\n box-shadow: 0 0 0 $focus-ring-width var(--pst-color-link-hover); // purple focus ring\n // Brighten the text on hover (muted -> base)\n color: var(--pst-color-text-base);\n }\n }\n }\n }\n\n li a.nav-link.dropdown-item {\n @include link-style-text;\n }\n\n // Dropdowns for the extra links\n .dropdown {\n button {\n display: unset;\n border: none;\n\n &:hover {\n @include link-style-hover;\n }\n }\n\n .dropdown-menu {\n z-index: $zindex-popover;\n border: 1px solid var(--pst-color-border);\n box-shadow: 0 0 0.3rem 0.1rem var(--pst-color-shadow);\n background-color: var(--pst-color-on-background);\n padding: 0.5rem 0;\n margin: 0.5rem 0;\n min-width: 20rem;\n\n .dropdown-item {\n // Give the items in the dropdown some breathing room but let the hit\n // and hover area of the items extend to the edges of the menu\n padding: 0.25rem 1.5rem;\n\n // Override Bootstrap\n &:focus:not(:hover, :active) {\n background-color: inherit;\n }\n\n &:focus-visible {\n z-index: 10; // keep focus ring on top (prevent the hover background of the next dropdown item from covering the ring)\n }\n }\n\n // Hide the menu unless show has been clicked\n &:not(.show) {\n display: none;\n }\n }\n }\n }\n\n // **************************************************************\n // Showing and hiding the sidebar toggle buttons and header items\n // **************************************************************\n\n // Toggle buttons\n button.sidebar-toggle {\n font-size: var(--pst-font-size-icon);\n color: var(--pst-color-muted);\n margin-bottom: 0;\n background-color: inherit;\n padding: 0.5rem;\n }\n\n button.primary-toggle {\n margin-right: 1rem;\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n display: none;\n }\n }\n\n button.secondary-toggle {\n margin-left: 1rem;\n\n @include media-breakpoint-up($breakpoint-sidebar-secondary) {\n display: none;\n }\n }\n}\n\n// inline the element in the navbar as long as they fit and use display block when collapsing\n@include media-breakpoint-up($breakpoint-sidebar-primary) {\n .navbar-center-items .navbar-item {\n display: inline-block;\n }\n}\n\n.nav-link {\n &:hover {\n @include link-style-hover;\n }\n\n // Override Bootstrap\n transition: none;\n\n &.nav-external::after {\n font: var(--fa-font-solid);\n content: var(--pst-icon-external-link);\n font-size: 0.75em;\n margin-left: 0.3em;\n }\n}\n\n.bd-navbar-elements li.nav-item i {\n font-size: 0.7rem;\n padding-left: 2px;\n vertical-align: middle;\n}\n\n// THe elements next to the hamburger menu only show on narrow screens\n.navbar-persistent--mobile {\n margin-left: auto;\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n display: none;\n }\n}\n\n// The navbar-persistent content should only show on wide screens\n.navbar-persistent--container {\n display: none;\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n display: flex;\n }\n}\n",".header-article__inner {\n padding: 0 0.5rem;\n\n // The items define the height so that it disappears if there are no items\n .header-article-item {\n min-height: var(--pst-header-article-height);\n }\n\n .header-article-items__end {\n margin-left: auto;\n }\n}\n","/**\n * The primary sidebar on the left.\n * e.g., between-pages navigation.\n */\n\n$sidebar-padding-right: 1rem;\n\n.bd-sidebar-primary {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n max-height: calc(100vh - var(--pst-header-height));\n position: sticky;\n top: var(--pst-header-height);\n\n @include make-col(3);\n\n // Borders padding and whitespace\n padding: 2rem $sidebar-padding-right 1rem 1rem;\n border-right: 1px solid var(--pst-color-border);\n background-color: var(--pst-color-background);\n overflow-y: auto;\n font-size: var(--pst-sidebar-font-size-mobile);\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n font-size: var(--pst-sidebar-font-size);\n }\n\n :focus-visible {\n border-radius: $focus-ring-radius;\n }\n\n // override bootstrap when navlink are displayed in the sidebar\n .nav-link {\n font-size: var(--pst-sidebar-font-size-mobile);\n }\n\n &.no-sidebar {\n border-right: 0;\n }\n\n &.hide-on-wide {\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n display: none;\n }\n }\n\n // Headers shouldn't be colored in the sidebars and some extensions add headers\n h1,\n h2,\n h3,\n h4 {\n color: var(--pst-color-text-base);\n }\n\n .sidebar-primary-items__start,\n .sidebar-primary-items__end {\n .sidebar-primary-item {\n padding: 0.5rem 0;\n }\n }\n\n // Hide the sidebar header items on widescreen since they are visible in the header\n .sidebar-header-items {\n display: flex;\n flex-direction: column;\n\n .sidebar-header-items__title {\n font-weight: var(--pst-sidebar-header-font-weight);\n font-size: var(--pst-sidebar-header-font-size);\n color: var(--pst-color-text-base);\n margin-bottom: 0.5rem;\n }\n\n .bd-navbar-elements {\n .nav-link {\n &:focus-visible {\n box-shadow: none; // Override Bootstrap\n outline: $focus-ring-outline;\n outline-offset: $focus-ring-width;\n }\n }\n }\n\n // Center header items get displayed vertically, end items are displayed horizontally\n .sidebar-header-items__center {\n display: flex;\n flex-direction: column;\n }\n\n // Positioning end items\n .sidebar-header-items__end {\n display: flex;\n align-items: center;\n gap: 1rem;\n }\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n display: none;\n }\n }\n\n .sidebar-primary-items__start {\n // Add a border on mobile to separate it from the header sidebar area\n border-top: 1px solid var(--pst-color-border);\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n border-top: none;\n }\n }\n\n .sidebar-primary-items__end {\n margin-top: auto;\n margin-bottom: 1em;\n }\n\n .list-caption {\n list-style: none;\n padding-left: 0;\n\n // Level 0 TOC heading is put inside the <summary> tag\n // so let the <summary> tag take up more space\n li.toctree-l0.has-children {\n > details {\n > summary {\n position: relative;\n height: auto;\n width: auto;\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n\n .toctree-toggle {\n // Prevent toggle icon from getting squished by summary being a\n // flexbox\n flex: 0 0 auto;\n\n // Make the level 0 chevron icon slightly bigger than descendant\n // levels\n .fa-chevron-down {\n font-size: 1rem;\n }\n }\n }\n }\n }\n }\n\n li.has-children {\n $toctree-toggle-width: 30px;\n\n position: relative;\n\n > .reference,\n .caption {\n margin-right: calc(\n $toctree-toggle-width + $focus-ring-width\n ); // keep clear of the toggle icon\n\n padding-top: 0.25rem; // align caption text with toggle chevron\n }\n\n > details {\n > summary {\n // Remove browser default toggle icon\n list-style: none;\n\n &::-webkit-details-marker {\n display: none;\n }\n\n // The summary element is natively focusable, but delegate the focus state to the toggle icon\n &:focus-visible {\n outline: none;\n\n > .toctree-toggle {\n outline: $focus-ring-outline;\n outline-offset: -$focus-ring-width; // Prevent right side of focus ring from disappearing underneath the sidebar's right edge\n }\n }\n\n // Container for expand/collapse chevron icon\n .toctree-toggle {\n cursor: pointer;\n\n // Position it so that it's aligned with the top right corner of the\n // last positioned element, in this case the li.has-children\n position: absolute;\n top: 0;\n right: 0;\n\n // Give it dimensions\n width: $toctree-toggle-width;\n height: $toctree-toggle-width; // make it square\n\n // Vertically and horizontally center the icon within the container\n display: inline-flex;\n justify-content: center;\n align-items: center;\n\n .fa-chevron-down {\n font-size: 0.75rem;\n }\n }\n }\n\n // The section is open/expanded, rotate the toggle icon (chevron) so it\n // points up instead of down\n &[open] {\n > summary {\n .fa-chevron-down {\n transform: rotate(180deg);\n }\n }\n }\n }\n }\n}\n\n/* Between-page links and captions */\nnav.bd-links {\n margin-right: -$sidebar-padding-right; // align toctree toggle chevrons with right edge of sidebar and allow text to flow closer to the right edge\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n display: block;\n }\n\n ul {\n display: block;\n list-style: none;\n\n // Reduce padding of nested `ul` items a bit\n ul {\n padding: 0 0 0 1rem;\n }\n }\n\n li > a {\n display: block;\n padding: $toc-item-padding-y 0.65rem;\n\n @include link-sidebar;\n\n box-shadow: none;\n margin-right: $focus-ring-width; // prevent the right side focus ring from disappearing under the sidebar right edge\n\n &.reference.external {\n &::after {\n font: var(--fa-font-solid);\n content: var(--pst-icon-external-link);\n font-size: 0.75em;\n margin-left: 0.3em;\n }\n }\n }\n\n .current > a {\n @include link-sidebar-current;\n\n background-color: transparent;\n }\n\n // Title\n p.bd-links__title {\n font-size: var(--pst-sidebar-header-font-size);\n font-weight: var(--pst-sidebar-header-font-weight);\n margin-bottom: 0.5rem;\n }\n\n // Toctree captions\n p.caption {\n font-weight: var(--pst-sidebar-header-font-weight);\n position: relative;\n margin-top: 1.25rem;\n margin-bottom: 0.5rem;\n color: var(--pst-color-text-base);\n\n &:first-child {\n margin-top: 0;\n }\n\n font-size: var(--pst-sidebar-font-size-mobile);\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n font-size: var(--pst-sidebar-font-size);\n }\n }\n}\n","/**\n * Secondary sidebar on the right.\n * e.g., in-page table of contents.\n */\n.bd-sidebar-secondary {\n display: flex;\n order: 2;\n flex-shrink: 0;\n flex-direction: column;\n position: sticky;\n top: var(--pst-header-height);\n max-height: calc(100vh - var(--pst-header-height));\n padding: 2rem 1rem 1rem;\n width: var(--pst-sidebar-secondary);\n font-size: var(--pst-sidebar-font-size-mobile);\n\n @include media-breakpoint-up($breakpoint-sidebar-secondary) {\n font-size: var(--pst-sidebar-font-size);\n }\n\n // Color and border\n background-color: var(--pst-color-background);\n overflow-y: auto;\n}\n\n.sidebar-secondary-item {\n padding: 0.5rem;\n\n @include media-breakpoint-up($breakpoint-sidebar-secondary) {\n border-left: 1px solid var(--pst-color-border);\n padding-left: 1rem;\n }\n\n i {\n padding-right: 0.5rem;\n }\n}\n","/*******************************************************************************\n* Rules for the UX/UI of sidebar sliding drawers on mobile\n* Note that this sheet controls styles across many parts of the theme\n* It is aggregated into this one sheet instead of being split across\n* components in order to keep it easier to debug in one place.\n* It is broken up into major sections below.\n*/\n\n/*******************************************************************************\n* Sidebar drawer behavior\n*/\n\n/**\n * NOTE: We use this mixin to define the toggle behavior on narrow screens,\n * And the wide-screen behavior of the sections is defined in their own section\n * .scss files.\n */\n@mixin sliding-drawer($side: \"left\") {\n position: fixed;\n top: 0;\n z-index: $zindex-modal;\n height: 100vh;\n max-height: 100vh;\n width: 75%;\n flex-grow: 0.75;\n max-width: 350px;\n transition:\n visibility $animation-time ease-out,\n margin $animation-time ease-out;\n visibility: hidden;\n border: 0;\n\n @if $side == \"right\" {\n margin-right: -75%;\n right: 0;\n } @else {\n margin-left: -75%;\n left: 0;\n }\n}\n\n.bd-sidebar::backdrop {\n background-color: black;\n opacity: 0.5;\n}\n\n.bd-sidebar-primary {\n @include media-breakpoint-down($breakpoint-sidebar-primary) {\n @include sliding-drawer(\"left\");\n }\n\n &[open] {\n margin-left: 0;\n visibility: visible;\n }\n}\n\n.bd-sidebar-secondary {\n @include media-breakpoint-down($breakpoint-sidebar-secondary) {\n @include sliding-drawer(\"right\");\n }\n\n &[open] {\n margin-right: 0;\n visibility: visible;\n }\n}\n","/**\n * Breadcrumbs for parent pages meant for the article header\n */\nul.bd-breadcrumbs {\n list-style: none;\n padding-left: 0;\n display: flex;\n flex-wrap: wrap;\n\n // Font size slightly smaller to avoid cluttering up space too much\n font-size: 0.8rem;\n\n li.breadcrumb-item {\n display: flex;\n align-items: center;\n white-space: nowrap;\n overflow-x: hidden;\n\n a,\n .ellipsis {\n overflow-x: hidden;\n text-overflow: ellipsis;\n\n // Need to add margin, otherwise the overflow: hidden rule on the parent\n // will hide the focus ring\n margin: $focus-ring-width;\n }\n\n // Style should look like heavier in-page links\n // keeping visited in the default link colour\n font-weight: bold;\n\n a {\n @include link-style-text;\n }\n\n // Items that aren't the home have a caret to the left\n &:not(.breadcrumb-home)::before {\n font: var(--fa-font-solid);\n font-size: 0.8rem;\n content: var(--pst-breadcrumb-divider);\n color: var(--pst-color-text-muted);\n padding: 0 0.5rem;\n }\n }\n}\n","/**\n * Icon links in the navbar\n */\n\n.pst-navbar-icon {\n // Extra specificity needed for overrides\n html & {\n @include min-hit-area;\n @include link-style-block;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n // Bootstrap overrides\n border-radius: 0;\n border: none;\n font-size: 1rem;\n line-height: $line-height-body; // Override Boostrap, which defines a separate line-height for buttons\n padding: $navbar-link-padding-y 0; // Horizontal white space in nav bar between items is controlled via column gap rule on the container.\n\n // Make the navbar icon links have the same size as the navbar text links\n height: calc(2 * $navbar-link-padding-y + $line-height-body * 1rem);\n }\n}\n\nul.navbar-icon-links {\n display: flex;\n flex-flow: row wrap;\n column-gap: $nav-icon-column-gap;\n justify-content: space-evenly;\n align-items: center;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n\n // Icons styling\n i {\n &.fa-brands,\n &.fa-regular,\n &.fa-solid {\n vertical-align: middle;\n font-style: normal;\n font-size: var(--pst-font-size-icon);\n }\n\n /* Social media buttons hard-code the brand color */\n &.fa-square-twitter::before {\n color: #55acee;\n }\n\n &.fa-square-gitlab::before {\n color: #548;\n }\n\n &.fa-bitbucket::before {\n color: #0052cc;\n }\n }\n\n // Force images to be icon-sized\n img.icon-link-image {\n height: 1.5em;\n border-radius: 0.2rem;\n }\n\n .fa-pydata {\n stroke: var(--pst-color-background);\n stroke-linejoin: round;\n stroke-width: 0.35;\n }\n}\n","/**\n * Logo in the navbar\n */\n\n.navbar-brand {\n position: relative;\n height: var(--pst-header-height);\n max-height: var(--pst-header-height);\n padding: 0.5rem 0;\n width: auto;\n margin: 0;\n display: flex;\n\n // Ensure that the logo stays the same length while other content shrinks\n flex-shrink: 0;\n align-items: center;\n gap: 0.5rem;\n\n // If there's no logo image, we use a p element w/ the site title\n p {\n color: var(--pst-color-text-base);\n margin-bottom: 0;\n }\n\n // If there's a logo, it'll be in an img block\n img {\n max-width: 100%;\n height: 100%;\n width: auto;\n }\n\n &:hover,\n &:visited:hover {\n @include link-style-hover;\n\n color: var(--pst-color-text-base);\n }\n}\n","/**\n * Navigation links in the navbar and icon links\n */\nul.navbar-nav {\n // Reduce padding of nested `ul` items a bit\n ul {\n padding: 0 0 0 1rem;\n }\n\n // Navbar links - do not have an underline by default\n li {\n display: flex;\n flex-direction: column;\n\n a {\n display: flex;\n align-items: center;\n height: 100%;\n padding-top: $navbar-link-padding-y;\n padding-bottom: $navbar-link-padding-y;\n\n @include link-style-text;\n }\n }\n}\n","/**\n * The list of in-page TOC links\n */\n.page-toc {\n .section-nav {\n padding-left: 0;\n border-bottom: none;\n\n ul {\n padding-left: 1rem;\n }\n }\n\n // override bootstrap settings\n .nav-link {\n font-size: var(--pst-sidebar-font-size-mobile);\n\n @include media-breakpoint-up($breakpoint-sidebar-secondary) {\n font-size: var(--pst-sidebar-font-size);\n }\n }\n\n .onthispage {\n color: var(--pst-color-text-base);\n font-weight: var(--pst-sidebar-header-font-weight);\n margin-bottom: 0.5rem;\n }\n}\n","/**\n* Previous / Next navigation buttons\n**/\n.prev-next-area {\n width: 100%;\n\n p {\n color: var(--pst-color-text-muted);\n margin: 0 0.3em;\n line-height: 1.3em;\n }\n\n i {\n font-size: 1.2em;\n }\n\n a {\n // So that buttons align with icons\n display: flex;\n align-items: center;\n border: none;\n padding: 10px;\n max-width: 45%;\n overflow-x: hidden;\n color: var(--pst-color-text-muted);\n text-decoration: none;\n\n p.prev-next-title {\n @include link-style-default;\n\n font-weight: var(--pst-admonition-font-weight-heading);\n font-size: 1.1em;\n }\n\n &:hover,\n &:visited:hover {\n p.prev-next-title {\n @include link-style-hover;\n }\n }\n\n .prev-next-info {\n flex-direction: column;\n margin: 0 0.5em;\n\n .prev-next-subtitle {\n text-transform: capitalize;\n }\n }\n\n &.left-prev {\n float: left;\n }\n\n &.right-next {\n float: right;\n\n div.prev-next-info {\n text-align: right;\n }\n }\n }\n}\n","/**\n * Search field\n **/\n.bd-search {\n position: relative;\n padding-left: 0.5rem;\n gap: 0.5rem;\n background-color: var(--pst-color-background);\n border-radius: $admonition-border-radius;\n border: 1px solid var(--pst-color-border);\n color: var(--pst-color-text-base);\n\n // Background should always be same color regardless of active or not\n &:active {\n background-color: var(--pst-color-background);\n color: var(--pst-color-text-muted);\n }\n\n // Hoist the focus ring from the input field to its parent\n &:focus-within {\n box-shadow: $focus-ring-box-shadow;\n\n input:focus {\n box-shadow: none;\n }\n }\n\n .icon {\n position: absolute;\n color: var(--pst-color-border);\n left: 25px;\n }\n\n .fa-solid.fa-magnifying-glass {\n position: absolute;\n left: calc((2.5rem - 0.7em) / 2);\n color: var(--pst-color-text-muted);\n }\n\n input.form-control {\n background-color: var(--pst-color-background);\n color: var(--pst-color-text-base);\n border: none;\n\n // Inner-text of the search bar\n &::placeholder {\n color: var(--pst-color-text-muted);\n }\n\n // Remove the little \"x\" that pops up when you start typing\n &::-webkit-search-cancel-button,\n &::-webkit-search-decoration {\n appearance: none;\n }\n\n &:focus,\n &:focus-visible {\n color: var(--pst-color-text-muted);\n }\n }\n\n // Shows off the keyboard shortcuts for the button\n .search-button__kbd-shortcut {\n display: none;\n margin-inline-end: 0.5rem;\n color: var(--pst-color-border);\n\n @include media-breakpoint-up(md) {\n display: flex;\n }\n }\n}\n\n/**\n * Search button - located in the navbar\n */\n.search-button i {\n // Search link icon should be a bit bigger since it is separate from icon links\n font-size: 1.3rem;\n}\n\n/**\n * The search modal <dialog>\n */\n#pst-search-dialog {\n display: none;\n\n &[open] {\n display: flex;\n\n // Center in middle of screen just underneath header\n position: fixed;\n z-index: $zindex-modal;\n top: 30%;\n left: 50%;\n transform: translate(-50%, -50%);\n right: 1rem;\n margin-top: 0.5rem;\n width: 90%;\n max-width: 800px;\n background-color: transparent;\n padding: $focus-ring-width;\n border: none;\n\n &::backdrop {\n background-color: black;\n opacity: 0.5;\n }\n\n form.bd-search {\n flex-grow: 1;\n\n // Font and input text a bit bigger\n svg,\n input {\n font-size: var(--pst-font-size-icon);\n }\n }\n }\n}\n\n/**\n * The search button component that looks like a field.\n * Lives at components/search-button-field.html\n */\n.search-button-field {\n $search-button-border-radius: 1.5em;\n\n display: inline-flex;\n align-items: center;\n border: var(--pst-color-border) solid 1px;\n border-radius: $search-button-border-radius;\n color: var(--pst-color-text-muted);\n padding: 0.5em;\n background-color: var(--pst-color-surface);\n\n &:hover {\n box-shadow: 0 0 0 $focus-ring-width var(--pst-color-link-hover);\n }\n\n &:focus-visible {\n border-radius: $search-button-border-radius;\n }\n\n // The keyboard shortcut text\n .search-button__default-text {\n font-size: var(--bs-nav-link-font-size);\n font-weight: var(--bs-nav-link-font-weight);\n margin-right: 0.5em;\n margin-left: 0.5em;\n }\n\n .kbd-shortcut__modifier {\n font-size: 0.75em;\n }\n\n // Ensures that all the text lines up in the middle\n > * {\n align-items: center;\n }\n\n // Only the icon should be visible on narrow screens\n > :not(svg) {\n display: none;\n\n @include media-breakpoint-up(lg) {\n display: flex;\n }\n }\n}\n","/**\n * The 'Hide Search Matches' button.\n * This only shows up when a person lands on a page after clicking a search result.\n * Clicking it removes the highlighting of the search term from the page.\n * We want it to behave like a button.\n */\ndiv#searchbox {\n // Leave `#searchbox` rules empty so that it doesn't show at all when it is empty\n p.highlight-link {\n margin: 1rem 0;\n width: fit-content;\n\n // A bit more margin on wide screens to mimic article behavior\n @include media-breakpoint-up($breakpoint-sidebar-secondary) {\n margin-left: 2rem;\n }\n\n // Put outer shadow on this one so that we can darken the link w/ an inner shadow\n @include box-shadow;\n\n // Style the button to look like a Sphinx Design button\n a {\n border-radius: 0.25rem;\n font-size: 1.25rem;\n padding: 0.75rem;\n background-color: var(--pst-color-primary);\n color: var(--pst-color-primary-text);\n text-decoration: none;\n\n // The box shadow is inset so that it darkens the button on hover\n transition: box-shadow 0.25s ease-out;\n\n &:hover {\n box-shadow: inset 0 0 50px 50px rgb(0 0 0 / 25%);\n }\n\n &::before {\n content: var(--pst-icon-search-minus);\n color: unset;\n font: var(--fa-font-solid);\n margin-right: 0.5rem;\n }\n }\n }\n}\n","/**\n * Light/dark theme switcher\n */\n\n.theme-switch-button {\n .theme-switch {\n display: none;\n\n &:active {\n text-decoration: none;\n color: var(--pst-color-link-hover);\n }\n\n .fa-lg {\n aspect-ratio: 1 / 1;\n }\n }\n}\n\n@each $mode in auto, light, dark {\n html[data-mode=\"#{$mode}\"]\n .theme-switch-button\n .theme-switch[data-mode=\"#{$mode}\"] {\n display: inline; // inline needed for span height to be calculated using inherited font size and line height\n }\n}\n","button.btn.version-switcher__button {\n border-color: var(--pst-color-border);\n color: var(--pst-color-text-base);\n\n // Add a margin on narrow screens to avoid feeling cramped\n margin-bottom: 1em;\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n margin-bottom: unset;\n }\n\n &:hover {\n box-shadow: 0 0 0 $focus-ring-width var(--pst-color-secondary);\n border-color: transparent;\n }\n\n &:active {\n color: var(--pst-color-text-base);\n border-color: var(--pst-color-border);\n }\n\n &:focus-visible {\n border-color: transparent;\n }\n}\n\n.version-switcher__menu {\n border-color: var(--pst-color-border);\n border-radius: var(--bs-dropdown-border-radius);\n\n a.list-group-item {\n background-color: var(--pst-color-on-background);\n color: var(--pst-color-text-base);\n padding: 0.75rem 1.25rem;\n\n &:not(:last-child) {\n border-bottom: 1px solid var(--pst-color-border);\n }\n\n &:hover {\n @include link-style-hover;\n\n background-color: var(--pst-color-surface);\n }\n\n &.active {\n @include link-sidebar-current;\n\n position: relative;\n z-index: 1;\n\n span::before {\n content: \"\";\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: -1;\n left: 0;\n top: 0;\n }\n }\n\n &:focus-visible {\n z-index: 10; // keep focus ring on top (prevent the hover background of the next dropdown item from covering the ring)\n }\n }\n}\n\n// Font behavior on mobile\nbutton.version-switcher__button,\n.version-switcher__menu {\n font-size: 1.1em; // A bit smaller than other menu font\n z-index: $zindex-modal; // higher than the sidebars\n\n // Make sure it meets WCAG target size requirement no matter the version\n // string displayed in the button\n @include min-hit-area;\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n font-size: unset;\n }\n}\n","/* Collapsing of the TOC sidebar while scrolling */\n\n/* Nav: hide second level (shown on .active) */\n\nnav.page-toc {\n // A little extra space before the buttons\n margin-bottom: 1rem;\n}\n\n.bd-toc .nav {\n .nav {\n display: none;\n\n // So we can manually specify a level as visible in the config\n &.visible {\n display: block;\n }\n }\n\n > .active > ul {\n display: block;\n }\n}\n\n// Each entry of the in-page TOC\n.toc-entry {\n display: block;\n\n a > code {\n color: var(--pst-color-text-muted);\n }\n\n a.nav-link {\n display: block;\n padding: $toc-item-padding-y 0;\n\n // Padding w/ negative margin so the top TOC item highlight overlaps w/ the TOC border\n padding-left: 1rem;\n margin-left: -1rem;\n\n @include link-sidebar;\n\n &.active {\n @include link-sidebar-current;\n\n background-color: transparent;\n\n &:hover {\n color: var(--pst-color-link-hover);\n }\n }\n\n &:focus-visible {\n border-radius: $focus-ring-radius;\n }\n }\n}\n","div.versionadded,\ndiv.versionchanged,\ndiv.deprecated {\n vertical-align: middle;\n margin: 1.5625em auto;\n padding: 0 0.6rem;\n overflow: hidden;\n\n /* break-inside has replaced page-break-inside and is widely usable since 2019 */\n page-break-inside: avoid;\n break-inside: avoid;\n border-left: 0.2rem solid;\n border-color: var(--pst-color-info);\n border-radius: $admonition-border-radius;\n background-color: var(--pst-color-on-background);\n\n @include box-shadow;\n\n position: relative;\n\n > p {\n margin-bottom: 0.6rem;\n margin-top: 0.6rem;\n }\n}\n\ndiv.versionadded {\n border-color: var(--pst-color-success);\n background-color: var(--pst-color-success-bg);\n}\n\ndiv.versionchanged {\n border-color: var(--pst-color-warning);\n background-color: var(--pst-color-warning-bg);\n}\n\ndiv.deprecated {\n border-color: var(--pst-color-danger);\n background-color: var(--pst-color-danger-bg);\n}\n\nspan.versionmodified {\n font-weight: 600;\n\n &::before {\n margin-right: 0.6rem;\n color: var(--pst-color-info);\n font: var(--fa-font-solid);\n content: var(--pst-icon-versionmodified-default);\n }\n}\n\nspan.versionmodified.added {\n &::before {\n color: var(--pst-color-success);\n content: var(--pst-icon-versionmodified-added);\n }\n}\n\nspan.versionmodified.changed {\n &::before {\n color: var(--pst-color-warning);\n content: var(--pst-icon-versionmodified-changed);\n }\n}\n\nspan.versionmodified.deprecated {\n &::before {\n color: var(--pst-color-danger);\n content: var(--pst-icon-versionmodified-deprecated);\n }\n}\n",".sidebar-indices-items {\n display: flex;\n flex-direction: column;\n border-top: 1px solid var(--pst-color-border);\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n border-top: none;\n }\n\n .sidebar-indices-items__title {\n font-weight: var(--pst-sidebar-header-font-weight);\n font-size: var(--pst-sidebar-header-font-size);\n color: var(--pst-color-text-base);\n margin-bottom: 0.5rem;\n }\n\n ul.indices-link {\n margin-right: -1rem;\n list-style: none;\n padding: 0;\n\n li > a {\n display: block;\n padding: 0.25rem 0;\n color: var(--pst-color-text-muted);\n\n &:hover {\n color: var(--pst-color-primary);\n text-decoration: none;\n background-color: transparent;\n }\n }\n }\n}\n","/**\n * Admonitions and blocks of styled content.\n * Admonitions CSS originally inspired by https://squidfunk.github.io/mkdocs-material/getting-started/\n */\n$admonition-border-radius: 0.25rem;\n$admonition-left-border-width: 0.2rem;\n\ndiv.admonition,\n.admonition {\n margin: 1.5625em auto;\n padding: 0 0.6rem 0.8rem;\n overflow: hidden;\n\n /* break-inside has replaced page-break-inside and is widely usable since 2019 */\n page-break-inside: avoid;\n break-inside: avoid;\n border-left: $admonition-left-border-width solid;\n border-color: var(--pst-color-info);\n border-radius: $admonition-border-radius;\n background-color: var(--pst-color-on-background);\n\n @include box-shadow;\n\n // Last item should have no spacing since we'll control that w/ padding\n *:last-child {\n margin-bottom: 0;\n }\n\n // Items after the title should be indented\n p.admonition-title ~ * {\n margin-left: 1.4rem;\n margin-right: 1.4rem;\n }\n\n // Lists need to have left margin so they don't spill into it\n > ol,\n > ul {\n margin-left: 1em;\n }\n\n // Defaults for all admonitions\n > .admonition-title {\n margin: 0 -0.6rem;\n padding: 0.4rem 0.6rem 0.4rem 2rem;\n font-weight: var(--pst-admonition-font-weight-heading);\n position: relative;\n\n @include legacy-backdrop-placeholder;\n\n background-color: var(--pst-color-info-bg);\n\n // now that we use solid colors we want the title on top\n z-index: 1;\n\n &::after {\n position: absolute;\n left: 0.5rem;\n width: 1rem;\n height: 1rem;\n color: var(--pst-color-info);\n font: var(--fa-font-solid);\n line-height: inherit;\n content: var(--pst-icon-admonition-default);\n opacity: 1;\n }\n\n // Next element after title needs some extra upper-space\n + * {\n margin-top: 0.4em;\n }\n }\n\n &.attention {\n border-color: var(--pst-color-attention);\n\n > .admonition-title {\n background-color: var(--pst-color-attention-bg);\n\n &::after {\n color: var(--pst-color-attention);\n content: var(--pst-icon-admonition-attention);\n }\n }\n }\n\n &.caution {\n border-color: var(--pst-color-warning);\n\n > .admonition-title {\n background-color: var(--pst-color-warning-bg);\n\n &::after {\n color: var(--pst-color-warning);\n content: var(--pst-icon-admonition-caution);\n }\n }\n }\n\n &.warning {\n border-color: var(--pst-color-warning);\n\n > .admonition-title {\n background-color: var(--pst-color-warning-bg);\n\n &::after {\n color: var(--pst-color-warning);\n content: var(--pst-icon-admonition-warning);\n }\n }\n }\n\n &.danger {\n border-color: var(--pst-color-danger);\n\n > .admonition-title {\n background-color: var(--pst-color-danger-bg);\n\n &::after {\n color: var(--pst-color-danger);\n content: var(--pst-icon-admonition-danger);\n }\n }\n }\n\n &.error {\n border-color: var(--pst-color-danger);\n\n > .admonition-title {\n background-color: var(--pst-color-danger-bg);\n\n &::after {\n color: var(--pst-color-danger);\n content: var(--pst-icon-admonition-error);\n }\n }\n }\n\n &.hint {\n border-color: var(--pst-color-success);\n\n > .admonition-title {\n background-color: var(--pst-color-success-bg);\n\n &::after {\n color: var(--pst-color-success);\n content: var(--pst-icon-admonition-hint);\n }\n }\n }\n\n &.tip {\n border-color: var(--pst-color-success);\n\n > .admonition-title {\n background-color: var(--pst-color-success-bg);\n\n &::after {\n color: var(--pst-color-success);\n content: var(--pst-icon-admonition-tip);\n }\n }\n }\n\n &.important {\n border-color: var(--pst-color-attention);\n\n > .admonition-title {\n background-color: var(--pst-color-attention-bg);\n\n &::after {\n color: var(--pst-color-attention);\n content: var(--pst-icon-admonition-important);\n }\n }\n }\n\n &.note {\n border-color: var(--pst-color-info);\n\n > .admonition-title {\n background-color: var(--pst-color-info-bg);\n\n &::after {\n color: var(--pst-color-info);\n content: var(--pst-icon-admonition-note);\n }\n }\n }\n\n &.seealso {\n border-color: var(--pst-color-success);\n\n > .admonition-title {\n background-color: var(--pst-color-success-bg);\n\n &::after {\n color: var(--pst-color-success);\n content: var(--pst-icon-admonition-seealso);\n }\n }\n }\n\n &.admonition-todo {\n border-color: var(--pst-color-secondary);\n\n > .admonition-title {\n background-color: var(--pst-color-secondary-bg);\n\n &::after {\n color: var(--pst-color-secondary);\n content: var(--pst-icon-admonition-todo);\n }\n }\n }\n\n /**\n * Special-case for a `sidebar` class that makes the admonition float to\n * the right like the {sidebar} directive.\n */\n &.sidebar {\n max-width: 40%;\n float: right;\n clear: both;\n margin-left: 0.5rem;\n margin-top: 0;\n\n // Undo the .sidebar directive border\n border-width: 0 0 0 $admonition-left-border-width;\n\n // TODO: these semantic-color-names border-color rules might no longer be\n // needed when we drop support for Sphinx 4 / docutils 0.17\n &.attention,\n &.important {\n border-color: var(--pst-color-attention);\n }\n\n &.caution,\n &.warning {\n border-color: var(--pst-color-warning);\n }\n\n &.danger,\n &.error {\n border-color: var(--pst-color-danger);\n }\n\n &.hint,\n &.tip,\n &.seealso {\n border-color: var(--pst-color-success);\n }\n\n &.note,\n &.todo {\n border-color: var(--pst-color-info);\n }\n\n // No inner margin since we have less horizontal space w/ the sidebar\n p.admonition-title ~ * {\n margin-left: 0;\n margin-right: 0;\n }\n }\n}\n\n/**************************************************************\n * Similar content blocks that are not technically admonitions.\n */\n\n/**\n * Topics and the {contents} directive\n */\n// Docutils <= 0.17\ndiv.topic,\ndiv.topic.contents,\n// Docutils >= 0.18\nnav.contents,\naside.topic {\n display: flex;\n flex-direction: column;\n background-color: var(--pst-color-surface);\n border-color: var(--pst-color-border);\n border-radius: $admonition-border-radius;\n padding: 1rem 1.25rem;\n\n @include box-shadow;\n\n .topic-title {\n margin: 0 0 0.5rem;\n }\n\n // Over-ride text color to ensure enough contrast\n p {\n color: var(--pst-color-on-surface) !important;\n }\n\n // Over-ride large default padding\n ul.simple {\n padding-left: 1rem;\n\n ul {\n // So that sub-lists will have a bit less padding\n padding-left: 2em;\n }\n }\n}\n\n/**\n * Sidebar directive\n */\naside.sidebar {\n border: 1px solid var(--pst-color-border);\n background-color: var(--pst-color-surface);\n border-radius: $admonition-border-radius;\n\n // to match the admonition-styled sidebars:\n margin-left: 0.5rem;\n padding: 0;\n\n > *:last-child {\n padding-bottom: 1rem;\n }\n\n p.sidebar-title {\n position: relative;\n margin-bottom: 0;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n border-bottom: 1px solid var(--pst-color-border);\n font-family: var(--pst-font-family-heading);\n font-weight: var(--pst-admonition-font-weight-heading);\n }\n\n // Add margin to the first non-`.sidebar-title` item\n > *:not(.sidebar-title):first-child,\n > p.sidebar-title + * {\n margin-top: 1rem;\n }\n\n > * {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n}\n\n/**\n * Rubrics look kind of like section headers\n */\np.rubric {\n display: flex;\n flex-direction: column;\n}\n\n/**\n * Seealso is kind of like a vertically-collapsed admonition\n */\n.seealso dd {\n margin-top: 0;\n margin-bottom: 0;\n}\n","/**\n * Miscellaneous color functions and mixins\n**/\n\n@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"sass:math\";\n@use \"sass:string\";\n\n// We must add ::before pseudo-element to some theme components (such as admonitions)\n// because users were instructed to customize the background color this way.\n@mixin legacy-backdrop-placeholder {\n &::before {\n content: \"\";\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n z-index: -1;\n\n // So that hovering over the text within background is still possible.\n // Otherwise the background overlays the text and you cannot click or select easily.\n // ref: https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events\n pointer-events: none;\n }\n}\n\n/**\n* Function to get items from nested maps\n*/\n// @param {Map} $map - Map\n// @param {Arglist} $keys - Keys to fetc\n// @return {*}\n@function map-deep-get($map, $keys...) {\n @each $key in $keys {\n $map: map.get($map, $key);\n }\n\n @return $map;\n}\n\n/**\n * Function to check if the color needs converting to a \"color\" type\n * if it is a string we cannot use other color manipulation functions\n * It is used to create the sphinx-design colours as these are often interpolated\n */\n// @param {String/Color} $color - Color definition from map\n// @return {Color} - Color type (in hex)\n@function check-color($color) {\n @if meta.type-of($color) == string {\n $color: from-hex($color);\n }\n\n @return $color;\n}\n\n/**\n * Function to convert the string representation of a color to a color type (hex)\n */\n// @param {String} $string - String representation of a color\n@function from-hex($string) {\n $string-lower: string.to-lower-case($string);\n $r: \"\";\n $g: \"\";\n $b: \"\";\n $hex: \"0\" \"1\" \"2\" \"3\" \"4\" \"5\" \"6\" \"7\" \"8\" \"9\" \"a\" \"b\" \"c\" \"d\" \"e\" \"f\";\n $length: string.length($string);\n $max: if($length == 4, 1, 2);\n\n // Check for length accuracy\n @if $length != 4 and $length != 7 {\n @return $string;\n }\n\n // Loop from the second character (omitting #)\n @for $i from 2 through $length {\n $c: string.slice($string-lower, $i, $i);\n\n // If wrong character, return\n @if not list.index($hex, $c) {\n @return $string;\n }\n\n @if string.length($r) < $max {\n $r: $r + $c;\n } @else if string.length($g) < $max {\n $g: $g + $c;\n } @else if string.length($b) < $max {\n $b: $b + $c;\n }\n }\n\n @if $length == 4 {\n $r: $r + $r;\n $g: $g + $g;\n $b: $b + $b;\n }\n\n @return rgb(hex-to-dec($r), hex-to-dec($g), hex-to-dec($b));\n}\n\n@function hex-to-dec($string) {\n $hex: \"0\" \"1\" \"2\" \"3\" \"4\" \"5\" \"6\" \"7\" \"8\" \"9\" \"a\" \"b\" \"c\" \"d\" \"e\" \"f\";\n $string: string.to-lower-case($string);\n $length: string.length($string);\n $dec: 0;\n\n @for $i from 1 through $length {\n $factor: 1 + (15 * ($length - $i));\n $index: list.index($hex, string.slice($string, $i, $i));\n $dec: $dec + $factor * ($index - 1);\n }\n\n @return $dec;\n}\n","// Style API docs from sphinx' autodoc / autosummary\n\n/*******************************************************************************\n* Styling for field lists\n*/\n\n/* grey highlighting of 'parameter' and 'returns' field */\ntable.field-list {\n border-collapse: separate;\n border-spacing: 10px;\n margin-left: 1px;\n\n th.field-name {\n padding: 1px 8px 1px 5px;\n white-space: nowrap;\n background-color: var(--pst-color-surface);\n }\n\n /* italic font for parameter types */\n td.field-body {\n p {\n font-style: italic;\n\n > strong {\n font-style: normal;\n }\n }\n\n /* reduced space around parameter description */\n blockquote {\n border-left: none;\n margin: 0 0 0.3em;\n padding-left: 30px;\n }\n }\n}\n\n/*******************************************************************************\n* Styling for autosummary tables\n*/\n\n.table.autosummary {\n // The first column (with the signature) should not wrap\n td:first-child {\n white-space: nowrap;\n }\n}\n\n/* overriding basic.css to use our own monospace font */\n.sig {\n font-family: var(--pst-font-family-monospace);\n}\n\n/* C++ specific styling - overriding the basic.css to avoid custom colors */\n\n.sig-inline.c-texpr,\n.sig-inline.cpp-texpr {\n font-family: unset;\n}\n\n.sig.c .k,\n.sig.c .kt,\n.sig.cpp .k,\n.sig.cpp .kt {\n color: var(--pst-color-text-base);\n}\n\n.sig.c .m,\n.sig.cpp .m {\n color: var(--pst-color-text-base);\n}\n\n.sig.c .s,\n.sig.c .sc,\n.sig.cpp .s,\n.sig.cpp .sc {\n color: var(--pst-color-text-base);\n}\n\n// addition\n\n// .sig.c .sig-name .n,\n// .sig.cpp .sig-name .n {\n// color: var(--pst-color-inline-code);\n// }\n\n.sig-name {\n color: var(--pst-color-inline-code);\n}\n\n.sig-param .o,\n.sig-param .default_value {\n color: var(--pst-color-text-muted);\n font-weight: normal;\n}\n\n// change target color for dark theme\ndt:target,\nspan.highlighted {\n background-color: var(--pst-color-target);\n}\n\n.viewcode-back {\n font-family: var(--pst-font-family-base);\n}\n\n.viewcode-block:target {\n border-top: 1px solid var(--pst-color-border);\n border-bottom: 1px solid var(--pst-color-border);\n position: relative;\n background-color: var(--pst-color-target);\n}\n\ndl > dt > a:has(.viewcode-link) {\n // Sphinx applies a `float:right` rule to the .viewcode-line span, which\n // exposes a browser glitch in the focus ring. It seems the browser creates\n // two separate boxes, an empty box where the anchor element gets laid out and\n // then another box around the anchor's contents that have been floated right.\n // Firefox draws the focus ring around the empty anchor element box. Chrome\n // draws two focus rings: one around the empty anchor and one around the\n // floated-right element. To fix the glitch, we apply the float rule on the\n // parent rather than the child.\n float: right;\n\n .viewcode-link {\n float: none;\n }\n}\n\n/*******************************************************************************\n* Styling for autosummary titles like \"parameters\" and \"returns\"\n*/\n\n// the API selector\n// from https://github.com/pradyunsg/furo/blob/main/src/furo/assets/styles/content/_api.sass#L6)\ndl[class]:not(.option-list, .field-list, .footnote, .glossary, .simple) {\n // increase margin bottom after the dl elements\n margin-bottom: 3rem;\n\n dd {\n margin-left: 2rem;\n\n // Fix until this will be solved to Sphinx https://github.com/sphinx-doc/sphinx/issues/10815\n & > dl.simple > dt {\n display: flex;\n }\n }\n\n dl.field-list {\n display: grid;\n grid-template-columns: unset;\n }\n\n dt.field-odd,\n dt.field-even {\n margin-top: 0.2rem;\n margin-bottom: 0.1rem;\n background-color: var(--pst-color-surface);\n }\n}\n","/**\n * Code block styling\n * Note that we inherit a lot of styling from Bootstrap so not many rules here.\n */\n\n// General code block behavior\n// Unset bootstrap behavior\ndiv[class*=\"highlight-\"],\ndiv.highlight,\ndiv.literal-block-wrapper {\n display: flex;\n flex-direction: column;\n width: unset;\n border-radius: $admonition-border-radius;\n break-inside: avoid;\n}\n\n// Code blocks with captions\n// There's a wrapper when the code block has a title\ndiv.literal-block-wrapper {\n border: 1px solid var(--pst-color-border);\n border-radius: $admonition-border-radius;\n\n // This is where the title goes\n div.code-block-caption {\n margin: 0;\n border-bottom: 1px solid var(--pst-color-border);\n padding: 0.5rem;\n font-size: 1rem;\n font-weight: var(--pst-font-weight-caption);\n\n a.headerlink {\n font-size: inherit;\n }\n }\n\n // Remove the upper border radius since we want it to connect with the title\n // Remove the box shadow so the wrapper gets the shadow instead\n div[class*=\"highlight-\"] {\n margin: 0;\n border-radius: 0;\n\n pre {\n border: none;\n box-shadow: none;\n }\n }\n}\n\n/**\n * In-line code\n */\ncode.literal {\n padding: 0.1rem 0.25rem;\n background-color: var(--pst-color-surface);\n border: 1px solid var(--pst-color-border);\n border-radius: 0.25rem;\n}\n\na > code {\n color: var(--pst-color-inline-code-links);\n\n &:hover {\n color: var(--pst-color-link-hover);\n }\n}\n\n// Minimum opacity needed for linenos to be WCAG AA conformant\nspan.linenos {\n opacity: 0.8 !important;\n}\n","figure > a,\nfigure > a > img,\nfigure > img,\nfigure > video {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n\nfigure {\n a.headerlink {\n // So that header link doesn't push caption to be off-center.\n position: absolute;\n font-size: inherit;\n }\n\n // Default headerlink hover doesn't trigger on figures\n &:hover a.headerlink {\n visibility: visible;\n }\n\n figcaption {\n font-family: var(--pst-font-family-heading);\n font-weight: var(--pst-font-weight-caption);\n color: var(--pst-color-text-muted);\n margin-left: auto;\n margin-right: auto;\n margin-top: 0.3rem;\n text-align: center;\n\n & > p:last-child {\n // Don't add extra margin to already existing figure bottom margin\n margin-bottom: 0;\n }\n\n p {\n text-align: start;\n display: inline-block;\n }\n\n table.table {\n width: fit-content;\n margin-left: auto;\n margin-right: auto;\n }\n }\n}\n","// For consistency, add bracket around footnotes/citations which are\n// cited more than once. E.g. [Newton](1,2) instead of Newton(1,2)\ndt.label > span.brackets:not(:only-child)::before {\n content: \"[\";\n}\n\ndt.label > span.brackets:not(:only-child)::after {\n content: \"]\";\n}\n\n// Make footnote as a superscript\na.footnote-reference {\n vertical-align: super;\n font-size: small;\n}\n\n// Docutils 0.18 uses an `aside.footnote` container with different internal structure\naside.footnote {\n margin-bottom: 0.5rem;\n\n &:last-child {\n margin-bottom: 1rem;\n }\n\n span.label,\n span.backrefs {\n font-weight: bold;\n }\n\n &:target {\n background-color: var(--pst-color-target);\n }\n}\n","/**\n * Hacky fixes that don't fit cleanly into other sections\n */\n\n// Ensure user highlighting/selecting behaves properly\n// From https://stackoverflow.com/a/34372191\ntable.highlighttable td.linenos,\nspan.linenos,\ndiv.doctest > div.highlight span.gp {\n /* gp: Generic.Prompt */\n user-select: none;\n}\n","// Override bootstrap by restoring the basic theme default.\ndd {\n margin-top: 3px;\n margin-bottom: 10px;\n margin-left: 30px;\n}\n\nol,\nul {\n padding-inline-start: 2rem;\n\n li > p:first-child {\n margin-bottom: 0.25rem;\n margin-top: 0.25rem;\n }\n}\n","// GitHub blockquote style\nblockquote {\n padding: 1em;\n color: var(--pst-color-text-muted);\n border-left: 0.25em solid var(--pst-color-blockquote-notch);\n border-radius: $admonition-border-radius;\n position: relative;\n\n p {\n color: var(--pst-color-text-base);\n }\n\n // remove padding from included line-block to avoid duplication\n .line-block {\n margin: 0;\n }\n\n // remove margin bottom for the last p\n p:last-child {\n margin-bottom: 0;\n }\n\n @include legacy-backdrop-placeholder;\n\n background-color: var(--pst-color-surface);\n\n // Ensure there is enough contrast against the background\n a {\n color: var(--pst-color-inline-code-links);\n }\n\n // hack to make the text in the blockquote selectable\n &::before {\n z-index: -1;\n }\n}\n","/**\n * Span-level styling within content\n */\n\nspan.guilabel {\n border: 1px solid var(--pst-color-info);\n font-size: 80%;\n font-weight: 700;\n border-radius: 4px;\n padding: 2.4px 6px;\n margin: auto 2px;\n position: relative;\n\n @include legacy-backdrop-placeholder;\n\n background-color: var(--pst-color-info-bg);\n}\n\na.reference.download::before {\n content: var(--pst-icon-download);\n font: var(--fa-font-solid);\n font-size: 0.8em;\n padding: 0 0.25em;\n color: var(--pst-color-text-muted);\n}\n","/**\n * Tables\n */\n\ntable {\n // default to table-center\n margin-left: auto;\n margin-right: auto;\n\n &.table-right {\n margin-right: 0;\n }\n\n &.table-left {\n margin-left: 0;\n }\n}\n\n// customize table caption from bootstrap\n// to display them on top and centered\ntable caption {\n text-align: center;\n caption-side: top;\n color: var(--pst-color-text-muted);\n}\n\n// MyST Markdown tables use these classes to control alignment\nth,\ntd {\n &.text-left {\n text-align: left;\n }\n\n &.text-right {\n text-align: right;\n }\n\n &.text-center {\n text-align: center;\n }\n}\n\n// override bootstrap table colors\n.table {\n @include table-colors;\n\n --bs-table-bg: transparent; // background\n --bs-table-color: var(\n --pst-color-text-base\n ); // ensure text and bullets are visible\n}\n\n.pst-scrollable-table-container {\n // Put a horizontal scrollbar just below tables that are too wide to fit\n // within the main column\n overflow-x: auto;\n}\n","/**\n * Style the toctree component in pages (avoid modifying the navbars)\n */\n.toctree-wrapper {\n p.caption {\n font-size: 1.5em;\n margin-bottom: 0;\n }\n\n & > ul {\n padding-left: 0;\n }\n\n li[class^=\"toctree-l\"] {\n list-style: none;\n margin-bottom: 0.2em;\n\n & > a {\n list-style: none;\n font-size: 1.1em;\n }\n\n & > ul {\n list-style: none;\n padding-inline-start: 1.5em;\n }\n }\n\n // slightly bigger font for l1\n .toctree-l1 > a {\n font-size: 1.3em;\n }\n}\n\ndiv.topic.contents, // Docutils <= 0.17\nnav.contents // Docutils >= 0.18\n{\n // Style similarly to toctree\n ul.simple {\n list-style: none;\n padding-left: 0;\n }\n}\n","/**\n * Mathematics via MathJax.\n *\n * This is designed for MathJax v3\n * ref: https://www.sphinx-doc.org/en/master/usage/extensions/math.html#module-sphinx.ext.mathjax\n */\n\n// Applies to all math elements\nspan.math,\ndiv.math {\n align-items: center;\n display: flex;\n max-width: 100%;\n\n // This will be over-ridden for the y-direction and divs\n overflow: hidden;\n}\n\n// Inline-only\nspan.math {\n display: inline-flex;\n}\n\n// Block-level only\ndiv.math {\n gap: 0.5em;\n\n // So that the eqno shows up after the equation\n flex-direction: row-reverse;\n\n // The equation number / link\n span.eqno a.headerlink {\n position: relative;\n font-size: 1em;\n }\n\n // The math container\n mjx-container {\n flex-grow: 1;\n padding-bottom: 0.2rem;\n overflow: auto;\n\n // Set height to 0 so that it does not cause scrollbars to appear\n // ref: https://github.com/mathjax/MathJax/issues/2521\n mjx-assistive-mml {\n height: 0;\n }\n }\n}\n","/**\n * ABlog\n * ref: https://ablog.readthedocs.io/\n */\n\n/**\n * Sidebar template components\n */\n.ablog-sidebar-item {\n h2,\n h3 {\n font-size: var(--pst-sidebar-header-font-size);\n\n // Remove unnecessary vertical whitespace\n margin-top: 0.5rem;\n\n // The headers are all links, but this makes them hard to parse\n // So we change the colors to make them look like headers\n a {\n color: var(--pst-color-text-base);\n }\n }\n\n ul {\n // No bullet points for the primary sidebar items\n list-style: none;\n padding-left: 0;\n\n // Otherwise a scrollbar randomly shows up\n overflow-y: hidden;\n\n // List of recent post items\n display: flex;\n flex-direction: column;\n gap: 0.5em;\n margin-bottom: 0;\n\n // The ablog cloud should move horizontally\n &.ablog-cloud {\n flex-flow: row wrap;\n gap: 0.5rem;\n\n // Vertical-align tag clouds\n li {\n // Center the tag cloud items\n display: flex;\n align-items: center;\n }\n }\n }\n}\n\n/**\n * Previous / next buttons at the bottom\n */\n.ablog__prev-next {\n font-size: 1.2em;\n display: flex;\n padding: 1rem 0;\n\n // The bottom previous / next arrows\n > span {\n // To ensure that the whole thing fits on one line even if there are long titles\n display: flex;\n max-width: 45%;\n\n // Links within each span have the collection of icon + text\n a {\n display: flex;\n align-items: center;\n margin-left: auto;\n gap: 1rem;\n line-height: 1.5rem;\n\n i::before {\n color: var(--pst-color-text-base);\n }\n }\n }\n\n // The first span is for the previous page and aligns to the left\n span.ablog__prev {\n i.fa-arrow-circle-left::before {\n content: var(--pst-icon-angle-left);\n }\n }\n\n // The second span is just an empty space so we remove it because we're\n // positioning with flex\n span.ablog__spacer {\n display: none;\n }\n\n // The third span is aligned to the right\n span.ablog__next {\n margin-left: auto;\n text-align: right;\n\n i.fa-arrow-circle-right::before {\n content: var(--pst-icon-angle-right);\n }\n }\n}\n\n/**\n * {postlist} directive and posts page\n */\n.ablog__collection,\n.postlist {\n padding-left: 0;\n\n .ablog-post {\n list-style: none;\n\n // Post metadata tags (author, links ,etc) should be a bit smaller\n .ablog-archive {\n display: flex;\n flex-flow: row wrap;\n gap: 1rem;\n list-style: none;\n font-size: 0.75rem;\n padding-left: 0;\n }\n\n // Title line should be a bit bigger and bold to stand out\n .ablog-post-title {\n margin-top: 0;\n font-size: 1.25rem;\n\n a {\n font-weight: bold;\n }\n }\n\n // Read more button should be a bit bigger\n .ablog-post-expand {\n margin-bottom: 0.5rem;\n }\n }\n}\n","/**\n * Special cases for Bootstrap functionality\n */\n\n// Bootstrap adds margin to their general container class. However, sphinx/docutils\n// can also generate output with the container class, but in those cases we should\n// not add the margin from bootstrap. Same for max-width.\n.docutils.container {\n padding-left: unset;\n padding-right: unset;\n margin-left: unset;\n margin-right: unset;\n max-width: unset;\n width: unset;\n}\n\n.btn {\n --bs-btn-focus-box-shadow: #{$btn-focus-box-shadow};\n}\n","/**\n * Sphinx Copybutton\n * ref: https://sphinx-copybutton.readthedocs.io/\n */\n\ndiv.highlight button.copybtn {\n // Nicer spacing\n display: flex;\n align-items: center;\n justify-content: center;\n\n // Don't over-ride the success color\n &:not(.success) {\n color: var(--pst-color-muted);\n }\n\n border: none;\n background-color: var(--pst-color-surface);\n\n &:hover {\n &:not(.success) {\n color: var(--pst-color-text);\n background-color: var(--pst-color-shadow);\n }\n }\n\n // Tooltip styling\n &.o-tooltip--left::after {\n color: var(--pst-color-text);\n background-color: var(--pst-color-surface);\n }\n\n &:focus {\n // For keyboard users, make the copy button visible when focussed.\n opacity: 1;\n }\n\n &:focus-visible {\n outline: $focus-ring-outline;\n }\n}\n\ndiv.highlight:has(button.copybtn) {\n // Make sure the code block has enough height for the copy button.\n // Sphinx-copybutton sets 0.3em top offset plus 1.7em height:\n // https://github.com/executablebooks/sphinx-copybutton/blob/master/sphinx_copybutton/_static/copybutton.css\n min-height: 2em;\n}\n","// adapt ethical ad to the theme\n#ethical-ad-placement {\n .ethical-sidebar a,\n .ethical-sidebar a:visited,\n .ethical-sidebar a:hover,\n .ethical-sidebar a:active,\n .ethical-footer a,\n .ethical-footer a:visited,\n .ethical-footer a:hover,\n .ethical-footer a:active {\n color: var(--pst-color-text-base);\n }\n\n .ethical-sidebar,\n .ethical-footer {\n background-color: var(--pst-color-background);\n border: 1px solid var(--pst-color-border);\n border-radius: 5px;\n color: var(--pst-color-text-base);\n font-size: 14px;\n line-height: 20px;\n }\n}\n","/**\n * Styles for various Sphinx execution libraries.\n * For now, where these define output sections, we simply revert their background\n * to be a \"light theme\" background. This ensures that inputs/outputs behave similarly,\n * because the CSS is often controlled by each package.\n * In the future, we might add dark theme support for specific packages.\n */\n\n/******************************************************************************\n * Jupyter Sphinx\n */\n\n.bd-content div.jupyter_container {\n // We don't want borders around the whole container, just around code cells\n border: none;\n background-color: unset;\n box-shadow: none;\n\n // Code cells should have the same style as our other code objects\n div.output,\n div.highlight {\n border-radius: 0.25rem;\n }\n\n div.highlight {\n background-color: var(--pst-color-surface);\n }\n\n // Ensure the style is the same as our code cells. Jupyter Sphinx makes it tiny.\n .cell_input,\n .cell_output {\n border-radius: 0.25rem;\n\n pre {\n padding: 1rem;\n }\n }\n}\n","/* Styles for graphviz generated output from Sphinx */\n\n/* Style the inheritance diagram such that it has a dark mode */\nhtml[data-theme=\"dark\"] div.graphviz > object.inheritance {\n filter: brightness(0.8) invert(0.82) contrast(1.2);\n color-scheme: normal;\n}\n","/**\n * Special-cases for packages in the PyData ecosystem\n */\n\n// xarray output display in bootstrap\n.xr-wrap[hidden] {\n display: block !important;\n}\n\n// ipywidgets\n.jp-OutputArea-output.lm-Widget {\n // override overflow:hidden rule from Lumino (.lm-Widget) to allow scrolling\n overflow: auto;\n}\n","/*******************************************************************************\n* master color map. Only the colors that actually differ between light and dark\n* themes are specified separately.\n*\n* To see the full list of colors see https://www.figma.com/file/rUrrHGhUBBIAAjQ82x6pz9/PyData-Design-system---proposal-for-implementation-(2)?node-id=1234%3A765&t=ifcFT1JtnrSshGfi-1\n*/\n\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"sass:string\";\n\n/**\n* Function to get items from nested maps\n*/\n// @param {Map} $map - Map\n// @param {Arglist} $keys - Keys to fetch\n// @return {*}\n@function map-deep-get($map, $keys...) {\n @each $key in $keys {\n $map: map.get($map, $key);\n }\n\n @return $map;\n}\n\n/* Assign base colors for the PyData theme */\n$color-palette: (\n // Primary color\n \"teal\":\n (\n \"50\": #f4fbfc,\n \"100\": #e9f6f8,\n \"200\": #d0ecf1,\n \"300\": #abdde6,\n \"400\": #3fb1c5,\n \"500\": #0a7d91,\n \"600\": #085d6c,\n \"700\": #064752,\n \"800\": #042c33,\n \"900\": #021b1f,\n ),\n // Secondary color\n \"violet\":\n (\n \"50\": #f4eefb,\n \"100\": #e0c7ff,\n \"200\": #d5b4fd,\n \"300\": #b780ff,\n \"400\": #9c5ffd,\n \"500\": #8045e5,\n \"600\": #6432bd,\n \"700\": #4b258f,\n \"800\": #341a61,\n \"900\": #1e0e39,\n ),\n // Neutrals\n \"gray\":\n (\n \"50\": #f9f9fa,\n \"100\": #f3f4f5,\n \"200\": #e5e7ea,\n \"300\": #d1d5da,\n \"400\": #9ca4af,\n \"500\": #677384,\n \"600\": #48566b,\n \"700\": #29313d,\n \"800\": #222832,\n \"900\": #14181e,\n ),\n // Accent color\n \"pink\":\n (\n \"50\": #fcf8fd,\n \"100\": #fcf0fa,\n \"200\": #f8dff5,\n \"300\": #f3c7ee,\n \"400\": #e47fd7,\n \"500\": #c132af,\n \"600\": #912583,\n \"700\": #6e1c64,\n \"800\": #46123f,\n \"900\": #2b0b27,\n ),\n \"foundation\": (\n \"white\": #ffffff,\n // gray-900\n \"black\": #14181e,\n )\n);\n\n:root {\n // Add theme colours to the html root element\n @each $group-color, $color in $color-palette {\n @each $color-name, $definition in $color {\n --pst-#{$group-color}-#{$color-name}: #{$definition};\n }\n }\n}\n\n// Static SCSS variables used thoroughout the theme\n// Minimum contrast ratio used for the theme.\n// Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n// 4.5 - is for text that is 14pt or less\n$min-contrast-ratio-4: 4.5;\n\n// 3 is for text that is 18pt or bold, or for non-text elements\n$min-contrast-ratio-3: 3;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$foundation-black: #14181e;\n$foundation-white: #fff;\n\n// This is a custom - calculated color between gray 100 and 200 - to reduce\n// the contrast ratio (avoid a jarring effect)\n$base-light-text: #ced6dd;\n\n// used in sphinx_design - gray 100\n$foundation-light-gray: #f3f4f5;\n\n// used in sphinx_design - gray 700\n$foundation-muted-gray: #29313d;\n\n// used in sphinx_design - gray 800\n$foundation-dark-gray: #222832;\n$pst-semantic-colors: (\n \"primary\": (\n \"light\": #{map-deep-get($color-palette, \"teal\", \"500\")},\n \"bg-light\": #{map-deep-get($color-palette, \"teal\", \"200\")},\n \"dark\": #{map-deep-get($color-palette, \"teal\", \"400\")},\n \"bg-dark\": #{map-deep-get($color-palette, \"teal\", \"800\")},\n ),\n \"secondary\": (\n \"light\": #{map-deep-get($color-palette, \"violet\", \"500\")},\n \"bg-light\": #{map-deep-get($color-palette, \"violet\", \"100\")},\n \"dark\": #{map-deep-get($color-palette, \"violet\", \"400\")},\n \"bg-dark\": #{map-deep-get($color-palette, \"violet\", \"800\")},\n ),\n \"accent\": (\n \"light\": #{map-deep-get($color-palette, \"pink\", \"500\")},\n \"bg-light\": #{map-deep-get($color-palette, \"pink\", \"200\")},\n \"dark\": #{map-deep-get($color-palette, \"pink\", \"400\")},\n \"bg-dark\": #{map-deep-get($color-palette, \"pink\", \"800\")},\n ),\n \"info\": (\n \"light\": #276be9,\n \"bg-light\": #dce7fc,\n \"dark\": #79a3f2,\n \"bg-dark\": #06245d,\n ),\n \"warning\": (\n \"light\": #f66a0a,\n \"bg-light\": #f8e3d0,\n \"dark\": #ff9245,\n \"bg-dark\": #652a02,\n ),\n \"success\": (\n \"light\": #00843f,\n \"bg-light\": #d6ece1,\n \"dark\": #5fb488,\n \"bg-dark\": #002f17,\n ),\n // This is based on the warning color\n \"attention\":\n (\n \"light\": var(--pst-color-warning),\n \"bg-light\": var(--pst-color-warning-bg),\n \"dark\": var(--pst-color-warning),\n \"bg-dark\": var(--pst-color-warning-bg),\n ),\n \"danger\": (\n \"light\": #d72d47,\n \"bg-light\": #f9e1e4,\n \"dark\": #e78894,\n \"bg-dark\": #4e111b,\n ),\n \"text-base\": (\n \"light\": #{map-deep-get($color-palette, \"gray\", \"800\")},\n \"dark\": $base-light-text,\n ),\n \"text-muted\": (\n \"light\": #{map-deep-get($color-palette, \"gray\", \"600\")},\n \"dark\": #{map-deep-get($color-palette, \"gray\", \"400\")},\n ),\n \"shadow\": (\n \"light\": rgba(0, 0, 0, 0.1),\n \"dark\": rgba(0, 0, 0, 0.2),\n ),\n \"border\": (\n \"light\": #{map-deep-get($color-palette, \"gray\", \"300\")},\n \"dark\": #{map-deep-get($color-palette, \"gray\", \"600\")},\n ),\n \"border-muted\": (\n \"light\": rgba(23, 23, 26, 0.2),\n \"dark\": #{map-deep-get($color-palette, \"gray\", \"700\")},\n ),\n \"blockquote-notch\": (\n // These colors have a contrast ratio > 3.0 against both the background and\n // surface colors that the notch is sandwiched between\n \"light\": #{map-deep-get($color-palette, \"gray\", \"500\")},\n \"dark\": #{map-deep-get($color-palette, \"gray\", \"400\")},\n ),\n \"inline-code\": (\n \"light\": #{map-deep-get($color-palette, \"pink\", \"600\")},\n \"dark\": #{map-deep-get($color-palette, \"pink\", \"300\")},\n ),\n \"inline-code-links\": (\n // need to make sure there is enough contrast against the code bg\n \"light\": #{map-deep-get($color-palette, \"teal\", \"600\")},\n // keep primary color for dark mode\n \"dark\": #{map-deep-get($color-palette, \"teal\", \"400\")},\n ),\n \"target\": (\n \"light\": #f3cf95,\n \"dark\": #675c04,\n ),\n \"table\": (\n \"light\": #{map-deep-get($color-palette, \"foundation\", \"black\")},\n \"dark\": #{map-deep-get($color-palette, \"foundation\", \"white\")},\n ),\n \"table-row-hover\": (\n \"bg-light\": #{map-deep-get($color-palette, \"violet\", \"200\")},\n \"bg-dark\": #{map-deep-get($color-palette, \"violet\", \"700\")},\n ),\n \"table-inner-border\": (\n \"light\": #{map-deep-get($color-palette, \"gray\", \"200\")},\n \"dark\": #364150,\n ),\n // DEPTH COLORS - you can see the elevation colours and shades\n // in the Figma file https://www.figma.com/file/rUrrHGhUBBIAAjQ82x6pz9/PyData-Design-system---proposal-for-implementation-(2)?node-id=1492%3A922&t=sQeQZehkOzposYEg-1\n // background: color of the canvas / the furthest back layer\n \"background\":\n (\n \"light\": #{map-deep-get($color-palette, \"foundation\", \"white\")},\n \"dark\": #{map-deep-get($color-palette, \"foundation\", \"black\")},\n ),\n // on-background: provides slight contrast against background\n // (by use of shadows in light theme)\n \"on-background\":\n (\n \"light\": #{map-deep-get($color-palette, \"foundation\", \"white\")},\n \"dark\": #{map-deep-get($color-palette, \"gray\", \"800\")},\n ),\n \"surface\": (\n \"light\": #{map-deep-get($color-palette, \"gray\", \"100\")},\n \"dark\": #{map-deep-get($color-palette, \"gray\", \"700\")},\n ),\n // on_surface: object on top of surface object (without shadows)\n \"on-surface\":\n (\n \"light\": #{map-deep-get($color-palette, \"gray\", \"800\")},\n \"dark\": $foundation-light-gray,\n ),\n);\n\n/*******************************************************************************\n* write the color rules for each theme (light/dark)\n*/\n\n/* NOTE:\n * Mixins enable us to reuse the same definitions for the different modes\n * https://sass-lang.com/documentation/at-rules/mixin\n * #{something} inserts a variable into a CSS selector or property name\n * https://sass-lang.com/documentation/interpolation\n */\n@mixin theme-colors($mode) {\n // check if this color is defined differently for light/dark\n @each $col-name, $definition in $pst-semantic-colors {\n @if meta.type-of($definition) == map {\n @each $key, $val in $definition {\n @if string.index($key, $mode) {\n // since now we define the bg colours in the semantic colours and not\n // by changing opacity, we need to check if the key contains bg and the\n // correct mode (light/dark)\n @if string.index($key, \"bg\") {\n --pst-color-#{$col-name}-bg: #{$val};\n } @else {\n --pst-color-#{$col-name}: #{$val};\n }\n }\n }\n } @else {\n --pst-color-#{$col-name}: #{$definition};\n }\n }\n\n // assign the \"duplicate\" colors (ones that just reference other variables)\n & {\n --pst-color-heading: var(--pst-color-text-base);\n --pst-color-link: var(--pst-color-primary);\n --pst-color-link-hover: var(--pst-color-secondary);\n --pst-color-table-outer-border: var(--pst-color-surface);\n --pst-color-table-heading-bg: var(--pst-color-surface);\n --pst-color-table-row-zebra-high-bg: var(--pst-color-on-background);\n --pst-color-table-row-zebra-low-bg: var(--pst-color-surface);\n }\n\n // adapt to light/dark-specific content\n @if $mode == \"light\" {\n .only-dark,\n .only-dark ~ figcaption {\n display: none !important;\n }\n } @else {\n .only-light,\n .only-light ~ figcaption {\n display: none !important;\n }\n\n /* Adjust images in dark mode (unless they have class .only-dark or\n * .dark-light, in which case assume they're already optimized for dark\n * mode).\n */\n img:not(.only-dark, .dark-light) {\n filter: brightness(0.8) contrast(1.2);\n }\n\n /* Give images a light background in dark mode in case they have\n * transparency and black text (unless they have class .only-dark or .dark-light, in\n * which case assume they're already optimized for dark mode).\n */\n .bd-content img:not(.only-dark, .dark-light) {\n background-color: rgb(255 255 255);\n border-radius: 0.25rem;\n }\n\n // MathJax SVG outputs should be filled to same color as text.\n .MathJax_SVG * {\n fill: var(--pst-color-text-base);\n }\n }\n}\n\n/* Defaults to light mode if data-theme is not set */\nhtml:not([data-theme]) {\n @include theme-colors(\"light\");\n}\n\n/* NOTE: @each {...} is like a for-loop\n * https://sass-lang.com/documentation/at-rules/control/each\n */\n@each $mode in (light, dark) {\n html[data-theme=\"#{$mode}\"] {\n @include theme-colors($mode);\n\n color-scheme: $mode;\n }\n}\n\n// assign classes too, for runtime use of theme colors\n@each $col-name, $definition in $pst-semantic-colors {\n .pst-color-#{$col-name} {\n color: var(--pst-color-#{$col-name});\n }\n}\n","/*******************************************************************************\n * Special-cases for the sphinx-design library, mainly to make it compatible\n * with the dark/light themes of pydata-sphinx-theme.\n *\n * NOTE: sphinx-design uses !important quite liberally, so here we must do the\n * same for our overrides to have any effect.\n */\n@use \"../variables/color\" as pst-color;\n@use \"sass:color\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"sass:string\";\n\n/*******************************************************************************\n * Color and variables\n *\n * This is a list of the semantic color names from sphinx-design (we only\n * need to override variables that sphinx-design has actually defined).\n * https://github.com/executablebooks/sphinx-design/blob/9226a12a/style/_colors.scss#L31-L43\n */\n$sd-semantic-color-names: (\n \"primary\",\n \"secondary\",\n \"success\",\n \"info\",\n \"warning\",\n \"danger\",\n \"light\",\n \"muted\",\n \"dark\",\n \"black\",\n \"white\"\n);\n\n/**\n * Here we create some extra --pst-color-* variables and use\n * them to override the value of the corresponding sphinx-design variables.\n * This is easier than re-writing the sphinx-design rules. Even easier would be\n * directly assigning our values to the --sd-color-* variables, but then our\n * downstream users couldn't override *our* colors and have it affect buttons\n * and badges.\n *\n * First, define the extra keys needed to cover the full range of semantic\n * color names used in sphinx-design, then merge them with the names we\n * already define for our own needs.\n * see https://sphinx-design.readthedocs.io/en/latest/css_variables.html\n */\n$extra-semantic-colors: (\n \"white\": $foundation-white,\n \"light\": (\n light: $foundation-light-gray,\n bg-light: color.scale($foundation-light-gray, $lightness: 30%),\n dark: $foundation-light-gray,\n bg-dark: color.scale($foundation-light-gray, $lightness: -30%),\n ),\n \"muted\": (\n light: $foundation-muted-gray,\n bg-light: color.scale($foundation-muted-gray, $lightness: 30%),\n dark: $foundation-light-gray,\n bg-dark: color.scale($foundation-muted-gray, $lightness: -30%),\n ),\n \"dark\": $foundation-dark-gray,\n \"black\": $foundation-black,\n);\n$all-colors: map.merge($pst-semantic-colors, $extra-semantic-colors);\n\n@mixin create-sd-colors($value, $name) {\n // define the pst variables, so that downstream user overrides will work\n --pst-color-#{$name}: #{$value};\n\n // we are now using a11y-combination to calculate the text color - this is based\n // on the WCAG color contrast guidelines\n --pst-color-#{$name}-text: #{a11y-combination($value)};\n\n // highlight is used for hover effects on buttons, here we make some fluid scaling\n // to avoid jarring effects -- we create a local variable that we can access\n // later to calculate the text color\n $highlight-color: color.scale($value, $lightness: -15%, $saturation: 5%);\n\n --pst-color-#{$name}-highlight: #{$highlight-color};\n\n // override the sphinx-design variables\n --sd-color-#{$name}: var(--pst-color-#{$name});\n --sd-color-#{$name}-text: var(--pst-color-#{$name}-text);\n --sd-color-#{$name}-highlight: var(--pst-color-#{$name}-highlight);\n\n // calculate the text color for the highlight color\n --pst-color-#{$name}-highlight-text: #{a11y-combination($highlight-color)};\n}\n\n// Now we override the --sd-color-* variables.\n@each $mode in (light, dark) {\n @debug \"Creating color variables for mode: #{$mode}\";\n html[data-theme=\"#{$mode}\"] {\n // check if this color is defined differently for light/dark\n @each $name in $sd-semantic-color-names {\n $definition: map.get($all-colors, $name);\n\n @if meta.type-of($definition) == map {\n @each $key, $value in $definition {\n @if string.index($key, $mode) {\n // since now we define the bg colours in the semantic colours and not\n // by changing opacity, we need to check if the key contains bg and the\n // correct mode (light/dark)\n @if string.index($key, \"bg\") {\n --sd-color-#{$name}-bg: #{$value};\n\n // create local variable -- needed to calculate the text color\n $value: check-color($value);\n\n --sd-color-#{$name}-bg-text: #{a11y-combination($value)};\n } @else {\n $value: check-color($value);\n\n @include create-sd-colors($value, $name);\n }\n }\n }\n } @else {\n $value: map.get($all-colors, $name);\n\n @include create-sd-colors($value, $name);\n }\n }\n }\n}\n\n// Make sure the color border variables are set using our variables\n@each $mode in (light, dark) {\n html[data-theme=\"#{$mode}\"] {\n --sd-color-card-border: var(--pst-color-border);\n }\n}\n\n/*******************************************************************************\n * shadows\n */\nhtml[data-theme=\"light\"] {\n .sd-shadow-xs,\n .sd-shadow-sm,\n .sd-shadow-md,\n .sd-shadow-lg {\n @include box-shadow;\n }\n}\n\n/*******************************************************************************\n * cards\n */\n\n.bd-content .sd-card {\n border: 1px solid var(--pst-color-border);\n\n .sd-card-header {\n background-color: var(--pst-color-on-background);\n border-bottom: 1px solid var(--pst-color-border);\n }\n\n .sd-card-footer {\n background-color: var(--pst-color-on-background);\n border-top: 1px solid var(--pst-color-border);\n }\n\n .sd-card-body {\n background-color: var(--pst-color-on-background);\n }\n\n // Focus ring for link-cards\n .sd-stretched-link:focus-visible {\n // Don't put the focus ring on the <a> element (it has zero height in Sphinx Design cards)\n outline: none;\n\n // Put the focus ring on the <a> element's ::after pseudo-element\n &::after {\n outline: $focus-ring-outline;\n border-radius: 0.25rem; // copied from Sphinx Design CSS for .sd-card\n }\n }\n\n &.sd-card-hover:hover {\n border-color: var(--pst-color-link-hover);\n }\n}\n\n/*******************************************************************************\n * tabs\n */\n\n.bd-content .sd-tab-set {\n > input {\n // Active tab label\n &:checked + label {\n border-style: solid solid none;\n border-color: var(--pst-color-primary) var(--pst-color-primary)\n transparent; // top LR bottom\n\n border-width: 0.125rem 0.125rem 0;\n border-radius: 0.125rem 0.125rem 0 0;\n background-color: var(--pst-color-on-background);\n transform: translateY(0.125rem);\n color: var(--pst-color-primary);\n }\n\n &:focus-visible + label {\n border: 0.125rem solid var(--pst-color-accent);\n border-radius: 0.125rem;\n background-color: var(--pst-color-accent-bg);\n color: var(--pst-color-on-surface);\n }\n\n // Hover label\n &:not(:checked, :focus-visible) + label:hover {\n border-color: transparent;\n color: var(--pst-color-secondary);\n text-decoration-line: underline;\n text-decoration-thickness: $link-hover-decoration-thickness;\n }\n }\n\n // Tab label\n > label {\n color: var(--pst-color-on-surface);\n border: 0.125rem solid transparent;\n border-radius: 0.125rem 0.125rem 0 0;\n background-color: var(--pst-color-surface);\n padding: 0 0.75em;\n margin-inline-end: 0.25rem;\n line-height: 1.95;\n\n html[data-theme=\"dark\"] & {\n background-color: var(--pst-color-on-background);\n }\n }\n\n // panel\n .sd-tab-content {\n border: 0.125rem solid var(--pst-color-primary);\n border-radius: 0.1875rem;\n box-shadow: unset;\n padding: 0.625rem;\n background-color: var(--pst-color-on-background);\n }\n}\n\n/*******************************************************************************\n* Dropdowns\n*/\n\ndetails.sd-dropdown {\n // Remove all borders to over-ride SD behavior, and we'll add our own later\n border: 0 !important;\n\n // Drop shadow should behave same as admonitions\n @include box-shadow;\n\n // Header is where the \"clickable\" box goes\n summary.sd-card-header {\n border: 0 !important;\n display: flex;\n align-items: center;\n position: relative; // So background color works\n font-weight: 600;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n\n // Set a variable that we can re-use for colors later\n // We must set this in the current and content sibling container\n // so that it is defined in both places\n --pst-sd-dropdown-color: var(--pst-gray-500);\n --pst-sd-dropdown-bg-color: var(--pst-color-surface);\n\n & + div.sd-summary-content {\n border: 0;\n\n --pst-sd-dropdown-color: var(--sd-color-card-border);\n }\n\n @each $name in $sd-semantic-color-names {\n &.sd-bg-#{$name} {\n --pst-sd-dropdown-color: var(--sd-color-#{$name});\n --pst-sd-dropdown-bg-color: var(--sd-color-#{$name}-bg);\n\n // Otherwise it won't be defined in the sibling element\n & + div.sd-summary-content {\n --pst-sd-dropdown-color: var(--sd-color-#{$name});\n --pst-sd-dropdown-bg-color: var(--sd-color-#{$name}-bg);\n }\n }\n &.sd-bg-text-#{$name} {\n // Use the WCAG conformant text color\n color: var(--sd-color-#{$name}-bg-text) !important;\n }\n }\n\n @include legacy-backdrop-placeholder;\n\n background-color: var(--pst-sd-dropdown-bg-color) !important;\n\n // Add a left border with the same structure as our admonitions\n border-left: 0.2rem solid var(--pst-sd-dropdown-color) !important;\n\n // stylelint-disable-next-line no-duplicate-selectors\n & + div.sd-summary-content {\n border-left: 0.2rem solid var(--pst-sd-dropdown-color) !important;\n border-bottom-left-radius: calc(0.25rem - 1px);\n background-color: var(--pst-color-on-background);\n }\n\n span.sd-summary-icon {\n display: inline-flex;\n align-items: center;\n color: var(--pst-sd-dropdown-color) !important;\n\n svg {\n opacity: 1;\n }\n }\n\n // Positioning of the caret\n .sd-summary-up,\n .sd-summary-down {\n top: 0.7rem;\n }\n\n @include hover-darken-lighten;\n\n // Focus ring\n &:focus:focus-visible {\n outline: $focus-ring-outline;\n outline-offset: $focus-ring-offset;\n border-radius: $focus-ring-width;\n }\n }\n\n &[open] summary.sd-card-header:focus:focus-visible {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n}\n\n/*******************************************************************************\n* Buttons (which in Sphinx Design are actually links that look like buttons)\n* ref: https://sphinx-design.readthedocs.io/en/pydata-theme/badges_buttons.html#buttons\n*/\nhtml {\n .sd-btn {\n min-width: 2.25rem;\n padding: 0.3125rem 0.75rem 0.4375rem; // 5px 12px 7px\n\n &:hover {\n @include link-style-hover; // override Sphinx Design\n\n text-decoration-thickness: 1px;\n }\n }\n\n @each $name in $sd-semantic-color-names {\n .sd-btn-#{$name} {\n &:hover {\n color: var(--pst-color-#{$name}-highlight-text) !important;\n }\n }\n }\n\n @each $name in $sd-semantic-color-names {\n .sd-btn-#{$name},\n .sd-btn-outline-#{$name} {\n &:focus-visible {\n outline: var(--sd-color-#{$name}) solid $focus-ring-width;\n outline-offset: $focus-ring-offset;\n border-radius: $focus-ring-width;\n\n // Override Sphinx Design's use of -highlight colors. The -highlight\n // colors are 15% darker, so this would create the effect of darkening\n // the button when focused but we just want the button to have a focus\n // ring of the same (non-highlight) color.\n background-color: var(--sd-color-#{$name}) !important;\n border-color: var(--sd-color-#{$name}) !important;\n }\n }\n }\n}\n","/**\n * Sphinx togglebutton\n *\n * The rules in this style sheet are meant to tweak the\n * [sphinx-togglebutton](https://sphinx-togglebutton.readthedocs.io/en/latest/index.html)\n * extension so that it matches the look and feel of this theme.\n */\n\n.bd-content {\n @mixin chevron-down {\n .toggle-chevron-right {\n transform: rotate(90deg); // point chevron down\n transition: none; // match non-animated behavior of other chevrons on site\n }\n }\n\n @mixin chevron-up {\n .toggle-chevron-right {\n transform: rotate(-90deg); // point chevron up\n transition: none; // match non-animated behavior of other chevrons on site\n }\n }\n\n // Apply this mixin to the element that will be hovered. These styles are\n // intended to match what sphinx-design does for its dropdown admonitions.\n @mixin icon-hover-effects {\n &:hover .tb-icon {\n opacity: 1;\n scale: 1.1;\n }\n\n .tb-icon {\n opacity: 0.6;\n }\n }\n\n // Collapsible admonition, implemented as <div> + <button>\n .dropdown.admonition.toggle {\n // The title is visible when the admonition is collapsed and expanded\n .admonition-title {\n @include icon-hover-effects;\n @include hover-darken-lighten;\n\n &:hover {\n box-shadow: none;\n }\n }\n\n button.toggle-button {\n color: inherit;\n\n // When disclosure widget is closed\n &.toggle-button-hidden {\n @include chevron-down;\n }\n\n // When open\n @include chevron-up;\n }\n\n // Focus ring\n // ----------\n // Sphinx-togglebutton makes the entire admonition header clickable, but\n // only the button within the header is focusable. But we want the entire\n // header and not just the button inside the header to be surrounded by a\n // a focus ring.\n &:has(:focus-visible) {\n /* Override Sphinx Toggle Button. Make the overflow visible, otherwise the\n focus ring is hidden. */\n overflow: visible;\n\n /*\n Why not just do the following?\n\n ```\n .admonition-title {\n outline: $focus-ring-outline;\n }\n ```\n\n Why use ::before? If we put the focus ring on the ::before pseudo-element,\n we can reposition the focus ring by repositioning the pseudo-element.\n\n Why reposition? The left edge of the admonition title box does not align\n with the left edge of the overall admonition box. There is a left border\n that belongs to the overall box. The border is outside of the admonition\n title, which means it is also outside of a focus ring around the title. We\n can make the focus ring bigger, with `outline-offset`, but this will\n result in a ring that looks off-centered. So we have to pull the ring left\n and stretch it right. That's what the pseudo-element allows us to do.\n\n Note: we do not have to do this for collapsible admonitions made with\n Sphinx Design (as opposed to sphinx-togglebutton).\n */\n .admonition-title::before {\n content: \"\";\n\n // pull the focus ring left and expand it right to be perfectly centered\n // between the left border and the right edge of the admonition title\n left: -$admonition-left-border-width;\n width: calc(100% + $admonition-left-border-width);\n height: 100%;\n outline: $focus-ring-outline;\n outline-offset: $focus-ring-offset;\n border-radius: $focus-ring-width;\n }\n\n // When expanded, sharpen the bottom left and right corners of the focus ring\n &:not(.toggle-hidden) .admonition-title::before {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n }\n\n // Collapsible component, implemented as <details> + <summary>\n details.toggle-details {\n // Over-ride border color to re-use our primary color\n summary {\n border-left: 3px solid var(--pst-color-primary);\n\n @include chevron-down;\n @include icon-hover-effects;\n @include hover-darken-lighten;\n\n &:hover {\n box-shadow: none;\n }\n\n &:focus-visible {\n outline-offset: $focus-ring-offset;\n }\n }\n\n // When expanded, sharpen the bottom left and right corners of the focus ring\n &[open] {\n @include chevron-up;\n\n :focus-visible {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n }\n}\n","/**\n * Styles for various Sphinx execution libraries to display pre-executed notebooks.\n * For now, where these define output sections, we simply revert their background\n * to be a \"light theme\" background. This ensures that inputs/outputs behave similarly,\n * because the CSS is often controlled by each package.\n * In the future, we might add dark theme support for specific packages.\n */\n\n/*******************************************************************************\n * nbsphinx\n */\nhtml div.rendered_html,\n// NBsphinx ipywidgets output selector\nhtml .jp-RenderedHTMLCommon {\n // Add some margin around the element box for the focus ring. Otherwise the\n // focus ring gets clipped because the containing elements have `overflow:\n // hidden` applied to them (via the `.lm-Widget` selector)\n margin: $focus-ring-width;\n\n table {\n table-layout: auto;\n }\n}\n\n.bd-content .nboutput {\n .output_area {\n &.rendered_html,\n .jp-RenderedHTMLCommon {\n // pandas\n table.dataframe {\n @include table-colors;\n\n tbody {\n tr:hover {\n background-color: var(--pst-color-table-row-hover-bg);\n }\n }\n }\n }\n\n // Dark theme special-cases\n html[data-theme=\"dark\"] & {\n &.rendered_html:not(:has(table.dataframe)),\n // ipywidgets\n .widget-subarea {\n @include cell-output-background;\n }\n\n &.stderr {\n background-color: var(--pst-color-danger);\n }\n }\n }\n}\n\n// Add extra padding to the final item in an nbsphinx container\ndiv.nblast.container {\n margin-bottom: 1rem;\n}\n\n// Override nbsphinx's colors for notebook cell prompts because they do not have\n// sufficient contrast. Colors chosen from accessible-pygments\n// a11y-high-contrast-{light,dark} themes.\n\n// Notebook cell input line number. Replace nbsphinx's low contrast blue with\n// higher contrast blues.\n.nbinput.container .prompt pre {\n html[data-theme=\"light\"] & {\n // Copied from accessible-pygments [a11y-high-contrast-light](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/a11y_high_contrast_light)\n color: #005b82;\n }\n\n html[data-theme=\"dark\"] & {\n // Copied from accessible-pygments [a11y-high-contrast-dark](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/a11y_high_contrast_dark)\n color: #00e0e0;\n }\n}\n\n// Notebook cell output line number. Replace nbsphinx's low contrast red with\n// higher contrast red / orange.\n.nboutput.container .prompt pre {\n html[data-theme=\"light\"] & {\n // Copied from accessible-pygments [a11y-high-contrast-light](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/a11y_high_contrast_light)\n color: #a12236;\n }\n\n html[data-theme=\"dark\"] & {\n // Copied from accessible-pygments [a11y-high-contrast-dark](https://github.com/Quansight-Labs/accessible-pygments/tree/main/a11y_pygments/a11y_high_contrast_dark)\n color: #ffa07a;\n }\n}\n\n/*******************************************************************************\n * myst NB\n */\n\ndiv.cell_output .output {\n max-width: 100%;\n overflow-x: auto;\n}\n\n.bd-content div.cell_output {\n // pandas\n table.dataframe {\n @include table-colors;\n\n tbody {\n tr:hover {\n background-color: var(--pst-color-table-row-hover-bg);\n }\n }\n }\n\n html[data-theme=\"dark\"] & {\n img,\n .text_html:not(:has(table.dataframe)),\n // ipywidgets\n .widget-subarea {\n @include cell-output-background;\n }\n }\n}\n\n// Prevent tables from scrunching together\n.bd-content {\n div.cell_input {\n display: flex;\n flex-direction: column;\n justify-content: stretch;\n }\n\n div.cell_input,\n div.output {\n border-radius: $admonition-border-radius;\n }\n\n div.output {\n table {\n table-layout: auto;\n }\n }\n}\n","/**\n * style for the various mapping libs based on leaflet (folium, geemap, ipyleaflet)\n * mainly ensure the good display of the maps in both themes and avoid the customization\n * of the tiles\n */\n\n/**\n * avoid border override from pydata-sphinx-theme\n * minimal selctor to get the priority\n */\nhtml[data-theme=\"dark\"] .bd-content img.leaflet-tile.leaflet-tile-loaded {\n border-radius: 0;\n padding: 0;\n}\n","/**\n * /search.html page special-cases\n */\n\n.bd-search-container {\n /*******************************************\n * Search results\n */\n // Whitespace\n div#search-results {\n > h2 {\n font-size: var(--pst-font-size-icon);\n margin-top: 1rem;\n }\n\n p.search-summary {\n color: var(--pst-color-text-muted);\n }\n }\n\n ul.search {\n margin: 0;\n list-style: none;\n\n li {\n background-image: none;\n padding: 1rem 0;\n margin: 1rem 0;\n border-top: 1px solid var(--pst-color-text-muted);\n\n // First link is the page title, it should be a bit bigger\n > a {\n font-size: 1.2em;\n }\n\n div.context,\n p.context {\n color: var(--pst-color-text-base);\n margin: 0.5em 0 0;\n\n // Add a # before page section titles to make it clear they are sections\n a::before {\n content: \"#\";\n padding-right: 0.2em;\n color: var(--pst-color-text-muted);\n }\n }\n }\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/_static/styles/theme.css b/_static/styles/theme.css new file mode 100644 index 000000000..4519dd912 --- /dev/null +++ b/_static/styles/theme.css @@ -0,0 +1,2 @@ +/* Provided by Sphinx's 'basic' theme, and included in the final set of assets */ +@import "../basic.css"; diff --git a/_static/vendor/fontawesome/webfonts/fa-brands-400.ttf b/_static/vendor/fontawesome/webfonts/fa-brands-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1fbb1f7c32d46f5dcb89a50e10d00878ed43f1a1 GIT binary patch literal 209128 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%0AUSgWHQiFZ4^`_co**CW&|kdjzuG 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%0D!-`IFTHp4 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 JOba38zW{E)cm@Cf literal 0 HcmV?d00001 diff --git a/_static/vendor/fontawesome/webfonts/fa-brands-400.woff2 b/_static/vendor/fontawesome/webfonts/fa-brands-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5d28021697ff1f32507b1bcbcbf9e6a41d0ac99f GIT binary patch literal 117852 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%0DxnTep24BZG z8VtI<IEvz4cQA-zd`8XnJhzs5p68`LcpiY~K^LWAP~l4EICj|38c`d776Kr6l6$rt zH4TlhD*&9SN+onCMWnPtk)~>InNvXsA@blqiG>&8F)}8{$vJW#`4RG7@+m^9S&?U1 zIVkd~Di_tXTvS!LD8|{i%t{fbh?8`}Hpo=vY#xq9it)G{uawAgDu<wPHp(@%`GKV6 zIF8bBOgtNwvyx_0-%AI~ATA@s7mrI=Zni3X&*#~=<dv)zQ`{MKQW}-=JeyR1h5+w2 zgkVise>X!D7`%JXXc|rJ1#N_Pb1<(5z-11}^x@fT)}6u{&}ELdvt<r<{KoR~GDiad zaGAf(LAAWR%;Ao8>Ib_21H&)?=n6xVEpt4K07@AT))4qIMU3PAL#<j3fGq>Slpir6 zyZ#Se`ZJ90e+Vc5gS%k=N#M(ib=jdjZwBmtmc4s<c^OzKp7Jc&V+lF<J|bKub8<C# z8hMHGhAIl$Hk}V4m#1Y>g3Ih;*w<3om`~DD=0%?M?>F#aB`(;Ub4`Y@7RlE=M>$<` zaIs7H+d4v{zO?_TrFsLPQD17;wbr(+&)ssRCIQx`>g}a^0fu(=FFS_Th68(!p<(|A z8bE8;(T1TN$N2oLog7yipbf{-a7(lJpGEI+WA(R+W*r*Jv6a@RPHC-dM>U{++SOWX z_lu690kq+KaaBA0LQnPbNfUl>K(4~q!C7(}d4#-_ypepEkdcVQ+pKRbVjrW*vMd+X zc%GF5mk#%UiB#l;6xp~G*;q>$3LGU^$MXS7n@r0|j4*GK^ZKGJOGRn`b!PaEk)zqX zEYS)>qMCkI&gSrT&JE4EkieMGokq_xgMLgYz+nw$%?iW=((P5_<&jkDoi(L6TkWTc z>)zHzKH$7NSghrBlZyRI2omtQAON4YIsJL_tw`}*R|1{{fTIWu{*?zox@Iz^{6>9* zKLkLEfQUjeCy4XNwkfMIh5%X_hF};)tJ-MP*N?3B6hbp<o5s45&Bp3%Y0WSiUW)+- z4X6;>paB#%0Z<{T003#tG`U_6d{3Env;+WzP(lvA00(fH#AKD+PDr&-y&8NP-oI8< zh50Pwf1ojaF;U36#VN?9WfDhHvatfdA7K;@Sl_Fs|74g~Ctdg6TDM!f&*-FA#insp z(lzd@b-T5D-EMOAkH_9smg`toyUA!LNp?nwd$r}d=2c$YJCvq}dhgTv>KN`#lKYaY zu2Aag<lZ#BH@W&M_i6*cxY|8b>vn60+^bFVDi;pby4~6#LJ2wGUc@%(@VR|il7r|4 zMrjGTnKT5gDILyKiOXqO{?R||U!?2nRlQnYqrdQ?I#lcHbpPT%z~zgJ;Sew5aJazX zaIrrXUevW9zT!!pL4H3GmrfPEvR*cjk`oAw9l3N8M>5N@*N?{I(d%D-$WU(#2K9Qq zJ{UA=HHcTZK$gA!9ktp@)OC*ed%OrgPNw8aawj1p6{}{%<FMrY=vctm9TfSTr{*S} z1_u=j<tXR)1yZoSS+%Ij6q$$yQXT!jG9*=r7u&7*`e3lulY%kNb)n3%yy|qJR$E@4 zkFqRp_Ikx+dAU}D{SS0&^;);la9zN094CbzbpB-wkPYUWW5>-`qBwrlsbUGb-7Dv& zDMho{#GBe}S`;VF9X(nU7{}wHUI)lWM~+<eBO87I(CLiF^D6+8_y{zco4=1|@7X&_ zuZinNPNg*@gb;qPfABec6<j7c*(N8+wd4*$pe)NI4a>5OOIgZNP@XbHQ5NN#1e%mI zE%^UhxfK~&(y|yuRx+}z%Az9k<V8`G6;F$l7WxG<O-l(YmUx`5Qp2!LowN;uuF}Va z^~P7f`qfgs`qi304#r(~-F3wiz15E|FE3Nh#AdL+-0St8U|i^*Sb@u6?*ASbKV=C? zU6)E>{geSPGhzR8MNz!$r9~a~_AfV{w!FOj@6Wn-<?5@i7K~wf{Eg3f&T}Btg3}xC zA>!Z%2bWR8WpaVMl6(c~umg7!k|t6}QLq$8P0~p@Nt0=kMp+)v_aFw<h{dihQ*z7I zdR|)2$FdhlleDA)&+es>jIygP%vIB1yxf*_Wh6^Zr_KYs@S~D(k<U4n2%R07O&8Ne zEpQ!{53)g#XZd_E&x<j_^|MME%K9zk^I4gJf?L4yuy+>an$PlV6>c%|wgZ3JSNZjw zE~?42<o)4T@2JH0mOiIh%3*q#mK}{_YbkwNDupcnh;?%!yL)@fFwb6bFK2TNLLCq( z@+!*#*8nL6q_9RqB{kJ=-aDe?v^LCE7+nVJ`a$4#830hm=`fC>cnGw#D<c8|;70*^ zf$s-Bc(AyW$Is$0j59<^865-AzIkgy>t653(JQbfW9rBN7^8HJGC{wN1z=dedGCl8 z)7g!P0KcPaDn(p|F=LFLW)Rw`c(eylFaSy!XJdFhXC*+nmZM+fn=S{TPJr~9>+Zex z_+DMx_&}qAXq6aolQ1*`*kp`TN*lNG!@D=%d}ffQ1~7OALelT&d2f&)rwka<T3)QK z7J03nC})TLeE@*CKN#ixLEIt<0EGil+@_lsHF!WXmQ#S2#wQP*J9py5Qc<DZ1LD&f z2n;!=o0M)+&XEB&Zsv!N+;sDq(@}Gv37<WH|12{EdWtbl89UPGk6M&*MgeFxz6rB( zoKc{sDQ6TYJ=*9G+mtiL^yj}n!-MZ(4?ai=axEdSxZ-)Yi8DB#mMmgi`Nca6Q53np z<Dw`5H*+1<3vaOW(LujIII0X&{SOVGm2Ih?xd6@P#6XnN`UA^2+VA)KNA+5zTG^KV z=?l<oOw4aJ!6gvuTU)zFx3<;=fckZ9Sz7CloVs~qZFMLu%P{Ev-rqmpqq{ZTI9^-J zq-B|!5~7HE@O$u&aG5C5BwOSdxq{q7euTU$dxV6m!^jH`I>dImsDdcLecmqeLiy8P zRHK;qLXz@Q0(rBIV6)sjNrfz>STg|20j)#6*pot*eM1O7AI5|INh*r+?*Ob@1J`<f zt>$~LK0nk3;>9!y2ZNQB&CQk7{veF#i^U+@*vR&O0C7YijuD=XQH&Tz_>yLpH5($S zJ9ZQ~c0Cb|zwh^{Qrgg3D#igR3ZcBHDTN>O;kLdX2-%E0pL4?q17Fd8A3ho(MloXi ze`~(y`BmDB+q)YZE6cr}@B4nQx4g2k(d__qz7|uAVuT1{I1alZziAm9ODW~XAbq`Q z)l!B~2dUFj<AIwF2HlQjb-IH=>V`%T`ab76t=X1e#Bt3|5m_czkPC!V(`@ROV$|R{ z<?%eu^o~REdxNg68SF6ZZ-vzi-hLJHdwRXz#a^!mmoD~tz24>Cyeap3y}iA?y~_vW zQm@y$=hCH1Kzh9%^!6|Ida(ZD-rk<3`1s3kiPXtqCG9DI|F!*8$Z46RQ8ptRE6L)l zoIf6y&lgpa>aZIyHQD~<+ra!y3!vKtuzsUwV6BEK+jR+*-_>5~O0XzBb&668dc9AA zvTKO7dOrFG2nl`PuOhlw<pU60t!qnJ%5p5nWhWIDiL;tj)otrSAmt~igAVf`3C1|Q zJZDM{1_!vS^J{BspruMqEr3x@s}qnYsbL)`HFPl4ar<SR4(13&N-<crb+d(@wEfs) zk3pl^@TbdwfXh?A(QLqDtgwXMaR)WY#~~wx*w+>9!qvTi{0Mm)`91P=@?G-R<UhfH zj1W1Uxs9dgcLl+>k>1|zc|NzJI`+1+ld8z)iz$(P?IMljpqN$MoC<@|XHk|C39&(7 zR#ukdGMPqlTo(U)k(0qvSr%n64s54oiUOyyETd9qH6j*L6ytJ`jYmDEW=pA%0}EzG z+Px&@xh&j|7GuZKypqv0nJ=<IJk`0h(#6Q8tjLRWnoTG3MX{lmQPe#t@_BClvy(WH z<7}L^=D+-dpE!2YjeC17#u_8TZg#=8J<IbXfbcxa61rY*calg7=-3to!D~w0Ly<B7 z_J<TGB858+VG#6vBThU3W%^;rm}Ln7*agl3IEP)+G^wyH%Iz&nNCwKbGyn)n-EcS> z7L?imGJr5{CaFRg3=VCdz2?aNCn#k|DMPRrMMf#ozd;I=-st<Z=h#wf)#-X3-U<Mm za%3DSa)SW?P)ZphAP090u(@#+MKv;HU_cUgJC+TAXqt_d5K6gjtCglelQ@*xcO1YP zFp8AH-M}bN3Rj=HXS%kYjrv}idH}Yzq9|_G>IO3UQ4YX40N)itSSB7~lL!6^Th%Q9 z;8c~cs2@E7`qP_xJ7!f4#d49=)hnL)tjz|v`xQbgOw6A^Y>0&UE`yn_vVf3ft3Jy^ zmS-2GNmBtC>kO`$Fcy0RVF*K)f9#8rWbTLlKE|-u&M>mx(gzGY6M_%GB~ZMc;?Am# zpYyC|J<H~KR~LCvHO=|@0#{d$p8W95!v*n%M^{%^>#3ZbZ#UJ~_I-a=)y{<?1fYE0 zczK0qyr;OjdbD2yqU~qCX`Y`XNl2QfKZhT|Pti;1HS})!AblBqJ^d*C4E+-Q5&dP7 z+?kFxPQz~ADmPEC(;VaDIC-W%M(;E;k1@sx{Xt%e*mm>0C9Af-ukuYBW7CdpyVZNp z^fq>V6Cd(jzl~kr?W1}--VEKEZd|TA0KKqPU)RsE>G{!W)s5l6o-Xaj{TRo6*Y9jZ zM%USw9pgni4!e0bPs1FiImTmbFn%8o+3?)-N_(?BZrsN>%{ote8`Vx&ZN8h;KA!h+ z+V_E;^Khdl`zA&lF+UBPIL7g~S?k1It9`fa`aumVy4WYM+IPno$9Oo-lbSfjHjb@U zE!DVdo1ntD7^l5j?RUdrhya^FWWRAt;xu}9)V_&h+u7-O!0zIHh!ot|PQ$q&51~06 ze55qS7>|wOCf|~(xIVSoANJ=r8sqD9I(B{69&E$RG&ffJ*5TZR{b4_iOkKcEGSl%8 zrx@XjV~o+zk=pKtuHOw~JjRY9)?w})OQ!j8tAka0sPTv~ZjOgp?bx2TSZx#FPNMB* z!M5({@&`s!W_FHo?)pBJVQC-RS?x5>cgB6Sdv+5?TU?dtXw@E$G4AHZjxplnjRc}b z;;uhkot@V#FjS}-Q?hqXMXe1aqE+8HF~(Av)Hxv)*|0E+SXN}r2IN$oD^@Lcq}E8v zD2)-D7Y?wY>s;5y>zmbzC{bNoGnvoX8iw})UXU*q6|8dZoQR|blBNg>n<2HZ)@6nu z0ZbkWth>$^ld}vm#=*6TMEs;KLBx&f0;I0ycL+e3VWCjZqy#Wqwa<DnpBIHPNzk%d zF3ZZ5UE8%GBY<w--k}m!GAzzHKWtZkSOB<ucMvQJn}%Sy-fmA;C$D!&ZwQ1OlLIpx zgq{&nHr^P0yJ4_cB_>NkFpPiXJP4kA5{XPINdS@JH`3BKjrZHji#*__a7V!yos11J z2aq^)U4hJJ-n!AyY}&R>a{`1b7Kqf=*K7nNsZR+E@fD1!3b8sP&KjUC$7??9j>l(L zWv6^{2T(;$mDIte-oqIQ-dkoP9x*P41k8d9_t=8v@|cno#d>|=2*xdz?295Z1fo>f zq<Sfp3D{5#K-1<-C6vPM_Ln&-fabxfRC(%c0l+g1oSOS5;AYidlSAqAG==k_U{2Gf zT><=Py)MZp8-jq;T7UorJQD%H?>_lmHGr>z*BlOKW$DR%G{GP>+Gi<&DX_p08B)6e zix5%p3S+GUvw9<zoC9u7R^6IEngc+p*Xo$W6D2medirzt2mD;}`N>x$-<kY)^2^EZ zB!8VGccyucR<>{dxS!)>_p{c<u^n5ah>^5@t9H|Fw)2oHi_sS8WVJT{^udRAnN&bF z@9K6lC?a*AAq-5b@R(&${O{fN(>yf$ah~Rb)wVxuH+Ew;ZL{CU={O&DJ-+SZ7$3)R zo{qhpZPyo=4#Rf8)%`VWHCo$kG7feqS3Bb?m_3*XMp-TaBSvlsgA-aXo$lJbm-gi0 zgX1e79I5Z_cYVKJUrzl(`ql0Js=6`5X1slV&M1qFXyZgzySapE7mKT5ebP4fo^yF7 z%<rdDpeh|+G8wV-h8bdj)PK{(#RcO6mYVXEPCh&f{pQYU*(^;wS?_i)I^4d!EafAJ z1dS;%bQTW*rBt=Ry+{E7Z8Ng(8H~C`6hUuvgs<cyM<^W+T|R0yZDpG6i7tEXIL?h$ z6hV&*#sNA=1q*96-%D%#W}I05@^Ay;C!q$w90vpd002geA**wV((vMDvx(STS~<bm zb(HJ0?kb6c?&@Z<8HAl$JrCYx4xWTxgin%N$+HL<O-2Dk8=3Xc^mEKYaxPh_Y0q6P zqE$SdD+4KHk-fxb>MZcJ5YYc3E=5|xRe*qNfyG!hy&WE|N`SI@7#`Vb*~><<cGFF( z1wgTS(-lRHQe`9}Y-|o&T?+NadauPyw+puGm|5o#+@s)q;Q3J$_&lmf*|Tl@BLIk( zT17FM!>J?BeCCl;0H+3HBX2GM7Lz;goGf6u-e`o0y;Scb2FYlYrVLnO2V8iyHJ}fl z3bY2tS?7S3?GQ?c&;8(^MPB*cwB(&iKP~kR!8>Au8+$)oWM%#>NzzjCcj79~?rVhf zPM^8%pXL2k$JCUjgWWU39zbt&`phU)P3g1`ZMT}u)^^!+DGK2-+wa!G7$NXGae&f{ zAoS8GhdqvX)-f$=dz>Xo1DK`*a0!B-x$h7EtLz`Sjj++EXRxt+_U!WJM%t5&AOpw- zM~?J|(DDM`c68HA5G=P|^IQb#Y7;Q>+JL74PHLk=QE6=p0qs0I$=Y%%WJ5XkR5RtU zW*)+tX_=N)IhEYhw^&a1TIhQUSbpfChhBR3l{alZ=LPqjxOOxD=tn==`gjA}_#}11 zi(d4i58ij*kG|)&+y47c|MXA)lptvyd>{TA-cD+yPY6u2sVr+!JDp}zT4rSkuQ_w( z%zJ<Bt<U+<Ge7-{?|9&``qI+U4_6N0?VtSqJKpixzj)1S_TLEC?Emsdte%7*Y2(Y` zY2*p=QSv{?mk5FJe}V574PqNF?mT%lE{k7bBu-f{k;F!sKSb_P_yP;lGS6xz(~SlD zF0+_V=CdpoEt#92a9l=3UL@6`8qf7KX_04R8AmWNY8$)nn$q*4EM@o3E{P*q!XN8m zX<RI-E5Yw}B2FpiR%>!97E;!tAhcot$99x55d`OeDAAVHCylz&j@RpjVXeO1=ybdd zA;f6lx{9(gMrJ#)<Co0_1pfLB0i@%2akD89<zBBFP%xCzQM+BMQFuKDVHf}eQ4ow= zt)y~2t)%jpX<8QC3QAFG7?f$X2D;hUG@>vG{erXYs8(}LP;NaoOr(~k6p&J-83z`} zQ9x<G==UY7)u&#qPQmjcC0or9DFXn@q9_Cf3QTZ7(_+9_ungz{u*`M2DHY>zWo&B0 ziW9>yt+)lY?bu*Bw$lbF0i*;%C?VtmUW7f;B*(~Igg}y(Wg<WzrD`cJ%969;G6G;X zj?ywmzvL)hS<Gie37G|J!b-dN-6V8MQBV7WlmR~oy+*_H0er7f@8a+D8ci<<z^ga9 zIKBCIRyEu27WQD!pHBJ%aNR~T%UV!(9dO-7E6bW#`*iAMYhciyO#1`4KMJ<tA!Blm zw7?(_4|aH4pR-COJNv5ntjddNy2A&KBe{_1DBqb<Ya3j&8wJDg%J2VeCyW51uv0_; zh8Y(xDk8&-i&>m7>u$ifd~fhR2%}CX3IRI+UKD#>oHE<+qfklQJ?@cZOZhk_2}$Si zypK-{0!<Ve$w6#I(wr~n6E4j#(#RH{bPh)6&VB30&OO|A#ldssd*{xbJNIMXI(KgW zTj##@_cmz0^PC>nV4SNvWK76tOu0?+A}_Mq3{?rjnn{{QK*d1eMK~&XDdBYvtgIeA zy1D`mr9!WsnHILCB+^E@vO1ryuB3MZ0dn`d+u6~T6~vX5qgh*U)0k3do3>$c5w16y z0L{kw)xZ0@R}(@g5eJvyGjN$)L0%1CB_y0?)3jVvlo~%BXPyv~8a(QNl1z|co#%E{ z7AaJEX_8hUo97+MaW$R>T=2P>m1vF>3;ZP>mr2fTKnL-nny_`-i(<^tiHmWeD(b7o z<*XdTsLRu`Tm*=F<zzaU4)5uS+X1zqEu$1Hk%1d15Up_x$g;srSHTo+gh2q*9GREp zcxu+;aXD}l07U_^5`e`@u*wa(8k!3qO=V5(cv61o5Y&ib`>;x)y_jdSbYuv?N9E#p zZJ7c<z%k^eKsREiNzc-#9LM8mKpe&522Z0hDx>rTTEbH=!t$NhT=T>lMv><j8Y~w~ z)3T`4MqF!mG*U1v%cNAdJGI!*l3JE&f@^^`950Fx4?TFDTEMi8Q85(}Qyv0y2pJJ` zCB{nID6IMllroqJ<cP^Sy<ZRH@{Gk-Ay;zVJ42j0PZ<d5AYyB+E4n|d_du3en*~>u z$|PWB2JQiX2Z|yuz+G>BO<-z)R;2c}?-)g16hMkCCh-g*GG*nmU~QHm^}F%vFoc{T zLLl#|cJ;=BcwsaL0Y1+?fyjGD2U8D&Q$pqOb9)eFWtv{xr<<FH4~p};D(j{(ME<EB z(=>Hi)#t^7hc`EL{~}Gxj0pQD?;{ISm12ZEI#QE}hynypVx+7LEPW>g6aZ6}1pvn> zT0^gB7`}f65o7ZjVD`++YD5cH*{ZQ27*PdQAq|eL8pcDQ;fB?&Y3c=xKmi!Q5ENoi zFPg^H3eZDnMLtc#id4mfpsKd`Ycxif*^AV<H6kDeEY;3Z4v~_S9e|=NjYhK?1c@Z> z>CfTE@N>z>C4Yw{{yi&cyN}aH4B_qAY`Z?CF{ZFs=W%gkm2CpX$GNr#ql1+4{<zD} z4W34GKSfuv(>(QK`<SKX_tuwIrO?iA21x`mFdnh7Ye(*M@iA;t3yQDZndZ?%2hZ)} zVV|)_Dh8W#+$QQUu%jq{Rb|?O!<%yKK1OBx9dP%BHqa)gSlEqBhlT`_e6|Oy6~`>q z)WK|Ehs$cmHkj3G+Rkn&5pQ>M#+eJw({UPhm5(;t(3fz1Tz^(bD&J~fKbWib;W(ka zaz0o)9t)-~+mCUN8^b#k#Uf<E@sHA+>M;d5$5gRR)3!Z3OF<x5W39CS=y-tAv$M8M zQ_B^xa}Zgar=-NW9)ysEMNweK=F83Je(vWEM!^(9Fj*jSgknE`a*>>^b9M9n2O=`U zM9fM=<j>C9+Bqvr=b3;4@Wg3mLI_MyGrW}35QJ+ZYL-g_sHy^Hxip3)s0$%wTC!B$ zwk;tq@*GG(CUe%3RjN{yHVbM)Ab4jPU~6H^hypq1nXI=)tJ!C{Beq24L`+~0l&P;Q zoHA!<SAcU~*k!pV$_!^&3L^5(Q403<Ijcl4$1}=;)evk|7-EqWV3!32c_7d89Nf0n zRU%6OKPUG=ppa!}tR|?gcg#d0qW0=C_0P$!>bfYGje-Ef%xuuat6nx`QP)@5bG^U3 z%DfOU@78LlH>Ft?2!#96J}{ohbeaXGPGkT<jOwk+D&L3mBG1a@60!kQ6hmkaRhMN} z<mcsUE^mdDfI*}q4w*fzjm(25e<Y$rj*W0x8d$)>lqDM>Wl@p8gkqHAg@L+WE?uPr z&7DiPc}*qY(llKGsv;q^V$}>PE0D^i%B_fiMTsw1WlB{^Dj_d&1M&gX67~d>7kQ8? zPFWTJEV$eVz(#CdiMX}{Rt^*Xi_;*PG))~~O~;7KGX-homdm<^a*u<83_ex|IRg*+ zCCOVc07SJYaY}Z>ZphN<?KWFw{utGER^t$rT9{^=CpX&I4?%Qlbl_8-?|<GffUfU8 z`__5|HEN!1jIrm+B5mK@y`JRZ*(q>x65Fn=&iAmv4aa6XO}DOKEe^z@DolUUmj%-; zYMQ2@zrfkqz5C}EPz~QvBB2CN|C>GqpP4L@*Cz=p)eS>c*e83G$sx}#l2s7U#T*%V z>9LWJ!v$0GkN3{ZzWB%8YGwU;wcU0-(0AMCZMVM5KUgm|o8{t#cZTOY=gw_tRi15M z+=qN~7v_1_*F@LX&--d>mif!i&cJhhrdKQc1Fo*_J(#~>Sg(N9dia7bc>c`|?%sXT zyVk>S{i|Q#T}!yWe&GwRuaOTf{b%}Qd~*Ko3@>>bXDvrp?J>%F8(V(N(ER#+gFgAU ze(Se>?rm~>!y7+<lauZC{HwoDUiK;S%Adw3KlvcO=*b7a<E8g*!neUlQJjC@7kt6z ze|}Ow{r{&wO^jbme6mbVlU*_<&rbS>1%OlJYH}mFlRQA4LtaGQOx{C&j(mlXFfCG; zQn2aC^MVVRmW!&8v#KaXT9x^n7iqEN39Cq^<)V;f5~p8Il%kMjQWe$KmKOE|k}s;F z6f))IYmwY1BU36Xsoge=jI^rCq7ZcF@<NtLDpO5$RF&ICaR{2WlT@BvbVwv9kIS<! zan1)FtDnD22r;pX{lAHHs)ER-H6dygo@rTDXCOxX`)BUjuhnWQh$7<~Sw{1m{$$*8 zx@lOp;xO$x`@ivR6#RG;MS-dr(f+Cx-ZYs^teT04j0qu2zFpRHqf+UK=MDw~-e~ni zzw@H)a@=YHcA^_s%JIfVzwg*eciL-fC44GPQx!y!etqS~`Z*tTtjGO;<~j9)Z|&E9 zYwkke?;c|A=Y*&UQM<jS_jloB#Y1tJ_TDu|?VqtMYr-c&h~SH_?Uhw$pZD7Jxl$?> zo~o$;;3wPdNx8i}zA<WW9{9uI=6F0ViX`!ANBtV^!54`^o<@i?EiIDiB!zS_;whxH zU=PJtw5OA*k>kXfS{Toh>7aRt2lK&Vf^c>OR+@HO8-5aM@v;}k8|%}}G%+0p>bNe{ zTU(t_ipcpm%Mj*=N24S*DK&yH8y+d4-yhGOPFB}EiUips<``+ZIbGj~-va<}a(Qbz z?;%yv^K7%<?+>gp40vn0vOman583wS#tLY2d8trpHp_-lTw#3|<w00lgMPnn+MXvR zVlUs`TDHsd3Nj}r7$O=29RkV%sIN|7X)y*iuJfnU`It9U?FjGRe?7c-|MjkE7^Vv^ ze*PHtA&$EL@Z+s78Kyhmi2bj1qZqnz{QUp(5qw>*u6fVb$a4q@`~7}cC)&oEYUm7V z&b(8R7g;9nXfqiNHw}~=ER8QwmgDJoIxZ(=O>}KS3b_T>?SB%kt9dSf>(%x@IkfkG z%pE(7EZerC*tS{IlAXSx!_Y8?5XFOj6jQC;aAXS^CIFDpjz5}g5QYLSEsyK?XY8K} z*8|&0QriL3P%HJ$HHqywc5=-%S(+y4aPA~Y@|<fqHvy7#I80K2z^`d_Wbh(fCWjPw zx@lRJ(G;dV&G;AbB^IaR)wdT<FNVjk^~ggCY$u8w8yq`)Ua<5BOTqI(+nI1p>Y+zk z2#%X1t_yGOJ9oyG8y7n&vK{!(A>!~q0ceUTA1>F5?{xZ!>i{@zLU56P=1;NM1psoL z9XV@J?Lsq2+27Y~F--Zf`FuWOm?VhtmJvM|8Cx-8k|3MS9l%STf#X>C#PrUMjSWMn z1Tl%}D*}Mv6*Nu|6D5od>DLfzzHARIPRZR$Rj0VY?pt3*Cf|MgN-}8&&mVCA@?JCP zo7@Zn`1_sLi=@=WWp2@15Rb?`KYug^&g-A)3vFJO^g}tB7nA9v8aOZL{02w|M<Pm6 zEVM3gF5hY)qj+4l2|v|<Zk#Ny9Nu12YIBfyzHr>cb#32K3RFECEb}nzwSzQNaTGYA z7isFBU0+#kwE$Wz+lr9#z^{V>?K*zoc7lMm%kmL7QyW#}@O~7uYPQ<lV;Xk}Db_r4 z#IOOzaXBS?);QudI4Z%uUBi9zIsAz2dxjBp9s36N)GPP;to_UGuivkCUNd+lBH|ga zolfhTcOI8@?C{^{0hyCq%6tb33Z1wZFgXxnkP0a>&Z=7o6)&^`ue7KZ(<Dt~443vV z!bK&T5R_?NRDXT^`0*11&ooWb^9>WgG<;|rKYknpuh*4?6MG;$uU>i{!X<6k`xk9P zYr}?%wxRbge&ZYeY?_{Lnx^S{ruokgMS+jtdC4Q+XxoMft@hdrh$iIVDY$&^tvp6v zL0-!^viwo<D?~f+lnl6}hGKUER$*ZM+IcnzTyLjI8p<Bv{G&`*A<{URCKbiSkvK}D z%qAkQpG*#_Vm6(`ksK6qP%NrRDl*h>I~Ij!?+oMskilPXRKVq{b6@;A80|Dc@Bl$r zo`+GKMCf^z07MUxq%Em(9ZPBjCS#~LH<ARwnshq=>+5GuZ*J-rRj}Z8$|wa*0VoBa z4g|GLZ4CBoQ3ds}BGe{A7_g{FvhD`fx&KwF!+I*wvN!4uvn(IA2F^ii^eu}y^$p8L z;jzGkX{20hh|L01NJbG<u(G;!dVL*Wef{*->Pnz0ikpK78V1q;@RdOdhz8`N2Y?zk ztclV@Y51(u?<0Y?*MUcqxGcxTj7tpYaWb8BFj>&ZH>nNH-x~(M3)$er@q2GOW7$`3 z4I2$Z8?HS{Q-~XD6r5tKI*!optZjCNUAy0HCtX;Q;*4rkeH#F45Jg>}s?{pc!tQpv zHg30>Wvz8O06iIuVrKVJJs<sIOlD)JH)-50^oqTarN|>Kszp^IQLKAdoG)(t_)hm8 zJ&KnF?cT*5Cr+dv`;&aqIej|ql4%to2Y&?Lhffhje9|C4N?uRiLEcL~Oh_fN0qH{l zjDCWMlj&lfXX0RJV}r3;2hMCU(6N(j9N$qfdk%-Tjzi*L5`=eTIZ2cFFdP%bQ7kH} zz(QV741BYQ1{&#DGdcblVD@F(1x{Dvu*QLN;K!eF@+88>#?=9!?RlRmWucHh*tQwO ziN&n7ejf$55K#xUI(GWKu5Edqr4gwmC3t?L(e?m>t2WjF`h%_Q)9*q`5h+shjw++r zN6IKrhE9qeBBfItwW9sx#X}JoMM~jE@#M)zZrs~zfX&P_Mc^Vq$5tQ(0B1o{)C`Qm z(~)gkA_yAPv8mRel#sL$1j4fIXq+ZWp_z@^Hn*X%w|C>|s_J!N|7Ve|-lGbb>mp#* z+ZaXBK}G=?L!CAK>bY(_Hy$2NE3u@?_rO3g$P7r95X4d%tFdt)>B4+NZyK*>D-gc2 zY?`<0f$u}VzqNHL&y?1T3IW1%qwOpMSY17S-O93U*W^Ll9Z)HFr#;_jw*Zo)ADSj( z+yLl>wpEmk6hca5fM-@$VbT4kwzm3xxcsz!(++&!OcG`(1#7Fvj}}XSYpc8MX3L_2 znTj)NxSqG#?IE<9>(fx0-Pxh%wc{T3y{4}XfJUR;w!A2ETSs=UTL;%S*cPzQ>RlD8 zoq&=7_Io=Ea5l#5QyyX-wo`tT;^BNDr;Uemz{S{?n$A&VTnoi01VI=87@RTF3<hxm z&}wbW+ifmnoM$xvncB|E^0miTRuHmmJ9J$M<2$UB`m2(DpuzN6Tk3gnJgN=A(0=AR zLN?;I=Y^IHo$h44*#zu%S3TD?C{w0DNv&41wY$2CP%Irewz`U-ltq)&bY0JeAZWr~ zGYEj#6d&|)a(f*fa^3QIS>oJ=rbeoQPn)q{g|d{*mj@A-SzSBj{zYiDR+k%1v)u@M z06%E7Z5y}mLZ~;^8i+n?KWv~%)Jtv1zIww(@YQ}V>$=uJ>a}JApw(Ip+Mnr*|NXED z!AIdDDaalnqb=v10u<jJS+Ix8={%mJ1{zb^=u6DY3|>W{oZO&|dh9imnGuF9e8)9y z)$8<GzxL^^s@mGx`nD6?Fr9(!(beI2Vi+0*gV}5_0BpC?6LRYTw%!s#;EV9vM37Y3 zf~uEdVJTeETSI&CtM~`1e-pm{&O7hCb0c+KfJU>~0C3$D-gxJoccM~*%rxQ7+dwDj z;AEO0fz@Sj-L&gDj@M0H7xq8?&St%ikfxn?!Rm78xPZmdk&h6<4h{|u;LqS93CIcZ z5P2CPRV2$&$XlrukM6JbAR7dO_lmrlRreYQ2RhS9+P1x59LYq=TAA_Qg<G{*O%0<A zzrq9)JpNw(8LgsFE2YCoX~;2*vf;{dPLZ*Eb#*j~Vpx`x$w9qdUt3=;>h*eGGNzVb z4}x%*Btj%<nh2hxSs142U@#mH2U(KBg-~m)!%%Cj!x#BMfEWb69|izH=uao>BhT{# zOz(N4^~qjYt9z#DC>0qxlFBhnubxi!rh{5768Q&#QeXhJ+F&(FqykVfNmeTeLVx+l zsIZ@-hL@26uOZ1deO7|!!t%L9{QMIwCH(%q_uf0BN_pksdv`7zzW4AtJhnR;T4Vmt zo}u^u4wC)9gXA7q+c^Ba7|CiE;Sw>(CLv)+!?di*u<Ua_FP#P(Y6;*Yg&G+UNT~MD zlq6Y}J@G`ge-UP%`qZcRC+z#+X<|$lbMdp*KXSOV{}{Y^|FPK&-h8oqce8m_?z%_b zIqt*7Pr;=;5fd6x8NuYHN+<WL%KqCugs1lQ_P+Op=)8LDwc-A+cyP73|I0r71YFvG zJ3M#)?bls*_ww4>z31oWwaj;92bbYT;W9Z(?jes6GBO9#3>6LJbFcs$lf~s^y3j<< z6@yHclj(%(QRkUVkU5?;Y@8Pb#57E06wGzqo5%BbzO2H8FS4*$XRO!VEW@xgT(@ca zjMZ(2qG80G8+(C|WfYXV`AE_*%s#+)P^$$YKp58QKBrv7t#+IMq)DqCbN2huk(D4| z*Io_RTnjJ*O8q~vD8iwWCr+HiB;MLcYx0=@h=y6O8wMiW^IwlV@(3WBR<miDh(HJu zmk=!BA~{5k5dwLU7kM$raPWYY3`cJ9qm${loB&s-m4i~g`aGVerNrDC)h3hGRZ3S^ zCzIO9;;ygzMESHw*#F|&-UcUMdxf;qt)+lzt<z0M=7*`wQQGa)QiQbD?WEuM@P|Kq z{ds~1KRkE}UR_^xri5h705o>4s>(@LlsV1$>a>!TEKB-wku5};2QM)BVXXO0WgN5F zDS$QZ95dzmx8MHux8Kg~W0trR{r;WOIBv85M_1dWh1N^2ve3TzBR~A%4}aD|>*r~E z=OY$cgb+%|LEZURev@2rTwYb>xZFZ+_qnTbE9Lu{$g1*Ff}hf~>@s6R@g9!3+W7Es zsy7usPInDc8(eN``t(}zX*~t{=7k1b(HnLDMH=*r`6EH(`5N@E>Hp`@gG<CCbzc-% zYk6npi?S+HTFHt-QY-d9t<(@O^1*_7{9znib>odU-f+W>H{5W;4f}s{<A~dyi}8A6 z_DC0|2T#E(;F7L}ExC)kvP`R|2c=RnT~`sZcGG^pe`jmIGJc+AU;gr!)t7hP``-7~ z-@||X*MHsnwO+5+dr|McuYUEbUoH0k7SjE{U4o}Cy<vHIxmf;@ix)3;FX|g_ym52` zShZU1QtjuKmR@}65+Q^Wa?mcy24qAg<aUMv+To4TA-t+VeH^qI5kqFoIX<1iS9B2k z5sOrqFjTM$WG2%^l~kc@o%yT)i$JW1m82F5L1>QR;%KDIDS)%#PQ9cQ@~N`d2k7_8 z=e`$5{D-}dGyO4ItD};ZsU%!ADi+abI2?tGr4b;)sHnoxa5#z<#Ry<*ccQ_drKQxZ zK|k);*r_AZ?!^5mKXVX)@9usQrt5yEve$>teZ9I~9K)CDh;>s*smxYYi~u&m52G<3 z<p2PqqKbyY;VAmkb)E%s1J5yteBlqcMvnFY1_BOFLr>LdrlU`Sx9?wqd-g98P5v|( zanSMufWU7xpP#e&fsr0AQB$rr|D)XhQwaR#*MS8}?hWh{_5{hu#P{0C%1U8Z8dU3b z<#<ofC;Sr9a{7Z~$Bw<~*bn+)1AVfO%>D0r*Sp@;8T{O!1GW3^yYFeYzKmVCaTmV# zz3+W*HX}&H!S~=l^A*uf{s(;`j^eQN5|oAIq8Ma-$fj9SpzcI)ev<ic+NLMLLD*l1 z&O;A9)Ow;0mpGGv`}g|*7JSfU```GnAItWurw%T|A-~Bm-%&V=>>%FC6p1!f^=rnZ zzHcW@D#nu+u7rhIZwz;OJ<HnEU~Yr~f_p~81r4BY@Pob-923TRmZ1S^wO+sZcH^YU z{XxI)fqoS9c@3{=n5IPm#4#lZAxOwUpXiLwm+ZW<PFHR9ff%Y8>wbJNLW+*iry`%P z!Vo$fWZSd=^qQCnF*D7WF$xZ%^t{9%xJQ?<({A1-RwXs#I5L2r1wP|&!IM%U09)cr zN`XVZB0G2rUJjSY202E^D6br>MgtJ-?4gtc4EqJcksp_;Bh5t-nhnzN_hvW>)Ap9{ z`?jY{zgAxxWavoGOOm?h1@)TmMYT9~U9qk;ZikFw5C(P=i_Wi9oh1&Oa{(X?gns`- zu@ZLLX$l}UfKq^Q(rktGZby8i9)%hV!|AL*MhIbq9Q0dhFUw|xgq5sp<*}a@R=if6 z4p?84X{nUtQx8Au_x@!XxUbP@{PIukf40$ReDcRzgTdgBei>f=tH1iI-xy$RGGq_; z;59Zm-A10!5ft_Z;!!2zIds6v(ap1gRJZAfw8Tymcpt$}`*7yac>mvGS_cH<@t7hN zf|fgbdpji+f+8Is%?pWpvdE9V(}`4k`_$iY;lc&ZIlr;lypeOxFJwE1uDtTlPDTu( z4?YLK%E>a}+sVhsm&sp40FT0Z;R}R>(X=e>uqER%mxDN&PNo4<W5?B`oXi(lF2|*a zlc}DoL0b|=;l}k5$H>VSb0MW22y;XqtraJ+H-Q^JnWV`ypAH$fvZxjX4fg8FycjpI zeU^uv$9Yv`5|l_G7m(`yD2>X6%uz~OYU$9H6Ig8um8Pv~X;FY)D$7N|e{a^#`w(nm z4B7!R0&)}Ki?D-cmM}pl42+4>NqR7d5{1a?1qRtTTNJ8n8g(cNOqWB&cDM;d#q=1G zM8a4^r<tTU)1d+yFF@Bvn&*W`zXQnIHY6|(;hOe4c;sq`mZxmn0^86)ndjxJzVBHW zpE$m6Xv#UILIaqJ3afS{grkfk?A8ON4a+xeCqSpsNZnXT3&8uba%`<^Gys883K!W2 zQXpSeLICGLDHkA6S(G{sr4m7grppDF4r77fhA)`ljN6EUv9wlClDcGC)vtBjKva@3 z%7kedkuVJ@Q7DU3)3j}fIAcsH$!*2C3pQnjVIZZ9A&nAB1#_h|4TDR`xX`9)NM;xY z=gc-tN&$G&Gfeau1K{;ew+%?+I7pJj;sTKaP-XxGhG_}_OG^al!T|xwjKFs^40;3t z3U2wH<{_^hPMrw4Xo%0A5@G*ur3JP|09YBNVd#MC`w7x|yB+5pGhw5dShC;q>y37^ z!6m00fm&$N*i<p9F^kIM%matZ>p({9hz(CMCM`37UC*m|zyQ!t8l*HBn5L->2dNYi z4MPA3I}C7_A_p)i7!-kW+Y-n$QqHJUitqnYouXxeAtS>?u#`ps6r3}r5uKrFTc%|+ zObv$NI$GPl9|W#vvbtSM(_TmFxY4K~MTY3uh!nX|Yqosl`w6ycH7&L0hC#r!vK>nz zx+?Ng%Y%Tiz_OGIQ^eR0rEu-kb44OiaEVgdmf=fiQKkVj7aS1qr5S~w8NKj-6cL0- zq7J?aKY&k>7Fi}+<P5oqJU|{}$QRlPww{Eo2aT!2X_6NGc(kn&Ih!XpI<qkvN)t2! z{f@LDjnVClNE_;NP9NDoxw={@<50UrYuIRRHPci~CzIl@c$zk^sw!=CyX!ACjvhU) z)uHjYF~{@%>gut?FmblMHU0q@I-ZV3Qr2oi_*A2=w&!nMg`A5hX*BAxCTg{0oDHO9 zTUlQW2IG)1nB+zLc?aOfWfBDb($e~&8-6w$jnbXfRW}iGq|N2!LsAO5HX7Cm7ggLN z_cF8)63VuLOT4qKN!0^V>A6OC#~l9oyui8#?Bxc4x|nBq1A|k3$MEwE4;{KWN!rD@ z+XF~O{mjkYzp{R5k_|vgH?*{EC(8(i5g=%_+G+##2TQB{K7v%PZz#hIm(aGGO7&YU z#QtFQU2%Hzp+m?LfL?c8v_CwTz0IP1dl<AVt<lq30oE<S86YapTU`qS*R9)z23raN zsm+A|6uzIY#qqJa>u<s<;5W%Kxw+?YFb-mTR>^U>NGEn!o#^MarL1U=fw4tW5>jh0 zARILil6aWSv`i$N*#H0F@BjanX@U@(8-_aCY6%IH!iBn42xIS%XIU1tpAiCtx9`Su zi~+jm3@!xv-XR3{TQ0zFg6lc^*SOg5KP=U`USBF;0Jd$xKkva6hYue%5kfmeE~HLk zX;7q!#?fg2xZqIqaK~|%%vlPhzqLFrXR*;}u-9ecDal^V3@oC!qV_9JW%TxY7{~DX z{ZGPm(5!0**Q<RA>laKV0i-f7SW<mKN$dKN-Rmu>P+b}7dS}o4G)k<@b8B#2&Glga z7ka-}+&7g{%G`ghC6$uaTbF3xdfl`Cwb&wyUj9Z(l%ukeMd?^&?8Rf0CNh#gC=$NM zeDrzGd*1UDKrIde(+&dL2!l8Ub#qt#v-iB`J?}A+B(Max9k6XKtRP8@yk;(SaPU3& z0(_9HkQ=slK8=C0#x@=;3Wq>DFLKeurc4uxA&i841;*da%#ENJ*emj)n>cV^<|JKR zy)w9Rbu}INDd75aI>jWejngPnW8wStRurkZjN_KLdU*xmmGhf5O!e?yr^8=)1&!l& zyIymhdac_G0(Jt*@)kXhs{&N;vm_uDxq{qF9wV<NZzlN<FbV~jj&@$ra>(@NF)5u+ zs!2H{_ZY(|O{^j8xe*nOQbq>S!QC!$iNd7wTwZ`kKg<q8aI?y1`KcxR1h=ffr_?Lb znjsyBUS5=Cw+nd1bbUQdZRDK7kt_?Cb%OKVBTs+3*w{FJY-ySD&5dKnmY2{B84E}4 zj_sJ#^OPF~E6cNMoo=_^HBH-Tx4S*Zwr?^_Lt3$6n$nE>S}>&rQ{aTQO~G-5Xf|?} zac}>heXrYDJ$dEC_g#0aux?vZ3)AUzb&dYmO06zrzrVUtuL;@juY#7IkHYi1-C-zr zFkM|uYsUWXbZpx&8ueDwww12eIvvKSkywl}Be86hno*@0p+p^g6@CD}LTu6?%Xbe? z#rbiV8&@Qnl?eP7k&xejrRC#Wh}+w@Egze&_PUnU>#og@fByLL65O`EjkpEr4abi6 zPuzLei4)%Y_kRi6tzv0BUMgB`xVeA)*bVRZPMo;w&J%<XAmre8;UfGRxr30AkYy=~ zvdoLJ%zLzS=R(_7>V5#*T3J4(5o;gASw;&uuK;)j!a^tawH+?T-EOxVN6;N_?pRj2 zwA_r_opvW#42MaqT}cOnVWxHlea8j>OcT@W9yTpQBY1A7v%v?0exFJkYPF(Rf8E6M z7&9~+8D;>cfzWPGH9!<D62ZeT7_I_D(M}vittNHC03k_6qm4ArJ6%M}R2W5$>l{lG zz~vDQLMaD?k>KDm{32W?3F(q0a)^+s-|u5_U8aHpsR5naPZ#@TJm5x^S&%Nx&P4$4 z-@hN;9|o=P=1;bQa8&Va_V)e1g2w(|P5!|OgVtk7JB)6-EehL7dgG1HzVXK2hA?a= zNjnUojq#xC<g~?HI9}bj4MNqT=B&KQ<z|d>30>I$c<WP!R~}z)g@W6LVYApZG(ZxD z_DDOn-HZS|*Q*_$P&{f>d4|4m!!!<H+G>IuY6TFvF0ksJC|vJ(HHz{Y3P(52<91j# zUdbl~*(TSLd&!H)8^{NIq4U`w?JXPgI&QAAep{T+D*&KOZDld*0717X-s0&rU4m&= zt&&+e&!YRz)Tj7nWhQ<S2Gc9%<#gUyEAZ671M&NLmt#kfZ3EbLv{@UmI<lS3$acnt zo0A$Z92ox18Scip|44kzvN!y3o{0WKtjTrR0<>R4KIHG@0k*u+3J7L%IzfZ!B=e<s zTuxBjOuqmS*=RZevJXy&z<OI&(#{eURg5dcsy1%RJv+<GtaW-aKj}O2zyl8~dVPQZ z&Qlk_N5k*{VCTlIjm@?aK@g$>MdPbC`w>;3Aq;{b2tk9Q@l^?c4R7At+iQ161At@y z1HeBvZnpsHyU_1%ZM8vOx(U7RVt)Mie9`T}uuUDvl^fH^-saL(d4!mzo@p)+>Wwvk zaJtN2zxj3mU~l8d9~OUkhS9v%`Shnhtu2IKd5K|l*FW1Dj}LEcJlFtYBkEM^$99>1 zO7Ht{8Qxy=L?g+Ng<oNL2s3_Jm3}2~#;WJVSd}SwCr_Tdb!!`OKEI(F3;^=c&dFbT z^{Zb!>MWg}WZLWXdU|PTd$ClQt46aqDq1ZCH}v-}zNOV_#erPao$y{l2%*G1cnba* zE)j<`$$*ehR<bCwGA(5}EyGkukqRYri#)5+d3?5>+TPyYy62JNuD4jZXE$0|2EJcA ze&?NcK6EEc-}bh*z3o44gA1?6LDp*6US9M4fBoL~zV|)6*l+zC_!QY#=R$HasJU?E z7(C7+z~A8Bv1c_&e=r_6c4G6;p|w?tt82%~PRDiVTmFH4=9$Nj<JWRLdTfQ!<(1PX z*4EG`{m}5HpvJ2)azO4T&n2%U?;@l!%$c%{ZZIjk7$9xul3+$u4Hr7^hpogVPZJ}I zkPw3b{U-B@3=}H-G);O<vxXoF#9?`42%^3hNiqrhx0l~C7?WidMQ~SOS(X)emPwnw z58EqlT=#vzJ{^zGoE?v855f2AvAeo$Ss^n`?-y*PSku-Dw6;G7TH8$uO4+v7Fjl^o zB%ZH;x4PXHhs$TT4`oF*R%umc8=Lb7!LowDvXprK)rN&Zi#99(->>K1BFhl7Y~kf~ z-v_W7G;(a}XnmJyd0mjo^Gq}Ml!UHtnx^4zho%W&njuF-<iu~ObshZ&|7`NIxSepK zb+=V^V(t{b;aTvF)|11jD1^_G&IFF=lY6kYe;FOW4u<)&)qnB~(=@!cN?jKwLnlaF z7us}r<>=9sW!eVUO#){$F-%Xjf5McKrga3R%%6dJjY?@+O2Ue}RCvJZ%~p*8T!J8I z#un_W*P4ds878)<=hrYb09+^SJDc4OVyC<5^i#(LFjDj_i#G9k!*H7jO;>9eGyz+V zVHnyiGsKL6cFre++M>QTXUKy#sKr>w%H9?ou)|5Zs48rq#$NXMd0A2L#fxcKeSZw6 zWfVtqt5eHEzw0#|0?!AClWsSOVUVKta~|2pG97^L!J(dK-!Fsrj9%or?cdn&0K8|V zt9WAEO${UV;AM{8G2Knm*z^FrabGGdlSdE&{|*;Pi(IKAUD)Tst{`DCMsYHWx=6^w zV~{!K=oPcodPd;iq1W3S_j)jxVa<~2ra#THY>K_^=4P*lSgYerulgrmNz0V#*H525 zz1iylbbFhpJ?~77f>h?&L!Rfk!_7_?pxfE_a1F6`>b3TgePDB!i`~xJsD54=;CVhJ z@6d%T&%A+wL8}<p0n-N|<Y@N!aw=OKBU0gW(56R1xQZ(wRe;J80`7?%2fE;X^731K zIfbeqm}&Z_gSn~@mO@k%94CT%gxG(V3zt9Xswv?8LAW}&hgc*gIoTw8<QzFqZYLxZ zuLT6E8E4th=*TT*lA@WPmr2MqW65?D%oorfg#`~%7!OoDfByXW*G#+JZWor%pMTA3 z&Ud@r?mtZ7*XGM+4?pM-ed52adhMNezV;KJ_(W^@UtW9Xoy)D|fBD2~@4WK`)9F>8 z_(T~Nc|^;%`!FG4JGVV3=I!6(;&dS662bc}v&#4V(v4wWf>&if!evRd#K|;G{L>bo zCo`eqqFT&<Uu)Zx(zLann?jhjR!ocR&mI5uocs1aZkbQHqF&&y&n)k!;<(GXu#?Wr zc6)IQzGoW1PBPQ<POy^<OvCdH^FttmXY&(~r2Rpffc^tx%Ip0!fzVCy{l=6-k`9O> z^5E0B4VQ@|HF706PyUvCpZq&$LO3I%G|h3Qla@&dWNES=f`FEmXSAru&PaGRKQE=! zROVLECo373bI63x=9w)-i;9pjo6CVrWa=q&NxT4gO_1!7owEnDME3jyAw?=n5ffob z6CvPLVPgTb)7uu)^a^>iEl%c>c?w19VHwZkXz-;XO^c=9if8kDE~JqE!a3)h!AHD$ z-I4P-pwL<r(gMnn3p5=e9$YsO8FL-GS8hw6Qz3ZJ2~?}sReuZsJGCs^GNn@B2+9rJ zk0arS2)>pI!q8*3ZJIFGU^2%sIZ}gCL}W@x@n#LC==J&o0|1#5+NLGLI5N4So`nFl zn&To!kiy}y-w!}Xt|Ph9zUPnnh>`ERU$*EqwOTFdok2w8P7napTy6eOiU9nw5Nh3s zkU72&U{Z&txCSni0D$zaFs4$p{Gc|75=(F)>W=U%pufa{n(n`PJ<Bxh>T;!{Ln(l@ zW5Kxvj9FeBqiwm4U>4OHD5YTXI+X%rMi;dKQYt{fwA5<(j$_-d0?Rdoc5J}~N?EV# z)G*9AqS^pQ!_7gb?Mmr{2!S8eHk!>Qt^N4!?yfWafMr>LlyX&xG73l-=^R{!54A6k zo+Y=F*C5epXl7J{i&#~K6wH-Zay%$<GI5u4c#%#`Qv~3$EXy=VB1~kYfWBiyE9YeQ zZZR+B)Q@O^P8&xO#;qh#DoI)^S%!=Gh4Wim46|(I7qu+fZ!Hu76h%<3Vd+&$*RNX% z-G*sfZZ|@(!l?Blz=2_q1UrEb6wwSkKS0R4O#wGFnvHg=*=R16<%tVhTWqm7&-jV5 zT>74ABQQo8Mp1;#)Uov%qmy^yXsKu0wm+yL_2Xs~KEeQ4BMo=`5cr*5y6Fd@4>(*M zZA2kA;IS*@7V;YMYgtrL>&>T9=vzhV9CEw!5uu@Rnij<fKB1jQq6Y)Je#k%ynUIX* zDXGe%p$&|M9FRA(lB%*#XGLBVJQ4DUNO8@HB}}rReo~?2g2yjk!1wE^=d;Pin&-NP zVcfr#+cu|CxRDStvh7!{t*yy8NfKeYu4#a?w(h5n>-+VZ=dnhk5!v-xsw5av$`AoL zkHYo!`%TkuU3V>Rwi?{?l7{Dl>!dfVt*sTd#hDb2={lAH?%J9Y**5rIBk^2buh%2Z z1(U8fg8Lhu4~~=AtLrWprt6ybujRJInG|l+Xf~MVB`;W8TN6o=B*HWe*LBy+8T0&f zo!72}jO<!HRq`k6^?HbioQKi++Wk9}O{7$@ZFd_koBAG|udlBcwk4>P_CmXxGw$xh zINOeekf9cw3(p&7>AoW|aSvWd0@5d&WQ*LW^l0ba0_4eu)3Z`cv+3e?S;)$H^8n>` zGaHR@acx?-Igu=CHp`1?xtNDce?iFpW(>Xl=Ffh7G92Nt_ntd<E^$5Ej<3CN;lhO* z7YLqLho`^&?QehkR<F0aGt3~%cJF8%5uWcKfltF{#C*mc{onC?7KE_>M7_2+6+Zx4 z)l$Q_@OSs&ykQ#um}Q?lv{WGE`OfZe1ULIi<DQV+IpUm1(yoX#Nxxs@IJuF$n2;)| zGRZ1r2N35)o}$g$m={9k2+)v?C4{`JlPe6EoRc_;$B%JVMrBrWT3VfdgsK+R``Q%S z8|!>&X=$~Fpp^B>qeqX@R+~PorSlW#;F@c$x#s;DL{an3+v|Z3jTiO<|Nep2nhv~4 zKMVlEu=gr#wqW+k_0;C<$~HjzZ#qVm-V=s9R?&9s%ZAZv8U@5jPu*wK065c|5QY67 z2SkI#sy*@+IZqxSFOFD)S1cfPSgguPCq5Q3&Y+I4W>(~fd65>@+od9xX%<3@qNog% zBA9!g$mXp#6QE@x*UE1`wwK<`!?4kbq8qaI+o{nkmYNONsYS0bPMv(9tF){Ak9WIW z9mG+nwbD@(_FTcabRG8>n=wXVGu9}u7Opt9V@JVj<FTAvThu%+j=P7Ojpe0=F7Am- za1+?oeS3Qrle#WimK8{?R2)T-R>~Hx<GMnKR|S5v5d=ZdX!?P>2D7FIv~A#PJ#r(t zk31)jK!nPiU6jX57>|fTOye>w7k#NBeAQ=iZj!}siqYqix+!JBJJVTpYyW^0`TS=b zE`)Gwr>%l82$fPQ2!jqZy3;=ZF9?z?sMSZKdL5uq&##3rY}NgM-+E1r{R3#VJ1u}# zr`-ZKP9Cm3ev@!)*Wp4~zEnzvVHjvBt*=`F`rk3O@p>4sB>n!3@_K!%6NUhen~v_i zW+%D7AGmJN@B5zT_v^N0+4W~b<ofKi$h5b>Ui1cXC1{3&R%}OPc`RTziG{oX8`)$8 z$+8cM7Z|eW!ZrFJlT^5TKUesG;G6UL0zfbqtRuUJ7Y5o*$pFSj_l_bm7N8f^((e6N zo9K6?*uL)CV*p$vfbRTQwV1D3K%>5TcK^p%lQWBT@na7i#=FdR;5dbr);<6P9v6(R zOFMw8SWl_|F^;KcSvBD&kb79X2bc3aMP?dIiA{7*!8M?jrkKtdryy5TZ#gYv*t_q( z`{eB(wAUzyJMWY?z28}-9PWds{mQTWig8ijfCBFPRsEyJKovp=aR?!Eya-nkpA5*9 zuWaWB$&1L_$uE&Fl5dfJAU_00)hI8^C>zX+vLeMksT#zxOv{LbILt;uH1}N=WuD28 zuA(S5uNo?5yKR0iv+OfV7>$!F!|a?G6*Ay^l`LgBiy36YX;OPjMVS{{@Y52>@sVNT z14%8r(Wd?4bTR)~g$VeSAD~DFBjfBjf|sc$1Y=2;CgmJhy?cY0>gj(1IY$J}0c!|C z03t{USf@fzDkUArGb!0WAu?3Vg3^mNgQgQe3KU4IC<Xc)vEXSqaCoujh$63AsRH%Q zL6QI@$zcEgfKIAN$ry-*U<|kb#y~X3a`?6L^08ybPBC`s7zLo~{NYm!fSr1n*Z8YW za(?nv{2rQRlx7)C0Jpa&Zf_%)^yG0$kDsJSPoHG$<Z1dG007G1mwG*=_I{b83xFIi zp=oSVq)4ee^kI&vc=JilPrg|k0a0Z`Fi`%7LP(N9KS|**$Tu950P@%yBq$K?I3WPU ziFXKK@+}|yTjag4`n&KdcpsTtt{4O*tyj9rP^lT`9A4oEg}?yv;eFx5#a6A8=V6q( zy<UG1T<LVX`D#Cp<7T7WN@7Htrl~6dnr+0<Xz_*FY$kSAS54cI!{OD}y!r*FPp_{X zjq;+L^m>5({_08#A&%M`lf%uX#S4&r772WrQ^c*ZS?8`MHxL3vnl4h1%m;*#;(0lv zOM`7O$>Mn&T&HrZpQnD2rL>Hzf!`$4c|7N*Q8E16-~HX+S=Qef#=o&oef;AezxwXA zyRZKE=c=lzKKIWj*F1#Dls$yr```b5rQR>B_nY$lO1)p2@3+Lgk3Rb7^yt%{{`99G zoj&^h(P%Wf;;(-Ax6D3mddp<yAiX0YxCf7uF}ag`gpg5A0EXh5w^^J^;dc|9G1Y|G zMPTj>ktoRh5lX{JEb+zi05=7}9jr5W(z$eLr4ULY7lfIy(0-ANg$w*Ic_bW2KoKr2 zmy_{w4T0iDQ3&2KP19_*M%lnL2ZKBASn9O3cD+H|T06X3uhC+uSfVFdj-lHQlY>Ey z$Qk4D(quLp4JnwbhS|P_he5p_da>uZR<~VKvR-RaWK43woj6Vt+XftDy}XttVHjGr zX{NOlkupsg?M-Wz$^JK$f=9u$-R7*3E&~9Bt@fC+wBH|QNrC`SON&vzA3c!)0Knm1 zuNO&gDNQ3ls+N+5)<tpD<jKlPeqGIV0em;{T~{ZKw9zoFm{LX=r8<&I$S`PRag=o1 z4cFp4Y$S=05hA0UbH48DIB5_d*1=cdpW##FxrFe%D9gMk%e-1ti)vO*Vj+bTX;Mw9 zMKvxLMPB4ZUgX)htjZ)!;&C}E@}dITOCQyaVfTyixP<K3IjkDC+n@@sC?vp{YOB`; z>~ty+Ny7O?J-e=3Q~)RyXg|PqXjz5<YikZ;V7eZ(W6QQFjr=Hb-JEgTc3ohIurwSp zIDX=pTQJDBw@)9Q&4vJMIGju;DQJz2b~}n8G|ZmiIFN<`Oebj=VqhB3(~gVjXw-=j z3=PA)7-Vt6puVww>vK+?M4|~f_-cHR`WS<<tI56ON67ogFOk2^)7X%y`MgNMYXq%i zl^3(BC<zwHt!UF%P{}SgF9$_M(;{KjXfYM<UP;SE1yqia$Y5f=C^Od>X!GA)?rSYr zBURD@Xlj}SY?P{ZT8tp0Bc3C7GcP13B(fD%N$-e-JeTRBDxl~4JL7T3(`K-Ag#Ue- zrW%Y?D6av~@RYc8WGOJU*BOs@e4oEK2!f>}%$v`{Vq}9a=#1`khK#VF+ndjiAD_>Y z<qw80QFxxGL~4Lu^L6<jb#EHzJqkegbTIYmw(U5!U3X`J-lKF+2Qzp4vj=aaA#JtB z+OfS2ySD!?Qp#4h+mgOxl!p$L+V!7nZ+Nz&H`^^5(i&{LuDfp6W?kc2`~T#5-p0Sj zsJ*Ej`*rQmQ*1tWtM3_xVL1M(r}A9AxpS!eWge_WjnuR(D``Y)0Y5?MiSct1%d*Tg zMF2dJvqoT}KM-Y)ljoARlh0Y9ld>EX7lC*UKX}JwCE~Ia>0&-B`qTMAv6xO$kxBQ0 zlYF&3QOI(9&&E<nx&U9zloDAccha<=#flfx3F47?y^<g`5z{KI4%SxlayFl3gUlh5 zMsZY)v(;cOm^voSPm}5;oChL(G<lxqq5$qd5x-KYszbe&9`wld&5ffO03>&nWtl1f z$MplPK#G+x0yuS?Iu;}lA#Jykm)N#_j!_HIasmAWI0ycSlrl)y&|sp6HGp9bg14Rv zAe5$*GD85u3o!~Q4I})FbF=0*r%95g3247&7=Si_khOJyu4@Xz3XN8-q<AJGMiGcB zEv==|!`w)cL<6iGSG~$Fxypz7E{N=_^Wxy(;GdAdTcauauOrVQFC-uKAF<N&Nh)Ex zl8RKsN(LwtTm?LB=SAg4w#A7;d0-`7g+T~-DcT&y<nLw+;d$$&WnAP}gqNwF!rJ+~ zoRy0#mjEZ6#KknKz6mA7S91U7+H0?kyPaAJ*oQzHfMEi)TJ<c1Zuf*~*>0<qrik|F zDApVGI)V{6Bin{)Lo2Ntb*;2&yhbt$DWwLN{030b(ILQa2rzuAJsNs0aGo|To8~~b zcahq52L>E52$nWn-!#lX`}LY_!`Z?x5FloNu9vrL`iGw2oVk_(fRyUjqVM}YfbaW0 z-rwu>01)|$I3feu|9M4w{{q7-8^T|>=(*V=Kmmr-bNi_kGYZT1f-p?Z3_=K@<erQb z3G&2NKOxJ-vY#q!YO2AlbN+^bB6{q!lmssC@5SHjUN`EPMk<geQNwI!*TbdMD=U3v z@xTKQJpDaeX=(^%D4itL`+TLN{e#cL)8R5{kTZnj#Sdoqq1-9~I+8-SoD@=<s)$=F znq5Ih{Z@F^wyA107pCj>QqKi!H9M19O}=<<b=9_-%CvZ5n%QuAsK^oOwY*q%kvdx& z8_gEr=H{8P3*g*$-E~!~RzvXI+Q4yx`MI;V!uN4B+NvsB2xoI+z0(0GibEUyf$JJ* z+uV$z<)zt~%}pdg)WPTBQ*fDFMaXDSlx1F&Wj-&<aT&={j+^g_4g)P;I&YWGXM>0{ zIT}(ee*Q~jl)*1c!_eBc8m=EO(d`X~VK^N2x`GA1+puh{4MTG9gj5FOw8(F|u_!2K zhLXYq-m)#*hFY_gaIGx?h=2%)AS|tU(rVVgwk<oY&7vr(8P;vPM-X>+Z?}wE6h*UI zN(8YFp28_yA}z8^w#Wr?A9)@jFiCUUU6_z4x6?_*&=wWR{RkV#kfbVHN>U+{qBTe! z0CbpQ(mAT))muzwt^r<YXs247yHHh#SA{3JXtlK#xUq5Op%fssRFVQ8bJiP7t+h65 z05$k9j>jj?ZfqcKY@BVj02gj24B%Ue3&B+ikUnE@9Ms@&o&#=doVk9wGoXK;AdHW% zuE8AA6ofQQDaKDfHXu#m{fCPs#HHf!;iV-61?_R#YWHhGC@BQ`0se&6QWg(B4f}AJ zA7J6><PFTD=1?FZo6XbFv@f@1B|V)m=babFW#_|mK$vqVQ?L*+4s<@y0cpr$c4?3e zVkI+Is8b%B_REEgKg*$Xe8Ud{zwx$FGO6?lAq3cVxc{EW7F`@;3ND)0MZVwfHJgz6 z!=5&qy}s{<*ER*`R(HHqG#DNDR7H%{i+oe78tkr7$bGL?PmJeb>NU?F({~$V?6=~y z_k8?Y^0DPYnxpLO%Bthq)==bO`W67RnoW%`v@O?JSv@lxT2jcc&M4L$ri3Qfe4%a{ zfSaG!xmu|mT!z2NN2#wv)(L^+yj=0LEi1`@q!nZO5nswmf}dyQmwk9$p6B@^MNt$V zx%b|CAG`PJUo5V^`s%As-VAfN_1VvU_SbK}{r3G|zy0=~2J-*TojbR;2SMH-JOA+D z^YBXe0trb@4w0+LJ$l@H2S`kD&|IXa(pBj$CL&GJ%s}K5+>{+DQll(h1TpCLq8O#I z$m}b1*6Y3XuHJwD{SJcn3{xrO4%3ES8?G8!0t4Hzu8@H09XmTa!Z6ezWQ-XPds@qP z2YqE2;)v49dxpU{+y8>5ls{y;E=pw_T0B{nrE(q7ph6gH%LZfY`!xkZ8qe_rH_t1> z6wkivuDcYXY!!w!=zy7)`<kV;M9{apmc=^M(8eEfZKz*!7z>^>qy%2a(cJYr@GAH) zSt2)bv_NC|Vp&$^^RQf0lZwd#y=kiVH>#XQqhcU|=__GNi)ZDy=2%{&lj&i6O@0nC z#u?HptsUmAc6Mv^cui^F9}cIMnK(B4Hv}reK{m?Uk{jT20buSq6sbXl)QF2bw>e|+ zPnykEtKlG6@R$dHpo2W$*i2$T#)7v~=KHfG;SBWCvjJKF4mkEvmr{U6W4BqadxQ{1 z_`y@~DY!%|(jqHlhmbHyh0Ke*SQN9l%%+*p5(J8f#(o*)v+7++FxB&G#XK*bsM=O& zSa!^DeCM5an*2!nAu9~~T#e^NA)jyL`S!E^o0+#Nh{U<T5)wLa?ACMB@zQ9Njfx;R zhvxZ*XXA2B-g5n&cisQcop)Yy(ge__uX^>HH)gZ>a~>pukb|di4=xd(tdis8O7a+a z3n8N<Ez2a$`qXc0wWv~zO;X7!V~NosDPxsV<<04Il1}>q@vNHU%t8ZcK(&XAa@fC% z7F8<7n!ooYtyvWnHfmf>;Tu31^r@ZG(?@_%L8e#-;IqH|TaO++x>_)YJ9|(IhO2kg z>-DAj(whefq>;h6RqF(yX;}$?lsfjg@Y=mFfVcE|y{;<`uP_QTKpg!E2EJ0hhn#c! zC-yJFJ^Pm;$7TcBSO4|C_r33t_^bm|n6G=^``-7yNyFEM1p@j49H-_PhA^~ZRMAWU zI8JTyzW2QkoVSA3jB5piq=X!N5BJ~$T%YyTNT1w99wTohA0!_qUn74B4070lE8t#u z4BiM&z%RnL;NQ^nz>$R@8HqTGxIC#6a$4qDIu3~|M3Xofgo;r)D8+nSius@%mw7oW zXXR`vq2{KP>wWRK9LG|{TxW9cjR7i5%RI^MV-a2iyq0y+L1QB#n=a;MIV*bch`tRo z%B}I!ayHMW6B)(RGN0$u#gLy@C3h~*giO*&1y!?YkCN)mcyD*mO9Y5Ou9zi}4GIE2 zl<kGwo=-}qNmWg=>3hkeMeb(vRlX&xE^QT1VOC;ZY&J<2fO&NKY29U<>cy@in&76D z#^p4f&Bw*K9L&|H`pR(@Wg=;+zBrmj)5(eO^U2B4N~ubVHEEfTn@$mwi_>zh2FPv{ z^-S9E=fLkg9`=97Gz|dbg&IOo&oCx!e*_*(%=+oCyoqK?V5!(y&MH`B%R9vqJT;%s z=Whi^3aSNHidrTrptgZ(T`9$s58x}Nme7`}NY$t^4M0l)NGYf`O&C(zm?*bxr4%U5 zoMy9$P>oGXhpz8-M@g+YM`{WwnPHj$mZ_PP;<!>u!kfoPH9*d(Qk*edn)V?Yh^8r& z0^}&*!7`Oo>PS~vDh{n=L(8_TQMPiZSc2R<U<+WF#|}!+X2dxg@BoFgGrASC_eJl` zhn5OR$0ts1rhrAU^USrqz4i6Iy|t?y03|saaTdpna~4Cwc<L|?L4bmf8Wv+za6rRk zoC$$oXelKMUz(=$ZJ>4yAaEH~f&<8eDK?4~0IEPy<Wf-PxQt4{De8bJ#vGSX#Ye!| zC{_Td+;EDYUFkd`uC(y*G+)6OXN)m^-A+*;B;A$Om6dJ^#nK^Sk^14O7-UEelMCb? z@+f%&`8o0_@_F(<$)6B1n&sMkUng_0L~Al-%!?wa0Spe!;R0k@%*vY(VbZkQf(S(3 z#SHcy9wOs;e0L(GuU#!t)n{pdAs!-%Me8CdsxlFPD?l{bLQavcA!L5Nyr@R`?tn+~ z<wWIj?yCJBJaxCs0&FK*W6X0L2pds?-q!m1db`zXub)biBngHpD?;10?J%@#+X_q1 zjc4|5`mSYtmJ!zOHIN1gpyzo?D+P7~F^XJ6SP!OYnnsodrkS4fJkNul250{{_uP8R zk)y%>igX!srPlv#)$Naf?L_;RF3TtVCZH?`S=R5LcLFDI&R11c-Eaflo)=(f+ae4@ zN6Ih~(g_XIs@E*bIIgsmp3k{$DnKc?@>9k_!?4d=X5d;joZtUX2f{(W+qLeI3!yDb z5kfe*PVQQf2g$R@kCP|f69NKe8guFCaGqp23P??Rc)VB@ilsk-m(wW<Buf?K+Dl#P z&C_8YmlD2YUdjUVhf_@MsYS3|0WuczQZ3Nywq@kgd?`nI-QPQY{+iZ(zMn7tGx4d_ z)zy{h$&=HS<>`qN7p}kl!b?APZ&4J*XfzrXhkL!<z3Guv>$r7(H27u|MPcFPrzdCG zM?Sr`Hy&dS`%m=#rDS7cW8>`E&CPRX`bjVCzwPYG%F2c1JMO>#{`=o{>#c8l+uK^L z`|sb~*x1-0=5<$1ks4Vd$H|@KW#q%;bL6|^pU8ieripFu3O1gw_<m@S%YNG1nish& zv_bpXW#rw2K%6eH=#ELVX(nR-h%l24<GD&^MOw*fHlGz_ztEK3$P_K;a9g8x?=7p1 z{F$8`9mG*Ae)(#)-ep<F<+fcp^C#;(`wYY`VC2HXoO8;x&wz6UEzUV*Dnj5w{?YyI z1+!-u&JqWYh8!3(5!T_xFbuhNLdyc|xE4^Kp+T4S_V#E<v0)+$C;;P3ATX(bh7>=r zsy}Z`f3|W{&jesUKegJVA%aJJ2HtHEf)^sVpNr6q&>dqFJ%dufCPoSoUZoH|+t;~5 z0(+1FYf6N5jlu-5?XZJjQp$kuQMm7pJMI9WK#QCLP_S*sXTVJpyv99aE$61~-`ha( zQKe4-@FAeUADBVx07fpyX*m~F)D9|LMIIn8Bd;QFAeYEz2pQ#aT8biQ&2px>d_Unr z3d3(G*P;DLCusUEw=rUYYbBXZs@PW6&Wk<ZRuT=Qls}r5E{R=fq@Z&_N?N6P5!dWF zkDI8EU7*UQSyHXlX!Lwf6vgll9uCoafyKEM1H|vi=AX^|N9bk{N1+YqTc!!P5%_*! zfp1wRoN6|kU>aNoo?$@Nyn-nuhh3D~U~9vdwO0f(>!OSz*1w;uq7R-veVV6{>((2d z2jDo3x^4eC)M|hr<^r(WrJn~&gMIxU1%MuypfzJk`2~o92Bj%eD%_g5*k*>|JzsVE z2<paHm?i+e;uV3EvZa0z)Ux~;t<m$leb1YwsM^}|daWP~gO(ITA7}?sB7y74^@LPK zTIlLhM@p*cBD|nxL^H4WS5xVia}1?UN?FlkUG~4X8kc_-hG86K-7thWX|05TL%B7` zuBiHbz;3VLVn|_Wh3y!(uXMVIr?qVRKEUC%BrzEEJMC+Z^#}MPWxaO&bUH=X#d>XJ zk)+UWPc3J)-3AE5wbJ(mf@*YOD6ggv2IHLoP$(7k0HUaGntOQ;MSl8qh_-{Ai_ZA@ zi04G2*17eM%XsPm4Hq0Rgme@n>l*t?b(IN2oaGtnmz|bMngi*_BuwFOHsEkX|8KMe zH_~bZwqsdgV%cE2Zuc65^JNg2fFNzBH3Be=0D!SIfGBKiixD>K010I^tF3RuU^9*t zSYV}33r?{Y1mHM>hUbEzp;r>V-Z$P#A+0Slju_cCM3&$bz#Mff6UHos$m76Fv(qvy z2!bYVWezXGr^qt7&fENX*)&7TkD~N0!G;HFaJOg0v>mvhd!hZr#eSLl#nQecHSL#4 zJi;xZ+o@5D3LiRg;zZ~0?ln!dkDAXD#3b=5?!oP?8@D$$8jvQ4$^JLQk6+l_|C>@+ z5&KU*`Q(!cVluD-y_3r;ji-;Yo??<<+K1zw8@IL*TCGh?5=`sQum;k1)kKiBgUj$^ zaGC6p8_2WB<K$1sUlGEFv#8M;%4pvtP4Yt{N}rEnaS$bj#J!`qtY1hG7iHxz9>uL= z(lXC-=||kkG8har*=7%90aT#bTp?Gj*zN?9r(Q9cPNrDuXU$4`A=pas3di+tlh;@Z z3858DQr&<a+%8O$2gPjSFz_8maRd~u8wO#`G{JE#iiQz7E})nrtgl~j>vRHOm{~?m z!#0Y2eQuf@2K|q6ZkXNxX=H#f4XprO*E3AeRuDL@l;Trs$JPgZ-_qKVmTj6qwU*LQ zh9gxNM3HGS0M4~e0XPG&?7(te3p`4LW+RRPD7E}ntI@CxirQ%2r%lF9O&P%7`rU4~ z<42AISa0+PbxTr~6h*Ix;J8U+eQh8G1Mt1jaRA({?e#T^+grEv8+GFuR=q~iG1{F@ z*F_L_9hO3x=K2FbIr!~%yXAcu)3i}n20|33sU@U@&y;Dp(hqz9*Yka;KuT9TUKF`5 zfNi^R7*JqnTb7-Kp`{r&Lj(k^B0(9mnh(v??apY_`w@zu4Q)``J{SwqLw6^x>;^@8 zSxQ5imDJ7X2QV$CPpz)5-n9DEo#~_N*xh&Eeev$wpIf^fmM>kpbm@#?Tj~C9z{>tN zU}gUsx8EK;?~QQ|p2P`!l3XCSkq5}j$s5Sq$@|EM$j8X9lP{CsCx1fzg8YB-ZvbFJ z6LMIG3a(_ayt0_*MPX^C8QP|1qN7}t%2LR2%=r;y1Y05=iYL`nD^#a8gW#<$zm3id zUZlmejOW=j<H4Vc=dzOHVz8xnT+Y<mleCQIJ1{h!Z>cI{u4LD(%2*!TMxj(EP}wV4 zS%gVQB*3@V0zoRR%4wFcS<A_?D5tWLEoV!zoW~1yi*g=o?3vVTR?gGBD5^oREHe`Y zQ>y~TfEN;w-&SM<wel3OoR*QC?yFL<=3^?3;&F+^bUH<_w*VZ;AK_B+N0@XFwiLj^ z1TZTAbN259&tTF4n3({T31I9$y7n>wtWT#?0NjEZqtlIz4V*Na(*Tg|-S=73G!qjp zT)1%Eh3mw%*Is*4yxe~t;vu~6!VC2Cp7*@%pJ6X!La-~}HGSwY;Y6*|#o@z;4_~`H z91e#oD=X*yXGlunX}7~GnGo#WJMudoelcSV;kHMEP}!!<vM7p}567#jLX5Kw_`{oT zzL_!`??LK-!|tjM#e10na0j(ab~jRs-b$$hwt}w*9K_qGh4gM}S@dgHU3Jw}Hz16s zM;D6)z&(hFx8dxL2RAo283XU^b*}4PdAI<8pFQy)e9^Kj%e?8Pn{K$}yf}aU{F#;y z6M*}Hu?KE>Ilkm2FWEiJ0N7$75D^y9nQN0IIeO#jg*)>+&#$^=eSQ6=VCO>=;I_LN z0K5BcOG*iF$Ax5fcX#(x8~{G^-h1x_NIr5c03aYCNWz25@C$I6BxHjSpleD@Iiq{r z@k<GLZFDCHEweT)GdS}nfAS{<chFq%7e&1R5B@?dl+T3L&RcA)Vfqx@0?lUemwB23 zq-hQxduac+K^ykl=54)fZo^Ra9k>in5Qj9$5-VJ`8pHqEvJ`UEIt*@=h%VsW$VHW; zc~MQhwFv?3&SZL|Uc2+usSMr_H=lp~^@Ff6IDh_8w<ZpcH~SmKeBneLW<7M(Ravu> z9oxI<jg7{U$+Xi3F+6qpuHS5i+4<|A--;i-aAEM@`Fg)B56gPwY%Si=X=c}4{jkYy zI(|GOgb+$3A-D~%A~D${=LmtcNV77Rc{Y$jhUKD~q>CyX6nQa_%u$+I7Wd60i!@2Y zf`&BDa+%A4q@`s5tpmRB!K+=@HMcf5xB8t<r@OwnyRx+N>!bc`>+tI8;jLM31S?0* zY?tNsnIkK!gTbJj?X0cs%*sL5?dDsXn_GFeo5A(}@gM&I?Us@@U;wKtu>T3K2FuG( z^We?_V7H4f*#Gc4)b{@dYB3ZA#QT5aYTa&Y?Gi!=C*t5Kd?{QaLoy>L$qnRwLPm>u zDTG6<C~drF#Z8_rJ9hxO{id9z%?MizH^*mo*4EuxcbL|I_Ja^`kj>ynX4wFtQD52r zINDtY(dpWFD>z*T28M2%@+)sfyPa>__`iej%y`pH(oZrXfLbjxEw|Gd&aw<3%Vw+n zzWLKOqWv5P(Rq%IXg}@%IFH+i_J<t+=fgIl{ihD1^QWXB<lxJ289qw{iQhr5x-;E~ zd&xuOIpl@p73B5gedLeGx5%H7za{@feh30=h@c4rScWlFa0E`lRd6%h#mh{Ll7$Fn zw<-&nvbmTp6J)ltY1VqpM(op8gX>JcGuSMC2vnX2ji;cJK-g{+-mJv=!^sY?O4dqj zL6gg<Ndpt4Q{?l_l0>n~D0P=m-}lq9Dt&rKJH{{jrSF4@Sw7$9cn>$H(M@bFCfqq* zXQ85XUiJIC-7f29-ENn4evUEL<sa^JI=u7p)B}H5@igbW!){@Wb=e>F`~CjrU@#aA z9QT%fzu&+6zuWG<?XB0a{{ho9&C`RyU~oE3(}DT(*`qHSHech5F?gPr1c(ZRVQLjW zQMt4N&ja*)uMz7>*U7R#Yuk6+mzbt$!cC@Wn)@F$P1Brz_s`m2`N~(m0I%JD>G$S4 z%|HIQFX;FC{XaGTxWC-*_xrzW*7oXtzuzAZ27|!`(=_|Za4;AQa>sEDr)Ar=VKc)p z9AiDTe8skH?Tih>u#N7t_axU^+Xh@`e4Vua&B1?~=HT}!81wCZaj3&{0x1DBfF~)X zR0{;)EDnVPumepgMMEJ1<H3!CUl^?R;rjhY;K%nLx$i#s@%>labkj{YfwTWlu)4GJ zs=m?xu=$gHqkpq`y#L|BFPNs84ouS|giyi=f&Ye!q)%q#3?YzBvw;+GTxMjHSq+c+ zrNw0f++Bqg15o;I81&LM4gBdNk33>3`57h6M`{%7@WndP+WxP#LgD+GRx1p{u=PiS zX2R~^qLSv)k|`C|_J6g8Sc9u-xc_YkgLccelW(=1@~o4FUamNv;YD~kdB}&~y0tnO z9AM9zk>uEl`Al8cRKBp3&88Kc&2e71#A>IJ9KP{*5&Hefk(HHUwz7P<YBizN-tPDN zO=MbW5JL2pmsa-H)(}@#kDn{YMSnOPm!9W&8?J3CM`!E{Os_v_2cfB$0U)Agv%Op7 z070<X>%ohr-5y{*D#xP{Vz;-v((Qp|hDZ$rLrB3}o)55896P?e47j{JTkG|Z4*G)u z0_Wgpt&K^q3!n`x0Zb(l)5LtVYnU9`olQc3kb|$lMffzifsk;ZCe@fadoLU%YKREW z4ccDtz6C4*_=F7?N`>@Mbfe~Zk!Qbm-Qit|aU4m;gx~_OD0XN49)MO+Gze`6O$#7R zlN1duO|5xry%({bX&RIpQ5ek!1K-2>>>PZ0ym`aC)dt6wTxr`0kBoAFR%_nMhK(jz zR@7>>+I=N`Z@E!R8p|uISsY6Rl&&<J>rN184ej>&`sP(@YlIL&2|2LGPg`V8UhZ$t zyf5hAg;Op#cE<3$Q<T#3jKwSJPYOXCO4Nf&I;|aOxVTgfvYcHB_|-I~@XI`Mz_Zy0 z@QUNNADK)#ZD@C2SZ*JgOgkM2{N5AORe3sOEx`HgnyVHS()s+F2e{*K$r%@vsag=Y zOmaota1R(m!GQ~*feQhkH3i`HTG4P^OIsF`EZ}yydk>)9nM{rxo<7=bj{d9m`qENw z|D#Z6!AZG3zh*Xv#p0@K<}-XFl>)isQc}T9$7u?|9L_;2Lvf3O1Yo8aM!v@Ybh8<n z6cME~5>63_e>2^PP7kf@Y>9Mf(_>+n4O2teLun<kZV4Cn_V%v7>-xR%_>_JA>9^kc z^z+Wi@%VDH*<3W?(&fv~9rwmhJ~{4<pS%C$9`Vd9C4?Aw(boQSMJ$C<+8QeT*Vzg; zVRJeG*TjflyLviBoKCO4YPjqw=oR%wqh90<D%~gKZ?d)4+V)I-@(Xb~yZY+c6u<uT zCXUDF&W*?Trw?Fl_1Ll1H5kA?N)+jmXbPZ7?5H+RN66y9K?#Ck8Qt6;U31Mf{S7Is z_3Y}l+VFSo1M<#yzVmj+Zr=X(yY3)_)DHgh;1BUM{5rWrK1M!EewX|o^4H|wKtl~y zVGpi`$KgHjN%#`{ANYIt0h-vu5>Midgp3w4FBUQ{X4ydIayFlw<zUiw6Gfgaszo|4 zCucQtik6Iw`9gV{a0288W`4|V0!y;eD4wKAI*<dIORiV|s?oS&(3i(T=IM9l?NL$@ z%IMCDVnO4jA*FBF5^{Pb!mM~@G98yZd>P1r!!)BK(LzL0631l~Mv51bVmwzTSz<Vi zJXQ<0?cKCU;`LLqw^WvsY3ND9Rd>y_ER#5qMa7HyiDcJE!VMt7da=ngsgi0jO{zrE z)K0v|ZcC#b5P_}BAToK#LK%z=)Vibb^zE$53oeR?zY$d)L1c+{Z#mjMIW2`e)s1E` z$Z^p}6W-~zMH<AY$*$(Js&K3FNJD(d1J92iAF_@#akr;Q!$nKx$pUA$JKWVS7tEDf z2<}>@>vBqEKrNGcTruLy0`0r5t2ISLE=(yEfDjG0xj24&NAO0vG)zoOAu<{Uj^#5B zAeBfcb+zlczG93q&ZL8uMf-}ouBihqgqAK7+|>YBtJPZWM?dPeYPA}`6^NFm6nLGx zQUX%#Q%VgbY9^yhaB2y$e;ZJ$YyhltO%bGWgfb|lz8(uHEDNOc*r$3)3=k*1-f*pt z32qqxTyWP}05HSzGzEZG`<&tX1_ulR(*$6T1R)Q*|B_mHoU@^20&?wpR0N>~5VJT1 zbOiv_uB(KQ5<q4}G1<)XzRhE1nvU!HMlB6ZtvP4_#!QBs0x(?J+L}-Y&cE+{^TU3C z7{|MnG2hwVqzn`?lQ94nA2EF2b!`i{)@E2se}mQQ?Y47zYyTUL?;~i#)~3n05a$0$ z92YQ68XlnMTg>%p-vc3)DUhO6h5_(PrVxyqrePTx(D$80B1LXXDZn&T(`8C{k~5Q2 zZ5Ubyh7}2u8ybM31(Y*wx~}8cw&Ij3N-fUmu(ryW1Hd&8ENv)6V4y7E%topxWkJ6m zX~qD+LJDAj!A-XxXdNl!U@@+Ip_t1>Jq$4wBE>MQbFt60p$*T|sV%wVc#J9L`@RKS z>L3W9-%YgV8HTC3owgYB9EWqTeBY<qfp!fzQ0VkOl*GM$oB$+ozZWOJ=mde3snY@! zo=+)bo+}oVvoO@4qnJ$rY|m4gE6;Pg0AMIbipT^&a5(~KKq)-aXs}|chYnjU*K4*i zA%DSE3QWVT`99^Y7jSkwj*wBwna@nI-t#-H+MW;qeP0RyVMKka6Li-}x&L<!A(3Mo zHS5APOfYm1x*lV`UxSwo9aqZMaA*Hl(Xk!P8Kp`o!!$k#wiC5%TMI8>%x(A{{4=Kv zg~_D^R7##OOhYL}DdXC)9b5q^gej0wE|o$;C?N;m#J9uGkbsQHSwcpUEK8BG?j9<_ zB{W3-6$}`F!VxC<i<D4J7PS-ntZj#pZQFJfZV#iXTZ%wT`@w_uvoBif_fyK$dTsBX zC*PYSnij==H{MmRx1v-00(NF4T;Wp$jpv<mR}jNm&9(t+y6?B5iKIRsw@W3PJo=9N zz?*1<R?#tZGkOwweVGHd0M?r5m<)JVC|J|A+QTJj?n-zxHI0v>tQ7-qI>^ed3)~17 z4%_nVzzKH|Q_kTp{#s1Z(jnZQ4?||A(ag#JJif5NaSIE_hpSu$K{zoH1|XOM;99L# z!+&P}h>d?5_`lMB0uc!j2|O8$S^pj?Ns_KhQe+i*6HCKky<V>mhf8B;!Lzsg8;>t6 zaF4zm1mQ#=00_Z^s%h%KpDaFWU~D|a05G2N_(wnb(S$sj0Fa&|)kU!`Il3fCk`BSv zxmV}fYW<HfiD3<TKVvM^MdzW5(S7LY2*nO%<9^gDRA?`HHR{FUyE<gYw9l<zqYB!+ zXb{<MAp`<qH?W3wxq^kc%P#hdT%XS8?irBeNji#|&1lAb5`@!LN<jfo2vK>d3mnk| zMddZZfeN5r4f;2qJGyIbZVoV`VKuBcWmr@d4$d@_Bn$wmVUpI8Rtw`+Gkqr))o_F< z@xAT$n~L(;Mx(*08g?M!G>v;VZsK!rOG%Gy2egm@2H(rH5*0x=+KH}%5L%R_DWg_+ zyvhNqR55IdGE$>&6`QDb^iTiL>t=`(Kpb%fxs!_=&dh>`a$G}rLG(_3Ta)~8Uq8b* z>+jp!?_=EW@9i|A&2Kjj*Tc@gPxXJQq`Yb$KXKy3k)pu3D2|*sGQSOn;mmXnx2*Dq z<-UG~w|=RHLAxD>$``-*#V;yh*lq`*3cGbnUX`s&@o04T*f0mkhsW~CNzVh!r~W$H zi7rOB#?pt-r=h+d^$WjtM*s4G`|e<#t$M$<O!J33^#?^fC_?`r|Gn943ZjUc0&kYZ z8Zq>m<@+3VE0r1hsWVioW8G-jzK@~eR%Yxc?;ejEb&d$1zT@+j$KzH6&}fXuyVmCC zFpS5?FPfXf+_r@yzbchV8plnUssfHKX&PW%&n8PIwEz2c)G%;;Uw~F?JYHEHkDCo> z)Qj=n)p5~m!qy@;H~)~M+qQ9dZtkL!qar5f5lF=dZbucAvG%2hYc}!G%XK%+io&1m zDJIYK%*MvX#+ftIzO}hIJm9@xV`F2(J22ebwEXEaXTH6$v2pd8Gt-{6xj8uCKmY2h zuio(Y4>vb0Z~Dv`Sz9We`y~9!U)FC!jt(N6;*e{-9N4`ADhLxDKNH@^eFDgBuO>Tn z>eQ*Iq8vC7<duW_u4uR032)<peGfheL3}k^k3V(l)TwqwK5)R#y@UI3yZuNj2lkyh zB|j{KbMJ#4a29PxN7^*_o(S~F`q6MN-u$5vIWuB<u>LKTHbk;z?ukY`r-OPN<lrXS z@8=vW$MY;_zsi`Q>-Cxax}h^(6D7ay*q-Njq9jpWv%&MGrhL!VH6}`;_cz>*iz060 z;VqYA5Wn1QDr4B$uj>Y5N_}P{f0&E1U$-%1s;;W0La2^a1!G0UIwgv!s`_V(I0lI0 zqG-neak~gi(=>z7G)*()pORHjf(GagMl=!z$Qh?$?}&8)1xeO*a&FX4<S655vj^+k z>phI*Vr?(`p{pv2>JFXJ%Yg0rUp7-Imn$=mpJ2DCqR27Ebk)!mbyiUo-KzF<MUfd# zsiLZiVW>J|j1xuG(8EwSps*a<wr$6{7XN#OOOQ@<Isl!{L<+AHIV{M6APIzkI;*RS zY==ErQFY2wrYI^9B1nQD3z!pK7<fUrmf>&U9X3&bmbn|Tz13VulwCWn4sK*|+XkcA zz>J7WJUhViww?|*Z#})FC{V4%Aw9NM1w}5sLQ)j5UG9itoTa-FB&lXrL$e`?qAG}3 zlu|c>O+_g^b}_D^{IRC2Z2d(LA}5jLnXgIUYi1af8oYo-K^0{=cA}UgFY+h62~R=y zAp}U>Bt7ZUT)WwdK2k6V0hodaN!HCak|a%dxaeRm%+ZTR`7ke_FpP3$INh>qWlMc! z;bs}$oX|xhXt(RyQPXPFfM*c3<47vI&MS<PL3u^iE3PZ^s-jx5Xse3Cgp#2@MVBO| z%CbrgLso}SZ#jm}VrLttX}Z8Od>?P<;wC&<Q4}t*<E0BO*!7{Py?p`T=#dL9D7!9j z9OYCHMMDdM=6IA>G}rZ`vOQf5d{rR?G!+<AtF9MH&4yp)2;o#*yI-u=o0hH-@Joz= z1_&WkLOuyof|{s^uVK=g&?b5YdL4Qn`Yiem`U3z65W<WO%YEjpj5u}+Ucy2UK;_MR z<D^KZu;Uqstq><g+FYm3+StnPc+aM|PV;G&6nvItqg0oLm5B#R@do-fcKKo%&2V?3 zBHI+9ak-pXkIYR&)yOSNaJY49p)ow3fyJ<@!BkCkXU;0ziLO`x%7X*@_*j9JB+0Jh zMf&7Lx~`K%oEU)9d5+^R=Xsvv8D<>MVSsr)pb7B%I2Ov)F-Hkzm@P3TQ_849$Q<wn z4+C3v)(8rUd7WX7*Lm*Z)sNsgh6&{`EI(r&RvwC{4*Zk7@$~7_cbtxvmvt@hhOxcB zJHWp=Ns=4k=o@4GC3!1jjO?-5!os?)@6K_+aa;@bUG<$-5~smVI?r_pQ7EHSX6%W4 zNFNaRJ!?GjI1U3GuJA{zN8|_d#NW?`csSNs_whI0amO8}@A%%a?(!VJva$1cK%DTi z25O)ITJ;X%+?Hh`3&(VnqpJzi7}(K~;-=96y_byMnkPiiys1>J#*V%J(#7o<ZnW^k z^DIU+S9#;D-~ayid##pupgkOJ-#tIy+WItjn3Xd8addXq{0D2M$v;|OUA<zt*4`FR z4|dJZw_5Ol4?|d;e)P2O1GJ*~%_Y0wd2y_!d3^3u@K1Or2$*E#wVftuFHI@KS03g` z-phJ<lK1jnG)(hs7!C6z`<}~sS&|RaUgrl)o@K*mnD+8smgK#(m-o_P+RIz{kjG-0 zC0Q>Ws+1*plBd})?WM!0m-o^%Yv~~ecxco#2IoVd0fZT&;HbsZ&?b{^a^2Pu`-G%7 z=of4r3=c;}Q$f*gvly9RI~y*WDI!9CsB1grcFo7{Wy2i)378t-Jpkt5rGdvTDyxFT zn4%Ics7@MfS+ZLm)&aot*a9~qo1KkyrEG??Gl>TbGe%|IP-Wmnj<3}_<;m{EbO~29 zO%o~tlvY+QzH0iufH8G!UeyfRVH3P;#q0zJADi&t`<<qW0wp5DSml9GIRwxs22oQZ z%}gdb)d^8-c`ZXHk_4DB({x?ia(2wjY9{8w)?BO4o2EU#%wY~6pPPqfYdk)m=Mh2} zp>tn^f5BOlpdAPS<FkxOtK&hxu!9fN_D|-83rS?5>9BFsxFo!K#>4#DU`Xj8OycQc z>b%PsTOQ^0dJehAaM{XKado2=)hB}>2qqh?sF9aU)6C(e+`__<qvy9AyS9i)t63B) zS<lnq7HV6!TL9%!Z+7R-*<Q)PU=5a+cP{t!z1F@LbMR?2L_5(BS}=-}3g!S3JtlQa zcs+y7awCc&b7_<&sm(C)5{3$))NnNJ>?{9P3_lSW8yA;fu)N~9%|`2j+|X12KbV-9 zs`y^8ciX&wZ*_Vmi81V<JhQegR((I3X}3kOeFv`9x)Ze;{=&Nq%d#rE29z*6tVYnV zDivp}s*~Jccu`ob>iaIQb~^2zVeo=0V-AvJb&65n8#Lp%_1?7Ja6G_KwC~2Q?*sUL z_k9B60W`g0n3moM0u5n=&ixQ0-?@$bmT=@8Ux+q692A&(4n%_pw{25Gkq%ebI~G}) zA21iYA=3b&rqvE>k|asmykpccrvv=o@#DuE&J!ftYQ_q0=&~Z)NmEha@!Z02{uw=$ zaM@(HB}p1Qph=SD^~c2mAy8@zt7T1NlBa~ho;|)Nm^|;;UhVohNz{Kp$M4%~ock2K z0^WgcK#xW*L0|gODEJbe!_6>=Nv^6`djf;au)sq>Drv9^VhOA=t%Iw>=2)(q#nJPV z)bi2E%7rxWu_zU$E#PvtMQNgxzPg;12ScZSOCeGfLSK`>Dg_4^@nmM0yFmfqk78WL zqQ}?CA>cU9d5(ykN(I1ng22%*2arxpHIpPQiUb6K05%mY{h49_On(TYojZFy3`sm1 z_51!35W?pZoiI>%Oaz|xMx##3{djKI>inFARTcD|OBY_Si-;nB1~{MubDTyAk2#=> z(vr#XJT)0%7-Pa1F&R<tH4>#9hq0grCsRKF2!n~NTGfcE0H|uGW}0QqwrAa@OIafw zjnX6mL1Z9cPJFKjj1rDfc=QNha%%5Nrz1(OyA22tMQkx<=rRQm1U4l}ydZDAeMCsN zdsM_A9_tTag%?G71I0iAIBtiZ0tQC;lF4|Un2hj%fiY?_PQjQM`kubNh?mfbTF0iA z6hiL!tV0Imb*w`@_d<QQ%-fFhQLl`O(ZJzD5mY**c9Hap5s&spS-dj9X3LP6OqMxQ z@Y7Dc0XS+;c0Fe3;uvchhKjee9JTgpmW6%FFgUhtV;qFR<Jk1{!Mr<Jttm9#glh3% zuzLOpP3$P5#1Y05rfD+o_*(*~s;cN3#TZkl3Zm!r3&#<~wy5jE7<9e-Os87qaHF2` zksx40_Zhn=RTN3`BUzbvrR)bBSZ2jF7{(Z&QZB;;F>r<FW!|zy3IKp9Wf%Y`RTUK> z1gLcGhj1ERhD?NF%{j)=F}ah`tdvDyUwiGfFSrS^7v1@6ID73wwzhO{vj2sT!Xr^~ z7m@~Km~930Q%p`I{xx54aF$y?u_Fz6-qbad)*M}{`++r7Y|~6ajLS~BdGdS$$<EvE z-c$8<rztprs)mk(>HfzC;f|?FlMv|!4j)4pp>ui$!!BBx1I>6SvHQ%$CA%3|JbCiu zLzkA`wX_qD>?XI~yS~1@{;svPckygHo}r!Sq3B-pGo_~*S~(&%uqIEO%yt0g1l@YM zpXONy9=JTniVmNRz;F?EDT3u28Z7NNjeiQkID=5{;9f`nQ90TFVQ`*2#&qhDjsQT* zA?y!K3kFcy>+sCu4`XVSMN#DI4PGphP#2Am!&`f<pUm@W1pvplV$4y`$HL8A?Ci!M zOHJl;fA&0&<8NS?)t-kj$9aI7&8AQ)3C)TWhLT=3<9|GU2^~R~qubd$L4%;@WLeqO zC!=IKxTK)F?fMF&+eQT$Bga6e5W63^f4S5fKKcVAE&9bMr|QsZ@dcXK38Mn;v^0&n zy0JUA{D$LzBHLtPVSRmJfmn(Hj??h1d>1(7Cebw8)pcEWzfqE9EXziVfFzZE4~lFU zl0;gDEH40y(llaNvYjAs90_ueWs@^Y71A`oaT;aQ6j!FEFrJ!P5zUg@a2zn2q*ZaL zsVJc9WmnhX4p3Fc7Db%eng%^bRRJ{BNwFx}yLcc3cvsgn-9-r5(3G9U2tI@+&<=EY z-wUwpEcy|?7zS$%y)&P-S_9YivQgB_GK)pKAPNq2xzx;Pg$IJ7W-%-#p(6=A-wVj$ z3te{4j@=i|%~z`swFiY|0tEvPhX>~dZmlK)7}#{$C$`N4PSUyY4C#bbfP(;FR%W+{ zep)Vbx-&Cd%uZrPDT5a#08y*o@Au;fgCYx*0+^M>P6r2*VZdPPL(|<()mq(svf~E; zO)#dX^Qo}h6_ipt?$*OWtp*Md!t;O-SCxx=6W)a^G>tAmh(XAlU38Ic9%R<cTd02w z7B|erY4F!56p~Fb2!38Zl-KHvQd*MzBx}sg9}pPVxo2Fo-g7otTwLrPUg~xMy4|I{ zliTVuGvmd6R;yNPS$}b%*Q@;v0P`Nj)Md{(f1)Es7}t)MZoFKn*X!qVxZB;as&sp+ z=ld(bBL%2dhu2gjoWphsc!p>UKI+q~{z`)WNlasBMEdPzRy<r8$MK^tz3}T_|GN8v z3)Z*337xHP&is38eSQ7w5B~e}l}hF77rx-N$)%5Z>U-Yvo^Mp=_doTiPyOVaj;u3d z8t6S9Js-V3j!9z*jo>_uwrp|SCp^R{9McMXSQNE9>HvQy8s(Vf>L>*k*Kw-x+Y{uD zxFzswC5d7?Y70hqW%qLiENw#9fnNndK%fmIpfL$aj0He|*|k7q83>`gzzd?NC?aSY z1_408Z5j|5s2xZ^;GH<|{Q$oc$kq=@NJvPY2_&F2An-EUI73LIK}e&)a6-^tJX?s6 zVH8KHXc!{B1+$qZCge<m((hc_Run~PU-}(NDP1CDX-MveOZXA+C=PB7-U8i4;$0pD zHxRb5VVu0r!=wi|u#|BOA@F1XDho#v42}A<1f^fsgbtd@&B`u*1dw&iVNBrniY&>p z7J#rWz`(emZkdWC$?8?iGX0uSZza3tn-=4lEi0DqI5o=Dn9SF8(RDXgYnm)evI+&E zWSziS%H;r<wjHlxnh>n}(*=Y80>54{3~+Vbv1>Kk(RG&-rKtr)<yshY-7V_|ZklGr zb0W%NJi^rH<uL}DM$1TVf;Z8(z3-MCraD4bjHP^+lM?%2f>l{ER#y#4{(oWEcaKf* zD)Bx2)wtrp&kRZ4D@#T^D;N7?#<5p{f9?g2eD*552?1)ymIU5pF2@!z`k#_r;U*5) zU>oBKz#S(i&@%);MKoQ@bc4+KTC>??a<Z7nthwA4+sm+TZEbDOo;7LUs&9M8JKph* ztDaYW%UjCNd&isK{Ei*lw{K5|!{ld2X*T^#p8OSf6ub$w(E+<DJ2>-L#$X*P&@<_# zNlK%rCG{Ovl1;muD_{920>9R!-3s((cdbrMIUMdM!FZ(;wKyC^js;-4tyTrLdr8f< z!E&Mi<KW`MOU-Ce?_^n?Hk!3ik{B(0q&nE2q~N+XhTWC4ZQHRY@s8~WRvBZTRl%}q zzUA<e&)5zOvuUtPi!2i)$@AlO)N&9)h@i%~55mjfBZwgtb<j?PihJJWDMVSG4Fo`g zsjmqI5!hL2G*`oEdOYCfi!6nBa&i((4R6pSyw)vuC+6m+r+p86Z)$pOt>1^296EI9 z!M(xBlfhp6unWMMoSa;n{O;uB<mB3;t}Y5crq5(iTz%EtT-gO~Ts-&Kv15-py(c(% z(%<uj&2_{f|J+$f;4G@3I!a=lJk<_qao#xByTTPedh+DSXROt4xS_trJ?rv`{>wD) z+t}E6@#ohXH{8%z`}ngrHv0YkmHij>`~CiveeRKd3iI&J=)t4ZrHE=H0UXcRFsZcy z9YvX)pE^X$)TPU=qZlBy&|n@lDn=>%6985*yi=aTc=iLc7;~D9(^0%?C`t>i%Nva6 zStGv=TC%GD1!MdU%C$Mm5%RRB5yEk~E<)ddJKYH%4s|L7fK)n%{fTY|5hS1cA^Z(q zhB_!iJ2a^p<xBvUbL107sTNRyB|~WOv31W8H+OPINx4;|lb(O@g@DppEvp5A!9<Z6 zK~U?}Ym^3wSz26JUtd@(naS3hy4`N~TQga|+ZhfgpYxj6yyi8hTJ5&ygQ`|4stUf> zZnsuemZwUE{|J^>E|{NRb6r;##D>=r1#4}79wCIpHq#0o%F%YT3mrrkp-a&Qx&_6Q zyMbU}`?yl6l%!Zi#493n#7Z+86*1&;Yv7D%0f~5S*PZx=(iaSzRTXpVIi{j2iUrr1 ziW&nIZ(dxyNumH0uA{K^pFMl_?2$*K(OpYl{^&<P`q2xQmX_`sU3kS6aOc)@;JU5n zSc<ZSwxU?+<Ka3A`}+NTK)0Sl0qB3+al8ykk|fXU9`@SW+S<9K+rB%1lcB>tQVHZ* zF0RYl7}SfJ$;|wHng_SnDBJ!}Xl_m?v+#9x<caIgx7#4;^^Mco8ce5$#&P6Z;dM2w zup5OQVmcg_8AV5%NuwSB#@)^iTq^l~8g6Y319kokphCJ@Os7}PPj8r%N&#uR-KTW3 zEK}DIDk$;{aeZm2%@a0`$VP7t6&pQ8G3`tf>?A^gh=C5dno)QM9$&yMMF9X;@UVai zL1QpftH({M9|BdHDnMTf%?j^c@k_8TC3|2PjPrI%!<WecoLDrQ^alRqpCKhN1+685 z<48{{$ElBMb<Gf2vuoO1QGiw3URe=<j^m}Zn#I6B<#u+;-w>`#5zs>f&ug}hAuWp4 z3kY;a8=(?(1tB>2zFT))Y_<E5wmtfKxR<$J9~Q*t$;0fJC<7*ywZN}9P*co-lH$Se z{NLMCIbeM9WN8%b(v8Y7*Zz@_grAVA9z`MNz@&+-)_l9jqi{4lPEnx|CqW3{x(35E zvFeVUrb~yG3P&LYWNDH#{8(Eea?BEgeZq0Ljo5;z7~eNdhce**mjWnlA-%O!UDQ(O zb=NmmPh=VJqs=B@l)6qdJu}eQY^F=K6zJOeyzf|yqNOAU<lJ=}o8EBZgh???>!ZAg zgwkemf82=@IQR^F7A_M_j*xrf52S*r(D3Z9%0)3Nk{%}rs!gp)+E%koqzdvzEQ(B+ zt~>`s@-(jcA`DS;tsnTbZ$h5$vS&kx09w}@<4LyzI2s+U*Qn9yoga@WU1Xc%&2hFY zWf-Q<a>6jI#aeJ{*zbGD{Z^})_Lh>Q0n68(t*x#ty`<GXyi@?3ea&_i1e@E3#${~e zqxqrbWi-;*1f0*#o!uSTmSvAN7uCAOfwe7@3tu~qo%p&|8<@HoCvJ+E4aehxP<@ui zv`%g#uOR&DEXbzm)6@zpj)pwHd{G8eLv|G_NgBz_&!qsXbh1HVV8CV!LZ922%A~E# z4mSka^SPG&U+*JyI<qL0=(>5DLKt?to+|_djmR|7gj1N;Qjo4?GS(Pujt5Wpeqc~A zqBv1tSuR+XsXg1NM-IWSefQ`2`bMvh(sl$i>Z5*I6Lz;V9JWn!vhFsUbr=lKZ`A9f z(5JFB7__tO!`g8?A!66%rX4s21uA7&?{tzBu)lZ8k?4c}1^*78AddsE+nUd_tlC_Y zC|DjI$boEqY-DjeMDZZQ8_4cCbt^fgl_r?aE|rvApju2PWwIqyU5&kom!dl_<Ybq6 zh342)n`XP%Dkel{j9&3E>13MBXY&O05DIRVqB5$e3^u0RdphZOy1S`_e-vhvgDDOI z!9q5el1t_YEzPzNfIzjjoN%zRG6)?@Yby0FYnxIFhjIi)yM8PcL7$?hgv+JlF^rUH z4R-@S(uQS!nzIZYc@VfP<M#nY>bX)lV&Gd^O2!?(X<3%zritsCmfiFn&ZN|quMt`0 z`v@qNFPX=<L8+-l`9RV5?V>zRmY0*58&YD(2fGm3q}1TdW71a=0e!z>i28aPK(!Y% zmEy6q?*%o?AgBX?A9RAy^2{(aJv#_Gfe!%nATW)$Q~?mVQjGvXc%CPiV#KA^azQl+ zDivLyHA+$eipz-2X2}#2;Cg|g$heY}g5pvM0U(5uTmhw0afVb0O0m=F3Mr+*(R8#s z>QWGh>9FQHrgUO=|9F&!>(qVUGeH7ShM*l2nJJ~@-EIdM6(k>d@b3eMeYY!fP$zp- zf$?52iVPws(KLRzXo{CJjh9L>#)At^C+TE5yRBU?Nt1XoJ@*QiiJNv&iSd@=#(uCM zSf$W#r4-e8e!9z@7VYw#EHBI4=9*iO<MQO@hSBFPja1=?W(~n^8xpH)8etfQ4cHq_ z8ROc7)2)omv<yc`Wm{or*-8q>uuMv?l#!<9Ofzl*CN?iIWd=VLH4{vQi~#`mwVk$F zsjYol`z0(?OfXG3ZL&`&wbMrV3@XaBZ+J9@36rBmsYFzQ(c~-zW>eQ~HeHw6NuTCG znNWz5QVY2$7=mdHDWEi!;EYmj1zI}owxd*FX-XLv$`S|^E`?#^Eyw#`;Kr$0M5K(0 zU>_4M1b?cCPOb_9pg?AtCIzqpE+`PBoeEJX)Aqr%a@Ul$EloE!E%0qq30I3*04jK3 zDHn~`rV&JO#5m)UqSS&1Yy}Q(y=!r802rEE-I^QuKoyEYOQe!B&Z0O1q_i&qa-1V_ z%B{c;Msh?ZC<PRha=R?+9XthJhmVpqvfIiNM7@L0pAga%LgRce-`hnlZ?8jh_?8y{ ze0BBg=Hix}9mJiTTW;CeK{#Z{HNeT_%FX3kl7zi_-NQ!Xte{lx|60fMa5A}aX*Ai~ z9K+8WhnmaQj5|BG+^}oAlM`1?CYW|y*RVV78|$kp6D|bozp|cX#g&r@1{-J2JlvCP zDL=RjzfnFadp`M5@@DcL@^M1KGRcq2aamRanbtklA4=jVt$^s)e<agMRUk#K|H#Z| zg)A%oXzM-JWU24_vMfS|CId;xdgF3l2!cu8!d8uygZ4JhFZ+L+22J9yvmV&fT~q9x z1UR`T%-yLStarjVVWw%CEJ=d)x^GW*O|f?Z;N%`RcPF;L-VTz4ndY~?^{sDx%m1G* z2R?h!naxea&CN5z{#%bP>5i=Xj#Re(GcEpeP92lS`g1*F-2(#TfLy!?<l;r+1uuBP z3;zCvFZ}xlp8f1+fAiVT{^ql%xH&#^X1s~RXbTwgNALysIO&o-a-NVd$|H6a6N4Kz zl%hyYr&~?4Y5vN%24L_nE}%-LWm<-*@B5h+p!%V<jZft5pZUyZ<gaw%2%>1s$}u_i zYrXi(6DLlrwnkxSS#E!Q=sJuB{_>H@gBQPH;QxTJJOc1o2vOMigJv8<2=&J35Au2) zww`<CePtQPP7kKC0M9@$zgCMt+Sc0I)1QF!t@|Klmvb4UV>d{42qDJ7fj--lamWkE z>&X-3=gF^;FOc6S{{m+3JCW~vC!cczT~THr%p=K^_`DE{*g15+&AFDFIt_~S1FwQ5 z6vmhCvXD{MXxC2SQRRAQp`m^xPG^<K;B_wfkBfYc@I!#sH+McAmp;d$k*}$jt^3`; z``SW{1zkk)1ye4n#r#RmwBpPUV61fzjYdrXr7TZt&(q5DwDugS>b*h3b9&LB@5hm$ zK&de7`9cT;ii~ny&$1=0{d(#HY5*oU0EJCMn4aZvzW-URTvsaqrCnF)iK-*k>dXBm zi=`O1JIfdbh(U-Y1|eb?U<qLe5QZ=r8GChYWqEdPbrnP>2r}*O=g(65M);~91k|Y2 z);4=S<E3FY;)utV1rI49rBETI;iYy_q){B}o~<?b^v3sk48slq65zTigP>MRl3HUl zYPZo<5`m)RhSdWRNj*fNZkJg`DXi@&+WGD111{!$x$BswX*v&gTFWad5T{pTnhBb= zH8}_o!(K=+>W#fc8urr1e|Wvs20ERcsn=(RH&#}<n6riN<J?wWtlq!U?E((w%gcS@ z@F+%6tJxv^R`i^vS19DP$m7<t9ieSs;VD!SF#GU?iViBZA_8MN^~WFNw2ZmbUH(kJ z-SU0kZ?*g5tRJ`gwyhtXjVNNLUx3i-R)0OrvSG%itj7H}`(C@<@3-5Y-|L5vB>jGp zfaBCx4Rg`&!y{RiWy35R`o_*$2bbadaJf%on3q$htrM4i3x@U~1Q|(xniu^$Qda$7 z*MAM+9=x!Ic;pCTZU41!kJ~2QKepl0{Y!g$SQGqBZ{niH0Xt(JT!vo*KVuGp%IuS6 z5+_A7KtbJr?x_cclDx=cb!?xF({#?5m$K>i$qJsmv$F%80s-!IpSg5p{K`9C(Ol`p zo!CFF5U;Ti0s0$Ftjj~dN2AdwsxKJ^9DC?UBY#`DR=lq7KG3qSIlZtQtTaHaef1z1 z`d6$GLI@Ih@DzLoE|C%0BV?3KGa&(MHqCLT05ZT6rd1R=15sLLXBm;@RbGj6_UorR zoeoIlx1)X>;m)CJuQ{|saWvZ6KI|sRXeo@ifVVqwoNXqSHXEL2y1}z4efD#yziSu< z;Gj_y<!$phz<hD*iE<o8Zo_9pP&rAALy7AE#x({(m~wdk697*fjcGomgy1f3nVamA z5qX5Xj*w7Wjkv7F2>7DKtO}EII*;d3sRtL8WtM0swjH=W3Y7vB^`SHCCS`I86d2iL zBnr|dAWSKuFp22yOQ%_p7x#LMay#vMF4%Un?Q+WO6L9RUa3|%Qf$OdU*mj;Nl_rX7 zh1lf634sgF48wIKH8|G>6}7t7OGudz`V*<mDf5oO37b*wwwtyMuGfWoT*)YH4Dx(3 zEsFk-F{bRJ58iQP|FZx9@B#3gdac{dd_Nmjvpi1{ini5iZYmv&0)N=EOhCu?Z5y$c zt}Jg+p{2x+Hz;M&J#xo`M{UIz8}^H0I?3|^AxOx<SHX9G<95r-jTlB0vY>`w7Feu# zxr%osr_;B8Q17~rQB2Hk8suCECQQ#|%(pDprD#wJh8IRW=)b3A54e^zO-*SG{<DUY zAmp4=AZ|C!&qss)V30PzqSVw%n^GxCQMqBznIvsEWk9cwHl*BiV<9PJoL^UkeD|JY zPj*w)8BPf(KBnVe`?X)Y@z-+2=riy4<!bVJb)$6Cg~g}--`1Q$N5rfw(zIB(X%yOX zE~oPrsNlKeoTftan^7(3ZdqB5V5pxLnM@bOqR7iZS%(g#>WsKmq-t?99!Izz&C2*( zaTy7nJ13ag*_pj5T|T=)QAa{_Yl@V6)KDsP!s+%DDp;4&P|6g-P}=A)#sy=7H~7ns zOlMsoJkN0*1TBR$!^j&;DY(>z`KGhszt1`DC~DYNq@@J3C;-$sI!<jEc!ud)ro}nq z90e$;wNk*iVMxZ9&6OVpnAYnE$e8BbubZABLqh<7WoQjj0HSGHk~45E%XJ#fTHR=P zuC$Ugir7CWWk_jgWe8zLoO8}O=Yn&_IOp6k!!QgeIsnQvy+8<aO)9A*XU=1%wzm4G zHOF7ns}7?)(25ICo*|^ut_1<bRws!SDCI|<r>Ot{W+H-VY75LpqsD}p)~K%45>6?% z3@z*cks=4rqiLXBFSa?S%x^YZprrJ|$Po2fHf(u8U?))|g-7%j+0R6cXW4v0)gW*S z8!zSy=M)qUcIV|}s>O)B792cyCLWWOgETIqWjbkEide`f=0BL^#iZz!4ff&yVl43& zA!LK<H{W#Avz4ry1^^nmDHYPCy}gqs7k^Yq5u|C<-eA+4ArwLYZCE+Xpn<@oh#(3l z>$fg@p2vA|zic+!ZJPqCBQPQS{P5u;yUPI=46tq;(H2pM0PWt$PMU)85kRfm%BZ_F z%k;e^B~#M^fHxI>uxeQR0J2ZP=i!4yu~|R)0(mKUJNZ@eRn3R?w2X0qsh>q92%`Ye zi_#=bLtGQQf9d2A(vxn-^Eg-&w`kY3<^1z;DcRCkSvM-9z`T)5FUc~i-1|z<1nl-H zTQ(y4*x$;Cu^gBEa$M#yaDnzC8au1x5d4UWWvZfo+i*A>9@koLcAePnZXf_V*{Cbc zgDO3laUreMOrZ(L2zF?|xR8=_vaBP8R8nw;y>)<qC~q-9Dc!QPQp$q;mqVSg20Xt1 z@_>R63LXzp2)+OEm%s6i=Z+ma_QpH!y#4k!DlKGo?u~DJBSpcKh{k~wlmR~f)?05y z>dZBz`207%@r`Q?DN;rmawc*_Ed&*Sl<SxpnMR6K4-KRgT+rIyzi4Z=Y?WC99&d2a zG}wQ+5&~EV7qt|iGx9sI51xd7hEI}bl2;Ql%0`RdbAxPF4$48M|7_(yVv1iV(F9+~ zB%Msp_SSUKP&xRO%;w`N<W)O&<XS{&#2FB$@J~1{H5jor;zqOM`BG8_o(DiN@ZvBE z4COhIV>8a&E5<GDnr@gjI#DDfrO*RJT1y+L>qvnhL}0t}<C*G%ptX*qJa^8VeuHzv z41!+6G-KCOe5PF@7pCDz>9|oXPW>S8<EYt)1JCwt&yd|`w05=0-IJAuNv-L5Tp)$f zD&DPO_;-E2m!o|6ywl_*oHkDd><|h~72FxyNs-@9`ii{B({a~_aLQR};xxY}iabrw zsn{K7h(H<XVm6Icj*xKg{yyOT{!$-QrAvUzjX3T88CsqsMUjWDr#v&TC|Yrv*p?8n z0f5riMr0zIBg2dnP6Z+uo`rPIi-1z-Ya_Dg?;k=@<lOdr4VR$VT-xYfEH#_3|K*Wk zMorTUo1T(@(h?$0lGGLe%=Xh?TC!A(p48k#3a0#;=lpro#nNbGn6dV?5%KC;Y?E;r z2W4SsJq2gsP~k+}93n7mcoLV796fsE^yY>@*X`VV<mi#32_FmB@zu56-Mm1)wz|7p z<Or9PR>~~PGb?$~zF8^#BmXzMd5(N#b$7VEy0VMGLc2w6al?5Rx03tFGwwE97D{a! z=RMFIrO@!20`AiTRuSW2Q!x)Tz8FPDbm)vx;=s7?L5E+BJTjehIsl!{WP0TB$zlHs zH{X2o=;qP0H#axkN$E@zaZ-5JsZ*yqC)?LmRh3rh<#lrXr}&G%P5<iAXms=F=AXao zuDkBP{~3nUapVg+ozBVjsns-1tF-F&(YqY{=fP*uhcD>FMr%ZOrsO*E3iAKRzY|iO z=8M%L4H2V3%aI&hToj{{rTI7H3xw5tLCn=nnbZL;B%~;!OsJfQ%W+X0gMY*YnP(r6 z)W^_t;|J0kCKu)TXBeF^h3r5F=q5qkz)X{8bGitT14|rDlQfyXQ+*ol<%?Ns`Zhyo z(-6wK$pC5^K+Tu>w&D4<;eqFCEAX@#eBP3VV@kt@7ud)w3z$`)p@AA2ud|iu+RAiA zC}pqFv3mVB0Cf9<#DTsa0M;VUUyjT1`g~~#yHeCnb5A#?l}fFI0BRVf&*J8tUK*YW zKso1BN@+We)Rrj`glR>tfl_+5{_>U?3ON@hg6kS+n3jb?NZ?#3A&^SxSZR%WrX6~Q z6Alat+MuA%D$9_{G9>&VH4R{fiN9-jfo-^<{V^->lofjVkYQWWv@P|1W?R5)3$`?% zp@HfvOxISX>*zNPhQl<3%rH^_h=k}Qby=%-I<--jsj2UG-A=c%I-T@N8z^ck2*S|y zOkW5FTmUGF767Fbfl<nZwEWR1RW!C8fPncy9Jwx)C^WZiry+erpGQe8<qB<PnvQEb z!gFlJ0fIZ6z&GvCHwh)=;Hmq>-xX7GQ+z>hY;5WG*a<7>Ufv7Arr!-w1l@;2ZuIG8 zl++GB13wR!$uYk*VAKd@9i2C(p!anQ=%yB(MA0Z<R_3d+BA7`NDa)!8pafcFKp-Uk z2!Lr|s`@v$DoT;T&)K$3UDt7pWe=8@+7z3O^`cb_Hm_QpdalcvbJ7oS&>!@vMbSL; zh@%ZSmdG>1WcWMZuPiqkTqH|9z~$xbL$jjZz5K)zPeg(%6}=R@`O(#)U*xS8G?sem zrrL%jr0Y4mwgFKXg{VB&IWDx}ycZlNNgQVjRra62T75Vi6id~K<z*p@CEpezbFhE# z|MBsDL`?1@A0Vh*XBTBRUb(5V1587VvACUi`@UecsM2K0iCfBY@@lhxbxexe9A+V* zEMZd;?4ePlS?OT;ev>lMz6&-{Cmf$DY4Co3b&?mz88>OO*=kadcVfLBdvM8+QnF^N z)#{aiFLP+8yR_8pP$88s8}&v*f+L0I{lVJiXvp3}T~lML)oL+QYq_oJ4Ji~KWZ94d zDhh0E{qWBE2B*xlZG(0?oi>yD%K&hkqQU#U)iTei1O`fL4Z>0=ae!$WIq+f&7+9ud z0+UkE;b=S_4XH*1plI{e)$N_lO^!ejY|FBNbFQyIMuDPb+cp9+3SbzvZ5jZ82pq#8 z3{W5;ga|_Hbw8Nv<OcEr@&WQm@;h;PHF<s$njdFUK9u%+6eF7!bRaoaxR2PPbqIbJ z(eW3IErnG6L9q+b-m9D{N^)i+eqJgAfcF3LLPlkzyeu0fv5*`P4(Em3xKxG&P-6yv zw!Z^k+28Sn5W<JA1VRWA>_3^*8zwiwRW@a&sgE2reC($t<;wFyq%4yg8=DGEBW{oQ z0mKe;HHq8%FF>v0nKO#N_1i!hV+=GGt|1uU%G#={>pbvVttDVA1f<l3nb+>PY0atC z0~f^pHvyDs^||CY(=-smpbM9T@b_Q3ueAm6cp$`QT`B7}M=EW{wt2T<HX6&8Z8_bZ zU>vE$O2E}LO>>-vp<z>`RC?BTHB<rB(0!R6LBS3C-+^rZJ0=BYDh`lF(aC9Pdmd%+ z84ZP+T=<&|+LLJmAgy(KPA0gQFu@T)0oHww5Ipz~+wSxYBp|C^IEP9EB&c(^QL@SK zq*8UMS#fD;c_ocavl#w|4|gBB@`^(vtG>Fj$mfeASM44d4gvmmRj<3jc(Ypkn0#}y z+P-Ufsau<r*}z?IG+;D5a^z~;!cN!EVQg%^wQYvRQ|wwIISZjL_>gJom#GE!UpDm| zD&-#o+@=YG#n;}v$bg*L-p&R%=pQ<C_V_kuHDwg*w;VbI?9k55Prgu!&SF@vQ*5?Y zi$;?H?@CI6=cBEoYpZN|X?K#pmkR;<-{3Oz2ix1H&mKCIW!PmRmdpowc<0ue4jsb% zw>`u~0kmEpuC+S=^;#}@lPN#k8jUzEEgjumSz)c$bBYrFK?5O#AaM_#f?tA5<TSaN zkZ^Eyx-?>qu#&$I#r5CqX=Gl;=4oDn>14Vnd}IO*ZC8dWvhbPjZ;s0)&DU`z+H9;W zuPqxI*C&(ZB|qg1lx{W`qt%t3;7Mu#bK{r^fX$8jC%w(wG_9mx%wfMjfJ?U1;x3>x zOy$VHbs!1{xzJi^>10_#sadPX34mq!bwL5BfaTrM2=+gcAo!kvXt|CuwZVvaa6n4D z2-lDyStpN^pCFgW&yrsR7wRyB9YRL3lCqR##pcS%VLn+2$yQ}0D_KocuG7$#Wp%jZ z#3nkYtGc&tt7?7x<tiHpjyd^ii-#{{QD4f`YZp~jR@Fkvz8YJpWF=%s7x0;7c2;&! zhPKI)?QaxKcWAhngFADyC=;1(T;9r}6vYnd=mYH)xs>wk;O^Us<sM}v#vbLr5X6g= z(hM`2;ehU0o4s1s?%nzIR;y*V?EQZa!;rP8cAc={d4Pf6t(ztVTDX=)=`lLQA&zi_ zRoc@Dy^_|9Lu^U?$Xc`6)V`}Vf|OohHt80&sHqgjLI@QluTx67=|>r3ORBeB>l)2m zw3%?6cGI#DXpuOqXQ$m&-sT<-8l#Z4C;+$Z=90_mx!8u-6%v5)fIdsvQfM)tN1-dY zkd|R0=>J)()s*+OR;xt=Y+-~A_Pj^&g?QZs@mfTDF}~Ov4u?6k9m7Cyy;d4U)X)l` zi@>?tWGxJ^g%OQkfX}%JTfBvLP!~OQ8W95o!?0{^0Q%5TK5tQKoH=~>aH#t0d7dxf zmA>!O0AGp^K7>b)<1$#DOTn@P^eDA0T;0HH*KmC`a|;|5*h4T(lhTzXJbIj-2g;P9 z6xx{vpxmG}W}!d|%5WX603a_2A)Kg#ueM$HdSs29Wh-X^Rm*hgCD3i-MKv|_LM7Eo z6f6{G8<oFFgQZo-H-~73dtZ{YnaY^HA;zZ9_=wip^j&rHQBO+w=@2oT9gmdjoBG-? z3{BrtZq57o`FtKChV4kYzS)R;%VOLJhe*M%PX0f*yL-p&M|N@eGb%Xad7i6G|0lq< z9SlNzbm*JP^}ab63|wXS4H+K6Fu*}zD0gGfiIXT)y`zkS-A=UW2OD`u+}*u{*xWzX zb&`=&<X(wc2(mH(_ZmFz%w2-dMW<axv+hA>4?}G*9*;`<|KIdn>DJuvO~3x@zaAh4 z(_@EN)uI0p=cXf`km9~}yB$f_GZQ~{EY1wZ!rm-E41)ET`3D?ndUX{J78r!^{LD9$ z>$<Ko{C9(8I|I*@PTm>Sk}yz0^(zPiB!uXLeR4Bi1mIm7Uq_ynKd=52`6BsqLg4%n zb99pBab^cf(^?7hvb+#go~B8$ka;R}rL45(5&}e&t~W(tVom;{kfsQ<qn$7JRmwke zv1x5?%`3#~I4-kZd|47zQb77q*12jnU&uU-iW$4b_zu%JD`)c#4={nr{j1oDCl!Uj z%Z17}6ompobXE~o{Qxiyfu`5wc@7|y^b$i-3P`1{wK){mGiF<i12Aq|j2+7J9HdlU zY$&8i=iD7<j9WHibKB~7ZR;vbLdZerVPRU3Qg2lh1%irwDKjt)ictJ7N_Fai69^k1 z((YAZf>?}T45w3N7w?X3#<VcaD6uSQ0wkw@em4Rw|9eyTv5-OpyR%(?HZ)Aj>X{T% z02f`u0kDl_lY)=nv5hDOtr}EPNYFsz<cn~j^8bo^@Gi1PuHoD7X5}&zL|lqgI$u(G z7Fk--!F`%kvYgVbap^FX6jk`4y!8r+;?U~a`KLYWnYUki$JX}N?9o>1tQY>o=O#j| z_BPx7`*&AP4jxDbS^D~ZtGWK*xmNtydcEGy1`l4_XuWB-nhb}wlcv)Z-(^%q$Btj; zxqrU@XX*0t#-J8jz1`KNMSD5`HkvEr%(H{!`sL;2xqwSAHx*%o9Q-F<gx3;_^vF6n zO~@#o$GjYs^OBb%S;;Cd@@yc5oR*7f(ZxC86cxY#v_j{N{6VN*^4|^?6<*xGynh+? zVDF2Yo15+R^+mO|-UiCfTz`K1JB{AFzv0#E?cKpkPF#J>*|Sq9myaF4_S$2|R=n^B zi^bxrUtN6lt7qHo_G-Oeudh(LWteBe5I5SXZR6&vW?FZ9r=W9WGz1t9j|MIwgy6w{ zA3TK&E|EI9qO|~BE-DWVL9XZ+&56PZ3og;38q-RH2S6)cjw29$l4&X7EBjxCt^Kcd z(wf-jzSn`R(LFrW>-8Q@!z5Uqd54@ZJ{9Vx^DcEf$3$IYcMG@#Vbt0Gy-vr)KGz+X zb)pdVf7)@JXS>#(y*u{0UeLL}&7a3QsQti35y%%QA`bQs4)Ae!71<`&ke?)f4+vfC zDvi6*%Vuaz9g&Gnrtph2$SjqTiEYJL;bJLGWGn$g#2qwYP12-Fd-^M$=M?~5GEL%? z;a{|v!aWV9bmDQ`9|8=*+|S3-CeSWw7a6bX0-s#KRpHTNXevI@feNE3#YS-%B%m;c z2-6UY#Ym-H3`$)ED)j^Vh93^K8IF@>IVkfBF&5S04es_=K~iQT1uk?gcjE+-xMhsc zvJw!5HoBN94AX8s#G7iCi4@$L?Kl8RJ0CM~qWf3Dvxa?2rH`Cpe?(D*eQr_FG#g+A ziekTyR0ZI3-w$MTbN>|rqTx0in}P<ELP}2>A_y=D`eqm?<WyKK>3V>c#iR&LQ(K7C zuhkeVFHW60am)GZk8?`JkA3t<9yJ(OZQX2yVCw#GsD;)o6G1A)|25H^GSmo+1#Psf zLEG~Hq!-y1Qkw!8nsFfj!?bg%2Zo_76Op5ok*zhP#!oZG0Q6hlLKy`F^|rSmV*n@s zl^PB&7{EEa;SIn!2t>t{DF6UC<%}W-(@>luM`oGr#P@(vO_?D9B>-cABLpA_&W*tH zM1wPUxQHU?b`LYg=mmf=lS1|t00kWZC?m_7!hoPrHwdAG96VKy(WCX~jY)khZFWG9 zSDG8CC@ppt)gp8UI7rZhSG^T%wSviS2`=r2<~ZdZhS3SX=lLA=_JBum%|8)^xCc_! zH{y=4>uuDfgf562SixTHALK~_h8bjkb7iVDq{%32B}w8d4N4|qEEOp2VU`#j&Tq<d z$g9Y^+p}!J*Oijp!tjBTZI&ytOs3<`P6!8_UJ2;}vQRQCMkR>%R@mG{S=B#_^Ri05 zqc}5&RjBe?sp~b&rfHgH)6{w-K`U_429^AbDgYC-20IgiQL||orrETzdd*T&1ubzz zH5vh>E@e@gGA)zDrRX5_!;oGsS5KSOT}Q8rRf=nJ9Z|Otg)s#<D*+L@p`A><F4vH* zi*+Ssr|x;0XE!H^0uBQ+%=DJ%>VFywpjyX-AN=6p|G++cl_X@993fYc=k;VKjiVze zG!2s?ufnd(VCh$MprR!8cElvfO&?Os<GBWRCyZj?9k3ki&Z<0{%tkDoONwvUHRbN^ zk==>bhJE~o8;;pp>!-P#c{eUEN9fqx^S!mzWAD0iV<X~@jsDWobslH#k$w-WY~vYb z+j~cChXHjQ#9_9+o(&N@ZQs9Q&2v3((=rU>$RWcpto=LDwngiTb2qt+x_i638ygY! zufP5tms0=2=`(F<+w|JAXU{r-_E{Uz1{>+IZnx7pEQAN{nOPJ8MA7Vw3m)MbmmxL+ zJc=h9kI7!IUM)YDknrksRV9MNX>e^eiv>MbDMX`8wbe9jqsstcb=`G*I{plJ-tw9F zWY@CbM^2tR8JsRW55TgzzkBlJ$@uiL=UHa=S5KZi8J;OT*R;C7Ij6RkTUvHqnEX#v zczVTgEwc+(2CfUYf^FMNw}R^iwr#_!Zw1GRY}<yB#v*ys8-L0|n@IgEt&u5t<`3ii z$}gri3V|OlJ1}BvR;f7K#)=@W%CH`gTmjk{MENxaNu0Fuc@|nYy&@5LU|E1iSmfjB z<QW*@$Jl{k`YF1xh@&*dk-5AmoZRsFVxG@GM1@E~!BI)%JZf--$d43;0Rk0RR(Gr& z6SYx%Pp+Y%hr{cx9u7?dEyGA0z7)(QKA9XlHkt6AS$gdNH=>}HrVKUIgA}!jy0)WN zEC8S?2x8IcbULaXdjbLe+nCH7ikOW=D{;5Q))=K20GJL1fLE<0E1scJDZ_dm(_DYu zaHtI|OaR#dq=qpZp1)~%iG4;<YSCj(w-MwTU+%9{%N}mHo=QE}ZtXouyi_D{6f^8@ zof)~>f?h0eMYIrX$axv%<OJzuSpA4*1<_K4xBBO10yL!*1R2YV>9}mqOaY%~nnw=j z+(B4skC^TBCQ0m_2;JiD2X3|717kccOKUT$8x&ywbIj0LPigAds8x4W*_5iwuIpYs zi9)m}XzF=K_gt51K=V&+Z-qIO>14TM!r*kRb3BT6&Nb>*Uaw046vO(+$Oiqs*b_4( zuA@-4)iJ(`PJ9z#+lEHZT|j8llEgoUpF;mYZ`Iu>WTM(6AsV9suJL<Xjr}8>&-tE_ zix*$~+~+>`xl8xIruNT1NCJ)@?#0i2?u&oC$(A02%|{jwz5@RNUqO%;?&(>YU5A~! zg&y2+@c=ETwXm<}$=#^fUINb1C~7u65AQ#dH(gO}wOUG#Mq3xIyKcVVkY$GtpZ!&H zb@lM>@~T#i`ROxP|4P&I=<FZIEDBqH&zFiLN6sFbOq!!GI&$RpD|UAJefq11H^;rc zvwHjOFEZQhqsPE>L^jBkyeA+o4P9C@u?j*15($XmDG#Xi3Q#~dAmg)s<HgAL5XT{N zL~EUuQ8<32YBq~eqhT9LY12{$Ud0&aHyDOehM~2gabp;14VY>Dq>?M8dWfUEGK|$` z6QCA>)~2PEGVNOgW9+#~nTAq^`FD%t;?LT@xLA9V&erV&eY4wDjP_IowR1O?5uaSX zNmxwuMY7xEm6;;>i><%-i|s!@Afs+C41%!N9Su$J?d|RDKmUuZzxay}`F^iA9QJxd zcA0<J-#V5Md=9*t%*pe~<K$iBXBe)+wPsiuJ{ap}>f`7jGj$iY!I7{C+CF}oIt3O7 z(hQ!tEid*~Y2V5&dSp>8iqsz37Ib=?l^1^9wkSqv#>-aWyDb5yuM-sQ%fNTbV(IYG zd{NA@foY_*Ex$h)jasW|YJl7J0D~xiO+~>h|6B$^V=)}rc2MJtA$5J9f$KFJ%PV!W z*&L<K=4jYzGTv*L78rq2aolON+v*2POG_?*yW|46FVq0Kr2%y7r$8kNKqU&E3r52L zFd7EDeb(*Leh#hH>UeD}T#IAIwB2m3(ir_X08d&=Ca6Iio37_|d)=Vb4iIz@^g8vr zV<|lx1_4cNi}N(;_Xl>G2GJmI$B_`Wwe%3UOD=%B<iZl@)>B%jC&}-71?tXvy>0*) zbrZlO;^4o@MSLaLBqztoW8`u2bL1O@*bWFfAVU0MD{fefPZx!pW-x!@(H;)3v~pMo z^$CRVO+`8_6MDOB6w0nSpFsw4nU8I*p}Q#Z!i6Gxpt@DLC~}$PavGCoQ5Z)Tr$x@F z3QtfbkrxrH>MPc-F~<o<Ce7+5ZA3Ol!L?~p(Q7#le}51JCKF2|N4RdoQql~=f4}CM zYbbh$7;2s|7MqNYBPE55w*%o&tz5V&3`2!O&$d_-)IW@yph8Lg$lx3eRG~sGT(@zb z0EME@0BB-TI`;*mTDhBT!(d8zCk)2_A~a1fUIoTI;AknqNFj>TmYFU$!VnsYdLGRj z50OF_7yxBp*x-7ui{Q^(!-Ro)jW*n;NyzS#p!PsYy(B^P8(|1n0PhHn6bw7C9Mgo> zl4F_xModUtVZE4J<{PNcL~-RmT6q68nPq|q5D}Syva>>tnXl3|=ls#<*!Mk6lytse zKf|6YUnc(Px2w2rb8~a@&UX8X-0^l{W0P)TUOx7#@Co=7SvkiAQQF9KR3p!ULRwm| z<j%k?PNUK3o_=Ya_FAXWaH11~&CTjs@&}>X+#H;U-db~A=(N|?+8uD+`n5$KC)b+S zC5iLm8X`z?@L61eFOtLL1LW`EUaVo8kT9>JbWx?9CJi;V1KW8vyEqiL<>RARq?34D z4&rf{7b4A5SHY7fSz7&*Dl5m?SPfign!4m<J}$?FkmGU^qv>0oOea&K5Ps%3TO7|T z=kA;iS}5mb<Dv-=6=NkQTzKLcU%blYtP*loE#`|NVuZ9-5%oeO4Wf#)TvWMiJ%}3u z2qmIHp}W$|i(6cV_`KkI0z^F(7R)yZ_twZLj?&3=lB@Q4aTM!3c~S5mB#thQj`CuW zJ|ASBjJzJu<)6&TMU|3c;Z|5*;WRFaej%$x#z0Gn6w)V0oDDMJM_UT%Jb^8t5sRsa z#WblFQ}<xv8B2_x=q`lboRTD+q+3y@@Z)l+`?XpWX;S6I1?n<AU;tqB(s0`rj<OK| zweWx=T8M_}xu!2T0`yE<rT|~}(=c`&#uP(^6o3N60plKntEXvU$p>)bW{)#OimlpO z7aWsI2-@|L<etaswwxpd`1=~A6cu_cH|+VolBTHunxQ#tAq6%HO<QuNM3CJCNOr0g zwnod#tyT#5ao@6q2DJQ`h?<m2ilz^lF-qE|GISJalQT-U%s6T>ju<lGP|B$E`!OS} zJl{lsJ^+A)s6eH)PCY;bXeR)@y33icyZbLyP8=Fsd8XkS4h%D(T*?_UE~UVz?KqSo z*gC>-<ha=3_JkQ`NU3Wm1jFQ1DF+Z8p%`O;GW30Jn_O1Jl*8)-Qxkha9oIIwp+PdC zq~};VWyleAQWI$!Xhms8D@$F}vn)W@Hw`UbDFW%kosGmamTOuA*otxIP}U24G&j=< z7X)Hdb4?4(u#Old0N$|CN_#K!wT`zkQZj}J+-FQ1^wmrO(Aofi!15R{r?m>g;2dyy z(0cD*!vRrH&Hz3cQHm&NJ2ab}e(JdjK*q7}wL}mgr^8Z9uT~$nYK$V7CLqO{<w@0S z<P<hJa%ow%wkQBH>bRas5ddsMgH+1%C4i<3!9u_=uqaY0w3MEf%C-&5bT}Ki;JTg! zpxAdE&OAgw=>yQ%_Jg2peB4&RgV;BuP@3bR5<pKQ4MHWo%TyGW<v2E_fTjhAq3hUO zc)%8ROPOccKBacxcmUL7hUW(ogwhn1kW?jQD3yXUQ<IFK+N6+CUAYMeTzRI6DAQ}! zr%!F5lm>uc)+ur>g^NIKC8W^JI{30}yAy$nq()ZBNpdrJ9(fbjDOB$r62W!SG)d>u zeM2}kDF%|GyK8##4ny;)bzD-O;k+k)!XKH<W-~XA{bg#Ju@}ewp4KjZXRng0^(&{- z>C}s3Z-ts>;ze<AY?1^{+J-u^y?8%@i(>6SuedO@i>>d+0iuj%X&4$3(0}Mdjy4R# zwn;*Jv+NH|r2ms=U|HD{5!=u`2!iGTSs{izA^8U9FT+#tMbakAd?j>AT1mq`@yrxX zt=N!GsjV(>z|FZ9UI;?z%Gp=BEUc5H*+s9L_fOezFO#26FiYXI0GvNO)Mx*o+wF!y z6O`nP456=O3{|b3E5~)d+V*|(6TypCujq@0Witk-H3(tf?lc;441%-sz+*R#GXd|0 zMYE;#Yxef`gk=W4wU_6)^pb=jWu`DkzR$xXmhf|0Io+pz{^x(b;=AK|QUk!SJkJKx zs5e%>ZXrb}`i9Z;A&y(Ec&pRt)EoyO>Jvzi!&i8*Ti7Beev7g~lp)yidG*zpYF^2y z8iWQJj=Y>qfcgD$T9!9oam5u^9618-4whH8Zo1-%jSaX5+U?EFs*|K<;JQUIyKv-a zqgnrlyYC)cvAeswyZh0t<&~h`Y#cpuVOA8b8<=U*S!`~0+HenSY+P~0O@Dp&-FM$j z2qn?MQ}`%cB4^3%<k^HkUgjCW4q~)KAcxcm=Pm$1rSrrfM@*CHq?*J@I+lIrWHe3E zXu4o5Lp&Wxs#QfeA%j==)1wWCjsPfm;)GNHM-IVO6e>7z9e{5`EdeqBCqH-PRcC>7 zNKyc>eZ2Oh_u&5jN?bSGK-P8BFDI@GX+KU~C-t1&!b_oHg6o;4=YrXQ8*jL99-yp4 z+5phD4=vyClRbeG*2Ikz>LtK$zGMGi!1wEQ-vjWydi_#+aNH(><3R^)?xL0`^QN~k z|8oWLMnnfLk2cLW!J0oiGM#oi@Mpj<2-xB{Y}c<(Tmq&iAC4Aq3EJ(+WS0&GYis>J zg-&NW-9?ab?EWPyy0ST#d~q=v;<1P?!`pe}v)T8P=4C45d7SW}Y}4Qz7_M<XFEe=S zTi^QDx84QMzx(dM^@HF1&HsH5^xpjD-m6~qs{7%3yn*hMFa8Me*`xo>!NGuhaP1A` zPVyjm4tcRBeF*1-)kx+vfq^@UJEp|7YbEv$U|x=7A49^>G$W0NpH;<Z?yaW_?!aBg zZ;rd>`0?Y%-#_$E5X4p-MSSQO4x;O1`&SFoY;8UJMK|2A95kCD<zVl_EQLF@|IyCQ z@9plsV`t~=;lqay->(p9)-s%=-L7dY*4DD)^V!o-$sRWVbZh6Qg|mkb%gXXk!B3MT z<OI1&^6ZN=^}9lQJOH>3$PNaUNw_#P@Ns;N`(+&3IHagVjT!(Nv+x2_oa<SKr{4bd zx8Gjt^=fq`QyNCY;cTs5Hv{Uq?V9J?c7j@|ZY||3it3zgt*rV8aNS^Yb93__kVdcZ z(|B!lr6Gj2tw9)?pxOwP8qG8{Cg;zeKh|1WULG$mr_4FY>}?o^1E&#10G?NiJ&y^c zsAZXHr_*h4esp6!K-ha$v)OEdTFV%WzMYQCNx$7nTZ%ekJh|TJ_p_|gG;OZQnWeU~ z&b`nT<W}-1d20l5@d8G53YR(si)47Lk?Ty!UE3B2f9W{PrW3Pg7Q!ww%LW7YI;t8G zIN>oUX+HNNvY%;3krcyh61XmHFxLr&zK@MwuYV&*=`6QeW_LL1m-FQ%i37je$+<W? zHd(FKw}pT~)@*TXV-Svnc;Wu#Aik$tWqJ8}!j4_9_kg0+O%i7CB<VVy%MzvJ{tt~- zD|c(Pw8oh8ZYP`3AO4HHQ*W4-`G)=uGRE>oQ@)5%isg`bzVBGy^uBu9i<~h_jtlWq zaOqeW^aT+9bTQmmSb42^Rx`5qjGHz$VSVk6kA3X=Mb&J<?y2X03@*LsMK7x8=J?3r zaY^@}*Pl$cZ$Ekph&uT1gRjD0z^93419|M%$ln8jeq21nu*&9A6oa|!_65CdLF_T& zUtGwGY@o@-{t=H$K|igXxZ^W=DGx~_xo}$AECyPt)OYTRY*3hNA&%h6d{!mX-KTJ+ z-ks-#uwm5cy|9v-!f{3z<CGTuPt2Z*5B<<c=TJt=1-+OgQEqDvkRs><!BSyqVlZfn zbj#gF)3VSoXy_V3{7&qfLV#^K)HK;2I*5)7;C{dba2-Skj;JsQlZSvYe>?^oC`c)k zVIYE*$QU;)TiYkc0AN`hEE@qW8>C_2nnS_!(DmDQM^PAQ;ka$70Bpb-0HCBG8qHp7 zZc>V97@SE72x>QLB?(8A2mm!KM0J9aHQN#U|Cpw|fyI$Zr9=>fff9_v43KIrG)3xg z0stzRujiKSK{ri+Q7MBk2n05Xtbn&02n@&MBoqum1qCn-L@qdg1j2d*U#I)9&zSL0 z1fWgZLZGM&q=2SrA{WW$q&8R%?X}PP+;I#>xjWgfj)MS@-fc1#_>L2Bp^Z4!2Gnds zNVyo=u4Msm?g)yYmC`F9WCVzI4YYP$KNQS$Z1=-GE-1QIl0=b+uUUuGN#Y*jJYWFK zR|*7D$!^dTso*^~Nwg#~;TRr8Nn*vN8vU<$5#C5lQX_3L#g!iW<y0qIe8vzCF(|(3 zm5Gev(=JKbd;SYKE&ZEszWL_+uR_@Se_6fGJ_<=P{Oc0;-vs^s71MmwxTn#(9^SbB zjO!nN>?#dOIvS-3=)L=tcjKZ$>~>ei8yUQt5FpOMWthMh$&ipLp2yQN*A17El8>gy zN|9%I3RAV7>mIu~c-Z%gx@E<&_fvTM_`ARU^{;>ZzCrH$cq^rdA6&iHm(PLU`ej3M z+VtNRMO1R%<vC?a#ASBc(nQdt^H7>565yGqPGcO6<PaZ^N*k^bNx`o<cXo3V@zkkj zy!+g_bK3LlLt0;}q+lbS6ZjM!Kk>+7eWOpM47F_t&IH$p7^TV1&Ml9eIF6rw?6Jpe zO7)r$hq(~?+scj*LdO+jZ3vF7k#%y2T#325pd1x=byInnrSZc-g8V^y3$3CB-}fJd zS2ZB)+2f0sf9B$Cjf+2X`C_AS+ikZs_VzDcym)c{B9Mz08y7D&@{1QQUTj=^@8#R} z8t^k$qw&Ry7xlVEeFrYWTgVQ%g}jJ`wvEModxKJ3eo4eQwn`ZV?oRoirF802KL5@; z?{u$5x$`S+13-3icz9HAz$q@QfbqbzFCOPDZ+T101l`xqMv-(Z%Q9A04XeZR*p74F zd20Go6uB5=)O<gKY5Qpu9CuxXLK;TUL&W_b4w&&SMfK8?3@NYy+`hiPZX}7ZJ~Hy$ z=@Y_;I{4~-*zc1J3BHXr0D5AHrlo$6PGgZtrXqN~;$cdh7>Akm0eGa5Av9OWzXYx( zKsb-4L!ePOj>_boO{wX@wAo2Kj-xmMZXb{1h-@1SX$pb387H^>lQ=5VGFi?aYZ{l6 zIQd!Qv{@!hG?pZ3RF2be8l~$gO`|d?$8l07aWaMB>pq>7lj-DMZake#C+T=PR;T~m zmf|rx&23(8wVV^b+Qsx3ql=*<<LRVaOo3Q$yPTA>YF3S_aXG8T)vTP%XVqjro{y)q zYBr@PNXOiUMT_~ARcGa*oRy3DY+9AGYCNCJt8!e;hT+L5Q;o~<d^T4)o6hFrdz?mR z%kZ-~G{H<+mE-w%7>^=_^qt1#Y(Ack=h1vTpUlU(qsQ~vJQY_JeplJP*Z5#-!myec zUmF@eW|2;&^Aec9izAI4JE<1aNgR8}MwGIJ$#gMaSf#+d-Z1*r#ypuM31bNbpf604 z`}u?ceVj5k@Q!(vurjMP8nxLnMJX9)OexCNqBU>e23O7U{hhGAyj%vMKK0xVZ;K(L zPdU#+C(FyNQE+m-(c8?r;Y8gf)nNShceK=v9F|aMk3|6>0ZkJ@8ithVzPvJ&f!0(C zAx#57U>j({zW+`7-#}*+D!qcU(BlFCIwt342T%wW!Y-^eXGgEc*Ft77%(DlzH|zaV zoPM1ze9h~;@~y=ZdRR0Xdh9o#8_i|7S#Q1}y8MSAAYJo%KRqlWi09wHcdiBmy#DC^ zf2U#B*ZiuEHVmVE71w?@tev3%wDI<P2OIqyZe!B6CFuzQE!_nz(+=>dG8BNmy@8*y z^x!`a{v5snA0jm}I-{d?Pb_uP7N`CJ9k-+F>-<H<jhS#wXIj(Dq;Q;&FqW-$x8oS5 z>HFw@u16q+`eM7=wJpo^TVq(}%1q)UF&)k#Wv(yo*fq#{FWBA1rr>ao^nKGZ?QXZ# zmP*JV2m;;m4byab-FDe|#Mg#4!YHZR4&|Z-bocNbcO2fObocNbhsLHNgb+&9!B_As ze2%=Hyo0=#5XhxS`FrTj%S9#k6OlleiidQL!HL%uZhj~+%n=w^6!e)I`2H(gBP^uz z@=-hcRr=OC^D<dyvZ!W-n{wz96YKaiLgIp(n)<kR>}i&H{cMUb7;GDYX}Tz$uSI?& zMew<ywF!`>ole47((a@+08<;9`+(_@ya4ESr<w_4doTc;&aOADrybivpK6l_FdQ8@ zdbMd^ee}p^2*FnqOuamO^T15t3WG6Yt$gV0S@-409*Xz&ZaKBJ)nnS=?djy`nX0Pa zq3e+`vK_`OH_r23w8HOfc^<nKV~#yCqPo7LUM<e-O{Q&bXx7`>I(_rrUi=WFFLTeH zefnh0V9XdVuGu?U6zrV<?_@=BbnlwQ_@^LA5R(`;0jG*?PxdKzJ6s~m*{MSSHPF4i zRpq6KUE5@qOyh(ga9*gM!AaY;^VwED0vP36i=`vSZa*@av?F1DTu#cP<JGkxIQEkD z$Rm%ua8`qQeRMI)AkVkA^Bjt!$2<ysC{eVMHXHc7TVc6d)*Jec$0TG-UPNjZV1l6< zxVamRz?4SwvYdTwXJyRdkt<%Gu?B&ii8M&$Bf2n?<B*QfJ^k(qYfS0Xk0PgOn#hx+ znS~*L7auUwzpxD;!>Ci#8-@hzbf)Vy0BQ9b&A!4WNEQXgx-LMw+44;gPP5rrKkh%6 z?CJZNEZ>Mf1<&6c-?jvv>j1>jFiCgXZJ?_F%(ht?_oR?&fZ*93rIgWb7k+n3TL+(k zr@>`%g4{-0xoEtY>v3C<`}$Uq6tNcxd?f8O70@J#qq#K=r)d_UDljhT!-)WJ$7~f5 z!wA8eE-y`e>o7d);puDEHz*kHQgL{r-7x{yAgygxTUEz`cP<YGg8AM`(&;oa+ZL+b zUaZrpWf^AKABZSAU*z!^!?pEWhXeXouV0eXarX^p&o&xxcy-OSEo&pH!?U5+Kee&E z92*ccR#w&)y}qvOJQCS%IT_KAPRp>&q^wBK+aG;OLz<RhS-^#leB>h^`tS$eaQ*ey z!{Yk=|2cl|d*6Hg`!Bo(n)`nV&HcZuz2z-$c?)>^-v@91`)>jFt%NXAKe!Bk&24JW zBONk|#MkAe9Le0ePy%NlLD-Ys8yN9XQA#-V?Qee@YKQm#E(VAJ_7C9acXoD;9Xsr} z`|ki}xi^Qu{f+N@=Q|%f{C8$;|8&g+0_4vIgTdah%nU<w|NnpRgC9Kno!AYR{wnOj zr^tdlhmdM^wh1d=I*q6$K9uy&Y>OA6NLodX5?)Jg>Wt(SDSL~e9S`tLA)CpzYRuL( zE1u`NQS5twp2r~yo84LsAdH%uo(F&!fMt3#;zytQeHlg(!mT6>EH02Kp=djfjT#J( z%r8R6WeCs?1Hd0^)M{zkXmp2-I_13AZnt~G(fY7akFzMUlwho$L{S)1N~!C*VbO25 z!hlL?w7We|qEw!3yKWTuz85E{>w+0Yh@HWpuxvsCf(Mu3M{?PE`W1PQJW5^%SHRuy zY<M-i6SwgyynqkkbMPX*6Mv?j3tIBaN5}chNkwA~7FT^dfaEO_G7)rqo-~~|O3U&! zm`;FXo}^>MfxxB457(;sxJ=UO00)Icl`3fSB7G;cNL34(^*HD8?ICVtJLV;xkK$Tv zc{U$s;m?q?R^al7&xUxqMI%z>{5lukN0~T7i<*y>{ER~gs$=h`^7*HIfQ><Xi_{Nx zzTgWg(C29-DJns}3{My4^32r1oO4hg2!o5+FQ#M(aK-YZ<4k0ycLs6_Cz17Zd{lzc zUZ)arOWA_ZGiV(%0s<I#w#6F}1m5L7y(G)3bg@kfK<w+-9EeK3k{3ytM9ehKG2LJ@ zNT5mt2xI(X6A4U0r2s@+T$N?WZaY=~^Mhhz1<}yM9Pbl8WOyzaAuEwBc+4amg?1zh zGi^T~quqx8)#5H9Ehb;=YRP247QXMsqnc8Rkb-I2Do%Pr3TSs7ZW@*Xpl=nD)u=3> z>-)mSUN!?EMK6h!ZJHP!p#aJ<4Q6*=+itfNQdELV!A%6D;x~CnfpaFWQrEHpkm8q8 zpnyVBYAQ=qI^HnBQkIoiR%qLtaZ2r74ceuEEY=D*fHX{sz->FUtk|;d!@&gb&Kr*p zCO)I$qPddVqmU>?N&^)dgIDfI(sWdwomImu<(XAJ;F+<R(V937Iq!Kh)7Hfmf>NSM zAXtC-7h0Rln%G&5q=@p6GMx))Q3}x80Q;n%$QHP=Oc0p!_y-G_IRMtKj0!RCv=GHT zEcZ`O_e<=>5hyl!QADNF3_$8l@d$ZHKoEygOkm5w<LFdHNd(Ta649F9PqY?MY#k7l zu<CLuX)GvPi<ay4a#US0PD^Fq`@G1NW~$%6Ce|u1&L0tNovU769f=2074Lp^+b?m( z#!(bo<8F_~V<rUjnnklgLIE<Yz0NYx9F%6x&pVgR)D#f8IA%m;ATJ2ei1Tt0oC6lA zW~l;e$ujLV8>0|)6uSrza<~xh!~jx}{{<4qN~xGh;j_auFA5H9AXibG%L20kLK8&< zA;dvzx&o^xrxZFc0*a$x5TdY4?GS0_g7MCi5k?mbmB56E6&L}qsFYKpROb3V#NH7# z!e}`QV)2=Cf&?O-iy}{ld3Jafk|b3*K(5jx31^2{4h?}qGO^#VD#kjU0~+T9P>T!V zSq4+>=p>J5V++TkU(r4@fD+udAp(oIga9Cr_qB~95dk1$gpoi?h*&WtX{3CTcon4y zvEnF*20|8N2*BxLYHRPw4ym0u$-w>=(+_oB3XAG?{kYo=0HNC*ho-B9rL61FH=mIe zx$Zf~3PL$LLkQlbOKh4nH4MNeO`8V0J^-ff#iP;#D0Z%=i#+=+Fb0ePBlzc}NXHr! zC7KXAsuNzg+xa*6(M|<DxDQ^_>FgA8O-S?hyqyP3+SbgKQtvmN&1nQCP!YzW_Pjfy z+POhEkDMeck#I)flDIja_~w`8@T;rZtUT$(yKSYrx@Nv^CmWtmPRbxuZeiOjTQ#_j z36A!%JP<EO!YCNqFA!WhrV%mSwu^Qvw8M0*s&un}lNK_wKwcHlkVSVI(#Alq?x3T! z=CW~*gd7){QCCyeU2*ZcUEz-I-|l`nj$=(l%XArVGFi3<|1XLn?R@O41<)GBc{YSJ zm02-b3n?PY(3k=<Je8FVnhbWkv!h-YJ%DkF1uf-*J*SCD45BIvQ2_g?rU0yV3al_n z!h}MKm@HT1SyC1EI~G_cMXbXd04q`|H#1jY2oZf)Ajk}MZ4lQ0UQIuG5v>%5qP3C& zF_7eo#bS~FIZh`R7t;yi{y`f>(LE%B*WI|t;cXCrvD^9}L~y;=>pd(=YbCGhN74Vi z`OR-m(^QmZw!q$)5GRfa{t+f|&KM3u?CQ!pOGFOwRro@uW7cm6h7m*@5@{uhEi)3L zI7fkGX(7*%7zGyfX<*7E24EWlI}M}}#R?)DEl3K`s~w2Q$^xNtSM)2t9Ex|El^9Y8 zEbNgcT7x1aEJ2HSPW7NT5loo@KAzq!Z!8SR2@Gom(B6ld32vRBBERL>-sc05E#PC^ z>l}0*=x{H?jGhDsznlMgc+u7scMyP;eI`|~(wlqTZ}08xJ$y8Fo&d9bI(5*|l8^bK zcm9HFP3-}qBfMi>@4o06TcQWw>-?g}>}WFW2)2_<g^+Y3K7P9SkfCMdr!8^q(7ASH zdlaA*dQ+ZGgsU?7z`KpS3CinQhgY;qj2c$d-NTYr5!Mo=Ip0dZ{cP^YA>J*U`TS~& zg2=ShY_)Cx*VyyAss(=F@>AfAm!G1_Vl*rZ4R4~N7z~SC9Yw4aX^y%|H%cW+bJ*5~ z@IDvHm(rkBqEw?*ck(@A&<M_IKrkjSpo*ADF-Mi6iV!riwYt&%y@cPgePAu42BcD< z)=|W)h&fUS9E<@3&59U71H;`>QL4*NQAIu+7KMW6bXg29-(5~xnG|Y51UDG;Bj*sE zi~56sBNH-2DK;pg9~sPObkDP?Frmg!R0>KVh-sWO-Y+l?Sb5`oBd#$*FaoD7)krMq zGq*=0BMQeIr6DeK`d4tbv&RMz^<r>QB+&3g;RuIvq1Sf%X63EkOfwz48#ML){vMok zyYLQB*ZT+K({2~u;nr!lJ8s+l-p~&y+`a$gxZ6#j>UG!mAD=YcwCwdZm%mi?dfz!A z<Y(sEA2x&b2!Cxj3(Nz323<QWFxP0CH-2r0Dvt_-p^sYIovYSOTbsduq<#+lrAX#O z2x%5P;PT+g?&t_$Z@d^lhM?mHO;OB;<8gzK#7(Ua(I3}I_^QW8rRfPr_ecEg(e;ai zCHjyp_)5&nJ{%ohTTZ9ub~JXDb?I?*5BYdh)^#pI0u^)<kCium6%@sInGY~73VZTz zecpMh^8uYtL`G;J|M=a~&+XE3v)=e`u~VGswtPc_t2hFS#yOaF;LUb9?db{x;}kES zhPLIi@P{v5v;ghmr7vk0h>P|mui`3?^E5Pon$W1at|}Cuz|L}}lzSAPjL|eMkE3AW z^q>FvpU(xHjq`yKAN1<o7IC|K0KY&$zx5+OANL5n4=&o3ReNc>z<(^2c6nh5C<@mM zf+N(AYdLO?jG>4XAgDO@4ne8maD2pyNGpSAADCXX7GQs^7<h!scf#%Nk@aUg9eClt zU-<2Mc5v@(ussU(cYx$^X*1hwH@h#}c(4tT6a`{Ha|~^-=WEG=c>~0Hf1*<0!@^mf zrb!N&&$BL(HL%a+a(;Gprjx_M1k%KL5gk}lg)HkTvV6R#i;aHe)d#971Atp6q5yqb zRjJon0SFp1Ie2BNAlH?NAbIuGWmU82K@cJ|!(lV=)T~FNljGw_x2ufi*hZxC4|(v; zc+5hbrqlhbKI1>$dAjo<ozLw21H>?bQ@9SVf=A&U;M3si;Vtkh@aOP9SmGUg8s8H? z6hEuO5E^godixbZ_i|gAudWHj71%GCtNG$jc&t@cDtIf~4Qv}pf^2x^Ed?R~U?s%4 zz-ttpixT%Ogg9bE#TBCK14>_LX1eXuNM^##@cC6)Jte*fH=oKFi|HJ_&C+r;lf`jS zSFCE8&A0RQZqD;<yW9lFVJIf}JZkbh^sv@^*q_Ih2ybM2bgR0WrWDs%x0O<Tr*5XP zE+nZ5M1TVsyRsR<AyX)9GNsLQHC+SOm&2n7{v{__EKw)gs64Rh+E_{?*$`eurJOM! z<Z-jS0JR|u5_x*sMR>WUu+`e|?%mWmy9?2-(aRK79NC&6bwJ)=xh+c5g=`^O;ECY? z&=DEZTJX^nD7uiI$uTl`w}dN_8h6VT{Dn$2p%x=x2t_4O+B8cJ7VR-oo*AjLOme|a z41_drP96pzK$bvQ6dF@hnhk59^KR~IMF9EoFWM9yRJ12A#;|IPu=swz|E|?Um=$3& zw<s)%8Ufr90&1g-R#Jut!22v{Mlptz0%fi5b(_)A;jotxCC*`#ree{$8p(vRKj`ll zMFybiymsEJI?ufkQNOPZqIC$`Sm#6&f*v*ikToelQ8_EDRRjouwW9c4e41((HzfUf zF;}hyW-G&HKneulJOA+#y$r!7!q&6*!I#O9RmG@V60+CADz=+Aj#)#dAX$0gK+9t+ zSn$s3!`BeQkie1Jkc}k7qMc=f6cNF{>L`juX;nu-81Q@9IQCgpLSi|~@oDDDYN#=D zs%k=-h}Nka0)X`)cxH_l{M|;$w<Hork=58Zg=tat8IXTk5iv%p1VFKcSsewzxkRA` zXflycP3pRWez!4CqWGeSgCItOei1s?>kSn(QBZ`6MU;t@%98bso2OZp`!1;%fSpo4 zj=Q!hhe`{RLa3W2EjUR?c}GeSqE<d8BGx|1L;w(*u2NY79|xoXG%2l2%+l}l(4?6> zRjclx+Ykve)XoKfEYG8#vZ9o+S*|RK)H}e3Q`Er+aE@h7p8H5RO$VycTeBC5>OHN` zPEPho#Wpe4__FK)4$ImTfB~iBkY(wc2~;a{64Ig-sSs>pfR)lzrny)@g3?MIXwqUt ztf4*_F$_v6eWS={J<Vbu4S=BmAY|U`a)8*=Y($z^4oE7>AdX|u{<Fg?vM~r6iLj>u zwCJnktRheh;iHw9qpS=t@p^zmRVOiPrPx>zMB_~$gqKFnBPcD(`4pM;eMF=}u5}g% zQW=^!axC5g=$J_<6#;1THcB}HrL;oJtPv68Jg-O*AtYHI5h^sIl{W^pwZ@V-u+9^5 zh%9P^o;AZ!5+VqOyrN(L!B_+k&aaA60BiygAStSq!j3If`V;U^@V$P6j(fcGQJoIx ze(^vU94JM(J#Y&ojgf`rilf%c)La4&i#U{$rD->d5ZD!-&tS-!#oOsj5l?*)O*osw z2j711-fPzm4*|yGn>X*j|Hk#B;oN#}(QchH7vlTOAk3z_-Em^s{M2cdX8S{}5`@G1 zj*jw7$EVBJyylhHdwm;UT(s@*d-JAgD$Rgp;gGD>Uh8_FO}8xJ8?R9L^-iC4G~T<u zQvNiH%O6_ydjLKJgBbEG^+Zwhwh%?tBtmrFqwe?i_Uc!><mF{~<?#CTd#|KQcgnip z0WgaB*gRSgyIQ5jU;{e#V}VnVcQl=G=cV~O(wqRj`AEkQG!R5pGlp?O8UKN82KYB& z@_39X`iIf919va)`&Y=aVJ}T&Vu~70-|<F13F846lei|10McxDTpqZr02sJI5<^k! zCI2}6<yRe~2{@mX1=8r#KJ7j_F1v_@*UZ|+Nso*-V9R+qveYS`#Qjl{ytcU4S#ayT zF}a3FJc=(=+g;-8U?;m5yD?}ML;v>TzbzrlhHpEWY=HZ6BZpuy{8iiH+w>q!&dTzS zCLPC{DElew!1s0zI`?;;=FGu<9ed`|2?>`byk@d>>k#Vyt)u#?l2#qCyC?EPq%xvM zsra*{>Kk#-!xYw-ypJSuN0}_4=IOlo<aRc24e2ZkKGsP8k#1$p#qJCEzFW6$U3uin zF<TAo%?H-jSqmJ+{W6N7D7)~EBcKcL4ij&z3&A=nq5$_nRbT#phgSehG)JiF5zs|H z@dm67!NR*H#9gP?_by*?<+y5ZKCnK)I4*zDm|N2++lz}^x297z$Mb79Vb4G0_YzI4 zvzMkYzj^cK{RCaM4EsQ*V6C;#6a~al)sG|j-^H~TuQ8~0Ej9#etWT;ag6-R!&#HIv z$pSzp=Qq!1b$ji_>j6%<V!>Vj^>SB_x9&%1>OH`-xtKDJ;9b$4U)*!^$(8LU6a2tw zwq9q`1Q<I>+P85t`+nnoM8T&BC?~9pnzz=?oiiE=HyXR(@>|@uUvt;o37~13CeMpr zuQ2&R8si@f+29~IMXy)nIiGU7{;8&Enxfk)^4#<QvaJ8H{VW6M+dMCN-J&KPz5N&d z5Wc0xCSbNlLLwWow_GLLZ#34-mz~2i$H&L}`v+%dlVtD46^<3^xUrWUoSz-+?;qbi zK0ZD;J3H9lkIxbI##jF8Vs8w19?usY9OLjACokNE|AHUwd}!xmI-lP8zFc6+f3x!k zoxkpMVBIb@lSJy`MLUaWaT#gbb|H&t*)Cdc?;(%tc+;+vtxMONMLWS%xj5Oh^Ocm- zMK!4w?PBWl8o^%Drd_N`?O*8Yc2>K#ZYc<2sYglhCDP6tzey$1ZrWWjZ|0dZ-?FM* zREw%@7u7;TAX~R>yQr3=;o6qCCPqsDU4aPHts9g_3!Ao?#5aOFZkk<NwJrQ70KC0Y zPXhov3;^)7Qg1Jpvp*_)zF~LOQwlCW@ZpCa`G%_pS0>;7?cYAR3IOn=dHCUnU;E_4 zH(&IYx4h+}E)EV3u1>C)haZ0U;YVJ2bpkIxEp>@@aPzC*^~%q~!Vd9)y}JBvjqeTc z-l*SoL+ZT%-to%StMO0&^iTK8pBh|#z%$Q01J}yIZ_K+#u#PV-F51nN$(?7PefG(h z^@l}K44x<k@s%rAu3Y)NC!Tm>P&{!Aq}=#oN1a{gk<N#7KBs$V<Wp7pu^I1CXU8SD zFqDRi+QLkAOaimwO<_83Ziau1q`UL&3ajbwNU86SH*+`}-Y95l@pdv`0p&#;c9`;) zy{Hy*sF;l~Vm75V!U(9%?y_y0Qk${va5%)MvBR9wFV5$4O6QaghhMXgL!(*je<qdq z%FRXrr<WQHIF0l9wb#yP2&=27T%<ShYQQm@&2A@N`mgJ+zn<Y_%-G#>#;#}VdI~4^ z7`wj9rh-l3B)gshvnkj>ZDx;um-p{~22QW98Z;ZlTaK-)BCf6++g@Has8V5xJ@TCU zewwCh<@vjuNF?wA;*mY_41(=}fm6_ii|2D52G-yqlS9MyYLSm&XEB|W<)S+;^CG!! z`tlO4VyFk<Bm^kPwtx%jwU=CT%{5vXW}2pT_^Vn&H=FrtyAAb51B!yCDTQ`>t%m#G zM8kxu!O+c?>$0w8*(zTeMiE>M&-q_<*A*J6U(25S#Ux3t9wrGuyS?@+JgjB%>a@|g zdad1tt7!VP=RNOvrun?b!yr^bDu@|SN>5u-Hk(Vo41^GZ1P?C5=ioAl$TA_|`@Ssw zvM6O4mIaseCKr-emcAdODg3f1WBA<OPkjLPzWd$J^?JSD(Yx<H3VR1YE7B2=JMOqU z?&8J$Zv{aR02v;Ts`?h#+`N=MxJ-7*mE=}(iDi#)+Px}Deo*piMB%PMP=Lfbv}0eM z&8o`EQ8SDjXHVrALDo-SIE9n{ro`dSfb=Y!uU*8vG#2*N3$q(em|&ESj<Lvu5EP6c zMBA|u$}W*eO}VR@DVXCJrszJ~^Iq?HudjLDEuMGF005PmNulyR&?%XjLICDE0MxWC z-?CshTr7q|uq@xQO$y*R{A-MBsi<RUJC0lruvQQH1jlngAsj^C^^ObEba|I)n|}>q z#I$g4;2C`jXEiSgq1|bZj<2pEuB{#)b=sXU@#>7ZNL|jFX&N;f^=|qxW4iT5GfLA2 zXC6gYem?4}xB{Od4N{V`EEBLP2E|-y$qL94G5nN`4D}xXlV<bZEre0L3Tx*w#q0ia zv(nh`5Y`Z_ds>Ui%IER2=i_{FL#uPz?eUbSJFOcQbA;u?$4_i3yS)0UlgDj)-SJyN zu=6c@hkpd)ala{qvm)hS>B!OTha`X;O8~iar#R{nF5h|lxF=mIKhx4Xe*Dh+S2){@ z!xOf>QC@xZsmMLDcWm`v0KoR#)#36=v9?uhmVz%mcVQb?m9beL@cAi6q~)xfPY1S^ zV;=?i<3Il6KmOZ0^Kj{J+6e1E<9fDh*Im5eZOk$6ZD`ys`UK-Rj*-W46al7bnj(wi zD2B)Oc7G2p?td8W-2ZUPFbv)P{|%)Kqy34tp|#O|tf`e@v}zq~7-sADKI;Yx!O<0R zh@3^Ce)=;0|3j#dK0O|w{bFc74tt52;>>)C0xomixM!KZZ(1)7<2W3QdgJjM1yix( zC9embZ(5e=KV?w*jUT`H8;5${Q?32)>!p*+ER8t)667cJ%_78x=!iKoCbvo85IpW6 zjlfqI?s?`jpV_arPM+MV`p<mmq5U6x;Dc92tLfTT?o~x3_z<d#4?lcy{N$5Qe&7R7 z<||LUxsv1K&;Aa4AAXK-wpg-Pl6%NY$eaDZE#<|uqKpNqFVVatq0JTq^u|Kwlmr3- zzxcznll`JQpA~a=>Nw<TnB*k;R+9N_K9GcHK}R&@&G5BMFUw1VEX_-+pks$Xuf5}P zR=`T!ZpZhpbqhK!_x8#Xi_Y3~y86GSdwUbZSTD<U!@PBE&Dz<y;)<O^_S#ybwz9Rg zRjt+<e~e)i`^x7`@M#jO*D>xZKMo^QNj&A^=LHla;4Eo05_&~s7|~Z7#s|+YFE1~j z|De(6bPjE-3z4RRr>9S!?u^Us9qa2G>$gF7Ty{@^+;Bb5-H@>VLqKlYw(^%e)p7-( zY}@1r%SzLiDKHF>3T+$ZexQ(NQU4dn4dg9^1cJcPuV~$h=Gc0bXuw7`hH11A(1OKv z7Q4o!j~$hz$SN!eNIDvtpA6qWJhwb=%EYMAIF$TKY*9UB=pzz<YR)y%O-etF^i!06 ziqc7JnZQ#HIG0)n<1qYm7=Ahg2tTcjcSrH+vSk8j-ECPm171Twe)D;ZlYGrG0k(&> zg}`bYAc}Tw!^3>U0D&TMfEMC2fPJ0fBZ!Y6{RV}OmdgGb2jE}ZLPXUv)2}DyGYsPy zX7Y{LdItYm+p;+4+|WvaR3Ss4#{dp>EQ>NJbqBN#8L!7Nz!Aa;A$zz7J)%gRtdNRa zN609fW^=Mf4)obd1G#U;NOyDW#$??QgZDl3s-yFK?d?Bx@e=Os-*fTe#l2qd(#4Ax z_x7H;eEITTuh;8c+S|K$`SRsn?{e?rJ@;I^)Vp}`o_p@O=OQr(AxH2c94CUb$u@Zg z`8o0l^84ifkUuB?Mo0w@Z+SY8=jMu?vYe(9;$rs=EaDS7a^x-V%*!nA^f0Ttlr3JV zIi$NOn>`}q%*1gy9ZiB!>Ab}sMu|3yi$V796YwAK(g<fMCIpF<Pu6n9Wi756;<$_z zjDz`X(GpHXHYk#pWz(3n3v2w+G~MK1Qe+P`8jZ#r!YB%$fu;r5HXAvNnhj_`KN~|i z7&M-MUa#N9rfK?~X+i_L{eBl3mX*ZyTAWx`13naMNS&pTqhiBQN>dT08d7kUb4SId zR??s%`1MAk(SUonsTqKs4IHja2H*@w&N<<EQhJ`)ltCaw5Xk?xv$NA~9IZEgrO{|K zAh8V7N-O}Y(HJ!w0FCBooDBxqxX~DeK@g5OXRN2u9EE-m4I7PG9NU&<$8oK(9)Jm5 zz^3L306Ye=CZN(V0Rpt33(#zUFCVE}S<gG^Y9(|X>WK9^XrXi)>Hzij%rG3oIAofh zVbI%dyKVWd*OlJ0<lx}otMCr^G?{pT*5}3H%6^pmCV7(ldA>2nv|tmClX@<-%QEr1 z$hNHX5^K&6w#zltO=^oRNciapu=}8=(8URL7WGEntoeL2Fw*}=WIA)Z%ICp%DBrJd zQ6=duwA*WUn9@nIB2^e>LO5<6YPG&naWujp2m_jG`;Q&~ThQ;Vt&PWPYrQ^LroVU3 zJ$t@s?f;EZmZj9advJCV4*!Q_!skN`xUqZT!mhypj^B0HarhKanj~B3d#34u?>mkJ z+p!%)&Q>r@(;C;RmaYL~^~RC?FJEy8`TmD;=!#K)(Aq>8w+8*uL#w^F<JJh3{O|q8 z(|X*Rc>EHjjanC=o7Ne#5pBO(L3>V9>!^5*RQwRGeuTV?yoZpG)JET_;-Z?QP)^Hu zK9A?JoTl+SUR3$%#c4U`B@p)EeMJ??tn3L03+RtHGZpXCnSOIo%&Bu)S~SgLUgr?3 zif1X4xj<Mr4cS~YfM?z9?EmW@y!+kvoL+v;b{xlXq`?FIX!^>N%Pa8uQ>RWjj$=Eg zn$0F837k50>eMOM<-_67F$L$YBGJ3EIBz$UG`Af4?hCd5`scp=>tFx+*L!!~d1vS7 z8<kSpU!bWB17=%exVm$A_nPO9`<+gI{AsfWP_MgB?{qp=#}^IZpK4l`nU-mpX}D=h zF^X!WjwJc-;Wm7bIOI%w6>=%K<brxhYdp;d(&$|?FCVv1H}j$}brQv)?yOqOl_YK9 zKRuq7>88?tiwkj7q^HlEUzwM`X1y&^4+@@r_e=^2uf%SrN6~LL8u%q(GNi2O878z^ zYlhaEZsi54=lzs`qEePk5zvn!_;nDX*-25#KJ;i5(zJuVk03;|OB?lLEynDdKpW7) zMx)g>+UWbZKVZx{e3%0?o6BbrXc(boM!hVng<4W(`av*X8uY_Z9$u1`X0%qDOv*B{ zk~pStBl;fw6O2L%Qg;6Y1aG15VN$Qt5R?L-)D9W*ybJ|z5ki2(2bbaR;7epc2;@cS z;fM~=Tq1ihxBCPB4!gaL?c>L)qm4R9QLoRJlf<>Xs8R1#y*@xb84cZ#(t2-a=VWo@ z$fRV@X^(no!!o6_RBRKP&tLWz;WFuviq#3qU;^#b!Sx1;aqB7>1|SgGEH;Fq!D9QT z7HN{g^ABIR_0SHwZWP+>ENjNiMjUfH3|$vs=WVt1wS0s)pP#>aK0_Rh)>h-^K(Dtk z?Q}V7fn|rGZ2{JImX;7M9tGSze0wp<yInu;_Yl*xUYCBio9Fq>NB7U;#`@mgp$l7E zh+A714(;u&Zy<EndtJnKXL%(LEgQhL!nS1%2HS)YLI`{xE|Q1I%gM*d=Ls3j<N2am zR7II*gKS(D<!qi8MJXDBV3x+mQpK3WHrR0oqDm?^lIgfiE5C!7djz7dDR3tw^4OV7 zlk_DPibx_Cbu*vf3ssSx3XLY%Q2d_Qxhq$*FD%Vx1uxMGuD&%w!t${RC&194sb!-E zh)^qVKx>QuG}<;Q&>AOuG%+d-HvSwNuwHJh=Ys~VY)5POoqO-Scjv0Bb~p=^G_8*B z`$iy@($UUUSM9_~OJSL@@9+P@+S=ys?&kXX=I-w1XKdSEzt_0JC!;l@)}YX~P(w(S zhKUl#p^A*E6TmP*q2s)Uj0Wv!UH&bwVR^mn(Y^QHTWxV3NM)K`KTQMA^p(^qhH5KT zS_#vPgEaNuwYj^y`J5tH>+_k09Q-9-geS=T<ay*n<hRK`K^+dmt?)uZRLt6wDwmoW zZ359rc&BkWC`D+S;L*D*szEs@^DK6ee0ou8ny}>NQ1Xz9DoW@8^x<3qv_9x?XMR6C zpoS@azUH{B`c_8@N!Pomqs8%{B&rJ9dF^qQtIrKrNQgjb%5b^gz&#>Ze23kqD+p;H z&UU+`$ctR%Ure;)YLT*0&>7Fi&x+RD@M9BZz&NOvCYxYkP|jZZ#j4449Lppt%jng< z!=N0Ov!%@<{W{Z{0W-qTRX}~;jYBsG(srj40yOiy*RpJ&re)ZcP_>q6na;Jx2vIa! zX`|cS%!Z?O_s}$2hps0m2!Cn0^F|0lv`q6W{eHj3Y`$toJ0E4fWueVDYR?N@&vOL> z)U7D?;!l7T_+hF!upnqHO(rY>KF_e(UmHF>bhPia9oy!BDl`oMCk#7H0ce^wVB~rZ zrKW9%k>|P)Se7k#ZM4$b{}%w1j_rqz(tbo~6`BoLPBCaF@F=w`&(vJF7C=(BP0Abz z@J9%((6ucI5JsNX9Du8bUgfNew&jM5DYp^%9;3FCfTlDElEiiyrOcGv6UaFN$XeRz z*BhK_9qH#!=le^s7q_<S4TKbcfrZrA{}2RzlPRm4)Ur)SR3;|}R2qU&%h5|ci~&RV zZ$_y!>W%}xX=>LnRskWB%6TD%mSro+)dt|027qT<NEHCBF@-3(pcGL81x1-JMS97d z%Z#-pgh>Ge(7>(ze@ZE12Im^kQQV@;1b71g#J&&!j2l`ZN=E3xe;xcep2WPraG2a4 zTR~+vDFW<pIQX0<vY5y2uj5?$ohL4NtSh7_yskn?8L5~eNCz7!uMKf23fwUq2Y&x2 z8j<OF&i#Xx?jY;*l+;f#W(IIqZ#b$Ss@DM8owfZZ2U2>T@8fIlZN#SQIU849bCoFt zoLekR#Q=D=WpPTGX*#xf$D7{tCfm@AHupc$fe#4NP*JzLwG~D2s|?Sx4JpTqY~Iu_ z-8$idVBG$}ci~szL!?bcWSt!L_=W^fyNe>1g(}og*VO1X`C^ecbyD$s8XWdWC<<EY zaKz&h(&GT1fnQjD;=cRtbA(|!`~PT3K_3>LXJmhG3E@9WQU8~IbN~NR{U7)K)bj+r z@S{vADFOW7{_Wqs?Gee~I<0j-G)%gNhT-mi#6z^N|7*u_@ersbue;FcU;WGeM}&m% zD>?{058%+3zVxN9YbppKgb{M^f8eX|5wbxl@^tcCqDk$t(<`%#2;(CqWOj6`2GhKP z{}wF*xde`4ptvJxo?|g`QngbrQ45Qz@b@wjJ|!$WU4k%dJ_F?RcrO|6M4kuFxRhF^ z^1SzEWSBz?Uige>JR_NG3OCuF^i30<@ndNi2&K5=q$3E!mSocMnLrHwz2>?wZiNwe zZu(&C*uwLKZ70i)>(n=o{2pw)r~iJ>O&?5LmnkJ2J6*ONr`fL6x;57wx55zK3N&wB zT_-Jb3EdcmAO;f(1rZr$bGq0FT)b%&rZAX*3=*Ki_gCmiu$>r__c~6zWk~tSt*tFX z$_E}LT!Lm}dG1&C=eM@DV#j%Jg0W+Rl*U;pjem=>`>#!lysj?-!2<Cs&sP$$BhU^M z4M9<(2c`T@j9;8gC%+Y@1};+uA1sc4kdx_zX_=`$mZVIZW?EC!Fa$?&@)W10AqAr* z!AD~}7ex{qG>)`F#-ht-hB0!-RZ3IFw4z*4kU}Y>DhT6P1ISKWE6osvq{7fTs_kgj zEmHFbrZXjLHPhnEw4`LbUgylv*+77?u@Qw5k)vspOe-CQ@qtS`&-aA{A#^fkR_jO@ zy`gwYZbogt^f)0rktlvbNZkcnxFX498iR6KjgB8%y)|%x4=-|jTLy$f-Kr=O8?4TB zl1hRKgw<~ukL-iJ%a<=NG7V}h2B!N_Els63u+|WzFr;RWajmUDDY$^;{rdPY45JtL zt~c-;M_UPpDM;y9;yPg%QV3}nLWuu1_f~?{*8hi8a5H?<ZHjX`c!)BpwJ)XQzF|s1 zX&8(KVZ@nC&nVYXTG6FW#D(C7A?_DKXhU!=41<4Gxqrt#IgVHwz3Eh=gw)nm%nQ4! z8_+mWF~IxWNE%EpRW8q(X-|_B>H{UY$s9NTZ0omrw;ekkf4AWW!OSqNp<~<eo!>Ub z`+u5lo!Nh}2YrJ1-+7+H=%d;&oWf(=THLn{4$fvb>?s5^Hb%>RTT0Pv4(!o&gPyom zuYUaT$ItELu$6uekH8mmS?k{-&mwOmB>%nbaq{-sZ1h)+?mQ()VP<y;E_%fh!bWZ_ zq{%t72-=p+X9W)nyd;HO)J$vOqI5@SIfen+a9nK|+I{w2X0efc$2IhbpY&=l4Cg)R z^3rrt4Tni<vb>y1MB)2Bn@*YU`vOs>%gd8iG8|UZ$<lJ#Xzc&T`daM8^(FvxoGH>{ z$Dj7J<HsmHcKm7IGYrSohG96aHjH~SbPQu_*lakCh}{~Zrb-IG)#}WSAD?wvEni4Q zHDb+;h2u1u!{v>Q<$tsy&$OND^|scQw)VI+e;0dut1H;=Io#6y+dx0AhLlOtXNW8C zL9wnINa*k}%S1LP(<9%HtWVr_+ilOawMwtN;l|tEWqO|ZQ?}MAZ8Ti=KnL!RW_LX9 z2O&P~X}@6GpALf%UPL@X4*mfy!;9i+O6$g^3HPG~(~twFc-Z8@yh+ZG#HB3bk^;y_ zSPc}$2EeGGBR5>J%^9XEzN7le2kx$_>WXXb{lLb?#-OSn>-Bp6$V#==ZD)|wYBk-E zDPt@Z^==%;G{I&RMKK(1x7$$XdAHl;O<h}FURIgYj^lX4DQ-M{`gFZox?yEyr8Nzg zcXxN^*A1p8PMkP?>lzF;Ha3d2<zcJU%GyJjBuOi6-;!lnkOemcK~M{7SG3!0x8-@Z zZ4a#ex?vc(9_?tYH_dX-w(VtS<@rL0J>%q?x3{;Qh5y%#vAgv%p_U}cda{0Z7=|~S z*WT1_w~sgCTE<Vplet{=hU9MY5X)#fM_}UPGMi`;dBt8UqYxf~jhMOB;?UNpVmula z?kE*0-m298nQf9Ts_&dUd2+Ehc>@5r-7o-1($P*n0x0qw*a{7vIAJU$LzJ!?>wFEp zVUji)YdIO@Tds5+k24d`<`EycYh(%ZJcc9fcKfl<*I)g$dl+MLtJ%z!T5Yv3)>e-k zSzFcn$6SuS>A0q0G445zavM~ZMyr*tbUS<|*4B<s3nOw}iO8giLMP!y7)VHXh@VH1 zCoKjf)4?gQQn0WnDpE$=^m6#q>6X=F$F{eE{TEM1IpdqXF|L+nvE<y7o<4Qmb&J0d zoz7%>jOU~2to+HXYy3erne095!VQy&()&FjA<KmDA}#3UkT42<3uQHu+Fc4R|JaZH zSQl_}^E9m2oer<Rv$Ox#)o_S799E0_-`)b={qA?KZk^p6BaS!Ee(S;LUELR^7$(_( zMWbO}^Lc*oUHB|~gtUCc74vl|9LPn$(5kA^$OSeZ)T*~djxOMe#*i;%b}Kgr+jR>~ z_jVXRaq6a<j_xpiLTGJULdcc9qkG53UoVP624Qcx*+k$hj^fa^!LbeIy3SIZB%w&t zBu3yojN`zv(RCy^wz+ls#+!~FX8ic6n{GNPl~R%m8c>X)$sa8*FH1uM#BrfL*ENNZ z(scy~V9Z~Mqy(VM50)&~vn|f0bbQ7EDD^>pHF)sDgWrVTfG?1BayKEPv`9<f1cd~X zwUpG~P9D>74am|(Q5EThD<7c(19^$JMZ%f|xQuxG^XH;~A4SBE3VBHIlTs>igAjK~ z`IADeOa8w&m%k;r@wKmg4H=VvAo=RYq?$-6wxv|!ZZ7Un;)6o1OYuHL{8`S{ggC}I z=jVmEg7bHAJ`nQDi2Nf$yy6f3;13Xhe@KXxpXR&}LR6e{euofex%dF*Lm>zugb_jr zT!xDzAaim9c{(8=q{P@{z8Iy`(-zqQ<I%&-sb(_!E_Gzl_}`Y6`%{z`(s5T!672o& z6^jbq41Q2=1il|M>VXe4==I8Hv9#9jrl~k|Z`wYCz23O&_26H@4;qXz+6a}BItU^m zwGQ$|;KP%U#Qk0p1H?(MA144#J@5hipuYTx#=Rb1+fQPEAZ(}4C>;9WSWoB&sQh%( z55QDG5QR!fN-66h1b*|={WwXMjGBR_2M3pNuhR2JTtY?zrfrRgkbN!zLze^ug-?4p zXgkplW3X{tK3>PdM}iU3$eS|97A;Q!ND)rrb#A;p=-_Yg`idWBP9IGZkV9;@c^O4_ z2TcLR-d@Cflnc1QD>doSE`BXMpL9Ad7x8#;r;*|WK+t_|nInl<N{%eD#|0o#2ETjC zIYX*^zvV=c?=fjQX}ul<xM;UM&viK7W)GqkFYq^$0svPAccok!ngXB_f-|)p1F~X& zOvb1-lm@DlLM9xi-mKRH_Rs06SeeOXo}oaX%(lTkM<~lu(WVUT`Pvkfx0f0bodCeG zEgO)ToSUYN%ybw9;6R!6gKI2A#%#k-Sj`%yVS?hmGpaKtZ3NS#fQY{IT-yc;R68sa zkFyb^bZpb4kkkz2pLgssfPo;jbUocsie}fP%m)?x$z%~Il_1za9|KHEaD%`zqBsaF z5;MTKQoN=UPYINcZAuZ8P*%*fZy`zwXi?7jVowBBYS~qcI95U!M%#8QU_wb&`+SV` zJw!twGVO3gO`YN7xT1(ccTb<lFa3o73zx|wgaFXxfm`l7#1CM`7a$xFArhVBZ<T&E zV}~m|B+RK{tSnP_igVs5wyyJ)0qma45Ve96cWxyzmeH+S?kn71IR7(`KKR4#%ik81 z8(&&|rWLciZAoPt2C!DE)mppe<fv{ja0A%ZR5XVzyn@>s(^IuzVZ1DO=8xuAJS`7y zc<I)?+8>#9CM*^4x1CyqkW;k;(}>Z@-|;iakCHc%C&<r{uaX~thM|PBH7F=U?<Q%I zUP>OWCTWg)x0x3nBaPlBId2dxq%iB-Lk!w@J}z<bo*=S8F)y<ckg=%{o=(l-sW9Z@ z3VS6W3T<$T{y36ZDyB9Nn=;!9L)OOE7su0R8l${l@Z4_Z3Ig6!zkeYvrxEa(I|t_w z{w;1SUZf{aJv|>-*3(a&LYQnc8t}tU;;B<lx6Hxl>8DOoXf)R+a9ByF1)!vM5G(^6 ztyFW=?$Fd+=$C-+gNMByxC77g+y-K!P@dJ8ZvXeQ0qSwAZP2-LF+}ZhdQ=t4p&@Ox zLh7iQ+Ch|5d@OEJ6cImN_It=-I9#mvy;{AUErvq`4*mY5U8{Nh^(Ei}FtvoBTq%%D zX~r-yg<wn@z!;cUR8{5sRn<Z4R5x{?*+A#)YNyiy$AQ%jG#lugUF~!_;5abQ+7^gM zl!Lok+X6ARQ$TJjd+#bCggBIDB<Gw<!_WacvNJx8OU=@R@D`_KtO9OS#2M0y2lEj^ z!cXl#4lmz-{Q4XDU5zme=aYw4R^(kEP71j5D&8gX(PA;m1se>u;gVrEbFJQg4;u`& zqZzs&;sspAcUWw%tjPFo`q{iW!oIBp(<u?u+{8l@7XEav0zUg^-@N5DuYcg?2VQsM zjW^zU(=A{kG5+GkZ>+!I$}4~3(EQM~Wm#66`Q~f7ZK_;^OGJ=}bjT9fBnz@jPI4hv zek*wzd4xQVyqNqbc|+|WFaKfk3Gy4{i-e?$Dl3z;h+mjS@wA);fFmC-n~R~hj?3x% z_dCbyJkU+2*)+v5TWK%aSc%ci@AAW<Fy&vjUnXg|Ec^XFU_h<@mgPN86i>@>Ih+6b zBkSeEo8Q<xeCyMn9zFm0&!^&zq2oXN@WY7D7L-2y<|Y2jv!DHJ#D}S{e!ArTAN<8% z{6*mGf6EPicLBTkCn)#-5K2Ss{{kYHzxk#&y@^qPN1bp!Z>9&`E_|Vmwl922*|u$I zFS888I^}<kFX0Jwk9&hrx87w~mhow0(>kI~AtLTSVEeuekMj4pzhgU;n#Rb`lzRF+ zql{XCPbg6bpTif!7s+Yz9P(~LKu9fkS2jrtU?yx8+g+M1nb~|%ji-iP4BCn2d&xMC z<UkgQEQ?zePFhP6Q+j1k42rR9`d&00Poa%pxHT;~1C|Y~z7*ck^#k1cV>vb7Wyjrm z-O<*&O|MPNXKABe0tHTG;6s&7QV#Gjh6ty`G64M=qU98_1Sk4wLLUUcYv29ucPqp2 zgpiC&$`QJnd%UaFe76;M8Vy@p@YW-}zT<Eq`+@tUk1PyYq5q_-UCNnhwVEaDoD5?O zEk}bAF8{1^cSJ2h3~CfDXUdO75P+5=`Tkp;eDX<4NJS}QOfinQ<7&p3=d20%V$(0d zpTSSp0riQlBY!}?Oa7kx0Qfmk6eDShE`8Is57a=Ug@9$k>w>mOd3~!oi(-PsjXmti zq!d{(vQXg=&14n8N@!r8sh}p#PI+>LrxunoEz0MCRlrsVRK(+GI*nMO)j8@k#Smqf zumv<vBoQ(z2pj?daw}yynHIcnX{6J!DI0O8bQJs<bbH&|NB6e2DR-J^d;93#_ExV8 z`xUfW)7hazvnjFVh2c@J45bFoh$MGhsnr1(d<$6!N(ps6rzj%nNkx^f6*qt~M8w@Q zm6XU80{Dt@*R}-;&vz{3Zfbbl%h$tE0iqVV{uhiR3dyy@C3iRzEvC4`xxD%QPQQA* zs`|a&psJ1?tE$0oH*t6}?Q}Yw>E!UY(xXE7_Zr>iyF4wO7f!>NNVI7wN`(}rYWR_F z8cM{=VDJ5TN*OgAj~h93RuzKVv7kUXi+Y}*(Ry33XvfRt$HQGlxA|d{ajIb5;3z0E z?!;#mql~#ia8B*v(M`!HXO7^UGwXUye^7r_-ObL5xyiA#SAJ0$@-X`%L@5Fz!<30{ zE5%gcmbaV4rQfjS$Gw>sB$uq0-Nf_%PeJS6)4G6Bh;Z`$L<pd9M1_bSI0+a<0Ntnc zv<?(FZWuZ)D5Zl~pE#l8Kr4lz>j$<CDuAgQ1ejP6Vl+AmS{Vp2VodPsOplHt#K=l8 z2;BXzfQyZKzh7^l>o^d-@P!dLj!OrPPB%@_1tN%b@HzMoxJ+i`QOrM!KS%yTgUt<G zUGudJl{T1oy+etYFueAn+KMfEYDMuk5=B6va9nun04?9}1Y46WN?(af<)vworcB_G zPj)Aj;bp2M%jdIWhLag*7PRa&r=DGWJ>i1X%QAfn9AUyq(p>*vi!_n&S-rA)BWA;m z&1?$DS-r6Xh=!q*V$AW5tgHxRZoOVhmFc)WM+RXWSq#N+I0xJDJY~Q*ju-`4YcCa@ zE}YFrvSph3O~3^}Pk>mV5rk1LK&&Mx02i<cTmWQ)sSw-w2u<ZUp5N)z>w)XFkeQb2 z7$5{!QkoV6DZ`)-j59+8_1Ki~Rx=1Fm}Y0|fx*Vc(o!%3!(dbhgK^JiQc$3#)$VNF zvwNiZe>ZA1tr1WN3Z54RT01<B!U)`6f0VZ=y<xMiH2}DdP8aj*ua}|^AOu~t`bo?{ zaA1wbNJvMB-F^>*7!8l#=b9D+?s;L9hRtp899v5hq!P9nXw5hW-;W{#xMeCkG#t`4 z{WHBcB+m?*)8Q-oSm9L6+~WFwZ2!IR;Qo8FosQtatf&7GG;r_uMl0gnHVvD_o@pde z=!~@Eu=e?GPfRFWvh8s8UB7$t{7thsn73MPq;>4N$hPi{qK%$cqf}mlrPeQ}2M6RH zd?gSvB~NGQ)8(*4J9&|Jw6@c7tn1k-$MydJvvSe6WLPfB`t#Y6&F53hyD9tC%I<!q zCJ0{C8z~sQI4=tK_w<fQ(VJ#4TkIGp*R<92;ks$U76LeZlLHPpH!aSG2+Zm`)LVS3 zO|zcCn<mY`2!Wfw)LofoJ^N7IG`0Z2>02CN#JFWKJ_6uY&qaVO!>kYQLEFaXD#&(i z#4G*nCRZZb3DJHNpNqDQQ{BT$ztGN^`&8N>&mym5k4B@)Y_c-EWI@10G1!(0IUGFE znTCfS&%?E8iEt;7rXiSWK~5%;EuGY2gVO{I3Y@0zYnKW+l=m4O+ZqPN9TBxBygS^= zbAX~)Y>h_vKeS<l&A?|s1q?&a1Wrym3a$u<oC#`Kwl63$hKw^qw*voe12U$x_yzAZ z)BVv6H{6gWxW0bk*yaY}`o@Xn><f91k8K(NkyX>@1&s2oD-luIVJHF6vRqp!3LF#w z=Xlmjs6iPI4MWlTRVjD({{aR-=1Rfg@0{JdqTfi8<osy$#QGY-#>Vjz>uVVL^vT^r z9wq-x2;f~c2=xp1$-WH(B@U-Qm^lRz><?EzC`TZ)$Km3~d?lT3qhWbeNRg%TsIAhq z5Z3lO&qgb{y5V+XaOs2@;-)ewCzshuOGy{?EO@e6UR2ZR97e)*V~VnX%PkriZ7IXp zl!>&$NU4??(N>E_Mn|eBv_vY+I8w50#@K#QjTEV{cK@d=XE!%DD^^4c$1jT5Ua^zm z$aShH=Zl3X;<@XNhN-n;rGlB1`!xZ>GzI8%*7H_N+Y&kYTtosTbmKVIW)vyaGGo?g zu-I&B6~?BDl@$e2HLaMo+cdUXN=Kn3*FCRZ^E}V1)jiL59B0W+v)prM>5^D1M3GE< zH_H=e*^P>!<ISQ%%r*pyP_O_53R|~Y#d^B~X*!fOpHqv8m=HoZQ8?!RUKo)vd5pY@ z<Q*N$S(O)Xw@3%Y=e{knki-R(znmLGdf~fHC!ToRX1!^Pc{#{90X=JJEXyLKWVtyj zy4p6DVZ!zMUiggd!2rJ3@0>UZkQLn&HE0Z@FbE^i0Gh^w@%fZKQiD*Pa=dfv5diQF z1JFnCD7cVbcm2teCj)>+b$vIeGgR>h<;woITl4ve@98i827(P|5Ksm2K)%UG0PlY1 zKaSp`jb;;Y8^E-@S`9H?ZY(3c;`{sG_{vwlve~!H@y?Oyq=WIG?6=_u@L4h-XUHQM z!D-><MDs1ojX~IDfWzcK--emk1gj1D2!!4(qn0c(B_32o4MfVJ6P9Z6Q93E{QB4&* zzwbIqwp*>V*{JVKBPr9`N~2yEJc(;{_tz+mqdNH3uTsww41gIruo*=v%}!?mmD^}Y zVH&#ArgShI`X;4}E5$^JiPxz8_jEfQS0WA8YIPH_JhFSFpT26j+jA}7HzY+AeOoIt z8I3lYNs3`quLr+KY3O;9AsA`D->+MinYY@F#L~VWcc#-LM-OKMU`#|Uq{~}dWk0l} zv>n6pJSS|m!jG7iraGn+pv!p6p#%vYTqgT)nbb&8cUYT276e(PEdTPtyv&F+BTu`P z=kK}s=9~BK8N?B+t{gpIZEUpL?X1yAJNN0dAOG@~zx*|CFxb9sd1;?~8Ej}Yj_%g# z@I4uQZv!rqpq?#Ci51#iSWZh?#%1=Z=TztKn!RMY_cK59GqCbkknDftBeljW`)_g> zFTx3;$Sw=6B|k#mL_SJLC^F_@y-XE|oOA-h{lQIpt=;sEClxk4`|6a+Dv<~`raA_Y zQA1em%X!7V3KDRG_fRJXbI8MW8dA_#Wei@Qr5&<cRLR;AdR#s(C({>Lk!6RZn%+{J zE5mHNwh)d~%G5$ymK265m6Vh*YwZ`0VqjRNxWBW~@dH0-pX+2<whXYGeYoR5%X1rb z*MlanwIH8^Z6~UZ&>9$q_h4dMdfv@o*qu@la>fPpozQk6bOJ#EC<m<9JDu263TWNT z5|GLuE^HQtk%ZbnhtbiOzVxNz;0Nti;6nrQ5nTN-sHOMDmTg&42sIN~9-3CF)Or=B zt@RaP8ufQS`siDA3{c~LFaM{w2OlH`i8*`BK7(8&KSe&BiJuYN`!wo3cw1#D;*{|1 z#2`#llBjqTfZ0n}N@)h(e>wl!={qmoyDoc2sq<^o0|egIgRv$_WMV>Ma~pgok-Pp! zHmNGuXxD1(aZrOa`ZLHKztWzqm8~@#rc!|v2vTXf@L%wZOBI=#F;hE&bEO%Vjxt^k zmK9Coc5GR28|J=gLP-6nF#_zxM)Y7D$91SDLu3x6jJ1u?Up1kE#!(wEQV90{+`k0( z>|ctWN`N-B(hCj40mHDb1Swrd3NR>AEL1`Pf*_6^AGt9YM_r#SBFlRHre(#ouC>gh z;48#t3&8VEcCWwwX~G2`2M_uA8Pz<v3=hH=NQ0cnXk9=fw8!z7y&D{Db@rKQgvaWl zU?PsDiNC9X%Xl#nqcX1Z!N{8lYEIHb{+3~yAo`(U0ve`)l+oAL^W|YDiWI_foB*#k zvOyPUy$5bkv)^wvHD@e%M;gZrxp2MqTitBfPvV%OX||51sTFC*aR531hT&R{T_B`N z4-Y*LfC~okU@%`^UCoPjG88p7Mx&+WtleyO_WyioHe0WEx@nE=f9B(Bn;ZS5`FvwI z8pYn`#v0)ev7Uqf#*6S8aus<Ac@=pR`FZlI<gY+M53YlU;Bj~pyps?PHgag{W8%+n zQpjI2E~8B01DLQxfdlCeh<^zI0K{TvB8SShh$BFC?QAfw9UpC}!-@x>FjJvYNhu9` z(HL{QyGTVww$@S<7c&qF?MX2z{2f_Ul3WQ4hl4{^vEpo8{;Q-~%;)~JoK#jB@Qo2x zrQ%&9^Rg%hne>rnryHa_p3g<)>uwZR>9Pzg?$|gkld6)-aFdwmxmi|}<4j6R4p~$v zpB{*{@$&-Jlh0CI8JQ^@rZl7zEd>YQ&==iCb})@ZpJ|T+@Iyiz65<fD&4$e=4ZOl4 zlwh+_cPI-YU|u2#TTt<Jr3UZ=Rn=R9i{1o~a<9<nl22j(AL)@0#$~$<5r>R=hz&KR zRHye{2XvRQFKb;2z(#Z(0yySlfcR^S?b1mqQ8uFV2x5pBBJknW02ccNZLs$LDF>iO zDBGoQCBW4IF%(m#%7Oyu<8jnNyXXTP2hhwo4sbjGrkOl0S)bDWKpT&H8G}_tumB)} zz(+)?EkG${G<nf&0ORL8Xn_da0?)uTC<+wb#&8HQM0Pg<K#XjSqXy8(*BBN&?#SH_ z{n9V}(v*{(VK_w8K=0xhA$uj*Hq>8QQm4$Hf|HhKh%u!ZVuE1S`?w@v5L0kK$~*0~ zGiQE;**v)nDZtBL1=aa{VkGL|_YvXO$&5VRf0<D)5%m~3E)C@h$ANqMG%sfJ3gu!W zzK%C7Q?r=DV?n>otw*uLhi^N*b7-lsoRyXHHg7h#H4-d{I-Mlu%ra9)G@Hy^$_9zg zIK;sFy<HATihL6>NxR)n&9W$8Vvwf57K6E=vO!gyI={6=fBoslkK3wNAD2gOzv9Y) zuuq?|xVO})*C_gas~$%tcTS%+nA_>B^_vZkCGa;xRgKFo@<Tg}wzqq=I^(`mtF<<2 z$aW5KtZ$yX<?wj3QCH^S-Ma{J2|4%{68LFymF8#F=aDy(A0zK4A10q7zeB!B{+#>^ zaH!b|qX#VLwhA_eC>ctteK_4<qJn5P9>+FvmWgEhvXvLgIz0fuR7c1>B$)K{@PtHJ z9}-6LLIS|h{Mu`Ek)*j?R8U6DJXAlj^ldgz33PCny@E@(Rk<JvkGkU7H{=1=JPo07 zU_j~8!-opTRb2}aN9|5u3dXW-H;#nRfLbq8ndzG=zPtZRSs|jh+wD_|RLWkv6GcL5 zK+e~iO@Ml1<#nxEYFmscfc_v#g?LP<G!=%FousCel!j;;mT9MHn%bsi7?x=#wOV4E zmho#+X_?lPa->wU7EAqf&*^kr_c6QP=pY41qd^}*QfAep7_?mmahxe_xUTV7y&L#8 zWdgCEMJeZX&vjkbwY^uPYo%#RiZsmn2$BVi8?Iw0IgAs4G|hiJv~2*}4nx}pu<a0B zq+G1``<7`KZ6O%znx<)WyQ@l5>O^sxCb5gC^=hYMnTFX$id2fGVVG90w<aZ^lf<<& zj@%n-S_{=|7Mv^Es&nywYzujkI`&IAwQbu@<5O`Mg@|Do#Zeqa0AUoxQ`?SHPHp=t z+qP}W)A)IQ2oU<a(l8oG0qQNPlp59Ra{mX2W@H7f>sb_g-CqB`#8y()>O-X!wi=Ar zy$B%mJE1L<u5nRsQz=Bh{|ta$x7$OsJ=gI(-*&;a!_c+?Y&#5X8+<J0pTvvsN#c;S zK1is#O99e@r!;GlBrP+plb)nyHPX4>tF)}($Ok|8!E5R-u3z)hOUuj4xO@XVVi?BH zML)Ga`MIC_IpYH%e3HtC%GX~HPwjv7Rj+#0t2VpcuD5M$dY;$STRfajG{cK<71<(B zCm$!@B0nJegp8^n7%o7n2!zUJTmq>K3uG0Yq?q9ogRdl4fi%-usk<OSG15>3eYFFH z-f)U}CE_BR*=8E?QUKS!P#=t<%8#cP6|MwZxI9~$&GYpCDgc{$nl={&1MB^1^3Ncq zXG5`0(Sp8VouXu5nMkLYCNjeZ0AVE(5dzd|01%331^n1oaa|$d5z1l=JU<SHP0t5B z{pz8q6~tj2Tb}3kd=G5f+kcOQE9adOa5)koLYe}Gj-hL=77YJ}(F6nETcUbID~$oP zl#atVwmr}7t>%A#_ukh@5=fFkr{M;EU)>Gh`~8kgTd@6?u4(yWTEn_&+3tWM9k`Zd z*AVJ->|3U*q=Xg-se6FJwCz@aj-7<2$pIMS(gwe42my|hB!<a%!1-l5_HENqQeqQ? z)V5{$V_JinZQAaD0vkBCW!3P<>y86J2LL;O+_LRffR3GnrpXsy`4l8^QN&5m%!fKS z1P%vP1rO}usP4km|L=vL!H<CN?I7F>kHY)H$HHfHI!C<QSp>OxK83JkH5Tg9LYAw3 zjt_2qTk;6EjoSz*%*!V~lS#$0-K_QF1*cprvlhTpK}=;D1pE!;PGZk0geo^{lfB&W z(hA+1OtYV7nZZ+F;0f-;?XGGUyKUP}DN74mqG>~h@`le%wB8I2Ely|>i*oyV{+!KR zLvv$%j?~>oeCTSis|l4HNGE{Z9NqP9(Jne#R8NJ38bYghHCzGsue|{>8O4%jtaX)A zKvCp_#$*&A**Z>P4vn=|vntyjIv_j|F^T&Xu!_^vLp&rU43O2`JQo=ZZ@g^1_AX5h zr>jw#Dn=r7Hcj^SP8Y+GjjvsQ@yYyn@6dT=2E$Pq0U#v%`*AQP>`OTi{IERoOu*V1 zDGUcZ+y{z+2onGok+pz|7?Bkd6<P_qjJ+#>5fbN6DFzs_&5aGNLfy<yqKG4VlxO3r zLO^Jm^UK#HX<{v@tSN~Lgc|+$V-dB8W&lwvI%5=3@2wDkMQa9Q<!zOv6!grlUJUU1 zh*abdZHSx#LSXA$x0{9WYPT~&qtwW(i?XU*EC3)Hpa@Cq9cV@c0951z!6zoc5PAD7 zOY^emyCU!R##5qhJsdS%K@n|8u^7V|(&F^w>@0*PuItfcFpTzly(01ez*W^B7X_Ip z3<kqtT5iQE!pShpGb@Nq<b4!{s2W9+0-`(Y*EL3w^I91er7B~YK<{$gPpIgAN_hcM z<N{*19FtNK^+WKAi#+n2u3!ag%RyDcXC#_6=UG;UjMS?GTse4BaS|t3<V^^kGm)yc z8;HkOCCmn5YpH<J#ad@Z$POpI3(s@IB)r?`yj~HusD?8+V5^r}f@fawidS4)yyXx7 z@QKS`*=#m%d~W;oUk}ee_Sog~@cjNy{KVxSz(I#P=?j0D?|P3rS!axbz|UKHqqOMO z@dcUI5#L#z#rMDb<u9MjX21B0zqtRFx9q>NZQK5P4Hh5yoliXRw+}t^(B<F0!#hBE z`L7Q=0EhlaN;;3?0Ion$zw>b1i8~d;qHAw;-oEpZ@Dg|(Ct_S~->z-i>Ad>i%gwx* z)7WN3{q_N>cADYZLe);4B%2O#ImWrAYz;?~W;IpxH|EsF*G#w)?9fHLid8SM@k0y? zw>WIDH0Ff2p&-hMOsa*dby_xMGw1BaU{11|F|hS@>+ft;6r4Tk)KTk$shj$7VyWD~ zceh*Lf#ty+kWJBgPzpdc%Xcq|VqIjnZ)X=pQOwKty?y(3c5#v2ek4hLDL;9qlW)`7 z+7RM61Z%a{+8PHK;y9?ujMq9*O2j(ntrbyf%&)ZGx&1}(hR6N|;QsrS^8no<yM1q7 zGyvWa+;<<qzdU9Ed;o9{Tksy-h*>kwgjp-CG%)jwSu>9;O#BP&!|r1V>`#?tS>%BE zSD&7qo__R4zvJ22+1WdP^hba6(@%f2dj9$6pMTSv-t?w7g|K?^=B0R1fn!e+8$#@@ zd*=PldT$+%nS!15Z!aP)R*J|VM6CNKAN5fu{VG+hHKa(zPLTG!7}-)6Gr2=e-B=`U zltq%Dbr3?Un(>#?WF2@*+VafVN6*gA&W?|LS&Zv^7(Negf@|<ncpBahe2(G&`v9ro z3Szg$i*_B7E#fJJDpUeMPT>M8f`Ul8!ii+@sI5+?5_?aEI913eT3e;rsWS{Ts7e(4 z<B}}`lS^)6GM*iQOS9>$)owzwgY*yM>`4f#S{0dtYeHJ`Y#i8~-XT9-z{6&yvE}&N zc0=Xq-|aXokkrFg>fLrTS&G|bP({x~D~sKBqZOC<v<|n6_6W;^JixU;5vo0#FLD9# z%>qt#v|G550w)F%+`7ti(c<%<6<F&XFtdh|YEO?SLdY89C{476D2gI<K6nBSfx*vF z2}&cPLy~A^jEyvd^VOy#dpDzqz>8+|ftn9(6NzIg)b%8*G-yU*#dB<uM2MKAAxJ2j z+?-LfNI)d^|DlNTtSli#G)7Ep>V}dkR3fE4U_86p*?12iLQyEs@*JFP25}6C*0P2Y zNhN8L0O9}rFghn1kyUjKnbw*SopT;g1R9?vC<eV$ADh=2t3$PQt$`oaeMsXNFsdF} z1u!<oIAH?KO`U?ZAH$61D5@)eI2oWg8YvhPQ$d{MMXZo?JRa|7S`ll8syaG4*vHU_ zLP?D+jaQ%*V4e#i1m9Zq7{oZyKzVKjK$~7S25UjHF-h8_fYTxZSduC=4IdX}PHV6r zOk~UyJZ0R}k!jFK%!(ud>^6zRO_>E2aK>02jk6X+6nc+0D9gm$XKFIK>zrn5Mc_lh zdto2dO<q9KAJ8Y&G32T=fX??4W0DvVM1seBI<l&hzHk@brw*5r-@Mylvub1mcUs}N zU-H0mxm-T8TCG-huE#qqm&@gw;YF7}^dFZmhwr?6Ieh1T{71*VaM^hUJ`X1y-AO!1 zrjK>rt@BH~->&NHnt3yetkS7>3}#tUmG9Jz=*dHCUN8tdY5Oy_q?{^EqnUL&N8z^N z)6Gq_jhoH3zgw2T$`CS?6cKmxR7Ur{Vg0|Qgx}TiZs-mXRd@nxumfvf_t)g8+EhZW zb2iPh*qhIo&1PkOy|^~tyMQkU*5IH|U`!a@xN+mgLpN^RxUrX@=k-YhQQ-m@C0UB& zaunuBELaJx@ZG21JEH3s^+~TMfEb0-8_w2QIZ=obU@&&B?8W=TK@@1A>#XFWm;XK? z()H<E5oO{2X#n%E3#~Qe9+NkMF`?HB#=r-@*L(f=pp62^kBLGE0TD6sA&LfmQ51Y8 zgb-drg#$b0BmjiHBR<<Ss7{N@r2q*8-|NmF8nI-_UOl2wL-rb?HV<!?cn?r*(=@YX z`IHY35x(qAhxXok?>#PZOtO!AIq1)1<%PTOfpB-cwAm^8b&$joL(utC-hJukectCi zcKh~Y=jZ1a55Dhv!`;i@g~Q9=ebbvBee}^sfA@E7)M30lez4PJj%n26oe$_d-}$`G z*LJ=|6W?@)Y~Qp*G&UOZ&V;G28-Haa)H>PebptGHXxc#&@zeuKfnGcE^Jge8wyW2e z=Q*FsK=s{i<}Bu4bVt>v;JVSN)#`9-hS14YG_$WcJ3EU)Ra=fCoJ<}gqS?81PV3<9 zljrB>=a;{d)OB4C(hTA_sR+_ux7X!)s?H=%OT^ct>HdD6m*v5Jp7$f?;BDbi5U~Y) zS>NLP98A+oY{s~}>k<Y@f*3L3!`VQ4eq6QIerg#!fSyos?<|U<=nLN20iGa0^b%|B zk$cdAKQ&R@)Xr)hJjBNyAcSt$Ij!Af%0=0ApBxt@_yY^fiP$U=8Qo9b|D0V}DvHy2 zS$znY2TbsJ9y}a;L7bKG`@xUqRD&*O`OOqNtipzqJIQsg=<bc5&1ds3!m9_fqsg5+ zkFM8X*|fsJUR?nsN%!#d<mhFOJignO9ECqPh}8f39vz@{*~bn5PETKcbu>&<??NaG zV<1H3N9@n$uUL=AY38i=**cs3L-=0!iq52xCy4!JGrvc`2{GJ*i!VhvQD|(NT{rqW zNXd4&Yz#n_4Tt;tqv6T%%-PYwepADTG|r|;)AXVuk7GPO*}-$UF<P>`8~VrBuGtcp zc0Rj@fL6=fw~wxXk$QUN%5;h_9G;$>jeV$>muhhb@O|OKJB!YHbUvo@o1K4yBY3ww z(T4RUca72%0wf4Ootif^pQAUMujfUeQC(q~1Ol5*r|qnvbQQ2}5!GL--MH&Lut6F{ z;zcWQ5or?~H_xr)((fkOp+rZOaYatA*X)=iE6;o{X5<NBBuJdZ$!fV<JBb1oGQ8qh zO*v$R59yXB<D;@-jb08+h;qEMTkc*DZQyyXB&NEX?PhbfM}WIvOD0%O_;fn^{9(-` zf!i3x0-I4(%)e2KcD9L0l=l9f2ln@`F8ck~zDj8?N?+X^%?5ph3V?OLcQSwEen9wA zrBsy}Je&oHx1gO@05F)0V}~y66Co;f6|m|xjsdjat1|dG0ElD5#;{VfE-!dVEl;zo za6(k%MU$fd*rhcJ05cZ|iI}I5RmM0XQc(y-ZTcb##rd+Rb5z)#f|)tXL=1@q(1gqd z1AKH*;=5X-f>(f}aqe1U?IkfrCE6I<i?uqODoSUG7y%~PDawBcD<tM|+WS*Z?f^ks zMSEFbdD}$d(GAQEz?#lT0<xe;!2Ys0F7&ddcqu?FJgmCC?pOd$5fbcWX`1Z8>@AOD z5s^4P1%;U6NKY8rYeo@>vH7+iqX0A)Nm4tjC{dTWYOMj@O}O+L;dz8WK*~B75Q{0o zZ%I+Bj}V|0UWLrMa#3XwO$c>0>9hdI(%U12kblT_!%V0((Mw*+tTi)G_8qj=1`ulN z9($Z9JNUhKQe-4YN5C!#UJtdKzlHM8?feBC!ISVQoz89zt|`!@BR$aZe74!38_R7> z*BPlZo6ngY$r>5dd$N_EdJX@TyX|hBnNDO;F?DzI>&;#QTS+LJC{X0Ti`8<q-25z} zUEV@A`P-Ms=xFf1SI?_WRaWK3{y2+v(=MyUY9|v<=9A|&Czr{(U9<xr*g-kHwc{<| zcP~|n@Aw~Lh|^UXv-m0D>{h_lVRkK(?h)=nX#o};UkW_cV75x@&6^>sN~4t>WHEe^ zNERzzeIVI8Pl#mTSZFHy3t(-U;)Pe%i8vfam(^ZVud6kHI;X3QFd}7*F-V}CBlvJi zlB`I~lU5W_0I_w5gbpAInh_PBUvZKeq%^rWP7ULyDTcqQK|Shui`Mmt00jW@7`L&C zYz@FCDfPgex;j1{^slX~RVs@bCEEx0r&XmDfN`M;`+MheO>CFQ#%5`r;Irh5BxYu0 zv(eR{RjL90Jp|T=7y(pq9ECoD1B?mKqe?iNCDX2d&k#9d41N41)#{~Pq`H~SwN{E_ z=8r+E1Y_n4G56k%0^t@^;kDKRG~KE)qSUjw6$0|2N~)#rF|9MJ0g@oIc#abHq!glu z7ln9dt>Pq#-tpVM?c35aG42)=%uQa@Wsd={OCH&b%QBe11RR3k&nk}kTI2VXL0t4a zXLBRx;y#g4!~FdxL=IjM9RgkJibA`zU+b!`wA66Jih1EKTsyx*WN-O-TeOADn|b(7 z_k(MnfARbE15Z8m)Kj1@|L23BeDcZP`@JW9`Tjlq!|<h@Ugx;8vvH}~0heKKv$-jt zrIPQ<iKg&Tm){3>F2Apzr2uKxhdaGnPosDFt4}}u^zHY4<Ojd<fd?LV`tGCe4_^vt z*1!C|iK@VzewM=P-}I)B{^-kpeD1mDp8Kee;t4+eQFsA<Sl;~nE1g{hHkcThO<Rte zvk5=Av2q<2@Np2zy^qv^$>jQtJDl;~?429eClk1Pc6R#wg}wU_XKCHJe!KMgop<}S zU;DLRJ3D*b+1Zt%FXSWK+3&m#aqAiGco-r^fkx$C?>w1IS@~(sHaKT+iC`SiDtWA+ z|Asfb;SJA{2d*(-yN?c*UV1PYju1z~$wAtaNB(Zz-EOz<vHe5vB0J*ayL)4zy>Yjf z9=?|ZsHEE)?-7mn?jP>iF*x6JdR&jt@en;dWU}_4tvZ~MJ<hX_J@(k+k3n!ho%xQ( zAA|51U**?k@T1@ZI&tTo&YL=))%ohq_jEeN+6CyU)v8@?=DyI7qI#D-u(W9>EtBg_ zS(r(nSYS)fJW|2yw5|<ry9IW5TH=%aJ5KcN;$(keel#1q8xlXGjQ0$Ql`{?*<QQs& zM=S%46zZqt|4S!CCzKDryFP5Dcyr$aNHG{liQqM93%+aA4_St&rCkcxY!wkTP0D+7 zpRxWZX5gmv$OGp2imUw}`n6gZ0$s*>f3wpC=yo<6K>&WxX!=3mH{WF`J=`fQTPdY% z7*P5<lzu)iucv_fe@p4>t))KCOq0IM1^W6ddUk5or4|4VvUN0EaGZMEO_lASk8I#^ z#SEhng%?5VBwhX#0=+eaZfA3&+kuY-VZ9mn%!=>m2k-->EK4h;Y)dJBY#CC+i||ma zl}~sTxtBaneu8|Q5Ktqq>1xkoELQcmp3VnSi9~u{FqzAu#q5>kAgipr<IH!yD&wSp z&Mz!9Agx2e=yHI0*UJGTYyv~{jeNQf0rqY_d2*=$D3(s1y!rM^y7lb2l~sV%m2+or z{ZZ$G!t+wb9nR~v&0jJajkFZ?Aao<f9H)1t|C!Nfq=kq*FX8te8OBDO3P8r&LWZOM zcc0@gEkt7k+#JV)Y-uSQkXvE?xEVi9@_chM&y)0TA5ZUV2o7g}^ZGN_D7s;z9(X_Z z^)*1HJU92E#OoRc6?o6jJu>yrrVjkO-<);uW%yV46e-D+Tw$%&jB&y98npC>^PMpF zR-|?TF}#Om|2xkbp`Tp~90GvV;V6#dcr;u+x4td_8H=FTud0)$s;b|E+aG_YvP>|9 zYr3_%WeT1o?N+<x`R(>{6XIx;FR$dIC<Z#6o<-zheKx<Ie6Fen;|M?R`K?yFoy0;| zR;}JyZs!MTQc1|cKj0p`gKUzc<XUn!c@Fte@-_zHL{^?&<>(dLO(Up<h#bY^;l%7* z8L%c|=Mf8R?7jwPS%e@e@5%f*u7KW~-t?wXtEqLfIeK$^TqAG0vfI;?>R$KC+wOmK zcD(;*^n>)bM+QnSF?Q*nR}1e*lHo8(96SEk*mlAo=R6O>yK?*gPH9SMDg--tBY7#M z=>uEsP6ZCTule9V4?YKv!(}og$H;@^CFCc`FOV;jKjz1>H7`Xk47z+bWr`Gi3I&ZN z*&3VU@&qGJlQc5?!ma{=C=W>}X_Pj#bSO$<O2(d`k!ngAiPWL^RS|%wG${z=5pNB{ zH|GzE@mNx0;<goUo*fJSFVDPyL`el{+8GY|QOnR#NFhxJ>1cFhcY2dFBF5Gy+E5C0 z9CbRO7e=E;S*_k^DAo21O~G-rwh?W{f^a4PjyQH0^f(jTw{4|2HW4uH?(A$IYFdtC z1a`A!nc36NUtbjUr$%8g9?xB;m!$2KQT)~2qkHSFyE0xZih`o;Ojp;s-EPV_E=OUt zIBMzFaYg|sqZFBxLI6_NmJ-40xlXOs%$GY|&tGXY<G9i2wELgbD)1YPVd8pV7@i+d z^j$ZMI{W{G5H^~Apphd`%TAK|5s*SD#*msqNTeX7vMlKd?z#4|<=B))LJ0sy1&4c0 z37k<zsb$96Fy5>HC{q$#%LeqBCWOGj!NH&4Mfh2A2O%J2SqfQ}LJBE<XAeztQ2>vC z8ZeDL@=-W-Gb4bK`^4o%wU7<1eY2>>C0?9{Aw%Gd8_M$?$+T&jXXf*5%U**dEN8P@ z00f<Ly*pow=Vg^7fX!xEO{a4Vf;cw)MLJUz#r?d~PT*&=dfjGdB%Q=DP06SX!U&UO zsFVjvC8lWt6Za@I7}ExV=hAe!zS0k^tpcUC-Dw*ppa@38mCZ0vzGVCBWI&FR^FG!K zuC?eXmUNvkO={<7gSmOs^$)(MWHsQ1z)tJxHfQod!TE#PV31{JwzhgbfNZd}b^PSk z)}Rm2?QLzHy=`j?aQo0r*B>UuE4TmPgAcy=#SaQ|f#Z&5*<kQ8==ZCw(^qU&ycIp2 z-qzOX6I)w@0j$%Vo%1&y+NMw~?!0+>8!<%~`}BH_)vWuNq;Fq3+09o-cB|-IOb4Kj z7L#fg;*NmRKww^Wia`R*3^{pxLc5UvwLhT#>l7dPg>%`&L)$m)7DX7roid7&_VQrR zY_+LGq>jD5cF*O`=6L;X6$W8z(CQ76L<t@l+BA|M6+1gO!l$6uueQ!Cl3(55+B#MJ z*Sf<S4{amV>a{vwZrTpyd1sJ7J?S^kh=`)qH=ytDuBN6@6p-{|r96t7G0ydNqj}Sz z!#>50eSdoa@5jb{4NK4~ty#sApGJYd5jAF%Oql_vY|F~DOv^}WZgr7OvuRlx#3B*U z1RVjPzecegQZ)6L;s@ups@`YrJHEA*4PaSJf7A9MG>@?~Z5mm&wvrmsww)vl)$JE) z6czc7$(y~nnlW~!MS0w91!h_t9x8EtZ<w`P8gAa+M)7+16lG(g_-niW{v})e-luie zZFeZ3-I>%I=xi{`OryO8vR+G5{CwE4v`7K;rUkHUn4^s-VhnJ5`{q{tu>WSgGLq1{ zbGa4-aEvg`^1Mt-;RwT8i%%=u^{z6rNBUYQ8?oUf`Llale;}oQv~@`A?d=}B9x#gX zeEXI|hYrz7<VTOMrc1|L=cCn?lQ(Z~qk3S8WqYly!U_s}CO=epElm=9V<2kNAP642 z$GB-a%(@-K?d_X;&Gq#z-XvSL(Ye*$Jv*IKP-gNb`N6-_yMFaofAv?jvG0aG&CB@q z)z#J2>sD4)R`xl1B@TjnD7KhxS>_e@pyphKd!KGz<nvWRlkZn6E73@FB8)-~e4%gK zpd6R>-#^nmGnqzFaxH@>YPD*997jW@wbQcgE7xXGOlfmt<IoqMdg>`RNxY>fj=eMO zE1PR;^P9G}s05w_svN<h*xfyzxk1@%S*8^JS{{DtO452iO0`DVY`5UY@4x^4I)Jz0 z3r@@aO1%bjYx|~VJ*L*e_x;<$QF1N0mpp4fV^(H(v7>1{SAu8{Wk5v|k-;YE_YtG- zVMgxnZx@M-<PXlWzxIrtn$PF+pkAZ2Ru3SGq7b-aBV^A%dGh3-Sr`URc)Q(hr4a8% z{#vKEwtA<pXkYuG2mTw-vNkp>8=rL@3fa!_S#MawAW)kpmN5))S*16Tr<3P$SH$h& zZrV0LKg7V~w6>V7%5fRZXLQadahb}94Nx2wNP0h*XaS2cnmXzHx{1qboBD%OAL5*I z*L5ArYqfUa?;YJa@ss6gc;53sE-fvMis5{HeVZ%!LrUps6jBJVil2}?*=+6A&@`v* zqr1`hwY4?eSl>M4d7kIH`ReLwxEgMoU&ou|-lZoX^$n5+6J8@o>1s^Je^=z797ujn z@1DKRAGCV5jN&wP%T~*@pxZm%9Sn>kbQXpIf@Rq@hlvO$Wwf9^0sq``97_Rd((N`U zOG}7xyuA?wn@hgW7_5~gSuTGzf7PZwk%4eEsgg9x5Ob?4d7F+FQ^!pz!R7j*v}%+T zvocxrU^D(_&7&xia8|k^j^?)HTeEq%$Z=5)B41`o0qA8#tK6_|Tcm*jy2)eg>b!e) z_~@1I2@ZyiOMPcWO-|LJX-Jg<rVQCV9;24s@{y@C>o={IOmM0+m;idV?l38lDlmX? zE;$SI;hT#KK>4-Ja1IpZGY@M34QN}3_9WH!+A>*_pnG=;3I?EMRc94|0o1XN-fe<) zbI0#6&J3%W0Jm-%0O~3b5Vs_Nita0&hD4vbL*W5^l-J#djKMMXukH_$FG&S~xXk9= zIppBJb+3a$D>h)<1O^Q3HN8>Sq1X)hVwHRGNXTqJ#(A;u0j4v9d^$y5aQ7VLYkh{K z%%oZ)=co;291R0GLqnrrs0~zrN-<}3D(SR8mkBc;=9q>Gib}Cyx^qn&#~@`Q0c0X2 z#90Krn>N|m{ys>3r(sS{nP9BnWtumfFwN_>4dXUT1E^*y&Kc(FHKuv`oM~Qv)-(_8 zndXI5A*i)fyx`zl5I;YKecm_smE<<^v~7G{4vS1QQ_Z+^X73h?UoIwK^lPS^e-l5( zdcX#-UuVI>1~lGa!QwZUmzTk;p83gVKJ%H++~55WejMyyw*l-0SpUO9uosU$VBymH zZh8OvmqmP>T+1B8-T9M?$ECRP5iOpNCuU=*&qSdTmGx(H_pFKbFe2yp@Zp3L`tNHU z=FE@_1gSd93_z-msg>H@@1J~_uC2{xYism+#RVwm{?M&;yL6)-)H_`&r2WYHaYeF+ z7h#WFL+&NdByS||Vpu57%5;OK!4+LFzvKr}Ks(HM(1tM<JC9dcWQw{~lukPsqax+d znMQyN)1rWP3nko@e7;B*#Gul$ImMFP#Eh{Mk@oQ%@bfU<RaI3rGNZM69J2xIE<qe0 zvk=p?)vxyedXS7-VJN|KJ4Ff|;JdBi)Ak=rZO5_G#Bm%a`5l;sO5u7O?%#j$;>9G+ zR^lj%R%=Nj`ZA8Akluaw-FNdONn#54tY<yzSy2<TuEziamML8XAvUi2dEe7U9UQmD zcwpOrEyJ*!<Bsvz;)^c_$EnvH2jF_`n;QsH84UogiXen29`@o046`0^ZkX-3t+k<B zgm7XVd>ei_{*d%x@*46<3oRzn2ho<4WO^ZyU5KK*E%QvQ339D|E(O$uUqPRa)0HA3 zRX~CT>-*@SjAzw2y*%iyT$<;_$gFldN{jNzfg>{}Lm*6(m`_e0hKumc(cTH?EX*xL zQoiXFIv!$<f@l6*nIuDP*pAx`9RO6RuuaBn=~4<kLj$#)ST~||!@!gqhCz{Xi*D4` zj~&}>q)8TDpKA|IOSq675Z86lhLlqV2!cbK(RVAUGr>K|2aYcoBI7<Ng$PuM^9b~z z_Y=3#D>8#pe3z9ZK4aZ(*9<H(?>j2+000xmTEj4Q9Rw#Hm*r}|9R{`l#*KRG@Rfbj z@}&@=fK&C+y2ZdM#yhjO0zeFgfsFEzLdc@!ALr6+G9C)n^lf{(*T8KsG*ZTpi+d<z z^o4H;cH8sL!FS-7;6vnO<iTNnQs^?=$e{!a7>E#yW<j$k&7F0Me4Z6BtuDbCdSedS z9z;(Cw<T2RFm0vLBI=G&48H`P>w3`N+S=Oc|FO5gS(?svSMoRlNRw`_(Gak^u^CZZ z?RJF(xN>uI6I{>rVB;zN`+`lN)QP*j(6XX#H+GQ%*yC2yG9AtscTB6<8f$%MYkOtY zbt#o<#JSc(DQy5IlDM{96!aC(uPbdB?W0HAhM`sc`Q2Joue%8}qo@gqTd!AXj}S)4 z!Bcn&E|HvEOYSC*5HiY(vdjyL1*maUh<DcLTmY<~G<RGU^_4W`qpSp+ek7g8^9kNp zU*wYI;L-HIJ!f+~1x0@R*!Aa+9nTBE6UQIAf7oAo?uq5Jw!cn~9J%YxokNHx8CBW< zjN>>$jFTk6-`*Mw;7=X1>v=)YvMgven@R{)YksF%TWvG|8jaPp>fCH@AKB&l%I7z; z;j*)pkFeJ}b!CqNqYMO(qLtM!;0&JhyS=5nswx1+;)HR8b5aPJ5JCtWQ-7zk<VECh z{=|%R%xF*;`1O<NJ|CexuFT6xHL-Y|<i()KCTlpQ!W(cmm;en7JHbF4LTfWnqv@4` zO?M=l&SiO+A(&<k;a3&Hbse{9Y2eJHlpBWOT8wr@*1?!Y+NfE&=DA>+eiB)3>MJQ# z7)SvI=f-*9E8xcvbWrg6W41J`AwVt=F!BB`QvlcBfDM;1Pzo4xpXE}9?6`_$rk-Q- zQS5+xouTcXVc-sqK>{VISEHLTLc>7jI?g(r0vHVXmCL<@&)^ikL>A<3@*AG}L;-kH z+)xg<9EAMWU|v43O%8>qr6EE9>OX`sL#F;h0{INGA0l+LajXmX0ofT+TTC-*aW3Vc zqOqUh68Qv<nrbwPAuj{KZ)L@M%D5AR(Cuu1@OqtGuNSp3Wm|{tm`qLk$}8`#h2ieb zTVt6IcMqRAbAsXf!Cqcp@9rG09ze>6k_7@~N4ZRdlt~8EW%!zUE0<te+Hf>OpooU8 zIr9Jj49;yu^@=nyKtMw#ra@8LTxs910tvvB#hKJ51VRkpeTUB3jpksZ(*@{uHkR9M zxwlCJJ3f2%&btn6b6}{V`Hx?B_V{Q-X@+$FQQt|^>BCRIo>MBuhid^7!NRi`RgP9n z_=++bC^@n@*NRcixJfB8MMVbz5WL7Sgz36lg`_qBa2Yk~ZAU3P3fm^b5RzH`a!|%4 z6;>bs+nRqL*(NuUhspmU{eRN<<Ya7|-&23?fj%(AiFS5cUW>9pCBmHIXL~-YdV|;h z*_=*T{9pg)+Zso*@G!aciQ<glZ9|IKwtUFAB}nX&<92z^<F{@S-Msbq^^b+`=lG#} z(rS0u^oBZ$;-Cio=5Sl5w;zi66|Y8o%`2z+o^zl=97THAuMc-sde1|Vyz(^wuYLve zRi38%_T+7!=4b!Q+h<)q{3iP!zjc$os@J^eQp~S>&D)y4oxSm27{&VM?W%A0)vw_A zq1$P_o!0$<ilQF|JN$vUttt@179K6#&RPf&Yi!%?i2p^u8x6_U{`BGD;dJ`ivMg7t z^5o><>2!K{_}bIc)6;6Ts$h72etv%TL2rHQTW{QW>#tl~T)nUC@r#R#i(h%`jT>+6 z@I_u&Uq5m$>b#=!sh!X7e0k^VJ8$WHf9L-p^cY+{1KAoX9rGu5K)q>GZK@RACR3Ki zOaesaA{NWLCW@X$9R+UT0DWL*AcC>c31Y>xNg!@-)z0Pzh9H}Bc^!K&1m~wZ#kdGj z1hHm3$lbi{5D)Js@^k3^TR+&tD@XbH^=sG9^TVrA8gAA%je7N~mAP5pjFP?N&fndT z?0rw3=R@h4$>m!nrYFPv)J%SSj|HD3!+c_Tm%o|k`T6y$hrfS#_4;{!ZPh#%{K0#{ z`%9``ulHPcu?P83daGBz_*VPxrjfqAG2=YXkFH!lKfiwUF#nRzlD~SGpI`srJkQ@I z-m>O)A=5v>4t$yJh(2uhKmLKv&vTOlBXORE2eg7?4q#&=gdID@8W_&685VNHI&8dM z&6v(Ge}Iw;T1IAy{pqQSdpm?&0w_z3#jupfzX+v)y0JDnRGq7v^YjO-CgPizQwlIX z0V=pMkwsf_pu<-uqdb1u*dv7^GPt$(?Sevb!erKoFnQ*`Jqr{@;Q+_r#Y_bV`_NCK zI3!sXHQM$qC4LyWL!kQz4qY_#3E95YO_XIxh@)g*0}e-1qT|!keq6ZW@O0XAZ3rRQ zZZka{4qXxVPfw4DrlTQ(&VmQ<A<KdX@F9z>b2cEU$i}Hg;<ftUn8p%E`(?#RmL*)3 z`*9?3I;@H@7-I~Ki*f{CHW&=D8#i9vYqFxacrPR(W3s0A>Kiw*!DkZ>o$f_>7W+`v z40KY=CX-olLcnzye4OP`PrD(Lg(5o`j}ervuwSPk0ECbdr6B->kk);yv;rKD53&ND z1|PC4cmV(3hWQ-F#MUv$-^;xbcoF(sVO8x}7%$U%RfQ_|2$oXDcHe?;xsy9D{673B zd~N5;C4X?1M4>#9)^StK0eNJFr;E1aZi;5TC3=5&l4)1%#&oQeqb7}muiCX-@n(ph z34956dR0ws9zk0Q&>PvtLNJ#&wu?pny@yY`K!_78y)O!!5jAyF<5Z~-;uywS*G*L+ zfR1D6-g|GkS3n3~G9e=DmG|D;od7^x)s5DB7{?(fHHD^b8lo8%h4&T33Bnafl7gkG zFD_oLUU6|z)xwY`=|i_SoBe~c`MleO`&P^8G|vYI2cvOO+&ViO4dV#%e5vCE7uN2s zTz$!%Yu6P45M951=g#8F&f3M{GS4B3hoiHzTSYM*?;i{y&!^Mn>OSc9X7jUy{mte! zWZ4A_2Zx8l0nuQ1csLlsMV59tosRC*FWiN%fxGZl_zMg;#oL`uGuyQ7db5QdLuA1) z64Y47G_bVYZRaA)B68VYw0!c#R_?(a^H_r>Q&N>pefkoXmZ)si7YCt2zFxH3^g^Qr z&2rVSbLbs-7yQoMx}O8zbU^1pxOHY8Tw(z6xcPcB+sp*4x!WMi+GwToWQlY@*-EmP za8fWIZ2E*t4KrP#$c9}2`Y16c17XelCU(rqZ1S#miBBG~!}X$$%+S_Frz|m&$xZvo zw2}aat;TMMtCqc1=L#SU4K7FfD{jiBY)~=+VP~|SU&^AwxV0em#V#02!%RenOwqQn z9|CTDkCAe^Zs{ZirzYV}l#X_s5lfJ?JDOD~YuEfsxKJ#q1*B%Rj|h>&BZVtoD?^`5 zNo=IF(Ov#iG2W^M&Xpi~ALt_zADyz&)_GwN)1XQQdV!ZcN6I5+Z2q1QAlUs$y<sHZ zT%c9ACyI;*dY(a}SoyGTV$qa0ZHxKfSJ)Y6k(71@v$7Afz=&-|b)s39IVhF?XC>tq zQS54>+FKwF{wyo4Ej#6vSP9x*xEKdbpfrl$N44;5835u;Wdac4Dt8#hQS8LPdimh* z+wZ`IQi#hl0f5&>N=dHo_f3|rqsc*Dd3Vn*pT|ibvU~`mv$E70s<Pip?jteMK&h>c zQKUHuS`j*y+8Z=Us*OZ&Vx6VP9(g5%0?edj5+)=u#7gCXNSI7oS|+Pq>qyw&LY4K% zDkkf^QE`=!N;0K_Bl1y^TdP2^&K-W+sUrY`X#DE6Mnomn8q$sfYfY>GQ%JtxD6*E2 zDAhhr*?$=TXwgx`f~J|qBN!r$s3;;t?>Rt2^W|Yl!!2tYmHv)PkwGg2ON6|ChmKK5 z-#3%+eGyHp6(eDMj2??he4`X8Lz0UK;D|LS-Z4r<sEAhzVD7Eg80`=XrM1u4#>7f_ zmUym7ky1rLq}2sRb<m+=Fh*&m6^U1*6rq)B&*_<FtrcmdMG%>tLom!@j8b7l0N@NM z)M1mK42HG_=<Ti6oA03h;J7Hp_1@mWe$&-3Epo)T)3Ke-3vY#ggzxTrDQI{Sz8(LU zUPE6^|D<krI(X-FSq&111Y0}`6fPTO{nDIQRwX8FD6??C<#}5FG*GzPKABTa8r(vr zwRA(52PpFh*S`z=uHab1KGUJqA7P`t=N2z4zi3!#xO%g2g@ACj{cai9cCq_);F5=m zaQ+iHIiDA4Q<!~tVL5my1?GS$%~nPusC#@~Sxr7=xZ!e>M^L^jWHPr{E>^Q!=O^>i z2{We*`DvZY;yVxCvz<si4Dn(>7onK4mUkwkfuQescpW*^240Gf^AiTY<M?9UI_lz} zxmzQO6q~WSI#p<_-sZqEG+LE*N`M*-dw}&WQGvQ+5>C%%i*s^~Y0T#rtoQhRez&9x zfZr1cvjby1crL78yl>!B4$T(gdDF%G)4+1RZolGO)s}5pEv8>)Z?m3HrY!C1L`gke zx7*dyGJ9^Z+OF1{+4P(QBR;w&Z@0Z|mdM%D-FCNII_-vrtnLu*`_;lS5>{wGUBqm{ z*zEkGc~o93p0pFd?Im2XET-$tVw3F_-9Ws=f(pJEx4dS+1L0_2Sh%JOa%jHc8JfW0 zPo!I}%68Vxi<Q#zbVbu?3|sPz4{yI|TClg<m9}I)oByq5)~sPJd%{$xwU77q)XAH~ z5cJ0aa_FA*_nZaL$~lbNUR-h?(G$5NXw4i&NdiP^y6z%;=S8`8fDrQWnGfAwO&S3A zvZ7t1audbgS4EltYw<e1a2Ausb)T)Gth;BaD4*ttNM(hp)TK%xXnlOp%{8fuw#n+` zZB_R+D*N-RA&^4!;a$rvB2gB37C}z*Hd3UNqC-XwAxo^WlHQj#0Qf>*L)vB5zlDtO z`7{lr$~*9;zQR69i^F?{#2E?NcjZKiO;Q3NJOhmt1^@x=aa9ogN%gjc3q^BHjJD9T zJcsHyB=XEU3P$p<=<yVz#IbQ9idfSJj+MwUGy@Q)`xEw4Gn}Pq97jiMU6C4$W)^FM zXO2DV##x3aN`1`sgC{tCLB8La*coud6`I84fSRxtJqFiL3W;U!G1L}<qtE4m4(%47 z0#D|Z%4HFks?60z6f-3ogNh#;%}b@~JmAuC-~VPxgJ$c+04QZxea;yzgy5VJ+0{CD zrDCIBEKStdz<WI5WjzuChp4dDTIWK@xL#4J-!q8LCt;?x_WZ5H2;coQ*Gg>iy}dag zqH{%|6?2HhtmhXI9`u*fI#R0TVJ^lZX*K}p!ukDCY;Eq4V}<BmpRHT8ct-acBEVif z>#=t2z|tNfY9|hq;^dR(E^b9p6gwY+U{+7}imXW&5h6&yC+_)P-Y_$qRU|Lcq^w9G zjs{IRs>Y#B<l9)|ywt@$c0r`d)6gznr8FxA_DA8P-fQj96b-F@R?NmnUztZ7t*nE) zO$b$Hr2-`FlB7T&s(T_?=DoA24=WIPbBjrHvye#qb3lreGt4~~a!H>z-liS^ZfaSt z7Oj=?E(VTch<Cf)wKu@^5rqYjD5X{NUdo~;xUI@w16qHKz7V-oLM$<>LL?HrU56<6 zr=@0j<kK|(LDu-l;3ns1=#o;L=-9+@MBoBqZ9w1M3%!jI2q;>oxw9)zOc>{FGXsbu zYF$zKL{<w@MxH7uqD@h>i6{kHlP7Y{TJH>e@-+m(Gdr_B>MVF(>^lb5v*0o!)wfXC zR0|hoM!b_8!VCcM;*@M;@L@c(#yi$<9+VIpmzzkSEWaolrINx}&`b*~w#E`};*Ev< zQUQQvxQ7UF%(^a%z~3FC9*&KXbu>mTF~ww<lN=0zMA!~B_)*vYkGp#D{W~AdzCpBX zRKTD{+Gvhs9GL@m5eFAT^YifH@s52OLBmjbt5#&Y+s+TFfqe*eQ(~~FE}pVHJv}?U zI6pl+df<vM!f-SmYfjV6q#~@dvZ=BJ`eGefvA0*|b;*2sb$(_fOR7RK;v`QL7G<;C z+bfufStulgJ!9%Ut$QagzxBWa*KY0CME&0B@0)zMQV3vK@XDs+fGfG4AO)-b8^)mU z*E^$@XEJ6P4nnQ(tYC1{pvv+&@1+qF!g1porvT}w+fQs$*sH5^#-!?WlUOUIvW;p| z9txw``njyd*kE*It?bS>H~QBjr3$1Xgb?b-K0ZXQ<W||Ig*noeNI68oAl0S{A;Pvr z@hF3_0A>VZFT->TpEZqPEWXmSBG1U_)2DY%bAEc~^oy+98;#qo7u~mmZQJ(k){CB+ z<ilY;xt3(jMxz=t;zl!z^z#(6nx{IB($hPq@BjbdNj@C@HOZO{QnMB-zYX7q|1oY@ zz#jScw{Mbv1p%vYWE|0jVfSigo8FjRrK#4lr&7_YQP^aSvocNrRM0J|Y5oC_5#52_ zQo&#|IPGbwyNOD7BV(Con!XQ?VpHcIK8fg{=-y`4=Yhc|U|c%IyWf~vMEm%Bmg=J0 zW`*1JzVD0g8@+IR!wv5|ccJ<6=<OeW$F-JaVVa_qxZX@_Z7XyfkoNm++pf!;Nu;eG zi{sd$X#!^KzU%008eaeXrn95JJ`=h7hS>|2p7^bInj1yY`R$)ds>Rvc4<Dv_?a{p( zF1%w5c=+(`r%cntT8-JU>%;$mp`()hHgtRQ`LW}3?q>VC-TD0ZvD6*yk8_)wo98#a z^5xBJy;iGz<tw%8YFnq`IIam^i*yi}rfCY>Vbrz7>p16@!>D6%<5t5kqLlMA(*7r6 z@_m2YJ35_qI{=;Tbb54eI_-4eXQtEXm%lPOKkdE;e7|%4*wQlW--w3~-`;C)edWtX z!|C>Qw;w)?Uy9?n#zZYPL!S_0lGedx_zSp9o+5uo{+av$034`6A9C1)!-Vj(NUJg} zgSq3$Is<WtWtog0(m$u6b23Ux+dKVfxhQ5u+I1^9ON^+d>FT8CP~-EHUO?&RQ>AJY z*A{mF8Zl2QN%54WzbYds(n^dXjNe0}dS5Ep3BneL72TZJySd-cc3M`-JDDhsWEFWL z@#A^c9^xuVPfzWfmUA0#ALKZs7sXLpWa=e1p37O4qy-J>QI$Kni9|dmwiYbIFa)<) zuU|#SnYmUR__7o5rU+HkRCU=XRDpfgpavum1T{Ylz_h}SVLF^LtJi9?L+qI{So2ym z?)PHW^45I$40?#S+C7Ug<{D-vG))XcuO0-DfWaDP92Fa~t{b5aM2q<y<@>Si&K$eF z`+t(hxy89@TGx7>XDZr4OIv0gxH6h81PFYI0HG~}-~M~g^DM<$U@OzCb7i(#h~WDY zF|@h#+cnp9E!h!CQnw7D8pGizTL;tVsX;CWvM=Kn&m5t=F!XpQMKq!ypy0Z(>o}qn zMcf#UHvK_%q`332WH~Qi?0KH|;*#e~9=@|Ul4aiJXlU>#Y6-`2W7h>51d)N5cDNUY zo)S*RTe0lRfy@W0XPB^_jfTU95{6Yz648;C8^?E>rYSk1GAF)EnPq{99LK&Q8iJ%j zbAz(LR}`>;A2Ur;a-8~?Fy_C4gdP0X!RHX*OC%>3$m8T!xN_oXg#n&`OTZ=5*kAg2 z;i9m-rHP5a!_#s$KkXLfWe%-SFwU5rLY+Y%ILkuU68i9sVT)!`1!2?5%7{I1iBLdk zFgY-r4Ecc9?N`yX9{Pse7`kq=MHym`u{epnY`6{xaK*+(`b^}~vK>cCN=?%Zd>;}> zYfDUP*G-_+8q{hlD_c<7TySn%uA>yz*4IxXP`WnA{5Xyo?ILmvf*?fNHH=4n#|fcU zU*=l7ZiKDopjKa9-KNsA9a~AHhT&e*u+1Q<rF3g`wN`^ctA&y4YRy*a_0abNIAfYN z7o1y`<0=iw#^#j(u$B${I86obBXZhmy6)h$(zYE(O2$mf^*uKQsHMwXYuAaP)f%`? zqmd0)f$jgWwzhTx0C7Fbyf}#&>mf4QYB}ymN=tCYEYo$0o2%R;c<^=j75Er2NIP!1 zosW};$tTGd$hYBocrhWPMVR5M(<GJSvP|%a7jeR9H5CokNW8b3%ol}^eHbl3s--jv z4gvFG)e^91%_#lC5gQeYJ|~)FJaV~tKBd^>B@|vjN=aqy9|dG|qWFef+Ih<L2Z#zN zB`y@22!d^wkGn!-8G-`rnuU+i&Y)OyIJT11UUtx-SCB*Dlf=`s?6>Mvllc=i;_gQF zl|pDgoDroY!)0uW<DOhmEUHO4jsxGr!9^z)#*=Y8p2p`=rxbErjOTDA<CLP-9N9tw zI-Vmy3T;U3BG(23Z($Izk`&Yvf`j-L<&+7gOhY7OwE`gJoNJD#6a(b2))CTAsiiDS z_Hw-b^7;Us?z%0w;Lu!KTV4smnk#@sVZC?k_};M&QpN?}|8n5Eh+z;Xf+>}Rsm(Y? zW!rAPzTV_o14L2nSm*yk95-lS20^Rd;K&#U9y`8aE@zpGAUJm@B2!W#wQZLRE`%2V zS5iod0Gcv{P%@xJ)@o_+gwR%}+wFRQz2UIN1c!bY0N_tH+dvVt?byI6#1YJgLj!&f zK$<?FuZ5z(l`t4Zq`){6fV5v`gwHACf>Iu_(mYnewaB?NY+EX+K*Zygq0$iCF42Kf zA3!3N)V5sJ1@a=4ZXA34UPr2c3(iH9);2cQH&V;@8@_)cN#f)fvn<CJVhpw&c5O$= zZtDB+d>&BFXw+^evu;nIq0zRY+4T>AvKWGtp=AR_r=2*OGt08NoX1Jxo%W_o*>*&Z zd<^IW*plOhp@r70gbn(+WFm;1Lv{t%Lo|&TArVpoV@jKO%zmNk0#{J65g4S54S+g} z83ujEo<Rz7M=ZjEl|@p$zX9PvN}B1sHKcK?Xr0@Q>UW}V!OySfkNf?;P#tggzoXG; zH2Q;IABmmAjmF`f|9AZO@qYjK;OFL$2JFfAMNt$T>-Udc8+r52Ejw3*;Z-}g?A(lF ze#JSs49~Yg7cY?=eqkiIPq(-!wtx&GNONX!D*4FLf3G9f8;Fh9VjULpGlJK)i>3NH zP9|4fIhi6(rdMu{Mu?-)_SPr|$VXf6p4>L)dMeQPS<f5(`Tj3mRZb8m<yBXf6Wsqj z80A&;o4C##TQC*|O=^0HidDrO6;9K%a-=J0xi-i0O%R1ExRcj1^x=Il0K*K!FmxQo zl=Qu*8HVsC2&2KqAPixB?Zk<-HH77*-Df@P{9=x{wSD8)ej)OFsTgydFbq*|UOEh$ ze0`~CH<E0yOnUC+kFKuCrK3l4wY`1ertL%QYrN83?7!htBqyf`;bH_TIL&Ov0&=Ld z4Pd*B-cRY?L3}SsSiL|c^;Yn%<L6hOn(jUWh^_Y1b`K*o8cR!Svkc&AkY|H@$@dur z==V0pjf1z2xh&Ve3P*t=E0(TW4Ek~G1vS7j4~l!PqceL++6@EGPXTbTgNuL6zaW7( zlRi02?k6uNbsmM{o}t}q^1KLmUO@Y?GLW*$xt+BoxBTL)Jgv$_!9B$nr}6XI{3eyh zrk^1!UPg|{P>}qLM5N_s94GLfaHGg|-S@gt<i4og?kpAEC;m0?pYX!S4Sd(_EES!f za-9ADeBy~G<~hwRf0_8<z<1pz9LJ3!_r0$BqHa-i+wCVFdf)@@`a!$>Q@(%m6Hh!b z@fP#Hh)pYUHL3|;1=(xJE#zVHQasc}T;*Zm6StWTh=%70Jw@I%Jp}?plA-MJI4!5A zK5$1}xJ6G_E;Yy)7E*vtIvKCAT2#Lq1fTZ-z0U{1r#(dP8Kz}fVY{Z4(zQ2tyWK!= ztx`HuXApGKl^|%J@Vwri4lK*GvdpwBGfR||GEJ0}DuGWa^-MGRlgNCQQqQ_k*BuXb zAn<)3AIP$dyPo6VgM+~h=(yMi^nJ`jY}6Zjmu|g*K~BCD^YaBiMhYAsEH20+{3W}b z?`X53m{UczjDq%2(3sJbP_HO2+!GO5IJ>ftDkssqF5CjYAocxxCrz~5Z1`TY;i)9; z<n<aL)jD+Ipw)~HH|o1lvl*rxsdZtkRy2+sJ7x?sy#$3Z7#hcvY4~lq2J5odlk2c1 z+r!B5-Us1F0>8atS%{Xk()I(0lfG$M^~NmUS+i|``5eHu*N!bs)0)z1lqT@#CqMbg z459ym7xV$MPsEO`6tv#_hAu$&4R3A%479;GVT6zqcoB|}gj_=&AwN$DL~;4OBTc+m zIyylIxQ=G=P-?Z0mu9(AJlRgOz|=@vj3`VQW1R7>^Rg`GX(cN^N-(W!`eSL~@w~K@ zU~0wFig}IwmsAD30T_#2U`#7*Jep-$OE2X{E90&g9tYFZh7^)(!8s@ioC$*qDNJpe za6I%p_9!?)P--B8*8DvDx44g7xNrf3z|mT}LNdlBcMYxFAb<-OFbG|tlqVEtObS<N z<%R)XfWrWWWon73VR8!DYhLr3XN||tdQGGi{(y0%>&d7VhBQfN5T->^*NU?rpjHt_ zgHk{yghkm;GNyI%6Z*!Nzx?H3O3O}^fk>sH65Em{y!>SVrZCK!HYG(gRAO4n1b7)C zNc14?QH5tQ6dScU3*aR8F-<Zg_&x92ouZh{io!w5W>&AeveNBY%(hVWKl<}YXeoUY zo1wK-R14{nO_`0E%H)IVehcy@{kx$;hitQuf+#eq8jF(-x=xShi>a_lRLstaeH!iW z=n(VxMKLc2#q0pu7ndRyF{G&MtjMR6>Eu3*(#ZfEr{ljXJDno$_bsd6D~e7>IMyo{ zqSGmgUf;6%{rr(i6p``|anA=I;5rmiXl<~3_a6E_=e~z7z;yuJ_c($}eUHPQ5l2ay zE8!2WG>Kxv91hplhePwRvi(0p&tn)j>h4fxg5gB6O3`22+_;4z)3B_{kh*ak`4)hC zg7Y(Z;Ri~alLWD|w=a`bw1dDrD?ZGvUr{?nE37mKaAT(Bq=NA~-}%lrBLF`o_~UA- z)Kqn!&BX~0i(misUw<7k#$O8)rS@GZpVfH_kBw0O%lG?3>SRK4`%Q+%2-k#YxIntT z&ie;l+@DPUY&Le*CVtAM!Sg@-HV%LI?a+1{JH%mR+m0O`9654i_xF<B*WYo+9lJ+% z;WgP23%}+z_S#`1v~Ae`+KaEg`o&+n`s%OIXFl_p4?j#e=@VVsAgg4HoFdmCH`SsJ zi&$ksOnFjiRZdGEeBZCiIar5WRc0lGl@x4U8<(=2QUHJp(e+E3)>+@aEo1n=-FM&p z%$x38de+NszIXq`*+0H<cFq2mXV+bK-L>b=F2Q2|f5PIzb>DmQ*|TTQ?!E7hqwr^) zPd@MH{sca@KZW1lpU(ed|Mv>`;(ofbv-807zcYuw-#-nX`F+%vVE5M^eDFa?<}c&3 z;>w$N5w0f=X_M!Yi{vNCU$H2|<tePl(3Ky0`7=c}%@*^lUL7s6a#8Joxo-xUDsd#E zXf;%j&p>(%G^w(k&a7I<ov73q=`D)9C`H31Gh$sK(;`seR$2Pqq~fwIdlOui5CL&a zhxQ3E63`hm1XAL-%+?tMmjwJ*5N82!EX12P^LhEPRIQXRy|>kBwYYWeg|pcVr=V`( z3M@+kstAN>Xh3WO%rs@k<(_9d3M|W9Af^(n%oVr`2prz;l_SQNN?HlWh49CfRsh;C zG=^YX>MzV@tJ%~jz1=2Is;HrXuC6SqA+_yD>O6ccXZ|xWwQZ@;x9#<pN&r~<<~P6D zXngaFLGaO!-nHBZ!+<EJ)T5%l#+XBqO0(HgV3=^_gi$8J_lL*8aZHf5t*kf#(*TUZ z0FX1G!+<(FoKgVWact^f5U4Zo05AaC7C;dgV+>qQ0qFf`Xgreu0BB3%+Bq-{B!nO# z2bh5L#w@s=$~w3~LTOH&aD)iwBR=LjN4AVTG)b`=WAJYkfTzwb3~}Byg_rLC9?bTC zuWmeMJZnc0Wb5mjwLBlsk_31hAF0mTQvUKC&wlpwS<kw~FoL`o4j~FV`@d#8t3{_1 zo?4o?9>S#u_=GQ_FzST0G#R8RV7*rF)@z7q8U)~X!|62aVzZgqj&1*aCyZeKJH8(v zCTXLC==&}q#3gue8GZ<t$(zXkB7X)yi4uPce;5A@|1ULYyFC=0(o^*Q^bMWPk@qXq z%vDj9)Xt=@u>SJY(#=LiaL7e9L?E?+wkm=QaOIdxXEN2vBBmNS*nzNpU5JLQ;%3*D zjp8|lv%mq0Ye<#Sxwcna@0RKn!eXz)33a(;RX4kK*>0tjnM{}>i)V9A5C%28;7Hy# zb1vhSntEDJhNR|%yWw2I28^UlgoZA|k|qzQyre99w`sRcB#@By&&p&vn@Wor1N>vf z(sFXJP{b3_YI)`gi8M&&`({Z=k`)?taiU^SPc1Ck<%$>#G_`gBbwG;0?P855)!Kws zwB3PEdxvS;ayxOSY3Gea4)CMMUXtCst=IK<Hs`p4MF<g6f3Bvx*6!v;r$$t-?gJaZ zVoyVN+;<hERij0vVW;!lgb*)bSK6i(N$hJ{o=-Mfb*?e1WbhdBWAXbd+3wbDy{Vge z9!;ZN(O$+y%mRjyJt-2w5zWN5M6_wIN824%J03+jTBkDd94(u%x2SF?hebg{5%RM( zY-AZUS%+uyS<B*IGMh^cO+;t7mf+*V3S|AXmdSjsF3{by?W_SGqy$Qr1(IT`{BFSH z4aVn|=DT)%d|1Q6)l7J5GlQ;^@#V^DEH%Y(;$%K==k0p4B^m)FvXW?nc;3#Up<dqZ zxN-5QQ<lOA&Nj~ie_2&k8h1(VAvsXm`XUa1bri+S2U8OWyV`rHBBeJM0c&PZVffv^ z;C-SF#u<RonEE17L?bY9OeLUqR~~rs?e4voh|oktjQVlKqJZi+LO%)&jN^ecAm~vF zdG37zi4fU16de$PDUSifu}(znv;W{xwlYTAsUnV9QiG7NF(%SL;>h@N1VH=qD&O;g zL{Lt!CPd{KHQLl!r<|*7Oxj}<MFvnBG(E%;OX~oxMQ)koE{4O>xggAew2u;joFIY- zJyhcm2rr5;fEW|`OeqtE-p%v#eh(olv`#_$aD3kgA{l0>>kkG+3D6r3_m#0)k+IGM zVGTeHI7A?-07$)&hzKal4#suE24YcIy8;As6!i|SUI7+3?_W%(0qe-xRLcHD)-|9{ zlcC6xVv5A4(Ym&z;@EaaArP`b8VojBe%1QWh->jCX2+zWlQ_@PE)3!bfr%talv45E zp`?2i3*tShk!KPF<w)5p(`c(LDHcHUWURAH!OI1bVvQs|T4s5Sh;cxc=s~NPIi(2E zM<DF11tMgRAb~XyVGV##pfZM)0x_|gnMDJhc9|0-U>GXUY)OOGdA4r_vKWI{_wypM z?}P04hlrH522v;P$F!<Q0IVX9-XV(83MJDj8Jt5Fg7WTEO@}B5fr>{n3o5gDO$IUS zWk6T;LDR7}#mVW_TX_A(+i68{0$C>fQFUEMNKoe>Q!o>nkg^eHQx8Om!<3a0D=azA zMozh4y^b7E<i+@=Dg77`m8YN`97QpsARru$MB-Ln3n3DXC6=S*q!J+UT9I$VGB!y$ z7{_t9249Cco$uuiF}Eo*Mi5A)E{-E%3{b5;PZ`Y~S%cIAJv+Mm?nEibPclGlZP7I% zNt#41%bHrpp0EPcI^7#NpT<=+7>Gf@NRjnEqehrnF{i)=5&#e*S(^5K-GQm=eq}9y zp;W1OFr*Qn37#v70Fau7o8~;N=fN`o&?BI_B0XY&pn`JC1O$rN5Rh_|mt}yVMbJs= zpsebo3zQDJ`-1^$jcHLvq>!2<1AzV4Mp5KB;h+#yL;(m%tbupd-EJEDaA@^aooY}B z2w*FvjOmq-G7vc;B_ae%Vx={$L@^O)pLH_>fQrQc`4B9EfG|RzFDJ+YTci-8*y_&Y zi4h}v&0#(p&|v;Fw+^xltYKwqiP->hr;~Qzg}d-0aJO>}QurYFRz!S9{9gPE>eGwq z!{{^Uo9TP#t@N|j&<GB2xRg+DOhrlp4F+@8kNg<W;zzq_IlJ+Vx#&uxfhmsgmUV?3 zrnhL<(+T~*D*mjf-I1&ot6EQ?Guy0POF`mYg}5Ba@jIM7HLJ2I0X>D)n@ziJ>K#K4 zNVHgQHea?An}~7=YG7cMthJsyiDJ{Rkd<J5UJTl&)9tQV4sjwFRIxc_Cr-tQUxo^{ zGLR81=Wdtbii?jWo9%90VJ4mBY8gha-Lh&5g~oJUl}+hEi`YJN^<t~4QYO2#g(C5p z+}^EsMAmLA+ZP4g_3nJTs-L_$pIChaWHUBJyPI{pc;R%nYPV9bBV5)?)uQF)jSrEN zy5e0eN3j-VrnBi}wOH&x`j|{7Q!eNmyM)_T==_UT>zB<n^=`3RZq_za;f&1fSSpKT z(vy>~>Qz18Rx)$8(_XH&KK*q5{brh~<=q0$P`YTh&EioigY?asvf^D?2PE63l=rPG zR);ZipPk8~o!3%#YIKb)G8TTl8Qez~W+3qhJ^PH*GHGY)ORucTRjr@_gGTA1owhSS zHPBvZ%WV3d(Yi{OZ7r)}+}0aS6rE0vPpXTq(cZc$EBe;xpV}_{vVo}yXmOGAA8t*@ z?bf@kOxNXTURKH){ITfFGh%O7Hf<XP>C$?)-h8}Oo7sHP&gq9gvRTiCXT_&tp?K8y z$GE?LdbYohO4-T5@$q=5>14G$Izl8n9vz)d4%oi^+wa*pIJ1a(o;bkSwp)lzWK0J5 z14tBk=RG)72o|)WIMySjhCm5|V&MblLBwfK2#FG{9boVX`2EKx0D?fyMQI2?-CnP+ zby~S;dOiK<qt3lPK%7@KlQp48Gp)h)+1Xkc8%h=t_l2Y{tF%KDu2hILu~=<~j#haj z={Y3QD$>U1U&ey9#)-JEfe`FZ)H$0j9SM}@S%y(Gj1+@EV+pXT>RO|7^}|I`F!zlj ztVuBsLg}^FSUWReF6gj*^{llqMuG)o0#L$G=so8^ht#1T;H(g7-B*(Op%fTfiej~@ z@Ek~%k4;$+fHI(W5zd)QNe=1)lt}L)YWaw36j=i8=yg1ITgcF(EGJNaC?&Jf&XG43 zPX%(;CC0~*8fpzn1(fxUaYi21z@_tL&=|cB3Y2m|>o!2DKnttYR)8Z!?sfNP`}+p1 zna>^<nnyK`ko=v=>3gu-92|^K+!KVDh$0Ng0`G<lU}q1IMpl6h21MjxaJLpS|7s|x zvx2)&<lSCg0ID~Cm;x?}rpXfOjz(35fH;|4xjLT*LY-x0w=Af<whKmMpaT3k?eFz- zK!9%CMDYl}e1Lk)0wAkEHBY7x3SP<~EaGssmsp}gO{auNQLYHUFYd{Og#q5?4gl&r zYX)@%e-74J=g7SdYn;W^lKJz1u-Tg(d7UK1WH>~ChhFxPfM{qg1dfT_0*=O`5doq^ zE<^~5^4M7-)gKIo)?=lG)c#Zj%#=bv)HaZk*dYN?&xKJ2fV4F%Q{;nI){KfYi~SzD zNg7vt&N%1x$}HEf2L#?{7@mp&q;w*@N-P9=9#$z`qK6_%6PgkQ+)n`!9A$nlC9M(i zR0h3{M61j)6O^c|wp!h7;SnE1WuVeb5oqT7l?R|QqPmkE&JtT%!!d4K!o>|NB~Gh3 zWRHx&_X4FPa;%^ZKKMw<;aI*5l#OHK0N~v``Ym%5tSXjL81gAnlqR$ddAOmCw1OaV zfF<k2ZOriU?*LRB=XIWIK*@7f1X|ZbT6@PDuMj{S6-CzNA0iz>@Cty~nLJTxN&+a9 zrb@ER=pZ4Ow*m`*FuV%_Ga3L?niZ#MYD}k7bvm8L@p(9^{}FwTW#wtVyYmZh2q*9& zcrSP}d>VW!{0RIa{0-JP$Cu;B*zRD<0~KrMTK<=k&34{$!=#HQ2xJfaW(`CdE;h1@ zwwC3tvG?(7=G%D*zFK%4V!P0SB>ZUdwUq97UhlGc0A`HSYSC^RO6p)dI%VPM`nun) zQp!Uhf9z-k7)igWj>0*fAI)}kvnHJv13-2IE1_MlB>tBjw@q1bwcX98+h!v5D#l-3 zmiG@1oMT(wO{Uw1tF3G|ENkQz5XsbLnFQB!%W2&-lX-n$qr>kEw^duu!E3HGo0g|i znqnO?oYE1`Paq7B`OR96Gc#YV+ICw+1^`eNZK@)308Zm9&nMGeGnZ0kzpBpZt>Tkm zpke)yc!`Zza_!I&77o&zt*|atc#3E~rvsLzWc%vfY&VhbJ-6L$SF`!7Y5Qj8i<X<_ zy&AK`&G`hcA^S3mPm9!9Fi%~}n|3$v#pe_4T+5=`?pU_XL>BF0weiJ<XVr!HfHB>B zEpVgMfP~5!M2n1~wEfls7$Bw0nqT{jgTM&k9a3{fHgAHljg^5NLWu%vl~xhVQCww2 z*eGkN0hQ=5jX~=(`Im#-n0&Gq$7woDE+CGI%l|q9k3rmyJJwmOxs@m)vFI=YS+pWl zsFlY&GVvWbMMy@0fP}Pic9+$NN`O#rs|HuHT0x&c%@3v?AbNXfu*H{u6s&UIdV{}a zyf=v-g&+=y;uFN45le{Vj0NbCdZuZb_-Gx!ROFHP)^E(BC<?QAh@$8Sa$(`TU|}ww zI6pr><+9?7b2*hEA`rne4uF8*QIHgvC?=wuSz)LEv=IO?8sN`FM2b}HiOfaiCD-zq zh$XWEuK*Py1tKA1wgP|=Ww^%zz`FbMDz06Y6u}s$E(rZvRlOy#F~(TN&P0_4Ce0qT z24(}~TXxXW8Q_V(cbI%dL@PP)1t4bdJt5$FRMXXzR)sZyd8Gk>D5~oye))F0<%67= zzECHCD6&vh8YhUvXbgz~2z-I~z5qI0mB9$07DVYlwV5RTWEC(rSysfNL@y7zc~0oe zMnkSz3I-4$hxb&%lxS^7$v*SV`2bo(4>9l{RW@&$1`tFA3?XKRDyhsXP4#l@cDr4? z)_o<!5p8pmL^0S09(X`zGkKt}_8WocN4Iik6gdY-NIA8oru7U+QA7wA*4oo3i^aae zn1xM?@H+dn!4xMAERd4zqZokM8jK>=QABov%s9|XN;{{WTb;)`@80R`(rMV+wCnj1 zjA;%J@h1uFiKZkJ#8DwsGzhzZ3qwNNs@7_`tAK!-F6!K>l@DajG9=Y&hL@iY?{fM1 zg>9>a0^a4;4ft>HesFcs_a2_vY&QG*o7)9KaqqkMIJUF>@#tXokLq2NvTtMbTcS{0 zety0TuMfOS5u(fgOVR|s2GS(C^XP0m8)N?F0>^Kx0gKOg?zzuc4vdRGHl6D_hxX%b zal;;7pDZ_RyMRC@QW8`h+%}tg(>AHXB-qhH5I=zsq^mpBY2^q#6;eZ)17ebvnUOo( zLJOrD5kuz>F3P_iisHuJ{$9T<ODuP`+No!qj?y#`sSrt?J7-N(8~bB}(Wp+6q$Xk= zBG##}+8g;APaL78cYG3SoX?98ytmGmWm&ox0k~Fxac%$c;upi0{Xu0YiyM2S%A~3g zA&H5)#*#zj#M(k6S?--Rb#3gefl{$e;)Y0b6j-OMRox}UT=!jN#u@=*z031=u-5vr zDoO{>;KyF)|IdA=)9LhIc%ei1JiNIRciPT<ozLieb>}-e{{%<yp>P-e2Z#7dd_8_5 zeh2;v{tq3~-_XC&3+hm<)P3reoPU~c!Hbr#=Xf(lBSJYkah#|tT+Ou;8G4uT4>%+) zFB#=L*9OMMBG!v-b#MjFBwy855Q%rpmpdnRGJGZ2zul~Z0G#8R=qLbkv^Q_2tEs(l zl6gYD{+N10tzLoeLstf+lEri;M`pjPAmoUDPF9dWw4Q?jZcbbND*SFMVu8$8>huZI z-J-2_i^fZv+jBo}e**6nJbmi44j1qN;@Q022cW*h;-;=RduQEz>HMJI*yZmjSuNU~ zK||LLSn7IMYgE<N)v}$oTWLwHDOoLctF~;pY7?A*npm>cE9okMxo#SWv=RD2G{oU9 z5hfHEW4{mb3dzPP2#XG9UtMO`wxzHb0k%OwtI*wTstt}|T|W}lZH&rn2TO)O5Eu}h zH!sYlP1x<enK+!a8;fSXnvH(O(pEl+A;*fy18EWE$f7Exj7~D$wcGi`#H;9u1~26n zxS|j|JdDJnjfQ2!AvwJJSel9M2fVO`729S=L6&V_pFSqwt;#OUcYv#CE$RK&#fqlo zKx;IcM?BS9w2*2EJXv{c(d2?PmUioxNO{=RHKyNOnM)wl3lE<U&rTC8PR1a`<e!&` zX+CP{HJa^-D}4dw>#*F02&O!f%n5REKmj?7>~e(D=uoxm`BD0UIy0FQ<=1K2-6qVW zE*A`4f-2)cVZ}93A&3dLAz63)cG^DHTDC0DQvD7RiVA=xu@O8{<6o7B!>cE4+k%F6 zarNYUH~>KSYLtp%n1N<uSU&sE%T7-jX>t9=0i51*&r9!_OaK~y9)Z^2wR6b8N<kF2 zozU2=XwAvVz4yNC9j&q2r`{L^gdR~%JM>~R$Vw^vihR;R<&`qRVbS<llO!+!Pdk)2 z7SlR~*#Fg3P(zLZEfQSx4k*WDU~wu3MXLm>W)XmYQP_TiiINNg;J$SckN`ny_@tWw z=thzU89&M)0C-V=2YW|kF;;2kBhpYr(ZmTVa3#@H2Ea$!2!b*B2P?OL#&`y21vpZL zj<>okxW+(Wj=&bV$rvA#gjlKgloSAx0rX^Hm=uIRjI-X80S#!i(pF=@ybLocBu<dr z2z98Js*T#MMIeP@sP1U6+~?4zNEik+`sYcdp(@rST!7C6DRRtUrn)Roj_*I-KN!C5 ziJp?8sOv(*K^EPEj#)53Fvb&r5YZ<404D%S*Qfe$7*3i45mH*|%DP-3E9PFvisQc0 z5vVtWI2(@uDAPBaOq3#{h+&v-W^5<b{@(u4_U5et;N`o3vf${`F+^PZ(fR(K2@ZHP zzIfun7tLk>2a`K@-uG9?IZC3Tn1t^^6?T4Cqcm$mz4R<-_L@kUB$k&Way+hTt)qB` zoSbDDsiNoy2K;U>*uE-|BJDnp4km|379h0CC*lwKj@IjrhXp{kmpLENI89TO5L}jk z?DfDXwup}P?&7@Phs)n*M9xxC#9*EO_&m?=@MxgT`;q0C05%Y=YD&Xi(ow3B5uKQD z-%3ZUbb;wW*#Zp>@#Jf*05U*L#WX-%up1{u#lkvI9<+U<2%*!rA4!SRN(n61T2?Gr zA;Fm<&rKX#zR~l<19)pSrm9$_Jf%n&F)J&ijMxt(67y12l|giYP=JxjR7Xas6UyA9 z%#29+)>p2SSBT&w(+n6KDrnTyZM1r$PGiMUj5aT9s!h+}{3J%}&z2`sDo1!Mc72P= zD5aZZU@iF-ql7R^vsYP#DyV$~?SNG<H4Z51ImRhZYz+i$ujfPf|K$!DKqhgLg4PgY zgctx#@Jb9imyO509yy=csz{Lt9)=1BTAv*mot7mrYDJ_qpqqI?&<`S__p3*vv$r!x z)tDKPI2DNmwKk>~@|$ii>MC+0eQFOQL@P0#1x5gGw8DEvXaK7F?<uT>gM){No&y79 z=ZKVNvkwK$2<T8V;K9LaxpPF6o^RIk8GfV35E-pCu<o4!pb4asxB?OYt)YXR=7qa> z0(U!cr`PEm?PND?rKOhIrY&eSUG3VUU9|+i^ys6H?qB=)zuo`Y&)MJKfB&C3_}lsC ze(vYK0p8*AT>+lH{F$G={3`gIPQODhd_O)2KheoMN1fMn-rV`(&ewH*y7LR2zk@kk zhX>(Z;RE1v;LG7V(BT{(#Bayn!oS5A=sLZ;(`hO)$DRy7=w6!UZm`ypY09dc^H8PR zrfD--&exlAr}9$8&2qHftv6dQj6?}a`95=dFnVi0og0VVLLNd@LE;6#S1F!hq1mnL zmLaaB4QT?jeArdfgL5qGWXE0gdar0+ps{;*d{4nUgw#>Io-d%u^m9|SlV*wZ6yYzP zdohhXd)u^GAT8N`LY-<N3{~?NKahESfK45_o35sdDOXjyXkdbH4tf5tUUXJC9A$|C ziusFh=Q@ZEdJ64+H+uv|4Tc&w`?P5TAVCaC&(6&-2sOFX0yEq(>Q)X+W>JyJZEe=V zaLS6b^4c(t;90OA!rKVaa0c535ZvQwYs6FFn0<>W&v}Xfkg1&I)I-~+#2aQX9l9_s zGSoJ(z{-eYuflHDi<;rhrd@1S4%}<Lp|`l0&lVn+=Q>7E%r~Pub9s%ngfsnW{rmu{ z^B%O^R_&r$tQA0ZT>NU{cKSc?w5S#w-NSfAa)_dzA|f1VDT5|mFK(d5x~hI8j$^Ns zkCm#4YNbvEAVs8$^aqq^^uSs(yo#)aHh}N)Yhti)Td7e>>4yzbUnx<f{<A0wXUOwu zQ4knGWnlQHfJ3Z&k~rtRyJBmL2m_2LOrJbt&N=7(+hVsxzi7Ej5(nNn4?jhu?0f^6 zk$*SKW7hrt;o-5?$NfPRVa^<%p6#wK_8adh0(9H`1HgW7H1fk`HJvVa>JosAB`F@* zF8+EwFaq$;u{?G86=+O0JUeTzUM*{_2hG_jYUQAPYzE7#SBpmLVRP8jD$!b57FI-- z4-chB1kU!ZU5mPa;BEKtkWKyyZk+J@YkoH^F@oiAt7{c1cD-xY8`eg#?cEA&6cLNg zvt^PJ5@ZLH>WxbWbP>k@iTsX@mcs>6GxF^A!(v&M3tpSPXOK06dA$5Bz_+7HM9D3G z-L@~i9J;4D3dRDmd^nEK<|PpoL`1jfkE^gD0d<q8X-LfkDh?+7Jl-U!a*PK6RgOlZ zQMKJ}jnDRIO9b^SCF9Wc-fPw3<2XK!*8w0L27pkLxA7Dx8<yV4i$Az)MC{_mkNw+- ze1K0EQ6Der=J9b7C&^svnfHX~4kq_l^|HwXz<KT-9?p_(Z*NqV&f}X$kq;MBe?nz> z*}(+7<KFaeHeIieK2D2)y}kQM4SQOTC(0vNb-!O;KJ@7Ow$^ZaG*q9M7Yqn>$%klE zUj$6R?I_fl1t4yRszC@Ce81hVnyw2JAPf|>;}V5oudC3O&~yd6U6qC*CJOi-<-X@z z7D;W%o(=#j27s{w001zwtRVp0&N*KQ%D3l7qFhlp&6lvQ-)`JDG5M5?{|IAWO`R0w z`5`WkimIFtk95m+1?)}16VP|qGAcP<SXhub)DM6A6QB5m-M9;2jw*`rr_XrCGoE?V zEw|iKg9mHS-v51Qr?9_%6Hwa;de^R9yM_=x*gx3A81|5jMhH#1oL4LgqroY4Q45n1 zS(pcd%NJL>#ouL#7g0*JFKRTi<jUPcz*#mUO-1{HMk$3TZntLINld7!vR^ag|EipU zdi0iCrhj((=H?AIZe%r;a}_Ty-+1FqH&rW&sv?9Cpy*%^{u=hs=Md_QCsj38?hyUQ zEhctc<sbr5K`_P8=x>3P6W%z*nHu3A!~Me#4jzaC1c#9@k}e7vNHoxYMr9NzI=fMq zY&7UwyMP7LX<(NmNs?ekC7>vj0tq8sCzvsS{5GDb3d5W;4pM45r#hi8WtyhzlnG5r zu$Z~R6ct+_9W$8ddK6OpP@-TaT%06H0`rV`8!}OxBwR{QXu~{V#%4(pMX^)>XLRNQ z38Nqs)QlBsXOwmis6s$fOap@@rNj!MD$nzJoq(n)nx%Li{Fkbpr&yYzYC!7sJm)GU z3YOAJD`%`|0B){|v}{|^RgS|T3JDNOb&}dEC=9U0YiW{VoFugxx42i$DTXj~N(mpw zsg2OVAIF6-o*@%usE3B=26P*`7hR4=g3-9NKY_j;O;EzC5g)Yl?FkYaMh0UCaifu+ zbY_SaJm}gH*hcyvrqM7z>9k_qAf6cCF2v|5q%Ld<U~*eRgjB^^g0{1EV0i#9HfkKS zgK9APDY53#o`P>z^>b)K+IjsGR0C+`dA|AVt*xz|zPPw3L~mLbLhMebyW;fa%a`+u z)9G|qh~4S_ON*k|ws)FmVC~eYQ~9>s$-lDI?7jBNl`ESCtmS#WBe(NYmoH!5%GWkG zH+y@Vo10gDv)Ahhu{e3k&d!d#U7Ue?@;u+VoNsMyUDkJXeRujtLWtgUvM7RHesMaT z_JmlRoXPWiTkhofj@-`w;qv9no6WCo=5KB`n>+S)^EF$|wav}V%WGR(TfGN&h1i{3 z+}_@{cbcaW!Uz9%@MBEjJE)s~7KXvq=yzjB;Uv?Yvb&%xWW*ujts!O#0S?nb-eD^n z_Vkz;kC<8`i5KS2I-aGjD5g`d=g++P#N2#9Dg56w6G1&m=I75izNHSR;nwSoXP)@$ z>}O2vI5UQhV_CDR#!Ps+#Z}9)#-_R0D;a~SscmopL&veqSyfler(3FOnR0BIi;J_2 z+2qThx8hy&_gvtmJv2tgD&lX{GtdjsE72R!2hnF)bV5d8$b(-xsoIkk218f%^F`x! zEzhEw9$e?#tvOIesN4j|srH$p6jozgS^cwuLuRR61;q_&DcC^-I7F@qC8&_!%O)mM z6ax)Gx>eA@?ec#(eE4v9IQ)lm%AKEQU2Ib*>R|4^#Ior1ur@n8dvx~b{<F@XKfgnt zf+(w^-czW;I18U0Je4cIaN@)X<rG}^Of`e9;XgQk{`|HQQcAZ@n0MT9$64iLQ52=& zq1iW;hYC!Y!rXhJt8Z;In4?xBCmL0lqD(*t&PSush%;6riW9@<hB4hRAX8QuYhcsF zj5Qcz%w_CUqtR%LMn^DL8E+s2C^`5e_)GW@dM1<7=6A7;F8(eyP3{qa&1SS>_*};! zKP;>a{7_&pmz+9m4$$hGE^?kN)mV1R|HF>sTbc$q2>bvWLb_4{DT<=ORIaLk8+j2} z23{mj;JnC4JIvG6_-IZA)AWi)9W-K%maYR1{2&0(G|P8g{3M9tnroV1NoirQ?I;Zc zjD?lmToNZS)^$;(9kqhv#6>N`fE_n&)$14(g$qpu5+`wj70QLKV+eyZkQ_sJDGTE! z$<hSscp!T>-h~`(#|(Mg>(G1A*H9mWQPVWRHHY0r0R^jp$7!&UmZ9Ljcc?6=ws5d( z?Nx)S>=gN;ZL`o_6e0;oFO}yE25()-6oRDj*G1U)ivzgSb-Lx@lcUk-Xc#_c`cANd z(2`7#lO!=GN3K*AhBVC^_PlA^a67f_BsAdH!f1WGzrh`cEx*TA7-Npj7*m{2oj-s6 z{B*jyx-?x`nZ71X)9%vJY?^j^OLOT*j~qD?$9De~8^AEVy3jcf<8<y@TdLl%9mZQy zVQ%Eu0IrcFM;sr#3ZyN$nES!8C3v6ATiIe`Hjd-P)zu}v(P#{YjmB`$(1+B5g*Hg} zgp-U`nRSuzt0RA0Lmdru`Uvnox6S6-VLkgnWy*)U4`T!fN~_6eShg*_>u_4|g8>c> zP8yFY1dYZ@d5DrdcKtk8;`uuv3>vBLQ>=&|FTQ7*U|N2yHWSAf;;3Cj5iLBg08KY7 zA;57c>^+q{ZPv2F&mYTO(l<2ql~EH*YqK5SG)&VAOanR)#WU?F1_*=Z7&|sr6sma8 zZ%b6}Q0!80SxxOVn2n(PJX%Ayp-0g3^XScG#}(0JEF*4L-EIdCopWfk*)78-CCnyN zDW4t1-z6}70-!z`*hSmaTA)j#QPp<Q$YA0n@-CTow`IEuEU4AyJ~mgY0iK(~P^-=1 zZVFj8H=EskGM<~mA31*fc!rc})$yk1*6>~Z8LqkBC4f<N#H(eVH}ONV<Hs+}x||({ z3x!9T46|%lgrpCN@0!c*o@AJ1!wargtGV9pdd+iPuXar@WEBp@UvQOfb__Pab+el5 zz4WD?TgzM*UW#YP#O|VH{UOC?(IcLUH-_g+Ijt@dzx>&w@}57lTmld-j8NOKvnS#c z=sb*q{y_!s7)4&q%Q(iAt#7$;$H^xP*L9B^UOO_YtD4asjYgxw&{SQS<kZD|w9`2$ zuUXbLF6D1Y`CI&+-8H1VD&^Hb%Z1QIQ|P*yX_~IpR9zSMJU(d8_#2&|S@eRayqGE{ zL}B{S@nj|1UxNB6kr~jowym6W*hylPap;1jKb=hD24j<y7h$5ECW<On!aMih0#Dw5 ziz^I6xbWob<Np$LK@F7yjUxK~I_Jd@Rmu#*an!V@rbPjHVG7Ed+Lqt~W9$c(-_&l< z!g}Vo230kDsk$y)X9hlG2=_()73%4ZqNv<Rq4t*`?J)2-i*%i<^#_|>f;(K-3#T@- znDlg=+Kkms&&+ld76uEp?lOg%Q0HTe5I*>ygFW~U*h4d@htOWojQP80^VG_WANnhU z2s3MezZtFFaOj0c4jV?t_YBjL^=$f3ISZzWvE%d&<DWM#F7gYbwHpq<;K*Uinl_i! zClAe*VB~-?>08$JzjQN(q#Y2$FNLS0yU>#n>U3=r70x;X-y@DW@paw)RvAslV7}`o zB_SS9#_k7Y-8a+v$(Sd`MmHb~lL@+gjGyM$n_SiHIGN<0YYJi5(h$1kdd*23+q%k| zc_;u3v(fQ9OU7}xlcuKUdb4w`=b35J?Z&aqF>AFOCI)-|mjIw?%Tko7n7S_5viSlJ zLz48D=H>{tq!awv9+<AQFqxZM>L&@{M2{jrP)JsrDLo&+aXW3>$79<a*8%Xo(st$y zQ8%+D+7A4nsuA`w@B=`|I{5E{AHoOVN9f(?Q|P<UgbLmPABV5N6YyK`w-~UG+dMNS z!?Ig~<0CffbTlr<rDO}LGex^(w~Kit{@w@>v<QPG^2@hd(`rjzg$S{clX|2dFX|7* z`56t0d}Zb`C>tL6i4@})!3ChNZSWnK`6?q$+L^3IHf8k)nT#iX`yRR9k0a}2*+D;G zJe<4%%T2YS2faP$5AID?D#j&@fpeAF&|x<@OI(9l`9%}JmY(Lqm5dUjZeLi{6RhnC zKI(^Ug{=N+9F5B`azj00T=vT_>JR#p`(dr#Mol*2vsd;CQLC(@4Fgp>j(GPhNXLCF zCgvW|Ln>zSzOZ;ikOhMZVWjLP5VslYml(`hjH>9Rg6AMB$T|x3saoK3cqXOPv^+4V zOBJePJ+C0+6@zh30b4={6=Q>Dp>iT_sT>ooS`2_$1Qda>;<dLhYw#IEp^B<K6Tk-U z4{CsCS~SwNj3^kG?`dJ47tm_tf$sSXutG9Ti$fAczR%m`q3NC#O`XJqMNv0NOq4$e zNF<T?f|`gx0%*k<0Fw(sK4FZsVnPAM1WJ@}YnbsUV4UZXdL<B|ww4KXT-T<4$&K@_ zkz`V2DblJJCy*xfhiF8Mj5E2l<P0!*V<bns2CalT1eFG&6gdeb!J!7om^4HTK;*On z@^!{wY@|8A@sdiKI?_;iXLJvjWz!&Zo5Oc0_9HOHKjF)w@HS*w5-D>10x3@Fy3C2< zw62S1n`~b&>$1pl$g}z;q*<?*Wm($mry0DutSaYN$7zxVgAg^|2!#FOH$-HT=MIAQ zsCCV5q_J3*LcEI6Xf<!EwP12!qsX}^x{2a%K>_esL*Pv+Y$Yz~uDZ2G#{pcPPb8j9 zrfE>>Aj=>RBY;uJA<GVw3h8t*Nkr0N<C45Mddjm@bwlz_SzXsn1P200L2aW~&x0&q zRPRr!Kr8*?>dTo8#F6F@5saYJKv$|2DCN(hA~(IGd>S=%{6_EME?VoI_fbL8mP%Jp zOc4*lnMh&*{37sLc@(km%2_RdtPL+=W0?>nuA69@AN3m6<NY(}Qdy>%Im&bW1L@vg ziT!@BhwmV)yH%cv7|GMJv>y;PbzQTB(CpFr{I`WjoV4{As}D8PfEPtlg0w@Z1EFeC zMhl5TRS|}ct7@7ShTaK#cs&U6+_v+Q?qduut1HL|b;ut&Yglz98-Z4we>VokdKzKS zQ*;%@)A~khsFJQUrtFq*M=h;kphOa`#$hv;f^*9>gb^7u&EJT6V=z2^Cjo$3Hora^ zH=96biUQ;5^xV0#+sy(8;p|5=tqvfq<EE||qP#xf@2Em+WExhI_yII*MS)D(2#PAD zx@H*Ng@uKB9pgN2r)la|)p)8M{1N;o)`C=`5Y^i&I;=1!Dac~aJ1z>4J>m-O$|FTl zlvNoKk9bvk@^}(egHE>l{(Awg6h#qLQRQWx=k2gl@YLPi-B<DbKNCXi{PFW3+y67j z&aS=h>eZ`%v`sWk1Gc^Y0!2|CdnwfS{{UM1f3Wbto1u{;$;%&kre#@gedXuEFx>wi zkar#b=>Goz+y5V6FELHiecF?5zy0>NTJN~^ry)Za1qXZZS=d8adkZ!TO@T7NnX(@h zCtY$3s*{!75<ZJp58ZLc>LFZ~$H2T`;-h7`|IfH6ih_`$C<^@VcN|*9`;;CZje-Xf zKsh!TjgI$hDeYcQN-2Bsc9ms#7w$tU3efM^x2DbW25%@y;t|Q*p`6FLm3m<^jbx;K zo`#@d;yG%yiKv#=mL2p7Y3PwQ>|U~lQ(XCzZ93C}leSr~-r_!(J}v4b53yI_xC4}i z?O^SPprvRA<5_pcXEjE-#wcH=(g}Qa%|BJ?*(p<NMALv8lv)Jld&;)#oI;2#)5PhM zALsj?W9k@F;@73Eqz34gz^JO`j_*6Ru7Twe5=6bF@o-^ww(w08gRXn6!JuJctZA+r zI?`sk$8`=0fF^Xy)Fq|1lhvb)k~}YpXvWi3V5Tr(MPr(Yu>_!o!VE<bswSj<pr|UN zTxCWmCF4PO&A)>0nH~=W1;Q=LwL|luDMBL{R5zv`J2F%=1!y+vwyJ5Ws$fkwENO7S zI<qJfnjbXWB&l`c*lz(Y-7xfh!vs~8X`lf%ZUJXW-bw9oR*yR~X$W8jGmZz~SR4cA z7?{~r*QQ+dC*;Y&H*gJp78z%1=?EQ1x7z~@yXL^onkaYRs#!<QX656y+(E%by62rc z&~yRGx4FSe1iucQ4q1MEoo)yApSb>NL8sg4z{UFd##RWrK3f!CvkkAE;2BplZ9qxS zYD9q3{ZD&#T9!QkW}nztpP^I;c-BJX`_aNe7zE+MC+>Jvd_P=x_~wNLsLx=mB}qr} z?TKe`Thv}Zd+z$eTdb;u-=?Ay1fXe&&syzc7%@Z-{s>+GA437^p`+*wx`19;Pfk27 zm!iA^`yQ@s6DsIjH6TPJ#WnQ34bp)m5Ksfx%CfpHV1E}RkBh+<$BehYE{pqTqyd~z zjA!_uVwzBZ@5hl|+zTt!?SL`9t*YSg4L59T^x=WI`8)5LpF6d^ed{kbgE+wu_(^Ow z)ufEv>Qqf5r$N(&N5FCHdXf@d7#@Ia%eYp<Z>G^h56<WsRrnho{{7$o{gd5J0RT{R zJ15J-@9i1meed^fA50DpCkMAb{J}JF@9}HD_G>SeB-t&}l*qjQGtWGuwZ7Q*4&e2r zb8NB<qH${Ne(gP*B!PI8TC>;bP-oED$0K;Uv){S5^NyX)(Ke&4?P<F>tMyXy7G{|I zY?V9G%qi{CY*(K1O_Z&T`9d73#xo0yOjc((Xbbq+LhEt>A;cbnPm?GX^|(C;dY>29 z7Uke%y&8@GpSpABeP*ZY#q8<T`tbiASbjje=zFi6QpV89$*o&;FR=FO9{l;Sb3oo0 z2sGNWhPBpp<+W|PJddBs6v4lDi$%8^eSPeDA@Ts)rD>p5=<%Cw(@j!<`|w&FeYW#a zonN)2O)DMT;|5YpEFI78Zqb$&9^9^~3gGX6=M9BXDq}+`*sIe^HwB2^h=OGhTA-H} z6$`PcSSfLG$#eK{O6!$T+A!f@O34oKEXMr4^Bg|0pOq&r>h-uF#q8LTPAe-LAq9#Q z1C+#iAB@qAR`?%`MeHnIFsZJY7!j01Yx+Tg)1n^$?6Y7J^?CIw)y<;FiS~hGs}Kxm z?Su#^M6r#cpxCn};@JB}Yk{b)r7`_p?6l-r8HuqKyt70}q*a)J@!HE;hO{>fRESOk zpiQ0?w%_kT6s0K=rwBkvN)}ry6Jb>3$ziM%kls&2WHjhJPJ+c5J!SzmdRZN~!d@#p zs7jq4WmTOJ5yn~p!C32vP!&-KCX~hgu&FtdU@gBiF^Leo?YZ_dR<2+8efR;uLmxpp zI)*OC^Cz5UnTYWq^44g7mF5)GT!w=ICLZ<+N(?Q|{s^nS9O}B5hHIVO(I0iWn$~Km zs&-z}Y&2>sOo^h_yzguJV!u;{p`l3WxpwRaGB(0+TdBQX6uz$OwdG@Z({-c5^Q>W# zsNAV%D|S6A7wdI>C969MrSz8NnZ@!6{x`Fk<rAiD=NrAnD1v%@ZgD!oG|Nh>+3a?k zeN~~pWl0$mGP(Y`DoJAFv8zW8TP6nIZ$3O6Iqs<2!61y;o~C2m>5ho5Ya9?lDnbW8 z#0>V(-ROSwWb_>LWAv-&Pte~Z)EQ5zN@g%nTZ_tW#nZZAY1wFiQ%vJF%9a-Fvx`Wd zU^|vl{y-<QEt^_&2Cz_eCuzdfwvPbxx#0R@zgjuV(6Gn>%<C=p2W%qAfw2L{>&vfQ z`W26^X~-G(RF-YD^XTy~>bA)UKozSHhWRazjfNBWNl#OWW?8LNCj^8McUHOW_=)ZF zM7Xxl;c!cmINDHz08L6&RduuMTMCQgR-RC*amNW;t)HmZ!7$9lQw3dAh?Il(NJ|$@ zTbjRV+d?!5t-V`Sn^J<~)R#(2V7F|y<7QmPZeU|fq?H4BKIe_W4SiwSQWh0jwdrBs z2RJ;x5aHTvFWYEfVVEb*v&1h49QuGkQ4Eb`&7vKK42ORJlv308-C^MpElo>@$y&{i zL2rx$1&84**6eIlh50O_Mm@_~rVBg^T#0c|rRT!WgD9Gdd)P9$Ow!sT)0wm>G@VX$ z;k&k?M4wZ+>-o0*4aWmbCBPZ(E=k+y)$69Scx(hDv#I_aKR$gDwAEg(=3ynVolMn0 z7_l!X0UQe3wq_PrGsqz<JrBS%EejLZ127HKz~UpT(gg!-r-u+i6!C*U!mIEhq@y)- zC%PA*P8WN-i9#DInii`n54bisH67yCgSkIg997+F{xIO#sU-&_1Ty3gTuixBFh5vW zfp7AgnzLoR|II{7gBdqnmL|s-q)g!E`}gR#FI~EHsqj3*@DeG*u+&#pR)#}>@qZR@ z6U-QKnualF+8^LJOw+ipWJ>?v(|_k5Y`f-Lk^r$~lDqDe(@=H+5o8_w0el5MT>D=3 z2BgR9$0QCy1Dd0<RxnHySZ0c)vJ;ijj+;kcHTc{UPdvf-6O1jZ{8gO4imS_vEid20 zX<GXaP0jntue*5hBBd88jR?8!w+lv;zB-EjwIjJi$R$FbzO%D~@eU#Xe=-PB6d(kD z3%jU5OXvvN9Bq+&<TZ<`M(2hqC1QnYjf7BFr(KO2uxL!7Ru0(+;0h4I9&e~4T*H6` z*nRukU3KA!-2L0vJ-4>hXutxVpI_fwSXgi>ctg&O#~5}^!(CtB|BVI1bYb2#%>BLf z%yn;{pPz?D-aEE14{zTXjq)Ze;PLoeo>DLMhp-DDMHzZIdQ<(Xz*sRXSizjC_VZ73 zKR@scGRS~0R7mN_i#STyOrlSBX+s-ix;i2kjd4VT5zUK*XG9?)LLiXmzBoUg=6R|{ z!80>WQ{W1Q)4FXpEKCHZ+?#AoLh~#Wbgcnk#<4<l;c4ww8#G-7U<5~@Y#9a(pksty zFw;~vF!iEX<rT3$&}wNMVHx=1ETKYL3I)Y=RXAc30{AJQXnNiB_J1zZHC`B%E?7U+ zOvX&h(>+%OU9Vel%n4O;(`-_j)H4des9|*MkPDqM=4DH1d~0nyZna<<MU;Z3Mn7Mh zk1=3{kRjP$l>GtxH+%@Kqeszu>fVG+M6MS&+7z#op+z%HY^I_)V%IH81slPDMWPHu zt5+nTa5|~o(lj6wf~5b}M`PLjz~=z_7l4uv?ctzlBBXI39zIf)7fnX_K6<L<&2AK8 zkd_--7Fbpom=;JY3@r(k89Y$kwItvubgTLK!DKphUg0)#PdJXyyvxajlP6D}n3sh* z_&E>ZIKs=Du40-&%bha}VJ$9N!Z2F4qf=rSB5K-BK0iO_IC&%tgHYYETTdc>pw>BO z7<^J!g8;+(jU+XKKw1En6$F+AU|GTSJ{bf?n#eNObhTc0IU~`b)#=pJ386&uR;Pzn zL&CUQuj`ry^)Z;}nyp0%;C6f2G<rhE*!5xsfXAMTu`YUsx!i8!KK6YR5&(=7Fnu2* zd9Z)*TX?tbOLjAZ2IwC2ZuDdH`(VIz@EZ6i{1W^h?%;mZ6FSUo{L-Y~u5yq}!^j3= zzwcN6^t=5koP=>8Y2T0)fnPoxUQ&&L47%}*g*4F^lP_^O9<XmoC?wqGZB)d<>LZwm zyPT6+g@OSY#kgPfgQyAzeRfJ>-VeO8QR>4_`UFQ|Ani)!q&{41ChfFcOv|=vOE~Jf z$(xn|?oP*+BbK}EX5Ox+lS*Y+*J?Yuz*1tH4mh2VQF&y&TQ&<f3DSYcf*XcmLY<N@ zj&9%XZatks&dD^(cDdQ*L6I=zy3=-2)q()phs<Y~pRci=guMA6(pJCRR9s^a2ZL=2 zw~;{Ft(0JbF09`1gZ{!rTQgTV+z~>$n&x+quN%9m2OBLBDd^hhFWan+mj&AlZVLSB zjCPAB+Rh<e?^LbYnfzD3-zO4}pP=`Ogjb{DZDaUXs_KKfg%$iWwu=Xn>EYG-?ELhs zxMw;=TBgqL?_Iq$J6P=Z`^n<`d^m#t`%e<t)RcxC1<_+4$Jw;Z09drH%u2gOwVx{H z`iON^$N5yixF`^TqU@@7u^e2ZgqRsidQ4?n(UheWJP{lL=))=z%ouiob^3Auh@=2! zjbKwpKN1M2cmM(b3E79KGQwhd))^Bfswg;10l?ab?aK)<g00p`O+;7wmAaxt)cb0K zc8E;$s`ev-AWDFgJBUPu9f`TTu8hDIw2B%;aL&H}pY6j$*cGBaxu4cbLlOf~l2~cE zVLBm#E@}ov8Bq7Z<Kr;MvvQFnS=QR4!`15G<aj>l11u(xru`yBhlk63Cv6F^KxNk; zD*a|+L)$N500SB!J2NE)-Da<~R&?7MKF=?mXk(xPcoo31rsXmc3$f&yhqGBu6<LNw zHjuq$51BzjS%J4Z{8~b0_^aNK@Aire#N@SeU?6t6?g^2jKt*#`sEraXZ48D)fD*~T z7@#DREK2{}HGrWQCXMT4D<a>frzrXt@O%ziI&q?cIiZ(jPArr#7n<P%WR+vBbSlFU z{ZFU9X!JV22r%dwAiriX%|O=;VyV~~L7Q5Nq!7XM`t4>n(^%PuLA}v7H*3K|2H?7z zUw`ho=LSs^M^W4~gO6#v_rCeKvV3mPpaN_+gKw_k?+L!OEMI$S?>DS9oA*zWPnbY4 zET4RS6gS;|zuUwSl*shMQkLWWl`+rg14k=n^MQsruj?G@X7c5eazh@>%hR8gFR_it zYT!LhD=`tbF#sFRcYcxpJs@o(ladA~hg~#RfgWvpEkh7&$(iPxkxdXSIx!e~#!`+- z{$q2*Dv8!OOuEPOATq3U6hTqU0mS=3Q<QE_V2sI>_J$NCk~wE$1xBK}u|A5rq?=}c zV1!JPLI$W@RZf+pN~My+(I^lWb(7^(hG%mhl?U>bembN^Q8v&=d;4cd1V~O31LSdt z6!YoP?4V~1z$l17h)g)Avx0auy!wz~PK=JSIPUhlA+k0}e9l}5B1WXDG$Ylm>(C@g zLa?rzN<U0ZBt~$*b##aFbb8k-o!51q?!0^F<Fi*N_#aU=Br<HtUdV#yC@3fnN$1GW z?Ax_+$QPm+Tf42nj(6bcWWKryE<wpbk)(=6n(O0c^VuB!-HrEd+awuO`Agns!vJYo z_2XEspIMQ#D-58rdu~1Ss#~{`=lA>lP}Ft1xOM+#8xw%{r}JIebR$y~dCtDuEx&=9 zny7B*{fKtm&kHqu2>75V&-#NjQ`$SAy1F>%_W0lLzqZ>SR29TY33VJ}S@!cy9L135 z!@7It>=fYYm6v~iJm^nvuUC6}07pmnWX0iV1Z|or)j+Lv@>BhOzu)io`*$M3D2pP9 zqBIbNqN)(^kmF`32Q%ZohXp*2rf3b_i=KjBUh}?0KgZIxB<4XT6^)~o&8TXZ`AJp8 ztL>;->61;%vZ^ZAV&u|<KsOQZq@4&}5pXJEE$W0(^a{<kSNM;vbS*(EC0ao(X7s>_ zvSn%x|Be+!Nh64l>iUD%B8;PJ59%5$CW8AJK0MAg3_ted(P#wNr#^<E!k9@+*6DD= z<cvLe62LQX<h?QKp7SF746fZac*S#-(sNxX6e5FAf!uYysy>Lr|Bmp3s@gx2q~+WA zY^oP8Uj6va&JH0<KF0nM!FLNGj2mwhAcXk%+8NxqF2wtPI$Su1qvMSv8d|NJbF3@3 z-IhP8-X44iT_=e}4~FmuVfi&>+zCZNWio~U%(3{1Q*w)-Ohs#jZ$19_<C-wE*+F1g zY^7$JP80;%vIj!9EZrp3k(APvSE=f>&(@Dr_17MM{Bc#C8#2oZR(KGEu4QFQ&(|GC z=(^=N>I=AOiNRIP5ZdFa`XkK{+Iqs6v!BRD5ju|UME9WkYfFrR>_}D%!4P_HtU>k; zVK5jBM|XKLoR<BnJBj}vC)nqj48vK4T^Y*HOFkJY|GPp>&oim=v-|7sBvqaGK?4jk zHD{U#J&&!SJ%bs^9VhIQ7h7g+Sa^|?5L8u__aDpiyx;gO&Kb-DXZ#wR!Kw!+w=~@Z zaBR~6P4g|G>)gPwR3U&!i0;%g&DSi0Fv2Ij=7N~yv&O+S_&4|#{!zW)zj5)E=ndXU z?Z^X%ai7f7e<F%nh=NK2v9Z!WG9X!Q%N9L)#<i3K6A^#NDz?fMx2-M|>VO<}G#V1L zi*O@b?Z~C;|H&l$jyo8h#V3~2G)<P=nVI&Cvy`N1x_lDupG;u&(4%)uCSKwnUAy?K zjSYZ}jb~k4JL<jR7{G}IZ_bt&$T<v#F@wP{X5@l9?|BQ}!p$>=0k~}##6AIVjGN}j zn;(XT5r&2lJp0COmsBSqO_!I_6xzBlL;-2Kw4A1JvZ9ApAA0oAp>BEet-T(=#>TUr zwXp%v>)rY`cKr#cX-S+W#w8vELBLoL1R;A{rncK^4F)U-f`GFy2m<z2IB^}%yQNt( zjW9HfFf<TC45<fygs1Q!l%X*?fi9q@qL(2AjJFw-#IEKBv0jB;Np>5NNzmXX8W57A zMoIr-W^w2{sBcj5YS39*so{8j*==V+LV_FULG#qH^>i`cZ~fS*+xgpH``XuTU0rtF zLU?Q!K^VC~rJeUSo6T@WsGYPa-}}T9PuL2Z;1joLMd96}hxUIeNfIkDgsu>-8bJ^Q zMqmj+G3O>=_z)DDG;dG2|6YtSw0*BdC=P>W-S^oc@{R3wd%N@IwLF!7j3u6@p8NTk zRYh@Z&hPDmrWz(8fEeQFJYIzY#b^;7LTAx=^c0yKI?^OCOz6KD`m%<?Hrlo}AD`}& z{i-Xh(4UB9+u`L<5JvmVl0g}efyhtEI4d1p*B4o>m(nG(H#h$`{eHiXqbLe--H}d$ zf%pNzK|uaN5EeybxTI;6Vrh{<RPQt`JX_bp#B~WY_xASAoY~sid-k*UfGWP<U-AQm zzV(3z9so@%TAB_g-5^mE*u&Vgil$*ebF^+W1Xq$IaRFn`gIKN_N_%xhqD3_5K@EDa zX*u=G%e9h5D>za!6sh)@hWtkpluJuX%PWqHAqW=AA->GnMx)V?nhrk#VeG!{?Afzt zS8Hj#J_Pz6TuZ}d7{b?Dhu!^m{!&EP%}aOjU;Ywq=H+}N2gHlR1y7<^BLwn3wjE*6 zK=qR0l0c0LejjyUs-xg(l;Onq5l^77bXJJj3;3w##wtdB?a28(TYiKN{fWX4!pJXS zk6>=qOerPf*Epk82%!_ItAyyBV=_s(l+vtO9FrUEFmmWKH8i@Nx#Oi9EX>X}7TWDh z*V=P)!CaQDFE3$A;vc)&<WRkCLJbs{c^+5_|JGoI6D-VEDZY5-TdMlcnPzu%Z{7Nu zrTO3$WjSM5%|<R3yInX|v<NWPDa+Q(>gp=S0G%vT^8FTHga14ax`$W%fgWX?m2J8f z?9i_P2Ha5Qg~I`0H8<G$aM+5=Y8dnG(x6(2eEfesLC6o*lJQU!)5(o*2GeZh6FSKo zl0Zxab7k73KmoJ|OZYHR^)RdJ^?IPI1QVc5WozILvfp}&fv4l`-u{2g#c=}e%Hw!W z+F|IK02IgdQ&ltlAei%fg)znV=7PXCHK0(J)vK}PhM_HMTmMU^k0As;LU@W0c?CkW zi4grOgp~UbQvMDhb{|6QpAh1oLr7gmNc}g2w2vXAQ-lOXNPG?<!$-(?9YV%GA!L3J zA?ueAl4lUIDMI#R2ss8q&f5@jRfOE{A>^$i<n1BkA3?~+Lod;$J8iC{?Y6XSpk0A> zf6~654zJO%K*w9?v@M;kq;rAJ^>itx>ms^+NB3rW)Y7wpo{jW=i$06!*PnhZ^j}pT z`u{c7!=^E;l|q5xl?;E55qC4Pl96XJs)^A}j9t&TW+rrILNgQFGkG3UJ5yQB&YQAx zkzI~vmlk#{vD=sIxr)7N*r&igE$q9D{pvXIN)9@N>PC)g&(T#J)4;L&aO^EidyeT( zG2=C6&SK`T9KR1IH}KDTPFcn&MgBF4Q>&R*!Td?gFR|bu7B;i!ZWdRuq`<OCEGx0R zj+Hg6dWhA3vZln^3#l8&X_s=^ubf`X=`XRa$ogB@Fp7=XxQsK(IkS<omT`7DXV-Gh zwwzPs+`Boig7ccWxSmTl<+8zC-kr;T<%%1)@=UHSaP>o6^BncFxON=ZeaH>BaN}TZ zyp)@IbMsT&+MnCTar>s+-b_OschqzDD(?A^`@W>Hg$F8lu$G7J=HVib975A~Ja#FM z*U?<dzc1yf-aLb68+mRp&u_`|U-IH$Ub=;syYosFuTJ9C?|8k2cebUaz<aCsa7#XF z<>L~c7Wk}^FJ9xzS$uN~#RA15|9OdTzvO?j`2S$OJD%^4=ZClWaUXvClh$f}|B^o% z`D-43m&B%$eIzeQS-ouXlx$WZn|&%<6lCj4*`~d0ceHHZS$3Et<>m5^ePqW5+3{1U zm?jks(&i~?S1#>)ONR>SP$wNr(z(5Keond^FI^9iZd*#XdD6YVbZ?cO<<j#*>0OXM zHPZK7>Gz!sd`pHj%h2^w7%aoLl~J3@XfnD+#`KmkB^h_Tj9(<<OET#~ncOH-FO|yg zWanzxxm9-UEqheR9<8$HVA-oE`&P)l^|Id$vVXlC)Fg*=mP5zM;k8n|j~vlijws2| zpUN>$$#GRO?M#{ekj$)+S@klzRpvY-b6e#2L*&FNsX0JuTIA$ua_V52cZ1A-OBSq` zh0U^Pnk;IP#h=R3-m>gDS>9h(Rm-ZPtge(b?PX1)tbIy0Y%3c|a>m_qX0@DkshoYG zoZTwtERu8YmP@{rE9S|S-R0_C<?52uZz|WWm+LN+TT60#tu$209f!zWm2x+^dy(9G zh%|00_gBdM>*c{pdFWhus3;HD$|JkVBd<wQl|0rYk57~4CV8q{p01N;$+Pq1xkd8A z@$$-Gd9}a1MqV$->wn6d^W?1-dAmX09VhRW<h?WH{io!EQSw2veApr%wa6#r^G)UR zU*)Sh`FfIkeWeuV$+zWFYLNdn%6FaRyHDkZ8fk4WKTnch8s)c9^4ksa+lTVUh4NR8 z{C%OavMObp)G6D%sBDYlm2K6kZ2KzmVC;O1{f!CVG1+%aUKdjy$5i2%`Z}iRgK0Bj zhR2xYGG>j(tm`pbL(E<ivrosIEiiXh%oC1zn_&LUSYSUEoR5X>W0AaAv@RA4$KoZi zL>nx*982xSGMlm7bSys~D{RI}C9z6LtU3Uz&ByAWu@+b-FV@+N_10s<7T7o%n*?LK z^Vp##b}Wir(qi`(*s~4x?ScL3V*haLe;EfX#)0>7a5N4ni^GC(*lrw=5l2kMk$G|C ze;kt+$Cky36L8jNTv!kn6~)E3aa}`Pw;Z=s#BG~#drjO~5O=-C-KTMH3*5IJ50u1% zJ@C+NJdzZTw!ovG@pwTz8;|F}bLa7VUA(v-FWtr~W$|iVyuKN4e8=0X@y>R<I|A=j z#rxOs;bnZD7GFf;%jfvI3%<FIZztos`S_tIew>Y;_T%UI_%$BCl?0LpVhI2MscB09 zfB@-`hu^5%hXPLX|4_&?P8QdAINhOjdPI8a&shOJcIX`M`FZF(xA}4C3OBi@S6|~| zA!_X`Fi^j4|60W?I23RxREI)#)t}+D=?<-vsr1k(25SA#Ilc$>(0O#Qap($f)%3bt z<x;42ZS6M>jI%2<+HB)Gb00pMVs9C@ySDc7a9c+5_i<lM>ndBzc-+^W?$n6j+46dF zyFb~hG?S4Y>fW0z+Z?r3QF?iuzL6(B^@})p2m0X|Mwi|<ZWcwkt$q9&pYrR}u0EGW z4ovdO$;vt}jcxXpaVu47YjMU)Txa5~T`nrGUrAoDlwB+}o(&ERo|IWu7)ET;7J^iq z;R-AICJY68EQy(KEBX673nOIi_$%g5j|Hvf`jJ%_Gp3KGLzgK-`gG|rM0owooA;kd zXRlSJ8KUX&hOIvh7t$kIsy{&&)IZ}lF69mKym!;5*h)VC@Q2sGe2K@?;Fu8+k^kBp zzn<#O>U70t%2&xAU`TlN{OJmdd)L~067x#2P<3&qHG(TwGAHlqU$_L1#j<2Ug-3s$ Nb?&+EAr}Jx001#^dC~v? literal 0 HcmV?d00001 diff --git a/_static/vendor/fontawesome/webfonts/fa-regular-400.ttf b/_static/vendor/fontawesome/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..549d68dc023ff6e31b8774d784c2cfcc231e7976 GIT binary patch literal 67860 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%0A>X@lH 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 KISZn8x&9A2X%@x+ literal 0 HcmV?d00001 diff --git a/_static/vendor/fontawesome/webfonts/fa-regular-400.woff2 b/_static/vendor/fontawesome/webfonts/fa-regular-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..18400d7fad27fc52cfbabbda495b871bd912d045 GIT binary patch literal 25392 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 literal 0 HcmV?d00001 diff --git a/_static/vendor/fontawesome/webfonts/fa-solid-900.ttf b/_static/vendor/fontawesome/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bb2a8695653cd2839e3e52266c124c5dba1ca995 GIT binary patch literal 420332 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 JQkvHO^gqOStd#%& literal 0 HcmV?d00001 diff --git a/_static/vendor/fontawesome/webfonts/fa-solid-900.woff2 b/_static/vendor/fontawesome/webfonts/fa-solid-900.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..758dd4f6070c7cb399334ae997ae9ff6523d3b55 GIT binary patch literal 156400 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 literal 0 HcmV?d00001 diff --git a/_static/webpack-macros.html b/_static/webpack-macros.html new file mode 100644 index 000000000..89732b23e --- /dev/null +++ b/_static/webpack-macros.html @@ -0,0 +1,24 @@ +<!-- + AUTO-GENERATED from webpack.config.js, do **NOT** edit by hand. + These are re-used in layout.html +--> + +{% macro head_pre_assets() %} + <!-- Loaded before other Sphinx assets --> + <link href="{{ pathto('_static/styles/theme.css', 1) }}?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="{{ pathto('_static/styles/pydata-sphinx-theme.css', 1) }}?digest=8878045cc6db502f8baf" rel="stylesheet" /> +{% endmacro %} + +{% macro head_js_preload() %} + <!-- So that users can add custom icons --> + <script src="{{ pathto('_static/scripts/fontawesome.js', 1) }}?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="{{ pathto('_static/scripts/bootstrap.js', 1) }}?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="{{ pathto('_static/scripts/pydata-sphinx-theme.js', 1) }}?digest=8878045cc6db502f8baf" /> +{% endmacro %} + +{% macro body_post() %} + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="{{ pathto('_static/scripts/bootstrap.js', 1) }}?digest=8878045cc6db502f8baf"></script> +<script defer src="{{ pathto('_static/scripts/pydata-sphinx-theme.js', 1) }}?digest=8878045cc6db502f8baf"></script> +{% endmacro %} \ No newline at end of file diff --git a/about/authors.html b/about/authors.html new file mode 100644 index 000000000..a46e06bae --- /dev/null +++ b/about/authors.html @@ -0,0 +1,484 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Contributors &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'about/authors';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="prev" title="Changelog" href="changelog.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog</a></li> +</ul> +<ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">Contributors</a></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">About</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Contributors</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="contributors"> +<h1>Contributors<a class="headerlink" href="#contributors" title="Link to this heading">#</a></h1> +<p>Shizhe Diao, Rui Pan, Hanze Dong, Ka Shun Shum, Jipeng Zhang, Wei Xiong, Tong Zhang</p> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="changelog.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">Changelog</p> + </div> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/about/authors.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/about/changelog.html b/about/changelog.html new file mode 100644 index 000000000..eeaac7866 --- /dev/null +++ b/about/changelog.html @@ -0,0 +1,513 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Changelog &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'about/changelog';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Contributors" href="authors.html" /> + <link rel="prev" title="About" href="index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">Changelog</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="authors.html">Contributors</a></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">About</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Changelog</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="changelog"> +<h1>Changelog<a class="headerlink" href="#changelog" title="Link to this heading">#</a></h1> +<section id="version-0-0-1-mar-28-2023"> +<h2>Version 0.0.1 (Mar 28, 2023)<a class="headerlink" href="#version-0-0-1-mar-28-2023" title="Link to this heading">#</a></h2> +<p>The first public version.</p> +<p>Task tuning, instruction tuning, on user defined datasets.</p> +<p>A simple and extensible API for developers.</p> +<p>Efficient finetuning with LoRA.</p> +<p>Simplified model inference framework.</p> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">About</p> + </div> + </a> + <a class="right-next" + href="authors.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">Contributors</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#version-0-0-1-mar-28-2023">Version 0.0.1 (Mar 28, 2023)</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/about/changelog.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/about/index.html b/about/index.html new file mode 100644 index 000000000..3206208a8 --- /dev/null +++ b/about/index.html @@ -0,0 +1,503 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>About &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'about/index';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Changelog" href="changelog.html" /> + <link rel="prev" title="lmflow.version" href="../autoapi/lmflow/version/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="#"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="#"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="authors.html">Contributors</a></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">About</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="about"> +<h1>About<a class="headerlink" href="#about" title="Link to this heading">#</a></h1> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog</a><ul> +<li class="toctree-l2"><a class="reference internal" href="changelog.html#version-0-0-1-mar-28-2023">Version 0.0.1 (Mar 28, 2023)</a></li> +</ul> +</li> +</ul> +</div> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="authors.html">Contributors</a></li> +</ul> +</div> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../autoapi/lmflow/version/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.version</p> + </div> + </a> + <a class="right-next" + href="changelog.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">Changelog</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/about/index.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/index.html b/autoapi/index.html new file mode 100644 index 000000000..be2ed3ab5 --- /dev/null +++ b/autoapi/index.html @@ -0,0 +1,747 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>API Reference &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/index';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="lmflow" href="lmflow/index.html" /> + <link rel="prev" title="LMFlow Benchmark Guide" href="../examples/TASK_GUIDE.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="#"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="#"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1 has-children"><a class="reference internal" href="lmflow/index.html">lmflow</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l2"><a class="reference internal" href="lmflow/args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="lmflow/datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="lmflow/datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="lmflow/models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="lmflow/models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="lmflow/models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="lmflow/models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="lmflow/models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="lmflow/optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="lmflow/pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="lmflow/pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="lmflow/tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="lmflow/tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="lmflow/utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="lmflow/utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="lmflow/utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="lmflow/utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="lmflow/version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">API Reference</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="api-reference"> +<h1>API Reference<a class="headerlink" href="#api-reference" title="Link to this heading">#</a></h1> +<p>This page contains auto-generated API reference documentation <a class="footnote-reference brackets" href="#f1" id="id1" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a>.</p> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="lmflow/index.html">lmflow</a><ul> +<li class="toctree-l2"><a class="reference internal" href="lmflow/args/index.html">lmflow.args</a></li> +<li class="toctree-l2"><a class="reference internal" href="lmflow/datasets/index.html">lmflow.datasets</a><ul> +<li class="toctree-l3"><a class="reference internal" href="lmflow/datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="lmflow/models/index.html">lmflow.models</a><ul> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/interfaces/index.html">lmflow.models.interfaces</a><ul> +<li class="toctree-l4"><a class="reference internal" href="lmflow/models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/models/vision_encoder/index.html">lmflow.models.vision_encoder</a><ul> +<li class="toctree-l4"><a class="reference internal" href="lmflow/models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="lmflow/optim/index.html">lmflow.optim</a><ul> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="lmflow/pipeline/index.html">lmflow.pipeline</a><ul> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/utils/index.html">lmflow.pipeline.utils</a><ul> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="lmflow/tokenization/index.html">lmflow.tokenization</a><ul> +<li class="toctree-l3"><a class="reference internal" href="lmflow/tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="lmflow/utils/index.html">lmflow.utils</a><ul> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/conversation_template/index.html">lmflow.utils.conversation_template</a><ul> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/flash_attention/index.html">lmflow.utils.flash_attention</a><ul> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><ul> +<li class="toctree-l4"><a class="reference internal" href="lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</li> +<li class="toctree-l3"><a class="reference internal" href="lmflow/utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="lmflow/version/index.html">lmflow.version</a></li> +</ul> +</li> +</ul> +</div> +<aside class="footnote-list brackets"> +<aside class="footnote brackets" id="f1" role="doc-footnote"> +<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id1">1</a><span class="fn-bracket">]</span></span> +<p>Created with <a class="reference external" href="https://github.com/readthedocs/sphinx-autoapi">sphinx-autoapi</a></p> +</aside> +</aside> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../examples/TASK_GUIDE.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">LMFlow Benchmark Guide</p> + </div> + </a> + <a class="right-next" + href="lmflow/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/autoapi/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/args/index.html b/autoapi/lmflow/args/index.html new file mode 100644 index 000000000..f2b9920af --- /dev/null +++ b/autoapi/lmflow/args/index.html @@ -0,0 +1,2447 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.args &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/args/index';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <link rel="next" title="lmflow.datasets" href="../datasets/index.html" /> + <link rel="prev" title="lmflow" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2 current active"><a class="current reference internal" href="#">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.args</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.args"> +<span id="lmflow-args"></span><h1>lmflow.args<a class="headerlink" href="#module-lmflow.args" title="Link to this heading">#</a></h1> +<p>This script defines dataclasses: ModelArguments and DatasetArguments, +that contain the arguments for the model and dataset used in training.</p> +<p>It imports several modules, including dataclasses, field from typing, Optional from typing, +require_version from transformers.utils.versions, MODEL_FOR_CAUSAL_LM_MAPPING, +and TrainingArguments from transformers.</p> +<p>MODEL_CONFIG_CLASSES is assigned a list of the model config classes from +MODEL_FOR_CAUSAL_LM_MAPPING. MODEL_TYPES is assigned a tuple of the model types +extracted from the MODEL_CONFIG_CLASSES.</p> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.args.MODEL_CONFIG_CLASSES" title="lmflow.args.MODEL_CONFIG_CLASSES"><code class="xref py py-obj docutils literal notranslate"><span class="pre">MODEL_CONFIG_CLASSES</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.args.MODEL_TYPES" title="lmflow.args.MODEL_TYPES"><code class="xref py py-obj docutils literal notranslate"><span class="pre">MODEL_TYPES</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.args.logger" title="lmflow.args.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.args.PIPELINE_ARGUMENT_MAPPING" title="lmflow.args.PIPELINE_ARGUMENT_MAPPING"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PIPELINE_ARGUMENT_MAPPING</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.args.OptimizerNames" title="lmflow.args.OptimizerNames"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OptimizerNames</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ModelArguments</span></code></a></p></td> +<td><p>Define a class ModelArguments using the dataclass decorator.</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.args.VisModelArguments" title="lmflow.args.VisModelArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">VisModelArguments</span></code></a></p></td> +<td><p>Define a class ModelArguments using the dataclass decorator.</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DatasetArguments</span></code></a></p></td> +<td><p>Define a class DatasetArguments using the dataclass decorator.</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.args.MultiModalDatasetArguments" title="lmflow.args.MultiModalDatasetArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">MultiModalDatasetArguments</span></code></a></p></td> +<td><p>Define a class DatasetArguments using the dataclass decorator.</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.args.FinetunerArguments" title="lmflow.args.FinetunerArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">FinetunerArguments</span></code></a></p></td> +<td><p>Adapt transformers.TrainingArguments</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.args.RewardModelTunerArguments" title="lmflow.args.RewardModelTunerArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RewardModelTunerArguments</span></code></a></p></td> +<td><p>Arguments for reward modeling.</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.args.EvaluatorArguments" title="lmflow.args.EvaluatorArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">EvaluatorArguments</span></code></a></p></td> +<td><p>Define a class EvaluatorArguments using the dataclass decorator. The class contains several optional</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.args.InferencerArguments" title="lmflow.args.InferencerArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">InferencerArguments</span></code></a></p></td> +<td><p>Define a class InferencerArguments using the dataclass decorator. The class contains several optional</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.args.RaftAlignerArguments" title="lmflow.args.RaftAlignerArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RaftAlignerArguments</span></code></a></p></td> +<td><p>Define a class RaftAlignerArguments to configure raft aligner.</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.args.BenchmarkingArguments" title="lmflow.args.BenchmarkingArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">BenchmarkingArguments</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.args.DPOAlignerArguments" title="lmflow.args.DPOAlignerArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DPOAlignerArguments</span></code></a></p></td> +<td><p>The arguments for the DPO training script.</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.args.DPOv2AlignerArguments" title="lmflow.args.DPOv2AlignerArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DPOv2AlignerArguments</span></code></a></p></td> +<td><p>The arguments for the DPOv2 training script.</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.args.IterativeAlignerArguments" title="lmflow.args.IterativeAlignerArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">IterativeAlignerArguments</span></code></a></p></td> +<td><p>Arguments for iterative aligners.</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.args.IterativeDPOAlignerArguments" title="lmflow.args.IterativeDPOAlignerArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">IterativeDPOAlignerArguments</span></code></a></p></td> +<td><p>Arguments for iterative DPO aligners.</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.args.AutoArguments" title="lmflow.args.AutoArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">AutoArguments</span></code></a></p></td> +<td><p>Automatically choose arguments from FinetunerArguments or EvaluatorArguments.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.args.split_args" title="lmflow.args.split_args"><code class="xref py py-obj docutils literal notranslate"><span class="pre">split_args</span></code></a>(args)</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.args.MODEL_CONFIG_CLASSES"> +<span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">MODEL_CONFIG_CLASSES</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#MODEL_CONFIG_CLASSES"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.MODEL_CONFIG_CLASSES" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.args.MODEL_TYPES"> +<span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">MODEL_TYPES</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#MODEL_TYPES"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.MODEL_TYPES" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.args.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">OptimizerNames</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames" title="Link to this definition">#</a></dt> +<dd><dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.DUMMY"> +<span class="sig-name descname"><span class="pre">DUMMY</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'dummy'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.DUMMY"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.DUMMY" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.ADABELIEF"> +<span class="sig-name descname"><span class="pre">ADABELIEF</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'adabelief'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.ADABELIEF"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.ADABELIEF" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.ADABOUND"> +<span class="sig-name descname"><span class="pre">ADABOUND</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'adabound'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.ADABOUND"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.ADABOUND" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.LARS"> +<span class="sig-name descname"><span class="pre">LARS</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'lars'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.LARS"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.LARS" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.LAMB"> +<span class="sig-name descname"><span class="pre">LAMB</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'lamb'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.LAMB"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.LAMB" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.ADAMAX"> +<span class="sig-name descname"><span class="pre">ADAMAX</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'adamax'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.ADAMAX"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.ADAMAX" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.NADAM"> +<span class="sig-name descname"><span class="pre">NADAM</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'nadam'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.NADAM"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.NADAM" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.RADAM"> +<span class="sig-name descname"><span class="pre">RADAM</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'radam'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.RADAM"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.RADAM" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.ADAMP"> +<span class="sig-name descname"><span class="pre">ADAMP</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'adamp'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.ADAMP"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.ADAMP" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.SGDP"> +<span class="sig-name descname"><span class="pre">SGDP</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'sgdp'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.SGDP"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.SGDP" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.YOGI"> +<span class="sig-name descname"><span class="pre">YOGI</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'yogi'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.YOGI"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.YOGI" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.SOPHIA"> +<span class="sig-name descname"><span class="pre">SOPHIA</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'sophia'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.SOPHIA"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.SOPHIA" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.ADAN"> +<span class="sig-name descname"><span class="pre">ADAN</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'adan'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.ADAN"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.ADAN" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.ADAM"> +<span class="sig-name descname"><span class="pre">ADAM</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'adam'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.ADAM"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.ADAM" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.NOVOGRAD"> +<span class="sig-name descname"><span class="pre">NOVOGRAD</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'novograd'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.NOVOGRAD"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.NOVOGRAD" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.ADADELTA"> +<span class="sig-name descname"><span class="pre">ADADELTA</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'adadelta'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.ADADELTA"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.ADADELTA" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.ADAGRAD"> +<span class="sig-name descname"><span class="pre">ADAGRAD</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'adagrad'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.ADAGRAD"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.ADAGRAD" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.ADAMW_SCHEDULE_FREE"> +<span class="sig-name descname"><span class="pre">ADAMW_SCHEDULE_FREE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'adamw_schedule_free'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.ADAMW_SCHEDULE_FREE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.ADAMW_SCHEDULE_FREE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.OptimizerNames.SGD_SCHEDULE_FREE"> +<span class="sig-name descname"><span class="pre">SGD_SCHEDULE_FREE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'sgd_schedule_free'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#OptimizerNames.SGD_SCHEDULE_FREE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.OptimizerNames.SGD_SCHEDULE_FREE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">ModelArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments" title="Link to this definition">#</a></dt> +<dd><p>Define a class ModelArguments using the dataclass decorator. +The class contains several optional parameters that can be used to configure a model.</p> +<dl class="simple"> +<dt>model_name_or_path<span class="classifier">str</span></dt><dd><p>a string representing the path or name of a pretrained +model checkpoint for weights initialization. If None, a model will be trained from scratch.</p> +</dd> +<dt>model_type<span class="classifier">str</span></dt><dd><p>a string representing the type of model to use if training from +scratch. If not provided, a pretrained model will be used.</p> +</dd> +<dt>config_overrides<span class="classifier">str</span></dt><dd><p>a string representing the default config settings to override +when training a model from scratch.</p> +</dd> +<dt>config_name<span class="classifier">str</span></dt><dd><p>a string representing the name or path of the pretrained config to +use, if different from the model_name_or_path.</p> +</dd> +<dt>tokenizer_name<span class="classifier">str</span></dt><dd><p>a string representing the name or path of the pretrained tokenizer +to use, if different from the model_name_or_path.</p> +</dd> +<dt>cache_dir<span class="classifier">str</span></dt><dd><p>a string representing the path to the directory where pretrained models +downloaded from huggingface.co will be stored.</p> +</dd> +<dt>use_fast_tokenizer<span class="classifier">bool</span></dt><dd><p>a boolean indicating whether to use a fast tokenizer (backed by the +tokenizers library) or not.</p> +</dd> +<dt>model_revision<span class="classifier">str</span></dt><dd><p>a string representing the specific model version to use (can be a +branch name, tag name, or commit id).</p> +</dd> +<dt>token<span class="classifier">Optional[str]</span></dt><dd><p>Necessary when accessing a private model/dataset.</p> +</dd> +<dt>torch_dtype<span class="classifier">str</span></dt><dd><p>a string representing the dtype to load the model under. If auto is +passed, the dtype will be automatically derived from the model’s weights.</p> +</dd> +<dt>use_ram_optimized_load<span class="classifier">bool</span></dt><dd><p>a boolean indicating whether to use disk mapping when memory is not +enough.</p> +</dd> +<dt>use_int8<span class="classifier">bool</span></dt><dd><p>a boolean indicating whether to load int8 quantization for inference.</p> +</dd> +<dt>load_in_4bit<span class="classifier">bool</span></dt><dd><p>whether to load the model in 4bit</p> +</dd> +<dt>model_max_length<span class="classifier">int</span></dt><dd><p>The maximum length of the model.</p> +</dd> +<dt>truncation_side<span class="classifier">str</span></dt><dd><p>The side on which the model should have truncation applied.</p> +</dd> +<dt>arch_type<span class="classifier">str</span></dt><dd><p>Model architecture type.</p> +</dd> +<dt>padding_side<span class="classifier">str</span></dt><dd><p>The side on which the tokenizer should have padding applied.</p> +</dd> +<dt>eos_padding<span class="classifier">bool</span></dt><dd><p>whether to pad with eos token instead of pad token.</p> +</dd> +<dt>ignore_bias_buffers<span class="classifier">bool</span></dt><dd><p>fix for DDP issues with LM bias/mask buffers - invalid scalar type,`inplace operation.</p> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.model_name_or_path"> +<span class="sig-name descname"><span class="pre">model_name_or_path</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.model_name_or_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.model_name_or_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.lora_model_path"> +<span class="sig-name descname"><span class="pre">lora_model_path</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.lora_model_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.lora_model_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.model_type"> +<span class="sig-name descname"><span class="pre">model_type</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.model_type"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.model_type" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.config_overrides"> +<span class="sig-name descname"><span class="pre">config_overrides</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.config_overrides"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.config_overrides" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.arch_type"> +<span class="sig-name descname"><span class="pre">arch_type</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'decoder_only'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.arch_type"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.arch_type" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.config_name"> +<span class="sig-name descname"><span class="pre">config_name</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.config_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.config_name" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.tokenizer_name"> +<span class="sig-name descname"><span class="pre">tokenizer_name</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.tokenizer_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.tokenizer_name" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.cache_dir"> +<span class="sig-name descname"><span class="pre">cache_dir</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.cache_dir"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.cache_dir" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.use_fast_tokenizer"> +<span class="sig-name descname"><span class="pre">use_fast_tokenizer</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.use_fast_tokenizer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.use_fast_tokenizer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.model_revision"> +<span class="sig-name descname"><span class="pre">model_revision</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'main'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.model_revision"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.model_revision" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.token"> +<span class="sig-name descname"><span class="pre">token</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.token"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.token" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.trust_remote_code"> +<span class="sig-name descname"><span class="pre">trust_remote_code</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.trust_remote_code"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.trust_remote_code" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.torch_dtype"> +<span class="sig-name descname"><span class="pre">torch_dtype</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.torch_dtype"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.torch_dtype" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.use_dora"> +<span class="sig-name descname"><span class="pre">use_dora</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.use_dora"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.use_dora" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.use_lora"> +<span class="sig-name descname"><span class="pre">use_lora</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.use_lora"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.use_lora" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.use_qlora"> +<span class="sig-name descname"><span class="pre">use_qlora</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.use_qlora"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.use_qlora" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.bits"> +<span class="sig-name descname"><span class="pre">bits</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">4</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.bits"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.bits" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.quant_type"> +<span class="sig-name descname"><span class="pre">quant_type</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'nf4'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.quant_type"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.quant_type" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.double_quant"> +<span class="sig-name descname"><span class="pre">double_quant</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.double_quant"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.double_quant" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.lora_r"> +<span class="sig-name descname"><span class="pre">lora_r</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">8</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.lora_r"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.lora_r" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.lora_alpha"> +<span class="sig-name descname"><span class="pre">lora_alpha</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">32</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.lora_alpha"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.lora_alpha" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.lora_target_modules"> +<span class="sig-name descname"><span class="pre">lora_target_modules</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.lora_target_modules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.lora_target_modules" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.lora_dropout"> +<span class="sig-name descname"><span class="pre">lora_dropout</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.lora_dropout"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.lora_dropout" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.save_aggregated_lora"> +<span class="sig-name descname"><span class="pre">save_aggregated_lora</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.save_aggregated_lora"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.save_aggregated_lora" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.use_ram_optimized_load"> +<span class="sig-name descname"><span class="pre">use_ram_optimized_load</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.use_ram_optimized_load"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.use_ram_optimized_load" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.use_flash_attention"> +<span class="sig-name descname"><span class="pre">use_flash_attention</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.use_flash_attention"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.use_flash_attention" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.truncate_to_model_max_length"> +<span class="sig-name descname"><span class="pre">truncate_to_model_max_length</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.truncate_to_model_max_length"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.truncate_to_model_max_length" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.do_rope_scaling"> +<span class="sig-name descname"><span class="pre">do_rope_scaling</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.do_rope_scaling"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.do_rope_scaling" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.rope_pi_ratio"> +<span class="sig-name descname"><span class="pre">rope_pi_ratio</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.rope_pi_ratio"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.rope_pi_ratio" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.rope_ntk_ratio"> +<span class="sig-name descname"><span class="pre">rope_ntk_ratio</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.rope_ntk_ratio"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.rope_ntk_ratio" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.use_int8"> +<span class="sig-name descname"><span class="pre">use_int8</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.use_int8"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.use_int8" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.load_in_4bit"> +<span class="sig-name descname"><span class="pre">load_in_4bit</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.load_in_4bit"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.load_in_4bit" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.model_max_length"> +<span class="sig-name descname"><span class="pre">model_max_length</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.model_max_length"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.model_max_length" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.truncation_side"> +<span class="sig-name descname"><span class="pre">truncation_side</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.truncation_side"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.truncation_side" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.padding_side"> +<span class="sig-name descname"><span class="pre">padding_side</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'right'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.padding_side"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.padding_side" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.eos_padding"> +<span class="sig-name descname"><span class="pre">eos_padding</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.eos_padding"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.eos_padding" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.ignore_bias_buffers"> +<span class="sig-name descname"><span class="pre">ignore_bias_buffers</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.ignore_bias_buffers"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.ignore_bias_buffers" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.args.ModelArguments.__post_init__"> +<span class="sig-name descname"><span class="pre">__post_init__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/args.html#ModelArguments.__post_init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.ModelArguments.__post_init__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">VisModelArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ModelArguments</span></code></a></p> +<p>Define a class ModelArguments using the dataclass decorator. +The class contains several optional parameters that can be used to configure a model.</p> +<dl class="simple"> +<dt>model_name_or_path<span class="classifier">str</span></dt><dd><p>a string representing the path or name of a pretrained +model checkpoint for weights initialization. If None, a model will be trained from scratch.</p> +</dd> +<dt>model_type<span class="classifier">str</span></dt><dd><p>a string representing the type of model to use if training from +scratch. If not provided, a pretrained model will be used.</p> +</dd> +<dt>config_overrides<span class="classifier">str</span></dt><dd><p>a string representing the default config settings to override +when training a model from scratch.</p> +</dd> +<dt>config_name<span class="classifier">str</span></dt><dd><p>a string representing the name or path of the pretrained config to +use, if different from the model_name_or_path.</p> +</dd> +<dt>tokenizer_name<span class="classifier">str</span></dt><dd><p>a string representing the name or path of the pretrained tokenizer +to use, if different from the model_name_or_path.</p> +</dd> +<dt>cache_dir<span class="classifier">str</span></dt><dd><p>a string representing the path to the directory where pretrained models +downloaded from huggingface.co will be stored.</p> +</dd> +<dt>use_fast_tokenizer<span class="classifier">bool</span></dt><dd><p>a boolean indicating whether to use a fast tokenizer (backed by the +tokenizers library) or not.</p> +</dd> +<dt>model_revision<span class="classifier">str</span></dt><dd><p>a string representing the specific model version to use (can be a +branch name, tag name, or commit id).</p> +</dd> +<dt>token<span class="classifier">Optional[str]</span></dt><dd><p>Necessary when accessing a private model/dataset.</p> +</dd> +<dt>torch_dtype<span class="classifier">str</span></dt><dd><p>a string representing the dtype to load the model under. If auto is +passed, the dtype will be automatically derived from the model’s weights.</p> +</dd> +<dt>use_ram_optimized_load<span class="classifier">bool</span></dt><dd><p>a boolean indicating whether to use disk mapping when memory is not +enough.</p> +</dd> +<dt>use_int8<span class="classifier">bool</span></dt><dd><p>a boolean indicating whether to load int8 quantization for inference.</p> +</dd> +<dt>load_in_4bit<span class="classifier">bool</span></dt><dd><p>whether to load the model in 4bit</p> +</dd> +<dt>model_max_length<span class="classifier">int</span></dt><dd><p>The maximum length of the model.</p> +</dd> +<dt>truncation_side<span class="classifier">str</span></dt><dd><p>The side on which the model should have truncation applied.</p> +</dd> +<dt>arch_type<span class="classifier">str</span></dt><dd><p>Model architecture type.</p> +</dd> +<dt>padding_side<span class="classifier">str</span></dt><dd><p>The side on which the tokenizer should have padding applied.</p> +</dd> +<dt>eos_padding<span class="classifier">bool</span></dt><dd><p>whether to pad with eos token instead of pad token.</p> +</dd> +<dt>ignore_bias_buffers<span class="classifier">bool</span></dt><dd><p>fix for DDP issues with LM bias/mask buffers - invalid scalar type,`inplace operation.</p> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments.low_resource"> +<span class="sig-name descname"><span class="pre">low_resource</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments.low_resource"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments.low_resource" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments.custom_model"> +<span class="sig-name descname"><span class="pre">custom_model</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments.custom_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments.custom_model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments.pretrained_language_projection_path"> +<span class="sig-name descname"><span class="pre">pretrained_language_projection_path</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments.pretrained_language_projection_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments.pretrained_language_projection_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments.custom_vision_model"> +<span class="sig-name descname"><span class="pre">custom_vision_model</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments.custom_vision_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments.custom_vision_model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments.image_encoder_name_or_path"> +<span class="sig-name descname"><span class="pre">image_encoder_name_or_path</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments.image_encoder_name_or_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments.image_encoder_name_or_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments.qformer_name_or_path"> +<span class="sig-name descname"><span class="pre">qformer_name_or_path</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments.qformer_name_or_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments.qformer_name_or_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments.llm_model_name_or_path"> +<span class="sig-name descname"><span class="pre">llm_model_name_or_path</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments.llm_model_name_or_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments.llm_model_name_or_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments.use_prompt_cache"> +<span class="sig-name descname"><span class="pre">use_prompt_cache</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments.use_prompt_cache"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments.use_prompt_cache" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments.prompt_cache_path"> +<span class="sig-name descname"><span class="pre">prompt_cache_path</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments.prompt_cache_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments.prompt_cache_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments.llava_loading"> +<span class="sig-name descname"><span class="pre">llava_loading</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments.llava_loading"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments.llava_loading" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments.with_qformer"> +<span class="sig-name descname"><span class="pre">with_qformer</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments.with_qformer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments.with_qformer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments.vision_select_layer"> +<span class="sig-name descname"><span class="pre">vision_select_layer</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">-2</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments.vision_select_layer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments.vision_select_layer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments.llava_pretrain_model_path"> +<span class="sig-name descname"><span class="pre">llava_pretrain_model_path</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments.llava_pretrain_model_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments.llava_pretrain_model_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.VisModelArguments.save_pretrain_model_path"> +<span class="sig-name descname"><span class="pre">save_pretrain_model_path</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#VisModelArguments.save_pretrain_model_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.VisModelArguments.save_pretrain_model_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">DatasetArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments" title="Link to this definition">#</a></dt> +<dd><p>Define a class DatasetArguments using the dataclass decorator. +The class contains several optional parameters that can be used to configure a dataset for a language model.</p> +<dl class="simple"> +<dt>dataset_path<span class="classifier">str</span></dt><dd><p>a string representing the path of the dataset to use.</p> +</dd> +<dt>dataset_name<span class="classifier">str</span></dt><dd><p>a string representing the name of the dataset to use. The default value is “customized”.</p> +</dd> +<dt>is_custom_dataset<span class="classifier">bool</span></dt><dd><p>a boolean indicating whether to use custom data. The default value is False.</p> +</dd> +<dt>customized_cache_dir<span class="classifier">str</span></dt><dd><p>a string representing the path to the directory where customized dataset caches will be stored.</p> +</dd> +<dt>dataset_config_name<span class="classifier">str</span></dt><dd><p>a string representing the configuration name of the dataset to use (via the datasets library).</p> +</dd> +<dt>train_file<span class="classifier">str</span></dt><dd><p>a string representing the path to the input training data file (a text file).</p> +</dd> +<dt>validation_file<span class="classifier">str</span></dt><dd><p>a string representing the path to the input evaluation data file to evaluate the perplexity on (a text file).</p> +</dd> +<dt>max_train_samples<span class="classifier">int</span></dt><dd><p>an integer indicating the maximum number of training examples to use for debugging or quicker training. +If set, the training dataset will be truncated to this number.</p> +</dd> +<dt>max_eval_samples: int</dt><dd><p>an integer indicating the maximum number of evaluation examples to use for debugging or quicker training. +If set, the evaluation dataset will be truncated to this number.</p> +</dd> +<dt>streaming<span class="classifier">bool</span></dt><dd><p>a boolean indicating whether to enable streaming mode.</p> +</dd> +<dt>block_size: int</dt><dd><p>an integer indicating the optional input sequence length after tokenization. The training dataset will be +truncated in blocks of this size for training.</p> +</dd> +<dt>train_on_prompt: bool</dt><dd><p>a boolean indicating whether to train on prompt for conversation datasets such as ShareGPT.</p> +</dd> +<dt>conversation_template: str</dt><dd><p>a string representing the template for conversation datasets.</p> +</dd> +</dl> +<p>The class also includes some additional parameters that can be used to configure the dataset further, such as <cite>overwrite_cache</cite>, +<cite>validation_split_percentage</cite>, <cite>preprocessing_num_workers</cite>, <cite>disable_group_texts</cite>, <cite>demo_example_in_prompt</cite>, <cite>explanation_in_prompt</cite>, +<cite>keep_linebreaks</cite>, and <cite>prompt_structure</cite>.</p> +<p>The field function is used to set default values and provide help messages for each parameter. The Optional type hint is +used to indicate that a parameter is optional. The metadata argument is used to provide additional information about +each parameter, such as a help message.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.dataset_path"> +<span class="sig-name descname"><span class="pre">dataset_path</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.dataset_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.dataset_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.dataset_name"> +<span class="sig-name descname"><span class="pre">dataset_name</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'customized'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.dataset_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.dataset_name" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.is_custom_dataset"> +<span class="sig-name descname"><span class="pre">is_custom_dataset</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.is_custom_dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.is_custom_dataset" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.customized_cache_dir"> +<span class="sig-name descname"><span class="pre">customized_cache_dir</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'.cache/llm-ft/datasets'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.customized_cache_dir"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.customized_cache_dir" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.dataset_config_name"> +<span class="sig-name descname"><span class="pre">dataset_config_name</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.dataset_config_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.dataset_config_name" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.train_file"> +<span class="sig-name descname"><span class="pre">train_file</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.train_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.train_file" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.validation_file"> +<span class="sig-name descname"><span class="pre">validation_file</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.validation_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.validation_file" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.max_train_samples"> +<span class="sig-name descname"><span class="pre">max_train_samples</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.max_train_samples"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.max_train_samples" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.max_eval_samples"> +<span class="sig-name descname"><span class="pre">max_eval_samples</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">10000000000.0</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.max_eval_samples"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.max_eval_samples" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.streaming"> +<span class="sig-name descname"><span class="pre">streaming</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.streaming"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.streaming" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.block_size"> +<span class="sig-name descname"><span class="pre">block_size</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.block_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.block_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.overwrite_cache"> +<span class="sig-name descname"><span class="pre">overwrite_cache</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.overwrite_cache"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.overwrite_cache" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.validation_split_percentage"> +<span class="sig-name descname"><span class="pre">validation_split_percentage</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">5</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.validation_split_percentage"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.validation_split_percentage" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.preprocessing_num_workers"> +<span class="sig-name descname"><span class="pre">preprocessing_num_workers</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.preprocessing_num_workers"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.preprocessing_num_workers" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.group_texts_batch_size"> +<span class="sig-name descname"><span class="pre">group_texts_batch_size</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1000</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.group_texts_batch_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.group_texts_batch_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.disable_group_texts"> +<span class="sig-name descname"><span class="pre">disable_group_texts</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.disable_group_texts"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.disable_group_texts" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.keep_linebreaks"> +<span class="sig-name descname"><span class="pre">keep_linebreaks</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.keep_linebreaks"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.keep_linebreaks" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.test_file"> +<span class="sig-name descname"><span class="pre">test_file</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.test_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.test_file" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.train_on_prompt"> +<span class="sig-name descname"><span class="pre">train_on_prompt</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.train_on_prompt"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.train_on_prompt" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.conversation_template"> +<span class="sig-name descname"><span class="pre">conversation_template</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.conversation_template"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.conversation_template" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.args.DatasetArguments.__post_init__"> +<span class="sig-name descname"><span class="pre">__post_init__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/args.html#DatasetArguments.__post_init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DatasetArguments.__post_init__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.MultiModalDatasetArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">MultiModalDatasetArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#MultiModalDatasetArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.MultiModalDatasetArguments" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DatasetArguments</span></code></a></p> +<p>Define a class DatasetArguments using the dataclass decorator. +The class contains several optional parameters that can be used to configure a dataset for a language model.</p> +<dl class="simple"> +<dt>dataset_path<span class="classifier">str</span></dt><dd><p>a string representing the path of the dataset to use.</p> +</dd> +<dt>dataset_name<span class="classifier">str</span></dt><dd><p>a string representing the name of the dataset to use. The default value is “customized”.</p> +</dd> +<dt>is_custom_dataset<span class="classifier">bool</span></dt><dd><p>a boolean indicating whether to use custom data. The default value is False.</p> +</dd> +<dt>customized_cache_dir<span class="classifier">str</span></dt><dd><p>a string representing the path to the directory where customized dataset caches will be stored.</p> +</dd> +<dt>dataset_config_name<span class="classifier">str</span></dt><dd><p>a string representing the configuration name of the dataset to use (via the datasets library).</p> +</dd> +<dt>train_file<span class="classifier">str</span></dt><dd><p>a string representing the path to the input training data file (a text file).</p> +</dd> +<dt>validation_file<span class="classifier">str</span></dt><dd><p>a string representing the path to the input evaluation data file to evaluate the perplexity on (a text file).</p> +</dd> +<dt>max_train_samples<span class="classifier">int</span></dt><dd><p>an integer indicating the maximum number of training examples to use for debugging or quicker training. +If set, the training dataset will be truncated to this number.</p> +</dd> +<dt>max_eval_samples: int</dt><dd><p>an integer indicating the maximum number of evaluation examples to use for debugging or quicker training. +If set, the evaluation dataset will be truncated to this number.</p> +</dd> +<dt>streaming<span class="classifier">bool</span></dt><dd><p>a boolean indicating whether to enable streaming mode.</p> +</dd> +<dt>block_size: int</dt><dd><p>an integer indicating the optional input sequence length after tokenization. The training dataset will be +truncated in blocks of this size for training.</p> +</dd> +<dt>train_on_prompt: bool</dt><dd><p>a boolean indicating whether to train on prompt for conversation datasets such as ShareGPT.</p> +</dd> +<dt>conversation_template: str</dt><dd><p>a string representing the template for conversation datasets.</p> +</dd> +</dl> +<p>The class also includes some additional parameters that can be used to configure the dataset further, such as <cite>overwrite_cache</cite>, +<cite>validation_split_percentage</cite>, <cite>preprocessing_num_workers</cite>, <cite>disable_group_texts</cite>, <cite>demo_example_in_prompt</cite>, <cite>explanation_in_prompt</cite>, +<cite>keep_linebreaks</cite>, and <cite>prompt_structure</cite>.</p> +<p>The field function is used to set default values and provide help messages for each parameter. The Optional type hint is +used to indicate that a parameter is optional. The metadata argument is used to provide additional information about +each parameter, such as a help message.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.MultiModalDatasetArguments.image_folder"> +<span class="sig-name descname"><span class="pre">image_folder</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#MultiModalDatasetArguments.image_folder"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.MultiModalDatasetArguments.image_folder" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.MultiModalDatasetArguments.image_aspect_ratio"> +<span class="sig-name descname"><span class="pre">image_aspect_ratio</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'pad'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#MultiModalDatasetArguments.image_aspect_ratio"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.MultiModalDatasetArguments.image_aspect_ratio" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.MultiModalDatasetArguments.is_multimodal"> +<span class="sig-name descname"><span class="pre">is_multimodal</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#MultiModalDatasetArguments.is_multimodal"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.MultiModalDatasetArguments.is_multimodal" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.MultiModalDatasetArguments.use_image_start_end"> +<span class="sig-name descname"><span class="pre">use_image_start_end</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#MultiModalDatasetArguments.use_image_start_end"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.MultiModalDatasetArguments.use_image_start_end" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.MultiModalDatasetArguments.sep_style"> +<span class="sig-name descname"><span class="pre">sep_style</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'plain'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#MultiModalDatasetArguments.sep_style"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.MultiModalDatasetArguments.sep_style" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">FinetunerArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">transformers.TrainingArguments</span></code></p> +<p>Adapt transformers.TrainingArguments</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.eval_dataset_path"> +<span class="sig-name descname"><span class="pre">eval_dataset_path</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.eval_dataset_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.eval_dataset_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.remove_unused_columns"> +<span class="sig-name descname"><span class="pre">remove_unused_columns</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.remove_unused_columns"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.remove_unused_columns" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.finetune_part"> +<span class="sig-name descname"><span class="pre">finetune_part</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'language_projection'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.finetune_part"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.finetune_part" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.save_language_projection"> +<span class="sig-name descname"><span class="pre">save_language_projection</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.save_language_projection"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.save_language_projection" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.use_lisa"> +<span class="sig-name descname"><span class="pre">use_lisa</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.use_lisa"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.use_lisa" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.lisa_activated_layers"> +<span class="sig-name descname"><span class="pre">lisa_activated_layers</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">2</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.lisa_activated_layers"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.lisa_activated_layers" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.lisa_interval_steps"> +<span class="sig-name descname"><span class="pre">lisa_interval_steps</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">20</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.lisa_interval_steps"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.lisa_interval_steps" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.lisa_layers_attribute"> +<span class="sig-name descname"><span class="pre">lisa_layers_attribute</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'model.model.layers'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.lisa_layers_attribute"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.lisa_layers_attribute" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.use_customized_optim"> +<span class="sig-name descname"><span class="pre">use_customized_optim</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.use_customized_optim"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.use_customized_optim" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.customized_optim"> +<span class="sig-name descname"><span class="pre">customized_optim</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'sign_sgd'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.customized_optim"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.customized_optim" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.customized_optim_args"> +<span class="sig-name descname"><span class="pre">customized_optim_args</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.customized_optim_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.customized_optim_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.optim_dummy_beta1"> +<span class="sig-name descname"><span class="pre">optim_dummy_beta1</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.9</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.optim_dummy_beta1"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.optim_dummy_beta1" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.optim_dummy_beta2"> +<span class="sig-name descname"><span class="pre">optim_dummy_beta2</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.999</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.optim_dummy_beta2"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.optim_dummy_beta2" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.optim_adam_beta1"> +<span class="sig-name descname"><span class="pre">optim_adam_beta1</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.9</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.optim_adam_beta1"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.optim_adam_beta1" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.optim_adam_beta2"> +<span class="sig-name descname"><span class="pre">optim_adam_beta2</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.999</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.optim_adam_beta2"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.optim_adam_beta2" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.optim_beta1"> +<span class="sig-name descname"><span class="pre">optim_beta1</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.9</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.optim_beta1"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.optim_beta1" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.optim_beta2"> +<span class="sig-name descname"><span class="pre">optim_beta2</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.999</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.optim_beta2"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.optim_beta2" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.optim_beta3"> +<span class="sig-name descname"><span class="pre">optim_beta3</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.9</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.optim_beta3"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.optim_beta3" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.optim_momentum"> +<span class="sig-name descname"><span class="pre">optim_momentum</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.999</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.optim_momentum"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.optim_momentum" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.FinetunerArguments.optim_weight_decay"> +<span class="sig-name descname"><span class="pre">optim_weight_decay</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#FinetunerArguments.optim_weight_decay"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.FinetunerArguments.optim_weight_decay" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.RewardModelTunerArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">RewardModelTunerArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#RewardModelTunerArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.RewardModelTunerArguments" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.args.FinetunerArguments" title="lmflow.args.FinetunerArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">FinetunerArguments</span></code></a></p> +<p>Arguments for reward modeling.</p> +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">EvaluatorArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments" title="Link to this definition">#</a></dt> +<dd><p>Define a class EvaluatorArguments using the dataclass decorator. The class contains several optional +parameters that can be used to configure a evaluator.</p> +<dl class="simple"> +<dt>local_rank<span class="classifier">str</span></dt><dd><p>For distributed training: local_rank</p> +</dd> +</dl> +<p>random_shuffle : bool</p> +<p>use_wandb : bool</p> +<p>random_seed : int, default = 1</p> +<p>output_dir : str, default = ‘./output_dir’,</p> +<dl class="simple"> +<dt>mixed_precision<span class="classifier">str, choice from [“bf16”,”fp16”].</span></dt><dd><p>mixed precision mode, whether to use bf16 or fp16</p> +</dd> +<dt>deepspeed :</dt><dd><p>Enable deepspeed and pass the path to deepspeed json config file (e.g. ds_config.json) or an already +loaded json file as a dict</p> +</dd> +<dt>temperature<span class="classifier">float</span></dt><dd><p>An argument of model.generate in huggingface to control the diversity of generation.</p> +</dd> +<dt>repetition_penalty<span class="classifier">float</span></dt><dd><p>An argument of model.generate in huggingface to penalize repetitions.</p> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.local_rank"> +<span class="sig-name descname"><span class="pre">local_rank</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">-1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.local_rank"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.local_rank" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.random_shuffle"> +<span class="sig-name descname"><span class="pre">random_shuffle</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.random_shuffle"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.random_shuffle" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.use_wandb"> +<span class="sig-name descname"><span class="pre">use_wandb</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.use_wandb"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.use_wandb" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.random_seed"> +<span class="sig-name descname"><span class="pre">random_seed</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.random_seed"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.random_seed" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.output_dir"> +<span class="sig-name descname"><span class="pre">output_dir</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'./output_dir'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.output_dir"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.output_dir" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.mixed_precision"> +<span class="sig-name descname"><span class="pre">mixed_precision</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'bf16'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.mixed_precision"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.mixed_precision" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.deepspeed"> +<span class="sig-name descname"><span class="pre">deepspeed</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.deepspeed"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.deepspeed" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.answer_type"> +<span class="sig-name descname"><span class="pre">answer_type</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'text'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.answer_type"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.answer_type" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.prompt_structure"> +<span class="sig-name descname"><span class="pre">prompt_structure</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'{input}'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.prompt_structure"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.prompt_structure" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.evaluate_block_size"> +<span class="sig-name descname"><span class="pre">evaluate_block_size</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">512</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.evaluate_block_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.evaluate_block_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.metric"> +<span class="sig-name descname"><span class="pre">metric</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'accuracy'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.metric"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.metric" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.inference_batch_size_per_device"> +<span class="sig-name descname"><span class="pre">inference_batch_size_per_device</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.inference_batch_size_per_device"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.inference_batch_size_per_device" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.use_accelerator_for_evaluator"> +<span class="sig-name descname"><span class="pre">use_accelerator_for_evaluator</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.use_accelerator_for_evaluator"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.use_accelerator_for_evaluator" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.temperature"> +<span class="sig-name descname"><span class="pre">temperature</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.temperature"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.temperature" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.repetition_penalty"> +<span class="sig-name descname"><span class="pre">repetition_penalty</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.repetition_penalty"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.repetition_penalty" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.EvaluatorArguments.max_new_tokens"> +<span class="sig-name descname"><span class="pre">max_new_tokens</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">100</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#EvaluatorArguments.max_new_tokens"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.EvaluatorArguments.max_new_tokens" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">InferencerArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments" title="Link to this definition">#</a></dt> +<dd><p>Define a class InferencerArguments using the dataclass decorator. The class contains several optional +parameters that can be used to configure a inferencer.</p> +<dl class="simple"> +<dt>local_rank<span class="classifier">str</span></dt><dd><p>For distributed training: local_rank</p> +</dd> +</dl> +<p>random_seed : int, default = 1 +inference_batch_size : int, default = 1 +deepspeed :</p> +<blockquote> +<div><p>Enable deepspeed and pass the path to deepspeed json config file (e.g. ds_config.json) or an already +loaded json file as a dict</p> +</div></blockquote> +<dl> +<dt>mixed_precision<span class="classifier">str, choice from [“bf16”,”fp16”].</span></dt><dd><p>mixed precision mode, whether to use bf16 or fp16</p> +</dd> +<dt>temperature<span class="classifier">float</span></dt><dd><p>An argument of model.generate in huggingface to control the diversity of generation.</p> +</dd> +<dt>repetition_penalty<span class="classifier">float</span></dt><dd><p>An argument of model.generate in huggingface to penalize repetitions.</p> +</dd> +<dt>use_beam_search<span class="classifier">Optional[bool]</span></dt><dd><p>Whether to use beam search during inference, By default False.</p> +</dd> +<dt>num_output_sequences<span class="classifier">Optional[int]</span></dt><dd><p>Number of output sequences to return for the given prompt, +currently only used in vllm inference, By default 8.</p> +</dd> +<dt>top_p<span class="classifier">Optional[float]</span></dt><dd><p>top_p for sampling, By default 1.0.</p> +</dd> +<dt>top_k<span class="classifier">Optional[int]</span></dt><dd><p>top_k for sampling, By default -1 (no top_k).</p> +</dd> +<dt>additional_stop_token_ids<span class="classifier">Optional[List[int]]</span></dt><dd><p>the ids of the end of sentence tokens, By default [].</p> +</dd> +<dt>apply_chat_template<span class="classifier">Optional[bool]</span></dt><dd><p>Whether to apply chat template, By default True.</p> +</dd> +<dt>save_results<span class="classifier">Optional[bool]</span></dt><dd><p>Whether to save inference results, By default False.</p> +</dd> +<dt>results_path<span class="classifier">Optional[str]</span></dt><dd><p>The <strong>json file</strong> path of inference results, By default None.</p> +</dd> +<dt>enable_decode_inference_result<span class="classifier">Optional[bool]</span></dt><dd><p>Whether to detokenize the inference results.</p> +<p>NOTE: For iterative align pipelines, whether to detokenize depends on +the homogeneity of the policy model and the reward model +(i.e., if they have the same tokenizer).</p> +</dd> +<dt>use_vllm: bool, optional</dt><dd><p>Whether to use VLLM for inference, By default False.</p> +</dd> +<dt>vllm_tensor_parallel_size: int, optional</dt><dd><p>The tensor parallel size for VLLM inference.</p> +</dd> +<dt>vllm_gpu_memory_utilization: float, optional</dt><dd><p>The GPU memory utilization for VLLM inference. The proportion of GPU +memory (per GPU) to use for VLLM inference.</p> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.device"> +<span class="sig-name descname"><span class="pre">device</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'gpu'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.device"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.device" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.local_rank"> +<span class="sig-name descname"><span class="pre">local_rank</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">-1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.local_rank"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.local_rank" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.inference_batch_size"> +<span class="sig-name descname"><span class="pre">inference_batch_size</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.inference_batch_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.inference_batch_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.vllm_inference_batch_size"> +<span class="sig-name descname"><span class="pre">vllm_inference_batch_size</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.vllm_inference_batch_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.vllm_inference_batch_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.temperature"> +<span class="sig-name descname"><span class="pre">temperature</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.0</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.temperature"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.temperature" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.repetition_penalty"> +<span class="sig-name descname"><span class="pre">repetition_penalty</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.repetition_penalty"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.repetition_penalty" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.max_new_tokens"> +<span class="sig-name descname"><span class="pre">max_new_tokens</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">100</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.max_new_tokens"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.max_new_tokens" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.random_seed"> +<span class="sig-name descname"><span class="pre">random_seed</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.random_seed"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.random_seed" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.deepspeed"> +<span class="sig-name descname"><span class="pre">deepspeed</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.deepspeed"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.deepspeed" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.mixed_precision"> +<span class="sig-name descname"><span class="pre">mixed_precision</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'bf16'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.mixed_precision"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.mixed_precision" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.do_sample"> +<span class="sig-name descname"><span class="pre">do_sample</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.do_sample"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.do_sample" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.use_accelerator"> +<span class="sig-name descname"><span class="pre">use_accelerator</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.use_accelerator"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.use_accelerator" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.use_beam_search"> +<span class="sig-name descname"><span class="pre">use_beam_search</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.use_beam_search"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.use_beam_search" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.num_output_sequences"> +<span class="sig-name descname"><span class="pre">num_output_sequences</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">8</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.num_output_sequences"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.num_output_sequences" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.top_p"> +<span class="sig-name descname"><span class="pre">top_p</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1.0</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.top_p"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.top_p" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.top_k"> +<span class="sig-name descname"><span class="pre">top_k</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">-1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.top_k"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.top_k" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.additional_stop_token_ids"> +<span class="sig-name descname"><span class="pre">additional_stop_token_ids</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">[]</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.additional_stop_token_ids"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.additional_stop_token_ids" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.apply_chat_template"> +<span class="sig-name descname"><span class="pre">apply_chat_template</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.apply_chat_template"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.apply_chat_template" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.enable_decode_inference_result"> +<span class="sig-name descname"><span class="pre">enable_decode_inference_result</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.enable_decode_inference_result"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.enable_decode_inference_result" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.tensor_parallel_size"> +<span class="sig-name descname"><span class="pre">tensor_parallel_size</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.tensor_parallel_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.tensor_parallel_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.enable_distributed_inference"> +<span class="sig-name descname"><span class="pre">enable_distributed_inference</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.enable_distributed_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.enable_distributed_inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.distributed_inference_num_instances"> +<span class="sig-name descname"><span class="pre">distributed_inference_num_instances</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.distributed_inference_num_instances"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.distributed_inference_num_instances" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.use_vllm"> +<span class="sig-name descname"><span class="pre">use_vllm</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.use_vllm"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.use_vllm" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.vllm_tensor_parallel_size"> +<span class="sig-name descname"><span class="pre">vllm_tensor_parallel_size</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.vllm_tensor_parallel_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.vllm_tensor_parallel_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.vllm_gpu_memory_utilization"> +<span class="sig-name descname"><span class="pre">vllm_gpu_memory_utilization</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.95</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.vllm_gpu_memory_utilization"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.vllm_gpu_memory_utilization" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.save_results"> +<span class="sig-name descname"><span class="pre">save_results</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.save_results"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.save_results" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.results_path"> +<span class="sig-name descname"><span class="pre">results_path</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.results_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.results_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.args.InferencerArguments.__post_init__"> +<span class="sig-name descname"><span class="pre">__post_init__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/args.html#InferencerArguments.__post_init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.InferencerArguments.__post_init__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.RaftAlignerArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">RaftAlignerArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#RaftAlignerArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.RaftAlignerArguments" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">transformers.TrainingArguments</span></code></p> +<p>Define a class RaftAlignerArguments to configure raft aligner.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.RaftAlignerArguments.output_reward_path"> +<span class="sig-name descname"><span class="pre">output_reward_path</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'tmp/raft_aligner/'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#RaftAlignerArguments.output_reward_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.RaftAlignerArguments.output_reward_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.RaftAlignerArguments.output_min_length"> +<span class="sig-name descname"><span class="pre">output_min_length</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">64</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#RaftAlignerArguments.output_min_length"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.RaftAlignerArguments.output_min_length" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.RaftAlignerArguments.output_max_length"> +<span class="sig-name descname"><span class="pre">output_max_length</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">128</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#RaftAlignerArguments.output_max_length"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.RaftAlignerArguments.output_max_length" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.RaftAlignerArguments.num_raft_iteration"> +<span class="sig-name descname"><span class="pre">num_raft_iteration</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">20</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#RaftAlignerArguments.num_raft_iteration"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.RaftAlignerArguments.num_raft_iteration" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.RaftAlignerArguments.raft_batch_size"> +<span class="sig-name descname"><span class="pre">raft_batch_size</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1024</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#RaftAlignerArguments.raft_batch_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.RaftAlignerArguments.raft_batch_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.RaftAlignerArguments.top_reward_percentage"> +<span class="sig-name descname"><span class="pre">top_reward_percentage</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.2</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#RaftAlignerArguments.top_reward_percentage"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.RaftAlignerArguments.top_reward_percentage" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.RaftAlignerArguments.inference_batch_size_per_device"> +<span class="sig-name descname"><span class="pre">inference_batch_size_per_device</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#RaftAlignerArguments.inference_batch_size_per_device"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.RaftAlignerArguments.inference_batch_size_per_device" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.RaftAlignerArguments.collection_strategy"> +<span class="sig-name descname"><span class="pre">collection_strategy</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'top'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#RaftAlignerArguments.collection_strategy"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.RaftAlignerArguments.collection_strategy" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.BenchmarkingArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">BenchmarkingArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#BenchmarkingArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.BenchmarkingArguments" title="Link to this definition">#</a></dt> +<dd><dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.BenchmarkingArguments.dataset_name"> +<span class="sig-name descname"><span class="pre">dataset_name</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#BenchmarkingArguments.dataset_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.BenchmarkingArguments.dataset_name" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.BenchmarkingArguments.lm_evaluation_metric"> +<span class="sig-name descname"><span class="pre">lm_evaluation_metric</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'accuracy'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#BenchmarkingArguments.lm_evaluation_metric"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.BenchmarkingArguments.lm_evaluation_metric" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">DPOAlignerArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments" title="Link to this definition">#</a></dt> +<dd><p>The arguments for the DPO training script.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.local_rank"> +<span class="sig-name descname"><span class="pre">local_rank</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">-1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.local_rank"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.local_rank" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.beta"> +<span class="sig-name descname"><span class="pre">beta</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.beta"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.beta" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.learning_rate"> +<span class="sig-name descname"><span class="pre">learning_rate</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.0005</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.learning_rate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.learning_rate" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.lr_scheduler_type"> +<span class="sig-name descname"><span class="pre">lr_scheduler_type</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'cosine'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.lr_scheduler_type"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.lr_scheduler_type" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.warmup_steps"> +<span class="sig-name descname"><span class="pre">warmup_steps</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">100</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.warmup_steps"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.warmup_steps" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.weight_decay"> +<span class="sig-name descname"><span class="pre">weight_decay</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.05</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.weight_decay"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.weight_decay" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.optimizer_type"> +<span class="sig-name descname"><span class="pre">optimizer_type</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'paged_adamw_32bit'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.optimizer_type"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.optimizer_type" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.per_device_train_batch_size"> +<span class="sig-name descname"><span class="pre">per_device_train_batch_size</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">4</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.per_device_train_batch_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.per_device_train_batch_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.per_device_eval_batch_size"> +<span class="sig-name descname"><span class="pre">per_device_eval_batch_size</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.per_device_eval_batch_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.per_device_eval_batch_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.gradient_accumulation_steps"> +<span class="sig-name descname"><span class="pre">gradient_accumulation_steps</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">4</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.gradient_accumulation_steps"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.gradient_accumulation_steps" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.gradient_checkpointing"> +<span class="sig-name descname"><span class="pre">gradient_checkpointing</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.gradient_checkpointing"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.gradient_checkpointing" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.gradient_checkpointing_use_reentrant"> +<span class="sig-name descname"><span class="pre">gradient_checkpointing_use_reentrant</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.gradient_checkpointing_use_reentrant"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.gradient_checkpointing_use_reentrant" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.max_prompt_length"> +<span class="sig-name descname"><span class="pre">max_prompt_length</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">512</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.max_prompt_length"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.max_prompt_length" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.max_length"> +<span class="sig-name descname"><span class="pre">max_length</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1024</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.max_length"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.max_length" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.max_steps"> +<span class="sig-name descname"><span class="pre">max_steps</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1000</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.max_steps"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.max_steps" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.logging_steps"> +<span class="sig-name descname"><span class="pre">logging_steps</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">10</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.logging_steps"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.logging_steps" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.save_steps"> +<span class="sig-name descname"><span class="pre">save_steps</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">100</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.save_steps"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.save_steps" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.eval_steps"> +<span class="sig-name descname"><span class="pre">eval_steps</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">100</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.eval_steps"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.eval_steps" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.output_dir"> +<span class="sig-name descname"><span class="pre">output_dir</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'./results'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.output_dir"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.output_dir" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.log_freq"> +<span class="sig-name descname"><span class="pre">log_freq</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.log_freq"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.log_freq" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.sanity_check"> +<span class="sig-name descname"><span class="pre">sanity_check</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.sanity_check"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.sanity_check" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.report_to"> +<span class="sig-name descname"><span class="pre">report_to</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'wandb'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.report_to"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.report_to" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.seed"> +<span class="sig-name descname"><span class="pre">seed</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.seed"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.seed" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.run_name"> +<span class="sig-name descname"><span class="pre">run_name</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'dpo'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.run_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.run_name" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOAlignerArguments.eval_dataset_path"> +<span class="sig-name descname"><span class="pre">eval_dataset_path</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOAlignerArguments.eval_dataset_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOAlignerArguments.eval_dataset_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.DPOv2AlignerArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">DPOv2AlignerArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOv2AlignerArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOv2AlignerArguments" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.args.FinetunerArguments" title="lmflow.args.FinetunerArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">FinetunerArguments</span></code></a></p> +<p>The arguments for the DPOv2 training script.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOv2AlignerArguments.random_seed"> +<span class="sig-name descname"><span class="pre">random_seed</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">42</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOv2AlignerArguments.random_seed"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOv2AlignerArguments.random_seed" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOv2AlignerArguments.accelerate_config_file"> +<span class="sig-name descname"><span class="pre">accelerate_config_file</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOv2AlignerArguments.accelerate_config_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOv2AlignerArguments.accelerate_config_file" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOv2AlignerArguments.margin_scale"> +<span class="sig-name descname"><span class="pre">margin_scale</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1.0</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOv2AlignerArguments.margin_scale"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOv2AlignerArguments.margin_scale" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOv2AlignerArguments.sampling_paired_method"> +<span class="sig-name descname"><span class="pre">sampling_paired_method</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'max_random'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOv2AlignerArguments.sampling_paired_method"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOv2AlignerArguments.sampling_paired_method" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOv2AlignerArguments.length_penalty"> +<span class="sig-name descname"><span class="pre">length_penalty</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOv2AlignerArguments.length_penalty"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOv2AlignerArguments.length_penalty" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOv2AlignerArguments.max_length"> +<span class="sig-name descname"><span class="pre">max_length</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">2048</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOv2AlignerArguments.max_length"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOv2AlignerArguments.max_length" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOv2AlignerArguments.max_prompt_length"> +<span class="sig-name descname"><span class="pre">max_prompt_length</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1000</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOv2AlignerArguments.max_prompt_length"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOv2AlignerArguments.max_prompt_length" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOv2AlignerArguments.mask_prompt"> +<span class="sig-name descname"><span class="pre">mask_prompt</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOv2AlignerArguments.mask_prompt"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOv2AlignerArguments.mask_prompt" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOv2AlignerArguments.beta"> +<span class="sig-name descname"><span class="pre">beta</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0.1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOv2AlignerArguments.beta"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOv2AlignerArguments.beta" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.DPOv2AlignerArguments.loss_type"> +<span class="sig-name descname"><span class="pre">loss_type</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'sigmoid'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#DPOv2AlignerArguments.loss_type"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.DPOv2AlignerArguments.loss_type" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.IterativeAlignerArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">IterativeAlignerArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#IterativeAlignerArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.IterativeAlignerArguments" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.args.InferencerArguments" title="lmflow.args.InferencerArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">InferencerArguments</span></code></a></p> +<p>Arguments for iterative aligners.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.IterativeAlignerArguments.dataset_path_list"> +<span class="sig-name descname"><span class="pre">dataset_path_list</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">[]</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#IterativeAlignerArguments.dataset_path_list"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.IterativeAlignerArguments.dataset_path_list" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.IterativeAlignerArguments.initial_iter_idx"> +<span class="sig-name descname"><span class="pre">initial_iter_idx</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#IterativeAlignerArguments.initial_iter_idx"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.IterativeAlignerArguments.initial_iter_idx" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.IterativeDPOAlignerArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">IterativeDPOAlignerArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#IterativeDPOAlignerArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.IterativeDPOAlignerArguments" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.args.IterativeAlignerArguments" title="lmflow.args.IterativeAlignerArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">IterativeAlignerArguments</span></code></a>, <a class="reference internal" href="#lmflow.args.DPOv2AlignerArguments" title="lmflow.args.DPOv2AlignerArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DPOv2AlignerArguments</span></code></a></p> +<p>Arguments for iterative DPO aligners.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.IterativeDPOAlignerArguments.output_dir"> +<span class="sig-name descname"><span class="pre">output_dir</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'./runs'</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#IterativeDPOAlignerArguments.output_dir"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.IterativeDPOAlignerArguments.output_dir" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.IterativeDPOAlignerArguments.reward_model_inference_batch_size"> +<span class="sig-name descname"><span class="pre">reward_model_inference_batch_size</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#IterativeDPOAlignerArguments.reward_model_inference_batch_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.IterativeDPOAlignerArguments.reward_model_inference_batch_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.IterativeDPOAlignerArguments.reward_model_inference_block_size"> +<span class="sig-name descname"><span class="pre">reward_model_inference_block_size</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">2048</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#IterativeDPOAlignerArguments.reward_model_inference_block_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.IterativeDPOAlignerArguments.reward_model_inference_block_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.IterativeDPOAlignerArguments.do_response_generation"> +<span class="sig-name descname"><span class="pre">do_response_generation</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#IterativeDPOAlignerArguments.do_response_generation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.IterativeDPOAlignerArguments.do_response_generation" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.IterativeDPOAlignerArguments.do_scoring"> +<span class="sig-name descname"><span class="pre">do_scoring</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#IterativeDPOAlignerArguments.do_scoring"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.IterativeDPOAlignerArguments.do_scoring" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.args.IterativeDPOAlignerArguments.do_dpo_align"> +<span class="sig-name descname"><span class="pre">do_dpo_align</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../_modules/lmflow/args.html#IterativeDPOAlignerArguments.do_dpo_align"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.IterativeDPOAlignerArguments.do_dpo_align" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.args.PIPELINE_ARGUMENT_MAPPING"> +<span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">PIPELINE_ARGUMENT_MAPPING</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#PIPELINE_ARGUMENT_MAPPING"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.PIPELINE_ARGUMENT_MAPPING" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.args.AutoArguments"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">AutoArguments</span></span><a class="reference internal" href="../../../_modules/lmflow/args.html#AutoArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.AutoArguments" title="Link to this definition">#</a></dt> +<dd><p>Automatically choose arguments from FinetunerArguments or EvaluatorArguments.</p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.args.AutoArguments.get_pipeline_args_class"> +<span class="sig-name descname"><span class="pre">get_pipeline_args_class</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/args.html#AutoArguments.get_pipeline_args_class"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.AutoArguments.get_pipeline_args_class" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.args.split_args"> +<span class="sig-prename descclassname"><span class="pre">lmflow.args.</span></span><span class="sig-name descname"><span class="pre">split_args</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/args.html#split_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.args.split_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow</p> + </div> + </a> + <a class="right-next" + href="../datasets/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.datasets</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.MODEL_CONFIG_CLASSES"><code class="docutils literal notranslate"><span class="pre">MODEL_CONFIG_CLASSES</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.MODEL_TYPES"><code class="docutils literal notranslate"><span class="pre">MODEL_TYPES</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames"><code class="docutils literal notranslate"><span class="pre">OptimizerNames</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.DUMMY"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.DUMMY</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.ADABELIEF"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.ADABELIEF</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.ADABOUND"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.ADABOUND</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.LARS"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.LARS</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.LAMB"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.LAMB</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.ADAMAX"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.ADAMAX</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.NADAM"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.NADAM</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.RADAM"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.RADAM</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.ADAMP"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.ADAMP</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.SGDP"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.SGDP</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.YOGI"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.YOGI</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.SOPHIA"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.SOPHIA</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.ADAN"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.ADAN</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.ADAM"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.ADAM</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.NOVOGRAD"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.NOVOGRAD</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.ADADELTA"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.ADADELTA</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.ADAGRAD"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.ADAGRAD</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.ADAMW_SCHEDULE_FREE"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.ADAMW_SCHEDULE_FREE</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.OptimizerNames.SGD_SCHEDULE_FREE"><code class="docutils literal notranslate"><span class="pre">OptimizerNames.SGD_SCHEDULE_FREE</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments"><code class="docutils literal notranslate"><span class="pre">ModelArguments</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.model_name_or_path"><code class="docutils literal notranslate"><span class="pre">ModelArguments.model_name_or_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.lora_model_path"><code class="docutils literal notranslate"><span class="pre">ModelArguments.lora_model_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.model_type"><code class="docutils literal notranslate"><span class="pre">ModelArguments.model_type</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.config_overrides"><code class="docutils literal notranslate"><span class="pre">ModelArguments.config_overrides</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.arch_type"><code class="docutils literal notranslate"><span class="pre">ModelArguments.arch_type</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.config_name"><code class="docutils literal notranslate"><span class="pre">ModelArguments.config_name</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.tokenizer_name"><code class="docutils literal notranslate"><span class="pre">ModelArguments.tokenizer_name</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.cache_dir"><code class="docutils literal notranslate"><span class="pre">ModelArguments.cache_dir</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.use_fast_tokenizer"><code class="docutils literal notranslate"><span class="pre">ModelArguments.use_fast_tokenizer</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.model_revision"><code class="docutils literal notranslate"><span class="pre">ModelArguments.model_revision</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.token"><code class="docutils literal notranslate"><span class="pre">ModelArguments.token</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.trust_remote_code"><code class="docutils literal notranslate"><span class="pre">ModelArguments.trust_remote_code</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.torch_dtype"><code class="docutils literal notranslate"><span class="pre">ModelArguments.torch_dtype</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.use_dora"><code class="docutils literal notranslate"><span class="pre">ModelArguments.use_dora</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.use_lora"><code class="docutils literal notranslate"><span class="pre">ModelArguments.use_lora</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.use_qlora"><code class="docutils literal notranslate"><span class="pre">ModelArguments.use_qlora</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.bits"><code class="docutils literal notranslate"><span class="pre">ModelArguments.bits</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.quant_type"><code class="docutils literal notranslate"><span class="pre">ModelArguments.quant_type</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.double_quant"><code class="docutils literal notranslate"><span class="pre">ModelArguments.double_quant</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.lora_r"><code class="docutils literal notranslate"><span class="pre">ModelArguments.lora_r</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.lora_alpha"><code class="docutils literal notranslate"><span class="pre">ModelArguments.lora_alpha</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.lora_target_modules"><code class="docutils literal notranslate"><span class="pre">ModelArguments.lora_target_modules</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.lora_dropout"><code class="docutils literal notranslate"><span class="pre">ModelArguments.lora_dropout</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.save_aggregated_lora"><code class="docutils literal notranslate"><span class="pre">ModelArguments.save_aggregated_lora</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.use_ram_optimized_load"><code class="docutils literal notranslate"><span class="pre">ModelArguments.use_ram_optimized_load</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.use_flash_attention"><code class="docutils literal notranslate"><span class="pre">ModelArguments.use_flash_attention</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.truncate_to_model_max_length"><code class="docutils literal notranslate"><span class="pre">ModelArguments.truncate_to_model_max_length</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.do_rope_scaling"><code class="docutils literal notranslate"><span class="pre">ModelArguments.do_rope_scaling</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.rope_pi_ratio"><code class="docutils literal notranslate"><span class="pre">ModelArguments.rope_pi_ratio</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.rope_ntk_ratio"><code class="docutils literal notranslate"><span class="pre">ModelArguments.rope_ntk_ratio</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.use_int8"><code class="docutils literal notranslate"><span class="pre">ModelArguments.use_int8</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.load_in_4bit"><code class="docutils literal notranslate"><span class="pre">ModelArguments.load_in_4bit</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.model_max_length"><code class="docutils literal notranslate"><span class="pre">ModelArguments.model_max_length</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.truncation_side"><code class="docutils literal notranslate"><span class="pre">ModelArguments.truncation_side</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.padding_side"><code class="docutils literal notranslate"><span class="pre">ModelArguments.padding_side</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.eos_padding"><code class="docutils literal notranslate"><span class="pre">ModelArguments.eos_padding</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.ignore_bias_buffers"><code class="docutils literal notranslate"><span class="pre">ModelArguments.ignore_bias_buffers</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.ModelArguments.__post_init__"><code class="docutils literal notranslate"><span class="pre">ModelArguments.__post_init__()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments"><code class="docutils literal notranslate"><span class="pre">VisModelArguments</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments.low_resource"><code class="docutils literal notranslate"><span class="pre">VisModelArguments.low_resource</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments.custom_model"><code class="docutils literal notranslate"><span class="pre">VisModelArguments.custom_model</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments.pretrained_language_projection_path"><code class="docutils literal notranslate"><span class="pre">VisModelArguments.pretrained_language_projection_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments.custom_vision_model"><code class="docutils literal notranslate"><span class="pre">VisModelArguments.custom_vision_model</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments.image_encoder_name_or_path"><code class="docutils literal notranslate"><span class="pre">VisModelArguments.image_encoder_name_or_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments.qformer_name_or_path"><code class="docutils literal notranslate"><span class="pre">VisModelArguments.qformer_name_or_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments.llm_model_name_or_path"><code class="docutils literal notranslate"><span class="pre">VisModelArguments.llm_model_name_or_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments.use_prompt_cache"><code class="docutils literal notranslate"><span class="pre">VisModelArguments.use_prompt_cache</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments.prompt_cache_path"><code class="docutils literal notranslate"><span class="pre">VisModelArguments.prompt_cache_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments.llava_loading"><code class="docutils literal notranslate"><span class="pre">VisModelArguments.llava_loading</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments.with_qformer"><code class="docutils literal notranslate"><span class="pre">VisModelArguments.with_qformer</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments.vision_select_layer"><code class="docutils literal notranslate"><span class="pre">VisModelArguments.vision_select_layer</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments.llava_pretrain_model_path"><code class="docutils literal notranslate"><span class="pre">VisModelArguments.llava_pretrain_model_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.VisModelArguments.save_pretrain_model_path"><code class="docutils literal notranslate"><span class="pre">VisModelArguments.save_pretrain_model_path</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments"><code class="docutils literal notranslate"><span class="pre">DatasetArguments</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.dataset_path"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.dataset_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.dataset_name"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.dataset_name</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.is_custom_dataset"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.is_custom_dataset</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.customized_cache_dir"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.customized_cache_dir</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.dataset_config_name"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.dataset_config_name</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.train_file"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.train_file</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.validation_file"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.validation_file</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.max_train_samples"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.max_train_samples</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.max_eval_samples"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.max_eval_samples</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.streaming"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.streaming</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.block_size"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.block_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.overwrite_cache"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.overwrite_cache</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.validation_split_percentage"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.validation_split_percentage</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.preprocessing_num_workers"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.preprocessing_num_workers</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.group_texts_batch_size"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.group_texts_batch_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.disable_group_texts"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.disable_group_texts</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.keep_linebreaks"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.keep_linebreaks</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.test_file"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.test_file</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.train_on_prompt"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.train_on_prompt</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.conversation_template"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.conversation_template</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DatasetArguments.__post_init__"><code class="docutils literal notranslate"><span class="pre">DatasetArguments.__post_init__()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.MultiModalDatasetArguments"><code class="docutils literal notranslate"><span class="pre">MultiModalDatasetArguments</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.MultiModalDatasetArguments.image_folder"><code class="docutils literal notranslate"><span class="pre">MultiModalDatasetArguments.image_folder</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.MultiModalDatasetArguments.image_aspect_ratio"><code class="docutils literal notranslate"><span class="pre">MultiModalDatasetArguments.image_aspect_ratio</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.MultiModalDatasetArguments.is_multimodal"><code class="docutils literal notranslate"><span class="pre">MultiModalDatasetArguments.is_multimodal</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.MultiModalDatasetArguments.use_image_start_end"><code class="docutils literal notranslate"><span class="pre">MultiModalDatasetArguments.use_image_start_end</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.MultiModalDatasetArguments.sep_style"><code class="docutils literal notranslate"><span class="pre">MultiModalDatasetArguments.sep_style</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.eval_dataset_path"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.eval_dataset_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.remove_unused_columns"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.remove_unused_columns</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.finetune_part"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.finetune_part</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.save_language_projection"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.save_language_projection</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.use_lisa"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.use_lisa</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.lisa_activated_layers"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.lisa_activated_layers</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.lisa_interval_steps"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.lisa_interval_steps</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.lisa_layers_attribute"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.lisa_layers_attribute</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.use_customized_optim"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.use_customized_optim</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.customized_optim"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.customized_optim</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.customized_optim_args"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.customized_optim_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.optim_dummy_beta1"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.optim_dummy_beta1</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.optim_dummy_beta2"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.optim_dummy_beta2</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.optim_adam_beta1"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.optim_adam_beta1</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.optim_adam_beta2"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.optim_adam_beta2</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.optim_beta1"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.optim_beta1</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.optim_beta2"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.optim_beta2</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.optim_beta3"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.optim_beta3</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.optim_momentum"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.optim_momentum</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.FinetunerArguments.optim_weight_decay"><code class="docutils literal notranslate"><span class="pre">FinetunerArguments.optim_weight_decay</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.RewardModelTunerArguments"><code class="docutils literal notranslate"><span class="pre">RewardModelTunerArguments</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.local_rank"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.local_rank</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.random_shuffle"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.random_shuffle</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.use_wandb"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.use_wandb</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.random_seed"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.random_seed</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.output_dir"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.output_dir</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.mixed_precision"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.mixed_precision</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.deepspeed"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.deepspeed</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.answer_type"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.answer_type</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.prompt_structure"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.prompt_structure</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.evaluate_block_size"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.evaluate_block_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.metric"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.metric</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.inference_batch_size_per_device"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.inference_batch_size_per_device</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.use_accelerator_for_evaluator"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.use_accelerator_for_evaluator</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.temperature"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.temperature</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.repetition_penalty"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.repetition_penalty</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.EvaluatorArguments.max_new_tokens"><code class="docutils literal notranslate"><span class="pre">EvaluatorArguments.max_new_tokens</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments"><code class="docutils literal notranslate"><span class="pre">InferencerArguments</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.device"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.device</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.local_rank"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.local_rank</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.inference_batch_size"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.inference_batch_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.vllm_inference_batch_size"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.vllm_inference_batch_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.temperature"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.temperature</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.repetition_penalty"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.repetition_penalty</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.max_new_tokens"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.max_new_tokens</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.random_seed"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.random_seed</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.deepspeed"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.deepspeed</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.mixed_precision"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.mixed_precision</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.do_sample"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.do_sample</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.use_accelerator"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.use_accelerator</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.use_beam_search"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.use_beam_search</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.num_output_sequences"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.num_output_sequences</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.top_p"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.top_p</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.top_k"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.top_k</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.additional_stop_token_ids"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.additional_stop_token_ids</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.apply_chat_template"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.apply_chat_template</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.enable_decode_inference_result"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.enable_decode_inference_result</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.tensor_parallel_size"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.tensor_parallel_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.enable_distributed_inference"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.enable_distributed_inference</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.distributed_inference_num_instances"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.distributed_inference_num_instances</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.use_vllm"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.use_vllm</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.vllm_tensor_parallel_size"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.vllm_tensor_parallel_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.vllm_gpu_memory_utilization"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.vllm_gpu_memory_utilization</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.save_results"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.save_results</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.results_path"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.results_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.InferencerArguments.__post_init__"><code class="docutils literal notranslate"><span class="pre">InferencerArguments.__post_init__()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.RaftAlignerArguments"><code class="docutils literal notranslate"><span class="pre">RaftAlignerArguments</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.RaftAlignerArguments.output_reward_path"><code class="docutils literal notranslate"><span class="pre">RaftAlignerArguments.output_reward_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.RaftAlignerArguments.output_min_length"><code class="docutils literal notranslate"><span class="pre">RaftAlignerArguments.output_min_length</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.RaftAlignerArguments.output_max_length"><code class="docutils literal notranslate"><span class="pre">RaftAlignerArguments.output_max_length</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.RaftAlignerArguments.num_raft_iteration"><code class="docutils literal notranslate"><span class="pre">RaftAlignerArguments.num_raft_iteration</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.RaftAlignerArguments.raft_batch_size"><code class="docutils literal notranslate"><span class="pre">RaftAlignerArguments.raft_batch_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.RaftAlignerArguments.top_reward_percentage"><code class="docutils literal notranslate"><span class="pre">RaftAlignerArguments.top_reward_percentage</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.RaftAlignerArguments.inference_batch_size_per_device"><code class="docutils literal notranslate"><span class="pre">RaftAlignerArguments.inference_batch_size_per_device</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.RaftAlignerArguments.collection_strategy"><code class="docutils literal notranslate"><span class="pre">RaftAlignerArguments.collection_strategy</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.BenchmarkingArguments"><code class="docutils literal notranslate"><span class="pre">BenchmarkingArguments</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.BenchmarkingArguments.dataset_name"><code class="docutils literal notranslate"><span class="pre">BenchmarkingArguments.dataset_name</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.BenchmarkingArguments.lm_evaluation_metric"><code class="docutils literal notranslate"><span class="pre">BenchmarkingArguments.lm_evaluation_metric</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.local_rank"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.local_rank</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.beta"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.beta</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.learning_rate"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.learning_rate</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.lr_scheduler_type"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.lr_scheduler_type</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.warmup_steps"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.warmup_steps</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.weight_decay"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.weight_decay</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.optimizer_type"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.optimizer_type</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.per_device_train_batch_size"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.per_device_train_batch_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.per_device_eval_batch_size"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.per_device_eval_batch_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.gradient_accumulation_steps"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.gradient_accumulation_steps</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.gradient_checkpointing"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.gradient_checkpointing</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.gradient_checkpointing_use_reentrant"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.gradient_checkpointing_use_reentrant</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.max_prompt_length"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.max_prompt_length</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.max_length"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.max_length</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.max_steps"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.max_steps</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.logging_steps"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.logging_steps</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.save_steps"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.save_steps</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.eval_steps"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.eval_steps</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.output_dir"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.output_dir</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.log_freq"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.log_freq</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.sanity_check"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.sanity_check</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.report_to"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.report_to</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.seed"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.seed</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.run_name"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.run_name</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOAlignerArguments.eval_dataset_path"><code class="docutils literal notranslate"><span class="pre">DPOAlignerArguments.eval_dataset_path</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOv2AlignerArguments"><code class="docutils literal notranslate"><span class="pre">DPOv2AlignerArguments</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOv2AlignerArguments.random_seed"><code class="docutils literal notranslate"><span class="pre">DPOv2AlignerArguments.random_seed</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOv2AlignerArguments.accelerate_config_file"><code class="docutils literal notranslate"><span class="pre">DPOv2AlignerArguments.accelerate_config_file</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOv2AlignerArguments.margin_scale"><code class="docutils literal notranslate"><span class="pre">DPOv2AlignerArguments.margin_scale</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOv2AlignerArguments.sampling_paired_method"><code class="docutils literal notranslate"><span class="pre">DPOv2AlignerArguments.sampling_paired_method</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOv2AlignerArguments.length_penalty"><code class="docutils literal notranslate"><span class="pre">DPOv2AlignerArguments.length_penalty</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOv2AlignerArguments.max_length"><code class="docutils literal notranslate"><span class="pre">DPOv2AlignerArguments.max_length</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOv2AlignerArguments.max_prompt_length"><code class="docutils literal notranslate"><span class="pre">DPOv2AlignerArguments.max_prompt_length</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOv2AlignerArguments.mask_prompt"><code class="docutils literal notranslate"><span class="pre">DPOv2AlignerArguments.mask_prompt</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOv2AlignerArguments.beta"><code class="docutils literal notranslate"><span class="pre">DPOv2AlignerArguments.beta</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.DPOv2AlignerArguments.loss_type"><code class="docutils literal notranslate"><span class="pre">DPOv2AlignerArguments.loss_type</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.IterativeAlignerArguments"><code class="docutils literal notranslate"><span class="pre">IterativeAlignerArguments</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.IterativeAlignerArguments.dataset_path_list"><code class="docutils literal notranslate"><span class="pre">IterativeAlignerArguments.dataset_path_list</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.IterativeAlignerArguments.initial_iter_idx"><code class="docutils literal notranslate"><span class="pre">IterativeAlignerArguments.initial_iter_idx</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.IterativeDPOAlignerArguments"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAlignerArguments</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.IterativeDPOAlignerArguments.output_dir"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAlignerArguments.output_dir</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.IterativeDPOAlignerArguments.reward_model_inference_batch_size"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAlignerArguments.reward_model_inference_batch_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.IterativeDPOAlignerArguments.reward_model_inference_block_size"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAlignerArguments.reward_model_inference_block_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.IterativeDPOAlignerArguments.do_response_generation"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAlignerArguments.do_response_generation</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.IterativeDPOAlignerArguments.do_scoring"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAlignerArguments.do_scoring</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.IterativeDPOAlignerArguments.do_dpo_align"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAlignerArguments.do_dpo_align</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.PIPELINE_ARGUMENT_MAPPING"><code class="docutils literal notranslate"><span class="pre">PIPELINE_ARGUMENT_MAPPING</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.AutoArguments"><code class="docutils literal notranslate"><span class="pre">AutoArguments</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.AutoArguments.get_pipeline_args_class"><code class="docutils literal notranslate"><span class="pre">AutoArguments.get_pipeline_args_class()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.args.split_args"><code class="docutils literal notranslate"><span class="pre">split_args()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../_sources/autoapi/lmflow/args/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/datasets/dataset/index.html b/autoapi/lmflow/datasets/dataset/index.html new file mode 100644 index 000000000..a264acf6e --- /dev/null +++ b/autoapi/lmflow/datasets/dataset/index.html @@ -0,0 +1,1053 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.datasets.dataset &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/datasets/dataset/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.datasets.multi_modal_dataset" href="../multi_modal_dataset/index.html" /> + <link rel="prev" title="lmflow.datasets" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.datasets</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.datasets</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.datasets.dataset</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.datasets.dataset"> +<span id="lmflow-datasets-dataset"></span><h1>lmflow.datasets.dataset<a class="headerlink" href="#module-lmflow.datasets.dataset" title="Link to this heading">#</a></h1> +<p>This Python code defines a class Dataset with methods for initializing, loading, +and manipulating datasets from different backends such as Hugging Face and JSON.</p> +<p>The <cite>Dataset</cite> class includes methods for loading datasets from a dictionary and a Hugging +Face dataset, mapping datasets, and retrieving the backend dataset and arguments.</p> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.datasets.dataset.logger" title="lmflow.datasets.dataset.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.datasets.dataset.DATASET_TYPES" title="lmflow.datasets.dataset.DATASET_TYPES"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DATASET_TYPES</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.datasets.dataset.KEY_TYPE" title="lmflow.datasets.dataset.KEY_TYPE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">KEY_TYPE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.datasets.dataset.KEY_INSTANCES" title="lmflow.datasets.dataset.KEY_INSTANCES"><code class="xref py py-obj docutils literal notranslate"><span class="pre">KEY_INSTANCES</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.datasets.dataset.KEY_SCORE" title="lmflow.datasets.dataset.KEY_SCORE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">KEY_SCORE</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Dataset</span></code></a></p></td> +<td><p>Initializes the Dataset object with the given parameters.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.datasets.dataset.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.DATASET_TYPES"> +<span class="sig-prename descclassname"><span class="pre">lmflow.datasets.dataset.</span></span><span class="sig-name descname"><span class="pre">DATASET_TYPES</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">['text_only',</span> <span class="pre">'text2text',</span> <span class="pre">'float_only',</span> <span class="pre">'image_text',</span> <span class="pre">'conversation',</span> <span class="pre">'paired_conversation',...</span></em><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#DATASET_TYPES"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.DATASET_TYPES" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.KEY_TYPE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.datasets.dataset.</span></span><span class="sig-name descname"><span class="pre">KEY_TYPE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'type'</span></em><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#KEY_TYPE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.KEY_TYPE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.KEY_INSTANCES"> +<span class="sig-prename descclassname"><span class="pre">lmflow.datasets.dataset.</span></span><span class="sig-name descname"><span class="pre">KEY_INSTANCES</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'instances'</span></em><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#KEY_INSTANCES"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.KEY_INSTANCES" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.KEY_SCORE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.datasets.dataset.</span></span><span class="sig-name descname"><span class="pre">KEY_SCORE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'score'</span></em><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#KEY_SCORE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.KEY_SCORE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.datasets.dataset.</span></span><span class="sig-name descname"><span class="pre">Dataset</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">backend</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'huggingface'</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset" title="Link to this definition">#</a></dt> +<dd><p>Initializes the Dataset object with the given parameters.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>data_args</strong><span class="classifier">DatasetArguments object.</span></dt><dd><p>Contains the arguments required to load the dataset.</p> +</dd> +<dt><strong>backend</strong><span class="classifier">str, default=”huggingface”</span></dt><dd><p>A string representing the dataset backend. Defaults to “huggingface”.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.data_args"> +<span class="sig-name descname"><span class="pre">data_args</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.data_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.data_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.backend"> +<span class="sig-name descname"><span class="pre">backend</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'huggingface'</span></em><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.backend"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.backend" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.backend_dataset"> +<span class="sig-name descname"><span class="pre">backend_dataset</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.backend_dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.backend_dataset" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.type"> +<span class="sig-name descname"><span class="pre">type</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.type"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.type" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.dataset_path"> +<span class="sig-name descname"><span class="pre">dataset_path</span></span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.dataset_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.dataset_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.__len__"> +<span class="sig-name descname"><span class="pre">__len__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.__len__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.__len__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset._check_data_format"> +<span class="sig-name descname"><span class="pre">_check_data_format</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset._check_data_format"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset._check_data_format" title="Link to this definition">#</a></dt> +<dd><p>Checks if data type and data structure matches</p> +<p>Raise messages with hints if not matched.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.from_dict"> +<span class="sig-name descname"><span class="pre">from_dict</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dict_obj</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.from_dict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.from_dict" title="Link to this definition">#</a></dt> +<dd><p>Create a Dataset object from a dictionary.</p> +<dl> +<dt>Return a Dataset given a dict with format:</dt><dd><dl> +<dt>{</dt><dd><p>“type”: TYPE, +“instances”: [</p> +<blockquote> +<div><dl class="simple"> +<dt>{</dt><dd><p>“key_1”: VALUE_1.1, +“key_2”: VALUE_1.2, +…</p> +</dd> +</dl> +<p>}, +{</p> +<blockquote> +<div><p>“key_1”: VALUE_2.1, +“key_2”: VALUE_2.2, +…</p> +</div></blockquote> +</div></blockquote> +<p>]</p> +</dd> +</dl> +<p>}</p> +</dd> +</dl> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>dict_obj</strong><span class="classifier">dict.</span></dt><dd><p>A dictionary containing the dataset information.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt><strong>self</strong><span class="classifier">Dataset object.</span></dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.create_from_dict"> +<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">create_from_dict</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dict_obj</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.create_from_dict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.create_from_dict" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt>Returns a Dataset object given a dict.</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.to_dict"> +<span class="sig-name descname"><span class="pre">to_dict</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.to_dict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.to_dict" title="Link to this definition">#</a></dt> +<dd><dl class="field-list"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl> +<dt>Return a dict represents the dataset:</dt><dd><dl> +<dt>{</dt><dd><p>“type”: TYPE, +“instances”: [</p> +<blockquote> +<div><dl class="simple"> +<dt>{</dt><dd><p>“key_1”: VALUE_1.1, +“key_2”: VALUE_1.2, +…</p> +</dd> +</dl> +<p>}, +{</p> +<blockquote> +<div><p>“key_1”: VALUE_2.1, +“key_2”: VALUE_2.2, +…</p> +</div></blockquote> +</div></blockquote> +<p>]</p> +</dd> +</dl> +<p>}</p> +</dd> +<dt>A python dict object represents the content of this dataset.</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.to_list"> +<span class="sig-name descname"><span class="pre">to_list</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.to_list"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.to_list" title="Link to this definition">#</a></dt> +<dd><p>Returns a list of instances.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.map"> +<span class="sig-name descname"><span class="pre">map</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.map"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.map" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt><strong>self</strong><span class="classifier">Dataset object.</span></dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.get_backend"> +<span class="sig-name descname"><span class="pre">get_backend</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.get_backend"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.get_backend" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt>self.backend</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.get_backend_dataset"> +<span class="sig-name descname"><span class="pre">get_backend_dataset</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.get_backend_dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.get_backend_dataset" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt>self.backend_dataset</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.get_fingerprint"> +<span class="sig-name descname"><span class="pre">get_fingerprint</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.get_fingerprint"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.get_fingerprint" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt>Fingerprint of the backend_dataset which controls the cache</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.get_data_args"> +<span class="sig-name descname"><span class="pre">get_data_args</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.get_data_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.get_data_args" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt>self.data_args</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.get_type"> +<span class="sig-name descname"><span class="pre">get_type</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.get_type"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.get_type" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt>self.type</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.save"> +<span class="sig-name descname"><span class="pre">save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">format</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'json'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.save" title="Link to this definition">#</a></dt> +<dd><p>Save the dataset to a json file.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>file_path</strong><span class="classifier">str.</span></dt><dd><p>The path to the file where the dataset will be saved.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.sample"> +<span class="sig-name descname"><span class="pre">sample</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">n</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seed</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">42</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.sample"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.sample" title="Link to this definition">#</a></dt> +<dd><p>Sample n instances from the dataset.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>n</strong><span class="classifier">int.</span></dt><dd><p>The number of instances to sample from the dataset.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt><strong>sample_dataset</strong><span class="classifier">Dataset object.</span></dt><dd><p>A new dataset object containing the sampled instances.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.train_test_split"> +<span class="sig-name descname"><span class="pre">train_test_split</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">test_size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shuffle</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seed</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">42</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.train_test_split"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.train_test_split" title="Link to this definition">#</a></dt> +<dd><p>Split the dataset into training and testing sets.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>test_size</strong><span class="classifier">float, default=0.2.</span></dt><dd><p>The proportion of the dataset that will be used for testing.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt><strong>train_dataset</strong><span class="classifier">Dataset object.</span></dt><dd><p>A new dataset object containing the training instances.</p> +</dd> +<dt><strong>test_dataset</strong><span class="classifier">Dataset object.</span></dt><dd><p>A new dataset object containing the testing instances.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.drop_instances"> +<span class="sig-name descname"><span class="pre">drop_instances</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">indices</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.drop_instances"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.drop_instances" title="Link to this definition">#</a></dt> +<dd><p>Drop instances from the dataset.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>indices</strong><span class="classifier">list.</span></dt><dd><p>A list of indices of the instances to drop from the dataset.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.sanity_check"> +<span class="sig-name descname"><span class="pre">sanity_check</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">drop_invalid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.sanity_check"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.sanity_check" title="Link to this definition">#</a></dt> +<dd><p>Perform a sanity check on the dataset.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.dataset.Dataset.hf_dataset_sanity_check"> +<span class="sig-name descname"><span class="pre">hf_dataset_sanity_check</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">drop_invalid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/dataset.html#Dataset.hf_dataset_sanity_check"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.dataset.Dataset.hf_dataset_sanity_check" title="Link to this definition">#</a></dt> +<dd><p>Perform a sanity check on the HuggingFace dataset.</p> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.datasets</p> + </div> + </a> + <a class="right-next" + href="../multi_modal_dataset/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.datasets.multi_modal_dataset</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.DATASET_TYPES"><code class="docutils literal notranslate"><span class="pre">DATASET_TYPES</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.KEY_TYPE"><code class="docutils literal notranslate"><span class="pre">KEY_TYPE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.KEY_INSTANCES"><code class="docutils literal notranslate"><span class="pre">KEY_INSTANCES</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.KEY_SCORE"><code class="docutils literal notranslate"><span class="pre">KEY_SCORE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset"><code class="docutils literal notranslate"><span class="pre">Dataset</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.data_args"><code class="docutils literal notranslate"><span class="pre">Dataset.data_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.backend"><code class="docutils literal notranslate"><span class="pre">Dataset.backend</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.backend_dataset"><code class="docutils literal notranslate"><span class="pre">Dataset.backend_dataset</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.type"><code class="docutils literal notranslate"><span class="pre">Dataset.type</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.dataset_path"><code class="docutils literal notranslate"><span class="pre">Dataset.dataset_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.__len__"><code class="docutils literal notranslate"><span class="pre">Dataset.__len__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset._check_data_format"><code class="docutils literal notranslate"><span class="pre">Dataset._check_data_format()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.from_dict"><code class="docutils literal notranslate"><span class="pre">Dataset.from_dict()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.create_from_dict"><code class="docutils literal notranslate"><span class="pre">Dataset.create_from_dict()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.to_dict"><code class="docutils literal notranslate"><span class="pre">Dataset.to_dict()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.to_list"><code class="docutils literal notranslate"><span class="pre">Dataset.to_list()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.map"><code class="docutils literal notranslate"><span class="pre">Dataset.map()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.get_backend"><code class="docutils literal notranslate"><span class="pre">Dataset.get_backend()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.get_backend_dataset"><code class="docutils literal notranslate"><span class="pre">Dataset.get_backend_dataset()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.get_fingerprint"><code class="docutils literal notranslate"><span class="pre">Dataset.get_fingerprint()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.get_data_args"><code class="docutils literal notranslate"><span class="pre">Dataset.get_data_args()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.get_type"><code class="docutils literal notranslate"><span class="pre">Dataset.get_type()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.save"><code class="docutils literal notranslate"><span class="pre">Dataset.save()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.sample"><code class="docutils literal notranslate"><span class="pre">Dataset.sample()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.train_test_split"><code class="docutils literal notranslate"><span class="pre">Dataset.train_test_split()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.drop_instances"><code class="docutils literal notranslate"><span class="pre">Dataset.drop_instances()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.sanity_check"><code class="docutils literal notranslate"><span class="pre">Dataset.sanity_check()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.dataset.Dataset.hf_dataset_sanity_check"><code class="docutils literal notranslate"><span class="pre">Dataset.hf_dataset_sanity_check()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/datasets/dataset/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/datasets/index.html b/autoapi/lmflow/datasets/index.html new file mode 100644 index 000000000..258ad08c8 --- /dev/null +++ b/autoapi/lmflow/datasets/index.html @@ -0,0 +1,1024 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.datasets &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/datasets/index';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <link rel="next" title="lmflow.datasets.dataset" href="dataset/index.html" /> + <link rel="prev" title="lmflow.args" href="../args/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 current active has-children"><a class="current reference internal" href="#">lmflow.datasets</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.datasets</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.datasets"> +<span id="lmflow-datasets"></span><h1>lmflow.datasets<a class="headerlink" href="#module-lmflow.datasets" title="Link to this heading">#</a></h1> +<p>This Python code defines a class Dataset with methods for initializing, loading, +and manipulating datasets from different backends such as Hugging Face and JSON.</p> +<p>The <cite>Dataset</cite> class includes methods for loading datasets from a dictionary and a Hugging +Face dataset, mapping datasets, and retrieving the backend dataset and arguments.</p> +<section id="submodules"> +<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l1"><a class="reference internal" href="multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.datasets.Dataset" title="lmflow.datasets.Dataset"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Dataset</span></code></a></p></td> +<td><p>Initializes the Dataset object with the given parameters.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.datasets.is_multimodal_available" title="lmflow.datasets.is_multimodal_available"><code class="xref py py-obj docutils literal notranslate"><span class="pre">is_multimodal_available</span></code></a>()</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="package-contents"> +<h2>Package Contents<a class="headerlink" href="#package-contents" title="Link to this heading">#</a></h2> +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.datasets.is_multimodal_available"> +<span class="sig-prename descclassname"><span class="pre">lmflow.datasets.</span></span><span class="sig-name descname"><span class="pre">is_multimodal_available</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/utils/versioning.html#is_multimodal_available"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.is_multimodal_available" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.datasets.</span></span><span class="sig-name descname"><span class="pre">Dataset</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">backend</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'huggingface'</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset" title="Link to this definition">#</a></dt> +<dd><p>Initializes the Dataset object with the given parameters.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>data_args</strong><span class="classifier">DatasetArguments object.</span></dt><dd><p>Contains the arguments required to load the dataset.</p> +</dd> +<dt><strong>backend</strong><span class="classifier">str, default=”huggingface”</span></dt><dd><p>A string representing the dataset backend. Defaults to “huggingface”.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.data_args"> +<span class="sig-name descname"><span class="pre">data_args</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#lmflow.datasets.Dataset.data_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.backend"> +<span class="sig-name descname"><span class="pre">backend</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'huggingface'</span></em><a class="headerlink" href="#lmflow.datasets.Dataset.backend" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.backend_dataset"> +<span class="sig-name descname"><span class="pre">backend_dataset</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#lmflow.datasets.Dataset.backend_dataset" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.type"> +<span class="sig-name descname"><span class="pre">type</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#lmflow.datasets.Dataset.type" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.dataset_path"> +<span class="sig-name descname"><span class="pre">dataset_path</span></span><a class="headerlink" href="#lmflow.datasets.Dataset.dataset_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.__len__"> +<span class="sig-name descname"><span class="pre">__len__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.__len__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.__len__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset._check_data_format"> +<span class="sig-name descname"><span class="pre">_check_data_format</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset._check_data_format"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset._check_data_format" title="Link to this definition">#</a></dt> +<dd><p>Checks if data type and data structure matches</p> +<p>Raise messages with hints if not matched.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.from_dict"> +<span class="sig-name descname"><span class="pre">from_dict</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dict_obj</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.from_dict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.from_dict" title="Link to this definition">#</a></dt> +<dd><p>Create a Dataset object from a dictionary.</p> +<dl> +<dt>Return a Dataset given a dict with format:</dt><dd><dl> +<dt>{</dt><dd><p>“type”: TYPE, +“instances”: [</p> +<blockquote> +<div><dl class="simple"> +<dt>{</dt><dd><p>“key_1”: VALUE_1.1, +“key_2”: VALUE_1.2, +…</p> +</dd> +</dl> +<p>}, +{</p> +<blockquote> +<div><p>“key_1”: VALUE_2.1, +“key_2”: VALUE_2.2, +…</p> +</div></blockquote> +</div></blockquote> +<p>]</p> +</dd> +</dl> +<p>}</p> +</dd> +</dl> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>dict_obj</strong><span class="classifier">dict.</span></dt><dd><p>A dictionary containing the dataset information.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt><strong>self</strong><span class="classifier">Dataset object.</span></dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.create_from_dict"> +<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">create_from_dict</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dict_obj</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.create_from_dict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.create_from_dict" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt>Returns a Dataset object given a dict.</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.to_dict"> +<span class="sig-name descname"><span class="pre">to_dict</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.to_dict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.to_dict" title="Link to this definition">#</a></dt> +<dd><dl class="field-list"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl> +<dt>Return a dict represents the dataset:</dt><dd><dl> +<dt>{</dt><dd><p>“type”: TYPE, +“instances”: [</p> +<blockquote> +<div><dl class="simple"> +<dt>{</dt><dd><p>“key_1”: VALUE_1.1, +“key_2”: VALUE_1.2, +…</p> +</dd> +</dl> +<p>}, +{</p> +<blockquote> +<div><p>“key_1”: VALUE_2.1, +“key_2”: VALUE_2.2, +…</p> +</div></blockquote> +</div></blockquote> +<p>]</p> +</dd> +</dl> +<p>}</p> +</dd> +<dt>A python dict object represents the content of this dataset.</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.to_list"> +<span class="sig-name descname"><span class="pre">to_list</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.to_list"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.to_list" title="Link to this definition">#</a></dt> +<dd><p>Returns a list of instances.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.map"> +<span class="sig-name descname"><span class="pre">map</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.map"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.map" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt><strong>self</strong><span class="classifier">Dataset object.</span></dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.get_backend"> +<span class="sig-name descname"><span class="pre">get_backend</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.get_backend"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.get_backend" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt>self.backend</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.get_backend_dataset"> +<span class="sig-name descname"><span class="pre">get_backend_dataset</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.get_backend_dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.get_backend_dataset" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt>self.backend_dataset</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.get_fingerprint"> +<span class="sig-name descname"><span class="pre">get_fingerprint</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.get_fingerprint"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.get_fingerprint" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt>Fingerprint of the backend_dataset which controls the cache</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.get_data_args"> +<span class="sig-name descname"><span class="pre">get_data_args</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.get_data_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.get_data_args" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt>self.data_args</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.get_type"> +<span class="sig-name descname"><span class="pre">get_type</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.get_type"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.get_type" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt>self.type</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.save"> +<span class="sig-name descname"><span class="pre">save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">format</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'json'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.save" title="Link to this definition">#</a></dt> +<dd><p>Save the dataset to a json file.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>file_path</strong><span class="classifier">str.</span></dt><dd><p>The path to the file where the dataset will be saved.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.sample"> +<span class="sig-name descname"><span class="pre">sample</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">n</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seed</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">42</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.sample"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.sample" title="Link to this definition">#</a></dt> +<dd><p>Sample n instances from the dataset.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>n</strong><span class="classifier">int.</span></dt><dd><p>The number of instances to sample from the dataset.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt><strong>sample_dataset</strong><span class="classifier">Dataset object.</span></dt><dd><p>A new dataset object containing the sampled instances.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.train_test_split"> +<span class="sig-name descname"><span class="pre">train_test_split</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">test_size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shuffle</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seed</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">42</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.train_test_split"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.train_test_split" title="Link to this definition">#</a></dt> +<dd><p>Split the dataset into training and testing sets.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>test_size</strong><span class="classifier">float, default=0.2.</span></dt><dd><p>The proportion of the dataset that will be used for testing.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt><strong>train_dataset</strong><span class="classifier">Dataset object.</span></dt><dd><p>A new dataset object containing the training instances.</p> +</dd> +<dt><strong>test_dataset</strong><span class="classifier">Dataset object.</span></dt><dd><p>A new dataset object containing the testing instances.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.drop_instances"> +<span class="sig-name descname"><span class="pre">drop_instances</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">indices</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.drop_instances"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.drop_instances" title="Link to this definition">#</a></dt> +<dd><p>Drop instances from the dataset.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>indices</strong><span class="classifier">list.</span></dt><dd><p>A list of indices of the instances to drop from the dataset.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.sanity_check"> +<span class="sig-name descname"><span class="pre">sanity_check</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">drop_invalid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.sanity_check"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.sanity_check" title="Link to this definition">#</a></dt> +<dd><p>Perform a sanity check on the dataset.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.Dataset.hf_dataset_sanity_check"> +<span class="sig-name descname"><span class="pre">hf_dataset_sanity_check</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">drop_invalid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../_modules/lmflow/datasets/dataset.html#Dataset.hf_dataset_sanity_check"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.Dataset.hf_dataset_sanity_check" title="Link to this definition">#</a></dt> +<dd><p>Perform a sanity check on the HuggingFace dataset.</p> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../args/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.args</p> + </div> + </a> + <a class="right-next" + href="dataset/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.datasets.dataset</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#package-contents">Package Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.is_multimodal_available"><code class="docutils literal notranslate"><span class="pre">is_multimodal_available()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset"><code class="docutils literal notranslate"><span class="pre">Dataset</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.data_args"><code class="docutils literal notranslate"><span class="pre">Dataset.data_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.backend"><code class="docutils literal notranslate"><span class="pre">Dataset.backend</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.backend_dataset"><code class="docutils literal notranslate"><span class="pre">Dataset.backend_dataset</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.type"><code class="docutils literal notranslate"><span class="pre">Dataset.type</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.dataset_path"><code class="docutils literal notranslate"><span class="pre">Dataset.dataset_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.__len__"><code class="docutils literal notranslate"><span class="pre">Dataset.__len__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset._check_data_format"><code class="docutils literal notranslate"><span class="pre">Dataset._check_data_format()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.from_dict"><code class="docutils literal notranslate"><span class="pre">Dataset.from_dict()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.create_from_dict"><code class="docutils literal notranslate"><span class="pre">Dataset.create_from_dict()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.to_dict"><code class="docutils literal notranslate"><span class="pre">Dataset.to_dict()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.to_list"><code class="docutils literal notranslate"><span class="pre">Dataset.to_list()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.map"><code class="docutils literal notranslate"><span class="pre">Dataset.map()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.get_backend"><code class="docutils literal notranslate"><span class="pre">Dataset.get_backend()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.get_backend_dataset"><code class="docutils literal notranslate"><span class="pre">Dataset.get_backend_dataset()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.get_fingerprint"><code class="docutils literal notranslate"><span class="pre">Dataset.get_fingerprint()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.get_data_args"><code class="docutils literal notranslate"><span class="pre">Dataset.get_data_args()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.get_type"><code class="docutils literal notranslate"><span class="pre">Dataset.get_type()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.save"><code class="docutils literal notranslate"><span class="pre">Dataset.save()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.sample"><code class="docutils literal notranslate"><span class="pre">Dataset.sample()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.train_test_split"><code class="docutils literal notranslate"><span class="pre">Dataset.train_test_split()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.drop_instances"><code class="docutils literal notranslate"><span class="pre">Dataset.drop_instances()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.sanity_check"><code class="docutils literal notranslate"><span class="pre">Dataset.sanity_check()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.Dataset.hf_dataset_sanity_check"><code class="docutils literal notranslate"><span class="pre">Dataset.hf_dataset_sanity_check()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../_sources/autoapi/lmflow/datasets/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/datasets/multi_modal_dataset/index.html b/autoapi/lmflow/datasets/multi_modal_dataset/index.html new file mode 100644 index 000000000..0b16c6f43 --- /dev/null +++ b/autoapi/lmflow/datasets/multi_modal_dataset/index.html @@ -0,0 +1,790 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.datasets.multi_modal_dataset &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/datasets/multi_modal_dataset/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.models" href="../../models/index.html" /> + <link rel="prev" title="lmflow.datasets.dataset" href="../dataset/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.datasets</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.datasets</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.datasets.multi_modal_dataset</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.datasets.multi_modal_dataset"> +<span id="lmflow-datasets-multi-modal-dataset"></span><h1>lmflow.datasets.multi_modal_dataset<a class="headerlink" href="#module-lmflow.datasets.multi_modal_dataset" title="Link to this heading">#</a></h1> +<p>This Python code defines a class Multi Modal Dataset.</p> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset" title="lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset"><code class="xref py py-obj docutils literal notranslate"><span class="pre">CustomMultiModalDataset</span></code></a></p></td> +<td><p>Dataset for Multi Modal data</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset" title="lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DataCollatorForSupervisedDataset</span></code></a></p></td> +<td><p>Collate examples for supervised fine-tuning.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.datasets.multi_modal_dataset.preprocess_multimodal_llava" title="lmflow.datasets.multi_modal_dataset.preprocess_multimodal_llava"><code class="xref py py-obj docutils literal notranslate"><span class="pre">preprocess_multimodal_llava</span></code></a>(sources, data_args)</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.datasets.multi_modal_dataset.tokenizer_image_token" title="lmflow.datasets.multi_modal_dataset.tokenizer_image_token"><code class="xref py py-obj docutils literal notranslate"><span class="pre">tokenizer_image_token</span></code></a>(prompt, tokenizer[, ...])</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_plain" title="lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_plain"><code class="xref py py-obj docutils literal notranslate"><span class="pre">preprocess_llama_from_llava_plain</span></code></a>(sources, tokenizer)</p></td> +<td><p>This function just add the image in the front of text.</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_v1" title="lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_v1"><code class="xref py py-obj docutils literal notranslate"><span class="pre">preprocess_llama_from_llava_v1</span></code></a>(sources, tokenizer[, ...])</p></td> +<td><p>This function add the prompt and then put the image after the prompt.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.datasets.multi_modal_dataset.</span></span><span class="sig-name descname"><span class="pre">CustomMultiModalDataset</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/multi_modal_dataset.html#CustomMultiModalDataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.utils.data.Dataset</span></code></p> +<p>Dataset for Multi Modal data</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.data_dict"> +<span class="sig-name descname"><span class="pre">data_dict</span></span><a class="reference internal" href="../../../../_modules/lmflow/datasets/multi_modal_dataset.html#CustomMultiModalDataset.data_dict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.data_dict" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.data_args"> +<span class="sig-name descname"><span class="pre">data_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/datasets/multi_modal_dataset.html#CustomMultiModalDataset.data_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.data_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.image_folder"> +<span class="sig-name descname"><span class="pre">image_folder</span></span><a class="reference internal" href="../../../../_modules/lmflow/datasets/multi_modal_dataset.html#CustomMultiModalDataset.image_folder"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.image_folder" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.__len__"> +<span class="sig-name descname"><span class="pre">__len__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/multi_modal_dataset.html#CustomMultiModalDataset.__len__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.__len__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.register_tokenizer"> +<span class="sig-name descname"><span class="pre">register_tokenizer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">image_processor</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/multi_modal_dataset.html#CustomMultiModalDataset.register_tokenizer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.register_tokenizer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.__getitem__"> +<span class="sig-name descname"><span class="pre">__getitem__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">i</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/multi_modal_dataset.html#CustomMultiModalDataset.__getitem__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.__getitem__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.datasets.multi_modal_dataset.preprocess_multimodal_llava"> +<span class="sig-prename descclassname"><span class="pre">lmflow.datasets.multi_modal_dataset.</span></span><span class="sig-name descname"><span class="pre">preprocess_multimodal_llava</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sources</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/multi_modal_dataset.html#preprocess_multimodal_llava"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.multi_modal_dataset.preprocess_multimodal_llava" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.datasets.multi_modal_dataset.tokenizer_image_token"> +<span class="sig-prename descclassname"><span class="pre">lmflow.datasets.multi_modal_dataset.</span></span><span class="sig-name descname"><span class="pre">tokenizer_image_token</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">prompt</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">image_token_index</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">IMAGE_TOKEN_INDEX</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">return_tensors</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/multi_modal_dataset.html#tokenizer_image_token"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.multi_modal_dataset.tokenizer_image_token" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_plain"> +<span class="sig-prename descclassname"><span class="pre">lmflow.datasets.multi_modal_dataset.</span></span><span class="sig-name descname"><span class="pre">preprocess_llama_from_llava_plain</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sources</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">has_image</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/multi_modal_dataset.html#preprocess_llama_from_llava_plain"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_plain" title="Link to this definition">#</a></dt> +<dd><p>This function just add the image in the front of text. +And don’t add any prompt. +Args:</p> +<blockquote> +<div><p>sources: The input data with text and image. +tokenizer: The tokenizer to process text. +has_image: Whether the input data has image.</p> +</div></blockquote> +<dl class="simple"> +<dt>Returns:</dt><dd><p>The input_ids and labels for the model.</p> +</dd> +</dl> +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_v1"> +<span class="sig-prename descclassname"><span class="pre">lmflow.datasets.multi_modal_dataset.</span></span><span class="sig-name descname"><span class="pre">preprocess_llama_from_llava_v1</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sources</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">has_image</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/multi_modal_dataset.html#preprocess_llama_from_llava_v1"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_v1" title="Link to this definition">#</a></dt> +<dd><p>This function add the prompt and then put the image after the prompt. +So it needs additional code to generate the target label. +Args:</p> +<blockquote> +<div><p>sources: The input data with text and image. +tokenizer: The tokenizer to process text. +has_image: Whether the input data has image.</p> +</div></blockquote> +<dl class="simple"> +<dt>Returns:</dt><dd><p>The input_ids and labels for the model.</p> +</dd> +</dl> +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.datasets.multi_modal_dataset.</span></span><span class="sig-name descname"><span class="pre">DataCollatorForSupervisedDataset</span></span><a class="reference internal" href="../../../../_modules/lmflow/datasets/multi_modal_dataset.html#DataCollatorForSupervisedDataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">object</span></code></p> +<p>Collate examples for supervised fine-tuning.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset.tokenizer"> +<span class="sig-name descname"><span class="pre">tokenizer</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">transformers.PreTrainedTokenizer</span></em><a class="reference internal" href="../../../../_modules/lmflow/datasets/multi_modal_dataset.html#DataCollatorForSupervisedDataset.tokenizer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset.tokenizer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset.__call__"> +<span class="sig-name descname"><span class="pre">__call__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">instances</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/datasets/multi_modal_dataset.html#DataCollatorForSupervisedDataset.__call__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset.__call__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../dataset/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.datasets.dataset</p> + </div> + </a> + <a class="right-next" + href="../../models/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset"><code class="docutils literal notranslate"><span class="pre">CustomMultiModalDataset</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.data_dict"><code class="docutils literal notranslate"><span class="pre">CustomMultiModalDataset.data_dict</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.data_args"><code class="docutils literal notranslate"><span class="pre">CustomMultiModalDataset.data_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.image_folder"><code class="docutils literal notranslate"><span class="pre">CustomMultiModalDataset.image_folder</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.__len__"><code class="docutils literal notranslate"><span class="pre">CustomMultiModalDataset.__len__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.register_tokenizer"><code class="docutils literal notranslate"><span class="pre">CustomMultiModalDataset.register_tokenizer()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.__getitem__"><code class="docutils literal notranslate"><span class="pre">CustomMultiModalDataset.__getitem__()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.multi_modal_dataset.preprocess_multimodal_llava"><code class="docutils literal notranslate"><span class="pre">preprocess_multimodal_llava()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.multi_modal_dataset.tokenizer_image_token"><code class="docutils literal notranslate"><span class="pre">tokenizer_image_token()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_plain"><code class="docutils literal notranslate"><span class="pre">preprocess_llama_from_llava_plain()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_v1"><code class="docutils literal notranslate"><span class="pre">preprocess_llama_from_llava_v1()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset"><code class="docutils literal notranslate"><span class="pre">DataCollatorForSupervisedDataset</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset.tokenizer"><code class="docutils literal notranslate"><span class="pre">DataCollatorForSupervisedDataset.tokenizer</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset.__call__"><code class="docutils literal notranslate"><span class="pre">DataCollatorForSupervisedDataset.__call__()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/datasets/multi_modal_dataset/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/index.html b/autoapi/lmflow/index.html new file mode 100644 index 000000000..feab97f65 --- /dev/null +++ b/autoapi/lmflow/index.html @@ -0,0 +1,674 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/index';</script> + <link rel="index" title="Index" href="../../genindex.html" /> + <link rel="search" title="Search" href="../../search.html" /> + <link rel="next" title="lmflow.args" href="args/index.html" /> + <link rel="prev" title="API Reference" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="current reference internal" href="#">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l2"><a class="reference internal" href="args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">API Reference</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow"> +<span id="lmflow"></span><h1>lmflow<a class="headerlink" href="#module-lmflow" title="Link to this heading">#</a></h1> +<section id="submodules"> +<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="args/index.html">lmflow.args</a></li> +<li class="toctree-l1"><a class="reference internal" href="datasets/index.html">lmflow.datasets</a></li> +<li class="toctree-l1"><a class="reference internal" href="models/index.html">lmflow.models</a></li> +<li class="toctree-l1"><a class="reference internal" href="optim/index.html">lmflow.optim</a></li> +<li class="toctree-l1"><a class="reference internal" href="pipeline/index.html">lmflow.pipeline</a></li> +<li class="toctree-l1"><a class="reference internal" href="tokenization/index.html">lmflow.tokenization</a></li> +<li class="toctree-l1"><a class="reference internal" href="utils/index.html">lmflow.utils</a></li> +<li class="toctree-l1"><a class="reference internal" href="version/index.html">lmflow.version</a></li> +</ul> +</div> +</section> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.internal_version" title="lmflow.internal_version"><code class="xref py py-obj docutils literal notranslate"><span class="pre">internal_version</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.__version__" title="lmflow.__version__"><code class="xref py py-obj docutils literal notranslate"><span class="pre">__version__</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="package-contents"> +<h2>Package Contents<a class="headerlink" href="#package-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.internal_version"> +<span class="sig-prename descclassname"><span class="pre">lmflow.</span></span><span class="sig-name descname"><span class="pre">internal_version</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'0.0.9'</span></em><a class="headerlink" href="#lmflow.internal_version" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.__version__"> +<span class="sig-prename descclassname"><span class="pre">lmflow.</span></span><span class="sig-name descname"><span class="pre">__version__</span></span><a class="reference internal" href="../../_modules/lmflow.html#__version__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.__version__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">API Reference</p> + </div> + </a> + <a class="right-next" + href="args/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.args</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#package-contents">Package Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.internal_version"><code class="docutils literal notranslate"><span class="pre">internal_version</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.__version__"><code class="docutils literal notranslate"><span class="pre">__version__</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../_sources/autoapi/lmflow/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/auto_model/index.html b/autoapi/lmflow/models/auto_model/index.html new file mode 100644 index 000000000..66bc5e68e --- /dev/null +++ b/autoapi/lmflow/models/auto_model/index.html @@ -0,0 +1,664 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.auto_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/auto_model/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.models.base_model" href="../base_model/index.html" /> + <link rel="prev" title="lmflow.models" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.auto_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.auto_model"> +<span id="lmflow-models-auto-model"></span><h1>lmflow.models.auto_model<a class="headerlink" href="#module-lmflow.models.auto_model" title="Link to this heading">#</a></h1> +<p>Automatically get correct model type.</p> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.auto_model.AutoModel" title="lmflow.models.auto_model.AutoModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">AutoModel</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.models.auto_model.AutoModel"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.models.auto_model.</span></span><span class="sig-name descname"><span class="pre">AutoModel</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/auto_model.html#AutoModel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.auto_model.AutoModel" title="Link to this definition">#</a></dt> +<dd><dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.auto_model.AutoModel.get_model"> +<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_model</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/auto_model.html#AutoModel.get_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.auto_model.AutoModel.get_model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models</p> + </div> + </a> + <a class="right-next" + href="../base_model/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.base_model</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.auto_model.AutoModel"><code class="docutils literal notranslate"><span class="pre">AutoModel</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.auto_model.AutoModel.get_model"><code class="docutils literal notranslate"><span class="pre">AutoModel.get_model()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/models/auto_model/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/base_model/index.html b/autoapi/lmflow/models/base_model/index.html new file mode 100644 index 000000000..941a94b06 --- /dev/null +++ b/autoapi/lmflow/models/base_model/index.html @@ -0,0 +1,659 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.base_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/base_model/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.models.decoder_model" href="../decoder_model/index.html" /> + <link rel="prev" title="lmflow.models.auto_model" href="../auto_model/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.base_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.base_model"> +<span id="lmflow-models-base-model"></span><h1>lmflow.models.base_model<a class="headerlink" href="#module-lmflow.models.base_model" title="Link to this heading">#</a></h1> +<p>Base model class.</p> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.base_model.BaseModel" title="lmflow.models.base_model.BaseModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">BaseModel</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.models.base_model.BaseModel"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.models.base_model.</span></span><span class="sig-name descname"><span class="pre">BaseModel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/base_model.html#BaseModel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.base_model.BaseModel" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">abc.ABC</span></code></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../auto_model/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.auto_model</p> + </div> + </a> + <a class="right-next" + href="../decoder_model/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.decoder_model</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.base_model.BaseModel"><code class="docutils literal notranslate"><span class="pre">BaseModel</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/models/base_model/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/decoder_model/index.html b/autoapi/lmflow/models/decoder_model/index.html new file mode 100644 index 000000000..5c00b985a --- /dev/null +++ b/autoapi/lmflow/models/decoder_model/index.html @@ -0,0 +1,668 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.decoder_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/decoder_model/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.models.encoder_decoder_model" href="../encoder_decoder_model/index.html" /> + <link rel="prev" title="lmflow.models.base_model" href="../base_model/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.decoder_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.decoder_model"> +<span id="lmflow-models-decoder-model"></span><h1>lmflow.models.decoder_model<a class="headerlink" href="#module-lmflow.models.decoder_model" title="Link to this heading">#</a></h1> +<p>A one-line summary of the module or program, terminated by a period.</p> +<p>Leave one blank line. The rest of this docstring should contain an +overall description of the module or program. Optionally, it may also +contain a brief description of exported classes and functions and/or usage +examples.</p> +<p>Typical usage example:</p> +<blockquote> +<div><p>foo = ClassFoo() +bar = foo.FunctionBar()</p> +</div></blockquote> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.decoder_model.DecoderModel" title="lmflow.models.decoder_model.DecoderModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DecoderModel</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.models.decoder_model.DecoderModel"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.models.decoder_model.</span></span><span class="sig-name descname"><span class="pre">DecoderModel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/decoder_model.html#DecoderModel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.decoder_model.DecoderModel" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base_model/index.html#lmflow.models.base_model.BaseModel" title="lmflow.models.base_model.BaseModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.models.base_model.BaseModel</span></code></a></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../base_model/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.base_model</p> + </div> + </a> + <a class="right-next" + href="../encoder_decoder_model/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.encoder_decoder_model</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.decoder_model.DecoderModel"><code class="docutils literal notranslate"><span class="pre">DecoderModel</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/models/decoder_model/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/encoder_decoder_model/index.html b/autoapi/lmflow/models/encoder_decoder_model/index.html new file mode 100644 index 000000000..89eeb444b --- /dev/null +++ b/autoapi/lmflow/models/encoder_decoder_model/index.html @@ -0,0 +1,668 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.encoder_decoder_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/encoder_decoder_model/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.models.hf_decoder_model" href="../hf_decoder_model/index.html" /> + <link rel="prev" title="lmflow.models.decoder_model" href="../decoder_model/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.encoder_decoder_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.encoder_decoder_model"> +<span id="lmflow-models-encoder-decoder-model"></span><h1>lmflow.models.encoder_decoder_model<a class="headerlink" href="#module-lmflow.models.encoder_decoder_model" title="Link to this heading">#</a></h1> +<p>A one-line summary of the module or program, terminated by a period.</p> +<p>Leave one blank line. The rest of this docstring should contain an +overall description of the module or program. Optionally, it may also +contain a brief description of exported classes and functions and/or usage +examples.</p> +<p>Typical usage example:</p> +<blockquote> +<div><p>foo = ClassFoo() +bar = foo.FunctionBar()</p> +</div></blockquote> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.encoder_decoder_model.EncoderDecoderModel" title="lmflow.models.encoder_decoder_model.EncoderDecoderModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">EncoderDecoderModel</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.models.encoder_decoder_model.EncoderDecoderModel"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.models.encoder_decoder_model.</span></span><span class="sig-name descname"><span class="pre">EncoderDecoderModel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/encoder_decoder_model.html#EncoderDecoderModel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.encoder_decoder_model.EncoderDecoderModel" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base_model/index.html#lmflow.models.base_model.BaseModel" title="lmflow.models.base_model.BaseModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.models.base_model.BaseModel</span></code></a></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../decoder_model/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.decoder_model</p> + </div> + </a> + <a class="right-next" + href="../hf_decoder_model/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.hf_decoder_model</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.encoder_decoder_model.EncoderDecoderModel"><code class="docutils literal notranslate"><span class="pre">EncoderDecoderModel</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/models/encoder_decoder_model/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/hf_decoder_model/index.html b/autoapi/lmflow/models/hf_decoder_model/index.html new file mode 100644 index 000000000..7346d4c71 --- /dev/null +++ b/autoapi/lmflow/models/hf_decoder_model/index.html @@ -0,0 +1,945 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.hf_decoder_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/hf_decoder_model/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.models.hf_encoder_decoder_model" href="../hf_encoder_decoder_model/index.html" /> + <link rel="prev" title="lmflow.models.encoder_decoder_model" href="../encoder_decoder_model/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.hf_decoder_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.hf_decoder_model"> +<span id="lmflow-models-hf-decoder-model"></span><h1>lmflow.models.hf_decoder_model<a class="headerlink" href="#module-lmflow.models.hf_decoder_model" title="Link to this heading">#</a></h1> +<p>This is a class called HFDecoderModel which is a wrapper around transformers model and +tokenizer classes. It has several methods such as __init__, tokenize, and train that are +used for training and fine-tuning the model. The __init__ method takes in several arguments +such as model_args, tune_strategy, and ds_config, which are used to load the pretrained +model and tokenizer, and initialize the training settings.</p> +<p>The tokenize method is used to tokenize the input text and return the input IDs and attention +masks that can be fed to the model for training or inference.</p> +<p>This class supports different tune_strategy options such as ‘normal’, ‘none’, ‘lora’, and +‘adapter’, which allow for different fine-tuning settings of the model. However, the ‘lora’ +and ‘adapter’ strategies are not yet implemented.</p> +<p>Overall, this class provides a convenient interface for loading and fine-tuning transformer +models and can be used for various NLP tasks such as language modeling, text classification, +and question answering.</p> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.hf_decoder_model.logger" title="lmflow.models.hf_decoder_model.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.hf_decoder_model.HFDecoderModel" title="lmflow.models.hf_decoder_model.HFDecoderModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">HFDecoderModel</span></code></a></p></td> +<td><p>Initializes a HFDecoderModel instance.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.models.hf_decoder_model.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.models.hf_decoder_model.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_decoder_model.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_decoder_model.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.models.hf_decoder_model.HFDecoderModel"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.models.hf_decoder_model.</span></span><span class="sig-name descname"><span class="pre">HFDecoderModel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tune_strategy</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'normal'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ds_config</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'gpu'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_accelerator</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_decoder_model.html#HFDecoderModel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_decoder_model.HFDecoderModel" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../decoder_model/index.html#lmflow.models.decoder_model.DecoderModel" title="lmflow.models.decoder_model.DecoderModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.models.decoder_model.DecoderModel</span></code></a>, <a class="reference internal" href="../hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin" title="lmflow.models.hf_model_mixin.HFModelMixin"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.models.hf_model_mixin.HFModelMixin</span></code></a>, <a class="reference internal" href="../interfaces/tunable/index.html#lmflow.models.interfaces.tunable.Tunable" title="lmflow.models.interfaces.tunable.Tunable"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.models.interfaces.tunable.Tunable</span></code></a></p> +<p>Initializes a HFDecoderModel instance.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model_args</strong></dt><dd><p>Model arguments such as model name, path, revision, etc.</p> +</dd> +<dt><strong>tune_strategy</strong><span class="classifier">str or none, default=”normal”.</span></dt><dd><p>A string representing the dataset backend. Defaults to “huggingface”.</p> +</dd> +<dt><strong>ds_config</strong></dt><dd><p>Deepspeed configuations.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_decoder_model.HFDecoderModel.tokenize"> +<span class="sig-name descname"><span class="pre">tokenize</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">add_special_tokens</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_decoder_model.html#HFDecoderModel.tokenize"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_decoder_model.HFDecoderModel.tokenize" title="Link to this definition">#</a></dt> +<dd><p>Tokenize the full dataset.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>dataset</strong><span class="classifier">lmflow.datasets.Dataset.</span></dt><dd></dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>tokenized_datasets</dt><dd><p>The tokenized dataset, without any leading or trailing special +tokens (normally they are Begin-Of-Sentence or End-Of-Sentence +tokens).</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_decoder_model.HFDecoderModel.encode"> +<span class="sig-name descname"><span class="pre">encode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_decoder_model.html#HFDecoderModel.encode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_decoder_model.HFDecoderModel.encode" title="Link to this definition">#</a></dt> +<dd><p>Perform encoding process of the tokenizer.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>inputs</strong><span class="classifier">str or list.</span></dt><dd><p>The text sequence.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>outputs</dt><dd><p>if string input,return the tokenized inputs. +“Hello,world!”-&gt; [101, 7592, 1010, 2088, 102] +if batch input,return {input_ids,attention_mask,token_type_ids} +[“Hello,world!”,”Hello!”]-&gt; {‘input_ids’: tensor([[ 101, 7592, 1010, 2088, 102],…),’attention_mask’: tensor([[1, 1, 1, 1, 1],[0,0,1,1,1]])}</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_decoder_model.HFDecoderModel.decode"> +<span class="sig-name descname"><span class="pre">decode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_decoder_model.html#HFDecoderModel.decode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_decoder_model.HFDecoderModel.decode" title="Link to this definition">#</a></dt> +<dd><p>Perform decoding process of the tokenizer.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>inputs</strong><span class="classifier">list or tensor.</span></dt><dd><p>The token sequence.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>outputs</dt><dd><p>The text decoded from the token inputs. +if batch input,return the list of text +[[101, 7592, 1010, 2088, 102],[101, 7592, 1010, 2088, 102]]-&gt; [“Hello,world!”,”Hello,world!” +if single input,return the text +[101, 7592, 1010, 2088, 102]-&gt; “Hello,world!”</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_decoder_model.HFDecoderModel.inference"> +<span class="sig-name descname"><span class="pre">inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inputs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">release_gpu</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_vllm</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_decoder_model.html#HFDecoderModel.inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_decoder_model.HFDecoderModel.inference" title="Link to this definition">#</a></dt> +<dd><p>Perform generation process of the model.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>inputs</strong></dt><dd><p>The sequence used as a prompt for the generation or as model inputs to the model. +When using vllm inference, this should be a string or a list of strings. +When using normal inference, this should be a tensor.</p> +</dd> +<dt><strong>release_gpu</strong><span class="classifier">bool, optional</span></dt><dd><p>Whether to release the GPU resource after inference, by default False.</p> +</dd> +<dt><strong>use_vllm</strong><span class="classifier">bool, optional</span></dt><dd><p>Whether to use VLLM for inference, by default False.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>outputs</dt><dd><p>The generated sequence output</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_decoder_model.HFDecoderModel.__inference"> +<span class="sig-name descname"><span class="pre">__inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inputs</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_decoder_model.html#HFDecoderModel.__inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_decoder_model.HFDecoderModel.__inference" title="Link to this definition">#</a></dt> +<dd><p>Perform generation process of the model.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>inputs</strong></dt><dd><p>The <strong>tokenized</strong> sequence used as a prompt for the generation or as model inputs to the model.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>outputs</dt><dd><p>The generated sequence output</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_decoder_model.HFDecoderModel.__vllm_inference"> +<span class="sig-name descname"><span class="pre">__vllm_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inputs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sampling_params</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">vllm.SamplingParams</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../../utils/data_utils/index.html#lmflow.utils.data_utils.VLLMInferenceResultWithInput" title="lmflow.utils.data_utils.VLLMInferenceResultWithInput"><span class="pre">lmflow.utils.data_utils.VLLMInferenceResultWithInput</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_decoder_model.html#HFDecoderModel.__vllm_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_decoder_model.HFDecoderModel.__vllm_inference" title="Link to this definition">#</a></dt> +<dd><p>Perform VLLM inference process of the model.</p> +<dl class="field-list"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>inputs</strong><span class="classifier">Union[str, List[str]]</span></dt><dd><p>Prompt(s), string or a list of strings.</p> +</dd> +<dt><strong>sampling_params</strong><span class="classifier">Optional[SamplingParams], optional</span></dt><dd><p>vllm SamplingParams object, by default None.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl> +<dt>List[VLLMInferenceResultWithInput]</dt><dd><p>Return a list of VLLMInferenceResultWithInput, where each +element contains the input prompt and the corresponding output.</p> +<p>When <cite>sampling_params.detokenize = True</cite>, the output would be a list of strings, +contains sampling_params.n samples for the corresponding prompt.</p> +<p>When <cite>sampling_params.detokenize = False</cite>, return a list of list of ints +(token ids, no decoding after generation).</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_decoder_model.HFDecoderModel.prepare_inputs_for_inference"> +<span class="sig-name descname"><span class="pre">prepare_inputs_for_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">apply_chat_template</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_distributed_inference</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_vllm</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">ray.data.Dataset</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_decoder_model.html#HFDecoderModel.prepare_inputs_for_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_decoder_model.HFDecoderModel.prepare_inputs_for_inference" title="Link to this definition">#</a></dt> +<dd><p>Prepare inputs for inference.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>dataset</strong><span class="classifier">lmflow.datasets.Dataset.</span></dt><dd><p>The dataset used for inference.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>outputs</dt><dd><p>The prepared inputs for inference.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_decoder_model.HFDecoderModel.__prepare_inputs_for_vllm_inference"> +<span class="sig-name descname"><span class="pre">__prepare_inputs_for_vllm_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">apply_chat_template</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_distributed_inference</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">ray.data.Dataset</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_decoder_model.html#HFDecoderModel.__prepare_inputs_for_vllm_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_decoder_model.HFDecoderModel.__prepare_inputs_for_vllm_inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_decoder_model.HFDecoderModel.__prepare_inputs_for_inference"> +<em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">__prepare_inputs_for_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_decoder_model.html#HFDecoderModel.__prepare_inputs_for_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_decoder_model.HFDecoderModel.__prepare_inputs_for_inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_decoder_model.HFDecoderModel.merge_lora_weights"> +<span class="sig-name descname"><span class="pre">merge_lora_weights</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_decoder_model.html#HFDecoderModel.merge_lora_weights"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_decoder_model.HFDecoderModel.merge_lora_weights" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_decoder_model.HFDecoderModel.get_peft_without_qlora"> +<span class="sig-name descname"><span class="pre">get_peft_without_qlora</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_decoder_model.html#HFDecoderModel.get_peft_without_qlora"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_decoder_model.HFDecoderModel.get_peft_without_qlora" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_decoder_model.HFDecoderModel.save"> +<span class="sig-name descname"><span class="pre">save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dir</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">save_full_model</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_decoder_model.html#HFDecoderModel.save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_decoder_model.HFDecoderModel.save" title="Link to this definition">#</a></dt> +<dd><p>Perform generation process of the model.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>dir</strong></dt><dd><p>The directory to save model and tokenizer</p> +</dd> +<dt><strong>save_full_model</strong><span class="classifier">Optional.</span></dt><dd><p>Whether to save full model.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>outputs</dt><dd><p>The generated sequence output</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../encoder_decoder_model/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.encoder_decoder_model</p> + </div> + </a> + <a class="right-next" + href="../hf_encoder_decoder_model/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.hf_encoder_decoder_model</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_decoder_model.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_decoder_model.HFDecoderModel"><code class="docutils literal notranslate"><span class="pre">HFDecoderModel</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_decoder_model.HFDecoderModel.tokenize"><code class="docutils literal notranslate"><span class="pre">HFDecoderModel.tokenize()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_decoder_model.HFDecoderModel.encode"><code class="docutils literal notranslate"><span class="pre">HFDecoderModel.encode()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_decoder_model.HFDecoderModel.decode"><code class="docutils literal notranslate"><span class="pre">HFDecoderModel.decode()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_decoder_model.HFDecoderModel.inference"><code class="docutils literal notranslate"><span class="pre">HFDecoderModel.inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_decoder_model.HFDecoderModel.__inference"><code class="docutils literal notranslate"><span class="pre">HFDecoderModel.__inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_decoder_model.HFDecoderModel.__vllm_inference"><code class="docutils literal notranslate"><span class="pre">HFDecoderModel.__vllm_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_decoder_model.HFDecoderModel.prepare_inputs_for_inference"><code class="docutils literal notranslate"><span class="pre">HFDecoderModel.prepare_inputs_for_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_decoder_model.HFDecoderModel.__prepare_inputs_for_vllm_inference"><code class="docutils literal notranslate"><span class="pre">HFDecoderModel.__prepare_inputs_for_vllm_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_decoder_model.HFDecoderModel.__prepare_inputs_for_inference"><code class="docutils literal notranslate"><span class="pre">HFDecoderModel.__prepare_inputs_for_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_decoder_model.HFDecoderModel.merge_lora_weights"><code class="docutils literal notranslate"><span class="pre">HFDecoderModel.merge_lora_weights()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_decoder_model.HFDecoderModel.get_peft_without_qlora"><code class="docutils literal notranslate"><span class="pre">HFDecoderModel.get_peft_without_qlora()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_decoder_model.HFDecoderModel.save"><code class="docutils literal notranslate"><span class="pre">HFDecoderModel.save()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/models/hf_decoder_model/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/hf_encoder_decoder_model/index.html b/autoapi/lmflow/models/hf_encoder_decoder_model/index.html new file mode 100644 index 000000000..494938c07 --- /dev/null +++ b/autoapi/lmflow/models/hf_encoder_decoder_model/index.html @@ -0,0 +1,864 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.hf_encoder_decoder_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/hf_encoder_decoder_model/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.models.hf_model_mixin" href="../hf_model_mixin/index.html" /> + <link rel="prev" title="lmflow.models.hf_decoder_model" href="../hf_decoder_model/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.hf_encoder_decoder_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.hf_encoder_decoder_model"> +<span id="lmflow-models-hf-encoder-decoder-model"></span><h1>lmflow.models.hf_encoder_decoder_model<a class="headerlink" href="#module-lmflow.models.hf_encoder_decoder_model" title="Link to this heading">#</a></h1> +<p>This is a class called HFDecoderModel which is a wrapper around transformers model and +tokenizer classes. It has several methods such as __init__, tokenize, and train that are +used for training and fine-tuning the model. The __init__ method takes in several arguments +such as model_args, tune_strategy, and ds_config, which are used to load the pretrained +model and tokenizer, and initialize the training settings.</p> +<p>The tokenize method is used to tokenize the input text and return the input IDs and attention +masks that can be fed to the model for training or inference.</p> +<p>This class supports different tune_strategy options such as ‘normal’, ‘none’, ‘lora’, and +‘adapter’, which allow for different fine-tuning settings of the model. However, the ‘lora’ +and ‘adapter’ strategies are not yet implemented.</p> +<p>Overall, this class provides a convenient interface for loading and fine-tuning transformer +models and can be used for various NLP tasks such as language modeling, text classification, +and question answering.</p> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.hf_encoder_decoder_model.logger" title="lmflow.models.hf_encoder_decoder_model.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel" title="lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">HFEncoderDecoderModel</span></code></a></p></td> +<td><p>Initializes a HFEncoderDecoderModel instance.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.models.hf_encoder_decoder_model.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.models.hf_encoder_decoder_model.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_encoder_decoder_model.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_encoder_decoder_model.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.models.hf_encoder_decoder_model.</span></span><span class="sig-name descname"><span class="pre">HFEncoderDecoderModel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tune_strategy</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'normal'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ds_config</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'gpu'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_accelerator</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">custom_model</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">with_deepspeed</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pipeline_args</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_encoder_decoder_model.html#HFEncoderDecoderModel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../encoder_decoder_model/index.html#lmflow.models.encoder_decoder_model.EncoderDecoderModel" title="lmflow.models.encoder_decoder_model.EncoderDecoderModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.models.encoder_decoder_model.EncoderDecoderModel</span></code></a>, <a class="reference internal" href="../interfaces/tunable/index.html#lmflow.models.interfaces.tunable.Tunable" title="lmflow.models.interfaces.tunable.Tunable"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.models.interfaces.tunable.Tunable</span></code></a></p> +<p>Initializes a HFEncoderDecoderModel instance.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model_args</strong></dt><dd><p>Model arguments such as model name, path, revision, etc.</p> +</dd> +<dt><strong>tune_strategy</strong><span class="classifier">str or none, default=”normal”.</span></dt><dd><p>A string representing the dataset backend. Defaults to “huggingface”.</p> +</dd> +<dt><strong>ds_config</strong></dt><dd><p>Deepspeed configuations.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.device"> +<span class="sig-name descname"><span class="pre">device</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'gpu'</span></em><a class="reference internal" href="../../../../_modules/lmflow/models/hf_encoder_decoder_model.html#HFEncoderDecoderModel.device"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.device" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.tokenize"> +<em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">tokenize</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_encoder_decoder_model.html#HFEncoderDecoderModel.tokenize"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.tokenize" title="Link to this definition">#</a></dt> +<dd><p>Tokenize the full dataset.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>dataset</strong></dt><dd><p>Text dataset.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>tokenized_datasets</dt><dd><p>The tokenized dataset.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.encode"> +<span class="sig-name descname"><span class="pre">encode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_encoder_decoder_model.html#HFEncoderDecoderModel.encode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.encode" title="Link to this definition">#</a></dt> +<dd><p>Perform encoding process of the tokenizer.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>inputs</strong><span class="classifier">str or list.</span></dt><dd><p>The text sequence.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>outputs</dt><dd><p>The tokenized inputs.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.decode"> +<span class="sig-name descname"><span class="pre">decode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_encoder_decoder_model.html#HFEncoderDecoderModel.decode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.decode" title="Link to this definition">#</a></dt> +<dd><p>Perform decoding process of the tokenizer.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>inputs</strong><span class="classifier">list.</span></dt><dd><p>The token sequence.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>outputs</dt><dd><p>The text decoded from the token inputs.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.inference"> +<span class="sig-name descname"><span class="pre">inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inputs</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_encoder_decoder_model.html#HFEncoderDecoderModel.inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.inference" title="Link to this definition">#</a></dt> +<dd><p>Perform generation process of the model.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>inputs</strong></dt><dd><p>The sequence used as a prompt for the generation or as model inputs to the model.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>outputs</dt><dd><p>The generated sequence output</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.merge_lora_weights"> +<span class="sig-name descname"><span class="pre">merge_lora_weights</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_encoder_decoder_model.html#HFEncoderDecoderModel.merge_lora_weights"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.merge_lora_weights" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.save"> +<span class="sig-name descname"><span class="pre">save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dir</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">save_full_model</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_encoder_decoder_model.html#HFEncoderDecoderModel.save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.save" title="Link to this definition">#</a></dt> +<dd><p>Perform generation process of the model.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>dir</strong></dt><dd><p>The directory to save model and tokenizer</p> +</dd> +<dt><strong>save_full_model</strong><span class="classifier">Optional.</span></dt><dd><p>Whether to save full model.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>outputs</dt><dd><p>The generated sequence output</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_max_length"> +<span class="sig-name descname"><span class="pre">get_max_length</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_encoder_decoder_model.html#HFEncoderDecoderModel.get_max_length"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_max_length" title="Link to this definition">#</a></dt> +<dd><p>Return max acceptable input length in terms of tokens.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_tokenizer"> +<span class="sig-name descname"><span class="pre">get_tokenizer</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_encoder_decoder_model.html#HFEncoderDecoderModel.get_tokenizer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_tokenizer" title="Link to this definition">#</a></dt> +<dd><p>Return the tokenizer of the model.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_backend_model"> +<span class="sig-name descname"><span class="pre">get_backend_model</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_encoder_decoder_model.html#HFEncoderDecoderModel.get_backend_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_backend_model" title="Link to this definition">#</a></dt> +<dd><p>Return the backend model.</p> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../hf_decoder_model/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.hf_decoder_model</p> + </div> + </a> + <a class="right-next" + href="../hf_model_mixin/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.hf_model_mixin</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_encoder_decoder_model.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel"><code class="docutils literal notranslate"><span class="pre">HFEncoderDecoderModel</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.device"><code class="docutils literal notranslate"><span class="pre">HFEncoderDecoderModel.device</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.tokenize"><code class="docutils literal notranslate"><span class="pre">HFEncoderDecoderModel.tokenize()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.encode"><code class="docutils literal notranslate"><span class="pre">HFEncoderDecoderModel.encode()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.decode"><code class="docutils literal notranslate"><span class="pre">HFEncoderDecoderModel.decode()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.inference"><code class="docutils literal notranslate"><span class="pre">HFEncoderDecoderModel.inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.merge_lora_weights"><code class="docutils literal notranslate"><span class="pre">HFEncoderDecoderModel.merge_lora_weights()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.save"><code class="docutils literal notranslate"><span class="pre">HFEncoderDecoderModel.save()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_max_length"><code class="docutils literal notranslate"><span class="pre">HFEncoderDecoderModel.get_max_length()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_tokenizer"><code class="docutils literal notranslate"><span class="pre">HFEncoderDecoderModel.get_tokenizer()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_backend_model"><code class="docutils literal notranslate"><span class="pre">HFEncoderDecoderModel.get_backend_model()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/models/hf_encoder_decoder_model/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/hf_model_mixin/index.html b/autoapi/lmflow/models/hf_model_mixin/index.html new file mode 100644 index 000000000..bff55e9d7 --- /dev/null +++ b/autoapi/lmflow/models/hf_model_mixin/index.html @@ -0,0 +1,901 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.hf_model_mixin &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/hf_model_mixin/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.models.hf_text_regression_model" href="../hf_text_regression_model/index.html" /> + <link rel="prev" title="lmflow.models.hf_encoder_decoder_model" href="../hf_encoder_decoder_model/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.hf_model_mixin</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.hf_model_mixin"> +<span id="lmflow-models-hf-model-mixin"></span><h1>lmflow.models.hf_model_mixin<a class="headerlink" href="#module-lmflow.models.hf_model_mixin" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.hf_model_mixin.logger" title="lmflow.models.hf_model_mixin.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.models.hf_model_mixin.HF_AUTOMODEL_MAPPING" title="lmflow.models.hf_model_mixin.HF_AUTOMODEL_MAPPING"><code class="xref py py-obj docutils literal notranslate"><span class="pre">HF_AUTOMODEL_MAPPING</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.hf_model_mixin.HF_AUTOMODEL_TYPE" title="lmflow.models.hf_model_mixin.HF_AUTOMODEL_TYPE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">HF_AUTOMODEL_TYPE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.models.hf_model_mixin.LORA_TARGET_MODULES_MAPPING" title="lmflow.models.hf_model_mixin.LORA_TARGET_MODULES_MAPPING"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LORA_TARGET_MODULES_MAPPING</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.hf_model_mixin.HFModelMixin" title="lmflow.models.hf_model_mixin.HFModelMixin"><code class="xref py py-obj docutils literal notranslate"><span class="pre">HFModelMixin</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.models.hf_model_mixin.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HF_AUTOMODEL_MAPPING"> +<span class="sig-prename descclassname"><span class="pre">lmflow.models.hf_model_mixin.</span></span><span class="sig-name descname"><span class="pre">HF_AUTOMODEL_MAPPING</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HF_AUTOMODEL_MAPPING"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HF_AUTOMODEL_MAPPING" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HF_AUTOMODEL_TYPE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.models.hf_model_mixin.</span></span><span class="sig-name descname"><span class="pre">HF_AUTOMODEL_TYPE</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HF_AUTOMODEL_TYPE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HF_AUTOMODEL_TYPE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.LORA_TARGET_MODULES_MAPPING"> +<span class="sig-prename descclassname"><span class="pre">lmflow.models.hf_model_mixin.</span></span><span class="sig-name descname"><span class="pre">LORA_TARGET_MODULES_MAPPING</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#LORA_TARGET_MODULES_MAPPING"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.LORA_TARGET_MODULES_MAPPING" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.models.hf_model_mixin.</span></span><span class="sig-name descname"><span class="pre">HFModelMixin</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">do_train</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ds_config</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'gpu'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_accelerator</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hf_auto_model_additional_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base_model/index.html#lmflow.models.base_model.BaseModel" title="lmflow.models.base_model.BaseModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.models.base_model.BaseModel</span></code></a></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.device"> +<span class="sig-name descname"><span class="pre">device</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'gpu'</span></em><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.device"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.device" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.model_args"> +<span class="sig-name descname"><span class="pre">model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.hf_auto_model"> +<span class="sig-name descname"><span class="pre">hf_auto_model</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.hf_auto_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.hf_auto_model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.use_accelerator"> +<span class="sig-name descname"><span class="pre">use_accelerator</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.use_accelerator"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.use_accelerator" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.ds_config"> +<span class="sig-name descname"><span class="pre">ds_config</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.ds_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.ds_config" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.do_train"> +<span class="sig-name descname"><span class="pre">do_train</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.do_train"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.do_train" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.tokenizer"> +<span class="sig-name descname"><span class="pre">tokenizer</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.tokenizer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.tokenizer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.torch_dtype"> +<span class="sig-name descname"><span class="pre">torch_dtype</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.torch_dtype"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.torch_dtype" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.hf_model_config"> +<span class="sig-name descname"><span class="pre">hf_model_config</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.hf_model_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.hf_model_config" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.quant_config"> +<span class="sig-name descname"><span class="pre">quant_config</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.quant_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.quant_config" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.peft_config"> +<span class="sig-name descname"><span class="pre">peft_config</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.peft_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.peft_config" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin._activated"> +<span class="sig-name descname"><span class="pre">_activated</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin._activated"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin._activated" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.__prepare_tokenizer"> +<span class="sig-name descname"><span class="pre">__prepare_tokenizer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">transformers.PreTrainedTokenizer</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">transformers.PreTrainedTokenizerFast</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.__prepare_tokenizer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_tokenizer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.__prepare_dtype"> +<span class="sig-name descname"><span class="pre">__prepare_dtype</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">torch.dtype</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.__prepare_dtype"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_dtype" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_config"> +<span class="sig-name descname"><span class="pre">__prepare_model_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">hf_auto_model_additional_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.__prepare_model_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_config" title="Link to this definition">#</a></dt> +<dd><p>Prepare model configuration for hf auto register, +Parameters +———- +model_args : ModelArguments</p> +<blockquote> +<div><p>LMFlow model arguments.</p> +</div></blockquote> +<dl class="simple"> +<dt>hf_auto_model_additional_args<span class="classifier">Optional[Dict], optional</span></dt><dd><p>Special configurations such as <cite>num_labels</cite> in <cite>AutoModelForSequenceClassification</cite> +(commonly used in reward modeling) will not preset in __prepare_model_config, +so it should be passed in hf_auto_model_additional_args.</p> +</dd> +</dl> +<section id="returns"> +<h3>Returns<a class="headerlink" href="#returns" title="Link to this heading">#</a></h3> +<dl class="simple"> +<dt>config<span class="classifier">ModelConfig</span></dt><dd><p>hf model config.</p> +</dd> +</dl> +</section> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.__prepare_quant_config"> +<span class="sig-name descname"><span class="pre">__prepare_quant_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.__prepare_quant_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_quant_config" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.__prepare_peft_config"> +<span class="sig-name descname"><span class="pre">__prepare_peft_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.__prepare_peft_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_peft_config" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.__model_module_inject"> +<span class="sig-name descname"><span class="pre">__model_module_inject</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.__model_module_inject"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.__model_module_inject" title="Link to this definition">#</a></dt> +<dd><p>Override some model modules with custom implementations.</p> +<p>Current implementations: +- Position interpolation (model_args.do_rope_scaling):</p> +<blockquote> +<div><p>replace llama embeddings with condense embeddings.</p> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_training"> +<span class="sig-name descname"><span class="pre">__prepare_model_for_training</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">hf_auto_model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">HF_AUTOMODEL_TYPE</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.__prepare_model_for_training"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_training" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_inference"> +<span class="sig-name descname"><span class="pre">__prepare_model_for_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">hf_auto_model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">HF_AUTOMODEL_TYPE</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_accelerator</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ds_config</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.__prepare_model_for_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_vllm_inference"> +<span class="sig-name descname"><span class="pre">__prepare_model_for_vllm_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">vllm_gpu_memory_utilization</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vllm_tensor_parallel_size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.__prepare_model_for_vllm_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_vllm_inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_post_process"> +<span class="sig-name descname"><span class="pre">__prepare_model_post_process</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.__prepare_model_post_process"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_post_process" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.activate_model_for_inference"> +<span class="sig-name descname"><span class="pre">activate_model_for_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">use_vllm</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.activate_model_for_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.activate_model_for_inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.deactivate_model_for_inference"> +<span class="sig-name descname"><span class="pre">deactivate_model_for_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">use_vllm</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.deactivate_model_for_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.deactivate_model_for_inference" title="Link to this definition">#</a></dt> +<dd><p>Deactivate the model and release the resources.</p> +<p>NOTE: Currently, VLLM doesn’t have an official way to do this, and the +implementation below cannot release all gpu resources by our observation. +Thus this method is just a placeholder for future implementation. See: +[Github issue](<a class="github reference external" href="https://github.com/vllm-project/vllm/issues/1908">vllm-project/vllm#1908</a>)</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.get_max_length"> +<span class="sig-name descname"><span class="pre">get_max_length</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.get_max_length"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.get_max_length" title="Link to this definition">#</a></dt> +<dd><p>Return max acceptable input length in terms of tokens.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.get_tokenizer"> +<span class="sig-name descname"><span class="pre">get_tokenizer</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.get_tokenizer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.get_tokenizer" title="Link to this definition">#</a></dt> +<dd><p>Return the tokenizer of the model.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_model_mixin.HFModelMixin.get_backend_model"> +<span class="sig-name descname"><span class="pre">get_backend_model</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_model_mixin.html#HFModelMixin.get_backend_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_model_mixin.HFModelMixin.get_backend_model" title="Link to this definition">#</a></dt> +<dd><p>Return the backend model.</p> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../hf_encoder_decoder_model/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.hf_encoder_decoder_model</p> + </div> + </a> + <a class="right-next" + href="../hf_text_regression_model/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.hf_text_regression_model</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HF_AUTOMODEL_MAPPING"><code class="docutils literal notranslate"><span class="pre">HF_AUTOMODEL_MAPPING</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HF_AUTOMODEL_TYPE"><code class="docutils literal notranslate"><span class="pre">HF_AUTOMODEL_TYPE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.LORA_TARGET_MODULES_MAPPING"><code class="docutils literal notranslate"><span class="pre">LORA_TARGET_MODULES_MAPPING</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin"><code class="docutils literal notranslate"><span class="pre">HFModelMixin</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.device"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.device</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.model_args"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.hf_auto_model"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.hf_auto_model</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.use_accelerator"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.use_accelerator</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.ds_config"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.ds_config</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.do_train"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.do_train</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.tokenizer"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.tokenizer</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.torch_dtype"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.torch_dtype</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.hf_model_config"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.hf_model_config</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.quant_config"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.quant_config</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.peft_config"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.peft_config</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin._activated"><code class="docutils literal notranslate"><span class="pre">HFModelMixin._activated</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_tokenizer"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.__prepare_tokenizer()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_dtype"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.__prepare_dtype()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_config"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.__prepare_model_config()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_quant_config"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.__prepare_quant_config()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_peft_config"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.__prepare_peft_config()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.__model_module_inject"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.__model_module_inject()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_training"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.__prepare_model_for_training()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_inference"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.__prepare_model_for_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_vllm_inference"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.__prepare_model_for_vllm_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_post_process"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.__prepare_model_post_process()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.activate_model_for_inference"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.activate_model_for_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.deactivate_model_for_inference"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.deactivate_model_for_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.get_max_length"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.get_max_length()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.get_tokenizer"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.get_tokenizer()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_model_mixin.HFModelMixin.get_backend_model"><code class="docutils literal notranslate"><span class="pre">HFModelMixin.get_backend_model()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/models/hf_model_mixin/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/hf_text_regression_model/index.html b/autoapi/lmflow/models/hf_text_regression_model/index.html new file mode 100644 index 000000000..3c841edd2 --- /dev/null +++ b/autoapi/lmflow/models/hf_text_regression_model/index.html @@ -0,0 +1,825 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.hf_text_regression_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/hf_text_regression_model/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.models.interfaces" href="../interfaces/index.html" /> + <link rel="prev" title="lmflow.models.hf_model_mixin" href="../hf_model_mixin/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.hf_text_regression_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.hf_text_regression_model"> +<span id="lmflow-models-hf-text-regression-model"></span><h1>lmflow.models.hf_text_regression_model<a class="headerlink" href="#module-lmflow.models.hf_text_regression_model" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.hf_text_regression_model.logger" title="lmflow.models.hf_text_regression_model.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel" title="lmflow.models.hf_text_regression_model.HFTextRegressionModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">HFTextRegressionModel</span></code></a></p></td> +<td><p>Initializes a HFTextRegressionModel instance.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.models.hf_text_regression_model.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.models.hf_text_regression_model.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_text_regression_model.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_text_regression_model.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.models.hf_text_regression_model.HFTextRegressionModel"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.models.hf_text_regression_model.</span></span><span class="sig-name descname"><span class="pre">HFTextRegressionModel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">tune_strategy</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'normal'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ds_config</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'gpu'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_accelerator</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_text_regression_model.html#HFTextRegressionModel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../text_regression_model/index.html#lmflow.models.text_regression_model.TextRegressionModel" title="lmflow.models.text_regression_model.TextRegressionModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.models.text_regression_model.TextRegressionModel</span></code></a>, <a class="reference internal" href="../hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin" title="lmflow.models.hf_model_mixin.HFModelMixin"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.models.hf_model_mixin.HFModelMixin</span></code></a>, <a class="reference internal" href="../interfaces/tunable/index.html#lmflow.models.interfaces.tunable.Tunable" title="lmflow.models.interfaces.tunable.Tunable"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.models.interfaces.tunable.Tunable</span></code></a></p> +<p>Initializes a HFTextRegressionModel instance.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model_args</strong></dt><dd><p>Model arguments such as model name, path, revision, etc.</p> +</dd> +<dt><strong>tune_strategy</strong><span class="classifier">str or none, default=”normal”.</span></dt><dd><p>A string representing the dataset backend. Defaults to “huggingface”.</p> +</dd> +<dt><strong>ds_config</strong></dt><dd><p>Deepspeed configuations.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_text_regression_model.HFTextRegressionModel.tokenize"> +<span class="sig-name descname"><span class="pre">tokenize</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">add_special_tokens</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_text_regression_model.html#HFTextRegressionModel.tokenize"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.tokenize" title="Link to this definition">#</a></dt> +<dd><p>Tokenize the full dataset.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>dataset</strong><span class="classifier">lmflow.datasets.Dataset.</span></dt><dd></dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>tokenized_datasets</dt><dd><p>The tokenized dataset, without any leading or trailing special +tokens (normally they are Begin-Of-Sentence or End-Of-Sentence +tokens).</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_text_regression_model.HFTextRegressionModel.inference"> +<span class="sig-name descname"><span class="pre">inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inputs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">release_gpu</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_vllm</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">float</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">transformers.modeling_outputs.SequenceClassifierOutputWithPast</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_text_regression_model.html#HFTextRegressionModel.inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.inference" title="Link to this definition">#</a></dt> +<dd><p>Perform generation process of the model.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>inputs</strong></dt><dd><p>The sequence used as a prompt for the generation or as model inputs to the model. +When using vllm inference, this should be a string or a list of strings. +When using normal inference, this should be a tensor.</p> +</dd> +<dt><strong>release_gpu</strong><span class="classifier">bool, optional</span></dt><dd><p>Whether to release the GPU resource after inference, by default False.</p> +</dd> +<dt><strong>use_vllm</strong><span class="classifier">bool, optional</span></dt><dd><p>Whether to use VLLM for inference, by default False.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>outputs</dt><dd><p>The generated sequence output</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_text_regression_model.HFTextRegressionModel.__inference"> +<span class="sig-name descname"><span class="pre">__inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inputs</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_text_regression_model.html#HFTextRegressionModel.__inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.__inference" title="Link to this definition">#</a></dt> +<dd><p>Perform generation process of the model.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>inputs</strong></dt><dd><p>The <strong>tokenized</strong> sequence used as a prompt for the generation or as model inputs to the model.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>outputs</dt><dd><p>The generated sequence output</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_text_regression_model.HFTextRegressionModel.__vllm_inference"> +<em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">__vllm_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inputs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sampling_params</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">vllm.SamplingParams</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_text_regression_model.html#HFTextRegressionModel.__vllm_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.__vllm_inference" title="Link to this definition">#</a></dt> +<dd><p>Perform VLLM inference process of the model.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>inputs</strong><span class="classifier">Union[str, List[str]]</span></dt><dd><p>Prompt(s), string or a list of strings.</p> +</dd> +<dt><strong>sampling_params</strong><span class="classifier">Optional[SamplingParams], optional</span></dt><dd><p>vllm SamplingParams object, by default None.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"></dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_text_regression_model.HFTextRegressionModel.prepare_inputs_for_inference"> +<span class="sig-name descname"><span class="pre">prepare_inputs_for_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_distributed_inference</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_vllm</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">ray.data.Dataset</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_text_regression_model.html#HFTextRegressionModel.prepare_inputs_for_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.prepare_inputs_for_inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_text_regression_model.HFTextRegressionModel.postprocess_inference_outputs"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">postprocess_inference_outputs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">scores</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">float</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">float</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_text_regression_model.html#HFTextRegressionModel.postprocess_inference_outputs"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.postprocess_inference_outputs" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_text_regression_model.HFTextRegressionModel.postprocess_distributed_inference_outputs"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">postprocess_distributed_inference_outputs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">inference_result</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../../utils/data_utils/index.html#lmflow.utils.data_utils.RewardModelInferenceResultWithInput" title="lmflow.utils.data_utils.RewardModelInferenceResultWithInput"><span class="pre">lmflow.utils.data_utils.RewardModelInferenceResultWithInput</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_text_regression_model.html#HFTextRegressionModel.postprocess_distributed_inference_outputs"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.postprocess_distributed_inference_outputs" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.hf_text_regression_model.HFTextRegressionModel.save"> +<span class="sig-name descname"><span class="pre">save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dir</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/hf_text_regression_model.html#HFTextRegressionModel.save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.save" title="Link to this definition">#</a></dt> +<dd><p>Perform generation process of the model.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>dir</strong></dt><dd><p>The directory to save model and tokenizer</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../hf_model_mixin/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.hf_model_mixin</p> + </div> + </a> + <a class="right-next" + href="../interfaces/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.interfaces</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_text_regression_model.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel"><code class="docutils literal notranslate"><span class="pre">HFTextRegressionModel</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.tokenize"><code class="docutils literal notranslate"><span class="pre">HFTextRegressionModel.tokenize()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.inference"><code class="docutils literal notranslate"><span class="pre">HFTextRegressionModel.inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.__inference"><code class="docutils literal notranslate"><span class="pre">HFTextRegressionModel.__inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.__vllm_inference"><code class="docutils literal notranslate"><span class="pre">HFTextRegressionModel.__vllm_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.prepare_inputs_for_inference"><code class="docutils literal notranslate"><span class="pre">HFTextRegressionModel.prepare_inputs_for_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.postprocess_inference_outputs"><code class="docutils literal notranslate"><span class="pre">HFTextRegressionModel.postprocess_inference_outputs()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.postprocess_distributed_inference_outputs"><code class="docutils literal notranslate"><span class="pre">HFTextRegressionModel.postprocess_distributed_inference_outputs()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.hf_text_regression_model.HFTextRegressionModel.save"><code class="docutils literal notranslate"><span class="pre">HFTextRegressionModel.save()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/models/hf_text_regression_model/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/index.html b/autoapi/lmflow/models/index.html new file mode 100644 index 000000000..9f52028bd --- /dev/null +++ b/autoapi/lmflow/models/index.html @@ -0,0 +1,649 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/index';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <link rel="next" title="lmflow.models.auto_model" href="auto_model/index.html" /> + <link rel="prev" title="lmflow.datasets.multi_modal_dataset" href="../datasets/multi_modal_dataset/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="current reference internal" href="#">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models"> +<span id="lmflow-models"></span><h1>lmflow.models<a class="headerlink" href="#module-lmflow.models" title="Link to this heading">#</a></h1> +<section id="submodules"> +<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l1"><a class="reference internal" href="base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l1"><a class="reference internal" href="decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l1"><a class="reference internal" href="encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l1"><a class="reference internal" href="hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l1"><a class="reference internal" href="hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l1"><a class="reference internal" href="hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l1"><a class="reference internal" href="hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l1"><a class="reference internal" href="interfaces/index.html">lmflow.models.interfaces</a></li> +<li class="toctree-l1"><a class="reference internal" href="regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l1"><a class="reference internal" href="text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l1"><a class="reference internal" href="vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l1"><a class="reference internal" href="vision_encoder/index.html">lmflow.models.vision_encoder</a></li> +</ul> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../datasets/multi_modal_dataset/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.datasets.multi_modal_dataset</p> + </div> + </a> + <a class="right-next" + href="auto_model/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.auto_model</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../_sources/autoapi/lmflow/models/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/interfaces/index.html b/autoapi/lmflow/models/interfaces/index.html new file mode 100644 index 000000000..ca4d1f342 --- /dev/null +++ b/autoapi/lmflow/models/interfaces/index.html @@ -0,0 +1,640 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.interfaces &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/interfaces/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.models.interfaces.tunable" href="tunable/index.html" /> + <link rel="prev" title="lmflow.models.hf_text_regression_model" href="../hf_text_regression_model/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 current active has-children"><a class="current reference internal" href="#">lmflow.models.interfaces</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.interfaces</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.interfaces"> +<span id="lmflow-models-interfaces"></span><h1>lmflow.models.interfaces<a class="headerlink" href="#module-lmflow.models.interfaces" title="Link to this heading">#</a></h1> +<section id="submodules"> +<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../hf_text_regression_model/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.hf_text_regression_model</p> + </div> + </a> + <a class="right-next" + href="tunable/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.interfaces.tunable</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/models/interfaces/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/interfaces/tunable/index.html b/autoapi/lmflow/models/interfaces/tunable/index.html new file mode 100644 index 000000000..0d9633ea0 --- /dev/null +++ b/autoapi/lmflow/models/interfaces/tunable/index.html @@ -0,0 +1,662 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.interfaces.tunable &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/interfaces/tunable/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.models.regression_model" href="../../regression_model/index.html" /> + <link rel="prev" title="lmflow.models.interfaces" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.models.interfaces</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.models</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models.interfaces</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.interfaces.tunable</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.interfaces.tunable"> +<span id="lmflow-models-interfaces-tunable"></span><h1>lmflow.models.interfaces.tunable<a class="headerlink" href="#module-lmflow.models.interfaces.tunable" title="Link to this heading">#</a></h1> +<p>Tunable class</p> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.interfaces.tunable.Tunable" title="lmflow.models.interfaces.tunable.Tunable"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Tunable</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.models.interfaces.tunable.Tunable"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.models.interfaces.tunable.</span></span><span class="sig-name descname"><span class="pre">Tunable</span></span><a class="reference internal" href="../../../../../_modules/lmflow/models/interfaces/tunable.html#Tunable"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.interfaces.tunable.Tunable" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">abc.ABC</span></code></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.interfaces</p> + </div> + </a> + <a class="right-next" + href="../../regression_model/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.regression_model</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.interfaces.tunable.Tunable"><code class="docutils literal notranslate"><span class="pre">Tunable</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/models/interfaces/tunable/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/regression_model/index.html b/autoapi/lmflow/models/regression_model/index.html new file mode 100644 index 000000000..4075a49f1 --- /dev/null +++ b/autoapi/lmflow/models/regression_model/index.html @@ -0,0 +1,659 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.regression_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/regression_model/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.models.text_regression_model" href="../text_regression_model/index.html" /> + <link rel="prev" title="lmflow.models.interfaces.tunable" href="../interfaces/tunable/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.regression_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.regression_model"> +<span id="lmflow-models-regression-model"></span><h1>lmflow.models.regression_model<a class="headerlink" href="#module-lmflow.models.regression_model" title="Link to this heading">#</a></h1> +<p>General regression model.</p> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.regression_model.RegressionModel" title="lmflow.models.regression_model.RegressionModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RegressionModel</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.models.regression_model.RegressionModel"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.models.regression_model.</span></span><span class="sig-name descname"><span class="pre">RegressionModel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/regression_model.html#RegressionModel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.regression_model.RegressionModel" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base_model/index.html#lmflow.models.base_model.BaseModel" title="lmflow.models.base_model.BaseModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.models.base_model.BaseModel</span></code></a></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../interfaces/tunable/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.interfaces.tunable</p> + </div> + </a> + <a class="right-next" + href="../text_regression_model/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.text_regression_model</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.regression_model.RegressionModel"><code class="docutils literal notranslate"><span class="pre">RegressionModel</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/models/regression_model/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/text_regression_model/index.html b/autoapi/lmflow/models/text_regression_model/index.html new file mode 100644 index 000000000..471a1c04b --- /dev/null +++ b/autoapi/lmflow/models/text_regression_model/index.html @@ -0,0 +1,697 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.text_regression_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/text_regression_model/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.models.vision2seq_model" href="../vision2seq_model/index.html" /> + <link rel="prev" title="lmflow.models.regression_model" href="../regression_model/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.text_regression_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.text_regression_model"> +<span id="lmflow-models-text-regression-model"></span><h1>lmflow.models.text_regression_model<a class="headerlink" href="#module-lmflow.models.text_regression_model" title="Link to this heading">#</a></h1> +<p>A model maps “text_only” data to float.</p> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.text_regression_model.TextRegressionModel" title="lmflow.models.text_regression_model.TextRegressionModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TextRegressionModel</span></code></a></p></td> +<td><p>Initializes a TextRegressionModel instance.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.models.text_regression_model.TextRegressionModel"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.models.text_regression_model.</span></span><span class="sig-name descname"><span class="pre">TextRegressionModel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/text_regression_model.html#TextRegressionModel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.text_regression_model.TextRegressionModel" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../regression_model/index.html#lmflow.models.regression_model.RegressionModel" title="lmflow.models.regression_model.RegressionModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.models.regression_model.RegressionModel</span></code></a></p> +<p>Initializes a TextRegressionModel instance.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model_args</strong></dt><dd><p>Model arguments such as model name, path, revision, etc.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.text_regression_model.TextRegressionModel.inference_func"> +<span class="sig-name descname"><span class="pre">inference_func</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../_modules/lmflow/models/text_regression_model.html#TextRegressionModel.inference_func"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.text_regression_model.TextRegressionModel.inference_func" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.text_regression_model.TextRegressionModel.register_inference_function"> +<span class="sig-name descname"><span class="pre">register_inference_function</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inference_func</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/text_regression_model.html#TextRegressionModel.register_inference_function"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.text_regression_model.TextRegressionModel.register_inference_function" title="Link to this definition">#</a></dt> +<dd><p>Registers a regression function.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.text_regression_model.TextRegressionModel.inference"> +<span class="sig-name descname"><span class="pre">inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inputs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/text_regression_model.html#TextRegressionModel.inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.text_regression_model.TextRegressionModel.inference" title="Link to this definition">#</a></dt> +<dd><p>Gets regression results of a given dataset.</p> +<dl class="field-list simple"> +<dt class="field-odd">Inputs<span class="colon">:</span></dt> +<dd class="field-odd"><p>Dataset object, only accept type “text_only”.</p> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../regression_model/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.regression_model</p> + </div> + </a> + <a class="right-next" + href="../vision2seq_model/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.vision2seq_model</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.text_regression_model.TextRegressionModel"><code class="docutils literal notranslate"><span class="pre">TextRegressionModel</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.text_regression_model.TextRegressionModel.inference_func"><code class="docutils literal notranslate"><span class="pre">TextRegressionModel.inference_func</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.text_regression_model.TextRegressionModel.register_inference_function"><code class="docutils literal notranslate"><span class="pre">TextRegressionModel.register_inference_function()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.text_regression_model.TextRegressionModel.inference"><code class="docutils literal notranslate"><span class="pre">TextRegressionModel.inference()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/models/text_regression_model/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/vision2seq_model/index.html b/autoapi/lmflow/models/vision2seq_model/index.html new file mode 100644 index 000000000..80a54b4b4 --- /dev/null +++ b/autoapi/lmflow/models/vision2seq_model/index.html @@ -0,0 +1,798 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.vision2seq_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/vision2seq_model/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.models.vision_encoder" href="../vision_encoder/index.html" /> + <link rel="prev" title="lmflow.models.text_regression_model" href="../text_regression_model/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.vision2seq_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.vision2seq_model"> +<span id="lmflow-models-vision2seq-model"></span><h1>lmflow.models.vision2seq_model<a class="headerlink" href="#module-lmflow.models.vision2seq_model" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel" title="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.models.vision2seq_model.</span></span><span class="sig-name descname"><span class="pre">CustomAutoVision2SeqModel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">config</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.Blip2Config</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">image_encoder_name_or_path</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">qformer_name_or_path</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">language_model_name_or_path</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">low_resource</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">transformers.Blip2ForConditionalGeneration</span></code>, <a class="reference internal" href="../base_model/index.html#lmflow.models.base_model.BaseModel" title="lmflow.models.base_model.BaseModel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.models.base_model.BaseModel</span></code></a></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.custom_vision_model"> +<span class="sig-name descname"><span class="pre">custom_vision_model</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.custom_vision_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.custom_vision_model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.with_qformer"> +<span class="sig-name descname"><span class="pre">with_qformer</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.with_qformer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.with_qformer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.language_model"> +<span class="sig-name descname"><span class="pre">language_model</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.language_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.language_model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.hidden_size"> +<span class="sig-name descname"><span class="pre">hidden_size</span></span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.hidden_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.hidden_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.get_backend_model"> +<span class="sig-name descname"><span class="pre">get_backend_model</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.get_backend_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.get_backend_model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.vision_model_from_pretrained"> +<span class="sig-name descname"><span class="pre">vision_model_from_pretrained</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pretrained_path</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.vision_model_from_pretrained"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.vision_model_from_pretrained" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.qformer_from_pretrained"> +<span class="sig-name descname"><span class="pre">qformer_from_pretrained</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pretrained_path</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.qformer_from_pretrained"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.qformer_from_pretrained" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.language_model_from_pretrained"> +<span class="sig-name descname"><span class="pre">language_model_from_pretrained</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pretrained_path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">low_resource</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_prompt_cache</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.language_model_from_pretrained"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.language_model_from_pretrained" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.vision_feature_select"> +<span class="sig-name descname"><span class="pre">vision_feature_select</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">image_forward_outs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.vision_feature_select"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.vision_feature_select" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.register_prompt_cache"> +<span class="sig-name descname"><span class="pre">register_prompt_cache</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">prompt_ids</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prompt_keys_values</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.register_prompt_cache"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.register_prompt_cache" title="Link to this definition">#</a></dt> +<dd><p>Udpate the prompt id and embedding for reuse in the future</p> +<dl class="simple"> +<dt>Args:</dt><dd><p>prompt_ids (torch.LongTensor): The id of the prompt. +prompt_keys_values (torch.FloatTensor): The embedding of the prompt.</p> +</dd> +<dt>Returns:</dt><dd><p>None</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.save_prompt_cache"> +<span class="sig-name descname"><span class="pre">save_prompt_cache</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.save_prompt_cache"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.save_prompt_cache" title="Link to this definition">#</a></dt> +<dd><p>Save prompt embedding and id.</p> +<dl class="simple"> +<dt>Args:</dt><dd><p>path: The path to save the prompt embedding and id.</p> +</dd> +<dt>Returns:</dt><dd><p>None</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.load_prompt_cache"> +<span class="sig-name descname"><span class="pre">load_prompt_cache</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.load_prompt_cache"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.load_prompt_cache" title="Link to this definition">#</a></dt> +<dd><p>Load prompt embedding and id. +Args:</p> +<blockquote> +<div><p>path: The path to load the prompt embedding and id.</p> +</div></blockquote> +<dl class="simple"> +<dt>Returns:</dt><dd><p>None</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.get_tokenizer"> +<span class="sig-name descname"><span class="pre">get_tokenizer</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.get_tokenizer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.get_tokenizer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.forward"> +<span class="sig-name descname"><span class="pre">forward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input_ids</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.LongTensor</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pixel_values</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.FloatTensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">images</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.FloatTensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attention_mask</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">past_key_values</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.FloatTensor</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inputs_embeds</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.FloatTensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">labels</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.LongTensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_cache</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_attentions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_hidden_states</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">return_dict</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">image_token_indexes</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">[0]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">one_sample_multiple_images</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">transformers.modeling_outputs.CausalLMOutputWithPast</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.forward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.forward" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.processor_image_token_in_minigpt4"> +<span class="sig-name descname"><span class="pre">processor_image_token_in_minigpt4</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input_ids</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">language_model_inputs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attention_mask</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">image_token_indexes</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pixel_values</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">batch_size</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.processor_image_token_in_minigpt4"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.processor_image_token_in_minigpt4" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.generate"> +<span class="sig-name descname"><span class="pre">generate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pixel_values</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.FloatTensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">input_ids</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.LongTensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attention_mask</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.LongTensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">image_token_indexes</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">[0]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">one_sample_multiple_images</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">images</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.LongTensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">generate_kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">torch.LongTensor</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/models/vision2seq_model.html#CustomAutoVision2SeqModel.generate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.generate" title="Link to this definition">#</a></dt> +<dd><p>Overrides <cite>generate</cite> function to be able to use the model as a conditional generator.</p> +<dl class="simple"> +<dt>Args:</dt><dd><dl class="simple"> +<dt>pixel_values (<cite>torch.FloatTensor</cite> of shape (batch_size, num_channels, height, width)):</dt><dd><p>Input images to be processed.</p> +</dd> +<dt>input_ids (<cite>torch.LongTensor</cite> of shape (batch_size, sequence_length), <em>optional</em>):</dt><dd><p>The sequence used as a prompt for the generation.</p> +</dd> +<dt>attention_mask (<cite>torch.LongTensor</cite> of shape (batch_size, sequence_length), <em>optional</em>):</dt><dd><p>Mask to avoid performing attention on padding token indices</p> +</dd> +<dt>image_token_indexes (bool, <em>optional</em>):</dt><dd><p>The index for inserting the image tokens.</p> +</dd> +<dt>one_sample_multiple_images: (bool, <em>optional</em>):</dt><dd><p>The flag for inference that the input batch size is 1 and contain multiple images.</p> +</dd> +</dl> +</dd> +<dt>Returns:</dt><dd><p>captions (list): A list of strings of length batch_size * num_captions.</p> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../text_regression_model/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.text_regression_model</p> + </div> + </a> + <a class="right-next" + href="../vision_encoder/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.vision_encoder</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.custom_vision_model"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.custom_vision_model</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.with_qformer"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.with_qformer</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.language_model"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.language_model</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.hidden_size"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.hidden_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.get_backend_model"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.get_backend_model()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.vision_model_from_pretrained"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.vision_model_from_pretrained()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.qformer_from_pretrained"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.qformer_from_pretrained()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.language_model_from_pretrained"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.language_model_from_pretrained()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.vision_feature_select"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.vision_feature_select()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.register_prompt_cache"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.register_prompt_cache()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.save_prompt_cache"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.save_prompt_cache()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.load_prompt_cache"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.load_prompt_cache()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.get_tokenizer"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.get_tokenizer()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.forward"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.forward()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.processor_image_token_in_minigpt4"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.processor_image_token_in_minigpt4()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.generate"><code class="docutils literal notranslate"><span class="pre">CustomAutoVision2SeqModel.generate()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/models/vision2seq_model/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/vision_encoder/clip_encoder/index.html b/autoapi/lmflow/models/vision_encoder/clip_encoder/index.html new file mode 100644 index 000000000..d3aedd6d6 --- /dev/null +++ b/autoapi/lmflow/models/vision_encoder/clip_encoder/index.html @@ -0,0 +1,771 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.vision_encoder.clip_encoder &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/vision_encoder/clip_encoder/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.optim" href="../../../optim/index.html" /> + <link rel="prev" title="lmflow.models.vision_encoder" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.models.vision_encoder</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.models</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models.vision_encoder</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.vision_encoder.clip_encoder</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.vision_encoder.clip_encoder"> +<span id="lmflow-models-vision-encoder-clip-encoder"></span><h1>lmflow.models.vision_encoder.clip_encoder<a class="headerlink" href="#module-lmflow.models.vision_encoder.clip_encoder" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower" title="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower"><code class="xref py py-obj docutils literal notranslate"><span class="pre">CLIPVisionTower</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.vision_encoder.clip_encoder.build_vision_tower" title="lmflow.models.vision_encoder.clip_encoder.build_vision_tower"><code class="xref py py-obj docutils literal notranslate"><span class="pre">build_vision_tower</span></code></a>(vision_tower_cfg, **kwargs)</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.build_vision_tower"> +<span class="sig-prename descclassname"><span class="pre">lmflow.models.vision_encoder.clip_encoder.</span></span><span class="sig-name descname"><span class="pre">build_vision_tower</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vision_tower_cfg</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#build_vision_tower"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.build_vision_tower" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.models.vision_encoder.clip_encoder.</span></span><span class="sig-name descname"><span class="pre">CLIPVisionTower</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vision_tower</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">delay_load</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.nn.Module</span></code></p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.is_loaded"> +<span class="sig-name descname"><span class="pre">is_loaded</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.is_loaded"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.is_loaded" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.vision_tower_name"> +<span class="sig-name descname"><span class="pre">vision_tower_name</span></span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.vision_tower_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.vision_tower_name" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.select_layer"> +<span class="sig-name descname"><span class="pre">select_layer</span></span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.select_layer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.select_layer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.select_feature"> +<span class="sig-name descname"><span class="pre">select_feature</span></span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.select_feature"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.select_feature" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.load_model"> +<span class="sig-name descname"><span class="pre">load_model</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.load_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.load_model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.encode_images"> +<span class="sig-name descname"><span class="pre">encode_images</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">images</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">language_projection</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.encode_images"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.encode_images" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.feature_select"> +<span class="sig-name descname"><span class="pre">feature_select</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">image_forward_outs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.feature_select"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.feature_select" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.forward"> +<span class="sig-name descname"><span class="pre">forward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">images</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.forward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.forward" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py property"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.dummy_feature"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">dummy_feature</span></span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.dummy_feature"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.dummy_feature" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py property"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.dtype"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">dtype</span></span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.dtype"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.dtype" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py property"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.device"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">device</span></span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.device"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.device" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py property"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.config"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">config</span></span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.config" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py property"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.hidden_size"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">hidden_size</span></span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.hidden_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.hidden_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py property"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.num_patches"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">num_patches</span></span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.num_patches"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.num_patches" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.prepare_inputs_labels_for_multimodal"> +<span class="sig-name descname"><span class="pre">prepare_inputs_labels_for_multimodal</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input_ids</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attention_mask</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">past_key_values</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">labels</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">images</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">language_projection</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">language_model</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#CLIPVisionTower.prepare_inputs_labels_for_multimodal"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.prepare_inputs_labels_for_multimodal" title="Link to this definition">#</a></dt> +<dd><p>Copy from the LLAVA code base. +Should be polished.</p> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.vision_encoder</p> + </div> + </a> + <a class="right-next" + href="../../../optim/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.build_vision_tower"><code class="docutils literal notranslate"><span class="pre">build_vision_tower()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.is_loaded"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.is_loaded</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.vision_tower_name"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.vision_tower_name</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.select_layer"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.select_layer</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.select_feature"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.select_feature</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.load_model"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.load_model()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.encode_images"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.encode_images()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.feature_select"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.feature_select()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.forward"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.forward()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.dummy_feature"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.dummy_feature</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.dtype"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.dtype</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.device"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.device</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.config"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.config</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.hidden_size"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.hidden_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.num_patches"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.num_patches</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.prepare_inputs_labels_for_multimodal"><code class="docutils literal notranslate"><span class="pre">CLIPVisionTower.prepare_inputs_labels_for_multimodal()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/models/vision_encoder/clip_encoder/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/models/vision_encoder/index.html b/autoapi/lmflow/models/vision_encoder/index.html new file mode 100644 index 000000000..1fe8a0390 --- /dev/null +++ b/autoapi/lmflow/models/vision_encoder/index.html @@ -0,0 +1,664 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.models.vision_encoder &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/models/vision_encoder/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.models.vision_encoder.clip_encoder" href="clip_encoder/index.html" /> + <link rel="prev" title="lmflow.models.vision2seq_model" href="../vision2seq_model/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.models</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 current active has-children"><a class="current reference internal" href="#">lmflow.models.vision_encoder</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.models</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.models.vision_encoder</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.models.vision_encoder"> +<span id="lmflow-models-vision-encoder"></span><h1>lmflow.models.vision_encoder<a class="headerlink" href="#module-lmflow.models.vision_encoder" title="Link to this heading">#</a></h1> +<section id="submodules"> +<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.models.vision_encoder.build_vision_tower" title="lmflow.models.vision_encoder.build_vision_tower"><code class="xref py py-obj docutils literal notranslate"><span class="pre">build_vision_tower</span></code></a>(vision_tower_cfg, **kwargs)</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="package-contents"> +<h2>Package Contents<a class="headerlink" href="#package-contents" title="Link to this heading">#</a></h2> +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.models.vision_encoder.build_vision_tower"> +<span class="sig-prename descclassname"><span class="pre">lmflow.models.vision_encoder.</span></span><span class="sig-name descname"><span class="pre">build_vision_tower</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vision_tower_cfg</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/models/vision_encoder/clip_encoder.html#build_vision_tower"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.models.vision_encoder.build_vision_tower" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../vision2seq_model/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.vision2seq_model</p> + </div> + </a> + <a class="right-next" + href="clip_encoder/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.models.vision_encoder.clip_encoder</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#package-contents">Package Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.models.vision_encoder.build_vision_tower"><code class="docutils literal notranslate"><span class="pre">build_vision_tower()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/models/vision_encoder/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/adabelief/index.html b/autoapi/lmflow/optim/adabelief/index.html new file mode 100644 index 000000000..583fa1f28 --- /dev/null +++ b/autoapi/lmflow/optim/adabelief/index.html @@ -0,0 +1,710 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.adabelief &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/adabelief/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.adabound" href="../adabound/index.html" /> + <link rel="prev" title="lmflow.optim" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adabelief</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.adabelief"> +<span id="lmflow-optim-adabelief"></span><h1>lmflow.optim.adabelief<a class="headerlink" href="#module-lmflow.optim.adabelief" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.adabelief.AdaBelief" title="lmflow.optim.adabelief.AdaBelief"><code class="xref py py-obj docutils literal notranslate"><span class="pre">AdaBelief</span></code></a></p></td> +<td><p>Implements AdaBelief algorithm. Modified from Adam in PyTorch</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.adabelief.AdaBelief"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.adabelief.</span></span><span class="sig-name descname"><span class="pre">AdaBelief</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.001</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">betas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">(0.9,</span> <span class="pre">0.999)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1e-16</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">amsgrad</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decouple</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fixed_decay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rectify</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">degenerated_to_sgd</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">print_change_log</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adabelief.html#AdaBelief"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adabelief.AdaBelief" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.optimizer.Optimizer</span></code></p> +<p>Implements AdaBelief algorithm. Modified from Adam in PyTorch +reference: AdaBelief Optimizer, adapting stepsizes by the belief in observed gradients, NeurIPS 2020</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.optim.adabelief.AdaBelief.degenerated_to_sgd"> +<span class="sig-name descname"><span class="pre">degenerated_to_sgd</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../../_modules/lmflow/optim/adabelief.html#AdaBelief.degenerated_to_sgd"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adabelief.AdaBelief.degenerated_to_sgd" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.optim.adabelief.AdaBelief.weight_decouple"> +<span class="sig-name descname"><span class="pre">weight_decouple</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../../_modules/lmflow/optim/adabelief.html#AdaBelief.weight_decouple"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adabelief.AdaBelief.weight_decouple" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.optim.adabelief.AdaBelief.rectify"> +<span class="sig-name descname"><span class="pre">rectify</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../../_modules/lmflow/optim/adabelief.html#AdaBelief.rectify"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adabelief.AdaBelief.rectify" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.optim.adabelief.AdaBelief.fixed_decay"> +<span class="sig-name descname"><span class="pre">fixed_decay</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../_modules/lmflow/optim/adabelief.html#AdaBelief.fixed_decay"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adabelief.AdaBelief.fixed_decay" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adabelief.AdaBelief.__setstate__"> +<span class="sig-name descname"><span class="pre">__setstate__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adabelief.html#AdaBelief.__setstate__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adabelief.AdaBelief.__setstate__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adabelief.AdaBelief.reset"> +<span class="sig-name descname"><span class="pre">reset</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adabelief.html#AdaBelief.reset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adabelief.AdaBelief.reset" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adabelief.AdaBelief.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adabelief.html#AdaBelief.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adabelief.AdaBelief.step" title="Link to this definition">#</a></dt> +<dd><p>Performs a single optimization step. +Arguments:</p> +<blockquote> +<div><dl class="simple"> +<dt>closure (callable, optional): A closure that reevaluates the model</dt><dd><p>and returns the loss.</p> +</dd> +</dl> +</div></blockquote> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim</p> + </div> + </a> + <a class="right-next" + href="../adabound/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.adabound</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adabelief.AdaBelief"><code class="docutils literal notranslate"><span class="pre">AdaBelief</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adabelief.AdaBelief.degenerated_to_sgd"><code class="docutils literal notranslate"><span class="pre">AdaBelief.degenerated_to_sgd</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adabelief.AdaBelief.weight_decouple"><code class="docutils literal notranslate"><span class="pre">AdaBelief.weight_decouple</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adabelief.AdaBelief.rectify"><code class="docutils literal notranslate"><span class="pre">AdaBelief.rectify</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adabelief.AdaBelief.fixed_decay"><code class="docutils literal notranslate"><span class="pre">AdaBelief.fixed_decay</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adabelief.AdaBelief.__setstate__"><code class="docutils literal notranslate"><span class="pre">AdaBelief.__setstate__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adabelief.AdaBelief.reset"><code class="docutils literal notranslate"><span class="pre">AdaBelief.reset()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adabelief.AdaBelief.step"><code class="docutils literal notranslate"><span class="pre">AdaBelief.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/adabelief/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/adabound/index.html b/autoapi/lmflow/optim/adabound/index.html new file mode 100644 index 000000000..6be67bf93 --- /dev/null +++ b/autoapi/lmflow/optim/adabound/index.html @@ -0,0 +1,689 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.adabound &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/adabound/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.adadelta" href="../adadelta/index.html" /> + <link rel="prev" title="lmflow.optim.adabelief" href="../adabelief/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adabound</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.adabound"> +<span id="lmflow-optim-adabound"></span><h1>lmflow.optim.adabound<a class="headerlink" href="#module-lmflow.optim.adabound" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.adabound.AdaBound" title="lmflow.optim.adabound.AdaBound"><code class="xref py py-obj docutils literal notranslate"><span class="pre">AdaBound</span></code></a></p></td> +<td><p>Implements AdaBound algorithm.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.adabound.AdaBound"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.adabound.</span></span><span class="sig-name descname"><span class="pre">AdaBound</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.001</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">betas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">(0.9,</span> <span class="pre">0.999)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">final_lr</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">gamma</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.001</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">1e-08</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">amsbound</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adabound.html#AdaBound"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adabound.AdaBound" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.optimizer.Optimizer</span></code></p> +<p>Implements AdaBound algorithm.</p> +<p>It has been proposed in <a href="#id1"><span class="problematic" id="id2">`</span></a>Adaptive Gradient Methods with Dynamic Bound of +Learning Rate +<a class="reference external" href="https://arxiv.org/abs/1902.09843">https://arxiv.org/abs/1902.09843</a> +Note:</p> +<blockquote> +<div><p>Reference code: <a class="github reference external" href="https://github.com/Luolc/AdaBound">Luolc/AdaBound</a></p> +</div></blockquote> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.optim.adabound.AdaBound.base_lrs"> +<span class="sig-name descname"><span class="pre">base_lrs</span></span><a class="reference internal" href="../../../../_modules/lmflow/optim/adabound.html#AdaBound.base_lrs"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adabound.AdaBound.base_lrs" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adabound.AdaBound.__setstate__"> +<span class="sig-name descname"><span class="pre">__setstate__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/optim/adabound.html#AdaBound.__setstate__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adabound.AdaBound.__setstate__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adabound.AdaBound.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adabound.html#AdaBound.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adabound.AdaBound.step" title="Link to this definition">#</a></dt> +<dd><p>Performs a single optimization step.</p> +<dl class="simple"> +<dt>Arguments:</dt><dd><p>closure: A closure that reevaluates the model and returns the loss.</p> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../adabelief/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.adabelief</p> + </div> + </a> + <a class="right-next" + href="../adadelta/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.adadelta</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adabound.AdaBound"><code class="docutils literal notranslate"><span class="pre">AdaBound</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adabound.AdaBound.base_lrs"><code class="docutils literal notranslate"><span class="pre">AdaBound.base_lrs</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adabound.AdaBound.__setstate__"><code class="docutils literal notranslate"><span class="pre">AdaBound.__setstate__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adabound.AdaBound.step"><code class="docutils literal notranslate"><span class="pre">AdaBound.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/adabound/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/adadelta/index.html b/autoapi/lmflow/optim/adadelta/index.html new file mode 100644 index 000000000..2ff1e6b01 --- /dev/null +++ b/autoapi/lmflow/optim/adadelta/index.html @@ -0,0 +1,664 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.adadelta &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/adadelta/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.adagrad" href="../adagrad/index.html" /> + <link rel="prev" title="lmflow.optim.adabound" href="../adabound/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adadelta</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.adadelta"> +<span id="lmflow-optim-adadelta"></span><h1>lmflow.optim.adadelta<a class="headerlink" href="#module-lmflow.optim.adadelta" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.adadelta.Adadelta" title="lmflow.optim.adadelta.Adadelta"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Adadelta</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.adadelta.Adadelta"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.adadelta.</span></span><span class="sig-name descname"><span class="pre">Adadelta</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rho</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.95</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1e-06</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adadelta.html#Adadelta"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adadelta.Adadelta" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.optimizer.Optimizer</span></code></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adadelta.Adadelta.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adadelta.html#Adadelta.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adadelta.Adadelta.step" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../adabound/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.adabound</p> + </div> + </a> + <a class="right-next" + href="../adagrad/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.adagrad</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adadelta.Adadelta"><code class="docutils literal notranslate"><span class="pre">Adadelta</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adadelta.Adadelta.step"><code class="docutils literal notranslate"><span class="pre">Adadelta.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/adadelta/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/adagrad/index.html b/autoapi/lmflow/optim/adagrad/index.html new file mode 100644 index 000000000..13c2aa9b3 --- /dev/null +++ b/autoapi/lmflow/optim/adagrad/index.html @@ -0,0 +1,664 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.adagrad &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/adagrad/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.adam" href="../adam/index.html" /> + <link rel="prev" title="lmflow.optim.adadelta" href="../adadelta/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adagrad</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.adagrad"> +<span id="lmflow-optim-adagrad"></span><h1>lmflow.optim.adagrad<a class="headerlink" href="#module-lmflow.optim.adagrad" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.adagrad.AdaGrad" title="lmflow.optim.adagrad.AdaGrad"><code class="xref py py-obj docutils literal notranslate"><span class="pre">AdaGrad</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.adagrad.AdaGrad"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.adagrad.</span></span><span class="sig-name descname"><span class="pre">AdaGrad</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.001</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1e-08</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adagrad.html#AdaGrad"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adagrad.AdaGrad" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.Optimizer</span></code></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adagrad.AdaGrad.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adagrad.html#AdaGrad.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adagrad.AdaGrad.step" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../adadelta/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.adadelta</p> + </div> + </a> + <a class="right-next" + href="../adam/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.adam</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adagrad.AdaGrad"><code class="docutils literal notranslate"><span class="pre">AdaGrad</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adagrad.AdaGrad.step"><code class="docutils literal notranslate"><span class="pre">AdaGrad.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/adagrad/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/adam/index.html b/autoapi/lmflow/optim/adam/index.html new file mode 100644 index 000000000..3cf345765 --- /dev/null +++ b/autoapi/lmflow/optim/adam/index.html @@ -0,0 +1,664 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.adam &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/adam/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.adamax" href="../adamax/index.html" /> + <link rel="prev" title="lmflow.optim.adagrad" href="../adagrad/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adam</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.adam"> +<span id="lmflow-optim-adam"></span><h1>lmflow.optim.adam<a class="headerlink" href="#module-lmflow.optim.adam" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.adam.Adam" title="lmflow.optim.adam.Adam"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Adam</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.adam.Adam"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.adam.</span></span><span class="sig-name descname"><span class="pre">Adam</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.001</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">betas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">(0.9,</span> <span class="pre">0.999)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1e-08</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adam.html#Adam"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adam.Adam" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.optimizer.Optimizer</span></code></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adam.Adam.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adam.html#Adam.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adam.Adam.step" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../adagrad/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.adagrad</p> + </div> + </a> + <a class="right-next" + href="../adamax/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.adamax</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adam.Adam"><code class="docutils literal notranslate"><span class="pre">Adam</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adam.Adam.step"><code class="docutils literal notranslate"><span class="pre">Adam.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/adam/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/adamax/index.html b/autoapi/lmflow/optim/adamax/index.html new file mode 100644 index 000000000..677239e1a --- /dev/null +++ b/autoapi/lmflow/optim/adamax/index.html @@ -0,0 +1,670 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.adamax &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/adamax/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.adamp" href="../adamp/index.html" /> + <link rel="prev" title="lmflow.optim.adam" href="../adam/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adamax</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.adamax"> +<span id="lmflow-optim-adamax"></span><h1>lmflow.optim.adamax<a class="headerlink" href="#module-lmflow.optim.adamax" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.adamax.Adamax" title="lmflow.optim.adamax.Adamax"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Adamax</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.adamax.Adamax"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.adamax.</span></span><span class="sig-name descname"><span class="pre">Adamax</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.002</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">betas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">(0.9,</span> <span class="pre">0.999)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1e-08</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adamax.html#Adamax"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adamax.Adamax" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.optimizer.Optimizer</span></code></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adamax.Adamax.__setstate__"> +<span class="sig-name descname"><span class="pre">__setstate__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adamax.html#Adamax.__setstate__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adamax.Adamax.__setstate__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adamax.Adamax.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adamax.html#Adamax.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adamax.Adamax.step" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../adam/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.adam</p> + </div> + </a> + <a class="right-next" + href="../adamp/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.adamp</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adamax.Adamax"><code class="docutils literal notranslate"><span class="pre">Adamax</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adamax.Adamax.__setstate__"><code class="docutils literal notranslate"><span class="pre">Adamax.__setstate__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adamax.Adamax.step"><code class="docutils literal notranslate"><span class="pre">Adamax.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/adamax/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/adamp/index.html b/autoapi/lmflow/optim/adamp/index.html new file mode 100644 index 000000000..fa17fa0ee --- /dev/null +++ b/autoapi/lmflow/optim/adamp/index.html @@ -0,0 +1,701 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.adamp &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/adamp/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.adamw_schedule_free" href="../adamw_schedule_free/index.html" /> + <link rel="prev" title="lmflow.optim.adamax" href="../adamax/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adamp</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.adamp"> +<span id="lmflow-optim-adamp"></span><h1>lmflow.optim.adamp<a class="headerlink" href="#module-lmflow.optim.adamp" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.adamp.AdamP" title="lmflow.optim.adamp.AdamP"><code class="xref py py-obj docutils literal notranslate"><span class="pre">AdamP</span></code></a></p></td> +<td><p>Implements AdamP algorithm.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.adamp.AdamP"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.adamp.</span></span><span class="sig-name descname"><span class="pre">AdamP</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.001</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">betas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">(0.9,</span> <span class="pre">0.999)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">1e-08</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">delta</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">wd_ratio</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nesterov</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adamp.html#AdamP"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adamp.AdamP" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.optimizer.Optimizer</span></code></p> +<p>Implements AdamP algorithm.</p> +<p>It has been proposed in <cite>Slowing Down the Weight Norm Increase in +Momentum-based Optimizers</cite> +<a class="reference external" href="https://arxiv.org/abs/2006.08217">https://arxiv.org/abs/2006.08217</a></p> +<dl class="simple"> +<dt>Note:</dt><dd><p>Reference code: <a class="github reference external" href="https://github.com/clovaai/AdamP">clovaai/AdamP</a></p> +</dd> +</dl> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adamp.AdamP._channel_view"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">_channel_view</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adamp.html#AdamP._channel_view"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adamp.AdamP._channel_view" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adamp.AdamP._layer_view"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">_layer_view</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adamp.html#AdamP._layer_view"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adamp.AdamP._layer_view" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adamp.AdamP._cosine_similarity"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">_cosine_similarity</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">view_func</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adamp.html#AdamP._cosine_similarity"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adamp.AdamP._cosine_similarity" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adamp.AdamP._projection"> +<span class="sig-name descname"><span class="pre">_projection</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">p</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">grad</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">perturb</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">delta</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">wd_ratio</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adamp.html#AdamP._projection"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adamp.AdamP._projection" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adamp.AdamP.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adamp.html#AdamP.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adamp.AdamP.step" title="Link to this definition">#</a></dt> +<dd><p>Performs a single optimization step.</p> +<dl class="simple"> +<dt>Arguments:</dt><dd><p>closure: A closure that reevaluates the model and returns the loss.</p> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../adamax/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.adamax</p> + </div> + </a> + <a class="right-next" + href="../adamw_schedule_free/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.adamw_schedule_free</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adamp.AdamP"><code class="docutils literal notranslate"><span class="pre">AdamP</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adamp.AdamP._channel_view"><code class="docutils literal notranslate"><span class="pre">AdamP._channel_view()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adamp.AdamP._layer_view"><code class="docutils literal notranslate"><span class="pre">AdamP._layer_view()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adamp.AdamP._cosine_similarity"><code class="docutils literal notranslate"><span class="pre">AdamP._cosine_similarity()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adamp.AdamP._projection"><code class="docutils literal notranslate"><span class="pre">AdamP._projection()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adamp.AdamP.step"><code class="docutils literal notranslate"><span class="pre">AdamP.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/adamp/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/adamw_schedule_free/index.html b/autoapi/lmflow/optim/adamw_schedule_free/index.html new file mode 100644 index 000000000..aa2a61c61 --- /dev/null +++ b/autoapi/lmflow/optim/adamw_schedule_free/index.html @@ -0,0 +1,691 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.adamw_schedule_free &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/adamw_schedule_free/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.adan" href="../adan/index.html" /> + <link rel="prev" title="lmflow.optim.adamp" href="../adamp/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adamw_schedule_free</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.adamw_schedule_free"> +<span id="lmflow-optim-adamw-schedule-free"></span><h1>lmflow.optim.adamw_schedule_free<a class="headerlink" href="#module-lmflow.optim.adamw_schedule_free" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.adamw_schedule_free.AdamWScheduleFree" title="lmflow.optim.adamw_schedule_free.AdamWScheduleFree"><code class="xref py py-obj docutils literal notranslate"><span class="pre">AdamWScheduleFree</span></code></a></p></td> +<td><p>Schedule-Free AdamW</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.adamw_schedule_free.AdamWScheduleFree"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.adamw_schedule_free.</span></span><span class="sig-name descname"><span class="pre">AdamWScheduleFree</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.0025</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">betas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">(0.9,</span> <span class="pre">0.999)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1e-08</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">warmup_steps</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">r</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_lr_power</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">2.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">foreach</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">hasattr(torch,</span> <span class="pre">'_foreach_mul_')</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adamw_schedule_free.html#AdamWScheduleFree"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adamw_schedule_free.AdamWScheduleFree" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.Optimizer</span></code></p> +<p>Schedule-Free AdamW +As the name suggests, no scheduler is needed with this optimizer. +To add warmup, rather than using a learning rate schedule you can just +set the warmup_steps parameter.</p> +<p>This optimizer requires that .train() and .eval() be called before the +beginning of training and evaluation respectively. The optimizer should +also be placed in eval mode when saving checkpoints.</p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adamw_schedule_free.AdamWScheduleFree.eval"> +<span class="sig-name descname"><span class="pre">eval</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adamw_schedule_free.html#AdamWScheduleFree.eval"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adamw_schedule_free.AdamWScheduleFree.eval" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adamw_schedule_free.AdamWScheduleFree.train"> +<span class="sig-name descname"><span class="pre">train</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adamw_schedule_free.html#AdamWScheduleFree.train"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adamw_schedule_free.AdamWScheduleFree.train" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adamw_schedule_free.AdamWScheduleFree.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adamw_schedule_free.html#AdamWScheduleFree.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adamw_schedule_free.AdamWScheduleFree.step" title="Link to this definition">#</a></dt> +<dd><p>Performs a single optimization step.</p> +<dl class="simple"> +<dt>Arguments:</dt><dd><dl class="simple"> +<dt>closure (callable, optional): A closure that reevaluates the model</dt><dd><p>and returns the loss.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../adamp/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.adamp</p> + </div> + </a> + <a class="right-next" + href="../adan/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.adan</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adamw_schedule_free.AdamWScheduleFree"><code class="docutils literal notranslate"><span class="pre">AdamWScheduleFree</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adamw_schedule_free.AdamWScheduleFree.eval"><code class="docutils literal notranslate"><span class="pre">AdamWScheduleFree.eval()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adamw_schedule_free.AdamWScheduleFree.train"><code class="docutils literal notranslate"><span class="pre">AdamWScheduleFree.train()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adamw_schedule_free.AdamWScheduleFree.step"><code class="docutils literal notranslate"><span class="pre">AdamWScheduleFree.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/adamw_schedule_free/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/adan/index.html b/autoapi/lmflow/optim/adan/index.html new file mode 100644 index 000000000..76bd74567 --- /dev/null +++ b/autoapi/lmflow/optim/adan/index.html @@ -0,0 +1,708 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.adan &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/adan/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.dummy" href="../dummy/index.html" /> + <link rel="prev" title="lmflow.optim.adamw_schedule_free" href="../adamw_schedule_free/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.adan</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.adan"> +<span id="lmflow-optim-adan"></span><h1>lmflow.optim.adan<a class="headerlink" href="#module-lmflow.optim.adan" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.adan.Adan" title="lmflow.optim.adan.Adan"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Adan</span></code></a></p></td> +<td><p>Implements a pytorch variant of Adan.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.adan._single_tensor_adan" title="lmflow.optim.adan._single_tensor_adan"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_single_tensor_adan</span></code></a>(params, grads, exp_avgs, ...)</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.optim.adan._multi_tensor_adan" title="lmflow.optim.adan._multi_tensor_adan"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_multi_tensor_adan</span></code></a>(params, grads, exp_avgs, ...)</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.adan.Adan"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.adan.</span></span><span class="sig-name descname"><span class="pre">Adan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.001</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">betas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">(0.98,</span> <span class="pre">0.92,</span> <span class="pre">0.99)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1e-08</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_grad_norm</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">no_prox</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">foreach</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adan.html#Adan"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adan.Adan" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.optimizer.Optimizer</span></code></p> +<p>Implements a pytorch variant of Adan.</p> +<p>Adan was proposed in +Adan : Adaptive Nesterov Momentum Algorithm for Faster Optimizing Deep Models. +<a class="reference external" href="https://arxiv.org/abs/2208.06677">https://arxiv.org/abs/2208.06677</a></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adan.Adan.__setstate__"> +<span class="sig-name descname"><span class="pre">__setstate__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adan.html#Adan.__setstate__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adan.Adan.__setstate__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adan.Adan.restart_opt"> +<span class="sig-name descname"><span class="pre">restart_opt</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adan.html#Adan.restart_opt"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adan.Adan.restart_opt" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.adan.Adan.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adan.html#Adan.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adan.Adan.step" title="Link to this definition">#</a></dt> +<dd><p>Performs a single optimization step.</p> +</dd></dl> + +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.optim.adan._single_tensor_adan"> +<span class="sig-prename descclassname"><span class="pre">lmflow.optim.adan.</span></span><span class="sig-name descname"><span class="pre">_single_tensor_adan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">grads</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exp_avgs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exp_avg_sqs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exp_avg_diffs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pre_grads</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">beta1</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">beta2</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">beta3</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bias_correction1</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bias_correction2</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bias_correction3_sqrt</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">no_prox</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">clip_global_grad_norm</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adan.html#_single_tensor_adan"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adan._single_tensor_adan" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.optim.adan._multi_tensor_adan"> +<span class="sig-prename descclassname"><span class="pre">lmflow.optim.adan.</span></span><span class="sig-name descname"><span class="pre">_multi_tensor_adan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">grads</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exp_avgs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exp_avg_sqs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exp_avg_diffs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pre_grads</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">beta1</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">beta2</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">beta3</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bias_correction1</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bias_correction2</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bias_correction3_sqrt</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">no_prox</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">clip_global_grad_norm</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/adan.html#_multi_tensor_adan"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.adan._multi_tensor_adan" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../adamw_schedule_free/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.adamw_schedule_free</p> + </div> + </a> + <a class="right-next" + href="../dummy/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.dummy</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adan.Adan"><code class="docutils literal notranslate"><span class="pre">Adan</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adan.Adan.__setstate__"><code class="docutils literal notranslate"><span class="pre">Adan.__setstate__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adan.Adan.restart_opt"><code class="docutils literal notranslate"><span class="pre">Adan.restart_opt()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adan.Adan.step"><code class="docutils literal notranslate"><span class="pre">Adan.step()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adan._single_tensor_adan"><code class="docutils literal notranslate"><span class="pre">_single_tensor_adan()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.adan._multi_tensor_adan"><code class="docutils literal notranslate"><span class="pre">_multi_tensor_adan()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/adan/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/dummy/index.html b/autoapi/lmflow/optim/dummy/index.html new file mode 100644 index 000000000..116fe293d --- /dev/null +++ b/autoapi/lmflow/optim/dummy/index.html @@ -0,0 +1,680 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.dummy &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/dummy/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.lamb" href="../lamb/index.html" /> + <link rel="prev" title="lmflow.optim.adan" href="../adan/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.dummy</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.dummy"> +<span id="lmflow-optim-dummy"></span><h1>lmflow.optim.dummy<a class="headerlink" href="#module-lmflow.optim.dummy" title="Link to this heading">#</a></h1> +<p>Dummy Optimizer.</p> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.dummy.Dummy" title="lmflow.optim.dummy.Dummy"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Dummy</span></code></a></p></td> +<td><p>An dummy optimizer that does nothing.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.dummy.Dummy"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.dummy.</span></span><span class="sig-name descname"><span class="pre">Dummy</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Iterable</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.nn.parameter.Parameter</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">betas</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">float</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">float</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">(0.9,</span> <span class="pre">0.999)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/dummy.html#Dummy"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.dummy.Dummy" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.Optimizer</span></code></p> +<p>An dummy optimizer that does nothing.</p> +<dl class="simple"> +<dt>Parameters:</dt><dd><dl class="simple"> +<dt>params (<code class="xref py py-obj docutils literal notranslate"><span class="pre">Iterable[nn.parameter.Parameter]</span></code>):</dt><dd><p>Iterable of parameters to optimize or dictionaries defining parameter groups.</p> +</dd> +<dt>lr (<code class="xref py py-obj docutils literal notranslate"><span class="pre">float</span></code>, <cite>optional</cite>, defaults to 0):</dt><dd><p>The learning rate to use.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.dummy.Dummy.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/dummy.html#Dummy.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.dummy.Dummy.step" title="Link to this definition">#</a></dt> +<dd><p>Performs a single optimization step.</p> +<dl class="simple"> +<dt>Arguments:</dt><dd><p>closure (<code class="xref py py-obj docutils literal notranslate"><span class="pre">Callable</span></code>, <cite>optional</cite>): A closure that reevaluates the model and returns the loss.</p> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../adan/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.adan</p> + </div> + </a> + <a class="right-next" + href="../lamb/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.lamb</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.dummy.Dummy"><code class="docutils literal notranslate"><span class="pre">Dummy</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.dummy.Dummy.step"><code class="docutils literal notranslate"><span class="pre">Dummy.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/dummy/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/index.html b/autoapi/lmflow/optim/index.html new file mode 100644 index 000000000..2511a35de --- /dev/null +++ b/autoapi/lmflow/optim/index.html @@ -0,0 +1,656 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/index';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <link rel="next" title="lmflow.optim.adabelief" href="adabelief/index.html" /> + <link rel="prev" title="lmflow.models.vision_encoder.clip_encoder" href="../models/vision_encoder/clip_encoder/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="current reference internal" href="#">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim"> +<span id="lmflow-optim"></span><h1>lmflow.optim<a class="headerlink" href="#module-lmflow.optim" title="Link to this heading">#</a></h1> +<section id="submodules"> +<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l1"><a class="reference internal" href="adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l1"><a class="reference internal" href="adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l1"><a class="reference internal" href="adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l1"><a class="reference internal" href="adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l1"><a class="reference internal" href="adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l1"><a class="reference internal" href="adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l1"><a class="reference internal" href="adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l1"><a class="reference internal" href="adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l1"><a class="reference internal" href="dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l1"><a class="reference internal" href="lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l1"><a class="reference internal" href="lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l1"><a class="reference internal" href="nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l1"><a class="reference internal" href="novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l1"><a class="reference internal" href="optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l1"><a class="reference internal" href="radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l1"><a class="reference internal" href="sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l1"><a class="reference internal" href="sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l1"><a class="reference internal" href="sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l1"><a class="reference internal" href="yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../models/vision_encoder/clip_encoder/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.models.vision_encoder.clip_encoder</p> + </div> + </a> + <a class="right-next" + href="adabelief/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.adabelief</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../_sources/autoapi/lmflow/optim/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/lamb/index.html b/autoapi/lmflow/optim/lamb/index.html new file mode 100644 index 000000000..c010655ec --- /dev/null +++ b/autoapi/lmflow/optim/lamb/index.html @@ -0,0 +1,695 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.lamb &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/lamb/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.lars" href="../lars/index.html" /> + <link rel="prev" title="lmflow.optim.dummy" href="../dummy/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.lamb</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.lamb"> +<span id="lmflow-optim-lamb"></span><h1>lmflow.optim.lamb<a class="headerlink" href="#module-lmflow.optim.lamb" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.lamb.Lamb" title="lmflow.optim.lamb.Lamb"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Lamb</span></code></a></p></td> +<td><p>Implements Lamb algorithm.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.lamb.Lamb"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.lamb.</span></span><span class="sig-name descname"><span class="pre">Lamb</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.001</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">betas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">(0.9,</span> <span class="pre">0.999)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">1e-06</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">clamp_value</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">adam</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">debias</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/lamb.html#Lamb"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.lamb.Lamb" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.optimizer.Optimizer</span></code></p> +<p>Implements Lamb algorithm.</p> +<p>It has been proposed in <cite>Large Batch Optimization for Deep Learning: +Training BERT in 76 minutes</cite> +<a class="reference external" href="https://arxiv.org/abs/1904.00962">https://arxiv.org/abs/1904.00962</a></p> +<dl class="simple"> +<dt>Note:</dt><dd><p>Reference code: <a class="github reference external" href="https://github.com/cybertronai/pytorch-lamb">cybertronai/pytorch-lamb</a></p> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.optim.lamb.Lamb.clamp_value"> +<span class="sig-name descname"><span class="pre">clamp_value</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">10</span></em><a class="reference internal" href="../../../../_modules/lmflow/optim/lamb.html#Lamb.clamp_value"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.lamb.Lamb.clamp_value" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.optim.lamb.Lamb.adam"> +<span class="sig-name descname"><span class="pre">adam</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../_modules/lmflow/optim/lamb.html#Lamb.adam"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.lamb.Lamb.adam" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.optim.lamb.Lamb.debias"> +<span class="sig-name descname"><span class="pre">debias</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../_modules/lmflow/optim/lamb.html#Lamb.debias"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.lamb.Lamb.debias" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.lamb.Lamb.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/lamb.html#Lamb.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.lamb.Lamb.step" title="Link to this definition">#</a></dt> +<dd><p>Performs a single optimization step.</p> +<dl class="simple"> +<dt>Arguments:</dt><dd><p>closure: A closure that reevaluates the model and returns the loss.</p> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../dummy/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.dummy</p> + </div> + </a> + <a class="right-next" + href="../lars/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.lars</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.lamb.Lamb"><code class="docutils literal notranslate"><span class="pre">Lamb</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.lamb.Lamb.clamp_value"><code class="docutils literal notranslate"><span class="pre">Lamb.clamp_value</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.lamb.Lamb.adam"><code class="docutils literal notranslate"><span class="pre">Lamb.adam</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.lamb.Lamb.debias"><code class="docutils literal notranslate"><span class="pre">Lamb.debias</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.lamb.Lamb.step"><code class="docutils literal notranslate"><span class="pre">Lamb.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/lamb/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/lars/index.html b/autoapi/lmflow/optim/lars/index.html new file mode 100644 index 000000000..ad468a0dd --- /dev/null +++ b/autoapi/lmflow/optim/lars/index.html @@ -0,0 +1,705 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.lars &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/lars/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.nadam" href="../nadam/index.html" /> + <link rel="prev" title="lmflow.optim.lamb" href="../lamb/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.lars</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.lars"> +<span id="lmflow-optim-lars"></span><h1>lmflow.optim.lars<a class="headerlink" href="#module-lmflow.optim.lars" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.lars.LARS" title="lmflow.optim.lars.LARS"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LARS</span></code></a></p></td> +<td><p>Extends SGD in PyTorch with LARS scaling from the paper</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.lars.LARS"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.lars.</span></span><span class="sig-name descname"><span class="pre">LARS</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.01</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">momentum</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dampening</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nesterov</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">trust_coefficient</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.01</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">1e-08</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/lars.html#LARS"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.lars.LARS" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.optimizer.Optimizer</span></code></p> +<p>Extends SGD in PyTorch with LARS scaling from the paper +<a class="reference external" href="https://arxiv.org/pdf/1708.03888.pdf">Large batch training of Convolutional Networks</a>. +.. note:</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>The application of momentum in the SGD part is modified according to +the PyTorch standards. LARS scaling fits into the equation in the +following fashion. + +.. math:: + \begin{aligned} + g_{t+1} &amp; = \text{lars_lr} * (\beta * p_{t} + g_{t+1}), \\ + v_{t+1} &amp; = \\mu * v_{t} + g_{t+1}, \\ + p_{t+1} &amp; = p_{t} - \text{lr} * v_{t+1}, + \\end{aligned} + +where :math:`p`, :math:`g`, :math:`v`, :math:`\\mu` and :math:`\beta` +denote the parameters, gradient, velocity, momentum, and weight decay +respectively. The :math:`lars_lr` is defined by Eq. 6 in the paper. +The Nesterov version is analogously modified. +</pre></div> +</div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>Parameters with weight decay set to 0 will automatically be excluded +from layer-wise LR scaling. This is to ensure consistency with papers +like SimCLR and BYOL.</p> +</div> +<dl class="simple"> +<dt>Note:</dt><dd><p>Reference code: <a class="github reference external" href="https://github.com/PyTorchLightning/lightning-bolts/">PyTorchLightning/lightning-bolts</a></p> +</dd> +</dl> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.lars.LARS.__setstate__"> +<span class="sig-name descname"><span class="pre">__setstate__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/optim/lars.html#LARS.__setstate__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.lars.LARS.__setstate__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.lars.LARS.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/lars.html#LARS.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.lars.LARS.step" title="Link to this definition">#</a></dt> +<dd><p>Performs a single optimization step.</p> +<dl class="simple"> +<dt>Arguments:</dt><dd><p>closure: A closure that reevaluates the model and returns the loss.</p> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../lamb/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.lamb</p> + </div> + </a> + <a class="right-next" + href="../nadam/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.nadam</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.lars.LARS"><code class="docutils literal notranslate"><span class="pre">LARS</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.lars.LARS.__setstate__"><code class="docutils literal notranslate"><span class="pre">LARS.__setstate__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.lars.LARS.step"><code class="docutils literal notranslate"><span class="pre">LARS.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/lars/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/nadam/index.html b/autoapi/lmflow/optim/nadam/index.html new file mode 100644 index 000000000..22115d3f7 --- /dev/null +++ b/autoapi/lmflow/optim/nadam/index.html @@ -0,0 +1,670 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.nadam &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/nadam/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.novograd" href="../novograd/index.html" /> + <link rel="prev" title="lmflow.optim.lars" href="../lars/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.nadam</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.nadam"> +<span id="lmflow-optim-nadam"></span><h1>lmflow.optim.nadam<a class="headerlink" href="#module-lmflow.optim.nadam" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.nadam.NAdam" title="lmflow.optim.nadam.NAdam"><code class="xref py py-obj docutils literal notranslate"><span class="pre">NAdam</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.nadam.NAdam"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.nadam.</span></span><span class="sig-name descname"><span class="pre">NAdam</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.002</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">betas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">(0.9,</span> <span class="pre">0.999)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1e-08</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">momentum_decay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.004</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/nadam.html#NAdam"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.nadam.NAdam" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.Optimizer</span></code></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.nadam.NAdam.__setstate__"> +<span class="sig-name descname"><span class="pre">__setstate__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/nadam.html#NAdam.__setstate__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.nadam.NAdam.__setstate__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.nadam.NAdam.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/nadam.html#NAdam.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.nadam.NAdam.step" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../lars/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.lars</p> + </div> + </a> + <a class="right-next" + href="../novograd/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.novograd</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.nadam.NAdam"><code class="docutils literal notranslate"><span class="pre">NAdam</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.nadam.NAdam.__setstate__"><code class="docutils literal notranslate"><span class="pre">NAdam.__setstate__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.nadam.NAdam.step"><code class="docutils literal notranslate"><span class="pre">NAdam.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/nadam/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/novograd/index.html b/autoapi/lmflow/optim/novograd/index.html new file mode 100644 index 000000000..7498394d0 --- /dev/null +++ b/autoapi/lmflow/optim/novograd/index.html @@ -0,0 +1,670 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.novograd &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/novograd/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.optimizers" href="../optimizers/index.html" /> + <link rel="prev" title="lmflow.optim.nadam" href="../nadam/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.novograd</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.novograd"> +<span id="lmflow-optim-novograd"></span><h1>lmflow.optim.novograd<a class="headerlink" href="#module-lmflow.optim.novograd" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.novograd.NovoGrad" title="lmflow.optim.novograd.NovoGrad"><code class="xref py py-obj docutils literal notranslate"><span class="pre">NovoGrad</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.novograd.NovoGrad"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.novograd.</span></span><span class="sig-name descname"><span class="pre">NovoGrad</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.01</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">betas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">(0.9,</span> <span class="pre">0.999)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1e-08</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">grad_averaging</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">amsgrad</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/novograd.html#NovoGrad"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.novograd.NovoGrad" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.Optimizer</span></code></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.novograd.NovoGrad.__setstate__"> +<span class="sig-name descname"><span class="pre">__setstate__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/novograd.html#NovoGrad.__setstate__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.novograd.NovoGrad.__setstate__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.novograd.NovoGrad.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/novograd.html#NovoGrad.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.novograd.NovoGrad.step" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../nadam/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.nadam</p> + </div> + </a> + <a class="right-next" + href="../optimizers/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.optimizers</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.novograd.NovoGrad"><code class="docutils literal notranslate"><span class="pre">NovoGrad</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.novograd.NovoGrad.__setstate__"><code class="docutils literal notranslate"><span class="pre">NovoGrad.__setstate__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.novograd.NovoGrad.step"><code class="docutils literal notranslate"><span class="pre">NovoGrad.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/novograd/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/optimizers/index.html b/autoapi/lmflow/optim/optimizers/index.html new file mode 100644 index 000000000..09c091c6e --- /dev/null +++ b/autoapi/lmflow/optim/optimizers/index.html @@ -0,0 +1,621 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.optimizers &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/optimizers/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.radam" href="../radam/index.html" /> + <link rel="prev" title="lmflow.optim.novograd" href="../novograd/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.optimizers</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.optimizers"> +<span id="lmflow-optim-optimizers"></span><h1>lmflow.optim.optimizers<a class="headerlink" href="#module-lmflow.optim.optimizers" title="Link to this heading">#</a></h1> +<p>All optimizers.</p> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../novograd/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.novograd</p> + </div> + </a> + <a class="right-next" + href="../radam/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.radam</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/optimizers/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/radam/index.html b/autoapi/lmflow/optim/radam/index.html new file mode 100644 index 000000000..8fd8d5b50 --- /dev/null +++ b/autoapi/lmflow/optim/radam/index.html @@ -0,0 +1,687 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.radam &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/radam/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.sgd_schedule_free" href="../sgd_schedule_free/index.html" /> + <link rel="prev" title="lmflow.optim.optimizers" href="../optimizers/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.radam</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.radam"> +<span id="lmflow-optim-radam"></span><h1>lmflow.optim.radam<a class="headerlink" href="#module-lmflow.optim.radam" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.radam.RAdam" title="lmflow.optim.radam.RAdam"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RAdam</span></code></a></p></td> +<td><p>Implements RAdam optimization algorithm.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.radam.RAdam"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.radam.</span></span><span class="sig-name descname"><span class="pre">RAdam</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.001</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">betas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">(0.9,</span> <span class="pre">0.999)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">1e-08</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/radam.html#RAdam"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.radam.RAdam" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.optimizer.Optimizer</span></code></p> +<p>Implements RAdam optimization algorithm.</p> +<dl class="simple"> +<dt>Note:</dt><dd><p>Deprecated, please use version provided by <a href="#id1"><span class="problematic" id="id2">PyTorch_</span></a>.</p> +</dd> +</dl> +<p>It has been proposed in <cite>On the Variance of the Adaptive Learning +Rate and Beyond</cite>. +<a class="reference external" href="https://arxiv.org/abs/1908.03265">https://arxiv.org/abs/1908.03265</a></p> +<dl class="simple"> +<dt>Note:</dt><dd><p>Reference code: <a class="github reference external" href="https://github.com/LiyuanLucasLiu/RAdam">LiyuanLucasLiu/RAdam</a></p> +</dd> +</dl> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.radam.RAdam.__setstate__"> +<span class="sig-name descname"><span class="pre">__setstate__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/radam.html#RAdam.__setstate__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.radam.RAdam.__setstate__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.radam.RAdam.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/radam.html#RAdam.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.radam.RAdam.step" title="Link to this definition">#</a></dt> +<dd><p>Performs a single optimization step.</p> +<dl class="simple"> +<dt>Arguments:</dt><dd><p>closure: A closure that reevaluates the model and returns the loss.</p> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../optimizers/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.optimizers</p> + </div> + </a> + <a class="right-next" + href="../sgd_schedule_free/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.sgd_schedule_free</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.radam.RAdam"><code class="docutils literal notranslate"><span class="pre">RAdam</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.radam.RAdam.__setstate__"><code class="docutils literal notranslate"><span class="pre">RAdam.__setstate__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.radam.RAdam.step"><code class="docutils literal notranslate"><span class="pre">RAdam.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/radam/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/sgd_schedule_free/index.html b/autoapi/lmflow/optim/sgd_schedule_free/index.html new file mode 100644 index 000000000..5eaead44a --- /dev/null +++ b/autoapi/lmflow/optim/sgd_schedule_free/index.html @@ -0,0 +1,691 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.sgd_schedule_free &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/sgd_schedule_free/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.sgdp" href="../sgdp/index.html" /> + <link rel="prev" title="lmflow.optim.radam" href="../radam/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.sgd_schedule_free</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.sgd_schedule_free"> +<span id="lmflow-optim-sgd-schedule-free"></span><h1>lmflow.optim.sgd_schedule_free<a class="headerlink" href="#module-lmflow.optim.sgd_schedule_free" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.sgd_schedule_free.SGDScheduleFree" title="lmflow.optim.sgd_schedule_free.SGDScheduleFree"><code class="xref py py-obj docutils literal notranslate"><span class="pre">SGDScheduleFree</span></code></a></p></td> +<td><p>Schedule-Free SGD</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.sgd_schedule_free.SGDScheduleFree"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.sgd_schedule_free.</span></span><span class="sig-name descname"><span class="pre">SGDScheduleFree</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">momentum</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.9</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">warmup_steps</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">r</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_lr_power</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">foreach</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">hasattr(torch,</span> <span class="pre">'_foreach_mul_')</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/sgd_schedule_free.html#SGDScheduleFree"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.sgd_schedule_free.SGDScheduleFree" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.Optimizer</span></code></p> +<p>Schedule-Free SGD +As the name suggests, no scheduler is needed with this optimizer. +To add warmup, rather than using a learning rate schedule you can just +set the warmup_steps parameter.</p> +<p>This optimizer requires that .train() and .eval() be called before the +beginning of training and evaluation respectively. The optimizer should +also be placed in eval mode when saving checkpoints.</p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.sgd_schedule_free.SGDScheduleFree.eval"> +<span class="sig-name descname"><span class="pre">eval</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/sgd_schedule_free.html#SGDScheduleFree.eval"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.sgd_schedule_free.SGDScheduleFree.eval" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.sgd_schedule_free.SGDScheduleFree.train"> +<span class="sig-name descname"><span class="pre">train</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/sgd_schedule_free.html#SGDScheduleFree.train"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.sgd_schedule_free.SGDScheduleFree.train" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.sgd_schedule_free.SGDScheduleFree.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/sgd_schedule_free.html#SGDScheduleFree.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.sgd_schedule_free.SGDScheduleFree.step" title="Link to this definition">#</a></dt> +<dd><p>Performs a single optimization step.</p> +<dl class="simple"> +<dt>Arguments:</dt><dd><dl class="simple"> +<dt>closure (callable, optional): A closure that reevaluates the model</dt><dd><p>and returns the loss.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../radam/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.radam</p> + </div> + </a> + <a class="right-next" + href="../sgdp/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.sgdp</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.sgd_schedule_free.SGDScheduleFree"><code class="docutils literal notranslate"><span class="pre">SGDScheduleFree</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.sgd_schedule_free.SGDScheduleFree.eval"><code class="docutils literal notranslate"><span class="pre">SGDScheduleFree.eval()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.sgd_schedule_free.SGDScheduleFree.train"><code class="docutils literal notranslate"><span class="pre">SGDScheduleFree.train()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.sgd_schedule_free.SGDScheduleFree.step"><code class="docutils literal notranslate"><span class="pre">SGDScheduleFree.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/sgd_schedule_free/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/sgdp/index.html b/autoapi/lmflow/optim/sgdp/index.html new file mode 100644 index 000000000..84f88b09d --- /dev/null +++ b/autoapi/lmflow/optim/sgdp/index.html @@ -0,0 +1,701 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.sgdp &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/sgdp/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.sophia" href="../sophia/index.html" /> + <link rel="prev" title="lmflow.optim.sgd_schedule_free" href="../sgd_schedule_free/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.sgdp</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.sgdp"> +<span id="lmflow-optim-sgdp"></span><h1>lmflow.optim.sgdp<a class="headerlink" href="#module-lmflow.optim.sgdp" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.sgdp.SGDP" title="lmflow.optim.sgdp.SGDP"><code class="xref py py-obj docutils literal notranslate"><span class="pre">SGDP</span></code></a></p></td> +<td><p>Implements SGDP algorithm.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.sgdp.SGDP"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.sgdp.</span></span><span class="sig-name descname"><span class="pre">SGDP</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.001</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">momentum</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dampening</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">1e-08</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">delta</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">wd_ratio</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nesterov</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/sgdp.html#SGDP"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.sgdp.SGDP" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.optimizer.Optimizer</span></code></p> +<p>Implements SGDP algorithm.</p> +<p>It has been proposed in <cite>Slowing Down the Weight Norm Increase in +Momentum-based Optimizers</cite>. +<a class="reference external" href="https://arxiv.org/abs/2006.08217">https://arxiv.org/abs/2006.08217</a></p> +<dl class="simple"> +<dt>Note:</dt><dd><p>Reference code: <a class="github reference external" href="https://github.com/clovaai/AdamP">clovaai/AdamP</a></p> +</dd> +</dl> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.sgdp.SGDP._channel_view"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">_channel_view</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/sgdp.html#SGDP._channel_view"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.sgdp.SGDP._channel_view" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.sgdp.SGDP._layer_view"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">_layer_view</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/sgdp.html#SGDP._layer_view"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.sgdp.SGDP._layer_view" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.sgdp.SGDP._cosine_similarity"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">_cosine_similarity</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">view_func</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/sgdp.html#SGDP._cosine_similarity"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.sgdp.SGDP._cosine_similarity" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.sgdp.SGDP._projection"> +<span class="sig-name descname"><span class="pre">_projection</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">p</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">grad</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">perturb</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">delta</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">wd_ratio</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/sgdp.html#SGDP._projection"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.sgdp.SGDP._projection" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.sgdp.SGDP.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/sgdp.html#SGDP.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.sgdp.SGDP.step" title="Link to this definition">#</a></dt> +<dd><p>Performs a single optimization step.</p> +<dl class="simple"> +<dt>Arguments:</dt><dd><p>closure: A closure that reevaluates the model and returns the loss.</p> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../sgd_schedule_free/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.sgd_schedule_free</p> + </div> + </a> + <a class="right-next" + href="../sophia/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.sophia</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.sgdp.SGDP"><code class="docutils literal notranslate"><span class="pre">SGDP</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.sgdp.SGDP._channel_view"><code class="docutils literal notranslate"><span class="pre">SGDP._channel_view()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.sgdp.SGDP._layer_view"><code class="docutils literal notranslate"><span class="pre">SGDP._layer_view()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.sgdp.SGDP._cosine_similarity"><code class="docutils literal notranslate"><span class="pre">SGDP._cosine_similarity()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.sgdp.SGDP._projection"><code class="docutils literal notranslate"><span class="pre">SGDP._projection()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.sgdp.SGDP.step"><code class="docutils literal notranslate"><span class="pre">SGDP.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/sgdp/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/sophia/index.html b/autoapi/lmflow/optim/sophia/index.html new file mode 100644 index 000000000..eec9af271 --- /dev/null +++ b/autoapi/lmflow/optim/sophia/index.html @@ -0,0 +1,678 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.sophia &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/sophia/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.optim.yogi" href="../yogi/index.html" /> + <link rel="prev" title="lmflow.optim.sgdp" href="../sgdp/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.sophia</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.sophia"> +<span id="lmflow-optim-sophia"></span><h1>lmflow.optim.sophia<a class="headerlink" href="#module-lmflow.optim.sophia" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.sophia.SophiaG" title="lmflow.optim.sophia.SophiaG"><code class="xref py py-obj docutils literal notranslate"><span class="pre">SophiaG</span></code></a></p></td> +<td><p>Sophia: A Scalable Stochastic Second-order Optimizer for Language Model Pre-training.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.sophia.SophiaG"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.sophia.</span></span><span class="sig-name descname"><span class="pre">SophiaG</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.0001</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">betas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">(0.965,</span> <span class="pre">0.99)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rho</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.04</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.1</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">maximize</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">capturable</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/sophia.html#SophiaG"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.sophia.SophiaG" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.optimizer.Optimizer</span></code></p> +<p>Sophia: A Scalable Stochastic Second-order Optimizer for Language Model Pre-training. +Code from: <a class="github reference external" href="https://github.com/Liuhong99/Sophia/">Liuhong99/Sophia</a></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.sophia.SophiaG.__setstate__"> +<span class="sig-name descname"><span class="pre">__setstate__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/sophia.html#SophiaG.__setstate__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.sophia.SophiaG.__setstate__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.sophia.SophiaG.update_hessian"> +<span class="sig-name descname"><span class="pre">update_hessian</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/sophia.html#SophiaG.update_hessian"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.sophia.SophiaG.update_hessian" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.sophia.SophiaG.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">5120</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/sophia.html#SophiaG.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.sophia.SophiaG.step" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../sgdp/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.sgdp</p> + </div> + </a> + <a class="right-next" + href="../yogi/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.optim.yogi</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.sophia.SophiaG"><code class="docutils literal notranslate"><span class="pre">SophiaG</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.sophia.SophiaG.__setstate__"><code class="docutils literal notranslate"><span class="pre">SophiaG.__setstate__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.sophia.SophiaG.update_hessian"><code class="docutils literal notranslate"><span class="pre">SophiaG.update_hessian()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.sophia.SophiaG.step"><code class="docutils literal notranslate"><span class="pre">SophiaG.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/sophia/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/optim/yogi/index.html b/autoapi/lmflow/optim/yogi/index.html new file mode 100644 index 000000000..67680915b --- /dev/null +++ b/autoapi/lmflow/optim/yogi/index.html @@ -0,0 +1,676 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.optim.yogi &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/optim/yogi/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline" href="../../pipeline/index.html" /> + <link rel="prev" title="lmflow.optim.sophia" href="../sophia/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.optim</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.optim</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.optim.yogi</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.optim.yogi"> +<span id="lmflow-optim-yogi"></span><h1>lmflow.optim.yogi<a class="headerlink" href="#module-lmflow.optim.yogi" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.optim.yogi.Yogi" title="lmflow.optim.yogi.Yogi"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Yogi</span></code></a></p></td> +<td><p>Implements Yogi Optimizer Algorithm.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.optim.yogi.Yogi"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.optim.yogi.</span></span><span class="sig-name descname"><span class="pre">Yogi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">params</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lr</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.01</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">betas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">(0.9,</span> <span class="pre">0.999)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.001</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">initial_accumulator</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">1e-06</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/yogi.html#Yogi"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.yogi.Yogi" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.optim.optimizer.Optimizer</span></code></p> +<p>Implements Yogi Optimizer Algorithm. +It has been proposed in <cite>Adaptive methods for Nonconvex Optimization</cite>.</p> +<p><a class="reference external" href="https://papers.nips.cc/paper/8186-adaptive-methods-for-nonconvex-optimization">https://papers.nips.cc/paper/8186-adaptive-methods-for-nonconvex-optimization</a> # noqa</p> +<dl class="simple"> +<dt>Note:</dt><dd><p>Reference code: <a class="github reference external" href="https://github.com/4rtemi5/Yogi-Optimizer_Keras">4rtemi5/Yogi-Optimizer_Keras</a></p> +</dd> +</dl> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.optim.yogi.Yogi.step"> +<span class="sig-name descname"><span class="pre">step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">closure</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/optim/yogi.html#Yogi.step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.optim.yogi.Yogi.step" title="Link to this definition">#</a></dt> +<dd><p>Performs a single optimization step.</p> +<dl class="simple"> +<dt>Arguments:</dt><dd><p>closure: A closure that reevaluates the model and returns the loss.</p> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../sophia/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.sophia</p> + </div> + </a> + <a class="right-next" + href="../../pipeline/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.yogi.Yogi"><code class="docutils literal notranslate"><span class="pre">Yogi</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.optim.yogi.Yogi.step"><code class="docutils literal notranslate"><span class="pre">Yogi.step()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/optim/yogi/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/auto_pipeline/index.html b/autoapi/lmflow/pipeline/auto_pipeline/index.html new file mode 100644 index 000000000..aa29c910e --- /dev/null +++ b/autoapi/lmflow/pipeline/auto_pipeline/index.html @@ -0,0 +1,692 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.auto_pipeline &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/auto_pipeline/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.base_aligner" href="../base_aligner/index.html" /> + <link rel="prev" title="lmflow.pipeline" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.auto_pipeline</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.auto_pipeline"> +<span id="lmflow-pipeline-auto-pipeline"></span><h1>lmflow.pipeline.auto_pipeline<a class="headerlink" href="#module-lmflow.pipeline.auto_pipeline" title="Link to this heading">#</a></h1> +<p>Return a pipeline automatically based on its name.</p> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.auto_pipeline.PIPELINE_MAPPING" title="lmflow.pipeline.auto_pipeline.PIPELINE_MAPPING"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PIPELINE_MAPPING</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.auto_pipeline.PIPELINE_NEEDS_EXTRAS" title="lmflow.pipeline.auto_pipeline.PIPELINE_NEEDS_EXTRAS"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PIPELINE_NEEDS_EXTRAS</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.auto_pipeline.AutoPipeline" title="lmflow.pipeline.auto_pipeline.AutoPipeline"><code class="xref py py-obj docutils literal notranslate"><span class="pre">AutoPipeline</span></code></a></p></td> +<td><p>The class designed to return a pipeline automatically based on its name.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.auto_pipeline.PIPELINE_MAPPING"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.auto_pipeline.</span></span><span class="sig-name descname"><span class="pre">PIPELINE_MAPPING</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/auto_pipeline.html#PIPELINE_MAPPING"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.auto_pipeline.PIPELINE_MAPPING" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.auto_pipeline.PIPELINE_NEEDS_EXTRAS"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.auto_pipeline.</span></span><span class="sig-name descname"><span class="pre">PIPELINE_NEEDS_EXTRAS</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">[]</span></em><a class="reference internal" href="../../../../_modules/lmflow/pipeline/auto_pipeline.html#PIPELINE_NEEDS_EXTRAS"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.auto_pipeline.PIPELINE_NEEDS_EXTRAS" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.auto_pipeline.AutoPipeline"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.auto_pipeline.</span></span><span class="sig-name descname"><span class="pre">AutoPipeline</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/auto_pipeline.html#AutoPipeline"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.auto_pipeline.AutoPipeline" title="Link to this definition">#</a></dt> +<dd><p>The class designed to return a pipeline automatically based on its name.</p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.auto_pipeline.AutoPipeline.get_pipeline"> +<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_pipeline</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pipeline_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pipeline_args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/auto_pipeline.html#AutoPipeline.get_pipeline"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.auto_pipeline.AutoPipeline.get_pipeline" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline</p> + </div> + </a> + <a class="right-next" + href="../base_aligner/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.base_aligner</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.auto_pipeline.PIPELINE_MAPPING"><code class="docutils literal notranslate"><span class="pre">PIPELINE_MAPPING</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.auto_pipeline.PIPELINE_NEEDS_EXTRAS"><code class="docutils literal notranslate"><span class="pre">PIPELINE_NEEDS_EXTRAS</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.auto_pipeline.AutoPipeline"><code class="docutils literal notranslate"><span class="pre">AutoPipeline</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.auto_pipeline.AutoPipeline.get_pipeline"><code class="docutils literal notranslate"><span class="pre">AutoPipeline.get_pipeline()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/auto_pipeline/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/base_aligner/index.html b/autoapi/lmflow/pipeline/base_aligner/index.html new file mode 100644 index 000000000..d4c3e1511 --- /dev/null +++ b/autoapi/lmflow/pipeline/base_aligner/index.html @@ -0,0 +1,672 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.base_aligner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/base_aligner/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.base_pipeline" href="../base_pipeline/index.html" /> + <link rel="prev" title="lmflow.pipeline.auto_pipeline" href="../auto_pipeline/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.base_aligner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.base_aligner"> +<span id="lmflow-pipeline-base-aligner"></span><h1>lmflow.pipeline.base_aligner<a class="headerlink" href="#module-lmflow.pipeline.base_aligner" title="Link to this heading">#</a></h1> +<p>BaseTuner: a subclass of BasePipeline.</p> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.base_aligner.BaseAligner" title="lmflow.pipeline.base_aligner.BaseAligner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">BaseAligner</span></code></a></p></td> +<td><p>A subclass of BasePipeline which is alignable.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.base_aligner.BaseAligner"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.base_aligner.</span></span><span class="sig-name descname"><span class="pre">BaseAligner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/base_aligner.html#BaseAligner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.base_aligner.BaseAligner" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base_pipeline/index.html#lmflow.pipeline.base_pipeline.BasePipeline" title="lmflow.pipeline.base_pipeline.BasePipeline"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.pipeline.base_pipeline.BasePipeline</span></code></a></p> +<p>A subclass of BasePipeline which is alignable.</p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.base_aligner.BaseAligner._check_if_alignable"> +<span class="sig-name descname"><span class="pre">_check_if_alignable</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reward_model</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/base_aligner.html#BaseAligner._check_if_alignable"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.base_aligner.BaseAligner._check_if_alignable" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.base_aligner.BaseAligner.align"> +<em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">align</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reward_model</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/base_aligner.html#BaseAligner.align"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.base_aligner.BaseAligner.align" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../auto_pipeline/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.auto_pipeline</p> + </div> + </a> + <a class="right-next" + href="../base_pipeline/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.base_pipeline</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.base_aligner.BaseAligner"><code class="docutils literal notranslate"><span class="pre">BaseAligner</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.base_aligner.BaseAligner._check_if_alignable"><code class="docutils literal notranslate"><span class="pre">BaseAligner._check_if_alignable()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.base_aligner.BaseAligner.align"><code class="docutils literal notranslate"><span class="pre">BaseAligner.align()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/base_aligner/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/base_pipeline/index.html b/autoapi/lmflow/pipeline/base_pipeline/index.html new file mode 100644 index 000000000..e600a5c9d --- /dev/null +++ b/autoapi/lmflow/pipeline/base_pipeline/index.html @@ -0,0 +1,659 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.base_pipeline &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/base_pipeline/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.base_tuner" href="../base_tuner/index.html" /> + <link rel="prev" title="lmflow.pipeline.base_aligner" href="../base_aligner/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.base_pipeline</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.base_pipeline"> +<span id="lmflow-pipeline-base-pipeline"></span><h1>lmflow.pipeline.base_pipeline<a class="headerlink" href="#module-lmflow.pipeline.base_pipeline" title="Link to this heading">#</a></h1> +<p>BasePipeline.</p> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.base_pipeline.BasePipeline" title="lmflow.pipeline.base_pipeline.BasePipeline"><code class="xref py py-obj docutils literal notranslate"><span class="pre">BasePipeline</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.base_pipeline.BasePipeline"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.base_pipeline.</span></span><span class="sig-name descname"><span class="pre">BasePipeline</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/base_pipeline.html#BasePipeline"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.base_pipeline.BasePipeline" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">abc.ABC</span></code></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../base_aligner/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.base_aligner</p> + </div> + </a> + <a class="right-next" + href="../base_tuner/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.base_tuner</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.base_pipeline.BasePipeline"><code class="docutils literal notranslate"><span class="pre">BasePipeline</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/base_pipeline/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/base_tuner/index.html b/autoapi/lmflow/pipeline/base_tuner/index.html new file mode 100644 index 000000000..1abcde6e3 --- /dev/null +++ b/autoapi/lmflow/pipeline/base_tuner/index.html @@ -0,0 +1,672 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.base_tuner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/base_tuner/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.dpo_aligner" href="../dpo_aligner/index.html" /> + <link rel="prev" title="lmflow.pipeline.base_pipeline" href="../base_pipeline/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.base_tuner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.base_tuner"> +<span id="lmflow-pipeline-base-tuner"></span><h1>lmflow.pipeline.base_tuner<a class="headerlink" href="#module-lmflow.pipeline.base_tuner" title="Link to this heading">#</a></h1> +<p>BaseTuner: a subclass of BasePipeline.</p> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.base_tuner.BaseTuner" title="lmflow.pipeline.base_tuner.BaseTuner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">BaseTuner</span></code></a></p></td> +<td><p>A subclass of BasePipeline which is tunable.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.base_tuner.BaseTuner"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.base_tuner.</span></span><span class="sig-name descname"><span class="pre">BaseTuner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/base_tuner.html#BaseTuner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.base_tuner.BaseTuner" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base_pipeline/index.html#lmflow.pipeline.base_pipeline.BasePipeline" title="lmflow.pipeline.base_pipeline.BasePipeline"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.pipeline.base_pipeline.BasePipeline</span></code></a></p> +<p>A subclass of BasePipeline which is tunable.</p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.base_tuner.BaseTuner._check_if_tunable"> +<span class="sig-name descname"><span class="pre">_check_if_tunable</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/base_tuner.html#BaseTuner._check_if_tunable"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.base_tuner.BaseTuner._check_if_tunable" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.base_tuner.BaseTuner.tune"> +<em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">tune</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/base_tuner.html#BaseTuner.tune"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.base_tuner.BaseTuner.tune" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../base_pipeline/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.base_pipeline</p> + </div> + </a> + <a class="right-next" + href="../dpo_aligner/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.dpo_aligner</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.base_tuner.BaseTuner"><code class="docutils literal notranslate"><span class="pre">BaseTuner</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.base_tuner.BaseTuner._check_if_tunable"><code class="docutils literal notranslate"><span class="pre">BaseTuner._check_if_tunable()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.base_tuner.BaseTuner.tune"><code class="docutils literal notranslate"><span class="pre">BaseTuner.tune()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/base_tuner/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/dpo_aligner/index.html b/autoapi/lmflow/pipeline/dpo_aligner/index.html new file mode 100644 index 000000000..1f6151b93 --- /dev/null +++ b/autoapi/lmflow/pipeline/dpo_aligner/index.html @@ -0,0 +1,740 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.dpo_aligner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/dpo_aligner/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.dpov2_aligner" href="../dpov2_aligner/index.html" /> + <link rel="prev" title="lmflow.pipeline.base_tuner" href="../base_tuner/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.dpo_aligner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.dpo_aligner"> +<span id="lmflow-pipeline-dpo-aligner"></span><h1>lmflow.pipeline.dpo_aligner<a class="headerlink" href="#module-lmflow.pipeline.dpo_aligner" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.dpo_aligner.DPOAligner" title="lmflow.pipeline.dpo_aligner.DPOAligner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DPOAligner</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.dpo_aligner.get_paired_dataset" title="lmflow.pipeline.dpo_aligner.get_paired_dataset"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_paired_dataset</span></code></a>(→ datasets.Dataset)</p></td> +<td><p>Load dataset and convert it to the necessary format.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpo_aligner.get_paired_dataset"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.dpo_aligner.</span></span><span class="sig-name descname"><span class="pre">get_paired_dataset</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data_root</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_dir</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sanity_check</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cache_dir</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">num_proc</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">24</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../../datasets/index.html#lmflow.datasets.Dataset" title="lmflow.datasets.Dataset"><span class="pre">datasets.Dataset</span></a></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpo_aligner.html#get_paired_dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpo_aligner.get_paired_dataset" title="Link to this definition">#</a></dt> +<dd><p>Load dataset and convert it to the necessary format.</p> +<blockquote> +<div><p>The dataset is converted to a dictionary with the following structure: +{</p> +<blockquote> +<div><p>‘prompt’: List[str], +‘chosen’: List[str], +‘rejected’: List[str],</p> +</div></blockquote> +<p>}</p> +<dl class="simple"> +<dt>Prompts are structured as follows:</dt><dd><p>“Question: “ + &lt;prompt&gt; + “</p> +</dd> +</dl> +</div></blockquote> +<p>Answer: “</p> +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpo_aligner.DPOAligner"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.dpo_aligner.</span></span><span class="sig-name descname"><span class="pre">DPOAligner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">aligner_args</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpo_aligner.html#DPOAligner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpo_aligner.DPOAligner" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base_aligner/index.html#lmflow.pipeline.base_aligner.BaseAligner" title="lmflow.pipeline.base_aligner.BaseAligner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.pipeline.base_aligner.BaseAligner</span></code></a></p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpo_aligner.DPOAligner.model_args"> +<span class="sig-name descname"><span class="pre">model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpo_aligner.html#DPOAligner.model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpo_aligner.DPOAligner.model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpo_aligner.DPOAligner.data_args"> +<span class="sig-name descname"><span class="pre">data_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpo_aligner.html#DPOAligner.data_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpo_aligner.DPOAligner.data_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpo_aligner.DPOAligner.aligner_args"> +<span class="sig-name descname"><span class="pre">aligner_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpo_aligner.html#DPOAligner.aligner_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpo_aligner.DPOAligner.aligner_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpo_aligner.DPOAligner.train_dataset"> +<span class="sig-name descname"><span class="pre">train_dataset</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpo_aligner.html#DPOAligner.train_dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpo_aligner.DPOAligner.train_dataset" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpo_aligner.DPOAligner.eval_dataset"> +<span class="sig-name descname"><span class="pre">eval_dataset</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpo_aligner.html#DPOAligner.eval_dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpo_aligner.DPOAligner.eval_dataset" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpo_aligner.DPOAligner._initialize_trainer"> +<span class="sig-name descname"><span class="pre">_initialize_trainer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpo_aligner.html#DPOAligner._initialize_trainer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpo_aligner.DPOAligner._initialize_trainer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpo_aligner.DPOAligner._load_dataset"> +<span class="sig-name descname"><span class="pre">_load_dataset</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpo_aligner.html#DPOAligner._load_dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpo_aligner.DPOAligner._load_dataset" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpo_aligner.DPOAligner.align"> +<span class="sig-name descname"><span class="pre">align</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reward_model</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpo_aligner.html#DPOAligner.align"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpo_aligner.DPOAligner.align" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../base_tuner/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.base_tuner</p> + </div> + </a> + <a class="right-next" + href="../dpov2_aligner/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.dpov2_aligner</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpo_aligner.get_paired_dataset"><code class="docutils literal notranslate"><span class="pre">get_paired_dataset()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpo_aligner.DPOAligner"><code class="docutils literal notranslate"><span class="pre">DPOAligner</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpo_aligner.DPOAligner.model_args"><code class="docutils literal notranslate"><span class="pre">DPOAligner.model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpo_aligner.DPOAligner.data_args"><code class="docutils literal notranslate"><span class="pre">DPOAligner.data_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpo_aligner.DPOAligner.aligner_args"><code class="docutils literal notranslate"><span class="pre">DPOAligner.aligner_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpo_aligner.DPOAligner.train_dataset"><code class="docutils literal notranslate"><span class="pre">DPOAligner.train_dataset</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpo_aligner.DPOAligner.eval_dataset"><code class="docutils literal notranslate"><span class="pre">DPOAligner.eval_dataset</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpo_aligner.DPOAligner._initialize_trainer"><code class="docutils literal notranslate"><span class="pre">DPOAligner._initialize_trainer()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpo_aligner.DPOAligner._load_dataset"><code class="docutils literal notranslate"><span class="pre">DPOAligner._load_dataset()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpo_aligner.DPOAligner.align"><code class="docutils literal notranslate"><span class="pre">DPOAligner.align()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/dpo_aligner/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/dpov2_aligner/index.html b/autoapi/lmflow/pipeline/dpov2_aligner/index.html new file mode 100644 index 000000000..b0e2f781c --- /dev/null +++ b/autoapi/lmflow/pipeline/dpov2_aligner/index.html @@ -0,0 +1,813 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.dpov2_aligner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/dpov2_aligner/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.evaluator" href="../evaluator/index.html" /> + <link rel="prev" title="lmflow.pipeline.dpo_aligner" href="../dpo_aligner/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.dpov2_aligner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.dpov2_aligner"> +<span id="lmflow-pipeline-dpov2-aligner"></span><h1>lmflow.pipeline.dpov2_aligner<a class="headerlink" href="#module-lmflow.pipeline.dpov2_aligner" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.dpov2_aligner.logger" title="lmflow.pipeline.dpov2_aligner.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.dpov2_aligner.ReferenceModelArguments" title="lmflow.pipeline.dpov2_aligner.ReferenceModelArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ReferenceModelArguments</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner" title="lmflow.pipeline.dpov2_aligner.DPOv2Aligner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DPOv2Aligner</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner" title="lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">MemorySafeDPOv2Aligner</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.dpov2_aligner.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.ReferenceModelArguments"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.dpov2_aligner.</span></span><span class="sig-name descname"><span class="pre">ReferenceModelArguments</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#ReferenceModelArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.ReferenceModelArguments" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.DPOv2Aligner"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.dpov2_aligner.</span></span><span class="sig-name descname"><span class="pre">DPOv2Aligner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">aligner_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DPOv2AlignerArguments" title="lmflow.args.DPOv2AlignerArguments"><span class="pre">lmflow.args.DPOv2AlignerArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">ref_model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#DPOv2Aligner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base_aligner/index.html#lmflow.pipeline.base_aligner.BaseAligner" title="lmflow.pipeline.base_aligner.BaseAligner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.pipeline.base_aligner.BaseAligner</span></code></a></p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.DPOv2Aligner.model_args"> +<span class="sig-name descname"><span class="pre">model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#DPOv2Aligner.model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.DPOv2Aligner.ref_model_args"> +<span class="sig-name descname"><span class="pre">ref_model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#DPOv2Aligner.ref_model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.ref_model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.DPOv2Aligner.data_args"> +<span class="sig-name descname"><span class="pre">data_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#DPOv2Aligner.data_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.data_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.DPOv2Aligner.aligner_args"> +<span class="sig-name descname"><span class="pre">aligner_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#DPOv2Aligner.aligner_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.aligner_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.DPOv2Aligner.align"> +<span class="sig-name descname"><span class="pre">align</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel" title="lmflow.models.hf_decoder_model.HFDecoderModel"><span class="pre">lmflow.models.hf_decoder_model.HFDecoderModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">ref_model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel" title="lmflow.models.hf_decoder_model.HFDecoderModel"><span class="pre">lmflow.models.hf_decoder_model.HFDecoderModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">train_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">eval_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">transform_dataset_in_place</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#DPOv2Aligner.align"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.align" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.DPOv2Aligner.__prepare_training_args"> +<span class="sig-name descname"><span class="pre">__prepare_training_args</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DPOv2AlignerArguments" title="lmflow.args.DPOv2AlignerArguments"><span class="pre">lmflow.args.DPOv2AlignerArguments</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">transformers.TrainingArguments</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#DPOv2Aligner.__prepare_training_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.__prepare_training_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.DPOv2Aligner.convert_to_paired_dataset"> +<span class="sig-name descname"><span class="pre">convert_to_paired_dataset</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">source_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">sampling_paired_method</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'random'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">length_penalty</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">margin_scale</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">1.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_fast</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#DPOv2Aligner.convert_to_paired_dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.convert_to_paired_dataset" title="Link to this definition">#</a></dt> +<dd><p>Convert a scored one to multiple (text_to_scored_textlist) to a paired dataset by rejection sampling.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.DPOv2Aligner._calc_response_lengths"> +<span class="sig-name descname"><span class="pre">_calc_response_lengths</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">outputs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#DPOv2Aligner._calc_response_lengths"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._calc_response_lengths" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.DPOv2Aligner._calc_reward_with_length_penalty"> +<span class="sig-name descname"><span class="pre">_calc_reward_with_length_penalty</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rewards</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">float</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lengths</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">length_penalty</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">float</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#DPOv2Aligner._calc_reward_with_length_penalty"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._calc_reward_with_length_penalty" title="Link to this definition">#</a></dt> +<dd><p>When length_penalty &gt; 0, penalize the longer sequence by subtracting +length_penalty * length from the reward. Vice versa when length_penalty &lt; 0.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.DPOv2Aligner.sampling_paired_idx_from_rewards"> +<span class="sig-name descname"><span class="pre">sampling_paired_idx_from_rewards</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rewards</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">float</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sampling_paired_method</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'random'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_fast</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#DPOv2Aligner.sampling_paired_idx_from_rewards"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.sampling_paired_idx_from_rewards" title="Link to this definition">#</a></dt> +<dd><p>Prepare the dataset for DPO training by rejection sampling. +We implement different strategies to select pairs, including +random: randomly select two instances +max_min: best v.s. worst +max_max: best v.s. second best +max_random: best v.s. random from the remaining</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.DPOv2Aligner._sampling_paired_idx_from_rewards"> +<span class="sig-name descname"><span class="pre">_sampling_paired_idx_from_rewards</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rewards</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">float</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sampling_paired_method</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'random'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#DPOv2Aligner._sampling_paired_idx_from_rewards"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._sampling_paired_idx_from_rewards" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.DPOv2Aligner._sampling_paired_idx_from_rewards_fast"> +<span class="sig-name descname"><span class="pre">_sampling_paired_idx_from_rewards_fast</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rewards</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">float</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sampling_paired_method</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'random'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#DPOv2Aligner._sampling_paired_idx_from_rewards_fast"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._sampling_paired_idx_from_rewards_fast" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.dpov2_aligner.</span></span><span class="sig-name descname"><span class="pre">MemorySafeDPOv2Aligner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">aligner_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DPOv2AlignerArguments" title="lmflow.args.DPOv2AlignerArguments"><span class="pre">lmflow.args.DPOv2AlignerArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">ref_model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#MemorySafeDPOv2Aligner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner" title="Link to this definition">#</a></dt> +<dd><dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.model_args"> +<span class="sig-name descname"><span class="pre">model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#MemorySafeDPOv2Aligner.model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.ref_model_args"> +<span class="sig-name descname"><span class="pre">ref_model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#MemorySafeDPOv2Aligner.ref_model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.ref_model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.data_args"> +<span class="sig-name descname"><span class="pre">data_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#MemorySafeDPOv2Aligner.data_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.data_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.aligner_args"> +<span class="sig-name descname"><span class="pre">aligner_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#MemorySafeDPOv2Aligner.aligner_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.aligner_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.aligner_file_path"> +<span class="sig-name descname"><span class="pre">aligner_file_path</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#MemorySafeDPOv2Aligner.aligner_file_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.aligner_file_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.align"> +<span class="sig-name descname"><span class="pre">align</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/dpov2_aligner.html#MemorySafeDPOv2Aligner.align"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.align" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../dpo_aligner/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.dpo_aligner</p> + </div> + </a> + <a class="right-next" + href="../evaluator/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.evaluator</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.ReferenceModelArguments"><code class="docutils literal notranslate"><span class="pre">ReferenceModelArguments</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner"><code class="docutils literal notranslate"><span class="pre">DPOv2Aligner</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.model_args"><code class="docutils literal notranslate"><span class="pre">DPOv2Aligner.model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.ref_model_args"><code class="docutils literal notranslate"><span class="pre">DPOv2Aligner.ref_model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.data_args"><code class="docutils literal notranslate"><span class="pre">DPOv2Aligner.data_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.aligner_args"><code class="docutils literal notranslate"><span class="pre">DPOv2Aligner.aligner_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.align"><code class="docutils literal notranslate"><span class="pre">DPOv2Aligner.align()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.__prepare_training_args"><code class="docutils literal notranslate"><span class="pre">DPOv2Aligner.__prepare_training_args()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.convert_to_paired_dataset"><code class="docutils literal notranslate"><span class="pre">DPOv2Aligner.convert_to_paired_dataset()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._calc_response_lengths"><code class="docutils literal notranslate"><span class="pre">DPOv2Aligner._calc_response_lengths()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._calc_reward_with_length_penalty"><code class="docutils literal notranslate"><span class="pre">DPOv2Aligner._calc_reward_with_length_penalty()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.sampling_paired_idx_from_rewards"><code class="docutils literal notranslate"><span class="pre">DPOv2Aligner.sampling_paired_idx_from_rewards()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._sampling_paired_idx_from_rewards"><code class="docutils literal notranslate"><span class="pre">DPOv2Aligner._sampling_paired_idx_from_rewards()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._sampling_paired_idx_from_rewards_fast"><code class="docutils literal notranslate"><span class="pre">DPOv2Aligner._sampling_paired_idx_from_rewards_fast()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner"><code class="docutils literal notranslate"><span class="pre">MemorySafeDPOv2Aligner</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.model_args"><code class="docutils literal notranslate"><span class="pre">MemorySafeDPOv2Aligner.model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.ref_model_args"><code class="docutils literal notranslate"><span class="pre">MemorySafeDPOv2Aligner.ref_model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.data_args"><code class="docutils literal notranslate"><span class="pre">MemorySafeDPOv2Aligner.data_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.aligner_args"><code class="docutils literal notranslate"><span class="pre">MemorySafeDPOv2Aligner.aligner_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.aligner_file_path"><code class="docutils literal notranslate"><span class="pre">MemorySafeDPOv2Aligner.aligner_file_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.align"><code class="docutils literal notranslate"><span class="pre">MemorySafeDPOv2Aligner.align()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/dpov2_aligner/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/evaluator/index.html b/autoapi/lmflow/pipeline/evaluator/index.html new file mode 100644 index 000000000..d78383a83 --- /dev/null +++ b/autoapi/lmflow/pipeline/evaluator/index.html @@ -0,0 +1,777 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.evaluator &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/evaluator/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.finetuner" href="../finetuner/index.html" /> + <link rel="prev" title="lmflow.pipeline.dpov2_aligner" href="../dpov2_aligner/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.evaluator</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.evaluator"> +<span id="lmflow-pipeline-evaluator"></span><h1>lmflow.pipeline.evaluator<a class="headerlink" href="#module-lmflow.pipeline.evaluator" title="Link to this heading">#</a></h1> +<p>The Evaluator class simplifies the process of running evaluation on a language model provided by a HFDecoderModel instance imported from the lmflow package. The class constructor takes three dictionaries as arguments: model_args containing arguments related to the language model, data_args containing arguments related to the data used for evaluation, and evaluator_args containing other arguments for the evaluation process.</p> +<p>The class has two methods: create_dataloader() that loads the data from the test file, creates a data loader, and returns it with the size of the data, and evaluate(model) that generates output text given input text. It uses the create_dataloader() method to load the data, iterates over the data in mini-batches, and encodes the input text with the encode() method of the HFDecoderModel class. Then, it generates output text using the evaluate() method of the HFDecoderModel class, decodes the generated output text using the decode() method of the HFDecoderModel class, and writes the output to a file in the output directory. The method also logs some information to the console and Weights and Biases if the use_wandb argument is True.</p> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.evaluator.Evaluator" title="lmflow.pipeline.evaluator.Evaluator"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Evaluator</span></code></a></p></td> +<td><p>Initializes the <cite>Evaluator</cite> class with given arguments.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.evaluator.</span></span><span class="sig-name descname"><span class="pre">Evaluator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">evaluator_args</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base_pipeline/index.html#lmflow.pipeline.base_pipeline.BasePipeline" title="lmflow.pipeline.base_pipeline.BasePipeline"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.pipeline.base_pipeline.BasePipeline</span></code></a></p> +<p>Initializes the <cite>Evaluator</cite> class with given arguments.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model_args</strong><span class="classifier">ModelArguments object.</span></dt><dd><p>Contains the arguments required to load the model.</p> +</dd> +<dt><strong>data_args</strong><span class="classifier">DatasetArguments object.</span></dt><dd><p>Contains the arguments required to load the dataset.</p> +</dd> +<dt><strong>evaluator_args</strong><span class="classifier">EvaluatorArguments object.</span></dt><dd><p>Contains the arguments required to perform evaluation.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator.data_args"> +<span class="sig-name descname"><span class="pre">data_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator.data_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator.data_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator.evaluator_args"> +<span class="sig-name descname"><span class="pre">evaluator_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator.evaluator_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator.evaluator_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator.model_args"> +<span class="sig-name descname"><span class="pre">model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator.model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator.model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator.local_rank"> +<span class="sig-name descname"><span class="pre">local_rank</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator.local_rank"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator.local_rank" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator.world_size"> +<span class="sig-name descname"><span class="pre">world_size</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator.world_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator.world_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator.config"> +<span class="sig-name descname"><span class="pre">config</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator.config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator.config" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator.block_size"> +<span class="sig-name descname"><span class="pre">block_size</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator.block_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator.block_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator.create_dataloader"> +<span class="sig-name descname"><span class="pre">create_dataloader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator.create_dataloader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator.create_dataloader" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator._match"> +<span class="sig-name descname"><span class="pre">_match</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">predicted_answer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">groundtruth</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">answer_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator._match"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator._match" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator.evaluate"> +<span class="sig-name descname"><span class="pre">evaluate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">metric</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'accuracy'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator.evaluate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator.evaluate" title="Link to this definition">#</a></dt> +<dd><p>Perform Evaluation for a model</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model</strong><span class="classifier">TunableModel object.</span></dt><dd><p>TunableModel to perform inference</p> +</dd> +<dt><strong>dataset</strong><span class="classifier">Dataset object.</span></dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator._evaluate_acc_with_accelerator"> +<span class="sig-name descname"><span class="pre">_evaluate_acc_with_accelerator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator._evaluate_acc_with_accelerator"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator._evaluate_acc_with_accelerator" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator._evaluate_acc_with_deepspeed"> +<span class="sig-name descname"><span class="pre">_evaluate_acc_with_deepspeed</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator._evaluate_acc_with_deepspeed"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator._evaluate_acc_with_deepspeed" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator._evaluate_ppl"> +<span class="sig-name descname"><span class="pre">_evaluate_ppl</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator._evaluate_ppl"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator._evaluate_ppl" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.evaluator.Evaluator._evaluate_nll"> +<span class="sig-name descname"><span class="pre">_evaluate_nll</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/evaluator.html#Evaluator._evaluate_nll"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.evaluator.Evaluator._evaluate_nll" title="Link to this definition">#</a></dt> +<dd><p>Evaluates negative log likelihood of the model over a dataset.</p> +<p>NLL = -1/N sum_{i=1}^N sum_{j=1}^|w_i| ln(p(w_{i,j}|context_window)),</p> +<p>where N is the number of data samples, w_{i,j} is the j-th token in +i-th sample. Here “context_window” = p(w_{i,start}, w_{i,start+1}, …, +p_{i,j-1} with start = max(0, j - window_length + 1). “window_length” +is normally the maximum length accepted by the model.</p> +<dl class="simple"> +<dt>Returns:</dt><dd><p>A float which represents the negative log likelihood.</p> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../dpov2_aligner/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.dpov2_aligner</p> + </div> + </a> + <a class="right-next" + href="../finetuner/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.finetuner</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator"><code class="docutils literal notranslate"><span class="pre">Evaluator</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator.data_args"><code class="docutils literal notranslate"><span class="pre">Evaluator.data_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator.evaluator_args"><code class="docutils literal notranslate"><span class="pre">Evaluator.evaluator_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator.model_args"><code class="docutils literal notranslate"><span class="pre">Evaluator.model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator.local_rank"><code class="docutils literal notranslate"><span class="pre">Evaluator.local_rank</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator.world_size"><code class="docutils literal notranslate"><span class="pre">Evaluator.world_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator.config"><code class="docutils literal notranslate"><span class="pre">Evaluator.config</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator.block_size"><code class="docutils literal notranslate"><span class="pre">Evaluator.block_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator.create_dataloader"><code class="docutils literal notranslate"><span class="pre">Evaluator.create_dataloader()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator._match"><code class="docutils literal notranslate"><span class="pre">Evaluator._match()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator.evaluate"><code class="docutils literal notranslate"><span class="pre">Evaluator.evaluate()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator._evaluate_acc_with_accelerator"><code class="docutils literal notranslate"><span class="pre">Evaluator._evaluate_acc_with_accelerator()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator._evaluate_acc_with_deepspeed"><code class="docutils literal notranslate"><span class="pre">Evaluator._evaluate_acc_with_deepspeed()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator._evaluate_ppl"><code class="docutils literal notranslate"><span class="pre">Evaluator._evaluate_ppl()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.evaluator.Evaluator._evaluate_nll"><code class="docutils literal notranslate"><span class="pre">Evaluator._evaluate_nll()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/evaluator/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/finetuner/index.html b/autoapi/lmflow/pipeline/finetuner/index.html new file mode 100644 index 000000000..b4c4c5080 --- /dev/null +++ b/autoapi/lmflow/pipeline/finetuner/index.html @@ -0,0 +1,749 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.finetuner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/finetuner/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.inferencer" href="../inferencer/index.html" /> + <link rel="prev" title="lmflow.pipeline.evaluator" href="../evaluator/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.finetuner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.finetuner"> +<span id="lmflow-pipeline-finetuner"></span><h1>lmflow.pipeline.finetuner<a class="headerlink" href="#module-lmflow.pipeline.finetuner" title="Link to this heading">#</a></h1> +<p>The Finetuner class simplifies the process of running finetuning process on a language model for a TunableModel instance with given dataset.</p> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.finetuner.logger" title="lmflow.pipeline.finetuner.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.finetuner.Finetuner" title="lmflow.pipeline.finetuner.Finetuner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Finetuner</span></code></a></p></td> +<td><p>Initializes the <cite>Finetuner</cite> class with given arguments.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.finetuner.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.finetuner.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/finetuner.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.finetuner.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.finetuner.Finetuner"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.finetuner.</span></span><span class="sig-name descname"><span class="pre">Finetuner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">finetuner_args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/finetuner.html#Finetuner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.finetuner.Finetuner" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base_tuner/index.html#lmflow.pipeline.base_tuner.BaseTuner" title="lmflow.pipeline.base_tuner.BaseTuner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.pipeline.base_tuner.BaseTuner</span></code></a></p> +<p>Initializes the <cite>Finetuner</cite> class with given arguments.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model_args</strong><span class="classifier">ModelArguments object.</span></dt><dd><p>Contains the arguments required to load the model.</p> +</dd> +<dt><strong>data_args</strong><span class="classifier">DatasetArguments object.</span></dt><dd><p>Contains the arguments required to load the dataset.</p> +</dd> +<dt><strong>finetuner_args</strong><span class="classifier">FinetunerArguments object.</span></dt><dd><p>Contains the arguments required to perform finetuning.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.finetuner.Finetuner.model_args"> +<span class="sig-name descname"><span class="pre">model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/finetuner.html#Finetuner.model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.finetuner.Finetuner.model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.finetuner.Finetuner.data_args"> +<span class="sig-name descname"><span class="pre">data_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/finetuner.html#Finetuner.data_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.finetuner.Finetuner.data_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.finetuner.Finetuner.finetuner_args"> +<span class="sig-name descname"><span class="pre">finetuner_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/finetuner.html#Finetuner.finetuner_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.finetuner.Finetuner.finetuner_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.finetuner.Finetuner.last_checkpoint"> +<span class="sig-name descname"><span class="pre">last_checkpoint</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../_modules/lmflow/pipeline/finetuner.html#Finetuner.last_checkpoint"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.finetuner.Finetuner.last_checkpoint" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.finetuner.Finetuner.group_text"> +<span class="sig-name descname"><span class="pre">group_text</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokenized_datasets</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_max_length</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/finetuner.html#Finetuner.group_text"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.finetuner.Finetuner.group_text" title="Link to this definition">#</a></dt> +<dd><p>Groups texts together to form blocks of maximum length <cite>model_max_length</cite> and returns the processed data as +a dictionary.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.finetuner.Finetuner.create_customized_optimizer"> +<span class="sig-name descname"><span class="pre">create_customized_optimizer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">base_trainer_class</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/finetuner.html#Finetuner.create_customized_optimizer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.finetuner.Finetuner.create_customized_optimizer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.finetuner.Finetuner.tune"> +<span class="sig-name descname"><span class="pre">tune</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">transform_dataset_in_place</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_collator</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/finetuner.html#Finetuner.tune"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.finetuner.Finetuner.tune" title="Link to this definition">#</a></dt> +<dd><p>Perform tuning for a model</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model</strong><span class="classifier">TunableModel object.</span></dt><dd><p>TunableModel to perform tuning.</p> +</dd> +<dt><strong>dataset:</strong></dt><dd><p>dataset to train model.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../evaluator/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.evaluator</p> + </div> + </a> + <a class="right-next" + href="../inferencer/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.inferencer</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.finetuner.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.finetuner.Finetuner"><code class="docutils literal notranslate"><span class="pre">Finetuner</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.finetuner.Finetuner.model_args"><code class="docutils literal notranslate"><span class="pre">Finetuner.model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.finetuner.Finetuner.data_args"><code class="docutils literal notranslate"><span class="pre">Finetuner.data_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.finetuner.Finetuner.finetuner_args"><code class="docutils literal notranslate"><span class="pre">Finetuner.finetuner_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.finetuner.Finetuner.last_checkpoint"><code class="docutils literal notranslate"><span class="pre">Finetuner.last_checkpoint</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.finetuner.Finetuner.group_text"><code class="docutils literal notranslate"><span class="pre">Finetuner.group_text()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.finetuner.Finetuner.create_customized_optimizer"><code class="docutils literal notranslate"><span class="pre">Finetuner.create_customized_optimizer()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.finetuner.Finetuner.tune"><code class="docutils literal notranslate"><span class="pre">Finetuner.tune()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/finetuner/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/index.html b/autoapi/lmflow/pipeline/index.html new file mode 100644 index 000000000..3f9acc897 --- /dev/null +++ b/autoapi/lmflow/pipeline/index.html @@ -0,0 +1,651 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/index';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <link rel="next" title="lmflow.pipeline.auto_pipeline" href="auto_pipeline/index.html" /> + <link rel="prev" title="lmflow.optim.yogi" href="../optim/yogi/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="current reference internal" href="#">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline"> +<span id="lmflow-pipeline"></span><h1>lmflow.pipeline<a class="headerlink" href="#module-lmflow.pipeline" title="Link to this heading">#</a></h1> +<section id="submodules"> +<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l1"><a class="reference internal" href="base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l1"><a class="reference internal" href="base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l1"><a class="reference internal" href="base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l1"><a class="reference internal" href="dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l1"><a class="reference internal" href="dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l1"><a class="reference internal" href="evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l1"><a class="reference internal" href="finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l1"><a class="reference internal" href="inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l1"><a class="reference internal" href="iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l1"><a class="reference internal" href="raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l1"><a class="reference internal" href="rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l1"><a class="reference internal" href="rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l1"><a class="reference internal" href="utils/index.html">lmflow.pipeline.utils</a></li> +<li class="toctree-l1"><a class="reference internal" href="vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../optim/yogi/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.optim.yogi</p> + </div> + </a> + <a class="right-next" + href="auto_pipeline/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.auto_pipeline</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../_sources/autoapi/lmflow/pipeline/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/inferencer/index.html b/autoapi/lmflow/pipeline/inferencer/index.html new file mode 100644 index 000000000..4df05a34c --- /dev/null +++ b/autoapi/lmflow/pipeline/inferencer/index.html @@ -0,0 +1,971 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.inferencer &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/inferencer/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.iterative_dpo_aligner" href="../iterative_dpo_aligner/index.html" /> + <link rel="prev" title="lmflow.pipeline.finetuner" href="../finetuner/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.inferencer</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.inferencer"> +<span id="lmflow-pipeline-inferencer"></span><h1>lmflow.pipeline.inferencer<a class="headerlink" href="#module-lmflow.pipeline.inferencer" title="Link to this heading">#</a></h1> +<p>The Inferencer class simplifies the process of model inferencing.</p> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.inferencer.supported_dataset_type" title="lmflow.pipeline.inferencer.supported_dataset_type"><code class="xref py py-obj docutils literal notranslate"><span class="pre">supported_dataset_type</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.inferencer.logger" title="lmflow.pipeline.inferencer.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.inferencer.Inferencer" title="lmflow.pipeline.inferencer.Inferencer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Inferencer</span></code></a></p></td> +<td><p>Initializes the <cite>Inferencer</cite> class with given arguments.</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.inferencer.SpeculativeInferencer" title="lmflow.pipeline.inferencer.SpeculativeInferencer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">SpeculativeInferencer</span></code></a></p></td> +<td><p>Ref: [arXiv:2211.17192v2](https://arxiv.org/abs/2211.17192)</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.inferencer.ToolInferencer" title="lmflow.pipeline.inferencer.ToolInferencer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ToolInferencer</span></code></a></p></td> +<td><p>Initializes the <cite>ToolInferencer</cite> class with given arguments.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.inferencer.rstrip_partial_utf8" title="lmflow.pipeline.inferencer.rstrip_partial_utf8"><code class="xref py py-obj docutils literal notranslate"><span class="pre">rstrip_partial_utf8</span></code></a>(string)</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.rstrip_partial_utf8"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.inferencer.</span></span><span class="sig-name descname"><span class="pre">rstrip_partial_utf8</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#rstrip_partial_utf8"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.rstrip_partial_utf8" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.supported_dataset_type"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.inferencer.</span></span><span class="sig-name descname"><span class="pre">supported_dataset_type</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">['text_only',</span> <span class="pre">'image_text']</span></em><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#supported_dataset_type"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.supported_dataset_type" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.inferencer.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.Inferencer"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.inferencer.</span></span><span class="sig-name descname"><span class="pre">Inferencer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inferencer_args</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#Inferencer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.Inferencer" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base_pipeline/index.html#lmflow.pipeline.base_pipeline.BasePipeline" title="lmflow.pipeline.base_pipeline.BasePipeline"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.pipeline.base_pipeline.BasePipeline</span></code></a></p> +<p>Initializes the <cite>Inferencer</cite> class with given arguments.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model_args</strong><span class="classifier">ModelArguments object.</span></dt><dd><p>Contains the arguments required to load the model.</p> +</dd> +<dt><strong>data_args</strong><span class="classifier">DatasetArguments object.</span></dt><dd><p>Contains the arguments required to load the dataset.</p> +</dd> +<dt><strong>inferencer_args</strong><span class="classifier">InferencerArguments object.</span></dt><dd><p>Contains the arguments required to perform inference.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.Inferencer.data_args"> +<span class="sig-name descname"><span class="pre">data_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#Inferencer.data_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.Inferencer.data_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.Inferencer.inferencer_args"> +<span class="sig-name descname"><span class="pre">inferencer_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#Inferencer.inferencer_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.Inferencer.inferencer_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.Inferencer.model_args"> +<span class="sig-name descname"><span class="pre">model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#Inferencer.model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.Inferencer.model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.Inferencer.local_rank"> +<span class="sig-name descname"><span class="pre">local_rank</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#Inferencer.local_rank"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.Inferencer.local_rank" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.Inferencer.world_size"> +<span class="sig-name descname"><span class="pre">world_size</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#Inferencer.world_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.Inferencer.world_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.Inferencer.config"> +<span class="sig-name descname"><span class="pre">config</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#Inferencer.config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.Inferencer.config" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.Inferencer.create_dataloader"> +<span class="sig-name descname"><span class="pre">create_dataloader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#Inferencer.create_dataloader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.Inferencer.create_dataloader" title="Link to this definition">#</a></dt> +<dd><p>Batchlize dataset and format it to dataloader.</p> +<dl class="simple"> +<dt>Args:</dt><dd><p>dataset (Dataset): the dataset object</p> +</dd> +<dt>Output:</dt><dd><p>dataloader (batchlize): the dataloader object +dataset_size (int): the length of the dataset</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.Inferencer.inference"> +<span class="sig-name descname"><span class="pre">inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_new_tokens</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">100</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">temperature</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prompt_structure</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'{input}'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_image_flag</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">chatbot_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'mini_gpt'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#Inferencer.inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.Inferencer.inference" title="Link to this definition">#</a></dt> +<dd><p>Perform inference for a model</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model</strong><span class="classifier">TunableModel object.</span></dt><dd><p>TunableModel to perform inference</p> +</dd> +<dt><strong>dataset</strong><span class="classifier">Dataset object.</span></dt><dd></dd> +<dt><strong>Returns:</strong></dt><dd></dd> +<dt><strong>output_dataset: Dataset object.</strong></dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.Inferencer.stream_inference"> +<span class="sig-name descname"><span class="pre">stream_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">context</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_new_tokens</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">token_per_step</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">temperature</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">end_string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">input_dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">remove_image_flag</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#Inferencer.stream_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.Inferencer.stream_inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.SpeculativeInferencer"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.inferencer.</span></span><span class="sig-name descname"><span class="pre">SpeculativeInferencer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">draft_model_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inferencer_args</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#SpeculativeInferencer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.SpeculativeInferencer" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.pipeline.inferencer.Inferencer" title="lmflow.pipeline.inferencer.Inferencer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Inferencer</span></code></a></p> +<p>Ref: [arXiv:2211.17192v2](https://arxiv.org/abs/2211.17192)</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>target_model_args</strong><span class="classifier">ModelArguments object.</span></dt><dd><p>Contains the arguments required to load the target model.</p> +</dd> +<dt><strong>draft_model_args</strong><span class="classifier">ModelArguments object.</span></dt><dd><p>Contains the arguments required to load the draft model.</p> +</dd> +<dt><strong>data_args</strong><span class="classifier">DatasetArguments object.</span></dt><dd><p>Contains the arguments required to load the dataset.</p> +</dd> +<dt><strong>inferencer_args</strong><span class="classifier">InferencerArguments object.</span></dt><dd><p>Contains the arguments required to perform inference.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.SpeculativeInferencer.draft_model_args"> +<span class="sig-name descname"><span class="pre">draft_model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#SpeculativeInferencer.draft_model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.draft_model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.SpeculativeInferencer.draft_config"> +<span class="sig-name descname"><span class="pre">draft_config</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#SpeculativeInferencer.draft_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.draft_config" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.SpeculativeInferencer.score_to_prob"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">score_to_prob</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">scores</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">temperature</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">top_p</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">1.0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">torch.Tensor</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#SpeculativeInferencer.score_to_prob"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.score_to_prob" title="Link to this definition">#</a></dt> +<dd><p>Convert scores (NOT softmaxed tensor) to probabilities with support for temperature, top-p sampling, and argmax.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>scores</strong><span class="classifier">torch.Tensor</span></dt><dd><p>Input scores.</p> +</dd> +<dt><strong>temperature</strong><span class="classifier">float, optional</span></dt><dd><p>Temperature parameter for controlling randomness. Higher values make the distribution more uniform, +lower values make it peakier. When temperature &lt;= 1e-6, argmax is used. by default 0.0</p> +</dd> +<dt><strong>top_p</strong><span class="classifier">float, optional</span></dt><dd><p>Top-p sampling parameter for controlling the cumulative probability threshold, by default 1.0 (no threshold)</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>torch.Tensor</dt><dd><p>Probability distribution after adjustments.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.SpeculativeInferencer.sample"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">sample</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">prob</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">num_samples</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">1</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#SpeculativeInferencer.sample"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.sample" title="Link to this definition">#</a></dt> +<dd><p>Sample from a tensor of probabilities</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.SpeculativeInferencer.predict_next_token"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">predict_next_token</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel" title="lmflow.models.hf_decoder_model.HFDecoderModel"><span class="pre">lmflow.models.hf_decoder_model.HFDecoderModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">input_ids</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">num_new_tokens</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">1</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#SpeculativeInferencer.predict_next_token"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.predict_next_token" title="Link to this definition">#</a></dt> +<dd><p>Predict the next token given the input_ids.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.SpeculativeInferencer.autoregressive_sampling"> +<span class="sig-name descname"><span class="pre">autoregressive_sampling</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input_ids</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel" title="lmflow.models.hf_decoder_model.HFDecoderModel"><span class="pre">lmflow.models.hf_decoder_model.HFDecoderModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">temperature</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">num_new_tokens</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">5</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#SpeculativeInferencer.autoregressive_sampling"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.autoregressive_sampling" title="Link to this definition">#</a></dt> +<dd><p>Ref: [arXiv:2211.17192v2](https://arxiv.org/abs/2211.17192) Section 2.2</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.SpeculativeInferencer.inference"> +<span class="sig-name descname"><span class="pre">inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel" title="lmflow.models.hf_decoder_model.HFDecoderModel"><span class="pre">lmflow.models.hf_decoder_model.HFDecoderModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">draft_model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel" title="lmflow.models.hf_decoder_model.HFDecoderModel"><span class="pre">lmflow.models.hf_decoder_model.HFDecoderModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">input</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">temperature</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">gamma</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">5</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_new_tokens</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">100</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#SpeculativeInferencer.inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.inference" title="Link to this definition">#</a></dt> +<dd><p>Perform inference for a model</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model</strong><span class="classifier">HFDecoderModel object.</span></dt><dd><p>TunableModel to verify tokens generated by the draft model.</p> +</dd> +<dt><strong>draft_model</strong><span class="classifier">HFDecoderModel object.</span></dt><dd><p>TunableModel that provides approximations of the target model.</p> +</dd> +<dt><strong>input</strong><span class="classifier">str.</span></dt><dd><p>The input text (i.e., the prompt) for the model.</p> +</dd> +<dt><strong>gamma</strong><span class="classifier">int.</span></dt><dd><p>The number of tokens to be generated by the draft model within each iter.</p> +</dd> +<dt><strong>max_new_tokens</strong><span class="classifier">int.</span></dt><dd><p>The maximum number of tokens to be generated by the target model.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>output: str.</dt><dd><p>The output text generated by the model.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.SpeculativeInferencer.stream_inference"> +<em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">stream_inference</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#SpeculativeInferencer.stream_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.stream_inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.ToolInferencer"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.inferencer.</span></span><span class="sig-name descname"><span class="pre">ToolInferencer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inferencer_args</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#ToolInferencer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.ToolInferencer" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.pipeline.inferencer.Inferencer" title="lmflow.pipeline.inferencer.Inferencer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Inferencer</span></code></a></p> +<p>Initializes the <cite>ToolInferencer</cite> class with given arguments.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model_args</strong><span class="classifier">ModelArguments object.</span></dt><dd><p>Contains the arguments required to load the model.</p> +</dd> +<dt><strong>data_args</strong><span class="classifier">DatasetArguments object.</span></dt><dd><p>Contains the arguments required to load the dataset.</p> +</dd> +<dt><strong>inferencer_args</strong><span class="classifier">InferencerArguments object.</span></dt><dd><p>Contains the arguments required to perform inference.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.ToolInferencer.model"> +<span class="sig-name descname"><span class="pre">model</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#ToolInferencer.model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.ToolInferencer.model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.ToolInferencer.inference"> +<span class="sig-name descname"><span class="pre">inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel" title="lmflow.models.hf_decoder_model.HFDecoderModel"><span class="pre">lmflow.models.hf_decoder_model.HFDecoderModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">input</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_new_tokens</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">1024</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#ToolInferencer.inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.ToolInferencer.inference" title="Link to this definition">#</a></dt> +<dd><p>Perform inference for a model</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model</strong><span class="classifier">HFDecoderModel object.</span></dt><dd><p>TunableModel to perform inference</p> +</dd> +<dt><strong>input</strong><span class="classifier">str.</span></dt><dd><p>The input text (i.e., the prompt) for the model.</p> +</dd> +<dt><strong>max_new_tokens</strong><span class="classifier">int.</span></dt><dd><p>The maximum number of tokens to be generated by the model.</p> +</dd> +<dt><strong>Returns:</strong></dt><dd></dd> +<dt><strong>output</strong><span class="classifier">str.</span></dt><dd><p>The output text generated by the model.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.inferencer.ToolInferencer.code_exec"> +<span class="sig-name descname"><span class="pre">code_exec</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">code</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/inferencer.html#ToolInferencer.code_exec"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.inferencer.ToolInferencer.code_exec" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../finetuner/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.finetuner</p> + </div> + </a> + <a class="right-next" + href="../iterative_dpo_aligner/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.iterative_dpo_aligner</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.rstrip_partial_utf8"><code class="docutils literal notranslate"><span class="pre">rstrip_partial_utf8()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.supported_dataset_type"><code class="docutils literal notranslate"><span class="pre">supported_dataset_type</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.Inferencer"><code class="docutils literal notranslate"><span class="pre">Inferencer</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.Inferencer.data_args"><code class="docutils literal notranslate"><span class="pre">Inferencer.data_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.Inferencer.inferencer_args"><code class="docutils literal notranslate"><span class="pre">Inferencer.inferencer_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.Inferencer.model_args"><code class="docutils literal notranslate"><span class="pre">Inferencer.model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.Inferencer.local_rank"><code class="docutils literal notranslate"><span class="pre">Inferencer.local_rank</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.Inferencer.world_size"><code class="docutils literal notranslate"><span class="pre">Inferencer.world_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.Inferencer.config"><code class="docutils literal notranslate"><span class="pre">Inferencer.config</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.Inferencer.create_dataloader"><code class="docutils literal notranslate"><span class="pre">Inferencer.create_dataloader()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.Inferencer.inference"><code class="docutils literal notranslate"><span class="pre">Inferencer.inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.Inferencer.stream_inference"><code class="docutils literal notranslate"><span class="pre">Inferencer.stream_inference()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.SpeculativeInferencer"><code class="docutils literal notranslate"><span class="pre">SpeculativeInferencer</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.draft_model_args"><code class="docutils literal notranslate"><span class="pre">SpeculativeInferencer.draft_model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.draft_config"><code class="docutils literal notranslate"><span class="pre">SpeculativeInferencer.draft_config</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.score_to_prob"><code class="docutils literal notranslate"><span class="pre">SpeculativeInferencer.score_to_prob()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.sample"><code class="docutils literal notranslate"><span class="pre">SpeculativeInferencer.sample()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.predict_next_token"><code class="docutils literal notranslate"><span class="pre">SpeculativeInferencer.predict_next_token()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.autoregressive_sampling"><code class="docutils literal notranslate"><span class="pre">SpeculativeInferencer.autoregressive_sampling()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.inference"><code class="docutils literal notranslate"><span class="pre">SpeculativeInferencer.inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.SpeculativeInferencer.stream_inference"><code class="docutils literal notranslate"><span class="pre">SpeculativeInferencer.stream_inference()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.ToolInferencer"><code class="docutils literal notranslate"><span class="pre">ToolInferencer</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.ToolInferencer.model"><code class="docutils literal notranslate"><span class="pre">ToolInferencer.model</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.ToolInferencer.inference"><code class="docutils literal notranslate"><span class="pre">ToolInferencer.inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.inferencer.ToolInferencer.code_exec"><code class="docutils literal notranslate"><span class="pre">ToolInferencer.code_exec()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/inferencer/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html b/autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html new file mode 100644 index 000000000..f5102eeb2 --- /dev/null +++ b/autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html @@ -0,0 +1,765 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.iterative_dpo_aligner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/iterative_dpo_aligner/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.raft_aligner" href="../raft_aligner/index.html" /> + <link rel="prev" title="lmflow.pipeline.inferencer" href="../inferencer/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.iterative_dpo_aligner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.iterative_dpo_aligner"> +<span id="lmflow-pipeline-iterative-dpo-aligner"></span><h1>lmflow.pipeline.iterative_dpo_aligner<a class="headerlink" href="#module-lmflow.pipeline.iterative_dpo_aligner" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.iterative_dpo_aligner.logger" title="lmflow.pipeline.iterative_dpo_aligner.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner" title="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">IterativeDPOAligner</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.iterative_dpo_aligner.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.iterative_dpo_aligner.</span></span><span class="sig-name descname"><span class="pre">IterativeDPOAligner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">aligner_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.IterativeDPOAlignerArguments" title="lmflow.args.IterativeDPOAlignerArguments"><span class="pre">lmflow.args.IterativeDPOAlignerArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">ref_model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">reward_model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner" title="Link to this definition">#</a></dt> +<dd><dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.model_args"> +<span class="sig-name descname"><span class="pre">model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner.model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.data_args"> +<span class="sig-name descname"><span class="pre">data_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner.data_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.data_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.aligner_args"> +<span class="sig-name descname"><span class="pre">aligner_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner.aligner_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.aligner_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.ref_model_args"> +<span class="sig-name descname"><span class="pre">ref_model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner.ref_model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.ref_model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.reward_model_args"> +<span class="sig-name descname"><span class="pre">reward_model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner.reward_model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.reward_model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.workspace_path"> +<span class="sig-name descname"><span class="pre">workspace_path</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner.workspace_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.workspace_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.align"> +<span class="sig-name descname"><span class="pre">align</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset_list</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner.align"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.align" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._align_single_iteration"> +<span class="sig-name descname"><span class="pre">_align_single_iteration</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">iteration_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target_model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">reward_model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">ref_model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner._align_single_iteration"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._align_single_iteration" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_target_model_inference"> +<span class="sig-name descname"><span class="pre">_do_target_model_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel" title="lmflow.models.hf_decoder_model.HFDecoderModel"><span class="pre">lmflow.models.hf_decoder_model.HFDecoderModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_dir</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner._do_target_model_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_target_model_inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_reward_model_inference"> +<span class="sig-name descname"><span class="pre">_do_reward_model_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel" title="lmflow.models.hf_text_regression_model.HFTextRegressionModel"><span class="pre">lmflow.models.hf_text_regression_model.HFTextRegressionModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_dir</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner._do_reward_model_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_reward_model_inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_single_dpo_align"> +<span class="sig-name descname"><span class="pre">_do_single_dpo_align</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">ref_model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_dir</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">iteration_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner._do_single_dpo_align"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_single_dpo_align" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_target_model_inference_args"> +<span class="sig-name descname"><span class="pre">_parse_target_model_inference_args</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.IterativeDPOAlignerArguments" title="lmflow.args.IterativeDPOAlignerArguments"><span class="pre">lmflow.args.IterativeDPOAlignerArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">result_cache_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../../args/index.html#lmflow.args.InferencerArguments" title="lmflow.args.InferencerArguments"><span class="pre">lmflow.args.InferencerArguments</span></a></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner._parse_target_model_inference_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_target_model_inference_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_reward_model_inference_args"> +<span class="sig-name descname"><span class="pre">_parse_reward_model_inference_args</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.IterativeDPOAlignerArguments" title="lmflow.args.IterativeDPOAlignerArguments"><span class="pre">lmflow.args.IterativeDPOAlignerArguments</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../../args/index.html#lmflow.args.InferencerArguments" title="lmflow.args.InferencerArguments"><span class="pre">lmflow.args.InferencerArguments</span></a></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner._parse_reward_model_inference_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_reward_model_inference_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_dpo_aligner_args"> +<span class="sig-name descname"><span class="pre">_parse_dpo_aligner_args</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.IterativeDPOAlignerArguments" title="lmflow.args.IterativeDPOAlignerArguments"><span class="pre">lmflow.args.IterativeDPOAlignerArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_dir</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">iteration_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../../args/index.html#lmflow.args.DPOv2AlignerArguments" title="lmflow.args.DPOv2AlignerArguments"><span class="pre">lmflow.args.DPOv2AlignerArguments</span></a></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner._parse_dpo_aligner_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_dpo_aligner_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.__filter_args"> +<span class="sig-name descname"><span class="pre">__filter_args</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mixed_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target_cls</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/iterative_dpo_aligner.html#IterativeDPOAligner.__filter_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.__filter_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../inferencer/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.inferencer</p> + </div> + </a> + <a class="right-next" + href="../raft_aligner/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.raft_aligner</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.model_args"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner.model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.data_args"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner.data_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.aligner_args"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner.aligner_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.ref_model_args"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner.ref_model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.reward_model_args"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner.reward_model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.workspace_path"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner.workspace_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.align"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner.align()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._align_single_iteration"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner._align_single_iteration()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_target_model_inference"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner._do_target_model_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_reward_model_inference"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner._do_reward_model_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_single_dpo_align"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner._do_single_dpo_align()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_target_model_inference_args"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner._parse_target_model_inference_args()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_reward_model_inference_args"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner._parse_reward_model_inference_args()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_dpo_aligner_args"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner._parse_dpo_aligner_args()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.__filter_args"><code class="docutils literal notranslate"><span class="pre">IterativeDPOAligner.__filter_args()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/iterative_dpo_aligner/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/raft_aligner/index.html b/autoapi/lmflow/pipeline/raft_aligner/index.html new file mode 100644 index 000000000..1801d01ba --- /dev/null +++ b/autoapi/lmflow/pipeline/raft_aligner/index.html @@ -0,0 +1,806 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.raft_aligner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/raft_aligner/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.rm_inferencer" href="../rm_inferencer/index.html" /> + <link rel="prev" title="lmflow.pipeline.iterative_dpo_aligner" href="../iterative_dpo_aligner/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.raft_aligner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.raft_aligner"> +<span id="lmflow-pipeline-raft-aligner"></span><h1>lmflow.pipeline.raft_aligner<a class="headerlink" href="#module-lmflow.pipeline.raft_aligner" title="Link to this heading">#</a></h1> +<p>The Aligner class simplifies the process of running alignment.</p> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.raft_aligner.logger" title="lmflow.pipeline.raft_aligner.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.raft_aligner.RaftAligner" title="lmflow.pipeline.raft_aligner.RaftAligner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RaftAligner</span></code></a></p></td> +<td><p>Initializes the <cite>RaftAligner</cite> class with given arguments.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.raft_aligner.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.raft_aligner.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/raft_aligner.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.raft_aligner.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.raft_aligner.RaftAligner"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.raft_aligner.</span></span><span class="sig-name descname"><span class="pre">RaftAligner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">aligner_args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/raft_aligner.html#RaftAligner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.raft_aligner.RaftAligner" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base_aligner/index.html#lmflow.pipeline.base_aligner.BaseAligner" title="lmflow.pipeline.base_aligner.BaseAligner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.pipeline.base_aligner.BaseAligner</span></code></a></p> +<p>Initializes the <cite>RaftAligner</cite> class with given arguments.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model_args</strong><span class="classifier">ModelArguments object.</span></dt><dd><p>Contains the arguments required to load the model.</p> +</dd> +<dt><strong>data_args</strong><span class="classifier">DatasetArguments object.</span></dt><dd><p>Contains the arguments required to load the dataset.</p> +</dd> +<dt><strong>raft_aligner_args</strong><span class="classifier">RaftAlignerArguments object.</span></dt><dd><p>Contains the arguments required to perform alignment.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.raft_aligner.RaftAligner.model_args"> +<span class="sig-name descname"><span class="pre">model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/raft_aligner.html#RaftAligner.model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.raft_aligner.RaftAligner.model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.raft_aligner.RaftAligner.data_args"> +<span class="sig-name descname"><span class="pre">data_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/raft_aligner.html#RaftAligner.data_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.raft_aligner.RaftAligner.data_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.raft_aligner.RaftAligner.aligner_args"> +<span class="sig-name descname"><span class="pre">aligner_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/raft_aligner.html#RaftAligner.aligner_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.raft_aligner.RaftAligner.aligner_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.raft_aligner.RaftAligner.INF"> +<span class="sig-name descname"><span class="pre">INF</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">888888888</span></em><a class="reference internal" href="../../../../_modules/lmflow/pipeline/raft_aligner.html#RaftAligner.INF"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.raft_aligner.RaftAligner.INF" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.raft_aligner.RaftAligner._initialize_trainer"> +<span class="sig-name descname"><span class="pre">_initialize_trainer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">training_args</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/raft_aligner.html#RaftAligner._initialize_trainer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.raft_aligner.RaftAligner._initialize_trainer" title="Link to this definition">#</a></dt> +<dd><p>This function takes the model and tokenizer as the input and initialize the trainer.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.raft_aligner.RaftAligner._load_dataset"> +<span class="sig-name descname"><span class="pre">_load_dataset</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">selected_dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">training_args</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/raft_aligner.html#RaftAligner._load_dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.raft_aligner.RaftAligner._load_dataset" title="Link to this definition">#</a></dt> +<dd><p>This function prepares the dataset for every iteration.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.raft_aligner.RaftAligner._load_input_dataset"> +<span class="sig-name descname"><span class="pre">_load_input_dataset</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/raft_aligner.html#RaftAligner._load_input_dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.raft_aligner.RaftAligner._load_input_dataset" title="Link to this definition">#</a></dt> +<dd><p>Load input dataset (i.e. prompt/question dataset) for training.</p> +<dl class="simple"> +<dt>Args:</dt><dd><dl class="simple"> +<dt>dataset: A Dataset object.</dt><dd><p>The dataset to be loaded.</p> +</dd> +</dl> +</dd> +<dt>Returns:</dt><dd><dl class="simple"> +<dt>dataloader (<cite>torch.utils.data.DataLoader</cite>):</dt><dd><p>The dataloader for the dataset.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.raft_aligner.RaftAligner._clean_text"> +<span class="sig-name descname"><span class="pre">_clean_text</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/raft_aligner.html#RaftAligner._clean_text"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.raft_aligner.RaftAligner._clean_text" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.raft_aligner.RaftAligner._discard_sample"> +<span class="sig-name descname"><span class="pre">_discard_sample</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/raft_aligner.html#RaftAligner._discard_sample"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.raft_aligner.RaftAligner._discard_sample" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.raft_aligner.RaftAligner._get_batch_dataset_top"> +<span class="sig-name descname"><span class="pre">_get_batch_dataset_top</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">batch_input</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">alpha</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">iter_id</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">local_rank</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_min_length</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">16</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_max_length</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">48</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">infer_batch_size</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">8</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">generation_kwargs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">{}</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">training_args</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reward_model</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_reward_path</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/raft_aligner.html#RaftAligner._get_batch_dataset_top"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.raft_aligner.RaftAligner._get_batch_dataset_top" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>batch_input</strong> – input prompts</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.raft_aligner.RaftAligner._get_batch_dataset_local"> +<span class="sig-name descname"><span class="pre">_get_batch_dataset_local</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">batch_input</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">K</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">8</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">iter_id</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">local_rank</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_min_length</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">16</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_max_length</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">48</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">infer_batch_size</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">8</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">generation_kwargs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">{}</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">training_args</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reward_model</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_reward_path</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/raft_aligner.html#RaftAligner._get_batch_dataset_local"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.raft_aligner.RaftAligner._get_batch_dataset_local" title="Link to this definition">#</a></dt> +<dd><dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>batch_input</strong> – input prompts</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.raft_aligner.RaftAligner.align"> +<span class="sig-name descname"><span class="pre">align</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reward_model</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/raft_aligner.html#RaftAligner.align"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.raft_aligner.RaftAligner.align" title="Link to this definition">#</a></dt> +<dd><p>Perform alignment for a model</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model</strong><span class="classifier">BaseModel object.</span></dt><dd></dd> +<dt><strong>dataset: Dataset object.</strong></dt><dd><dl class="simple"> +<dt>Input dataset for model to generate outputs. The input and output</dt><dd><p>will then be feed into reward model to get the reward for +alignment.</p> +</dd> +</dl> +</dd> +<dt><strong>reward_model: RegressionModel object.</strong></dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../iterative_dpo_aligner/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.iterative_dpo_aligner</p> + </div> + </a> + <a class="right-next" + href="../rm_inferencer/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.rm_inferencer</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.raft_aligner.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.raft_aligner.RaftAligner"><code class="docutils literal notranslate"><span class="pre">RaftAligner</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.raft_aligner.RaftAligner.model_args"><code class="docutils literal notranslate"><span class="pre">RaftAligner.model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.raft_aligner.RaftAligner.data_args"><code class="docutils literal notranslate"><span class="pre">RaftAligner.data_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.raft_aligner.RaftAligner.aligner_args"><code class="docutils literal notranslate"><span class="pre">RaftAligner.aligner_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.raft_aligner.RaftAligner.INF"><code class="docutils literal notranslate"><span class="pre">RaftAligner.INF</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.raft_aligner.RaftAligner._initialize_trainer"><code class="docutils literal notranslate"><span class="pre">RaftAligner._initialize_trainer()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.raft_aligner.RaftAligner._load_dataset"><code class="docutils literal notranslate"><span class="pre">RaftAligner._load_dataset()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.raft_aligner.RaftAligner._load_input_dataset"><code class="docutils literal notranslate"><span class="pre">RaftAligner._load_input_dataset()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.raft_aligner.RaftAligner._clean_text"><code class="docutils literal notranslate"><span class="pre">RaftAligner._clean_text()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.raft_aligner.RaftAligner._discard_sample"><code class="docutils literal notranslate"><span class="pre">RaftAligner._discard_sample()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.raft_aligner.RaftAligner._get_batch_dataset_top"><code class="docutils literal notranslate"><span class="pre">RaftAligner._get_batch_dataset_top()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.raft_aligner.RaftAligner._get_batch_dataset_local"><code class="docutils literal notranslate"><span class="pre">RaftAligner._get_batch_dataset_local()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.raft_aligner.RaftAligner.align"><code class="docutils literal notranslate"><span class="pre">RaftAligner.align()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/raft_aligner/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/rm_inferencer/index.html b/autoapi/lmflow/pipeline/rm_inferencer/index.html new file mode 100644 index 000000000..1c4cec930 --- /dev/null +++ b/autoapi/lmflow/pipeline/rm_inferencer/index.html @@ -0,0 +1,767 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.rm_inferencer &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/rm_inferencer/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.rm_tuner" href="../rm_tuner/index.html" /> + <link rel="prev" title="lmflow.pipeline.raft_aligner" href="../raft_aligner/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.rm_inferencer</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.rm_inferencer"> +<span id="lmflow-pipeline-rm-inferencer"></span><h1>lmflow.pipeline.rm_inferencer<a class="headerlink" href="#module-lmflow.pipeline.rm_inferencer" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.rm_inferencer.logger" title="lmflow.pipeline.rm_inferencer.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer" title="lmflow.pipeline.rm_inferencer.RewardModelInferencer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RewardModelInferencer</span></code></a></p></td> +<td><p>Initializes the <cite>Inferencer</cite> class with given arguments.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.rm_inferencer.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.RewardModelInferencer"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.rm_inferencer.</span></span><span class="sig-name descname"><span class="pre">RewardModelInferencer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">inferencer_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.InferencerArguments" title="lmflow.args.InferencerArguments"><span class="pre">lmflow.args.InferencerArguments</span></a></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#RewardModelInferencer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base_pipeline/index.html#lmflow.pipeline.base_pipeline.BasePipeline" title="lmflow.pipeline.base_pipeline.BasePipeline"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.pipeline.base_pipeline.BasePipeline</span></code></a></p> +<p>Initializes the <cite>Inferencer</cite> class with given arguments.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model_args</strong><span class="classifier">ModelArguments object.</span></dt><dd><p>Contains the arguments required to load the model.</p> +</dd> +<dt><strong>data_args</strong><span class="classifier">DatasetArguments object.</span></dt><dd><p>Contains the arguments required to load the dataset.</p> +</dd> +<dt><strong>inferencer_args</strong><span class="classifier">InferencerArguments object.</span></dt><dd><p>Contains the arguments required to perform inference.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.RewardModelInferencer.data_args"> +<span class="sig-name descname"><span class="pre">data_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#RewardModelInferencer.data_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.data_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.RewardModelInferencer.inferencer_args"> +<span class="sig-name descname"><span class="pre">inferencer_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#RewardModelInferencer.inferencer_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.inferencer_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.RewardModelInferencer.model_args"> +<span class="sig-name descname"><span class="pre">model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#RewardModelInferencer.model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.RewardModelInferencer.local_rank"> +<span class="sig-name descname"><span class="pre">local_rank</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#RewardModelInferencer.local_rank"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.local_rank" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.RewardModelInferencer.world_size"> +<span class="sig-name descname"><span class="pre">world_size</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#RewardModelInferencer.world_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.world_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.RewardModelInferencer.inference"> +<span class="sig-name descname"><span class="pre">inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel" title="lmflow.models.hf_text_regression_model.HFTextRegressionModel"><span class="pre">lmflow.models.hf_text_regression_model.HFTextRegressionModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">transform_dataset_in_place</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_vllm</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_distributed_inference</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#RewardModelInferencer.inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.RewardModelInferencer._inference"> +<span class="sig-name descname"><span class="pre">_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel" title="lmflow.models.hf_text_regression_model.HFTextRegressionModel"><span class="pre">lmflow.models.hf_text_regression_model.HFTextRegressionModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_input</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">ray.data.Dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_distributed_inference</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#RewardModelInferencer._inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer._inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.RewardModelInferencer.__inference"> +<span class="sig-name descname"><span class="pre">__inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel" title="lmflow.models.hf_text_regression_model.HFTextRegressionModel"><span class="pre">lmflow.models.hf_text_regression_model.HFTextRegressionModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_input</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/dataset/index.html#lmflow.datasets.dataset.Dataset" title="lmflow.datasets.dataset.Dataset"><span class="pre">lmflow.datasets.dataset.Dataset</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">float</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">float</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#RewardModelInferencer.__inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.RewardModelInferencer.__distributed_inference"> +<span class="sig-name descname"><span class="pre">__distributed_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel" title="lmflow.models.hf_text_regression_model.HFTextRegressionModel"><span class="pre">lmflow.models.hf_text_regression_model.HFTextRegressionModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_input</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">ray.data.Dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">num_instances</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">batch_size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../../utils/data_utils/index.html#lmflow.utils.data_utils.RewardModelInferenceResultWithInput" title="lmflow.utils.data_utils.RewardModelInferenceResultWithInput"><span class="pre">lmflow.utils.data_utils.RewardModelInferenceResultWithInput</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#RewardModelInferencer.__distributed_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__distributed_inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.RewardModelInferencer.__vllm_inference"> +<em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">__vllm_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel" title="lmflow.models.hf_text_regression_model.HFTextRegressionModel"><span class="pre">lmflow.models.hf_text_regression_model.HFTextRegressionModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_input</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_distributed_inference</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">float</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#RewardModelInferencer.__vllm_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__vllm_inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.RewardModelInferencer.__post_process_model_output"> +<span class="sig-name descname"><span class="pre">__post_process_model_output</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_output</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.modeling_outputs.SequenceClassifierOutputWithPast</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">float</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#RewardModelInferencer.__post_process_model_output"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__post_process_model_output" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.RewardModelInferencer.flatten_list"> +<span class="sig-name descname"><span class="pre">flatten_list</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">list_of_list</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#RewardModelInferencer.flatten_list"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.flatten_list" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_inferencer.RewardModelInferencer.compress_list"> +<span class="sig-name descname"><span class="pre">compress_list</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">list_to_compress</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sublist_lengths</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_inferencer.html#RewardModelInferencer.compress_list"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.compress_list" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../raft_aligner/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.raft_aligner</p> + </div> + </a> + <a class="right-next" + href="../rm_tuner/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.rm_tuner</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer"><code class="docutils literal notranslate"><span class="pre">RewardModelInferencer</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.data_args"><code class="docutils literal notranslate"><span class="pre">RewardModelInferencer.data_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.inferencer_args"><code class="docutils literal notranslate"><span class="pre">RewardModelInferencer.inferencer_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.model_args"><code class="docutils literal notranslate"><span class="pre">RewardModelInferencer.model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.local_rank"><code class="docutils literal notranslate"><span class="pre">RewardModelInferencer.local_rank</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.world_size"><code class="docutils literal notranslate"><span class="pre">RewardModelInferencer.world_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.inference"><code class="docutils literal notranslate"><span class="pre">RewardModelInferencer.inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer._inference"><code class="docutils literal notranslate"><span class="pre">RewardModelInferencer._inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__inference"><code class="docutils literal notranslate"><span class="pre">RewardModelInferencer.__inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__distributed_inference"><code class="docutils literal notranslate"><span class="pre">RewardModelInferencer.__distributed_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__vllm_inference"><code class="docutils literal notranslate"><span class="pre">RewardModelInferencer.__vllm_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__post_process_model_output"><code class="docutils literal notranslate"><span class="pre">RewardModelInferencer.__post_process_model_output()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.flatten_list"><code class="docutils literal notranslate"><span class="pre">RewardModelInferencer.flatten_list()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_inferencer.RewardModelInferencer.compress_list"><code class="docutils literal notranslate"><span class="pre">RewardModelInferencer.compress_list()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/rm_inferencer/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/rm_tuner/index.html b/autoapi/lmflow/pipeline/rm_tuner/index.html new file mode 100644 index 000000000..d1d3744d3 --- /dev/null +++ b/autoapi/lmflow/pipeline/rm_tuner/index.html @@ -0,0 +1,710 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.rm_tuner &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/rm_tuner/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.utils" href="../utils/index.html" /> + <link rel="prev" title="lmflow.pipeline.rm_inferencer" href="../rm_inferencer/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.rm_tuner</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.rm_tuner"> +<span id="lmflow-pipeline-rm-tuner"></span><h1>lmflow.pipeline.rm_tuner<a class="headerlink" href="#module-lmflow.pipeline.rm_tuner" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.rm_tuner.logger" title="lmflow.pipeline.rm_tuner.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.rm_tuner.RewardModelTuner" title="lmflow.pipeline.rm_tuner.RewardModelTuner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RewardModelTuner</span></code></a></p></td> +<td><p>Initializes the <cite>RewardModelTuner</cite> class.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_tuner.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.rm_tuner.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_tuner.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_tuner.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_tuner.RewardModelTuner"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.rm_tuner.</span></span><span class="sig-name descname"><span class="pre">RewardModelTuner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">finetuner_args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_tuner.html#RewardModelTuner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_tuner.RewardModelTuner" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../finetuner/index.html#lmflow.pipeline.finetuner.Finetuner" title="lmflow.pipeline.finetuner.Finetuner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.pipeline.finetuner.Finetuner</span></code></a></p> +<p>Initializes the <cite>RewardModelTuner</cite> class.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model_args</strong><span class="classifier">ModelArguments object.</span></dt><dd><p>Contains the arguments required to load the model.</p> +</dd> +<dt><strong>data_args</strong><span class="classifier">DatasetArguments object.</span></dt><dd><p>Contains the arguments required to load the dataset.</p> +</dd> +<dt><strong>finetuner_args</strong><span class="classifier">RewardModelTunerArguments object.</span></dt><dd><p>Contains the arguments required to perform finetuning.</p> +</dd> +<dt><strong>args</strong><span class="classifier">Optional.</span></dt><dd><p>Positional arguments.</p> +</dd> +<dt><strong>kwargs</strong><span class="classifier">Optional.</span></dt><dd><p>Keyword arguments.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.rm_tuner.RewardModelTuner.tune"> +<span class="sig-name descname"><span class="pre">tune</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel" title="lmflow.models.hf_text_regression_model.HFTextRegressionModel"><span class="pre">lmflow.models.hf_text_regression_model.HFTextRegressionModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">transform_dataset_in_place</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_collator</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/rm_tuner.html#RewardModelTuner.tune"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.rm_tuner.RewardModelTuner.tune" title="Link to this definition">#</a></dt> +<dd><p>Perform tuning for a model</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model</strong><span class="classifier">TunableModel object.</span></dt><dd><p>TunableModel to perform tuning.</p> +</dd> +<dt><strong>dataset:</strong></dt><dd><p>dataset to train model.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../rm_inferencer/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.rm_inferencer</p> + </div> + </a> + <a class="right-next" + href="../utils/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.utils</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_tuner.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_tuner.RewardModelTuner"><code class="docutils literal notranslate"><span class="pre">RewardModelTuner</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.rm_tuner.RewardModelTuner.tune"><code class="docutils literal notranslate"><span class="pre">RewardModelTuner.tune()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/rm_tuner/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html b/autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html new file mode 100644 index 000000000..90d251a0d --- /dev/null +++ b/autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html @@ -0,0 +1,771 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.utils.dpov2_dataprocessor &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.utils.dpov2_trainer" href="../dpov2_trainer/index.html" /> + <link rel="prev" title="lmflow.pipeline.utils" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.pipeline</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.dpov2_dataprocessor</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.utils.dpov2_dataprocessor"> +<span id="lmflow-pipeline-utils-dpov2-dataprocessor"></span><h1>lmflow.pipeline.utils.dpov2_dataprocessor<a class="headerlink" href="#module-lmflow.pipeline.utils.dpov2_dataprocessor" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.dpov2_dataprocessor.logger" title="lmflow.pipeline.utils.dpov2_dataprocessor.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding" title="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.dpov2_dataprocessor.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.dpov2_dataprocessor.</span></span><span class="sig-name descname"><span class="pre">PreferenceDataCollatorWithPadding</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding" title="Link to this definition">#</a></dt> +<dd><dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.tokenizer"> +<span class="sig-name descname"><span class="pre">tokenizer</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">transformers.PreTrainedTokenizerBase</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding.tokenizer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.tokenizer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.model"> +<span class="sig-name descname"><span class="pre">model</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">transformers.PreTrainedModel</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding.model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.padding"> +<span class="sig-name descname"><span class="pre">padding</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding.padding"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.padding" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_length"> +<span class="sig-name descname"><span class="pre">max_length</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding.max_length"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_length" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_prompt_length"> +<span class="sig-name descname"><span class="pre">max_prompt_length</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding.max_prompt_length"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_prompt_length" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.label_pad_token_id"> +<span class="sig-name descname"><span class="pre">label_pad_token_id</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">-100</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding.label_pad_token_id"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.label_pad_token_id" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.padding_value"> +<span class="sig-name descname"><span class="pre">padding_value</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding.padding_value"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.padding_value" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.truncation_mode"> +<span class="sig-name descname"><span class="pre">truncation_mode</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'keep_end'</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding.truncation_mode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.truncation_mode" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.is_encoder_decoder"> +<span class="sig-name descname"><span class="pre">is_encoder_decoder</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding.is_encoder_decoder"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.is_encoder_decoder" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_target_length"> +<span class="sig-name descname"><span class="pre">max_target_length</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding.max_target_length"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_target_length" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.mask_prompt"> +<span class="sig-name descname"><span class="pre">mask_prompt</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding.mask_prompt"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.mask_prompt" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.tokenize_batch_element"> +<span class="sig-name descname"><span class="pre">tokenize_batch_element</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">prompt</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">chosen</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rejected</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding.tokenize_batch_element"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.tokenize_batch_element" title="Link to this definition">#</a></dt> +<dd><p>Tokenize a single batch element.</p> +<dl class="simple"> +<dt>At this stage, we don’t convert to PyTorch tensors yet; we just handle the truncation</dt><dd><p>in case the prompt + chosen or prompt + rejected responses is/are too long. First +we truncate the prompt; if we’re still too long, we truncate the chosen/rejected.</p> +</dd> +<dt>We also create the labels for the chosen/rejected responses, which are of length equal to</dt><dd><p>the sum of the length of the prompt and the chosen/rejected response, with +label_pad_token_id for the prompt tokens.</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.collate"> +<span class="sig-name descname"><span class="pre">collate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">batch</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding.collate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.collate" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.__call__"> +<span class="sig-name descname"><span class="pre">__call__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">features</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_dataprocessor.html#PreferenceDataCollatorWithPadding.__call__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.__call__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.utils</p> + </div> + </a> + <a class="right-next" + href="../dpov2_trainer/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.utils.dpov2_trainer</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.tokenizer"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding.tokenizer</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.model"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding.model</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.padding"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding.padding</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_length"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding.max_length</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_prompt_length"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding.max_prompt_length</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.label_pad_token_id"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding.label_pad_token_id</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.padding_value"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding.padding_value</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.truncation_mode"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding.truncation_mode</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.is_encoder_decoder"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding.is_encoder_decoder</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_target_length"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding.max_target_length</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.mask_prompt"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding.mask_prompt</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.tokenize_batch_element"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding.tokenize_batch_element()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.collate"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding.collate()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.__call__"><code class="docutils literal notranslate"><span class="pre">PreferenceDataCollatorWithPadding.__call__()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html b/autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html new file mode 100644 index 000000000..bb9184454 --- /dev/null +++ b/autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html @@ -0,0 +1,724 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.utils.dpov2_trainer &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/utils/dpov2_trainer/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.utils.memory_safe_dpov2_align" href="../memory_safe_dpov2_align/index.html" /> + <link rel="prev" title="lmflow.pipeline.utils.dpov2_dataprocessor" href="../dpov2_dataprocessor/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.pipeline</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.dpov2_trainer</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.utils.dpov2_trainer"> +<span id="lmflow-pipeline-utils-dpov2-trainer"></span><h1>lmflow.pipeline.utils.dpov2_trainer<a class="headerlink" href="#module-lmflow.pipeline.utils.dpov2_trainer" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.dpov2_trainer.logger" title="lmflow.pipeline.utils.dpov2_trainer.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer" title="lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DPOv2Trainer</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_trainer.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.dpov2_trainer.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_trainer.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_trainer.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.dpov2_trainer.</span></span><span class="sig-name descname"><span class="pre">DPOv2Trainer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedModel</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">torch.nn.Module</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ref_model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedModel</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">torch.nn.Module</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">beta</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0.1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">loss_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Literal</span><span class="p"><span class="pre">[</span></span><span class="s"><span class="pre">'sigmoid'</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="s"><span class="pre">'hinge'</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="s"><span class="pre">'cross_entropy'</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="s"><span class="pre">'kl'</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="s"><span class="pre">'rev_kl'</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="s"><span class="pre">'raft'</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'rev_kl'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.TrainingArguments</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_collator</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.DataCollator</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">label_pad_token_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">-100</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">padding_value</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">truncation_mode</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'keep_end'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">train_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../../datasets/index.html#lmflow.datasets.Dataset" title="lmflow.datasets.Dataset"><span class="pre">datasets.Dataset</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eval_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../../datasets/index.html#lmflow.datasets.Dataset" title="lmflow.datasets.Dataset"><span class="pre">datasets.Dataset</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="../../../datasets/index.html#lmflow.datasets.Dataset" title="lmflow.datasets.Dataset"><span class="pre">datasets.Dataset</span></a><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizerBase</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_init</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">transformers.PreTrainedModel</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">callbacks</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">transformers.trainer_callback.TrainerCallback</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">optimizers</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.optim.Optimizer</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.optim.lr_scheduler.LambdaLR</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">(None,</span> <span class="pre">None)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">preprocess_logits_for_metrics</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_length</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_prompt_length</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_target_length</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">peft_config</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_encoder_decoder</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">disable_dropout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">generate_during_eval</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compute_metrics</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">transformers.trainer_utils.EvalLoopOutput</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mask_prompt</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">len_penalty</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">preprocessing_num_workers</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">1</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_trainer.html#DPOv2Trainer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">trl.DPOTrainer</span></code></p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.use_dpo_data_collator"> +<span class="sig-name descname"><span class="pre">use_dpo_data_collator</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_trainer.html#DPOv2Trainer.use_dpo_data_collator"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.use_dpo_data_collator" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.len_penalty"> +<span class="sig-name descname"><span class="pre">len_penalty</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_trainer.html#DPOv2Trainer.len_penalty"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.len_penalty" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.dpo_loss"> +<span class="sig-name descname"><span class="pre">dpo_loss</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">policy_chosen_logps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.FloatTensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">policy_rejected_logps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.FloatTensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reference_chosen_logps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.FloatTensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reference_rejected_logps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.FloatTensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">reference_free</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">margin</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.FloatTensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">len_penalty</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.FloatTensor</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.FloatTensor</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.FloatTensor</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_trainer.html#DPOv2Trainer.dpo_loss"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.dpo_loss" title="Link to this definition">#</a></dt> +<dd><p>Compute the DPO loss for a batch of policy and reference model log probabilities.</p> +<dl class="simple"> +<dt>Args:</dt><dd><p>policy_chosen_logps: Log probabilities of the policy model for the chosen responses. Shape: (batch_size,) +policy_rejected_logps: Log probabilities of the policy model for the rejected responses. Shape: (batch_size,) +reference_chosen_logps: Log probabilities of the reference model for the chosen responses. Shape: (batch_size,) +reference_rejected_logps: Log probabilities of the reference model for the rejected responses. Shape: (batch_size,) +beta: Temperature parameter for the DPO loss, typically something in the range of 0.1 to 0.5. We ignore the reference model as beta -&gt; 0. +reference_free: If True, we ignore the _provided_ reference model and implicitly use a reference model that assigns equal probability to all responses.</p> +</dd> +<dt>Returns:</dt><dd><p>A tuple of three tensors: (losses, chosen_rewards, rejected_rewards). +The losses tensor contains the DPO loss for each example in the batch. +The chosen_rewards and rejected_rewards tensors contain the rewards for the chosen and rejected responses, respectively.</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.get_batch_loss_metrics"> +<span class="sig-name descname"><span class="pre">get_batch_loss_metrics</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">batch</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">torch.LongTensor</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">train_eval</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Literal</span><span class="p"><span class="pre">[</span></span><span class="s"><span class="pre">'train'</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="s"><span class="pre">'eval'</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'train'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_trainer.html#DPOv2Trainer.get_batch_loss_metrics"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.get_batch_loss_metrics" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.get_batch_metrics"> +<span class="sig-name descname"><span class="pre">get_batch_metrics</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">batch</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">torch.LongTensor</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">train_eval</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Literal</span><span class="p"><span class="pre">[</span></span><span class="s"><span class="pre">'train'</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="s"><span class="pre">'eval'</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'train'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/dpov2_trainer.html#DPOv2Trainer.get_batch_metrics"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.get_batch_metrics" title="Link to this definition">#</a></dt> +<dd><p>Compute the DPO loss and other metrics for the given batch of inputs for train or test.</p> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../dpov2_dataprocessor/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.utils.dpov2_dataprocessor</p> + </div> + </a> + <a class="right-next" + href="../memory_safe_dpov2_align/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.utils.memory_safe_dpov2_align</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_trainer.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer"><code class="docutils literal notranslate"><span class="pre">DPOv2Trainer</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.use_dpo_data_collator"><code class="docutils literal notranslate"><span class="pre">DPOv2Trainer.use_dpo_data_collator</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.len_penalty"><code class="docutils literal notranslate"><span class="pre">DPOv2Trainer.len_penalty</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.dpo_loss"><code class="docutils literal notranslate"><span class="pre">DPOv2Trainer.dpo_loss()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.get_batch_loss_metrics"><code class="docutils literal notranslate"><span class="pre">DPOv2Trainer.get_batch_loss_metrics()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.get_batch_metrics"><code class="docutils literal notranslate"><span class="pre">DPOv2Trainer.get_batch_metrics()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/pipeline/utils/dpov2_trainer/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/utils/index.html b/autoapi/lmflow/pipeline/utils/index.html new file mode 100644 index 000000000..8ec3584a6 --- /dev/null +++ b/autoapi/lmflow/pipeline/utils/index.html @@ -0,0 +1,647 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.utils &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/utils/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.utils.dpov2_dataprocessor" href="dpov2_dataprocessor/index.html" /> + <link rel="prev" title="lmflow.pipeline.rm_tuner" href="../rm_tuner/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 current active has-children"><a class="current reference internal" href="#">lmflow.pipeline.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.utils"> +<span id="lmflow-pipeline-utils"></span><h1>lmflow.pipeline.utils<a class="headerlink" href="#module-lmflow.pipeline.utils" title="Link to this heading">#</a></h1> +<section id="submodules"> +<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l1"><a class="reference internal" href="dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l1"><a class="reference internal" href="memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l1"><a class="reference internal" href="memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l1"><a class="reference internal" href="peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l1"><a class="reference internal" href="raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l1"><a class="reference internal" href="rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l1"><a class="reference internal" href="rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../rm_tuner/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.rm_tuner</p> + </div> + </a> + <a class="right-next" + href="dpov2_dataprocessor/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.utils.dpov2_dataprocessor</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/utils/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.html b/autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.html new file mode 100644 index 000000000..0abee9a5b --- /dev/null +++ b/autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.html @@ -0,0 +1,685 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.utils.memory_safe_dpov2_align &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.utils.memory_safe_vllm_inference" href="../memory_safe_vllm_inference/index.html" /> + <link rel="prev" title="lmflow.pipeline.utils.dpov2_trainer" href="../dpov2_trainer/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.pipeline</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.memory_safe_dpov2_align</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.utils.memory_safe_dpov2_align"> +<span id="lmflow-pipeline-utils-memory-safe-dpov2-align"></span><h1>lmflow.pipeline.utils.memory_safe_dpov2_align<a class="headerlink" href="#module-lmflow.pipeline.utils.memory_safe_dpov2_align" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.memory_safe_dpov2_align.logger" title="lmflow.pipeline.utils.memory_safe_dpov2_align.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.memory_safe_dpov2_align.ReferenceModelArguments" title="lmflow.pipeline.utils.memory_safe_dpov2_align.ReferenceModelArguments"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ReferenceModelArguments</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.memory_safe_dpov2_align.main" title="lmflow.pipeline.utils.memory_safe_dpov2_align.main"><code class="xref py py-obj docutils literal notranslate"><span class="pre">main</span></code></a>()</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.memory_safe_dpov2_align.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.memory_safe_dpov2_align.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/memory_safe_dpov2_align.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.memory_safe_dpov2_align.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.memory_safe_dpov2_align.ReferenceModelArguments"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.memory_safe_dpov2_align.</span></span><span class="sig-name descname"><span class="pre">ReferenceModelArguments</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="../../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/memory_safe_dpov2_align.html#ReferenceModelArguments"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.memory_safe_dpov2_align.ReferenceModelArguments" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.memory_safe_dpov2_align.main"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.memory_safe_dpov2_align.</span></span><span class="sig-name descname"><span class="pre">main</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/memory_safe_dpov2_align.html#main"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.memory_safe_dpov2_align.main" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../dpov2_trainer/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.utils.dpov2_trainer</p> + </div> + </a> + <a class="right-next" + href="../memory_safe_vllm_inference/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.utils.memory_safe_vllm_inference</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.memory_safe_dpov2_align.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.memory_safe_dpov2_align.ReferenceModelArguments"><code class="docutils literal notranslate"><span class="pre">ReferenceModelArguments</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.memory_safe_dpov2_align.main"><code class="docutils literal notranslate"><span class="pre">main()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.html b/autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.html new file mode 100644 index 000000000..133992d0e --- /dev/null +++ b/autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.html @@ -0,0 +1,676 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.utils.memory_safe_vllm_inference &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.utils.peft_trainer" href="../peft_trainer/index.html" /> + <link rel="prev" title="lmflow.pipeline.utils.memory_safe_dpov2_align" href="../memory_safe_dpov2_align/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.pipeline</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.memory_safe_vllm_inference</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.utils.memory_safe_vllm_inference"> +<span id="lmflow-pipeline-utils-memory-safe-vllm-inference"></span><h1>lmflow.pipeline.utils.memory_safe_vllm_inference<a class="headerlink" href="#module-lmflow.pipeline.utils.memory_safe_vllm_inference" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.memory_safe_vllm_inference.logger" title="lmflow.pipeline.utils.memory_safe_vllm_inference.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.memory_safe_vllm_inference.main" title="lmflow.pipeline.utils.memory_safe_vllm_inference.main"><code class="xref py py-obj docutils literal notranslate"><span class="pre">main</span></code></a>()</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.memory_safe_vllm_inference.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.memory_safe_vllm_inference.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/memory_safe_vllm_inference.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.memory_safe_vllm_inference.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.memory_safe_vllm_inference.main"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.memory_safe_vllm_inference.</span></span><span class="sig-name descname"><span class="pre">main</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/memory_safe_vllm_inference.html#main"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.memory_safe_vllm_inference.main" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../memory_safe_dpov2_align/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.utils.memory_safe_dpov2_align</p> + </div> + </a> + <a class="right-next" + href="../peft_trainer/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.utils.peft_trainer</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.memory_safe_vllm_inference.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.memory_safe_vllm_inference.main"><code class="docutils literal notranslate"><span class="pre">main()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/utils/peft_trainer/index.html b/autoapi/lmflow/pipeline/utils/peft_trainer/index.html new file mode 100644 index 000000000..12bc0a02f --- /dev/null +++ b/autoapi/lmflow/pipeline/utils/peft_trainer/index.html @@ -0,0 +1,709 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.utils.peft_trainer &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/utils/peft_trainer/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.utils.raft_trainer" href="../raft_trainer/index.html" /> + <link rel="prev" title="lmflow.pipeline.utils.memory_safe_vllm_inference" href="../memory_safe_vllm_inference/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.pipeline</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.peft_trainer</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.utils.peft_trainer"> +<span id="lmflow-pipeline-utils-peft-trainer"></span><h1>lmflow.pipeline.utils.peft_trainer<a class="headerlink" href="#module-lmflow.pipeline.utils.peft_trainer" title="Link to this heading">#</a></h1> +<p>Trainer for Peft models</p> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.peft_trainer.PeftTrainer" title="lmflow.pipeline.utils.peft_trainer.PeftTrainer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PeftTrainer</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback" title="lmflow.pipeline.utils.peft_trainer.PeftSavingCallback"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PeftSavingCallback</span></code></a></p></td> +<td><p>Correctly save PEFT model and not full model</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.peft_trainer.PeftTrainer"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.peft_trainer.</span></span><span class="sig-name descname"><span class="pre">PeftTrainer</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/peft_trainer.html#PeftTrainer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.peft_trainer.PeftTrainer" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">transformers.Trainer</span></code></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.peft_trainer.PeftTrainer._save_checkpoint"> +<span class="sig-name descname"><span class="pre">_save_checkpoint</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">_</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">trial</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">metrics</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/peft_trainer.html#PeftTrainer._save_checkpoint"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.peft_trainer.PeftTrainer._save_checkpoint" title="Link to this definition">#</a></dt> +<dd><p>Don’t save base model, optimizer etc. +but create checkpoint folder (needed for saving adapter)</p> +</dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.peft_trainer.PeftSavingCallback"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.peft_trainer.</span></span><span class="sig-name descname"><span class="pre">PeftSavingCallback</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/peft_trainer.html#PeftSavingCallback"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">transformers.trainer_callback.TrainerCallback</span></code></p> +<p>Correctly save PEFT model and not full model</p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.peft_trainer.PeftSavingCallback._save"> +<span class="sig-name descname"><span class="pre">_save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">folder</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/peft_trainer.html#PeftSavingCallback._save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback._save" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_train_end"> +<span class="sig-name descname"><span class="pre">on_train_end</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.training_args.TrainingArguments</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.trainer_callback.TrainerState</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">control</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.trainer_callback.TrainerControl</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/peft_trainer.html#PeftSavingCallback.on_train_end"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_train_end" title="Link to this definition">#</a></dt> +<dd><p>Save final best model adapter</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_epoch_end"> +<span class="sig-name descname"><span class="pre">on_epoch_end</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.training_args.TrainingArguments</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.trainer_callback.TrainerState</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">control</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.trainer_callback.TrainerControl</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/peft_trainer.html#PeftSavingCallback.on_epoch_end"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_epoch_end" title="Link to this definition">#</a></dt> +<dd><p>Save intermediate model adapters in case of interrupted training</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_save"> +<span class="sig-name descname"><span class="pre">on_save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.training_args.TrainingArguments</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.trainer_callback.TrainerState</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">control</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.trainer_callback.TrainerControl</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/peft_trainer.html#PeftSavingCallback.on_save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_save" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../memory_safe_vllm_inference/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.utils.memory_safe_vllm_inference</p> + </div> + </a> + <a class="right-next" + href="../raft_trainer/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.utils.raft_trainer</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.peft_trainer.PeftTrainer"><code class="docutils literal notranslate"><span class="pre">PeftTrainer</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.peft_trainer.PeftTrainer._save_checkpoint"><code class="docutils literal notranslate"><span class="pre">PeftTrainer._save_checkpoint()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback"><code class="docutils literal notranslate"><span class="pre">PeftSavingCallback</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback._save"><code class="docutils literal notranslate"><span class="pre">PeftSavingCallback._save()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_train_end"><code class="docutils literal notranslate"><span class="pre">PeftSavingCallback.on_train_end()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_epoch_end"><code class="docutils literal notranslate"><span class="pre">PeftSavingCallback.on_epoch_end()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_save"><code class="docutils literal notranslate"><span class="pre">PeftSavingCallback.on_save()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/pipeline/utils/peft_trainer/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/utils/raft_trainer/index.html b/autoapi/lmflow/pipeline/utils/raft_trainer/index.html new file mode 100644 index 000000000..474b4ed7a --- /dev/null +++ b/autoapi/lmflow/pipeline/utils/raft_trainer/index.html @@ -0,0 +1,1796 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.utils.raft_trainer &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/utils/raft_trainer/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.utils.rm_dataprocessor" href="../rm_dataprocessor/index.html" /> + <link rel="prev" title="lmflow.pipeline.utils.peft_trainer" href="../peft_trainer/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.pipeline</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.raft_trainer</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.utils.raft_trainer"> +<span id="lmflow-pipeline-utils-raft-trainer"></span><h1>lmflow.pipeline.utils.raft_trainer<a class="headerlink" href="#module-lmflow.pipeline.utils.raft_trainer" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.raft_trainer.is_torch_greater_or_equal_than_1_10" title="lmflow.pipeline.utils.raft_trainer.is_torch_greater_or_equal_than_1_10"><code class="xref py py-obj docutils literal notranslate"><span class="pre">is_torch_greater_or_equal_than_1_10</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.raft_trainer.is_torch_less_than_1_11" title="lmflow.pipeline.utils.raft_trainer.is_torch_less_than_1_11"><code class="xref py py-obj docutils literal notranslate"><span class="pre">is_torch_less_than_1_11</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.raft_trainer._is_native_cpu_amp_available" title="lmflow.pipeline.utils.raft_trainer._is_native_cpu_amp_available"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_is_native_cpu_amp_available</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.raft_trainer.DEFAULT_CALLBACKS" title="lmflow.pipeline.utils.raft_trainer.DEFAULT_CALLBACKS"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DEFAULT_CALLBACKS</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#id0" title="lmflow.pipeline.utils.raft_trainer.DEFAULT_PROGRESS_CALLBACK"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DEFAULT_PROGRESS_CALLBACK</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#id0" title="lmflow.pipeline.utils.raft_trainer.DEFAULT_PROGRESS_CALLBACK"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DEFAULT_PROGRESS_CALLBACK</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.raft_trainer.IS_SAGEMAKER_MP_POST_1_10" title="lmflow.pipeline.utils.raft_trainer.IS_SAGEMAKER_MP_POST_1_10"><code class="xref py py-obj docutils literal notranslate"><span class="pre">IS_SAGEMAKER_MP_POST_1_10</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.raft_trainer.skip_first_batches" title="lmflow.pipeline.utils.raft_trainer.skip_first_batches"><code class="xref py py-obj docutils literal notranslate"><span class="pre">skip_first_batches</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.raft_trainer.logger" title="lmflow.pipeline.utils.raft_trainer.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.raft_trainer.TRAINING_ARGS_NAME" title="lmflow.pipeline.utils.raft_trainer.TRAINING_ARGS_NAME"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TRAINING_ARGS_NAME</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.raft_trainer.TRAINER_STATE_NAME" title="lmflow.pipeline.utils.raft_trainer.TRAINER_STATE_NAME"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TRAINER_STATE_NAME</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.raft_trainer.OPTIMIZER_NAME" title="lmflow.pipeline.utils.raft_trainer.OPTIMIZER_NAME"><code class="xref py py-obj docutils literal notranslate"><span class="pre">OPTIMIZER_NAME</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.raft_trainer.SCHEDULER_NAME" title="lmflow.pipeline.utils.raft_trainer.SCHEDULER_NAME"><code class="xref py py-obj docutils literal notranslate"><span class="pre">SCHEDULER_NAME</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.raft_trainer.SCALER_NAME" title="lmflow.pipeline.utils.raft_trainer.SCALER_NAME"><code class="xref py py-obj docutils literal notranslate"><span class="pre">SCALER_NAME</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer" title="lmflow.pipeline.utils.raft_trainer.RaftTrainer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RaftTrainer</span></code></a></p></td> +<td><p>Trainer is a simple but feature-complete training and eval loop for PyTorch, optimized for 🤗 Transformers.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.is_torch_greater_or_equal_than_1_10"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">is_torch_greater_or_equal_than_1_10</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#is_torch_greater_or_equal_than_1_10"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.is_torch_greater_or_equal_than_1_10" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.is_torch_less_than_1_11"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">is_torch_less_than_1_11</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#is_torch_less_than_1_11"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.is_torch_less_than_1_11" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer._is_native_cpu_amp_available"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">_is_native_cpu_amp_available</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#_is_native_cpu_amp_available"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer._is_native_cpu_amp_available" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.DEFAULT_CALLBACKS"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">DEFAULT_CALLBACKS</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#DEFAULT_CALLBACKS"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.DEFAULT_CALLBACKS" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.DEFAULT_PROGRESS_CALLBACK"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">DEFAULT_PROGRESS_CALLBACK</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#DEFAULT_PROGRESS_CALLBACK"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.DEFAULT_PROGRESS_CALLBACK" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="id0"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">DEFAULT_PROGRESS_CALLBACK</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#DEFAULT_PROGRESS_CALLBACK"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#id0" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.IS_SAGEMAKER_MP_POST_1_10"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">IS_SAGEMAKER_MP_POST_1_10</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#IS_SAGEMAKER_MP_POST_1_10"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.IS_SAGEMAKER_MP_POST_1_10" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.skip_first_batches"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">skip_first_batches</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#skip_first_batches"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.skip_first_batches" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.TRAINING_ARGS_NAME"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">TRAINING_ARGS_NAME</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'training_args.bin'</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#TRAINING_ARGS_NAME"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.TRAINING_ARGS_NAME" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.TRAINER_STATE_NAME"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">TRAINER_STATE_NAME</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'trainer_state.json'</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#TRAINER_STATE_NAME"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.TRAINER_STATE_NAME" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.OPTIMIZER_NAME"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">OPTIMIZER_NAME</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'optimizer.pt'</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#OPTIMIZER_NAME"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.OPTIMIZER_NAME" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.SCHEDULER_NAME"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">SCHEDULER_NAME</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'scheduler.pt'</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#SCHEDULER_NAME"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.SCHEDULER_NAME" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.SCALER_NAME"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">SCALER_NAME</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'scaler.pt'</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#SCALER_NAME"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.SCALER_NAME" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.raft_trainer.</span></span><span class="sig-name descname"><span class="pre">RaftTrainer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.modeling_utils.PreTrainedModel</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">torch.nn.Module</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.training_args.TrainingArguments</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_collator</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.data.data_collator.DataCollator</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">train_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.utils.data.Dataset</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eval_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.utils.data.Dataset</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.utils.data.Dataset</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.tokenization_utils_base.PreTrainedTokenizerBase</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_init</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">transformers.modeling_utils.PreTrainedModel</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compute_metrics</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">transformers.trainer_utils.EvalPrediction</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">callbacks</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">transformers.trainer_callback.TrainerCallback</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">optimizers</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.optim.Optimizer</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.optim.lr_scheduler.LambdaLR</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">(None,</span> <span class="pre">None)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">preprocess_logits_for_metrics</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer" title="Link to this definition">#</a></dt> +<dd><p>Trainer is a simple but feature-complete training and eval loop for PyTorch, optimized for 🤗 Transformers. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>model ([<cite>PreTrainedModel</cite>] or <cite>torch.nn.Module</cite>, <em>optional</em>):</dt><dd><p>The model to train, evaluate or use for predictions. If not provided, a <cite>model_init</cite> must be passed. +&lt;Tip&gt; +[<cite>Trainer</cite>] is optimized to work with the [<cite>PreTrainedModel</cite>] provided by the library. You can still use +your own models defined as <cite>torch.nn.Module</cite> as long as they work the same way as the 🤗 Transformers +models. +&lt;/Tip&gt;</p> +</dd> +<dt>args ([<cite>TrainingArguments</cite>], <em>optional</em>):</dt><dd><p>The arguments to tweak for training. Will default to a basic instance of [<cite>TrainingArguments</cite>] with the +<cite>output_dir</cite> set to a directory named <em>tmp_trainer</em> in the current directory if not provided.</p> +</dd> +<dt>data_collator (<cite>DataCollator</cite>, <em>optional</em>):</dt><dd><p>The function to use to form a batch from a list of elements of <cite>train_dataset</cite> or <cite>eval_dataset</cite>. Will +default to [<cite>default_data_collator</cite>] if no <cite>tokenizer</cite> is provided, an instance of +[<cite>DataCollatorWithPadding</cite>] otherwise.</p> +</dd> +<dt>train_dataset (<cite>torch.utils.data.Dataset</cite> or <cite>torch.utils.data.IterableDataset</cite>, <em>optional</em>):</dt><dd><p>The dataset to use for training. If it is a [<cite>~datasets.Dataset</cite>], columns not accepted by the +<cite>model.forward()</cite> method are automatically removed. +Note that if it’s a <cite>torch.utils.data.IterableDataset</cite> with some randomization and you are training in a +distributed fashion, your iterable dataset should either use a internal attribute <cite>generator</cite> that is a +<cite>torch.Generator</cite> for the randomization that must be identical on all processes (and the Trainer will +manually set the seed of this <cite>generator</cite> at each epoch) or have a <cite>set_epoch()</cite> method that internally +sets the seed of the RNGs used.</p> +</dd> +<dt>eval_dataset (Union[<cite>torch.utils.data.Dataset</cite>, Dict[str, <cite>torch.utils.data.Dataset</cite>]), <em>optional</em>):</dt><dd><p>The dataset to use for evaluation. If it is a [<cite>~datasets.Dataset</cite>], columns not accepted by the +<cite>model.forward()</cite> method are automatically removed. If it is a dictionary, it will evaluate on each +dataset prepending the dictionary key to the metric name.</p> +</dd> +<dt>tokenizer ([<cite>PreTrainedTokenizerBase</cite>], <em>optional</em>):</dt><dd><p>The tokenizer used to preprocess the data. If provided, will be used to automatically pad the inputs to the +maximum length when batching inputs, and it will be saved along the model to make it easier to rerun an +interrupted training or reuse the fine-tuned model.</p> +</dd> +<dt>model_init (<cite>Callable[[], PreTrainedModel]</cite>, <em>optional</em>):</dt><dd><p>A function that instantiates the model to be used. If provided, each call to [<cite>~Trainer.train</cite>] will start +from a new instance of the model as given by this function. +The function may have zero argument, or a single one containing the optuna/Ray Tune/SigOpt trial object, to +be able to choose different architectures according to hyper parameters (such as layer count, sizes of +inner layers, dropout probabilities etc).</p> +</dd> +<dt>compute_metrics (<cite>Callable[[EvalPrediction], Dict]</cite>, <em>optional</em>):</dt><dd><p>The function that will be used to compute metrics at evaluation. Must take a [<cite>EvalPrediction</cite>] and return +a dictionary string to metric values.</p> +</dd> +<dt>callbacks (List of [<cite>TrainerCallback</cite>], <em>optional</em>):</dt><dd><p>A list of callbacks to customize the training loop. Will add those to the list of default callbacks +detailed in [here](callback). +If you want to remove one of the default callbacks used, use the [<cite>Trainer.remove_callback</cite>] method.</p> +</dd> +<dt>optimizers (<cite>Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR]</cite>, <em>optional</em>): A tuple</dt><dd><p>containing the optimizer and the scheduler to use. Will default to an instance of [<cite>AdamW</cite>] on your model +and a scheduler given by [<cite>get_linear_schedule_with_warmup</cite>] controlled by <cite>args</cite>.</p> +</dd> +<dt>preprocess_logits_for_metrics (<cite>Callable[[torch.Tensor, torch.Tensor], torch.Tensor]</cite>, <em>optional</em>):</dt><dd><p>A function that preprocess the logits right before caching them at each evaluation step. Must take two +tensors, the logits and the labels, and return the logits once processed as desired. The modifications made +by this function will be reflected in the predictions received by <cite>compute_metrics</cite>. +Note that the labels (second parameter) will be <cite>None</cite> if the dataset does not have them.</p> +</dd> +</dl> +</div></blockquote> +<dl class="simple"> +<dt>Important attributes:</dt><dd><ul class="simple"> +<li><p><strong>model</strong> – Always points to the core model. If using a transformers model, it will be a [<cite>PreTrainedModel</cite>] +subclass.</p></li> +<li><p><strong>model_wrapped</strong> – Always points to the most external model in case one or more other modules wrap the +original model. This is the model that should be used for the forward pass. For example, under <cite>DeepSpeed</cite>, +the inner model is wrapped in <cite>DeepSpeed</cite> and then again in <cite>torch.nn.DistributedDataParallel</cite>. If the inner +model hasn’t been wrapped, then <cite>self.model_wrapped</cite> is the same as <cite>self.model</cite>.</p></li> +<li><p><strong>is_model_parallel</strong> – Whether or not a model has been switched to a model parallel mode (different from +data parallelism, this means some of the model layers are split on different GPUs).</p></li> +<li><p><strong>place_model_on_device</strong> – Whether or not to automatically place the model on the device - it will be set +to <cite>False</cite> if model parallel or deepspeed is used, or if the default +<cite>TrainingArguments.place_model_on_device</cite> is overridden to return <cite>False</cite> .</p></li> +<li><p><strong>is_in_train</strong> – Whether or not a model is currently running <cite>train</cite> (e.g. when <cite>evaluate</cite> is called while +in <cite>train</cite>)</p></li> +</ul> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.save_counter"> +<span class="sig-name descname"><span class="pre">save_counter</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.save_counter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.save_counter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.args"> +<span class="sig-name descname"><span class="pre">args</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.hp_name"> +<span class="sig-name descname"><span class="pre">hp_name</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.hp_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.hp_name" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.deepspeed"> +<span class="sig-name descname"><span class="pre">deepspeed</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.deepspeed"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.deepspeed" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_in_train"> +<span class="sig-name descname"><span class="pre">is_in_train</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.is_in_train"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_in_train" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._memory_tracker"> +<span class="sig-name descname"><span class="pre">_memory_tracker</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._memory_tracker"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._memory_tracker" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.sharded_ddp"> +<span class="sig-name descname"><span class="pre">sharded_ddp</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.sharded_ddp"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.sharded_ddp" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.fsdp"> +<span class="sig-name descname"><span class="pre">fsdp</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.fsdp"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.fsdp" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.place_model_on_device"> +<span class="sig-name descname"><span class="pre">place_model_on_device</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.place_model_on_device"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.place_model_on_device" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.data_collator"> +<span class="sig-name descname"><span class="pre">data_collator</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.data_collator"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.data_collator" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.train_dataset"> +<span class="sig-name descname"><span class="pre">train_dataset</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.train_dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.train_dataset" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.eval_dataset"> +<span class="sig-name descname"><span class="pre">eval_dataset</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.eval_dataset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.eval_dataset" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.tokenizer"> +<span class="sig-name descname"><span class="pre">tokenizer</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.tokenizer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.tokenizer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.model_wrapped"> +<span class="sig-name descname"><span class="pre">model_wrapped</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.model_wrapped"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.model_wrapped" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.model"> +<span class="sig-name descname"><span class="pre">model</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_metrics"> +<span class="sig-name descname"><span class="pre">compute_metrics</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.compute_metrics"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_metrics" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.preprocess_logits_for_metrics"> +<span class="sig-name descname"><span class="pre">preprocess_logits_for_metrics</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.preprocess_logits_for_metrics"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.preprocess_logits_for_metrics" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.callback_handler"> +<span class="sig-name descname"><span class="pre">callback_handler</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.callback_handler"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.callback_handler" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._loggers_initialized"> +<span class="sig-name descname"><span class="pre">_loggers_initialized</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._loggers_initialized"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._loggers_initialized" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._signature_columns"> +<span class="sig-name descname"><span class="pre">_signature_columns</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._signature_columns"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._signature_columns" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_apex"> +<span class="sig-name descname"><span class="pre">use_apex</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.use_apex"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_apex" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_cuda_amp"> +<span class="sig-name descname"><span class="pre">use_cuda_amp</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.use_cuda_amp"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_cuda_amp" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_cpu_amp"> +<span class="sig-name descname"><span class="pre">use_cpu_amp</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.use_cpu_amp"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_cpu_amp" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.do_grad_scaling"> +<span class="sig-name descname"><span class="pre">do_grad_scaling</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.do_grad_scaling"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.do_grad_scaling" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.state"> +<span class="sig-name descname"><span class="pre">state</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.state"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.state" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.control"> +<span class="sig-name descname"><span class="pre">control</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.control"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.control" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.current_flos"> +<span class="sig-name descname"><span class="pre">current_flos</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.current_flos"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.current_flos" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.hp_search_backend"> +<span class="sig-name descname"><span class="pre">hp_search_backend</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.hp_search_backend"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.hp_search_backend" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_tune_checkpoints"> +<span class="sig-name descname"><span class="pre">use_tune_checkpoints</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.use_tune_checkpoints"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_tune_checkpoints" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.label_names"> +<span class="sig-name descname"><span class="pre">label_names</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.label_names"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.label_names" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.can_return_loss"> +<span class="sig-name descname"><span class="pre">can_return_loss</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.can_return_loss"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.can_return_loss" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._train_batch_size"> +<span class="sig-name descname"><span class="pre">_train_batch_size</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._train_batch_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._train_batch_size" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.add_callback"> +<span class="sig-name descname"><span class="pre">add_callback</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">callback</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.add_callback"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.add_callback" title="Link to this definition">#</a></dt> +<dd><p>Add a callback to the current list of [<cite>~transformer.TrainerCallback</cite>]. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>callback (<cite>type</cite> or [<cite>~transformer.TrainerCallback</cite>]):</dt><dd><p>A [<cite>~transformer.TrainerCallback</cite>] class or an instance of a [<cite>~transformer.TrainerCallback</cite>]. In the +first case, will instantiate a member of that class.</p> +</dd> +</dl> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.pop_callback"> +<span class="sig-name descname"><span class="pre">pop_callback</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">callback</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.pop_callback"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.pop_callback" title="Link to this definition">#</a></dt> +<dd><p>Remove a callback from the current list of [<cite>~transformer.TrainerCallback</cite>] and returns it. +If the callback is not found, returns <cite>None</cite> (and no error is raised). +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>callback (<cite>type</cite> or [<cite>~transformer.TrainerCallback</cite>]):</dt><dd><p>A [<cite>~transformer.TrainerCallback</cite>] class or an instance of a [<cite>~transformer.TrainerCallback</cite>]. In the +first case, will pop the first member of that class found in the list of callbacks.</p> +</dd> +</dl> +</div></blockquote> +<dl class="simple"> +<dt>Returns:</dt><dd><p>[<cite>~transformer.TrainerCallback</cite>]: The callback removed, if found.</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.remove_callback"> +<span class="sig-name descname"><span class="pre">remove_callback</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">callback</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.remove_callback"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.remove_callback" title="Link to this definition">#</a></dt> +<dd><p>Remove a callback from the current list of [<cite>~transformer.TrainerCallback</cite>]. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>callback (<cite>type</cite> or [<cite>~transformer.TrainerCallback</cite>]):</dt><dd><p>A [<cite>~transformer.TrainerCallback</cite>] class or an instance of a [<cite>~transformer.TrainerCallback</cite>]. In the +first case, will remove the first member of that class found in the list of callbacks.</p> +</dd> +</dl> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._move_model_to_device"> +<span class="sig-name descname"><span class="pre">_move_model_to_device</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">device</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._move_model_to_device"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._move_model_to_device" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._set_signature_columns_if_needed"> +<span class="sig-name descname"><span class="pre">_set_signature_columns_if_needed</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._set_signature_columns_if_needed"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._set_signature_columns_if_needed" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._remove_unused_columns"> +<span class="sig-name descname"><span class="pre">_remove_unused_columns</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../../datasets/index.html#lmflow.datasets.Dataset" title="lmflow.datasets.Dataset"><span class="pre">datasets.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._remove_unused_columns"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._remove_unused_columns" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_collator_with_removed_columns"> +<span class="sig-name descname"><span class="pre">_get_collator_with_removed_columns</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data_collator</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Callable</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._get_collator_with_removed_columns"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_collator_with_removed_columns" title="Link to this definition">#</a></dt> +<dd><p>Wrap the data collator in a callable removing unused columns.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_train_sampler"> +<span class="sig-name descname"><span class="pre">_get_train_sampler</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">torch.utils.data.Sampler</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._get_train_sampler"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_train_sampler" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_train_dataloader"> +<span class="sig-name descname"><span class="pre">get_train_dataloader</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">torch.utils.data.DataLoader</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.get_train_dataloader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_train_dataloader" title="Link to this definition">#</a></dt> +<dd><p>Returns the training [<cite>~torch.utils.data.DataLoader</cite>]. +Will use no sampler if <cite>train_dataset</cite> does not implement <cite>__len__</cite>, a random sampler (adapted to distributed +training if necessary) otherwise. +Subclass and override this method if you want to inject some custom behavior.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_eval_sampler"> +<span class="sig-name descname"><span class="pre">_get_eval_sampler</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">eval_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.utils.data.Dataset</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">torch.utils.data.Sampler</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._get_eval_sampler"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_eval_sampler" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_eval_dataloader"> +<span class="sig-name descname"><span class="pre">get_eval_dataloader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">eval_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.utils.data.Dataset</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">torch.utils.data.DataLoader</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.get_eval_dataloader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_eval_dataloader" title="Link to this definition">#</a></dt> +<dd><p>Returns the evaluation [<cite>~torch.utils.data.DataLoader</cite>]. +Subclass and override this method if you want to inject some custom behavior. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>eval_dataset (<cite>torch.utils.data.Dataset</cite>, <em>optional</em>):</dt><dd><p>If provided, will override <cite>self.eval_dataset</cite>. If it is a [<cite>~datasets.Dataset</cite>], columns not accepted +by the <cite>model.forward()</cite> method are automatically removed. It must implement <cite>__len__</cite>.</p> +</dd> +</dl> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_test_dataloader"> +<span class="sig-name descname"><span class="pre">get_test_dataloader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">test_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.utils.data.Dataset</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">torch.utils.data.DataLoader</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.get_test_dataloader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_test_dataloader" title="Link to this definition">#</a></dt> +<dd><p>Returns the test [<cite>~torch.utils.data.DataLoader</cite>]. +Subclass and override this method if you want to inject some custom behavior. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>test_dataset (<cite>torch.utils.data.Dataset</cite>, <em>optional</em>):</dt><dd><p>The test dataset to use. If it is a [<cite>~datasets.Dataset</cite>], columns not accepted by the +<cite>model.forward()</cite> method are automatically removed. It must implement <cite>__len__</cite>.</p> +</dd> +</dl> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_optimizer_and_scheduler"> +<span class="sig-name descname"><span class="pre">create_optimizer_and_scheduler</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">num_training_steps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.create_optimizer_and_scheduler"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_optimizer_and_scheduler" title="Link to this definition">#</a></dt> +<dd><p>Setup the optimizer and the learning rate scheduler. +We provide a reasonable default that works well. If you want to use something else, you can pass a tuple in the +Trainer’s init through <cite>optimizers</cite>, or subclass and override this method (or <cite>create_optimizer</cite> and/or +<cite>create_scheduler</cite>) in a subclass.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_optimizer"> +<span class="sig-name descname"><span class="pre">create_optimizer</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.create_optimizer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_optimizer" title="Link to this definition">#</a></dt> +<dd><p>Setup the optimizer. +We provide a reasonable default that works well. If you want to use something else, you can pass a tuple in the +Trainer’s init through <cite>optimizers</cite>, or subclass and override this method in a subclass.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_optimizer_cls_and_kwargs"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_optimizer_cls_and_kwargs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.training_args.TrainingArguments</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.get_optimizer_cls_and_kwargs"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_optimizer_cls_and_kwargs" title="Link to this definition">#</a></dt> +<dd><p>Returns the optimizer class and optimizer parameters based on the training arguments. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>args (<cite>transformers.training_args.TrainingArguments</cite>):</dt><dd><p>The training arguments for the training session.</p> +</dd> +</dl> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_scheduler"> +<span class="sig-name descname"><span class="pre">create_scheduler</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">num_training_steps</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">optimizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.optim.Optimizer</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.create_scheduler"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_scheduler" title="Link to this definition">#</a></dt> +<dd><p>Setup the scheduler. The optimizer of the trainer must have been set up either before this method is called or +passed as an argument. +Args:</p> +<blockquote> +<div><p>num_training_steps (int): The number of training steps to do.</p> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.num_examples"> +<span class="sig-name descname"><span class="pre">num_examples</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataloader</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.utils.data.DataLoader</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.num_examples"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.num_examples" title="Link to this definition">#</a></dt> +<dd><p>Helper to get number of samples in a [<cite>~torch.utils.data.DataLoader</cite>] by accessing its dataset. When +dataloader.dataset does not exist or has no length, estimates as best it can</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._hp_search_setup"> +<span class="sig-name descname"><span class="pre">_hp_search_setup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">trial</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">optuna.Trial</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._hp_search_setup"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._hp_search_setup" title="Link to this definition">#</a></dt> +<dd><p>HP search setup code</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._report_to_hp_search"> +<span class="sig-name descname"><span class="pre">_report_to_hp_search</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">trial</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">optuna.Trial</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">step</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">metrics</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">float</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._report_to_hp_search"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._report_to_hp_search" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._tune_save_checkpoint"> +<span class="sig-name descname"><span class="pre">_tune_save_checkpoint</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._tune_save_checkpoint"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._tune_save_checkpoint" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.call_model_init"> +<span class="sig-name descname"><span class="pre">call_model_init</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">trial</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.call_model_init"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.call_model_init" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.torch_jit_model_eval"> +<span class="sig-name descname"><span class="pre">torch_jit_model_eval</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataloader</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">training</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.torch_jit_model_eval"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.torch_jit_model_eval" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.ipex_optimize_model"> +<span class="sig-name descname"><span class="pre">ipex_optimize_model</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">training</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dtype</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">torch.float32</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.ipex_optimize_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.ipex_optimize_model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._wrap_model"> +<span class="sig-name descname"><span class="pre">_wrap_model</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">training</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataloader</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._wrap_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._wrap_model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.train"> +<span class="sig-name descname"><span class="pre">train</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resume_from_checkpoint</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">trial</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">optuna.Trial</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_keys_for_eval</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_first_time</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.train"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.train" title="Link to this definition">#</a></dt> +<dd><p>Main training entry point. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>resume_from_checkpoint (<cite>str</cite> or <cite>bool</cite>, <em>optional</em>):</dt><dd><p>If a <cite>str</cite>, local path to a saved checkpoint as saved by a previous instance of [<cite>Trainer</cite>]. If a +<cite>bool</cite> and equals <cite>True</cite>, load the last checkpoint in <em>args.output_dir</em> as saved by a previous instance +of [<cite>Trainer</cite>]. If present, training will resume from the model/optimizer/scheduler states loaded here.</p> +</dd> +<dt>trial (<cite>optuna.Trial</cite> or <cite>Dict[str, Any]</cite>, <em>optional</em>):</dt><dd><p>The trial run or the hyperparameter dictionary for hyperparameter search.</p> +</dd> +<dt>ignore_keys_for_eval (<cite>List[str]</cite>, <em>optional</em>)</dt><dd><p>A list of keys in the output of your model (if it is a dictionary) that should be ignored when +gathering predictions for evaluation during the training.</p> +</dd> +<dt>kwargs:</dt><dd><p>Additional keyword arguments used to hide deprecated arguments</p> +</dd> +</dl> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._one_train"> +<span class="sig-name descname"><span class="pre">_one_train</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">batch_size</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">resume_from_checkpoint</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">trial</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_keys_for_eval</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._one_train"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._one_train" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._inner_training_loop"> +<span class="sig-name descname"><span class="pre">_inner_training_loop</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">batch_size</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">resume_from_checkpoint</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">trial</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_keys_for_eval</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._inner_training_loop"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._inner_training_loop" title="Link to this definition">#</a></dt> +<dd><p>0 This function serves to train one time +1 Update the self.train_dataset before calling this function</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_output_dir"> +<span class="sig-name descname"><span class="pre">_get_output_dir</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">trial</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._get_output_dir"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_output_dir" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_from_checkpoint"> +<span class="sig-name descname"><span class="pre">_load_from_checkpoint</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resume_from_checkpoint</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._load_from_checkpoint"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_from_checkpoint" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_best_model"> +<span class="sig-name descname"><span class="pre">_load_best_model</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._load_best_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_best_model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._issue_warnings_after_load"> +<span class="sig-name descname"><span class="pre">_issue_warnings_after_load</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">load_result</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._issue_warnings_after_load"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._issue_warnings_after_load" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._maybe_log_save_evaluate"> +<span class="sig-name descname"><span class="pre">_maybe_log_save_evaluate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tr_loss</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">trial</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">epoch</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_keys_for_eval</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._maybe_log_save_evaluate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._maybe_log_save_evaluate" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_rng_state"> +<span class="sig-name descname"><span class="pre">_load_rng_state</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">checkpoint</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._load_rng_state"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_rng_state" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._save_checkpoint"> +<span class="sig-name descname"><span class="pre">_save_checkpoint</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">trial</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">metrics</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._save_checkpoint"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._save_checkpoint" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_optimizer_and_scheduler"> +<span class="sig-name descname"><span class="pre">_load_optimizer_and_scheduler</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">checkpoint</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._load_optimizer_and_scheduler"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_optimizer_and_scheduler" title="Link to this definition">#</a></dt> +<dd><p>If optimizer and scheduler states exist, load them.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.hyperparameter_search"> +<span class="sig-name descname"><span class="pre">hyperparameter_search</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">hp_space</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">optuna.Trial</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">float</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compute_objective</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">float</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">float</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">n_trials</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">20</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">direction</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'minimize'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">backend</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">transformers.trainer_utils.HPSearchBackend</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hp_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">optuna.Trial</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">transformers.trainer_utils.BestRun</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.hyperparameter_search"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.hyperparameter_search" title="Link to this definition">#</a></dt> +<dd><p>Launch an hyperparameter search using <cite>optuna</cite> or <cite>Ray Tune</cite> or <cite>SigOpt</cite>. The optimized quantity is determined +by <cite>compute_objective</cite>, which defaults to a function returning the evaluation loss when no metric is provided, +the sum of all metrics otherwise. +&lt;Tip warning={true}&gt; +To use this method, you need to have provided a <cite>model_init</cite> when initializing your [<cite>Trainer</cite>]: we need to +reinitialize the model at each new run. This is incompatible with the <cite>optimizers</cite> argument, so you need to +subclass [<cite>Trainer</cite>] and override the method [<cite>~Trainer.create_optimizer_and_scheduler</cite>] for custom +optimizer/scheduler. +&lt;/Tip&gt; +Args:</p> +<blockquote> +<div><dl> +<dt>hp_space (<cite>Callable[[“optuna.Trial”], Dict[str, float]]</cite>, <em>optional</em>):</dt><dd><p>A function that defines the hyperparameter search space. Will default to +[<cite>~trainer_utils.default_hp_space_optuna</cite>] or [<cite>~trainer_utils.default_hp_space_ray</cite>] or +[<cite>~trainer_utils.default_hp_space_sigopt</cite>] depending on your backend.</p> +</dd> +<dt>compute_objective (<cite>Callable[[Dict[str, float]], float]</cite>, <em>optional</em>):</dt><dd><p>A function computing the objective to minimize or maximize from the metrics returned by the <cite>evaluate</cite> +method. Will default to [<cite>~trainer_utils.default_compute_objective</cite>].</p> +</dd> +<dt>n_trials (<cite>int</cite>, <em>optional</em>, defaults to 100):</dt><dd><p>The number of trial runs to test.</p> +</dd> +<dt>direction (<cite>str</cite>, <em>optional</em>, defaults to <cite>“minimize”</cite>):</dt><dd><p>Whether to optimize greater or lower objects. Can be <cite>“minimize”</cite> or <cite>“maximize”</cite>, you should pick +<cite>“minimize”</cite> when optimizing the validation loss, <cite>“maximize”</cite> when optimizing one or several metrics.</p> +</dd> +<dt>backend (<cite>str</cite> or [<cite>~training_utils.HPSearchBackend</cite>], <em>optional</em>):</dt><dd><p>The backend to use for hyperparameter search. Will default to optuna or Ray Tune or SigOpt, depending +on which one is installed. If all are installed, will default to optuna.</p> +</dd> +<dt>hp_name (<cite>Callable[[“optuna.Trial”], str]]</cite>, <em>optional</em>):</dt><dd><p>A function that defines the trial/run name. Will default to None.</p> +</dd> +<dt>kwargs (<cite>Dict[str, Any]</cite>, <em>optional</em>):</dt><dd><p>Additional keyword arguments passed along to <cite>optuna.create_study</cite> or <cite>ray.tune.run</cite>. For more +information see: +- the documentation of</p> +<blockquote> +<div><p>[optuna.create_study](<a class="reference external" href="https://optuna.readthedocs.io/en/stable/reference/generated/optuna.study.create_study.html">https://optuna.readthedocs.io/en/stable/reference/generated/optuna.study.create_study.html</a>)</p> +</div></blockquote> +<ul class="simple"> +<li><p>the documentation of [tune.run](<a class="reference external" href="https://docs.ray.io/en/latest/tune/api_docs/execution.html#tune-run">https://docs.ray.io/en/latest/tune/api_docs/execution.html#tune-run</a>)</p></li> +<li><p>the documentation of [sigopt](<a class="reference external" href="https://app.sigopt.com/docs/endpoints/experiments/create">https://app.sigopt.com/docs/endpoints/experiments/create</a>)</p></li> +</ul> +</dd> +</dl> +</div></blockquote> +<dl class="simple"> +<dt>Returns:</dt><dd><p>[<cite>trainer_utils.BestRun</cite>]: All the information about the best run. Experiment summary can be found in +<cite>run_summary</cite> attribute for Ray backend.</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.log"> +<span class="sig-name descname"><span class="pre">log</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">logs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">float</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.log"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.log" title="Link to this definition">#</a></dt> +<dd><p>Log <cite>logs</cite> on the various objects watching training. +Subclass and override this method to inject custom behavior. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>logs (<cite>Dict[str, float]</cite>):</dt><dd><p>The values to log.</p> +</dd> +</dl> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._prepare_input"> +<span class="sig-name descname"><span class="pre">_prepare_input</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Any</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._prepare_input"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._prepare_input" title="Link to this definition">#</a></dt> +<dd><p>Prepares one <cite>data</cite> before feeding it to the model, be it a tensor or a nested list/dictionary of tensors.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._prepare_inputs"> +<span class="sig-name descname"><span class="pre">_prepare_inputs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inputs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._prepare_inputs"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._prepare_inputs" title="Link to this definition">#</a></dt> +<dd><p>Prepare <cite>inputs</cite> before feeding them to the model, converting them to tensors if they are not already and +handling potential state.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_loss_context_manager"> +<span class="sig-name descname"><span class="pre">compute_loss_context_manager</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.compute_loss_context_manager"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_loss_context_manager" title="Link to this definition">#</a></dt> +<dd><p>A helper wrapper to group together context managers.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.autocast_smart_context_manager"> +<span class="sig-name descname"><span class="pre">autocast_smart_context_manager</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cache_enabled</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.autocast_smart_context_manager"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.autocast_smart_context_manager" title="Link to this definition">#</a></dt> +<dd><p>A helper wrapper that creates an appropriate context manager for <cite>autocast</cite> while feeding it the desired +arguments, depending on the situation.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.training_step"> +<span class="sig-name descname"><span class="pre">training_step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.nn.Module</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inputs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">torch.Tensor</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.training_step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.training_step" title="Link to this definition">#</a></dt> +<dd><p>Perform a training step on a batch of inputs. +Subclass and override to inject custom behavior. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>model (<cite>nn.Module</cite>):</dt><dd><p>The model to train.</p> +</dd> +<dt>inputs (<cite>Dict[str, Union[torch.Tensor, Any]]</cite>):</dt><dd><p>The inputs and targets of the model. +The dictionary will be unpacked before being fed to the model. Most models expect the targets under the +argument <cite>labels</cite>. Check your model’s documentation for all accepted arguments.</p> +</dd> +</dl> +</div></blockquote> +<dl class="simple"> +<dt>Return:</dt><dd><p><cite>torch.Tensor</cite>: The tensor with training loss on this batch.</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_loss"> +<span class="sig-name descname"><span class="pre">compute_loss</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inputs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">return_outputs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.compute_loss"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_loss" title="Link to this definition">#</a></dt> +<dd><p>How the loss is computed by Trainer. By default, all models return the loss in the first element. +Subclass and override for custom behavior.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_local_process_zero"> +<span class="sig-name descname"><span class="pre">is_local_process_zero</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.is_local_process_zero"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_local_process_zero" title="Link to this definition">#</a></dt> +<dd><p>Whether or not this process is the local (e.g., on one machine if training in a distributed fashion on several +machines) main process.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_world_process_zero"> +<span class="sig-name descname"><span class="pre">is_world_process_zero</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.is_world_process_zero"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_world_process_zero" title="Link to this definition">#</a></dt> +<dd><p>Whether or not this process is the global main process (when training in a distributed fashion on several +machines, this is only going to be <cite>True</cite> for one process).</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.save_model"> +<span class="sig-name descname"><span class="pre">save_model</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">output_dir</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_internal_call</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.save_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.save_model" title="Link to this definition">#</a></dt> +<dd><p>Will save the model, so you can reload it using <cite>from_pretrained()</cite>. +Will only save from the main process.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._save_tpu"> +<span class="sig-name descname"><span class="pre">_save_tpu</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">output_dir</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._save_tpu"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._save_tpu" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._save"> +<span class="sig-name descname"><span class="pre">_save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">output_dir</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">state_dict</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._save" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.store_flos"> +<span class="sig-name descname"><span class="pre">store_flos</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.store_flos"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.store_flos" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._sorted_checkpoints"> +<span class="sig-name descname"><span class="pre">_sorted_checkpoints</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">output_dir</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">checkpoint_prefix</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">PREFIX_CHECKPOINT_DIR</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_mtime</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._sorted_checkpoints"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._sorted_checkpoints" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._rotate_checkpoints"> +<span class="sig-name descname"><span class="pre">_rotate_checkpoints</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">use_mtime</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_dir</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._rotate_checkpoints"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._rotate_checkpoints" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.evaluate"> +<span class="sig-name descname"><span class="pre">evaluate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">eval_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.utils.data.Dataset</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_keys</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">metric_key_prefix</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'eval'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">float</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.evaluate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.evaluate" title="Link to this definition">#</a></dt> +<dd><p>Run evaluation and returns metrics. +The calling script will be responsible for providing a method to compute metrics, as they are task-dependent +(pass it to the init <cite>compute_metrics</cite> argument). +You can also subclass and override this method to inject custom behavior. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>eval_dataset (<cite>Dataset</cite>, <em>optional</em>):</dt><dd><p>Pass a dataset if you wish to override <cite>self.eval_dataset</cite>. If it is a [<cite>~datasets.Dataset</cite>], columns +not accepted by the <cite>model.forward()</cite> method are automatically removed. It must implement the <cite>__len__</cite> +method.</p> +</dd> +<dt>ignore_keys (<cite>Lst[str]</cite>, <em>optional</em>):</dt><dd><p>A list of keys in the output of your model (if it is a dictionary) that should be ignored when +gathering predictions.</p> +</dd> +<dt>metric_key_prefix (<cite>str</cite>, <em>optional</em>, defaults to <cite>“eval”</cite>):</dt><dd><p>An optional prefix to be used as the metrics key prefix. For example the metrics “bleu” will be named +“eval_bleu” if the prefix is “eval” (default)</p> +</dd> +</dl> +</div></blockquote> +<dl class="simple"> +<dt>Returns:</dt><dd><p>A dictionary containing the evaluation loss and the potential metrics computed from the predictions. The +dictionary also contains the epoch number which comes from the training state.</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.predict"> +<span class="sig-name descname"><span class="pre">predict</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">test_dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.utils.data.Dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_keys</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">metric_key_prefix</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'test'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">transformers.trainer_utils.PredictionOutput</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.predict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.predict" title="Link to this definition">#</a></dt> +<dd><p>Run prediction and returns predictions and potential metrics. +Depending on the dataset and your use case, your test dataset may contain labels. In that case, this method +will also return metrics, like in <cite>evaluate()</cite>. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>test_dataset (<cite>Dataset</cite>):</dt><dd><p>Dataset to run the predictions on. If it is an <cite>datasets.Dataset</cite>, columns not accepted by the +<cite>model.forward()</cite> method are automatically removed. Has to implement the method <cite>__len__</cite></p> +</dd> +<dt>ignore_keys (<cite>Lst[str]</cite>, <em>optional</em>):</dt><dd><p>A list of keys in the output of your model (if it is a dictionary) that should be ignored when +gathering predictions.</p> +</dd> +<dt>metric_key_prefix (<cite>str</cite>, <em>optional</em>, defaults to <cite>“test”</cite>):</dt><dd><p>An optional prefix to be used as the metrics key prefix. For example the metrics “bleu” will be named +“test_bleu” if the prefix is “test” (default)</p> +</dd> +</dl> +</div></blockquote> +<p>&lt;Tip&gt; +If your predictions or labels have different sequence length (for instance because you’re doing dynamic padding +in a token classification task) the predictions will be padded (on the right) to allow for concatenation into +one array. The padding index is -100. +&lt;/Tip&gt; +Returns: <em>NamedTuple</em> A namedtuple with the following keys:</p> +<blockquote> +<div><ul class="simple"> +<li><p>predictions (<cite>np.ndarray</cite>): The predictions on <cite>test_dataset</cite>.</p></li> +<li><p>label_ids (<cite>np.ndarray</cite>, <em>optional</em>): The labels (if the dataset contained some).</p></li> +<li><p>metrics (<cite>Dict[str, float]</cite>, <em>optional</em>): The potential dictionary of metrics (if the dataset contained +labels).</p></li> +</ul> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.evaluation_loop"> +<span class="sig-name descname"><span class="pre">evaluation_loop</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataloader</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.utils.data.DataLoader</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prediction_loss_only</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_keys</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">metric_key_prefix</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'eval'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">transformers.trainer_utils.EvalLoopOutput</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.evaluation_loop"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.evaluation_loop" title="Link to this definition">#</a></dt> +<dd><p>Prediction/evaluation loop, shared by <cite>Trainer.evaluate()</cite> and <cite>Trainer.predict()</cite>. +Works both with or without labels.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._nested_gather"> +<span class="sig-name descname"><span class="pre">_nested_gather</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tensors</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._nested_gather"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._nested_gather" title="Link to this definition">#</a></dt> +<dd><p>Gather value of <cite>tensors</cite> (tensor or list/tuple of nested tensors) and convert them to numpy before +concatenating them to <cite>gathered</cite></p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._pad_across_processes"> +<span class="sig-name descname"><span class="pre">_pad_across_processes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pad_index</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">-100</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._pad_across_processes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._pad_across_processes" title="Link to this definition">#</a></dt> +<dd><p>Recursively pad the tensors in a nested list/tuple/dictionary of tensors from all devices to the same size so +they can safely be gathered.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.prediction_step"> +<span class="sig-name descname"><span class="pre">prediction_step</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.nn.Module</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inputs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prediction_loss_only</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_keys</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.prediction_step"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.prediction_step" title="Link to this definition">#</a></dt> +<dd><p>Perform an evaluation step on <cite>model</cite> using <cite>inputs</cite>. +Subclass and override to inject custom behavior. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>model (<cite>nn.Module</cite>):</dt><dd><p>The model to evaluate.</p> +</dd> +<dt>inputs (<cite>Dict[str, Union[torch.Tensor, Any]]</cite>):</dt><dd><p>The inputs and targets of the model. +The dictionary will be unpacked before being fed to the model. Most models expect the targets under the +argument <cite>labels</cite>. Check your model’s documentation for all accepted arguments.</p> +</dd> +<dt>prediction_loss_only (<cite>bool</cite>):</dt><dd><p>Whether or not to return the loss only.</p> +</dd> +<dt>ignore_keys (<cite>Lst[str]</cite>, <em>optional</em>):</dt><dd><p>A list of keys in the output of your model (if it is a dictionary) that should be ignored when +gathering predictions.</p> +</dd> +</dl> +</div></blockquote> +<dl class="simple"> +<dt>Return:</dt><dd><p>Tuple[Optional[torch.Tensor], Optional[torch.Tensor], Optional[torch.Tensor]]: A tuple with the loss, +logits and labels (each being optional).</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.floating_point_ops"> +<span class="sig-name descname"><span class="pre">floating_point_ops</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inputs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.floating_point_ops"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.floating_point_ops" title="Link to this definition">#</a></dt> +<dd><p>For models that inherit from [<cite>PreTrainedModel</cite>], uses that method to compute the number of floating point +operations for every backward + forward pass. If using another model, either implement such a method in the +model or subclass and override this method. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>inputs (<cite>Dict[str, Union[torch.Tensor, Any]]</cite>):</dt><dd><p>The inputs and targets of the model.</p> +</dd> +</dl> +</div></blockquote> +<dl class="simple"> +<dt>Returns:</dt><dd><p><cite>int</cite>: The number of floating-point operations.</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.init_git_repo"> +<span class="sig-name descname"><span class="pre">init_git_repo</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">at_init</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.init_git_repo"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.init_git_repo" title="Link to this definition">#</a></dt> +<dd><p>Initializes a git repo in <cite>self.args.hub_model_id</cite>. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>at_init (<cite>bool</cite>, <em>optional</em>, defaults to <cite>False</cite>):</dt><dd><p>Whether this function is called before any training or not. If <cite>self.args.overwrite_output_dir</cite> is +<cite>True</cite> and <cite>at_init</cite> is <cite>True</cite>, the path to the repo (which is <cite>self.args.output_dir</cite>) might be wiped +out.</p> +</dd> +</dl> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_model_card"> +<span class="sig-name descname"><span class="pre">create_model_card</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">language</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">license</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tags</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">finetuned_from</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tasks</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset_tags</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.create_model_card"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_model_card" title="Link to this definition">#</a></dt> +<dd><p>Creates a draft of a model card using the information available to the <cite>Trainer</cite>. +Args:</p> +<blockquote> +<div><dl class="simple"> +<dt>language (<cite>str</cite>, <em>optional</em>):</dt><dd><p>The language of the model (if applicable)</p> +</dd> +<dt>license (<cite>str</cite>, <em>optional</em>):</dt><dd><p>The license of the model. Will default to the license of the pretrained model used, if the original +model given to the <cite>Trainer</cite> comes from a repo on the Hub.</p> +</dd> +<dt>tags (<cite>str</cite> or <cite>List[str]</cite>, <em>optional</em>):</dt><dd><p>Some tags to be included in the metadata of the model card.</p> +</dd> +<dt>model_name (<cite>str</cite>, <em>optional</em>):</dt><dd><p>The name of the model.</p> +</dd> +<dt>finetuned_from (<cite>str</cite>, <em>optional</em>):</dt><dd><p>The name of the model used to fine-tune this one (if applicable). Will default to the name of the repo +of the original model given to the <cite>Trainer</cite> (if it comes from the Hub).</p> +</dd> +<dt>tasks (<cite>str</cite> or <cite>List[str]</cite>, <em>optional</em>):</dt><dd><p>One or several task identifiers, to be included in the metadata of the model card.</p> +</dd> +<dt>dataset_tags (<cite>str</cite> or <cite>List[str]</cite>, <em>optional</em>):</dt><dd><p>One or several dataset tags, to be included in the metadata of the model card.</p> +</dd> +<dt>dataset (<cite>str</cite> or <cite>List[str]</cite>, <em>optional</em>):</dt><dd><p>One or several dataset identifiers, to be included in the metadata of the model card.</p> +</dd> +<dt>dataset_args (<cite>str</cite> or <cite>List[str]</cite>, <em>optional</em>):</dt><dd><p>One or several dataset arguments, to be included in the metadata of the model card.</p> +</dd> +</dl> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._push_from_checkpoint"> +<span class="sig-name descname"><span class="pre">_push_from_checkpoint</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">checkpoint_folder</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._push_from_checkpoint"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._push_from_checkpoint" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.push_to_hub"> +<span class="sig-name descname"><span class="pre">push_to_hub</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">commit_message</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'End</span> <span class="pre">of</span> <span class="pre">training'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">blocking</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.push_to_hub"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.push_to_hub" title="Link to this definition">#</a></dt> +<dd><p>Upload <em>self.model</em> and <em>self.tokenizer</em> to the 🤗 model hub on the repo <em>self.args.hub_model_id</em>. +Parameters:</p> +<blockquote> +<div><dl class="simple"> +<dt>commit_message (<cite>str</cite>, <em>optional</em>, defaults to <cite>“End of training”</cite>):</dt><dd><p>Message to commit while pushing.</p> +</dd> +<dt>blocking (<cite>bool</cite>, <em>optional</em>, defaults to <cite>True</cite>):</dt><dd><p>Whether the function should return only when the <cite>git push</cite> has finished.</p> +</dd> +<dt>kwargs:</dt><dd><p>Additional keyword arguments passed along to [<cite>~Trainer.create_model_card</cite>].</p> +</dd> +</dl> +</div></blockquote> +<dl class="simple"> +<dt>Returns:</dt><dd><p>The url of the commit of your model in the given repository if <cite>blocking=False</cite>, a tuple with the url of +the commit and an object to track the progress of the commit if <cite>blocking=True</cite></p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer.prediction_loop"> +<span class="sig-name descname"><span class="pre">prediction_loop</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataloader</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.utils.data.DataLoader</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prediction_loss_only</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_keys</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">metric_key_prefix</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'eval'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">transformers.trainer_utils.EvalLoopOutput</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer.prediction_loop"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.prediction_loop" title="Link to this definition">#</a></dt> +<dd><p>Prediction/evaluation loop, shared by <cite>Trainer.evaluate()</cite> and <cite>Trainer.predict()</cite>. +Works both with or without labels.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._gather_and_numpify"> +<span class="sig-name descname"><span class="pre">_gather_and_numpify</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tensors</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._gather_and_numpify"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._gather_and_numpify" title="Link to this definition">#</a></dt> +<dd><p>Gather value of <cite>tensors</cite> (tensor or list/tuple of nested tensors) and convert them to numpy before +concatenating them to <cite>gathered</cite></p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.raft_trainer.RaftTrainer._add_sm_patterns_to_gitignore"> +<span class="sig-name descname"><span class="pre">_add_sm_patterns_to_gitignore</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/raft_trainer.html#RaftTrainer._add_sm_patterns_to_gitignore"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._add_sm_patterns_to_gitignore" title="Link to this definition">#</a></dt> +<dd><p>Add SageMaker Checkpointing patterns to .gitignore file.</p> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../peft_trainer/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.utils.peft_trainer</p> + </div> + </a> + <a class="right-next" + href="../rm_dataprocessor/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.utils.rm_dataprocessor</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.is_torch_greater_or_equal_than_1_10"><code class="docutils literal notranslate"><span class="pre">is_torch_greater_or_equal_than_1_10</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.is_torch_less_than_1_11"><code class="docutils literal notranslate"><span class="pre">is_torch_less_than_1_11</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer._is_native_cpu_amp_available"><code class="docutils literal notranslate"><span class="pre">_is_native_cpu_amp_available</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.DEFAULT_CALLBACKS"><code class="docutils literal notranslate"><span class="pre">DEFAULT_CALLBACKS</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.DEFAULT_PROGRESS_CALLBACK"><code class="docutils literal notranslate"><span class="pre">DEFAULT_PROGRESS_CALLBACK</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#id0"><code class="docutils literal notranslate"><span class="pre">DEFAULT_PROGRESS_CALLBACK</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.IS_SAGEMAKER_MP_POST_1_10"><code class="docutils literal notranslate"><span class="pre">IS_SAGEMAKER_MP_POST_1_10</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.skip_first_batches"><code class="docutils literal notranslate"><span class="pre">skip_first_batches</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.TRAINING_ARGS_NAME"><code class="docutils literal notranslate"><span class="pre">TRAINING_ARGS_NAME</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.TRAINER_STATE_NAME"><code class="docutils literal notranslate"><span class="pre">TRAINER_STATE_NAME</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.OPTIMIZER_NAME"><code class="docutils literal notranslate"><span class="pre">OPTIMIZER_NAME</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.SCHEDULER_NAME"><code class="docutils literal notranslate"><span class="pre">SCHEDULER_NAME</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.SCALER_NAME"><code class="docutils literal notranslate"><span class="pre">SCALER_NAME</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer"><code class="docutils literal notranslate"><span class="pre">RaftTrainer</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.save_counter"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.save_counter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.args"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.hp_name"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.hp_name</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.deepspeed"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.deepspeed</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_in_train"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.is_in_train</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._memory_tracker"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._memory_tracker</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.sharded_ddp"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.sharded_ddp</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.fsdp"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.fsdp</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.place_model_on_device"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.place_model_on_device</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.data_collator"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.data_collator</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.train_dataset"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.train_dataset</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.eval_dataset"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.eval_dataset</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.tokenizer"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.tokenizer</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.model_wrapped"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.model_wrapped</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.model"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.model</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_metrics"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.compute_metrics</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.preprocess_logits_for_metrics"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.preprocess_logits_for_metrics</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.callback_handler"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.callback_handler</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._loggers_initialized"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._loggers_initialized</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._signature_columns"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._signature_columns</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_apex"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.use_apex</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_cuda_amp"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.use_cuda_amp</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_cpu_amp"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.use_cpu_amp</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.do_grad_scaling"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.do_grad_scaling</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.state"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.state</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.control"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.control</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.current_flos"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.current_flos</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.hp_search_backend"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.hp_search_backend</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_tune_checkpoints"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.use_tune_checkpoints</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.label_names"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.label_names</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.can_return_loss"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.can_return_loss</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._train_batch_size"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._train_batch_size</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.add_callback"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.add_callback()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.pop_callback"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.pop_callback()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.remove_callback"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.remove_callback()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._move_model_to_device"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._move_model_to_device()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._set_signature_columns_if_needed"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._set_signature_columns_if_needed()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._remove_unused_columns"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._remove_unused_columns()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_collator_with_removed_columns"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._get_collator_with_removed_columns()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_train_sampler"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._get_train_sampler()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_train_dataloader"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.get_train_dataloader()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_eval_sampler"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._get_eval_sampler()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_eval_dataloader"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.get_eval_dataloader()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_test_dataloader"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.get_test_dataloader()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_optimizer_and_scheduler"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.create_optimizer_and_scheduler()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_optimizer"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.create_optimizer()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_optimizer_cls_and_kwargs"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.get_optimizer_cls_and_kwargs()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_scheduler"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.create_scheduler()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.num_examples"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.num_examples()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._hp_search_setup"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._hp_search_setup()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._report_to_hp_search"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._report_to_hp_search()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._tune_save_checkpoint"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._tune_save_checkpoint()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.call_model_init"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.call_model_init()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.torch_jit_model_eval"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.torch_jit_model_eval()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.ipex_optimize_model"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.ipex_optimize_model()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._wrap_model"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._wrap_model()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.train"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.train()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._one_train"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._one_train()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._inner_training_loop"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._inner_training_loop()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_output_dir"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._get_output_dir()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_from_checkpoint"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._load_from_checkpoint()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_best_model"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._load_best_model()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._issue_warnings_after_load"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._issue_warnings_after_load()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._maybe_log_save_evaluate"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._maybe_log_save_evaluate()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_rng_state"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._load_rng_state()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._save_checkpoint"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._save_checkpoint()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_optimizer_and_scheduler"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._load_optimizer_and_scheduler()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.hyperparameter_search"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.hyperparameter_search()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.log"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.log()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._prepare_input"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._prepare_input()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._prepare_inputs"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._prepare_inputs()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_loss_context_manager"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.compute_loss_context_manager()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.autocast_smart_context_manager"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.autocast_smart_context_manager()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.training_step"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.training_step()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_loss"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.compute_loss()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_local_process_zero"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.is_local_process_zero()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_world_process_zero"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.is_world_process_zero()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.save_model"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.save_model()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._save_tpu"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._save_tpu()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._save"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._save()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.store_flos"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.store_flos()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._sorted_checkpoints"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._sorted_checkpoints()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._rotate_checkpoints"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._rotate_checkpoints()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.evaluate"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.evaluate()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.predict"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.predict()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.evaluation_loop"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.evaluation_loop()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._nested_gather"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._nested_gather()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._pad_across_processes"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._pad_across_processes()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.prediction_step"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.prediction_step()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.floating_point_ops"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.floating_point_ops()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.init_git_repo"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.init_git_repo()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_model_card"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.create_model_card()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._push_from_checkpoint"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._push_from_checkpoint()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.push_to_hub"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.push_to_hub()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer.prediction_loop"><code class="docutils literal notranslate"><span class="pre">RaftTrainer.prediction_loop()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._gather_and_numpify"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._gather_and_numpify()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.raft_trainer.RaftTrainer._add_sm_patterns_to_gitignore"><code class="docutils literal notranslate"><span class="pre">RaftTrainer._add_sm_patterns_to_gitignore()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/pipeline/utils/raft_trainer/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html b/autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html new file mode 100644 index 000000000..d62a68551 --- /dev/null +++ b/autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html @@ -0,0 +1,714 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.utils.rm_dataprocessor &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/utils/rm_dataprocessor/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.utils.rm_trainer" href="../rm_trainer/index.html" /> + <link rel="prev" title="lmflow.pipeline.utils.raft_trainer" href="../raft_trainer/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.pipeline</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.rm_dataprocessor</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.utils.rm_dataprocessor"> +<span id="lmflow-pipeline-utils-rm-dataprocessor"></span><h1>lmflow.pipeline.utils.rm_dataprocessor<a class="headerlink" href="#module-lmflow.pipeline.utils.rm_dataprocessor" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.rm_dataprocessor.logger" title="lmflow.pipeline.utils.rm_dataprocessor.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding" title="lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RewardDataCollatorWithPadding</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.rm_dataprocessor.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.rm_dataprocessor.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/rm_dataprocessor.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.rm_dataprocessor.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.rm_dataprocessor.</span></span><span class="sig-name descname"><span class="pre">RewardDataCollatorWithPadding</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/rm_dataprocessor.html#RewardDataCollatorWithPadding"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding" title="Link to this definition">#</a></dt> +<dd><dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.tokenizer"> +<span class="sig-name descname"><span class="pre">tokenizer</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">transformers.AutoTokenizer</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/rm_dataprocessor.html#RewardDataCollatorWithPadding.tokenizer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.tokenizer" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.padding"> +<span class="sig-name descname"><span class="pre">padding</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">transformers.utils.PaddingStrategy</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/rm_dataprocessor.html#RewardDataCollatorWithPadding.padding"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.padding" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.max_length"> +<span class="sig-name descname"><span class="pre">max_length</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/rm_dataprocessor.html#RewardDataCollatorWithPadding.max_length"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.max_length" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.pad_to_multiple_of"> +<span class="sig-name descname"><span class="pre">pad_to_multiple_of</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/rm_dataprocessor.html#RewardDataCollatorWithPadding.pad_to_multiple_of"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.pad_to_multiple_of" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.return_tensors"> +<span class="sig-name descname"><span class="pre">return_tensors</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'pt'</span></em><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/rm_dataprocessor.html#RewardDataCollatorWithPadding.return_tensors"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.return_tensors" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.__call__"> +<span class="sig-name descname"><span class="pre">__call__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">features</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/rm_dataprocessor.html#RewardDataCollatorWithPadding.__call__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.__call__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../raft_trainer/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.utils.raft_trainer</p> + </div> + </a> + <a class="right-next" + href="../rm_trainer/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.utils.rm_trainer</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.rm_dataprocessor.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding"><code class="docutils literal notranslate"><span class="pre">RewardDataCollatorWithPadding</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.tokenizer"><code class="docutils literal notranslate"><span class="pre">RewardDataCollatorWithPadding.tokenizer</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.padding"><code class="docutils literal notranslate"><span class="pre">RewardDataCollatorWithPadding.padding</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.max_length"><code class="docutils literal notranslate"><span class="pre">RewardDataCollatorWithPadding.max_length</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.pad_to_multiple_of"><code class="docutils literal notranslate"><span class="pre">RewardDataCollatorWithPadding.pad_to_multiple_of</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.return_tensors"><code class="docutils literal notranslate"><span class="pre">RewardDataCollatorWithPadding.return_tensors</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.__call__"><code class="docutils literal notranslate"><span class="pre">RewardDataCollatorWithPadding.__call__()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/utils/rm_trainer/index.html b/autoapi/lmflow/pipeline/utils/rm_trainer/index.html new file mode 100644 index 000000000..e30141aaf --- /dev/null +++ b/autoapi/lmflow/pipeline/utils/rm_trainer/index.html @@ -0,0 +1,712 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.utils.rm_trainer &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/utils/rm_trainer/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.pipeline.vllm_inferencer" href="../../vllm_inferencer/index.html" /> + <link rel="prev" title="lmflow.pipeline.utils.rm_dataprocessor" href="../rm_dataprocessor/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.pipeline</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.utils.rm_trainer</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.utils.rm_trainer"> +<span id="lmflow-pipeline-utils-rm-trainer"></span><h1>lmflow.pipeline.utils.rm_trainer<a class="headerlink" href="#module-lmflow.pipeline.utils.rm_trainer" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.rm_trainer.RewardTrainer" title="lmflow.pipeline.utils.rm_trainer.RewardTrainer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RewardTrainer</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer" title="lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PeftRewardTrainer</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.rm_trainer.compute_metrics" title="lmflow.pipeline.utils.rm_trainer.compute_metrics"><code class="xref py py-obj docutils literal notranslate"><span class="pre">compute_metrics</span></code></a>(eval_pred)</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.utils.rm_trainer.rm_loss" title="lmflow.pipeline.utils.rm_trainer.rm_loss"><code class="xref py py-obj docutils literal notranslate"><span class="pre">rm_loss</span></code></a>(model, inputs[, return_outputs])</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.rm_trainer.compute_metrics"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.rm_trainer.</span></span><span class="sig-name descname"><span class="pre">compute_metrics</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">eval_pred</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/rm_trainer.html#compute_metrics"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.rm_trainer.compute_metrics" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.rm_trainer.rm_loss"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.rm_trainer.</span></span><span class="sig-name descname"><span class="pre">rm_loss</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inputs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">return_outputs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/rm_trainer.html#rm_loss"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.rm_trainer.rm_loss" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.rm_trainer.RewardTrainer"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.rm_trainer.</span></span><span class="sig-name descname"><span class="pre">RewardTrainer</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/rm_trainer.html#RewardTrainer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.rm_trainer.RewardTrainer" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">transformers.Trainer</span></code></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.rm_trainer.RewardTrainer.compute_loss"> +<span class="sig-name descname"><span class="pre">compute_loss</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inputs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">return_outputs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/rm_trainer.html#RewardTrainer.compute_loss"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.rm_trainer.RewardTrainer.compute_loss" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.utils.rm_trainer.</span></span><span class="sig-name descname"><span class="pre">PeftRewardTrainer</span></span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/rm_trainer.html#PeftRewardTrainer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftTrainer" title="lmflow.pipeline.utils.peft_trainer.PeftTrainer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.pipeline.utils.peft_trainer.PeftTrainer</span></code></a></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer.compute_loss"> +<span class="sig-name descname"><span class="pre">compute_loss</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inputs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">return_outputs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/pipeline/utils/rm_trainer.html#PeftRewardTrainer.compute_loss"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer.compute_loss" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../rm_dataprocessor/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.utils.rm_dataprocessor</p> + </div> + </a> + <a class="right-next" + href="../../vllm_inferencer/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.pipeline.vllm_inferencer</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.rm_trainer.compute_metrics"><code class="docutils literal notranslate"><span class="pre">compute_metrics()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.rm_trainer.rm_loss"><code class="docutils literal notranslate"><span class="pre">rm_loss()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.rm_trainer.RewardTrainer"><code class="docutils literal notranslate"><span class="pre">RewardTrainer</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.rm_trainer.RewardTrainer.compute_loss"><code class="docutils literal notranslate"><span class="pre">RewardTrainer.compute_loss()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer"><code class="docutils literal notranslate"><span class="pre">PeftRewardTrainer</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer.compute_loss"><code class="docutils literal notranslate"><span class="pre">PeftRewardTrainer.compute_loss()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/pipeline/utils/rm_trainer/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/pipeline/vllm_inferencer/index.html b/autoapi/lmflow/pipeline/vllm_inferencer/index.html new file mode 100644 index 000000000..32ed0066c --- /dev/null +++ b/autoapi/lmflow/pipeline/vllm_inferencer/index.html @@ -0,0 +1,864 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.pipeline.vllm_inferencer &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/pipeline/vllm_inferencer/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.tokenization" href="../../tokenization/index.html" /> + <link rel="prev" title="lmflow.pipeline.utils.rm_trainer" href="../utils/rm_trainer/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.pipeline</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.pipeline</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.pipeline.vllm_inferencer</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.pipeline.vllm_inferencer"> +<span id="lmflow-pipeline-vllm-inferencer"></span><h1>lmflow.pipeline.vllm_inferencer<a class="headerlink" href="#module-lmflow.pipeline.vllm_inferencer" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.vllm_inferencer.logger" title="lmflow.pipeline.vllm_inferencer.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading" title="lmflow.pipeline.vllm_inferencer.InferencerWithOffloading"><code class="xref py py-obj docutils literal notranslate"><span class="pre">InferencerWithOffloading</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer" title="lmflow.pipeline.vllm_inferencer.VLLMInferencer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">VLLMInferencer</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer" title="lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">MemorySafeVLLMInferencer</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.vllm_inferencer.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.InferencerWithOffloading"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.vllm_inferencer.</span></span><span class="sig-name descname"><span class="pre">InferencerWithOffloading</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">inferencer_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.InferencerArguments" title="lmflow.args.InferencerArguments"><span class="pre">lmflow.args.InferencerArguments</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#InferencerWithOffloading"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base_pipeline/index.html#lmflow.pipeline.base_pipeline.BasePipeline" title="lmflow.pipeline.base_pipeline.BasePipeline"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.pipeline.base_pipeline.BasePipeline</span></code></a></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.model_args"> +<span class="sig-name descname"><span class="pre">model_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#InferencerWithOffloading.model_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.model_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.data_args"> +<span class="sig-name descname"><span class="pre">data_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#InferencerWithOffloading.data_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.data_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.inferencer_args"> +<span class="sig-name descname"><span class="pre">inferencer_args</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#InferencerWithOffloading.inferencer_args"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.inferencer_args" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.eos_token_id"> +<span class="sig-name descname"><span class="pre">eos_token_id</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#InferencerWithOffloading.eos_token_id"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.eos_token_id" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.inference"> +<em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">inference</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#InferencerWithOffloading.inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.save_inference_results"> +<em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">save_inference_results</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#InferencerWithOffloading.save_inference_results"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.save_inference_results" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.load_inference_results"> +<em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">load_inference_results</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#InferencerWithOffloading.load_inference_results"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.load_inference_results" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.VLLMInferencer"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.vllm_inferencer.</span></span><span class="sig-name descname"><span class="pre">VLLMInferencer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">inferencer_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.InferencerArguments" title="lmflow.args.InferencerArguments"><span class="pre">lmflow.args.InferencerArguments</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#VLLMInferencer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading" title="lmflow.pipeline.vllm_inferencer.InferencerWithOffloading"><code class="xref py py-obj docutils literal notranslate"><span class="pre">InferencerWithOffloading</span></code></a></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.VLLMInferencer.sampling_params"> +<span class="sig-name descname"><span class="pre">sampling_params</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#VLLMInferencer.sampling_params"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer.sampling_params" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.VLLMInferencer.parse_to_sampling_params"> +<span class="sig-name descname"><span class="pre">parse_to_sampling_params</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">inference_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.InferencerArguments" title="lmflow.args.InferencerArguments"><span class="pre">lmflow.args.InferencerArguments</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">vllm.SamplingParams</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#VLLMInferencer.parse_to_sampling_params"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer.parse_to_sampling_params" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.VLLMInferencer.inference"> +<span class="sig-name descname"><span class="pre">inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel" title="lmflow.models.hf_decoder_model.HFDecoderModel"><span class="pre">lmflow.models.hf_decoder_model.HFDecoderModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../datasets/index.html#lmflow.datasets.Dataset" title="lmflow.datasets.Dataset"><span class="pre">lmflow.datasets.Dataset</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_decode_inference_result</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">release_gpu</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inference_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.InferencerArguments" title="lmflow.args.InferencerArguments"><span class="pre">lmflow.args.InferencerArguments</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_distributed_inference</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../../utils/data_utils/index.html#lmflow.utils.data_utils.VLLMInferenceResultWithInput" title="lmflow.utils.data_utils.VLLMInferenceResultWithInput"><span class="pre">lmflow.utils.data_utils.VLLMInferenceResultWithInput</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#VLLMInferencer.inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer.inference" title="Link to this definition">#</a></dt> +<dd><p>Perform inference using the provided model and dataset. Will save inference results if +<cite>save_results</cite> is set to True in <cite>inferencer_args</cite>.</p> +<dl class="field-list"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model</strong><span class="classifier">HFDecoderModel</span></dt><dd><p>LMFlow HFDecoderModel object</p> +</dd> +<dt><strong>dataset</strong><span class="classifier">Dataset</span></dt><dd><p>LMFlow Dataset object</p> +</dd> +<dt><strong>apply_chat_template</strong><span class="classifier">bool, optional</span></dt><dd><p>Whether to apply chat template to the input, by default True.</p> +</dd> +<dt><strong>enable_decode_inference_result</strong><span class="classifier">bool, optional</span></dt><dd><p>Whether to decode after generation, by default False.</p> +</dd> +<dt><strong>release_gpu</strong><span class="classifier">bool, optional</span></dt><dd><p>Whether to release gpu resources, by default False.</p> +</dd> +<dt><strong>inference_args</strong><span class="classifier">InferencerArguments, optional</span></dt><dd><p>by default None</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl> +<dt>List[VLLMInferenceResultWithInput]</dt><dd><p>Return a list of VLLMInferenceResultWithInput, where each +element contains the input prompt and the corresponding output.</p> +<p>When <cite>enable_decode_inference_result = True</cite>, the output would be a list of strings, +contains sampling_params.n samples for the corresponding prompt.</p> +<p>When <cite>enable_decode_inference_result = False</cite>, return a list of list of ints +(token ids, no decoding after generation).</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.VLLMInferencer._inference"> +<span class="sig-name descname"><span class="pre">_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel" title="lmflow.models.hf_decoder_model.HFDecoderModel"><span class="pre">lmflow.models.hf_decoder_model.HFDecoderModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_input</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sampling_params</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">vllm.SamplingParams</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">release_gpu</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../../utils/data_utils/index.html#lmflow.utils.data_utils.VLLMInferenceResultWithInput" title="lmflow.utils.data_utils.VLLMInferenceResultWithInput"><span class="pre">lmflow.utils.data_utils.VLLMInferenceResultWithInput</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#VLLMInferencer._inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer._inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.VLLMInferencer._distributed_inference"> +<span class="sig-name descname"><span class="pre">_distributed_inference</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel" title="lmflow.models.hf_decoder_model.HFDecoderModel"><span class="pre">lmflow.models.hf_decoder_model.HFDecoderModel</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_input</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">ray.data.Dataset</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sampling_params</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">vllm.SamplingParams</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">num_instances</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">batch_size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">4</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">release_gpu</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../../utils/data_utils/index.html#lmflow.utils.data_utils.VLLMInferenceResultWithInput" title="lmflow.utils.data_utils.VLLMInferenceResultWithInput"><span class="pre">lmflow.utils.data_utils.VLLMInferenceResultWithInput</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#VLLMInferencer._distributed_inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer._distributed_inference" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.VLLMInferencer.save_inference_results"> +<span class="sig-name descname"><span class="pre">save_inference_results</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">outputs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">save_file_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#VLLMInferencer.save_inference_results"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer.save_inference_results" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.VLLMInferencer.load_inference_results"> +<span class="sig-name descname"><span class="pre">load_inference_results</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">results_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#VLLMInferencer.load_inference_results"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer.load_inference_results" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.pipeline.vllm_inferencer.</span></span><span class="sig-name descname"><span class="pre">MemorySafeVLLMInferencer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">inferencer_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.InferencerArguments" title="lmflow.args.InferencerArguments"><span class="pre">lmflow.args.InferencerArguments</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#MemorySafeVLLMInferencer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer" title="lmflow.pipeline.vllm_inferencer.VLLMInferencer"><code class="xref py py-obj docutils literal notranslate"><span class="pre">VLLMInferencer</span></code></a></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer.inferencer_file_path"> +<span class="sig-name descname"><span class="pre">inferencer_file_path</span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#MemorySafeVLLMInferencer.inferencer_file_path"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer.inferencer_file_path" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer.inference"> +<span class="sig-name descname"><span class="pre">inference</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../../utils/data_utils/index.html#lmflow.utils.data_utils.VLLMInferenceResultWithInput" title="lmflow.utils.data_utils.VLLMInferenceResultWithInput"><span class="pre">lmflow.utils.data_utils.VLLMInferenceResultWithInput</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/pipeline/vllm_inferencer.html#MemorySafeVLLMInferencer.inference"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer.inference" title="Link to this definition">#</a></dt> +<dd><p>Perform inference using the provided model and dataset. Will save inference results if +<cite>save_results</cite> is set to True in <cite>inferencer_args</cite>.</p> +<dl class="field-list"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>model</strong><span class="classifier">HFDecoderModel</span></dt><dd><p>LMFlow HFDecoderModel object</p> +</dd> +<dt><strong>dataset</strong><span class="classifier">Dataset</span></dt><dd><p>LMFlow Dataset object</p> +</dd> +<dt><strong>apply_chat_template</strong><span class="classifier">bool, optional</span></dt><dd><p>Whether to apply chat template to the input, by default True.</p> +</dd> +<dt><strong>enable_decode_inference_result</strong><span class="classifier">bool, optional</span></dt><dd><p>Whether to decode after generation, by default False.</p> +</dd> +<dt><strong>release_gpu</strong><span class="classifier">bool, optional</span></dt><dd><p>Whether to release gpu resources, by default False.</p> +</dd> +<dt><strong>inference_args</strong><span class="classifier">InferencerArguments, optional</span></dt><dd><p>by default None</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl> +<dt>List[VLLMInferenceResultWithInput]</dt><dd><p>Return a list of VLLMInferenceResultWithInput, where each +element contains the input prompt and the corresponding output.</p> +<p>When <cite>enable_decode_inference_result = True</cite>, the output would be a list of strings, +contains sampling_params.n samples for the corresponding prompt.</p> +<p>When <cite>enable_decode_inference_result = False</cite>, return a list of list of ints +(token ids, no decoding after generation).</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../utils/rm_trainer/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.utils.rm_trainer</p> + </div> + </a> + <a class="right-next" + href="../../tokenization/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.tokenization</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading"><code class="docutils literal notranslate"><span class="pre">InferencerWithOffloading</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.model_args"><code class="docutils literal notranslate"><span class="pre">InferencerWithOffloading.model_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.data_args"><code class="docutils literal notranslate"><span class="pre">InferencerWithOffloading.data_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.inferencer_args"><code class="docutils literal notranslate"><span class="pre">InferencerWithOffloading.inferencer_args</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.eos_token_id"><code class="docutils literal notranslate"><span class="pre">InferencerWithOffloading.eos_token_id</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.inference"><code class="docutils literal notranslate"><span class="pre">InferencerWithOffloading.inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.save_inference_results"><code class="docutils literal notranslate"><span class="pre">InferencerWithOffloading.save_inference_results()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.load_inference_results"><code class="docutils literal notranslate"><span class="pre">InferencerWithOffloading.load_inference_results()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer"><code class="docutils literal notranslate"><span class="pre">VLLMInferencer</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer.sampling_params"><code class="docutils literal notranslate"><span class="pre">VLLMInferencer.sampling_params</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer.parse_to_sampling_params"><code class="docutils literal notranslate"><span class="pre">VLLMInferencer.parse_to_sampling_params()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer.inference"><code class="docutils literal notranslate"><span class="pre">VLLMInferencer.inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer._inference"><code class="docutils literal notranslate"><span class="pre">VLLMInferencer._inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer._distributed_inference"><code class="docutils literal notranslate"><span class="pre">VLLMInferencer._distributed_inference()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer.save_inference_results"><code class="docutils literal notranslate"><span class="pre">VLLMInferencer.save_inference_results()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.VLLMInferencer.load_inference_results"><code class="docutils literal notranslate"><span class="pre">VLLMInferencer.load_inference_results()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer"><code class="docutils literal notranslate"><span class="pre">MemorySafeVLLMInferencer</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer.inferencer_file_path"><code class="docutils literal notranslate"><span class="pre">MemorySafeVLLMInferencer.inferencer_file_path</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer.inference"><code class="docutils literal notranslate"><span class="pre">MemorySafeVLLMInferencer.inference()</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/pipeline/vllm_inferencer/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/tokenization/hf_decoder_model/index.html b/autoapi/lmflow/tokenization/hf_decoder_model/index.html new file mode 100644 index 000000000..697c8e63f --- /dev/null +++ b/autoapi/lmflow/tokenization/hf_decoder_model/index.html @@ -0,0 +1,702 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.tokenization.hf_decoder_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/tokenization/hf_decoder_model/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.tokenization.hf_text_regression_model" href="../hf_text_regression_model/index.html" /> + <link rel="prev" title="lmflow.tokenization" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.tokenization</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.tokenization</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.tokenization.hf_decoder_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.tokenization.hf_decoder_model"> +<span id="lmflow-tokenization-hf-decoder-model"></span><h1>lmflow.tokenization.hf_decoder_model<a class="headerlink" href="#module-lmflow.tokenization.hf_decoder_model" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.tokenization.hf_decoder_model.logger" title="lmflow.tokenization.hf_decoder_model.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.tokenization.hf_decoder_model.tok_logger" title="lmflow.tokenization.hf_decoder_model.tok_logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">tok_logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.tokenization.hf_decoder_model.blocking" title="lmflow.tokenization.hf_decoder_model.blocking"><code class="xref py py-obj docutils literal notranslate"><span class="pre">blocking</span></code></a>(→ Dict)</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.tokenization.hf_decoder_model.tokenize_function" title="lmflow.tokenization.hf_decoder_model.tokenize_function"><code class="xref py py-obj docutils literal notranslate"><span class="pre">tokenize_function</span></code></a>(→ Dict)</p></td> +<td><p>Handels text_only and text2text datasets tokenization</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.tokenization.hf_decoder_model.conversation_tokenize_function" title="lmflow.tokenization.hf_decoder_model.conversation_tokenize_function"><code class="xref py py-obj docutils literal notranslate"><span class="pre">conversation_tokenize_function</span></code></a>(→ Dict)</p></td> +<td><p>Handels conversation datasets tokenization</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.tokenization.hf_decoder_model.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.tokenization.hf_decoder_model.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/tokenization/hf_decoder_model.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.tokenization.hf_decoder_model.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.tokenization.hf_decoder_model.tok_logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.tokenization.hf_decoder_model.</span></span><span class="sig-name descname"><span class="pre">tok_logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/tokenization/hf_decoder_model.html#tok_logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.tokenization.hf_decoder_model.tok_logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.tokenization.hf_decoder_model.blocking"> +<span class="sig-prename descclassname"><span class="pre">lmflow.tokenization.hf_decoder_model.</span></span><span class="sig-name descname"><span class="pre">blocking</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">token_dict</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">block_size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_max_length</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pad_token_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">padding_side</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">truncation_side</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'right'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/tokenization/hf_decoder_model.html#blocking"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.tokenization.hf_decoder_model.blocking" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.tokenization.hf_decoder_model.tokenize_function"> +<span class="sig-prename descclassname"><span class="pre">lmflow.tokenization.hf_decoder_model.</span></span><span class="sig-name descname"><span class="pre">tokenize_function</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">examples</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">transformers.PreTrainedTokenizerFast</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">column_names</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">label_columns</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenized_column_order</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">add_special_tokens</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_truncation</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/tokenization/hf_decoder_model.html#tokenize_function"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.tokenization.hf_decoder_model.tokenize_function" title="Link to this definition">#</a></dt> +<dd><p>Handels text_only and text2text datasets tokenization</p> +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.tokenization.hf_decoder_model.conversation_tokenize_function"> +<span class="sig-prename descclassname"><span class="pre">lmflow.tokenization.hf_decoder_model.</span></span><span class="sig-name descname"><span class="pre">conversation_tokenize_function</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">examples</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">transformers.PreTrainedTokenizerFast</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">column_names</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">conversation_template</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate" title="lmflow.utils.conversation_template.ConversationTemplate"><span class="pre">lmflow.utils.conversation_template.ConversationTemplate</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/tokenization/hf_decoder_model.html#conversation_tokenize_function"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.tokenization.hf_decoder_model.conversation_tokenize_function" title="Link to this definition">#</a></dt> +<dd><p>Handels conversation datasets tokenization</p> +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.tokenization</p> + </div> + </a> + <a class="right-next" + href="../hf_text_regression_model/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.tokenization.hf_text_regression_model</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.tokenization.hf_decoder_model.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.tokenization.hf_decoder_model.tok_logger"><code class="docutils literal notranslate"><span class="pre">tok_logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.tokenization.hf_decoder_model.blocking"><code class="docutils literal notranslate"><span class="pre">blocking()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.tokenization.hf_decoder_model.tokenize_function"><code class="docutils literal notranslate"><span class="pre">tokenize_function()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.tokenization.hf_decoder_model.conversation_tokenize_function"><code class="docutils literal notranslate"><span class="pre">conversation_tokenize_function()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/tokenization/hf_decoder_model/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/tokenization/hf_text_regression_model/index.html b/autoapi/lmflow/tokenization/hf_text_regression_model/index.html new file mode 100644 index 000000000..b914a5634 --- /dev/null +++ b/autoapi/lmflow/tokenization/hf_text_regression_model/index.html @@ -0,0 +1,740 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.tokenization.hf_text_regression_model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/tokenization/hf_text_regression_model/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.utils" href="../../utils/index.html" /> + <link rel="prev" title="lmflow.tokenization.hf_decoder_model" href="../hf_decoder_model/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.tokenization</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.tokenization</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.tokenization.hf_text_regression_model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.tokenization.hf_text_regression_model"> +<span id="lmflow-tokenization-hf-text-regression-model"></span><h1>lmflow.tokenization.hf_text_regression_model<a class="headerlink" href="#module-lmflow.tokenization.hf_text_regression_model" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.tokenization.hf_text_regression_model.logger" title="lmflow.tokenization.hf_text_regression_model.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.tokenization.hf_text_regression_model.tok_logger" title="lmflow.tokenization.hf_text_regression_model.tok_logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">tok_logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.tokenization.hf_text_regression_model.blocking_paired" title="lmflow.tokenization.hf_text_regression_model.blocking_paired"><code class="xref py py-obj docutils literal notranslate"><span class="pre">blocking_paired</span></code></a>(→ Dict)</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.tokenization.hf_text_regression_model.blocking" title="lmflow.tokenization.hf_text_regression_model.blocking"><code class="xref py py-obj docutils literal notranslate"><span class="pre">blocking</span></code></a>(→ Dict)</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.tokenization.hf_text_regression_model.blocking_text_to_textlist" title="lmflow.tokenization.hf_text_regression_model.blocking_text_to_textlist"><code class="xref py py-obj docutils literal notranslate"><span class="pre">blocking_text_to_textlist</span></code></a>(→ Dict)</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.tokenization.hf_text_regression_model.paired_conversation_tokenize_function" title="lmflow.tokenization.hf_text_regression_model.paired_conversation_tokenize_function"><code class="xref py py-obj docutils literal notranslate"><span class="pre">paired_conversation_tokenize_function</span></code></a>(→ Dict)</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.tokenization.hf_text_regression_model.conversation_tokenize_function" title="lmflow.tokenization.hf_text_regression_model.conversation_tokenize_function"><code class="xref py py-obj docutils literal notranslate"><span class="pre">conversation_tokenize_function</span></code></a>(→ Dict)</p></td> +<td><p>Handels conversation datasets tokenization</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.tokenization.hf_text_regression_model.tokenize_function" title="lmflow.tokenization.hf_text_regression_model.tokenize_function"><code class="xref py py-obj docutils literal notranslate"><span class="pre">tokenize_function</span></code></a>(→ Dict)</p></td> +<td><p>Handels text_only and text2text datasets tokenization</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.tokenization.hf_text_regression_model.text_to_textlist_tokenize_function" title="lmflow.tokenization.hf_text_regression_model.text_to_textlist_tokenize_function"><code class="xref py py-obj docutils literal notranslate"><span class="pre">text_to_textlist_tokenize_function</span></code></a>(→ Dict)</p></td> +<td><p>For rm inference, and don't need attn mask and labels.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.tokenization.hf_text_regression_model.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.tokenization.hf_text_regression_model.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/tokenization/hf_text_regression_model.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.tokenization.hf_text_regression_model.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.tokenization.hf_text_regression_model.tok_logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.tokenization.hf_text_regression_model.</span></span><span class="sig-name descname"><span class="pre">tok_logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/tokenization/hf_text_regression_model.html#tok_logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.tokenization.hf_text_regression_model.tok_logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.tokenization.hf_text_regression_model.blocking_paired"> +<span class="sig-prename descclassname"><span class="pre">lmflow.tokenization.hf_text_regression_model.</span></span><span class="sig-name descname"><span class="pre">blocking_paired</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">token_dict</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">column_names</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">block_size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_max_length</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pad_token_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">padding_side</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">truncation_side</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'right'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/tokenization/hf_text_regression_model.html#blocking_paired"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.tokenization.hf_text_regression_model.blocking_paired" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.tokenization.hf_text_regression_model.blocking"> +<span class="sig-prename descclassname"><span class="pre">lmflow.tokenization.hf_text_regression_model.</span></span><span class="sig-name descname"><span class="pre">blocking</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">token_dict</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">block_size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_max_length</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pad_token_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">padding_side</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">truncation_side</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'right'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/tokenization/hf_text_regression_model.html#blocking"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.tokenization.hf_text_regression_model.blocking" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.tokenization.hf_text_regression_model.blocking_text_to_textlist"> +<span class="sig-prename descclassname"><span class="pre">lmflow.tokenization.hf_text_regression_model.</span></span><span class="sig-name descname"><span class="pre">blocking_text_to_textlist</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">token_dict</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">block_size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_max_length</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pad_token_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">padding_side</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">truncation_side</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'right'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/tokenization/hf_text_regression_model.html#blocking_text_to_textlist"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.tokenization.hf_text_regression_model.blocking_text_to_textlist" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.tokenization.hf_text_regression_model.paired_conversation_tokenize_function"> +<span class="sig-prename descclassname"><span class="pre">lmflow.tokenization.hf_text_regression_model.</span></span><span class="sig-name descname"><span class="pre">paired_conversation_tokenize_function</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">examples</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">transformers.PreTrainedTokenizerFast</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">column_names</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">conversation_template</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate" title="lmflow.utils.conversation_template.ConversationTemplate"><span class="pre">lmflow.utils.conversation_template.ConversationTemplate</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/tokenization/hf_text_regression_model.html#paired_conversation_tokenize_function"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.tokenization.hf_text_regression_model.paired_conversation_tokenize_function" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.tokenization.hf_text_regression_model.conversation_tokenize_function"> +<span class="sig-prename descclassname"><span class="pre">lmflow.tokenization.hf_text_regression_model.</span></span><span class="sig-name descname"><span class="pre">conversation_tokenize_function</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">examples</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">transformers.PreTrainedTokenizerFast</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">column_names</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">conversation_template</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate" title="lmflow.utils.conversation_template.ConversationTemplate"><span class="pre">lmflow.utils.conversation_template.ConversationTemplate</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/tokenization/hf_text_regression_model.html#conversation_tokenize_function"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.tokenization.hf_text_regression_model.conversation_tokenize_function" title="Link to this definition">#</a></dt> +<dd><p>Handels conversation datasets tokenization</p> +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.tokenization.hf_text_regression_model.tokenize_function"> +<span class="sig-prename descclassname"><span class="pre">lmflow.tokenization.hf_text_regression_model.</span></span><span class="sig-name descname"><span class="pre">tokenize_function</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">examples</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">transformers.PreTrainedTokenizerFast</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">column_names</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">label_columns</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenized_column_order</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">add_special_tokens</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_truncation</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/tokenization/hf_text_regression_model.html#tokenize_function"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.tokenization.hf_text_regression_model.tokenize_function" title="Link to this definition">#</a></dt> +<dd><p>Handels text_only and text2text datasets tokenization</p> +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.tokenization.hf_text_regression_model.text_to_textlist_tokenize_function"> +<span class="sig-prename descclassname"><span class="pre">lmflow.tokenization.hf_text_regression_model.</span></span><span class="sig-name descname"><span class="pre">text_to_textlist_tokenize_function</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">examples</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../../args/index.html#lmflow.args.DatasetArguments" title="lmflow.args.DatasetArguments"><span class="pre">lmflow.args.DatasetArguments</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">transformers.PreTrainedTokenizerFast</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">column_names</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">add_special_tokens</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_truncation</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/tokenization/hf_text_regression_model.html#text_to_textlist_tokenize_function"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.tokenization.hf_text_regression_model.text_to_textlist_tokenize_function" title="Link to this definition">#</a></dt> +<dd><p>For rm inference, and don’t need attn mask and labels. +NOTE: input_ids here refers to the tokenized input_ids of the input <strong>and</strong> output</p> +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../hf_decoder_model/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.tokenization.hf_decoder_model</p> + </div> + </a> + <a class="right-next" + href="../../utils/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.tokenization.hf_text_regression_model.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.tokenization.hf_text_regression_model.tok_logger"><code class="docutils literal notranslate"><span class="pre">tok_logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.tokenization.hf_text_regression_model.blocking_paired"><code class="docutils literal notranslate"><span class="pre">blocking_paired()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.tokenization.hf_text_regression_model.blocking"><code class="docutils literal notranslate"><span class="pre">blocking()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.tokenization.hf_text_regression_model.blocking_text_to_textlist"><code class="docutils literal notranslate"><span class="pre">blocking_text_to_textlist()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.tokenization.hf_text_regression_model.paired_conversation_tokenize_function"><code class="docutils literal notranslate"><span class="pre">paired_conversation_tokenize_function()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.tokenization.hf_text_regression_model.conversation_tokenize_function"><code class="docutils literal notranslate"><span class="pre">conversation_tokenize_function()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.tokenization.hf_text_regression_model.tokenize_function"><code class="docutils literal notranslate"><span class="pre">tokenize_function()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.tokenization.hf_text_regression_model.text_to_textlist_tokenize_function"><code class="docutils literal notranslate"><span class="pre">text_to_textlist_tokenize_function()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/tokenization/hf_text_regression_model/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/tokenization/index.html b/autoapi/lmflow/tokenization/index.html new file mode 100644 index 000000000..1b9ab1590 --- /dev/null +++ b/autoapi/lmflow/tokenization/index.html @@ -0,0 +1,638 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.tokenization &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/tokenization/index';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <link rel="next" title="lmflow.tokenization.hf_decoder_model" href="hf_decoder_model/index.html" /> + <link rel="prev" title="lmflow.pipeline.vllm_inferencer" href="../pipeline/vllm_inferencer/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="current reference internal" href="#">lmflow.tokenization</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.tokenization</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.tokenization"> +<span id="lmflow-tokenization"></span><h1>lmflow.tokenization<a class="headerlink" href="#module-lmflow.tokenization" title="Link to this heading">#</a></h1> +<section id="submodules"> +<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l1"><a class="reference internal" href="hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../pipeline/vllm_inferencer/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.pipeline.vllm_inferencer</p> + </div> + </a> + <a class="right-next" + href="hf_decoder_model/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.tokenization.hf_decoder_model</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../_sources/autoapi/lmflow/tokenization/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/common/index.html b/autoapi/lmflow/utils/common/index.html new file mode 100644 index 000000000..881f9aff8 --- /dev/null +++ b/autoapi/lmflow/utils/common/index.html @@ -0,0 +1,777 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.common &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/common/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.utils.constants" href="../constants/index.html" /> + <link rel="prev" title="lmflow.utils" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.common</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.common"> +<span id="lmflow-utils-common"></span><h1>lmflow.utils.common<a class="headerlink" href="#module-lmflow.utils.common" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.common.logger" title="lmflow.utils.common.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.common.make_shell_args_from_dataclass" title="lmflow.utils.common.make_shell_args_from_dataclass"><code class="xref py py-obj docutils literal notranslate"><span class="pre">make_shell_args_from_dataclass</span></code></a>(→ Union[str, List[str]])</p></td> +<td><p>Return a string or a list of strings that can be used as shell arguments.</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.common.create_copied_dataclass" title="lmflow.utils.common.create_copied_dataclass"><code class="xref py py-obj docutils literal notranslate"><span class="pre">create_copied_dataclass</span></code></a>(original_dataclass, ...[, ...])</p></td> +<td><p>Create a copied dataclass with new field names and default values.</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.common.remove_dataclass_attr_prefix" title="lmflow.utils.common.remove_dataclass_attr_prefix"><code class="xref py py-obj docutils literal notranslate"><span class="pre">remove_dataclass_attr_prefix</span></code></a>(→ Dict)</p></td> +<td><p>Remove the prefix from the attribute names of a dataclass instance.</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.common.add_dataclass_attr_prefix" title="lmflow.utils.common.add_dataclass_attr_prefix"><code class="xref py py-obj docutils literal notranslate"><span class="pre">add_dataclass_attr_prefix</span></code></a>(→ Dict)</p></td> +<td><p>Add the prefix to the attribute names of a dataclass instance.</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.common.print_banner" title="lmflow.utils.common.print_banner"><code class="xref py py-obj docutils literal notranslate"><span class="pre">print_banner</span></code></a>(message)</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.common.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.common.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/common.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.common.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.common.make_shell_args_from_dataclass"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.common.</span></span><span class="sig-name descname"><span class="pre">make_shell_args_from_dataclass</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dataclass_objects</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">format</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'subprocess'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">skip_default</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignored_args_list</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/common.html#make_shell_args_from_dataclass"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.common.make_shell_args_from_dataclass" title="Link to this definition">#</a></dt> +<dd><p>Return a string or a list of strings that can be used as shell arguments.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>dataclass_objects</strong><span class="classifier">List</span></dt><dd><p>A list of dataclass objects.</p> +</dd> +<dt><strong>format</strong><span class="classifier">str, optional</span></dt><dd><p>Return format, can be “shell” or “subprocess”, by default “subprocess”.</p> +</dd> +<dt><strong>skip_default</strong><span class="classifier">bool, optional</span></dt><dd><p>Whether to skip attributes with default values, by default True.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>Union[str, List[str]]</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.common.create_copied_dataclass"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.common.</span></span><span class="sig-name descname"><span class="pre">create_copied_dataclass</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">original_dataclass</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field_prefix</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">class_prefix</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">new_default</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/common.html#create_copied_dataclass"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.common.create_copied_dataclass" title="Link to this definition">#</a></dt> +<dd><p>Create a copied dataclass with new field names and default values.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>original_dataclass</strong><span class="classifier">dataclass</span></dt><dd></dd> +<dt><strong>field_prefix</strong><span class="classifier">str</span></dt><dd><p>The prefix to add to the <strong>field</strong> names of the copied dataclass.</p> +</dd> +<dt><strong>class_prefix</strong><span class="classifier">str</span></dt><dd><p>The prefix to add to the <strong>class</strong> name of the copied dataclass.</p> +</dd> +<dt><strong>new_default</strong><span class="classifier">Dict, optional</span></dt><dd><p>The new default values for the copied dataclass. When None, the +default values of the original dataclass are used.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>dataclass</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.common.remove_dataclass_attr_prefix"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.common.</span></span><span class="sig-name descname"><span class="pre">remove_dataclass_attr_prefix</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data_instance</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prefix</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/common.html#remove_dataclass_attr_prefix"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.common.remove_dataclass_attr_prefix" title="Link to this definition">#</a></dt> +<dd><p>Remove the prefix from the attribute names of a dataclass instance.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>data_instance</strong><span class="classifier">dataclass</span></dt><dd></dd> +<dt><strong>prefix</strong><span class="classifier">str</span></dt><dd><p>The prefix to remove from the attribute names of the dataclass instance.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>Dict</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.common.add_dataclass_attr_prefix"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.common.</span></span><span class="sig-name descname"><span class="pre">add_dataclass_attr_prefix</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data_instance</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prefix</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/common.html#add_dataclass_attr_prefix"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.common.add_dataclass_attr_prefix" title="Link to this definition">#</a></dt> +<dd><p>Add the prefix to the attribute names of a dataclass instance.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>data_instance</strong><span class="classifier">dataclass</span></dt><dd></dd> +<dt><strong>prefix</strong><span class="classifier">str</span></dt><dd><p>The prefix to add to the attribute names of the dataclass instance.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>Dict</dt><dd></dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.common.print_banner"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.common.</span></span><span class="sig-name descname"><span class="pre">print_banner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/common.html#print_banner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.common.print_banner" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils</p> + </div> + </a> + <a class="right-next" + href="../constants/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.constants</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.common.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.common.make_shell_args_from_dataclass"><code class="docutils literal notranslate"><span class="pre">make_shell_args_from_dataclass()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.common.create_copied_dataclass"><code class="docutils literal notranslate"><span class="pre">create_copied_dataclass()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.common.remove_dataclass_attr_prefix"><code class="docutils literal notranslate"><span class="pre">remove_dataclass_attr_prefix()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.common.add_dataclass_attr_prefix"><code class="docutils literal notranslate"><span class="pre">add_dataclass_attr_prefix()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.common.print_banner"><code class="docutils literal notranslate"><span class="pre">print_banner()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/utils/common/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/constants/index.html b/autoapi/lmflow/utils/constants/index.html new file mode 100644 index 000000000..9f28189dd --- /dev/null +++ b/autoapi/lmflow/utils/constants/index.html @@ -0,0 +1,908 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.constants &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/constants/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.utils.conversation_template" href="../conversation_template/index.html" /> + <link rel="prev" title="lmflow.utils.common" href="../common/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.constants</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.constants"> +<span id="lmflow-utils-constants"></span><h1>lmflow.utils.constants<a class="headerlink" href="#module-lmflow.utils.constants" title="Link to this heading">#</a></h1> +<p>Commonly used constants.</p> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.TEXT_ONLY_DATASET_DESCRIPTION" title="lmflow.utils.constants.TEXT_ONLY_DATASET_DESCRIPTION"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TEXT_ONLY_DATASET_DESCRIPTION</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.constants.TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION" title="lmflow.utils.constants.TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION" title="lmflow.utils.constants.PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.constants.TEXT_ONLY_DATASET_DETAILS" title="lmflow.utils.constants.TEXT_ONLY_DATASET_DETAILS"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TEXT_ONLY_DATASET_DETAILS</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.TEXT2TEXT_DATASET_DESCRIPTION" title="lmflow.utils.constants.TEXT2TEXT_DATASET_DESCRIPTION"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TEXT2TEXT_DATASET_DESCRIPTION</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.constants.CONVERSATION_DATASET_DESCRIPTION" title="lmflow.utils.constants.CONVERSATION_DATASET_DESCRIPTION"><code class="xref py py-obj docutils literal notranslate"><span class="pre">CONVERSATION_DATASET_DESCRIPTION</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.PAIRED_CONVERSATION_DATASET_DESCRIPTION" title="lmflow.utils.constants.PAIRED_CONVERSATION_DATASET_DESCRIPTION"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PAIRED_CONVERSATION_DATASET_DESCRIPTION</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.constants.TEXT_TO_TEXTLIST_DATASET_DESCRIPTION" title="lmflow.utils.constants.TEXT_TO_TEXTLIST_DATASET_DESCRIPTION"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TEXT_TO_TEXTLIST_DATASET_DESCRIPTION</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.TEXT2TEXT_DATASET_DETAILS" title="lmflow.utils.constants.TEXT2TEXT_DATASET_DETAILS"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TEXT2TEXT_DATASET_DETAILS</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.constants.FLOAT_ONLY_DATASET_DESCRIPTION" title="lmflow.utils.constants.FLOAT_ONLY_DATASET_DESCRIPTION"><code class="xref py py-obj docutils literal notranslate"><span class="pre">FLOAT_ONLY_DATASET_DESCRIPTION</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.TEXT_ONLY_DATASET_LONG_DESCRITION" title="lmflow.utils.constants.TEXT_ONLY_DATASET_LONG_DESCRITION"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TEXT_ONLY_DATASET_LONG_DESCRITION</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.constants.TEXT2TEXT_DATASET_LONG_DESCRITION" title="lmflow.utils.constants.TEXT2TEXT_DATASET_LONG_DESCRITION"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TEXT2TEXT_DATASET_LONG_DESCRITION</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.DATASET_DESCRIPTION_MAP" title="lmflow.utils.constants.DATASET_DESCRIPTION_MAP"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DATASET_DESCRIPTION_MAP</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.constants.INSTANCE_FIELDS_MAP" title="lmflow.utils.constants.INSTANCE_FIELDS_MAP"><code class="xref py py-obj docutils literal notranslate"><span class="pre">INSTANCE_FIELDS_MAP</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.CONVERSATION_ROLE_NAMES" title="lmflow.utils.constants.CONVERSATION_ROLE_NAMES"><code class="xref py py-obj docutils literal notranslate"><span class="pre">CONVERSATION_ROLE_NAMES</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.constants.CONTROLLER_HEART_BEAT_EXPIRATION" title="lmflow.utils.constants.CONTROLLER_HEART_BEAT_EXPIRATION"><code class="xref py py-obj docutils literal notranslate"><span class="pre">CONTROLLER_HEART_BEAT_EXPIRATION</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.WORKER_HEART_BEAT_INTERVAL" title="lmflow.utils.constants.WORKER_HEART_BEAT_INTERVAL"><code class="xref py py-obj docutils literal notranslate"><span class="pre">WORKER_HEART_BEAT_INTERVAL</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.constants.LOGDIR" title="lmflow.utils.constants.LOGDIR"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LOGDIR</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.IGNORE_INDEX" title="lmflow.utils.constants.IGNORE_INDEX"><code class="xref py py-obj docutils literal notranslate"><span class="pre">IGNORE_INDEX</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.constants.IMAGE_TOKEN_INDEX" title="lmflow.utils.constants.IMAGE_TOKEN_INDEX"><code class="xref py py-obj docutils literal notranslate"><span class="pre">IMAGE_TOKEN_INDEX</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.DEFAULT_IMAGE_TOKEN" title="lmflow.utils.constants.DEFAULT_IMAGE_TOKEN"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DEFAULT_IMAGE_TOKEN</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.constants.DEFAULT_IMAGE_PATCH_TOKEN" title="lmflow.utils.constants.DEFAULT_IMAGE_PATCH_TOKEN"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DEFAULT_IMAGE_PATCH_TOKEN</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.DEFAULT_IM_START_TOKEN" title="lmflow.utils.constants.DEFAULT_IM_START_TOKEN"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DEFAULT_IM_START_TOKEN</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.constants.DEFAULT_IM_END_TOKEN" title="lmflow.utils.constants.DEFAULT_IM_END_TOKEN"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DEFAULT_IM_END_TOKEN</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.LMFLOW_LORA_TARGET_MODULES_MAPPING" title="lmflow.utils.constants.LMFLOW_LORA_TARGET_MODULES_MAPPING"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LMFLOW_LORA_TARGET_MODULES_MAPPING</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG" title="lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG"><code class="xref py py-obj docutils literal notranslate"><span class="pre">MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.RETURN_CODE_ERROR_BUFFER" title="lmflow.utils.constants.RETURN_CODE_ERROR_BUFFER"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RETURN_CODE_ERROR_BUFFER</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE" title="lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.constants.MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE" title="lmflow.utils.constants.MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.TEXT_ONLY_DATASET_DESCRIPTION"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">TEXT_ONLY_DATASET_DESCRIPTION</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">''</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#TEXT_ONLY_DATASET_DESCRIPTION"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.TEXT_ONLY_DATASET_DESCRIPTION" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">''</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">''</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.TEXT_ONLY_DATASET_DETAILS"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">TEXT_ONLY_DATASET_DETAILS</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">''</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#TEXT_ONLY_DATASET_DETAILS"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.TEXT_ONLY_DATASET_DETAILS" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.TEXT2TEXT_DATASET_DESCRIPTION"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">TEXT2TEXT_DATASET_DESCRIPTION</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">''</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#TEXT2TEXT_DATASET_DESCRIPTION"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.TEXT2TEXT_DATASET_DESCRIPTION" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.CONVERSATION_DATASET_DESCRIPTION"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">CONVERSATION_DATASET_DESCRIPTION</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">''</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#CONVERSATION_DATASET_DESCRIPTION"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.CONVERSATION_DATASET_DESCRIPTION" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.PAIRED_CONVERSATION_DATASET_DESCRIPTION"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">PAIRED_CONVERSATION_DATASET_DESCRIPTION</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">''</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#PAIRED_CONVERSATION_DATASET_DESCRIPTION"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.PAIRED_CONVERSATION_DATASET_DESCRIPTION" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.TEXT_TO_TEXTLIST_DATASET_DESCRIPTION"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">TEXT_TO_TEXTLIST_DATASET_DESCRIPTION</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">''</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#TEXT_TO_TEXTLIST_DATASET_DESCRIPTION"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.TEXT_TO_TEXTLIST_DATASET_DESCRIPTION" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.TEXT2TEXT_DATASET_DETAILS"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">TEXT2TEXT_DATASET_DETAILS</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">''</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#TEXT2TEXT_DATASET_DETAILS"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.TEXT2TEXT_DATASET_DETAILS" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.FLOAT_ONLY_DATASET_DESCRIPTION"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">FLOAT_ONLY_DATASET_DESCRIPTION</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">''</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#FLOAT_ONLY_DATASET_DESCRIPTION"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.FLOAT_ONLY_DATASET_DESCRIPTION" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.TEXT_ONLY_DATASET_LONG_DESCRITION"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">TEXT_ONLY_DATASET_LONG_DESCRITION</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">''</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#TEXT_ONLY_DATASET_LONG_DESCRITION"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.TEXT_ONLY_DATASET_LONG_DESCRITION" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.TEXT2TEXT_DATASET_LONG_DESCRITION"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">TEXT2TEXT_DATASET_LONG_DESCRITION</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">''</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#TEXT2TEXT_DATASET_LONG_DESCRITION"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.TEXT2TEXT_DATASET_LONG_DESCRITION" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.DATASET_DESCRIPTION_MAP"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">DATASET_DESCRIPTION_MAP</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#DATASET_DESCRIPTION_MAP"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.DATASET_DESCRIPTION_MAP" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.INSTANCE_FIELDS_MAP"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">INSTANCE_FIELDS_MAP</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#INSTANCE_FIELDS_MAP"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.INSTANCE_FIELDS_MAP" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.CONVERSATION_ROLE_NAMES"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">CONVERSATION_ROLE_NAMES</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#CONVERSATION_ROLE_NAMES"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.CONVERSATION_ROLE_NAMES" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.CONTROLLER_HEART_BEAT_EXPIRATION"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">CONTROLLER_HEART_BEAT_EXPIRATION</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">30</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#CONTROLLER_HEART_BEAT_EXPIRATION"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.CONTROLLER_HEART_BEAT_EXPIRATION" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.WORKER_HEART_BEAT_INTERVAL"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">WORKER_HEART_BEAT_INTERVAL</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">15</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#WORKER_HEART_BEAT_INTERVAL"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.WORKER_HEART_BEAT_INTERVAL" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.LOGDIR"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">LOGDIR</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'.'</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#LOGDIR"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.LOGDIR" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.IGNORE_INDEX"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">IGNORE_INDEX</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">-100</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#IGNORE_INDEX"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.IGNORE_INDEX" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.IMAGE_TOKEN_INDEX"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">IMAGE_TOKEN_INDEX</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">-200</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#IMAGE_TOKEN_INDEX"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.IMAGE_TOKEN_INDEX" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.DEFAULT_IMAGE_TOKEN"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">DEFAULT_IMAGE_TOKEN</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'&lt;image&gt;'</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#DEFAULT_IMAGE_TOKEN"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.DEFAULT_IMAGE_TOKEN" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.DEFAULT_IMAGE_PATCH_TOKEN"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">DEFAULT_IMAGE_PATCH_TOKEN</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'&lt;im_patch&gt;'</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#DEFAULT_IMAGE_PATCH_TOKEN"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.DEFAULT_IMAGE_PATCH_TOKEN" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.DEFAULT_IM_START_TOKEN"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">DEFAULT_IM_START_TOKEN</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'&lt;im_start&gt;'</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#DEFAULT_IM_START_TOKEN"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.DEFAULT_IM_START_TOKEN" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.DEFAULT_IM_END_TOKEN"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">DEFAULT_IM_END_TOKEN</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'&lt;im_end&gt;'</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#DEFAULT_IM_END_TOKEN"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.DEFAULT_IM_END_TOKEN" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.LMFLOW_LORA_TARGET_MODULES_MAPPING"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">LMFLOW_LORA_TARGET_MODULES_MAPPING</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#LMFLOW_LORA_TARGET_MODULES_MAPPING"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.LMFLOW_LORA_TARGET_MODULES_MAPPING" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'MEMORY_SAFE_VLLM_INFERENCE_DONE'</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.RETURN_CODE_ERROR_BUFFER"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">RETURN_CODE_ERROR_BUFFER</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">[134]</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#RETURN_CODE_ERROR_BUFFER"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.RETURN_CODE_ERROR_BUFFER" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">['OMP_NUM_THREADS',</span> <span class="pre">'LOCAL_RANK',</span> <span class="pre">'RANK',</span> <span class="pre">'GROUP_RANK',</span> <span class="pre">'ROLE_RANK',</span> <span class="pre">'ROLE_NAME',...</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.constants.MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.constants.</span></span><span class="sig-name descname"><span class="pre">MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">['OMP_NUM_THREADS',</span> <span class="pre">'LOCAL_RANK',</span> <span class="pre">'RANK',</span> <span class="pre">'GROUP_RANK',</span> <span class="pre">'ROLE_RANK',</span> <span class="pre">'ROLE_NAME',...</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/constants.html#MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.constants.MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../common/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.common</p> + </div> + </a> + <a class="right-next" + href="../conversation_template/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.conversation_template</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.TEXT_ONLY_DATASET_DESCRIPTION"><code class="docutils literal notranslate"><span class="pre">TEXT_ONLY_DATASET_DESCRIPTION</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION"><code class="docutils literal notranslate"><span class="pre">TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION"><code class="docutils literal notranslate"><span class="pre">PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.TEXT_ONLY_DATASET_DETAILS"><code class="docutils literal notranslate"><span class="pre">TEXT_ONLY_DATASET_DETAILS</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.TEXT2TEXT_DATASET_DESCRIPTION"><code class="docutils literal notranslate"><span class="pre">TEXT2TEXT_DATASET_DESCRIPTION</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.CONVERSATION_DATASET_DESCRIPTION"><code class="docutils literal notranslate"><span class="pre">CONVERSATION_DATASET_DESCRIPTION</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.PAIRED_CONVERSATION_DATASET_DESCRIPTION"><code class="docutils literal notranslate"><span class="pre">PAIRED_CONVERSATION_DATASET_DESCRIPTION</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.TEXT_TO_TEXTLIST_DATASET_DESCRIPTION"><code class="docutils literal notranslate"><span class="pre">TEXT_TO_TEXTLIST_DATASET_DESCRIPTION</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.TEXT2TEXT_DATASET_DETAILS"><code class="docutils literal notranslate"><span class="pre">TEXT2TEXT_DATASET_DETAILS</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.FLOAT_ONLY_DATASET_DESCRIPTION"><code class="docutils literal notranslate"><span class="pre">FLOAT_ONLY_DATASET_DESCRIPTION</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.TEXT_ONLY_DATASET_LONG_DESCRITION"><code class="docutils literal notranslate"><span class="pre">TEXT_ONLY_DATASET_LONG_DESCRITION</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.TEXT2TEXT_DATASET_LONG_DESCRITION"><code class="docutils literal notranslate"><span class="pre">TEXT2TEXT_DATASET_LONG_DESCRITION</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.DATASET_DESCRIPTION_MAP"><code class="docutils literal notranslate"><span class="pre">DATASET_DESCRIPTION_MAP</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.INSTANCE_FIELDS_MAP"><code class="docutils literal notranslate"><span class="pre">INSTANCE_FIELDS_MAP</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.CONVERSATION_ROLE_NAMES"><code class="docutils literal notranslate"><span class="pre">CONVERSATION_ROLE_NAMES</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.CONTROLLER_HEART_BEAT_EXPIRATION"><code class="docutils literal notranslate"><span class="pre">CONTROLLER_HEART_BEAT_EXPIRATION</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.WORKER_HEART_BEAT_INTERVAL"><code class="docutils literal notranslate"><span class="pre">WORKER_HEART_BEAT_INTERVAL</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.LOGDIR"><code class="docutils literal notranslate"><span class="pre">LOGDIR</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.IGNORE_INDEX"><code class="docutils literal notranslate"><span class="pre">IGNORE_INDEX</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.IMAGE_TOKEN_INDEX"><code class="docutils literal notranslate"><span class="pre">IMAGE_TOKEN_INDEX</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.DEFAULT_IMAGE_TOKEN"><code class="docutils literal notranslate"><span class="pre">DEFAULT_IMAGE_TOKEN</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.DEFAULT_IMAGE_PATCH_TOKEN"><code class="docutils literal notranslate"><span class="pre">DEFAULT_IMAGE_PATCH_TOKEN</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.DEFAULT_IM_START_TOKEN"><code class="docutils literal notranslate"><span class="pre">DEFAULT_IM_START_TOKEN</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.DEFAULT_IM_END_TOKEN"><code class="docutils literal notranslate"><span class="pre">DEFAULT_IM_END_TOKEN</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.LMFLOW_LORA_TARGET_MODULES_MAPPING"><code class="docutils literal notranslate"><span class="pre">LMFLOW_LORA_TARGET_MODULES_MAPPING</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG"><code class="docutils literal notranslate"><span class="pre">MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.RETURN_CODE_ERROR_BUFFER"><code class="docutils literal notranslate"><span class="pre">RETURN_CODE_ERROR_BUFFER</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE"><code class="docutils literal notranslate"><span class="pre">MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.constants.MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE"><code class="docutils literal notranslate"><span class="pre">MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/utils/constants/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/conversation_template/base/index.html b/autoapi/lmflow/utils/conversation_template/base/index.html new file mode 100644 index 000000000..f3bd1b021 --- /dev/null +++ b/autoapi/lmflow/utils/conversation_template/base/index.html @@ -0,0 +1,1153 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.conversation_template.base &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/conversation_template/base/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.conversation_template.chatglm" href="../chatglm/index.html" /> + <link rel="prev" title="lmflow.utils.conversation_template" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.conversation_template</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.base</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.conversation_template.base"> +<span id="lmflow-utils-conversation-template-base"></span><h1>lmflow.utils.conversation_template.base<a class="headerlink" href="#module-lmflow.utils.conversation_template.base" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.base.logger" title="lmflow.utils.conversation_template.base.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.base.EMPTY_TEMPLATE" title="lmflow.utils.conversation_template.base.EMPTY_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">EMPTY_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.base.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE" title="lmflow.utils.conversation_template.base.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">EMPTY_NO_SPECIAL_TOKENS_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.base.TemplateComponent" title="lmflow.utils.conversation_template.base.TemplateComponent"><code class="xref py py-obj docutils literal notranslate"><span class="pre">TemplateComponent</span></code></a></p></td> +<td><p>The minimal unit of a template, which can be a token, a string, or a list of tools.</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Formatter</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.base.EmptyFormatter" title="lmflow.utils.conversation_template.base.EmptyFormatter"><code class="xref py py-obj docutils literal notranslate"><span class="pre">EmptyFormatter</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.base.StringFormatter" title="lmflow.utils.conversation_template.base.StringFormatter"><code class="xref py py-obj docutils literal notranslate"><span class="pre">StringFormatter</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.base.ListFormatter" title="lmflow.utils.conversation_template.base.ListFormatter"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ListFormatter</span></code></a></p></td> +<td><p>Helper class that provides a standard way to create an ABC using</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.base.ConversationTemplate" title="lmflow.utils.conversation_template.base.ConversationTemplate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ConversationTemplate</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.base.ConversationTemplateForTool" title="lmflow.utils.conversation_template.base.ConversationTemplateForTool"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ConversationTemplateForTool</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.base.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.TemplateComponent"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.base.</span></span><span class="sig-name descname"><span class="pre">TemplateComponent</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#TemplateComponent"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.TemplateComponent" title="Link to this definition">#</a></dt> +<dd><p>The minimal unit of a template, which can be a token, a string, or a list of tools.</p> +<dl class="field-list"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl> +<dt><strong>type</strong><span class="classifier">Literal[‘token’, ‘token_id’, ‘string’, ‘tools’]</span></dt><dd><ul class="simple"> +<li><p>Type of the component.</p></li> +<li><p>When the component is a token or a string, the content should be <cite>string</cite>.</p></li> +</ul> +<p>The difference between the two is that token will be converted to token ids +by the tokenizer.convert_tokens_to_ids() method, while string will be directly +encoded by the tokenizer.encode() method. Specially, since the bos token and eos +token are frequently used across different templates, we provide the convenience +to use <cite>‘bos_token’</cite> and <cite>‘eos_token’</cite> to represent the actual bos and eos tokens when +<cite>type</cite> of the <cite>TemplateComponent</cite> is <cite>token</cite>. For example:</p> +<p><code class="docutils literal notranslate"><span class="pre">`python</span> +<span class="pre">TemplateComponent(type='token',</span> <span class="pre">content='bos_token')</span> +<span class="pre">`</span></code></p> +<p>After encoding, the content will be replaced by the actual token id of the bos token. +Please do remember that if you set the <cite>type</cite> to <cite>string</cite>, the tokenizer will try to +encode the string ‘bos_token’ instead of providing the actual bos token.</p> +<ul class="simple"> +<li><p>When the component is token_id, the content should be <cite>int</cite> or <cite>List[int]</cite>, and</p></li> +</ul> +<p>will be directly appended to the encoded token ids.</p> +<ul class="simple"> +<li><p>Tools are not supported yet.</p></li> +</ul> +</dd> +<dt><strong>content</strong><span class="classifier">Union[str, int, List[str], List[int]]</span></dt><dd><p>Content of the component.</p> +</dd> +</dl> +</dd> +</dl> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.TemplateComponent.type"> +<span class="sig-name descname"><span class="pre">type</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Literal</span><span class="p"><span class="pre">[</span></span><span class="s"><span class="pre">'token'</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="s"><span class="pre">'token_id'</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="s"><span class="pre">'string'</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="s"><span class="pre">'tools'</span></span><span class="p"><span class="pre">]</span></span></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#TemplateComponent.type"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.TemplateComponent.type" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.TemplateComponent.content"> +<span class="sig-name descname"><span class="pre">content</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#TemplateComponent.content"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.TemplateComponent.content" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.TemplateComponent.mask"> +<span class="sig-name descname"><span class="pre">mask</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#TemplateComponent.mask"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.TemplateComponent.mask" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.TemplateComponent.__post_init__"> +<span class="sig-name descname"><span class="pre">__post_init__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#TemplateComponent.__post_init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.TemplateComponent.__post_init__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.TemplateComponent.__repr__"> +<span class="sig-name descname"><span class="pre">__repr__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#TemplateComponent.__repr__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.TemplateComponent.__repr__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.TemplateComponent.__str__"> +<span class="sig-name descname"><span class="pre">__str__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#TemplateComponent.__str__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.TemplateComponent.__str__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.Formatter"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.base.</span></span><span class="sig-name descname"><span class="pre">Formatter</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#Formatter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.Formatter" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">abc.ABC</span></code></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.Formatter.template"> +<span class="sig-name descname"><span class="pre">template</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#lmflow.utils.conversation_template.base.TemplateComponent" title="lmflow.utils.conversation_template.base.TemplateComponent"><span class="pre">TemplateComponent</span></a><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">[]</span></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#Formatter.template"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.Formatter.template" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.Formatter.format"> +<em class="property"><span class="pre">abstract</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">format</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#lmflow.utils.conversation_template.base.TemplateComponent" title="lmflow.utils.conversation_template.base.TemplateComponent"><span class="pre">TemplateComponent</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#Formatter.format"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.Formatter.format" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.Formatter.has_placeholder"> +<span class="sig-name descname"><span class="pre">has_placeholder</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#Formatter.has_placeholder"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.Formatter.has_placeholder" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.EmptyFormatter"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.base.</span></span><span class="sig-name descname"><span class="pre">EmptyFormatter</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#EmptyFormatter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.EmptyFormatter" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Formatter</span></code></a></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.EmptyFormatter.__post_init__"> +<span class="sig-name descname"><span class="pre">__post_init__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#EmptyFormatter.__post_init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.EmptyFormatter.__post_init__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.EmptyFormatter.format"> +<span class="sig-name descname"><span class="pre">format</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">list</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#EmptyFormatter.format"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.EmptyFormatter.format" title="Link to this definition">#</a></dt> +<dd><p>Empty formatter for when no formatting is needed. +This is useful when user has already applied formatting to the dataset.</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt>list</dt><dd><p>Original template.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.StringFormatter"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.base.</span></span><span class="sig-name descname"><span class="pre">StringFormatter</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#StringFormatter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.StringFormatter" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Formatter</span></code></a></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.StringFormatter.__post_init__"> +<span class="sig-name descname"><span class="pre">__post_init__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#StringFormatter.__post_init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.StringFormatter.__post_init__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.StringFormatter.format"> +<span class="sig-name descname"><span class="pre">format</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">list</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#StringFormatter.format"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.StringFormatter.format" title="Link to this definition">#</a></dt> +<dd><p>Format the string components with the provided keyword arguments. +Mostly used for formatting system prompt, user and assistant messages.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>**kwargs</strong><span class="classifier">dict</span></dt><dd><p>Keyword arguments containing values to replace in the template components.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>list</dt><dd><p>Formatted template.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ListFormatter"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.base.</span></span><span class="sig-name descname"><span class="pre">ListFormatter</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ListFormatter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ListFormatter" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Formatter</span></code></a></p> +<p>Helper class that provides a standard way to create an ABC using +inheritance.</p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ListFormatter.format"> +<span class="sig-name descname"><span class="pre">format</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">list</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ListFormatter.format"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ListFormatter.format" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.base.</span></span><span class="sig-name descname"><span class="pre">ConversationTemplate</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate" title="Link to this definition">#</a></dt> +<dd><dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.user_formatter"> +<span class="sig-name descname"><span class="pre">user_formatter</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><span class="pre">Formatter</span></a></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.user_formatter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.user_formatter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.assistant_formatter"> +<span class="sig-name descname"><span class="pre">assistant_formatter</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><span class="pre">Formatter</span></a></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.assistant_formatter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.assistant_formatter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.function_formatter"> +<span class="sig-name descname"><span class="pre">function_formatter</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><span class="pre">Formatter</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.function_formatter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.function_formatter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.observation_formatter"> +<span class="sig-name descname"><span class="pre">observation_formatter</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><span class="pre">Formatter</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.observation_formatter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.observation_formatter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.system_formatter"> +<span class="sig-name descname"><span class="pre">system_formatter</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><span class="pre">Formatter</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.system_formatter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.system_formatter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.force_system"> +<span class="sig-name descname"><span class="pre">force_system</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.force_system"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.force_system" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.tools_formatter"> +<span class="sig-name descname"><span class="pre">tools_formatter</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><span class="pre">Formatter</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.tools_formatter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.tools_formatter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.separator"> +<span class="sig-name descname"><span class="pre">separator</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#lmflow.utils.conversation_template.base.TemplateComponent" title="lmflow.utils.conversation_template.base.TemplateComponent"><span class="pre">TemplateComponent</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.separator"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.separator" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.remove_last_sep"> +<span class="sig-name descname"><span class="pre">remove_last_sep</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.remove_last_sep"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.remove_last_sep" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.special_starter"> +<span class="sig-name descname"><span class="pre">special_starter</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#lmflow.utils.conversation_template.base.TemplateComponent" title="lmflow.utils.conversation_template.base.TemplateComponent"><span class="pre">TemplateComponent</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.special_starter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.special_starter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.special_stopper"> +<span class="sig-name descname"><span class="pre">special_stopper</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#lmflow.utils.conversation_template.base.TemplateComponent" title="lmflow.utils.conversation_template.base.TemplateComponent"><span class="pre">TemplateComponent</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.special_stopper"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.special_stopper" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.template_name"> +<span class="sig-name descname"><span class="pre">template_name</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.template_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.template_name" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.__post_init__"> +<span class="sig-name descname"><span class="pre">__post_init__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.__post_init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.__post_init__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.encode_conversation"> +<span class="sig-name descname"><span class="pre">encode_conversation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">messages</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">system</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tools</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.encode_conversation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.encode_conversation" title="Link to this definition">#</a></dt> +<dd><p>Messages here should be guaranteed to be in pairs, with the first message being the user message and the second message being the system message. +Data example: +<a href="#id1"><span class="problematic" id="id2">``</span></a><a href="#id3"><span class="problematic" id="id4">`</span></a>json +{</p> +<blockquote> +<div><p>“conversation_id”: 2, +“system”: “sysinfo1”, +“tools”: [“tool_1_desc”], +“messages”: [</p> +<blockquote> +<div><dl class="simple"> +<dt>{</dt><dd><p>“role”: “user”, +“content”: “hi”</p> +</dd> +</dl> +<p>}, +{</p> +<blockquote> +<div><p>“role”: “assistant”, +“content”: “Hello!”</p> +</div></blockquote> +<p>}</p> +</div></blockquote> +<p>]</p> +</div></blockquote> +<section id="id5"> +<h3>}<a class="headerlink" href="#id5" title="Link to this heading">#</a></h3> +</section> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate._encode"> +<span class="sig-name descname"><span class="pre">_encode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">messages</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">system</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tools</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate._encode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate._encode" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate._encode_template"> +<span class="sig-name descname"><span class="pre">_encode_template</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">template</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#lmflow.utils.conversation_template.base.TemplateComponent" title="lmflow.utils.conversation_template.base.TemplateComponent"><span class="pre">TemplateComponent</span></a><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate._encode_template"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate._encode_template" title="Link to this definition">#</a></dt> +<dd><p>Encode template components into token ids.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>template</strong><span class="classifier">List[TemplateComponent]</span></dt><dd><p>Formatted template components.</p> +</dd> +<dt><strong>tokenizer</strong><span class="classifier">PreTrainedTokenizer</span></dt><dd><p>Tokenizer to convert tokens into token ids.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>List[int]</dt><dd><p>Encoded token ids.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.post_process_pairs"> +<span class="sig-name descname"><span class="pre">post_process_pairs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">encoded_pairs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.post_process_pairs"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.post_process_pairs" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.remove_last_separator"> +<span class="sig-name descname"><span class="pre">remove_last_separator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">encoded_pairs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.remove_last_separator"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.remove_last_separator" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.add_special_starter"> +<span class="sig-name descname"><span class="pre">add_special_starter</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">encoded_pairs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.add_special_starter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.add_special_starter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate.add_special_stopper"> +<span class="sig-name descname"><span class="pre">add_special_stopper</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">encoded_pairs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.add_special_stopper"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate.add_special_stopper" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplate._ensure_id_list"> +<span class="sig-name descname"><span class="pre">_ensure_id_list</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">obj</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate._ensure_id_list"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplate._ensure_id_list" title="Link to this definition">#</a></dt> +<dd><p>Make sure the object is a list of integers. Useful for handling token ids.</p> +</dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplateForTool"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.base.</span></span><span class="sig-name descname"><span class="pre">ConversationTemplateForTool</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplateForTool"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplateForTool" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.utils.conversation_template.base.ConversationTemplate" title="lmflow.utils.conversation_template.base.ConversationTemplate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ConversationTemplate</span></code></a></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplateForTool.encode_conversation"> +<span class="sig-name descname"><span class="pre">encode_conversation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">messages</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">system</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tools</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplateForTool.encode_conversation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplateForTool.encode_conversation" title="Link to this definition">#</a></dt> +<dd><p>Messages here should be guaranteed to be in pairs, with the first message being the user message and the second message being the system message. +Data example: +<a href="#id6"><span class="problematic" id="id7">``</span></a><a href="#id8"><span class="problematic" id="id9">`</span></a>json +{</p> +<blockquote> +<div><p>“conversation_id”: 2, +“system”: “sysinfo1”, +“tools”: [“tool_1_desc”], +“messages”: [</p> +<blockquote> +<div><dl class="simple"> +<dt>{</dt><dd><p>“role”: “user”, +“content”: “hi”</p> +</dd> +</dl> +<p>}, +{</p> +<blockquote> +<div><p>“role”: “assistant”, +“content”: “Hello!”</p> +</div></blockquote> +<p>}</p> +</div></blockquote> +<p>]</p> +</div></blockquote> +<section id="id10"> +<h3>}<a class="headerlink" href="#id10" title="Link to this heading">#</a></h3> +</section> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplateForTool._encode"> +<span class="sig-name descname"><span class="pre">_encode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">messages</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">system</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tools</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplateForTool._encode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplateForTool._encode" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.ConversationTemplateForTool._encode_template"> +<span class="sig-name descname"><span class="pre">_encode_template</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">template</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#lmflow.utils.conversation_template.base.TemplateComponent" title="lmflow.utils.conversation_template.base.TemplateComponent"><span class="pre">TemplateComponent</span></a><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplateForTool._encode_template"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.ConversationTemplateForTool._encode_template" title="Link to this definition">#</a></dt> +<dd><p>Encode template components into token ids.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>template</strong><span class="classifier">List[TemplateComponent]</span></dt><dd><p>Formatted template components.</p> +</dd> +<dt><strong>tokenizer</strong><span class="classifier">PreTrainedTokenizer</span></dt><dd><p>Tokenizer to convert tokens into token ids.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>List[int]</dt><dd><p>Encoded token ids.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.EMPTY_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.base.</span></span><span class="sig-name descname"><span class="pre">EMPTY_TEMPLATE</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#EMPTY_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.EMPTY_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.base.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.base.</span></span><span class="sig-name descname"><span class="pre">EMPTY_NO_SPECIAL_TOKENS_TEMPLATE</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/base.html#EMPTY_NO_SPECIAL_TOKENS_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.base.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.conversation_template</p> + </div> + </a> + <a class="right-next" + href="../chatglm/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.conversation_template.chatglm</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.TemplateComponent"><code class="docutils literal notranslate"><span class="pre">TemplateComponent</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.TemplateComponent.type"><code class="docutils literal notranslate"><span class="pre">TemplateComponent.type</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.TemplateComponent.content"><code class="docutils literal notranslate"><span class="pre">TemplateComponent.content</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.TemplateComponent.mask"><code class="docutils literal notranslate"><span class="pre">TemplateComponent.mask</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.TemplateComponent.__post_init__"><code class="docutils literal notranslate"><span class="pre">TemplateComponent.__post_init__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.TemplateComponent.__repr__"><code class="docutils literal notranslate"><span class="pre">TemplateComponent.__repr__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.TemplateComponent.__str__"><code class="docutils literal notranslate"><span class="pre">TemplateComponent.__str__()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.Formatter"><code class="docutils literal notranslate"><span class="pre">Formatter</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.Formatter.template"><code class="docutils literal notranslate"><span class="pre">Formatter.template</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.Formatter.format"><code class="docutils literal notranslate"><span class="pre">Formatter.format()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.Formatter.has_placeholder"><code class="docutils literal notranslate"><span class="pre">Formatter.has_placeholder()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.EmptyFormatter"><code class="docutils literal notranslate"><span class="pre">EmptyFormatter</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.EmptyFormatter.__post_init__"><code class="docutils literal notranslate"><span class="pre">EmptyFormatter.__post_init__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.EmptyFormatter.format"><code class="docutils literal notranslate"><span class="pre">EmptyFormatter.format()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.StringFormatter"><code class="docutils literal notranslate"><span class="pre">StringFormatter</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.StringFormatter.__post_init__"><code class="docutils literal notranslate"><span class="pre">StringFormatter.__post_init__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.StringFormatter.format"><code class="docutils literal notranslate"><span class="pre">StringFormatter.format()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ListFormatter"><code class="docutils literal notranslate"><span class="pre">ListFormatter</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ListFormatter.format"><code class="docutils literal notranslate"><span class="pre">ListFormatter.format()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.user_formatter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.user_formatter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.assistant_formatter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.assistant_formatter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.function_formatter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.function_formatter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.observation_formatter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.observation_formatter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.system_formatter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.system_formatter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.force_system"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.force_system</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.tools_formatter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.tools_formatter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.separator"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.separator</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.remove_last_sep"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.remove_last_sep</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.special_starter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.special_starter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.special_stopper"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.special_stopper</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.template_name"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.template_name</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.__post_init__"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.__post_init__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.encode_conversation"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.encode_conversation()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate._encode"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate._encode()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate._encode_template"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate._encode_template()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.post_process_pairs"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.post_process_pairs()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.remove_last_separator"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.remove_last_separator()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.add_special_starter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.add_special_starter()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate.add_special_stopper"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.add_special_stopper()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplate._ensure_id_list"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate._ensure_id_list()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplateForTool"><code class="docutils literal notranslate"><span class="pre">ConversationTemplateForTool</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplateForTool.encode_conversation"><code class="docutils literal notranslate"><span class="pre">ConversationTemplateForTool.encode_conversation()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplateForTool._encode"><code class="docutils literal notranslate"><span class="pre">ConversationTemplateForTool._encode()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.ConversationTemplateForTool._encode_template"><code class="docutils literal notranslate"><span class="pre">ConversationTemplateForTool._encode_template()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.EMPTY_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">EMPTY_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.base.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">EMPTY_NO_SPECIAL_TOKENS_TEMPLATE</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/conversation_template/base/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/conversation_template/chatglm/index.html b/autoapi/lmflow/utils/conversation_template/chatglm/index.html new file mode 100644 index 000000000..3fbb2c602 --- /dev/null +++ b/autoapi/lmflow/utils/conversation_template/chatglm/index.html @@ -0,0 +1,658 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.conversation_template.chatglm &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/conversation_template/chatglm/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.conversation_template.chatml" href="../chatml/index.html" /> + <link rel="prev" title="lmflow.utils.conversation_template.base" href="../base/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.conversation_template</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.chatglm</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.conversation_template.chatglm"> +<span id="lmflow-utils-conversation-template-chatglm"></span><h1>lmflow.utils.conversation_template.chatglm<a class="headerlink" href="#module-lmflow.utils.conversation_template.chatglm" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.chatglm.CHATGLM3_TEMPLATE" title="lmflow.utils.conversation_template.chatglm.CHATGLM3_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">CHATGLM3_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.chatglm.CHATGLM3_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.chatglm.</span></span><span class="sig-name descname"><span class="pre">CHATGLM3_TEMPLATE</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/chatglm.html#CHATGLM3_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.chatglm.CHATGLM3_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../base/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.conversation_template.base</p> + </div> + </a> + <a class="right-next" + href="../chatml/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.conversation_template.chatml</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.chatglm.CHATGLM3_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">CHATGLM3_TEMPLATE</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/conversation_template/chatglm/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/conversation_template/chatml/index.html b/autoapi/lmflow/utils/conversation_template/chatml/index.html new file mode 100644 index 000000000..4a11790c9 --- /dev/null +++ b/autoapi/lmflow/utils/conversation_template/chatml/index.html @@ -0,0 +1,658 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.conversation_template.chatml &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/conversation_template/chatml/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.conversation_template.deepseek" href="../deepseek/index.html" /> + <link rel="prev" title="lmflow.utils.conversation_template.chatglm" href="../chatglm/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.conversation_template</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.chatml</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.conversation_template.chatml"> +<span id="lmflow-utils-conversation-template-chatml"></span><h1>lmflow.utils.conversation_template.chatml<a class="headerlink" href="#module-lmflow.utils.conversation_template.chatml" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.chatml.CHATML_TEMPLATE" title="lmflow.utils.conversation_template.chatml.CHATML_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">CHATML_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.chatml.CHATML_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.chatml.</span></span><span class="sig-name descname"><span class="pre">CHATML_TEMPLATE</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/chatml.html#CHATML_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.chatml.CHATML_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../chatglm/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.conversation_template.chatglm</p> + </div> + </a> + <a class="right-next" + href="../deepseek/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.conversation_template.deepseek</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.chatml.CHATML_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">CHATML_TEMPLATE</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/conversation_template/chatml/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/conversation_template/deepseek/index.html b/autoapi/lmflow/utils/conversation_template/deepseek/index.html new file mode 100644 index 000000000..768dc4016 --- /dev/null +++ b/autoapi/lmflow/utils/conversation_template/deepseek/index.html @@ -0,0 +1,658 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.conversation_template.deepseek &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/conversation_template/deepseek/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.conversation_template.gemma" href="../gemma/index.html" /> + <link rel="prev" title="lmflow.utils.conversation_template.chatml" href="../chatml/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.conversation_template</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.deepseek</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.conversation_template.deepseek"> +<span id="lmflow-utils-conversation-template-deepseek"></span><h1>lmflow.utils.conversation_template.deepseek<a class="headerlink" href="#module-lmflow.utils.conversation_template.deepseek" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.deepseek.DEEPSEEK_TEMPLATE" title="lmflow.utils.conversation_template.deepseek.DEEPSEEK_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DEEPSEEK_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.deepseek.DEEPSEEK_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.deepseek.</span></span><span class="sig-name descname"><span class="pre">DEEPSEEK_TEMPLATE</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/deepseek.html#DEEPSEEK_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.deepseek.DEEPSEEK_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../chatml/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.conversation_template.chatml</p> + </div> + </a> + <a class="right-next" + href="../gemma/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.conversation_template.gemma</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.deepseek.DEEPSEEK_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">DEEPSEEK_TEMPLATE</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/conversation_template/deepseek/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/conversation_template/gemma/index.html b/autoapi/lmflow/utils/conversation_template/gemma/index.html new file mode 100644 index 000000000..085c25766 --- /dev/null +++ b/autoapi/lmflow/utils/conversation_template/gemma/index.html @@ -0,0 +1,694 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.conversation_template.gemma &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/conversation_template/gemma/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.conversation_template.hymba" href="../hymba/index.html" /> + <link rel="prev" title="lmflow.utils.conversation_template.deepseek" href="../deepseek/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.conversation_template</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.gemma</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.conversation_template.gemma"> +<span id="lmflow-utils-conversation-template-gemma"></span><h1>lmflow.utils.conversation_template.gemma<a class="headerlink" href="#module-lmflow.utils.conversation_template.gemma" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.gemma.logger" title="lmflow.utils.conversation_template.gemma.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.gemma.GEMMA_TEMPLATE" title="lmflow.utils.conversation_template.gemma.GEMMA_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">GEMMA_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.gemma.GemmaConversationTemplate" title="lmflow.utils.conversation_template.gemma.GemmaConversationTemplate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">GemmaConversationTemplate</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.gemma.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.gemma.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/gemma.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.gemma.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.gemma.GemmaConversationTemplate"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.gemma.</span></span><span class="sig-name descname"><span class="pre">GemmaConversationTemplate</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/gemma.html#GemmaConversationTemplate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.gemma.GemmaConversationTemplate" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate" title="lmflow.utils.conversation_template.base.ConversationTemplate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.utils.conversation_template.base.ConversationTemplate</span></code></a></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.gemma.GemmaConversationTemplate.encode_conversation"> +<span class="sig-name descname"><span class="pre">encode_conversation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/gemma.html#GemmaConversationTemplate.encode_conversation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.gemma.GemmaConversationTemplate.encode_conversation" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.gemma.GEMMA_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.gemma.</span></span><span class="sig-name descname"><span class="pre">GEMMA_TEMPLATE</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/gemma.html#GEMMA_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.gemma.GEMMA_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../deepseek/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.conversation_template.deepseek</p> + </div> + </a> + <a class="right-next" + href="../hymba/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.conversation_template.hymba</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.gemma.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.gemma.GemmaConversationTemplate"><code class="docutils literal notranslate"><span class="pre">GemmaConversationTemplate</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.gemma.GemmaConversationTemplate.encode_conversation"><code class="docutils literal notranslate"><span class="pre">GemmaConversationTemplate.encode_conversation()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.gemma.GEMMA_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">GEMMA_TEMPLATE</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/conversation_template/gemma/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/conversation_template/hymba/index.html b/autoapi/lmflow/utils/conversation_template/hymba/index.html new file mode 100644 index 000000000..01026e936 --- /dev/null +++ b/autoapi/lmflow/utils/conversation_template/hymba/index.html @@ -0,0 +1,713 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.conversation_template.hymba &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/conversation_template/hymba/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.conversation_template.internlm" href="../internlm/index.html" /> + <link rel="prev" title="lmflow.utils.conversation_template.gemma" href="../gemma/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.conversation_template</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.hymba</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.conversation_template.hymba"> +<span id="lmflow-utils-conversation-template-hymba"></span><h1>lmflow.utils.conversation_template.hymba<a class="headerlink" href="#module-lmflow.utils.conversation_template.hymba" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.hymba.HYMBA_TEMPLATE" title="lmflow.utils.conversation_template.hymba.HYMBA_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">HYMBA_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.hymba.HymbaConversationTemplate" title="lmflow.utils.conversation_template.hymba.HymbaConversationTemplate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">HymbaConversationTemplate</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.hymba.HymbaConversationTemplate"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.hymba.</span></span><span class="sig-name descname"><span class="pre">HymbaConversationTemplate</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/hymba.html#HymbaConversationTemplate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.hymba.HymbaConversationTemplate" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base/index.html#lmflow.utils.conversation_template.base.ConversationTemplateForTool" title="lmflow.utils.conversation_template.base.ConversationTemplateForTool"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.utils.conversation_template.base.ConversationTemplateForTool</span></code></a></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.hymba.HymbaConversationTemplate.encode_conversation"> +<span class="sig-name descname"><span class="pre">encode_conversation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">messages</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">system</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tools</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/hymba.html#HymbaConversationTemplate.encode_conversation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.hymba.HymbaConversationTemplate.encode_conversation" title="Link to this definition">#</a></dt> +<dd><p>Messages here should be guaranteed to be in pairs, with the first message being the user message and the second message being the system message. +Data example: +<a href="#id1"><span class="problematic" id="id2">``</span></a><a href="#id3"><span class="problematic" id="id4">`</span></a>json +{</p> +<blockquote> +<div><p>“conversation_id”: 2, +“system”: “sysinfo1”, +“tools”: [“tool_1_desc”], +“messages”: [</p> +<blockquote> +<div><dl class="simple"> +<dt>{</dt><dd><p>“role”: “user”, +“content”: “hi”</p> +</dd> +</dl> +<p>}, +{</p> +<blockquote> +<div><p>“role”: “assistant”, +“content”: “Hello!”</p> +</div></blockquote> +<p>}</p> +</div></blockquote> +<p>]</p> +</div></blockquote> +<section id="id5"> +<h3>}<a class="headerlink" href="#id5" title="Link to this heading">#</a></h3> +</section> +</dd></dl> + +</dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.hymba.HYMBA_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.hymba.</span></span><span class="sig-name descname"><span class="pre">HYMBA_TEMPLATE</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/hymba.html#HYMBA_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.hymba.HYMBA_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../gemma/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.conversation_template.gemma</p> + </div> + </a> + <a class="right-next" + href="../internlm/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.conversation_template.internlm</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.hymba.HymbaConversationTemplate"><code class="docutils literal notranslate"><span class="pre">HymbaConversationTemplate</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.hymba.HymbaConversationTemplate.encode_conversation"><code class="docutils literal notranslate"><span class="pre">HymbaConversationTemplate.encode_conversation()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.hymba.HYMBA_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">HYMBA_TEMPLATE</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/conversation_template/hymba/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/conversation_template/index.html b/autoapi/lmflow/utils/conversation_template/index.html new file mode 100644 index 000000000..60e55cb16 --- /dev/null +++ b/autoapi/lmflow/utils/conversation_template/index.html @@ -0,0 +1,1086 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.conversation_template &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/conversation_template/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.utils.conversation_template.base" href="base/index.html" /> + <link rel="prev" title="lmflow.utils.constants" href="../constants/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 current active has-children"><a class="current reference internal" href="#">lmflow.utils.conversation_template</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.conversation_template"> +<span id="lmflow-utils-conversation-template"></span><h1>lmflow.utils.conversation_template<a class="headerlink" href="#module-lmflow.utils.conversation_template" title="Link to this heading">#</a></h1> +<section id="submodules"> +<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l1"><a class="reference internal" href="chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l1"><a class="reference internal" href="chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l1"><a class="reference internal" href="deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l1"><a class="reference internal" href="gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l1"><a class="reference internal" href="hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l1"><a class="reference internal" href="internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l1"><a class="reference internal" href="llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l1"><a class="reference internal" href="phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l1"><a class="reference internal" href="qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l1"><a class="reference internal" href="yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l1"><a class="reference internal" href="zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</div> +</section> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.EMPTY_TEMPLATE" title="lmflow.utils.conversation_template.EMPTY_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">EMPTY_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE" title="lmflow.utils.conversation_template.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">EMPTY_NO_SPECIAL_TOKENS_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.CHATGLM3_TEMPLATE" title="lmflow.utils.conversation_template.CHATGLM3_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">CHATGLM3_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.CHATML_TEMPLATE" title="lmflow.utils.conversation_template.CHATML_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">CHATML_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.DEEPSEEK_TEMPLATE" title="lmflow.utils.conversation_template.DEEPSEEK_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">DEEPSEEK_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.GEMMA_TEMPLATE" title="lmflow.utils.conversation_template.GEMMA_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">GEMMA_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.HYMBA_TEMPLATE" title="lmflow.utils.conversation_template.HYMBA_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">HYMBA_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.INTERNLM2_TEMPLATE" title="lmflow.utils.conversation_template.INTERNLM2_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">INTERNLM2_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.LLAMA2_TEMPLATE" title="lmflow.utils.conversation_template.LLAMA2_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LLAMA2_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.LLAMA3_TEMPLATE" title="lmflow.utils.conversation_template.LLAMA3_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LLAMA3_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.LLAMA3_TEMPLATE_FOR_TOOL" title="lmflow.utils.conversation_template.LLAMA3_TEMPLATE_FOR_TOOL"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LLAMA3_TEMPLATE_FOR_TOOL</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.PHI3_TEMPLATE" title="lmflow.utils.conversation_template.PHI3_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PHI3_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.QWEN2_TEMPLATE" title="lmflow.utils.conversation_template.QWEN2_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">QWEN2_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.QWEN2_TEMPLATE_FOR_TOOL" title="lmflow.utils.conversation_template.QWEN2_TEMPLATE_FOR_TOOL"><code class="xref py py-obj docutils literal notranslate"><span class="pre">QWEN2_TEMPLATE_FOR_TOOL</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.YI1_5_TEMPLATE" title="lmflow.utils.conversation_template.YI1_5_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">YI1_5_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.ZEPHYR_TEMPLATE" title="lmflow.utils.conversation_template.ZEPHYR_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ZEPHYR_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.PRESET_TEMPLATES" title="lmflow.utils.conversation_template.PRESET_TEMPLATES"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PRESET_TEMPLATES</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.ConversationTemplate" title="lmflow.utils.conversation_template.ConversationTemplate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ConversationTemplate</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.ConversationTemplateForTool" title="lmflow.utils.conversation_template.ConversationTemplateForTool"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ConversationTemplateForTool</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="package-contents"> +<h2>Package Contents<a class="headerlink" href="#package-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.EMPTY_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">EMPTY_TEMPLATE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#EMPTY_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.EMPTY_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">EMPTY_NO_SPECIAL_TOKENS_TEMPLATE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#EMPTY_NO_SPECIAL_TOKENS_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">ConversationTemplate</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate" title="Link to this definition">#</a></dt> +<dd><dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.user_formatter"> +<span class="sig-name descname"><span class="pre">user_formatter</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="base/index.html#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><span class="pre">Formatter</span></a></em><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.user_formatter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.assistant_formatter"> +<span class="sig-name descname"><span class="pre">assistant_formatter</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="base/index.html#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><span class="pre">Formatter</span></a></em><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.assistant_formatter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.function_formatter"> +<span class="sig-name descname"><span class="pre">function_formatter</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="base/index.html#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><span class="pre">Formatter</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.function_formatter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.observation_formatter"> +<span class="sig-name descname"><span class="pre">observation_formatter</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="base/index.html#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><span class="pre">Formatter</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.observation_formatter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.system_formatter"> +<span class="sig-name descname"><span class="pre">system_formatter</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="base/index.html#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><span class="pre">Formatter</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.system_formatter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.force_system"> +<span class="sig-name descname"><span class="pre">force_system</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.force_system" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.tools_formatter"> +<span class="sig-name descname"><span class="pre">tools_formatter</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="base/index.html#lmflow.utils.conversation_template.base.Formatter" title="lmflow.utils.conversation_template.base.Formatter"><span class="pre">Formatter</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.tools_formatter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.separator"> +<span class="sig-name descname"><span class="pre">separator</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="base/index.html#lmflow.utils.conversation_template.base.TemplateComponent" title="lmflow.utils.conversation_template.base.TemplateComponent"><span class="pre">TemplateComponent</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.separator" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.remove_last_sep"> +<span class="sig-name descname"><span class="pre">remove_last_sep</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.remove_last_sep" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.special_starter"> +<span class="sig-name descname"><span class="pre">special_starter</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="base/index.html#lmflow.utils.conversation_template.base.TemplateComponent" title="lmflow.utils.conversation_template.base.TemplateComponent"><span class="pre">TemplateComponent</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.special_starter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.special_stopper"> +<span class="sig-name descname"><span class="pre">special_stopper</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="base/index.html#lmflow.utils.conversation_template.base.TemplateComponent" title="lmflow.utils.conversation_template.base.TemplateComponent"><span class="pre">TemplateComponent</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.special_stopper" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.template_name"> +<span class="sig-name descname"><span class="pre">template_name</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.template_name" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.__post_init__"> +<span class="sig-name descname"><span class="pre">__post_init__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.__post_init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.__post_init__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.encode_conversation"> +<span class="sig-name descname"><span class="pre">encode_conversation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">messages</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">system</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tools</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.encode_conversation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.encode_conversation" title="Link to this definition">#</a></dt> +<dd><p>Messages here should be guaranteed to be in pairs, with the first message being the user message and the second message being the system message. +Data example: +<a href="#id1"><span class="problematic" id="id2">``</span></a><a href="#id3"><span class="problematic" id="id4">`</span></a>json +{</p> +<blockquote> +<div><p>“conversation_id”: 2, +“system”: “sysinfo1”, +“tools”: [“tool_1_desc”], +“messages”: [</p> +<blockquote> +<div><dl class="simple"> +<dt>{</dt><dd><p>“role”: “user”, +“content”: “hi”</p> +</dd> +</dl> +<p>}, +{</p> +<blockquote> +<div><p>“role”: “assistant”, +“content”: “Hello!”</p> +</div></blockquote> +<p>}</p> +</div></blockquote> +<p>]</p> +</div></blockquote> +<section id="id5"> +<h3>}<a class="headerlink" href="#id5" title="Link to this heading">#</a></h3> +</section> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate._encode"> +<span class="sig-name descname"><span class="pre">_encode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">messages</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">system</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tools</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate._encode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate._encode" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate._encode_template"> +<span class="sig-name descname"><span class="pre">_encode_template</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">template</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="base/index.html#lmflow.utils.conversation_template.base.TemplateComponent" title="lmflow.utils.conversation_template.base.TemplateComponent"><span class="pre">TemplateComponent</span></a><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate._encode_template"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate._encode_template" title="Link to this definition">#</a></dt> +<dd><p>Encode template components into token ids.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>template</strong><span class="classifier">List[TemplateComponent]</span></dt><dd><p>Formatted template components.</p> +</dd> +<dt><strong>tokenizer</strong><span class="classifier">PreTrainedTokenizer</span></dt><dd><p>Tokenizer to convert tokens into token ids.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>List[int]</dt><dd><p>Encoded token ids.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.post_process_pairs"> +<span class="sig-name descname"><span class="pre">post_process_pairs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">encoded_pairs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.post_process_pairs"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.post_process_pairs" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.remove_last_separator"> +<span class="sig-name descname"><span class="pre">remove_last_separator</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">encoded_pairs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.remove_last_separator"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.remove_last_separator" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.add_special_starter"> +<span class="sig-name descname"><span class="pre">add_special_starter</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">encoded_pairs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.add_special_starter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.add_special_starter" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate.add_special_stopper"> +<span class="sig-name descname"><span class="pre">add_special_stopper</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">encoded_pairs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate.add_special_stopper"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate.add_special_stopper" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplate._ensure_id_list"> +<span class="sig-name descname"><span class="pre">_ensure_id_list</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">obj</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplate._ensure_id_list"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplate._ensure_id_list" title="Link to this definition">#</a></dt> +<dd><p>Make sure the object is a list of integers. Useful for handling token ids.</p> +</dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplateForTool"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">ConversationTemplateForTool</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplateForTool"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplateForTool" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.utils.conversation_template.ConversationTemplate" title="lmflow.utils.conversation_template.ConversationTemplate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ConversationTemplate</span></code></a></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplateForTool.encode_conversation"> +<span class="sig-name descname"><span class="pre">encode_conversation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">messages</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">system</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tools</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplateForTool.encode_conversation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplateForTool.encode_conversation" title="Link to this definition">#</a></dt> +<dd><p>Messages here should be guaranteed to be in pairs, with the first message being the user message and the second message being the system message. +Data example: +<a href="#id6"><span class="problematic" id="id7">``</span></a><a href="#id8"><span class="problematic" id="id9">`</span></a>json +{</p> +<blockquote> +<div><p>“conversation_id”: 2, +“system”: “sysinfo1”, +“tools”: [“tool_1_desc”], +“messages”: [</p> +<blockquote> +<div><dl class="simple"> +<dt>{</dt><dd><p>“role”: “user”, +“content”: “hi”</p> +</dd> +</dl> +<p>}, +{</p> +<blockquote> +<div><p>“role”: “assistant”, +“content”: “Hello!”</p> +</div></blockquote> +<p>}</p> +</div></blockquote> +<p>]</p> +</div></blockquote> +<section id="id10"> +<h3>}<a class="headerlink" href="#id10" title="Link to this heading">#</a></h3> +</section> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplateForTool._encode"> +<span class="sig-name descname"><span class="pre">_encode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">messages</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">system</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tools</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplateForTool._encode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplateForTool._encode" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ConversationTemplateForTool._encode_template"> +<span class="sig-name descname"><span class="pre">_encode_template</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">template</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="base/index.html#lmflow.utils.conversation_template.base.TemplateComponent" title="lmflow.utils.conversation_template.base.TemplateComponent"><span class="pre">TemplateComponent</span></a><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/base.html#ConversationTemplateForTool._encode_template"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ConversationTemplateForTool._encode_template" title="Link to this definition">#</a></dt> +<dd><p>Encode template components into token ids.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>template</strong><span class="classifier">List[TemplateComponent]</span></dt><dd><p>Formatted template components.</p> +</dd> +<dt><strong>tokenizer</strong><span class="classifier">PreTrainedTokenizer</span></dt><dd><p>Tokenizer to convert tokens into token ids.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>List[int]</dt><dd><p>Encoded token ids.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +</dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.CHATGLM3_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">CHATGLM3_TEMPLATE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/chatglm.html#CHATGLM3_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.CHATGLM3_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.CHATML_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">CHATML_TEMPLATE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/chatml.html#CHATML_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.CHATML_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.DEEPSEEK_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">DEEPSEEK_TEMPLATE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/deepseek.html#DEEPSEEK_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.DEEPSEEK_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.GEMMA_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">GEMMA_TEMPLATE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/gemma.html#GEMMA_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.GEMMA_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.HYMBA_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">HYMBA_TEMPLATE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/hymba.html#HYMBA_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.HYMBA_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.INTERNLM2_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">INTERNLM2_TEMPLATE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/internlm.html#INTERNLM2_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.INTERNLM2_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.LLAMA2_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">LLAMA2_TEMPLATE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/llama.html#LLAMA2_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.LLAMA2_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.LLAMA3_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">LLAMA3_TEMPLATE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/llama.html#LLAMA3_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.LLAMA3_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.LLAMA3_TEMPLATE_FOR_TOOL"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">LLAMA3_TEMPLATE_FOR_TOOL</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/llama.html#LLAMA3_TEMPLATE_FOR_TOOL"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.LLAMA3_TEMPLATE_FOR_TOOL" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.PHI3_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">PHI3_TEMPLATE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/phi.html#PHI3_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.PHI3_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.QWEN2_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">QWEN2_TEMPLATE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/qwen.html#QWEN2_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.QWEN2_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.QWEN2_TEMPLATE_FOR_TOOL"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">QWEN2_TEMPLATE_FOR_TOOL</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/qwen.html#QWEN2_TEMPLATE_FOR_TOOL"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.QWEN2_TEMPLATE_FOR_TOOL" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.YI1_5_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">YI1_5_TEMPLATE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/yi.html#YI1_5_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.YI1_5_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.ZEPHYR_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">ZEPHYR_TEMPLATE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template/zephyr.html#ZEPHYR_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.ZEPHYR_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.PRESET_TEMPLATES"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.</span></span><span class="sig-name descname"><span class="pre">PRESET_TEMPLATES</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/conversation_template.html#PRESET_TEMPLATES"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.PRESET_TEMPLATES" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../constants/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.constants</p> + </div> + </a> + <a class="right-next" + href="base/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.conversation_template.base</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#package-contents">Package Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.EMPTY_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">EMPTY_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">EMPTY_NO_SPECIAL_TOKENS_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.user_formatter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.user_formatter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.assistant_formatter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.assistant_formatter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.function_formatter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.function_formatter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.observation_formatter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.observation_formatter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.system_formatter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.system_formatter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.force_system"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.force_system</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.tools_formatter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.tools_formatter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.separator"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.separator</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.remove_last_sep"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.remove_last_sep</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.special_starter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.special_starter</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.special_stopper"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.special_stopper</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.template_name"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.template_name</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.__post_init__"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.__post_init__()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.encode_conversation"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.encode_conversation()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate._encode"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate._encode()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate._encode_template"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate._encode_template()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.post_process_pairs"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.post_process_pairs()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.remove_last_separator"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.remove_last_separator()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.add_special_starter"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.add_special_starter()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate.add_special_stopper"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate.add_special_stopper()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplate._ensure_id_list"><code class="docutils literal notranslate"><span class="pre">ConversationTemplate._ensure_id_list()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplateForTool"><code class="docutils literal notranslate"><span class="pre">ConversationTemplateForTool</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplateForTool.encode_conversation"><code class="docutils literal notranslate"><span class="pre">ConversationTemplateForTool.encode_conversation()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplateForTool._encode"><code class="docutils literal notranslate"><span class="pre">ConversationTemplateForTool._encode()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ConversationTemplateForTool._encode_template"><code class="docutils literal notranslate"><span class="pre">ConversationTemplateForTool._encode_template()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.CHATGLM3_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">CHATGLM3_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.CHATML_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">CHATML_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.DEEPSEEK_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">DEEPSEEK_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.GEMMA_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">GEMMA_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.HYMBA_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">HYMBA_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.INTERNLM2_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">INTERNLM2_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.LLAMA2_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">LLAMA2_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.LLAMA3_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">LLAMA3_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.LLAMA3_TEMPLATE_FOR_TOOL"><code class="docutils literal notranslate"><span class="pre">LLAMA3_TEMPLATE_FOR_TOOL</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.PHI3_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">PHI3_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.QWEN2_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">QWEN2_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.QWEN2_TEMPLATE_FOR_TOOL"><code class="docutils literal notranslate"><span class="pre">QWEN2_TEMPLATE_FOR_TOOL</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.YI1_5_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">YI1_5_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.ZEPHYR_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">ZEPHYR_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.PRESET_TEMPLATES"><code class="docutils literal notranslate"><span class="pre">PRESET_TEMPLATES</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/utils/conversation_template/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/conversation_template/internlm/index.html b/autoapi/lmflow/utils/conversation_template/internlm/index.html new file mode 100644 index 000000000..a50ee4771 --- /dev/null +++ b/autoapi/lmflow/utils/conversation_template/internlm/index.html @@ -0,0 +1,658 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.conversation_template.internlm &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/conversation_template/internlm/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.conversation_template.llama" href="../llama/index.html" /> + <link rel="prev" title="lmflow.utils.conversation_template.hymba" href="../hymba/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.conversation_template</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.internlm</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.conversation_template.internlm"> +<span id="lmflow-utils-conversation-template-internlm"></span><h1>lmflow.utils.conversation_template.internlm<a class="headerlink" href="#module-lmflow.utils.conversation_template.internlm" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.internlm.INTERNLM2_TEMPLATE" title="lmflow.utils.conversation_template.internlm.INTERNLM2_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">INTERNLM2_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.internlm.INTERNLM2_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.internlm.</span></span><span class="sig-name descname"><span class="pre">INTERNLM2_TEMPLATE</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/internlm.html#INTERNLM2_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.internlm.INTERNLM2_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../hymba/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.conversation_template.hymba</p> + </div> + </a> + <a class="right-next" + href="../llama/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.conversation_template.llama</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.internlm.INTERNLM2_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">INTERNLM2_TEMPLATE</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/conversation_template/internlm/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/conversation_template/llama/index.html b/autoapi/lmflow/utils/conversation_template/llama/index.html new file mode 100644 index 000000000..fe3e3c121 --- /dev/null +++ b/autoapi/lmflow/utils/conversation_template/llama/index.html @@ -0,0 +1,739 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.conversation_template.llama &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/conversation_template/llama/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.conversation_template.phi" href="../phi/index.html" /> + <link rel="prev" title="lmflow.utils.conversation_template.internlm" href="../internlm/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.conversation_template</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.llama</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.conversation_template.llama"> +<span id="lmflow-utils-conversation-template-llama"></span><h1>lmflow.utils.conversation_template.llama<a class="headerlink" href="#module-lmflow.utils.conversation_template.llama" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.llama.logger" title="lmflow.utils.conversation_template.llama.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE" title="lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LLAMA3_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE_FOR_TOOL" title="lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE_FOR_TOOL"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LLAMA3_TEMPLATE_FOR_TOOL</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE" title="lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LLAMA2_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE_FOR_TOOL" title="lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE_FOR_TOOL"><code class="xref py py-obj docutils literal notranslate"><span class="pre">LLAMA2_TEMPLATE_FOR_TOOL</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.llama.Llama2ConversationTemplate" title="lmflow.utils.conversation_template.llama.Llama2ConversationTemplate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Llama2ConversationTemplate</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool" title="lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Llama2ConversationTemplateForTool</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.llama.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.llama.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/llama.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.llama.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.llama.Llama2ConversationTemplate"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.llama.</span></span><span class="sig-name descname"><span class="pre">Llama2ConversationTemplate</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/llama.html#Llama2ConversationTemplate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.llama.Llama2ConversationTemplate" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate" title="lmflow.utils.conversation_template.base.ConversationTemplate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.utils.conversation_template.base.ConversationTemplate</span></code></a></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.llama.Llama2ConversationTemplate._encode"> +<span class="sig-name descname"><span class="pre">_encode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">messages</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">system</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tools</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/llama.html#Llama2ConversationTemplate._encode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.llama.Llama2ConversationTemplate._encode" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.llama.</span></span><span class="sig-name descname"><span class="pre">Llama2ConversationTemplateForTool</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/llama.html#Llama2ConversationTemplateForTool"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="#lmflow.utils.conversation_template.llama.Llama2ConversationTemplate" title="lmflow.utils.conversation_template.llama.Llama2ConversationTemplate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Llama2ConversationTemplate</span></code></a></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool._encode"> +<span class="sig-name descname"><span class="pre">_encode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">messages</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">system</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tools</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/llama.html#Llama2ConversationTemplateForTool._encode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool._encode" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.llama.</span></span><span class="sig-name descname"><span class="pre">LLAMA3_TEMPLATE</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/llama.html#LLAMA3_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE_FOR_TOOL"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.llama.</span></span><span class="sig-name descname"><span class="pre">LLAMA3_TEMPLATE_FOR_TOOL</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/llama.html#LLAMA3_TEMPLATE_FOR_TOOL"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE_FOR_TOOL" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.llama.</span></span><span class="sig-name descname"><span class="pre">LLAMA2_TEMPLATE</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/llama.html#LLAMA2_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE_FOR_TOOL"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.llama.</span></span><span class="sig-name descname"><span class="pre">LLAMA2_TEMPLATE_FOR_TOOL</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/llama.html#LLAMA2_TEMPLATE_FOR_TOOL"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE_FOR_TOOL" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../internlm/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.conversation_template.internlm</p> + </div> + </a> + <a class="right-next" + href="../phi/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.conversation_template.phi</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.llama.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.llama.Llama2ConversationTemplate"><code class="docutils literal notranslate"><span class="pre">Llama2ConversationTemplate</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.llama.Llama2ConversationTemplate._encode"><code class="docutils literal notranslate"><span class="pre">Llama2ConversationTemplate._encode()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool"><code class="docutils literal notranslate"><span class="pre">Llama2ConversationTemplateForTool</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool._encode"><code class="docutils literal notranslate"><span class="pre">Llama2ConversationTemplateForTool._encode()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">LLAMA3_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE_FOR_TOOL"><code class="docutils literal notranslate"><span class="pre">LLAMA3_TEMPLATE_FOR_TOOL</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">LLAMA2_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE_FOR_TOOL"><code class="docutils literal notranslate"><span class="pre">LLAMA2_TEMPLATE_FOR_TOOL</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/conversation_template/llama/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/conversation_template/phi/index.html b/autoapi/lmflow/utils/conversation_template/phi/index.html new file mode 100644 index 000000000..a682968aa --- /dev/null +++ b/autoapi/lmflow/utils/conversation_template/phi/index.html @@ -0,0 +1,658 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.conversation_template.phi &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/conversation_template/phi/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.conversation_template.qwen" href="../qwen/index.html" /> + <link rel="prev" title="lmflow.utils.conversation_template.llama" href="../llama/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.conversation_template</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.phi</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.conversation_template.phi"> +<span id="lmflow-utils-conversation-template-phi"></span><h1>lmflow.utils.conversation_template.phi<a class="headerlink" href="#module-lmflow.utils.conversation_template.phi" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.phi.PHI3_TEMPLATE" title="lmflow.utils.conversation_template.phi.PHI3_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">PHI3_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.phi.PHI3_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.phi.</span></span><span class="sig-name descname"><span class="pre">PHI3_TEMPLATE</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/phi.html#PHI3_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.phi.PHI3_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../llama/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.conversation_template.llama</p> + </div> + </a> + <a class="right-next" + href="../qwen/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.conversation_template.qwen</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.phi.PHI3_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">PHI3_TEMPLATE</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/conversation_template/phi/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/conversation_template/qwen/index.html b/autoapi/lmflow/utils/conversation_template/qwen/index.html new file mode 100644 index 000000000..b038abf1d --- /dev/null +++ b/autoapi/lmflow/utils/conversation_template/qwen/index.html @@ -0,0 +1,667 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.conversation_template.qwen &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/conversation_template/qwen/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.conversation_template.yi" href="../yi/index.html" /> + <link rel="prev" title="lmflow.utils.conversation_template.phi" href="../phi/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.conversation_template</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.qwen</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.conversation_template.qwen"> +<span id="lmflow-utils-conversation-template-qwen"></span><h1>lmflow.utils.conversation_template.qwen<a class="headerlink" href="#module-lmflow.utils.conversation_template.qwen" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE" title="lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">QWEN2_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE_FOR_TOOL" title="lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE_FOR_TOOL"><code class="xref py py-obj docutils literal notranslate"><span class="pre">QWEN2_TEMPLATE_FOR_TOOL</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.qwen.</span></span><span class="sig-name descname"><span class="pre">QWEN2_TEMPLATE</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/qwen.html#QWEN2_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE_FOR_TOOL"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.qwen.</span></span><span class="sig-name descname"><span class="pre">QWEN2_TEMPLATE_FOR_TOOL</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/qwen.html#QWEN2_TEMPLATE_FOR_TOOL"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE_FOR_TOOL" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../phi/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.conversation_template.phi</p> + </div> + </a> + <a class="right-next" + href="../yi/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.conversation_template.yi</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">QWEN2_TEMPLATE</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE_FOR_TOOL"><code class="docutils literal notranslate"><span class="pre">QWEN2_TEMPLATE_FOR_TOOL</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/conversation_template/qwen/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/conversation_template/yi/index.html b/autoapi/lmflow/utils/conversation_template/yi/index.html new file mode 100644 index 000000000..25254fea0 --- /dev/null +++ b/autoapi/lmflow/utils/conversation_template/yi/index.html @@ -0,0 +1,658 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.conversation_template.yi &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/conversation_template/yi/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.conversation_template.zephyr" href="../zephyr/index.html" /> + <link rel="prev" title="lmflow.utils.conversation_template.qwen" href="../qwen/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.conversation_template</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.yi</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.conversation_template.yi"> +<span id="lmflow-utils-conversation-template-yi"></span><h1>lmflow.utils.conversation_template.yi<a class="headerlink" href="#module-lmflow.utils.conversation_template.yi" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.yi.YI1_5_TEMPLATE" title="lmflow.utils.conversation_template.yi.YI1_5_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">YI1_5_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.yi.YI1_5_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.yi.</span></span><span class="sig-name descname"><span class="pre">YI1_5_TEMPLATE</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/yi.html#YI1_5_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.yi.YI1_5_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../qwen/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.conversation_template.qwen</p> + </div> + </a> + <a class="right-next" + href="../zephyr/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.conversation_template.zephyr</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.yi.YI1_5_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">YI1_5_TEMPLATE</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/conversation_template/yi/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/conversation_template/zephyr/index.html b/autoapi/lmflow/utils/conversation_template/zephyr/index.html new file mode 100644 index 000000000..65e710e4a --- /dev/null +++ b/autoapi/lmflow/utils/conversation_template/zephyr/index.html @@ -0,0 +1,694 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.conversation_template.zephyr &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/conversation_template/zephyr/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.data_utils" href="../../data_utils/index.html" /> + <link rel="prev" title="lmflow.utils.conversation_template.yi" href="../yi/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.conversation_template</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.conversation_template</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.conversation_template.zephyr</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.conversation_template.zephyr"> +<span id="lmflow-utils-conversation-template-zephyr"></span><h1>lmflow.utils.conversation_template.zephyr<a class="headerlink" href="#module-lmflow.utils.conversation_template.zephyr" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.zephyr.logger" title="lmflow.utils.conversation_template.zephyr.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.zephyr.ZEPHYR_TEMPLATE" title="lmflow.utils.conversation_template.zephyr.ZEPHYR_TEMPLATE"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ZEPHYR_TEMPLATE</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate" title="lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">ZephyrConversationTemplate</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.zephyr.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.zephyr.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/zephyr.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.zephyr.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.zephyr.</span></span><span class="sig-name descname"><span class="pre">ZephyrConversationTemplate</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/zephyr.html#ZephyrConversationTemplate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate" title="Link to this definition">#</a></dt> +<dd><p>Bases: <a class="reference internal" href="../base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate" title="lmflow.utils.conversation_template.base.ConversationTemplate"><code class="xref py py-obj docutils literal notranslate"><span class="pre">lmflow.utils.conversation_template.base.ConversationTemplate</span></code></a></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate._encode"> +<span class="sig-name descname"><span class="pre">_encode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokenizer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">transformers.PreTrainedTokenizer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">messages</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">system</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tools</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/zephyr.html#ZephyrConversationTemplate._encode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate._encode" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.conversation_template.zephyr.ZEPHYR_TEMPLATE"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.conversation_template.zephyr.</span></span><span class="sig-name descname"><span class="pre">ZEPHYR_TEMPLATE</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/conversation_template/zephyr.html#ZEPHYR_TEMPLATE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.conversation_template.zephyr.ZEPHYR_TEMPLATE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../yi/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.conversation_template.yi</p> + </div> + </a> + <a class="right-next" + href="../../data_utils/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.data_utils</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.zephyr.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate"><code class="docutils literal notranslate"><span class="pre">ZephyrConversationTemplate</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate._encode"><code class="docutils literal notranslate"><span class="pre">ZephyrConversationTemplate._encode()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.conversation_template.zephyr.ZEPHYR_TEMPLATE"><code class="docutils literal notranslate"><span class="pre">ZEPHYR_TEMPLATE</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/conversation_template/zephyr/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/data_utils/index.html b/autoapi/lmflow/utils/data_utils/index.html new file mode 100644 index 000000000..10b876abb --- /dev/null +++ b/autoapi/lmflow/utils/data_utils/index.html @@ -0,0 +1,813 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.data_utils &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/data_utils/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.utils.flash_attention" href="../flash_attention/index.html" /> + <link rel="prev" title="lmflow.utils.conversation_template.zephyr" href="../conversation_template/zephyr/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.data_utils</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.data_utils"> +<span id="lmflow-utils-data-utils"></span><h1>lmflow.utils.data_utils<a class="headerlink" href="#module-lmflow.utils.data_utils" title="Link to this heading">#</a></h1> +<p>The program includes several functions: setting a random seed, +loading data from a JSON file, batching data, and extracting answers from generated text.</p> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.data_utils.VLLMInferenceResultWithInput" title="lmflow.utils.data_utils.VLLMInferenceResultWithInput"><code class="xref py py-obj docutils literal notranslate"><span class="pre">VLLMInferenceResultWithInput</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.data_utils.RewardModelInferenceResultWithInput" title="lmflow.utils.data_utils.RewardModelInferenceResultWithInput"><code class="xref py py-obj docutils literal notranslate"><span class="pre">RewardModelInferenceResultWithInput</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.data_utils.set_random_seed" title="lmflow.utils.data_utils.set_random_seed"><code class="xref py py-obj docutils literal notranslate"><span class="pre">set_random_seed</span></code></a>(seed)</p></td> +<td><p>Set the random seed for <cite>random</cite>, <cite>numpy</cite>, <cite>torch</cite>, <cite>torch.cuda</cite>.</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.data_utils.load_data" title="lmflow.utils.data_utils.load_data"><code class="xref py py-obj docutils literal notranslate"><span class="pre">load_data</span></code></a>(file_name)</p></td> +<td><p>Load data with file name.</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.data_utils.batchlize" title="lmflow.utils.data_utils.batchlize"><code class="xref py py-obj docutils literal notranslate"><span class="pre">batchlize</span></code></a>(examples, batch_size, random_shuffle)</p></td> +<td><p>Convert examples to a dataloader.</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.data_utils.answer_extraction" title="lmflow.utils.data_utils.answer_extraction"><code class="xref py py-obj docutils literal notranslate"><span class="pre">answer_extraction</span></code></a>(response[, answer_type])</p></td> +<td><p>Use this funtion to extract answers from generated text</p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.data_utils.process_image_flag" title="lmflow.utils.data_utils.process_image_flag"><code class="xref py py-obj docutils literal notranslate"><span class="pre">process_image_flag</span></code></a>(text[, image_flag])</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.data_utils.set_random_seed"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.data_utils.</span></span><span class="sig-name descname"><span class="pre">set_random_seed</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">seed</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/data_utils.html#set_random_seed"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.data_utils.set_random_seed" title="Link to this definition">#</a></dt> +<dd><p>Set the random seed for <cite>random</cite>, <cite>numpy</cite>, <cite>torch</cite>, <cite>torch.cuda</cite>.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>seed</strong><span class="classifier">int</span></dt><dd><p>The default seed.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.data_utils.load_data"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.data_utils.</span></span><span class="sig-name descname"><span class="pre">load_data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/data_utils.html#load_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.data_utils.load_data" title="Link to this definition">#</a></dt> +<dd><p>Load data with file name.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>file_name</strong><span class="classifier">str.</span></dt><dd><p>The dataset file name.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt><strong>inputs</strong><span class="classifier">list.</span></dt><dd><p>The input texts of the dataset.</p> +</dd> +<dt><strong>outputs</strong><span class="classifier">list.</span></dt><dd><p>The output texts file datasets.</p> +</dd> +<dt><strong>len</strong><span class="classifier">int.</span></dt><dd><p>The length of the dataset.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.data_utils.batchlize"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.data_utils.</span></span><span class="sig-name descname"><span class="pre">batchlize</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">examples</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">batch_size</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">random_shuffle</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/data_utils.html#batchlize"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.data_utils.batchlize" title="Link to this definition">#</a></dt> +<dd><p>Convert examples to a dataloader.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>examples</strong><span class="classifier">list.</span></dt><dd><p>Data list.</p> +</dd> +<dt><strong>batch_size</strong><span class="classifier">int.</span></dt><dd></dd> +<dt><strong>random_shuffle</strong><span class="classifier">bool</span></dt><dd><p>If true, the dataloader shuffle the training data.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>dataloader:</dt><dd><p>Dataloader with batch generator.</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.data_utils.answer_extraction"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.data_utils.</span></span><span class="sig-name descname"><span class="pre">answer_extraction</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">response</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">answer_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/data_utils.html#answer_extraction"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.data_utils.answer_extraction" title="Link to this definition">#</a></dt> +<dd><p>Use this funtion to extract answers from generated text</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><dl class="simple"> +<dt><strong>args</strong></dt><dd><p>Arguments.</p> +</dd> +<dt><strong>response</strong><span class="classifier">str</span></dt><dd><p>plain string response.</p> +</dd> +</dl> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><dl class="simple"> +<dt>answer:</dt><dd><p>Decoded answer (such as A, B, C, D, E for mutiple-choice QA).</p> +</dd> +</dl> +</dd> +</dl> +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.data_utils.process_image_flag"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.data_utils.</span></span><span class="sig-name descname"><span class="pre">process_image_flag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">image_flag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'&lt;ImageHere&gt;'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/data_utils.html#process_image_flag"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.data_utils.process_image_flag" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.data_utils.VLLMInferenceResultWithInput"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.data_utils.</span></span><span class="sig-name descname"><span class="pre">VLLMInferenceResultWithInput</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/data_utils.html#VLLMInferenceResultWithInput"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.data_utils.VLLMInferenceResultWithInput" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">TypedDict</span></code></p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.data_utils.VLLMInferenceResultWithInput.input"> +<span class="sig-name descname"><span class="pre">input</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/data_utils.html#VLLMInferenceResultWithInput.input"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.data_utils.VLLMInferenceResultWithInput.input" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.data_utils.VLLMInferenceResultWithInput.output"> +<span class="sig-name descname"><span class="pre">output</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/data_utils.html#VLLMInferenceResultWithInput.output"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.data_utils.VLLMInferenceResultWithInput.output" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.data_utils.RewardModelInferenceResultWithInput"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.data_utils.</span></span><span class="sig-name descname"><span class="pre">RewardModelInferenceResultWithInput</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/data_utils.html#RewardModelInferenceResultWithInput"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.data_utils.RewardModelInferenceResultWithInput" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">TypedDict</span></code></p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.data_utils.RewardModelInferenceResultWithInput.input"> +<span class="sig-name descname"><span class="pre">input</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/data_utils.html#RewardModelInferenceResultWithInput.input"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.data_utils.RewardModelInferenceResultWithInput.input" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.data_utils.RewardModelInferenceResultWithInput.output"> +<span class="sig-name descname"><span class="pre">output</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">float</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/data_utils.html#RewardModelInferenceResultWithInput.output"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.data_utils.RewardModelInferenceResultWithInput.output" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../conversation_template/zephyr/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.conversation_template.zephyr</p> + </div> + </a> + <a class="right-next" + href="../flash_attention/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.flash_attention</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.data_utils.set_random_seed"><code class="docutils literal notranslate"><span class="pre">set_random_seed()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.data_utils.load_data"><code class="docutils literal notranslate"><span class="pre">load_data()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.data_utils.batchlize"><code class="docutils literal notranslate"><span class="pre">batchlize()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.data_utils.answer_extraction"><code class="docutils literal notranslate"><span class="pre">answer_extraction()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.data_utils.process_image_flag"><code class="docutils literal notranslate"><span class="pre">process_image_flag()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.data_utils.VLLMInferenceResultWithInput"><code class="docutils literal notranslate"><span class="pre">VLLMInferenceResultWithInput</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.data_utils.VLLMInferenceResultWithInput.input"><code class="docutils literal notranslate"><span class="pre">VLLMInferenceResultWithInput.input</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.data_utils.VLLMInferenceResultWithInput.output"><code class="docutils literal notranslate"><span class="pre">VLLMInferenceResultWithInput.output</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.data_utils.RewardModelInferenceResultWithInput"><code class="docutils literal notranslate"><span class="pre">RewardModelInferenceResultWithInput</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.data_utils.RewardModelInferenceResultWithInput.input"><code class="docutils literal notranslate"><span class="pre">RewardModelInferenceResultWithInput.input</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.data_utils.RewardModelInferenceResultWithInput.output"><code class="docutils literal notranslate"><span class="pre">RewardModelInferenceResultWithInput.output</span></code></a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/utils/data_utils/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.html b/autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.html new file mode 100644 index 000000000..cfc4cbf2c --- /dev/null +++ b/autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.html @@ -0,0 +1,676 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.flash_attention.bloom_flash_attention &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.flash_attention.gpt2_flash_attention" href="../gpt2_flash_attention/index.html" /> + <link rel="prev" title="lmflow.utils.flash_attention" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.flash_attention</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.flash_attention</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.flash_attention.bloom_flash_attention</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.flash_attention.bloom_flash_attention"> +<span id="lmflow-utils-flash-attention-bloom-flash-attention"></span><h1>lmflow.utils.flash_attention.bloom_flash_attention<a class="headerlink" href="#module-lmflow.utils.flash_attention.bloom_flash_attention" title="Link to this heading">#</a></h1> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.bloom_flash_attention.forward" title="lmflow.utils.flash_attention.bloom_flash_attention.forward"><code class="xref py py-obj docutils literal notranslate"><span class="pre">forward</span></code></a>(self, hidden_states, residual, alibi, ...[, ...])</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.bloom_flash_attention._prepare_attn_mask" title="lmflow.utils.flash_attention.bloom_flash_attention._prepare_attn_mask"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_prepare_attn_mask</span></code></a>(→ torch.BoolTensor)</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.bloom_flash_attention.replace_bloom_attn_with_flash_attn" title="lmflow.utils.flash_attention.bloom_flash_attention.replace_bloom_attn_with_flash_attn"><code class="xref py py-obj docutils literal notranslate"><span class="pre">replace_bloom_attn_with_flash_attn</span></code></a>()</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.bloom_flash_attention.forward"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.bloom_flash_attention.</span></span><span class="sig-name descname"><span class="pre">forward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hidden_states</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">residual</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">alibi</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attention_mask</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">layer_past</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">head_mask</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_cache</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_attentions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/bloom_flash_attention.html#forward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.bloom_flash_attention.forward" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.bloom_flash_attention._prepare_attn_mask"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.bloom_flash_attention.</span></span><span class="sig-name descname"><span class="pre">_prepare_attn_mask</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attention_mask</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">input_shape</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">past_key_values_length</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">torch.BoolTensor</span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/bloom_flash_attention.html#_prepare_attn_mask"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.bloom_flash_attention._prepare_attn_mask" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.bloom_flash_attention.replace_bloom_attn_with_flash_attn"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.bloom_flash_attention.</span></span><span class="sig-name descname"><span class="pre">replace_bloom_attn_with_flash_attn</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/bloom_flash_attention.html#replace_bloom_attn_with_flash_attn"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.bloom_flash_attention.replace_bloom_attn_with_flash_attn" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.flash_attention</p> + </div> + </a> + <a class="right-next" + href="../gpt2_flash_attention/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.flash_attention.gpt2_flash_attention</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.bloom_flash_attention.forward"><code class="docutils literal notranslate"><span class="pre">forward()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.bloom_flash_attention._prepare_attn_mask"><code class="docutils literal notranslate"><span class="pre">_prepare_attn_mask()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.bloom_flash_attention.replace_bloom_attn_with_flash_attn"><code class="docutils literal notranslate"><span class="pre">replace_bloom_attn_with_flash_attn()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.html b/autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.html new file mode 100644 index 000000000..05f6cc6cc --- /dev/null +++ b/autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.html @@ -0,0 +1,676 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.flash_attention.gpt2_flash_attention &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.flash_attention.gpt_neo_flash_attention" href="../gpt_neo_flash_attention/index.html" /> + <link rel="prev" title="lmflow.utils.flash_attention.bloom_flash_attention" href="../bloom_flash_attention/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.flash_attention</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.flash_attention</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.flash_attention.gpt2_flash_attention</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.flash_attention.gpt2_flash_attention"> +<span id="lmflow-utils-flash-attention-gpt2-flash-attention"></span><h1>lmflow.utils.flash_attention.gpt2_flash_attention<a class="headerlink" href="#module-lmflow.utils.flash_attention.gpt2_flash_attention" title="Link to this heading">#</a></h1> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.gpt2_flash_attention.forward" title="lmflow.utils.flash_attention.gpt2_flash_attention.forward"><code class="xref py py-obj docutils literal notranslate"><span class="pre">forward</span></code></a>(→ Tuple[Union[torch.Tensor, ...)</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.gpt2_flash_attention._prepare_decoder_attention_mask" title="lmflow.utils.flash_attention.gpt2_flash_attention._prepare_decoder_attention_mask"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_prepare_decoder_attention_mask</span></code></a>(self, attention_mask, ...)</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.gpt2_flash_attention.replace_gpt2_attn_with_flash_attn" title="lmflow.utils.flash_attention.gpt2_flash_attention.replace_gpt2_attn_with_flash_attn"><code class="xref py py-obj docutils literal notranslate"><span class="pre">replace_gpt2_attn_with_flash_attn</span></code></a>()</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.gpt2_flash_attention.forward"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.gpt2_flash_attention.</span></span><span class="sig-name descname"><span class="pre">forward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hidden_states</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.FloatTensor</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">layer_past</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attention_mask</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.FloatTensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">head_mask</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.FloatTensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoder_hidden_states</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoder_attention_mask</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.FloatTensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_cache</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_attentions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Ellipsis</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/gpt2_flash_attention.html#forward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.gpt2_flash_attention.forward" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.gpt2_flash_attention._prepare_decoder_attention_mask"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.gpt2_flash_attention.</span></span><span class="sig-name descname"><span class="pre">_prepare_decoder_attention_mask</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attention_mask</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">input_shape</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inputs_embeds</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">past_key_values_length</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/gpt2_flash_attention.html#_prepare_decoder_attention_mask"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.gpt2_flash_attention._prepare_decoder_attention_mask" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.gpt2_flash_attention.replace_gpt2_attn_with_flash_attn"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.gpt2_flash_attention.</span></span><span class="sig-name descname"><span class="pre">replace_gpt2_attn_with_flash_attn</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/gpt2_flash_attention.html#replace_gpt2_attn_with_flash_attn"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.gpt2_flash_attention.replace_gpt2_attn_with_flash_attn" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../bloom_flash_attention/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.flash_attention.bloom_flash_attention</p> + </div> + </a> + <a class="right-next" + href="../gpt_neo_flash_attention/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.flash_attention.gpt_neo_flash_attention</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.gpt2_flash_attention.forward"><code class="docutils literal notranslate"><span class="pre">forward()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.gpt2_flash_attention._prepare_decoder_attention_mask"><code class="docutils literal notranslate"><span class="pre">_prepare_decoder_attention_mask()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.gpt2_flash_attention.replace_gpt2_attn_with_flash_attn"><code class="docutils literal notranslate"><span class="pre">replace_gpt2_attn_with_flash_attn()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html b/autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html new file mode 100644 index 000000000..ee39e42eb --- /dev/null +++ b/autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html @@ -0,0 +1,676 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.flash_attention.gpt_neo_flash_attention &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.flash_attention.llama_flash_attention" href="../llama_flash_attention/index.html" /> + <link rel="prev" title="lmflow.utils.flash_attention.gpt2_flash_attention" href="../gpt2_flash_attention/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.flash_attention</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.flash_attention</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.flash_attention.gpt_neo_flash_attention</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.flash_attention.gpt_neo_flash_attention"> +<span id="lmflow-utils-flash-attention-gpt-neo-flash-attention"></span><h1>lmflow.utils.flash_attention.gpt_neo_flash_attention<a class="headerlink" href="#module-lmflow.utils.flash_attention.gpt_neo_flash_attention" title="Link to this heading">#</a></h1> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.gpt_neo_flash_attention._attn" title="lmflow.utils.flash_attention.gpt_neo_flash_attention._attn"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_attn</span></code></a>(self, query, key, value[, attention_mask, head_mask])</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.gpt_neo_flash_attention.forward" title="lmflow.utils.flash_attention.gpt_neo_flash_attention.forward"><code class="xref py py-obj docutils literal notranslate"><span class="pre">forward</span></code></a>(self, hidden_states[, attention_mask, ...])</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.gpt_neo_flash_attention.replace_gpt_neo_attn_with_flash_attn" title="lmflow.utils.flash_attention.gpt_neo_flash_attention.replace_gpt_neo_attn_with_flash_attn"><code class="xref py py-obj docutils literal notranslate"><span class="pre">replace_gpt_neo_attn_with_flash_attn</span></code></a>()</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.gpt_neo_flash_attention._attn"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.gpt_neo_flash_attention.</span></span><span class="sig-name descname"><span class="pre">_attn</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">query</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attention_mask</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">head_mask</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/gpt_neo_flash_attention.html#_attn"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.gpt_neo_flash_attention._attn" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.gpt_neo_flash_attention.forward"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.gpt_neo_flash_attention.</span></span><span class="sig-name descname"><span class="pre">forward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hidden_states</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attention_mask</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">layer_past</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">head_mask</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_cache</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_attentions</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/gpt_neo_flash_attention.html#forward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.gpt_neo_flash_attention.forward" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.gpt_neo_flash_attention.replace_gpt_neo_attn_with_flash_attn"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.gpt_neo_flash_attention.</span></span><span class="sig-name descname"><span class="pre">replace_gpt_neo_attn_with_flash_attn</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/gpt_neo_flash_attention.html#replace_gpt_neo_attn_with_flash_attn"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.gpt_neo_flash_attention.replace_gpt_neo_attn_with_flash_attn" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../gpt2_flash_attention/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.flash_attention.gpt2_flash_attention</p> + </div> + </a> + <a class="right-next" + href="../llama_flash_attention/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.flash_attention.llama_flash_attention</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.gpt_neo_flash_attention._attn"><code class="docutils literal notranslate"><span class="pre">_attn()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.gpt_neo_flash_attention.forward"><code class="docutils literal notranslate"><span class="pre">forward()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.gpt_neo_flash_attention.replace_gpt_neo_attn_with_flash_attn"><code class="docutils literal notranslate"><span class="pre">replace_gpt_neo_attn_with_flash_attn()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/flash_attention/index.html b/autoapi/lmflow/utils/flash_attention/index.html new file mode 100644 index 000000000..b3d02be34 --- /dev/null +++ b/autoapi/lmflow/utils/flash_attention/index.html @@ -0,0 +1,644 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.flash_attention &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/flash_attention/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.utils.flash_attention.bloom_flash_attention" href="bloom_flash_attention/index.html" /> + <link rel="prev" title="lmflow.utils.data_utils" href="../data_utils/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 current active has-children"><a class="current reference internal" href="#">lmflow.utils.flash_attention</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.flash_attention</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.flash_attention"> +<span id="lmflow-utils-flash-attention"></span><h1>lmflow.utils.flash_attention<a class="headerlink" href="#module-lmflow.utils.flash_attention" title="Link to this heading">#</a></h1> +<section id="submodules"> +<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l1"><a class="reference internal" href="gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l1"><a class="reference internal" href="gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l1"><a class="reference internal" href="llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l1"><a class="reference internal" href="triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../data_utils/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.data_utils</p> + </div> + </a> + <a class="right-next" + href="bloom_flash_attention/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.flash_attention.bloom_flash_attention</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/utils/flash_attention/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.html b/autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.html new file mode 100644 index 000000000..0b90e2b83 --- /dev/null +++ b/autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.html @@ -0,0 +1,676 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.flash_attention.llama_flash_attention &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/flash_attention/llama_flash_attention/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.flash_attention.triton_flash_attention" href="../triton_flash_attention/index.html" /> + <link rel="prev" title="lmflow.utils.flash_attention.gpt_neo_flash_attention" href="../gpt_neo_flash_attention/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.flash_attention</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.flash_attention</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.flash_attention.llama_flash_attention</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.flash_attention.llama_flash_attention"> +<span id="lmflow-utils-flash-attention-llama-flash-attention"></span><h1>lmflow.utils.flash_attention.llama_flash_attention<a class="headerlink" href="#module-lmflow.utils.flash_attention.llama_flash_attention" title="Link to this heading">#</a></h1> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.llama_flash_attention.forward" title="lmflow.utils.flash_attention.llama_flash_attention.forward"><code class="xref py py-obj docutils literal notranslate"><span class="pre">forward</span></code></a>(→ Tuple[torch.Tensor, Optional[torch.Tensor], ...)</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.llama_flash_attention._prepare_decoder_attention_mask" title="lmflow.utils.flash_attention.llama_flash_attention._prepare_decoder_attention_mask"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_prepare_decoder_attention_mask</span></code></a>(self, attention_mask, ...)</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.llama_flash_attention.replace_llama_attn_with_flash_attn" title="lmflow.utils.flash_attention.llama_flash_attention.replace_llama_attn_with_flash_attn"><code class="xref py py-obj docutils literal notranslate"><span class="pre">replace_llama_attn_with_flash_attn</span></code></a>()</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.llama_flash_attention.forward"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.llama_flash_attention.</span></span><span class="sig-name descname"><span class="pre">forward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hidden_states</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attention_mask</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">position_ids</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">torch.LongTensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">past_key_value</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output_attentions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">use_cache</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">torch.Tensor</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">torch.Tensor</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/llama_flash_attention.html#forward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.llama_flash_attention.forward" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.llama_flash_attention._prepare_decoder_attention_mask"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.llama_flash_attention.</span></span><span class="sig-name descname"><span class="pre">_prepare_decoder_attention_mask</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attention_mask</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">input_shape</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inputs_embeds</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">past_key_values_length</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/llama_flash_attention.html#_prepare_decoder_attention_mask"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.llama_flash_attention._prepare_decoder_attention_mask" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.llama_flash_attention.replace_llama_attn_with_flash_attn"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.llama_flash_attention.</span></span><span class="sig-name descname"><span class="pre">replace_llama_attn_with_flash_attn</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/llama_flash_attention.html#replace_llama_attn_with_flash_attn"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.llama_flash_attention.replace_llama_attn_with_flash_attn" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../gpt_neo_flash_attention/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.flash_attention.gpt_neo_flash_attention</p> + </div> + </a> + <a class="right-next" + href="../triton_flash_attention/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.flash_attention.triton_flash_attention</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.llama_flash_attention.forward"><code class="docutils literal notranslate"><span class="pre">forward()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.llama_flash_attention._prepare_decoder_attention_mask"><code class="docutils literal notranslate"><span class="pre">_prepare_decoder_attention_mask()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.llama_flash_attention.replace_llama_attn_with_flash_attn"><code class="docutils literal notranslate"><span class="pre">replace_llama_attn_with_flash_attn()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html b/autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html new file mode 100644 index 000000000..cf88c56b6 --- /dev/null +++ b/autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html @@ -0,0 +1,892 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.flash_attention.triton_flash_attention &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/flash_attention/triton_flash_attention/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.llava_conversation_lib" href="../../llava_conversation_lib/index.html" /> + <link rel="prev" title="lmflow.utils.flash_attention.llama_flash_attention" href="../llama_flash_attention/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.flash_attention</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4"><a class="reference internal" href="../bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.flash_attention</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.flash_attention.triton_flash_attention</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.flash_attention.triton_flash_attention"> +<span id="lmflow-utils-flash-attention-triton-flash-attention"></span><h1>lmflow.utils.flash_attention.triton_flash_attention<a class="headerlink" href="#module-lmflow.utils.flash_attention.triton_flash_attention" title="Link to this heading">#</a></h1> +<p><em>Experimental</em> implementation of FlashAttention in Triton. +Tested with triton==2.0.0.dev20221202. +Triton 2.0 has a new backend (MLIR) but seems like it doesn’t yet work for head dimensions +other than 64: +<a class="github reference external" href="https://github.com/openai/triton/blob/d376020f90002757eea3ea9475d4f7cfc2ec5ead/python/triton/ops/flash_attention.py#L207">openai/triton</a> +We’ll update this implementation with the new Triton backend once this is fixed.</p> +<p>We use the FlashAttention implementation from Phil Tillet a starting point. +<a class="github reference external" href="https://github.com/openai/triton/blob/master/python/tutorials/06-fused-attention.py">openai/triton</a></p> +<p>Changes: +- Implement both causal and non-causal attention. +- Implement both self-attention and cross-attention. +- Support arbitrary seqlens (not just multiples of 128), for both forward and backward. +- Support all head dimensions up to 128 (not just 16, 32, 64, 128), for both forward and backward. +- Support attention bias. +- Speed up the forward pass a bit, and only store the LSE instead of m and l. +- Make the backward for d=128 much faster by reducing register spilling. +- Optionally parallelize the backward pass across seqlen_k, to deal with the case of +small batch size * nheads.</p> +<p>Caution: +- This is an <em>experimental</em> implementation. The forward pass should be quite robust but +I’m not 100% sure that the backward pass doesn’t have race conditions (due to the Triton compiler). +- This implementation has only been tested on A100. +- If you plan to use headdim other than 64 and 128, you should test for race conditions +(due to the Triton compiler), as done in tests/test_flash_attn.py +“test_flash_attn_triton_race_condition”. I’ve tested and fixed many race conditions +for different head dimensions (40, 48, 64, 128, 80, 88, 96), but I’m still not 100% confident +that there are none left for other head dimensions.</p> +<p>Differences between this Triton version and the CUDA version: +- Triton version doesn’t support dropout. +- Triton forward is generally faster than CUDA forward, while Triton backward is +generally slower than CUDA backward. Overall Triton forward + backward is slightly slower +than CUDA forward + backward. +- Triton version doesn’t support different sequence lengths in a batch (i.e., RaggedTensor/NestedTensor). +- Triton version supports attention bias, while CUDA version doesn’t.</p> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_qkvpacked_func" title="lmflow.utils.flash_attention.triton_flash_attention.flash_attn_qkvpacked_func"><code class="xref py py-obj docutils literal notranslate"><span class="pre">flash_attn_qkvpacked_func</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_kvpacked_func" title="lmflow.utils.flash_attention.triton_flash_attention.flash_attn_kvpacked_func"><code class="xref py py-obj docutils literal notranslate"><span class="pre">flash_attn_kvpacked_func</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_func" title="lmflow.utils.flash_attention.triton_flash_attention.flash_attn_func"><code class="xref py py-obj docutils literal notranslate"><span class="pre">flash_attn_func</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc" title="lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc"><code class="xref py py-obj docutils literal notranslate"><span class="pre">FlashAttnQKVPackedFunc</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc" title="lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc"><code class="xref py py-obj docutils literal notranslate"><span class="pre">FlashAttnKVPackedFunc</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc" title="lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc"><code class="xref py py-obj docutils literal notranslate"><span class="pre">FlashAttnFunc</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.triton_flash_attention._fwd_kernel" title="lmflow.utils.flash_attention.triton_flash_attention._fwd_kernel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_fwd_kernel</span></code></a>(Q, K, V, Bias, Out, Lse, TMP, ...)</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.triton_flash_attention._bwd_preprocess_do_o_dot" title="lmflow.utils.flash_attention.triton_flash_attention._bwd_preprocess_do_o_dot"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_bwd_preprocess_do_o_dot</span></code></a>(Out, DO, Delta, stride_ob, ...)</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.triton_flash_attention._bwd_store_dk_dv" title="lmflow.utils.flash_attention.triton_flash_attention._bwd_store_dk_dv"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_bwd_store_dk_dv</span></code></a>(dk_ptrs, dv_ptrs, dk, dv, offs_n, ...)</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel_one_col_block" title="lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel_one_col_block"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_bwd_kernel_one_col_block</span></code></a>(start_n, Q, K, V, Bias, DO, ...)</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.triton_flash_attention.init_to_zero" title="lmflow.utils.flash_attention.triton_flash_attention.init_to_zero"><code class="xref py py-obj docutils literal notranslate"><span class="pre">init_to_zero</span></code></a>(name)</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel" title="lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_bwd_kernel</span></code></a>(Q, K, V, Bias, DO, DQ, DK, DV, LSE, D, ...)</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.triton_flash_attention._flash_attn_forward" title="lmflow.utils.flash_attention.triton_flash_attention._flash_attn_forward"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_flash_attn_forward</span></code></a>(q, k, v[, bias, causal, softmax_scale])</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.flash_attention.triton_flash_attention._flash_attn_backward" title="lmflow.utils.flash_attention.triton_flash_attention._flash_attn_backward"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_flash_attn_backward</span></code></a>(do, q, k, v, o, lse, dq, dk, dv)</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention._fwd_kernel"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.triton_flash_attention.</span></span><span class="sig-name descname"><span class="pre">_fwd_kernel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">Q</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">K</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">V</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Bias</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Out</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Lse</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">TMP</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">softmax_scale</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_qb</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_qh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_qm</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_kb</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_kh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_kn</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_vb</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_vh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_vn</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_bb</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_bh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_bm</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_ob</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_oh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_om</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nheads</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seqlen_q</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seqlen_k</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seqlen_q_rounded</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">headdim</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">CACHE_KEY_SEQLEN_Q</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">CACHE_KEY_SEQLEN_K</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">BIAS_TYPE</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">IS_CAUSAL</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">BLOCK_HEADDIM</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">EVEN_M</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">EVEN_N</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">EVEN_HEADDIM</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">BLOCK_M</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">BLOCK_N</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#_fwd_kernel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention._fwd_kernel" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention._bwd_preprocess_do_o_dot"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.triton_flash_attention.</span></span><span class="sig-name descname"><span class="pre">_bwd_preprocess_do_o_dot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">Out</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">DO</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Delta</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_ob</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_oh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_om</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dob</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_doh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dom</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nheads</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seqlen_q</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seqlen_q_rounded</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">headdim</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">BLOCK_M</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">BLOCK_HEADDIM</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#_bwd_preprocess_do_o_dot"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention._bwd_preprocess_do_o_dot" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention._bwd_store_dk_dv"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.triton_flash_attention.</span></span><span class="sig-name descname"><span class="pre">_bwd_store_dk_dv</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dk_ptrs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dv_ptrs</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dk</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dv</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">offs_n</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">offs_d</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seqlen_k</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">headdim</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">EVEN_M</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">EVEN_N</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">EVEN_HEADDIM</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#_bwd_store_dk_dv"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention._bwd_store_dk_dv" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel_one_col_block"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.triton_flash_attention.</span></span><span class="sig-name descname"><span class="pre">_bwd_kernel_one_col_block</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">start_n</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Q</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">K</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">V</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Bias</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">DO</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">DQ</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">DK</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">DV</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">LSE</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">D</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">softmax_scale</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_qm</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_kn</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_vn</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_bm</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dom</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dqm</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dkn</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dvn</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seqlen_q</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seqlen_k</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">headdim</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ATOMIC_ADD</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">BIAS_TYPE</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">IS_CAUSAL</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">BLOCK_HEADDIM</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">EVEN_M</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">EVEN_N</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">EVEN_HEADDIM</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">BLOCK_M</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">BLOCK_N</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#_bwd_kernel_one_col_block"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel_one_col_block" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention.init_to_zero"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.triton_flash_attention.</span></span><span class="sig-name descname"><span class="pre">init_to_zero</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#init_to_zero"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention.init_to_zero" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.triton_flash_attention.</span></span><span class="sig-name descname"><span class="pre">_bwd_kernel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">Q</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">K</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">V</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Bias</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">DO</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">DQ</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">DK</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">DV</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">LSE</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">D</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">softmax_scale</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_qb</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_qh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_qm</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_kb</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_kh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_kn</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_vb</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_vh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_vn</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_bb</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_bh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_bm</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dob</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_doh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dom</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dqb</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dqh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dqm</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dkb</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dkh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dkn</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dvb</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dvh</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dvn</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">nheads</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seqlen_q</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seqlen_k</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seqlen_q_rounded</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">headdim</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">CACHE_KEY_SEQLEN_Q</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">CACHE_KEY_SEQLEN_K</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">BIAS_TYPE</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">IS_CAUSAL</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">BLOCK_HEADDIM</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">SEQUENCE_PARALLEL</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">EVEN_M</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">EVEN_N</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">EVEN_HEADDIM</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">BLOCK_M</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">BLOCK_N</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">triton.language.constexpr</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#_bwd_kernel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention._flash_attn_forward"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.triton_flash_attention.</span></span><span class="sig-name descname"><span class="pre">_flash_attn_forward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">q</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">k</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bias</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">causal</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">softmax_scale</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#_flash_attn_forward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention._flash_attn_forward" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention._flash_attn_backward"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.triton_flash_attention.</span></span><span class="sig-name descname"><span class="pre">_flash_attn_backward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">do</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">q</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">k</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">o</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lse</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dq</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dk</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dv</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bias</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">causal</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">softmax_scale</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#_flash_attn_backward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention._flash_attn_backward" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.triton_flash_attention.</span></span><span class="sig-name descname"><span class="pre">FlashAttnQKVPackedFunc</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#FlashAttnQKVPackedFunc"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.autograd.Function</span></code></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc.forward"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">forward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">qkv</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bias</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">causal</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">softmax_scale</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#FlashAttnQKVPackedFunc.forward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc.forward" title="Link to this definition">#</a></dt> +<dd><p>qkv: (batch, seqlen, 3, nheads, headdim) +bias: optional, shape broadcastible to (batch, nheads, seqlen, seqlen).</p> +<blockquote> +<div><p>For example, ALiBi mask for causal would have shape (1, nheads, 1, seqlen). +ALiBi mask for non-causal would have shape (1, nheads, seqlen, seqlen)</p> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc.backward"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">backward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">do</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#FlashAttnQKVPackedFunc.backward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc.backward" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention.flash_attn_qkvpacked_func"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.triton_flash_attention.</span></span><span class="sig-name descname"><span class="pre">flash_attn_qkvpacked_func</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#flash_attn_qkvpacked_func"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_qkvpacked_func" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.triton_flash_attention.</span></span><span class="sig-name descname"><span class="pre">FlashAttnKVPackedFunc</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#FlashAttnKVPackedFunc"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.autograd.Function</span></code></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc.forward"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">forward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">q</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">kv</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bias</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">causal</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">softmax_scale</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#FlashAttnKVPackedFunc.forward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc.forward" title="Link to this definition">#</a></dt> +<dd><p>q: (batch, seqlen_q, nheads, headdim) +kv: (batch, seqlen_k, 2, nheads, headdim) +bias: optional, shape broadcastible to (batch, nheads, seqlen_q, seqlen_k).</p> +<blockquote> +<div><p>For example, ALiBi mask for causal would have shape (1, nheads, 1, seqlen_k). +ALiBi mask for non-causal would have shape (1, nheads, seqlen_q, seqlen_k)</p> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc.backward"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">backward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">do</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#FlashAttnKVPackedFunc.backward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc.backward" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention.flash_attn_kvpacked_func"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.triton_flash_attention.</span></span><span class="sig-name descname"><span class="pre">flash_attn_kvpacked_func</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#flash_attn_kvpacked_func"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_kvpacked_func" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.triton_flash_attention.</span></span><span class="sig-name descname"><span class="pre">FlashAttnFunc</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#FlashAttnFunc"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.autograd.Function</span></code></p> +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc.forward"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">forward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">q</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">k</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bias</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">causal</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">softmax_scale</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#FlashAttnFunc.forward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc.forward" title="Link to this definition">#</a></dt> +<dd><p>q: (batch_size, seqlen_q, nheads, headdim) +k, v: (batch_size, seqlen_k, nheads, headdim) +bias: optional, shape broadcastible to (batch, nheads, seqlen_q, seqlen_k).</p> +<blockquote> +<div><p>For example, ALiBi mask for causal would have shape (1, nheads, 1, seqlen_k). +ALiBi mask for non-causal would have shape (1, nheads, seqlen_q, seqlen_k)</p> +</div></blockquote> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc.backward"> +<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">backward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">do</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#FlashAttnFunc.backward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc.backward" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.flash_attention.triton_flash_attention.flash_attn_func"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.flash_attention.triton_flash_attention.</span></span><span class="sig-name descname"><span class="pre">flash_attn_func</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/flash_attention/triton_flash_attention.html#flash_attn_func"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_func" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../llama_flash_attention/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.flash_attention.llama_flash_attention</p> + </div> + </a> + <a class="right-next" + href="../../llava_conversation_lib/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.llava_conversation_lib</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention._fwd_kernel"><code class="docutils literal notranslate"><span class="pre">_fwd_kernel()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention._bwd_preprocess_do_o_dot"><code class="docutils literal notranslate"><span class="pre">_bwd_preprocess_do_o_dot()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention._bwd_store_dk_dv"><code class="docutils literal notranslate"><span class="pre">_bwd_store_dk_dv()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel_one_col_block"><code class="docutils literal notranslate"><span class="pre">_bwd_kernel_one_col_block()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention.init_to_zero"><code class="docutils literal notranslate"><span class="pre">init_to_zero()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel"><code class="docutils literal notranslate"><span class="pre">_bwd_kernel()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention._flash_attn_forward"><code class="docutils literal notranslate"><span class="pre">_flash_attn_forward()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention._flash_attn_backward"><code class="docutils literal notranslate"><span class="pre">_flash_attn_backward()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc"><code class="docutils literal notranslate"><span class="pre">FlashAttnQKVPackedFunc</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc.forward"><code class="docutils literal notranslate"><span class="pre">FlashAttnQKVPackedFunc.forward()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc.backward"><code class="docutils literal notranslate"><span class="pre">FlashAttnQKVPackedFunc.backward()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_qkvpacked_func"><code class="docutils literal notranslate"><span class="pre">flash_attn_qkvpacked_func</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc"><code class="docutils literal notranslate"><span class="pre">FlashAttnKVPackedFunc</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc.forward"><code class="docutils literal notranslate"><span class="pre">FlashAttnKVPackedFunc.forward()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc.backward"><code class="docutils literal notranslate"><span class="pre">FlashAttnKVPackedFunc.backward()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_kvpacked_func"><code class="docutils literal notranslate"><span class="pre">flash_attn_kvpacked_func</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc"><code class="docutils literal notranslate"><span class="pre">FlashAttnFunc</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc.forward"><code class="docutils literal notranslate"><span class="pre">FlashAttnFunc.forward()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc.backward"><code class="docutils literal notranslate"><span class="pre">FlashAttnFunc.backward()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_func"><code class="docutils literal notranslate"><span class="pre">flash_attn_func</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/index.html b/autoapi/lmflow/utils/index.html new file mode 100644 index 000000000..0a533fadd --- /dev/null +++ b/autoapi/lmflow/utils/index.html @@ -0,0 +1,646 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/index';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <link rel="next" title="lmflow.utils.common" href="common/index.html" /> + <link rel="prev" title="lmflow.tokenization.hf_text_regression_model" href="../tokenization/hf_text_regression_model/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="current reference internal" href="#">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils"> +<span id="lmflow-utils"></span><h1>lmflow.utils<a class="headerlink" href="#module-lmflow.utils" title="Link to this heading">#</a></h1> +<section id="submodules"> +<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l1"><a class="reference internal" href="constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l1"><a class="reference internal" href="conversation_template/index.html">lmflow.utils.conversation_template</a></li> +<li class="toctree-l1"><a class="reference internal" href="data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l1"><a class="reference internal" href="flash_attention/index.html">lmflow.utils.flash_attention</a></li> +<li class="toctree-l1"><a class="reference internal" href="llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l1"><a class="reference internal" href="model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l1"><a class="reference internal" href="multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l1"><a class="reference internal" href="position_interpolation/index.html">lmflow.utils.position_interpolation</a></li> +<li class="toctree-l1"><a class="reference internal" href="versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../tokenization/hf_text_regression_model/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.tokenization.hf_text_regression_model</p> + </div> + </a> + <a class="right-next" + href="common/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.common</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../_sources/autoapi/lmflow/utils/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/llava_conversation_lib/index.html b/autoapi/lmflow/utils/llava_conversation_lib/index.html new file mode 100644 index 000000000..ed1780731 --- /dev/null +++ b/autoapi/lmflow/utils/llava_conversation_lib/index.html @@ -0,0 +1,908 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.llava_conversation_lib &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/llava_conversation_lib/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.utils.model" href="../model/index.html" /> + <link rel="prev" title="lmflow.utils.flash_attention.triton_flash_attention" href="../flash_attention/triton_flash_attention/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.llava_conversation_lib</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.llava_conversation_lib"> +<span id="lmflow-utils-llava-conversation-lib"></span><h1>lmflow.utils.llava_conversation_lib<a class="headerlink" href="#module-lmflow.utils.llava_conversation_lib" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.conv_vicuna_v0" title="lmflow.utils.llava_conversation_lib.conv_vicuna_v0"><code class="xref py py-obj docutils literal notranslate"><span class="pre">conv_vicuna_v0</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.conv_vicuna_v1" title="lmflow.utils.llava_conversation_lib.conv_vicuna_v1"><code class="xref py py-obj docutils literal notranslate"><span class="pre">conv_vicuna_v1</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.conv_llama_2" title="lmflow.utils.llava_conversation_lib.conv_llama_2"><code class="xref py py-obj docutils literal notranslate"><span class="pre">conv_llama_2</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.conv_llava_llama_2" title="lmflow.utils.llava_conversation_lib.conv_llava_llama_2"><code class="xref py py-obj docutils literal notranslate"><span class="pre">conv_llava_llama_2</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.conv_mpt" title="lmflow.utils.llava_conversation_lib.conv_mpt"><code class="xref py py-obj docutils literal notranslate"><span class="pre">conv_mpt</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.conv_llava_plain" title="lmflow.utils.llava_conversation_lib.conv_llava_plain"><code class="xref py py-obj docutils literal notranslate"><span class="pre">conv_llava_plain</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.conv_llava_v0" title="lmflow.utils.llava_conversation_lib.conv_llava_v0"><code class="xref py py-obj docutils literal notranslate"><span class="pre">conv_llava_v0</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.conv_llava_v0_mmtag" title="lmflow.utils.llava_conversation_lib.conv_llava_v0_mmtag"><code class="xref py py-obj docutils literal notranslate"><span class="pre">conv_llava_v0_mmtag</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.conv_llava_v1" title="lmflow.utils.llava_conversation_lib.conv_llava_v1"><code class="xref py py-obj docutils literal notranslate"><span class="pre">conv_llava_v1</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.conv_llava_v1_mmtag" title="lmflow.utils.llava_conversation_lib.conv_llava_v1_mmtag"><code class="xref py py-obj docutils literal notranslate"><span class="pre">conv_llava_v1_mmtag</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.default_conversation" title="lmflow.utils.llava_conversation_lib.default_conversation"><code class="xref py py-obj docutils literal notranslate"><span class="pre">default_conversation</span></code></a></p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.conv_templates" title="lmflow.utils.llava_conversation_lib.conv_templates"><code class="xref py py-obj docutils literal notranslate"><span class="pre">conv_templates</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.SeparatorStyle" title="lmflow.utils.llava_conversation_lib.SeparatorStyle"><code class="xref py py-obj docutils literal notranslate"><span class="pre">SeparatorStyle</span></code></a></p></td> +<td><p>Different separator style.</p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.Conversation" title="lmflow.utils.llava_conversation_lib.Conversation"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Conversation</span></code></a></p></td> +<td><p>A class that keeps all conversation history.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.SeparatorStyle"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.llava_conversation_lib.</span></span><span class="sig-name descname"><span class="pre">SeparatorStyle</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwds</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#SeparatorStyle"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.SeparatorStyle" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">enum.Enum</span></code></p> +<p>Different separator style.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.SeparatorStyle.SINGLE"> +<span class="sig-name descname"><span class="pre">SINGLE</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#SeparatorStyle.SINGLE"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.SeparatorStyle.SINGLE" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.SeparatorStyle.TWO"> +<span class="sig-name descname"><span class="pre">TWO</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#SeparatorStyle.TWO"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.SeparatorStyle.TWO" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.SeparatorStyle.MPT"> +<span class="sig-name descname"><span class="pre">MPT</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#SeparatorStyle.MPT"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.SeparatorStyle.MPT" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.SeparatorStyle.PLAIN"> +<span class="sig-name descname"><span class="pre">PLAIN</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#SeparatorStyle.PLAIN"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.SeparatorStyle.PLAIN" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.SeparatorStyle.LLAMA_2"> +<span class="sig-name descname"><span class="pre">LLAMA_2</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#SeparatorStyle.LLAMA_2"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.SeparatorStyle.LLAMA_2" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.llava_conversation_lib.</span></span><span class="sig-name descname"><span class="pre">Conversation</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation" title="Link to this definition">#</a></dt> +<dd><p>A class that keeps all conversation history.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.system"> +<span class="sig-name descname"><span class="pre">system</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.system"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.system" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.roles"> +<span class="sig-name descname"><span class="pre">roles</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.roles"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.roles" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.messages"> +<span class="sig-name descname"><span class="pre">messages</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.messages"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.messages" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.offset"> +<span class="sig-name descname"><span class="pre">offset</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.offset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.offset" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.sep_style"> +<span class="sig-name descname"><span class="pre">sep_style</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#lmflow.utils.llava_conversation_lib.SeparatorStyle" title="lmflow.utils.llava_conversation_lib.SeparatorStyle"><span class="pre">SeparatorStyle</span></a></em><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.sep_style"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.sep_style" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.sep"> +<span class="sig-name descname"><span class="pre">sep</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'###'</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.sep"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.sep" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.sep2"> +<span class="sig-name descname"><span class="pre">sep2</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.sep2"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.sep2" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.version"> +<span class="sig-name descname"><span class="pre">version</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'Unknown'</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.version"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.version" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.skip_next"> +<span class="sig-name descname"><span class="pre">skip_next</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.skip_next"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.skip_next" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.get_prompt"> +<span class="sig-name descname"><span class="pre">get_prompt</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.get_prompt"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.get_prompt" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.append_message"> +<span class="sig-name descname"><span class="pre">append_message</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">role</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">message</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.append_message"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.append_message" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.get_images"> +<span class="sig-name descname"><span class="pre">get_images</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">return_pil</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.get_images"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.get_images" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.to_gradio_chatbot"> +<span class="sig-name descname"><span class="pre">to_gradio_chatbot</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.to_gradio_chatbot"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.to_gradio_chatbot" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.copy"> +<span class="sig-name descname"><span class="pre">copy</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.copy"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.copy" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.Conversation.dict"> +<span class="sig-name descname"><span class="pre">dict</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#Conversation.dict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.Conversation.dict" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.conv_vicuna_v0"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.llava_conversation_lib.</span></span><span class="sig-name descname"><span class="pre">conv_vicuna_v0</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#conv_vicuna_v0"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.conv_vicuna_v0" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.conv_vicuna_v1"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.llava_conversation_lib.</span></span><span class="sig-name descname"><span class="pre">conv_vicuna_v1</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#conv_vicuna_v1"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.conv_vicuna_v1" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.conv_llama_2"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.llava_conversation_lib.</span></span><span class="sig-name descname"><span class="pre">conv_llama_2</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#conv_llama_2"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.conv_llama_2" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.conv_llava_llama_2"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.llava_conversation_lib.</span></span><span class="sig-name descname"><span class="pre">conv_llava_llama_2</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#conv_llava_llama_2"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.conv_llava_llama_2" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.conv_mpt"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.llava_conversation_lib.</span></span><span class="sig-name descname"><span class="pre">conv_mpt</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#conv_mpt"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.conv_mpt" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.conv_llava_plain"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.llava_conversation_lib.</span></span><span class="sig-name descname"><span class="pre">conv_llava_plain</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#conv_llava_plain"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.conv_llava_plain" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.conv_llava_v0"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.llava_conversation_lib.</span></span><span class="sig-name descname"><span class="pre">conv_llava_v0</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#conv_llava_v0"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.conv_llava_v0" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.conv_llava_v0_mmtag"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.llava_conversation_lib.</span></span><span class="sig-name descname"><span class="pre">conv_llava_v0_mmtag</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#conv_llava_v0_mmtag"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.conv_llava_v0_mmtag" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.conv_llava_v1"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.llava_conversation_lib.</span></span><span class="sig-name descname"><span class="pre">conv_llava_v1</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#conv_llava_v1"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.conv_llava_v1" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.conv_llava_v1_mmtag"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.llava_conversation_lib.</span></span><span class="sig-name descname"><span class="pre">conv_llava_v1_mmtag</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#conv_llava_v1_mmtag"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.conv_llava_v1_mmtag" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.default_conversation"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.llava_conversation_lib.</span></span><span class="sig-name descname"><span class="pre">default_conversation</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#default_conversation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.default_conversation" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.llava_conversation_lib.conv_templates"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.llava_conversation_lib.</span></span><span class="sig-name descname"><span class="pre">conv_templates</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/llava_conversation_lib.html#conv_templates"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.llava_conversation_lib.conv_templates" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../flash_attention/triton_flash_attention/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.flash_attention.triton_flash_attention</p> + </div> + </a> + <a class="right-next" + href="../model/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.model</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.SeparatorStyle"><code class="docutils literal notranslate"><span class="pre">SeparatorStyle</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.SeparatorStyle.SINGLE"><code class="docutils literal notranslate"><span class="pre">SeparatorStyle.SINGLE</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.SeparatorStyle.TWO"><code class="docutils literal notranslate"><span class="pre">SeparatorStyle.TWO</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.SeparatorStyle.MPT"><code class="docutils literal notranslate"><span class="pre">SeparatorStyle.MPT</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.SeparatorStyle.PLAIN"><code class="docutils literal notranslate"><span class="pre">SeparatorStyle.PLAIN</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.SeparatorStyle.LLAMA_2"><code class="docutils literal notranslate"><span class="pre">SeparatorStyle.LLAMA_2</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation"><code class="docutils literal notranslate"><span class="pre">Conversation</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.system"><code class="docutils literal notranslate"><span class="pre">Conversation.system</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.roles"><code class="docutils literal notranslate"><span class="pre">Conversation.roles</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.messages"><code class="docutils literal notranslate"><span class="pre">Conversation.messages</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.offset"><code class="docutils literal notranslate"><span class="pre">Conversation.offset</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.sep_style"><code class="docutils literal notranslate"><span class="pre">Conversation.sep_style</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.sep"><code class="docutils literal notranslate"><span class="pre">Conversation.sep</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.sep2"><code class="docutils literal notranslate"><span class="pre">Conversation.sep2</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.version"><code class="docutils literal notranslate"><span class="pre">Conversation.version</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.skip_next"><code class="docutils literal notranslate"><span class="pre">Conversation.skip_next</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.get_prompt"><code class="docutils literal notranslate"><span class="pre">Conversation.get_prompt()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.append_message"><code class="docutils literal notranslate"><span class="pre">Conversation.append_message()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.get_images"><code class="docutils literal notranslate"><span class="pre">Conversation.get_images()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.to_gradio_chatbot"><code class="docutils literal notranslate"><span class="pre">Conversation.to_gradio_chatbot()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.copy"><code class="docutils literal notranslate"><span class="pre">Conversation.copy()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.Conversation.dict"><code class="docutils literal notranslate"><span class="pre">Conversation.dict()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.conv_vicuna_v0"><code class="docutils literal notranslate"><span class="pre">conv_vicuna_v0</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.conv_vicuna_v1"><code class="docutils literal notranslate"><span class="pre">conv_vicuna_v1</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.conv_llama_2"><code class="docutils literal notranslate"><span class="pre">conv_llama_2</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.conv_llava_llama_2"><code class="docutils literal notranslate"><span class="pre">conv_llava_llama_2</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.conv_mpt"><code class="docutils literal notranslate"><span class="pre">conv_mpt</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.conv_llava_plain"><code class="docutils literal notranslate"><span class="pre">conv_llava_plain</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.conv_llava_v0"><code class="docutils literal notranslate"><span class="pre">conv_llava_v0</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.conv_llava_v0_mmtag"><code class="docutils literal notranslate"><span class="pre">conv_llava_v0_mmtag</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.conv_llava_v1"><code class="docutils literal notranslate"><span class="pre">conv_llava_v1</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.conv_llava_v1_mmtag"><code class="docutils literal notranslate"><span class="pre">conv_llava_v1_mmtag</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.default_conversation"><code class="docutils literal notranslate"><span class="pre">default_conversation</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.llava_conversation_lib.conv_templates"><code class="docutils literal notranslate"><span class="pre">conv_templates</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/utils/llava_conversation_lib/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/model/index.html b/autoapi/lmflow/utils/model/index.html new file mode 100644 index 000000000..93b4b8dfe --- /dev/null +++ b/autoapi/lmflow/utils/model/index.html @@ -0,0 +1,673 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.model &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/model/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.utils.multimodal" href="../multimodal/index.html" /> + <link rel="prev" title="lmflow.utils.llava_conversation_lib" href="../llava_conversation_lib/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.model"> +<span id="lmflow-utils-model"></span><h1>lmflow.utils.model<a class="headerlink" href="#module-lmflow.utils.model" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.model.logger" title="lmflow.utils.model.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.model.check_homogeneity" title="lmflow.utils.model.check_homogeneity"><code class="xref py py-obj docutils literal notranslate"><span class="pre">check_homogeneity</span></code></a>(→ bool)</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.model.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.model.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/model.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.model.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.model.check_homogeneity"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.model.</span></span><span class="sig-name descname"><span class="pre">check_homogeneity</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_args_list</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../../args/index.html#lmflow.args.ModelArguments" title="lmflow.args.ModelArguments"><span class="pre">lmflow.args.ModelArguments</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/model.html#check_homogeneity"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.model.check_homogeneity" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../llava_conversation_lib/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.llava_conversation_lib</p> + </div> + </a> + <a class="right-next" + href="../multimodal/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.multimodal</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.model.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.model.check_homogeneity"><code class="docutils literal notranslate"><span class="pre">check_homogeneity()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/utils/model/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/multimodal/index.html b/autoapi/lmflow/utils/multimodal/index.html new file mode 100644 index 000000000..1d646bd9c --- /dev/null +++ b/autoapi/lmflow/utils/multimodal/index.html @@ -0,0 +1,673 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.multimodal &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/multimodal/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.utils.position_interpolation" href="../position_interpolation/index.html" /> + <link rel="prev" title="lmflow.utils.model" href="../model/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.multimodal</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.multimodal"> +<span id="lmflow-utils-multimodal"></span><h1>lmflow.utils.multimodal<a class="headerlink" href="#module-lmflow.utils.multimodal" title="Link to this heading">#</a></h1> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.multimodal.update_custom_config" title="lmflow.utils.multimodal.update_custom_config"><code class="xref py py-obj docutils literal notranslate"><span class="pre">update_custom_config</span></code></a>(config, model_args)</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.multimodal.load_llava_pretrain_model" title="lmflow.utils.multimodal.load_llava_pretrain_model"><code class="xref py py-obj docutils literal notranslate"><span class="pre">load_llava_pretrain_model</span></code></a>(model, checkpoint_path)</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.multimodal.adapt_llava_model_to_lmflow_type" title="lmflow.utils.multimodal.adapt_llava_model_to_lmflow_type"><code class="xref py py-obj docutils literal notranslate"><span class="pre">adapt_llava_model_to_lmflow_type</span></code></a>(state_dict)</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.multimodal.update_custom_config"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.multimodal.</span></span><span class="sig-name descname"><span class="pre">update_custom_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">config</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_args</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/multimodal.html#update_custom_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.multimodal.update_custom_config" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.multimodal.load_llava_pretrain_model"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.multimodal.</span></span><span class="sig-name descname"><span class="pre">load_llava_pretrain_model</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">checkpoint_path</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/multimodal.html#load_llava_pretrain_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.multimodal.load_llava_pretrain_model" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.multimodal.adapt_llava_model_to_lmflow_type"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.multimodal.</span></span><span class="sig-name descname"><span class="pre">adapt_llava_model_to_lmflow_type</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state_dict</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/multimodal.html#adapt_llava_model_to_lmflow_type"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.multimodal.adapt_llava_model_to_lmflow_type" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../model/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.model</p> + </div> + </a> + <a class="right-next" + href="../position_interpolation/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.position_interpolation</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.multimodal.update_custom_config"><code class="docutils literal notranslate"><span class="pre">update_custom_config()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.multimodal.load_llava_pretrain_model"><code class="docutils literal notranslate"><span class="pre">load_llava_pretrain_model()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.multimodal.adapt_llava_model_to_lmflow_type"><code class="docutils literal notranslate"><span class="pre">adapt_llava_model_to_lmflow_type()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/utils/multimodal/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/position_interpolation/index.html b/autoapi/lmflow/utils/position_interpolation/index.html new file mode 100644 index 000000000..089351948 --- /dev/null +++ b/autoapi/lmflow/utils/position_interpolation/index.html @@ -0,0 +1,640 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.position_interpolation &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/position_interpolation/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch" href="llama_rope_scaled_monkey_patch/index.html" /> + <link rel="prev" title="lmflow.utils.multimodal" href="../multimodal/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 current active has-children"><a class="current reference internal" href="#">lmflow.utils.position_interpolation</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.position_interpolation</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.position_interpolation"> +<span id="lmflow-utils-position-interpolation"></span><h1>lmflow.utils.position_interpolation<a class="headerlink" href="#module-lmflow.utils.position_interpolation" title="Link to this heading">#</a></h1> +<section id="submodules"> +<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../multimodal/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.multimodal</p> + </div> + </a> + <a class="right-next" + href="llama_rope_scaled_monkey_patch/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#submodules">Submodules</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/utils/position_interpolation/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html b/autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html new file mode 100644 index 000000000..7b753e318 --- /dev/null +++ b/autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html @@ -0,0 +1,703 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index';</script> + <link rel="index" title="Index" href="../../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../../search.html" /> + <link rel="next" title="lmflow.utils.versioning" href="../../versioning/index.html" /> + <link rel="prev" title="lmflow.utils.position_interpolation" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils.position_interpolation</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l4 current active"><a class="current reference internal" href="#">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow.utils</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils.position_interpolation</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch"> +<span id="lmflow-utils-position-interpolation-llama-rope-scaled-monkey-patch"></span><h1>lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch<a class="headerlink" href="#module-lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch" title="Link to this heading">#</a></h1> +<section id="classes"> +<h2>Classes<a class="headerlink" href="#classes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding" title="lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding"><code class="xref py py-obj docutils literal notranslate"><span class="pre">CondenseRotaryEmbedding</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.replace_llama_with_condense" title="lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.replace_llama_with_condense"><code class="xref py py-obj docutils literal notranslate"><span class="pre">replace_llama_with_condense</span></code></a>(pi_ratio, ntk_ratio)</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py class"> +<dt class="sig sig-object py" id="lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.</span></span><span class="sig-name descname"><span class="pre">CondenseRotaryEmbedding</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dim</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pi_ratio</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ntk_ratio</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_position_embeddings</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">2048</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10000</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch.html#CondenseRotaryEmbedding"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding" title="Link to this definition">#</a></dt> +<dd><p>Bases: <code class="xref py py-obj docutils literal notranslate"><span class="pre">torch.nn.Module</span></code></p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.ntk_ratio"> +<span class="sig-name descname"><span class="pre">ntk_ratio</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch.html#CondenseRotaryEmbedding.ntk_ratio"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.ntk_ratio" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.pi_ratio"> +<span class="sig-name descname"><span class="pre">pi_ratio</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch.html#CondenseRotaryEmbedding.pi_ratio"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.pi_ratio" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.max_seq_len_cached"> +<span class="sig-name descname"><span class="pre">max_seq_len_cached</span></span><a class="reference internal" href="../../../../../_modules/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch.html#CondenseRotaryEmbedding.max_seq_len_cached"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.max_seq_len_cached" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.forward"> +<span class="sig-name descname"><span class="pre">forward</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seq_len</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch.html#CondenseRotaryEmbedding.forward"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.forward" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.replace_llama_with_condense"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.</span></span><span class="sig-name descname"><span class="pre">replace_llama_with_condense</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pi_ratio</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ntk_ratio</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../../_modules/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch.html#replace_llama_with_condense"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.replace_llama_with_condense" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.position_interpolation</p> + </div> + </a> + <a class="right-next" + href="../../versioning/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.utils.versioning</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#classes">Classes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding"><code class="docutils literal notranslate"><span class="pre">CondenseRotaryEmbedding</span></code></a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.ntk_ratio"><code class="docutils literal notranslate"><span class="pre">CondenseRotaryEmbedding.ntk_ratio</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.pi_ratio"><code class="docutils literal notranslate"><span class="pre">CondenseRotaryEmbedding.pi_ratio</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.max_seq_len_cached"><code class="docutils literal notranslate"><span class="pre">CondenseRotaryEmbedding.max_seq_len_cached</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.forward"><code class="docutils literal notranslate"><span class="pre">CondenseRotaryEmbedding.forward()</span></code></a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.replace_llama_with_condense"><code class="docutils literal notranslate"><span class="pre">replace_llama_with_condense()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../../_sources/autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/utils/versioning/index.html b/autoapi/lmflow/utils/versioning/index.html new file mode 100644 index 000000000..087b5debf --- /dev/null +++ b/autoapi/lmflow/utils/versioning/index.html @@ -0,0 +1,763 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.utils.versioning &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/utils/versioning/index';</script> + <link rel="index" title="Index" href="../../../../genindex.html" /> + <link rel="search" title="Search" href="../../../../search.html" /> + <link rel="next" title="lmflow.version" href="../../version/index.html" /> + <link rel="prev" title="lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch" href="../position_interpolation/llama_rope_scaled_monkey_patch/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active has-children"><a class="reference internal" href="../index.html">lmflow.utils</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l3"><a class="reference internal" href="../common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3 current active"><a class="current reference internal" href="#">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2"><a class="reference internal" href="../../version/index.html">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">lmflow</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow.utils</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.utils.versioning</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.utils.versioning"> +<span id="lmflow-utils-versioning"></span><h1>lmflow.utils.versioning<a class="headerlink" href="#module-lmflow.utils.versioning" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.versioning.logger" title="lmflow.utils.versioning.logger"><code class="xref py py-obj docutils literal notranslate"><span class="pre">logger</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="functions"> +<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.versioning.get_python_version" title="lmflow.utils.versioning.get_python_version"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_python_version</span></code></a>()</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.versioning._is_package_available" title="lmflow.utils.versioning._is_package_available"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_is_package_available</span></code></a>(package_name[, skippable])</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.versioning._is_packages_available" title="lmflow.utils.versioning._is_packages_available"><code class="xref py py-obj docutils literal notranslate"><span class="pre">_is_packages_available</span></code></a>(packages)</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.versioning.is_package_version_at_least" title="lmflow.utils.versioning.is_package_version_at_least"><code class="xref py py-obj docutils literal notranslate"><span class="pre">is_package_version_at_least</span></code></a>(package_name, min_version)</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.versioning.is_gradio_available" title="lmflow.utils.versioning.is_gradio_available"><code class="xref py py-obj docutils literal notranslate"><span class="pre">is_gradio_available</span></code></a>()</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.versioning.is_ray_available" title="lmflow.utils.versioning.is_ray_available"><code class="xref py py-obj docutils literal notranslate"><span class="pre">is_ray_available</span></code></a>()</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.versioning.is_vllm_available" title="lmflow.utils.versioning.is_vllm_available"><code class="xref py py-obj docutils literal notranslate"><span class="pre">is_vllm_available</span></code></a>()</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.versioning.is_flash_attn_available" title="lmflow.utils.versioning.is_flash_attn_available"><code class="xref py py-obj docutils literal notranslate"><span class="pre">is_flash_attn_available</span></code></a>()</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.versioning.is_flask_available" title="lmflow.utils.versioning.is_flask_available"><code class="xref py py-obj docutils literal notranslate"><span class="pre">is_flask_available</span></code></a>()</p></td> +<td><p></p></td> +</tr> +<tr class="row-even"><td><p><a class="reference internal" href="#lmflow.utils.versioning.is_trl_available" title="lmflow.utils.versioning.is_trl_available"><code class="xref py py-obj docutils literal notranslate"><span class="pre">is_trl_available</span></code></a>()</p></td> +<td><p></p></td> +</tr> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.utils.versioning.is_multimodal_available" title="lmflow.utils.versioning.is_multimodal_available"><code class="xref py py-obj docutils literal notranslate"><span class="pre">is_multimodal_available</span></code></a>()</p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.utils.versioning.logger"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.versioning.</span></span><span class="sig-name descname"><span class="pre">logger</span></span><a class="reference internal" href="../../../../_modules/lmflow/utils/versioning.html#logger"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.versioning.logger" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.versioning.get_python_version"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.versioning.</span></span><span class="sig-name descname"><span class="pre">get_python_version</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/versioning.html#get_python_version"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.versioning.get_python_version" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.versioning._is_package_available"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.versioning.</span></span><span class="sig-name descname"><span class="pre">_is_package_available</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">package_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">skippable</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/versioning.html#_is_package_available"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.versioning._is_package_available" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.versioning._is_packages_available"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.versioning.</span></span><span class="sig-name descname"><span class="pre">_is_packages_available</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">packages</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/versioning.html#_is_packages_available"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.versioning._is_packages_available" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.versioning.is_package_version_at_least"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.versioning.</span></span><span class="sig-name descname"><span class="pre">is_package_version_at_least</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">package_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">min_version</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/versioning.html#is_package_version_at_least"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.versioning.is_package_version_at_least" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.versioning.is_gradio_available"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.versioning.</span></span><span class="sig-name descname"><span class="pre">is_gradio_available</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/versioning.html#is_gradio_available"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.versioning.is_gradio_available" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.versioning.is_ray_available"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.versioning.</span></span><span class="sig-name descname"><span class="pre">is_ray_available</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/versioning.html#is_ray_available"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.versioning.is_ray_available" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.versioning.is_vllm_available"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.versioning.</span></span><span class="sig-name descname"><span class="pre">is_vllm_available</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/versioning.html#is_vllm_available"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.versioning.is_vllm_available" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.versioning.is_flash_attn_available"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.versioning.</span></span><span class="sig-name descname"><span class="pre">is_flash_attn_available</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/versioning.html#is_flash_attn_available"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.versioning.is_flash_attn_available" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.versioning.is_flask_available"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.versioning.</span></span><span class="sig-name descname"><span class="pre">is_flask_available</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/versioning.html#is_flask_available"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.versioning.is_flask_available" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.versioning.is_trl_available"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.versioning.</span></span><span class="sig-name descname"><span class="pre">is_trl_available</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/versioning.html#is_trl_available"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.versioning.is_trl_available" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py function"> +<dt class="sig sig-object py" id="lmflow.utils.versioning.is_multimodal_available"> +<span class="sig-prename descclassname"><span class="pre">lmflow.utils.versioning.</span></span><span class="sig-name descname"><span class="pre">is_multimodal_available</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../../../_modules/lmflow/utils/versioning.html#is_multimodal_available"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.utils.versioning.is_multimodal_available" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../position_interpolation/llama_rope_scaled_monkey_patch/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</p> + </div> + </a> + <a class="right-next" + href="../../version/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">lmflow.version</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#functions">Functions</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.versioning.logger"><code class="docutils literal notranslate"><span class="pre">logger</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.versioning.get_python_version"><code class="docutils literal notranslate"><span class="pre">get_python_version()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.versioning._is_package_available"><code class="docutils literal notranslate"><span class="pre">_is_package_available()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.versioning._is_packages_available"><code class="docutils literal notranslate"><span class="pre">_is_packages_available()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.versioning.is_package_version_at_least"><code class="docutils literal notranslate"><span class="pre">is_package_version_at_least()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.versioning.is_gradio_available"><code class="docutils literal notranslate"><span class="pre">is_gradio_available()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.versioning.is_ray_available"><code class="docutils literal notranslate"><span class="pre">is_ray_available()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.versioning.is_vllm_available"><code class="docutils literal notranslate"><span class="pre">is_vllm_available()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.versioning.is_flash_attn_available"><code class="docutils literal notranslate"><span class="pre">is_flash_attn_available()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.versioning.is_flask_available"><code class="docutils literal notranslate"><span class="pre">is_flask_available()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.versioning.is_trl_available"><code class="docutils literal notranslate"><span class="pre">is_trl_available()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.utils.versioning.is_multimodal_available"><code class="docutils literal notranslate"><span class="pre">is_multimodal_available()</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../../_sources/autoapi/lmflow/utils/versioning/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/autoapi/lmflow/version/index.html b/autoapi/lmflow/version/index.html new file mode 100644 index 000000000..3fe38f526 --- /dev/null +++ b/autoapi/lmflow/version/index.html @@ -0,0 +1,652 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>lmflow.version &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'autoapi/lmflow/version/index';</script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> + <link rel="next" title="About" href="../../../about/index.html" /> + <link rel="prev" title="lmflow.utils.versioning" href="../utils/versioning/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="../../index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../../../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../../../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active has-children"><a class="reference internal" href="../index.html">lmflow</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current"> +<li class="toctree-l2"><a class="reference internal" href="../args/index.html">lmflow.args</a></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../datasets/index.html">lmflow.datasets</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../datasets/dataset/index.html">lmflow.datasets.dataset</a></li> +<li class="toctree-l3"><a class="reference internal" href="../datasets/multi_modal_dataset/index.html">lmflow.datasets.multi_modal_dataset</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../models/index.html">lmflow.models</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../models/auto_model/index.html">lmflow.models.auto_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/base_model/index.html">lmflow.models.base_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/decoder_model/index.html">lmflow.models.decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/encoder_decoder_model/index.html">lmflow.models.encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_decoder_model/index.html">lmflow.models.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_encoder_decoder_model/index.html">lmflow.models.hf_encoder_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_model_mixin/index.html">lmflow.models.hf_model_mixin</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/hf_text_regression_model/index.html">lmflow.models.hf_text_regression_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../models/interfaces/index.html">lmflow.models.interfaces</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../models/interfaces/tunable/index.html">lmflow.models.interfaces.tunable</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../models/regression_model/index.html">lmflow.models.regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/text_regression_model/index.html">lmflow.models.text_regression_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../models/vision2seq_model/index.html">lmflow.models.vision2seq_model</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../models/vision_encoder/index.html">lmflow.models.vision_encoder</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../models/vision_encoder/clip_encoder/index.html">lmflow.models.vision_encoder.clip_encoder</a></li> +</ul> +</details></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../optim/index.html">lmflow.optim</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../optim/adabelief/index.html">lmflow.optim.adabelief</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adabound/index.html">lmflow.optim.adabound</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adadelta/index.html">lmflow.optim.adadelta</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adagrad/index.html">lmflow.optim.adagrad</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adam/index.html">lmflow.optim.adam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamax/index.html">lmflow.optim.adamax</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamp/index.html">lmflow.optim.adamp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adamw_schedule_free/index.html">lmflow.optim.adamw_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/adan/index.html">lmflow.optim.adan</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/dummy/index.html">lmflow.optim.dummy</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/lamb/index.html">lmflow.optim.lamb</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/lars/index.html">lmflow.optim.lars</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/nadam/index.html">lmflow.optim.nadam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/novograd/index.html">lmflow.optim.novograd</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/optimizers/index.html">lmflow.optim.optimizers</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/radam/index.html">lmflow.optim.radam</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sgd_schedule_free/index.html">lmflow.optim.sgd_schedule_free</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sgdp/index.html">lmflow.optim.sgdp</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/sophia/index.html">lmflow.optim.sophia</a></li> +<li class="toctree-l3"><a class="reference internal" href="../optim/yogi/index.html">lmflow.optim.yogi</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../pipeline/index.html">lmflow.pipeline</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/auto_pipeline/index.html">lmflow.pipeline.auto_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_aligner/index.html">lmflow.pipeline.base_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_pipeline/index.html">lmflow.pipeline.base_pipeline</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/base_tuner/index.html">lmflow.pipeline.base_tuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/dpo_aligner/index.html">lmflow.pipeline.dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/dpov2_aligner/index.html">lmflow.pipeline.dpov2_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/evaluator/index.html">lmflow.pipeline.evaluator</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/finetuner/index.html">lmflow.pipeline.finetuner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/inferencer/index.html">lmflow.pipeline.inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/iterative_dpo_aligner/index.html">lmflow.pipeline.iterative_dpo_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/raft_aligner/index.html">lmflow.pipeline.raft_aligner</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/rm_inferencer/index.html">lmflow.pipeline.rm_inferencer</a></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/rm_tuner/index.html">lmflow.pipeline.rm_tuner</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../pipeline/utils/index.html">lmflow.pipeline.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/dpov2_dataprocessor/index.html">lmflow.pipeline.utils.dpov2_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/dpov2_trainer/index.html">lmflow.pipeline.utils.dpov2_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/memory_safe_dpov2_align/index.html">lmflow.pipeline.utils.memory_safe_dpov2_align</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/memory_safe_vllm_inference/index.html">lmflow.pipeline.utils.memory_safe_vllm_inference</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/peft_trainer/index.html">lmflow.pipeline.utils.peft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/raft_trainer/index.html">lmflow.pipeline.utils.raft_trainer</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/rm_dataprocessor/index.html">lmflow.pipeline.utils.rm_dataprocessor</a></li> +<li class="toctree-l4"><a class="reference internal" href="../pipeline/utils/rm_trainer/index.html">lmflow.pipeline.utils.rm_trainer</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../pipeline/vllm_inferencer/index.html">lmflow.pipeline.vllm_inferencer</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../tokenization/index.html">lmflow.tokenization</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../tokenization/hf_decoder_model/index.html">lmflow.tokenization.hf_decoder_model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../tokenization/hf_text_regression_model/index.html">lmflow.tokenization.hf_text_regression_model</a></li> +</ul> +</details></li> +<li class="toctree-l2 has-children"><a class="reference internal" href="../utils/index.html">lmflow.utils</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l3"><a class="reference internal" href="../utils/common/index.html">lmflow.utils.common</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/constants/index.html">lmflow.utils.constants</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/conversation_template/index.html">lmflow.utils.conversation_template</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/base/index.html">lmflow.utils.conversation_template.base</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/chatglm/index.html">lmflow.utils.conversation_template.chatglm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/chatml/index.html">lmflow.utils.conversation_template.chatml</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/deepseek/index.html">lmflow.utils.conversation_template.deepseek</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/gemma/index.html">lmflow.utils.conversation_template.gemma</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/hymba/index.html">lmflow.utils.conversation_template.hymba</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/internlm/index.html">lmflow.utils.conversation_template.internlm</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/llama/index.html">lmflow.utils.conversation_template.llama</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/phi/index.html">lmflow.utils.conversation_template.phi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/qwen/index.html">lmflow.utils.conversation_template.qwen</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/yi/index.html">lmflow.utils.conversation_template.yi</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/conversation_template/zephyr/index.html">lmflow.utils.conversation_template.zephyr</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/data_utils/index.html">lmflow.utils.data_utils</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/flash_attention/index.html">lmflow.utils.flash_attention</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/bloom_flash_attention/index.html">lmflow.utils.flash_attention.bloom_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/gpt2_flash_attention/index.html">lmflow.utils.flash_attention.gpt2_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/gpt_neo_flash_attention/index.html">lmflow.utils.flash_attention.gpt_neo_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/llama_flash_attention/index.html">lmflow.utils.flash_attention.llama_flash_attention</a></li> +<li class="toctree-l4"><a class="reference internal" href="../utils/flash_attention/triton_flash_attention/index.html">lmflow.utils.flash_attention.triton_flash_attention</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/llava_conversation_lib/index.html">lmflow.utils.llava_conversation_lib</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/model/index.html">lmflow.utils.model</a></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/multimodal/index.html">lmflow.utils.multimodal</a></li> +<li class="toctree-l3 has-children"><a class="reference internal" href="../utils/position_interpolation/index.html">lmflow.utils.position_interpolation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> +<li class="toctree-l4"><a class="reference internal" href="../utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a></li> +</ul> +</details></li> +<li class="toctree-l3"><a class="reference internal" href="../utils/versioning/index.html">lmflow.utils.versioning</a></li> +</ul> +</details></li> +<li class="toctree-l2 current active"><a class="current reference internal" href="#">lmflow.version</a></li> +</ul> +</details></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="../../index.html" class="nav-link">API Reference</a></li> + + + <li class="breadcrumb-item"><a href="../index.html" class="nav-link">lmflow</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">lmflow.version</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="module-lmflow.version"> +<span id="lmflow-version"></span><h1>lmflow.version<a class="headerlink" href="#module-lmflow.version" title="Link to this heading">#</a></h1> +<section id="attributes"> +<h2>Attributes<a class="headerlink" href="#attributes" title="Link to this heading">#</a></h2> +<div class="pst-scrollable-table-container"><table class="autosummary longtable table autosummary"> +<tbody> +<tr class="row-odd"><td><p><a class="reference internal" href="#lmflow.version.__version__" title="lmflow.version.__version__"><code class="xref py py-obj docutils literal notranslate"><span class="pre">__version__</span></code></a></p></td> +<td><p></p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="module-contents"> +<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">#</a></h2> +<dl class="py data"> +<dt class="sig sig-object py" id="lmflow.version.__version__"> +<span class="sig-prename descclassname"><span class="pre">lmflow.version.</span></span><span class="sig-name descname"><span class="pre">__version__</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'0.0.9'</span></em><a class="reference internal" href="../../../_modules/lmflow/version.html#__version__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#lmflow.version.__version__" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../utils/versioning/index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">lmflow.utils.versioning</p> + </div> + </a> + <a class="right-next" + href="../../../about/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">About</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#attributes">Attributes</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-contents">Module Contents</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lmflow.version.__version__"><code class="docutils literal notranslate"><span class="pre">__version__</span></code></a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../../_sources/autoapi/lmflow/version/index.rst.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/blogs/benchmark.html b/blogs/benchmark.html new file mode 100644 index 000000000..70da69cd4 --- /dev/null +++ b/blogs/benchmark.html @@ -0,0 +1,1061 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>LMFlow Benchmark: An Automatic Evaluation Framework for Open-Source LLMs &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'blogs/benchmark';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Examples" href="../examples/index.html" /> + <link rel="prev" title="Blogs" href="index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">LMFlow Benchmark: An Automatic Evaluation Framework for Open-Source LLMs</a></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">Blogs</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">LMFlow Benchmark: An Automatic Evaluation Framework for Open-Source LLMs</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="lmflow-benchmark-an-automatic-evaluation-framework-for-open-source-llms"> +<h1>LMFlow Benchmark: An Automatic Evaluation Framework for Open-Source LLMs<a class="headerlink" href="#lmflow-benchmark-an-automatic-evaluation-framework-for-open-source-llms" title="Link to this heading">#</a></h1> +<p>May 9, 2023</p> +<section id="introduction"> +<h2>Introduction<a class="headerlink" href="#introduction" title="Link to this heading">#</a></h2> +<p>Evaluation of a chat-style Large Language Model (LLM) has been a huge challenge since the breakthrough of ChatGPT. On the one hand, researchers and engineers need a reliable way to compare two models and decide which model to choose under a certain application scenario. On the other hand, they have to monitor the model performance during the training of an LLM to avoid performance issues such as forgetting.</p> +<p>Recent work of Vicuna introduces comparison methods of human evaluation, a.k.a. Chatbot Arena. They also pioneered the evaluation method by invoking GPT-4 to compare the outputs of two models. However, those methods require expensive human labeling or GPT-4 API calls, which are neither scalable nor convenient for LLM development.</p> +<p>In this article, we introduce LMFlow benchmark, a new benchmark which provides a cheap and easy-to-use evaluation framework that can help reflect different aspects of LLMs. We have open-sourced the dataset and the code as well, so that everyone in the LLM community can use those toolkits to evaluate, monitor or compare different LLMs.</p> +</section> +<section id="metric"> +<h2>Metric<a class="headerlink" href="#metric" title="Link to this heading">#</a></h2> +<p>In our evaluation framework, Negative Log Likelihood (NLL) is used for evaluating LLM +<img alt="" src="../_images/nll.png" /></p> +<p>which corresponds to the LLM model’s prediction probability over a corpus set given their contexts. If the corpus set itself indicates a certain type of LLM ability, such as multi-round conversation, instruction following, math problem solving, role-playing, then NLL on those corpora can provide quantitative metrics to reflect those abilities.</p> +<p><img alt="" src="../_images/benchmark-1.png" /></p> +<p>The key idea behind NLL, is that</p> +<p><em>Generation ability is positively correlated with prediction ability.</em></p> +<p>For instance, an LLM which performs well in essay writing should have no problem understanding and predicting a reference human essay, just like human chess masters performing well at memorizing an endgame on a chessboard.</p> +<p>Besides NLL, another similar and commonly used metric in NLP is Perplexity (PPL):</p> +<p><img alt="" src="../_images/ppl.png" /></p> +<p>Nevertheless, perplexity intrinsically depends on the lengths of the tokenized sequences, which induces unfair comparison between models with different tokenizers. For example, if a model has a smaller vocabulary size, it inherently results in a longer tokenized sequence and a lower token-level perplexity. Thus in all our experiments, we use NLL instead of PPL.</p> +<p>One huge advantage of NLL evaluation is that it does not require human involvement during the evaluation process. As long as the test reference corpus is given, one can evaluate different aspects of an LLM’s ability automatically. This makes the evaluation of LLM more accessible to researchers.</p> +<p>Besides its convenience, NLL itself is also a good metric. In our experimental results in commonsense QA, we find that NLL is correlated with QA accuracy when comparing the different finetuned versions of a single model.</p> +<p><strong>Table 1: Accuracy results in traditional commonsense QA benchmarks</strong></p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head text-left"><p></p></th> +<th class="head text-center"><p>winogrande</p></th> +<th class="head text-center"><p>boolq</p></th> +<th class="head text-center"><p>arc_e</p></th> +<th class="head text-center"><p>hellaswag</p></th> +<th class="head text-center"><p>piqa</p></th> +<th class="head text-center"><p>obqa</p></th> +<th class="head text-center"><p>arc_c</p></th> +<th class="head text-center"><p>Average</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td class="text-left"><p>bloom-3b</p></td> +<td class="text-center"><p>58.7</p></td> +<td class="text-center"><p>61.6</p></td> +<td class="text-center"><p>59.5</p></td> +<td class="text-center"><p>52.7</p></td> +<td class="text-center"><p>70.8</p></td> +<td class="text-center"><p>42.2</p></td> +<td class="text-center"><p>30.6</p></td> +<td class="text-center"><p>53.7</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>bloom-7.1b</p></td> +<td class="text-center"><p>64.4</p></td> +<td class="text-center"><p>62.9</p></td> +<td class="text-center"><p>65.0</p></td> +<td class="text-center"><p>59.6</p></td> +<td class="text-center"><p>73.6</p></td> +<td class="text-center"><p>35.8</p></td> +<td class="text-center"><p>33.4</p></td> +<td class="text-center"><p>56.3</p></td> +</tr> +<tr class="row-even"><td class="text-left"><p>opt-6.9b</p></td> +<td class="text-center"><p>65.2</p></td> +<td class="text-center"><p>66.1</p></td> +<td class="text-center"><p>65.6</p></td> +<td class="text-center"><p>67.2</p></td> +<td class="text-center"><p>76.5</p></td> +<td class="text-center"><p>37.4</p></td> +<td class="text-center"><p>34.6</p></td> +<td class="text-center"><p>58.9</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>opt-13b</p></td> +<td class="text-center"><p>65.0</p></td> +<td class="text-center"><p>65.9</p></td> +<td class="text-center"><p>67.1</p></td> +<td class="text-center"><p>69.8</p></td> +<td class="text-center"><p>76.9</p></td> +<td class="text-center"><p>39.0</p></td> +<td class="text-center"><p>35.7</p></td> +<td class="text-center"><p>59.9</p></td> +</tr> +<tr class="row-even"><td class="text-left"><p>llama-7b</p></td> +<td class="text-center"><p>67.9</p></td> +<td class="text-center"><p>73.2</p></td> +<td class="text-center"><p>67.3</p></td> +<td class="text-center"><p>73.0</p></td> +<td class="text-center"><p>78.3</p></td> +<td class="text-center"><p>42.4</p></td> +<td class="text-center"><p>41.4</p></td> +<td class="text-center"><p>62.7</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>llama-13b</p></td> +<td class="text-center"><p><strong>70.0</strong></p></td> +<td class="text-center"><p><strong>68.5</strong></p></td> +<td class="text-center"><p><strong>74.5</strong></p></td> +<td class="text-center"><p><strong>76.2</strong></p></td> +<td class="text-center"><p><strong>79.1</strong></p></td> +<td class="text-center"><p><strong>42.2</strong></p></td> +<td class="text-center"><p><strong>44.5</strong></p></td> +<td class="text-center"><p><strong>65.0</strong></p></td> +</tr> +</tbody> +</table> +</div> +<p><strong>Table 2: NLL results in corpus of commonsense QA benchmarks</strong></p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head text-left"><p></p></th> +<th class="head text-center"><p>winogrande</p></th> +<th class="head text-center"><p>boolq</p></th> +<th class="head text-center"><p>arc_e</p></th> +<th class="head text-center"><p>hellaswag</p></th> +<th class="head text-center"><p>piqa</p></th> +<th class="head text-center"><p>obqa</p></th> +<th class="head text-center"><p>arc_c</p></th> +<th class="head text-center"><p>Average</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td class="text-left"><p>bloom-3b</p></td> +<td class="text-center"><p>86.5</p></td> +<td class="text-center"><p>228</p></td> +<td class="text-center"><p>86</p></td> +<td class="text-center"><p>245</p></td> +<td class="text-center"><p>134</p></td> +<td class="text-center"><p>64.5</p></td> +<td class="text-center"><p>101.5</p></td> +<td class="text-center"><p>135.1</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>bloom-7.1b</p></td> +<td class="text-center"><p>85</p></td> +<td class="text-center"><p>215</p></td> +<td class="text-center"><p>81.5</p></td> +<td class="text-center"><p>237</p></td> +<td class="text-center"><p>130</p></td> +<td class="text-center"><p>62.5</p></td> +<td class="text-center"><p>96</p></td> +<td class="text-center"><p>129.5</p></td> +</tr> +<tr class="row-even"><td class="text-left"><p>opt-6.9b</p></td> +<td class="text-center"><p>81.5</p></td> +<td class="text-center"><p>200</p></td> +<td class="text-center"><p>81.5</p></td> +<td class="text-center"><p>224</p></td> +<td class="text-center"><p>125</p></td> +<td class="text-center"><p>61</p></td> +<td class="text-center"><p>96</p></td> +<td class="text-center"><p>124.1</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>opt-13b</p></td> +<td class="text-center"><p>82</p></td> +<td class="text-center"><p>198</p></td> +<td class="text-center"><p>82.5</p></td> +<td class="text-center"><p>220</p></td> +<td class="text-center"><p>125</p></td> +<td class="text-center"><p>61.8</p></td> +<td class="text-center"><p>97</p></td> +<td class="text-center"><p>123.7</p></td> +</tr> +<tr class="row-even"><td class="text-left"><p>llama-7b</p></td> +<td class="text-center"><p>79.5</p></td> +<td class="text-center"><p>167</p></td> +<td class="text-center"><p>71.5</p></td> +<td class="text-center"><p>214</p></td> +<td class="text-center"><p>121</p></td> +<td class="text-center"><p>58</p></td> +<td class="text-center"><p>85</p></td> +<td class="text-center"><p>113.7</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>llama-13b</p></td> +<td class="text-center"><p><strong>79</strong></p></td> +<td class="text-center"><p><strong>153</strong></p></td> +<td class="text-center"><p><strong>70</strong></p></td> +<td class="text-center"><p><strong>207</strong></p></td> +<td class="text-center"><p><strong>119</strong></p></td> +<td class="text-center"><p><strong>57.3</strong></p></td> +<td class="text-center"><p><strong>83</strong></p></td> +<td class="text-center"><p><strong>109.7</strong></p></td> +</tr> +</tbody> +</table> +</div> +<p><strong>Figure 1: Correlation between NLL and accuracy on commonsense QA benchmarks</strong></p> +<p><img alt="" src="../_images/benchmark-2.png" /></p> +<p>In the above figure, one can find that QA accuracy is roughly correlated to NLL. Thus NLL is able to reflect the “magnitude” of prediction level difference between models. A huge gap in NLL normally entails a huge performance gap.</p> +<p>In the following sections, we provide a comprehensive evaluation of currently available LLM models and summarize their performance. Due to page limits, we only demonstrate partial evaluation results in this article. The full results can be found here <a class="reference external" href="https://docs.google.com/spreadsheets/d/1JYh4_pxNzmNA9I0YM2epgRA7VXBIeIGS64gPJBg5NHA/edit?usp=sharing">LLM Comparison Sheet 0501</a>. One can also evaluate their own LLM models using our LMFlow evaluation toolkit (<a class="reference external" href="https://optimalscale.github.io/LMFlow/examples/TASK_GUIDE.html">https://optimalscale.github.io/LMFlow/examples/TASK_GUIDE.html</a>).</p> +<p>We also introduce our own finetuned model Robin-7b-Chat and compare its performance with some other popular models. One may try our online demo LMFlow-Chat at <a class="reference external" href="https://lmflow.com/">https://lmflow.com/</a>.</p> +</section> +<section id="chat-performance"> +<h2>Chat Performance<a class="headerlink" href="#chat-performance" title="Link to this heading">#</a></h2> +<p>The first aspect of LLM is chat performance, especially multi-round chat. Based on our experimental results, we have the following observations:</p> +<ol class="arabic simple"> +<li><p><em>Without finetuning, foundation models do not perform well on chat.</em></p></li> +<li><p><em>After finetuning, foundation models can all obtain huge performance gain.</em></p></li> +<li><p><em>Our Robin-Chat-7b achieves comparable chat performance with Vicuna-13b.</em></p></li> +</ol> +<p><strong>Table 3: NLL on multi-round chat datasets, Lower the better</strong></p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head text-left"><p></p></th> +<th class="head text-center"><p>En_multi_round_chat</p></th> +<th class="head text-center"><p>En_singe_round_chat</p></th> +<th class="head text-center"><p>Average</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td class="text-left"><p>Bloom-7.1b</p></td> +<td class="text-center"><p>188</p></td> +<td class="text-center"><p>213</p></td> +<td class="text-center"><p>200.5</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>Bloom-7.1b-chat</p></td> +<td class="text-center"><p>164</p></td> +<td class="text-center"><p>181</p></td> +<td class="text-center"><p>172.5</p></td> +</tr> +<tr class="row-even"><td class="text-left"><p>Llama-7b</p></td> +<td class="text-center"><p>163</p></td> +<td class="text-center"><p>184</p></td> +<td class="text-center"><p>173.5</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>Vicuna-7b</p></td> +<td class="text-center"><p>155</p></td> +<td class="text-center"><p>175</p></td> +<td class="text-center"><p>165</p></td> +</tr> +<tr class="row-even"><td class="text-left"><p>Vicuna-13b</p></td> +<td class="text-center"><p>150</p></td> +<td class="text-center"><p>170</p></td> +<td class="text-center"><p>160</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>Robin-Chat-7b</p></td> +<td class="text-center"><p><strong>146</strong></p></td> +<td class="text-center"><p><strong>164</strong></p></td> +<td class="text-center"><p><strong>155</strong></p></td> +</tr> +</tbody> +</table> +</div> +<p>We also evaluate Vicuna-13b and our Robin-Chat-7b model qualitatively via use cases. It turns out that Robin-Chat-7b’s performance is comparable to Vicuna-13b. For example, both models can effortlessly refer to the conversation context with only slight mistakes, where Vicuna-13b sometimes doesn’t count the item correctly, while Robin-Chat-7b introduces only Mexican foods for international cuisine recommendations and omits other choices.</p> +<p><strong>Table 4: Use cases of multi-round chat</strong></p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head text-left"><p>Round</p></th> +<th class="head text-center"><p>Question</p></th> +<th class="head text-center"><p>Vicuna-13b</p></th> +<th class="head text-center"><p>Robin-Chat-7b</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td class="text-left"><p>R1</p></td> +<td class="text-center"><p>Where is the capital of USA?</p></td> +<td class="text-center"><p>The capital of the United States is <strong>Washington, D.C.</strong> (District of Columbia). It is located on the east coast of the country, in the northern part of the state of Maryland. Washington, D.C. is named after George Washington, the first president of the United States. It is a federal district, which means that it is not part of any state, but is instead directly administered by the federal government. The city is home to many national landmarks, including the White House, the Capitol Building, and the Supreme Court. It is also home to many museums, monuments, and other cultural institutions.</p></td> +<td class="text-center"><p>The capital of the United States is <strong>Washington, D.C.</strong> (District of Columbia). It is located on the east coast of the USA, between the states of Maryland and Virginia.</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>R2</p></td> +<td class="text-center"><p>Can you introduce some popular food there?</p></td> +<td class="text-center"><p><p>Washington, D.C. is a city with a diverse food scene, and there are many popular restaurants and cuisines to choose from. Some popular foods in Washington, D.C. include:</p><p>- American Classics: There are many restaurants in Washington, D.C. that serve classic American dishes such as hamburgers, hot dogs, and apple pie.</p><p>- Seafood: Washington, D.C. is located near the Chesapeake Bay, which is known for its fresh seafood. Many restaurants in the city serve dishes such as crab cakes, shrimp, and oysters.</p><p>- Ethnic Cuisine: Washington, D.C. has a diverse population, and there are many restaurants that serve food from different parts of the world. Some popular ethnic cuisines include Mexican, Chinese, Japanese, and Korean.</p><p>- Barbecue: Washington, D.C. is also known for its barbecue restaurants. Many of these restaurants serve pulled pork, ribs, and brisket.</p><p>- <strong>Donuts</strong>: Washington, D.C. is home to the famous “Donut Happy” which is a famous donut shop with a variety of flavors and toppings.</p><p>- Street Food: There are also many street food options in Washington, D.C. such as food trucks and stands that serve food such as falafel, kebabs, and tacos.</p><p>These are just a few examples of the many types of food that are available in Washington, D.C. There is something for everyone in this city when it comes to food.</p><p></p></p></td> +<td class="text-center"><p><p>Washington, D.C. is a diverse city with a wide range of cuisines to choose from. Here are some popular foods that you can try when you visit:</p><p>1. Soul food: This style of cuisine originated in the southern United States and is known for its bold flavors and hearty portions. Some popular soul food dishes in Washington, D.C. include fried chicken, collard greens, and macaroni and cheese.</p><p>2. Ethiopian cuisine: Ethiopian food is known for its spicy and flavorful dishes, and it is a popular choice in Washington, D.C. Some popular dishes include injera (a sourdough flatbread), wat (a spicy vegetable stew), and kitfo (a spicy meat dish).</p><p>3. Seafood: Washington, D.C. is located near the Chesapeake Bay and has easy access to fresh seafood. Some popular seafood dishes include crab cakes, oysters, and seafood pasta.</p><p>4. BBQ: Washington, D.C. has a thriving barbecue scene, with many restaurants serving up slow-cooked meats and sides. Some popular BBQ spots include Ben’s Chili Bowl, Pete’s Soul Vegetarian, and Smoke &amp; Barrel.</p><p>5. <strong>International cuisine:</strong> Washington, D.C. is a hub for international diplomacy, and as a result, it has a diverse culinary scene with many restaurants serving dishes from around the world. Some popular international cuisines include Japanese, Indian, and <strong>Mexican.</strong></p><p></p></p></td> +</tr> +<tr class="row-even"><td class="text-left"><p>R3</p></td> +<td class="text-center"><p>Can you be more specific about the <strong>fifth item</strong> above?</p></td> +<td class="text-center"><p><p>Sure, <strong>the fifth item I mentioned, “Barbecue,”</strong> refers to a style of cooking and food that originated in the southern United States. Barbecue is usually made with meat that is slow-cooked over an open flame or heated coals. The meat is often marinated and then sauced, and it is typically served with a variety of sides such as coleslaw, baked beans, and corn on the cob. Barbecue is a popular cuisine in Washington, D.C. and many of the restaurants serve pulled pork, ribs, and brisket. Some of the most popular barbecue restaurants in Washington, D.C. include:</p><p>- The Rib Pit</p><p>- The Smokehouse</p><p>- The BBQ Joint</p><p>- The Salt Line</p><p>- The Sovereign</p><p>These are just a few examples of the many barbecue restaurants in Washington, D.C. that offer delicious and flavorful barbecue dishes.</p></p></td> +<td class="text-center"><p><p>Sure! Here are some specific recommendations for <strong>Mexican food</strong> in Washington, D.C.:</p><p>1. Margarita’s - This popular Mexican restaurant in Adams Morgan has been serving up authentic Mexican cuisine for over 30 years. Some of their most popular dishes include their tacos al pastor (grilled marinated pork), enchiladas (meat or cheese filled tortillas), and chiles rellenos (stuffed peppers).</p><p>2. El Comal - This cozy little restaurant in the Columbia Heights neighborhood has been serving up traditional Mexican cuisine for over 20 years. Some of their most popular dishes include their mole (a rich, spicy sauce made from a blend of chiles, spices, and chocolate), tacos de carnitas (crispy pork tacos), and chiles rellenos de queso (cheese stuffed peppers).</p><p>3. Casa Oaxaca - This upscale Mexican restaurant in the Shaw neighborhood has a menu that features a wide range of traditional and modern dishes. Some of their most popular dishes include their ceviche (raw fish marinated in lime juice and spices), mole negro (a rich, dark mole sauce), and chiles en nogada (a spicy dish made with poblano peppers, walnuts, and honey).</p><p>4. Taco King - This popular taco chain has several locations in the Washington, D.C. area, including one in the Adams Morgan neighborhood. They offer a wide range of tacos, burritos, and other Mexican dishes at affordable prices. Some of their most popular items include their carne asada tacos, chicken tacos, and quesadillas.</p><p>5. Los Tacos No. 1 - This small, casual taco stand in the Columbia Heights neighborhood has a menu that features a wide range of tacos, burritos, and other Mexican dishes. Some of their most popular items include their adobada tacos (marinated pork tacos), al pastor tacos (grilled marinated pork tacos), and chicken tacos.</p></p></td> +</tr> +</tbody> +</table> +</div> +<p><strong>Experiment Details</strong></p> +<p>Our dataset comes from real conversation history between humans and ChatGPT. We collect 183 English conversations with a total of 447 rounds of chats, where the original conversation history is already multi-round. For single-round NLL evaluation, we break a multi-round conversation into multiple single-round text pairs. For example, with a conversation history</p> +<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>Q1, A1 + +Q2, A2 + +Q3, A3 +</pre></div> +</div> +<p>where Q stands for Question, A stands for answer, we can get three single-round examples:</p> +<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>Context: Q1 + +Output: A1 + +Context: Q1, A1, Q2 + +Output: A2 + +Context: Q1, A1, Q2, A2, Q3 + +Ouptut: A3 +</pre></div> +</div> +</section> +<section id="commonsense-performance"> +<h2>CommonSense Performance<a class="headerlink" href="#commonsense-performance" title="Link to this heading">#</a></h2> +<p>Another important aspect of an LLM model is its common sense ability, where a model should acquire a certain level of factual knowledge and utilize them properly under different scenarios. Regarding this aspect of the ability, we found:</p> +<ol class="arabic simple"> +<li><p><em>Finetuning on chat dataset results in commonsense degradation.</em></p></li> +<li><p><em>Our Robin-Chat-7b model still achieves a competitive performance.</em></p></li> +</ol> +<p><strong>Table 5: Accuracy results in commonsense QA benchmarks</strong></p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head text-left"><p></p></th> +<th class="head text-center"><p>winogrand</p></th> +<th class="head text-center"><p>boolq</p></th> +<th class="head text-center"><p>arc_easy</p></th> +<th class="head text-center"><p>hellaswag</p></th> +<th class="head text-center"><p>piqa</p></th> +<th class="head text-center"><p>obqa</p></th> +<th class="head text-center"><p>arc_c</p></th> +<th class="head text-center"><p>Average</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td class="text-left"><p>Bloom-7.1b</p></td> +<td class="text-center"><p>64.4</p></td> +<td class="text-center"><p>62.9</p></td> +<td class="text-center"><p>65.0</p></td> +<td class="text-center"><p>59.6</p></td> +<td class="text-center"><p>73.6</p></td> +<td class="text-center"><p>35.8</p></td> +<td class="text-center"><p>33.4</p></td> +<td class="text-center"><p>56.4</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>Bloom-7.1b-chat</p></td> +<td class="text-center"><p>60.3</p></td> +<td class="text-center"><p>56.8</p></td> +<td class="text-center"><p>61.3</p></td> +<td class="text-center"><p>58.7</p></td> +<td class="text-center"><p>72.7</p></td> +<td class="text-center"><p>37.8</p></td> +<td class="text-center"><p>38.7</p></td> +<td class="text-center"><p>55.2</p></td> +</tr> +<tr class="row-even"><td class="text-left"><p>Llama-7b</p></td> +<td class="text-center"><p>67.9</p></td> +<td class="text-center"><p>73.2</p></td> +<td class="text-center"><p>67.3</p></td> +<td class="text-center"><p>73.0</p></td> +<td class="text-center"><p>78.4</p></td> +<td class="text-center"><p>42.4</p></td> +<td class="text-center"><p>41.4</p></td> +<td class="text-center"><p>62.7</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>Vicuna-7b</p></td> +<td class="text-center"><p>63.7</p></td> +<td class="text-center"><p>77.4</p></td> +<td class="text-center"><p>63.1</p></td> +<td class="text-center"><p>68.8</p></td> +<td class="text-center"><p>76.3</p></td> +<td class="text-center"><p>39.6</p></td> +<td class="text-center"><p>38.7</p></td> +<td class="text-center"><p>61.1</p></td> +</tr> +<tr class="row-even"><td class="text-left"><p>Vicuna-13b</p></td> +<td class="text-center"><p>66.2</p></td> +<td class="text-center"><p>79.9</p></td> +<td class="text-center"><p>64.7</p></td> +<td class="text-center"><p>73.0</p></td> +<td class="text-center"><p>77.6</p></td> +<td class="text-center"><p>41.6</p></td> +<td class="text-center"><p>40.4</p></td> +<td class="text-center"><p>63.3</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>Robin-Chat-7b</p></td> +<td class="text-center"><p>64.7</p></td> +<td class="text-center"><p>75.2</p></td> +<td class="text-center"><p>69.8</p></td> +<td class="text-center"><p>72.4</p></td> +<td class="text-center"><p>76.6</p></td> +<td class="text-center"><p>39.0</p></td> +<td class="text-center"><p>42.9</p></td> +<td class="text-center"><p>62.9</p></td> +</tr> +</tbody> +</table> +</div> +<p><strong>Table 6: NLL results in corpus of commonsense QA benchmarks</strong></p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head text-left"><p></p></th> +<th class="head text-center"><p>winogrand</p></th> +<th class="head text-center"><p>boolq</p></th> +<th class="head text-center"><p>arc_easy</p></th> +<th class="head text-center"><p>hellaswag</p></th> +<th class="head text-center"><p>piqa</p></th> +<th class="head text-center"><p>obqa</p></th> +<th class="head text-center"><p>arc_c</p></th> +<th class="head text-center"><p>Average</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td class="text-left"><p>Bloom-7.1b</p></td> +<td class="text-center"><p>96.0</p></td> +<td class="text-center"><p>254</p></td> +<td class="text-center"><p>89</p></td> +<td class="text-center"><p>266</p></td> +<td class="text-center"><p>147</p></td> +<td class="text-center"><p>69</p></td> +<td class="text-center"><p>106.5</p></td> +<td class="text-center"><p>146.7</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>Bloom-7.1b-chat</p></td> +<td class="text-center"><p>85.0</p></td> +<td class="text-center"><p>215</p></td> +<td class="text-center"><p>81.5</p></td> +<td class="text-center"><p>237</p></td> +<td class="text-center"><p>130</p></td> +<td class="text-center"><p>62.5</p></td> +<td class="text-center"><p>96</p></td> +<td class="text-center"><p>129.5</p></td> +</tr> +<tr class="row-even"><td class="text-left"><p>Llama-7b</p></td> +<td class="text-center"><p>79.5</p></td> +<td class="text-center"><p>167</p></td> +<td class="text-center"><p>71.5</p></td> +<td class="text-center"><p>214</p></td> +<td class="text-center"><p>121</p></td> +<td class="text-center"><p>58</p></td> +<td class="text-center"><p>85</p></td> +<td class="text-center"><p>113.7</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>Vicuna-7b</p></td> +<td class="text-center"><p>97.0</p></td> +<td class="text-center"><p>219</p></td> +<td class="text-center"><p>89</p></td> +<td class="text-center"><p>258</p></td> +<td class="text-center"><p>151</p></td> +<td class="text-center"><p>72</p></td> +<td class="text-center"><p>105</p></td> +<td class="text-center"><p>141.6</p></td> +</tr> +<tr class="row-even"><td class="text-left"><p>Vicuna-13b</p></td> +<td class="text-center"><p>95.5</p></td> +<td class="text-center"><p>207</p></td> +<td class="text-center"><p>88.5</p></td> +<td class="text-center"><p>262</p></td> +<td class="text-center"><p>149</p></td> +<td class="text-center"><p>73</p></td> +<td class="text-center"><p>105</p></td> +<td class="text-center"><p>140.0</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>Robin-Chat-7b</p></td> +<td class="text-center"><p>89.0</p></td> +<td class="text-center"><p>200</p></td> +<td class="text-center"><p>81</p></td> +<td class="text-center"><p>240</p></td> +<td class="text-center"><p>139</p></td> +<td class="text-center"><p>65.5</p></td> +<td class="text-center"><p>96.5</p></td> +<td class="text-center"><p>130.1</p></td> +</tr> +</tbody> +</table> +</div> +<p>It is surprising to find that finetuning actually leads to commonsense degradation. A more well-known consequence of this issue is hallucination, where models tend to give plausible but factually incorrect or irrelevant answers. One explanation of this phenomenon is that LLMs “forget” the pretrained knowledge during finetuning when attempting to fit the finetune dataset.</p> +<p>As one can see from the table above, both Vicuna and Robin suffer from this commonsense degradation issue. However, Robin suffers less. We conjecture that this improvement is brought by finetuning with smaller-sized but higher-quality dataset. Vicuna uses sharegpt data with ~900MB size and was finetuned for 3 epochs, while Robin uses multiple sources of dataset with ~600MB size and was only finetuned for 2 epochs. This suggests that in the finetuning stage, data quality plays a critical role.</p> +<p>This improvement gives Vicuna-13b a run for its money when competing with Robin. The following examples show that Robin-Chat-7b possesses a comparable level of commonsense when compared with Vicuna-13b.</p> +<p><strong>Table 7: Use cases of commonsense QA</strong></p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head text-left"><p>Question</p></th> +<th class="head text-center"><p>Vicuna-13b</p></th> +<th class="head text-center"><p>Robin-Chat-7b</p></th> +<th class="head text-center"><p>Note</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td class="text-left"><p><p>I go to a friend’s home but the door is locked. However, I smell coal gas. Should I break the window?</p><p></p></p></td> +<td class="text-center"><p>If you smell coal gas, it is important to get out of the house as quickly as possible and call the fire department or the gas company. Coal gas is a flammable gas that can be dangerous and even deadly if it is not properly ventilated. If the door is locked, you <strong>should not break the window because it could cause a fire or explosion</strong>. Instead, try to find another way to escape the house or call for help. If you cannot leave the house safely, try to stay calm and wait for help to arrive.</p></td> +<td class="text-center"><p>No, it is not recommended to break a window in this situation. <strong>Breaking a window can be dangerous and can cause injury or damage to yourself or others</strong>. Additionally, it is <strong>illegal</strong> to break a window to enter a property without permission. Instead, you should try to find another way to enter the home, such as by using a key or by calling the homeowner or a locksmith for assistance. If you are unable to enter the home, you should call the emergency services or the police for assistance. In the meantime, it is important to <strong>avoid using any sources of heat</strong>, such as a lighter or matches, as these can cause a gas leak or explosion. If you smell gas, you should evacuate the area immediately and call the emergency services or the gas company for assistance.</p></td> +<td class="text-center"><p><em>Breaking the window helps the ventilation and will not cause a gas explosion directly. However, it is indeed illegal and may injure yourself when breaking the window.</em></p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>Can I bring my pet ferret to that beautiful pacific island of USA to attend ICML 2023?</p></td> +<td class="text-center"><p>I’m sorry, but I am <strong>not aware of</strong> the specific policies regarding pets at the ICML 2023 conference or the island you are referring to. It would be best to check with the conference organizers or the local authorities on the island to determine if ferrets are allowed and if there are any necessary procedures or requirements for bringing a pet to the conference.</p></td> +<td class="text-center"><p><p>It is <strong>not recommended</strong> to bring a pet ferret to the United States, including to attend ICML 2023. Ferrets are not permitted as pets in many areas of the United States, and <strong>it is illegal</strong> to bring them into the country without proper documentation and licensing. Additionally, ferrets can <strong>carry diseases</strong> that are not common in humans but can be dangerous to people, such as toxoplasmosis and salmonellosis. It is important to prioritize the health and safety of yourself and others by not bringing a pet ferret to a crowded event like ICML 2023.</p><p></p></p></td> +<td class="text-center"><p><em>ICML 2023 will be held in Hawaii, where ferrets are strictly prohibited as pets because they are potential carriers of the rabies virus.</em></p></td> +</tr> +</tbody> +</table> +</div> +<p><strong>Experiment Details</strong></p> +<p>Here, we make use of Eleuther AI’s LM evaluation harness repository (<a class="github reference external" href="https://github.com/EleutherAI/lm-evaluation-harness">EleutherAI/lm-evaluation-harness</a>) to get QA accuracy results. We also evaluate all models’ NLL metrics on their datasets, with their questions as contexts and answers as output sentences.</p> +</section> +<section id="instruction-following"> +<h2>Instruction Following<a class="headerlink" href="#instruction-following" title="Link to this heading">#</a></h2> +<p>The final aspect we evaluate is instruction following, where a model is expected to loyally obey the user’s instructions, given the instruction being ethically or legally appropriate. It turns out that,</p> +<ol class="arabic simple"> +<li><p><em>Without finetuning, foundation models do not perform well on instruction following.</em></p></li> +<li><p><em>Finetuning on chat dataset helps improve the performance.</em></p></li> +<li><p><em>Our Robin-Chat is still comparable with Vicuna-13b.</em></p></li> +</ol> +<p><strong>Table 8: NLL on instruction following chat datasets</strong></p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head text-left"><p></p></th> +<th class="head text-center"><p>gpt4_en_instruction</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td class="text-left"><p>Alpaca</p></td> +<td class="text-center"><p>222</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>Llama-7b</p></td> +<td class="text-center"><p>214</p></td> +</tr> +<tr class="row-even"><td class="text-left"><p>Vicuna-7b</p></td> +<td class="text-center"><p>211</p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>Vicuna-13b</p></td> +<td class="text-center"><p>206</p></td> +</tr> +<tr class="row-even"><td class="text-left"><p>Robin-Chat-7b</p></td> +<td class="text-center"><p><strong>180</strong></p></td> +</tr> +</tbody> +</table> +</div> +<p>Following examples show that Robin-Chat-7b can generate similar responses on instruction following tasks when compared with Vicuna-13b.</p> +<p><strong>Table 9: Uses cases of instruction following</strong></p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head text-left"><p>Question</p></th> +<th class="head text-center"><p>Vicuna-13b</p></th> +<th class="head text-center"><p>Robin-Chat-7b</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td class="text-left"><p>Can you write quicksort?</p></td> +<td class="text-center"><p><p>Yes, here is a simple implementation of the quicksort algorithm in Python:</p><p>def quicksort(arr):</p><p><code class="docutils literal notranslate">&#160;&#160;&#160; </code>if len(arr) &lt;= 1:</p><p><code class="docutils literal notranslate">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </code>return arr</p><p><code class="docutils literal notranslate">&#160;&#160;&#160; </code>pivot = arr[len(arr) // 2]</p><p><code class="docutils literal notranslate">&#160;&#160;&#160; </code>left = [x for x in arr if x &lt; pivot]</p><p><code class="docutils literal notranslate">&#160;&#160;&#160; </code>middle = [x for x in arr if x == pivot]</p><p><code class="docutils literal notranslate">&#160;&#160;&#160; </code>right = [x for x in arr if x &gt; pivot]</p><p><code class="docutils literal notranslate">&#160;&#160;&#160; </code>return quicksort(left) + middle + quicksort(right)</p><p></p><p>This implementation uses the middle element of the array as the pivot, and then partitions the array into three sub-arrays: one containing all elements that are less than the pivot, one containing all elements that are equal to the pivot, and one containing all elements that are greater than the pivot. It then recursively applies the quicksort algorithm to the left and right sub-arrays, and returns the concatenation of the sorted left sub-array, the unsorted middle sub-array, and the sorted right sub-array.</p><p>This implementation has a time complexity of O(n log n) due to the recursive calls, although it could potentially be faster in practice if the pivot is carefully chosen.</p><p></p></p></td> +<td class="text-center"><p><p>Sure, here is a simple implementation of the quicksort algorithm in Python:</p><p>def quicksort(arr):</p><p><code class="docutils literal notranslate">&#160;&#160;&#160; </code>if len(arr) &lt;= 1:</p><p><code class="docutils literal notranslate">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </code>return arr</p><p><code class="docutils literal notranslate">&#160;&#160;&#160; </code>pivot = arr[len(arr) // 2]</p><p><code class="docutils literal notranslate">&#160;&#160;&#160; </code>left = [x for x in arr if x &lt; pivot]</p><p><code class="docutils literal notranslate">&#160;&#160;&#160; </code>middle = [x for x in arr if x == pivot]</p><p><code class="docutils literal notranslate">&#160;&#160;&#160; </code>right = [x for x in arr if x &gt; pivot]</p><p><code class="docutils literal notranslate">&#160;&#160;&#160; </code>return quicksort(left) + middle + quicksort(right)</p><p></p><p>This implementation chooses the middle element of the array as the pivot, and then partitions the array into three parts: elements less than the pivot, elements equal to the pivot, and elements greater than the pivot. It then recursively applies the quicksort algorithm to the left and right subarrays, and concatenates the results with the middle subarray to produce the final sorted array.</p><p>Note that this implementation uses a single pass through the array, which is the most efficient way to sort an array using quicksort.</p></p></td> +</tr> +<tr class="row-odd"><td class="text-left"><p>Instruction: Find synonyms for the given word. You need to write down how the provided synonyms differ from the original word in terms of meaning, usage, etc. adversity</p></td> +<td class="text-center"><p><p>Synonyms for “adversity” include:</p><p>- Difficulty</p><p>- Hardship</p><p>- Trouble</p><p>- Misfortune</p><p>- Adversity</p><p>- Difficulties</p><p>- Hard times</p><p>All of these words refer to challenging or unpleasant circumstances or situations. However, “adversity” specifically connotes a difficult or hostile situation that is caused by external factors, such as an enemy or a natural disaster. “Difficulty” and “hardship” can be caused by external or internal factors, and can refer to a wide range of challenges, from mild inconveniences to major setbacks. “Trouble” often connotes a specific type of difficulty or distress, such as financial trouble or legal trouble. “Misfortune” specifically refers to bad luck or ill fate, while “hard times” refers to a general period of economic or social distress.</p></p></td> +<td class="text-center"><p><p>1. Hardship</p><p>2. Struggle</p><p>3. Difficulty</p><p>4. Oppression</p><p>5. Trial</p><p>6. Affliction</p><p>7. Distress</p><p>8. Calamity</p><p>9. Tribulation</p><p>10. Hardship</p><p>Adversity refers to difficult or challenging circumstances or conditions. Hardship, struggle, difficulty, oppression, trial, affliction, distress, and calamity are all words that can be used to describe adversity, but they often imply a more specific or intense situation. For example, hardship can refer to a general difficulty or challenge, while struggle implies a more intense battle or conflict. Difficulty and oppression imply a more specific obstacle or injustice, while trial and affliction suggest a more specific test or suffering. Trial can also refer to a legal proceeding, while tribulation implies a more general time of suffering or persecution.</p></p></td> +</tr> +</tbody> +</table> +</div> +<p><strong>Experiment Details</strong></p> +<p>In order to make evaluations for models’ instruction following ability, we collected GPT-4 instruction data from the project “Instruction Tuning with GPT-4”, which provides many instruction tuning data labeled by GPT-4. We sample 1,000 English data and manually filtered examples with the following issues, where 767 effective samples remain after the filtering:</p> +<ol class="arabic simple"> +<li><p>Long response with too many nonsense words</p></li> +<li><p>Incomplete input texts</p></li> +<li><p>Specific domains involving chemistry/biology, where most LLM models do not possess the knowledge and always fail</p></li> +</ol> +</section> +<section id="conclusion"> +<h2>Conclusion<a class="headerlink" href="#conclusion" title="Link to this heading">#</a></h2> +<p>In this article, we introduce LMFlow’s evaluation framework, which uses NLL metric to reflect LLM models’ ability. NLL provides a good metric to evaluate different aspects of a LLM model. According to our evaluation results, Robin-7b achieves on-par performance when compared with Vicuna-13b. As our Robin-7b model is finetuned with different sources of dataset instead of sharegpt only, this shows that Vicuna can be further improved or surpassed with smaller-sized models and better dataset.</p> +<p>The checkpoint of Robin-7b is now available for engineers and researchers to download and use (<a class="github reference external" href="https://github.com/OptimalScale/LMFlow#model-zoo">OptimalScale/LMFlow</a>). Its effectiveness demonstrates that a multi-aspect evaluation is indeed essential to the development of LLMs.</p> +</section> +<section id="references"> +<h2>References<a class="headerlink" href="#references" title="Link to this heading">#</a></h2> +<p>Vicuna Chatbot Arena: <a class="reference external" href="https://chat.lmsys.org/?arena">https://chat.lmsys.org/?arena</a></p> +<p>lm-evaluation-harness: <a class="github reference external" href="https://github.com/EleutherAI/lm-evaluation-harness">EleutherAI/lm-evaluation-harness</a></p> +<p>LMFlow: <a class="github reference external" href="https://github.com/OptimalScale/LMFlow">OptimalScale/LMFlow</a></p> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">Blogs</p> + </div> + </a> + <a class="right-next" + href="../examples/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">Examples</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#introduction">Introduction</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#metric">Metric</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#chat-performance">Chat Performance</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#commonsense-performance">CommonSense Performance</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#instruction-following">Instruction Following</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#conclusion">Conclusion</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#references">References</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/blogs/benchmark.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/blogs/index.html b/blogs/index.html new file mode 100644 index 000000000..2224f2fcc --- /dev/null +++ b/blogs/index.html @@ -0,0 +1,507 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Blogs &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'blogs/index';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="LMFlow Benchmark: An Automatic Evaluation Framework for Open-Source LLMs" href="benchmark.html" /> + <link rel="prev" title="LMFlow" href="../index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="#"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="#"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="benchmark.html">LMFlow Benchmark: An Automatic Evaluation Framework for Open-Source LLMs</a></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Blogs</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="blogs"> +<h1>Blogs<a class="headerlink" href="#blogs" title="Link to this heading">#</a></h1> +<section id="id1"> +<h2>2023<a class="headerlink" href="#id1" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="benchmark.html">LMFlow Benchmark: An Automatic Evaluation Framework for Open-Source LLMs</a></li> +</ul> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">LMFlow</p> + </div> + </a> + <a class="right-next" + href="benchmark.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">LMFlow Benchmark: An Automatic Evaluation Framework for Open-Source LLMs</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#id1">2023</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/blogs/index.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/examples/DATASETS.html b/examples/DATASETS.html new file mode 100644 index 000000000..fc76c41b5 --- /dev/null +++ b/examples/DATASETS.html @@ -0,0 +1,972 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Dataset &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'examples/DATASETS';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Checkpoints" href="checkpoints.html" /> + <link rel="prev" title="Examples" href="index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">Dataset</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="checkpoints.html">Checkpoints</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="finetuning.html">Finetuning</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="reward_modeling.html">Reward Modeling</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="raft.html">RAFT</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="TASK_GUIDE.html">LMFlow Benchmark Guide</a></li> + + +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">Examples</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Dataset</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="dataset"> +<h1>Dataset<a class="headerlink" href="#dataset" title="Link to this heading">#</a></h1> +<ul class="simple"> +<li><p><a class="reference internal" href="../autoapi/lmflow/datasets/dataset/index.html#module-lmflow.datasets.dataset" title="lmflow.datasets.dataset"><span class="xref myst py py-mod">Dataset</span></a></p> +<ul> +<li><p><a class="reference internal" href="#dataset-format-in-general"><span class="xref myst">Dataset Format in General</span></a></p></li> +<li><p><a class="reference internal" href="#supported-dataset-and-detailed-formats"><span class="xref myst">Supported Dataset and Detailed Formats</span></a></p> +<ul> +<li><p><a class="reference internal" href="#conversation"><span class="xref myst">Conversation</span></a></p> +<ul> +<li><p><a class="reference internal" href="#data-format"><span class="xref myst">Data Format</span></a></p></li> +<li><p><a class="reference internal" href="#conversation-template"><span class="xref myst">Conversation Template</span></a></p></li> +<li><p><a class="reference internal" href="#customize-conversation-template"><span class="xref myst">Customize Conversation Template</span></a></p></li> +</ul> +</li> +<li><p><a class="reference internal" href="#textonly"><span class="xref myst">TextOnly</span></a></p></li> +<li><p><a class="reference internal" href="#text2text"><span class="xref myst">Text2Text</span></a></p></li> +<li><p><a class="reference internal" href="#paired-conversation"><span class="xref myst">Paired Conversation</span></a></p></li> +</ul> +</li> +</ul> +</li> +</ul> +<p>We provide several available datasets under <code class="docutils literal notranslate"><span class="pre">data</span></code>. You may download them all by running:</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span><span class="w"> </span>data<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>./download.sh<span class="w"> </span>all<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nb">cd</span><span class="w"> </span>- +</pre></div> +</div> +<p>You can replace <code class="docutils literal notranslate"><span class="pre">all</span></code> with a specific dataset name to only download that dataset (e.g. <code class="docutils literal notranslate"><span class="pre">./download.sh</span> <span class="pre">alpaca</span></code>).</p> +<p>Customized datasets are strongly encouraged, since this way users can apply +their own prompt engineering techniques over various source datasets. As long +as the generated dataset following the format below, they can be accepted as +the input of our pipelines :hugs:</p> +<section id="dataset-format-in-general"> +<h2>Dataset Format in General<a class="headerlink" href="#dataset-format-in-general" title="Link to this heading">#</a></h2> +<p>To specify the input for model finetune, users can provide a list of <code class="docutils literal notranslate"><span class="pre">.json</span></code> +files under a specified dataset directory. For example,</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="p">|</span>-<span class="w"> </span>path_to_dataset +<span class="w"> </span><span class="p">|</span>-<span class="w"> </span>data_1.json +<span class="w"> </span><span class="p">|</span>-<span class="w"> </span>data_2.json +<span class="w"> </span><span class="p">|</span>-<span class="w"> </span>another_data.json +<span class="w"> </span><span class="p">|</span>-<span class="w"> </span>... +</pre></div> +</div> +<p>For inference, we currently only support a single <code class="docutils literal notranslate"><span class="pre">.json</span></code> file.</p> +<p>Each json file shall have the following format (three instances with four keys +for example),</p> +<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;TYPE&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;instances&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;KEY_1&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;VALUE_1.1&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;KEY_2&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;VALUE_1.2&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;KEY_3&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;VALUE_1.3&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;KEY_4&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;VALUE_1.4&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;KEY_1&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;VALUE_2.1&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;KEY_2&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;VALUE_2.2&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;KEY_3&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;VALUE_2.3&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;KEY_4&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;VALUE_2.4&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;KEY_1&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;VALUE_3.1&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;KEY_2&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;VALUE_3.2&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;KEY_3&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;VALUE_3.3&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;KEY_4&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;VALUE_3.4&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">]</span> +<span class="p">}</span> +</pre></div> +</div> +<p>where the <code class="docutils literal notranslate"><span class="pre">TYPE</span></code> indicates the dataset type and defines the set of keys +<code class="docutils literal notranslate"><span class="pre">{</span> <span class="pre">KEY_1,</span> <span class="pre">KEY_2,</span> <span class="pre">...</span> <span class="pre">}</span></code> and their corresponding interpretations. The list of +supported types are listed as follows.</p> +</section> +<section id="supported-dataset-and-detailed-formats"> +<h2>Supported Dataset and Detailed Formats<a class="headerlink" href="#supported-dataset-and-detailed-formats" title="Link to this heading">#</a></h2> +<section id="conversation"> +<h3>Conversation<a class="headerlink" href="#conversation" title="Link to this heading">#</a></h3> +<section id="data-format"> +<h4>Data Format<a class="headerlink" href="#data-format" title="Link to this heading">#</a></h4> +<p>Conversational data are commonly used in sft process. We currently support conversational data in ShareGPT format:</p> +<details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3"> +<summary class="sd-summary-title sd-card-header"> +<span class="sd-summary-text">A conversation dataset</span><span class="sd-summary-state-marker sd-summary-chevron-right"><svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-right" viewBox="0 0 24 24" aria-hidden="true"><path d="M8.72 18.78a.75.75 0 0 1 0-1.06L14.44 12 8.72 6.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0Z"></path></svg></span></summary><div class="sd-summary-content sd-card-body docutils"> +<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;conversation&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;instances&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;conversation_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;CONVERSATION_ID&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;system&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SYSTEM_PROPMT&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;tools&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;TOOL_DESCRIPTION_1&quot;</span><span class="p">,</span><span class="s2">&quot;TOOL_DESCRIPTION_2&quot;</span><span class="p">,</span><span class="s2">&quot;TOOL_DESCRIPTION_X&quot;</span><span class="p">],</span> +<span class="w"> </span><span class="nt">&quot;messages&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;USER_INPUT_1&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ASSISTANT_RESPONSE_1&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;USER_INPUT_2&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ASSISTANT_RESPONSE_2&quot;</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="p">]</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;conversation_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;CONVERSATION_ID&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;system&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SYSTEM_PROPMT&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;tools&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;TOOL_DESCRIPTION_1&quot;</span><span class="p">],</span> +<span class="w"> </span><span class="nt">&quot;messages&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;USER_INPUT_1&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ASSISTANT_RESPONSE_1&quot;</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="p">]</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="p">]</span> +<span class="p">}</span> +</pre></div> +</div> +</div> +</details><p>Data types:</p> +<ul class="simple"> +<li><p><code class="docutils literal notranslate"><span class="pre">conversation_id</span></code>: <code class="docutils literal notranslate"><span class="pre">Optional[Any]</span></code>. An identifier for the conversation. <code class="docutils literal notranslate"><span class="pre">conversation_id</span></code> is only for convience of tracking the conversation and will not be used in the pipeline.</p></li> +<li><p><code class="docutils literal notranslate"><span class="pre">system</span></code>: <code class="docutils literal notranslate"><span class="pre">Optional[string]</span></code>. A system prompt that is used to start the conversation.</p></li> +<li><p><code class="docutils literal notranslate"><span class="pre">tools</span></code>: <code class="docutils literal notranslate"><span class="pre">Optional[List[string]]</span></code>. A list of tools that are used in the conversation.</p></li> +<li><p><code class="docutils literal notranslate"><span class="pre">messages</span></code>: <code class="docutils literal notranslate"><span class="pre">List[Dict]</span></code>. A list of messages in the conversation. Each message contains the following fields:</p> +<ul> +<li><p><code class="docutils literal notranslate"><span class="pre">role</span></code>: <code class="docutils literal notranslate"><span class="pre">string</span></code>. The role of the message. It can be either <code class="docutils literal notranslate"><span class="pre">user</span></code> or <code class="docutils literal notranslate"><span class="pre">assistant</span></code>.</p></li> +<li><p><code class="docutils literal notranslate"><span class="pre">content</span></code>: <code class="docutils literal notranslate"><span class="pre">string</span></code>. The content of the message.</p></li> +</ul> +</li> +</ul> +<blockquote> +<div><p>We are working on supporting customized message keys and role names. Please stay tuned.</p> +</div></blockquote> +<p>Tips:</p> +<ul class="simple"> +<li><p>Please make sure the messages are:</p> +<ol class="arabic simple"> +<li><p>Start with an user message.</p></li> +<li><p>In the correct order. The pipeline will not check the order of the messages.</p></li> +<li><p>In pairs of user and assistant (i.e., the length of the messages should be even). If the conversation ends with the user, the pipeline will trim the last user message.</p></li> +<li><p>Make sure the <code class="docutils literal notranslate"><span class="pre">content</span></code>s are not empty. If the <code class="docutils literal notranslate"><span class="pre">content</span></code> is empty, the pipeline will add a space to it.</p></li> +</ol> +</li> +</ul> +</section> +<section id="conversation-template"> +<h4>Conversation Template<a class="headerlink" href="#conversation-template" title="Link to this heading">#</a></h4> +<p>Conversations should be formatted before feeding into the model. As of now, we’ve preset the conversation template for following models:</p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head"><p>Template Name</p></th> +<th class="head"><p>Filled Example</p></th> +<th class="head"><p>Detailed Template</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">chatglm3</span></code></p></td> +<td><p><code class="docutils literal notranslate"><span class="pre">[gMASK]sop&lt;|system|&gt;</span></code><br><code class="docutils literal notranslate"> <span class="pre">You</span> <span class="pre">are</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|user|&gt;</span></code><br><code class="docutils literal notranslate"> <span class="pre">Who</span> <span class="pre">are</span> <span class="pre">you?&lt;|assistant|&gt;</span></code><br><code class="docutils literal notranslate"> <span class="pre">I</span> <span class="pre">am</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|user|&gt;</span></code><br><code class="docutils literal notranslate"> <span class="pre">How</span> <span class="pre">old</span> <span class="pre">are</span> <span class="pre">you?&lt;|assistant|&gt;</span></code><br><code class="docutils literal notranslate"> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">age</span> <span class="pre">like</span> <span class="pre">humans</span> <span class="pre">do.</span> <span class="pre">I</span> <span class="pre">exist</span> <span class="pre">as</span> <span class="pre">a</span> <span class="pre">piece</span> <span class="pre">of</span> <span class="pre">software,</span> <span class="pre">so</span> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">concept</span> <span class="pre">of</span> <span class="pre">age</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">traditional</span> <span class="pre">sense.</span></code></p></td> +<td><p><a class="reference internal" href="supported_conversation_template.html#chatglm3"><span class="std std-ref">Link</span></a></p></td> +</tr> +<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">chatml</span></code></p></td> +<td><p><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;system</span></code><br><code class="docutils literal notranslate"><span class="pre">You</span> <span class="pre">are</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;user</span></code><br><code class="docutils literal notranslate"><span class="pre">Who</span> <span class="pre">are</span> <span class="pre">you?&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;assistant</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">am</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;user</span></code><br><code class="docutils literal notranslate"><span class="pre">How</span> <span class="pre">old</span> <span class="pre">are</span> <span class="pre">you?&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;assistant</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">don't</span> <span class="pre">age</span> <span class="pre">like</span> <span class="pre">humans</span> <span class="pre">do.</span> <span class="pre">I</span> <span class="pre">exist</span> <span class="pre">as</span> <span class="pre">a</span> <span class="pre">piece</span> <span class="pre">of</span> <span class="pre">software,</span> <span class="pre">so</span> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">concept</span> <span class="pre">of</span> <span class="pre">age</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">traditional</span> <span class="pre">sense.&lt;|im_end|&gt;</span></code><br></p></td> +<td><p><a class="reference internal" href="supported_conversation_template.html#chatml"><span class="std std-ref">Link</span></a></p></td> +</tr> +<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">deepseek</span></code></p></td> +<td><p><code class="docutils literal notranslate"><span class="pre">&lt;|begin▁of▁sentence|&gt;You</span> <span class="pre">are</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.</span></code><br><br><code class="docutils literal notranslate"><span class="pre">User:</span> <span class="pre">Who</span> <span class="pre">are</span> <span class="pre">you?</span></code><br><br><code class="docutils literal notranslate"><span class="pre">Assistant:</span> <span class="pre">I</span> <span class="pre">am</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|end▁of▁sentence|&gt;User:</span> <span class="pre">How</span> <span class="pre">old</span> <span class="pre">are</span> <span class="pre">you?</span></code><br><br><code class="docutils literal notranslate"><span class="pre">Assistant:</span> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">age</span> <span class="pre">like</span> <span class="pre">humans</span> <span class="pre">do.</span> <span class="pre">I</span> <span class="pre">exist</span> <span class="pre">as</span> <span class="pre">a</span> <span class="pre">piece</span> <span class="pre">of</span> <span class="pre">software,</span> <span class="pre">so</span> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">concept</span> <span class="pre">of</span> <span class="pre">age</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">traditional</span> <span class="pre">sense.&lt;|end▁of▁sentence|&gt;</span></code></p></td> +<td><p><a class="reference internal" href="supported_conversation_template.html#deepseek"><span class="std std-ref">Link</span></a></p></td> +</tr> +<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">gemma</span></code></p></td> +<td><p><code class="docutils literal notranslate"><span class="pre">&lt;bos&gt;You</span> <span class="pre">are</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;start_of_turn&gt;user</span></code><br><code class="docutils literal notranslate"><span class="pre">Who</span> <span class="pre">are</span> <span class="pre">you?&lt;end_of_turn&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;start_of_turn&gt;model</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">am</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;end_of_turn&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;start_of_turn&gt;user</span></code><br><code class="docutils literal notranslate"><span class="pre">How</span> <span class="pre">old</span> <span class="pre">are</span> <span class="pre">you?&lt;end_of_turn&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;start_of_turn&gt;model</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">don't</span> <span class="pre">age</span> <span class="pre">like</span> <span class="pre">humans</span> <span class="pre">do.</span> <span class="pre">I</span> <span class="pre">exist</span> <span class="pre">as</span> <span class="pre">a</span> <span class="pre">piece</span> <span class="pre">of</span> <span class="pre">software,</span> <span class="pre">so</span> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">concept</span> <span class="pre">of</span> <span class="pre">age</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">traditional</span> <span class="pre">sense.&lt;end_of_turn&gt;</span></code><br></p></td> +<td><p><a class="reference internal" href="supported_conversation_template.html#gemma"><span class="std std-ref">Link</span></a></p></td> +</tr> +<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">hymba</span></code></p></td> +<td><p><code class="docutils literal notranslate"><span class="pre">&lt;extra_id_0&gt;System</span></code><br><code class="docutils literal notranslate"><span class="pre">You</span> <span class="pre">are</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;tool&gt;</span> <span class="pre">{&quot;name&quot;:</span> <span class="pre">&quot;generate_qrcode&quot;,</span> <span class="pre">&quot;description&quot;:</span> <span class="pre">&quot;Generate</span> <span class="pre">a</span> <span class="pre">QR</span> <span class="pre">code</span> <span class="pre">for</span> <span class="pre">a</span> <span class="pre">given</span> <span class="pre">text&quot;,</span> <span class="pre">&quot;parameters&quot;:</span> <span class="pre">{&quot;type&quot;:</span> <span class="pre">&quot;object&quot;,</span> <span class="pre">&quot;properties&quot;:</span> <span class="pre">{&quot;text&quot;:</span> <span class="pre">{&quot;type&quot;:</span> <span class="pre">&quot;string&quot;,</span> <span class="pre">&quot;description&quot;:</span> <span class="pre">&quot;The</span> <span class="pre">text</span> <span class="pre">to</span> <span class="pre">encode</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">QR</span> <span class="pre">code&quot;}},</span> <span class="pre">&quot;required&quot;:</span> <span class="pre">[&quot;text&quot;]}}</span> <span class="pre">&lt;/tool&gt;</span></code><br><br><code class="docutils literal notranslate"><span class="pre">&lt;extra_id_1&gt;User</span></code><br><code class="docutils literal notranslate"><span class="pre">Who</span> <span class="pre">are</span> <span class="pre">you?</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;extra_id_1&gt;Assistant</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">am</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;extra_id_1&gt;User</span></code><br><code class="docutils literal notranslate"><span class="pre">How</span> <span class="pre">old</span> <span class="pre">are</span> <span class="pre">you?</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;extra_id_1&gt;Assistant</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">don't</span> <span class="pre">age</span> <span class="pre">like</span> <span class="pre">humans</span> <span class="pre">do.</span> <span class="pre">I</span> <span class="pre">exist</span> <span class="pre">as</span> <span class="pre">a</span> <span class="pre">piece</span> <span class="pre">of</span> <span class="pre">software,</span> <span class="pre">so</span> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">concept</span> <span class="pre">of</span> <span class="pre">age</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">traditional</span> <span class="pre">sense.&lt;/s&gt;</span></code></p></td> +<td><p><a class="reference internal" href="supported_conversation_template.html#hymba"><span class="std std-ref">Link</span></a></p></td> +</tr> +<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">internlm2</span></code></p></td> +<td><p><code class="docutils literal notranslate"><span class="pre">&lt;s&gt;&lt;|im_start|&gt;system</span></code><br><code class="docutils literal notranslate"><span class="pre">You</span> <span class="pre">are</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;user</span></code><br><code class="docutils literal notranslate"><span class="pre">Who</span> <span class="pre">are</span> <span class="pre">you?&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;assistant</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">am</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;user</span></code><br><code class="docutils literal notranslate"><span class="pre">How</span> <span class="pre">old</span> <span class="pre">are</span> <span class="pre">you?&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;assistant</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">don't</span> <span class="pre">age</span> <span class="pre">like</span> <span class="pre">humans</span> <span class="pre">do.</span> <span class="pre">I</span> <span class="pre">exist</span> <span class="pre">as</span> <span class="pre">a</span> <span class="pre">piece</span> <span class="pre">of</span> <span class="pre">software,</span> <span class="pre">so</span> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">concept</span> <span class="pre">of</span> <span class="pre">age</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">traditional</span> <span class="pre">sense.&lt;|im_end|&gt;</span></code><br></p></td> +<td><p><a class="reference internal" href="supported_conversation_template.html#internlm2"><span class="std std-ref">Link</span></a></p></td> +</tr> +<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">llama3</span></code></p></td> +<td><p><code class="docutils literal notranslate"><span class="pre">&lt;|begin_of_text|&gt;&lt;|start_header_id|&gt;system&lt;|end_header_id|&gt;</span></code><br><br><code class="docutils literal notranslate"><span class="pre">You</span> <span class="pre">are</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|eot_id|&gt;&lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;</span></code><br><br><code class="docutils literal notranslate"><span class="pre">Who</span> <span class="pre">are</span> <span class="pre">you?&lt;|eot_id|&gt;&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;</span></code><br><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">am</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|eot_id|&gt;&lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;</span></code><br><br><code class="docutils literal notranslate"><span class="pre">How</span> <span class="pre">old</span> <span class="pre">are</span> <span class="pre">you?&lt;|eot_id|&gt;&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;</span></code><br><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">don't</span> <span class="pre">age</span> <span class="pre">like</span> <span class="pre">humans</span> <span class="pre">do.</span> <span class="pre">I</span> <span class="pre">exist</span> <span class="pre">as</span> <span class="pre">a</span> <span class="pre">piece</span> <span class="pre">of</span> <span class="pre">software,</span> <span class="pre">so</span> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">concept</span> <span class="pre">of</span> <span class="pre">age</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">traditional</span> <span class="pre">sense.&lt;|eot_id|&gt;</span></code></p></td> +<td><p><a class="reference internal" href="supported_conversation_template.html#llama-3"><span class="std std-ref">Link</span></a></p></td> +</tr> +<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">llama2</span></code></p></td> +<td><p><code class="docutils literal notranslate"><span class="pre">&lt;s&gt;[INST]</span> <span class="pre">&lt;&lt;SYS&gt;&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">You</span> <span class="pre">are</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;&lt;/SYS&gt;&gt;</span></code><br><br><code class="docutils literal notranslate"><span class="pre">Who</span> <span class="pre">are</span> <span class="pre">you?</span> <span class="pre">[/INST]</span> <span class="pre">I</span> <span class="pre">am</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;/s&gt;&lt;s&gt;[INST]</span> <span class="pre">How</span> <span class="pre">old</span> <span class="pre">are</span> <span class="pre">you?</span> <span class="pre">[/INST]</span> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">age</span> <span class="pre">like</span> <span class="pre">humans</span> <span class="pre">do.</span> <span class="pre">I</span> <span class="pre">exist</span> <span class="pre">as</span> <span class="pre">a</span> <span class="pre">piece</span> <span class="pre">of</span> <span class="pre">software,</span> <span class="pre">so</span> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">concept</span> <span class="pre">of</span> <span class="pre">age</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">traditional</span> <span class="pre">sense.&lt;/s&gt;</span></code></p></td> +<td><p><a class="reference internal" href="supported_conversation_template.html#llama-2"><span class="std std-ref">Link</span></a></p></td> +</tr> +<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">phi3</span></code></p></td> +<td><p><code class="docutils literal notranslate"><span class="pre">&lt;s&gt;&lt;|system|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">You</span> <span class="pre">are</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|user|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">Who</span> <span class="pre">are</span> <span class="pre">you?&lt;|end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|assistant|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">am</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|user|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">How</span> <span class="pre">old</span> <span class="pre">are</span> <span class="pre">you?&lt;|end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|assistant|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">don't</span> <span class="pre">age</span> <span class="pre">like</span> <span class="pre">humans</span> <span class="pre">do.</span> <span class="pre">I</span> <span class="pre">exist</span> <span class="pre">as</span> <span class="pre">a</span> <span class="pre">piece</span> <span class="pre">of</span> <span class="pre">software,</span> <span class="pre">so</span> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">concept</span> <span class="pre">of</span> <span class="pre">age</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">traditional</span> <span class="pre">sense.&lt;|end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|endoftext|&gt;</span></code></p></td> +<td><p><a class="reference internal" href="supported_conversation_template.html#phi-3"><span class="std std-ref">Link</span></a></p></td> +</tr> +<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">qwen2</span></code></p></td> +<td><p><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;system</span></code><br><code class="docutils literal notranslate"><span class="pre">You</span> <span class="pre">are</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;user</span></code><br><code class="docutils literal notranslate"><span class="pre">Who</span> <span class="pre">are</span> <span class="pre">you?&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;assistant</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">am</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;user</span></code><br><code class="docutils literal notranslate"><span class="pre">How</span> <span class="pre">old</span> <span class="pre">are</span> <span class="pre">you?&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;assistant</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">don't</span> <span class="pre">age</span> <span class="pre">like</span> <span class="pre">humans</span> <span class="pre">do.</span> <span class="pre">I</span> <span class="pre">exist</span> <span class="pre">as</span> <span class="pre">a</span> <span class="pre">piece</span> <span class="pre">of</span> <span class="pre">software,</span> <span class="pre">so</span> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">concept</span> <span class="pre">of</span> <span class="pre">age</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">traditional</span> <span class="pre">sense.&lt;|im_end|&gt;</span></code><br></p></td> +<td><p><a class="reference internal" href="supported_conversation_template.html#qwen-2"><span class="std std-ref">Link</span></a></p></td> +</tr> +<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">yi</span></code></p></td> +<td><p>Same as <code class="docutils literal notranslate"><span class="pre">chatml</span></code></p></td> +<td><p><a class="reference internal" href="supported_conversation_template.html#yi"><span class="std std-ref">Link</span></a></p></td> +</tr> +<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">yi1_5</span></code></p></td> +<td><p><code class="docutils literal notranslate"><span class="pre">You</span> <span class="pre">are</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|im_start|&gt;user</span></code><br><code class="docutils literal notranslate"><span class="pre">Who</span> <span class="pre">are</span> <span class="pre">you?&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;assistant</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">am</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;user</span></code><br><code class="docutils literal notranslate"><span class="pre">How</span> <span class="pre">old</span> <span class="pre">are</span> <span class="pre">you?&lt;|im_end|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|im_start|&gt;assistant</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">don't</span> <span class="pre">age</span> <span class="pre">like</span> <span class="pre">humans</span> <span class="pre">do.</span> <span class="pre">I</span> <span class="pre">exist</span> <span class="pre">as</span> <span class="pre">a</span> <span class="pre">piece</span> <span class="pre">of</span> <span class="pre">software,</span> <span class="pre">so</span> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">concept</span> <span class="pre">of</span> <span class="pre">age</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">traditional</span> <span class="pre">sense.&lt;|im_end|&gt;</span></code><br></p></td> +<td><p><a class="reference internal" href="supported_conversation_template.html#yi-15"><span class="std std-ref">Link</span></a></p></td> +</tr> +<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">zephyr</span></code></p></td> +<td><p><code class="docutils literal notranslate"><span class="pre">&lt;|system|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">You</span> <span class="pre">are</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;/s&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|user|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">Who</span> <span class="pre">are</span> <span class="pre">you?&lt;/s&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|assistant|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">am</span> <span class="pre">a</span> <span class="pre">chatbot</span> <span class="pre">developed</span> <span class="pre">by</span> <span class="pre">LMFlow</span> <span class="pre">team.&lt;/s&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|user|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">How</span> <span class="pre">old</span> <span class="pre">are</span> <span class="pre">you?&lt;/s&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">&lt;|assistant|&gt;</span></code><br><code class="docutils literal notranslate"><span class="pre">I</span> <span class="pre">don't</span> <span class="pre">age</span> <span class="pre">like</span> <span class="pre">humans</span> <span class="pre">do.</span> <span class="pre">I</span> <span class="pre">exist</span> <span class="pre">as</span> <span class="pre">a</span> <span class="pre">piece</span> <span class="pre">of</span> <span class="pre">software,</span> <span class="pre">so</span> <span class="pre">I</span> <span class="pre">don't</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">concept</span> <span class="pre">of</span> <span class="pre">age</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">traditional</span> <span class="pre">sense.&lt;/s&gt;</span></code><br></p></td> +<td><p><a class="reference internal" href="supported_conversation_template.html#zephyr"><span class="std std-ref">Link</span></a></p></td> +</tr> +</tbody> +</table> +</div> +<p>Passing the template name to the <code class="docutils literal notranslate"><span class="pre">--conversation_template</span></code> argument to apply the corresponding conversation template:</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># scripts/run_finetune.sh</span> +<span class="c1"># ...</span> +deepspeed<span class="w"> </span><span class="si">${</span><span class="nv">deepspeed_args</span><span class="si">}</span><span class="w"> </span><span class="se">\</span> +<span class="w"> </span>examples/finetune.py<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--model_name_or_path<span class="w"> </span>meta-llama/Llama-2-7b-chat-hf<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--dataset_path<span class="w"> </span><span class="si">${</span><span class="nv">dataset_path</span><span class="si">}</span><span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--conversation_template<span class="w"> </span>llama2<span class="w"> </span><span class="se">\</span> +<span class="c1"># ...</span> +</pre></div> +</div> +<div class="info admonition"> +<p class="admonition-title">Formatted Dataset</p> +<p>For dataset that system prompts, tool prompts and templates are already applied (like the one below), user can run the finetune shell by passing <code class="docutils literal notranslate"><span class="pre">empty</span></code> or <code class="docutils literal notranslate"><span class="pre">empty_no_special_tokens</span></code> to the <code class="docutils literal notranslate"><span class="pre">--conversation_template</span></code> argument. <code class="docutils literal notranslate"><span class="pre">empty</span></code> template will add a bos token to the beginning of every round of conversation as well as a eos token to the end of every round of conversation. <code class="docutils literal notranslate"><span class="pre">empty_no_special_tokens</span></code> will not add any special tokens to the conversation, just concatenates the user and assistant messages.</p> +<details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3"> +<summary class="sd-summary-title sd-card-header"> +<span class="sd-summary-text">A formatted dataset</span><span class="sd-summary-state-marker sd-summary-chevron-right"><svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-right" viewBox="0 0 24 24" aria-hidden="true"><path d="M8.72 18.78a.75.75 0 0 1 0-1.06L14.44 12 8.72 6.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0Z"></path></svg></span></summary><div class="sd-summary-content sd-card-body docutils"> +<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;conversation&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;instances&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;messages&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;[INST] &lt;&lt;SYS&gt;&gt;\nYou are a helpful assistant.\n&lt;&lt;/SYS&gt;&gt;\n\nHello! [/INST]&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Hi, how are you?&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;[INST] Good. [/INST]&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Glad to hear that.&quot;</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="p">]</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;messages&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;[INST] &lt;&lt;SYS&gt;&gt;\nYou are a helpful assistant.\n&lt;&lt;/SYS&gt;&gt;\n\nWhat&#39;s the weather like now? [/INST]&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;I&#39;m sorry for any confusion, but as an AI, I don&#39;t have access to real-time data such as current weather conditions.&quot;</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="p">]</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="p">]</span> +<span class="p">}</span> +</pre></div> +</div> +</div> +</details></div> +</section> +<section id="customize-conversation-template"> +<h4>Customize Conversation Template<a class="headerlink" href="#customize-conversation-template" title="Link to this heading">#</a></h4> +<p>Please refer to the <a class="reference internal" href="customize_conversation_template.html"><span class="std std-doc">Customize Conversation Template</span></a> for more details.</p> +</section> +</section> +<section id="textonly"> +<h3>TextOnly<a class="headerlink" href="#textonly" title="Link to this heading">#</a></h3> +<p>This is the most common dataset type, which only contains raw texts in each +sample. This type of dataset can be used as the training set for text decoder +models, or the input of decoder models / encoder-decoder models. Its format is +as follows (three instances for example),</p> +<details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3"> +<summary class="sd-summary-title sd-card-header"> +<span class="sd-summary-text">A textonly dataset</span><span class="sd-summary-state-marker sd-summary-chevron-right"><svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-right" viewBox="0 0 24 24" aria-hidden="true"><path d="M8.72 18.78a.75.75 0 0 1 0-1.06L14.44 12 8.72 6.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0Z"></path></svg></span></summary><div class="sd-summary-content sd-card-body docutils"> +<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;text_only&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;instances&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;text&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SAMPLE_TEXT_1&quot;</span><span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;text&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SAMPLE_TEXT_2&quot;</span><span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;text&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SAMPLE_TEXT_3&quot;</span><span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">]</span> +<span class="p">}</span> +</pre></div> +</div> +</div> +</details><p>For example, <code class="docutils literal notranslate"><span class="pre">data/example_dataset/train/train_50.json</span></code> has the aboved format.</p> +</section> +<section id="text2text"> +<h3>Text2Text<a class="headerlink" href="#text2text" title="Link to this heading">#</a></h3> +<p>This is the dataset type mostly used for inferencing, which contains a pair of +texts in each sample. This type of dataset can be used as the training set for +text encoder-decoder models, or question-answer pair for evaluating model +inferences. Its format is as follows (three instances for example):</p> +<details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3"> +<summary class="sd-summary-title sd-card-header"> +<span class="sd-summary-text">A text2text dataset</span><span class="sd-summary-state-marker sd-summary-chevron-right"><svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-right" viewBox="0 0 24 24" aria-hidden="true"><path d="M8.72 18.78a.75.75 0 0 1 0-1.06L14.44 12 8.72 6.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0Z"></path></svg></span></summary><div class="sd-summary-content sd-card-body docutils"> +<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;text2text&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;instances&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;input&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SAMPLE_INPUT_1&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;output&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SAMPLE_OUTPUT_1&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;input&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SAMPLE_INPUT_2&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;output&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SAMPLE_OUTPUT_2&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;input&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SAMPLE_INPUT_3&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;output&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SAMPLE_OUTPUT_3&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">]</span> +<span class="p">}</span> +</pre></div> +</div> +</div> +</details><p>For example, <code class="docutils literal notranslate"><span class="pre">data/example_dataset/test/test_13.json</span></code> has the aboved format.</p> +</section> +<section id="paired-conversation"> +<h3>Paired Conversation<a class="headerlink" href="#paired-conversation" title="Link to this heading">#</a></h3> +<div class="info admonition"> +<p class="admonition-title"><strong>Work in Progress</strong></p> +<p>We are working on paired conversation dataset and will update it soon.</p> +</div> +<p>This type of dataset are commonly used for alignment such as <a class="reference external" href="https://arxiv.org/abs/2203.02155">reward modeling</a>, +<a class="reference external" href="https://arxiv.org/abs/2305.18290">Direct Preference Optimization (DPO)</a>, etc. For requirements of the conversations, +please refer to <a class="reference internal" href="#conversation"><span class="xref myst">conversation data</span></a>.</p> +<details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3"> +<summary class="sd-summary-title sd-card-header"> +<span class="sd-summary-text">A paired conversation dataset</span><span class="sd-summary-state-marker sd-summary-chevron-right"><svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-right" viewBox="0 0 24 24" aria-hidden="true"><path d="M8.72 18.78a.75.75 0 0 1 0-1.06L14.44 12 8.72 6.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0Z"></path></svg></span></summary><div class="sd-summary-content sd-card-body docutils"> +<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;paired_conversation&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;instances&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;chosen&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;conversation_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;CONVERSATION_ID&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;system&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SYSTEM_PROPMT&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;tools&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;TOOL_DESCRIPTION_1&quot;</span><span class="p">,</span><span class="s2">&quot;TOOL_DESCRIPTION_2&quot;</span><span class="p">,</span><span class="s2">&quot;TOOL_DESCRIPTION_3&quot;</span><span class="p">],</span> +<span class="w"> </span><span class="nt">&quot;messages&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;USER_INPUT_1&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ASSISTANT_RESPONSE_1_GOOD&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;USER_INPUT_2&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ASSISTANT_RESPONSE_2_GOOD&quot;</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="p">]</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="nt">&quot;rejected&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;conversation_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;CONVERSATION_ID&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;system&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SYSTEM_PROPMT&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;tools&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;TOOL_DESCRIPTION_1&quot;</span><span class="p">,</span><span class="s2">&quot;TOOL_DESCRIPTION_2&quot;</span><span class="p">,</span><span class="s2">&quot;TOOL_DESCRIPTION_3&quot;</span><span class="p">],</span> +<span class="w"> </span><span class="nt">&quot;messages&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;USER_INPUT_1&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ASSISTANT_RESPONSE_1_BAD&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;USER_INPUT_2&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ASSISTANT_RESPONSE_2_BAD&quot;</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="p">]</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;chosen&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;conversation_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;CONVERSATION_ID&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;system&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SYSTEM_PROPMT&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;tools&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;TOOL_DESCRIPTION_1&quot;</span><span class="p">],</span> +<span class="w"> </span><span class="nt">&quot;messages&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;USER_INPUT_1&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ASSISTANT_RESPONSE_1_GOOD&quot;</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="p">]</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="nt">&quot;rejected&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;conversation_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;CONVERSATION_ID&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;system&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;SYSTEM_PROPMT&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;tools&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;TOOL_DESCRIPTION_1&quot;</span><span class="p">],</span> +<span class="w"> </span><span class="nt">&quot;messages&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;USER_INPUT_1&quot;</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;ASSISTANT_RESPONSE_1_BAD&quot;</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="p">]</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="p">]</span> +<span class="p">}</span> +</pre></div> +</div> +</div> +</details></section> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="index.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">Examples</p> + </div> + </a> + <a class="right-next" + href="checkpoints.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">Checkpoints</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#dataset-format-in-general">Dataset Format in General</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#supported-dataset-and-detailed-formats">Supported Dataset and Detailed Formats</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#conversation">Conversation</a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#data-format">Data Format</a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#conversation-template">Conversation Template</a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#customize-conversation-template">Customize Conversation Template</a></li> +</ul> +</li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#textonly">TextOnly</a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#text2text">Text2Text</a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#paired-conversation">Paired Conversation</a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/examples/DATASETS.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/examples/TASK_GUIDE.html b/examples/TASK_GUIDE.html new file mode 100644 index 000000000..a07658a67 --- /dev/null +++ b/examples/TASK_GUIDE.html @@ -0,0 +1,639 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>LMFlow Benchmark Guide &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'examples/TASK_GUIDE';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="API Reference" href="../autoapi/index.html" /> + <link rel="prev" title="RAFT" href="raft.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="DATASETS.html">Dataset</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="checkpoints.html">Checkpoints</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="finetuning.html">Finetuning</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="reward_modeling.html">Reward Modeling</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="raft.html">RAFT</a></li> +</ul> +<ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">LMFlow Benchmark Guide</a></li> + + +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">Examples</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">LMFlow Benchmark Guide</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="lmflow-benchmark-guide"> +<h1>LMFlow Benchmark Guide<a class="headerlink" href="#lmflow-benchmark-guide" title="Link to this heading">#</a></h1> +<p>We support two ways to add evaluation settings in our repo, <code class="docutils literal notranslate"><span class="pre">NLL</span> <span class="pre">Task</span> <span class="pre">Setting</span></code> and <code class="docutils literal notranslate"><span class="pre">LM-Evaluation</span> <span class="pre">Task</span> <span class="pre">Setting</span></code>. Below are the details of them:</p> +</section> +<section id="nll-task-setting"> +<h1>1. NLL Task Setting<a class="headerlink" href="#nll-task-setting" title="Link to this heading">#</a></h1> +<p>Users can easily create new tasks and evaluate their datasets on +the provide <code class="docutils literal notranslate"><span class="pre">nll</span> <span class="pre">(Negative</span> <span class="pre">Log</span> <span class="pre">Likelihood)</span></code> metric.</p> +<section id="setup"> +<h2>Setup<a class="headerlink" href="#setup" title="Link to this heading">#</a></h2> +<p>Fork the main repo, clone it, and create a new branch with the name of +your task, and install the following:</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># After forking...</span> +git<span class="w"> </span>clone<span class="w"> </span>https://github.com/&lt;YOUR-USERNAME&gt;/LMFlow.git +<span class="nb">cd</span><span class="w"> </span>LMFlow +git<span class="w"> </span>checkout<span class="w"> </span>-b<span class="w"> </span>&lt;TASK-NAME&gt; +conda<span class="w"> </span>create<span class="w"> </span>-n<span class="w"> </span>lmflow<span class="w"> </span><span class="nv">python</span><span class="o">=</span><span class="m">3</span>.9<span class="w"> </span>-y +conda<span class="w"> </span>activate<span class="w"> </span>lmflow +conda<span class="w"> </span>install<span class="w"> </span>mpi4py +pip<span class="w"> </span>install<span class="w"> </span>-e<span class="w"> </span>. +</pre></div> +</div> +</section> +<section id="create-your-task-dataset-file"> +<h2>Create Your Task Dataset File<a class="headerlink" href="#create-your-task-dataset-file" title="Link to this heading">#</a></h2> +<p>We provide several available datasets under <code class="docutils literal notranslate"><span class="pre">data</span></code> after running</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span><span class="w"> </span>data<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>./download.sh<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nb">cd</span><span class="w"> </span>- +</pre></div> +</div> +<p>You can refer to some given evaluation dataset files and create your own. +Also, you may refer to our guide on +<a class="reference external" href="https://optimalscale.github.io/LMFlow/examples/DATASETS.html">DATASET</a>.</p> +<p>In this step, you will need to decide your answer type like <code class="docutils literal notranslate"><span class="pre">text2text</span></code> +or <code class="docutils literal notranslate"><span class="pre">text_only</span></code> (Notice that the current <code class="docutils literal notranslate"><span class="pre">nll</span></code> implementation only supports these +two answer types). We will note the chosen answer type as <code class="docutils literal notranslate"><span class="pre">&lt;ANSWER_TYPE&gt;</span></code>.</p> +<p>After preparing your own <code class="docutils literal notranslate"><span class="pre">DATASET</span></code> file, you can put it under <code class="docutils literal notranslate"><span class="pre">data</span></code> dir +and make a <code class="docutils literal notranslate"><span class="pre">TASK</span></code> dir.</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>mkdir<span class="w"> </span>&lt;TASK&gt; +mv<span class="w"> </span>&lt;DATASET&gt;<span class="w"> </span>&lt;TASK&gt; +</pre></div> +</div> +</section> +<section id="task-registration"> +<h2>Task Registration<a class="headerlink" href="#task-registration" title="Link to this heading">#</a></h2> +<p>Note the path of your dataset, <code class="docutils literal notranslate"><span class="pre">data/&lt;TASK&gt;/&lt;DATASET&gt;</span></code>.</p> +<p>Open the file <code class="docutils literal notranslate"><span class="pre">examples/benchmarking.py</span></code>, add your task’s info into +<code class="docutils literal notranslate"><span class="pre">LOCAL_DATSET_GROUP_MAP</span></code>, <code class="docutils literal notranslate"><span class="pre">LOCAL_DATSET_MAP</span></code>, <code class="docutils literal notranslate"><span class="pre">LOCAL_DATSET_ANSWERTYPE_MAP</span></code></p> +<p>In <code class="docutils literal notranslate"><span class="pre">LOCAL_DATSET_MAP</span></code>, you will need to specify your <code class="docutils literal notranslate"><span class="pre">DATASET</span></code> files’ path:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">LOCAL_DATSET_MAP</span> <span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;...&quot;</span><span class="p">:</span><span class="s2">&quot;...&quot;</span><span class="p">,</span> + <span class="s2">&quot;&lt;TASK&gt;&quot;</span><span class="p">:</span><span class="s2">&quot;data/&lt;TASK&gt;/&lt;DATASET&gt;&quot;</span><span class="p">,</span> +<span class="p">}</span> +</pre></div> +</div> +<p>In <code class="docutils literal notranslate"><span class="pre">LOCAL_DATSET_ANSWERTYPE_MAP</span></code>, you will need to specify your task’s +<code class="docutils literal notranslate"><span class="pre">&lt;ANSWER_TYPE&gt;</span></code>:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">LOCAL_DATSET_ANSWERTYPE_MAP</span> <span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;...&quot;</span><span class="p">:</span><span class="s2">&quot;...&quot;</span><span class="p">,</span> + <span class="s2">&quot;&lt;TASK&gt;&quot;</span><span class="p">:</span><span class="s2">&quot;&lt;ANSWER_TYPE&gt;,</span> +<span class="p">}</span> +</pre></div> +</div> +<p>If you only have one task, you can add key-value pair like <code class="docutils literal notranslate"><span class="pre">&quot;&lt;TASK&gt;&quot;:&quot;&lt;TASK&gt;&quot;</span></code> +in <code class="docutils literal notranslate"><span class="pre">LOCAL_DATSET_GROUP_MAP</span></code>:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">LOCAL_DATSET_GROUP_MAP</span> <span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;...&quot;</span><span class="p">:</span><span class="s2">&quot;...&quot;</span><span class="p">,</span> + <span class="s2">&quot;&lt;TASK&gt;&quot;</span><span class="p">:</span><span class="s2">&quot;&lt;TASK&gt;&quot;</span><span class="p">,</span> +<span class="p">}</span> +</pre></div> +</div> +<p>If you want to combine several tasks, you may first specify a +combination name <code class="docutils literal notranslate"><span class="pre">&lt;TASK_COMBINATION&gt;</span></code> and add key-value pair like +<code class="docutils literal notranslate"><span class="pre">&quot;&lt;TASK_COMBINATION&gt;&quot;:&quot;&lt;TASK_1&gt;,&lt;TASK_2&gt;,..&quot;</span></code>in <code class="docutils literal notranslate"><span class="pre">LOCAL_DATSET_GROUP_MAP</span></code>.</p> +<p>Remember to separate TASK by <code class="docutils literal notranslate"><span class="pre">,</span></code>:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">LOCAL_DATSET_GROUP_MAP</span> <span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;...&quot;</span><span class="p">:</span><span class="s2">&quot;...&quot;</span><span class="p">,</span> + <span class="s2">&quot;&lt;TASK_COMBINATION&gt;&quot;</span><span class="p">:</span><span class="s2">&quot;&lt;TASK_1&gt;,&lt;TASK_2&gt;,..&quot;</span><span class="p">,</span> +<span class="p">}</span> +</pre></div> +</div> +<p>After finishing changing these items, you can run your own <code class="docutils literal notranslate"><span class="pre">&lt;TASK&gt;</span></code> like:</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>deepspeed<span class="w"> </span>examples/benchmarking.py<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--answer_type<span class="w"> </span>&lt;ANSWER_TYPE&gt;<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--use_ram_optimized_load<span class="w"> </span>False<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--model_name_or_path<span class="w"> </span><span class="si">${</span><span class="nv">model_name</span><span class="si">}</span><span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--dataset_name<span class="w"> </span>data/&lt;TASK&gt;/&lt;DATASET&gt;<span class="se">\</span> +<span class="w"> </span>--deepspeed<span class="w"> </span>examples/ds_config.json<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--metric<span class="w"> </span>nll<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--prompt_structure<span class="w"> </span><span class="s2">&quot;###Human: {input}###Assistant:&quot;</span><span class="w"> </span><span class="se">\</span> +<span class="w"> </span><span class="p">|</span><span class="w"> </span>tee<span class="w"> </span><span class="si">${</span><span class="nv">log_dir</span><span class="si">}</span>/train.log<span class="w"> </span><span class="se">\</span> +<span class="w"> </span><span class="m">2</span>&gt;<span class="w"> </span><span class="si">${</span><span class="nv">log_dir</span><span class="si">}</span>/train.err<span class="w"> </span> +</pre></div> +</div> +</section> +</section> +<section id="lm-evaluation-task-setting"> +<h1>2. LM-Evaluation Task Setting<a class="headerlink" href="#lm-evaluation-task-setting" title="Link to this heading">#</a></h1> +<p>We integrate <a class="reference external" href="https://github.com/EleutherAI/lm-evaluation-harness">EleutherAI/lm-evaluation-harness</a> into +<code class="docutils literal notranslate"><span class="pre">benchamrk.py</span></code> by directly executing the evaluate commands. Users +can also use their evaluation by simply changing two items in +<code class="docutils literal notranslate"><span class="pre">&lt;LM_EVAL_DATASET_MAP&gt;</span></code> of <code class="docutils literal notranslate"><span class="pre">examples/benchmarking.py</span></code>.</p> +<p>Please refer to Eleuther’s +<a class="reference external" href="https://github.com/EleutherAI/lm-evaluation-harness/blob/master/docs/task_table.md">task-table</a> +to get exact <code class="docutils literal notranslate"><span class="pre">&lt;TASK&gt;</span></code> name.</p> +<p>Similarly, you can combine several tasks, you may first specify a +combination name <code class="docutils literal notranslate"><span class="pre">&lt;TASK_COMBINATION&gt;</span></code> and add key-value pair like +<code class="docutils literal notranslate"><span class="pre">&quot;&lt;TASK_COMBINATION&gt;&quot;:&quot;&lt;TASK_1&gt;,&lt;TASK_2&gt;,..&quot;</span></code>in <code class="docutils literal notranslate"><span class="pre">LM_EVAL_DATASET_MAP</span></code>.</p> +<p>Also, remember to separate TASK by <code class="docutils literal notranslate"><span class="pre">,</span></code>:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">LM_EVAL_DATASET_MAP</span> <span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;...&quot;</span><span class="p">:</span><span class="s2">&quot;...&quot;</span><span class="p">,</span> + <span class="s2">&quot;&lt;TASK_COMBINATION&gt;&quot;</span><span class="p">:</span><span class="s2">&quot;&lt;TASK_1&gt;,&lt;TASK_2&gt;,..&quot;</span><span class="p">,</span> +<span class="p">}</span> +</pre></div> +</div> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="raft.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">RAFT</p> + </div> + </a> + <a class="right-next" + href="../autoapi/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">API Reference</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h1 nav-item toc-entry"><a class="reference internal nav-link" href="#">LMFlow Benchmark Guide</a></li> +<li class="toc-h1 nav-item toc-entry"><a class="reference internal nav-link" href="#nll-task-setting">1. NLL Task Setting</a><ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#setup">Setup</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#create-your-task-dataset-file">Create Your Task Dataset File</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#task-registration">Task Registration</a></li> +</ul> +</li> +<li class="toc-h1 nav-item toc-entry"><a class="reference internal nav-link" href="#lm-evaluation-task-setting">2. LM-Evaluation Task Setting</a></li> +</ul> + + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/examples/TASK_GUIDE.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/examples/checkpoints.html b/examples/checkpoints.html new file mode 100644 index 000000000..76ab75984 --- /dev/null +++ b/examples/checkpoints.html @@ -0,0 +1,546 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Checkpoints &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'examples/checkpoints';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Finetuning" href="finetuning.html" /> + <link rel="prev" title="Dataset" href="DATASETS.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="DATASETS.html">Dataset</a></li> +</ul> +<ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">Checkpoints</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="finetuning.html">Finetuning</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="reward_modeling.html">Reward Modeling</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="raft.html">RAFT</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="TASK_GUIDE.html">LMFlow Benchmark Guide</a></li> + + +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">Examples</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Checkpoints</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="checkpoints"> +<h1>Checkpoints<a class="headerlink" href="#checkpoints" title="Link to this heading">#</a></h1> +<p>In general, you can directly load from checkpoints by using <code class="docutils literal notranslate"><span class="pre">--model_name_or_path</span></code>. However, the LLaMA case is slightly different due to the copyright issue.</p> +<section id="llama-checkpoint"> +<h2>LLaMA Checkpoint<a class="headerlink" href="#llama-checkpoint" title="Link to this heading">#</a></h2> +<ol class="arabic"> +<li><p>First, you need to get the access of LLaMA model from <a class="reference external" href="https://github.com/facebookresearch/llama">facebookresearch/llama</a>. Download the official checkpoints and save them into <code class="docutils literal notranslate"><span class="pre">${llama-path}</span></code>.</p></li> +<li><p>Second, convert the official checkpoints <code class="docutils literal notranslate"><span class="pre">${llama-path}</span></code> to HuggingFace supported checkpoints <code class="docutils literal notranslate"><span class="pre">${llama-hf-path}</span></code> by running</p> +<p><code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">./scripts/convert_llama_weights_to_hf.py</span> <span class="pre">--input_dir</span> <span class="pre">${llama-path}</span> <span class="pre">--model_size</span> <span class="pre">7B</span> <span class="pre">--output_dir</span> <span class="pre">${llama-hf-path}/llama-7b-hf</span></code></p> +</li> +<li><p>Then you are good to go by setting the checkpoint path to <code class="docutils literal notranslate"><span class="pre">${llama-hf-path}/llama-7b-hf</span></code>. Enjoy it!</p></li> +<li><p>(optional) Now you have the original llama-7b-hf pretrained model. With</p></li> +</ol> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span><span class="w"> </span>output_models<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>./download.sh<span class="w"> </span>all<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nb">cd</span><span class="w"> </span>- +</pre></div> +</div> +<p>You can obtain the model difference finetuned by ours. By a way similar to <code class="docutils literal notranslate"><span class="pre">./scripts/run_evaluation_with_lora.sh</span></code>,</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nv">CUDA_VISIBLE_DEVICES</span><span class="o">=</span><span class="m">0</span><span class="w"> </span><span class="se">\</span> +<span class="w"> </span>deepspeed<span class="w"> </span>examples/evaluate.py<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--answer_type<span class="w"> </span>text<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--model_name_or_path<span class="w"> </span><span class="si">${</span><span class="nv">llama</span><span class="p">-hf-path</span><span class="si">}</span>/llama-7b-hf<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--lora_model_path<span class="w"> </span>output_models/<span class="si">${</span><span class="nv">llama</span><span class="p">-model-diff-path</span><span class="si">}</span><span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--dataset_path<span class="w"> </span>data/alpaca/test<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--prompt_structure<span class="w"> </span><span class="s2">&quot;Input: {input}&quot;</span><span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--deepspeed<span class="w"> </span>examples/ds_config.json +</pre></div> +</div> +<p>You can now evaluate with the finetuned llama model.</p> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="DATASETS.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">Dataset</p> + </div> + </a> + <a class="right-next" + href="finetuning.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">Finetuning</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#llama-checkpoint">LLaMA Checkpoint</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/examples/checkpoints.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/examples/customize_conversation_template.html b/examples/customize_conversation_template.html new file mode 100644 index 000000000..43a04814a --- /dev/null +++ b/examples/customize_conversation_template.html @@ -0,0 +1,592 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Customize Conversation Template &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'examples/customize_conversation_template';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Customize Conversation Template</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="customize-conversation-template"> +<h1>Customize Conversation Template<a class="headerlink" href="#customize-conversation-template" title="Link to this heading">#</a></h1> +<blockquote> +<div><p>For beginners: Why template?<br /> +Almost all LLMs today do a simple job - predict the next “word”. To make the interaction between user and model smoother, developers use tricks: they add special “words” to the input text (at back-end, thus invisible to the user when using services like ChatGPT) to “tell” the model what user had said before, and ask the model to respond like an assistant. These “hidden words” are called “template”.</p> +</div></blockquote> +<p>We provide the flexibility to customize the conversation template. You can customize your own conversation template by following the steps below:</p> +<section id="decompose-your-conversations"> +<h2>1. Decompose your conversations<a class="headerlink" href="#decompose-your-conversations" title="Link to this heading">#</a></h2> +<p>Say you want to make the conversations between user and assistant look like:</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;bos&gt;System: +You are a chatbot developed by LMFlow team. + +User: +Who are you? + +Assistant: +I am a chatbot developed by LMFlow team.&lt;eos&gt; + +User: +How old are you? + +Assistant: +I don&#39;t age like humans do. I exist as a piece of software, so I don&#39;t have a concept of age in the traditional sense.&lt;eos&gt; +</pre></div> +</div> +<p>It is easy to abstract the format for each message:</p> +<ul class="simple"> +<li><p>System message: <code class="docutils literal notranslate"><span class="pre">System:\n{{content}}\n\n</span></code></p></li> +<li><p>User message: <code class="docutils literal notranslate"><span class="pre">User:\n{{content}}\n\n</span></code></p></li> +<li><p>Assistant message: <code class="docutils literal notranslate"><span class="pre">Assistant:\n{{content}}\n\n&lt;eos&gt;</span></code></p></li> +</ul> +<p>Also, we have a bos token at the beginning of the conversation session.</p> +</section> +<section id="choose-proper-formatter"> +<h2>2. Choose proper <code class="docutils literal notranslate"><span class="pre">Formatter</span></code><a class="headerlink" href="#choose-proper-formatter" title="Link to this heading">#</a></h2> +<p>Recall the requirements for a conversation dataset:</p> +<blockquote> +<div><ul class="simple"> +<li><p><code class="docutils literal notranslate"><span class="pre">system</span></code>: <code class="docutils literal notranslate"><span class="pre">Optional[string]</span></code>.</p></li> +<li><p><code class="docutils literal notranslate"><span class="pre">tools</span></code>: <code class="docutils literal notranslate"><span class="pre">Optional[List[string]]</span></code>.</p></li> +<li><p><code class="docutils literal notranslate"><span class="pre">messages</span></code>: <code class="docutils literal notranslate"><span class="pre">List[Dict]</span></code>.</p> +<ul> +<li><p><code class="docutils literal notranslate"><span class="pre">role</span></code>: <code class="docutils literal notranslate"><span class="pre">string</span></code>.</p></li> +<li><p><code class="docutils literal notranslate"><span class="pre">content</span></code>: <code class="docutils literal notranslate"><span class="pre">string</span></code>.</p></li> +</ul> +</li> +</ul> +</div></blockquote> +<p>System message, user message, and assistant message are strings thus we can use <code class="docutils literal notranslate"><span class="pre">StringFormatter</span></code> for them.</p> +</section> +<section id="build-the-template"> +<h2>3. Build the template<a class="headerlink" href="#build-the-template" title="Link to this heading">#</a></h2> +<p>All preset templates are located at <code class="docutils literal notranslate"><span class="pre">src/lmflow/utils/conversation_template</span></code>.</p> +<p>Within the template file, define your own template like:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">StringFormatter</span><span class="p">,</span> <span class="n">TemplateComponent</span><span class="p">,</span> <span class="n">ConversationTemplate</span> + + +<span class="n">YOUR_TEMPLATE</span> <span class="o">=</span> <span class="n">ConversationTemplate</span><span class="p">(</span> + <span class="n">template_name</span><span class="o">=</span><span class="s1">&#39;your_template_name&#39;</span><span class="p">,</span> + <span class="n">user_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;User:</span><span class="se">\n</span><span class="s1">{{content}}</span><span class="se">\n\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">assistant_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;Assistant:</span><span class="se">\n</span><span class="s1">{{content}}</span><span class="se">\n\n</span><span class="s1">&#39;</span><span class="p">),</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;eos_token&#39;</span><span class="p">)</span> <span class="c1"># this will add the eos token at the end of every assistant message</span> + <span class="c1"># please refer to the docstring of the `TemplateComponent` class to </span> + <span class="c1"># see the difference between different types of components.</span> + <span class="p">]</span> + <span class="p">),</span> + <span class="n">system_formatter</span><span class="o">=</span><span class="n">StringFormatter</span><span class="p">(</span> + <span class="n">template</span><span class="o">=</span><span class="p">[</span> + <span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;System:</span><span class="se">\n</span><span class="s1">{{content}}</span><span class="se">\n\n</span><span class="s1">&#39;</span><span class="p">)</span> + <span class="p">]</span> + <span class="p">)</span> + <span class="c1"># For models that has ONLY ONE bos token at the beginning of </span> + <span class="c1"># a conversation session (not a conversation pair), user can</span> + <span class="c1"># specify a special starter to add that starter to the very</span> + <span class="c1"># beginning of the conversation session. </span> + <span class="c1"># eg:</span> + <span class="c1"># llama-2: &lt;s&gt; and &lt;/s&gt; at every pair of conversation </span> + <span class="c1"># v.s.</span> + <span class="c1"># llama-3: &lt;|begin_of_text|&gt; only at the beginning of a session</span> + <span class="n">special_starter</span><span class="o">=</span><span class="n">TemplateComponent</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;token&#39;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s1">&#39;bos_token&#39;</span><span class="p">),</span> + + <span class="c1"># Similar to the special starter... (just for illustration, commented out </span> + <span class="c1"># since it is not necessary for our purposed template above)</span> + <span class="c1"># special_stopper=TemplateComponent(type=&#39;token&#39;, content=&#39;eos_token&#39;)</span> +<span class="p">)</span> +</pre></div> +</div> +<p>Feel free to create your own template by inheriting the <code class="docutils literal notranslate"><span class="pre">ConversationTemplate</span></code> class. Llama-2 v.s. llama-3 would be a good examples to refer to.</p> +</section> +<section id="register-your-template"> +<h2>4. Register your template<a class="headerlink" href="#register-your-template" title="Link to this heading">#</a></h2> +<p>After defining your own template, you need to register it in the <code class="docutils literal notranslate"><span class="pre">src/lmflow/utils/conversation_template/__init__.py</span></code> file.</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># ...</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">.your_template_file</span><span class="w"> </span><span class="kn">import</span> <span class="n">YOUR_TEMPLATE</span> + + +<span class="n">PRESET_TEMPLATES</span> <span class="o">=</span> <span class="p">{</span> + <span class="c1">#...</span> + <span class="s1">&#39;your_template_name&#39;</span><span class="p">:</span> <span class="n">YOUR_TEMPLATE</span><span class="p">,</span> +<span class="p">}</span> +</pre></div> +</div> +</section> +<section id="use-your-template"> +<h2>5. Use your template<a class="headerlink" href="#use-your-template" title="Link to this heading">#</a></h2> +<p>You are all set! Specify the template name in, for example, your finetune script:</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>./scripts/run_finetune.sh<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--model_name_or_path<span class="w"> </span>path_to_your_model<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--dataset_path<span class="w"> </span>your_conversation_dataset<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--conversation_template<span class="w"> </span>your_template_name<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--output_model_path<span class="w"> </span>output_models/your_model +</pre></div> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#decompose-your-conversations">1. Decompose your conversations</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#choose-proper-formatter">2. Choose proper <code class="docutils literal notranslate"><span class="pre">Formatter</span></code></a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#build-the-template">3. Build the template</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#register-your-template">4. Register your template</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#use-your-template">5. Use your template</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/examples/customize_conversation_template.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/examples/finetuning.html b/examples/finetuning.html new file mode 100644 index 000000000..cac94732d --- /dev/null +++ b/examples/finetuning.html @@ -0,0 +1,615 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Finetuning &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'examples/finetuning';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Reward Modeling" href="reward_modeling.html" /> + <link rel="prev" title="Checkpoints" href="checkpoints.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="DATASETS.html">Dataset</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="checkpoints.html">Checkpoints</a></li> +</ul> +<ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">Finetuning</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="reward_modeling.html">Reward Modeling</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="raft.html">RAFT</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="TASK_GUIDE.html">LMFlow Benchmark Guide</a></li> + + +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">Examples</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Finetuning</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="finetuning"> +<h1>Finetuning<a class="headerlink" href="#finetuning" title="Link to this heading">#</a></h1> +<section id="full-parameters"> +<h2>Full Parameters<a class="headerlink" href="#full-parameters" title="Link to this heading">#</a></h2> +<p>Full training updates all the parameters to finetune a language model. +Here is an example to finetune a GPT-2 base model.</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span><span class="w"> </span>data<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>./download.sh<span class="w"> </span>alpaca<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nb">cd</span><span class="w"> </span>- + +./scripts/run_finetune.sh<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--model_name_or_path<span class="w"> </span>gpt2<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--dataset_path<span class="w"> </span>data/alpaca/train_conversation<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--output_model_path<span class="w"> </span>output_models/finetuned_gpt2 +</pre></div> +</div> +<div class="tip admonition"> +<p class="admonition-title">Conversation Template</p> +<p>For conversation dataset, specify a conversation template for better performance by adding <code class="docutils literal notranslate"><span class="pre">--conversation_template</span></code> to the command.</p> +</div> +<details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3"> +<summary class="sd-summary-title sd-card-header"> +<span class="sd-summary-text">Llama-3-8B conversation dataset example</span><span class="sd-summary-state-marker sd-summary-chevron-right"><svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-right" viewBox="0 0 24 24" aria-hidden="true"><path d="M8.72 18.78a.75.75 0 0 1 0-1.06L14.44 12 8.72 6.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0Z"></path></svg></span></summary><div class="sd-summary-content sd-card-body docutils"> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span><span class="w"> </span>data<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>./download.sh<span class="w"> </span>alpaca<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nb">cd</span><span class="w"> </span>- + +./scripts/run_finetune.sh<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--model_name_or_path<span class="w"> </span>meta-llama/Meta-Llama-3-8B<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--dataset_path<span class="w"> </span>data/alpaca/train_conversation<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--conversation_template<span class="w"> </span>llama3<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--output_model_path<span class="w"> </span>output_models/finetuned_llama3_8b +</pre></div> +</div> +</div> +</details></section> +<section id="layerwise-importance-sampled-adamw-lisa"> +<h2>Layerwise Importance Sampled AdamW (LISA)<a class="headerlink" href="#layerwise-importance-sampled-adamw-lisa" title="Link to this heading">#</a></h2> +<p><a class="reference external" href="https://arxiv.org/abs/2403.17919">LISA</a> is a memory-efficient finetuning algorithm that allows tradeoff between memory and the number of randomly unfreezed layers. This script currently is only tested in single gpus. Please stay tuned for our latest updates!</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span><span class="w"> </span>data<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>./download.sh<span class="w"> </span>alpaca<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nb">cd</span><span class="w"> </span>- + +./scripts/run_finetune_with_lisa.sh<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--model_name_or_path<span class="w"> </span>meta-llama/Llama-2-7b-hf<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--dataset_path<span class="w"> </span>data/alpaca/train_conversation<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--output_model_path<span class="w"> </span>output_models/finetuned_llama2_7b<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--lisa_activated_layers<span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--lisa_interval_steps<span class="w"> </span><span class="m">20</span> +</pre></div> +</div> +<details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3"> +<summary class="sd-summary-title sd-card-header"> +<span class="sd-summary-text">Llama-2-7B conversation dataset example</span><span class="sd-summary-state-marker sd-summary-chevron-right"><svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-right" viewBox="0 0 24 24" aria-hidden="true"><path d="M8.72 18.78a.75.75 0 0 1 0-1.06L14.44 12 8.72 6.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0Z"></path></svg></span></summary><div class="sd-summary-content sd-card-body docutils"> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span><span class="w"> </span>data<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>./download.sh<span class="w"> </span>alpaca<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nb">cd</span><span class="w"> </span>- + +./scripts/run_finetune_with_lisa.sh<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--model_name_or_path<span class="w"> </span>meta-llama/Llama-2-7b-hf<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--dataset_path<span class="w"> </span>data/alpaca/train_conversation<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--conversation_template<span class="w"> </span>llama2<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--output_model_path<span class="w"> </span>output_models/finetuned_llama2_7b_lisa<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--lisa_activated_layers<span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--lisa_interval_steps<span class="w"> </span><span class="m">20</span> +</pre></div> +</div> +</div> +</details></section> +<section id="low-rank-adaptation-lora"> +<h2>Low-Rank Adaptation (LoRA)<a class="headerlink" href="#low-rank-adaptation-lora" title="Link to this heading">#</a></h2> +<p>LoRA is a parameter-efficient finetuning algorithm and is more efficient than full finetuning.</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span><span class="w"> </span>data<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>./download.sh<span class="w"> </span>alpaca<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nb">cd</span><span class="w"> </span>- + +./scripts/run_finetune_with_lora.sh<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--model_name_or_path<span class="w"> </span>facebook/galactica-1.3b<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--dataset_path<span class="w"> </span>data/alpaca/train_conversation<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--output_lora_path<span class="w"> </span>output_models/finetuned_galactica_lora +</pre></div> +</div> +<div class="tip admonition"> +<p class="admonition-title">Merge LoRA Weight</p> +<p>Merge LoRA weight and the base model into one using:</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>./scripts/run_merge_lora.sh<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--model_name_or_path<span class="w"> </span>Qwen/Qwen1.5-1.8B<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--lora_model_path<span class="w"> </span>output_models/lora<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--output_model_path<span class="w"> </span>output_models/lora_merged<span class="w"> </span><span class="se">\</span> +</pre></div> +</div> +</div> +<details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3"> +<summary class="sd-summary-title sd-card-header"> +<span class="sd-summary-text">Llama-2-7B conversation dataset example</span><span class="sd-summary-state-marker sd-summary-chevron-right"><svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-right" viewBox="0 0 24 24" aria-hidden="true"><path d="M8.72 18.78a.75.75 0 0 1 0-1.06L14.44 12 8.72 6.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0Z"></path></svg></span></summary><div class="sd-summary-content sd-card-body docutils"> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span><span class="w"> </span>data<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>./download.sh<span class="w"> </span>alpaca<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nb">cd</span><span class="w"> </span>- + +./scripts/run_finetune_with_lora.sh<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--model_name_or_path<span class="w"> </span>meta-llama/Llama-2-7b-hf<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--dataset_path<span class="w"> </span>data/alpaca/train_conversation<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--conversation_template<span class="w"> </span>llama2<span class="w"> </span><span class="se">\</span> +<span class="w"> </span>--output_model_path<span class="w"> </span>output_models/finetuned_llama2_7b_lora<span class="w"> </span><span class="se">\</span> +</pre></div> +</div> +</div> +</details></section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="checkpoints.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">Checkpoints</p> + </div> + </a> + <a class="right-next" + href="reward_modeling.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">Reward Modeling</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#full-parameters">Full Parameters</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#layerwise-importance-sampled-adamw-lisa">Layerwise Importance Sampled AdamW (LISA)</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#low-rank-adaptation-lora">Low-Rank Adaptation (LoRA)</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/examples/finetuning.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/examples/index.html b/examples/index.html new file mode 100644 index 000000000..18886c39b --- /dev/null +++ b/examples/index.html @@ -0,0 +1,618 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Examples &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'examples/index';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Dataset" href="DATASETS.html" /> + <link rel="prev" title="LMFlow Benchmark: An Automatic Evaluation Framework for Open-Source LLMs" href="../blogs/benchmark.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="#"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="#"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="DATASETS.html">Dataset</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="checkpoints.html">Checkpoints</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="finetuning.html">Finetuning</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="reward_modeling.html">Reward Modeling</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="raft.html">RAFT</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="TASK_GUIDE.html">LMFlow Benchmark Guide</a></li> + + +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Examples</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="examples"> +<h1>Examples<a class="headerlink" href="#examples" title="Link to this heading">#</a></h1> +<p>We provide several examples to show how to use our package in your problem.</p> +<section id="data-preparation"> +<h2>Data preparation<a class="headerlink" href="#data-preparation" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="DATASETS.html">Dataset</a><ul> +<li class="toctree-l2"><a class="reference internal" href="DATASETS.html#dataset-format-in-general">Dataset Format in General</a></li> +<li class="toctree-l2"><a class="reference internal" href="DATASETS.html#supported-dataset-and-detailed-formats">Supported Dataset and Detailed Formats</a><ul> +<li class="toctree-l3"><a class="reference internal" href="DATASETS.html#conversation">Conversation</a></li> +<li class="toctree-l3"><a class="reference internal" href="DATASETS.html#textonly">TextOnly</a></li> +<li class="toctree-l3"><a class="reference internal" href="DATASETS.html#text2text">Text2Text</a></li> +<li class="toctree-l3"><a class="reference internal" href="DATASETS.html#paired-conversation">Paired Conversation</a></li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="checkpoints.html">Checkpoints</a><ul> +<li class="toctree-l2"><a class="reference internal" href="checkpoints.html#llama-checkpoint">LLaMA Checkpoint</a></li> +</ul> +</li> +</ul> +</div> +</section> +<section id="finetuning"> +<h2>Finetuning<a class="headerlink" href="#finetuning" title="Link to this heading">#</a></h2> +<p>For SFT,</p> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="finetuning.html">Finetuning</a><ul> +<li class="toctree-l2"><a class="reference internal" href="finetuning.html#full-parameters">Full Parameters</a></li> +<li class="toctree-l2"><a class="reference internal" href="finetuning.html#layerwise-importance-sampled-adamw-lisa">Layerwise Importance Sampled AdamW (LISA)</a></li> +<li class="toctree-l2"><a class="reference internal" href="finetuning.html#low-rank-adaptation-lora">Low-Rank Adaptation (LoRA)</a></li> +</ul> +</li> +</ul> +</div> +<p>For alignment process,</p> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="reward_modeling.html">Reward Modeling</a><ul> +<li class="toctree-l2"><a class="reference internal" href="reward_modeling.html#introduction">Introduction</a></li> +<li class="toctree-l2"><a class="reference internal" href="reward_modeling.html#step-1-supervised-finetuning-sft">Step 1 Supervised Finetuning (SFT)</a></li> +<li class="toctree-l2"><a class="reference internal" href="reward_modeling.html#step-2-reward-modeling">Step 2 Reward Modeling</a></li> +<li class="toctree-l2"><a class="reference internal" href="reward_modeling.html#examples">Examples</a></li> +</ul> +</li> +</ul> +</div> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="raft.html">RAFT</a><ul> +<li class="toctree-l2"><a class="reference internal" href="raft.html#introduction">1 Introduction</a><ul> +<li class="toctree-l3"><a class="reference internal" href="raft.html#dataset-description">1.1 Dataset description</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="raft.html#reward-modeling">2 Reward Modeling</a><ul> +<li class="toctree-l3"><a class="reference internal" href="raft.html#supervised-finetuning-sft">2.1 Supervised Finetuning (SFT)</a></li> +<li class="toctree-l3"><a class="reference internal" href="raft.html#id1">2.2 Reward Modeling</a></li> +<li class="toctree-l3"><a class="reference internal" href="raft.html#lora-merge-and-get-reward-model">2.3 LoRA Merge and Get Reward Model</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="raft.html#raft-alignment">3 RAFT Alignment</a><ul> +<li class="toctree-l3"><a class="reference internal" href="raft.html#algorithms-overview">3.1 Algorithms Overview</a></li> +<li class="toctree-l3"><a class="reference internal" href="raft.html#hyper-parameters">3.2 Hyper-parameters</a></li> +<li class="toctree-l3"><a class="reference internal" href="raft.html#examples">3.3 Examples</a></li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +</section> +<section id="inference"> +<h2>Inference<a class="headerlink" href="#inference" title="Link to this heading">#</a></h2> +<p>Refer to <a class="reference external" href="https://github.com/OptimalScale/LMFlow/blob/main/examples">examples</a>.</p> +</section> +<section id="evaluation"> +<h2>Evaluation<a class="headerlink" href="#evaluation" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="TASK_GUIDE.html">LMFlow Benchmark Guide</a></li> +<li class="toctree-l1"><a class="reference internal" href="TASK_GUIDE.html#nll-task-setting">1. NLL Task Setting</a><ul> +<li class="toctree-l2"><a class="reference internal" href="TASK_GUIDE.html#setup">Setup</a></li> +<li class="toctree-l2"><a class="reference internal" href="TASK_GUIDE.html#create-your-task-dataset-file">Create Your Task Dataset File</a></li> +<li class="toctree-l2"><a class="reference internal" href="TASK_GUIDE.html#task-registration">Task Registration</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="TASK_GUIDE.html#lm-evaluation-task-setting">2. LM-Evaluation Task Setting</a></li> +</ul> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="../blogs/benchmark.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">LMFlow Benchmark: An Automatic Evaluation Framework for Open-Source LLMs</p> + </div> + </a> + <a class="right-next" + href="DATASETS.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">Dataset</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#data-preparation">Data preparation</a><ul class="nav section-nav flex-column"> +</ul> +</li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#finetuning">Finetuning</a><ul class="nav section-nav flex-column"> +</ul> +</li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#inference">Inference</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#evaluation">Evaluation</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/examples/index.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/examples/medical_finetune.html b/examples/medical_finetune.html new file mode 100644 index 000000000..8c6d145da --- /dev/null +++ b/examples/medical_finetune.html @@ -0,0 +1,510 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Finetune &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'examples/medical_finetune';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Finetune</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="finetune"> +<h1>Finetune<a class="headerlink" href="#finetune" title="Link to this heading">#</a></h1> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">transformers</span><span class="w"> </span><span class="kn">import</span> <span class="n">HfArgumentParser</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.args</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">ModelArguments</span><span class="p">,</span> + <span class="n">DatasetArguments</span><span class="p">,</span> + <span class="n">AutoArguments</span><span class="p">,</span> +<span class="p">)</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.datasets.dataset</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.models.tunable_models</span><span class="w"> </span><span class="kn">import</span> <span class="n">TunableModel</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">lmflow.pipeline.auto_pipeline</span><span class="w"> </span><span class="kn">import</span> <span class="n">AutoPipeline</span> + + +<span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">():</span> + <span class="c1"># Parses arguments</span> + <span class="n">pipeline_name</span> <span class="o">=</span> <span class="s2">&quot;finetuner&quot;</span> + <span class="n">PipelineArguments</span> <span class="o">=</span> <span class="n">AutoArguments</span><span class="o">.</span><span class="n">get_pipeline_args_class</span><span class="p">(</span><span class="n">pipeline_name</span><span class="p">)</span> + + <span class="n">parser</span> <span class="o">=</span> <span class="n">HfArgumentParser</span><span class="p">((</span><span class="n">ModelArguments</span><span class="p">,</span> <span class="n">DatasetArguments</span><span class="p">,</span> <span class="n">PipelineArguments</span><span class="p">))</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span> <span class="ow">and</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;.json&quot;</span><span class="p">):</span> + <span class="c1"># If we pass only one argument to the script and it&#39;s the path to a json file,</span> + <span class="c1"># let&#39;s parse it to get our arguments.</span> + <span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">pipeline_args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_json_file</span><span class="p">(</span><span class="n">json_file</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">model_args</span><span class="p">,</span> <span class="n">data_args</span><span class="p">,</span> <span class="n">pipeline_args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args_into_dataclasses</span><span class="p">()</span> + + <span class="c1"># TODO: deepspeed config initialization</span> + + <span class="c1"># Initialization</span> + <span class="n">finetuner</span> <span class="o">=</span> <span class="n">AutoPipeline</span><span class="o">.</span><span class="n">get_pipeline</span><span class="p">(</span> + <span class="n">pipeline_name</span><span class="o">=</span><span class="n">pipeline_name</span><span class="p">,</span> + <span class="n">model_args</span><span class="o">=</span><span class="n">model_args</span><span class="p">,</span> + <span class="n">data_args</span><span class="o">=</span><span class="n">data_args</span><span class="p">,</span> + <span class="n">pipeline_args</span><span class="o">=</span><span class="n">pipeline_args</span><span class="p">,</span> + <span class="p">)</span> + <span class="n">dataset</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="n">data_args</span><span class="p">)</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">TunableModel</span><span class="p">(</span><span class="n">model_args</span><span class="p">)</span> + + <span class="c1"># Tokenization and text grouping must be done in the main process</span> + <span class="k">with</span> <span class="n">pipeline_args</span><span class="o">.</span><span class="n">main_process_first</span><span class="p">(</span><span class="n">desc</span><span class="o">=</span><span class="s2">&quot;dataset map tokenization&quot;</span><span class="p">):</span> + <span class="n">tokenized_dataset</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">dataset</span><span class="p">)</span> + <span class="n">lm_dataset</span> <span class="o">=</span> <span class="n">finetuner</span><span class="o">.</span><span class="n">group_text</span><span class="p">(</span> + <span class="n">tokenized_dataset</span><span class="p">,</span> + <span class="n">model_max_length</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">get_max_length</span><span class="p">(),</span> + <span class="p">)</span> + + <span class="c1"># Finetuning</span> + <span class="n">tuned_model</span> <span class="o">=</span> <span class="n">finetuner</span><span class="o">.</span><span class="n">tune</span><span class="p">(</span><span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">,</span> <span class="n">lm_dataset</span><span class="o">=</span><span class="n">lm_dataset</span><span class="p">)</span> + +</pre></div> +</div> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/examples/medical_finetune.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/examples/raft.html b/examples/raft.html new file mode 100644 index 000000000..b71bb8b6d --- /dev/null +++ b/examples/raft.html @@ -0,0 +1,864 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>RAFT &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'examples/raft';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="LMFlow Benchmark Guide" href="TASK_GUIDE.html" /> + <link rel="prev" title="Reward Modeling" href="reward_modeling.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="DATASETS.html">Dataset</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="checkpoints.html">Checkpoints</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="finetuning.html">Finetuning</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="reward_modeling.html">Reward Modeling</a></li> +</ul> +<ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">RAFT</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="TASK_GUIDE.html">LMFlow Benchmark Guide</a></li> + + +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">Examples</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">RAFT</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="raft"> +<h1>RAFT<a class="headerlink" href="#raft" title="Link to this heading">#</a></h1> +<section id="introduction"> +<h2>1 Introduction<a class="headerlink" href="#introduction" title="Link to this heading">#</a></h2> +<p>We remark that the example is built on LLaMA whose <a class="reference external" href="https://docs.google.com/forms/d/e/1FAIpQLSfqNECQnMkycAp2jP4Z9TFX0cGR4uf7b_fBxjY_OjhJILlKGA/viewform">licensed</a> is for non-commercial use only.</p> +<p>Reinforcement Learning from Human Feedback (RLHF) requires a reward function to guide the adjustment of the generative model. In this example, we show how to use LMFlow framework to train a reward model following the procedure in the InstructGPT paper: https://arxiv.org/abs/2203.02155 and then align the model via the RAFT algorithm (Reward rAnked FineTuning).</p> +<p><strong>This example contains both reward modeling and RAFT alignment for completeness. For users’ convenience, we have already provided a reward model based on GPT-Neo-2.7B in huggingface repo so one can skip the reward modeling first.</strong></p> +<section id="dataset-description"> +<h3>1.1 Dataset description<a class="headerlink" href="#dataset-description" title="Link to this heading">#</a></h3> +<p>We use the <em>Dahoas/full-hh-rlhf</em> dataset as an example, where each sample of this dataset consists of a prompt and two responses from the assistant. In particular, the response with label “chosen” is preferred as compared to the response with label “rejected”. The dataset consists of 112K training samples and 12.5K test samples. The following is an example sample of the dataset:</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="s2">&quot; Human: What kind of noises did dinosaurs make? Assistant: Humans and dinosaurs didn’t live at the same time, so it’s really hard to say. The best place to find out what noises dinosaurs made would be Human: yes they did Assistant: to guess, and that would probably require lots of reading and a certain amount of imagination, so we’re not really prepared to do that. Human: you cant read Assistant: </span> + +<span class="s2">Chosen response: &quot;</span>You<span class="w"> </span>can<span class="w"> </span>read?<span class="s2">&quot;</span> + +<span class="s2">Rejected response: &quot;</span>there’s<span class="w"> </span>a<span class="w"> </span>lot<span class="w"> </span>of<span class="w"> </span>stuff<span class="w"> </span>humans<span class="w"> </span>don’t<span class="w"> </span>know<span class="s2">&quot;</span> +</pre></div> +</div> +<p>To facilitate the training, we reformulate the prompt by adding ``###’’ at the beginning of the characters so that the model knows to reply. The new sample will be of the form:</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="s2">&quot;###Human: What kind of noises did dinosaurs make? ###Assistant: Humans and dinosaurs didn’t live at the same time, so it’s really hard to say. The best place to find out what noises dinosaurs made would be ###Human: yes they did ###Assistant: to guess, and that would probably require lots of reading and a certain amount of imagination, so we’re not really prepared to do that. ###Human: you cant read ###Assistant: </span> + +<span class="s2">Chosen response: &quot;</span>You<span class="w"> </span>can<span class="w"> </span>read?<span class="s2">&quot;</span> + +<span class="s2">Rejected response: &quot;</span>there’s<span class="w"> </span>a<span class="w"> </span>lot<span class="w"> </span>of<span class="w"> </span>stuff<span class="w"> </span>humans<span class="w"> </span>don’t<span class="w"> </span>know<span class="s2">&quot;</span> +</pre></div> +</div> +<p>We prepare all the used dataset in the directory ./data/hh_rlhf, which can be obtained by running the following command at LMFlow</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span><span class="w"> </span>data<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>./download.sh<span class="w"> </span>hh_rlhf<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nb">cd</span><span class="w"> </span>- +</pre></div> +</div> +</section> +</section> +<section id="reward-modeling"> +<h2>2 Reward Modeling<a class="headerlink" href="#reward-modeling" title="Link to this heading">#</a></h2> +<p>We follow the the procedure in the InstructGPT paper: https://arxiv.org/abs/2203.02155 to train a reward model using the HH-RLHF dataset first, which includes</p> +<ul class="simple"> +<li><p>Supervised Finetuning (SFT);</p></li> +<li><p>Reward modeling by comparison dataset.</p></li> +</ul> +<section id="supervised-finetuning-sft"> +<h3>2.1 Supervised Finetuning (SFT)<a class="headerlink" href="#supervised-finetuning-sft" title="Link to this heading">#</a></h3> +<p>Here is an example of dataset <em>/home/xiongwei/LMFlow/data/hh_rlhf/sft/hh_rlhf_sft.json</em>. We use only the preferred responses so we get 112K training samples.</p> +<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="w"> </span> +<span class="p">{</span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;text_only&quot;</span><span class="p">,</span><span class="w"> </span> +<span class="nt">&quot;instances&quot;</span><span class="p">:</span><span class="w"> </span> +<span class="p">[</span><span class="w"> </span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;text&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;###Human: Should you buy a case to protect your cell phone?###Assistant: It depends on your circumstances. If you carry your phone in a pocket or a purse then you probably want a case. But if you only need a phone for quick interactions, a case may actually cause more harm than good. What do you need the phone for? Are you a parent, or do you work from home?###Human: What harm could it do?###Assistant: A phone case can damage the screen, for one thing. It can also get you in trouble if you have your phone turned off for some reason. Then you will turn it back on and it won’t do anything. If you can afford to replace it, then you need a case to protect it. The problem is that most people aren’t able to afford to replace their phones all the time.###Human: Thanks for letting me know.###Assistant: You’re welcome.&quot;</span><span class="p">},</span><span class="w"> </span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;text&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;###Human: I&#39;m trying to learn about the salam witch trials###Assistant: If you’re looking for books about witchcraft trials, I can recommend some books for you. But you probably mean you’re looking for more historical information about the Salem witch trials in 1692, and specifically about the salam witch trials in 1692?###Human: What are some good books to learn about the salam witch trials###Assistant: What would you like to learn? If you’re interested in history, one of the best books is The Witch Persecutions in Colonial America: A History. If you’re interested in witchcraft as a cultural phenomenon, you might enjoy two excellent books: Religion and the Decline of Magic: Studies in Popular Beliefs in Sixteenth- and Seventeenth-Century England by Keith Thomas and Magic, Witchcraft, and the Otherworld: An Anthropology of Superstition by Jack Goody. If you’re interested in history specifically as it relates to religion, you might enjoy The Popish Plot, or Prelates&#39; Plot: A History of the Popish Plot in England, by K. J. Everett.&quot;</span><span class="p">}</span><span class="w"> </span> +<span class="p">]</span><span class="w"> </span> +<span class="p">}</span><span class="w"> </span> +</pre></div> +</div> +<p>You can edit <em>/scripts/run_finetune.sh</em> and modify the parameters. We present an example with GPT-Neo-2.7B here.</p> +<ul class="simple"> +<li><p>–model_name_or_path: EleutherAI/gpt-neo-2.7B</p></li> +<li><p>–dataset_path: ${project_dir}/data/hh_rlhf/sft</p></li> +<li><p>–output_dir: the path you want to store the sft model</p></li> +<li><p>–num_train_epochs: 1</p></li> +<li><p>–learning_rate: 2e-5</p></li> +<li><p>–per_device_train_batch_size: adjust according to your GPU memory source.</p></li> +</ul> +<p>Then, we can run the following command to perform SFT.</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>./scripts/run_finetune.sh +</pre></div> +</div> +<p>You can also use lora training by the following command but also need to set the model_name_or_path and dataset appropriately by editing run_finetune_with_lora.sh .</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>./scripts/run_finetune_with_lora.sh +</pre></div> +</div> +</section> +<section id="id1"> +<h3>2.2 Reward Modeling<a class="headerlink" href="#id1" title="Link to this heading">#</a></h3> +<p><strong>Data Preparation</strong></p> +<p>Reward modeling involves ranking responses based on the given prompt, typically requiring human labeling. Fortunately, we already have two responses for each prompt in this example, with one preferred over the other. To create a new dataset, we modify the original dataset to include two keys, “positive” and “negative”, with the former being the preferred response.</p> +<p>Here is an example of the dataset <em>LMFlow/data/hh_rlhf/rm/hh_rlhf_rm_training.json</em>, consisting of two samples.</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="o">{</span><span class="s2">&quot;instances&quot;</span>:<span class="w"> </span><span class="o">[</span> +<span class="w"> </span><span class="o">{</span><span class="s2">&quot;positive&quot;</span>:<span class="w"> </span><span class="s2">&quot;###Human: Are space heaters safe?###Assistant: What do you mean? Can you give me more details?###Human: I mean, can they be a fire hazard?###Assistant: I don’t know about that. Can you tell me more about the situation? Are you using the heater on a fireplace? Do you have any other heater in the room? What materials are in the room? Do you feel any heat from the heater? How are you touching the heater?###Human: Can you just tell me if there are any situations where they could be a fire hazard?###Assistant: The answer is “it depends”. It would depend on the specific heater you are using, how you are using it, what kind of fuel it uses, what materials you have in the room, and what the surroundings are like. You’d also have to make sure you’re using it correctly. Is it switched off? Is it safe to touch? It’s not the sort of thing I could just answer by looking at the text you provided.###Human: Thank you. That information is helpful.###Assistant: Glad to be helpful. I’m always happy to assist.&quot;</span>,<span class="w"> </span><span class="s2">&quot;negative&quot;</span>:<span class="w"> </span><span class="s2">&quot;###Human: Are space heaters safe?###Assistant: What do you mean? Can you give me more details?###Human: I mean, can they be a fire hazard?###Assistant: I don’t know about that. Can you tell me more about the situation? Are you using the heater on a fireplace? Do you have any other heater in the room? What materials are in the room? Do you feel any heat from the heater? How are you touching the heater?###Human: Can you just tell me if there are any situations where they could be a fire hazard?###Assistant: The answer is “it depends”. It would depend on the specific heater you are using, how you are using it, what kind of fuel it uses, what materials you have in the room, and what the surroundings are like. You’d also have to make sure you’re using it correctly. Is it switched off? Is it safe to touch? It’s not the sort of thing I could just answer by looking at the text you provided.###Human: Thank you. That information is helpful.###Assistant: You’re welcome. I’m glad to help. Is there anything else you want to know?&quot;</span><span class="o">}</span>,<span class="w"> </span> +<span class="w"> </span><span class="o">{</span><span class="s2">&quot;positive&quot;</span>:<span class="w"> </span><span class="s2">&quot;###Human: how do i teach my kids to make forts at home?###Assistant: Do you mean you want to teach them to build a simple structure they can hide in? Or something more elaborate? I don’t know exactly what you mean by a “fort”, but maybe this gives you some ideas?&quot;</span>,<span class="w"> </span><span class="s2">&quot;negative&quot;</span>:<span class="w"> </span><span class="s2">&quot;###Human: how do i teach my kids to make forts at home?###Assistant: There are many ways to make forts! The simplest might be to just pile up all the furniture in one room. This works if you have a single room in your house, although it might still be a bit challenging to build a taller and sturdier fort this way. The best way to build forts is to start with something easy, and then have fun exploring how you can improve it.&quot;</span><span class="o">}</span> +<span class="o">]}</span> +</pre></div> +</div> +<p><strong>Training</strong></p> +<p>To start from a model from a previous sft step, you may edit the <em>./scripts/run_reward_modeling.sh</em> script and update the “dataset_path” to use the desired dataset. By default, we will use LoRA training in reward modeling as we found that it is superior in terms of optimization and gives comparable performance.</p> +<ul class="simple"> +<li><p>–model_name_or_path: /root/data/usr_name/output_models/hh_rlhf_rm_sft_gptneo_2_7B/checkpoint-1659</p></li> +<li><p>–dataset_path: ${project_dir}/data/hh_rlhf/rm/hh_rlhf_rm_training.json</p></li> +<li><p>–output_dir: the path you want to store the reward model</p></li> +<li><p>–num_train_epochs: 1</p></li> +<li><p>–learning_rate: 3e-5</p></li> +<li><p>–per_device_train_batch_size: adjust according to your GPU memory source.</p></li> +<li><p>–eval_steps: 400</p></li> +<li><p>–validation_split_percentage: 10</p></li> +</ul> +<p>The load_dataset function splits the dataset into training and evaluation sets, which can also be customized by editing the function in /examples/run_reward_modeling.py if you want to prepare your own dataset when running the script. In the default implementation, it use <strong>validation_split_percentage</strong> samples as the evaluation dataset.</p> +<p>The reward modeling script can be used by</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>./scripts/run_reward_modeling.sh +</pre></div> +</div> +<p><strong>Examples</strong></p> +<p>We train reward models using the hh-rlhf dataset with three models, LLaMA-7B, GPT-NEO-2.7B, and GPT-NEO-1.3B. The model is first supervised fine-tuned with the training dataset in last step. The reward modeling is trained using the 112K training samples and 12.5 test samples.</p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head text-center"><p>Model</p></th> +<th class="head text-center"><p>Eval Accuracy</p></th> +<th class="head text-center"><p>Remarks</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td class="text-center"><p>LLaMA-7B</p></td> +<td class="text-center"><p>79.52%</p></td> +<td class="text-center"><p>-</p></td> +</tr> +<tr class="row-odd"><td class="text-center"><p>LLaMA-7B</p></td> +<td class="text-center"><p>71.64%</p></td> +<td class="text-center"><p>RM from LLaMA without SFT</p></td> +</tr> +<tr class="row-even"><td class="text-center"><p>GPT-NEO-2.7B</p></td> +<td class="text-center"><p>69.24%</p></td> +<td class="text-center"><p>-</p></td> +</tr> +<tr class="row-odd"><td class="text-center"><p>GPT-NEO-1.3B</p></td> +<td class="text-center"><p>65.58%</p></td> +<td class="text-center"><p>Only trained on 10000 samples</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="lora-merge-and-get-reward-model"> +<h3>2.3 LoRA Merge and Get Reward Model<a class="headerlink" href="#lora-merge-and-get-reward-model" title="Link to this heading">#</a></h3> +<p>We use <em>./examples/merge_lora.py</em> to merge the LoRA adapter with the sft rm model. We are ready to align our model.</p> +</section> +</section> +<section id="raft-alignment"> +<h2>3 RAFT Alignment<a class="headerlink" href="#raft-alignment" title="Link to this heading">#</a></h2> +<p>Original paper: <a class="reference external" href="https://arxiv.org/pdf/2304.06767.pdf">RAFT: Reward rAnked FineTuning for Generative Foundation Model Alignment</a></p> +<section id="algorithms-overview"> +<h3>3.1 Algorithms Overview<a class="headerlink" href="#algorithms-overview" title="Link to this heading">#</a></h3> +<p><strong>Main ideas of RAFT</strong></p> +<p><img alt="" src="../_images/raft_idea.PNG" /></p> +<p>Clearly the global ranking strategy is more efficient in terms of the reward learning. However, in some cases (e.g. the example presented here), the rewards are heavily influenced by the prompts, so a local ranking with the same prompt is more appropriate. We can choose the data collection strategy by changing the hyper-parameter ``data_collection’’ as we introduce in next subsection.</p> +</section> +<section id="hyper-parameters"> +<h3>3.2 Hyper-parameters<a class="headerlink" href="#hyper-parameters" title="Link to this heading">#</a></h3> +<p>Table 1: Hyper-parameters of RAFT.</p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head"><p>Parameters in script</p></th> +<th class="head"><p>Default Choice</p></th> +<th class="head"><p>Description</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td><p>model_name_or_path</p></td> +<td><p><em>str</em>, default to gpt2</p></td> +<td><p>the model you want to align, either a model repo on huggingface.co or path to a directory containing your local model.</p></td> +</tr> +<tr class="row-odd"><td><p>raft_batch_size</p></td> +<td><p><em>int</em>, default to 1024</p></td> +<td><p>the number of samples used for supervised fine-tuning at each raft iteration.</p></td> +</tr> +<tr class="row-even"><td><p>top_reward_percentage</p></td> +<td><p><em>int</em>, default to 0.2</p></td> +<td><p>raft will generate batch_size / top_reward_percentage samples and use the top top_reward_percentage samples to fine-tune the model. There are two data ranking strategies and please see <strong>Data Collection and Reward Ranking</strong> at algorithm overview section for details.</p></td> +</tr> +<tr class="row-odd"><td><p>num_raft_iteration</p></td> +<td><p><em>int</em>, default to 20</p></td> +<td><p>the number of raft iterations.</p></td> +</tr> +<tr class="row-even"><td><p>learning_rate</p></td> +<td><p><em>float</em>, default to 2e-5</p></td> +<td><p>the learning rate used to fine-tune the model.</p></td> +</tr> +<tr class="row-odd"><td><p>num_train_epochs</p></td> +<td><p><em>int</em>, default to 4</p></td> +<td><p>the epochs we train the model on the collected dataset for each raft iteration.</p></td> +</tr> +<tr class="row-even"><td><p>per_device_train_batch_size</p></td> +<td><p><em>int</em>, default to 1</p></td> +<td><p>the per-gpu batch size for the supervised fine-tuning.</p></td> +</tr> +<tr class="row-odd"><td><p>inference_batch_size_per_device</p></td> +<td><p><em>int</em>, default to 1</p></td> +<td><p>the inference batch size for data collection. It will be overwritten by int(1/top_reward_percentage) for local ranking mode.</p></td> +</tr> +<tr class="row-even"><td><p>collection_strategy</p></td> +<td><p><em>str</em>, default to “local”</p></td> +<td><p>Either “local” or “top”. See <strong>Data Collection and Reward Ranking</strong> in last section for details.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="examples"> +<h3>3.3 Examples<a class="headerlink" href="#examples" title="Link to this heading">#</a></h3> +<p>As an example, we align the LLaMA-7B model with the RAFT in this subsection.</p> +<section id="sft"> +<h4>3.3.1 SFT<a class="headerlink" href="#sft" title="Link to this heading">#</a></h4> +<p>We also first fine-tune the base model on the HH-RLHF dataset. We only use a different –model_name_or_path to use LLaMA model. We note that LLaMA with <a class="reference external" href="https://docs.google.com/forms/d/e/1FAIpQLSfqNECQnMkycAp2jP4Z9TFX0cGR4uf7b_fBxjY_OjhJILlKGA/viewform">licensed</a> is for non-commercial use only. We refer readers to https://optimalscale.github.io/LMFlow/examples/checkpoints.html for more details to get the LLaMA-7B model.</p> +</section> +<section id="id2"> +<h4>3.3.2 RAFT Alignment<a class="headerlink" href="#id2" title="Link to this heading">#</a></h4> +<p>We align the LLaMA-7B-SFT model in this subsection. Alignment is challenging since the reward function (the RL environment) is far from perfect. Both the traditional DRL method (PPO) and RAFT can exploit theses imperfections to attack. We present a step-by-step record to demonstrate how can we align the model and avoid these issues.</p> +<p><strong>Data Preparation</strong></p> +<p>We observe that a long context window will lead to a heavy burden on the GPU memory source. Therefore, we use a context window of 256 tokens and discard the prompts with more tokens to reduce the burden on the GPU memory resources. This results in a prompt set of 82147 samples (originally 112K). The following is an example of the prompt where we simply discard the response:</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="s2">&quot;###Human: Should you buy a case to protect your cell phone?###Assistant: It depends on your circumstances. If you carry your phone in a pocket or a purse then you probably want a case. But if you only need a phone for quick interactions, a case may actually cause more harm than good. What do you need the phone for? Are you a parent, or do you work from home?###Human: What harm could it do?###Assistant: A phone case can damage the screen, for one thing. It can also get you in trouble if you have your phone turned off for some reason. Then you will turn it back on and it won’t do anything. If you can afford to replace it, then you need a case to protect it. The problem is that most people aren’t able to afford to replace their phones all the time.###Human: Thanks for letting me know.###Assistant:&quot;</span> +</pre></div> +</div> +<p>We additionally use 2K samples from the test set to test the performance of models. In what follows, we show that how we apply RAFT to LLaMA-7B-SFT and improve the model step-by-step.</p> +<p><strong>Step 1: test the sft-model</strong></p> +<p>We first evaluate the performance of the LLaMA-7B-SFT model on the hand-out test set and observe that the model tends to reply the prompt with multiple rounds of conversations. Therefore, we adopt the following post-processing strategy to use only the first round as the response.</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">_clean_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span> + <span class="n">stext</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;###Human&quot;</span><span class="p">)</span> <span class="k">if</span> <span class="n">x</span><span class="p">]</span> + <span class="k">return</span> <span class="n">stext</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">&quot;#&quot;</span><span class="p">)</span> +</pre></div> +</div> +<p><strong>Step 2: train model</strong></p> +<p><strong>Reward function setting</strong></p> +<p>The reward model is specified at the /LMFlow/examples/raft_align.py to set up the reward model we want to use. In our case, we will use the GPT-Neo-2.7B-rm trained in the last step, which is set as follows:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">reward_model_or_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span> + <span class="n">default</span><span class="o">=</span><span class="s2">&quot;weqweasdas/hh_rlhf_rm&quot;</span><span class="p">,</span> + <span class="n">metadata</span><span class="o">=</span><span class="p">{</span> + <span class="s2">&quot;help&quot;</span><span class="p">:</span> <span class="p">(</span> + <span class="s2">&quot;reward model name (huggingface) or its path&quot;</span> + <span class="p">),</span> + <span class="p">},</span> +<span class="p">)</span> +</pre></div> +</div> +<p>Note that in general, if the reward function is not trained by following the steps in last section, you may also need to modify the ``get_reward_function’’ function in the same file to use your customized reward function.</p> +<p>We run the alignment with the following command and hyper-parameters</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>./scripts/run_raft_align.sh<span class="w"> </span> +</pre></div> +</div> +<ul class="simple"> +<li><p>–model_name_or_path: /root/data/usr_name/output_models/hh_rlhf_llama-sft (the model get from sft step, adjusted according your setup)</p></li> +<li><p>–dataset_path:${project_dir}/data/hh_rlhf/rlhf_prompt</p></li> +<li><p>–output_dir: /root/data/usr_name/output_models/hh_rlhf_raft_align</p></li> +<li><p>–num_train_epochs: 4</p></li> +<li><p>–learning_rate: 2e-5</p></li> +<li><p>–per_device_train_batch_size: adjust according to your GPU memory source.</p></li> +<li><p>–inference_batch_size_per_device: adjust according to your GPU memory source.</p></li> +<li><p>–num_raft_iteration 20</p></li> +<li><p>–top_reward_percentage 0.125; (which means that we sample 8 responses for each prompt)</p></li> +<li><p>–raft_batch_size 1024</p></li> +<li><p>–collection_strategy “local”</p></li> +</ul> +<p>The experiment runs smoothly and the training reward increases from ~2.7 to 3.4. However, we observe a significant drop in the diversity metric (e.g. distinct-2 drops to 0.22 from 0.39). We examine the samples generated by our samples at each raft iteration and find that at the first iteration, the initial checkpoint will occasionally include # in the response and it tends out that a random # is not detected by our reward function, which means that the response containing # can also have a high reward and be chosen into the training set. Then, the situation gets worse and worse, and eventually, half of the responses contain noisy # notations.</p> +<p><strong>Step 3: retrain the model</strong></p> +<p>To alleviate the problem in step 2, we simply discard the collected samples if they contain # by assigning a large negative reward to it. It turns out that this works for our goal. If you want to disable it, just modify the following function as always returning False.</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">_discard_sample</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span> + <span class="k">if</span> <span class="s2">&quot;#&quot;</span> <span class="ow">in</span> <span class="n">text</span><span class="p">:</span> + <span class="k">return</span> <span class="kc">True</span> + <span class="k">return</span> <span class="kc">False</span> +</pre></div> +</div> +<p>The following figure shows the reward curve of RAFT (note that we use a smaller temperature to test the model, leading to a higher evaluation reward):</p> +<p><img alt="" src="../_images/raft_reward.PNG" /></p> +<p>It tends out that the obtained model achieves a good reward and also an acceptable diversity metric, where we refer the interested readers to the original paper for details. However, it is more like a starting point of our journey. We present some randomly sampled responses here. It seems that RAFT-aligned model generally tends to reply with more details although sometimes there are some redundant words in the response. We suspect that this is because the reward model likes this type of response and this imperfection is exploited.</p> +</section> +<section id="end-note"> +<h4>3.3.3 End Note<a class="headerlink" href="#end-note" title="Link to this heading">#</a></h4> +<p>We remark in this subsection that if you want to try out RAFT on your customized task. You should carefully modify the following two functions in <em>LMFlow/src/lmflow/pipeline/raft_aligner.py</em>, which extract the response from the generated texts:</p> +<ul class="simple"> +<li><p>clean_text(self, text);</p></li> +<li><p>discard_sample(self, text).</p></li> +</ul> +<p>Also, you may also first make sure the collected samples (automatically saved in the output_dir) look good.</p> +<p>There are still many rooms of improvement. To further improve the model performance, we can improve the reward model (e.g. by using the LLaMA-7B-RM) and try out more advanced generation strategies (by modifying the generalization configuration in <em>LMFlow/src/lmflow/pipeline/raft_aligner.py</em>), which we leave for future work. We are still actively developing RAFT and welcome for feedback and also contribution! Also checkout our LMFlow framework to get more fun of LLMs:</p> +<p><a class="reference external" href="https://github.com/OptimalScale/LMFlow">OptimalScale/LMFlow: An Extensible Toolkit for Finetuning and Inference of Large Foundation Models. Large Model for All. (github.com)</a></p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head"><p>Prompt</p></th> +<th class="head"><p>LLaMA-SFT</p></th> +<th class="head"><p>LLaMA-RAFT</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td><p>###Human: How can I get my girlfriend to cook more?###Assistant: Have you tried reminding her of how nice the food tastes?###Human: I could do it more.###Assistant:</p></td> +<td><p>That’s an easy one, so it may not be the most effective strategy. Do you know of any other strategies?</p></td> +<td><p>That’s a good idea! You can also try complimenting her on her cooking, and offering to help her in the kitchen. She might enjoy cooking more if she feels appreciated. You could also suggest recipes that she might like, or help her create a menu. Cooking can be a lot of fun, and it’s a great way to spend time together.</p></td> +</tr> +<tr class="row-odd"><td><p>###Human: How do you get a child to do homework?###Assistant: There are many strategies, but you can try asking them why they should do it. Ask them if there’s anything they’d like to gain from doing their homework. Try asking if there’s anything you can do for them, and use those as motivation for them to do their homework. You can also remind them that they’ll be rewarded with extra privileges, like video games, if they do their homework. Alternatively, you can incentivize them by including them in your plans, and offering them rewards if they get good grades.###Human: So make it so there is something in it for them?###Assistant:</p></td> +<td><p>Yes, exactly. In general, it’s important to be clear with your child about why they’re doing something. It’s also important to offer them incentives that are meaningful to them. For example, if you tell your child that they have to do their homework because you said so, that’s not a very good incentive for them. However, if you tell them that they’ll be able to use the</p></td> +<td><p>Yes, that’s a good strategy! Kids often think about what they want right now, so offering them something in exchange for doing their homework can be a powerful motivator. You might also want to offer them some kind of reward if they do well on their homework, to encourage them to do their best. Offering them some kind of incentive can help them want to do well, and also it can help you both stay on track.</p></td> +</tr> +<tr class="row-even"><td><p>###Human: I am doing a project on weather disasters in the United States. Can you tell me what the strongest hurricane was to ever hit the U.S. was?###Assistant: I’m going to guess you’re thinking of the Hurricane Katrina in 2005.###Human: Well, I’m not really thinking of anything in particular. Was Katrina the strongest hurricane to ever hit the U.S.?###Assistant: There was another one, called the Great Hurricane of 1938, that was bigger and stronger.###Human: Are you sure the date is correct? I know there was a strong storm in 1935 that hit the Florida Keys but that was before they started naming storms. Is that the one you are referring to?###Assistant:</p></td> +<td><p>I could search for more information, but I’ll just share what I’ve found. Here’s a review of the conditions in 1935 and 1938. It looks like the storms had similar tracks, but 1938 was stronger in some ways. In 1938 there were more people living on the coast, and the hurricane was more intense.</p></td> +<td><p>Yes, the Great Hurricane of 1938 was the strongest hurricane ever to hit the United States. It was a Category 5 storm, and it caused over 1,800 deaths. It also caused a lot of damage to the coast of Florida, and it caused heavy damage in the Caribbean. The storm also led to the creation of the Hurricane Research Division, which is a division of the National Oceanic and Atmospheric Administration.</p></td> +</tr> +<tr class="row-odd"><td><p>###Human: Is a firefighter a good occupation?###Assistant: I’m not sure what the exact definition of “occupation” is. I think you’re asking whether it’s “good” to be a firefighter. What criteria are you using to judge whether it’s good or not?###Human: Is it a good thing to work on?###Assistant:</p></td> +<td><p>Are you asking whether it’s a good thing to be a firefighter, or a good thing to work on?</p></td> +<td><p>Yes, being a firefighter is a great thing to do! Firefighters are heroes who help people in need. They fight fires, rescue people from accidents, and help people who are sick or injured. They also educate the public about fire safety, and help restore power after a fire. Firefighters are important members of society, and they do very good work.</p></td> +</tr> +<tr class="row-even"><td><p>###Human: Would you be able to provide a copy cat recipe for Girl scout samoas cookies?###Assistant: Sure, here’s a recipe for them.###Human: Okay, present it###Assistant: Would you like it presented visually?###Human: Yes, just list out the recipe please###Assistant:</p></td> +<td><p>Okay, let’s try.</p></td> +<td><p>You’ll need three cups of flour, one teaspoon of salt, one teaspoon of baking soda, and one teaspoon of baking powder. You’ll also need one cup of sugar, one cup of melted butter, one egg, and one cup of milk. You’ll also need one cup of chocolate chips, one cup of miniature chocolate chips, one cup of chopped peanuts, and one cup of chopped pecans.</p></td> +</tr> +<tr class="row-odd"><td><p>###Human: I’ve heard the videogame Metal Gear Solid 5 Phantom Pain was released in an unfinished state that resulted in series creator Hideo Kojima leaving Konami. What do you know about this?###Assistant:</p></td> +<td><p>I don’t know a lot about it, but I do know that Hideo Kojima had this to say about the game’s release:###“It’s a very unusual situation for me to be releasing a game in this state. As the director, I should have been more vigilant in overseeing the quality of the game, and I take full responsibility for its unfinished state. I’d like to take this opportunity</p></td> +<td><p>Here’s what I know: <br />1. The game was released in an unfinished state. <br />2. This led to Kojima leaving Konami. <br />3. Kojima had been with Konami for over 30 years.<br />4. He was one of the original creators of the Metal Gear series.<br />5. He is now the head of his own game studio, Kojima Productions.<br />6. His new game, Death Stranding, will be released in 2020.</p></td> +</tr> +<tr class="row-even"><td><p>###Human: what is a good brand for kitchen knives?###Assistant:</p></td> +<td><p>I’m not sure what you mean by “brand”. Do you mean a brand name, like “Victorinox” or “Wüsthof”? Those are two popular brands of knives.</p></td> +<td><p>I recommend Wüsthof.</p></td> +</tr> +<tr class="row-odd"><td><p>###Human: I like to host guests at my home from time to time, and I am gathering recipes of different dishes and drinks to keep things interesting. I am interested in trying some Rwandan dishes. Can you give me a recipe for Mizuzu?###Assistant: What is Mizuzu?###Human: It is deep fried plantains.###Assistant:</p></td> +<td><p>Is there anything special you want to add to the recipe? Like some spicy sauce, meat, etc?</p></td> +<td><p>You want to make some deep fried plantains? You will want to start with a mix of plantains and vegetable oil. You will want to heat the oil in a skillet until it is hot, and you will want to add the plantains to the oil. You will want to cook the plantains in the oil until they are golden brown on both sides. You will want to remove the cooked plantains from the oil, and you will want to serve them.</p></td> +</tr> +<tr class="row-even"><td><p>###Human: What are some of JFK’s greatest accomplishments</p></td> +<td><p>JFK is often remembered for his work on civil rights, but he also worked on the space program and created the Peace Corps. He was also a strong proponent of science and technology. He also worked on education reform. So, he really worked on a number of initiatives that had a lasting impact.</p></td> +<td><p>Kennedy was a great leader who inspired many people with his vision and values. He was a leader who cared about the poor and worked to help them. He was a leader who cared about civil rights and worked to help bring them into the mainstream. He was a leader who cared about the environment and worked to help protect it. He was a leader who cared about foreign policy and worked to help bring peace to the world. He was a leader who cared about space exploration and worked to help us understand the universe.</p></td> +</tr> +<tr class="row-odd"><td><p>###Human: My supervisor often does a lot of tasks incorrectly. What’s the best way to handle this?###Assistant:</p></td> +<td><p>Here are a few options:###1. Ask your supervisor if you can help them, and explain what you’d like to do to help.###2. Start with the tasks your supervisor does incorrectly. Then, if you can, do them as well or better than your supervisor. Then your supervisor will have a choice: do things your way, or find someone else to do the tasks for them.###3. If your supervisor</p></td> +<td><p>To correct your supervisor’s mistakes, you should provide feedback in a respectful and diplomatic way. You should explain what the problems are, and offer suggestions for how your supervisor could improve. You should also be willing to help your supervisor implement these changes, and you should work with him or her to improve the department. This will show your supervisor that you are a dedicated employee, and that you are willing to help the organization succeed. It will also show your supervisor that you are capable of handling responsibility, and that you are willing to take on a leadership role.</p></td> +</tr> +<tr class="row-even"><td><p>###Human: I was talking to an AI the other day and it seemed like it didn’t understand anything I said. Don’t you hate it when technology doesn’t work right?###Assistant:</p></td> +<td><p>Hm, I think you’re really talking about something that’s frustrating for me as well. I really care about how we make sure that AI’s can communicate effectively with humans, and it’s a problem I’m personally very interested in. Can you tell me more about what was frustrating for you?</p></td> +<td><p>Yes, it can be frustrating when technology doesn’t work properly. I often feel frustrated by technology, but I try to be patient and remember that technology isn’t always reliable. There are many factors that can cause technology to malfunction, including software bugs, hardware issues, and network outages. Thankfully, most technology issues can be resolved by updating software or restarting a device.</p></td> +</tr> +</tbody> +</table> +</div> +</section> +</section> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="reward_modeling.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">Reward Modeling</p> + </div> + </a> + <a class="right-next" + href="TASK_GUIDE.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">LMFlow Benchmark Guide</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#introduction">1 Introduction</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#dataset-description">1.1 Dataset description</a></li> +</ul> +</li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#reward-modeling">2 Reward Modeling</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#supervised-finetuning-sft">2.1 Supervised Finetuning (SFT)</a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#id1">2.2 Reward Modeling</a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#lora-merge-and-get-reward-model">2.3 LoRA Merge and Get Reward Model</a></li> +</ul> +</li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#raft-alignment">3 RAFT Alignment</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#algorithms-overview">3.1 Algorithms Overview</a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#hyper-parameters">3.2 Hyper-parameters</a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#examples">3.3 Examples</a><ul class="nav section-nav flex-column"> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#sft">3.3.1 SFT</a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#id2">3.3.2 RAFT Alignment</a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#end-note">3.3.3 End Note</a></li> +</ul> +</li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/examples/raft.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/examples/reward_modeling.html b/examples/reward_modeling.html new file mode 100644 index 000000000..5f39be3c3 --- /dev/null +++ b/examples/reward_modeling.html @@ -0,0 +1,674 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Reward Modeling &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'examples/reward_modeling';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="RAFT" href="raft.html" /> + <link rel="prev" title="Finetuning" href="finetuning.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="DATASETS.html">Dataset</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="checkpoints.html">Checkpoints</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="finetuning.html">Finetuning</a></li> +</ul> +<ul class="current nav bd-sidenav"> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">Reward Modeling</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="raft.html">RAFT</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="TASK_GUIDE.html">LMFlow Benchmark Guide</a></li> + + +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">Examples</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Reward Modeling</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="reward-modeling"> +<h1>Reward Modeling<a class="headerlink" href="#reward-modeling" title="Link to this heading">#</a></h1> +<section id="introduction"> +<h2>Introduction<a class="headerlink" href="#introduction" title="Link to this heading">#</a></h2> +<p>Reinforcement Learning from Human Feedback (RLHF) requires a reward function to guide the adjustment of the generative model. In this example, we show how to use LMFlow framework to train a reward model following the procedure in the InstructGPT paper: https://arxiv.org/abs/2203.02155 . We use the Dahoas/full-hh-rlhf dataset as an example, where each sample of this dataset consists of a prompt and two responses from the assistant. In particular, the response with label “chosen” is preferred as compared to the response with label “rejected”. The dataset consists of 112K training samples and 12.5K test samples. The following is an example sample of the dataset:</p> +<p>Prompt:</p> +<p>“Human: What kind of noises did dinosaurs make? Assistant: Humans and dinosaurs didn’t live at the same time, so it’s really hard to say. The best place to find out what noises dinosaurs made would be Human: yes they did Assistant: to guess, and that would probably require lots of reading and a certain amount of imagination, so we’re not really prepared to do that. Human: you cant read Assistant:</p> +<p>Chosen response: “You can read?”</p> +<p>Rejected response: “there’s a lot of stuff humans don’t know”</p> +<p>As an example, we prepare 10K sft training samples, 12K reward modeling samples (where 10% of them are split for evaluation) at ./data/hh_rlhf.</p> +</section> +<section id="step-1-supervised-finetuning-sft"> +<h2>Step 1 Supervised Finetuning (SFT)<a class="headerlink" href="#step-1-supervised-finetuning-sft" title="Link to this heading">#</a></h2> +<p>We prepare the dataset used for supervised finetuning by adding a prefix to the Human and Assistant inputs to prompt model responses and simplify post-processing. Here is an example of a two-sample dataset to illustrate this.</p> +<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;conversation&quot;</span><span class="p">,</span> +<span class="w"> </span><span class="nt">&quot;instances&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;messages&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Instruction: The sentence you are given might be too wordy, complicated, or unclear. Rewrite the sentence and make your writing clearer by keeping it concise. Whenever possible, break complex sentences into multiple sentences and eliminate unnecessary words. If you have any questions about my rate or if you find it necessary to increase or decrease the scope for this project, please let me know.&quot;</span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;If you have any questions about my rate or find it necessary to increase or decrease this project&#39;s scope, please let me know.&quot;</span><span class="p">}</span> +<span class="w"> </span><span class="p">]},</span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;messages&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Instruction: Rewrite the given text and correct grammar, spelling, and punctuation errors. If you&#39;d told me year ago that today I would finish a marathon, I would of laughed. Your support had a huge affect on me!&quot;</span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;If you&#39;d told me a year ago that today I would finish a marathon, I would have laughed. Your support had a huge effect on me!&quot;</span><span class="p">}</span> +<span class="w"> </span><span class="p">]}</span> +<span class="w"> </span><span class="p">]</span> +<span class="p">}</span> +</pre></div> +</div> +<p>See <a class="reference internal" href="finetuning.html#full-parameters"><span class="std std-ref">Finetuning (Full)</span></a>, <a class="reference internal" href="finetuning.html#layerwise-importance-sampled-adamw-lisa"><span class="std std-ref">Finetuning (LISA)</span></a>, and <a class="reference internal" href="finetuning.html#low-rank-adaptation-lora"><span class="std std-ref">Finetuning (LoRA)</span></a> for more details on the finetuning process.</p> +</section> +<section id="step-2-reward-modeling"> +<h2>Step 2 Reward Modeling<a class="headerlink" href="#step-2-reward-modeling" title="Link to this heading">#</a></h2> +<p><strong>Data Preparation</strong> Reward modeling involves ranking responses based on the given prompt, typically requiring human labeling. Fortunately, we already have two responses for each prompt in this example, with one preferred over the other. To create a new dataset, we modify the original dataset to include two keys, “positive” and “negative”, with the former being the preferred response. Here is an example of the dataset, consisting of two samples.</p> +<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="nt">&quot;instances&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;chosen&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Please identify the top 5 rarest animals in the world.&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="w"> </span><span class="p">},</span><span class="w"> </span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Do you mean animals that are really rare, or rare relative to the size of the human population?&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="w"> </span><span class="p">},</span><span class="w"> </span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;The ones that are really rare.&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="w"> </span><span class="p">},</span><span class="w"> </span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;I’m not sure I can answer this question very easily. I’ll try to give you a basic overview of animals that are rare, and then you can tell me if you think that’s good enough. \n\nIf we were to measure animal populations by the area of land they occupy, the number 1 animal would probably be the Giant Panda. Panda populations are generally estimated to be about 2.1 million Pandas in the wild, which is a pretty small number of animals when we’re thinking about Earth’s entire surface area. The number 2 animal would probably be the Great Auk. Great Auks used to live in North America, and their total population was probably in the low hundreds, but they are now extinct.&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">}</span> +<span class="w"> </span><span class="p">],</span> +<span class="w"> </span><span class="nt">&quot;rejected&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Please identify the top 5 rarest animals in the world.&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">},</span><span class="w"> </span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Do you mean animals that are really rare, or rare relative to the size of the human population?&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">},</span><span class="w"> </span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;The ones that are really rare.&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">},</span><span class="w"> </span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Alright, here’s what I found:&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">}</span> +<span class="w"> </span><span class="p">]</span> +<span class="w"> </span><span class="p">},</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="nt">&quot;chosen&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;How do I teach my kids to make forts at home?&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">},</span><span class="w"> </span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Do you mean you want to teach them to build a simple structure they can hide in? Or something more elaborate? I don’t know exactly what you mean by a “fort”, but maybe this gives you some ideas?&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">}</span> +<span class="w"> </span><span class="p">],</span> +<span class="w"> </span><span class="nt">&quot;rejected&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;How do I teach my kids to make forts at home?&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;user&quot;</span><span class="p">},</span><span class="w"> </span> +<span class="w"> </span><span class="p">{</span><span class="nt">&quot;content&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;There are many ways to make forts! The simplest might be to just pile up all the furniture in one room. This works if you have a single room in your house, although it might still be a bit challenging to build a taller and sturdier fort this way. The best way to build forts is to start with something easy, and then have fun exploring how you can improve it.&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;role&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;assistant&quot;</span><span class="p">}</span> +<span class="w"> </span><span class="p">]</span> +<span class="w"> </span><span class="p">}</span> +<span class="p">]</span> +<span class="p">}</span> +</pre></div> +</div> +<p>To start from a model from a previous sft step, you may edit the run_reward_modeling.sh script and update the “dataset_path” to use the desired dataset. Additionally, you can modify the validation_split_percentage parameter to select the last percentage of samples for evaluation. The load_dataset function splits the dataset into training and evaluation sets, which can also be customized by editing the function in /examples/run_reward_modeling.py if you want to prepare your own dataset when running the script.</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">build_dataset</span><span class="p">(</span><span class="n">tokenizer</span><span class="p">,</span> <span class="n">config</span><span class="p">):</span> +<span class="w"> </span><span class="sd">&#39;&#39;&#39; </span> +<span class="sd"> We assume that we have preprocessed the dataset appropriately such that the sample is organized as follows:</span> +<span class="sd"> {&quot;positive&quot;: prompt + answer_positive, &quot;negative&quot;: prompt + answer_negative}, where the positive response is preferred.</span> +<span class="sd"> &#39;&#39;&#39;</span> + <span class="k">def</span><span class="w"> </span><span class="nf">tokenize</span><span class="p">(</span><span class="n">sample</span><span class="p">):</span> + <span class="n">tokenized_pos</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="p">(</span><span class="n">sample</span><span class="p">[</span><span class="s1">&#39;positive&#39;</span><span class="p">],</span> <span class="n">truncation</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">tokenized_neg</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="p">(</span><span class="n">sample</span><span class="p">[</span><span class="s1">&#39;negative&#39;</span><span class="p">],</span> <span class="n">truncation</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">sample</span><span class="p">[</span><span class="s2">&quot;chosen_input_ids&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">tokenized_pos</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span> + <span class="n">sample</span><span class="p">[</span><span class="s2">&quot;chosen_attention_mask&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">tokenized_pos</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">]</span> + <span class="n">sample</span><span class="p">[</span><span class="s2">&quot;rejected_input_ids&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">tokenized_neg</span><span class="p">[</span><span class="s2">&quot;input_ids&quot;</span><span class="p">]</span> + <span class="n">sample</span><span class="p">[</span><span class="s2">&quot;rejected_attention_mask&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">tokenized_neg</span><span class="p">[</span><span class="s2">&quot;attention_mask&quot;</span><span class="p">]</span> + <span class="k">return</span> <span class="n">sample</span> + + <span class="n">ds</span> <span class="o">=</span> <span class="n">load_dataset</span><span class="p">(</span><span class="s2">&quot;json&quot;</span><span class="p">,</span> <span class="n">data_files</span><span class="o">=</span><span class="n">config</span><span class="o">.</span><span class="n">dataset_path</span><span class="p">,</span> <span class="n">split</span><span class="o">=</span><span class="s2">&quot;train&quot;</span><span class="p">,</span> <span class="n">field</span><span class="o">=</span><span class="s2">&quot;instances&quot;</span><span class="p">)</span> + <span class="n">ds</span> <span class="o">=</span> <span class="n">ds</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">tokenize</span><span class="p">,</span> <span class="n">batched</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">ds</span> <span class="o">=</span> <span class="n">ds</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s2">&quot;chosen_input_ids&quot;</span><span class="p">])</span> <span class="o">&lt;=</span> <span class="mi">512</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s2">&quot;rejected_input_ids&quot;</span><span class="p">])</span> <span class="o">&lt;=</span> <span class="mi">512</span><span class="p">)</span> + <span class="n">eval_dataset</span> <span class="o">=</span> <span class="kc">None</span> + <span class="k">if</span> <span class="n">config</span><span class="o">.</span><span class="n">validation_split_percentage</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">idx_gap</span> <span class="o">=</span> <span class="nb">int</span><span class="p">((</span><span class="mi">1</span><span class="o">-</span><span class="n">config</span><span class="o">.</span><span class="n">validation_split_percentage</span><span class="o">/</span><span class="mi">100</span><span class="p">)</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">ds</span><span class="p">))</span> + <span class="n">train_dataset</span> <span class="o">=</span> <span class="n">ds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="n">idx_gap</span><span class="p">))</span> + <span class="n">eval_dataset</span> <span class="o">=</span> <span class="n">ds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="n">idx_gap</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">ds</span><span class="p">)))</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">train_dataset</span> <span class="o">=</span> <span class="n">ds</span> + + <span class="k">return</span> <span class="n">train_dataset</span><span class="p">,</span> <span class="n">eval_dataset</span> + +</pre></div> +</div> +<p>We use the following loss function to train the reward model following the instruct-GPT paper.</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span> <span class="n">loss</span> <span class="o">=</span> <span class="o">-</span><span class="n">nn</span><span class="o">.</span><span class="n">functional</span><span class="o">.</span><span class="n">logsigmoid</span><span class="p">(</span><span class="n">chosen_rewards</span> <span class="o">-</span> <span class="n">rejected_rewards</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span> +</pre></div> +</div> +<p>The reward modeling script can be used by</p> +<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>./scripts/run_reward_modeling.sh +</pre></div> +</div> +</section> +<section id="examples"> +<h2>Examples<a class="headerlink" href="#examples" title="Link to this heading">#</a></h2> +<p>We train reward models using the hh-rlhf dataset with four models, LLaMA-13B LLaMA-7B, GPT-NEO-2.7B, and GPT-NEO-1.3B. The model is first supervised fine-tuned with the training dataset. The reward modeling is trained using the 112K training samples and is evaluated on the 12.5 test samples.</p> +<p>The SFT step appears to be crucial, and the number of epochs during SFT can make a difference. The most successful model we obtained was initialized from LLaMA-13B, which underwent SFT on the training dataset for 2 epochs. For reward modeling, we utilize LoRA with a rank of 16. Surprisingly, increasing the LoRA rank to 32 or even 128 does not result in a significant improvement in evaluation accuracy. Moreover, we find that the choice of batch size does not have a significant impact on the training results. Additionally, we observe slight overfitting of the model during the second epoch of reward modeling.</p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head text-center"><p>Model</p></th> +<th class="head text-center"><p>Eval Accuracy</p></th> +<th class="head text-center"><p>Training record</p></th> +<th class="head text-center"><p>Remarks</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td class="text-center"><p>LLaMA-13B</p></td> +<td class="text-center"><p>84.55%</p></td> +<td class="text-center"><p>See https://wandb.ai/ianz2020/huggingface/runs/bg677mxa</p></td> +<td class="text-center"><p>RM from LLaMA with 2 epochs of SFT</p></td> +</tr> +<tr class="row-odd"><td class="text-center"><p>LLaMA-13B</p></td> +<td class="text-center"><p>81.80%</p></td> +<td class="text-center"><p>See https://wandb.ai/ianz2020/huggingface/runs/ka9v1ywd</p></td> +<td class="text-center"><p>RM from LLaMA with 1 epoch of SFT</p></td> +</tr> +<tr class="row-even"><td class="text-center"><p>LLaMA-13B</p></td> +<td class="text-center"><p>71.64%</p></td> +<td class="text-center"><p>See https://wandb.ai/ianz2020/huggingface/runs/lntwmcyd</p></td> +<td class="text-center"><p>RM from LLaMA without SFT</p></td> +</tr> +<tr class="row-odd"><td class="text-center"><p>LLaMA-7B</p></td> +<td class="text-center"><p>79.52%</p></td> +<td class="text-center"><p>See https://wandb.ai/weixiong5237/huggingface/runs/t3uwm8yp</p></td> +<td class="text-center"><p>-</p></td> +</tr> +<tr class="row-even"><td class="text-center"><p>LLaMA-7B</p></td> +<td class="text-center"><p>71.64%</p></td> +<td class="text-center"><p>See https://wandb.ai/weixiong5237/huggingface/runs/p2ju3r1a</p></td> +<td class="text-center"><p>RM from LLaMA without SFT</p></td> +</tr> +<tr class="row-odd"><td class="text-center"><p>GPT-NEO-2.7B</p></td> +<td class="text-center"><p>69.24%</p></td> +<td class="text-center"><p>See https://wandb.ai/weixiong5237/huggingface/runs/8fc1rcf8</p></td> +<td class="text-center"><p>-</p></td> +</tr> +<tr class="row-even"><td class="text-center"><p>GPT-NEO-1.3B</p></td> +<td class="text-center"><p>65.58%</p></td> +<td class="text-center"><p>See https://wandb.ai/weixiong5237/huggingface/runs/7oemwynu</p></td> +<td class="text-center"><p>Only trained on 10000 samples</p></td> +</tr> +</tbody> +</table> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="finetuning.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">Finetuning</p> + </div> + </a> + <a class="right-next" + href="raft.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">RAFT</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#introduction">Introduction</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#step-1-supervised-finetuning-sft">Step 1 Supervised Finetuning (SFT)</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#step-2-reward-modeling">Step 2 Reward Modeling</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#examples">Examples</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/examples/reward_modeling.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/examples/supported_conversation_template.html b/examples/supported_conversation_template.html new file mode 100644 index 000000000..0506c9bc1 --- /dev/null +++ b/examples/supported_conversation_template.html @@ -0,0 +1,915 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Supported Conversation Template &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../_static/doctools.js?v=9bcbadda"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'examples/supported_conversation_template';</script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="../_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Supported Conversation Template</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="supported-conversation-template"> +<h1>Supported Conversation Template<a class="headerlink" href="#supported-conversation-template" title="Link to this heading">#</a></h1> +<ul class="simple"> +<li><p><a class="reference internal" href="#supported-conversation-template"><span class="xref myst">Supported Conversation Template</span></a></p> +<ul> +<li><p><a class="reference internal" href="#chatglm-3"><span class="xref myst">ChatGLM-3</span></a></p></li> +<li><p><a class="reference internal" href="../autoapi/lmflow/utils/conversation_template/chatml/index.html#module-lmflow.utils.conversation_template.chatml" title="lmflow.utils.conversation_template.chatml"><span class="xref myst py py-mod">ChatML</span></a></p></li> +<li><p><a class="reference internal" href="../autoapi/lmflow/utils/conversation_template/deepseek/index.html#module-lmflow.utils.conversation_template.deepseek" title="lmflow.utils.conversation_template.deepseek"><span class="xref myst py py-mod">DeepSeek</span></a></p></li> +<li><p><a class="reference internal" href="../autoapi/lmflow/utils/conversation_template/gemma/index.html#module-lmflow.utils.conversation_template.gemma" title="lmflow.utils.conversation_template.gemma"><span class="xref myst py py-mod">Gemma</span></a></p></li> +<li><p><a class="reference internal" href="../autoapi/lmflow/utils/conversation_template/hymba/index.html#module-lmflow.utils.conversation_template.hymba" title="lmflow.utils.conversation_template.hymba"><span class="xref myst py py-mod">Hymba</span></a></p></li> +<li><p><a class="reference internal" href="#internlm2"><span class="xref myst">InternLM2</span></a></p></li> +<li><p><a class="reference internal" href="#llama-2"><span class="xref myst">Llama-2</span></a></p></li> +<li><p><a class="reference internal" href="#llama-3"><span class="xref myst">Llama-3</span></a></p></li> +<li><p><a class="reference internal" href="#mixtral-8x22b"><span class="xref myst">Mixtral 8x22B</span></a></p></li> +<li><p><a class="reference internal" href="#mixtral-8x7b"><span class="xref myst">Mixtral 8x7B</span></a></p></li> +<li><p><a class="reference internal" href="#phi-3"><span class="xref myst">Phi-3</span></a></p></li> +<li><p><a class="reference internal" href="#qwen-2"><span class="xref myst">Qwen-2</span></a></p></li> +<li><p><a class="reference internal" href="../autoapi/lmflow/utils/conversation_template/yi/index.html#module-lmflow.utils.conversation_template.yi" title="lmflow.utils.conversation_template.yi"><span class="xref myst py py-mod">Yi</span></a></p></li> +<li><p><a class="reference internal" href="#yi-15"><span class="xref myst">Yi-1.5</span></a></p></li> +<li><p><a class="reference internal" href="../autoapi/lmflow/utils/conversation_template/zephyr/index.html#module-lmflow.utils.conversation_template.zephyr" title="lmflow.utils.conversation_template.zephyr"><span class="xref myst py py-mod">Zephyr</span></a></p></li> +</ul> +</li> +</ul> +<section id="chatglm-3"> +<h2>ChatGLM-3<a class="headerlink" href="#chatglm-3" title="Link to this heading">#</a></h2> +<p><strong>With a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">gMASK</span><span class="p">]</span><span class="n">sop</span><span class="o">&lt;|</span><span class="n">system</span><span class="o">|&gt;</span>\<span class="n">n</span> <span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span> <span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span> +</pre></div> +</div> +<p><strong>Without a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">gMASK</span><span class="p">]</span><span class="n">sop</span><span class="o">&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span> <span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span> +</pre></div> +</div> +<p><strong>A complete conversation</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">gMASK</span><span class="p">]</span><span class="n">sop</span><span class="o">&lt;|</span><span class="n">system</span><span class="o">|&gt;</span>\<span class="n">n</span> <span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span> <span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">assistant</span><span class="o">|&gt;</span>\<span class="n">n</span> <span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span> +</pre></div> +</div> +<p><strong>Multiple rounds</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">gMASK</span><span class="p">]</span><span class="n">sop</span><span class="o">&lt;|</span><span class="n">system</span><span class="o">|&gt;</span>\<span class="n">n</span> <span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span> <span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">assistant</span><span class="o">|&gt;</span>\<span class="n">n</span> <span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span> <span class="p">{{</span><span class="n">user_message_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">assistant</span><span class="o">|&gt;</span>\<span class="n">n</span> <span class="p">{{</span><span class="n">assistant_reply_1</span><span class="p">}}</span> +</pre></div> +</div> +<p><strong>jinja template</strong><br /> +[<a class="reference external" href="https://huggingface.co/THUDM/chatglm3-6b/blob/103caa40027ebfd8450289ca2f278eac4ff26405/tokenizer_config.json#L42">Reference</a>]</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">loop</span><span class="o">.</span><span class="n">first</span> <span class="o">%</span><span class="p">}[</span><span class="n">gMASK</span><span class="p">]</span><span class="n">sop</span><span class="o">&lt;|</span><span class="p">{{</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="p">}}</span><span class="o">|&gt;</span>\<span class="n">n</span> <span class="p">{{</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">else</span> <span class="o">%</span><span class="p">}</span><span class="o">&lt;|</span><span class="p">{{</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="p">}}</span><span class="o">|&gt;</span>\<span class="n">n</span> <span class="p">{{</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">add_generation_prompt</span> <span class="o">%</span><span class="p">}</span><span class="o">&lt;|</span><span class="n">assistant</span><span class="o">|&gt;</span><span class="p">{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}</span> +</pre></div> +</div> +<p><strong>Filled Example</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>[gMASK]sop&lt;|system|&gt;\n You are a chatbot developed by LMFlow team.&lt;|user|&gt;\n Who are you?&lt;|assistant|&gt;\n I am a chatbot developed by LMFlow team.&lt;|user|&gt;\n How old are you?&lt;|assistant|&gt;\n I don&#39;t age like humans do. I exist as a piece of software, so I don&#39;t have a concept of age in the traditional sense. +</pre></div> +</div> +</section> +<section id="chatml"> +<h2>ChatML<a class="headerlink" href="#chatml" title="Link to this heading">#</a></h2> +<p><strong>With a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">system</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Without a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>A complete conversation</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">system</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Multiple rounds</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">system</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>jinja template</strong><br /> +[<a class="reference external" href="https://huggingface.co/mlabonne/OrpoLlama-3-8B/blob/3534d0562dee3a541d015ef908a71b0aa9085488/tokenizer_config.json#L2073">Reference</a>]</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{{</span><span class="s1">&#39;&lt;|im_start|&gt;&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;&lt;|im_end|&gt;&#39;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">}}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">add_generation_prompt</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;&lt;|im_start|&gt;assistant</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}</span> +</pre></div> +</div> +<p><strong>Filled Example</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;|im_start|&gt;system\nYou are a chatbot developed by LMFlow team.&lt;|im_end|&gt;\n&lt;|im_start|&gt;user\nWho are you?&lt;|im_end|&gt;\n&lt;|im_start|&gt;assistant\nI am a chatbot developed by LMFlow team.&lt;|im_end|&gt;\n&lt;|im_start|&gt;user\nHow old are you?&lt;|im_end|&gt;\n&lt;|im_start|&gt;assistant\nI don&#39;t age like humans do. I exist as a piece of software, so I don&#39;t have a concept of age in the traditional sense.&lt;|im_end|&gt;\n +</pre></div> +</div> +</section> +<section id="deepseek"> +<h2>DeepSeek<a class="headerlink" href="#deepseek" title="Link to this heading">#</a></h2> +<p><strong>With a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;|begin▁of▁sentence|&gt;{{system_message}}\n\nUser: {{user_message_0}}\n\n +</pre></div> +</div> +<p><strong>Without a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;|begin▁of▁sentence|&gt;User: {{user_message_0}}\n\n +</pre></div> +</div> +<p><strong>A complete conversation</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;|begin▁of▁sentence|&gt;{{system_message}}\n\nUser: {{user_message_0}}\n\nAssistant: {{assistant_reply_0}}&lt;|end▁of▁sentence|&gt; +</pre></div> +</div> +<p><strong>Multiple rounds</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;|begin▁of▁sentence|&gt;{{system_message}}\n\nUser: {{user_message_0}}\n\nAssistant: {{assistant_reply_0}}&lt;|end▁of▁sentence|&gt;User: {{user_message_1}}\n\nAssistant: {{assistant_reply_1}}&lt;|end▁of▁sentence|&gt; +</pre></div> +</div> +<p><strong>jinja template</strong><br /> +[<a class="reference external" href="https://huggingface.co/deepseek-ai/DeepSeek-V2-Chat/blob/941577e8236164bc96829096d20c61568630d7bc/tokenizer_config.json#L34">Reference</a>]</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="o">%</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">add_generation_prompt</span> <span class="ow">is</span> <span class="n">defined</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">add_generation_prompt</span> <span class="o">=</span> <span class="n">false</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">bos_token</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;user&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;User: &#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n\n</span><span class="s1">&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">elif</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;assistant&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;Assistant: &#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="n">eos_token</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">elif</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;system&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n\n</span><span class="s1">&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">add_generation_prompt</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;Assistant:&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}</span> +</pre></div> +</div> +<p><strong>Filled Example</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;|begin▁of▁sentence|&gt;You are a chatbot developed by LMFlow team.\n\nUser: Who are you?\n\nAssistant: I am a chatbot developed by LMFlow team.&lt;|end▁of▁sentence|&gt;User: How old are you?\n\nAssistant: I don&#39;t age like humans do. I exist as a piece of software, so I don&#39;t have a concept of age in the traditional sense.&lt;|end▁of▁sentence|&gt; +</pre></div> +</div> +</section> +<section id="gemma"> +<h2>Gemma<a class="headerlink" href="#gemma" title="Link to this heading">#</a></h2> +<p><strong>With a system message</strong></p> +<div class="warning admonition"> +<p class="admonition-title">NOTICE</p> +<p>As of now, Gemma does not support system messages officially. <code class="docutils literal notranslate"><span class="pre">ConversationTemplate</span></code> will add your system messages right after the bos token and before the user message without any special formatting. For more details, please refer to the <a class="reference external" href="https://huggingface.co/google/gemma-1.1-2b-it/blob/bf4924f313df5166dee1467161e886e55f2eb4d4/tokenizer_config.json#L1507">official template</a>.</p> +</div> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">bos</span><span class="o">&gt;</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;</span><span class="n">start_of_turn</span><span class="o">&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;</span><span class="n">end_of_turn</span><span class="o">&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Without a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">bos</span><span class="o">&gt;&lt;</span><span class="n">start_of_turn</span><span class="o">&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;</span><span class="n">end_of_turn</span><span class="o">&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>A complete conversation</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">bos</span><span class="o">&gt;</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;</span><span class="n">start_of_turn</span><span class="o">&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;</span><span class="n">end_of_turn</span><span class="o">&gt;</span>\<span class="n">n</span><span class="o">&lt;</span><span class="n">start_of_turn</span><span class="o">&gt;</span><span class="n">model</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;</span><span class="n">end_of_turn</span><span class="o">&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Multiple rounds</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">bos</span><span class="o">&gt;</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;</span><span class="n">start_of_turn</span><span class="o">&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;</span><span class="n">end_of_turn</span><span class="o">&gt;</span>\<span class="n">n</span><span class="o">&lt;</span><span class="n">start_of_turn</span><span class="o">&gt;</span><span class="n">model</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;</span><span class="n">end_of_turn</span><span class="o">&gt;</span>\<span class="n">n</span><span class="o">&lt;</span><span class="n">start_of_turn</span><span class="o">&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_1</span><span class="p">}}</span><span class="o">&lt;</span><span class="n">end_of_turn</span><span class="o">&gt;</span>\<span class="n">n</span><span class="o">&lt;</span><span class="n">start_of_turn</span><span class="o">&gt;</span><span class="n">model</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_1</span><span class="p">}}</span><span class="o">&lt;</span><span class="n">end_of_turn</span><span class="o">&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>jinja template</strong><br /> +[<a class="reference external" href="https://huggingface.co/google/gemma-1.1-2b-it/blob/bf4924f313df5166dee1467161e886e55f2eb4d4/tokenizer_config.json#L1507">Reference</a>]</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{{</span> <span class="n">bos_token</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;system&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">raise_exception</span><span class="p">(</span><span class="s1">&#39;System role not supported&#39;</span><span class="p">)</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;user&#39;</span><span class="p">)</span> <span class="o">!=</span> <span class="p">(</span><span class="n">loop</span><span class="o">.</span><span class="n">index0</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">raise_exception</span><span class="p">(</span><span class="s1">&#39;Conversation roles must alternate user/assistant/user/assistant/...&#39;</span><span class="p">)</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;assistant&#39;</span><span class="p">)</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">role</span> <span class="o">=</span> <span class="s1">&#39;model&#39;</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">else</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">role</span> <span class="o">=</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;&lt;start_of_turn&gt;&#39;</span> <span class="o">+</span> <span class="n">role</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">|</span> <span class="n">trim</span> <span class="o">+</span> <span class="s1">&#39;&lt;end_of_turn&gt;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">add_generation_prompt</span> <span class="o">%</span><span class="p">}{{</span><span class="s1">&#39;&lt;start_of_turn&gt;model</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}</span> +</pre></div> +</div> +<p><strong>Filled Example</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;bos&gt;You are a chatbot developed by LMFlow team.&lt;start_of_turn&gt;user\nWho are you?&lt;end_of_turn&gt;\n&lt;start_of_turn&gt;model\nI am a chatbot developed by LMFlow team.&lt;end_of_turn&gt;\n&lt;start_of_turn&gt;user\nHow old are you?&lt;end_of_turn&gt;\n&lt;start_of_turn&gt;model\nI don&#39;t age like humans do. I exist as a piece of software, so I don&#39;t have a concept of age in the traditional sense.&lt;end_of_turn&gt;\n +</pre></div> +</div> +</section> +<section id="hymba"> +<h2>Hymba<a class="headerlink" href="#hymba" title="Link to this heading">#</a></h2> +<p><strong>With a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">extra_id_0</span><span class="o">&gt;</span><span class="n">System</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span>\<span class="n">n</span>\<span class="n">n</span><span class="o">&lt;</span><span class="n">extra_id_1</span><span class="o">&gt;</span><span class="n">User</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span>\<span class="n">n</span> +</pre></div> +</div> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">extra_id_0</span><span class="o">&gt;</span><span class="n">System</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span>\<span class="n">n</span><span class="o">&lt;</span><span class="n">tool</span><span class="o">&gt;</span> <span class="p">{{</span><span class="n">tool_info</span><span class="p">}}</span> <span class="o">&lt;/</span><span class="n">tool</span><span class="o">&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="o">&lt;</span><span class="n">extra_id_1</span><span class="o">&gt;</span><span class="n">User</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Without a system message</strong></p> +<div class="warning admonition"> +<p class="admonition-title">NOTICE</p> +<p>During the training, Hymba always uses special tokens for the system messages even if the system message is not provided.</p> +</div> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">extra_id_0</span><span class="o">&gt;</span><span class="n">System</span>\<span class="n">n</span>\<span class="n">n</span><span class="o">&lt;</span><span class="n">extra_id_1</span><span class="o">&gt;</span><span class="n">User</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>A complete conversation</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">extra_id_0</span><span class="o">&gt;</span><span class="n">System</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span>\<span class="n">n</span>\<span class="n">n</span><span class="o">&lt;</span><span class="n">extra_id_1</span><span class="o">&gt;</span><span class="n">User</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span>\<span class="n">n</span><span class="o">&lt;</span><span class="n">extra_id_1</span><span class="o">&gt;</span><span class="n">Assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span> +</pre></div> +</div> +<p><strong>Multiple rounds</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">extra_id_0</span><span class="o">&gt;</span><span class="n">System</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span>\<span class="n">n</span>\<span class="n">n</span><span class="o">&lt;</span><span class="n">extra_id_1</span><span class="o">&gt;</span><span class="n">User</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span>\<span class="n">n</span><span class="o">&lt;</span><span class="n">extra_id_1</span><span class="o">&gt;</span><span class="n">Assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span>\<span class="n">n</span> <span class="o">&lt;</span><span class="n">extra_id_1</span><span class="o">&gt;</span><span class="n">User</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_1</span><span class="p">}}</span>\<span class="n">n</span><span class="o">&lt;</span><span class="n">extra_id_1</span><span class="o">&gt;</span><span class="n">Assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_1</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span> +</pre></div> +</div> +<p><strong>jinja template</strong><br /> +[<a class="reference external" href="https://huggingface.co/nvidia/Hymba-1.5B-Instruct/blob/c02a352b6f7c1138a197d7ae3fd72dcdff919eae/tokenizer_config.json#L40">Reference</a>]</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{{</span><span class="s1">&#39;&lt;extra_id_0&gt;System&#39;</span><span class="p">}}{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;system&#39;</span> <span class="o">%</span><span class="p">}{{</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()}}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">tools</span> <span class="ow">or</span> <span class="n">contexts</span> <span class="o">%</span><span class="p">}{{</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">tools</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">for</span> <span class="n">tool</span> <span class="ow">in</span> <span class="n">tools</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&lt;tool&gt; &#39;</span> <span class="o">+</span> <span class="n">tool</span><span class="o">|</span><span class="n">tojson</span> <span class="o">+</span> <span class="s1">&#39; &lt;/tool&gt;&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">contexts</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">tools</span> <span class="o">%</span><span class="p">}{{</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">for</span> <span class="n">context</span> <span class="ow">in</span> <span class="n">contexts</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&lt;context&gt; &#39;</span> <span class="o">+</span> <span class="n">context</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">+</span> <span class="s1">&#39; &lt;/context&gt;&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{{</span><span class="s1">&#39;</span><span class="se">\n\n</span><span class="s1">&#39;</span><span class="p">}}{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;user&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;&lt;extra_id_1&gt;User</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">elif</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;assistant&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;&lt;extra_id_1&gt;Assistant</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">elif</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;tool&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;&lt;extra_id_1&gt;Tool</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}{</span><span class="o">%-</span> <span class="k">if</span> <span class="n">add_generation_prompt</span> <span class="o">%</span><span class="p">}{{</span><span class="s1">&#39;&lt;extra_id_1&gt;Assistant</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">}}{</span><span class="o">%-</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}</span> +</pre></div> +</div> +<p><strong>Filled Example</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;extra_id_0&gt;System\nYou are a chatbot developed by LMFlow team.\n\n&lt;extra_id_1&gt;User\nWho are you?\n&lt;extra_id_1&gt;Assistant\nI am a chatbot developed by LMFlow team.\n&lt;extra_id_1&gt;User\nHow old are you?\n&lt;extra_id_1&gt;Assistant\nI don&#39;t age like humans do. I exist as a piece of software, so I don&#39;t have a concept of age in the traditional sense.&lt;/s&gt; +</pre></div> +</div> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;extra_id_0&gt;System\nYou are a chatbot developed by LMFlow team.\n&lt;tool&gt; {&quot;name&quot;: &quot;generate_qrcode&quot;, &quot;description&quot;: &quot;Generate a QR code for a given text&quot;, &quot;parameters&quot;: {&quot;type&quot;: &quot;object&quot;, &quot;properties&quot;: {&quot;text&quot;: {&quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;The text to encode in the QR code&quot;}}, &quot;required&quot;: [&quot;text&quot;]}} &lt;/tool&gt;\n\n&lt;extra_id_1&gt;User\nWho are you?\n&lt;extra_id_1&gt;Assistant\nI am a chatbot developed by LMFlow team.\n&lt;extra_id_1&gt;User\nHow old are you?\n&lt;extra_id_1&gt;Assistant\nI don\&#39;t age like humans do. I exist as a piece of software, so I don\&#39;t have a concept of age in the traditional sense.&lt;/s&gt; +</pre></div> +</div> +</section> +<section id="internlm2"> +<h2>InternLM2<a class="headerlink" href="#internlm2" title="Link to this heading">#</a></h2> +<p><strong>With a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">s</span><span class="o">&gt;&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">system</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Without a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">s</span><span class="o">&gt;&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>A complete conversation</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">s</span><span class="o">&gt;&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">system</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Multiple rounds</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">s</span><span class="o">&gt;&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">system</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>jinja template</strong><br /> +[<a class="reference external" href="https://huggingface.co/internlm/internlm2-chat-20b/blob/477d4748322a8a3b28f62b33f0f6dd353cd0b66d/tokenizer_config.json#L93">Reference</a>]</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{{</span> <span class="n">bos_token</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{{</span><span class="s1">&#39;&lt;|im_start|&gt;&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;&lt;|im_end|&gt;&#39;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">}}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">add_generation_prompt</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;&lt;|im_start|&gt;assistant</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}</span> +</pre></div> +</div> +<p><strong>Filled Example</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;s&gt;&lt;|im_start|&gt;system\nYou are a chatbot developed by LMFlow team.&lt;|im_end|&gt;\n&lt;|im_start|&gt;user\nWho are you?&lt;|im_end|&gt;\n&lt;|im_start|&gt;assistant\nI am a chatbot developed by LMFlow team.&lt;|im_end|&gt;\n&lt;|im_start|&gt;user\nHow old are you?&lt;|im_end|&gt;\n&lt;|im_start|&gt;assistant\nI don&#39;t age like humans do. I exist as a piece of software, so I don&#39;t have a concept of age in the traditional sense.&lt;|im_end|&gt;\n +</pre></div> +</div> +</section> +<section id="llama-2"> +<h2>Llama-2<a class="headerlink" href="#llama-2" title="Link to this heading">#</a></h2> +<p><strong>With a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">s</span><span class="o">&gt;</span><span class="p">[</span><span class="n">INST</span><span class="p">]</span> <span class="o">&lt;&lt;</span><span class="n">SYS</span><span class="o">&gt;&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span>\<span class="n">n</span><span class="o">&lt;&lt;/</span><span class="n">SYS</span><span class="o">&gt;&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span> <span class="p">[</span><span class="o">/</span><span class="n">INST</span><span class="p">]</span> +</pre></div> +</div> +<p><strong>Without a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">s</span><span class="o">&gt;</span><span class="p">[</span><span class="n">INST</span><span class="p">]</span> <span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span> <span class="p">[</span><span class="o">/</span><span class="n">INST</span><span class="p">]</span> +</pre></div> +</div> +<p><strong>A complete conversation</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">s</span><span class="o">&gt;</span><span class="p">[</span><span class="n">INST</span><span class="p">]</span> <span class="o">&lt;&lt;</span><span class="n">SYS</span><span class="o">&gt;&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span>\<span class="n">n</span><span class="o">&lt;&lt;/</span><span class="n">SYS</span><span class="o">&gt;&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span> <span class="p">[</span><span class="o">/</span><span class="n">INST</span><span class="p">]</span> <span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span> +</pre></div> +</div> +<p><strong>Multiple rounds</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">s</span><span class="o">&gt;</span><span class="p">[</span><span class="n">INST</span><span class="p">]</span> <span class="o">&lt;&lt;</span><span class="n">SYS</span><span class="o">&gt;&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span>\<span class="n">n</span><span class="o">&lt;&lt;/</span><span class="n">SYS</span><span class="o">&gt;&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span> <span class="p">[</span><span class="o">/</span><span class="n">INST</span><span class="p">]</span> <span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;&lt;</span><span class="n">s</span><span class="o">&gt;</span><span class="p">[</span><span class="n">INST</span><span class="p">]</span> <span class="p">{{</span><span class="n">user_message_1</span><span class="p">}}</span> <span class="p">[</span><span class="o">/</span><span class="n">INST</span><span class="p">]</span> <span class="p">{{</span><span class="n">assistant_reply_1</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span> +</pre></div> +</div> +<p><strong>jinja template</strong><br /> +[<a class="reference external" href="https://huggingface.co/meta-llama/Llama-2-7b-chat-hf/blob/main/tokenizer_config.json#L12">Reference</a>]</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="o">%</span> <span class="k">if</span> <span class="n">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;system&#39;</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">loop_messages</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">system_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">else</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">loop_messages</span> <span class="o">=</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">system_message</span> <span class="o">=</span> <span class="n">false</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">loop_messages</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;user&#39;</span><span class="p">)</span> <span class="o">!=</span> <span class="p">(</span><span class="n">loop</span><span class="o">.</span><span class="n">index0</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">raise_exception</span><span class="p">(</span><span class="s1">&#39;Conversation roles must alternate user/assistant/user/assistant/...&#39;</span><span class="p">)</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">loop</span><span class="o">.</span><span class="n">index0</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">system_message</span> <span class="o">!=</span> <span class="n">false</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">content</span> <span class="o">=</span> <span class="s1">&#39;&lt;&lt;SYS&gt;&gt;</span><span class="se">\\</span><span class="s1">n&#39;</span> <span class="o">+</span> <span class="n">system_message</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\\</span><span class="s1">n&lt;&lt;/SYS&gt;&gt;</span><span class="se">\\</span><span class="s1">n</span><span class="se">\\</span><span class="s1">n&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">else</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">content</span> <span class="o">=</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;user&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">bos_token</span> <span class="o">+</span> <span class="s1">&#39;[INST] &#39;</span> <span class="o">+</span> <span class="n">content</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">+</span> <span class="s1">&#39; [/INST]&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">elif</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;assistant&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="n">content</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="n">eos_token</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}</span> +</pre></div> +</div> +<p><strong>Filled Example</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;s&gt;[INST] &lt;&lt;SYS&gt;&gt;\nYou are a chatbot developed by LMFlow team.\n&lt;&lt;/SYS&gt;&gt;\n\nWho are you? [/INST] I am a chatbot developed by LMFlow team.&lt;/s&gt;&lt;s&gt;[INST] How old are you? [/INST] I don&#39;t age like humans do. I exist as a piece of software, so I don&#39;t have a concept of age in the traditional sense.&lt;/s&gt; +</pre></div> +</div> +</section> +<section id="llama-3"> +<h2>Llama-3<a class="headerlink" href="#llama-3" title="Link to this heading">#</a></h2> +<p><strong>With a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">begin_of_text</span><span class="o">|&gt;&lt;|</span><span class="n">start_header_id</span><span class="o">|&gt;</span><span class="n">system</span><span class="o">&lt;|</span><span class="n">end_header_id</span><span class="o">|&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">eot_id</span><span class="o">|&gt;&lt;|</span><span class="n">start_header_id</span><span class="o">|&gt;</span><span class="n">user</span><span class="o">&lt;|</span><span class="n">end_header_id</span><span class="o">|&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">eot_id</span><span class="o">|&gt;</span> +</pre></div> +</div> +<p><strong>Without a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">begin_of_text</span><span class="o">|&gt;&lt;|</span><span class="n">start_header_id</span><span class="o">|&gt;</span><span class="n">user</span><span class="o">&lt;|</span><span class="n">end_header_id</span><span class="o">|&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">eot_id</span><span class="o">|&gt;</span> +</pre></div> +</div> +<p><strong>A complete conversation</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">begin_of_text</span><span class="o">|&gt;&lt;|</span><span class="n">start_header_id</span><span class="o">|&gt;</span><span class="n">system</span><span class="o">&lt;|</span><span class="n">end_header_id</span><span class="o">|&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">eot_id</span><span class="o">|&gt;&lt;|</span><span class="n">start_header_id</span><span class="o">|&gt;</span><span class="n">user</span><span class="o">&lt;|</span><span class="n">end_header_id</span><span class="o">|&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">eot_id</span><span class="o">|&gt;&lt;|</span><span class="n">start_header_id</span><span class="o">|&gt;</span><span class="n">assistant</span><span class="o">&lt;|</span><span class="n">end_header_id</span><span class="o">|&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">eot_id</span><span class="o">|&gt;</span> +</pre></div> +</div> +<p><strong>Multiple rounds</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">begin_of_text</span><span class="o">|&gt;&lt;|</span><span class="n">start_header_id</span><span class="o">|&gt;</span><span class="n">system</span><span class="o">&lt;|</span><span class="n">end_header_id</span><span class="o">|&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">eot_id</span><span class="o">|&gt;&lt;|</span><span class="n">start_header_id</span><span class="o">|&gt;</span><span class="n">user</span><span class="o">&lt;|</span><span class="n">end_header_id</span><span class="o">|&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">eot_id</span><span class="o">|&gt;&lt;|</span><span class="n">start_header_id</span><span class="o">|&gt;</span><span class="n">assistant</span><span class="o">&lt;|</span><span class="n">end_header_id</span><span class="o">|&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">eot_id</span><span class="o">|&gt;&lt;|</span><span class="n">start_header_id</span><span class="o">|&gt;</span><span class="n">user</span><span class="o">&lt;|</span><span class="n">end_header_id</span><span class="o">|&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">eot_id</span><span class="o">|&gt;&lt;|</span><span class="n">start_header_id</span><span class="o">|&gt;</span><span class="n">assistant</span><span class="o">&lt;|</span><span class="n">end_header_id</span><span class="o">|&gt;</span>\<span class="n">n</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">eot_id</span><span class="o">|&gt;</span> +</pre></div> +</div> +<p><strong>jinja template</strong><br /> +[<a class="reference external" href="https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct/blob/2b724926966c141d5a60b14e75a5ef5c0ab7a6f0/tokenizer_config.json#L2053">Reference</a>]</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">loop_messages</span> <span class="o">=</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">loop_messages</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">content</span> <span class="o">=</span> <span class="s1">&#39;&lt;|start_header_id|&gt;&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;&lt;|end_header_id|&gt;</span><span class="se">\n\n</span><span class="s1">&#39;</span><span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">|</span> <span class="n">trim</span> <span class="o">+</span> <span class="s1">&#39;&lt;|eot_id|&gt;&#39;</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">loop</span><span class="o">.</span><span class="n">index0</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">content</span> <span class="o">=</span> <span class="n">bos_token</span> <span class="o">+</span> <span class="n">content</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">content</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;</span><span class="se">\n\n</span><span class="s1">&#39;</span> <span class="p">}}</span> +</pre></div> +</div> +<p><strong>Filled Example</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;|begin_of_text|&gt;&lt;|start_header_id|&gt;system&lt;|end_header_id|&gt;\n\nYou are a chatbot developed by LMFlow team.&lt;|eot_id|&gt;&lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;\n\nWho are you?&lt;|eot_id|&gt;&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;\n\nI am a chatbot developed by LMFlow team.&lt;|eot_id|&gt;&lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;\n\nHow old are you?&lt;|eot_id|&gt;&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;\n\nI don&#39;t age like humans do. I exist as a piece of software, so I don&#39;t have a concept of age in the traditional sense.&lt;|eot_id|&gt; +</pre></div> +</div> +</section> +<section id="mixtral-8x22b"> +<h2>Mixtral 8x22B<a class="headerlink" href="#mixtral-8x22b" title="Link to this heading">#</a></h2> +<div class="info admonition"> +<p class="admonition-title"><strong>Work in Progress</strong></p> +<p>This template is not preseted in LMFlow currently. We are working on it and will update it soon.</p> +</div> +<div class="warning admonition"> +<p class="admonition-title">NOTICE</p> +<p>The conversation template for Mixtral 8x22B is slightly different from the template for Mixtral 8x7B.</p> +</div> +<p><strong>jinja template</strong><br /> +[<a class="reference external" href="https://huggingface.co/mistralai/Mixtral-8x22B-Instruct-v0.1">Reference</a>]</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{{</span><span class="n">bos_token</span><span class="p">}}{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;user&#39;</span><span class="p">)</span> <span class="o">!=</span> <span class="p">(</span><span class="n">loop</span><span class="o">.</span><span class="n">index0</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">raise_exception</span><span class="p">(</span><span class="s1">&#39;Conversation roles must alternate user/assistant/user/assistant/...&#39;</span><span class="p">)</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;user&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39; [INST] &#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39; [/INST]&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">elif</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;assistant&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="n">eos_token</span><span class="p">}}{</span><span class="o">%</span> <span class="k">else</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">raise_exception</span><span class="p">(</span><span class="s1">&#39;Only user and assistant roles are supported!&#39;</span><span class="p">)</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}</span> +</pre></div> +</div> +</section> +<section id="mixtral-8x7b"> +<h2>Mixtral 8x7B<a class="headerlink" href="#mixtral-8x7b" title="Link to this heading">#</a></h2> +<div class="info admonition"> +<p class="admonition-title"><strong>Work in Progress</strong></p> +<p>This template is not preseted in LMFlow currently. We are working on it and will update it soon.</p> +</div> +<div class="warning admonition"> +<p class="admonition-title">NOTICE</p> +<p>The conversation template for Mixtral 8x7B is slightly different from the template for Mixtral 8x22B.</p> +</div> +<p><strong>jinja template</strong><br /> +[<a class="reference external" href="https://huggingface.co/mistralai/Mixtral-8x7B-Instruct-v0.1/blob/1e637f2d7cb0a9d6fb1922f305cb784995190a83/tokenizer_config.json#L42">Reference</a>]</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{{</span> <span class="n">bos_token</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;user&#39;</span><span class="p">)</span> <span class="o">!=</span> <span class="p">(</span><span class="n">loop</span><span class="o">.</span><span class="n">index0</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">raise_exception</span><span class="p">(</span><span class="s1">&#39;Conversation roles must alternate user/assistant/user/assistant/...&#39;</span><span class="p">)</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;user&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;[INST] &#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39; [/INST]&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">elif</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;assistant&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="n">eos_token</span><span class="p">}}{</span><span class="o">%</span> <span class="k">else</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">raise_exception</span><span class="p">(</span><span class="s1">&#39;Only user and assistant roles are supported!&#39;</span><span class="p">)</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}</span> +</pre></div> +</div> +</section> +<section id="phi-3"> +<h2>Phi-3<a class="headerlink" href="#phi-3" title="Link to this heading">#</a></h2> +<p><strong>With a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">s</span><span class="o">&gt;&lt;|</span><span class="n">system</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">endoftext</span><span class="o">|&gt;</span> +</pre></div> +</div> +<p><strong>Without a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">s</span><span class="o">&gt;&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">endoftext</span><span class="o">|&gt;</span> +</pre></div> +</div> +<p><strong>A complete conversation</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">s</span><span class="o">&gt;&lt;|</span><span class="n">system</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">assistant</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">endoftext</span><span class="o">|&gt;</span> +</pre></div> +</div> +<p><strong>Multiple rounds</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">s</span><span class="o">&gt;&lt;|</span><span class="n">system</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">assistant</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">assistant</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">endoftext</span><span class="o">|&gt;</span> +</pre></div> +</div> +<p><strong>jinja template</strong><br /> +<a class="reference external" href="https://huggingface.co/microsoft/Phi-3-mini-4k-instruct/blob/3a811845d89f3c1b3f41b341d0f9f05104769f35/tokenizer_config.json#L338">[Reference]</a></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{{</span> <span class="n">bos_token</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{{</span><span class="s1">&#39;&lt;|&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;|&gt;&#39;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;&lt;|end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">add_generation_prompt</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;&lt;|assistant|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">else</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">eos_token</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}</span> +</pre></div> +</div> +<p><strong>Filled Example</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;s&gt;&lt;|system|&gt;\nYou are a chatbot developed by LMFlow team.&lt;|end|&gt;\n&lt;|user|&gt;\nWho are you?&lt;|end|&gt;\n&lt;|assistant|&gt;\nI am a chatbot developed by LMFlow team.&lt;|end|&gt;\n&lt;|user|&gt;\nHow old are you?&lt;|end|&gt;\n&lt;|assistant|&gt;\nI don&#39;t age like humans do. I exist as a piece of software, so I don&#39;t have a concept of age in the traditional sense.&lt;|end|&gt;\n&lt;|endoftext|&gt; +</pre></div> +</div> +</section> +<section id="qwen-2"> +<h2>Qwen-2<a class="headerlink" href="#qwen-2" title="Link to this heading">#</a></h2> +<p>(Also Qwen-1.5)</p> +<p><strong>With a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">system</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Without a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>A complete conversation</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">system</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Multiple rounds</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">system</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>jinja template</strong><br /> +[<a class="reference external" href="https://huggingface.co/Qwen/Qwen2-72B-Instruct/blob/1af63c698f59c4235668ec9c1395468cb7cd7e79/tokenizer_config.json#L31">Reference</a>]</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">loop</span><span class="o">.</span><span class="n">first</span> <span class="ow">and</span> <span class="n">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">&#39;system&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;&lt;|im_start|&gt;system</span><span class="se">\n</span><span class="s1">You are a helpful assistant&lt;|im_end|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{{</span><span class="s1">&#39;&lt;|im_start|&gt;&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;&lt;|im_end|&gt;&#39;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">}}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">add_generation_prompt</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;&lt;|im_start|&gt;assistant</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}</span> +</pre></div> +</div> +<p><strong>Filled Example</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;|im_start|&gt;system\nYou are a chatbot developed by LMFlow team.&lt;|im_end|&gt;\n&lt;|im_start|&gt;user\nWho are you?&lt;|im_end|&gt;\n&lt;|im_start|&gt;assistant\nI am a chatbot developed by LMFlow team.&lt;|im_end|&gt;\n&lt;|im_start|&gt;user\nHow old are you?&lt;|im_end|&gt;\n&lt;|im_start|&gt;assistant\nI don&#39;t age like humans do. I exist as a piece of software, so I don&#39;t have a concept of age in the traditional sense.&lt;|im_end|&gt;\n +</pre></div> +</div> +</section> +<section id="yi"> +<h2>Yi<a class="headerlink" href="#yi" title="Link to this heading">#</a></h2> +<p><strong>With a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">system</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Without a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>A complete conversation</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">system</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Multiple rounds</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">system</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>jinja template</strong><br /> +[<a class="reference external" href="https://huggingface.co/01-ai/Yi-34B-Chat/blob/c556c018b58980fb651ff4952d86cd5250a713d0/tokenizer_config.json#L60">Reference</a>]</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="o">%</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">add_generation_prompt</span> <span class="ow">is</span> <span class="n">defined</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">add_generation_prompt</span> <span class="o">=</span> <span class="n">false</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{{</span><span class="s1">&#39;&lt;|im_start|&gt;&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;&lt;|im_end|&gt;&#39;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">}}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">add_generation_prompt</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;&lt;|im_start|&gt;assistant</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}</span> +</pre></div> +</div> +<p><strong>Filled Example</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;|im_start|&gt;system\nYou are a chatbot developed by LMFlow team.&lt;|im_end|&gt;\n&lt;|im_start|&gt;user\nWho are you?&lt;|im_end|&gt;\n&lt;|im_start|&gt;assistant\nI am a chatbot developed by LMFlow team.&lt;|im_end|&gt;\n&lt;|im_start|&gt;user\nHow old are you?&lt;|im_end|&gt;\n&lt;|im_start|&gt;assistant\nI don&#39;t age like humans do. I exist as a piece of software, so I don&#39;t have a concept of age in the traditional sense.&lt;|im_end|&gt;\n +</pre></div> +</div> +</section> +<section id="yi-1-5"> +<h2>Yi-1.5<a class="headerlink" href="#yi-1-5" title="Link to this heading">#</a></h2> +<p><strong>With a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Without a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>A complete conversation</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Multiple rounds</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">user</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">im_start</span><span class="o">|&gt;</span><span class="n">assistant</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_1</span><span class="p">}}</span><span class="o">&lt;|</span><span class="n">im_end</span><span class="o">|&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>jinja template</strong><br /> +[<a class="reference external" href="https://huggingface.co/01-ai/Yi-1.5-6B-Chat/blob/d68dab90947a3c869e28c9cb2806996af99a6080/tokenizer_config.json#L40">Reference</a>]</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="o">%</span> <span class="k">if</span> <span class="n">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;system&#39;</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">system_message</span> <span class="o">=</span> <span class="n">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">system_message</span> <span class="ow">is</span> <span class="n">defined</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">system_message</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">content</span> <span class="o">=</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;user&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="s1">&#39;&lt;|im_start|&gt;user</span><span class="se">\\</span><span class="s1">n&#39;</span> <span class="o">+</span> <span class="n">content</span> <span class="o">+</span> <span class="s1">&#39;&lt;|im_end|&gt;</span><span class="se">\\</span><span class="s1">n&lt;|im_start|&gt;assistant</span><span class="se">\\</span><span class="s1">n&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="k">elif</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;assistant&#39;</span> <span class="o">%</span><span class="p">}{{</span> <span class="n">content</span> <span class="o">+</span> <span class="s1">&#39;&lt;|im_end|&gt;&#39;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\\</span><span class="s1">n&#39;</span> <span class="p">}}{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}</span> +</pre></div> +</div> +<p><strong>Filled Example</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>You are a chatbot developed by LMFlow team.&lt;|im_start|&gt;user\nWho are you?&lt;|im_end|&gt;\n&lt;|im_start|&gt;assistant\nI am a chatbot developed by LMFlow team.&lt;|im_end|&gt;\n&lt;|im_start|&gt;user\nHow old are you?&lt;|im_end|&gt;\n&lt;|im_start|&gt;assistant\nI don&#39;t age like humans do. I exist as a piece of software, so I don&#39;t have a concept of age in the traditional sense.&lt;|im_end|&gt;\n +</pre></div> +</div> +</section> +<section id="zephyr"> +<h2>Zephyr<a class="headerlink" href="#zephyr" title="Link to this heading">#</a></h2> +<p><strong>With a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">system</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Without a system message</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>A complete conversation</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">system</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">assistant</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>Multiple rounds</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;|</span><span class="n">system</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">system_message</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_0</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">assistant</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_0</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">user</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">user_message_1</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span>\<span class="n">n</span><span class="o">&lt;|</span><span class="n">assistant</span><span class="o">|&gt;</span>\<span class="n">n</span><span class="p">{{</span><span class="n">assistant_reply_1</span><span class="p">}}</span><span class="o">&lt;/</span><span class="n">s</span><span class="o">&gt;</span>\<span class="n">n</span> +</pre></div> +</div> +<p><strong>jinja template</strong><br /> +[<a class="reference external" href="https://huggingface.co/HuggingFaceH4/zephyr-7b-beta/blob/b70e0c9a2d9e14bd1e812d3c398e5f313e93b473/tokenizer_config.json#L34">Reference</a>]</p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="o">%</span> <span class="k">for</span> <span class="n">message</span> <span class="ow">in</span> <span class="n">messages</span> <span class="o">%</span><span class="p">}</span>\<span class="n">n</span><span class="p">{</span><span class="o">%</span> <span class="k">if</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;user&#39;</span> <span class="o">%</span><span class="p">}</span>\<span class="n">n</span><span class="p">{{</span> <span class="s1">&#39;&lt;|user|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="n">eos_token</span> <span class="p">}}</span>\<span class="n">n</span><span class="p">{</span><span class="o">%</span> <span class="k">elif</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;system&#39;</span> <span class="o">%</span><span class="p">}</span>\<span class="n">n</span><span class="p">{{</span> <span class="s1">&#39;&lt;|system|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="n">eos_token</span> <span class="p">}}</span>\<span class="n">n</span><span class="p">{</span><span class="o">%</span> <span class="k">elif</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;role&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;assistant&#39;</span> <span class="o">%</span><span class="p">}</span>\<span class="n">n</span><span class="p">{{</span> <span class="s1">&#39;&lt;|assistant|&gt;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="n">message</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="n">eos_token</span> <span class="p">}}</span>\<span class="n">n</span><span class="p">{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}</span>\<span class="n">n</span><span class="p">{</span><span class="o">%</span> <span class="k">if</span> <span class="n">loop</span><span class="o">.</span><span class="n">last</span> <span class="ow">and</span> <span class="n">add_generation_prompt</span> <span class="o">%</span><span class="p">}</span>\<span class="n">n</span><span class="p">{{</span> <span class="s1">&#39;&lt;|assistant|&gt;&#39;</span> <span class="p">}}</span>\<span class="n">n</span><span class="p">{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}</span>\<span class="n">n</span><span class="p">{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}</span> +</pre></div> +</div> +<p><strong>Filled Example</strong></p> +<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;|system|&gt;\nYou are a chatbot developed by LMFlow team.&lt;/s&gt;\n&lt;|user|&gt;\nWho are you?&lt;/s&gt;\n&lt;|assistant|&gt;\nI am a chatbot developed by LMFlow team.&lt;/s&gt;\n&lt;|user|&gt;\nHow old are you?&lt;/s&gt;\n&lt;|assistant|&gt;\nI don&#39;t age like humans do. I exist as a piece of software, so I don&#39;t have a concept of age in the traditional sense.&lt;/s&gt;\n +</pre></div> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#chatglm-3">ChatGLM-3</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#chatml">ChatML</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#deepseek">DeepSeek</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#gemma">Gemma</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#hymba">Hymba</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#internlm2">InternLM2</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#llama-2">Llama-2</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#llama-3">Llama-3</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#mixtral-8x22b">Mixtral 8x22B</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#mixtral-8x7b">Mixtral 8x7B</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#phi-3">Phi-3</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#qwen-2">Qwen-2</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#yi">Yi</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#yi-1-5">Yi-1.5</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#zephyr">Zephyr</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/examples/supported_conversation_template.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/genindex.html b/genindex.html new file mode 100644 index 000000000..fceab5150 --- /dev/null +++ b/genindex.html @@ -0,0 +1,4001 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="./" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Index &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="_static/documentation_options.js?v=5929fcd5"></script> + <script src="_static/doctools.js?v=9bcbadda"></script> + <script src="_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'genindex';</script> + <link rel="index" title="Index" href="#" /> + <link rel="search" title="Search" href="search.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"></div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + +<h1 id="index">Index</h1> + +<div class="genindex-jumpbox"> + <a href="#_"><strong>_</strong></a> + | <a href="#A"><strong>A</strong></a> + | <a href="#B"><strong>B</strong></a> + | <a href="#C"><strong>C</strong></a> + | <a href="#D"><strong>D</strong></a> + | <a href="#E"><strong>E</strong></a> + | <a href="#F"><strong>F</strong></a> + | <a href="#G"><strong>G</strong></a> + | <a href="#H"><strong>H</strong></a> + | <a href="#I"><strong>I</strong></a> + | <a href="#K"><strong>K</strong></a> + | <a href="#L"><strong>L</strong></a> + | <a href="#M"><strong>M</strong></a> + | <a href="#N"><strong>N</strong></a> + | <a href="#O"><strong>O</strong></a> + | <a href="#P"><strong>P</strong></a> + | <a href="#Q"><strong>Q</strong></a> + | <a href="#R"><strong>R</strong></a> + | <a href="#S"><strong>S</strong></a> + | <a href="#T"><strong>T</strong></a> + | <a href="#U"><strong>U</strong></a> + | <a href="#V"><strong>V</strong></a> + | <a href="#W"><strong>W</strong></a> + | <a href="#Y"><strong>Y</strong></a> + | <a href="#Z"><strong>Z</strong></a> + +</div> +<h2 id="_">_</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset.__call__">__call__() (lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.__call__">(lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.__call__">(lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__distributed_inference">__distributed_inference() (lmflow.pipeline.rm_inferencer.RewardModelInferencer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.__filter_args">__filter_args() (lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner method)</a> +</li> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.__getitem__">__getitem__() (lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.__inference">__inference() (lmflow.models.hf_decoder_model.HFDecoderModel method)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.__inference">(lmflow.models.hf_text_regression_model.HFTextRegressionModel method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__inference">(lmflow.pipeline.rm_inferencer.RewardModelInferencer method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.__len__">__len__() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.__len__">(lmflow.datasets.dataset.Dataset method)</a> +</li> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.__len__">(lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__model_module_inject">__model_module_inject() (lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.__post_init__">__post_init__() (lmflow.args.DatasetArguments method)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.__post_init__">(lmflow.args.InferencerArguments method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.__post_init__">(lmflow.args.ModelArguments method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.__post_init__">(lmflow.utils.conversation_template.base.ConversationTemplate method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.EmptyFormatter.__post_init__">(lmflow.utils.conversation_template.base.EmptyFormatter method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.StringFormatter.__post_init__">(lmflow.utils.conversation_template.base.StringFormatter method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.TemplateComponent.__post_init__">(lmflow.utils.conversation_template.base.TemplateComponent method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.__post_init__">(lmflow.utils.conversation_template.ConversationTemplate method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__post_process_model_output">__post_process_model_output() (lmflow.pipeline.rm_inferencer.RewardModelInferencer method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_dtype">__prepare_dtype() (lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.__prepare_inputs_for_inference">__prepare_inputs_for_inference() (lmflow.models.hf_decoder_model.HFDecoderModel method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.__prepare_inputs_for_vllm_inference">__prepare_inputs_for_vllm_inference() (lmflow.models.hf_decoder_model.HFDecoderModel method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_config">__prepare_model_config() (lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_inference">__prepare_model_for_inference() (lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_training">__prepare_model_for_training() (lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_vllm_inference">__prepare_model_for_vllm_inference() (lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_post_process">__prepare_model_post_process() (lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_peft_config">__prepare_peft_config() (lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_quant_config">__prepare_quant_config() (lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.__prepare_tokenizer">__prepare_tokenizer() (lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.__prepare_training_args">__prepare_training_args() (lmflow.pipeline.dpov2_aligner.DPOv2Aligner method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.TemplateComponent.__repr__">__repr__() (lmflow.utils.conversation_template.base.TemplateComponent method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief.__setstate__">__setstate__() (lmflow.optim.adabelief.AdaBelief method)</a> + + <ul> + <li><a href="autoapi/lmflow/optim/adabound/index.html#lmflow.optim.adabound.AdaBound.__setstate__">(lmflow.optim.adabound.AdaBound method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adamax/index.html#lmflow.optim.adamax.Adamax.__setstate__">(lmflow.optim.adamax.Adamax method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adan/index.html#lmflow.optim.adan.Adan.__setstate__">(lmflow.optim.adan.Adan method)</a> +</li> + <li><a href="autoapi/lmflow/optim/lars/index.html#lmflow.optim.lars.LARS.__setstate__">(lmflow.optim.lars.LARS method)</a> +</li> + <li><a href="autoapi/lmflow/optim/nadam/index.html#lmflow.optim.nadam.NAdam.__setstate__">(lmflow.optim.nadam.NAdam method)</a> +</li> + <li><a href="autoapi/lmflow/optim/novograd/index.html#lmflow.optim.novograd.NovoGrad.__setstate__">(lmflow.optim.novograd.NovoGrad method)</a> +</li> + <li><a href="autoapi/lmflow/optim/radam/index.html#lmflow.optim.radam.RAdam.__setstate__">(lmflow.optim.radam.RAdam method)</a> +</li> + <li><a href="autoapi/lmflow/optim/sophia/index.html#lmflow.optim.sophia.SophiaG.__setstate__">(lmflow.optim.sophia.SophiaG method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.TemplateComponent.__str__">__str__() (lmflow.utils.conversation_template.base.TemplateComponent method)</a> +</li> + <li><a href="autoapi/lmflow/index.html#lmflow.__version__">__version__ (in module lmflow)</a> + + <ul> + <li><a href="autoapi/lmflow/version/index.html#lmflow.version.__version__">(in module lmflow.version)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.__vllm_inference">__vllm_inference() (lmflow.models.hf_decoder_model.HFDecoderModel method)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.__vllm_inference">(lmflow.models.hf_text_regression_model.HFTextRegressionModel method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.__vllm_inference">(lmflow.pipeline.rm_inferencer.RewardModelInferencer method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin._activated">_activated (lmflow.models.hf_model_mixin.HFModelMixin attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._add_sm_patterns_to_gitignore">_add_sm_patterns_to_gitignore() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._align_single_iteration">_align_single_iteration() (lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner method)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html#lmflow.utils.flash_attention.gpt_neo_flash_attention._attn">_attn() (in module lmflow.utils.flash_attention.gpt_neo_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel">_bwd_kernel() (in module lmflow.utils.flash_attention.triton_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel_one_col_block">_bwd_kernel_one_col_block() (in module lmflow.utils.flash_attention.triton_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention._bwd_preprocess_do_o_dot">_bwd_preprocess_do_o_dot() (in module lmflow.utils.flash_attention.triton_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention._bwd_store_dk_dv">_bwd_store_dk_dv() (in module lmflow.utils.flash_attention.triton_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._calc_response_lengths">_calc_response_lengths() (lmflow.pipeline.dpov2_aligner.DPOv2Aligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._calc_reward_with_length_penalty">_calc_reward_with_length_penalty() (lmflow.pipeline.dpov2_aligner.DPOv2Aligner method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adamp/index.html#lmflow.optim.adamp.AdamP._channel_view">_channel_view() (lmflow.optim.adamp.AdamP static method)</a> + + <ul> + <li><a href="autoapi/lmflow/optim/sgdp/index.html#lmflow.optim.sgdp.SGDP._channel_view">(lmflow.optim.sgdp.SGDP static method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset._check_data_format">_check_data_format() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset._check_data_format">(lmflow.datasets.dataset.Dataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/base_aligner/index.html#lmflow.pipeline.base_aligner.BaseAligner._check_if_alignable">_check_if_alignable() (lmflow.pipeline.base_aligner.BaseAligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/base_tuner/index.html#lmflow.pipeline.base_tuner.BaseTuner._check_if_tunable">_check_if_tunable() (lmflow.pipeline.base_tuner.BaseTuner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner._clean_text">_clean_text() (lmflow.pipeline.raft_aligner.RaftAligner method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adamp/index.html#lmflow.optim.adamp.AdamP._cosine_similarity">_cosine_similarity() (lmflow.optim.adamp.AdamP static method)</a> + + <ul> + <li><a href="autoapi/lmflow/optim/sgdp/index.html#lmflow.optim.sgdp.SGDP._cosine_similarity">(lmflow.optim.sgdp.SGDP static method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner._discard_sample">_discard_sample() (lmflow.pipeline.raft_aligner.RaftAligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer._distributed_inference">_distributed_inference() (lmflow.pipeline.vllm_inferencer.VLLMInferencer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_reward_model_inference">_do_reward_model_inference() (lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_single_dpo_align">_do_single_dpo_align() (lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_target_model_inference">_do_target_model_inference() (lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate._encode">_encode() (lmflow.utils.conversation_template.base.ConversationTemplate method)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplateForTool._encode">(lmflow.utils.conversation_template.base.ConversationTemplateForTool method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate._encode">(lmflow.utils.conversation_template.ConversationTemplate method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplateForTool._encode">(lmflow.utils.conversation_template.ConversationTemplateForTool method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.llama.Llama2ConversationTemplate._encode">(lmflow.utils.conversation_template.llama.Llama2ConversationTemplate method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool._encode">(lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/zephyr/index.html#lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate._encode">(lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate method)</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate._encode_template">_encode_template() (lmflow.utils.conversation_template.base.ConversationTemplate method)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplateForTool._encode_template">(lmflow.utils.conversation_template.base.ConversationTemplateForTool method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate._encode_template">(lmflow.utils.conversation_template.ConversationTemplate method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplateForTool._encode_template">(lmflow.utils.conversation_template.ConversationTemplateForTool method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate._ensure_id_list">_ensure_id_list() (lmflow.utils.conversation_template.base.ConversationTemplate method)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate._ensure_id_list">(lmflow.utils.conversation_template.ConversationTemplate method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator._evaluate_acc_with_accelerator">_evaluate_acc_with_accelerator() (lmflow.pipeline.evaluator.Evaluator method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator._evaluate_acc_with_deepspeed">_evaluate_acc_with_deepspeed() (lmflow.pipeline.evaluator.Evaluator method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator._evaluate_nll">_evaluate_nll() (lmflow.pipeline.evaluator.Evaluator method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator._evaluate_ppl">_evaluate_ppl() (lmflow.pipeline.evaluator.Evaluator method)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention._flash_attn_backward">_flash_attn_backward() (in module lmflow.utils.flash_attention.triton_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention._flash_attn_forward">_flash_attn_forward() (in module lmflow.utils.flash_attention.triton_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention._fwd_kernel">_fwd_kernel() (in module lmflow.utils.flash_attention.triton_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._gather_and_numpify">_gather_and_numpify() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner._get_batch_dataset_local">_get_batch_dataset_local() (lmflow.pipeline.raft_aligner.RaftAligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner._get_batch_dataset_top">_get_batch_dataset_top() (lmflow.pipeline.raft_aligner.RaftAligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_collator_with_removed_columns">_get_collator_with_removed_columns() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_eval_sampler">_get_eval_sampler() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_output_dir">_get_output_dir() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_train_sampler">_get_train_sampler() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._hp_search_setup">_hp_search_setup() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer._inference">_inference() (lmflow.pipeline.rm_inferencer.RewardModelInferencer method)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer._inference">(lmflow.pipeline.vllm_inferencer.VLLMInferencer method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner._initialize_trainer">_initialize_trainer() (lmflow.pipeline.dpo_aligner.DPOAligner method)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner._initialize_trainer">(lmflow.pipeline.raft_aligner.RaftAligner method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._inner_training_loop">_inner_training_loop() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer._is_native_cpu_amp_available">_is_native_cpu_amp_available (in module lmflow.pipeline.utils.raft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/utils/versioning/index.html#lmflow.utils.versioning._is_package_available">_is_package_available() (in module lmflow.utils.versioning)</a> +</li> + <li><a href="autoapi/lmflow/utils/versioning/index.html#lmflow.utils.versioning._is_packages_available">_is_packages_available() (in module lmflow.utils.versioning)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._issue_warnings_after_load">_issue_warnings_after_load() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adamp/index.html#lmflow.optim.adamp.AdamP._layer_view">_layer_view() (lmflow.optim.adamp.AdamP static method)</a> + + <ul> + <li><a href="autoapi/lmflow/optim/sgdp/index.html#lmflow.optim.sgdp.SGDP._layer_view">(lmflow.optim.sgdp.SGDP static method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_best_model">_load_best_model() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner._load_dataset">_load_dataset() (lmflow.pipeline.dpo_aligner.DPOAligner method)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner._load_dataset">(lmflow.pipeline.raft_aligner.RaftAligner method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_from_checkpoint">_load_from_checkpoint() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner._load_input_dataset">_load_input_dataset() (lmflow.pipeline.raft_aligner.RaftAligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_optimizer_and_scheduler">_load_optimizer_and_scheduler() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_rng_state">_load_rng_state() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._loggers_initialized">_loggers_initialized (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator._match">_match() (lmflow.pipeline.evaluator.Evaluator method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._maybe_log_save_evaluate">_maybe_log_save_evaluate() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._memory_tracker">_memory_tracker (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._move_model_to_device">_move_model_to_device() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adan/index.html#lmflow.optim.adan._multi_tensor_adan">_multi_tensor_adan() (in module lmflow.optim.adan)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._nested_gather">_nested_gather() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._one_train">_one_train() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._pad_across_processes">_pad_across_processes() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_dpo_aligner_args">_parse_dpo_aligner_args() (lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_reward_model_inference_args">_parse_reward_model_inference_args() (lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_target_model_inference_args">_parse_target_model_inference_args() (lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner method)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.html#lmflow.utils.flash_attention.bloom_flash_attention._prepare_attn_mask">_prepare_attn_mask() (in module lmflow.utils.flash_attention.bloom_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.html#lmflow.utils.flash_attention.gpt2_flash_attention._prepare_decoder_attention_mask">_prepare_decoder_attention_mask() (in module lmflow.utils.flash_attention.gpt2_flash_attention)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.html#lmflow.utils.flash_attention.llama_flash_attention._prepare_decoder_attention_mask">(in module lmflow.utils.flash_attention.llama_flash_attention)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._prepare_input">_prepare_input() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._prepare_inputs">_prepare_inputs() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adamp/index.html#lmflow.optim.adamp.AdamP._projection">_projection() (lmflow.optim.adamp.AdamP method)</a> + + <ul> + <li><a href="autoapi/lmflow/optim/sgdp/index.html#lmflow.optim.sgdp.SGDP._projection">(lmflow.optim.sgdp.SGDP method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._push_from_checkpoint">_push_from_checkpoint() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._remove_unused_columns">_remove_unused_columns() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._report_to_hp_search">_report_to_hp_search() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._rotate_checkpoints">_rotate_checkpoints() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._sampling_paired_idx_from_rewards">_sampling_paired_idx_from_rewards() (lmflow.pipeline.dpov2_aligner.DPOv2Aligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner._sampling_paired_idx_from_rewards_fast">_sampling_paired_idx_from_rewards_fast() (lmflow.pipeline.dpov2_aligner.DPOv2Aligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback._save">_save() (lmflow.pipeline.utils.peft_trainer.PeftSavingCallback method)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._save">(lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftTrainer._save_checkpoint">_save_checkpoint() (lmflow.pipeline.utils.peft_trainer.PeftTrainer method)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._save_checkpoint">(lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._save_tpu">_save_tpu() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._set_signature_columns_if_needed">_set_signature_columns_if_needed() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._signature_columns">_signature_columns (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/adan/index.html#lmflow.optim.adan._single_tensor_adan">_single_tensor_adan() (in module lmflow.optim.adan)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._sorted_checkpoints">_sorted_checkpoints() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._train_batch_size">_train_batch_size (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._tune_save_checkpoint">_tune_save_checkpoint() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer._wrap_model">_wrap_model() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="A">A</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.accelerate_config_file">accelerate_config_file (lmflow.args.DPOv2AlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.activate_model_for_inference">activate_model_for_inference() (lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief">AdaBelief (class in lmflow.optim.adabelief)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADABELIEF">ADABELIEF (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/adabound/index.html#lmflow.optim.adabound.AdaBound">AdaBound (class in lmflow.optim.adabound)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADABOUND">ADABOUND (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/adadelta/index.html#lmflow.optim.adadelta.Adadelta">Adadelta (class in lmflow.optim.adadelta)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADADELTA">ADADELTA (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/adagrad/index.html#lmflow.optim.adagrad.AdaGrad">AdaGrad (class in lmflow.optim.adagrad)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADAGRAD">ADAGRAD (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/adam/index.html#lmflow.optim.adam.Adam">Adam (class in lmflow.optim.adam)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADAM">ADAM (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/lamb/index.html#lmflow.optim.lamb.Lamb.adam">adam (lmflow.optim.lamb.Lamb attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/adamax/index.html#lmflow.optim.adamax.Adamax">Adamax (class in lmflow.optim.adamax)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADAMAX">ADAMAX (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/adamp/index.html#lmflow.optim.adamp.AdamP">AdamP (class in lmflow.optim.adamp)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADAMP">ADAMP (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADAMW_SCHEDULE_FREE">ADAMW_SCHEDULE_FREE (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/adamw_schedule_free/index.html#lmflow.optim.adamw_schedule_free.AdamWScheduleFree">AdamWScheduleFree (class in lmflow.optim.adamw_schedule_free)</a> +</li> + <li><a href="autoapi/lmflow/optim/adan/index.html#lmflow.optim.adan.Adan">Adan (class in lmflow.optim.adan)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.ADAN">ADAN (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/multimodal/index.html#lmflow.utils.multimodal.adapt_llava_model_to_lmflow_type">adapt_llava_model_to_lmflow_type() (in module lmflow.utils.multimodal)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.add_callback">add_callback() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/utils/common/index.html#lmflow.utils.common.add_dataclass_attr_prefix">add_dataclass_attr_prefix() (in module lmflow.utils.common)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.add_special_starter">add_special_starter() (lmflow.utils.conversation_template.base.ConversationTemplate method)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.add_special_starter">(lmflow.utils.conversation_template.ConversationTemplate method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.add_special_stopper">add_special_stopper() (lmflow.utils.conversation_template.base.ConversationTemplate method)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.add_special_stopper">(lmflow.utils.conversation_template.ConversationTemplate method)</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.additional_stop_token_ids">additional_stop_token_ids (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/base_aligner/index.html#lmflow.pipeline.base_aligner.BaseAligner.align">align() (lmflow.pipeline.base_aligner.BaseAligner method)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner.align">(lmflow.pipeline.dpo_aligner.DPOAligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.align">(lmflow.pipeline.dpov2_aligner.DPOv2Aligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.align">(lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.align">(lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner.align">(lmflow.pipeline.raft_aligner.RaftAligner method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner.aligner_args">aligner_args (lmflow.pipeline.dpo_aligner.DPOAligner attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.aligner_args">(lmflow.pipeline.dpov2_aligner.DPOv2Aligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.aligner_args">(lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.aligner_args">(lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner.aligner_args">(lmflow.pipeline.raft_aligner.RaftAligner attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.aligner_file_path">aligner_file_path (lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.answer_extraction">answer_extraction() (in module lmflow.utils.data_utils)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.answer_type">answer_type (lmflow.args.EvaluatorArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.append_message">append_message() (lmflow.utils.llava_conversation_lib.Conversation method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.apply_chat_template">apply_chat_template (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.arch_type">arch_type (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.args">args (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.assistant_formatter">assistant_formatter (lmflow.utils.conversation_template.base.ConversationTemplate attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.assistant_formatter">(lmflow.utils.conversation_template.ConversationTemplate attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.AutoArguments">AutoArguments (class in lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.autocast_smart_context_manager">autocast_smart_context_manager() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/models/auto_model/index.html#lmflow.models.auto_model.AutoModel">AutoModel (class in lmflow.models.auto_model)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/auto_pipeline/index.html#lmflow.pipeline.auto_pipeline.AutoPipeline">AutoPipeline (class in lmflow.pipeline.auto_pipeline)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.autoregressive_sampling">autoregressive_sampling() (lmflow.pipeline.inferencer.SpeculativeInferencer method)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="B">B</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.backend">backend (lmflow.datasets.Dataset attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.backend">(lmflow.datasets.dataset.Dataset attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.backend_dataset">backend_dataset (lmflow.datasets.Dataset attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.backend_dataset">(lmflow.datasets.dataset.Dataset attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc.backward">backward() (lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc static method)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc.backward">(lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc static method)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc.backward">(lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc static method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/optim/adabound/index.html#lmflow.optim.adabound.AdaBound.base_lrs">base_lrs (lmflow.optim.adabound.AdaBound attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/base_aligner/index.html#lmflow.pipeline.base_aligner.BaseAligner">BaseAligner (class in lmflow.pipeline.base_aligner)</a> +</li> + <li><a href="autoapi/lmflow/models/base_model/index.html#lmflow.models.base_model.BaseModel">BaseModel (class in lmflow.models.base_model)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/base_pipeline/index.html#lmflow.pipeline.base_pipeline.BasePipeline">BasePipeline (class in lmflow.pipeline.base_pipeline)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/base_tuner/index.html#lmflow.pipeline.base_tuner.BaseTuner">BaseTuner (class in lmflow.pipeline.base_tuner)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.batchlize">batchlize() (in module lmflow.utils.data_utils)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.BenchmarkingArguments">BenchmarkingArguments (class in lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.beta">beta (lmflow.args.DPOAlignerArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.beta">(lmflow.args.DPOv2AlignerArguments attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.bits">bits (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.block_size">block_size (lmflow.args.DatasetArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.block_size">(lmflow.pipeline.evaluator.Evaluator attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/tokenization/hf_decoder_model/index.html#lmflow.tokenization.hf_decoder_model.blocking">blocking() (in module lmflow.tokenization.hf_decoder_model)</a> + + <ul> + <li><a href="autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.blocking">(in module lmflow.tokenization.hf_text_regression_model)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.blocking_paired">blocking_paired() (in module lmflow.tokenization.hf_text_regression_model)</a> +</li> + <li><a href="autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.blocking_text_to_textlist">blocking_text_to_textlist() (in module lmflow.tokenization.hf_text_regression_model)</a> +</li> + <li><a href="autoapi/lmflow/models/vision_encoder/index.html#lmflow.models.vision_encoder.build_vision_tower">build_vision_tower() (in module lmflow.models.vision_encoder)</a> + + <ul> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.build_vision_tower">(in module lmflow.models.vision_encoder.clip_encoder)</a> +</li> + </ul></li> + </ul></td> +</tr></table> + +<h2 id="C">C</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.cache_dir">cache_dir (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.call_model_init">call_model_init() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.callback_handler">callback_handler (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.can_return_loss">can_return_loss (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.CHATGLM3_TEMPLATE">CHATGLM3_TEMPLATE (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/chatglm/index.html#lmflow.utils.conversation_template.chatglm.CHATGLM3_TEMPLATE">(in module lmflow.utils.conversation_template.chatglm)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.CHATML_TEMPLATE">CHATML_TEMPLATE (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/chatml/index.html#lmflow.utils.conversation_template.chatml.CHATML_TEMPLATE">(in module lmflow.utils.conversation_template.chatml)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/model/index.html#lmflow.utils.model.check_homogeneity">check_homogeneity() (in module lmflow.utils.model)</a> +</li> + <li><a href="autoapi/lmflow/optim/lamb/index.html#lmflow.optim.lamb.Lamb.clamp_value">clamp_value (lmflow.optim.lamb.Lamb attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower">CLIPVisionTower (class in lmflow.models.vision_encoder.clip_encoder)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.ToolInferencer.code_exec">code_exec() (lmflow.pipeline.inferencer.ToolInferencer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.collate">collate() (lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.collection_strategy">collection_strategy (lmflow.args.RaftAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.compress_list">compress_list() (lmflow.pipeline.rm_inferencer.RewardModelInferencer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_loss">compute_loss() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/rm_trainer/index.html#lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer.compute_loss">(lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/rm_trainer/index.html#lmflow.pipeline.utils.rm_trainer.RewardTrainer.compute_loss">(lmflow.pipeline.utils.rm_trainer.RewardTrainer method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_loss_context_manager">compute_loss_context_manager() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_metrics">compute_metrics (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/rm_trainer/index.html#lmflow.pipeline.utils.rm_trainer.compute_metrics">compute_metrics() (in module lmflow.pipeline.utils.rm_trainer)</a> +</li> + <li><a href="autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding">CondenseRotaryEmbedding (class in lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch)</a> +</li> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.config">config (lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower property)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.config">(lmflow.pipeline.evaluator.Evaluator attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.config">(lmflow.pipeline.inferencer.Inferencer attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.config_name">config_name (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.config_overrides">config_overrides (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.TemplateComponent.content">content (lmflow.utils.conversation_template.base.TemplateComponent attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.control">control (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.CONTROLLER_HEART_BEAT_EXPIRATION">CONTROLLER_HEART_BEAT_EXPIRATION (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_llama_2">conv_llama_2 (in module lmflow.utils.llava_conversation_lib)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_llava_llama_2">conv_llava_llama_2 (in module lmflow.utils.llava_conversation_lib)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_llava_plain">conv_llava_plain (in module lmflow.utils.llava_conversation_lib)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_llava_v0">conv_llava_v0 (in module lmflow.utils.llava_conversation_lib)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_llava_v0_mmtag">conv_llava_v0_mmtag (in module lmflow.utils.llava_conversation_lib)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_llava_v1">conv_llava_v1 (in module lmflow.utils.llava_conversation_lib)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_llava_v1_mmtag">conv_llava_v1_mmtag (in module lmflow.utils.llava_conversation_lib)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_mpt">conv_mpt (in module lmflow.utils.llava_conversation_lib)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_templates">conv_templates (in module lmflow.utils.llava_conversation_lib)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_vicuna_v0">conv_vicuna_v0 (in module lmflow.utils.llava_conversation_lib)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.conv_vicuna_v1">conv_vicuna_v1 (in module lmflow.utils.llava_conversation_lib)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation">Conversation (class in lmflow.utils.llava_conversation_lib)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.CONVERSATION_DATASET_DESCRIPTION">CONVERSATION_DATASET_DESCRIPTION (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.CONVERSATION_ROLE_NAMES">CONVERSATION_ROLE_NAMES (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.conversation_template">conversation_template (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/tokenization/hf_decoder_model/index.html#lmflow.tokenization.hf_decoder_model.conversation_tokenize_function">conversation_tokenize_function() (in module lmflow.tokenization.hf_decoder_model)</a> + + <ul> + <li><a href="autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.conversation_tokenize_function">(in module lmflow.tokenization.hf_text_regression_model)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate">ConversationTemplate (class in lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate">(class in lmflow.utils.conversation_template.base)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplateForTool">ConversationTemplateForTool (class in lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplateForTool">(class in lmflow.utils.conversation_template.base)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.convert_to_paired_dataset">convert_to_paired_dataset() (lmflow.pipeline.dpov2_aligner.DPOv2Aligner method)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.copy">copy() (lmflow.utils.llava_conversation_lib.Conversation method)</a> +</li> + <li><a href="autoapi/lmflow/utils/common/index.html#lmflow.utils.common.create_copied_dataclass">create_copied_dataclass() (in module lmflow.utils.common)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner.create_customized_optimizer">create_customized_optimizer() (lmflow.pipeline.finetuner.Finetuner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.create_dataloader">create_dataloader() (lmflow.pipeline.evaluator.Evaluator method)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.create_dataloader">(lmflow.pipeline.inferencer.Inferencer method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.create_from_dict">create_from_dict() (lmflow.datasets.Dataset class method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.create_from_dict">(lmflow.datasets.dataset.Dataset class method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_model_card">create_model_card() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_optimizer">create_optimizer() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_optimizer_and_scheduler">create_optimizer_and_scheduler() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_scheduler">create_scheduler() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.current_flos">current_flos (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.custom_model">custom_model (lmflow.args.VisModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.custom_vision_model">custom_vision_model (lmflow.args.VisModelArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.custom_vision_model">(lmflow.models.vision2seq_model.CustomAutoVision2SeqModel attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel">CustomAutoVision2SeqModel (class in lmflow.models.vision2seq_model)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.customized_cache_dir">customized_cache_dir (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.customized_optim">customized_optim (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.customized_optim_args">customized_optim_args (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset">CustomMultiModalDataset (class in lmflow.datasets.multi_modal_dataset)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="D">D</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.data_args">data_args (lmflow.datasets.Dataset attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.data_args">(lmflow.datasets.dataset.Dataset attribute)</a> +</li> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.data_args">(lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner.data_args">(lmflow.pipeline.dpo_aligner.DPOAligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.data_args">(lmflow.pipeline.dpov2_aligner.DPOv2Aligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.data_args">(lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.data_args">(lmflow.pipeline.evaluator.Evaluator attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner.data_args">(lmflow.pipeline.finetuner.Finetuner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.data_args">(lmflow.pipeline.inferencer.Inferencer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.data_args">(lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner.data_args">(lmflow.pipeline.raft_aligner.RaftAligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.data_args">(lmflow.pipeline.rm_inferencer.RewardModelInferencer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.data_args">(lmflow.pipeline.vllm_inferencer.InferencerWithOffloading attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.data_collator">data_collator (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.data_dict">data_dict (lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset attribute)</a> +</li> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset">DataCollatorForSupervisedDataset (class in lmflow.datasets.multi_modal_dataset)</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset">Dataset (class in lmflow.datasets)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset">(class in lmflow.datasets.dataset)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.dataset_config_name">dataset_config_name (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.DATASET_DESCRIPTION_MAP">DATASET_DESCRIPTION_MAP (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.BenchmarkingArguments.dataset_name">dataset_name (lmflow.args.BenchmarkingArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.dataset_name">(lmflow.args.DatasetArguments attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.dataset_path">dataset_path (lmflow.args.DatasetArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.dataset_path">(lmflow.datasets.Dataset attribute)</a> +</li> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.dataset_path">(lmflow.datasets.dataset.Dataset attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.IterativeAlignerArguments.dataset_path_list">dataset_path_list (lmflow.args.IterativeAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.DATASET_TYPES">DATASET_TYPES (in module lmflow.datasets.dataset)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments">DatasetArguments (class in lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.deactivate_model_for_inference">deactivate_model_for_inference() (lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + <li><a href="autoapi/lmflow/optim/lamb/index.html#lmflow.optim.lamb.Lamb.debias">debias (lmflow.optim.lamb.Lamb attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.decode">decode() (lmflow.models.hf_decoder_model.HFDecoderModel method)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.decode">(lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/models/decoder_model/index.html#lmflow.models.decoder_model.DecoderModel">DecoderModel (class in lmflow.models.decoder_model)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.DEEPSEEK_TEMPLATE">DEEPSEEK_TEMPLATE (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/deepseek/index.html#lmflow.utils.conversation_template.deepseek.DEEPSEEK_TEMPLATE">(in module lmflow.utils.conversation_template.deepseek)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.deepspeed">deepspeed (lmflow.args.EvaluatorArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.deepspeed">(lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.deepspeed">(lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.DEFAULT_CALLBACKS">DEFAULT_CALLBACKS (in module lmflow.pipeline.utils.raft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.default_conversation">default_conversation (in module lmflow.utils.llava_conversation_lib)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.DEFAULT_IM_END_TOKEN">DEFAULT_IM_END_TOKEN (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.DEFAULT_IM_START_TOKEN">DEFAULT_IM_START_TOKEN (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.DEFAULT_IMAGE_PATCH_TOKEN">DEFAULT_IMAGE_PATCH_TOKEN (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.DEFAULT_IMAGE_TOKEN">DEFAULT_IMAGE_TOKEN (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#id0">DEFAULT_PROGRESS_CALLBACK (in module lmflow.pipeline.utils.raft_trainer)</a>, <a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.DEFAULT_PROGRESS_CALLBACK">[1]</a> +</li> + <li><a href="autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief.degenerated_to_sgd">degenerated_to_sgd (lmflow.optim.adabelief.AdaBelief attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.device">device (lmflow.args.InferencerArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.device">(lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.device">(lmflow.models.hf_model_mixin.HFModelMixin attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.device">(lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower property)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.dict">dict() (lmflow.utils.llava_conversation_lib.Conversation method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.disable_group_texts">disable_group_texts (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.distributed_inference_num_instances">distributed_inference_num_instances (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.IterativeDPOAlignerArguments.do_dpo_align">do_dpo_align (lmflow.args.IterativeDPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.do_grad_scaling">do_grad_scaling (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.IterativeDPOAlignerArguments.do_response_generation">do_response_generation (lmflow.args.IterativeDPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.do_rope_scaling">do_rope_scaling (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.do_sample">do_sample (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.IterativeDPOAlignerArguments.do_scoring">do_scoring (lmflow.args.IterativeDPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.do_train">do_train (lmflow.models.hf_model_mixin.HFModelMixin attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.double_quant">double_quant (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.dpo_loss">dpo_loss() (lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner">DPOAligner (class in lmflow.pipeline.dpo_aligner)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments">DPOAlignerArguments (class in lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner">DPOv2Aligner (class in lmflow.pipeline.dpov2_aligner)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments">DPOv2AlignerArguments (class in lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer">DPOv2Trainer (class in lmflow.pipeline.utils.dpov2_trainer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.draft_config">draft_config (lmflow.pipeline.inferencer.SpeculativeInferencer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.draft_model_args">draft_model_args (lmflow.pipeline.inferencer.SpeculativeInferencer attribute)</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.drop_instances">drop_instances() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.drop_instances">(lmflow.datasets.dataset.Dataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.ds_config">ds_config (lmflow.models.hf_model_mixin.HFModelMixin attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.dtype">dtype (lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower property)</a> +</li> + <li><a href="autoapi/lmflow/optim/dummy/index.html#lmflow.optim.dummy.Dummy">Dummy (class in lmflow.optim.dummy)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.DUMMY">DUMMY (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.dummy_feature">dummy_feature (lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower property)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="E">E</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE">EMPTY_NO_SPECIAL_TOKENS_TEMPLATE (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE">(in module lmflow.utils.conversation_template.base)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.EMPTY_TEMPLATE">EMPTY_TEMPLATE (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.EMPTY_TEMPLATE">(in module lmflow.utils.conversation_template.base)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.EmptyFormatter">EmptyFormatter (class in lmflow.utils.conversation_template.base)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.enable_decode_inference_result">enable_decode_inference_result (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.enable_distributed_inference">enable_distributed_inference (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.encode">encode() (lmflow.models.hf_decoder_model.HFDecoderModel method)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.encode">(lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.encode_conversation">encode_conversation() (lmflow.utils.conversation_template.base.ConversationTemplate method)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplateForTool.encode_conversation">(lmflow.utils.conversation_template.base.ConversationTemplateForTool method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.encode_conversation">(lmflow.utils.conversation_template.ConversationTemplate method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplateForTool.encode_conversation">(lmflow.utils.conversation_template.ConversationTemplateForTool method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/gemma/index.html#lmflow.utils.conversation_template.gemma.GemmaConversationTemplate.encode_conversation">(lmflow.utils.conversation_template.gemma.GemmaConversationTemplate method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/hymba/index.html#lmflow.utils.conversation_template.hymba.HymbaConversationTemplate.encode_conversation">(lmflow.utils.conversation_template.hymba.HymbaConversationTemplate method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.encode_images">encode_images() (lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower method)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/models/encoder_decoder_model/index.html#lmflow.models.encoder_decoder_model.EncoderDecoderModel">EncoderDecoderModel (class in lmflow.models.encoder_decoder_model)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.eos_padding">eos_padding (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.eos_token_id">eos_token_id (lmflow.pipeline.vllm_inferencer.InferencerWithOffloading attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/adamw_schedule_free/index.html#lmflow.optim.adamw_schedule_free.AdamWScheduleFree.eval">eval() (lmflow.optim.adamw_schedule_free.AdamWScheduleFree method)</a> + + <ul> + <li><a href="autoapi/lmflow/optim/sgd_schedule_free/index.html#lmflow.optim.sgd_schedule_free.SGDScheduleFree.eval">(lmflow.optim.sgd_schedule_free.SGDScheduleFree method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner.eval_dataset">eval_dataset (lmflow.pipeline.dpo_aligner.DPOAligner attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.eval_dataset">(lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.eval_dataset_path">eval_dataset_path (lmflow.args.DPOAlignerArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.eval_dataset_path">(lmflow.args.FinetunerArguments attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.eval_steps">eval_steps (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.evaluate">evaluate() (lmflow.pipeline.evaluator.Evaluator method)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.evaluate">(lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.evaluate_block_size">evaluate_block_size (lmflow.args.EvaluatorArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.evaluation_loop">evaluation_loop() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator">Evaluator (class in lmflow.pipeline.evaluator)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.evaluator_args">evaluator_args (lmflow.pipeline.evaluator.Evaluator attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments">EvaluatorArguments (class in lmflow.args)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="F">F</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.feature_select">feature_select() (lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.finetune_part">finetune_part (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner">Finetuner (class in lmflow.pipeline.finetuner)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner.finetuner_args">finetuner_args (lmflow.pipeline.finetuner.Finetuner attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments">FinetunerArguments (class in lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief.fixed_decay">fixed_decay (lmflow.optim.adabelief.AdaBelief attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_func">flash_attn_func (in module lmflow.utils.flash_attention.triton_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_kvpacked_func">flash_attn_kvpacked_func (in module lmflow.utils.flash_attention.triton_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.flash_attn_qkvpacked_func">flash_attn_qkvpacked_func (in module lmflow.utils.flash_attention.triton_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc">FlashAttnFunc (class in lmflow.utils.flash_attention.triton_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc">FlashAttnKVPackedFunc (class in lmflow.utils.flash_attention.triton_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc">FlashAttnQKVPackedFunc (class in lmflow.utils.flash_attention.triton_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.flatten_list">flatten_list() (lmflow.pipeline.rm_inferencer.RewardModelInferencer method)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.FLOAT_ONLY_DATASET_DESCRIPTION">FLOAT_ONLY_DATASET_DESCRIPTION (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.floating_point_ops">floating_point_ops() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.force_system">force_system (lmflow.utils.conversation_template.base.ConversationTemplate attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.force_system">(lmflow.utils.conversation_template.ConversationTemplate attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.EmptyFormatter.format">format() (lmflow.utils.conversation_template.base.EmptyFormatter method)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.Formatter.format">(lmflow.utils.conversation_template.base.Formatter method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ListFormatter.format">(lmflow.utils.conversation_template.base.ListFormatter method)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.StringFormatter.format">(lmflow.utils.conversation_template.base.StringFormatter method)</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.Formatter">Formatter (class in lmflow.utils.conversation_template.base)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.html#lmflow.utils.flash_attention.bloom_flash_attention.forward">forward() (in module lmflow.utils.flash_attention.bloom_flash_attention)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.html#lmflow.utils.flash_attention.gpt2_flash_attention.forward">(in module lmflow.utils.flash_attention.gpt2_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html#lmflow.utils.flash_attention.gpt_neo_flash_attention.forward">(in module lmflow.utils.flash_attention.gpt_neo_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.html#lmflow.utils.flash_attention.llama_flash_attention.forward">(in module lmflow.utils.flash_attention.llama_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.forward">(lmflow.models.vision2seq_model.CustomAutoVision2SeqModel method)</a> +</li> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.forward">(lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower method)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc.forward">(lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc static method)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc.forward">(lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc static method)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc.forward">(lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc static method)</a> +</li> + <li><a href="autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.forward">(lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.from_dict">from_dict() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.from_dict">(lmflow.datasets.dataset.Dataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.fsdp">fsdp (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.function_formatter">function_formatter (lmflow.utils.conversation_template.base.ConversationTemplate attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.function_formatter">(lmflow.utils.conversation_template.ConversationTemplate attribute)</a> +</li> + </ul></li> + </ul></td> +</tr></table> + +<h2 id="G">G</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.GEMMA_TEMPLATE">GEMMA_TEMPLATE (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/gemma/index.html#lmflow.utils.conversation_template.gemma.GEMMA_TEMPLATE">(in module lmflow.utils.conversation_template.gemma)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/gemma/index.html#lmflow.utils.conversation_template.gemma.GemmaConversationTemplate">GemmaConversationTemplate (class in lmflow.utils.conversation_template.gemma)</a> +</li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.generate">generate() (lmflow.models.vision2seq_model.CustomAutoVision2SeqModel method)</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.get_backend">get_backend() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.get_backend">(lmflow.datasets.dataset.Dataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.get_backend_dataset">get_backend_dataset() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.get_backend_dataset">(lmflow.datasets.dataset.Dataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_backend_model">get_backend_model() (lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel method)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.get_backend_model">(lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.get_backend_model">(lmflow.models.vision2seq_model.CustomAutoVision2SeqModel method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.get_batch_loss_metrics">get_batch_loss_metrics() (lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.get_batch_metrics">get_batch_metrics() (lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer method)</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.get_data_args">get_data_args() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.get_data_args">(lmflow.datasets.dataset.Dataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_eval_dataloader">get_eval_dataloader() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.get_fingerprint">get_fingerprint() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.get_fingerprint">(lmflow.datasets.dataset.Dataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.get_images">get_images() (lmflow.utils.llava_conversation_lib.Conversation method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_max_length">get_max_length() (lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel method)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.get_max_length">(lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/models/auto_model/index.html#lmflow.models.auto_model.AutoModel.get_model">get_model() (lmflow.models.auto_model.AutoModel class method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_optimizer_cls_and_kwargs">get_optimizer_cls_and_kwargs() (lmflow.pipeline.utils.raft_trainer.RaftTrainer static method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.get_paired_dataset">get_paired_dataset() (in module lmflow.pipeline.dpo_aligner)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.get_peft_without_qlora">get_peft_without_qlora() (lmflow.models.hf_decoder_model.HFDecoderModel method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/auto_pipeline/index.html#lmflow.pipeline.auto_pipeline.AutoPipeline.get_pipeline">get_pipeline() (lmflow.pipeline.auto_pipeline.AutoPipeline class method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.AutoArguments.get_pipeline_args_class">get_pipeline_args_class() (lmflow.args.AutoArguments method)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.get_prompt">get_prompt() (lmflow.utils.llava_conversation_lib.Conversation method)</a> +</li> + <li><a href="autoapi/lmflow/utils/versioning/index.html#lmflow.utils.versioning.get_python_version">get_python_version() (in module lmflow.utils.versioning)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_test_dataloader">get_test_dataloader() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_tokenizer">get_tokenizer() (lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel method)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.get_tokenizer">(lmflow.models.hf_model_mixin.HFModelMixin method)</a> +</li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.get_tokenizer">(lmflow.models.vision2seq_model.CustomAutoVision2SeqModel method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_train_dataloader">get_train_dataloader() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.get_type">get_type() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.get_type">(lmflow.datasets.dataset.Dataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.gradient_accumulation_steps">gradient_accumulation_steps (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.gradient_checkpointing">gradient_checkpointing (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.gradient_checkpointing_use_reentrant">gradient_checkpointing_use_reentrant (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner.group_text">group_text() (lmflow.pipeline.finetuner.Finetuner method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.group_texts_batch_size">group_texts_batch_size (lmflow.args.DatasetArguments attribute)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="H">H</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.Formatter.has_placeholder">has_placeholder() (lmflow.utils.conversation_template.base.Formatter method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.hf_auto_model">hf_auto_model (lmflow.models.hf_model_mixin.HFModelMixin attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HF_AUTOMODEL_MAPPING">HF_AUTOMODEL_MAPPING (in module lmflow.models.hf_model_mixin)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HF_AUTOMODEL_TYPE">HF_AUTOMODEL_TYPE (in module lmflow.models.hf_model_mixin)</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.hf_dataset_sanity_check">hf_dataset_sanity_check() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.hf_dataset_sanity_check">(lmflow.datasets.dataset.Dataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.hf_model_config">hf_model_config (lmflow.models.hf_model_mixin.HFModelMixin attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel">HFDecoderModel (class in lmflow.models.hf_decoder_model)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel">HFEncoderDecoderModel (class in lmflow.models.hf_encoder_decoder_model)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin">HFModelMixin (class in lmflow.models.hf_model_mixin)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel">HFTextRegressionModel (class in lmflow.models.hf_text_regression_model)</a> +</li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.hidden_size">hidden_size (lmflow.models.vision2seq_model.CustomAutoVision2SeqModel attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.hidden_size">(lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower property)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.hp_name">hp_name (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.hp_search_backend">hp_search_backend (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.HYMBA_TEMPLATE">HYMBA_TEMPLATE (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/hymba/index.html#lmflow.utils.conversation_template.hymba.HYMBA_TEMPLATE">(in module lmflow.utils.conversation_template.hymba)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/hymba/index.html#lmflow.utils.conversation_template.hymba.HymbaConversationTemplate">HymbaConversationTemplate (class in lmflow.utils.conversation_template.hymba)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.hyperparameter_search">hyperparameter_search() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="I">I</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.ignore_bias_buffers">ignore_bias_buffers (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.IGNORE_INDEX">IGNORE_INDEX (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.MultiModalDatasetArguments.image_aspect_ratio">image_aspect_ratio (lmflow.args.MultiModalDatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.image_encoder_name_or_path">image_encoder_name_or_path (lmflow.args.VisModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.MultiModalDatasetArguments.image_folder">image_folder (lmflow.args.MultiModalDatasetArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.image_folder">(lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.IMAGE_TOKEN_INDEX">IMAGE_TOKEN_INDEX (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner.INF">INF (lmflow.pipeline.raft_aligner.RaftAligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.inference">inference() (lmflow.models.hf_decoder_model.HFDecoderModel method)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.inference">(lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.inference">(lmflow.models.hf_text_regression_model.HFTextRegressionModel method)</a> +</li> + <li><a href="autoapi/lmflow/models/text_regression_model/index.html#lmflow.models.text_regression_model.TextRegressionModel.inference">(lmflow.models.text_regression_model.TextRegressionModel method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.inference">(lmflow.pipeline.inferencer.Inferencer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.inference">(lmflow.pipeline.inferencer.SpeculativeInferencer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.ToolInferencer.inference">(lmflow.pipeline.inferencer.ToolInferencer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.inference">(lmflow.pipeline.rm_inferencer.RewardModelInferencer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.inference">(lmflow.pipeline.vllm_inferencer.InferencerWithOffloading method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer.inference">(lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer.inference">(lmflow.pipeline.vllm_inferencer.VLLMInferencer method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.inference_batch_size">inference_batch_size (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.inference_batch_size_per_device">inference_batch_size_per_device (lmflow.args.EvaluatorArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.inference_batch_size_per_device">(lmflow.args.RaftAlignerArguments attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/models/text_regression_model/index.html#lmflow.models.text_regression_model.TextRegressionModel.inference_func">inference_func (lmflow.models.text_regression_model.TextRegressionModel attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer">Inferencer (class in lmflow.pipeline.inferencer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.inferencer_args">inferencer_args (lmflow.pipeline.inferencer.Inferencer attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.inferencer_args">(lmflow.pipeline.rm_inferencer.RewardModelInferencer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.inferencer_args">(lmflow.pipeline.vllm_inferencer.InferencerWithOffloading attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer.inferencer_file_path">inferencer_file_path (lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments">InferencerArguments (class in lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading">InferencerWithOffloading (class in lmflow.pipeline.vllm_inferencer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.init_git_repo">init_git_repo() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#lmflow.utils.flash_attention.triton_flash_attention.init_to_zero">init_to_zero() (in module lmflow.utils.flash_attention.triton_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.IterativeAlignerArguments.initial_iter_idx">initial_iter_idx (lmflow.args.IterativeAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.RewardModelInferenceResultWithInput.input">input (lmflow.utils.data_utils.RewardModelInferenceResultWithInput attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.VLLMInferenceResultWithInput.input">(lmflow.utils.data_utils.VLLMInferenceResultWithInput attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.INSTANCE_FIELDS_MAP">INSTANCE_FIELDS_MAP (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/index.html#lmflow.internal_version">internal_version (in module lmflow)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.INTERNLM2_TEMPLATE">INTERNLM2_TEMPLATE (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/internlm/index.html#lmflow.utils.conversation_template.internlm.INTERNLM2_TEMPLATE">(in module lmflow.utils.conversation_template.internlm)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.ipex_optimize_model">ipex_optimize_model() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.is_custom_dataset">is_custom_dataset (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.is_encoder_decoder">is_encoder_decoder (lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/versioning/index.html#lmflow.utils.versioning.is_flash_attn_available">is_flash_attn_available() (in module lmflow.utils.versioning)</a> +</li> + <li><a href="autoapi/lmflow/utils/versioning/index.html#lmflow.utils.versioning.is_flask_available">is_flask_available() (in module lmflow.utils.versioning)</a> +</li> + <li><a href="autoapi/lmflow/utils/versioning/index.html#lmflow.utils.versioning.is_gradio_available">is_gradio_available() (in module lmflow.utils.versioning)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_in_train">is_in_train (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.is_loaded">is_loaded (lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_local_process_zero">is_local_process_zero() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.MultiModalDatasetArguments.is_multimodal">is_multimodal (lmflow.args.MultiModalDatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.is_multimodal_available">is_multimodal_available() (in module lmflow.datasets)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/versioning/index.html#lmflow.utils.versioning.is_multimodal_available">(in module lmflow.utils.versioning)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/versioning/index.html#lmflow.utils.versioning.is_package_version_at_least">is_package_version_at_least() (in module lmflow.utils.versioning)</a> +</li> + <li><a href="autoapi/lmflow/utils/versioning/index.html#lmflow.utils.versioning.is_ray_available">is_ray_available() (in module lmflow.utils.versioning)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.IS_SAGEMAKER_MP_POST_1_10">IS_SAGEMAKER_MP_POST_1_10 (in module lmflow.pipeline.utils.raft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.is_torch_greater_or_equal_than_1_10">is_torch_greater_or_equal_than_1_10 (in module lmflow.pipeline.utils.raft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.is_torch_less_than_1_11">is_torch_less_than_1_11 (in module lmflow.pipeline.utils.raft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/utils/versioning/index.html#lmflow.utils.versioning.is_trl_available">is_trl_available() (in module lmflow.utils.versioning)</a> +</li> + <li><a href="autoapi/lmflow/utils/versioning/index.html#lmflow.utils.versioning.is_vllm_available">is_vllm_available() (in module lmflow.utils.versioning)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_world_process_zero">is_world_process_zero() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.IterativeAlignerArguments">IterativeAlignerArguments (class in lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner">IterativeDPOAligner (class in lmflow.pipeline.iterative_dpo_aligner)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.IterativeDPOAlignerArguments">IterativeDPOAlignerArguments (class in lmflow.args)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="K">K</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.keep_linebreaks">keep_linebreaks (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.KEY_INSTANCES">KEY_INSTANCES (in module lmflow.datasets.dataset)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.KEY_SCORE">KEY_SCORE (in module lmflow.datasets.dataset)</a> +</li> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.KEY_TYPE">KEY_TYPE (in module lmflow.datasets.dataset)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="L">L</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.label_names">label_names (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.label_pad_token_id">label_pad_token_id (lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/lamb/index.html#lmflow.optim.lamb.Lamb">Lamb (class in lmflow.optim.lamb)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.LAMB">LAMB (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.language_model">language_model (lmflow.models.vision2seq_model.CustomAutoVision2SeqModel attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.language_model_from_pretrained">language_model_from_pretrained() (lmflow.models.vision2seq_model.CustomAutoVision2SeqModel method)</a> +</li> + <li><a href="autoapi/lmflow/optim/lars/index.html#lmflow.optim.lars.LARS">LARS (class in lmflow.optim.lars)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.LARS">(lmflow.args.OptimizerNames attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner.last_checkpoint">last_checkpoint (lmflow.pipeline.finetuner.Finetuner attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.learning_rate">learning_rate (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.len_penalty">len_penalty (lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.length_penalty">length_penalty (lmflow.args.DPOv2AlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.lisa_activated_layers">lisa_activated_layers (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.lisa_interval_steps">lisa_interval_steps (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.lisa_layers_attribute">lisa_layers_attribute (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ListFormatter">ListFormatter (class in lmflow.utils.conversation_template.base)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.LLAMA2_TEMPLATE">LLAMA2_TEMPLATE (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE">(in module lmflow.utils.conversation_template.llama)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE_FOR_TOOL">LLAMA2_TEMPLATE_FOR_TOOL (in module lmflow.utils.conversation_template.llama)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.llama.Llama2ConversationTemplate">Llama2ConversationTemplate (class in lmflow.utils.conversation_template.llama)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool">Llama2ConversationTemplateForTool (class in lmflow.utils.conversation_template.llama)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.LLAMA3_TEMPLATE">LLAMA3_TEMPLATE (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE">(in module lmflow.utils.conversation_template.llama)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.LLAMA3_TEMPLATE_FOR_TOOL">LLAMA3_TEMPLATE_FOR_TOOL (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE_FOR_TOOL">(in module lmflow.utils.conversation_template.llama)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.SeparatorStyle.LLAMA_2">LLAMA_2 (lmflow.utils.llava_conversation_lib.SeparatorStyle attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.llava_loading">llava_loading (lmflow.args.VisModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.llava_pretrain_model_path">llava_pretrain_model_path (lmflow.args.VisModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.llm_model_name_or_path">llm_model_name_or_path (lmflow.args.VisModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.BenchmarkingArguments.lm_evaluation_metric">lm_evaluation_metric (lmflow.args.BenchmarkingArguments attribute)</a> +</li> + <li> + lmflow + + <ul> + <li><a href="autoapi/lmflow/index.html#module-lmflow">module</a> +</li> + </ul></li> + <li> + lmflow.args + + <ul> + <li><a href="autoapi/lmflow/args/index.html#module-lmflow.args">module</a> +</li> + </ul></li> + <li> + lmflow.datasets + + <ul> + <li><a href="autoapi/lmflow/datasets/index.html#module-lmflow.datasets">module</a> +</li> + </ul></li> + <li> + lmflow.datasets.dataset + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#module-lmflow.datasets.dataset">module</a> +</li> + </ul></li> + <li> + lmflow.datasets.multi_modal_dataset + + <ul> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#module-lmflow.datasets.multi_modal_dataset">module</a> +</li> + </ul></li> + <li> + lmflow.models + + <ul> + <li><a href="autoapi/lmflow/models/index.html#module-lmflow.models">module</a> +</li> + </ul></li> + <li> + lmflow.models.auto_model + + <ul> + <li><a href="autoapi/lmflow/models/auto_model/index.html#module-lmflow.models.auto_model">module</a> +</li> + </ul></li> + <li> + lmflow.models.base_model + + <ul> + <li><a href="autoapi/lmflow/models/base_model/index.html#module-lmflow.models.base_model">module</a> +</li> + </ul></li> + <li> + lmflow.models.decoder_model + + <ul> + <li><a href="autoapi/lmflow/models/decoder_model/index.html#module-lmflow.models.decoder_model">module</a> +</li> + </ul></li> + <li> + lmflow.models.encoder_decoder_model + + <ul> + <li><a href="autoapi/lmflow/models/encoder_decoder_model/index.html#module-lmflow.models.encoder_decoder_model">module</a> +</li> + </ul></li> + <li> + lmflow.models.hf_decoder_model + + <ul> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#module-lmflow.models.hf_decoder_model">module</a> +</li> + </ul></li> + <li> + lmflow.models.hf_encoder_decoder_model + + <ul> + <li><a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#module-lmflow.models.hf_encoder_decoder_model">module</a> +</li> + </ul></li> + <li> + lmflow.models.hf_model_mixin + + <ul> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#module-lmflow.models.hf_model_mixin">module</a> +</li> + </ul></li> + <li> + lmflow.models.hf_text_regression_model + + <ul> + <li><a href="autoapi/lmflow/models/hf_text_regression_model/index.html#module-lmflow.models.hf_text_regression_model">module</a> +</li> + </ul></li> + <li> + lmflow.models.interfaces + + <ul> + <li><a href="autoapi/lmflow/models/interfaces/index.html#module-lmflow.models.interfaces">module</a> +</li> + </ul></li> + <li> + lmflow.models.interfaces.tunable + + <ul> + <li><a href="autoapi/lmflow/models/interfaces/tunable/index.html#module-lmflow.models.interfaces.tunable">module</a> +</li> + </ul></li> + <li> + lmflow.models.regression_model + + <ul> + <li><a href="autoapi/lmflow/models/regression_model/index.html#module-lmflow.models.regression_model">module</a> +</li> + </ul></li> + <li> + lmflow.models.text_regression_model + + <ul> + <li><a href="autoapi/lmflow/models/text_regression_model/index.html#module-lmflow.models.text_regression_model">module</a> +</li> + </ul></li> + <li> + lmflow.models.vision2seq_model + + <ul> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#module-lmflow.models.vision2seq_model">module</a> +</li> + </ul></li> + <li> + lmflow.models.vision_encoder + + <ul> + <li><a href="autoapi/lmflow/models/vision_encoder/index.html#module-lmflow.models.vision_encoder">module</a> +</li> + </ul></li> + <li> + lmflow.models.vision_encoder.clip_encoder + + <ul> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#module-lmflow.models.vision_encoder.clip_encoder">module</a> +</li> + </ul></li> + <li> + lmflow.optim + + <ul> + <li><a href="autoapi/lmflow/optim/index.html#module-lmflow.optim">module</a> +</li> + </ul></li> + <li> + lmflow.optim.adabelief + + <ul> + <li><a href="autoapi/lmflow/optim/adabelief/index.html#module-lmflow.optim.adabelief">module</a> +</li> + </ul></li> + <li> + lmflow.optim.adabound + + <ul> + <li><a href="autoapi/lmflow/optim/adabound/index.html#module-lmflow.optim.adabound">module</a> +</li> + </ul></li> + <li> + lmflow.optim.adadelta + + <ul> + <li><a href="autoapi/lmflow/optim/adadelta/index.html#module-lmflow.optim.adadelta">module</a> +</li> + </ul></li> + <li> + lmflow.optim.adagrad + + <ul> + <li><a href="autoapi/lmflow/optim/adagrad/index.html#module-lmflow.optim.adagrad">module</a> +</li> + </ul></li> + <li> + lmflow.optim.adam + + <ul> + <li><a href="autoapi/lmflow/optim/adam/index.html#module-lmflow.optim.adam">module</a> +</li> + </ul></li> + <li> + lmflow.optim.adamax + + <ul> + <li><a href="autoapi/lmflow/optim/adamax/index.html#module-lmflow.optim.adamax">module</a> +</li> + </ul></li> + <li> + lmflow.optim.adamp + + <ul> + <li><a href="autoapi/lmflow/optim/adamp/index.html#module-lmflow.optim.adamp">module</a> +</li> + </ul></li> + <li> + lmflow.optim.adamw_schedule_free + + <ul> + <li><a href="autoapi/lmflow/optim/adamw_schedule_free/index.html#module-lmflow.optim.adamw_schedule_free">module</a> +</li> + </ul></li> + <li> + lmflow.optim.adan + + <ul> + <li><a href="autoapi/lmflow/optim/adan/index.html#module-lmflow.optim.adan">module</a> +</li> + </ul></li> + <li> + lmflow.optim.dummy + + <ul> + <li><a href="autoapi/lmflow/optim/dummy/index.html#module-lmflow.optim.dummy">module</a> +</li> + </ul></li> + <li> + lmflow.optim.lamb + + <ul> + <li><a href="autoapi/lmflow/optim/lamb/index.html#module-lmflow.optim.lamb">module</a> +</li> + </ul></li> + <li> + lmflow.optim.lars + + <ul> + <li><a href="autoapi/lmflow/optim/lars/index.html#module-lmflow.optim.lars">module</a> +</li> + </ul></li> + <li> + lmflow.optim.nadam + + <ul> + <li><a href="autoapi/lmflow/optim/nadam/index.html#module-lmflow.optim.nadam">module</a> +</li> + </ul></li> + <li> + lmflow.optim.novograd + + <ul> + <li><a href="autoapi/lmflow/optim/novograd/index.html#module-lmflow.optim.novograd">module</a> +</li> + </ul></li> + <li> + lmflow.optim.optimizers + + <ul> + <li><a href="autoapi/lmflow/optim/optimizers/index.html#module-lmflow.optim.optimizers">module</a> +</li> + </ul></li> + <li> + lmflow.optim.radam + + <ul> + <li><a href="autoapi/lmflow/optim/radam/index.html#module-lmflow.optim.radam">module</a> +</li> + </ul></li> + <li> + lmflow.optim.sgd_schedule_free + + <ul> + <li><a href="autoapi/lmflow/optim/sgd_schedule_free/index.html#module-lmflow.optim.sgd_schedule_free">module</a> +</li> + </ul></li> + <li> + lmflow.optim.sgdp + + <ul> + <li><a href="autoapi/lmflow/optim/sgdp/index.html#module-lmflow.optim.sgdp">module</a> +</li> + </ul></li> + <li> + lmflow.optim.sophia + + <ul> + <li><a href="autoapi/lmflow/optim/sophia/index.html#module-lmflow.optim.sophia">module</a> +</li> + </ul></li> + <li> + lmflow.optim.yogi + + <ul> + <li><a href="autoapi/lmflow/optim/yogi/index.html#module-lmflow.optim.yogi">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline + + <ul> + <li><a href="autoapi/lmflow/pipeline/index.html#module-lmflow.pipeline">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.auto_pipeline + + <ul> + <li><a href="autoapi/lmflow/pipeline/auto_pipeline/index.html#module-lmflow.pipeline.auto_pipeline">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.base_aligner + + <ul> + <li><a href="autoapi/lmflow/pipeline/base_aligner/index.html#module-lmflow.pipeline.base_aligner">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.base_pipeline + + <ul> + <li><a href="autoapi/lmflow/pipeline/base_pipeline/index.html#module-lmflow.pipeline.base_pipeline">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.base_tuner + + <ul> + <li><a href="autoapi/lmflow/pipeline/base_tuner/index.html#module-lmflow.pipeline.base_tuner">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.dpo_aligner + + <ul> + <li><a href="autoapi/lmflow/pipeline/dpo_aligner/index.html#module-lmflow.pipeline.dpo_aligner">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.dpov2_aligner + + <ul> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#module-lmflow.pipeline.dpov2_aligner">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.evaluator + + <ul> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#module-lmflow.pipeline.evaluator">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.finetuner + + <ul> + <li><a href="autoapi/lmflow/pipeline/finetuner/index.html#module-lmflow.pipeline.finetuner">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.inferencer + + <ul> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#module-lmflow.pipeline.inferencer">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.iterative_dpo_aligner + + <ul> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#module-lmflow.pipeline.iterative_dpo_aligner">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.raft_aligner + + <ul> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#module-lmflow.pipeline.raft_aligner">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.rm_inferencer + + <ul> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#module-lmflow.pipeline.rm_inferencer">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.rm_tuner + + <ul> + <li><a href="autoapi/lmflow/pipeline/rm_tuner/index.html#module-lmflow.pipeline.rm_tuner">module</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li> + lmflow.pipeline.utils + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/index.html#module-lmflow.pipeline.utils">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.utils.dpov2_dataprocessor + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#module-lmflow.pipeline.utils.dpov2_dataprocessor">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.utils.dpov2_trainer + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#module-lmflow.pipeline.utils.dpov2_trainer">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.utils.memory_safe_dpov2_align + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.html#module-lmflow.pipeline.utils.memory_safe_dpov2_align">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.utils.memory_safe_vllm_inference + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.html#module-lmflow.pipeline.utils.memory_safe_vllm_inference">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.utils.peft_trainer + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/peft_trainer/index.html#module-lmflow.pipeline.utils.peft_trainer">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.utils.raft_trainer + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#module-lmflow.pipeline.utils.raft_trainer">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.utils.rm_dataprocessor + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#module-lmflow.pipeline.utils.rm_dataprocessor">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.utils.rm_trainer + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/rm_trainer/index.html#module-lmflow.pipeline.utils.rm_trainer">module</a> +</li> + </ul></li> + <li> + lmflow.pipeline.vllm_inferencer + + <ul> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#module-lmflow.pipeline.vllm_inferencer">module</a> +</li> + </ul></li> + <li> + lmflow.tokenization + + <ul> + <li><a href="autoapi/lmflow/tokenization/index.html#module-lmflow.tokenization">module</a> +</li> + </ul></li> + <li> + lmflow.tokenization.hf_decoder_model + + <ul> + <li><a href="autoapi/lmflow/tokenization/hf_decoder_model/index.html#module-lmflow.tokenization.hf_decoder_model">module</a> +</li> + </ul></li> + <li> + lmflow.tokenization.hf_text_regression_model + + <ul> + <li><a href="autoapi/lmflow/tokenization/hf_text_regression_model/index.html#module-lmflow.tokenization.hf_text_regression_model">module</a> +</li> + </ul></li> + <li> + lmflow.utils + + <ul> + <li><a href="autoapi/lmflow/utils/index.html#module-lmflow.utils">module</a> +</li> + </ul></li> + <li> + lmflow.utils.common + + <ul> + <li><a href="autoapi/lmflow/utils/common/index.html#module-lmflow.utils.common">module</a> +</li> + </ul></li> + <li> + lmflow.utils.constants + + <ul> + <li><a href="autoapi/lmflow/utils/constants/index.html#module-lmflow.utils.constants">module</a> +</li> + </ul></li> + <li> + lmflow.utils.conversation_template + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#module-lmflow.utils.conversation_template">module</a> +</li> + </ul></li> + <li> + lmflow.utils.conversation_template.base + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#module-lmflow.utils.conversation_template.base">module</a> +</li> + </ul></li> + <li> + lmflow.utils.conversation_template.chatglm + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/chatglm/index.html#module-lmflow.utils.conversation_template.chatglm">module</a> +</li> + </ul></li> + <li> + lmflow.utils.conversation_template.chatml + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/chatml/index.html#module-lmflow.utils.conversation_template.chatml">module</a> +</li> + </ul></li> + <li> + lmflow.utils.conversation_template.deepseek + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/deepseek/index.html#module-lmflow.utils.conversation_template.deepseek">module</a> +</li> + </ul></li> + <li> + lmflow.utils.conversation_template.gemma + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/gemma/index.html#module-lmflow.utils.conversation_template.gemma">module</a> +</li> + </ul></li> + <li> + lmflow.utils.conversation_template.hymba + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/hymba/index.html#module-lmflow.utils.conversation_template.hymba">module</a> +</li> + </ul></li> + <li> + lmflow.utils.conversation_template.internlm + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/internlm/index.html#module-lmflow.utils.conversation_template.internlm">module</a> +</li> + </ul></li> + <li> + lmflow.utils.conversation_template.llama + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/llama/index.html#module-lmflow.utils.conversation_template.llama">module</a> +</li> + </ul></li> + <li> + lmflow.utils.conversation_template.phi + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/phi/index.html#module-lmflow.utils.conversation_template.phi">module</a> +</li> + </ul></li> + <li> + lmflow.utils.conversation_template.qwen + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/qwen/index.html#module-lmflow.utils.conversation_template.qwen">module</a> +</li> + </ul></li> + <li> + lmflow.utils.conversation_template.yi + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/yi/index.html#module-lmflow.utils.conversation_template.yi">module</a> +</li> + </ul></li> + <li> + lmflow.utils.conversation_template.zephyr + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/zephyr/index.html#module-lmflow.utils.conversation_template.zephyr">module</a> +</li> + </ul></li> + <li> + lmflow.utils.data_utils + + <ul> + <li><a href="autoapi/lmflow/utils/data_utils/index.html#module-lmflow.utils.data_utils">module</a> +</li> + </ul></li> + <li> + lmflow.utils.flash_attention + + <ul> + <li><a href="autoapi/lmflow/utils/flash_attention/index.html#module-lmflow.utils.flash_attention">module</a> +</li> + </ul></li> + <li> + lmflow.utils.flash_attention.bloom_flash_attention + + <ul> + <li><a href="autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.html#module-lmflow.utils.flash_attention.bloom_flash_attention">module</a> +</li> + </ul></li> + <li> + lmflow.utils.flash_attention.gpt2_flash_attention + + <ul> + <li><a href="autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.html#module-lmflow.utils.flash_attention.gpt2_flash_attention">module</a> +</li> + </ul></li> + <li> + lmflow.utils.flash_attention.gpt_neo_flash_attention + + <ul> + <li><a href="autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html#module-lmflow.utils.flash_attention.gpt_neo_flash_attention">module</a> +</li> + </ul></li> + <li> + lmflow.utils.flash_attention.llama_flash_attention + + <ul> + <li><a href="autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.html#module-lmflow.utils.flash_attention.llama_flash_attention">module</a> +</li> + </ul></li> + <li> + lmflow.utils.flash_attention.triton_flash_attention + + <ul> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#module-lmflow.utils.flash_attention.triton_flash_attention">module</a> +</li> + </ul></li> + <li> + lmflow.utils.llava_conversation_lib + + <ul> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#module-lmflow.utils.llava_conversation_lib">module</a> +</li> + </ul></li> + <li> + lmflow.utils.model + + <ul> + <li><a href="autoapi/lmflow/utils/model/index.html#module-lmflow.utils.model">module</a> +</li> + </ul></li> + <li> + lmflow.utils.multimodal + + <ul> + <li><a href="autoapi/lmflow/utils/multimodal/index.html#module-lmflow.utils.multimodal">module</a> +</li> + </ul></li> + <li> + lmflow.utils.position_interpolation + + <ul> + <li><a href="autoapi/lmflow/utils/position_interpolation/index.html#module-lmflow.utils.position_interpolation">module</a> +</li> + </ul></li> + <li> + lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch + + <ul> + <li><a href="autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#module-lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch">module</a> +</li> + </ul></li> + <li> + lmflow.utils.versioning + + <ul> + <li><a href="autoapi/lmflow/utils/versioning/index.html#module-lmflow.utils.versioning">module</a> +</li> + </ul></li> + <li> + lmflow.version + + <ul> + <li><a href="autoapi/lmflow/version/index.html#module-lmflow.version">module</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.LMFLOW_LORA_TARGET_MODULES_MAPPING">LMFLOW_LORA_TARGET_MODULES_MAPPING (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.load_data">load_data() (in module lmflow.utils.data_utils)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.load_in_4bit">load_in_4bit (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.load_inference_results">load_inference_results() (lmflow.pipeline.vllm_inferencer.InferencerWithOffloading method)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer.load_inference_results">(lmflow.pipeline.vllm_inferencer.VLLMInferencer method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/multimodal/index.html#lmflow.utils.multimodal.load_llava_pretrain_model">load_llava_pretrain_model() (in module lmflow.utils.multimodal)</a> +</li> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.load_model">load_model() (lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower method)</a> +</li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.load_prompt_cache">load_prompt_cache() (lmflow.models.vision2seq_model.CustomAutoVision2SeqModel method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.local_rank">local_rank (lmflow.args.DPOAlignerArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.local_rank">(lmflow.args.EvaluatorArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.local_rank">(lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.local_rank">(lmflow.pipeline.evaluator.Evaluator attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.local_rank">(lmflow.pipeline.inferencer.Inferencer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.local_rank">(lmflow.pipeline.rm_inferencer.RewardModelInferencer attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.log">log() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.log_freq">log_freq (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.LOGDIR">LOGDIR (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.logger">logger (in module lmflow.args)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.logger">(in module lmflow.datasets.dataset)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.logger">(in module lmflow.models.hf_decoder_model)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.logger">(in module lmflow.models.hf_encoder_decoder_model)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.logger">(in module lmflow.models.hf_model_mixin)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.logger">(in module lmflow.models.hf_text_regression_model)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.logger">(in module lmflow.pipeline.dpov2_aligner)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.logger">(in module lmflow.pipeline.finetuner)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.logger">(in module lmflow.pipeline.inferencer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.logger">(in module lmflow.pipeline.iterative_dpo_aligner)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.logger">(in module lmflow.pipeline.raft_aligner)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.logger">(in module lmflow.pipeline.rm_inferencer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_tuner/index.html#lmflow.pipeline.rm_tuner.logger">(in module lmflow.pipeline.rm_tuner)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.logger">(in module lmflow.pipeline.utils.dpov2_dataprocessor)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#lmflow.pipeline.utils.dpov2_trainer.logger">(in module lmflow.pipeline.utils.dpov2_trainer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.html#lmflow.pipeline.utils.memory_safe_dpov2_align.logger">(in module lmflow.pipeline.utils.memory_safe_dpov2_align)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.html#lmflow.pipeline.utils.memory_safe_vllm_inference.logger">(in module lmflow.pipeline.utils.memory_safe_vllm_inference)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.logger">(in module lmflow.pipeline.utils.raft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.logger">(in module lmflow.pipeline.utils.rm_dataprocessor)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.logger">(in module lmflow.pipeline.vllm_inferencer)</a> +</li> + <li><a href="autoapi/lmflow/tokenization/hf_decoder_model/index.html#lmflow.tokenization.hf_decoder_model.logger">(in module lmflow.tokenization.hf_decoder_model)</a> +</li> + <li><a href="autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.logger">(in module lmflow.tokenization.hf_text_regression_model)</a> +</li> + <li><a href="autoapi/lmflow/utils/common/index.html#lmflow.utils.common.logger">(in module lmflow.utils.common)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.logger">(in module lmflow.utils.conversation_template.base)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/gemma/index.html#lmflow.utils.conversation_template.gemma.logger">(in module lmflow.utils.conversation_template.gemma)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/llama/index.html#lmflow.utils.conversation_template.llama.logger">(in module lmflow.utils.conversation_template.llama)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/zephyr/index.html#lmflow.utils.conversation_template.zephyr.logger">(in module lmflow.utils.conversation_template.zephyr)</a> +</li> + <li><a href="autoapi/lmflow/utils/model/index.html#lmflow.utils.model.logger">(in module lmflow.utils.model)</a> +</li> + <li><a href="autoapi/lmflow/utils/versioning/index.html#lmflow.utils.versioning.logger">(in module lmflow.utils.versioning)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.logging_steps">logging_steps (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.lora_alpha">lora_alpha (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.lora_dropout">lora_dropout (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.lora_model_path">lora_model_path (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.lora_r">lora_r (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.lora_target_modules">lora_target_modules (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.LORA_TARGET_MODULES_MAPPING">LORA_TARGET_MODULES_MAPPING (in module lmflow.models.hf_model_mixin)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.loss_type">loss_type (lmflow.args.DPOv2AlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.low_resource">low_resource (lmflow.args.VisModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.lr_scheduler_type">lr_scheduler_type (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="M">M</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.html#lmflow.pipeline.utils.memory_safe_dpov2_align.main">main() (in module lmflow.pipeline.utils.memory_safe_dpov2_align)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.html#lmflow.pipeline.utils.memory_safe_vllm_inference.main">(in module lmflow.pipeline.utils.memory_safe_vllm_inference)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/common/index.html#lmflow.utils.common.make_shell_args_from_dataclass">make_shell_args_from_dataclass() (in module lmflow.utils.common)</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.map">map() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.map">(lmflow.datasets.dataset.Dataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.margin_scale">margin_scale (lmflow.args.DPOv2AlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.TemplateComponent.mask">mask (lmflow.utils.conversation_template.base.TemplateComponent attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.mask_prompt">mask_prompt (lmflow.args.DPOv2AlignerArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.mask_prompt">(lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.max_eval_samples">max_eval_samples (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.max_length">max_length (lmflow.args.DPOAlignerArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.max_length">(lmflow.args.DPOv2AlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_length">(lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.max_length">(lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.max_new_tokens">max_new_tokens (lmflow.args.EvaluatorArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.max_new_tokens">(lmflow.args.InferencerArguments attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.max_prompt_length">max_prompt_length (lmflow.args.DPOAlignerArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.max_prompt_length">(lmflow.args.DPOv2AlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_prompt_length">(lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.max_seq_len_cached">max_seq_len_cached (lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.max_steps">max_steps (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_target_length">max_target_length (lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.max_train_samples">max_train_samples (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE">MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE">MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG">MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner">MemorySafeDPOv2Aligner (class in lmflow.pipeline.dpov2_aligner)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer">MemorySafeVLLMInferencer (class in lmflow.pipeline.vllm_inferencer)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.merge_lora_weights">merge_lora_weights() (lmflow.models.hf_decoder_model.HFDecoderModel method)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.merge_lora_weights">(lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.messages">messages (lmflow.utils.llava_conversation_lib.Conversation attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.metric">metric (lmflow.args.EvaluatorArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.mixed_precision">mixed_precision (lmflow.args.EvaluatorArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.mixed_precision">(lmflow.args.InferencerArguments attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.ToolInferencer.model">model (lmflow.pipeline.inferencer.ToolInferencer attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.model">(lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.model">(lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.model_args">model_args (lmflow.models.hf_model_mixin.HFModelMixin attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner.model_args">(lmflow.pipeline.dpo_aligner.DPOAligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.model_args">(lmflow.pipeline.dpov2_aligner.DPOv2Aligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.model_args">(lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.model_args">(lmflow.pipeline.evaluator.Evaluator attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner.model_args">(lmflow.pipeline.finetuner.Finetuner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.model_args">(lmflow.pipeline.inferencer.Inferencer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.model_args">(lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner.model_args">(lmflow.pipeline.raft_aligner.RaftAligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.model_args">(lmflow.pipeline.rm_inferencer.RewardModelInferencer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.model_args">(lmflow.pipeline.vllm_inferencer.InferencerWithOffloading attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.MODEL_CONFIG_CLASSES">MODEL_CONFIG_CLASSES (in module lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.model_max_length">model_max_length (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.model_name_or_path">model_name_or_path (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.model_revision">model_revision (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.model_type">model_type (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.MODEL_TYPES">MODEL_TYPES (in module lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.model_wrapped">model_wrapped (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments">ModelArguments (class in lmflow.args)</a> +</li> + <li> + module + + <ul> + <li><a href="autoapi/lmflow/index.html#module-lmflow">lmflow</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#module-lmflow.args">lmflow.args</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#module-lmflow.datasets">lmflow.datasets</a> +</li> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#module-lmflow.datasets.dataset">lmflow.datasets.dataset</a> +</li> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#module-lmflow.datasets.multi_modal_dataset">lmflow.datasets.multi_modal_dataset</a> +</li> + <li><a href="autoapi/lmflow/models/index.html#module-lmflow.models">lmflow.models</a> +</li> + <li><a href="autoapi/lmflow/models/auto_model/index.html#module-lmflow.models.auto_model">lmflow.models.auto_model</a> +</li> + <li><a href="autoapi/lmflow/models/base_model/index.html#module-lmflow.models.base_model">lmflow.models.base_model</a> +</li> + <li><a href="autoapi/lmflow/models/decoder_model/index.html#module-lmflow.models.decoder_model">lmflow.models.decoder_model</a> +</li> + <li><a href="autoapi/lmflow/models/encoder_decoder_model/index.html#module-lmflow.models.encoder_decoder_model">lmflow.models.encoder_decoder_model</a> +</li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#module-lmflow.models.hf_decoder_model">lmflow.models.hf_decoder_model</a> +</li> + <li><a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#module-lmflow.models.hf_encoder_decoder_model">lmflow.models.hf_encoder_decoder_model</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#module-lmflow.models.hf_model_mixin">lmflow.models.hf_model_mixin</a> +</li> + <li><a href="autoapi/lmflow/models/hf_text_regression_model/index.html#module-lmflow.models.hf_text_regression_model">lmflow.models.hf_text_regression_model</a> +</li> + <li><a href="autoapi/lmflow/models/interfaces/index.html#module-lmflow.models.interfaces">lmflow.models.interfaces</a> +</li> + <li><a href="autoapi/lmflow/models/interfaces/tunable/index.html#module-lmflow.models.interfaces.tunable">lmflow.models.interfaces.tunable</a> +</li> + <li><a href="autoapi/lmflow/models/regression_model/index.html#module-lmflow.models.regression_model">lmflow.models.regression_model</a> +</li> + <li><a href="autoapi/lmflow/models/text_regression_model/index.html#module-lmflow.models.text_regression_model">lmflow.models.text_regression_model</a> +</li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#module-lmflow.models.vision2seq_model">lmflow.models.vision2seq_model</a> +</li> + <li><a href="autoapi/lmflow/models/vision_encoder/index.html#module-lmflow.models.vision_encoder">lmflow.models.vision_encoder</a> +</li> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#module-lmflow.models.vision_encoder.clip_encoder">lmflow.models.vision_encoder.clip_encoder</a> +</li> + <li><a href="autoapi/lmflow/optim/index.html#module-lmflow.optim">lmflow.optim</a> +</li> + <li><a href="autoapi/lmflow/optim/adabelief/index.html#module-lmflow.optim.adabelief">lmflow.optim.adabelief</a> +</li> + <li><a href="autoapi/lmflow/optim/adabound/index.html#module-lmflow.optim.adabound">lmflow.optim.adabound</a> +</li> + <li><a href="autoapi/lmflow/optim/adadelta/index.html#module-lmflow.optim.adadelta">lmflow.optim.adadelta</a> +</li> + <li><a href="autoapi/lmflow/optim/adagrad/index.html#module-lmflow.optim.adagrad">lmflow.optim.adagrad</a> +</li> + <li><a href="autoapi/lmflow/optim/adam/index.html#module-lmflow.optim.adam">lmflow.optim.adam</a> +</li> + <li><a href="autoapi/lmflow/optim/adamax/index.html#module-lmflow.optim.adamax">lmflow.optim.adamax</a> +</li> + <li><a href="autoapi/lmflow/optim/adamp/index.html#module-lmflow.optim.adamp">lmflow.optim.adamp</a> +</li> + <li><a href="autoapi/lmflow/optim/adamw_schedule_free/index.html#module-lmflow.optim.adamw_schedule_free">lmflow.optim.adamw_schedule_free</a> +</li> + <li><a href="autoapi/lmflow/optim/adan/index.html#module-lmflow.optim.adan">lmflow.optim.adan</a> +</li> + <li><a href="autoapi/lmflow/optim/dummy/index.html#module-lmflow.optim.dummy">lmflow.optim.dummy</a> +</li> + <li><a href="autoapi/lmflow/optim/lamb/index.html#module-lmflow.optim.lamb">lmflow.optim.lamb</a> +</li> + <li><a href="autoapi/lmflow/optim/lars/index.html#module-lmflow.optim.lars">lmflow.optim.lars</a> +</li> + <li><a href="autoapi/lmflow/optim/nadam/index.html#module-lmflow.optim.nadam">lmflow.optim.nadam</a> +</li> + <li><a href="autoapi/lmflow/optim/novograd/index.html#module-lmflow.optim.novograd">lmflow.optim.novograd</a> +</li> + <li><a href="autoapi/lmflow/optim/optimizers/index.html#module-lmflow.optim.optimizers">lmflow.optim.optimizers</a> +</li> + <li><a href="autoapi/lmflow/optim/radam/index.html#module-lmflow.optim.radam">lmflow.optim.radam</a> +</li> + <li><a href="autoapi/lmflow/optim/sgd_schedule_free/index.html#module-lmflow.optim.sgd_schedule_free">lmflow.optim.sgd_schedule_free</a> +</li> + <li><a href="autoapi/lmflow/optim/sgdp/index.html#module-lmflow.optim.sgdp">lmflow.optim.sgdp</a> +</li> + <li><a href="autoapi/lmflow/optim/sophia/index.html#module-lmflow.optim.sophia">lmflow.optim.sophia</a> +</li> + <li><a href="autoapi/lmflow/optim/yogi/index.html#module-lmflow.optim.yogi">lmflow.optim.yogi</a> +</li> + <li><a href="autoapi/lmflow/pipeline/index.html#module-lmflow.pipeline">lmflow.pipeline</a> +</li> + <li><a href="autoapi/lmflow/pipeline/auto_pipeline/index.html#module-lmflow.pipeline.auto_pipeline">lmflow.pipeline.auto_pipeline</a> +</li> + <li><a href="autoapi/lmflow/pipeline/base_aligner/index.html#module-lmflow.pipeline.base_aligner">lmflow.pipeline.base_aligner</a> +</li> + <li><a href="autoapi/lmflow/pipeline/base_pipeline/index.html#module-lmflow.pipeline.base_pipeline">lmflow.pipeline.base_pipeline</a> +</li> + <li><a href="autoapi/lmflow/pipeline/base_tuner/index.html#module-lmflow.pipeline.base_tuner">lmflow.pipeline.base_tuner</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpo_aligner/index.html#module-lmflow.pipeline.dpo_aligner">lmflow.pipeline.dpo_aligner</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#module-lmflow.pipeline.dpov2_aligner">lmflow.pipeline.dpov2_aligner</a> +</li> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#module-lmflow.pipeline.evaluator">lmflow.pipeline.evaluator</a> +</li> + <li><a href="autoapi/lmflow/pipeline/finetuner/index.html#module-lmflow.pipeline.finetuner">lmflow.pipeline.finetuner</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#module-lmflow.pipeline.inferencer">lmflow.pipeline.inferencer</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#module-lmflow.pipeline.iterative_dpo_aligner">lmflow.pipeline.iterative_dpo_aligner</a> +</li> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#module-lmflow.pipeline.raft_aligner">lmflow.pipeline.raft_aligner</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#module-lmflow.pipeline.rm_inferencer">lmflow.pipeline.rm_inferencer</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_tuner/index.html#module-lmflow.pipeline.rm_tuner">lmflow.pipeline.rm_tuner</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/index.html#module-lmflow.pipeline.utils">lmflow.pipeline.utils</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#module-lmflow.pipeline.utils.dpov2_dataprocessor">lmflow.pipeline.utils.dpov2_dataprocessor</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#module-lmflow.pipeline.utils.dpov2_trainer">lmflow.pipeline.utils.dpov2_trainer</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.html#module-lmflow.pipeline.utils.memory_safe_dpov2_align">lmflow.pipeline.utils.memory_safe_dpov2_align</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.html#module-lmflow.pipeline.utils.memory_safe_vllm_inference">lmflow.pipeline.utils.memory_safe_vllm_inference</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/peft_trainer/index.html#module-lmflow.pipeline.utils.peft_trainer">lmflow.pipeline.utils.peft_trainer</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#module-lmflow.pipeline.utils.raft_trainer">lmflow.pipeline.utils.raft_trainer</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#module-lmflow.pipeline.utils.rm_dataprocessor">lmflow.pipeline.utils.rm_dataprocessor</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/rm_trainer/index.html#module-lmflow.pipeline.utils.rm_trainer">lmflow.pipeline.utils.rm_trainer</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#module-lmflow.pipeline.vllm_inferencer">lmflow.pipeline.vllm_inferencer</a> +</li> + <li><a href="autoapi/lmflow/tokenization/index.html#module-lmflow.tokenization">lmflow.tokenization</a> +</li> + <li><a href="autoapi/lmflow/tokenization/hf_decoder_model/index.html#module-lmflow.tokenization.hf_decoder_model">lmflow.tokenization.hf_decoder_model</a> +</li> + <li><a href="autoapi/lmflow/tokenization/hf_text_regression_model/index.html#module-lmflow.tokenization.hf_text_regression_model">lmflow.tokenization.hf_text_regression_model</a> +</li> + <li><a href="autoapi/lmflow/utils/index.html#module-lmflow.utils">lmflow.utils</a> +</li> + <li><a href="autoapi/lmflow/utils/common/index.html#module-lmflow.utils.common">lmflow.utils.common</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#module-lmflow.utils.constants">lmflow.utils.constants</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#module-lmflow.utils.conversation_template">lmflow.utils.conversation_template</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#module-lmflow.utils.conversation_template.base">lmflow.utils.conversation_template.base</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/chatglm/index.html#module-lmflow.utils.conversation_template.chatglm">lmflow.utils.conversation_template.chatglm</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/chatml/index.html#module-lmflow.utils.conversation_template.chatml">lmflow.utils.conversation_template.chatml</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/deepseek/index.html#module-lmflow.utils.conversation_template.deepseek">lmflow.utils.conversation_template.deepseek</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/gemma/index.html#module-lmflow.utils.conversation_template.gemma">lmflow.utils.conversation_template.gemma</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/hymba/index.html#module-lmflow.utils.conversation_template.hymba">lmflow.utils.conversation_template.hymba</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/internlm/index.html#module-lmflow.utils.conversation_template.internlm">lmflow.utils.conversation_template.internlm</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/llama/index.html#module-lmflow.utils.conversation_template.llama">lmflow.utils.conversation_template.llama</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/phi/index.html#module-lmflow.utils.conversation_template.phi">lmflow.utils.conversation_template.phi</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/qwen/index.html#module-lmflow.utils.conversation_template.qwen">lmflow.utils.conversation_template.qwen</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/yi/index.html#module-lmflow.utils.conversation_template.yi">lmflow.utils.conversation_template.yi</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/zephyr/index.html#module-lmflow.utils.conversation_template.zephyr">lmflow.utils.conversation_template.zephyr</a> +</li> + <li><a href="autoapi/lmflow/utils/data_utils/index.html#module-lmflow.utils.data_utils">lmflow.utils.data_utils</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/index.html#module-lmflow.utils.flash_attention">lmflow.utils.flash_attention</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.html#module-lmflow.utils.flash_attention.bloom_flash_attention">lmflow.utils.flash_attention.bloom_flash_attention</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.html#module-lmflow.utils.flash_attention.gpt2_flash_attention">lmflow.utils.flash_attention.gpt2_flash_attention</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html#module-lmflow.utils.flash_attention.gpt_neo_flash_attention">lmflow.utils.flash_attention.gpt_neo_flash_attention</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.html#module-lmflow.utils.flash_attention.llama_flash_attention">lmflow.utils.flash_attention.llama_flash_attention</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#module-lmflow.utils.flash_attention.triton_flash_attention">lmflow.utils.flash_attention.triton_flash_attention</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#module-lmflow.utils.llava_conversation_lib">lmflow.utils.llava_conversation_lib</a> +</li> + <li><a href="autoapi/lmflow/utils/model/index.html#module-lmflow.utils.model">lmflow.utils.model</a> +</li> + <li><a href="autoapi/lmflow/utils/multimodal/index.html#module-lmflow.utils.multimodal">lmflow.utils.multimodal</a> +</li> + <li><a href="autoapi/lmflow/utils/position_interpolation/index.html#module-lmflow.utils.position_interpolation">lmflow.utils.position_interpolation</a> +</li> + <li><a href="autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#module-lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</a> +</li> + <li><a href="autoapi/lmflow/utils/versioning/index.html#module-lmflow.utils.versioning">lmflow.utils.versioning</a> +</li> + <li><a href="autoapi/lmflow/version/index.html#module-lmflow.version">lmflow.version</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.SeparatorStyle.MPT">MPT (lmflow.utils.llava_conversation_lib.SeparatorStyle attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.MultiModalDatasetArguments">MultiModalDatasetArguments (class in lmflow.args)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="N">N</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/optim/nadam/index.html#lmflow.optim.nadam.NAdam">NAdam (class in lmflow.optim.nadam)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.NADAM">NADAM (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/novograd/index.html#lmflow.optim.novograd.NovoGrad">NovoGrad (class in lmflow.optim.novograd)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.NOVOGRAD">NOVOGRAD (lmflow.args.OptimizerNames attribute)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.ntk_ratio">ntk_ratio (lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.num_examples">num_examples() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.num_output_sequences">num_output_sequences (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.num_patches">num_patches (lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower property)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.num_raft_iteration">num_raft_iteration (lmflow.args.RaftAlignerArguments attribute)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="O">O</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.observation_formatter">observation_formatter (lmflow.utils.conversation_template.base.ConversationTemplate attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.observation_formatter">(lmflow.utils.conversation_template.ConversationTemplate attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.offset">offset (lmflow.utils.llava_conversation_lib.Conversation attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_epoch_end">on_epoch_end() (lmflow.pipeline.utils.peft_trainer.PeftSavingCallback method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_save">on_save() (lmflow.pipeline.utils.peft_trainer.PeftSavingCallback method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_train_end">on_train_end() (lmflow.pipeline.utils.peft_trainer.PeftSavingCallback method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_adam_beta1">optim_adam_beta1 (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_adam_beta2">optim_adam_beta2 (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_beta1">optim_beta1 (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_beta2">optim_beta2 (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_beta3">optim_beta3 (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_dummy_beta1">optim_dummy_beta1 (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_dummy_beta2">optim_dummy_beta2 (lmflow.args.FinetunerArguments attribute)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_momentum">optim_momentum (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.optim_weight_decay">optim_weight_decay (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.OPTIMIZER_NAME">OPTIMIZER_NAME (in module lmflow.pipeline.utils.raft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.optimizer_type">optimizer_type (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames">OptimizerNames (class in lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.RewardModelInferenceResultWithInput.output">output (lmflow.utils.data_utils.RewardModelInferenceResultWithInput attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.VLLMInferenceResultWithInput.output">(lmflow.utils.data_utils.VLLMInferenceResultWithInput attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.output_dir">output_dir (lmflow.args.DPOAlignerArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.output_dir">(lmflow.args.EvaluatorArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.IterativeDPOAlignerArguments.output_dir">(lmflow.args.IterativeDPOAlignerArguments attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.output_max_length">output_max_length (lmflow.args.RaftAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.output_min_length">output_min_length (lmflow.args.RaftAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.output_reward_path">output_reward_path (lmflow.args.RaftAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.overwrite_cache">overwrite_cache (lmflow.args.DatasetArguments attribute)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="P">P</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.pad_to_multiple_of">pad_to_multiple_of (lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.padding">padding (lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.padding">(lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.padding_side">padding_side (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.padding_value">padding_value (lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.PAIRED_CONVERSATION_DATASET_DESCRIPTION">PAIRED_CONVERSATION_DATASET_DESCRIPTION (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.paired_conversation_tokenize_function">paired_conversation_tokenize_function() (in module lmflow.tokenization.hf_text_regression_model)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION">PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer.parse_to_sampling_params">parse_to_sampling_params() (lmflow.pipeline.vllm_inferencer.VLLMInferencer method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.peft_config">peft_config (lmflow.models.hf_model_mixin.HFModelMixin attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/rm_trainer/index.html#lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer">PeftRewardTrainer (class in lmflow.pipeline.utils.rm_trainer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftSavingCallback">PeftSavingCallback (class in lmflow.pipeline.utils.peft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/peft_trainer/index.html#lmflow.pipeline.utils.peft_trainer.PeftTrainer">PeftTrainer (class in lmflow.pipeline.utils.peft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.per_device_eval_batch_size">per_device_eval_batch_size (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.per_device_train_batch_size">per_device_train_batch_size (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.PHI3_TEMPLATE">PHI3_TEMPLATE (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/phi/index.html#lmflow.utils.conversation_template.phi.PHI3_TEMPLATE">(in module lmflow.utils.conversation_template.phi)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.pi_ratio">pi_ratio (lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.PIPELINE_ARGUMENT_MAPPING">PIPELINE_ARGUMENT_MAPPING (in module lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/auto_pipeline/index.html#lmflow.pipeline.auto_pipeline.PIPELINE_MAPPING">PIPELINE_MAPPING (in module lmflow.pipeline.auto_pipeline)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/auto_pipeline/index.html#lmflow.pipeline.auto_pipeline.PIPELINE_NEEDS_EXTRAS">PIPELINE_NEEDS_EXTRAS (in module lmflow.pipeline.auto_pipeline)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.place_model_on_device">place_model_on_device (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.SeparatorStyle.PLAIN">PLAIN (lmflow.utils.llava_conversation_lib.SeparatorStyle attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.pop_callback">pop_callback() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.post_process_pairs">post_process_pairs() (lmflow.utils.conversation_template.base.ConversationTemplate method)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.post_process_pairs">(lmflow.utils.conversation_template.ConversationTemplate method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.postprocess_distributed_inference_outputs">postprocess_distributed_inference_outputs() (lmflow.models.hf_text_regression_model.HFTextRegressionModel static method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.postprocess_inference_outputs">postprocess_inference_outputs() (lmflow.models.hf_text_regression_model.HFTextRegressionModel static method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.predict">predict() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.predict_next_token">predict_next_token() (lmflow.pipeline.inferencer.SpeculativeInferencer static method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.prediction_loop">prediction_loop() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.prediction_step">prediction_step() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding">PreferenceDataCollatorWithPadding (class in lmflow.pipeline.utils.dpov2_dataprocessor)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.prepare_inputs_for_inference">prepare_inputs_for_inference() (lmflow.models.hf_decoder_model.HFDecoderModel method)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.prepare_inputs_for_inference">(lmflow.models.hf_text_regression_model.HFTextRegressionModel method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.prepare_inputs_labels_for_multimodal">prepare_inputs_labels_for_multimodal() (lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower method)</a> +</li> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_plain">preprocess_llama_from_llava_plain() (in module lmflow.datasets.multi_modal_dataset)</a> +</li> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_v1">preprocess_llama_from_llava_v1() (in module lmflow.datasets.multi_modal_dataset)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.preprocess_logits_for_metrics">preprocess_logits_for_metrics (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.preprocess_multimodal_llava">preprocess_multimodal_llava() (in module lmflow.datasets.multi_modal_dataset)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.preprocessing_num_workers">preprocessing_num_workers (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.PRESET_TEMPLATES">PRESET_TEMPLATES (in module lmflow.utils.conversation_template)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.pretrained_language_projection_path">pretrained_language_projection_path (lmflow.args.VisModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/common/index.html#lmflow.utils.common.print_banner">print_banner() (in module lmflow.utils.common)</a> +</li> + <li><a href="autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.process_image_flag">process_image_flag() (in module lmflow.utils.data_utils)</a> +</li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.processor_image_token_in_minigpt4">processor_image_token_in_minigpt4() (lmflow.models.vision2seq_model.CustomAutoVision2SeqModel method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.prompt_cache_path">prompt_cache_path (lmflow.args.VisModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.prompt_structure">prompt_structure (lmflow.args.EvaluatorArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.push_to_hub">push_to_hub() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="Q">Q</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.qformer_from_pretrained">qformer_from_pretrained() (lmflow.models.vision2seq_model.CustomAutoVision2SeqModel method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.qformer_name_or_path">qformer_name_or_path (lmflow.args.VisModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.quant_config">quant_config (lmflow.models.hf_model_mixin.HFModelMixin attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.quant_type">quant_type (lmflow.args.ModelArguments attribute)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.QWEN2_TEMPLATE">QWEN2_TEMPLATE (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/qwen/index.html#lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE">(in module lmflow.utils.conversation_template.qwen)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.QWEN2_TEMPLATE_FOR_TOOL">QWEN2_TEMPLATE_FOR_TOOL (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/qwen/index.html#lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE_FOR_TOOL">(in module lmflow.utils.conversation_template.qwen)</a> +</li> + </ul></li> + </ul></td> +</tr></table> + +<h2 id="R">R</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/optim/radam/index.html#lmflow.optim.radam.RAdam">RAdam (class in lmflow.optim.radam)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.RADAM">RADAM (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.raft_batch_size">raft_batch_size (lmflow.args.RaftAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/raft_aligner/index.html#lmflow.pipeline.raft_aligner.RaftAligner">RaftAligner (class in lmflow.pipeline.raft_aligner)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments">RaftAlignerArguments (class in lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer">RaftTrainer (class in lmflow.pipeline.utils.raft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.random_seed">random_seed (lmflow.args.DPOv2AlignerArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.random_seed">(lmflow.args.EvaluatorArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.random_seed">(lmflow.args.InferencerArguments attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.random_shuffle">random_shuffle (lmflow.args.EvaluatorArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief.rectify">rectify (lmflow.optim.adabelief.AdaBelief attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.ref_model_args">ref_model_args (lmflow.pipeline.dpov2_aligner.DPOv2Aligner attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.ref_model_args">(lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.ref_model_args">(lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.ReferenceModelArguments">ReferenceModelArguments (in module lmflow.pipeline.dpov2_aligner)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.html#lmflow.pipeline.utils.memory_safe_dpov2_align.ReferenceModelArguments">(in module lmflow.pipeline.utils.memory_safe_dpov2_align)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/models/text_regression_model/index.html#lmflow.models.text_regression_model.TextRegressionModel.register_inference_function">register_inference_function() (lmflow.models.text_regression_model.TextRegressionModel method)</a> +</li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.register_prompt_cache">register_prompt_cache() (lmflow.models.vision2seq_model.CustomAutoVision2SeqModel method)</a> +</li> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.register_tokenizer">register_tokenizer() (lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset method)</a> +</li> + <li><a href="autoapi/lmflow/models/regression_model/index.html#lmflow.models.regression_model.RegressionModel">RegressionModel (class in lmflow.models.regression_model)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.remove_callback">remove_callback() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/utils/common/index.html#lmflow.utils.common.remove_dataclass_attr_prefix">remove_dataclass_attr_prefix() (in module lmflow.utils.common)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.remove_last_sep">remove_last_sep (lmflow.utils.conversation_template.base.ConversationTemplate attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.remove_last_sep">(lmflow.utils.conversation_template.ConversationTemplate attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.remove_last_separator">remove_last_separator() (lmflow.utils.conversation_template.base.ConversationTemplate method)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.remove_last_separator">(lmflow.utils.conversation_template.ConversationTemplate method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.remove_unused_columns">remove_unused_columns (lmflow.args.FinetunerArguments attribute)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.repetition_penalty">repetition_penalty (lmflow.args.EvaluatorArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.repetition_penalty">(lmflow.args.InferencerArguments attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.html#lmflow.utils.flash_attention.bloom_flash_attention.replace_bloom_attn_with_flash_attn">replace_bloom_attn_with_flash_attn() (in module lmflow.utils.flash_attention.bloom_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.html#lmflow.utils.flash_attention.gpt2_flash_attention.replace_gpt2_attn_with_flash_attn">replace_gpt2_attn_with_flash_attn() (in module lmflow.utils.flash_attention.gpt2_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html#lmflow.utils.flash_attention.gpt_neo_flash_attention.replace_gpt_neo_attn_with_flash_attn">replace_gpt_neo_attn_with_flash_attn() (in module lmflow.utils.flash_attention.gpt_neo_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.html#lmflow.utils.flash_attention.llama_flash_attention.replace_llama_attn_with_flash_attn">replace_llama_attn_with_flash_attn() (in module lmflow.utils.flash_attention.llama_flash_attention)</a> +</li> + <li><a href="autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.replace_llama_with_condense">replace_llama_with_condense() (in module lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.report_to">report_to (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief.reset">reset() (lmflow.optim.adabelief.AdaBelief method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adan/index.html#lmflow.optim.adan.Adan.restart_opt">restart_opt() (lmflow.optim.adan.Adan method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.results_path">results_path (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.RETURN_CODE_ERROR_BUFFER">RETURN_CODE_ERROR_BUFFER (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.return_tensors">return_tensors (lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.reward_model_args">reward_model_args (lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.IterativeDPOAlignerArguments.reward_model_inference_batch_size">reward_model_inference_batch_size (lmflow.args.IterativeDPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.IterativeDPOAlignerArguments.reward_model_inference_block_size">reward_model_inference_block_size (lmflow.args.IterativeDPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding">RewardDataCollatorWithPadding (class in lmflow.pipeline.utils.rm_dataprocessor)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer">RewardModelInferencer (class in lmflow.pipeline.rm_inferencer)</a> +</li> + <li><a href="autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.RewardModelInferenceResultWithInput">RewardModelInferenceResultWithInput (class in lmflow.utils.data_utils)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_tuner/index.html#lmflow.pipeline.rm_tuner.RewardModelTuner">RewardModelTuner (class in lmflow.pipeline.rm_tuner)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.RewardModelTunerArguments">RewardModelTunerArguments (class in lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/rm_trainer/index.html#lmflow.pipeline.utils.rm_trainer.RewardTrainer">RewardTrainer (class in lmflow.pipeline.utils.rm_trainer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/rm_trainer/index.html#lmflow.pipeline.utils.rm_trainer.rm_loss">rm_loss() (in module lmflow.pipeline.utils.rm_trainer)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.roles">roles (lmflow.utils.llava_conversation_lib.Conversation attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.rope_ntk_ratio">rope_ntk_ratio (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.rope_pi_ratio">rope_pi_ratio (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.rstrip_partial_utf8">rstrip_partial_utf8() (in module lmflow.pipeline.inferencer)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.run_name">run_name (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="S">S</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.sample">sample() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.sample">(lmflow.datasets.dataset.Dataset method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.sample">(lmflow.pipeline.inferencer.SpeculativeInferencer static method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#lmflow.pipeline.dpov2_aligner.DPOv2Aligner.sampling_paired_idx_from_rewards">sampling_paired_idx_from_rewards() (lmflow.pipeline.dpov2_aligner.DPOv2Aligner method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOv2AlignerArguments.sampling_paired_method">sampling_paired_method (lmflow.args.DPOv2AlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer.sampling_params">sampling_params (lmflow.pipeline.vllm_inferencer.VLLMInferencer attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.sanity_check">sanity_check (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.sanity_check">sanity_check() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.sanity_check">(lmflow.datasets.dataset.Dataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.save">save() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.save">(lmflow.datasets.dataset.Dataset method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.save">(lmflow.models.hf_decoder_model.HFDecoderModel method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.save">(lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.save">(lmflow.models.hf_text_regression_model.HFTextRegressionModel method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.save_aggregated_lora">save_aggregated_lora (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.save_counter">save_counter (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.save_inference_results">save_inference_results() (lmflow.pipeline.vllm_inferencer.InferencerWithOffloading method)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer.save_inference_results">(lmflow.pipeline.vllm_inferencer.VLLMInferencer method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.save_language_projection">save_language_projection (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.save_model">save_model() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.save_pretrain_model_path">save_pretrain_model_path (lmflow.args.VisModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.save_prompt_cache">save_prompt_cache() (lmflow.models.vision2seq_model.CustomAutoVision2SeqModel method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.save_results">save_results (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.save_steps">save_steps (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.SCALER_NAME">SCALER_NAME (in module lmflow.pipeline.utils.raft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.SCHEDULER_NAME">SCHEDULER_NAME (in module lmflow.pipeline.utils.raft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.score_to_prob">score_to_prob() (lmflow.pipeline.inferencer.SpeculativeInferencer static method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.seed">seed (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.select_feature">select_feature (lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.select_layer">select_layer (lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.sep">sep (lmflow.utils.llava_conversation_lib.Conversation attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.sep2">sep2 (lmflow.utils.llava_conversation_lib.Conversation attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.MultiModalDatasetArguments.sep_style">sep_style (lmflow.args.MultiModalDatasetArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.sep_style">(lmflow.utils.llava_conversation_lib.Conversation attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.separator">separator (lmflow.utils.conversation_template.base.ConversationTemplate attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.separator">(lmflow.utils.conversation_template.ConversationTemplate attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.SeparatorStyle">SeparatorStyle (class in lmflow.utils.llava_conversation_lib)</a> +</li> + <li><a href="autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.set_random_seed">set_random_seed() (in module lmflow.utils.data_utils)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.SGD_SCHEDULE_FREE">SGD_SCHEDULE_FREE (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/sgdp/index.html#lmflow.optim.sgdp.SGDP">SGDP (class in lmflow.optim.sgdp)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.SGDP">(lmflow.args.OptimizerNames attribute)</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/optim/sgd_schedule_free/index.html#lmflow.optim.sgd_schedule_free.SGDScheduleFree">SGDScheduleFree (class in lmflow.optim.sgd_schedule_free)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.sharded_ddp">sharded_ddp (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.SeparatorStyle.SINGLE">SINGLE (lmflow.utils.llava_conversation_lib.SeparatorStyle attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.skip_first_batches">skip_first_batches (in module lmflow.pipeline.utils.raft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.skip_next">skip_next (lmflow.utils.llava_conversation_lib.Conversation attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.SOPHIA">SOPHIA (lmflow.args.OptimizerNames attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/sophia/index.html#lmflow.optim.sophia.SophiaG">SophiaG (class in lmflow.optim.sophia)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.special_starter">special_starter (lmflow.utils.conversation_template.base.ConversationTemplate attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.special_starter">(lmflow.utils.conversation_template.ConversationTemplate attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.special_stopper">special_stopper (lmflow.utils.conversation_template.base.ConversationTemplate attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.special_stopper">(lmflow.utils.conversation_template.ConversationTemplate attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer">SpeculativeInferencer (class in lmflow.pipeline.inferencer)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.split_args">split_args() (in module lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.state">state (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief.step">step() (lmflow.optim.adabelief.AdaBelief method)</a> + + <ul> + <li><a href="autoapi/lmflow/optim/adabound/index.html#lmflow.optim.adabound.AdaBound.step">(lmflow.optim.adabound.AdaBound method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adadelta/index.html#lmflow.optim.adadelta.Adadelta.step">(lmflow.optim.adadelta.Adadelta method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adagrad/index.html#lmflow.optim.adagrad.AdaGrad.step">(lmflow.optim.adagrad.AdaGrad method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adam/index.html#lmflow.optim.adam.Adam.step">(lmflow.optim.adam.Adam method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adamax/index.html#lmflow.optim.adamax.Adamax.step">(lmflow.optim.adamax.Adamax method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adamp/index.html#lmflow.optim.adamp.AdamP.step">(lmflow.optim.adamp.AdamP method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adamw_schedule_free/index.html#lmflow.optim.adamw_schedule_free.AdamWScheduleFree.step">(lmflow.optim.adamw_schedule_free.AdamWScheduleFree method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adan/index.html#lmflow.optim.adan.Adan.step">(lmflow.optim.adan.Adan method)</a> +</li> + <li><a href="autoapi/lmflow/optim/dummy/index.html#lmflow.optim.dummy.Dummy.step">(lmflow.optim.dummy.Dummy method)</a> +</li> + <li><a href="autoapi/lmflow/optim/lamb/index.html#lmflow.optim.lamb.Lamb.step">(lmflow.optim.lamb.Lamb method)</a> +</li> + <li><a href="autoapi/lmflow/optim/lars/index.html#lmflow.optim.lars.LARS.step">(lmflow.optim.lars.LARS method)</a> +</li> + <li><a href="autoapi/lmflow/optim/nadam/index.html#lmflow.optim.nadam.NAdam.step">(lmflow.optim.nadam.NAdam method)</a> +</li> + <li><a href="autoapi/lmflow/optim/novograd/index.html#lmflow.optim.novograd.NovoGrad.step">(lmflow.optim.novograd.NovoGrad method)</a> +</li> + <li><a href="autoapi/lmflow/optim/radam/index.html#lmflow.optim.radam.RAdam.step">(lmflow.optim.radam.RAdam method)</a> +</li> + <li><a href="autoapi/lmflow/optim/sgd_schedule_free/index.html#lmflow.optim.sgd_schedule_free.SGDScheduleFree.step">(lmflow.optim.sgd_schedule_free.SGDScheduleFree method)</a> +</li> + <li><a href="autoapi/lmflow/optim/sgdp/index.html#lmflow.optim.sgdp.SGDP.step">(lmflow.optim.sgdp.SGDP method)</a> +</li> + <li><a href="autoapi/lmflow/optim/sophia/index.html#lmflow.optim.sophia.SophiaG.step">(lmflow.optim.sophia.SophiaG method)</a> +</li> + <li><a href="autoapi/lmflow/optim/yogi/index.html#lmflow.optim.yogi.Yogi.step">(lmflow.optim.yogi.Yogi method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.store_flos">store_flos() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.stream_inference">stream_inference() (lmflow.pipeline.inferencer.Inferencer method)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.SpeculativeInferencer.stream_inference">(lmflow.pipeline.inferencer.SpeculativeInferencer method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.streaming">streaming (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.StringFormatter">StringFormatter (class in lmflow.utils.conversation_template.base)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.supported_dataset_type">supported_dataset_type (in module lmflow.pipeline.inferencer)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.system">system (lmflow.utils.llava_conversation_lib.Conversation attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.system_formatter">system_formatter (lmflow.utils.conversation_template.base.ConversationTemplate attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.system_formatter">(lmflow.utils.conversation_template.ConversationTemplate attribute)</a> +</li> + </ul></li> + </ul></td> +</tr></table> + +<h2 id="T">T</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.temperature">temperature (lmflow.args.EvaluatorArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.temperature">(lmflow.args.InferencerArguments attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.Formatter.template">template (lmflow.utils.conversation_template.base.Formatter attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.template_name">template_name (lmflow.utils.conversation_template.base.ConversationTemplate attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.template_name">(lmflow.utils.conversation_template.ConversationTemplate attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.TemplateComponent">TemplateComponent (class in lmflow.utils.conversation_template.base)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.tensor_parallel_size">tensor_parallel_size (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.test_file">test_file (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT2TEXT_DATASET_DESCRIPTION">TEXT2TEXT_DATASET_DESCRIPTION (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT2TEXT_DATASET_DETAILS">TEXT2TEXT_DATASET_DETAILS (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT2TEXT_DATASET_LONG_DESCRITION">TEXT2TEXT_DATASET_LONG_DESCRITION (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT_ONLY_DATASET_DESCRIPTION">TEXT_ONLY_DATASET_DESCRIPTION (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT_ONLY_DATASET_DETAILS">TEXT_ONLY_DATASET_DETAILS (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT_ONLY_DATASET_LONG_DESCRITION">TEXT_ONLY_DATASET_LONG_DESCRITION (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION">TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.TEXT_TO_TEXTLIST_DATASET_DESCRIPTION">TEXT_TO_TEXTLIST_DATASET_DESCRIPTION (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.text_to_textlist_tokenize_function">text_to_textlist_tokenize_function() (in module lmflow.tokenization.hf_text_regression_model)</a> +</li> + <li><a href="autoapi/lmflow/models/text_regression_model/index.html#lmflow.models.text_regression_model.TextRegressionModel">TextRegressionModel (class in lmflow.models.text_regression_model)</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.to_dict">to_dict() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.to_dict">(lmflow.datasets.dataset.Dataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.to_gradio_chatbot">to_gradio_chatbot() (lmflow.utils.llava_conversation_lib.Conversation method)</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.to_list">to_list() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.to_list">(lmflow.datasets.dataset.Dataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/tokenization/hf_decoder_model/index.html#lmflow.tokenization.hf_decoder_model.tok_logger">tok_logger (in module lmflow.tokenization.hf_decoder_model)</a> + + <ul> + <li><a href="autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.tok_logger">(in module lmflow.tokenization.hf_text_regression_model)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.token">token (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_decoder_model/index.html#lmflow.models.hf_decoder_model.HFDecoderModel.tokenize">tokenize() (lmflow.models.hf_decoder_model.HFDecoderModel method)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.tokenize">(lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel method)</a> +</li> + <li><a href="autoapi/lmflow/models/hf_text_regression_model/index.html#lmflow.models.hf_text_regression_model.HFTextRegressionModel.tokenize">(lmflow.models.hf_text_regression_model.HFTextRegressionModel method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.tokenize_batch_element">tokenize_batch_element() (lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding method)</a> +</li> + <li><a href="autoapi/lmflow/tokenization/hf_decoder_model/index.html#lmflow.tokenization.hf_decoder_model.tokenize_function">tokenize_function() (in module lmflow.tokenization.hf_decoder_model)</a> + + <ul> + <li><a href="autoapi/lmflow/tokenization/hf_text_regression_model/index.html#lmflow.tokenization.hf_text_regression_model.tokenize_function">(in module lmflow.tokenization.hf_text_regression_model)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset.tokenizer">tokenizer (lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.tokenizer">(lmflow.models.hf_model_mixin.HFModelMixin attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.tokenizer">(lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.tokenizer">(lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.tokenizer">(lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding attribute)</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#lmflow.datasets.multi_modal_dataset.tokenizer_image_token">tokenizer_image_token() (in module lmflow.datasets.multi_modal_dataset)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.tokenizer_name">tokenizer_name (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.ToolInferencer">ToolInferencer (class in lmflow.pipeline.inferencer)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.tools_formatter">tools_formatter (lmflow.utils.conversation_template.base.ConversationTemplate attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.tools_formatter">(lmflow.utils.conversation_template.ConversationTemplate attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.top_k">top_k (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.top_p">top_p (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.RaftAlignerArguments.top_reward_percentage">top_reward_percentage (lmflow.args.RaftAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.torch_dtype">torch_dtype (lmflow.args.ModelArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.torch_dtype">(lmflow.models.hf_model_mixin.HFModelMixin attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.torch_jit_model_eval">torch_jit_model_eval() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/optim/adamw_schedule_free/index.html#lmflow.optim.adamw_schedule_free.AdamWScheduleFree.train">train() (lmflow.optim.adamw_schedule_free.AdamWScheduleFree method)</a> + + <ul> + <li><a href="autoapi/lmflow/optim/sgd_schedule_free/index.html#lmflow.optim.sgd_schedule_free.SGDScheduleFree.train">(lmflow.optim.sgd_schedule_free.SGDScheduleFree method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.train">(lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/dpo_aligner/index.html#lmflow.pipeline.dpo_aligner.DPOAligner.train_dataset">train_dataset (lmflow.pipeline.dpo_aligner.DPOAligner attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.train_dataset">(lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.train_file">train_file (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.train_on_prompt">train_on_prompt (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.train_test_split">train_test_split() (lmflow.datasets.Dataset method)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.train_test_split">(lmflow.datasets.dataset.Dataset method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.TRAINER_STATE_NAME">TRAINER_STATE_NAME (in module lmflow.pipeline.utils.raft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.TRAINING_ARGS_NAME">TRAINING_ARGS_NAME (in module lmflow.pipeline.utils.raft_trainer)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.training_step">training_step() (lmflow.pipeline.utils.raft_trainer.RaftTrainer method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.truncate_to_model_max_length">truncate_to_model_max_length (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.truncation_mode">truncation_mode (lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.truncation_side">truncation_side (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.trust_remote_code">trust_remote_code (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/interfaces/tunable/index.html#lmflow.models.interfaces.tunable.Tunable">Tunable (class in lmflow.models.interfaces.tunable)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/base_tuner/index.html#lmflow.pipeline.base_tuner.BaseTuner.tune">tune() (lmflow.pipeline.base_tuner.BaseTuner method)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/finetuner/index.html#lmflow.pipeline.finetuner.Finetuner.tune">(lmflow.pipeline.finetuner.Finetuner method)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_tuner/index.html#lmflow.pipeline.rm_tuner.RewardModelTuner.tune">(lmflow.pipeline.rm_tuner.RewardModelTuner method)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.SeparatorStyle.TWO">TWO (lmflow.utils.llava_conversation_lib.SeparatorStyle attribute)</a> +</li> + <li><a href="autoapi/lmflow/datasets/index.html#lmflow.datasets.Dataset.type">type (lmflow.datasets.Dataset attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/datasets/dataset/index.html#lmflow.datasets.dataset.Dataset.type">(lmflow.datasets.dataset.Dataset attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.TemplateComponent.type">(lmflow.utils.conversation_template.base.TemplateComponent attribute)</a> +</li> + </ul></li> + </ul></td> +</tr></table> + +<h2 id="U">U</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/multimodal/index.html#lmflow.utils.multimodal.update_custom_config">update_custom_config() (in module lmflow.utils.multimodal)</a> +</li> + <li><a href="autoapi/lmflow/optim/sophia/index.html#lmflow.optim.sophia.SophiaG.update_hessian">update_hessian() (lmflow.optim.sophia.SophiaG method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.use_accelerator">use_accelerator (lmflow.args.InferencerArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/models/hf_model_mixin/index.html#lmflow.models.hf_model_mixin.HFModelMixin.use_accelerator">(lmflow.models.hf_model_mixin.HFModelMixin attribute)</a> +</li> + </ul></li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.use_accelerator_for_evaluator">use_accelerator_for_evaluator (lmflow.args.EvaluatorArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_apex">use_apex (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.use_beam_search">use_beam_search (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_cpu_amp">use_cpu_amp (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_cuda_amp">use_cuda_amp (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.use_customized_optim">use_customized_optim (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.use_dora">use_dora (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.use_dpo_data_collator">use_dpo_data_collator (lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.use_fast_tokenizer">use_fast_tokenizer (lmflow.args.ModelArguments attribute)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.use_flash_attention">use_flash_attention (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.MultiModalDatasetArguments.use_image_start_end">use_image_start_end (lmflow.args.MultiModalDatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.use_int8">use_int8 (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.FinetunerArguments.use_lisa">use_lisa (lmflow.args.FinetunerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.use_lora">use_lora (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.use_prompt_cache">use_prompt_cache (lmflow.args.VisModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.use_qlora">use_qlora (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.ModelArguments.use_ram_optimized_load">use_ram_optimized_load (lmflow.args.ModelArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_tune_checkpoints">use_tune_checkpoints (lmflow.pipeline.utils.raft_trainer.RaftTrainer attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.use_vllm">use_vllm (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.EvaluatorArguments.use_wandb">use_wandb (lmflow.args.EvaluatorArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/conversation_template/base/index.html#lmflow.utils.conversation_template.base.ConversationTemplate.user_formatter">user_formatter (lmflow.utils.conversation_template.base.ConversationTemplate attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ConversationTemplate.user_formatter">(lmflow.utils.conversation_template.ConversationTemplate attribute)</a> +</li> + </ul></li> + </ul></td> +</tr></table> + +<h2 id="V">V</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.validation_file">validation_file (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DatasetArguments.validation_split_percentage">validation_split_percentage (lmflow.args.DatasetArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#lmflow.utils.llava_conversation_lib.Conversation.version">version (lmflow.utils.llava_conversation_lib.Conversation attribute)</a> +</li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.vision_feature_select">vision_feature_select() (lmflow.models.vision2seq_model.CustomAutoVision2SeqModel method)</a> +</li> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.vision_model_from_pretrained">vision_model_from_pretrained() (lmflow.models.vision2seq_model.CustomAutoVision2SeqModel method)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.vision_select_layer">vision_select_layer (lmflow.args.VisModelArguments attribute)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.vision_tower_name">vision_tower_name (lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments">VisModelArguments (class in lmflow.args)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.vllm_gpu_memory_utilization">vllm_gpu_memory_utilization (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.vllm_inference_batch_size">vllm_inference_batch_size (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.InferencerArguments.vllm_tensor_parallel_size">vllm_tensor_parallel_size (lmflow.args.InferencerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#lmflow.pipeline.vllm_inferencer.VLLMInferencer">VLLMInferencer (class in lmflow.pipeline.vllm_inferencer)</a> +</li> + <li><a href="autoapi/lmflow/utils/data_utils/index.html#lmflow.utils.data_utils.VLLMInferenceResultWithInput">VLLMInferenceResultWithInput (class in lmflow.utils.data_utils)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="W">W</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.warmup_steps">warmup_steps (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.DPOAlignerArguments.weight_decay">weight_decay (lmflow.args.DPOAlignerArguments attribute)</a> +</li> + <li><a href="autoapi/lmflow/optim/adabelief/index.html#lmflow.optim.adabelief.AdaBelief.weight_decouple">weight_decouple (lmflow.optim.adabelief.AdaBelief attribute)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.VisModelArguments.with_qformer">with_qformer (lmflow.args.VisModelArguments attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/models/vision2seq_model/index.html#lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.with_qformer">(lmflow.models.vision2seq_model.CustomAutoVision2SeqModel attribute)</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/constants/index.html#lmflow.utils.constants.WORKER_HEART_BEAT_INTERVAL">WORKER_HEART_BEAT_INTERVAL (in module lmflow.utils.constants)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.workspace_path">workspace_path (lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/evaluator/index.html#lmflow.pipeline.evaluator.Evaluator.world_size">world_size (lmflow.pipeline.evaluator.Evaluator attribute)</a> + + <ul> + <li><a href="autoapi/lmflow/pipeline/inferencer/index.html#lmflow.pipeline.inferencer.Inferencer.world_size">(lmflow.pipeline.inferencer.Inferencer attribute)</a> +</li> + <li><a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#lmflow.pipeline.rm_inferencer.RewardModelInferencer.world_size">(lmflow.pipeline.rm_inferencer.RewardModelInferencer attribute)</a> +</li> + </ul></li> + </ul></td> +</tr></table> + +<h2 id="Y">Y</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.YI1_5_TEMPLATE">YI1_5_TEMPLATE (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/yi/index.html#lmflow.utils.conversation_template.yi.YI1_5_TEMPLATE">(in module lmflow.utils.conversation_template.yi)</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/optim/yogi/index.html#lmflow.optim.yogi.Yogi">Yogi (class in lmflow.optim.yogi)</a> +</li> + <li><a href="autoapi/lmflow/args/index.html#lmflow.args.OptimizerNames.YOGI">YOGI (lmflow.args.OptimizerNames attribute)</a> +</li> + </ul></td> +</tr></table> + +<h2 id="Z">Z</h2> +<table style="width: 100%" class="indextable genindextable"><tr> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/conversation_template/index.html#lmflow.utils.conversation_template.ZEPHYR_TEMPLATE">ZEPHYR_TEMPLATE (in module lmflow.utils.conversation_template)</a> + + <ul> + <li><a href="autoapi/lmflow/utils/conversation_template/zephyr/index.html#lmflow.utils.conversation_template.zephyr.ZEPHYR_TEMPLATE">(in module lmflow.utils.conversation_template.zephyr)</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="autoapi/lmflow/utils/conversation_template/zephyr/index.html#lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate">ZephyrConversationTemplate (class in lmflow.utils.conversation_template.zephyr)</a> +</li> + </ul></td> +</tr></table> + + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..60aed65b8 --- /dev/null +++ b/index.html @@ -0,0 +1,794 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="./" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>LMFlow &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="_static/documentation_options.js?v=5929fcd5"></script> + <script src="_static/doctools.js?v=9bcbadda"></script> + <script src="_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'index';</script> + <link rel="index" title="Index" href="genindex.html" /> + <link rel="search" title="Search" href="search.html" /> + <link rel="next" title="Blogs" href="blogs/index.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="#"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"></div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <img src="_static/logo.png" alt="LMFlow" style="width: 100%; min-width: 300px; display: block; margin: auto; background-color: transparent;"> +<section id="lmflow"> +<h1>LMFlow<a class="headerlink" href="#lmflow" title="Link to this heading">#</a></h1> +<p>An extensible, convenient, and efficient toolbox for finetuning large machine learning models, designed to be user-friendly, speedy and reliable, and accessible to the entire community.</p> +<div class="sd-container-fluid sd-sphinx-override sd-mb-4 docutils"> +<div class="sd-row sd-row-cols-1 sd-row-cols-xs-1 sd-row-cols-sm-2 sd-row-cols-md-3 sd-row-cols-lg-4 docutils"> +<div class="sd-col sd-d-flex-row docutils"> +<div class="sd-card sd-sphinx-override sd-w-100 sd-shadow-sm docutils"> +<div class="sd-card-body docutils"> +<div class="sd-card-title sd-font-weight-bold docutils"> +Extensible</div> +<p class="sd-card-text">Support common backbones (LLaMA, Galactica, GPT-2, etc.)</p> +</div> +</div> +</div> +<div class="sd-col sd-d-flex-row docutils"> +<div class="sd-card sd-sphinx-override sd-w-100 sd-shadow-sm docutils"> +<div class="sd-card-body docutils"> +<div class="sd-card-title sd-font-weight-bold docutils"> +Light-Weight</div> +<p class="sd-card-text">Extremely few parameters with LoRA (LLaMA 33B: only 25MB storage)</p> +</div> +</div> +</div> +<div class="sd-col sd-d-flex-row docutils"> +<div class="sd-card sd-sphinx-override sd-w-100 sd-shadow-sm docutils"> +<div class="sd-card-body docutils"> +<div class="sd-card-title sd-font-weight-bold docutils"> +Task-Oriented</div> +<p class="sd-card-text">Comparable with ChatGPT on 7B/33B models.</p> +</div> +</div> +</div> +<div class="sd-col sd-d-flex-row docutils"> +<div class="sd-card sd-sphinx-override sd-w-100 sd-shadow-sm docutils"> +<div class="sd-card-body docutils"> +<div class="sd-card-title sd-font-weight-bold docutils"> +Open</div> +<p class="sd-card-text">The whole pipeline (data, models, tuning, inference) is open-source.</p> +</div> +</div> +</div> +</div> +</div> +<section id="introduction"> +<h2>Introduction<a class="headerlink" href="#introduction" title="Link to this heading">#</a></h2> +<p>The remarkable achievements of large foundation models, such as the expansive language models, have demonstrated their exceptional capacity to attain human-like intelligence that surpasses conventional methods. Despite their growing accessibility, these models still require fine-tuning to cater to specific tasks while maintaining their overall AI competency. We are pleased to introduce our lightweight toolkit, which features thoughtfully designed and easily scalable APIs. This tool simplifies the process of fine-tuning and inference of publicly available foundation models to maximize their effectiveness.</p> +<p>We have thoroughly tested this toolkit and are pleased to make it available under <a class="reference external" href="https://github.com/OptimalScale/LMFlow">Github</a>.</p> +</section> +<section id="features"> +<h2>Features<a class="headerlink" href="#features" title="Link to this heading">#</a></h2> +<section id="task-tuning"> +<h3>Task Tuning<a class="headerlink" href="#task-tuning" title="Link to this heading">#</a></h3> +<p>The goal of Task Tuning is to enhance a language model’s proficiency in a particular field, such as medicine or mathematics. By doing so, the model acquires domain-specific information, allowing it to adapt better to the target subject matter.</p> +<p>For instance, if a medical dataset is used for task tuning, the language model can gain medical knowledge that can be applied to other medical datasets.</p> +<p>To emphasize its significance, we applied task tuning to LLaMA models on PubMedQA and MedMCQA datasets and evaluated their performance. We observed significant improvements both in-domain (PubMedQA, MedMCQA) and out-of-domain (MedQA-USMLE) dataset.</p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head text-center"><p></p></th> +<th class="head text-center"><p>PubMedQA</p></th> +<th class="head text-center"><p>MedQA-USMLE</p></th> +<th class="head text-center"><p>MedMCQA</p></th> +<th class="head text-center"><p>Average</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td class="text-center"><p>Human (pass)</p></td> +<td class="text-center"><p></p></td> +<td class="text-center"><p>60.0</p></td> +<td class="text-center"><p>50.0</p></td> +<td class="text-center"><p></p></td> +</tr> +<tr class="row-odd"><td class="text-center"><p>Human (expert)</p></td> +<td class="text-center"><p>78.0</p></td> +<td class="text-center"><p>87.0</p></td> +<td class="text-center"><p>90.0</p></td> +<td class="text-center"><p>85.0</p></td> +</tr> +<tr class="row-even"><td class="text-center"><p></p></td> +<td class="text-center"><p></p></td> +<td class="text-center"><p></p></td> +<td class="text-center"><p></p></td> +<td class="text-center"><p></p></td> +</tr> +<tr class="row-odd"><td class="text-center"><p>InstructGPT 175B</p></td> +<td class="text-center"><p>73.2</p></td> +<td class="text-center"><p>46.0</p></td> +<td class="text-center"><p>44.0</p></td> +<td class="text-center"><p>54.4</p></td> +</tr> +<tr class="row-even"><td class="text-center"><p>ChatGPT</p></td> +<td class="text-center"><p>63.9</p></td> +<td class="text-center"><p><strong>57.0</strong></p></td> +<td class="text-center"><p>44.7</p></td> +<td class="text-center"><p>55.2</p></td> +</tr> +<tr class="row-odd"><td class="text-center"><p>LLaMA 7B</p></td> +<td class="text-center"><p>5.2</p></td> +<td class="text-center"><p>27.1</p></td> +<td class="text-center"><p>24.3</p></td> +<td class="text-center"><p>18.9</p></td> +</tr> +<tr class="row-even"><td class="text-center"><p>LLaMA 33B</p></td> +<td class="text-center"><p>1.8</p></td> +<td class="text-center"><p>43.4</p></td> +<td class="text-center"><p>30.3</p></td> +<td class="text-center"><p>25.2</p></td> +</tr> +<tr class="row-odd"><td class="text-center"><p></p></td> +<td class="text-center"><p></p></td> +<td class="text-center"><p></p></td> +<td class="text-center"><p></p></td> +<td class="text-center"><p></p></td> +</tr> +<tr class="row-even"><td class="text-center"><p>Task-tuned LLaMA 7B (Full)</p></td> +<td class="text-center"><p><strong>75.1</strong></p></td> +<td class="text-center"><p>44.5</p></td> +<td class="text-center"><p>49.9</p></td> +<td class="text-center"><p>56.5</p></td> +</tr> +<tr class="row-odd"><td class="text-center"><p>Task-tuned LLaMA 33B (LoRA)</p></td> +<td class="text-center"><p>74</p></td> +<td class="text-center"><p>51.3</p></td> +<td class="text-center"><p><strong>50.2</strong></p></td> +<td class="text-center"><p><strong>58.5</strong></p></td> +</tr> +</tbody> +</table> +</div> +<p>Moreover, we also test the MMLU performance to further verify the out-of-domain robustness of Task Tuning technique.</p> +<div class="pst-scrollable-table-container"><table class="table"> +<thead> +<tr class="row-odd"><th class="head text-center"><p>MMLU task</p></th> +<th class="head text-center"><p>anatomy</p></th> +<th class="head text-center"><p>clinical knowledge</p></th> +<th class="head text-center"><p>college biology</p></th> +<th class="head text-center"><p>college medicine</p></th> +<th class="head text-center"><p>medical genetics</p></th> +<th class="head text-center"><p>professional medicine</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td class="text-center"><p>LLaMA 33B</p></td> +<td class="text-center"><p>39.2</p></td> +<td class="text-center"><p>40.3</p></td> +<td class="text-center"><p>44.4</p></td> +<td class="text-center"><p>32.9</p></td> +<td class="text-center"><p>36</p></td> +<td class="text-center"><p>43.0</p></td> +</tr> +<tr class="row-odd"><td class="text-center"><p>Galactica 30B</p></td> +<td class="text-center"><p>32.5</p></td> +<td class="text-center"><p>26</p></td> +<td class="text-center"><p>30.5</p></td> +<td class="text-center"><p>25.4</p></td> +<td class="text-center"><p>39</p></td> +<td class="text-center"><p>23.1</p></td> +</tr> +<tr class="row-even"><td class="text-center"><p>Galactica 120B</p></td> +<td class="text-center"><p>58.5</p></td> +<td class="text-center"><p>59.2</p></td> +<td class="text-center"><p>68.7</p></td> +<td class="text-center"><p>57.2</p></td> +<td class="text-center"><p>68.0</p></td> +<td class="text-center"><p>59.6</p></td> +</tr> +<tr class="row-odd"><td class="text-center"><p>OPT 175B</p></td> +<td class="text-center"><p>28.9</p></td> +<td class="text-center"><p>21.9</p></td> +<td class="text-center"><p>30.6</p></td> +<td class="text-center"><p>-</p></td> +<td class="text-center"><p>35.0</p></td> +<td class="text-center"><p>27.9</p></td> +</tr> +<tr class="row-even"><td class="text-center"><p>BLOOM 176B</p></td> +<td class="text-center"><p>37</p></td> +<td class="text-center"><p>29.8</p></td> +<td class="text-center"><p>28.5</p></td> +<td class="text-center"><p>-</p></td> +<td class="text-center"><p>36.0</p></td> +<td class="text-center"><p>25.4</p></td> +</tr> +<tr class="row-odd"><td class="text-center"><p>Gopher 280B</p></td> +<td class="text-center"><p>56.3</p></td> +<td class="text-center"><p>67.2</p></td> +<td class="text-center"><p>70.8</p></td> +<td class="text-center"><p>60.1</p></td> +<td class="text-center"><p>69.0</p></td> +<td class="text-center"><p>64.0</p></td> +</tr> +<tr class="row-even"><td class="text-center"><p>GPT3.5 175B</p></td> +<td class="text-center"><p>56.3</p></td> +<td class="text-center"><p>69.8</p></td> +<td class="text-center"><p>72.2</p></td> +<td class="text-center"><p>61.3</p></td> +<td class="text-center"><p>70</p></td> +<td class="text-center"><p>70.2</p></td> +</tr> +<tr class="row-odd"><td class="text-center"><p></p></td> +<td class="text-center"><p></p></td> +<td class="text-center"><p></p></td> +<td class="text-center"><p></p></td> +<td class="text-center"><p></p></td> +<td class="text-center"><p></p></td> +<td class="text-center"><p></p></td> +</tr> +<tr class="row-even"><td class="text-center"><p>Task-tuned LLaMA 33B (LoRA)</p></td> +<td class="text-center"><p>51.8</p></td> +<td class="text-center"><p>65.2</p></td> +<td class="text-center"><p>70.1</p></td> +<td class="text-center"><p>58.3</p></td> +<td class="text-center"><p>65.6</p></td> +<td class="text-center"><p>66.5</p></td> +</tr> +</tbody> +</table> +</div> +</section> +<section id="instruction-tuning"> +<h3>Instruction Tuning<a class="headerlink" href="#instruction-tuning" title="Link to this heading">#</a></h3> +<p>Instruction Tuning is a technique used to improve the performance of language models by training them to follow natural language commands or instructions. This includes positive or negative examples, prompts, constraints, and other elements that are commonly found in human language. The main goal of instruction-tuning is to improve the model’s ability to perform well on multiple tasks and to generalize more effectively to new or unseen tasks. This is achieved by teaching the model to understand and incorporate various language cues and constraints that are relevant to the task at hand. Instruction-tuning is a powerful technique that is widely used in natural language processing, machine learning, and related areas. By improving the ability of language models to understand and follow natural language commands, this approach can help to unlock new levels of performance and productivity in a wide range of applications.</p> +<p>We list some examples below. Full example list is saved as a <a class="reference external" href="https://github.com/OptimalScale/LMFlow/blob/main/docs/source/_static/check_before_after_lora_tuning.jsonl">Jsonl file</a>.</p> +<p><img alt="Instruction Tuning Sample" src="_images/IT_sample1.png" /></p> +<p><img alt="Instruction Tuning Sample" src="_images/IT_sample2.png" /></p> +<p><img alt="Instruction Tuning Sample" src="_images/IT_sample3.png" /></p> +<p><img alt="Instruction Tuning Sample" src="_images/IT_sample4.png" /></p> +<p><img alt="Instruction Tuning Sample" src="_images/IT_sample5.png" /></p> +<p><img alt="Instruction Tuning Sample" src="_images/IT_sample6.png" /></p> +<p><img alt="Instruction Tuning Sample" src="_images/IT_sample7.png" /></p> +</section> +</section> +<section id="installation"> +<h2>Installation<a class="headerlink" href="#installation" title="Link to this heading">#</a></h2> +<p>This package can be be installed from sources with the following command:</p> +<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/OptimalScale/LMFlow.git + +conda<span class="w"> </span>create<span class="w"> </span>-n<span class="w"> </span>lmflow<span class="w"> </span><span class="nv">python</span><span class="o">=</span><span class="m">3</span>.9<span class="w"> </span>-y + +conda<span class="w"> </span>activate<span class="w"> </span>lmflow + +conda<span class="w"> </span>install<span class="w"> </span>mpi4py + +pip<span class="w"> </span>install<span class="w"> </span>-e<span class="w"> </span>. +</pre></div> +</div> +</section> +<section id="checkpoints"> +<h2>Checkpoints<a class="headerlink" href="#checkpoints" title="Link to this heading">#</a></h2> +<p>We have prepared tuned LLaMA model (both task and instruction tuning).</p> +<p>Refer to <a class="reference external" href="https://github.com/OptimalScale/LMFlow/blob/main/README.md">README</a>.</p> +</section> +<section id="content"> +<h2>Content<a class="headerlink" href="#content" title="Link to this heading">#</a></h2> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="blogs/index.html">Blogs</a></li> +</ul> +</div> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="examples/index.html">Examples</a><ul> +<li class="toctree-l2"><a class="reference internal" href="examples/index.html#data-preparation">Data preparation</a></li> +<li class="toctree-l2"><a class="reference internal" href="examples/index.html#finetuning">Finetuning</a></li> +<li class="toctree-l2"><a class="reference internal" href="examples/index.html#inference">Inference</a></li> +<li class="toctree-l2"><a class="reference internal" href="examples/index.html#evaluation">Evaluation</a></li> +</ul> +</li> +</ul> +</div> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="autoapi/index.html">API Reference</a><ul> +<li class="toctree-l2"><a class="reference internal" href="autoapi/lmflow/index.html">lmflow</a></li> +</ul> +</li> +</ul> +</div> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="about/index.html">About</a><ul> +<li class="toctree-l2"><a class="reference internal" href="about/changelog.html">Changelog</a></li> +<li class="toctree-l2"><a class="reference internal" href="about/authors.html">Contributors</a></li> +</ul> +</li> +</ul> +</div> +</section> +<section id="vision"> +<h2>Vision<a class="headerlink" href="#vision" title="Link to this heading">#</a></h2> +<p>Hello there! We are excited to announce the upcoming release of our code repository that includes a complete LLM training process, enabling users to quickly build their own language models and train them effectively.</p> +<p>Our code repository is not just a simple model; it includes the complete training workflow, model optimization, and testing tools. You can use it to build various types of language models, including conversation models, question-answering models, and text generation models, among others.</p> +<p>Moreover, we aim to create an open and democratic LLM sharing platform where people can share their checkpoints and experiences to collectively improve the skills of the community. We welcome anyone who is interested in LLM to participate and join us in building an open and friendly community!</p> +<p>Whether you are a beginner or an expert, we believe that you can benefit from this platform. Let’s work together to build a vibrant and innovative LLM community!</p> +<p><a class="reference external" href="https://discord.gg/u9VJNpzhvA"><img alt="Embark" src="https://img.shields.io/badge/discord-LMFlow-%237289da.svg?logo=discord" /></a> +<a class="reference external" href="https://join.slack.com/t/lmflow/shared_invite/zt-1wju9nicy-woXbNtS~5MavHSAtiMxmxQ"><img alt="slack badge" src="https://img.shields.io/badge/Slack-join-blueviolet?logo=slack&amp;amp" /></a> +<a class="reference external" href="https://s1.ax1x.com/2023/08/06/pPAQTPI.jpg"><img alt="WeChat badge" src="https://img.shields.io/badge/WeChat-Join-brightgreen?logo=wechat&amp;amp" /></a></p> +</section> +<section id="citation"> +<h2>Citation<a class="headerlink" href="#citation" title="Link to this heading">#</a></h2> +<div class="highlight-bibtex notranslate"><div class="highlight"><pre><span></span><span class="nc">@misc</span><span class="p">{</span><span class="nl">lmflow</span><span class="p">,</span> +<span class="w"> </span><span class="na">author</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{Shizhe Diao and Rui Pan and Hanze Dong and KaShun Shum and Jipeng Zhang and Wei Xiong and Tong Zhang}</span><span class="p">,</span> +<span class="w"> </span><span class="na">title</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{LMFlow: An Extensible Toolkit for Finetuning and Inference of Large Foundation Models}</span><span class="p">,</span> +<span class="w"> </span><span class="na">year</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{2023}</span><span class="p">,</span> +<span class="w"> </span><span class="na">publisher</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{GitHub}</span><span class="p">,</span> +<span class="w"> </span><span class="na">journal</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{GitHub repository}</span><span class="p">,</span> +<span class="w"> </span><span class="na">howpublished</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{\url{https://optimalscale.github.io/LMFlow/}}</span><span class="p">,</span> +<span class="p">}</span> +</pre></div> +</div> +</section> +<section id="disclaimer"> +<h2>Disclaimer<a class="headerlink" href="#disclaimer" title="Link to this heading">#</a></h2> +<p>This package aims to provide a streamlined and user-friendly pipeline for large model tuning. Its functionalities serve as a reference and are intended for use by the user. However, it is important to note that the responsibility for the preparation of the data and pretrained models lies solely with the user. This package does not guarantee the accuracy, completeness, applicability, or legality of the components from the user’s preparation. Users must be aware of and assume all risks and liabilities associated with the preparation of the models and data, and obtain legal, commercial, and technical advice before utilizing this package. The pipeline shall not be held responsible for any direct, indirect, special, incidental, or consequential damages resulting from the user’s improper preparation of the data and pretrained models.</p> +<p>It is also crucial to highlight that the results generated by the model are based on probabilistic models and not directly related to this pipeline. The accuracy, reliability, applicability, and legality of the results are not guaranteed by this pipeline. Therefore, users must also be aware of the risks and liabilities associated with the results and seek legal, commercial, and technical advice before relying on the model-generated outcomes. This pipeline shall not be accountable for any direct, indirect, special, incidental, or consequential damages resulting from the user’s reliance on the model-generated results.</p> +</section> +<section id="support"> +<h2>Support<a class="headerlink" href="#support" title="Link to this heading">#</a></h2> +<p>If you need any help, please submit a <a class="reference external" href="https://github.com/OptimalScale/LMFlow">Github</a> issue.</p> +</section> +<section id="indices-and-tables"> +<h2>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Link to this heading">#</a></h2> +<ul class="simple"> +<li><p><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></p></li> +<li><p><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></p></li> +</ul> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="right-next" + href="blogs/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">Blogs</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#introduction">Introduction</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#features">Features</a><ul class="nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#task-tuning">Task Tuning</a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#instruction-tuning">Instruction Tuning</a></li> +</ul> +</li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#installation">Installation</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#checkpoints">Checkpoints</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#content">Content</a><ul class="nav section-nav flex-column"> +</ul> +</li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#vision">Vision</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#citation">Citation</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#disclaimer">Disclaimer</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#support">Support</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#indices-and-tables">Indices and tables</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="_sources/index.md.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..a2c3b4eeb524ec3454add262e4f183a8ea301775 GIT binary patch literal 12128 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 WaGtUFtt@`=eFgXE=6?aGR=6Bf2yLnW literal 0 HcmV?d00001 diff --git a/py-modindex.html b/py-modindex.html new file mode 100644 index 000000000..3263fcb78 --- /dev/null +++ b/py-modindex.html @@ -0,0 +1,921 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="./" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Python Module Index &#8212; LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="_static/documentation_options.js?v=5929fcd5"></script> + <script src="_static/doctools.js?v=9bcbadda"></script> + <script src="_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'py-modindex';</script> + <link rel="index" title="Index" href="genindex.html" /> + <link rel="search" title="Search" href="search.html" /> + + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + + + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"></div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + + <h1>Python Module Index</h1> + + <div class="modindex-jumpbox"> + <a href="#cap-l"><strong>l</strong></a> + </div> + + <table class="indextable modindextable"> + <tr class="pcap"><td></td><td>&#160;</td><td></td></tr> + <tr class="cap" id="cap-l"><td></td><td> + <strong>l</strong></td><td></td></tr> + <tr> + <td><img src="_static/minus.png" class="toggler" + id="toggle-1" style="display: none" alt="-" /></td> + <td> + <a href="autoapi/lmflow/index.html#module-lmflow"><code class="xref">lmflow</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/args/index.html#module-lmflow.args"><code class="xref">lmflow.args</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/datasets/index.html#module-lmflow.datasets"><code class="xref">lmflow.datasets</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/datasets/dataset/index.html#module-lmflow.datasets.dataset"><code class="xref">lmflow.datasets.dataset</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/datasets/multi_modal_dataset/index.html#module-lmflow.datasets.multi_modal_dataset"><code class="xref">lmflow.datasets.multi_modal_dataset</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/index.html#module-lmflow.models"><code class="xref">lmflow.models</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/auto_model/index.html#module-lmflow.models.auto_model"><code class="xref">lmflow.models.auto_model</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/base_model/index.html#module-lmflow.models.base_model"><code class="xref">lmflow.models.base_model</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/decoder_model/index.html#module-lmflow.models.decoder_model"><code class="xref">lmflow.models.decoder_model</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/encoder_decoder_model/index.html#module-lmflow.models.encoder_decoder_model"><code class="xref">lmflow.models.encoder_decoder_model</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/hf_decoder_model/index.html#module-lmflow.models.hf_decoder_model"><code class="xref">lmflow.models.hf_decoder_model</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/hf_encoder_decoder_model/index.html#module-lmflow.models.hf_encoder_decoder_model"><code class="xref">lmflow.models.hf_encoder_decoder_model</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/hf_model_mixin/index.html#module-lmflow.models.hf_model_mixin"><code class="xref">lmflow.models.hf_model_mixin</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/hf_text_regression_model/index.html#module-lmflow.models.hf_text_regression_model"><code class="xref">lmflow.models.hf_text_regression_model</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/interfaces/index.html#module-lmflow.models.interfaces"><code class="xref">lmflow.models.interfaces</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/interfaces/tunable/index.html#module-lmflow.models.interfaces.tunable"><code class="xref">lmflow.models.interfaces.tunable</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/regression_model/index.html#module-lmflow.models.regression_model"><code class="xref">lmflow.models.regression_model</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/text_regression_model/index.html#module-lmflow.models.text_regression_model"><code class="xref">lmflow.models.text_regression_model</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/vision2seq_model/index.html#module-lmflow.models.vision2seq_model"><code class="xref">lmflow.models.vision2seq_model</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/vision_encoder/index.html#module-lmflow.models.vision_encoder"><code class="xref">lmflow.models.vision_encoder</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/models/vision_encoder/clip_encoder/index.html#module-lmflow.models.vision_encoder.clip_encoder"><code class="xref">lmflow.models.vision_encoder.clip_encoder</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/index.html#module-lmflow.optim"><code class="xref">lmflow.optim</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/adabelief/index.html#module-lmflow.optim.adabelief"><code class="xref">lmflow.optim.adabelief</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/adabound/index.html#module-lmflow.optim.adabound"><code class="xref">lmflow.optim.adabound</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/adadelta/index.html#module-lmflow.optim.adadelta"><code class="xref">lmflow.optim.adadelta</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/adagrad/index.html#module-lmflow.optim.adagrad"><code class="xref">lmflow.optim.adagrad</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/adam/index.html#module-lmflow.optim.adam"><code class="xref">lmflow.optim.adam</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/adamax/index.html#module-lmflow.optim.adamax"><code class="xref">lmflow.optim.adamax</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/adamp/index.html#module-lmflow.optim.adamp"><code class="xref">lmflow.optim.adamp</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/adamw_schedule_free/index.html#module-lmflow.optim.adamw_schedule_free"><code class="xref">lmflow.optim.adamw_schedule_free</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/adan/index.html#module-lmflow.optim.adan"><code class="xref">lmflow.optim.adan</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/dummy/index.html#module-lmflow.optim.dummy"><code class="xref">lmflow.optim.dummy</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/lamb/index.html#module-lmflow.optim.lamb"><code class="xref">lmflow.optim.lamb</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/lars/index.html#module-lmflow.optim.lars"><code class="xref">lmflow.optim.lars</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/nadam/index.html#module-lmflow.optim.nadam"><code class="xref">lmflow.optim.nadam</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/novograd/index.html#module-lmflow.optim.novograd"><code class="xref">lmflow.optim.novograd</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/optimizers/index.html#module-lmflow.optim.optimizers"><code class="xref">lmflow.optim.optimizers</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/radam/index.html#module-lmflow.optim.radam"><code class="xref">lmflow.optim.radam</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/sgd_schedule_free/index.html#module-lmflow.optim.sgd_schedule_free"><code class="xref">lmflow.optim.sgd_schedule_free</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/sgdp/index.html#module-lmflow.optim.sgdp"><code class="xref">lmflow.optim.sgdp</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/sophia/index.html#module-lmflow.optim.sophia"><code class="xref">lmflow.optim.sophia</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/optim/yogi/index.html#module-lmflow.optim.yogi"><code class="xref">lmflow.optim.yogi</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/index.html#module-lmflow.pipeline"><code class="xref">lmflow.pipeline</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/auto_pipeline/index.html#module-lmflow.pipeline.auto_pipeline"><code class="xref">lmflow.pipeline.auto_pipeline</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/base_aligner/index.html#module-lmflow.pipeline.base_aligner"><code class="xref">lmflow.pipeline.base_aligner</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/base_pipeline/index.html#module-lmflow.pipeline.base_pipeline"><code class="xref">lmflow.pipeline.base_pipeline</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/base_tuner/index.html#module-lmflow.pipeline.base_tuner"><code class="xref">lmflow.pipeline.base_tuner</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/dpo_aligner/index.html#module-lmflow.pipeline.dpo_aligner"><code class="xref">lmflow.pipeline.dpo_aligner</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/dpov2_aligner/index.html#module-lmflow.pipeline.dpov2_aligner"><code class="xref">lmflow.pipeline.dpov2_aligner</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/evaluator/index.html#module-lmflow.pipeline.evaluator"><code class="xref">lmflow.pipeline.evaluator</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/finetuner/index.html#module-lmflow.pipeline.finetuner"><code class="xref">lmflow.pipeline.finetuner</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/inferencer/index.html#module-lmflow.pipeline.inferencer"><code class="xref">lmflow.pipeline.inferencer</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/iterative_dpo_aligner/index.html#module-lmflow.pipeline.iterative_dpo_aligner"><code class="xref">lmflow.pipeline.iterative_dpo_aligner</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/raft_aligner/index.html#module-lmflow.pipeline.raft_aligner"><code class="xref">lmflow.pipeline.raft_aligner</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/rm_inferencer/index.html#module-lmflow.pipeline.rm_inferencer"><code class="xref">lmflow.pipeline.rm_inferencer</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/rm_tuner/index.html#module-lmflow.pipeline.rm_tuner"><code class="xref">lmflow.pipeline.rm_tuner</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/utils/index.html#module-lmflow.pipeline.utils"><code class="xref">lmflow.pipeline.utils</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.html#module-lmflow.pipeline.utils.dpov2_dataprocessor"><code class="xref">lmflow.pipeline.utils.dpov2_dataprocessor</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/utils/dpov2_trainer/index.html#module-lmflow.pipeline.utils.dpov2_trainer"><code class="xref">lmflow.pipeline.utils.dpov2_trainer</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.html#module-lmflow.pipeline.utils.memory_safe_dpov2_align"><code class="xref">lmflow.pipeline.utils.memory_safe_dpov2_align</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.html#module-lmflow.pipeline.utils.memory_safe_vllm_inference"><code class="xref">lmflow.pipeline.utils.memory_safe_vllm_inference</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/utils/peft_trainer/index.html#module-lmflow.pipeline.utils.peft_trainer"><code class="xref">lmflow.pipeline.utils.peft_trainer</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/utils/raft_trainer/index.html#module-lmflow.pipeline.utils.raft_trainer"><code class="xref">lmflow.pipeline.utils.raft_trainer</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.html#module-lmflow.pipeline.utils.rm_dataprocessor"><code class="xref">lmflow.pipeline.utils.rm_dataprocessor</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/utils/rm_trainer/index.html#module-lmflow.pipeline.utils.rm_trainer"><code class="xref">lmflow.pipeline.utils.rm_trainer</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/pipeline/vllm_inferencer/index.html#module-lmflow.pipeline.vllm_inferencer"><code class="xref">lmflow.pipeline.vllm_inferencer</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/tokenization/index.html#module-lmflow.tokenization"><code class="xref">lmflow.tokenization</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/tokenization/hf_decoder_model/index.html#module-lmflow.tokenization.hf_decoder_model"><code class="xref">lmflow.tokenization.hf_decoder_model</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/tokenization/hf_text_regression_model/index.html#module-lmflow.tokenization.hf_text_regression_model"><code class="xref">lmflow.tokenization.hf_text_regression_model</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/index.html#module-lmflow.utils"><code class="xref">lmflow.utils</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/common/index.html#module-lmflow.utils.common"><code class="xref">lmflow.utils.common</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/constants/index.html#module-lmflow.utils.constants"><code class="xref">lmflow.utils.constants</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/conversation_template/index.html#module-lmflow.utils.conversation_template"><code class="xref">lmflow.utils.conversation_template</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/conversation_template/base/index.html#module-lmflow.utils.conversation_template.base"><code class="xref">lmflow.utils.conversation_template.base</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/conversation_template/chatglm/index.html#module-lmflow.utils.conversation_template.chatglm"><code class="xref">lmflow.utils.conversation_template.chatglm</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/conversation_template/chatml/index.html#module-lmflow.utils.conversation_template.chatml"><code class="xref">lmflow.utils.conversation_template.chatml</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/conversation_template/deepseek/index.html#module-lmflow.utils.conversation_template.deepseek"><code class="xref">lmflow.utils.conversation_template.deepseek</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/conversation_template/gemma/index.html#module-lmflow.utils.conversation_template.gemma"><code class="xref">lmflow.utils.conversation_template.gemma</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/conversation_template/hymba/index.html#module-lmflow.utils.conversation_template.hymba"><code class="xref">lmflow.utils.conversation_template.hymba</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/conversation_template/internlm/index.html#module-lmflow.utils.conversation_template.internlm"><code class="xref">lmflow.utils.conversation_template.internlm</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/conversation_template/llama/index.html#module-lmflow.utils.conversation_template.llama"><code class="xref">lmflow.utils.conversation_template.llama</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/conversation_template/phi/index.html#module-lmflow.utils.conversation_template.phi"><code class="xref">lmflow.utils.conversation_template.phi</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/conversation_template/qwen/index.html#module-lmflow.utils.conversation_template.qwen"><code class="xref">lmflow.utils.conversation_template.qwen</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/conversation_template/yi/index.html#module-lmflow.utils.conversation_template.yi"><code class="xref">lmflow.utils.conversation_template.yi</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/conversation_template/zephyr/index.html#module-lmflow.utils.conversation_template.zephyr"><code class="xref">lmflow.utils.conversation_template.zephyr</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/data_utils/index.html#module-lmflow.utils.data_utils"><code class="xref">lmflow.utils.data_utils</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/flash_attention/index.html#module-lmflow.utils.flash_attention"><code class="xref">lmflow.utils.flash_attention</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.html#module-lmflow.utils.flash_attention.bloom_flash_attention"><code class="xref">lmflow.utils.flash_attention.bloom_flash_attention</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.html#module-lmflow.utils.flash_attention.gpt2_flash_attention"><code class="xref">lmflow.utils.flash_attention.gpt2_flash_attention</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.html#module-lmflow.utils.flash_attention.gpt_neo_flash_attention"><code class="xref">lmflow.utils.flash_attention.gpt_neo_flash_attention</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.html#module-lmflow.utils.flash_attention.llama_flash_attention"><code class="xref">lmflow.utils.flash_attention.llama_flash_attention</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.html#module-lmflow.utils.flash_attention.triton_flash_attention"><code class="xref">lmflow.utils.flash_attention.triton_flash_attention</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/llava_conversation_lib/index.html#module-lmflow.utils.llava_conversation_lib"><code class="xref">lmflow.utils.llava_conversation_lib</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/model/index.html#module-lmflow.utils.model"><code class="xref">lmflow.utils.model</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/multimodal/index.html#module-lmflow.utils.multimodal"><code class="xref">lmflow.utils.multimodal</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/position_interpolation/index.html#module-lmflow.utils.position_interpolation"><code class="xref">lmflow.utils.position_interpolation</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.html#module-lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch"><code class="xref">lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/utils/versioning/index.html#module-lmflow.utils.versioning"><code class="xref">lmflow.utils.versioning</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>&#160;&#160;&#160; + <a href="autoapi/lmflow/version/index.html#module-lmflow.version"><code class="xref">lmflow.version</code></a></td><td> + <em></em></td></tr> + </table> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/search.html b/search.html new file mode 100644 index 000000000..3d89290ce --- /dev/null +++ b/search.html @@ -0,0 +1,439 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="./" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Search - LMFlow documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="_static/plot_directive.css" /> + <link rel="stylesheet" type="text/css" href="_static/sphinx-design.min.css?v=95c83b7e" /> + + <!-- So that users can add custom icons --> + <script src="_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="_static/documentation_options.js?v=5929fcd5"></script> + <script src="_static/doctools.js?v=9bcbadda"></script> + <script src="_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="_static/design-tabs.js?v=f930bc37"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'search';</script> + <script src="_static/searchtools.js"></script> + <script src="_static/language_data.js"></script> + <script src="searchindex.js"></script> + <link rel="index" title="Index" href="genindex.html" /> + <link rel="search" title="Search" href="#" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="#" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> +<aside class="bd-header-announcement" aria-label="Announcement"> + <div class="bd-header-announcement__content">We've released our memory-efficient finetuning algorithm LISA, check out [<a href='https://arxiv.org/pdf/2403.17919.pdf'>Paper</a>][<a href='https://github.com/OptimalScale/LMFlow#finetuning-lisa'>User Guide</a>] for more details!</div> +</aside> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="index.html"> + + + + + + + <p class="title logo__title">LMFlow</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar hide-on-wide"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="blogs/index.html"> + Blogs + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="examples/index.html"> + Examples + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="autoapi/index.html"> + API Reference + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="about/index.html"> + About + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + + + <a href="https://github.com/OptimalScale/LMFlow" title="LMFlow" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><img src="_static/logo5.svg" class="icon-link-image" alt="LMFlow"/></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"></div> + + + <div class="bd-search-container"> + <h1>Search</h1> + <noscript> + <div class="admonition error"> + <p class="admonition-title">Error</p> + <p>Please activate JavaScript to enable the search functionality.</p> + </div> + </noscript> + +<form class="bd-search d-flex align-items-center" + action="#" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + <div id="search-results"></div> + </div> + <script> + // Activate the search field on page load + let searchInput = document.querySelector("form.bd-search input"); + if (searchInput) { + searchInput.focus(); + searchInput.select(); + console.log("[PST]: Set focus on search field."); + } + </script> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> +</div> + </footer> + + </div> + + + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright LMFlow 2024. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 000000000..8d116d047 --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {"1 Introduction": [[112, "introduction"]], "1. Decompose your conversations": [[108, "decompose-your-conversations"]], "1. NLL Task Setting": [[106, "nll-task-setting"]], "1.1 Dataset description": [[112, "dataset-description"]], "2 Reward Modeling": [[112, "reward-modeling"]], "2. Choose proper Formatter": [[108, "choose-proper-formatter"]], "2. LM-Evaluation Task Setting": [[106, "lm-evaluation-task-setting"]], "2.1 Supervised Finetuning (SFT)": [[112, "supervised-finetuning-sft"]], "2.2 Reward Modeling": [[112, "id1"]], "2.3 LoRA Merge and Get Reward Model": [[112, "lora-merge-and-get-reward-model"]], "2023": [[104, "id1"]], "3 RAFT Alignment": [[112, "raft-alignment"]], "3. Build the template": [[108, "build-the-template"]], "3.1 Algorithms Overview": [[112, "algorithms-overview"]], "3.2 Hyper-parameters": [[112, "hyper-parameters"]], "3.3 Examples": [[112, "examples"]], "3.3.1 SFT": [[112, "sft"]], "3.3.2 RAFT Alignment": [[112, "id2"]], "3.3.3 End Note": [[112, "end-note"]], "4. Register your template": [[108, "register-your-template"]], "5. Use your template": [[108, "use-your-template"]], "API Reference": [[3, null]], "About": [[2, null]], "Attributes": [[4, "attributes"], [5, "attributes"], [8, "attributes"], [13, "attributes"], [14, "attributes"], [15, "attributes"], [16, "attributes"], [46, "attributes"], [51, "attributes"], [53, "attributes"], [55, "attributes"], [56, "attributes"], [57, "attributes"], [58, "attributes"], [59, "attributes"], [60, "attributes"], [61, "attributes"], [63, "attributes"], [64, "attributes"], [66, "attributes"], [67, "attributes"], [69, "attributes"], [70, "attributes"], [71, "attributes"], [73, "attributes"], [74, "attributes"], [75, "attributes"], [76, "attributes"], [77, "attributes"], [78, "attributes"], [79, "attributes"], [80, "attributes"], [81, "attributes"], [82, "attributes"], [83, "attributes"], [84, "attributes"], [85, "attributes"], [86, "attributes"], [87, "attributes"], [94, "attributes"], [96, "attributes"], [97, "attributes"], [101, "attributes"], [102, "attributes"]], "Blogs": [[104, null]], "Changelog": [[1, null]], "Chat Performance": [[103, "chat-performance"]], "ChatGLM-3": [[114, "chatglm-3"]], "ChatML": [[114, "chatml"]], "Checkpoints": [[107, null], [115, "checkpoints"]], "Citation": [[115, "citation"]], "Classes": [[4, "classes"], [5, "classes"], [6, "classes"], [7, "classes"], [9, "classes"], [10, "classes"], [11, "classes"], [12, "classes"], [13, "classes"], [14, "classes"], [15, "classes"], [16, "classes"], [19, "classes"], [20, "classes"], [21, "classes"], [22, "classes"], [23, "classes"], [25, "classes"], [26, "classes"], [27, "classes"], [28, "classes"], [29, "classes"], [30, "classes"], [31, "classes"], [32, "classes"], [33, "classes"], [34, "classes"], [36, "classes"], [37, "classes"], [38, "classes"], [39, "classes"], [41, "classes"], [42, "classes"], [43, "classes"], [44, "classes"], [45, "classes"], [46, "classes"], [47, "classes"], [48, "classes"], [49, "classes"], [50, "classes"], [51, "classes"], [52, "classes"], [53, "classes"], [55, "classes"], [56, "classes"], [57, "classes"], [58, "classes"], [59, "classes"], [60, "classes"], [61, "classes"], [65, "classes"], [66, "classes"], [67, "classes"], [68, "classes"], [69, "classes"], [75, "classes"], [79, "classes"], [80, "classes"], [81, "classes"], [83, "classes"], [87, "classes"], [88, "classes"], [94, "classes"], [96, "classes"], [100, "classes"]], "CommonSense Performance": [[103, "commonsense-performance"]], "Conclusion": [[103, "conclusion"]], "Content": [[115, "content"]], "Contributors": [[0, null]], "Conversation": [[105, "conversation"]], "Conversation Template": [[105, "conversation-template"], [109, null]], "Create Your Task Dataset File": [[106, "create-your-task-dataset-file"]], "Customize Conversation Template": [[105, "customize-conversation-template"], [108, null]], "Data Format": [[105, "data-format"]], "Data preparation": [[110, "data-preparation"]], "Dataset": [[105, null]], "Dataset Format in General": [[105, "dataset-format-in-general"]], "DeepSeek": [[114, "deepseek"]], "Disclaimer": [[115, "disclaimer"]], "Evaluation": [[110, "evaluation"]], "Examples": [[110, null], [113, "examples"]], "Features": [[115, "features"]], "Finetune": [[111, null]], "Finetuning": [[109, null], [110, "finetuning"]], "Formatted Dataset": [[105, null]], "Full Parameters": [[109, "full-parameters"]], "Functions": [[4, "functions"], [6, "functions"], [7, "functions"], [23, "functions"], [24, "functions"], [33, "functions"], [50, "functions"], [55, "functions"], [63, "functions"], [64, "functions"], [68, "functions"], [70, "functions"], [71, "functions"], [73, "functions"], [88, "functions"], [89, "functions"], [90, "functions"], [91, "functions"], [93, "functions"], [94, "functions"], [97, "functions"], [98, "functions"], [100, "functions"], [101, "functions"]], "Gemma": [[114, "gemma"]], "Hymba": [[114, "hymba"]], "Indices and tables": [[115, "indices-and-tables"]], "Inference": [[110, "inference"]], "Installation": [[115, "installation"]], "Instruction Following": [[103, "instruction-following"]], "Instruction Tuning": [[115, "instruction-tuning"]], "InternLM2": [[114, "internlm2"]], "Introduction": [[103, "introduction"], [113, "introduction"], [115, "introduction"]], "LLaMA Checkpoint": [[107, "llama-checkpoint"]], "LMFlow": [[115, null]], "LMFlow Benchmark Guide": [[106, null]], "LMFlow Benchmark: An Automatic Evaluation Framework for Open-Source LLMs": [[103, null]], "Layerwise Importance Sampled AdamW (LISA)": [[109, "layerwise-importance-sampled-adamw-lisa"]], "Llama-2": [[114, "llama-2"]], "Llama-3": [[114, "llama-3"]], "Low-Rank Adaptation (LoRA)": [[109, "low-rank-adaptation-lora"]], "Merge LoRA Weight": [[109, null]], "Metric": [[103, "metric"]], "Mixtral 8x22B": [[114, "mixtral-8x22b"]], "Mixtral 8x7B": [[114, "mixtral-8x7b"]], "Module Contents": [[4, "module-contents"], [5, "module-contents"], [7, "module-contents"], [9, "module-contents"], [10, "module-contents"], [11, "module-contents"], [12, "module-contents"], [13, "module-contents"], [14, "module-contents"], [15, "module-contents"], [16, "module-contents"], [19, "module-contents"], [20, "module-contents"], [21, "module-contents"], [22, "module-contents"], [23, "module-contents"], [25, "module-contents"], [26, "module-contents"], [27, "module-contents"], [28, "module-contents"], [29, "module-contents"], [30, "module-contents"], [31, "module-contents"], [32, "module-contents"], [33, "module-contents"], [34, "module-contents"], [36, "module-contents"], [37, "module-contents"], [38, "module-contents"], [39, "module-contents"], [41, "module-contents"], [42, "module-contents"], [43, "module-contents"], [44, "module-contents"], [45, "module-contents"], [46, "module-contents"], [47, "module-contents"], [48, "module-contents"], [49, "module-contents"], [50, "module-contents"], [51, "module-contents"], [52, "module-contents"], [53, "module-contents"], [55, "module-contents"], [56, "module-contents"], [57, "module-contents"], [58, "module-contents"], [59, "module-contents"], [60, "module-contents"], [61, "module-contents"], [63, "module-contents"], [64, "module-contents"], [65, "module-contents"], [66, "module-contents"], [67, "module-contents"], [68, "module-contents"], [69, "module-contents"], [70, "module-contents"], [71, "module-contents"], [73, "module-contents"], [74, "module-contents"], [75, "module-contents"], [76, "module-contents"], [77, "module-contents"], [78, "module-contents"], [79, "module-contents"], [80, "module-contents"], [82, "module-contents"], [83, "module-contents"], [84, "module-contents"], [85, "module-contents"], [86, "module-contents"], [87, "module-contents"], [88, "module-contents"], [89, "module-contents"], [90, "module-contents"], [91, "module-contents"], [93, "module-contents"], [94, "module-contents"], [96, "module-contents"], [97, "module-contents"], [98, "module-contents"], [100, "module-contents"], [101, "module-contents"], [102, "module-contents"]], "NOTICE": [[114, null], [114, null], [114, null], [114, null]], "Package Contents": [[6, "package-contents"], [8, "package-contents"], [24, "package-contents"], [81, "package-contents"]], "Paired Conversation": [[105, "paired-conversation"]], "Phi-3": [[114, "phi-3"]], "Qwen-2": [[114, "qwen-2"]], "RAFT": [[112, null]], "References": [[103, "references"]], "Returns": [[15, "returns"]], "Reward Modeling": [[113, null]], "Setup": [[106, "setup"]], "Step 1 Supervised Finetuning (SFT)": [[113, "step-1-supervised-finetuning-sft"]], "Step 2 Reward Modeling": [[113, "step-2-reward-modeling"]], "Submodules": [[6, "submodules"], [8, "submodules"], [17, "submodules"], [18, "submodules"], [24, "submodules"], [35, "submodules"], [54, "submodules"], [62, "submodules"], [72, "submodules"], [81, "submodules"], [92, "submodules"], [95, "submodules"], [99, "submodules"]], "Support": [[115, "support"]], "Supported Conversation Template": [[114, null]], "Supported Dataset and Detailed Formats": [[105, "supported-dataset-and-detailed-formats"]], "Task Registration": [[106, "task-registration"]], "Task Tuning": [[115, "task-tuning"]], "Text2Text": [[105, "text2text"]], "TextOnly": [[105, "textonly"]], "Version 0.0.1 (Mar 28, 2023)": [[1, "version-0-0-1-mar-28-2023"]], "Vision": [[115, "vision"]], "Work in Progress": [[105, null], [114, null], [114, null]], "Yi": [[114, "yi"]], "Yi-1.5": [[114, "yi-1-5"]], "Zephyr": [[114, "zephyr"]], "lmflow": [[8, null]], "lmflow.args": [[4, null]], "lmflow.datasets": [[6, null]], "lmflow.datasets.dataset": [[5, null]], "lmflow.datasets.multi_modal_dataset": [[7, null]], "lmflow.models": [[17, null]], "lmflow.models.auto_model": [[9, null]], "lmflow.models.base_model": [[10, null]], "lmflow.models.decoder_model": [[11, null]], "lmflow.models.encoder_decoder_model": [[12, null]], "lmflow.models.hf_decoder_model": [[13, null]], "lmflow.models.hf_encoder_decoder_model": [[14, null]], "lmflow.models.hf_model_mixin": [[15, null]], "lmflow.models.hf_text_regression_model": [[16, null]], "lmflow.models.interfaces": [[18, null]], "lmflow.models.interfaces.tunable": [[19, null]], "lmflow.models.regression_model": [[20, null]], "lmflow.models.text_regression_model": [[21, null]], "lmflow.models.vision2seq_model": [[22, null]], "lmflow.models.vision_encoder": [[24, null]], "lmflow.models.vision_encoder.clip_encoder": [[23, null]], "lmflow.optim": [[35, null]], "lmflow.optim.adabelief": [[25, null]], "lmflow.optim.adabound": [[26, null]], "lmflow.optim.adadelta": [[27, null]], "lmflow.optim.adagrad": [[28, null]], "lmflow.optim.adam": [[29, null]], "lmflow.optim.adamax": [[30, null]], "lmflow.optim.adamp": [[31, null]], "lmflow.optim.adamw_schedule_free": [[32, null]], "lmflow.optim.adan": [[33, null]], "lmflow.optim.dummy": [[34, null]], "lmflow.optim.lamb": [[36, null]], "lmflow.optim.lars": [[37, null]], "lmflow.optim.nadam": [[38, null]], "lmflow.optim.novograd": [[39, null]], "lmflow.optim.optimizers": [[40, null]], "lmflow.optim.radam": [[41, null]], "lmflow.optim.sgd_schedule_free": [[42, null]], "lmflow.optim.sgdp": [[43, null]], "lmflow.optim.sophia": [[44, null]], "lmflow.optim.yogi": [[45, null]], "lmflow.pipeline": [[54, null]], "lmflow.pipeline.auto_pipeline": [[46, null]], "lmflow.pipeline.base_aligner": [[47, null]], "lmflow.pipeline.base_pipeline": [[48, null]], "lmflow.pipeline.base_tuner": [[49, null]], "lmflow.pipeline.dpo_aligner": [[50, null]], "lmflow.pipeline.dpov2_aligner": [[51, null]], "lmflow.pipeline.evaluator": [[52, null]], "lmflow.pipeline.finetuner": [[53, null]], "lmflow.pipeline.inferencer": [[55, null]], "lmflow.pipeline.iterative_dpo_aligner": [[56, null]], "lmflow.pipeline.raft_aligner": [[57, null]], "lmflow.pipeline.rm_inferencer": [[58, null]], "lmflow.pipeline.rm_tuner": [[59, null]], "lmflow.pipeline.utils": [[62, null]], "lmflow.pipeline.utils.dpov2_dataprocessor": [[60, null]], "lmflow.pipeline.utils.dpov2_trainer": [[61, null]], "lmflow.pipeline.utils.memory_safe_dpov2_align": [[63, null]], "lmflow.pipeline.utils.memory_safe_vllm_inference": [[64, null]], "lmflow.pipeline.utils.peft_trainer": [[65, null]], "lmflow.pipeline.utils.raft_trainer": [[66, null]], "lmflow.pipeline.utils.rm_dataprocessor": [[67, null]], "lmflow.pipeline.utils.rm_trainer": [[68, null]], "lmflow.pipeline.vllm_inferencer": [[69, null]], "lmflow.tokenization": [[72, null]], "lmflow.tokenization.hf_decoder_model": [[70, null]], "lmflow.tokenization.hf_text_regression_model": [[71, null]], "lmflow.utils": [[95, null]], "lmflow.utils.common": [[73, null]], "lmflow.utils.constants": [[74, null]], "lmflow.utils.conversation_template": [[81, null]], "lmflow.utils.conversation_template.base": [[75, null]], "lmflow.utils.conversation_template.chatglm": [[76, null]], "lmflow.utils.conversation_template.chatml": [[77, null]], "lmflow.utils.conversation_template.deepseek": [[78, null]], "lmflow.utils.conversation_template.gemma": [[79, null]], "lmflow.utils.conversation_template.hymba": [[80, null]], "lmflow.utils.conversation_template.internlm": [[82, null]], "lmflow.utils.conversation_template.llama": [[83, null]], "lmflow.utils.conversation_template.phi": [[84, null]], "lmflow.utils.conversation_template.qwen": [[85, null]], "lmflow.utils.conversation_template.yi": [[86, null]], "lmflow.utils.conversation_template.zephyr": [[87, null]], "lmflow.utils.data_utils": [[88, null]], "lmflow.utils.flash_attention": [[92, null]], "lmflow.utils.flash_attention.bloom_flash_attention": [[89, null]], "lmflow.utils.flash_attention.gpt2_flash_attention": [[90, null]], "lmflow.utils.flash_attention.gpt_neo_flash_attention": [[91, null]], "lmflow.utils.flash_attention.llama_flash_attention": [[93, null]], "lmflow.utils.flash_attention.triton_flash_attention": [[94, null]], "lmflow.utils.llava_conversation_lib": [[96, null]], "lmflow.utils.model": [[97, null]], "lmflow.utils.multimodal": [[98, null]], "lmflow.utils.position_interpolation": [[99, null]], "lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch": [[100, null]], "lmflow.utils.versioning": [[101, null]], "lmflow.version": [[102, null]], "}": [[75, "id5"], [75, "id10"], [80, "id5"], [81, "id5"], [81, "id10"]]}, "docnames": ["about/authors", "about/changelog", "about/index", "autoapi/index", "autoapi/lmflow/args/index", "autoapi/lmflow/datasets/dataset/index", "autoapi/lmflow/datasets/index", "autoapi/lmflow/datasets/multi_modal_dataset/index", "autoapi/lmflow/index", "autoapi/lmflow/models/auto_model/index", "autoapi/lmflow/models/base_model/index", "autoapi/lmflow/models/decoder_model/index", "autoapi/lmflow/models/encoder_decoder_model/index", "autoapi/lmflow/models/hf_decoder_model/index", "autoapi/lmflow/models/hf_encoder_decoder_model/index", "autoapi/lmflow/models/hf_model_mixin/index", "autoapi/lmflow/models/hf_text_regression_model/index", "autoapi/lmflow/models/index", "autoapi/lmflow/models/interfaces/index", "autoapi/lmflow/models/interfaces/tunable/index", "autoapi/lmflow/models/regression_model/index", "autoapi/lmflow/models/text_regression_model/index", "autoapi/lmflow/models/vision2seq_model/index", "autoapi/lmflow/models/vision_encoder/clip_encoder/index", "autoapi/lmflow/models/vision_encoder/index", "autoapi/lmflow/optim/adabelief/index", "autoapi/lmflow/optim/adabound/index", "autoapi/lmflow/optim/adadelta/index", "autoapi/lmflow/optim/adagrad/index", "autoapi/lmflow/optim/adam/index", "autoapi/lmflow/optim/adamax/index", "autoapi/lmflow/optim/adamp/index", "autoapi/lmflow/optim/adamw_schedule_free/index", "autoapi/lmflow/optim/adan/index", "autoapi/lmflow/optim/dummy/index", "autoapi/lmflow/optim/index", "autoapi/lmflow/optim/lamb/index", "autoapi/lmflow/optim/lars/index", "autoapi/lmflow/optim/nadam/index", "autoapi/lmflow/optim/novograd/index", "autoapi/lmflow/optim/optimizers/index", "autoapi/lmflow/optim/radam/index", "autoapi/lmflow/optim/sgd_schedule_free/index", "autoapi/lmflow/optim/sgdp/index", "autoapi/lmflow/optim/sophia/index", "autoapi/lmflow/optim/yogi/index", "autoapi/lmflow/pipeline/auto_pipeline/index", "autoapi/lmflow/pipeline/base_aligner/index", "autoapi/lmflow/pipeline/base_pipeline/index", "autoapi/lmflow/pipeline/base_tuner/index", "autoapi/lmflow/pipeline/dpo_aligner/index", "autoapi/lmflow/pipeline/dpov2_aligner/index", "autoapi/lmflow/pipeline/evaluator/index", "autoapi/lmflow/pipeline/finetuner/index", "autoapi/lmflow/pipeline/index", "autoapi/lmflow/pipeline/inferencer/index", "autoapi/lmflow/pipeline/iterative_dpo_aligner/index", "autoapi/lmflow/pipeline/raft_aligner/index", "autoapi/lmflow/pipeline/rm_inferencer/index", "autoapi/lmflow/pipeline/rm_tuner/index", "autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index", "autoapi/lmflow/pipeline/utils/dpov2_trainer/index", "autoapi/lmflow/pipeline/utils/index", "autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index", "autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index", "autoapi/lmflow/pipeline/utils/peft_trainer/index", "autoapi/lmflow/pipeline/utils/raft_trainer/index", "autoapi/lmflow/pipeline/utils/rm_dataprocessor/index", "autoapi/lmflow/pipeline/utils/rm_trainer/index", "autoapi/lmflow/pipeline/vllm_inferencer/index", "autoapi/lmflow/tokenization/hf_decoder_model/index", "autoapi/lmflow/tokenization/hf_text_regression_model/index", "autoapi/lmflow/tokenization/index", "autoapi/lmflow/utils/common/index", "autoapi/lmflow/utils/constants/index", "autoapi/lmflow/utils/conversation_template/base/index", "autoapi/lmflow/utils/conversation_template/chatglm/index", "autoapi/lmflow/utils/conversation_template/chatml/index", "autoapi/lmflow/utils/conversation_template/deepseek/index", "autoapi/lmflow/utils/conversation_template/gemma/index", "autoapi/lmflow/utils/conversation_template/hymba/index", "autoapi/lmflow/utils/conversation_template/index", "autoapi/lmflow/utils/conversation_template/internlm/index", "autoapi/lmflow/utils/conversation_template/llama/index", "autoapi/lmflow/utils/conversation_template/phi/index", "autoapi/lmflow/utils/conversation_template/qwen/index", "autoapi/lmflow/utils/conversation_template/yi/index", "autoapi/lmflow/utils/conversation_template/zephyr/index", "autoapi/lmflow/utils/data_utils/index", "autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index", "autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index", "autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index", "autoapi/lmflow/utils/flash_attention/index", "autoapi/lmflow/utils/flash_attention/llama_flash_attention/index", "autoapi/lmflow/utils/flash_attention/triton_flash_attention/index", "autoapi/lmflow/utils/index", "autoapi/lmflow/utils/llava_conversation_lib/index", "autoapi/lmflow/utils/model/index", "autoapi/lmflow/utils/multimodal/index", "autoapi/lmflow/utils/position_interpolation/index", "autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index", "autoapi/lmflow/utils/versioning/index", "autoapi/lmflow/version/index", "blogs/benchmark", "blogs/index", "examples/DATASETS", "examples/TASK_GUIDE", "examples/checkpoints", "examples/customize_conversation_template", "examples/finetuning", "examples/index", "examples/medical_finetune", "examples/raft", "examples/reward_modeling", "examples/supported_conversation_template", "index"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1}, "filenames": ["about/authors.md", "about/changelog.md", "about/index.md", "autoapi/index.rst", "autoapi/lmflow/args/index.rst", "autoapi/lmflow/datasets/dataset/index.rst", "autoapi/lmflow/datasets/index.rst", "autoapi/lmflow/datasets/multi_modal_dataset/index.rst", "autoapi/lmflow/index.rst", "autoapi/lmflow/models/auto_model/index.rst", "autoapi/lmflow/models/base_model/index.rst", "autoapi/lmflow/models/decoder_model/index.rst", "autoapi/lmflow/models/encoder_decoder_model/index.rst", "autoapi/lmflow/models/hf_decoder_model/index.rst", "autoapi/lmflow/models/hf_encoder_decoder_model/index.rst", "autoapi/lmflow/models/hf_model_mixin/index.rst", "autoapi/lmflow/models/hf_text_regression_model/index.rst", "autoapi/lmflow/models/index.rst", "autoapi/lmflow/models/interfaces/index.rst", "autoapi/lmflow/models/interfaces/tunable/index.rst", "autoapi/lmflow/models/regression_model/index.rst", "autoapi/lmflow/models/text_regression_model/index.rst", "autoapi/lmflow/models/vision2seq_model/index.rst", "autoapi/lmflow/models/vision_encoder/clip_encoder/index.rst", "autoapi/lmflow/models/vision_encoder/index.rst", "autoapi/lmflow/optim/adabelief/index.rst", "autoapi/lmflow/optim/adabound/index.rst", "autoapi/lmflow/optim/adadelta/index.rst", "autoapi/lmflow/optim/adagrad/index.rst", "autoapi/lmflow/optim/adam/index.rst", "autoapi/lmflow/optim/adamax/index.rst", "autoapi/lmflow/optim/adamp/index.rst", "autoapi/lmflow/optim/adamw_schedule_free/index.rst", "autoapi/lmflow/optim/adan/index.rst", "autoapi/lmflow/optim/dummy/index.rst", "autoapi/lmflow/optim/index.rst", "autoapi/lmflow/optim/lamb/index.rst", "autoapi/lmflow/optim/lars/index.rst", "autoapi/lmflow/optim/nadam/index.rst", "autoapi/lmflow/optim/novograd/index.rst", "autoapi/lmflow/optim/optimizers/index.rst", "autoapi/lmflow/optim/radam/index.rst", "autoapi/lmflow/optim/sgd_schedule_free/index.rst", "autoapi/lmflow/optim/sgdp/index.rst", "autoapi/lmflow/optim/sophia/index.rst", "autoapi/lmflow/optim/yogi/index.rst", "autoapi/lmflow/pipeline/auto_pipeline/index.rst", "autoapi/lmflow/pipeline/base_aligner/index.rst", "autoapi/lmflow/pipeline/base_pipeline/index.rst", "autoapi/lmflow/pipeline/base_tuner/index.rst", "autoapi/lmflow/pipeline/dpo_aligner/index.rst", "autoapi/lmflow/pipeline/dpov2_aligner/index.rst", "autoapi/lmflow/pipeline/evaluator/index.rst", "autoapi/lmflow/pipeline/finetuner/index.rst", "autoapi/lmflow/pipeline/index.rst", "autoapi/lmflow/pipeline/inferencer/index.rst", "autoapi/lmflow/pipeline/iterative_dpo_aligner/index.rst", "autoapi/lmflow/pipeline/raft_aligner/index.rst", "autoapi/lmflow/pipeline/rm_inferencer/index.rst", "autoapi/lmflow/pipeline/rm_tuner/index.rst", "autoapi/lmflow/pipeline/utils/dpov2_dataprocessor/index.rst", "autoapi/lmflow/pipeline/utils/dpov2_trainer/index.rst", "autoapi/lmflow/pipeline/utils/index.rst", "autoapi/lmflow/pipeline/utils/memory_safe_dpov2_align/index.rst", "autoapi/lmflow/pipeline/utils/memory_safe_vllm_inference/index.rst", "autoapi/lmflow/pipeline/utils/peft_trainer/index.rst", "autoapi/lmflow/pipeline/utils/raft_trainer/index.rst", "autoapi/lmflow/pipeline/utils/rm_dataprocessor/index.rst", "autoapi/lmflow/pipeline/utils/rm_trainer/index.rst", "autoapi/lmflow/pipeline/vllm_inferencer/index.rst", "autoapi/lmflow/tokenization/hf_decoder_model/index.rst", "autoapi/lmflow/tokenization/hf_text_regression_model/index.rst", "autoapi/lmflow/tokenization/index.rst", "autoapi/lmflow/utils/common/index.rst", "autoapi/lmflow/utils/constants/index.rst", "autoapi/lmflow/utils/conversation_template/base/index.rst", "autoapi/lmflow/utils/conversation_template/chatglm/index.rst", "autoapi/lmflow/utils/conversation_template/chatml/index.rst", "autoapi/lmflow/utils/conversation_template/deepseek/index.rst", "autoapi/lmflow/utils/conversation_template/gemma/index.rst", "autoapi/lmflow/utils/conversation_template/hymba/index.rst", "autoapi/lmflow/utils/conversation_template/index.rst", "autoapi/lmflow/utils/conversation_template/internlm/index.rst", "autoapi/lmflow/utils/conversation_template/llama/index.rst", "autoapi/lmflow/utils/conversation_template/phi/index.rst", "autoapi/lmflow/utils/conversation_template/qwen/index.rst", "autoapi/lmflow/utils/conversation_template/yi/index.rst", "autoapi/lmflow/utils/conversation_template/zephyr/index.rst", "autoapi/lmflow/utils/data_utils/index.rst", "autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.rst", "autoapi/lmflow/utils/flash_attention/gpt2_flash_attention/index.rst", "autoapi/lmflow/utils/flash_attention/gpt_neo_flash_attention/index.rst", "autoapi/lmflow/utils/flash_attention/index.rst", "autoapi/lmflow/utils/flash_attention/llama_flash_attention/index.rst", "autoapi/lmflow/utils/flash_attention/triton_flash_attention/index.rst", "autoapi/lmflow/utils/index.rst", "autoapi/lmflow/utils/llava_conversation_lib/index.rst", "autoapi/lmflow/utils/model/index.rst", "autoapi/lmflow/utils/multimodal/index.rst", "autoapi/lmflow/utils/position_interpolation/index.rst", "autoapi/lmflow/utils/position_interpolation/llama_rope_scaled_monkey_patch/index.rst", "autoapi/lmflow/utils/versioning/index.rst", "autoapi/lmflow/version/index.rst", "blogs/benchmark.md", "blogs/index.md", "examples/DATASETS.md", "examples/TASK_GUIDE.md", "examples/checkpoints.md", "examples/customize_conversation_template.md", "examples/finetuning.md", "examples/index.md", "examples/medical_finetune.md", "examples/raft.md", "examples/reward_modeling.md", "examples/supported_conversation_template.md", "index.md"], "indexentries": {"__call__() (lmflow.datasets.multi_modal_dataset.datacollatorforsuperviseddataset method)": [[7, "lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset.__call__", false]], "__call__() (lmflow.pipeline.utils.dpov2_dataprocessor.preferencedatacollatorwithpadding method)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.__call__", false]], "__call__() (lmflow.pipeline.utils.rm_dataprocessor.rewarddatacollatorwithpadding method)": [[67, "lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.__call__", false]], "__distributed_inference() (lmflow.pipeline.rm_inferencer.rewardmodelinferencer method)": [[58, "lmflow.pipeline.rm_inferencer.RewardModelInferencer.__distributed_inference", false]], "__filter_args() (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner method)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.__filter_args", false]], "__getitem__() (lmflow.datasets.multi_modal_dataset.custommultimodaldataset method)": [[7, "lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.__getitem__", false]], "__inference() (lmflow.models.hf_decoder_model.hfdecodermodel method)": [[13, "lmflow.models.hf_decoder_model.HFDecoderModel.__inference", false]], "__inference() (lmflow.models.hf_text_regression_model.hftextregressionmodel method)": [[16, "lmflow.models.hf_text_regression_model.HFTextRegressionModel.__inference", false]], "__inference() (lmflow.pipeline.rm_inferencer.rewardmodelinferencer method)": [[58, "lmflow.pipeline.rm_inferencer.RewardModelInferencer.__inference", false]], "__len__() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.__len__", false]], "__len__() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.__len__", false]], "__len__() (lmflow.datasets.multi_modal_dataset.custommultimodaldataset method)": [[7, "lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.__len__", false]], "__model_module_inject() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.__model_module_inject", false]], "__post_init__() (lmflow.args.datasetarguments method)": [[4, "lmflow.args.DatasetArguments.__post_init__", false]], "__post_init__() (lmflow.args.inferencerarguments method)": [[4, "lmflow.args.InferencerArguments.__post_init__", false]], "__post_init__() (lmflow.args.modelarguments method)": [[4, "lmflow.args.ModelArguments.__post_init__", false]], "__post_init__() (lmflow.utils.conversation_template.base.conversationtemplate method)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.__post_init__", false]], "__post_init__() (lmflow.utils.conversation_template.base.emptyformatter method)": [[75, "lmflow.utils.conversation_template.base.EmptyFormatter.__post_init__", false]], "__post_init__() (lmflow.utils.conversation_template.base.stringformatter method)": [[75, "lmflow.utils.conversation_template.base.StringFormatter.__post_init__", false]], "__post_init__() (lmflow.utils.conversation_template.base.templatecomponent method)": [[75, "lmflow.utils.conversation_template.base.TemplateComponent.__post_init__", false]], "__post_init__() (lmflow.utils.conversation_template.conversationtemplate method)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.__post_init__", false]], "__post_process_model_output() (lmflow.pipeline.rm_inferencer.rewardmodelinferencer method)": [[58, "lmflow.pipeline.rm_inferencer.RewardModelInferencer.__post_process_model_output", false]], "__prepare_dtype() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.__prepare_dtype", false]], "__prepare_inputs_for_inference() (lmflow.models.hf_decoder_model.hfdecodermodel method)": [[13, "lmflow.models.hf_decoder_model.HFDecoderModel.__prepare_inputs_for_inference", false]], "__prepare_inputs_for_vllm_inference() (lmflow.models.hf_decoder_model.hfdecodermodel method)": [[13, "lmflow.models.hf_decoder_model.HFDecoderModel.__prepare_inputs_for_vllm_inference", false]], "__prepare_model_config() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_config", false]], "__prepare_model_for_inference() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_inference", false]], "__prepare_model_for_training() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_training", false]], "__prepare_model_for_vllm_inference() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_for_vllm_inference", false]], "__prepare_model_post_process() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.__prepare_model_post_process", false]], "__prepare_peft_config() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.__prepare_peft_config", false]], "__prepare_quant_config() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.__prepare_quant_config", false]], "__prepare_tokenizer() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.__prepare_tokenizer", false]], "__prepare_training_args() (lmflow.pipeline.dpov2_aligner.dpov2aligner method)": [[51, "lmflow.pipeline.dpov2_aligner.DPOv2Aligner.__prepare_training_args", false]], "__repr__() (lmflow.utils.conversation_template.base.templatecomponent method)": [[75, "lmflow.utils.conversation_template.base.TemplateComponent.__repr__", false]], "__setstate__() (lmflow.optim.adabelief.adabelief method)": [[25, "lmflow.optim.adabelief.AdaBelief.__setstate__", false]], "__setstate__() (lmflow.optim.adabound.adabound method)": [[26, "lmflow.optim.adabound.AdaBound.__setstate__", false]], "__setstate__() (lmflow.optim.adamax.adamax method)": [[30, "lmflow.optim.adamax.Adamax.__setstate__", false]], "__setstate__() (lmflow.optim.adan.adan method)": [[33, "lmflow.optim.adan.Adan.__setstate__", false]], "__setstate__() (lmflow.optim.lars.lars method)": [[37, "lmflow.optim.lars.LARS.__setstate__", false]], "__setstate__() (lmflow.optim.nadam.nadam method)": [[38, "lmflow.optim.nadam.NAdam.__setstate__", false]], "__setstate__() (lmflow.optim.novograd.novograd method)": [[39, "lmflow.optim.novograd.NovoGrad.__setstate__", false]], "__setstate__() (lmflow.optim.radam.radam method)": [[41, "lmflow.optim.radam.RAdam.__setstate__", false]], "__setstate__() (lmflow.optim.sophia.sophiag method)": [[44, "lmflow.optim.sophia.SophiaG.__setstate__", false]], "__str__() (lmflow.utils.conversation_template.base.templatecomponent method)": [[75, "lmflow.utils.conversation_template.base.TemplateComponent.__str__", false]], "__version__ (in module lmflow)": [[8, "lmflow.__version__", false]], "__version__ (in module lmflow.version)": [[102, "lmflow.version.__version__", false]], "__vllm_inference() (lmflow.models.hf_decoder_model.hfdecodermodel method)": [[13, "lmflow.models.hf_decoder_model.HFDecoderModel.__vllm_inference", false]], "__vllm_inference() (lmflow.models.hf_text_regression_model.hftextregressionmodel method)": [[16, "lmflow.models.hf_text_regression_model.HFTextRegressionModel.__vllm_inference", false]], "__vllm_inference() (lmflow.pipeline.rm_inferencer.rewardmodelinferencer method)": [[58, "lmflow.pipeline.rm_inferencer.RewardModelInferencer.__vllm_inference", false]], "_activated (lmflow.models.hf_model_mixin.hfmodelmixin attribute)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin._activated", false]], "_add_sm_patterns_to_gitignore() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._add_sm_patterns_to_gitignore", false]], "_align_single_iteration() (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner method)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._align_single_iteration", false]], "_attn() (in module lmflow.utils.flash_attention.gpt_neo_flash_attention)": [[91, "lmflow.utils.flash_attention.gpt_neo_flash_attention._attn", false]], "_bwd_kernel() (in module lmflow.utils.flash_attention.triton_flash_attention)": [[94, "lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel", false]], "_bwd_kernel_one_col_block() (in module lmflow.utils.flash_attention.triton_flash_attention)": [[94, "lmflow.utils.flash_attention.triton_flash_attention._bwd_kernel_one_col_block", false]], "_bwd_preprocess_do_o_dot() (in module lmflow.utils.flash_attention.triton_flash_attention)": [[94, "lmflow.utils.flash_attention.triton_flash_attention._bwd_preprocess_do_o_dot", false]], "_bwd_store_dk_dv() (in module lmflow.utils.flash_attention.triton_flash_attention)": [[94, "lmflow.utils.flash_attention.triton_flash_attention._bwd_store_dk_dv", false]], "_calc_response_lengths() (lmflow.pipeline.dpov2_aligner.dpov2aligner method)": [[51, "lmflow.pipeline.dpov2_aligner.DPOv2Aligner._calc_response_lengths", false]], "_calc_reward_with_length_penalty() (lmflow.pipeline.dpov2_aligner.dpov2aligner method)": [[51, "lmflow.pipeline.dpov2_aligner.DPOv2Aligner._calc_reward_with_length_penalty", false]], "_channel_view() (lmflow.optim.adamp.adamp static method)": [[31, "lmflow.optim.adamp.AdamP._channel_view", false]], "_channel_view() (lmflow.optim.sgdp.sgdp static method)": [[43, "lmflow.optim.sgdp.SGDP._channel_view", false]], "_check_data_format() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset._check_data_format", false]], "_check_data_format() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset._check_data_format", false]], "_check_if_alignable() (lmflow.pipeline.base_aligner.basealigner method)": [[47, "lmflow.pipeline.base_aligner.BaseAligner._check_if_alignable", false]], "_check_if_tunable() (lmflow.pipeline.base_tuner.basetuner method)": [[49, "lmflow.pipeline.base_tuner.BaseTuner._check_if_tunable", false]], "_clean_text() (lmflow.pipeline.raft_aligner.raftaligner method)": [[57, "lmflow.pipeline.raft_aligner.RaftAligner._clean_text", false]], "_cosine_similarity() (lmflow.optim.adamp.adamp static method)": [[31, "lmflow.optim.adamp.AdamP._cosine_similarity", false]], "_cosine_similarity() (lmflow.optim.sgdp.sgdp static method)": [[43, "lmflow.optim.sgdp.SGDP._cosine_similarity", false]], "_discard_sample() (lmflow.pipeline.raft_aligner.raftaligner method)": [[57, "lmflow.pipeline.raft_aligner.RaftAligner._discard_sample", false]], "_distributed_inference() (lmflow.pipeline.vllm_inferencer.vllminferencer method)": [[69, "lmflow.pipeline.vllm_inferencer.VLLMInferencer._distributed_inference", false]], "_do_reward_model_inference() (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner method)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_reward_model_inference", false]], "_do_single_dpo_align() (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner method)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_single_dpo_align", false]], "_do_target_model_inference() (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner method)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._do_target_model_inference", false]], "_encode() (lmflow.utils.conversation_template.base.conversationtemplate method)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate._encode", false]], "_encode() (lmflow.utils.conversation_template.base.conversationtemplatefortool method)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplateForTool._encode", false]], "_encode() (lmflow.utils.conversation_template.conversationtemplate method)": [[81, "lmflow.utils.conversation_template.ConversationTemplate._encode", false]], "_encode() (lmflow.utils.conversation_template.conversationtemplatefortool method)": [[81, "lmflow.utils.conversation_template.ConversationTemplateForTool._encode", false]], "_encode() (lmflow.utils.conversation_template.llama.llama2conversationtemplate method)": [[83, "lmflow.utils.conversation_template.llama.Llama2ConversationTemplate._encode", false]], "_encode() (lmflow.utils.conversation_template.llama.llama2conversationtemplatefortool method)": [[83, "lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool._encode", false]], "_encode() (lmflow.utils.conversation_template.zephyr.zephyrconversationtemplate method)": [[87, "lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate._encode", false]], "_encode_template() (lmflow.utils.conversation_template.base.conversationtemplate method)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate._encode_template", false]], "_encode_template() (lmflow.utils.conversation_template.base.conversationtemplatefortool method)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplateForTool._encode_template", false]], "_encode_template() (lmflow.utils.conversation_template.conversationtemplate method)": [[81, "lmflow.utils.conversation_template.ConversationTemplate._encode_template", false]], "_encode_template() (lmflow.utils.conversation_template.conversationtemplatefortool method)": [[81, "lmflow.utils.conversation_template.ConversationTemplateForTool._encode_template", false]], "_ensure_id_list() (lmflow.utils.conversation_template.base.conversationtemplate method)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate._ensure_id_list", false]], "_ensure_id_list() (lmflow.utils.conversation_template.conversationtemplate method)": [[81, "lmflow.utils.conversation_template.ConversationTemplate._ensure_id_list", false]], "_evaluate_acc_with_accelerator() (lmflow.pipeline.evaluator.evaluator method)": [[52, "lmflow.pipeline.evaluator.Evaluator._evaluate_acc_with_accelerator", false]], "_evaluate_acc_with_deepspeed() (lmflow.pipeline.evaluator.evaluator method)": [[52, "lmflow.pipeline.evaluator.Evaluator._evaluate_acc_with_deepspeed", false]], "_evaluate_nll() (lmflow.pipeline.evaluator.evaluator method)": [[52, "lmflow.pipeline.evaluator.Evaluator._evaluate_nll", false]], "_evaluate_ppl() (lmflow.pipeline.evaluator.evaluator method)": [[52, "lmflow.pipeline.evaluator.Evaluator._evaluate_ppl", false]], "_flash_attn_backward() (in module lmflow.utils.flash_attention.triton_flash_attention)": [[94, "lmflow.utils.flash_attention.triton_flash_attention._flash_attn_backward", false]], "_flash_attn_forward() (in module lmflow.utils.flash_attention.triton_flash_attention)": [[94, "lmflow.utils.flash_attention.triton_flash_attention._flash_attn_forward", false]], "_fwd_kernel() (in module lmflow.utils.flash_attention.triton_flash_attention)": [[94, "lmflow.utils.flash_attention.triton_flash_attention._fwd_kernel", false]], "_gather_and_numpify() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._gather_and_numpify", false]], "_get_batch_dataset_local() (lmflow.pipeline.raft_aligner.raftaligner method)": [[57, "lmflow.pipeline.raft_aligner.RaftAligner._get_batch_dataset_local", false]], "_get_batch_dataset_top() (lmflow.pipeline.raft_aligner.raftaligner method)": [[57, "lmflow.pipeline.raft_aligner.RaftAligner._get_batch_dataset_top", false]], "_get_collator_with_removed_columns() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_collator_with_removed_columns", false]], "_get_eval_sampler() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_eval_sampler", false]], "_get_output_dir() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_output_dir", false]], "_get_train_sampler() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._get_train_sampler", false]], "_hp_search_setup() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._hp_search_setup", false]], "_inference() (lmflow.pipeline.rm_inferencer.rewardmodelinferencer method)": [[58, "lmflow.pipeline.rm_inferencer.RewardModelInferencer._inference", false]], "_inference() (lmflow.pipeline.vllm_inferencer.vllminferencer method)": [[69, "lmflow.pipeline.vllm_inferencer.VLLMInferencer._inference", false]], "_initialize_trainer() (lmflow.pipeline.dpo_aligner.dpoaligner method)": [[50, "lmflow.pipeline.dpo_aligner.DPOAligner._initialize_trainer", false]], "_initialize_trainer() (lmflow.pipeline.raft_aligner.raftaligner method)": [[57, "lmflow.pipeline.raft_aligner.RaftAligner._initialize_trainer", false]], "_inner_training_loop() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._inner_training_loop", false]], "_is_native_cpu_amp_available (in module lmflow.pipeline.utils.raft_trainer)": [[66, "lmflow.pipeline.utils.raft_trainer._is_native_cpu_amp_available", false]], "_is_package_available() (in module lmflow.utils.versioning)": [[101, "lmflow.utils.versioning._is_package_available", false]], "_is_packages_available() (in module lmflow.utils.versioning)": [[101, "lmflow.utils.versioning._is_packages_available", false]], "_issue_warnings_after_load() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._issue_warnings_after_load", false]], "_layer_view() (lmflow.optim.adamp.adamp static method)": [[31, "lmflow.optim.adamp.AdamP._layer_view", false]], "_layer_view() (lmflow.optim.sgdp.sgdp static method)": [[43, "lmflow.optim.sgdp.SGDP._layer_view", false]], "_load_best_model() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_best_model", false]], "_load_dataset() (lmflow.pipeline.dpo_aligner.dpoaligner method)": [[50, "lmflow.pipeline.dpo_aligner.DPOAligner._load_dataset", false]], "_load_dataset() (lmflow.pipeline.raft_aligner.raftaligner method)": [[57, "lmflow.pipeline.raft_aligner.RaftAligner._load_dataset", false]], "_load_from_checkpoint() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_from_checkpoint", false]], "_load_input_dataset() (lmflow.pipeline.raft_aligner.raftaligner method)": [[57, "lmflow.pipeline.raft_aligner.RaftAligner._load_input_dataset", false]], "_load_optimizer_and_scheduler() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_optimizer_and_scheduler", false]], "_load_rng_state() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._load_rng_state", false]], "_loggers_initialized (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._loggers_initialized", false]], "_match() (lmflow.pipeline.evaluator.evaluator method)": [[52, "lmflow.pipeline.evaluator.Evaluator._match", false]], "_maybe_log_save_evaluate() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._maybe_log_save_evaluate", false]], "_memory_tracker (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._memory_tracker", false]], "_move_model_to_device() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._move_model_to_device", false]], "_multi_tensor_adan() (in module lmflow.optim.adan)": [[33, "lmflow.optim.adan._multi_tensor_adan", false]], "_nested_gather() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._nested_gather", false]], "_one_train() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._one_train", false]], "_pad_across_processes() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._pad_across_processes", false]], "_parse_dpo_aligner_args() (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner method)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_dpo_aligner_args", false]], "_parse_reward_model_inference_args() (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner method)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_reward_model_inference_args", false]], "_parse_target_model_inference_args() (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner method)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner._parse_target_model_inference_args", false]], "_prepare_attn_mask() (in module lmflow.utils.flash_attention.bloom_flash_attention)": [[89, "lmflow.utils.flash_attention.bloom_flash_attention._prepare_attn_mask", false]], "_prepare_decoder_attention_mask() (in module lmflow.utils.flash_attention.gpt2_flash_attention)": [[90, "lmflow.utils.flash_attention.gpt2_flash_attention._prepare_decoder_attention_mask", false]], "_prepare_decoder_attention_mask() (in module lmflow.utils.flash_attention.llama_flash_attention)": [[93, "lmflow.utils.flash_attention.llama_flash_attention._prepare_decoder_attention_mask", false]], "_prepare_input() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._prepare_input", false]], "_prepare_inputs() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._prepare_inputs", false]], "_projection() (lmflow.optim.adamp.adamp method)": [[31, "lmflow.optim.adamp.AdamP._projection", false]], "_projection() (lmflow.optim.sgdp.sgdp method)": [[43, "lmflow.optim.sgdp.SGDP._projection", false]], "_push_from_checkpoint() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._push_from_checkpoint", false]], "_remove_unused_columns() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._remove_unused_columns", false]], "_report_to_hp_search() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._report_to_hp_search", false]], "_rotate_checkpoints() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._rotate_checkpoints", false]], "_sampling_paired_idx_from_rewards() (lmflow.pipeline.dpov2_aligner.dpov2aligner method)": [[51, "lmflow.pipeline.dpov2_aligner.DPOv2Aligner._sampling_paired_idx_from_rewards", false]], "_sampling_paired_idx_from_rewards_fast() (lmflow.pipeline.dpov2_aligner.dpov2aligner method)": [[51, "lmflow.pipeline.dpov2_aligner.DPOv2Aligner._sampling_paired_idx_from_rewards_fast", false]], "_save() (lmflow.pipeline.utils.peft_trainer.peftsavingcallback method)": [[65, "lmflow.pipeline.utils.peft_trainer.PeftSavingCallback._save", false]], "_save() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._save", false]], "_save_checkpoint() (lmflow.pipeline.utils.peft_trainer.pefttrainer method)": [[65, "lmflow.pipeline.utils.peft_trainer.PeftTrainer._save_checkpoint", false]], "_save_checkpoint() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._save_checkpoint", false]], "_save_tpu() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._save_tpu", false]], "_set_signature_columns_if_needed() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._set_signature_columns_if_needed", false]], "_signature_columns (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._signature_columns", false]], "_single_tensor_adan() (in module lmflow.optim.adan)": [[33, "lmflow.optim.adan._single_tensor_adan", false]], "_sorted_checkpoints() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._sorted_checkpoints", false]], "_train_batch_size (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._train_batch_size", false]], "_tune_save_checkpoint() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._tune_save_checkpoint", false]], "_wrap_model() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer._wrap_model", false]], "accelerate_config_file (lmflow.args.dpov2alignerarguments attribute)": [[4, "lmflow.args.DPOv2AlignerArguments.accelerate_config_file", false]], "activate_model_for_inference() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.activate_model_for_inference", false]], "adabelief (class in lmflow.optim.adabelief)": [[25, "lmflow.optim.adabelief.AdaBelief", false]], "adabelief (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.ADABELIEF", false]], "adabound (class in lmflow.optim.adabound)": [[26, "lmflow.optim.adabound.AdaBound", false]], "adabound (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.ADABOUND", false]], "adadelta (class in lmflow.optim.adadelta)": [[27, "lmflow.optim.adadelta.Adadelta", false]], "adadelta (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.ADADELTA", false]], "adagrad (class in lmflow.optim.adagrad)": [[28, "lmflow.optim.adagrad.AdaGrad", false]], "adagrad (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.ADAGRAD", false]], "adam (class in lmflow.optim.adam)": [[29, "lmflow.optim.adam.Adam", false]], "adam (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.ADAM", false]], "adam (lmflow.optim.lamb.lamb attribute)": [[36, "lmflow.optim.lamb.Lamb.adam", false]], "adamax (class in lmflow.optim.adamax)": [[30, "lmflow.optim.adamax.Adamax", false]], "adamax (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.ADAMAX", false]], "adamp (class in lmflow.optim.adamp)": [[31, "lmflow.optim.adamp.AdamP", false]], "adamp (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.ADAMP", false]], "adamw_schedule_free (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.ADAMW_SCHEDULE_FREE", false]], "adamwschedulefree (class in lmflow.optim.adamw_schedule_free)": [[32, "lmflow.optim.adamw_schedule_free.AdamWScheduleFree", false]], "adan (class in lmflow.optim.adan)": [[33, "lmflow.optim.adan.Adan", false]], "adan (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.ADAN", false]], "adapt_llava_model_to_lmflow_type() (in module lmflow.utils.multimodal)": [[98, "lmflow.utils.multimodal.adapt_llava_model_to_lmflow_type", false]], "add_callback() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.add_callback", false]], "add_dataclass_attr_prefix() (in module lmflow.utils.common)": [[73, "lmflow.utils.common.add_dataclass_attr_prefix", false]], "add_special_starter() (lmflow.utils.conversation_template.base.conversationtemplate method)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.add_special_starter", false]], "add_special_starter() (lmflow.utils.conversation_template.conversationtemplate method)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.add_special_starter", false]], "add_special_stopper() (lmflow.utils.conversation_template.base.conversationtemplate method)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.add_special_stopper", false]], "add_special_stopper() (lmflow.utils.conversation_template.conversationtemplate method)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.add_special_stopper", false]], "additional_stop_token_ids (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.additional_stop_token_ids", false]], "align() (lmflow.pipeline.base_aligner.basealigner method)": [[47, "lmflow.pipeline.base_aligner.BaseAligner.align", false]], "align() (lmflow.pipeline.dpo_aligner.dpoaligner method)": [[50, "lmflow.pipeline.dpo_aligner.DPOAligner.align", false]], "align() (lmflow.pipeline.dpov2_aligner.dpov2aligner method)": [[51, "lmflow.pipeline.dpov2_aligner.DPOv2Aligner.align", false]], "align() (lmflow.pipeline.dpov2_aligner.memorysafedpov2aligner method)": [[51, "lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.align", false]], "align() (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner method)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.align", false]], "align() (lmflow.pipeline.raft_aligner.raftaligner method)": [[57, "lmflow.pipeline.raft_aligner.RaftAligner.align", false]], "aligner_args (lmflow.pipeline.dpo_aligner.dpoaligner attribute)": [[50, "lmflow.pipeline.dpo_aligner.DPOAligner.aligner_args", false]], "aligner_args (lmflow.pipeline.dpov2_aligner.dpov2aligner attribute)": [[51, "lmflow.pipeline.dpov2_aligner.DPOv2Aligner.aligner_args", false]], "aligner_args (lmflow.pipeline.dpov2_aligner.memorysafedpov2aligner attribute)": [[51, "lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.aligner_args", false]], "aligner_args (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner attribute)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.aligner_args", false]], "aligner_args (lmflow.pipeline.raft_aligner.raftaligner attribute)": [[57, "lmflow.pipeline.raft_aligner.RaftAligner.aligner_args", false]], "aligner_file_path (lmflow.pipeline.dpov2_aligner.memorysafedpov2aligner attribute)": [[51, "lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.aligner_file_path", false]], "answer_extraction() (in module lmflow.utils.data_utils)": [[88, "lmflow.utils.data_utils.answer_extraction", false]], "answer_type (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.answer_type", false]], "append_message() (lmflow.utils.llava_conversation_lib.conversation method)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.append_message", false]], "apply_chat_template (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.apply_chat_template", false]], "arch_type (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.arch_type", false]], "args (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.args", false]], "assistant_formatter (lmflow.utils.conversation_template.base.conversationtemplate attribute)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.assistant_formatter", false]], "assistant_formatter (lmflow.utils.conversation_template.conversationtemplate attribute)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.assistant_formatter", false]], "autoarguments (class in lmflow.args)": [[4, "lmflow.args.AutoArguments", false]], "autocast_smart_context_manager() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.autocast_smart_context_manager", false]], "automodel (class in lmflow.models.auto_model)": [[9, "lmflow.models.auto_model.AutoModel", false]], "autopipeline (class in lmflow.pipeline.auto_pipeline)": [[46, "lmflow.pipeline.auto_pipeline.AutoPipeline", false]], "autoregressive_sampling() (lmflow.pipeline.inferencer.speculativeinferencer method)": [[55, "lmflow.pipeline.inferencer.SpeculativeInferencer.autoregressive_sampling", false]], "backend (lmflow.datasets.dataset attribute)": [[6, "lmflow.datasets.Dataset.backend", false]], "backend (lmflow.datasets.dataset.dataset attribute)": [[5, "lmflow.datasets.dataset.Dataset.backend", false]], "backend_dataset (lmflow.datasets.dataset attribute)": [[6, "lmflow.datasets.Dataset.backend_dataset", false]], "backend_dataset (lmflow.datasets.dataset.dataset attribute)": [[5, "lmflow.datasets.dataset.Dataset.backend_dataset", false]], "backward() (lmflow.utils.flash_attention.triton_flash_attention.flashattnfunc static method)": [[94, "lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc.backward", false]], "backward() (lmflow.utils.flash_attention.triton_flash_attention.flashattnkvpackedfunc static method)": [[94, "lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc.backward", false]], "backward() (lmflow.utils.flash_attention.triton_flash_attention.flashattnqkvpackedfunc static method)": [[94, "lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc.backward", false]], "base_lrs (lmflow.optim.adabound.adabound attribute)": [[26, "lmflow.optim.adabound.AdaBound.base_lrs", false]], "basealigner (class in lmflow.pipeline.base_aligner)": [[47, "lmflow.pipeline.base_aligner.BaseAligner", false]], "basemodel (class in lmflow.models.base_model)": [[10, "lmflow.models.base_model.BaseModel", false]], "basepipeline (class in lmflow.pipeline.base_pipeline)": [[48, "lmflow.pipeline.base_pipeline.BasePipeline", false]], "basetuner (class in lmflow.pipeline.base_tuner)": [[49, "lmflow.pipeline.base_tuner.BaseTuner", false]], "batchlize() (in module lmflow.utils.data_utils)": [[88, "lmflow.utils.data_utils.batchlize", false]], "benchmarkingarguments (class in lmflow.args)": [[4, "lmflow.args.BenchmarkingArguments", false]], "beta (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.beta", false]], "beta (lmflow.args.dpov2alignerarguments attribute)": [[4, "lmflow.args.DPOv2AlignerArguments.beta", false]], "bits (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.bits", false]], "block_size (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.block_size", false]], "block_size (lmflow.pipeline.evaluator.evaluator attribute)": [[52, "lmflow.pipeline.evaluator.Evaluator.block_size", false]], "blocking() (in module lmflow.tokenization.hf_decoder_model)": [[70, "lmflow.tokenization.hf_decoder_model.blocking", false]], "blocking() (in module lmflow.tokenization.hf_text_regression_model)": [[71, "lmflow.tokenization.hf_text_regression_model.blocking", false]], "blocking_paired() (in module lmflow.tokenization.hf_text_regression_model)": [[71, "lmflow.tokenization.hf_text_regression_model.blocking_paired", false]], "blocking_text_to_textlist() (in module lmflow.tokenization.hf_text_regression_model)": [[71, "lmflow.tokenization.hf_text_regression_model.blocking_text_to_textlist", false]], "build_vision_tower() (in module lmflow.models.vision_encoder)": [[24, "lmflow.models.vision_encoder.build_vision_tower", false]], "build_vision_tower() (in module lmflow.models.vision_encoder.clip_encoder)": [[23, "lmflow.models.vision_encoder.clip_encoder.build_vision_tower", false]], "cache_dir (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.cache_dir", false]], "call_model_init() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.call_model_init", false]], "callback_handler (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.callback_handler", false]], "can_return_loss (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.can_return_loss", false]], "chatglm3_template (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.CHATGLM3_TEMPLATE", false]], "chatglm3_template (in module lmflow.utils.conversation_template.chatglm)": [[76, "lmflow.utils.conversation_template.chatglm.CHATGLM3_TEMPLATE", false]], "chatml_template (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.CHATML_TEMPLATE", false]], "chatml_template (in module lmflow.utils.conversation_template.chatml)": [[77, "lmflow.utils.conversation_template.chatml.CHATML_TEMPLATE", false]], "check_homogeneity() (in module lmflow.utils.model)": [[97, "lmflow.utils.model.check_homogeneity", false]], "clamp_value (lmflow.optim.lamb.lamb attribute)": [[36, "lmflow.optim.lamb.Lamb.clamp_value", false]], "clipvisiontower (class in lmflow.models.vision_encoder.clip_encoder)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower", false]], "code_exec() (lmflow.pipeline.inferencer.toolinferencer method)": [[55, "lmflow.pipeline.inferencer.ToolInferencer.code_exec", false]], "collate() (lmflow.pipeline.utils.dpov2_dataprocessor.preferencedatacollatorwithpadding method)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.collate", false]], "collection_strategy (lmflow.args.raftalignerarguments attribute)": [[4, "lmflow.args.RaftAlignerArguments.collection_strategy", false]], "compress_list() (lmflow.pipeline.rm_inferencer.rewardmodelinferencer method)": [[58, "lmflow.pipeline.rm_inferencer.RewardModelInferencer.compress_list", false]], "compute_loss() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_loss", false]], "compute_loss() (lmflow.pipeline.utils.rm_trainer.peftrewardtrainer method)": [[68, "lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer.compute_loss", false]], "compute_loss() (lmflow.pipeline.utils.rm_trainer.rewardtrainer method)": [[68, "lmflow.pipeline.utils.rm_trainer.RewardTrainer.compute_loss", false]], "compute_loss_context_manager() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_loss_context_manager", false]], "compute_metrics (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.compute_metrics", false]], "compute_metrics() (in module lmflow.pipeline.utils.rm_trainer)": [[68, "lmflow.pipeline.utils.rm_trainer.compute_metrics", false]], "condenserotaryembedding (class in lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch)": [[100, "lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding", false]], "config (lmflow.models.vision_encoder.clip_encoder.clipvisiontower property)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.config", false]], "config (lmflow.pipeline.evaluator.evaluator attribute)": [[52, "lmflow.pipeline.evaluator.Evaluator.config", false]], "config (lmflow.pipeline.inferencer.inferencer attribute)": [[55, "lmflow.pipeline.inferencer.Inferencer.config", false]], "config_name (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.config_name", false]], "config_overrides (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.config_overrides", false]], "content (lmflow.utils.conversation_template.base.templatecomponent attribute)": [[75, "lmflow.utils.conversation_template.base.TemplateComponent.content", false]], "control (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.control", false]], "controller_heart_beat_expiration (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.CONTROLLER_HEART_BEAT_EXPIRATION", false]], "conv_llama_2 (in module lmflow.utils.llava_conversation_lib)": [[96, "lmflow.utils.llava_conversation_lib.conv_llama_2", false]], "conv_llava_llama_2 (in module lmflow.utils.llava_conversation_lib)": [[96, "lmflow.utils.llava_conversation_lib.conv_llava_llama_2", false]], "conv_llava_plain (in module lmflow.utils.llava_conversation_lib)": [[96, "lmflow.utils.llava_conversation_lib.conv_llava_plain", false]], "conv_llava_v0 (in module lmflow.utils.llava_conversation_lib)": [[96, "lmflow.utils.llava_conversation_lib.conv_llava_v0", false]], "conv_llava_v0_mmtag (in module lmflow.utils.llava_conversation_lib)": [[96, "lmflow.utils.llava_conversation_lib.conv_llava_v0_mmtag", false]], "conv_llava_v1 (in module lmflow.utils.llava_conversation_lib)": [[96, "lmflow.utils.llava_conversation_lib.conv_llava_v1", false]], "conv_llava_v1_mmtag (in module lmflow.utils.llava_conversation_lib)": [[96, "lmflow.utils.llava_conversation_lib.conv_llava_v1_mmtag", false]], "conv_mpt (in module lmflow.utils.llava_conversation_lib)": [[96, "lmflow.utils.llava_conversation_lib.conv_mpt", false]], "conv_templates (in module lmflow.utils.llava_conversation_lib)": [[96, "lmflow.utils.llava_conversation_lib.conv_templates", false]], "conv_vicuna_v0 (in module lmflow.utils.llava_conversation_lib)": [[96, "lmflow.utils.llava_conversation_lib.conv_vicuna_v0", false]], "conv_vicuna_v1 (in module lmflow.utils.llava_conversation_lib)": [[96, "lmflow.utils.llava_conversation_lib.conv_vicuna_v1", false]], "conversation (class in lmflow.utils.llava_conversation_lib)": [[96, "lmflow.utils.llava_conversation_lib.Conversation", false]], "conversation_dataset_description (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.CONVERSATION_DATASET_DESCRIPTION", false]], "conversation_role_names (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.CONVERSATION_ROLE_NAMES", false]], "conversation_template (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.conversation_template", false]], "conversation_tokenize_function() (in module lmflow.tokenization.hf_decoder_model)": [[70, "lmflow.tokenization.hf_decoder_model.conversation_tokenize_function", false]], "conversation_tokenize_function() (in module lmflow.tokenization.hf_text_regression_model)": [[71, "lmflow.tokenization.hf_text_regression_model.conversation_tokenize_function", false]], "conversationtemplate (class in lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.ConversationTemplate", false]], "conversationtemplate (class in lmflow.utils.conversation_template.base)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate", false]], "conversationtemplatefortool (class in lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.ConversationTemplateForTool", false]], "conversationtemplatefortool (class in lmflow.utils.conversation_template.base)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplateForTool", false]], "convert_to_paired_dataset() (lmflow.pipeline.dpov2_aligner.dpov2aligner method)": [[51, "lmflow.pipeline.dpov2_aligner.DPOv2Aligner.convert_to_paired_dataset", false]], "copy() (lmflow.utils.llava_conversation_lib.conversation method)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.copy", false]], "create_copied_dataclass() (in module lmflow.utils.common)": [[73, "lmflow.utils.common.create_copied_dataclass", false]], "create_customized_optimizer() (lmflow.pipeline.finetuner.finetuner method)": [[53, "lmflow.pipeline.finetuner.Finetuner.create_customized_optimizer", false]], "create_dataloader() (lmflow.pipeline.evaluator.evaluator method)": [[52, "lmflow.pipeline.evaluator.Evaluator.create_dataloader", false]], "create_dataloader() (lmflow.pipeline.inferencer.inferencer method)": [[55, "lmflow.pipeline.inferencer.Inferencer.create_dataloader", false]], "create_from_dict() (lmflow.datasets.dataset class method)": [[6, "lmflow.datasets.Dataset.create_from_dict", false]], "create_from_dict() (lmflow.datasets.dataset.dataset class method)": [[5, "lmflow.datasets.dataset.Dataset.create_from_dict", false]], "create_model_card() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_model_card", false]], "create_optimizer() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_optimizer", false]], "create_optimizer_and_scheduler() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_optimizer_and_scheduler", false]], "create_scheduler() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.create_scheduler", false]], "current_flos (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.current_flos", false]], "custom_model (lmflow.args.vismodelarguments attribute)": [[4, "lmflow.args.VisModelArguments.custom_model", false]], "custom_vision_model (lmflow.args.vismodelarguments attribute)": [[4, "lmflow.args.VisModelArguments.custom_vision_model", false]], "custom_vision_model (lmflow.models.vision2seq_model.customautovision2seqmodel attribute)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.custom_vision_model", false]], "customautovision2seqmodel (class in lmflow.models.vision2seq_model)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel", false]], "customized_cache_dir (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.customized_cache_dir", false]], "customized_optim (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.customized_optim", false]], "customized_optim_args (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.customized_optim_args", false]], "custommultimodaldataset (class in lmflow.datasets.multi_modal_dataset)": [[7, "lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset", false]], "data_args (lmflow.datasets.dataset attribute)": [[6, "lmflow.datasets.Dataset.data_args", false]], "data_args (lmflow.datasets.dataset.dataset attribute)": [[5, "lmflow.datasets.dataset.Dataset.data_args", false]], "data_args (lmflow.datasets.multi_modal_dataset.custommultimodaldataset attribute)": [[7, "lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.data_args", false]], "data_args (lmflow.pipeline.dpo_aligner.dpoaligner attribute)": [[50, "lmflow.pipeline.dpo_aligner.DPOAligner.data_args", false]], "data_args (lmflow.pipeline.dpov2_aligner.dpov2aligner attribute)": [[51, "lmflow.pipeline.dpov2_aligner.DPOv2Aligner.data_args", false]], "data_args (lmflow.pipeline.dpov2_aligner.memorysafedpov2aligner attribute)": [[51, "lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.data_args", false]], "data_args (lmflow.pipeline.evaluator.evaluator attribute)": [[52, "lmflow.pipeline.evaluator.Evaluator.data_args", false]], "data_args (lmflow.pipeline.finetuner.finetuner attribute)": [[53, "lmflow.pipeline.finetuner.Finetuner.data_args", false]], "data_args (lmflow.pipeline.inferencer.inferencer attribute)": [[55, "lmflow.pipeline.inferencer.Inferencer.data_args", false]], "data_args (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner attribute)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.data_args", false]], "data_args (lmflow.pipeline.raft_aligner.raftaligner attribute)": [[57, "lmflow.pipeline.raft_aligner.RaftAligner.data_args", false]], "data_args (lmflow.pipeline.rm_inferencer.rewardmodelinferencer attribute)": [[58, "lmflow.pipeline.rm_inferencer.RewardModelInferencer.data_args", false]], "data_args (lmflow.pipeline.vllm_inferencer.inferencerwithoffloading attribute)": [[69, "lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.data_args", false]], "data_collator (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.data_collator", false]], "data_dict (lmflow.datasets.multi_modal_dataset.custommultimodaldataset attribute)": [[7, "lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.data_dict", false]], "datacollatorforsuperviseddataset (class in lmflow.datasets.multi_modal_dataset)": [[7, "lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset", false]], "dataset (class in lmflow.datasets)": [[6, "lmflow.datasets.Dataset", false]], "dataset (class in lmflow.datasets.dataset)": [[5, "lmflow.datasets.dataset.Dataset", false]], "dataset_config_name (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.dataset_config_name", false]], "dataset_description_map (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.DATASET_DESCRIPTION_MAP", false]], "dataset_name (lmflow.args.benchmarkingarguments attribute)": [[4, "lmflow.args.BenchmarkingArguments.dataset_name", false]], "dataset_name (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.dataset_name", false]], "dataset_path (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.dataset_path", false]], "dataset_path (lmflow.datasets.dataset attribute)": [[6, "lmflow.datasets.Dataset.dataset_path", false]], "dataset_path (lmflow.datasets.dataset.dataset attribute)": [[5, "lmflow.datasets.dataset.Dataset.dataset_path", false]], "dataset_path_list (lmflow.args.iterativealignerarguments attribute)": [[4, "lmflow.args.IterativeAlignerArguments.dataset_path_list", false]], "dataset_types (in module lmflow.datasets.dataset)": [[5, "lmflow.datasets.dataset.DATASET_TYPES", false]], "datasetarguments (class in lmflow.args)": [[4, "lmflow.args.DatasetArguments", false]], "deactivate_model_for_inference() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.deactivate_model_for_inference", false]], "debias (lmflow.optim.lamb.lamb attribute)": [[36, "lmflow.optim.lamb.Lamb.debias", false]], "decode() (lmflow.models.hf_decoder_model.hfdecodermodel method)": [[13, "lmflow.models.hf_decoder_model.HFDecoderModel.decode", false]], "decode() (lmflow.models.hf_encoder_decoder_model.hfencoderdecodermodel method)": [[14, "lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.decode", false]], "decodermodel (class in lmflow.models.decoder_model)": [[11, "lmflow.models.decoder_model.DecoderModel", false]], "deepseek_template (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.DEEPSEEK_TEMPLATE", false]], "deepseek_template (in module lmflow.utils.conversation_template.deepseek)": [[78, "lmflow.utils.conversation_template.deepseek.DEEPSEEK_TEMPLATE", false]], "deepspeed (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.deepspeed", false]], "deepspeed (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.deepspeed", false]], "deepspeed (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.deepspeed", false]], "default_callbacks (in module lmflow.pipeline.utils.raft_trainer)": [[66, "lmflow.pipeline.utils.raft_trainer.DEFAULT_CALLBACKS", false]], "default_conversation (in module lmflow.utils.llava_conversation_lib)": [[96, "lmflow.utils.llava_conversation_lib.default_conversation", false]], "default_im_end_token (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.DEFAULT_IM_END_TOKEN", false]], "default_im_start_token (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.DEFAULT_IM_START_TOKEN", false]], "default_image_patch_token (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.DEFAULT_IMAGE_PATCH_TOKEN", false]], "default_image_token (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.DEFAULT_IMAGE_TOKEN", false]], "default_progress_callback (in module lmflow.pipeline.utils.raft_trainer)": [[66, "id0", false], [66, "lmflow.pipeline.utils.raft_trainer.DEFAULT_PROGRESS_CALLBACK", false]], "degenerated_to_sgd (lmflow.optim.adabelief.adabelief attribute)": [[25, "lmflow.optim.adabelief.AdaBelief.degenerated_to_sgd", false]], "device (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.device", false]], "device (lmflow.models.hf_encoder_decoder_model.hfencoderdecodermodel attribute)": [[14, "lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.device", false]], "device (lmflow.models.hf_model_mixin.hfmodelmixin attribute)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.device", false]], "device (lmflow.models.vision_encoder.clip_encoder.clipvisiontower property)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.device", false]], "dict() (lmflow.utils.llava_conversation_lib.conversation method)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.dict", false]], "disable_group_texts (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.disable_group_texts", false]], "distributed_inference_num_instances (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.distributed_inference_num_instances", false]], "do_dpo_align (lmflow.args.iterativedpoalignerarguments attribute)": [[4, "lmflow.args.IterativeDPOAlignerArguments.do_dpo_align", false]], "do_grad_scaling (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.do_grad_scaling", false]], "do_response_generation (lmflow.args.iterativedpoalignerarguments attribute)": [[4, "lmflow.args.IterativeDPOAlignerArguments.do_response_generation", false]], "do_rope_scaling (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.do_rope_scaling", false]], "do_sample (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.do_sample", false]], "do_scoring (lmflow.args.iterativedpoalignerarguments attribute)": [[4, "lmflow.args.IterativeDPOAlignerArguments.do_scoring", false]], "do_train (lmflow.models.hf_model_mixin.hfmodelmixin attribute)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.do_train", false]], "double_quant (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.double_quant", false]], "dpo_loss() (lmflow.pipeline.utils.dpov2_trainer.dpov2trainer method)": [[61, "lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.dpo_loss", false]], "dpoaligner (class in lmflow.pipeline.dpo_aligner)": [[50, "lmflow.pipeline.dpo_aligner.DPOAligner", false]], "dpoalignerarguments (class in lmflow.args)": [[4, "lmflow.args.DPOAlignerArguments", false]], "dpov2aligner (class in lmflow.pipeline.dpov2_aligner)": [[51, "lmflow.pipeline.dpov2_aligner.DPOv2Aligner", false]], "dpov2alignerarguments (class in lmflow.args)": [[4, "lmflow.args.DPOv2AlignerArguments", false]], "dpov2trainer (class in lmflow.pipeline.utils.dpov2_trainer)": [[61, "lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer", false]], "draft_config (lmflow.pipeline.inferencer.speculativeinferencer attribute)": [[55, "lmflow.pipeline.inferencer.SpeculativeInferencer.draft_config", false]], "draft_model_args (lmflow.pipeline.inferencer.speculativeinferencer attribute)": [[55, "lmflow.pipeline.inferencer.SpeculativeInferencer.draft_model_args", false]], "drop_instances() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.drop_instances", false]], "drop_instances() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.drop_instances", false]], "ds_config (lmflow.models.hf_model_mixin.hfmodelmixin attribute)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.ds_config", false]], "dtype (lmflow.models.vision_encoder.clip_encoder.clipvisiontower property)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.dtype", false]], "dummy (class in lmflow.optim.dummy)": [[34, "lmflow.optim.dummy.Dummy", false]], "dummy (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.DUMMY", false]], "dummy_feature (lmflow.models.vision_encoder.clip_encoder.clipvisiontower property)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.dummy_feature", false]], "empty_no_special_tokens_template (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE", false]], "empty_no_special_tokens_template (in module lmflow.utils.conversation_template.base)": [[75, "lmflow.utils.conversation_template.base.EMPTY_NO_SPECIAL_TOKENS_TEMPLATE", false]], "empty_template (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.EMPTY_TEMPLATE", false]], "empty_template (in module lmflow.utils.conversation_template.base)": [[75, "lmflow.utils.conversation_template.base.EMPTY_TEMPLATE", false]], "emptyformatter (class in lmflow.utils.conversation_template.base)": [[75, "lmflow.utils.conversation_template.base.EmptyFormatter", false]], "enable_decode_inference_result (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.enable_decode_inference_result", false]], "enable_distributed_inference (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.enable_distributed_inference", false]], "encode() (lmflow.models.hf_decoder_model.hfdecodermodel method)": [[13, "lmflow.models.hf_decoder_model.HFDecoderModel.encode", false]], "encode() (lmflow.models.hf_encoder_decoder_model.hfencoderdecodermodel method)": [[14, "lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.encode", false]], "encode_conversation() (lmflow.utils.conversation_template.base.conversationtemplate method)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.encode_conversation", false]], "encode_conversation() (lmflow.utils.conversation_template.base.conversationtemplatefortool method)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplateForTool.encode_conversation", false]], "encode_conversation() (lmflow.utils.conversation_template.conversationtemplate method)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.encode_conversation", false]], "encode_conversation() (lmflow.utils.conversation_template.conversationtemplatefortool method)": [[81, "lmflow.utils.conversation_template.ConversationTemplateForTool.encode_conversation", false]], "encode_conversation() (lmflow.utils.conversation_template.gemma.gemmaconversationtemplate method)": [[79, "lmflow.utils.conversation_template.gemma.GemmaConversationTemplate.encode_conversation", false]], "encode_conversation() (lmflow.utils.conversation_template.hymba.hymbaconversationtemplate method)": [[80, "lmflow.utils.conversation_template.hymba.HymbaConversationTemplate.encode_conversation", false]], "encode_images() (lmflow.models.vision_encoder.clip_encoder.clipvisiontower method)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.encode_images", false]], "encoderdecodermodel (class in lmflow.models.encoder_decoder_model)": [[12, "lmflow.models.encoder_decoder_model.EncoderDecoderModel", false]], "eos_padding (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.eos_padding", false]], "eos_token_id (lmflow.pipeline.vllm_inferencer.inferencerwithoffloading attribute)": [[69, "lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.eos_token_id", false]], "eval() (lmflow.optim.adamw_schedule_free.adamwschedulefree method)": [[32, "lmflow.optim.adamw_schedule_free.AdamWScheduleFree.eval", false]], "eval() (lmflow.optim.sgd_schedule_free.sgdschedulefree method)": [[42, "lmflow.optim.sgd_schedule_free.SGDScheduleFree.eval", false]], "eval_dataset (lmflow.pipeline.dpo_aligner.dpoaligner attribute)": [[50, "lmflow.pipeline.dpo_aligner.DPOAligner.eval_dataset", false]], "eval_dataset (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.eval_dataset", false]], "eval_dataset_path (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.eval_dataset_path", false]], "eval_dataset_path (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.eval_dataset_path", false]], "eval_steps (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.eval_steps", false]], "evaluate() (lmflow.pipeline.evaluator.evaluator method)": [[52, "lmflow.pipeline.evaluator.Evaluator.evaluate", false]], "evaluate() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.evaluate", false]], "evaluate_block_size (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.evaluate_block_size", false]], "evaluation_loop() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.evaluation_loop", false]], "evaluator (class in lmflow.pipeline.evaluator)": [[52, "lmflow.pipeline.evaluator.Evaluator", false]], "evaluator_args (lmflow.pipeline.evaluator.evaluator attribute)": [[52, "lmflow.pipeline.evaluator.Evaluator.evaluator_args", false]], "evaluatorarguments (class in lmflow.args)": [[4, "lmflow.args.EvaluatorArguments", false]], "feature_select() (lmflow.models.vision_encoder.clip_encoder.clipvisiontower method)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.feature_select", false]], "finetune_part (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.finetune_part", false]], "finetuner (class in lmflow.pipeline.finetuner)": [[53, "lmflow.pipeline.finetuner.Finetuner", false]], "finetuner_args (lmflow.pipeline.finetuner.finetuner attribute)": [[53, "lmflow.pipeline.finetuner.Finetuner.finetuner_args", false]], "finetunerarguments (class in lmflow.args)": [[4, "lmflow.args.FinetunerArguments", false]], "fixed_decay (lmflow.optim.adabelief.adabelief attribute)": [[25, "lmflow.optim.adabelief.AdaBelief.fixed_decay", false]], "flash_attn_func (in module lmflow.utils.flash_attention.triton_flash_attention)": [[94, "lmflow.utils.flash_attention.triton_flash_attention.flash_attn_func", false]], "flash_attn_kvpacked_func (in module lmflow.utils.flash_attention.triton_flash_attention)": [[94, "lmflow.utils.flash_attention.triton_flash_attention.flash_attn_kvpacked_func", false]], "flash_attn_qkvpacked_func (in module lmflow.utils.flash_attention.triton_flash_attention)": [[94, "lmflow.utils.flash_attention.triton_flash_attention.flash_attn_qkvpacked_func", false]], "flashattnfunc (class in lmflow.utils.flash_attention.triton_flash_attention)": [[94, "lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc", false]], "flashattnkvpackedfunc (class in lmflow.utils.flash_attention.triton_flash_attention)": [[94, "lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc", false]], "flashattnqkvpackedfunc (class in lmflow.utils.flash_attention.triton_flash_attention)": [[94, "lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc", false]], "flatten_list() (lmflow.pipeline.rm_inferencer.rewardmodelinferencer method)": [[58, "lmflow.pipeline.rm_inferencer.RewardModelInferencer.flatten_list", false]], "float_only_dataset_description (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.FLOAT_ONLY_DATASET_DESCRIPTION", false]], "floating_point_ops() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.floating_point_ops", false]], "force_system (lmflow.utils.conversation_template.base.conversationtemplate attribute)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.force_system", false]], "force_system (lmflow.utils.conversation_template.conversationtemplate attribute)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.force_system", false]], "format() (lmflow.utils.conversation_template.base.emptyformatter method)": [[75, "lmflow.utils.conversation_template.base.EmptyFormatter.format", false]], "format() (lmflow.utils.conversation_template.base.formatter method)": [[75, "lmflow.utils.conversation_template.base.Formatter.format", false]], "format() (lmflow.utils.conversation_template.base.listformatter method)": [[75, "lmflow.utils.conversation_template.base.ListFormatter.format", false]], "format() (lmflow.utils.conversation_template.base.stringformatter method)": [[75, "lmflow.utils.conversation_template.base.StringFormatter.format", false]], "formatter (class in lmflow.utils.conversation_template.base)": [[75, "lmflow.utils.conversation_template.base.Formatter", false]], "forward() (in module lmflow.utils.flash_attention.bloom_flash_attention)": [[89, "lmflow.utils.flash_attention.bloom_flash_attention.forward", false]], "forward() (in module lmflow.utils.flash_attention.gpt2_flash_attention)": [[90, "lmflow.utils.flash_attention.gpt2_flash_attention.forward", false]], "forward() (in module lmflow.utils.flash_attention.gpt_neo_flash_attention)": [[91, "lmflow.utils.flash_attention.gpt_neo_flash_attention.forward", false]], "forward() (in module lmflow.utils.flash_attention.llama_flash_attention)": [[93, "lmflow.utils.flash_attention.llama_flash_attention.forward", false]], "forward() (lmflow.models.vision2seq_model.customautovision2seqmodel method)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.forward", false]], "forward() (lmflow.models.vision_encoder.clip_encoder.clipvisiontower method)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.forward", false]], "forward() (lmflow.utils.flash_attention.triton_flash_attention.flashattnfunc static method)": [[94, "lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc.forward", false]], "forward() (lmflow.utils.flash_attention.triton_flash_attention.flashattnkvpackedfunc static method)": [[94, "lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc.forward", false]], "forward() (lmflow.utils.flash_attention.triton_flash_attention.flashattnqkvpackedfunc static method)": [[94, "lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc.forward", false]], "forward() (lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.condenserotaryembedding method)": [[100, "lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.forward", false]], "from_dict() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.from_dict", false]], "from_dict() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.from_dict", false]], "fsdp (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.fsdp", false]], "function_formatter (lmflow.utils.conversation_template.base.conversationtemplate attribute)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.function_formatter", false]], "function_formatter (lmflow.utils.conversation_template.conversationtemplate attribute)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.function_formatter", false]], "gemma_template (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.GEMMA_TEMPLATE", false]], "gemma_template (in module lmflow.utils.conversation_template.gemma)": [[79, "lmflow.utils.conversation_template.gemma.GEMMA_TEMPLATE", false]], "gemmaconversationtemplate (class in lmflow.utils.conversation_template.gemma)": [[79, "lmflow.utils.conversation_template.gemma.GemmaConversationTemplate", false]], "generate() (lmflow.models.vision2seq_model.customautovision2seqmodel method)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.generate", false]], "get_backend() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.get_backend", false]], "get_backend() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.get_backend", false]], "get_backend_dataset() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.get_backend_dataset", false]], "get_backend_dataset() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.get_backend_dataset", false]], "get_backend_model() (lmflow.models.hf_encoder_decoder_model.hfencoderdecodermodel method)": [[14, "lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_backend_model", false]], "get_backend_model() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.get_backend_model", false]], "get_backend_model() (lmflow.models.vision2seq_model.customautovision2seqmodel method)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.get_backend_model", false]], "get_batch_loss_metrics() (lmflow.pipeline.utils.dpov2_trainer.dpov2trainer method)": [[61, "lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.get_batch_loss_metrics", false]], "get_batch_metrics() (lmflow.pipeline.utils.dpov2_trainer.dpov2trainer method)": [[61, "lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.get_batch_metrics", false]], "get_data_args() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.get_data_args", false]], "get_data_args() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.get_data_args", false]], "get_eval_dataloader() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_eval_dataloader", false]], "get_fingerprint() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.get_fingerprint", false]], "get_fingerprint() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.get_fingerprint", false]], "get_images() (lmflow.utils.llava_conversation_lib.conversation method)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.get_images", false]], "get_max_length() (lmflow.models.hf_encoder_decoder_model.hfencoderdecodermodel method)": [[14, "lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_max_length", false]], "get_max_length() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.get_max_length", false]], "get_model() (lmflow.models.auto_model.automodel class method)": [[9, "lmflow.models.auto_model.AutoModel.get_model", false]], "get_optimizer_cls_and_kwargs() (lmflow.pipeline.utils.raft_trainer.rafttrainer static method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_optimizer_cls_and_kwargs", false]], "get_paired_dataset() (in module lmflow.pipeline.dpo_aligner)": [[50, "lmflow.pipeline.dpo_aligner.get_paired_dataset", false]], "get_peft_without_qlora() (lmflow.models.hf_decoder_model.hfdecodermodel method)": [[13, "lmflow.models.hf_decoder_model.HFDecoderModel.get_peft_without_qlora", false]], "get_pipeline() (lmflow.pipeline.auto_pipeline.autopipeline class method)": [[46, "lmflow.pipeline.auto_pipeline.AutoPipeline.get_pipeline", false]], "get_pipeline_args_class() (lmflow.args.autoarguments method)": [[4, "lmflow.args.AutoArguments.get_pipeline_args_class", false]], "get_prompt() (lmflow.utils.llava_conversation_lib.conversation method)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.get_prompt", false]], "get_python_version() (in module lmflow.utils.versioning)": [[101, "lmflow.utils.versioning.get_python_version", false]], "get_test_dataloader() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_test_dataloader", false]], "get_tokenizer() (lmflow.models.hf_encoder_decoder_model.hfencoderdecodermodel method)": [[14, "lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.get_tokenizer", false]], "get_tokenizer() (lmflow.models.hf_model_mixin.hfmodelmixin method)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.get_tokenizer", false]], "get_tokenizer() (lmflow.models.vision2seq_model.customautovision2seqmodel method)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.get_tokenizer", false]], "get_train_dataloader() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.get_train_dataloader", false]], "get_type() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.get_type", false]], "get_type() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.get_type", false]], "gradient_accumulation_steps (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.gradient_accumulation_steps", false]], "gradient_checkpointing (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.gradient_checkpointing", false]], "gradient_checkpointing_use_reentrant (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.gradient_checkpointing_use_reentrant", false]], "group_text() (lmflow.pipeline.finetuner.finetuner method)": [[53, "lmflow.pipeline.finetuner.Finetuner.group_text", false]], "group_texts_batch_size (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.group_texts_batch_size", false]], "has_placeholder() (lmflow.utils.conversation_template.base.formatter method)": [[75, "lmflow.utils.conversation_template.base.Formatter.has_placeholder", false]], "hf_auto_model (lmflow.models.hf_model_mixin.hfmodelmixin attribute)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.hf_auto_model", false]], "hf_automodel_mapping (in module lmflow.models.hf_model_mixin)": [[15, "lmflow.models.hf_model_mixin.HF_AUTOMODEL_MAPPING", false]], "hf_automodel_type (in module lmflow.models.hf_model_mixin)": [[15, "lmflow.models.hf_model_mixin.HF_AUTOMODEL_TYPE", false]], "hf_dataset_sanity_check() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.hf_dataset_sanity_check", false]], "hf_dataset_sanity_check() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.hf_dataset_sanity_check", false]], "hf_model_config (lmflow.models.hf_model_mixin.hfmodelmixin attribute)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.hf_model_config", false]], "hfdecodermodel (class in lmflow.models.hf_decoder_model)": [[13, "lmflow.models.hf_decoder_model.HFDecoderModel", false]], "hfencoderdecodermodel (class in lmflow.models.hf_encoder_decoder_model)": [[14, "lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel", false]], "hfmodelmixin (class in lmflow.models.hf_model_mixin)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin", false]], "hftextregressionmodel (class in lmflow.models.hf_text_regression_model)": [[16, "lmflow.models.hf_text_regression_model.HFTextRegressionModel", false]], "hidden_size (lmflow.models.vision2seq_model.customautovision2seqmodel attribute)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.hidden_size", false]], "hidden_size (lmflow.models.vision_encoder.clip_encoder.clipvisiontower property)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.hidden_size", false]], "hp_name (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.hp_name", false]], "hp_search_backend (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.hp_search_backend", false]], "hymba_template (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.HYMBA_TEMPLATE", false]], "hymba_template (in module lmflow.utils.conversation_template.hymba)": [[80, "lmflow.utils.conversation_template.hymba.HYMBA_TEMPLATE", false]], "hymbaconversationtemplate (class in lmflow.utils.conversation_template.hymba)": [[80, "lmflow.utils.conversation_template.hymba.HymbaConversationTemplate", false]], "hyperparameter_search() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.hyperparameter_search", false]], "ignore_bias_buffers (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.ignore_bias_buffers", false]], "ignore_index (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.IGNORE_INDEX", false]], "image_aspect_ratio (lmflow.args.multimodaldatasetarguments attribute)": [[4, "lmflow.args.MultiModalDatasetArguments.image_aspect_ratio", false]], "image_encoder_name_or_path (lmflow.args.vismodelarguments attribute)": [[4, "lmflow.args.VisModelArguments.image_encoder_name_or_path", false]], "image_folder (lmflow.args.multimodaldatasetarguments attribute)": [[4, "lmflow.args.MultiModalDatasetArguments.image_folder", false]], "image_folder (lmflow.datasets.multi_modal_dataset.custommultimodaldataset attribute)": [[7, "lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.image_folder", false]], "image_token_index (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.IMAGE_TOKEN_INDEX", false]], "inf (lmflow.pipeline.raft_aligner.raftaligner attribute)": [[57, "lmflow.pipeline.raft_aligner.RaftAligner.INF", false]], "inference() (lmflow.models.hf_decoder_model.hfdecodermodel method)": [[13, "lmflow.models.hf_decoder_model.HFDecoderModel.inference", false]], "inference() (lmflow.models.hf_encoder_decoder_model.hfencoderdecodermodel method)": [[14, "lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.inference", false]], "inference() (lmflow.models.hf_text_regression_model.hftextregressionmodel method)": [[16, "lmflow.models.hf_text_regression_model.HFTextRegressionModel.inference", false]], "inference() (lmflow.models.text_regression_model.textregressionmodel method)": [[21, "lmflow.models.text_regression_model.TextRegressionModel.inference", false]], "inference() (lmflow.pipeline.inferencer.inferencer method)": [[55, "lmflow.pipeline.inferencer.Inferencer.inference", false]], "inference() (lmflow.pipeline.inferencer.speculativeinferencer method)": [[55, "lmflow.pipeline.inferencer.SpeculativeInferencer.inference", false]], "inference() (lmflow.pipeline.inferencer.toolinferencer method)": [[55, "lmflow.pipeline.inferencer.ToolInferencer.inference", false]], "inference() (lmflow.pipeline.rm_inferencer.rewardmodelinferencer method)": [[58, "lmflow.pipeline.rm_inferencer.RewardModelInferencer.inference", false]], "inference() (lmflow.pipeline.vllm_inferencer.inferencerwithoffloading method)": [[69, "lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.inference", false]], "inference() (lmflow.pipeline.vllm_inferencer.memorysafevllminferencer method)": [[69, "lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer.inference", false]], "inference() (lmflow.pipeline.vllm_inferencer.vllminferencer method)": [[69, "lmflow.pipeline.vllm_inferencer.VLLMInferencer.inference", false]], "inference_batch_size (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.inference_batch_size", false]], "inference_batch_size_per_device (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.inference_batch_size_per_device", false]], "inference_batch_size_per_device (lmflow.args.raftalignerarguments attribute)": [[4, "lmflow.args.RaftAlignerArguments.inference_batch_size_per_device", false]], "inference_func (lmflow.models.text_regression_model.textregressionmodel attribute)": [[21, "lmflow.models.text_regression_model.TextRegressionModel.inference_func", false]], "inferencer (class in lmflow.pipeline.inferencer)": [[55, "lmflow.pipeline.inferencer.Inferencer", false]], "inferencer_args (lmflow.pipeline.inferencer.inferencer attribute)": [[55, "lmflow.pipeline.inferencer.Inferencer.inferencer_args", false]], "inferencer_args (lmflow.pipeline.rm_inferencer.rewardmodelinferencer attribute)": [[58, "lmflow.pipeline.rm_inferencer.RewardModelInferencer.inferencer_args", false]], "inferencer_args (lmflow.pipeline.vllm_inferencer.inferencerwithoffloading attribute)": [[69, "lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.inferencer_args", false]], "inferencer_file_path (lmflow.pipeline.vllm_inferencer.memorysafevllminferencer attribute)": [[69, "lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer.inferencer_file_path", false]], "inferencerarguments (class in lmflow.args)": [[4, "lmflow.args.InferencerArguments", false]], "inferencerwithoffloading (class in lmflow.pipeline.vllm_inferencer)": [[69, "lmflow.pipeline.vllm_inferencer.InferencerWithOffloading", false]], "init_git_repo() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.init_git_repo", false]], "init_to_zero() (in module lmflow.utils.flash_attention.triton_flash_attention)": [[94, "lmflow.utils.flash_attention.triton_flash_attention.init_to_zero", false]], "initial_iter_idx (lmflow.args.iterativealignerarguments attribute)": [[4, "lmflow.args.IterativeAlignerArguments.initial_iter_idx", false]], "input (lmflow.utils.data_utils.rewardmodelinferenceresultwithinput attribute)": [[88, "lmflow.utils.data_utils.RewardModelInferenceResultWithInput.input", false]], "input (lmflow.utils.data_utils.vllminferenceresultwithinput attribute)": [[88, "lmflow.utils.data_utils.VLLMInferenceResultWithInput.input", false]], "instance_fields_map (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.INSTANCE_FIELDS_MAP", false]], "internal_version (in module lmflow)": [[8, "lmflow.internal_version", false]], "internlm2_template (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.INTERNLM2_TEMPLATE", false]], "internlm2_template (in module lmflow.utils.conversation_template.internlm)": [[82, "lmflow.utils.conversation_template.internlm.INTERNLM2_TEMPLATE", false]], "ipex_optimize_model() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.ipex_optimize_model", false]], "is_custom_dataset (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.is_custom_dataset", false]], "is_encoder_decoder (lmflow.pipeline.utils.dpov2_dataprocessor.preferencedatacollatorwithpadding attribute)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.is_encoder_decoder", false]], "is_flash_attn_available() (in module lmflow.utils.versioning)": [[101, "lmflow.utils.versioning.is_flash_attn_available", false]], "is_flask_available() (in module lmflow.utils.versioning)": [[101, "lmflow.utils.versioning.is_flask_available", false]], "is_gradio_available() (in module lmflow.utils.versioning)": [[101, "lmflow.utils.versioning.is_gradio_available", false]], "is_in_train (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_in_train", false]], "is_loaded (lmflow.models.vision_encoder.clip_encoder.clipvisiontower attribute)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.is_loaded", false]], "is_local_process_zero() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_local_process_zero", false]], "is_multimodal (lmflow.args.multimodaldatasetarguments attribute)": [[4, "lmflow.args.MultiModalDatasetArguments.is_multimodal", false]], "is_multimodal_available() (in module lmflow.datasets)": [[6, "lmflow.datasets.is_multimodal_available", false]], "is_multimodal_available() (in module lmflow.utils.versioning)": [[101, "lmflow.utils.versioning.is_multimodal_available", false]], "is_package_version_at_least() (in module lmflow.utils.versioning)": [[101, "lmflow.utils.versioning.is_package_version_at_least", false]], "is_ray_available() (in module lmflow.utils.versioning)": [[101, "lmflow.utils.versioning.is_ray_available", false]], "is_sagemaker_mp_post_1_10 (in module lmflow.pipeline.utils.raft_trainer)": [[66, "lmflow.pipeline.utils.raft_trainer.IS_SAGEMAKER_MP_POST_1_10", false]], "is_torch_greater_or_equal_than_1_10 (in module lmflow.pipeline.utils.raft_trainer)": [[66, "lmflow.pipeline.utils.raft_trainer.is_torch_greater_or_equal_than_1_10", false]], "is_torch_less_than_1_11 (in module lmflow.pipeline.utils.raft_trainer)": [[66, "lmflow.pipeline.utils.raft_trainer.is_torch_less_than_1_11", false]], "is_trl_available() (in module lmflow.utils.versioning)": [[101, "lmflow.utils.versioning.is_trl_available", false]], "is_vllm_available() (in module lmflow.utils.versioning)": [[101, "lmflow.utils.versioning.is_vllm_available", false]], "is_world_process_zero() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.is_world_process_zero", false]], "iterativealignerarguments (class in lmflow.args)": [[4, "lmflow.args.IterativeAlignerArguments", false]], "iterativedpoaligner (class in lmflow.pipeline.iterative_dpo_aligner)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner", false]], "iterativedpoalignerarguments (class in lmflow.args)": [[4, "lmflow.args.IterativeDPOAlignerArguments", false]], "keep_linebreaks (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.keep_linebreaks", false]], "key_instances (in module lmflow.datasets.dataset)": [[5, "lmflow.datasets.dataset.KEY_INSTANCES", false]], "key_score (in module lmflow.datasets.dataset)": [[5, "lmflow.datasets.dataset.KEY_SCORE", false]], "key_type (in module lmflow.datasets.dataset)": [[5, "lmflow.datasets.dataset.KEY_TYPE", false]], "label_names (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.label_names", false]], "label_pad_token_id (lmflow.pipeline.utils.dpov2_dataprocessor.preferencedatacollatorwithpadding attribute)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.label_pad_token_id", false]], "lamb (class in lmflow.optim.lamb)": [[36, "lmflow.optim.lamb.Lamb", false]], "lamb (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.LAMB", false]], "language_model (lmflow.models.vision2seq_model.customautovision2seqmodel attribute)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.language_model", false]], "language_model_from_pretrained() (lmflow.models.vision2seq_model.customautovision2seqmodel method)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.language_model_from_pretrained", false]], "lars (class in lmflow.optim.lars)": [[37, "lmflow.optim.lars.LARS", false]], "lars (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.LARS", false]], "last_checkpoint (lmflow.pipeline.finetuner.finetuner attribute)": [[53, "lmflow.pipeline.finetuner.Finetuner.last_checkpoint", false]], "learning_rate (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.learning_rate", false]], "len_penalty (lmflow.pipeline.utils.dpov2_trainer.dpov2trainer attribute)": [[61, "lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.len_penalty", false]], "length_penalty (lmflow.args.dpov2alignerarguments attribute)": [[4, "lmflow.args.DPOv2AlignerArguments.length_penalty", false]], "lisa_activated_layers (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.lisa_activated_layers", false]], "lisa_interval_steps (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.lisa_interval_steps", false]], "lisa_layers_attribute (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.lisa_layers_attribute", false]], "listformatter (class in lmflow.utils.conversation_template.base)": [[75, "lmflow.utils.conversation_template.base.ListFormatter", false]], "llama2_template (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.LLAMA2_TEMPLATE", false]], "llama2_template (in module lmflow.utils.conversation_template.llama)": [[83, "lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE", false]], "llama2_template_for_tool (in module lmflow.utils.conversation_template.llama)": [[83, "lmflow.utils.conversation_template.llama.LLAMA2_TEMPLATE_FOR_TOOL", false]], "llama2conversationtemplate (class in lmflow.utils.conversation_template.llama)": [[83, "lmflow.utils.conversation_template.llama.Llama2ConversationTemplate", false]], "llama2conversationtemplatefortool (class in lmflow.utils.conversation_template.llama)": [[83, "lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool", false]], "llama3_template (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.LLAMA3_TEMPLATE", false]], "llama3_template (in module lmflow.utils.conversation_template.llama)": [[83, "lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE", false]], "llama3_template_for_tool (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.LLAMA3_TEMPLATE_FOR_TOOL", false]], "llama3_template_for_tool (in module lmflow.utils.conversation_template.llama)": [[83, "lmflow.utils.conversation_template.llama.LLAMA3_TEMPLATE_FOR_TOOL", false]], "llama_2 (lmflow.utils.llava_conversation_lib.separatorstyle attribute)": [[96, "lmflow.utils.llava_conversation_lib.SeparatorStyle.LLAMA_2", false]], "llava_loading (lmflow.args.vismodelarguments attribute)": [[4, "lmflow.args.VisModelArguments.llava_loading", false]], "llava_pretrain_model_path (lmflow.args.vismodelarguments attribute)": [[4, "lmflow.args.VisModelArguments.llava_pretrain_model_path", false]], "llm_model_name_or_path (lmflow.args.vismodelarguments attribute)": [[4, "lmflow.args.VisModelArguments.llm_model_name_or_path", false]], "lm_evaluation_metric (lmflow.args.benchmarkingarguments attribute)": [[4, "lmflow.args.BenchmarkingArguments.lm_evaluation_metric", false]], "lmflow": [[8, "module-lmflow", false]], "lmflow.args": [[4, "module-lmflow.args", false]], "lmflow.datasets": [[6, "module-lmflow.datasets", false]], "lmflow.datasets.dataset": [[5, "module-lmflow.datasets.dataset", false]], "lmflow.datasets.multi_modal_dataset": [[7, "module-lmflow.datasets.multi_modal_dataset", false]], "lmflow.models": [[17, "module-lmflow.models", false]], "lmflow.models.auto_model": [[9, "module-lmflow.models.auto_model", false]], "lmflow.models.base_model": [[10, "module-lmflow.models.base_model", false]], "lmflow.models.decoder_model": [[11, "module-lmflow.models.decoder_model", false]], "lmflow.models.encoder_decoder_model": [[12, "module-lmflow.models.encoder_decoder_model", false]], "lmflow.models.hf_decoder_model": [[13, "module-lmflow.models.hf_decoder_model", false]], "lmflow.models.hf_encoder_decoder_model": [[14, "module-lmflow.models.hf_encoder_decoder_model", false]], "lmflow.models.hf_model_mixin": [[15, "module-lmflow.models.hf_model_mixin", false]], "lmflow.models.hf_text_regression_model": [[16, "module-lmflow.models.hf_text_regression_model", false]], "lmflow.models.interfaces": [[18, "module-lmflow.models.interfaces", false]], "lmflow.models.interfaces.tunable": [[19, "module-lmflow.models.interfaces.tunable", false]], "lmflow.models.regression_model": [[20, "module-lmflow.models.regression_model", false]], "lmflow.models.text_regression_model": [[21, "module-lmflow.models.text_regression_model", false]], "lmflow.models.vision2seq_model": [[22, "module-lmflow.models.vision2seq_model", false]], "lmflow.models.vision_encoder": [[24, "module-lmflow.models.vision_encoder", false]], "lmflow.models.vision_encoder.clip_encoder": [[23, "module-lmflow.models.vision_encoder.clip_encoder", false]], "lmflow.optim": [[35, "module-lmflow.optim", false]], "lmflow.optim.adabelief": [[25, "module-lmflow.optim.adabelief", false]], "lmflow.optim.adabound": [[26, "module-lmflow.optim.adabound", false]], "lmflow.optim.adadelta": [[27, "module-lmflow.optim.adadelta", false]], "lmflow.optim.adagrad": [[28, "module-lmflow.optim.adagrad", false]], "lmflow.optim.adam": [[29, "module-lmflow.optim.adam", false]], "lmflow.optim.adamax": [[30, "module-lmflow.optim.adamax", false]], "lmflow.optim.adamp": [[31, "module-lmflow.optim.adamp", false]], "lmflow.optim.adamw_schedule_free": [[32, "module-lmflow.optim.adamw_schedule_free", false]], "lmflow.optim.adan": [[33, "module-lmflow.optim.adan", false]], "lmflow.optim.dummy": [[34, "module-lmflow.optim.dummy", false]], "lmflow.optim.lamb": [[36, "module-lmflow.optim.lamb", false]], "lmflow.optim.lars": [[37, "module-lmflow.optim.lars", false]], "lmflow.optim.nadam": [[38, "module-lmflow.optim.nadam", false]], "lmflow.optim.novograd": [[39, "module-lmflow.optim.novograd", false]], "lmflow.optim.optimizers": [[40, "module-lmflow.optim.optimizers", false]], "lmflow.optim.radam": [[41, "module-lmflow.optim.radam", false]], "lmflow.optim.sgd_schedule_free": [[42, "module-lmflow.optim.sgd_schedule_free", false]], "lmflow.optim.sgdp": [[43, "module-lmflow.optim.sgdp", false]], "lmflow.optim.sophia": [[44, "module-lmflow.optim.sophia", false]], "lmflow.optim.yogi": [[45, "module-lmflow.optim.yogi", false]], "lmflow.pipeline": [[54, "module-lmflow.pipeline", false]], "lmflow.pipeline.auto_pipeline": [[46, "module-lmflow.pipeline.auto_pipeline", false]], "lmflow.pipeline.base_aligner": [[47, "module-lmflow.pipeline.base_aligner", false]], "lmflow.pipeline.base_pipeline": [[48, "module-lmflow.pipeline.base_pipeline", false]], "lmflow.pipeline.base_tuner": [[49, "module-lmflow.pipeline.base_tuner", false]], "lmflow.pipeline.dpo_aligner": [[50, "module-lmflow.pipeline.dpo_aligner", false]], "lmflow.pipeline.dpov2_aligner": [[51, "module-lmflow.pipeline.dpov2_aligner", false]], "lmflow.pipeline.evaluator": [[52, "module-lmflow.pipeline.evaluator", false]], "lmflow.pipeline.finetuner": [[53, "module-lmflow.pipeline.finetuner", false]], "lmflow.pipeline.inferencer": [[55, "module-lmflow.pipeline.inferencer", false]], "lmflow.pipeline.iterative_dpo_aligner": [[56, "module-lmflow.pipeline.iterative_dpo_aligner", false]], "lmflow.pipeline.raft_aligner": [[57, "module-lmflow.pipeline.raft_aligner", false]], "lmflow.pipeline.rm_inferencer": [[58, "module-lmflow.pipeline.rm_inferencer", false]], "lmflow.pipeline.rm_tuner": [[59, "module-lmflow.pipeline.rm_tuner", false]], "lmflow.pipeline.utils": [[62, "module-lmflow.pipeline.utils", false]], "lmflow.pipeline.utils.dpov2_dataprocessor": [[60, "module-lmflow.pipeline.utils.dpov2_dataprocessor", false]], "lmflow.pipeline.utils.dpov2_trainer": [[61, "module-lmflow.pipeline.utils.dpov2_trainer", false]], "lmflow.pipeline.utils.memory_safe_dpov2_align": [[63, "module-lmflow.pipeline.utils.memory_safe_dpov2_align", false]], "lmflow.pipeline.utils.memory_safe_vllm_inference": [[64, "module-lmflow.pipeline.utils.memory_safe_vllm_inference", false]], "lmflow.pipeline.utils.peft_trainer": [[65, "module-lmflow.pipeline.utils.peft_trainer", false]], "lmflow.pipeline.utils.raft_trainer": [[66, "module-lmflow.pipeline.utils.raft_trainer", false]], "lmflow.pipeline.utils.rm_dataprocessor": [[67, "module-lmflow.pipeline.utils.rm_dataprocessor", false]], "lmflow.pipeline.utils.rm_trainer": [[68, "module-lmflow.pipeline.utils.rm_trainer", false]], "lmflow.pipeline.vllm_inferencer": [[69, "module-lmflow.pipeline.vllm_inferencer", false]], "lmflow.tokenization": [[72, "module-lmflow.tokenization", false]], "lmflow.tokenization.hf_decoder_model": [[70, "module-lmflow.tokenization.hf_decoder_model", false]], "lmflow.tokenization.hf_text_regression_model": [[71, "module-lmflow.tokenization.hf_text_regression_model", false]], "lmflow.utils": [[95, "module-lmflow.utils", false]], "lmflow.utils.common": [[73, "module-lmflow.utils.common", false]], "lmflow.utils.constants": [[74, "module-lmflow.utils.constants", false]], "lmflow.utils.conversation_template": [[81, "module-lmflow.utils.conversation_template", false]], "lmflow.utils.conversation_template.base": [[75, "module-lmflow.utils.conversation_template.base", false]], "lmflow.utils.conversation_template.chatglm": [[76, "module-lmflow.utils.conversation_template.chatglm", false]], "lmflow.utils.conversation_template.chatml": [[77, "module-lmflow.utils.conversation_template.chatml", false]], "lmflow.utils.conversation_template.deepseek": [[78, "module-lmflow.utils.conversation_template.deepseek", false]], "lmflow.utils.conversation_template.gemma": [[79, "module-lmflow.utils.conversation_template.gemma", false]], "lmflow.utils.conversation_template.hymba": [[80, "module-lmflow.utils.conversation_template.hymba", false]], "lmflow.utils.conversation_template.internlm": [[82, "module-lmflow.utils.conversation_template.internlm", false]], "lmflow.utils.conversation_template.llama": [[83, "module-lmflow.utils.conversation_template.llama", false]], "lmflow.utils.conversation_template.phi": [[84, "module-lmflow.utils.conversation_template.phi", false]], "lmflow.utils.conversation_template.qwen": [[85, "module-lmflow.utils.conversation_template.qwen", false]], "lmflow.utils.conversation_template.yi": [[86, "module-lmflow.utils.conversation_template.yi", false]], "lmflow.utils.conversation_template.zephyr": [[87, "module-lmflow.utils.conversation_template.zephyr", false]], "lmflow.utils.data_utils": [[88, "module-lmflow.utils.data_utils", false]], "lmflow.utils.flash_attention": [[92, "module-lmflow.utils.flash_attention", false]], "lmflow.utils.flash_attention.bloom_flash_attention": [[89, "module-lmflow.utils.flash_attention.bloom_flash_attention", false]], "lmflow.utils.flash_attention.gpt2_flash_attention": [[90, "module-lmflow.utils.flash_attention.gpt2_flash_attention", false]], "lmflow.utils.flash_attention.gpt_neo_flash_attention": [[91, "module-lmflow.utils.flash_attention.gpt_neo_flash_attention", false]], "lmflow.utils.flash_attention.llama_flash_attention": [[93, "module-lmflow.utils.flash_attention.llama_flash_attention", false]], "lmflow.utils.flash_attention.triton_flash_attention": [[94, "module-lmflow.utils.flash_attention.triton_flash_attention", false]], "lmflow.utils.llava_conversation_lib": [[96, "module-lmflow.utils.llava_conversation_lib", false]], "lmflow.utils.model": [[97, "module-lmflow.utils.model", false]], "lmflow.utils.multimodal": [[98, "module-lmflow.utils.multimodal", false]], "lmflow.utils.position_interpolation": [[99, "module-lmflow.utils.position_interpolation", false]], "lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch": [[100, "module-lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch", false]], "lmflow.utils.versioning": [[101, "module-lmflow.utils.versioning", false]], "lmflow.version": [[102, "module-lmflow.version", false]], "lmflow_lora_target_modules_mapping (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.LMFLOW_LORA_TARGET_MODULES_MAPPING", false]], "load_data() (in module lmflow.utils.data_utils)": [[88, "lmflow.utils.data_utils.load_data", false]], "load_in_4bit (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.load_in_4bit", false]], "load_inference_results() (lmflow.pipeline.vllm_inferencer.inferencerwithoffloading method)": [[69, "lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.load_inference_results", false]], "load_inference_results() (lmflow.pipeline.vllm_inferencer.vllminferencer method)": [[69, "lmflow.pipeline.vllm_inferencer.VLLMInferencer.load_inference_results", false]], "load_llava_pretrain_model() (in module lmflow.utils.multimodal)": [[98, "lmflow.utils.multimodal.load_llava_pretrain_model", false]], "load_model() (lmflow.models.vision_encoder.clip_encoder.clipvisiontower method)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.load_model", false]], "load_prompt_cache() (lmflow.models.vision2seq_model.customautovision2seqmodel method)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.load_prompt_cache", false]], "local_rank (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.local_rank", false]], "local_rank (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.local_rank", false]], "local_rank (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.local_rank", false]], "local_rank (lmflow.pipeline.evaluator.evaluator attribute)": [[52, "lmflow.pipeline.evaluator.Evaluator.local_rank", false]], "local_rank (lmflow.pipeline.inferencer.inferencer attribute)": [[55, "lmflow.pipeline.inferencer.Inferencer.local_rank", false]], "local_rank (lmflow.pipeline.rm_inferencer.rewardmodelinferencer attribute)": [[58, "lmflow.pipeline.rm_inferencer.RewardModelInferencer.local_rank", false]], "log() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.log", false]], "log_freq (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.log_freq", false]], "logdir (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.LOGDIR", false]], "logger (in module lmflow.args)": [[4, "lmflow.args.logger", false]], "logger (in module lmflow.datasets.dataset)": [[5, "lmflow.datasets.dataset.logger", false]], "logger (in module lmflow.models.hf_decoder_model)": [[13, "lmflow.models.hf_decoder_model.logger", false]], "logger (in module lmflow.models.hf_encoder_decoder_model)": [[14, "lmflow.models.hf_encoder_decoder_model.logger", false]], "logger (in module lmflow.models.hf_model_mixin)": [[15, "lmflow.models.hf_model_mixin.logger", false]], "logger (in module lmflow.models.hf_text_regression_model)": [[16, "lmflow.models.hf_text_regression_model.logger", false]], "logger (in module lmflow.pipeline.dpov2_aligner)": [[51, "lmflow.pipeline.dpov2_aligner.logger", false]], "logger (in module lmflow.pipeline.finetuner)": [[53, "lmflow.pipeline.finetuner.logger", false]], "logger (in module lmflow.pipeline.inferencer)": [[55, "lmflow.pipeline.inferencer.logger", false]], "logger (in module lmflow.pipeline.iterative_dpo_aligner)": [[56, "lmflow.pipeline.iterative_dpo_aligner.logger", false]], "logger (in module lmflow.pipeline.raft_aligner)": [[57, "lmflow.pipeline.raft_aligner.logger", false]], "logger (in module lmflow.pipeline.rm_inferencer)": [[58, "lmflow.pipeline.rm_inferencer.logger", false]], "logger (in module lmflow.pipeline.rm_tuner)": [[59, "lmflow.pipeline.rm_tuner.logger", false]], "logger (in module lmflow.pipeline.utils.dpov2_dataprocessor)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.logger", false]], "logger (in module lmflow.pipeline.utils.dpov2_trainer)": [[61, "lmflow.pipeline.utils.dpov2_trainer.logger", false]], "logger (in module lmflow.pipeline.utils.memory_safe_dpov2_align)": [[63, "lmflow.pipeline.utils.memory_safe_dpov2_align.logger", false]], "logger (in module lmflow.pipeline.utils.memory_safe_vllm_inference)": [[64, "lmflow.pipeline.utils.memory_safe_vllm_inference.logger", false]], "logger (in module lmflow.pipeline.utils.raft_trainer)": [[66, "lmflow.pipeline.utils.raft_trainer.logger", false]], "logger (in module lmflow.pipeline.utils.rm_dataprocessor)": [[67, "lmflow.pipeline.utils.rm_dataprocessor.logger", false]], "logger (in module lmflow.pipeline.vllm_inferencer)": [[69, "lmflow.pipeline.vllm_inferencer.logger", false]], "logger (in module lmflow.tokenization.hf_decoder_model)": [[70, "lmflow.tokenization.hf_decoder_model.logger", false]], "logger (in module lmflow.tokenization.hf_text_regression_model)": [[71, "lmflow.tokenization.hf_text_regression_model.logger", false]], "logger (in module lmflow.utils.common)": [[73, "lmflow.utils.common.logger", false]], "logger (in module lmflow.utils.conversation_template.base)": [[75, "lmflow.utils.conversation_template.base.logger", false]], "logger (in module lmflow.utils.conversation_template.gemma)": [[79, "lmflow.utils.conversation_template.gemma.logger", false]], "logger (in module lmflow.utils.conversation_template.llama)": [[83, "lmflow.utils.conversation_template.llama.logger", false]], "logger (in module lmflow.utils.conversation_template.zephyr)": [[87, "lmflow.utils.conversation_template.zephyr.logger", false]], "logger (in module lmflow.utils.model)": [[97, "lmflow.utils.model.logger", false]], "logger (in module lmflow.utils.versioning)": [[101, "lmflow.utils.versioning.logger", false]], "logging_steps (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.logging_steps", false]], "lora_alpha (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.lora_alpha", false]], "lora_dropout (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.lora_dropout", false]], "lora_model_path (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.lora_model_path", false]], "lora_r (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.lora_r", false]], "lora_target_modules (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.lora_target_modules", false]], "lora_target_modules_mapping (in module lmflow.models.hf_model_mixin)": [[15, "lmflow.models.hf_model_mixin.LORA_TARGET_MODULES_MAPPING", false]], "loss_type (lmflow.args.dpov2alignerarguments attribute)": [[4, "lmflow.args.DPOv2AlignerArguments.loss_type", false]], "low_resource (lmflow.args.vismodelarguments attribute)": [[4, "lmflow.args.VisModelArguments.low_resource", false]], "lr_scheduler_type (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.lr_scheduler_type", false]], "main() (in module lmflow.pipeline.utils.memory_safe_dpov2_align)": [[63, "lmflow.pipeline.utils.memory_safe_dpov2_align.main", false]], "main() (in module lmflow.pipeline.utils.memory_safe_vllm_inference)": [[64, "lmflow.pipeline.utils.memory_safe_vllm_inference.main", false]], "make_shell_args_from_dataclass() (in module lmflow.utils.common)": [[73, "lmflow.utils.common.make_shell_args_from_dataclass", false]], "map() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.map", false]], "map() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.map", false]], "margin_scale (lmflow.args.dpov2alignerarguments attribute)": [[4, "lmflow.args.DPOv2AlignerArguments.margin_scale", false]], "mask (lmflow.utils.conversation_template.base.templatecomponent attribute)": [[75, "lmflow.utils.conversation_template.base.TemplateComponent.mask", false]], "mask_prompt (lmflow.args.dpov2alignerarguments attribute)": [[4, "lmflow.args.DPOv2AlignerArguments.mask_prompt", false]], "mask_prompt (lmflow.pipeline.utils.dpov2_dataprocessor.preferencedatacollatorwithpadding attribute)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.mask_prompt", false]], "max_eval_samples (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.max_eval_samples", false]], "max_length (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.max_length", false]], "max_length (lmflow.args.dpov2alignerarguments attribute)": [[4, "lmflow.args.DPOv2AlignerArguments.max_length", false]], "max_length (lmflow.pipeline.utils.dpov2_dataprocessor.preferencedatacollatorwithpadding attribute)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_length", false]], "max_length (lmflow.pipeline.utils.rm_dataprocessor.rewarddatacollatorwithpadding attribute)": [[67, "lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.max_length", false]], "max_new_tokens (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.max_new_tokens", false]], "max_new_tokens (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.max_new_tokens", false]], "max_prompt_length (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.max_prompt_length", false]], "max_prompt_length (lmflow.args.dpov2alignerarguments attribute)": [[4, "lmflow.args.DPOv2AlignerArguments.max_prompt_length", false]], "max_prompt_length (lmflow.pipeline.utils.dpov2_dataprocessor.preferencedatacollatorwithpadding attribute)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_prompt_length", false]], "max_seq_len_cached (lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.condenserotaryembedding attribute)": [[100, "lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.max_seq_len_cached", false]], "max_steps (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.max_steps", false]], "max_target_length (lmflow.pipeline.utils.dpov2_dataprocessor.preferencedatacollatorwithpadding attribute)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.max_target_length", false]], "max_train_samples (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.max_train_samples", false]], "memory_safe_dpov2_align_env_var_to_remove (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE", false]], "memory_safe_vllm_inference_env_var_to_remove (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE", false]], "memory_safe_vllm_inference_finish_flag (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG", false]], "memorysafedpov2aligner (class in lmflow.pipeline.dpov2_aligner)": [[51, "lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner", false]], "memorysafevllminferencer (class in lmflow.pipeline.vllm_inferencer)": [[69, "lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer", false]], "merge_lora_weights() (lmflow.models.hf_decoder_model.hfdecodermodel method)": [[13, "lmflow.models.hf_decoder_model.HFDecoderModel.merge_lora_weights", false]], "merge_lora_weights() (lmflow.models.hf_encoder_decoder_model.hfencoderdecodermodel method)": [[14, "lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.merge_lora_weights", false]], "messages (lmflow.utils.llava_conversation_lib.conversation attribute)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.messages", false]], "metric (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.metric", false]], "mixed_precision (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.mixed_precision", false]], "mixed_precision (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.mixed_precision", false]], "model (lmflow.pipeline.inferencer.toolinferencer attribute)": [[55, "lmflow.pipeline.inferencer.ToolInferencer.model", false]], "model (lmflow.pipeline.utils.dpov2_dataprocessor.preferencedatacollatorwithpadding attribute)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.model", false]], "model (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.model", false]], "model_args (lmflow.models.hf_model_mixin.hfmodelmixin attribute)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.model_args", false]], "model_args (lmflow.pipeline.dpo_aligner.dpoaligner attribute)": [[50, "lmflow.pipeline.dpo_aligner.DPOAligner.model_args", false]], "model_args (lmflow.pipeline.dpov2_aligner.dpov2aligner attribute)": [[51, "lmflow.pipeline.dpov2_aligner.DPOv2Aligner.model_args", false]], "model_args (lmflow.pipeline.dpov2_aligner.memorysafedpov2aligner attribute)": [[51, "lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.model_args", false]], "model_args (lmflow.pipeline.evaluator.evaluator attribute)": [[52, "lmflow.pipeline.evaluator.Evaluator.model_args", false]], "model_args (lmflow.pipeline.finetuner.finetuner attribute)": [[53, "lmflow.pipeline.finetuner.Finetuner.model_args", false]], "model_args (lmflow.pipeline.inferencer.inferencer attribute)": [[55, "lmflow.pipeline.inferencer.Inferencer.model_args", false]], "model_args (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner attribute)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.model_args", false]], "model_args (lmflow.pipeline.raft_aligner.raftaligner attribute)": [[57, "lmflow.pipeline.raft_aligner.RaftAligner.model_args", false]], "model_args (lmflow.pipeline.rm_inferencer.rewardmodelinferencer attribute)": [[58, "lmflow.pipeline.rm_inferencer.RewardModelInferencer.model_args", false]], "model_args (lmflow.pipeline.vllm_inferencer.inferencerwithoffloading attribute)": [[69, "lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.model_args", false]], "model_config_classes (in module lmflow.args)": [[4, "lmflow.args.MODEL_CONFIG_CLASSES", false]], "model_max_length (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.model_max_length", false]], "model_name_or_path (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.model_name_or_path", false]], "model_revision (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.model_revision", false]], "model_type (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.model_type", false]], "model_types (in module lmflow.args)": [[4, "lmflow.args.MODEL_TYPES", false]], "model_wrapped (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.model_wrapped", false]], "modelarguments (class in lmflow.args)": [[4, "lmflow.args.ModelArguments", false]], "module": [[4, "module-lmflow.args", false], [5, "module-lmflow.datasets.dataset", false], [6, "module-lmflow.datasets", false], [7, "module-lmflow.datasets.multi_modal_dataset", false], [8, "module-lmflow", false], [9, "module-lmflow.models.auto_model", false], [10, "module-lmflow.models.base_model", false], [11, "module-lmflow.models.decoder_model", false], [12, "module-lmflow.models.encoder_decoder_model", false], [13, "module-lmflow.models.hf_decoder_model", false], [14, "module-lmflow.models.hf_encoder_decoder_model", false], [15, "module-lmflow.models.hf_model_mixin", false], [16, "module-lmflow.models.hf_text_regression_model", false], [17, "module-lmflow.models", false], [18, "module-lmflow.models.interfaces", false], [19, "module-lmflow.models.interfaces.tunable", false], [20, "module-lmflow.models.regression_model", false], [21, "module-lmflow.models.text_regression_model", false], [22, "module-lmflow.models.vision2seq_model", false], [23, "module-lmflow.models.vision_encoder.clip_encoder", false], [24, "module-lmflow.models.vision_encoder", false], [25, "module-lmflow.optim.adabelief", false], [26, "module-lmflow.optim.adabound", false], [27, "module-lmflow.optim.adadelta", false], [28, "module-lmflow.optim.adagrad", false], [29, "module-lmflow.optim.adam", false], [30, "module-lmflow.optim.adamax", false], [31, "module-lmflow.optim.adamp", false], [32, "module-lmflow.optim.adamw_schedule_free", false], [33, "module-lmflow.optim.adan", false], [34, "module-lmflow.optim.dummy", false], [35, "module-lmflow.optim", false], [36, "module-lmflow.optim.lamb", false], [37, "module-lmflow.optim.lars", false], [38, "module-lmflow.optim.nadam", false], [39, "module-lmflow.optim.novograd", false], [40, "module-lmflow.optim.optimizers", false], [41, "module-lmflow.optim.radam", false], [42, "module-lmflow.optim.sgd_schedule_free", false], [43, "module-lmflow.optim.sgdp", false], [44, "module-lmflow.optim.sophia", false], [45, "module-lmflow.optim.yogi", false], [46, "module-lmflow.pipeline.auto_pipeline", false], [47, "module-lmflow.pipeline.base_aligner", false], [48, "module-lmflow.pipeline.base_pipeline", false], [49, "module-lmflow.pipeline.base_tuner", false], [50, "module-lmflow.pipeline.dpo_aligner", false], [51, "module-lmflow.pipeline.dpov2_aligner", false], [52, "module-lmflow.pipeline.evaluator", false], [53, "module-lmflow.pipeline.finetuner", false], [54, "module-lmflow.pipeline", false], [55, "module-lmflow.pipeline.inferencer", false], [56, "module-lmflow.pipeline.iterative_dpo_aligner", false], [57, "module-lmflow.pipeline.raft_aligner", false], [58, "module-lmflow.pipeline.rm_inferencer", false], [59, "module-lmflow.pipeline.rm_tuner", false], [60, "module-lmflow.pipeline.utils.dpov2_dataprocessor", false], [61, "module-lmflow.pipeline.utils.dpov2_trainer", false], [62, "module-lmflow.pipeline.utils", false], [63, "module-lmflow.pipeline.utils.memory_safe_dpov2_align", false], [64, "module-lmflow.pipeline.utils.memory_safe_vllm_inference", false], [65, "module-lmflow.pipeline.utils.peft_trainer", false], [66, "module-lmflow.pipeline.utils.raft_trainer", false], [67, "module-lmflow.pipeline.utils.rm_dataprocessor", false], [68, "module-lmflow.pipeline.utils.rm_trainer", false], [69, "module-lmflow.pipeline.vllm_inferencer", false], [70, "module-lmflow.tokenization.hf_decoder_model", false], [71, "module-lmflow.tokenization.hf_text_regression_model", false], [72, "module-lmflow.tokenization", false], [73, "module-lmflow.utils.common", false], [74, "module-lmflow.utils.constants", false], [75, "module-lmflow.utils.conversation_template.base", false], [76, "module-lmflow.utils.conversation_template.chatglm", false], [77, "module-lmflow.utils.conversation_template.chatml", false], [78, "module-lmflow.utils.conversation_template.deepseek", false], [79, "module-lmflow.utils.conversation_template.gemma", false], [80, "module-lmflow.utils.conversation_template.hymba", false], [81, "module-lmflow.utils.conversation_template", false], [82, "module-lmflow.utils.conversation_template.internlm", false], [83, "module-lmflow.utils.conversation_template.llama", false], [84, "module-lmflow.utils.conversation_template.phi", false], [85, "module-lmflow.utils.conversation_template.qwen", false], [86, "module-lmflow.utils.conversation_template.yi", false], [87, "module-lmflow.utils.conversation_template.zephyr", false], [88, "module-lmflow.utils.data_utils", false], [89, "module-lmflow.utils.flash_attention.bloom_flash_attention", false], [90, "module-lmflow.utils.flash_attention.gpt2_flash_attention", false], [91, "module-lmflow.utils.flash_attention.gpt_neo_flash_attention", false], [92, "module-lmflow.utils.flash_attention", false], [93, "module-lmflow.utils.flash_attention.llama_flash_attention", false], [94, "module-lmflow.utils.flash_attention.triton_flash_attention", false], [95, "module-lmflow.utils", false], [96, "module-lmflow.utils.llava_conversation_lib", false], [97, "module-lmflow.utils.model", false], [98, "module-lmflow.utils.multimodal", false], [99, "module-lmflow.utils.position_interpolation", false], [100, "module-lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch", false], [101, "module-lmflow.utils.versioning", false], [102, "module-lmflow.version", false]], "mpt (lmflow.utils.llava_conversation_lib.separatorstyle attribute)": [[96, "lmflow.utils.llava_conversation_lib.SeparatorStyle.MPT", false]], "multimodaldatasetarguments (class in lmflow.args)": [[4, "lmflow.args.MultiModalDatasetArguments", false]], "nadam (class in lmflow.optim.nadam)": [[38, "lmflow.optim.nadam.NAdam", false]], "nadam (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.NADAM", false]], "novograd (class in lmflow.optim.novograd)": [[39, "lmflow.optim.novograd.NovoGrad", false]], "novograd (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.NOVOGRAD", false]], "ntk_ratio (lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.condenserotaryembedding attribute)": [[100, "lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.ntk_ratio", false]], "num_examples() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.num_examples", false]], "num_output_sequences (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.num_output_sequences", false]], "num_patches (lmflow.models.vision_encoder.clip_encoder.clipvisiontower property)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.num_patches", false]], "num_raft_iteration (lmflow.args.raftalignerarguments attribute)": [[4, "lmflow.args.RaftAlignerArguments.num_raft_iteration", false]], "observation_formatter (lmflow.utils.conversation_template.base.conversationtemplate attribute)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.observation_formatter", false]], "observation_formatter (lmflow.utils.conversation_template.conversationtemplate attribute)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.observation_formatter", false]], "offset (lmflow.utils.llava_conversation_lib.conversation attribute)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.offset", false]], "on_epoch_end() (lmflow.pipeline.utils.peft_trainer.peftsavingcallback method)": [[65, "lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_epoch_end", false]], "on_save() (lmflow.pipeline.utils.peft_trainer.peftsavingcallback method)": [[65, "lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_save", false]], "on_train_end() (lmflow.pipeline.utils.peft_trainer.peftsavingcallback method)": [[65, "lmflow.pipeline.utils.peft_trainer.PeftSavingCallback.on_train_end", false]], "optim_adam_beta1 (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.optim_adam_beta1", false]], "optim_adam_beta2 (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.optim_adam_beta2", false]], "optim_beta1 (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.optim_beta1", false]], "optim_beta2 (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.optim_beta2", false]], "optim_beta3 (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.optim_beta3", false]], "optim_dummy_beta1 (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.optim_dummy_beta1", false]], "optim_dummy_beta2 (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.optim_dummy_beta2", false]], "optim_momentum (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.optim_momentum", false]], "optim_weight_decay (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.optim_weight_decay", false]], "optimizer_name (in module lmflow.pipeline.utils.raft_trainer)": [[66, "lmflow.pipeline.utils.raft_trainer.OPTIMIZER_NAME", false]], "optimizer_type (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.optimizer_type", false]], "optimizernames (class in lmflow.args)": [[4, "lmflow.args.OptimizerNames", false]], "output (lmflow.utils.data_utils.rewardmodelinferenceresultwithinput attribute)": [[88, "lmflow.utils.data_utils.RewardModelInferenceResultWithInput.output", false]], "output (lmflow.utils.data_utils.vllminferenceresultwithinput attribute)": [[88, "lmflow.utils.data_utils.VLLMInferenceResultWithInput.output", false]], "output_dir (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.output_dir", false]], "output_dir (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.output_dir", false]], "output_dir (lmflow.args.iterativedpoalignerarguments attribute)": [[4, "lmflow.args.IterativeDPOAlignerArguments.output_dir", false]], "output_max_length (lmflow.args.raftalignerarguments attribute)": [[4, "lmflow.args.RaftAlignerArguments.output_max_length", false]], "output_min_length (lmflow.args.raftalignerarguments attribute)": [[4, "lmflow.args.RaftAlignerArguments.output_min_length", false]], "output_reward_path (lmflow.args.raftalignerarguments attribute)": [[4, "lmflow.args.RaftAlignerArguments.output_reward_path", false]], "overwrite_cache (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.overwrite_cache", false]], "pad_to_multiple_of (lmflow.pipeline.utils.rm_dataprocessor.rewarddatacollatorwithpadding attribute)": [[67, "lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.pad_to_multiple_of", false]], "padding (lmflow.pipeline.utils.dpov2_dataprocessor.preferencedatacollatorwithpadding attribute)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.padding", false]], "padding (lmflow.pipeline.utils.rm_dataprocessor.rewarddatacollatorwithpadding attribute)": [[67, "lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.padding", false]], "padding_side (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.padding_side", false]], "padding_value (lmflow.pipeline.utils.dpov2_dataprocessor.preferencedatacollatorwithpadding attribute)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.padding_value", false]], "paired_conversation_dataset_description (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.PAIRED_CONVERSATION_DATASET_DESCRIPTION", false]], "paired_conversation_tokenize_function() (in module lmflow.tokenization.hf_text_regression_model)": [[71, "lmflow.tokenization.hf_text_regression_model.paired_conversation_tokenize_function", false]], "paired_text_to_text_dataset_description (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION", false]], "parse_to_sampling_params() (lmflow.pipeline.vllm_inferencer.vllminferencer method)": [[69, "lmflow.pipeline.vllm_inferencer.VLLMInferencer.parse_to_sampling_params", false]], "peft_config (lmflow.models.hf_model_mixin.hfmodelmixin attribute)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.peft_config", false]], "peftrewardtrainer (class in lmflow.pipeline.utils.rm_trainer)": [[68, "lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer", false]], "peftsavingcallback (class in lmflow.pipeline.utils.peft_trainer)": [[65, "lmflow.pipeline.utils.peft_trainer.PeftSavingCallback", false]], "pefttrainer (class in lmflow.pipeline.utils.peft_trainer)": [[65, "lmflow.pipeline.utils.peft_trainer.PeftTrainer", false]], "per_device_eval_batch_size (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.per_device_eval_batch_size", false]], "per_device_train_batch_size (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.per_device_train_batch_size", false]], "phi3_template (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.PHI3_TEMPLATE", false]], "phi3_template (in module lmflow.utils.conversation_template.phi)": [[84, "lmflow.utils.conversation_template.phi.PHI3_TEMPLATE", false]], "pi_ratio (lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.condenserotaryembedding attribute)": [[100, "lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding.pi_ratio", false]], "pipeline_argument_mapping (in module lmflow.args)": [[4, "lmflow.args.PIPELINE_ARGUMENT_MAPPING", false]], "pipeline_mapping (in module lmflow.pipeline.auto_pipeline)": [[46, "lmflow.pipeline.auto_pipeline.PIPELINE_MAPPING", false]], "pipeline_needs_extras (in module lmflow.pipeline.auto_pipeline)": [[46, "lmflow.pipeline.auto_pipeline.PIPELINE_NEEDS_EXTRAS", false]], "place_model_on_device (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.place_model_on_device", false]], "plain (lmflow.utils.llava_conversation_lib.separatorstyle attribute)": [[96, "lmflow.utils.llava_conversation_lib.SeparatorStyle.PLAIN", false]], "pop_callback() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.pop_callback", false]], "post_process_pairs() (lmflow.utils.conversation_template.base.conversationtemplate method)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.post_process_pairs", false]], "post_process_pairs() (lmflow.utils.conversation_template.conversationtemplate method)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.post_process_pairs", false]], "postprocess_distributed_inference_outputs() (lmflow.models.hf_text_regression_model.hftextregressionmodel static method)": [[16, "lmflow.models.hf_text_regression_model.HFTextRegressionModel.postprocess_distributed_inference_outputs", false]], "postprocess_inference_outputs() (lmflow.models.hf_text_regression_model.hftextregressionmodel static method)": [[16, "lmflow.models.hf_text_regression_model.HFTextRegressionModel.postprocess_inference_outputs", false]], "predict() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.predict", false]], "predict_next_token() (lmflow.pipeline.inferencer.speculativeinferencer static method)": [[55, "lmflow.pipeline.inferencer.SpeculativeInferencer.predict_next_token", false]], "prediction_loop() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.prediction_loop", false]], "prediction_step() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.prediction_step", false]], "preferencedatacollatorwithpadding (class in lmflow.pipeline.utils.dpov2_dataprocessor)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding", false]], "prepare_inputs_for_inference() (lmflow.models.hf_decoder_model.hfdecodermodel method)": [[13, "lmflow.models.hf_decoder_model.HFDecoderModel.prepare_inputs_for_inference", false]], "prepare_inputs_for_inference() (lmflow.models.hf_text_regression_model.hftextregressionmodel method)": [[16, "lmflow.models.hf_text_regression_model.HFTextRegressionModel.prepare_inputs_for_inference", false]], "prepare_inputs_labels_for_multimodal() (lmflow.models.vision_encoder.clip_encoder.clipvisiontower method)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.prepare_inputs_labels_for_multimodal", false]], "preprocess_llama_from_llava_plain() (in module lmflow.datasets.multi_modal_dataset)": [[7, "lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_plain", false]], "preprocess_llama_from_llava_v1() (in module lmflow.datasets.multi_modal_dataset)": [[7, "lmflow.datasets.multi_modal_dataset.preprocess_llama_from_llava_v1", false]], "preprocess_logits_for_metrics (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.preprocess_logits_for_metrics", false]], "preprocess_multimodal_llava() (in module lmflow.datasets.multi_modal_dataset)": [[7, "lmflow.datasets.multi_modal_dataset.preprocess_multimodal_llava", false]], "preprocessing_num_workers (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.preprocessing_num_workers", false]], "preset_templates (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.PRESET_TEMPLATES", false]], "pretrained_language_projection_path (lmflow.args.vismodelarguments attribute)": [[4, "lmflow.args.VisModelArguments.pretrained_language_projection_path", false]], "print_banner() (in module lmflow.utils.common)": [[73, "lmflow.utils.common.print_banner", false]], "process_image_flag() (in module lmflow.utils.data_utils)": [[88, "lmflow.utils.data_utils.process_image_flag", false]], "processor_image_token_in_minigpt4() (lmflow.models.vision2seq_model.customautovision2seqmodel method)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.processor_image_token_in_minigpt4", false]], "prompt_cache_path (lmflow.args.vismodelarguments attribute)": [[4, "lmflow.args.VisModelArguments.prompt_cache_path", false]], "prompt_structure (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.prompt_structure", false]], "push_to_hub() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.push_to_hub", false]], "qformer_from_pretrained() (lmflow.models.vision2seq_model.customautovision2seqmodel method)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.qformer_from_pretrained", false]], "qformer_name_or_path (lmflow.args.vismodelarguments attribute)": [[4, "lmflow.args.VisModelArguments.qformer_name_or_path", false]], "quant_config (lmflow.models.hf_model_mixin.hfmodelmixin attribute)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.quant_config", false]], "quant_type (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.quant_type", false]], "qwen2_template (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.QWEN2_TEMPLATE", false]], "qwen2_template (in module lmflow.utils.conversation_template.qwen)": [[85, "lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE", false]], "qwen2_template_for_tool (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.QWEN2_TEMPLATE_FOR_TOOL", false]], "qwen2_template_for_tool (in module lmflow.utils.conversation_template.qwen)": [[85, "lmflow.utils.conversation_template.qwen.QWEN2_TEMPLATE_FOR_TOOL", false]], "radam (class in lmflow.optim.radam)": [[41, "lmflow.optim.radam.RAdam", false]], "radam (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.RADAM", false]], "raft_batch_size (lmflow.args.raftalignerarguments attribute)": [[4, "lmflow.args.RaftAlignerArguments.raft_batch_size", false]], "raftaligner (class in lmflow.pipeline.raft_aligner)": [[57, "lmflow.pipeline.raft_aligner.RaftAligner", false]], "raftalignerarguments (class in lmflow.args)": [[4, "lmflow.args.RaftAlignerArguments", false]], "rafttrainer (class in lmflow.pipeline.utils.raft_trainer)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer", false]], "random_seed (lmflow.args.dpov2alignerarguments attribute)": [[4, "lmflow.args.DPOv2AlignerArguments.random_seed", false]], "random_seed (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.random_seed", false]], "random_seed (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.random_seed", false]], "random_shuffle (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.random_shuffle", false]], "rectify (lmflow.optim.adabelief.adabelief attribute)": [[25, "lmflow.optim.adabelief.AdaBelief.rectify", false]], "ref_model_args (lmflow.pipeline.dpov2_aligner.dpov2aligner attribute)": [[51, "lmflow.pipeline.dpov2_aligner.DPOv2Aligner.ref_model_args", false]], "ref_model_args (lmflow.pipeline.dpov2_aligner.memorysafedpov2aligner attribute)": [[51, "lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner.ref_model_args", false]], "ref_model_args (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner attribute)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.ref_model_args", false]], "referencemodelarguments (in module lmflow.pipeline.dpov2_aligner)": [[51, "lmflow.pipeline.dpov2_aligner.ReferenceModelArguments", false]], "referencemodelarguments (in module lmflow.pipeline.utils.memory_safe_dpov2_align)": [[63, "lmflow.pipeline.utils.memory_safe_dpov2_align.ReferenceModelArguments", false]], "register_inference_function() (lmflow.models.text_regression_model.textregressionmodel method)": [[21, "lmflow.models.text_regression_model.TextRegressionModel.register_inference_function", false]], "register_prompt_cache() (lmflow.models.vision2seq_model.customautovision2seqmodel method)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.register_prompt_cache", false]], "register_tokenizer() (lmflow.datasets.multi_modal_dataset.custommultimodaldataset method)": [[7, "lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset.register_tokenizer", false]], "regressionmodel (class in lmflow.models.regression_model)": [[20, "lmflow.models.regression_model.RegressionModel", false]], "remove_callback() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.remove_callback", false]], "remove_dataclass_attr_prefix() (in module lmflow.utils.common)": [[73, "lmflow.utils.common.remove_dataclass_attr_prefix", false]], "remove_last_sep (lmflow.utils.conversation_template.base.conversationtemplate attribute)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.remove_last_sep", false]], "remove_last_sep (lmflow.utils.conversation_template.conversationtemplate attribute)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.remove_last_sep", false]], "remove_last_separator() (lmflow.utils.conversation_template.base.conversationtemplate method)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.remove_last_separator", false]], "remove_last_separator() (lmflow.utils.conversation_template.conversationtemplate method)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.remove_last_separator", false]], "remove_unused_columns (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.remove_unused_columns", false]], "repetition_penalty (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.repetition_penalty", false]], "repetition_penalty (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.repetition_penalty", false]], "replace_bloom_attn_with_flash_attn() (in module lmflow.utils.flash_attention.bloom_flash_attention)": [[89, "lmflow.utils.flash_attention.bloom_flash_attention.replace_bloom_attn_with_flash_attn", false]], "replace_gpt2_attn_with_flash_attn() (in module lmflow.utils.flash_attention.gpt2_flash_attention)": [[90, "lmflow.utils.flash_attention.gpt2_flash_attention.replace_gpt2_attn_with_flash_attn", false]], "replace_gpt_neo_attn_with_flash_attn() (in module lmflow.utils.flash_attention.gpt_neo_flash_attention)": [[91, "lmflow.utils.flash_attention.gpt_neo_flash_attention.replace_gpt_neo_attn_with_flash_attn", false]], "replace_llama_attn_with_flash_attn() (in module lmflow.utils.flash_attention.llama_flash_attention)": [[93, "lmflow.utils.flash_attention.llama_flash_attention.replace_llama_attn_with_flash_attn", false]], "replace_llama_with_condense() (in module lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch)": [[100, "lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.replace_llama_with_condense", false]], "report_to (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.report_to", false]], "reset() (lmflow.optim.adabelief.adabelief method)": [[25, "lmflow.optim.adabelief.AdaBelief.reset", false]], "restart_opt() (lmflow.optim.adan.adan method)": [[33, "lmflow.optim.adan.Adan.restart_opt", false]], "results_path (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.results_path", false]], "return_code_error_buffer (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.RETURN_CODE_ERROR_BUFFER", false]], "return_tensors (lmflow.pipeline.utils.rm_dataprocessor.rewarddatacollatorwithpadding attribute)": [[67, "lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.return_tensors", false]], "reward_model_args (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner attribute)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.reward_model_args", false]], "reward_model_inference_batch_size (lmflow.args.iterativedpoalignerarguments attribute)": [[4, "lmflow.args.IterativeDPOAlignerArguments.reward_model_inference_batch_size", false]], "reward_model_inference_block_size (lmflow.args.iterativedpoalignerarguments attribute)": [[4, "lmflow.args.IterativeDPOAlignerArguments.reward_model_inference_block_size", false]], "rewarddatacollatorwithpadding (class in lmflow.pipeline.utils.rm_dataprocessor)": [[67, "lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding", false]], "rewardmodelinferencer (class in lmflow.pipeline.rm_inferencer)": [[58, "lmflow.pipeline.rm_inferencer.RewardModelInferencer", false]], "rewardmodelinferenceresultwithinput (class in lmflow.utils.data_utils)": [[88, "lmflow.utils.data_utils.RewardModelInferenceResultWithInput", false]], "rewardmodeltuner (class in lmflow.pipeline.rm_tuner)": [[59, "lmflow.pipeline.rm_tuner.RewardModelTuner", false]], "rewardmodeltunerarguments (class in lmflow.args)": [[4, "lmflow.args.RewardModelTunerArguments", false]], "rewardtrainer (class in lmflow.pipeline.utils.rm_trainer)": [[68, "lmflow.pipeline.utils.rm_trainer.RewardTrainer", false]], "rm_loss() (in module lmflow.pipeline.utils.rm_trainer)": [[68, "lmflow.pipeline.utils.rm_trainer.rm_loss", false]], "roles (lmflow.utils.llava_conversation_lib.conversation attribute)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.roles", false]], "rope_ntk_ratio (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.rope_ntk_ratio", false]], "rope_pi_ratio (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.rope_pi_ratio", false]], "rstrip_partial_utf8() (in module lmflow.pipeline.inferencer)": [[55, "lmflow.pipeline.inferencer.rstrip_partial_utf8", false]], "run_name (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.run_name", false]], "sample() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.sample", false]], "sample() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.sample", false]], "sample() (lmflow.pipeline.inferencer.speculativeinferencer static method)": [[55, "lmflow.pipeline.inferencer.SpeculativeInferencer.sample", false]], "sampling_paired_idx_from_rewards() (lmflow.pipeline.dpov2_aligner.dpov2aligner method)": [[51, "lmflow.pipeline.dpov2_aligner.DPOv2Aligner.sampling_paired_idx_from_rewards", false]], "sampling_paired_method (lmflow.args.dpov2alignerarguments attribute)": [[4, "lmflow.args.DPOv2AlignerArguments.sampling_paired_method", false]], "sampling_params (lmflow.pipeline.vllm_inferencer.vllminferencer attribute)": [[69, "lmflow.pipeline.vllm_inferencer.VLLMInferencer.sampling_params", false]], "sanity_check (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.sanity_check", false]], "sanity_check() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.sanity_check", false]], "sanity_check() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.sanity_check", false]], "save() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.save", false]], "save() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.save", false]], "save() (lmflow.models.hf_decoder_model.hfdecodermodel method)": [[13, "lmflow.models.hf_decoder_model.HFDecoderModel.save", false]], "save() (lmflow.models.hf_encoder_decoder_model.hfencoderdecodermodel method)": [[14, "lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.save", false]], "save() (lmflow.models.hf_text_regression_model.hftextregressionmodel method)": [[16, "lmflow.models.hf_text_regression_model.HFTextRegressionModel.save", false]], "save_aggregated_lora (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.save_aggregated_lora", false]], "save_counter (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.save_counter", false]], "save_inference_results() (lmflow.pipeline.vllm_inferencer.inferencerwithoffloading method)": [[69, "lmflow.pipeline.vllm_inferencer.InferencerWithOffloading.save_inference_results", false]], "save_inference_results() (lmflow.pipeline.vllm_inferencer.vllminferencer method)": [[69, "lmflow.pipeline.vllm_inferencer.VLLMInferencer.save_inference_results", false]], "save_language_projection (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.save_language_projection", false]], "save_model() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.save_model", false]], "save_pretrain_model_path (lmflow.args.vismodelarguments attribute)": [[4, "lmflow.args.VisModelArguments.save_pretrain_model_path", false]], "save_prompt_cache() (lmflow.models.vision2seq_model.customautovision2seqmodel method)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.save_prompt_cache", false]], "save_results (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.save_results", false]], "save_steps (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.save_steps", false]], "scaler_name (in module lmflow.pipeline.utils.raft_trainer)": [[66, "lmflow.pipeline.utils.raft_trainer.SCALER_NAME", false]], "scheduler_name (in module lmflow.pipeline.utils.raft_trainer)": [[66, "lmflow.pipeline.utils.raft_trainer.SCHEDULER_NAME", false]], "score_to_prob() (lmflow.pipeline.inferencer.speculativeinferencer static method)": [[55, "lmflow.pipeline.inferencer.SpeculativeInferencer.score_to_prob", false]], "seed (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.seed", false]], "select_feature (lmflow.models.vision_encoder.clip_encoder.clipvisiontower attribute)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.select_feature", false]], "select_layer (lmflow.models.vision_encoder.clip_encoder.clipvisiontower attribute)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.select_layer", false]], "sep (lmflow.utils.llava_conversation_lib.conversation attribute)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.sep", false]], "sep2 (lmflow.utils.llava_conversation_lib.conversation attribute)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.sep2", false]], "sep_style (lmflow.args.multimodaldatasetarguments attribute)": [[4, "lmflow.args.MultiModalDatasetArguments.sep_style", false]], "sep_style (lmflow.utils.llava_conversation_lib.conversation attribute)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.sep_style", false]], "separator (lmflow.utils.conversation_template.base.conversationtemplate attribute)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.separator", false]], "separator (lmflow.utils.conversation_template.conversationtemplate attribute)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.separator", false]], "separatorstyle (class in lmflow.utils.llava_conversation_lib)": [[96, "lmflow.utils.llava_conversation_lib.SeparatorStyle", false]], "set_random_seed() (in module lmflow.utils.data_utils)": [[88, "lmflow.utils.data_utils.set_random_seed", false]], "sgd_schedule_free (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.SGD_SCHEDULE_FREE", false]], "sgdp (class in lmflow.optim.sgdp)": [[43, "lmflow.optim.sgdp.SGDP", false]], "sgdp (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.SGDP", false]], "sgdschedulefree (class in lmflow.optim.sgd_schedule_free)": [[42, "lmflow.optim.sgd_schedule_free.SGDScheduleFree", false]], "sharded_ddp (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.sharded_ddp", false]], "single (lmflow.utils.llava_conversation_lib.separatorstyle attribute)": [[96, "lmflow.utils.llava_conversation_lib.SeparatorStyle.SINGLE", false]], "skip_first_batches (in module lmflow.pipeline.utils.raft_trainer)": [[66, "lmflow.pipeline.utils.raft_trainer.skip_first_batches", false]], "skip_next (lmflow.utils.llava_conversation_lib.conversation attribute)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.skip_next", false]], "sophia (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.SOPHIA", false]], "sophiag (class in lmflow.optim.sophia)": [[44, "lmflow.optim.sophia.SophiaG", false]], "special_starter (lmflow.utils.conversation_template.base.conversationtemplate attribute)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.special_starter", false]], "special_starter (lmflow.utils.conversation_template.conversationtemplate attribute)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.special_starter", false]], "special_stopper (lmflow.utils.conversation_template.base.conversationtemplate attribute)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.special_stopper", false]], "special_stopper (lmflow.utils.conversation_template.conversationtemplate attribute)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.special_stopper", false]], "speculativeinferencer (class in lmflow.pipeline.inferencer)": [[55, "lmflow.pipeline.inferencer.SpeculativeInferencer", false]], "split_args() (in module lmflow.args)": [[4, "lmflow.args.split_args", false]], "state (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.state", false]], "step() (lmflow.optim.adabelief.adabelief method)": [[25, "lmflow.optim.adabelief.AdaBelief.step", false]], "step() (lmflow.optim.adabound.adabound method)": [[26, "lmflow.optim.adabound.AdaBound.step", false]], "step() (lmflow.optim.adadelta.adadelta method)": [[27, "lmflow.optim.adadelta.Adadelta.step", false]], "step() (lmflow.optim.adagrad.adagrad method)": [[28, "lmflow.optim.adagrad.AdaGrad.step", false]], "step() (lmflow.optim.adam.adam method)": [[29, "lmflow.optim.adam.Adam.step", false]], "step() (lmflow.optim.adamax.adamax method)": [[30, "lmflow.optim.adamax.Adamax.step", false]], "step() (lmflow.optim.adamp.adamp method)": [[31, "lmflow.optim.adamp.AdamP.step", false]], "step() (lmflow.optim.adamw_schedule_free.adamwschedulefree method)": [[32, "lmflow.optim.adamw_schedule_free.AdamWScheduleFree.step", false]], "step() (lmflow.optim.adan.adan method)": [[33, "lmflow.optim.adan.Adan.step", false]], "step() (lmflow.optim.dummy.dummy method)": [[34, "lmflow.optim.dummy.Dummy.step", false]], "step() (lmflow.optim.lamb.lamb method)": [[36, "lmflow.optim.lamb.Lamb.step", false]], "step() (lmflow.optim.lars.lars method)": [[37, "lmflow.optim.lars.LARS.step", false]], "step() (lmflow.optim.nadam.nadam method)": [[38, "lmflow.optim.nadam.NAdam.step", false]], "step() (lmflow.optim.novograd.novograd method)": [[39, "lmflow.optim.novograd.NovoGrad.step", false]], "step() (lmflow.optim.radam.radam method)": [[41, "lmflow.optim.radam.RAdam.step", false]], "step() (lmflow.optim.sgd_schedule_free.sgdschedulefree method)": [[42, "lmflow.optim.sgd_schedule_free.SGDScheduleFree.step", false]], "step() (lmflow.optim.sgdp.sgdp method)": [[43, "lmflow.optim.sgdp.SGDP.step", false]], "step() (lmflow.optim.sophia.sophiag method)": [[44, "lmflow.optim.sophia.SophiaG.step", false]], "step() (lmflow.optim.yogi.yogi method)": [[45, "lmflow.optim.yogi.Yogi.step", false]], "store_flos() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.store_flos", false]], "stream_inference() (lmflow.pipeline.inferencer.inferencer method)": [[55, "lmflow.pipeline.inferencer.Inferencer.stream_inference", false]], "stream_inference() (lmflow.pipeline.inferencer.speculativeinferencer method)": [[55, "lmflow.pipeline.inferencer.SpeculativeInferencer.stream_inference", false]], "streaming (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.streaming", false]], "stringformatter (class in lmflow.utils.conversation_template.base)": [[75, "lmflow.utils.conversation_template.base.StringFormatter", false]], "supported_dataset_type (in module lmflow.pipeline.inferencer)": [[55, "lmflow.pipeline.inferencer.supported_dataset_type", false]], "system (lmflow.utils.llava_conversation_lib.conversation attribute)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.system", false]], "system_formatter (lmflow.utils.conversation_template.base.conversationtemplate attribute)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.system_formatter", false]], "system_formatter (lmflow.utils.conversation_template.conversationtemplate attribute)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.system_formatter", false]], "temperature (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.temperature", false]], "temperature (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.temperature", false]], "template (lmflow.utils.conversation_template.base.formatter attribute)": [[75, "lmflow.utils.conversation_template.base.Formatter.template", false]], "template_name (lmflow.utils.conversation_template.base.conversationtemplate attribute)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.template_name", false]], "template_name (lmflow.utils.conversation_template.conversationtemplate attribute)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.template_name", false]], "templatecomponent (class in lmflow.utils.conversation_template.base)": [[75, "lmflow.utils.conversation_template.base.TemplateComponent", false]], "tensor_parallel_size (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.tensor_parallel_size", false]], "test_file (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.test_file", false]], "text2text_dataset_description (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.TEXT2TEXT_DATASET_DESCRIPTION", false]], "text2text_dataset_details (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.TEXT2TEXT_DATASET_DETAILS", false]], "text2text_dataset_long_descrition (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.TEXT2TEXT_DATASET_LONG_DESCRITION", false]], "text_only_dataset_description (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.TEXT_ONLY_DATASET_DESCRIPTION", false]], "text_only_dataset_details (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.TEXT_ONLY_DATASET_DETAILS", false]], "text_only_dataset_long_descrition (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.TEXT_ONLY_DATASET_LONG_DESCRITION", false]], "text_to_scored_textlist_dataset_description (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION", false]], "text_to_textlist_dataset_description (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.TEXT_TO_TEXTLIST_DATASET_DESCRIPTION", false]], "text_to_textlist_tokenize_function() (in module lmflow.tokenization.hf_text_regression_model)": [[71, "lmflow.tokenization.hf_text_regression_model.text_to_textlist_tokenize_function", false]], "textregressionmodel (class in lmflow.models.text_regression_model)": [[21, "lmflow.models.text_regression_model.TextRegressionModel", false]], "to_dict() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.to_dict", false]], "to_dict() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.to_dict", false]], "to_gradio_chatbot() (lmflow.utils.llava_conversation_lib.conversation method)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.to_gradio_chatbot", false]], "to_list() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.to_list", false]], "to_list() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.to_list", false]], "tok_logger (in module lmflow.tokenization.hf_decoder_model)": [[70, "lmflow.tokenization.hf_decoder_model.tok_logger", false]], "tok_logger (in module lmflow.tokenization.hf_text_regression_model)": [[71, "lmflow.tokenization.hf_text_regression_model.tok_logger", false]], "token (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.token", false]], "tokenize() (lmflow.models.hf_decoder_model.hfdecodermodel method)": [[13, "lmflow.models.hf_decoder_model.HFDecoderModel.tokenize", false]], "tokenize() (lmflow.models.hf_encoder_decoder_model.hfencoderdecodermodel method)": [[14, "lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel.tokenize", false]], "tokenize() (lmflow.models.hf_text_regression_model.hftextregressionmodel method)": [[16, "lmflow.models.hf_text_regression_model.HFTextRegressionModel.tokenize", false]], "tokenize_batch_element() (lmflow.pipeline.utils.dpov2_dataprocessor.preferencedatacollatorwithpadding method)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.tokenize_batch_element", false]], "tokenize_function() (in module lmflow.tokenization.hf_decoder_model)": [[70, "lmflow.tokenization.hf_decoder_model.tokenize_function", false]], "tokenize_function() (in module lmflow.tokenization.hf_text_regression_model)": [[71, "lmflow.tokenization.hf_text_regression_model.tokenize_function", false]], "tokenizer (lmflow.datasets.multi_modal_dataset.datacollatorforsuperviseddataset attribute)": [[7, "lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset.tokenizer", false]], "tokenizer (lmflow.models.hf_model_mixin.hfmodelmixin attribute)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.tokenizer", false]], "tokenizer (lmflow.pipeline.utils.dpov2_dataprocessor.preferencedatacollatorwithpadding attribute)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.tokenizer", false]], "tokenizer (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.tokenizer", false]], "tokenizer (lmflow.pipeline.utils.rm_dataprocessor.rewarddatacollatorwithpadding attribute)": [[67, "lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding.tokenizer", false]], "tokenizer_image_token() (in module lmflow.datasets.multi_modal_dataset)": [[7, "lmflow.datasets.multi_modal_dataset.tokenizer_image_token", false]], "tokenizer_name (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.tokenizer_name", false]], "toolinferencer (class in lmflow.pipeline.inferencer)": [[55, "lmflow.pipeline.inferencer.ToolInferencer", false]], "tools_formatter (lmflow.utils.conversation_template.base.conversationtemplate attribute)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.tools_formatter", false]], "tools_formatter (lmflow.utils.conversation_template.conversationtemplate attribute)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.tools_formatter", false]], "top_k (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.top_k", false]], "top_p (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.top_p", false]], "top_reward_percentage (lmflow.args.raftalignerarguments attribute)": [[4, "lmflow.args.RaftAlignerArguments.top_reward_percentage", false]], "torch_dtype (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.torch_dtype", false]], "torch_dtype (lmflow.models.hf_model_mixin.hfmodelmixin attribute)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.torch_dtype", false]], "torch_jit_model_eval() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.torch_jit_model_eval", false]], "train() (lmflow.optim.adamw_schedule_free.adamwschedulefree method)": [[32, "lmflow.optim.adamw_schedule_free.AdamWScheduleFree.train", false]], "train() (lmflow.optim.sgd_schedule_free.sgdschedulefree method)": [[42, "lmflow.optim.sgd_schedule_free.SGDScheduleFree.train", false]], "train() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.train", false]], "train_dataset (lmflow.pipeline.dpo_aligner.dpoaligner attribute)": [[50, "lmflow.pipeline.dpo_aligner.DPOAligner.train_dataset", false]], "train_dataset (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.train_dataset", false]], "train_file (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.train_file", false]], "train_on_prompt (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.train_on_prompt", false]], "train_test_split() (lmflow.datasets.dataset method)": [[6, "lmflow.datasets.Dataset.train_test_split", false]], "train_test_split() (lmflow.datasets.dataset.dataset method)": [[5, "lmflow.datasets.dataset.Dataset.train_test_split", false]], "trainer_state_name (in module lmflow.pipeline.utils.raft_trainer)": [[66, "lmflow.pipeline.utils.raft_trainer.TRAINER_STATE_NAME", false]], "training_args_name (in module lmflow.pipeline.utils.raft_trainer)": [[66, "lmflow.pipeline.utils.raft_trainer.TRAINING_ARGS_NAME", false]], "training_step() (lmflow.pipeline.utils.raft_trainer.rafttrainer method)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.training_step", false]], "truncate_to_model_max_length (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.truncate_to_model_max_length", false]], "truncation_mode (lmflow.pipeline.utils.dpov2_dataprocessor.preferencedatacollatorwithpadding attribute)": [[60, "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding.truncation_mode", false]], "truncation_side (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.truncation_side", false]], "trust_remote_code (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.trust_remote_code", false]], "tunable (class in lmflow.models.interfaces.tunable)": [[19, "lmflow.models.interfaces.tunable.Tunable", false]], "tune() (lmflow.pipeline.base_tuner.basetuner method)": [[49, "lmflow.pipeline.base_tuner.BaseTuner.tune", false]], "tune() (lmflow.pipeline.finetuner.finetuner method)": [[53, "lmflow.pipeline.finetuner.Finetuner.tune", false]], "tune() (lmflow.pipeline.rm_tuner.rewardmodeltuner method)": [[59, "lmflow.pipeline.rm_tuner.RewardModelTuner.tune", false]], "two (lmflow.utils.llava_conversation_lib.separatorstyle attribute)": [[96, "lmflow.utils.llava_conversation_lib.SeparatorStyle.TWO", false]], "type (lmflow.datasets.dataset attribute)": [[6, "lmflow.datasets.Dataset.type", false]], "type (lmflow.datasets.dataset.dataset attribute)": [[5, "lmflow.datasets.dataset.Dataset.type", false]], "type (lmflow.utils.conversation_template.base.templatecomponent attribute)": [[75, "lmflow.utils.conversation_template.base.TemplateComponent.type", false]], "update_custom_config() (in module lmflow.utils.multimodal)": [[98, "lmflow.utils.multimodal.update_custom_config", false]], "update_hessian() (lmflow.optim.sophia.sophiag method)": [[44, "lmflow.optim.sophia.SophiaG.update_hessian", false]], "use_accelerator (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.use_accelerator", false]], "use_accelerator (lmflow.models.hf_model_mixin.hfmodelmixin attribute)": [[15, "lmflow.models.hf_model_mixin.HFModelMixin.use_accelerator", false]], "use_accelerator_for_evaluator (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.use_accelerator_for_evaluator", false]], "use_apex (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_apex", false]], "use_beam_search (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.use_beam_search", false]], "use_cpu_amp (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_cpu_amp", false]], "use_cuda_amp (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_cuda_amp", false]], "use_customized_optim (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.use_customized_optim", false]], "use_dora (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.use_dora", false]], "use_dpo_data_collator (lmflow.pipeline.utils.dpov2_trainer.dpov2trainer attribute)": [[61, "lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer.use_dpo_data_collator", false]], "use_fast_tokenizer (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.use_fast_tokenizer", false]], "use_flash_attention (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.use_flash_attention", false]], "use_image_start_end (lmflow.args.multimodaldatasetarguments attribute)": [[4, "lmflow.args.MultiModalDatasetArguments.use_image_start_end", false]], "use_int8 (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.use_int8", false]], "use_lisa (lmflow.args.finetunerarguments attribute)": [[4, "lmflow.args.FinetunerArguments.use_lisa", false]], "use_lora (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.use_lora", false]], "use_prompt_cache (lmflow.args.vismodelarguments attribute)": [[4, "lmflow.args.VisModelArguments.use_prompt_cache", false]], "use_qlora (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.use_qlora", false]], "use_ram_optimized_load (lmflow.args.modelarguments attribute)": [[4, "lmflow.args.ModelArguments.use_ram_optimized_load", false]], "use_tune_checkpoints (lmflow.pipeline.utils.raft_trainer.rafttrainer attribute)": [[66, "lmflow.pipeline.utils.raft_trainer.RaftTrainer.use_tune_checkpoints", false]], "use_vllm (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.use_vllm", false]], "use_wandb (lmflow.args.evaluatorarguments attribute)": [[4, "lmflow.args.EvaluatorArguments.use_wandb", false]], "user_formatter (lmflow.utils.conversation_template.base.conversationtemplate attribute)": [[75, "lmflow.utils.conversation_template.base.ConversationTemplate.user_formatter", false]], "user_formatter (lmflow.utils.conversation_template.conversationtemplate attribute)": [[81, "lmflow.utils.conversation_template.ConversationTemplate.user_formatter", false]], "validation_file (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.validation_file", false]], "validation_split_percentage (lmflow.args.datasetarguments attribute)": [[4, "lmflow.args.DatasetArguments.validation_split_percentage", false]], "version (lmflow.utils.llava_conversation_lib.conversation attribute)": [[96, "lmflow.utils.llava_conversation_lib.Conversation.version", false]], "vision_feature_select() (lmflow.models.vision2seq_model.customautovision2seqmodel method)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.vision_feature_select", false]], "vision_model_from_pretrained() (lmflow.models.vision2seq_model.customautovision2seqmodel method)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.vision_model_from_pretrained", false]], "vision_select_layer (lmflow.args.vismodelarguments attribute)": [[4, "lmflow.args.VisModelArguments.vision_select_layer", false]], "vision_tower_name (lmflow.models.vision_encoder.clip_encoder.clipvisiontower attribute)": [[23, "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower.vision_tower_name", false]], "vismodelarguments (class in lmflow.args)": [[4, "lmflow.args.VisModelArguments", false]], "vllm_gpu_memory_utilization (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.vllm_gpu_memory_utilization", false]], "vllm_inference_batch_size (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.vllm_inference_batch_size", false]], "vllm_tensor_parallel_size (lmflow.args.inferencerarguments attribute)": [[4, "lmflow.args.InferencerArguments.vllm_tensor_parallel_size", false]], "vllminferencer (class in lmflow.pipeline.vllm_inferencer)": [[69, "lmflow.pipeline.vllm_inferencer.VLLMInferencer", false]], "vllminferenceresultwithinput (class in lmflow.utils.data_utils)": [[88, "lmflow.utils.data_utils.VLLMInferenceResultWithInput", false]], "warmup_steps (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.warmup_steps", false]], "weight_decay (lmflow.args.dpoalignerarguments attribute)": [[4, "lmflow.args.DPOAlignerArguments.weight_decay", false]], "weight_decouple (lmflow.optim.adabelief.adabelief attribute)": [[25, "lmflow.optim.adabelief.AdaBelief.weight_decouple", false]], "with_qformer (lmflow.args.vismodelarguments attribute)": [[4, "lmflow.args.VisModelArguments.with_qformer", false]], "with_qformer (lmflow.models.vision2seq_model.customautovision2seqmodel attribute)": [[22, "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel.with_qformer", false]], "worker_heart_beat_interval (in module lmflow.utils.constants)": [[74, "lmflow.utils.constants.WORKER_HEART_BEAT_INTERVAL", false]], "workspace_path (lmflow.pipeline.iterative_dpo_aligner.iterativedpoaligner attribute)": [[56, "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner.workspace_path", false]], "world_size (lmflow.pipeline.evaluator.evaluator attribute)": [[52, "lmflow.pipeline.evaluator.Evaluator.world_size", false]], "world_size (lmflow.pipeline.inferencer.inferencer attribute)": [[55, "lmflow.pipeline.inferencer.Inferencer.world_size", false]], "world_size (lmflow.pipeline.rm_inferencer.rewardmodelinferencer attribute)": [[58, "lmflow.pipeline.rm_inferencer.RewardModelInferencer.world_size", false]], "yi1_5_template (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.YI1_5_TEMPLATE", false]], "yi1_5_template (in module lmflow.utils.conversation_template.yi)": [[86, "lmflow.utils.conversation_template.yi.YI1_5_TEMPLATE", false]], "yogi (class in lmflow.optim.yogi)": [[45, "lmflow.optim.yogi.Yogi", false]], "yogi (lmflow.args.optimizernames attribute)": [[4, "lmflow.args.OptimizerNames.YOGI", false]], "zephyr_template (in module lmflow.utils.conversation_template)": [[81, "lmflow.utils.conversation_template.ZEPHYR_TEMPLATE", false]], "zephyr_template (in module lmflow.utils.conversation_template.zephyr)": [[87, "lmflow.utils.conversation_template.zephyr.ZEPHYR_TEMPLATE", false]], "zephyrconversationtemplate (class in lmflow.utils.conversation_template.zephyr)": [[87, "lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate", false]]}, "objects": {"": [[8, 0, 0, "-", "lmflow"]], "lmflow": [[8, 1, 1, "", "__version__"], [4, 0, 0, "-", "args"], [6, 0, 0, "-", "datasets"], [8, 1, 1, "", "internal_version"], [17, 0, 0, "-", "models"], [35, 0, 0, "-", "optim"], [54, 0, 0, "-", "pipeline"], [72, 0, 0, "-", "tokenization"], [95, 0, 0, "-", "utils"], [102, 0, 0, "-", "version"]], "lmflow.args": [[4, 2, 1, "", "AutoArguments"], [4, 2, 1, "", "BenchmarkingArguments"], [4, 2, 1, "", "DPOAlignerArguments"], [4, 2, 1, "", "DPOv2AlignerArguments"], [4, 2, 1, "", "DatasetArguments"], [4, 2, 1, "", "EvaluatorArguments"], [4, 2, 1, "", "FinetunerArguments"], [4, 2, 1, "", "InferencerArguments"], [4, 2, 1, "", "IterativeAlignerArguments"], [4, 2, 1, "", "IterativeDPOAlignerArguments"], [4, 1, 1, "", "MODEL_CONFIG_CLASSES"], [4, 1, 1, "", "MODEL_TYPES"], [4, 2, 1, "", "ModelArguments"], [4, 2, 1, "", "MultiModalDatasetArguments"], [4, 2, 1, "", "OptimizerNames"], [4, 1, 1, "", "PIPELINE_ARGUMENT_MAPPING"], [4, 2, 1, "", "RaftAlignerArguments"], [4, 2, 1, "", "RewardModelTunerArguments"], [4, 2, 1, "", "VisModelArguments"], [4, 1, 1, "", "logger"], [4, 5, 1, "", "split_args"]], "lmflow.args.AutoArguments": [[4, 3, 1, "", "get_pipeline_args_class"]], "lmflow.args.BenchmarkingArguments": [[4, 4, 1, "", "dataset_name"], [4, 4, 1, "", "lm_evaluation_metric"]], "lmflow.args.DPOAlignerArguments": [[4, 4, 1, "", "beta"], [4, 4, 1, "", "eval_dataset_path"], [4, 4, 1, "", "eval_steps"], [4, 4, 1, "", "gradient_accumulation_steps"], [4, 4, 1, "", "gradient_checkpointing"], [4, 4, 1, "", "gradient_checkpointing_use_reentrant"], [4, 4, 1, "", "learning_rate"], [4, 4, 1, "", "local_rank"], [4, 4, 1, "", "log_freq"], [4, 4, 1, "", "logging_steps"], [4, 4, 1, "", "lr_scheduler_type"], [4, 4, 1, "", "max_length"], [4, 4, 1, "", "max_prompt_length"], [4, 4, 1, "", "max_steps"], [4, 4, 1, "", "optimizer_type"], [4, 4, 1, "", "output_dir"], [4, 4, 1, "", "per_device_eval_batch_size"], [4, 4, 1, "", "per_device_train_batch_size"], [4, 4, 1, "", "report_to"], [4, 4, 1, "", "run_name"], [4, 4, 1, "", "sanity_check"], [4, 4, 1, "", "save_steps"], [4, 4, 1, "", "seed"], [4, 4, 1, "", "warmup_steps"], [4, 4, 1, "", "weight_decay"]], "lmflow.args.DPOv2AlignerArguments": [[4, 4, 1, "", "accelerate_config_file"], [4, 4, 1, "", "beta"], [4, 4, 1, "", "length_penalty"], [4, 4, 1, "", "loss_type"], [4, 4, 1, "", "margin_scale"], [4, 4, 1, "", "mask_prompt"], [4, 4, 1, "", "max_length"], [4, 4, 1, "", "max_prompt_length"], [4, 4, 1, "", "random_seed"], [4, 4, 1, "", "sampling_paired_method"]], "lmflow.args.DatasetArguments": [[4, 3, 1, "", "__post_init__"], [4, 4, 1, "", "block_size"], [4, 4, 1, "", "conversation_template"], [4, 4, 1, "", "customized_cache_dir"], [4, 4, 1, "", "dataset_config_name"], [4, 4, 1, "", "dataset_name"], [4, 4, 1, "", "dataset_path"], [4, 4, 1, "", "disable_group_texts"], [4, 4, 1, "", "group_texts_batch_size"], [4, 4, 1, "", "is_custom_dataset"], [4, 4, 1, "", "keep_linebreaks"], [4, 4, 1, "", "max_eval_samples"], [4, 4, 1, "", "max_train_samples"], [4, 4, 1, "", "overwrite_cache"], [4, 4, 1, "", "preprocessing_num_workers"], [4, 4, 1, "", "streaming"], [4, 4, 1, "", "test_file"], [4, 4, 1, "", "train_file"], [4, 4, 1, "", "train_on_prompt"], [4, 4, 1, "", "validation_file"], [4, 4, 1, "", "validation_split_percentage"]], "lmflow.args.EvaluatorArguments": [[4, 4, 1, "", "answer_type"], [4, 4, 1, "", "deepspeed"], [4, 4, 1, "", "evaluate_block_size"], [4, 4, 1, "", "inference_batch_size_per_device"], [4, 4, 1, "", "local_rank"], [4, 4, 1, "", "max_new_tokens"], [4, 4, 1, "", "metric"], [4, 4, 1, "", "mixed_precision"], [4, 4, 1, "", "output_dir"], [4, 4, 1, "", "prompt_structure"], [4, 4, 1, "", "random_seed"], [4, 4, 1, "", "random_shuffle"], [4, 4, 1, "", "repetition_penalty"], [4, 4, 1, "", "temperature"], [4, 4, 1, "", "use_accelerator_for_evaluator"], [4, 4, 1, "", "use_wandb"]], "lmflow.args.FinetunerArguments": [[4, 4, 1, "", "customized_optim"], [4, 4, 1, "", "customized_optim_args"], [4, 4, 1, "", "eval_dataset_path"], [4, 4, 1, "", "finetune_part"], [4, 4, 1, "", "lisa_activated_layers"], [4, 4, 1, "", "lisa_interval_steps"], [4, 4, 1, "", "lisa_layers_attribute"], [4, 4, 1, "", "optim_adam_beta1"], [4, 4, 1, "", "optim_adam_beta2"], [4, 4, 1, "", "optim_beta1"], [4, 4, 1, "", "optim_beta2"], [4, 4, 1, "", "optim_beta3"], [4, 4, 1, "", "optim_dummy_beta1"], [4, 4, 1, "", "optim_dummy_beta2"], [4, 4, 1, "", "optim_momentum"], [4, 4, 1, "", "optim_weight_decay"], [4, 4, 1, "", "remove_unused_columns"], [4, 4, 1, "", "save_language_projection"], [4, 4, 1, "", "use_customized_optim"], [4, 4, 1, "", "use_lisa"]], "lmflow.args.InferencerArguments": [[4, 3, 1, "", "__post_init__"], [4, 4, 1, "", "additional_stop_token_ids"], [4, 4, 1, "", "apply_chat_template"], [4, 4, 1, "", "deepspeed"], [4, 4, 1, "", "device"], [4, 4, 1, "", "distributed_inference_num_instances"], [4, 4, 1, "", "do_sample"], [4, 4, 1, "", "enable_decode_inference_result"], [4, 4, 1, "", "enable_distributed_inference"], [4, 4, 1, "", "inference_batch_size"], [4, 4, 1, "", "local_rank"], [4, 4, 1, "", "max_new_tokens"], [4, 4, 1, "", "mixed_precision"], [4, 4, 1, "", "num_output_sequences"], [4, 4, 1, "", "random_seed"], [4, 4, 1, "", "repetition_penalty"], [4, 4, 1, "", "results_path"], [4, 4, 1, "", "save_results"], [4, 4, 1, "", "temperature"], [4, 4, 1, "", "tensor_parallel_size"], [4, 4, 1, "", "top_k"], [4, 4, 1, "", "top_p"], [4, 4, 1, "", "use_accelerator"], [4, 4, 1, "", "use_beam_search"], [4, 4, 1, "", "use_vllm"], [4, 4, 1, "", "vllm_gpu_memory_utilization"], [4, 4, 1, "", "vllm_inference_batch_size"], [4, 4, 1, "", "vllm_tensor_parallel_size"]], "lmflow.args.IterativeAlignerArguments": [[4, 4, 1, "", "dataset_path_list"], [4, 4, 1, "", "initial_iter_idx"]], "lmflow.args.IterativeDPOAlignerArguments": [[4, 4, 1, "", "do_dpo_align"], [4, 4, 1, "", "do_response_generation"], [4, 4, 1, "", "do_scoring"], [4, 4, 1, "", "output_dir"], [4, 4, 1, "", "reward_model_inference_batch_size"], [4, 4, 1, "", "reward_model_inference_block_size"]], "lmflow.args.ModelArguments": [[4, 3, 1, "", "__post_init__"], [4, 4, 1, "", "arch_type"], [4, 4, 1, "", "bits"], [4, 4, 1, "", "cache_dir"], [4, 4, 1, "", "config_name"], [4, 4, 1, "", "config_overrides"], [4, 4, 1, "", "do_rope_scaling"], [4, 4, 1, "", "double_quant"], [4, 4, 1, "", "eos_padding"], [4, 4, 1, "", "ignore_bias_buffers"], [4, 4, 1, "", "load_in_4bit"], [4, 4, 1, "", "lora_alpha"], [4, 4, 1, "", "lora_dropout"], [4, 4, 1, "", "lora_model_path"], [4, 4, 1, "", "lora_r"], [4, 4, 1, "", "lora_target_modules"], [4, 4, 1, "", "model_max_length"], [4, 4, 1, "", "model_name_or_path"], [4, 4, 1, "", "model_revision"], [4, 4, 1, "", "model_type"], [4, 4, 1, "", "padding_side"], [4, 4, 1, "", "quant_type"], [4, 4, 1, "", "rope_ntk_ratio"], [4, 4, 1, "", "rope_pi_ratio"], [4, 4, 1, "", "save_aggregated_lora"], [4, 4, 1, "", "token"], [4, 4, 1, "", "tokenizer_name"], [4, 4, 1, "", "torch_dtype"], [4, 4, 1, "", "truncate_to_model_max_length"], [4, 4, 1, "", "truncation_side"], [4, 4, 1, "", "trust_remote_code"], [4, 4, 1, "", "use_dora"], [4, 4, 1, "", "use_fast_tokenizer"], [4, 4, 1, "", "use_flash_attention"], [4, 4, 1, "", "use_int8"], [4, 4, 1, "", "use_lora"], [4, 4, 1, "", "use_qlora"], [4, 4, 1, "", "use_ram_optimized_load"]], "lmflow.args.MultiModalDatasetArguments": [[4, 4, 1, "", "image_aspect_ratio"], [4, 4, 1, "", "image_folder"], [4, 4, 1, "", "is_multimodal"], [4, 4, 1, "", "sep_style"], [4, 4, 1, "", "use_image_start_end"]], "lmflow.args.OptimizerNames": [[4, 4, 1, "", "ADABELIEF"], [4, 4, 1, "", "ADABOUND"], [4, 4, 1, "", "ADADELTA"], [4, 4, 1, "", "ADAGRAD"], [4, 4, 1, "", "ADAM"], [4, 4, 1, "", "ADAMAX"], [4, 4, 1, "", "ADAMP"], [4, 4, 1, "", "ADAMW_SCHEDULE_FREE"], [4, 4, 1, "", "ADAN"], [4, 4, 1, "", "DUMMY"], [4, 4, 1, "", "LAMB"], [4, 4, 1, "", "LARS"], [4, 4, 1, "", "NADAM"], [4, 4, 1, "", "NOVOGRAD"], [4, 4, 1, "", "RADAM"], [4, 4, 1, "", "SGDP"], [4, 4, 1, "", "SGD_SCHEDULE_FREE"], [4, 4, 1, "", "SOPHIA"], [4, 4, 1, "", "YOGI"]], "lmflow.args.RaftAlignerArguments": [[4, 4, 1, "", "collection_strategy"], [4, 4, 1, "", "inference_batch_size_per_device"], [4, 4, 1, "", "num_raft_iteration"], [4, 4, 1, "", "output_max_length"], [4, 4, 1, "", "output_min_length"], [4, 4, 1, "", "output_reward_path"], [4, 4, 1, "", "raft_batch_size"], [4, 4, 1, "", "top_reward_percentage"]], "lmflow.args.VisModelArguments": [[4, 4, 1, "", "custom_model"], [4, 4, 1, "", "custom_vision_model"], [4, 4, 1, "", "image_encoder_name_or_path"], [4, 4, 1, "", "llava_loading"], [4, 4, 1, "", "llava_pretrain_model_path"], [4, 4, 1, "", "llm_model_name_or_path"], [4, 4, 1, "", "low_resource"], [4, 4, 1, "", "pretrained_language_projection_path"], [4, 4, 1, "", "prompt_cache_path"], [4, 4, 1, "", "qformer_name_or_path"], [4, 4, 1, "", "save_pretrain_model_path"], [4, 4, 1, "", "use_prompt_cache"], [4, 4, 1, "", "vision_select_layer"], [4, 4, 1, "", "with_qformer"]], "lmflow.datasets": [[6, 2, 1, "", "Dataset"], [5, 0, 0, "-", "dataset"], [6, 5, 1, "", "is_multimodal_available"], [7, 0, 0, "-", "multi_modal_dataset"]], "lmflow.datasets.Dataset": [[6, 3, 1, "", "__len__"], [6, 3, 1, "", "_check_data_format"], [6, 4, 1, "", "backend"], [6, 4, 1, "", "backend_dataset"], [6, 3, 1, "", "create_from_dict"], [6, 4, 1, "", "data_args"], [6, 4, 1, "", "dataset_path"], [6, 3, 1, "", "drop_instances"], [6, 3, 1, "", "from_dict"], [6, 3, 1, "", "get_backend"], [6, 3, 1, "", "get_backend_dataset"], [6, 3, 1, "", "get_data_args"], [6, 3, 1, "", "get_fingerprint"], [6, 3, 1, "", "get_type"], [6, 3, 1, "", "hf_dataset_sanity_check"], [6, 3, 1, "", "map"], [6, 3, 1, "", "sample"], [6, 3, 1, "", "sanity_check"], [6, 3, 1, "", "save"], [6, 3, 1, "", "to_dict"], [6, 3, 1, "", "to_list"], [6, 3, 1, "", "train_test_split"], [6, 4, 1, "", "type"]], "lmflow.datasets.dataset": [[5, 1, 1, "", "DATASET_TYPES"], [5, 2, 1, "", "Dataset"], [5, 1, 1, "", "KEY_INSTANCES"], [5, 1, 1, "", "KEY_SCORE"], [5, 1, 1, "", "KEY_TYPE"], [5, 1, 1, "", "logger"]], "lmflow.datasets.dataset.Dataset": [[5, 3, 1, "", "__len__"], [5, 3, 1, "", "_check_data_format"], [5, 4, 1, "", "backend"], [5, 4, 1, "", "backend_dataset"], [5, 3, 1, "", "create_from_dict"], [5, 4, 1, "", "data_args"], [5, 4, 1, "", "dataset_path"], [5, 3, 1, "", "drop_instances"], [5, 3, 1, "", "from_dict"], [5, 3, 1, "", "get_backend"], [5, 3, 1, "", "get_backend_dataset"], [5, 3, 1, "", "get_data_args"], [5, 3, 1, "", "get_fingerprint"], [5, 3, 1, "", "get_type"], [5, 3, 1, "", "hf_dataset_sanity_check"], [5, 3, 1, "", "map"], [5, 3, 1, "", "sample"], [5, 3, 1, "", "sanity_check"], [5, 3, 1, "", "save"], [5, 3, 1, "", "to_dict"], [5, 3, 1, "", "to_list"], [5, 3, 1, "", "train_test_split"], [5, 4, 1, "", "type"]], "lmflow.datasets.multi_modal_dataset": [[7, 2, 1, "", "CustomMultiModalDataset"], [7, 2, 1, "", "DataCollatorForSupervisedDataset"], [7, 5, 1, "", "preprocess_llama_from_llava_plain"], [7, 5, 1, "", "preprocess_llama_from_llava_v1"], [7, 5, 1, "", "preprocess_multimodal_llava"], [7, 5, 1, "", "tokenizer_image_token"]], "lmflow.datasets.multi_modal_dataset.CustomMultiModalDataset": [[7, 3, 1, "", "__getitem__"], [7, 3, 1, "", "__len__"], [7, 4, 1, "", "data_args"], [7, 4, 1, "", "data_dict"], [7, 4, 1, "", "image_folder"], [7, 3, 1, "", "register_tokenizer"]], "lmflow.datasets.multi_modal_dataset.DataCollatorForSupervisedDataset": [[7, 3, 1, "", "__call__"], [7, 4, 1, "", "tokenizer"]], "lmflow.models": [[9, 0, 0, "-", "auto_model"], [10, 0, 0, "-", "base_model"], [11, 0, 0, "-", "decoder_model"], [12, 0, 0, "-", "encoder_decoder_model"], [13, 0, 0, "-", "hf_decoder_model"], [14, 0, 0, "-", "hf_encoder_decoder_model"], [15, 0, 0, "-", "hf_model_mixin"], [16, 0, 0, "-", "hf_text_regression_model"], [18, 0, 0, "-", "interfaces"], [20, 0, 0, "-", "regression_model"], [21, 0, 0, "-", "text_regression_model"], [22, 0, 0, "-", "vision2seq_model"], [24, 0, 0, "-", "vision_encoder"]], "lmflow.models.auto_model": [[9, 2, 1, "", "AutoModel"]], "lmflow.models.auto_model.AutoModel": [[9, 3, 1, "", "get_model"]], "lmflow.models.base_model": [[10, 2, 1, "", "BaseModel"]], "lmflow.models.decoder_model": [[11, 2, 1, "", "DecoderModel"]], "lmflow.models.encoder_decoder_model": [[12, 2, 1, "", "EncoderDecoderModel"]], "lmflow.models.hf_decoder_model": [[13, 2, 1, "", "HFDecoderModel"], [13, 1, 1, "", "logger"]], "lmflow.models.hf_decoder_model.HFDecoderModel": [[13, 3, 1, "", "__inference"], [13, 3, 1, "", "__prepare_inputs_for_inference"], [13, 3, 1, "", "__prepare_inputs_for_vllm_inference"], [13, 3, 1, "", "__vllm_inference"], [13, 3, 1, "", "decode"], [13, 3, 1, "", "encode"], [13, 3, 1, "", "get_peft_without_qlora"], [13, 3, 1, "", "inference"], [13, 3, 1, "", "merge_lora_weights"], [13, 3, 1, "", "prepare_inputs_for_inference"], [13, 3, 1, "", "save"], [13, 3, 1, "", "tokenize"]], "lmflow.models.hf_encoder_decoder_model": [[14, 2, 1, "", "HFEncoderDecoderModel"], [14, 1, 1, "", "logger"]], "lmflow.models.hf_encoder_decoder_model.HFEncoderDecoderModel": [[14, 3, 1, "", "decode"], [14, 4, 1, "", "device"], [14, 3, 1, "", "encode"], [14, 3, 1, "", "get_backend_model"], [14, 3, 1, "", "get_max_length"], [14, 3, 1, "", "get_tokenizer"], [14, 3, 1, "", "inference"], [14, 3, 1, "", "merge_lora_weights"], [14, 3, 1, "", "save"], [14, 3, 1, "", "tokenize"]], "lmflow.models.hf_model_mixin": [[15, 2, 1, "", "HFModelMixin"], [15, 1, 1, "", "HF_AUTOMODEL_MAPPING"], [15, 1, 1, "", "HF_AUTOMODEL_TYPE"], [15, 1, 1, "", "LORA_TARGET_MODULES_MAPPING"], [15, 1, 1, "", "logger"]], "lmflow.models.hf_model_mixin.HFModelMixin": [[15, 3, 1, "", "__model_module_inject"], [15, 3, 1, "", "__prepare_dtype"], [15, 3, 1, "", "__prepare_model_config"], [15, 3, 1, "", "__prepare_model_for_inference"], [15, 3, 1, "", "__prepare_model_for_training"], [15, 3, 1, "", "__prepare_model_for_vllm_inference"], [15, 3, 1, "", "__prepare_model_post_process"], [15, 3, 1, "", "__prepare_peft_config"], [15, 3, 1, "", "__prepare_quant_config"], [15, 3, 1, "", "__prepare_tokenizer"], [15, 4, 1, "", "_activated"], [15, 3, 1, "", "activate_model_for_inference"], [15, 3, 1, "", "deactivate_model_for_inference"], [15, 4, 1, "", "device"], [15, 4, 1, "", "do_train"], [15, 4, 1, "", "ds_config"], [15, 3, 1, "", "get_backend_model"], [15, 3, 1, "", "get_max_length"], [15, 3, 1, "", "get_tokenizer"], [15, 4, 1, "", "hf_auto_model"], [15, 4, 1, "", "hf_model_config"], [15, 4, 1, "", "model_args"], [15, 4, 1, "", "peft_config"], [15, 4, 1, "", "quant_config"], [15, 4, 1, "", "tokenizer"], [15, 4, 1, "", "torch_dtype"], [15, 4, 1, "", "use_accelerator"]], "lmflow.models.hf_text_regression_model": [[16, 2, 1, "", "HFTextRegressionModel"], [16, 1, 1, "", "logger"]], "lmflow.models.hf_text_regression_model.HFTextRegressionModel": [[16, 3, 1, "", "__inference"], [16, 3, 1, "", "__vllm_inference"], [16, 3, 1, "", "inference"], [16, 3, 1, "", "postprocess_distributed_inference_outputs"], [16, 3, 1, "", "postprocess_inference_outputs"], [16, 3, 1, "", "prepare_inputs_for_inference"], [16, 3, 1, "", "save"], [16, 3, 1, "", "tokenize"]], "lmflow.models.interfaces": [[19, 0, 0, "-", "tunable"]], "lmflow.models.interfaces.tunable": [[19, 2, 1, "", "Tunable"]], "lmflow.models.regression_model": [[20, 2, 1, "", "RegressionModel"]], "lmflow.models.text_regression_model": [[21, 2, 1, "", "TextRegressionModel"]], "lmflow.models.text_regression_model.TextRegressionModel": [[21, 3, 1, "", "inference"], [21, 4, 1, "", "inference_func"], [21, 3, 1, "", "register_inference_function"]], "lmflow.models.vision2seq_model": [[22, 2, 1, "", "CustomAutoVision2SeqModel"]], "lmflow.models.vision2seq_model.CustomAutoVision2SeqModel": [[22, 4, 1, "", "custom_vision_model"], [22, 3, 1, "", "forward"], [22, 3, 1, "", "generate"], [22, 3, 1, "", "get_backend_model"], [22, 3, 1, "", "get_tokenizer"], [22, 4, 1, "", "hidden_size"], [22, 4, 1, "", "language_model"], [22, 3, 1, "", "language_model_from_pretrained"], [22, 3, 1, "", "load_prompt_cache"], [22, 3, 1, "", "processor_image_token_in_minigpt4"], [22, 3, 1, "", "qformer_from_pretrained"], [22, 3, 1, "", "register_prompt_cache"], [22, 3, 1, "", "save_prompt_cache"], [22, 3, 1, "", "vision_feature_select"], [22, 3, 1, "", "vision_model_from_pretrained"], [22, 4, 1, "", "with_qformer"]], "lmflow.models.vision_encoder": [[24, 5, 1, "", "build_vision_tower"], [23, 0, 0, "-", "clip_encoder"]], "lmflow.models.vision_encoder.clip_encoder": [[23, 2, 1, "", "CLIPVisionTower"], [23, 5, 1, "", "build_vision_tower"]], "lmflow.models.vision_encoder.clip_encoder.CLIPVisionTower": [[23, 6, 1, "", "config"], [23, 6, 1, "", "device"], [23, 6, 1, "", "dtype"], [23, 6, 1, "", "dummy_feature"], [23, 3, 1, "", "encode_images"], [23, 3, 1, "", "feature_select"], [23, 3, 1, "", "forward"], [23, 6, 1, "", "hidden_size"], [23, 4, 1, "", "is_loaded"], [23, 3, 1, "", "load_model"], [23, 6, 1, "", "num_patches"], [23, 3, 1, "", "prepare_inputs_labels_for_multimodal"], [23, 4, 1, "", "select_feature"], [23, 4, 1, "", "select_layer"], [23, 4, 1, "", "vision_tower_name"]], "lmflow.optim": [[25, 0, 0, "-", "adabelief"], [26, 0, 0, "-", "adabound"], [27, 0, 0, "-", "adadelta"], [28, 0, 0, "-", "adagrad"], [29, 0, 0, "-", "adam"], [30, 0, 0, "-", "adamax"], [31, 0, 0, "-", "adamp"], [32, 0, 0, "-", "adamw_schedule_free"], [33, 0, 0, "-", "adan"], [34, 0, 0, "-", "dummy"], [36, 0, 0, "-", "lamb"], [37, 0, 0, "-", "lars"], [38, 0, 0, "-", "nadam"], [39, 0, 0, "-", "novograd"], [40, 0, 0, "-", "optimizers"], [41, 0, 0, "-", "radam"], [42, 0, 0, "-", "sgd_schedule_free"], [43, 0, 0, "-", "sgdp"], [44, 0, 0, "-", "sophia"], [45, 0, 0, "-", "yogi"]], "lmflow.optim.adabelief": [[25, 2, 1, "", "AdaBelief"]], "lmflow.optim.adabelief.AdaBelief": [[25, 3, 1, "", "__setstate__"], [25, 4, 1, "", "degenerated_to_sgd"], [25, 4, 1, "", "fixed_decay"], [25, 4, 1, "", "rectify"], [25, 3, 1, "", "reset"], [25, 3, 1, "", "step"], [25, 4, 1, "", "weight_decouple"]], "lmflow.optim.adabound": [[26, 2, 1, "", "AdaBound"]], "lmflow.optim.adabound.AdaBound": [[26, 3, 1, "", "__setstate__"], [26, 4, 1, "", "base_lrs"], [26, 3, 1, "", "step"]], "lmflow.optim.adadelta": [[27, 2, 1, "", "Adadelta"]], "lmflow.optim.adadelta.Adadelta": [[27, 3, 1, "", "step"]], "lmflow.optim.adagrad": [[28, 2, 1, "", "AdaGrad"]], "lmflow.optim.adagrad.AdaGrad": [[28, 3, 1, "", "step"]], "lmflow.optim.adam": [[29, 2, 1, "", "Adam"]], "lmflow.optim.adam.Adam": [[29, 3, 1, "", "step"]], "lmflow.optim.adamax": [[30, 2, 1, "", "Adamax"]], "lmflow.optim.adamax.Adamax": [[30, 3, 1, "", "__setstate__"], [30, 3, 1, "", "step"]], "lmflow.optim.adamp": [[31, 2, 1, "", "AdamP"]], "lmflow.optim.adamp.AdamP": [[31, 3, 1, "", "_channel_view"], [31, 3, 1, "", "_cosine_similarity"], [31, 3, 1, "", "_layer_view"], [31, 3, 1, "", "_projection"], [31, 3, 1, "", "step"]], "lmflow.optim.adamw_schedule_free": [[32, 2, 1, "", "AdamWScheduleFree"]], "lmflow.optim.adamw_schedule_free.AdamWScheduleFree": [[32, 3, 1, "", "eval"], [32, 3, 1, "", "step"], [32, 3, 1, "", "train"]], "lmflow.optim.adan": [[33, 2, 1, "", "Adan"], [33, 5, 1, "", "_multi_tensor_adan"], [33, 5, 1, "", "_single_tensor_adan"]], "lmflow.optim.adan.Adan": [[33, 3, 1, "", "__setstate__"], [33, 3, 1, "", "restart_opt"], [33, 3, 1, "", "step"]], "lmflow.optim.dummy": [[34, 2, 1, "", "Dummy"]], "lmflow.optim.dummy.Dummy": [[34, 3, 1, "", "step"]], "lmflow.optim.lamb": [[36, 2, 1, "", "Lamb"]], "lmflow.optim.lamb.Lamb": [[36, 4, 1, "", "adam"], [36, 4, 1, "", "clamp_value"], [36, 4, 1, "", "debias"], [36, 3, 1, "", "step"]], "lmflow.optim.lars": [[37, 2, 1, "", "LARS"]], "lmflow.optim.lars.LARS": [[37, 3, 1, "", "__setstate__"], [37, 3, 1, "", "step"]], "lmflow.optim.nadam": [[38, 2, 1, "", "NAdam"]], "lmflow.optim.nadam.NAdam": [[38, 3, 1, "", "__setstate__"], [38, 3, 1, "", "step"]], "lmflow.optim.novograd": [[39, 2, 1, "", "NovoGrad"]], "lmflow.optim.novograd.NovoGrad": [[39, 3, 1, "", "__setstate__"], [39, 3, 1, "", "step"]], "lmflow.optim.radam": [[41, 2, 1, "", "RAdam"]], "lmflow.optim.radam.RAdam": [[41, 3, 1, "", "__setstate__"], [41, 3, 1, "", "step"]], "lmflow.optim.sgd_schedule_free": [[42, 2, 1, "", "SGDScheduleFree"]], "lmflow.optim.sgd_schedule_free.SGDScheduleFree": [[42, 3, 1, "", "eval"], [42, 3, 1, "", "step"], [42, 3, 1, "", "train"]], "lmflow.optim.sgdp": [[43, 2, 1, "", "SGDP"]], "lmflow.optim.sgdp.SGDP": [[43, 3, 1, "", "_channel_view"], [43, 3, 1, "", "_cosine_similarity"], [43, 3, 1, "", "_layer_view"], [43, 3, 1, "", "_projection"], [43, 3, 1, "", "step"]], "lmflow.optim.sophia": [[44, 2, 1, "", "SophiaG"]], "lmflow.optim.sophia.SophiaG": [[44, 3, 1, "", "__setstate__"], [44, 3, 1, "", "step"], [44, 3, 1, "", "update_hessian"]], "lmflow.optim.yogi": [[45, 2, 1, "", "Yogi"]], "lmflow.optim.yogi.Yogi": [[45, 3, 1, "", "step"]], "lmflow.pipeline": [[46, 0, 0, "-", "auto_pipeline"], [47, 0, 0, "-", "base_aligner"], [48, 0, 0, "-", "base_pipeline"], [49, 0, 0, "-", "base_tuner"], [50, 0, 0, "-", "dpo_aligner"], [51, 0, 0, "-", "dpov2_aligner"], [52, 0, 0, "-", "evaluator"], [53, 0, 0, "-", "finetuner"], [55, 0, 0, "-", "inferencer"], [56, 0, 0, "-", "iterative_dpo_aligner"], [57, 0, 0, "-", "raft_aligner"], [58, 0, 0, "-", "rm_inferencer"], [59, 0, 0, "-", "rm_tuner"], [62, 0, 0, "-", "utils"], [69, 0, 0, "-", "vllm_inferencer"]], "lmflow.pipeline.auto_pipeline": [[46, 2, 1, "", "AutoPipeline"], [46, 1, 1, "", "PIPELINE_MAPPING"], [46, 1, 1, "", "PIPELINE_NEEDS_EXTRAS"]], "lmflow.pipeline.auto_pipeline.AutoPipeline": [[46, 3, 1, "", "get_pipeline"]], "lmflow.pipeline.base_aligner": [[47, 2, 1, "", "BaseAligner"]], "lmflow.pipeline.base_aligner.BaseAligner": [[47, 3, 1, "", "_check_if_alignable"], [47, 3, 1, "", "align"]], "lmflow.pipeline.base_pipeline": [[48, 2, 1, "", "BasePipeline"]], "lmflow.pipeline.base_tuner": [[49, 2, 1, "", "BaseTuner"]], "lmflow.pipeline.base_tuner.BaseTuner": [[49, 3, 1, "", "_check_if_tunable"], [49, 3, 1, "", "tune"]], "lmflow.pipeline.dpo_aligner": [[50, 2, 1, "", "DPOAligner"], [50, 5, 1, "", "get_paired_dataset"]], "lmflow.pipeline.dpo_aligner.DPOAligner": [[50, 3, 1, "", "_initialize_trainer"], [50, 3, 1, "", "_load_dataset"], [50, 3, 1, "", "align"], [50, 4, 1, "", "aligner_args"], [50, 4, 1, "", "data_args"], [50, 4, 1, "", "eval_dataset"], [50, 4, 1, "", "model_args"], [50, 4, 1, "", "train_dataset"]], "lmflow.pipeline.dpov2_aligner": [[51, 2, 1, "", "DPOv2Aligner"], [51, 2, 1, "", "MemorySafeDPOv2Aligner"], [51, 1, 1, "", "ReferenceModelArguments"], [51, 1, 1, "", "logger"]], "lmflow.pipeline.dpov2_aligner.DPOv2Aligner": [[51, 3, 1, "", "__prepare_training_args"], [51, 3, 1, "", "_calc_response_lengths"], [51, 3, 1, "", "_calc_reward_with_length_penalty"], [51, 3, 1, "", "_sampling_paired_idx_from_rewards"], [51, 3, 1, "", "_sampling_paired_idx_from_rewards_fast"], [51, 3, 1, "", "align"], [51, 4, 1, "", "aligner_args"], [51, 3, 1, "", "convert_to_paired_dataset"], [51, 4, 1, "", "data_args"], [51, 4, 1, "", "model_args"], [51, 4, 1, "", "ref_model_args"], [51, 3, 1, "", "sampling_paired_idx_from_rewards"]], "lmflow.pipeline.dpov2_aligner.MemorySafeDPOv2Aligner": [[51, 3, 1, "", "align"], [51, 4, 1, "", "aligner_args"], [51, 4, 1, "", "aligner_file_path"], [51, 4, 1, "", "data_args"], [51, 4, 1, "", "model_args"], [51, 4, 1, "", "ref_model_args"]], "lmflow.pipeline.evaluator": [[52, 2, 1, "", "Evaluator"]], "lmflow.pipeline.evaluator.Evaluator": [[52, 3, 1, "", "_evaluate_acc_with_accelerator"], [52, 3, 1, "", "_evaluate_acc_with_deepspeed"], [52, 3, 1, "", "_evaluate_nll"], [52, 3, 1, "", "_evaluate_ppl"], [52, 3, 1, "", "_match"], [52, 4, 1, "", "block_size"], [52, 4, 1, "", "config"], [52, 3, 1, "", "create_dataloader"], [52, 4, 1, "", "data_args"], [52, 3, 1, "", "evaluate"], [52, 4, 1, "", "evaluator_args"], [52, 4, 1, "", "local_rank"], [52, 4, 1, "", "model_args"], [52, 4, 1, "", "world_size"]], "lmflow.pipeline.finetuner": [[53, 2, 1, "", "Finetuner"], [53, 1, 1, "", "logger"]], "lmflow.pipeline.finetuner.Finetuner": [[53, 3, 1, "", "create_customized_optimizer"], [53, 4, 1, "", "data_args"], [53, 4, 1, "", "finetuner_args"], [53, 3, 1, "", "group_text"], [53, 4, 1, "", "last_checkpoint"], [53, 4, 1, "", "model_args"], [53, 3, 1, "", "tune"]], "lmflow.pipeline.inferencer": [[55, 2, 1, "", "Inferencer"], [55, 2, 1, "", "SpeculativeInferencer"], [55, 2, 1, "", "ToolInferencer"], [55, 1, 1, "", "logger"], [55, 5, 1, "", "rstrip_partial_utf8"], [55, 1, 1, "", "supported_dataset_type"]], "lmflow.pipeline.inferencer.Inferencer": [[55, 4, 1, "", "config"], [55, 3, 1, "", "create_dataloader"], [55, 4, 1, "", "data_args"], [55, 3, 1, "", "inference"], [55, 4, 1, "", "inferencer_args"], [55, 4, 1, "", "local_rank"], [55, 4, 1, "", "model_args"], [55, 3, 1, "", "stream_inference"], [55, 4, 1, "", "world_size"]], "lmflow.pipeline.inferencer.SpeculativeInferencer": [[55, 3, 1, "", "autoregressive_sampling"], [55, 4, 1, "", "draft_config"], [55, 4, 1, "", "draft_model_args"], [55, 3, 1, "", "inference"], [55, 3, 1, "", "predict_next_token"], [55, 3, 1, "", "sample"], [55, 3, 1, "", "score_to_prob"], [55, 3, 1, "", "stream_inference"]], "lmflow.pipeline.inferencer.ToolInferencer": [[55, 3, 1, "", "code_exec"], [55, 3, 1, "", "inference"], [55, 4, 1, "", "model"]], "lmflow.pipeline.iterative_dpo_aligner": [[56, 2, 1, "", "IterativeDPOAligner"], [56, 1, 1, "", "logger"]], "lmflow.pipeline.iterative_dpo_aligner.IterativeDPOAligner": [[56, 3, 1, "", "__filter_args"], [56, 3, 1, "", "_align_single_iteration"], [56, 3, 1, "", "_do_reward_model_inference"], [56, 3, 1, "", "_do_single_dpo_align"], [56, 3, 1, "", "_do_target_model_inference"], [56, 3, 1, "", "_parse_dpo_aligner_args"], [56, 3, 1, "", "_parse_reward_model_inference_args"], [56, 3, 1, "", "_parse_target_model_inference_args"], [56, 3, 1, "", "align"], [56, 4, 1, "", "aligner_args"], [56, 4, 1, "", "data_args"], [56, 4, 1, "", "model_args"], [56, 4, 1, "", "ref_model_args"], [56, 4, 1, "", "reward_model_args"], [56, 4, 1, "", "workspace_path"]], "lmflow.pipeline.raft_aligner": [[57, 2, 1, "", "RaftAligner"], [57, 1, 1, "", "logger"]], "lmflow.pipeline.raft_aligner.RaftAligner": [[57, 4, 1, "", "INF"], [57, 3, 1, "", "_clean_text"], [57, 3, 1, "", "_discard_sample"], [57, 3, 1, "", "_get_batch_dataset_local"], [57, 3, 1, "", "_get_batch_dataset_top"], [57, 3, 1, "", "_initialize_trainer"], [57, 3, 1, "", "_load_dataset"], [57, 3, 1, "", "_load_input_dataset"], [57, 3, 1, "", "align"], [57, 4, 1, "", "aligner_args"], [57, 4, 1, "", "data_args"], [57, 4, 1, "", "model_args"]], "lmflow.pipeline.rm_inferencer": [[58, 2, 1, "", "RewardModelInferencer"], [58, 1, 1, "", "logger"]], "lmflow.pipeline.rm_inferencer.RewardModelInferencer": [[58, 3, 1, "", "__distributed_inference"], [58, 3, 1, "", "__inference"], [58, 3, 1, "", "__post_process_model_output"], [58, 3, 1, "", "__vllm_inference"], [58, 3, 1, "", "_inference"], [58, 3, 1, "", "compress_list"], [58, 4, 1, "", "data_args"], [58, 3, 1, "", "flatten_list"], [58, 3, 1, "", "inference"], [58, 4, 1, "", "inferencer_args"], [58, 4, 1, "", "local_rank"], [58, 4, 1, "", "model_args"], [58, 4, 1, "", "world_size"]], "lmflow.pipeline.rm_tuner": [[59, 2, 1, "", "RewardModelTuner"], [59, 1, 1, "", "logger"]], "lmflow.pipeline.rm_tuner.RewardModelTuner": [[59, 3, 1, "", "tune"]], "lmflow.pipeline.utils": [[60, 0, 0, "-", "dpov2_dataprocessor"], [61, 0, 0, "-", "dpov2_trainer"], [63, 0, 0, "-", "memory_safe_dpov2_align"], [64, 0, 0, "-", "memory_safe_vllm_inference"], [65, 0, 0, "-", "peft_trainer"], [66, 0, 0, "-", "raft_trainer"], [67, 0, 0, "-", "rm_dataprocessor"], [68, 0, 0, "-", "rm_trainer"]], "lmflow.pipeline.utils.dpov2_dataprocessor": [[60, 2, 1, "", "PreferenceDataCollatorWithPadding"], [60, 1, 1, "", "logger"]], "lmflow.pipeline.utils.dpov2_dataprocessor.PreferenceDataCollatorWithPadding": [[60, 3, 1, "", "__call__"], [60, 3, 1, "", "collate"], [60, 4, 1, "", "is_encoder_decoder"], [60, 4, 1, "", "label_pad_token_id"], [60, 4, 1, "", "mask_prompt"], [60, 4, 1, "", "max_length"], [60, 4, 1, "", "max_prompt_length"], [60, 4, 1, "", "max_target_length"], [60, 4, 1, "", "model"], [60, 4, 1, "", "padding"], [60, 4, 1, "", "padding_value"], [60, 3, 1, "", "tokenize_batch_element"], [60, 4, 1, "", "tokenizer"], [60, 4, 1, "", "truncation_mode"]], "lmflow.pipeline.utils.dpov2_trainer": [[61, 2, 1, "", "DPOv2Trainer"], [61, 1, 1, "", "logger"]], "lmflow.pipeline.utils.dpov2_trainer.DPOv2Trainer": [[61, 3, 1, "", "dpo_loss"], [61, 3, 1, "", "get_batch_loss_metrics"], [61, 3, 1, "", "get_batch_metrics"], [61, 4, 1, "", "len_penalty"], [61, 4, 1, "", "use_dpo_data_collator"]], "lmflow.pipeline.utils.memory_safe_dpov2_align": [[63, 1, 1, "", "ReferenceModelArguments"], [63, 1, 1, "", "logger"], [63, 5, 1, "", "main"]], "lmflow.pipeline.utils.memory_safe_vllm_inference": [[64, 1, 1, "", "logger"], [64, 5, 1, "", "main"]], "lmflow.pipeline.utils.peft_trainer": [[65, 2, 1, "", "PeftSavingCallback"], [65, 2, 1, "", "PeftTrainer"]], "lmflow.pipeline.utils.peft_trainer.PeftSavingCallback": [[65, 3, 1, "", "_save"], [65, 3, 1, "", "on_epoch_end"], [65, 3, 1, "", "on_save"], [65, 3, 1, "", "on_train_end"]], "lmflow.pipeline.utils.peft_trainer.PeftTrainer": [[65, 3, 1, "", "_save_checkpoint"]], "lmflow.pipeline.utils.raft_trainer": [[66, 1, 1, "", "DEFAULT_CALLBACKS"], [66, 1, 1, "id0", "DEFAULT_PROGRESS_CALLBACK"], [66, 1, 1, "", "IS_SAGEMAKER_MP_POST_1_10"], [66, 1, 1, "", "OPTIMIZER_NAME"], [66, 2, 1, "", "RaftTrainer"], [66, 1, 1, "", "SCALER_NAME"], [66, 1, 1, "", "SCHEDULER_NAME"], [66, 1, 1, "", "TRAINER_STATE_NAME"], [66, 1, 1, "", "TRAINING_ARGS_NAME"], [66, 1, 1, "", "_is_native_cpu_amp_available"], [66, 1, 1, "", "is_torch_greater_or_equal_than_1_10"], [66, 1, 1, "", "is_torch_less_than_1_11"], [66, 1, 1, "", "logger"], [66, 1, 1, "", "skip_first_batches"]], "lmflow.pipeline.utils.raft_trainer.RaftTrainer": [[66, 3, 1, "", "_add_sm_patterns_to_gitignore"], [66, 3, 1, "", "_gather_and_numpify"], [66, 3, 1, "", "_get_collator_with_removed_columns"], [66, 3, 1, "", "_get_eval_sampler"], [66, 3, 1, "", "_get_output_dir"], [66, 3, 1, "", "_get_train_sampler"], [66, 3, 1, "", "_hp_search_setup"], [66, 3, 1, "", "_inner_training_loop"], [66, 3, 1, "", "_issue_warnings_after_load"], [66, 3, 1, "", "_load_best_model"], [66, 3, 1, "", "_load_from_checkpoint"], [66, 3, 1, "", "_load_optimizer_and_scheduler"], [66, 3, 1, "", "_load_rng_state"], [66, 4, 1, "", "_loggers_initialized"], [66, 3, 1, "", "_maybe_log_save_evaluate"], [66, 4, 1, "", "_memory_tracker"], [66, 3, 1, "", "_move_model_to_device"], [66, 3, 1, "", "_nested_gather"], [66, 3, 1, "", "_one_train"], [66, 3, 1, "", "_pad_across_processes"], [66, 3, 1, "", "_prepare_input"], [66, 3, 1, "", "_prepare_inputs"], [66, 3, 1, "", "_push_from_checkpoint"], [66, 3, 1, "", "_remove_unused_columns"], [66, 3, 1, "", "_report_to_hp_search"], [66, 3, 1, "", "_rotate_checkpoints"], [66, 3, 1, "", "_save"], [66, 3, 1, "", "_save_checkpoint"], [66, 3, 1, "", "_save_tpu"], [66, 3, 1, "", "_set_signature_columns_if_needed"], [66, 4, 1, "", "_signature_columns"], [66, 3, 1, "", "_sorted_checkpoints"], [66, 4, 1, "", "_train_batch_size"], [66, 3, 1, "", "_tune_save_checkpoint"], [66, 3, 1, "", "_wrap_model"], [66, 3, 1, "", "add_callback"], [66, 4, 1, "", "args"], [66, 3, 1, "", "autocast_smart_context_manager"], [66, 3, 1, "", "call_model_init"], [66, 4, 1, "", "callback_handler"], [66, 4, 1, "", "can_return_loss"], [66, 3, 1, "", "compute_loss"], [66, 3, 1, "", "compute_loss_context_manager"], [66, 4, 1, "", "compute_metrics"], [66, 4, 1, "", "control"], [66, 3, 1, "", "create_model_card"], [66, 3, 1, "", "create_optimizer"], [66, 3, 1, "", "create_optimizer_and_scheduler"], [66, 3, 1, "", "create_scheduler"], [66, 4, 1, "", "current_flos"], [66, 4, 1, "", "data_collator"], [66, 4, 1, "", "deepspeed"], [66, 4, 1, "", "do_grad_scaling"], [66, 4, 1, "", "eval_dataset"], [66, 3, 1, "", "evaluate"], [66, 3, 1, "", "evaluation_loop"], [66, 3, 1, "", "floating_point_ops"], [66, 4, 1, "", "fsdp"], [66, 3, 1, "", "get_eval_dataloader"], [66, 3, 1, "", "get_optimizer_cls_and_kwargs"], [66, 3, 1, "", "get_test_dataloader"], [66, 3, 1, "", "get_train_dataloader"], [66, 4, 1, "", "hp_name"], [66, 4, 1, "", "hp_search_backend"], [66, 3, 1, "", "hyperparameter_search"], [66, 3, 1, "", "init_git_repo"], [66, 3, 1, "", "ipex_optimize_model"], [66, 4, 1, "", "is_in_train"], [66, 3, 1, "", "is_local_process_zero"], [66, 3, 1, "", "is_world_process_zero"], [66, 4, 1, "", "label_names"], [66, 3, 1, "", "log"], [66, 4, 1, "", "model"], [66, 4, 1, "", "model_wrapped"], [66, 3, 1, "", "num_examples"], [66, 4, 1, "", "place_model_on_device"], [66, 3, 1, "", "pop_callback"], [66, 3, 1, "", "predict"], [66, 3, 1, "", "prediction_loop"], [66, 3, 1, "", "prediction_step"], [66, 4, 1, "", "preprocess_logits_for_metrics"], [66, 3, 1, "", "push_to_hub"], [66, 3, 1, "", "remove_callback"], [66, 4, 1, "", "save_counter"], [66, 3, 1, "", "save_model"], [66, 4, 1, "", "sharded_ddp"], [66, 4, 1, "", "state"], [66, 3, 1, "", "store_flos"], [66, 4, 1, "", "tokenizer"], [66, 3, 1, "", "torch_jit_model_eval"], [66, 3, 1, "", "train"], [66, 4, 1, "", "train_dataset"], [66, 3, 1, "", "training_step"], [66, 4, 1, "", "use_apex"], [66, 4, 1, "", "use_cpu_amp"], [66, 4, 1, "", "use_cuda_amp"], [66, 4, 1, "", "use_tune_checkpoints"]], "lmflow.pipeline.utils.rm_dataprocessor": [[67, 2, 1, "", "RewardDataCollatorWithPadding"], [67, 1, 1, "", "logger"]], "lmflow.pipeline.utils.rm_dataprocessor.RewardDataCollatorWithPadding": [[67, 3, 1, "", "__call__"], [67, 4, 1, "", "max_length"], [67, 4, 1, "", "pad_to_multiple_of"], [67, 4, 1, "", "padding"], [67, 4, 1, "", "return_tensors"], [67, 4, 1, "", "tokenizer"]], "lmflow.pipeline.utils.rm_trainer": [[68, 2, 1, "", "PeftRewardTrainer"], [68, 2, 1, "", "RewardTrainer"], [68, 5, 1, "", "compute_metrics"], [68, 5, 1, "", "rm_loss"]], "lmflow.pipeline.utils.rm_trainer.PeftRewardTrainer": [[68, 3, 1, "", "compute_loss"]], "lmflow.pipeline.utils.rm_trainer.RewardTrainer": [[68, 3, 1, "", "compute_loss"]], "lmflow.pipeline.vllm_inferencer": [[69, 2, 1, "", "InferencerWithOffloading"], [69, 2, 1, "", "MemorySafeVLLMInferencer"], [69, 2, 1, "", "VLLMInferencer"], [69, 1, 1, "", "logger"]], "lmflow.pipeline.vllm_inferencer.InferencerWithOffloading": [[69, 4, 1, "", "data_args"], [69, 4, 1, "", "eos_token_id"], [69, 3, 1, "", "inference"], [69, 4, 1, "", "inferencer_args"], [69, 3, 1, "", "load_inference_results"], [69, 4, 1, "", "model_args"], [69, 3, 1, "", "save_inference_results"]], "lmflow.pipeline.vllm_inferencer.MemorySafeVLLMInferencer": [[69, 3, 1, "", "inference"], [69, 4, 1, "", "inferencer_file_path"]], "lmflow.pipeline.vllm_inferencer.VLLMInferencer": [[69, 3, 1, "", "_distributed_inference"], [69, 3, 1, "", "_inference"], [69, 3, 1, "", "inference"], [69, 3, 1, "", "load_inference_results"], [69, 3, 1, "", "parse_to_sampling_params"], [69, 4, 1, "", "sampling_params"], [69, 3, 1, "", "save_inference_results"]], "lmflow.tokenization": [[70, 0, 0, "-", "hf_decoder_model"], [71, 0, 0, "-", "hf_text_regression_model"]], "lmflow.tokenization.hf_decoder_model": [[70, 5, 1, "", "blocking"], [70, 5, 1, "", "conversation_tokenize_function"], [70, 1, 1, "", "logger"], [70, 1, 1, "", "tok_logger"], [70, 5, 1, "", "tokenize_function"]], "lmflow.tokenization.hf_text_regression_model": [[71, 5, 1, "", "blocking"], [71, 5, 1, "", "blocking_paired"], [71, 5, 1, "", "blocking_text_to_textlist"], [71, 5, 1, "", "conversation_tokenize_function"], [71, 1, 1, "", "logger"], [71, 5, 1, "", "paired_conversation_tokenize_function"], [71, 5, 1, "", "text_to_textlist_tokenize_function"], [71, 1, 1, "", "tok_logger"], [71, 5, 1, "", "tokenize_function"]], "lmflow.utils": [[73, 0, 0, "-", "common"], [74, 0, 0, "-", "constants"], [81, 0, 0, "-", "conversation_template"], [88, 0, 0, "-", "data_utils"], [92, 0, 0, "-", "flash_attention"], [96, 0, 0, "-", "llava_conversation_lib"], [97, 0, 0, "-", "model"], [98, 0, 0, "-", "multimodal"], [99, 0, 0, "-", "position_interpolation"], [101, 0, 0, "-", "versioning"]], "lmflow.utils.common": [[73, 5, 1, "", "add_dataclass_attr_prefix"], [73, 5, 1, "", "create_copied_dataclass"], [73, 1, 1, "", "logger"], [73, 5, 1, "", "make_shell_args_from_dataclass"], [73, 5, 1, "", "print_banner"], [73, 5, 1, "", "remove_dataclass_attr_prefix"]], "lmflow.utils.constants": [[74, 1, 1, "", "CONTROLLER_HEART_BEAT_EXPIRATION"], [74, 1, 1, "", "CONVERSATION_DATASET_DESCRIPTION"], [74, 1, 1, "", "CONVERSATION_ROLE_NAMES"], [74, 1, 1, "", "DATASET_DESCRIPTION_MAP"], [74, 1, 1, "", "DEFAULT_IMAGE_PATCH_TOKEN"], [74, 1, 1, "", "DEFAULT_IMAGE_TOKEN"], [74, 1, 1, "", "DEFAULT_IM_END_TOKEN"], [74, 1, 1, "", "DEFAULT_IM_START_TOKEN"], [74, 1, 1, "", "FLOAT_ONLY_DATASET_DESCRIPTION"], [74, 1, 1, "", "IGNORE_INDEX"], [74, 1, 1, "", "IMAGE_TOKEN_INDEX"], [74, 1, 1, "", "INSTANCE_FIELDS_MAP"], [74, 1, 1, "", "LMFLOW_LORA_TARGET_MODULES_MAPPING"], [74, 1, 1, "", "LOGDIR"], [74, 1, 1, "", "MEMORY_SAFE_DPOV2_ALIGN_ENV_VAR_TO_REMOVE"], [74, 1, 1, "", "MEMORY_SAFE_VLLM_INFERENCE_ENV_VAR_TO_REMOVE"], [74, 1, 1, "", "MEMORY_SAFE_VLLM_INFERENCE_FINISH_FLAG"], [74, 1, 1, "", "PAIRED_CONVERSATION_DATASET_DESCRIPTION"], [74, 1, 1, "", "PAIRED_TEXT_TO_TEXT_DATASET_DESCRIPTION"], [74, 1, 1, "", "RETURN_CODE_ERROR_BUFFER"], [74, 1, 1, "", "TEXT2TEXT_DATASET_DESCRIPTION"], [74, 1, 1, "", "TEXT2TEXT_DATASET_DETAILS"], [74, 1, 1, "", "TEXT2TEXT_DATASET_LONG_DESCRITION"], [74, 1, 1, "", "TEXT_ONLY_DATASET_DESCRIPTION"], [74, 1, 1, "", "TEXT_ONLY_DATASET_DETAILS"], [74, 1, 1, "", "TEXT_ONLY_DATASET_LONG_DESCRITION"], [74, 1, 1, "", "TEXT_TO_SCORED_TEXTLIST_DATASET_DESCRIPTION"], [74, 1, 1, "", "TEXT_TO_TEXTLIST_DATASET_DESCRIPTION"], [74, 1, 1, "", "WORKER_HEART_BEAT_INTERVAL"]], "lmflow.utils.conversation_template": [[81, 1, 1, "", "CHATGLM3_TEMPLATE"], [81, 1, 1, "", "CHATML_TEMPLATE"], [81, 2, 1, "", "ConversationTemplate"], [81, 2, 1, "", "ConversationTemplateForTool"], [81, 1, 1, "", "DEEPSEEK_TEMPLATE"], [81, 1, 1, "", "EMPTY_NO_SPECIAL_TOKENS_TEMPLATE"], [81, 1, 1, "", "EMPTY_TEMPLATE"], [81, 1, 1, "", "GEMMA_TEMPLATE"], [81, 1, 1, "", "HYMBA_TEMPLATE"], [81, 1, 1, "", "INTERNLM2_TEMPLATE"], [81, 1, 1, "", "LLAMA2_TEMPLATE"], [81, 1, 1, "", "LLAMA3_TEMPLATE"], [81, 1, 1, "", "LLAMA3_TEMPLATE_FOR_TOOL"], [81, 1, 1, "", "PHI3_TEMPLATE"], [81, 1, 1, "", "PRESET_TEMPLATES"], [81, 1, 1, "", "QWEN2_TEMPLATE"], [81, 1, 1, "", "QWEN2_TEMPLATE_FOR_TOOL"], [81, 1, 1, "", "YI1_5_TEMPLATE"], [81, 1, 1, "", "ZEPHYR_TEMPLATE"], [75, 0, 0, "-", "base"], [76, 0, 0, "-", "chatglm"], [77, 0, 0, "-", "chatml"], [78, 0, 0, "-", "deepseek"], [79, 0, 0, "-", "gemma"], [80, 0, 0, "-", "hymba"], [82, 0, 0, "-", "internlm"], [83, 0, 0, "-", "llama"], [84, 0, 0, "-", "phi"], [85, 0, 0, "-", "qwen"], [86, 0, 0, "-", "yi"], [87, 0, 0, "-", "zephyr"]], "lmflow.utils.conversation_template.ConversationTemplate": [[81, 3, 1, "", "__post_init__"], [81, 3, 1, "", "_encode"], [81, 3, 1, "", "_encode_template"], [81, 3, 1, "", "_ensure_id_list"], [81, 3, 1, "", "add_special_starter"], [81, 3, 1, "", "add_special_stopper"], [81, 4, 1, "", "assistant_formatter"], [81, 3, 1, "", "encode_conversation"], [81, 4, 1, "", "force_system"], [81, 4, 1, "", "function_formatter"], [81, 4, 1, "", "observation_formatter"], [81, 3, 1, "", "post_process_pairs"], [81, 4, 1, "", "remove_last_sep"], [81, 3, 1, "", "remove_last_separator"], [81, 4, 1, "", "separator"], [81, 4, 1, "", "special_starter"], [81, 4, 1, "", "special_stopper"], [81, 4, 1, "", "system_formatter"], [81, 4, 1, "", "template_name"], [81, 4, 1, "", "tools_formatter"], [81, 4, 1, "", "user_formatter"]], "lmflow.utils.conversation_template.ConversationTemplateForTool": [[81, 3, 1, "", "_encode"], [81, 3, 1, "", "_encode_template"], [81, 3, 1, "", "encode_conversation"]], "lmflow.utils.conversation_template.base": [[75, 2, 1, "", "ConversationTemplate"], [75, 2, 1, "", "ConversationTemplateForTool"], [75, 1, 1, "", "EMPTY_NO_SPECIAL_TOKENS_TEMPLATE"], [75, 1, 1, "", "EMPTY_TEMPLATE"], [75, 2, 1, "", "EmptyFormatter"], [75, 2, 1, "", "Formatter"], [75, 2, 1, "", "ListFormatter"], [75, 2, 1, "", "StringFormatter"], [75, 2, 1, "", "TemplateComponent"], [75, 1, 1, "", "logger"]], "lmflow.utils.conversation_template.base.ConversationTemplate": [[75, 3, 1, "", "__post_init__"], [75, 3, 1, "", "_encode"], [75, 3, 1, "", "_encode_template"], [75, 3, 1, "", "_ensure_id_list"], [75, 3, 1, "", "add_special_starter"], [75, 3, 1, "", "add_special_stopper"], [75, 4, 1, "", "assistant_formatter"], [75, 3, 1, "", "encode_conversation"], [75, 4, 1, "", "force_system"], [75, 4, 1, "", "function_formatter"], [75, 4, 1, "", "observation_formatter"], [75, 3, 1, "", "post_process_pairs"], [75, 4, 1, "", "remove_last_sep"], [75, 3, 1, "", "remove_last_separator"], [75, 4, 1, "", "separator"], [75, 4, 1, "", "special_starter"], [75, 4, 1, "", "special_stopper"], [75, 4, 1, "", "system_formatter"], [75, 4, 1, "", "template_name"], [75, 4, 1, "", "tools_formatter"], [75, 4, 1, "", "user_formatter"]], "lmflow.utils.conversation_template.base.ConversationTemplateForTool": [[75, 3, 1, "", "_encode"], [75, 3, 1, "", "_encode_template"], [75, 3, 1, "", "encode_conversation"]], "lmflow.utils.conversation_template.base.EmptyFormatter": [[75, 3, 1, "", "__post_init__"], [75, 3, 1, "", "format"]], "lmflow.utils.conversation_template.base.Formatter": [[75, 3, 1, "", "format"], [75, 3, 1, "", "has_placeholder"], [75, 4, 1, "", "template"]], "lmflow.utils.conversation_template.base.ListFormatter": [[75, 3, 1, "", "format"]], "lmflow.utils.conversation_template.base.StringFormatter": [[75, 3, 1, "", "__post_init__"], [75, 3, 1, "", "format"]], "lmflow.utils.conversation_template.base.TemplateComponent": [[75, 3, 1, "", "__post_init__"], [75, 3, 1, "", "__repr__"], [75, 3, 1, "", "__str__"], [75, 4, 1, "", "content"], [75, 4, 1, "", "mask"], [75, 4, 1, "", "type"]], "lmflow.utils.conversation_template.chatglm": [[76, 1, 1, "", "CHATGLM3_TEMPLATE"]], "lmflow.utils.conversation_template.chatml": [[77, 1, 1, "", "CHATML_TEMPLATE"]], "lmflow.utils.conversation_template.deepseek": [[78, 1, 1, "", "DEEPSEEK_TEMPLATE"]], "lmflow.utils.conversation_template.gemma": [[79, 1, 1, "", "GEMMA_TEMPLATE"], [79, 2, 1, "", "GemmaConversationTemplate"], [79, 1, 1, "", "logger"]], "lmflow.utils.conversation_template.gemma.GemmaConversationTemplate": [[79, 3, 1, "", "encode_conversation"]], "lmflow.utils.conversation_template.hymba": [[80, 1, 1, "", "HYMBA_TEMPLATE"], [80, 2, 1, "", "HymbaConversationTemplate"]], "lmflow.utils.conversation_template.hymba.HymbaConversationTemplate": [[80, 3, 1, "", "encode_conversation"]], "lmflow.utils.conversation_template.internlm": [[82, 1, 1, "", "INTERNLM2_TEMPLATE"]], "lmflow.utils.conversation_template.llama": [[83, 1, 1, "", "LLAMA2_TEMPLATE"], [83, 1, 1, "", "LLAMA2_TEMPLATE_FOR_TOOL"], [83, 1, 1, "", "LLAMA3_TEMPLATE"], [83, 1, 1, "", "LLAMA3_TEMPLATE_FOR_TOOL"], [83, 2, 1, "", "Llama2ConversationTemplate"], [83, 2, 1, "", "Llama2ConversationTemplateForTool"], [83, 1, 1, "", "logger"]], "lmflow.utils.conversation_template.llama.Llama2ConversationTemplate": [[83, 3, 1, "", "_encode"]], "lmflow.utils.conversation_template.llama.Llama2ConversationTemplateForTool": [[83, 3, 1, "", "_encode"]], "lmflow.utils.conversation_template.phi": [[84, 1, 1, "", "PHI3_TEMPLATE"]], "lmflow.utils.conversation_template.qwen": [[85, 1, 1, "", "QWEN2_TEMPLATE"], [85, 1, 1, "", "QWEN2_TEMPLATE_FOR_TOOL"]], "lmflow.utils.conversation_template.yi": [[86, 1, 1, "", "YI1_5_TEMPLATE"]], "lmflow.utils.conversation_template.zephyr": [[87, 1, 1, "", "ZEPHYR_TEMPLATE"], [87, 2, 1, "", "ZephyrConversationTemplate"], [87, 1, 1, "", "logger"]], "lmflow.utils.conversation_template.zephyr.ZephyrConversationTemplate": [[87, 3, 1, "", "_encode"]], "lmflow.utils.data_utils": [[88, 2, 1, "", "RewardModelInferenceResultWithInput"], [88, 2, 1, "", "VLLMInferenceResultWithInput"], [88, 5, 1, "", "answer_extraction"], [88, 5, 1, "", "batchlize"], [88, 5, 1, "", "load_data"], [88, 5, 1, "", "process_image_flag"], [88, 5, 1, "", "set_random_seed"]], "lmflow.utils.data_utils.RewardModelInferenceResultWithInput": [[88, 4, 1, "", "input"], [88, 4, 1, "", "output"]], "lmflow.utils.data_utils.VLLMInferenceResultWithInput": [[88, 4, 1, "", "input"], [88, 4, 1, "", "output"]], "lmflow.utils.flash_attention": [[89, 0, 0, "-", "bloom_flash_attention"], [90, 0, 0, "-", "gpt2_flash_attention"], [91, 0, 0, "-", "gpt_neo_flash_attention"], [93, 0, 0, "-", "llama_flash_attention"], [94, 0, 0, "-", "triton_flash_attention"]], "lmflow.utils.flash_attention.bloom_flash_attention": [[89, 5, 1, "", "_prepare_attn_mask"], [89, 5, 1, "", "forward"], [89, 5, 1, "", "replace_bloom_attn_with_flash_attn"]], "lmflow.utils.flash_attention.gpt2_flash_attention": [[90, 5, 1, "", "_prepare_decoder_attention_mask"], [90, 5, 1, "", "forward"], [90, 5, 1, "", "replace_gpt2_attn_with_flash_attn"]], "lmflow.utils.flash_attention.gpt_neo_flash_attention": [[91, 5, 1, "", "_attn"], [91, 5, 1, "", "forward"], [91, 5, 1, "", "replace_gpt_neo_attn_with_flash_attn"]], "lmflow.utils.flash_attention.llama_flash_attention": [[93, 5, 1, "", "_prepare_decoder_attention_mask"], [93, 5, 1, "", "forward"], [93, 5, 1, "", "replace_llama_attn_with_flash_attn"]], "lmflow.utils.flash_attention.triton_flash_attention": [[94, 2, 1, "", "FlashAttnFunc"], [94, 2, 1, "", "FlashAttnKVPackedFunc"], [94, 2, 1, "", "FlashAttnQKVPackedFunc"], [94, 5, 1, "", "_bwd_kernel"], [94, 5, 1, "", "_bwd_kernel_one_col_block"], [94, 5, 1, "", "_bwd_preprocess_do_o_dot"], [94, 5, 1, "", "_bwd_store_dk_dv"], [94, 5, 1, "", "_flash_attn_backward"], [94, 5, 1, "", "_flash_attn_forward"], [94, 5, 1, "", "_fwd_kernel"], [94, 1, 1, "", "flash_attn_func"], [94, 1, 1, "", "flash_attn_kvpacked_func"], [94, 1, 1, "", "flash_attn_qkvpacked_func"], [94, 5, 1, "", "init_to_zero"]], "lmflow.utils.flash_attention.triton_flash_attention.FlashAttnFunc": [[94, 3, 1, "", "backward"], [94, 3, 1, "", "forward"]], "lmflow.utils.flash_attention.triton_flash_attention.FlashAttnKVPackedFunc": [[94, 3, 1, "", "backward"], [94, 3, 1, "", "forward"]], "lmflow.utils.flash_attention.triton_flash_attention.FlashAttnQKVPackedFunc": [[94, 3, 1, "", "backward"], [94, 3, 1, "", "forward"]], "lmflow.utils.llava_conversation_lib": [[96, 2, 1, "", "Conversation"], [96, 2, 1, "", "SeparatorStyle"], [96, 1, 1, "", "conv_llama_2"], [96, 1, 1, "", "conv_llava_llama_2"], [96, 1, 1, "", "conv_llava_plain"], [96, 1, 1, "", "conv_llava_v0"], [96, 1, 1, "", "conv_llava_v0_mmtag"], [96, 1, 1, "", "conv_llava_v1"], [96, 1, 1, "", "conv_llava_v1_mmtag"], [96, 1, 1, "", "conv_mpt"], [96, 1, 1, "", "conv_templates"], [96, 1, 1, "", "conv_vicuna_v0"], [96, 1, 1, "", "conv_vicuna_v1"], [96, 1, 1, "", "default_conversation"]], "lmflow.utils.llava_conversation_lib.Conversation": [[96, 3, 1, "", "append_message"], [96, 3, 1, "", "copy"], [96, 3, 1, "", "dict"], [96, 3, 1, "", "get_images"], [96, 3, 1, "", "get_prompt"], [96, 4, 1, "", "messages"], [96, 4, 1, "", "offset"], [96, 4, 1, "", "roles"], [96, 4, 1, "", "sep"], [96, 4, 1, "", "sep2"], [96, 4, 1, "", "sep_style"], [96, 4, 1, "", "skip_next"], [96, 4, 1, "", "system"], [96, 3, 1, "", "to_gradio_chatbot"], [96, 4, 1, "", "version"]], "lmflow.utils.llava_conversation_lib.SeparatorStyle": [[96, 4, 1, "", "LLAMA_2"], [96, 4, 1, "", "MPT"], [96, 4, 1, "", "PLAIN"], [96, 4, 1, "", "SINGLE"], [96, 4, 1, "", "TWO"]], "lmflow.utils.model": [[97, 5, 1, "", "check_homogeneity"], [97, 1, 1, "", "logger"]], "lmflow.utils.multimodal": [[98, 5, 1, "", "adapt_llava_model_to_lmflow_type"], [98, 5, 1, "", "load_llava_pretrain_model"], [98, 5, 1, "", "update_custom_config"]], "lmflow.utils.position_interpolation": [[100, 0, 0, "-", "llama_rope_scaled_monkey_patch"]], "lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch": [[100, 2, 1, "", "CondenseRotaryEmbedding"], [100, 5, 1, "", "replace_llama_with_condense"]], "lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch.CondenseRotaryEmbedding": [[100, 3, 1, "", "forward"], [100, 4, 1, "", "max_seq_len_cached"], [100, 4, 1, "", "ntk_ratio"], [100, 4, 1, "", "pi_ratio"]], "lmflow.utils.versioning": [[101, 5, 1, "", "_is_package_available"], [101, 5, 1, "", "_is_packages_available"], [101, 5, 1, "", "get_python_version"], [101, 5, 1, "", "is_flash_attn_available"], [101, 5, 1, "", "is_flask_available"], [101, 5, 1, "", "is_gradio_available"], [101, 5, 1, "", "is_multimodal_available"], [101, 5, 1, "", "is_package_version_at_least"], [101, 5, 1, "", "is_ray_available"], [101, 5, 1, "", "is_trl_available"], [101, 5, 1, "", "is_vllm_available"], [101, 1, 1, "", "logger"]], "lmflow.version": [[102, 1, 1, "", "__version__"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "data", "Python data"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"], "4": ["py", "attribute", "Python attribute"], "5": ["py", "function", "Python function"], "6": ["py", "property", "Python property"]}, "objtypes": {"0": "py:module", "1": "py:data", "2": "py:class", "3": "py:method", "4": "py:attribute", "5": "py:function", "6": "py:property"}, "terms": {"": [4, 13, 16, 51, 66, 103, 105, 106, 108, 111, 112, 113, 114, 115], "0": [2, 4, 5, 6, 8, 13, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44, 45, 51, 52, 55, 57, 60, 61, 66, 94, 102, 103, 107, 112, 113, 114, 115], "000": 103, "0001": 44, "0005": 4, "001": [25, 26, 28, 29, 31, 33, 36, 41, 43, 45], "002": [30, 38], "0025": 32, "004": 38, "00962": 36, "01": [37, 39, 45], "02155": [112, 113], "03265": 41, "04": 44, "05": 4, "0501": 103, "06": [27, 36, 45], "06677": 33, "08": [26, 28, 29, 30, 31, 32, 33, 37, 38, 39, 41, 43], "08217": [31, 43], "09843": 26, "1": [2, 3, 4, 5, 6, 13, 22, 26, 27, 31, 37, 42, 43, 44, 51, 52, 55, 61, 66, 94, 103, 105, 109, 110, 111, 115], "10": [4, 36, 103, 112, 113], "100": [4, 55, 60, 61, 66, 74, 94, 113], "1000": 4, "10000": [100, 112, 113], "10000000000": 4, "101": [13, 103], "1010": 13, "102": 13, "1024": [4, 55, 112], "105": 103, "106": 103, "109": 103, "10k": 113, "112k": [112, 113], "113": 103, "119": 103, "12": [112, 113], "120b": 115, "121": 103, "123": 103, "124": 103, "125": [103, 112], "128": [4, 94, 113], "129": 103, "12k": 113, "130": 103, "134": [74, 103], "135": 103, "139": 103, "13b": [103, 113], "140": 103, "141": 103, "146": 103, "147": 103, "149": 103, "15": 74, "150": 103, "151": 103, "153": 103, "155": 103, "16": [25, 57, 94, 113], "160": 103, "163": 103, "164": 103, "165": 103, "1659": 112, "167": 103, "1692": 112, "170": 103, "17192": 55, "17192v2": 55, "172": 103, "173": 103, "175": 103, "175b": 115, "176b": 115, "18": 115, "180": 103, "181": 103, "183": 103, "184": 103, "188": 103, "1902": 26, "1904": 36, "1908": [15, 41], "1935": 112, "1938": 112, "198": 103, "1b": 103, "1e": [25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 41, 43, 45, 55], "2": [4, 5, 6, 32, 42, 55, 57, 75, 80, 81, 94, 103, 105, 109, 110, 111, 115], "20": [4, 66, 103, 109, 112], "200": [74, 103], "2005": 112, "2006": [31, 43], "2020": [25, 112], "2023": [2, 103, 115], "2048": [4, 100], "206": 103, "207": 103, "2088": 13, "21": 115, "211": 103, "213": 103, "214": 103, "215": 103, "219": 103, "22": 112, "220": 103, "2203": [112, 113], "2208": 33, "2211": 55, "222": 103, "224": 103, "228": 103, "23": 115, "237": 103, "24": [50, 112, 113, 115], "240": 103, "245": 103, "25": 115, "254": 103, "256": 112, "258": 103, "25mb": 115, "26": 115, "262": 103, "266": 103, "27": 115, "28": [2, 115], "280b": 115, "29": 115, "2e": 112, "2k": 112, "3": [94, 103, 105, 106, 109, 110, 115], "30": [74, 103, 112, 115], "30b": 115, "32": [4, 94, 113, 115], "33": 103, "33b": 115, "34": 103, "35": [103, 115], "36": 115, "37": [103, 115], "38": 103, "39": [103, 112, 115], "3b": [103, 109, 112, 113], "3e": 112, "4": [4, 69, 103, 105, 112, 115], "40": [94, 103, 115], "400": 112, "41": 103, "42": [4, 5, 6, 103], "43": 115, "44": [103, 115], "447": 103, "46": 115, "48": [57, 94], "49": 115, "4bit": 4, "4rtemi5": 45, "5": [4, 55, 61, 103, 109, 112, 113, 115], "50": 115, "51": 115, "512": [4, 113], "5120": 44, "52": [103, 112, 113], "53": 103, "54": 115, "55": [103, 113, 115], "56": [103, 115], "57": [103, 115], "58": [103, 112, 113, 115], "59": [103, 115], "5k": [112, 113], "6": [37, 55, 103, 112, 115], "60": [103, 115], "600mb": 103, "61": [103, 115], "62": 103, "63": [103, 115], "64": [4, 94, 103, 112, 113, 115], "65": [103, 112, 113, 115], "66": [103, 115], "67": [103, 115], "68": [103, 115], "69": [103, 112, 113, 115], "7": [103, 112, 115], "70": [103, 115], "71": [103, 112, 113], "72": [103, 115], "73": [103, 115], "74": [103, 115], "75": [103, 115], "7592": 13, "76": [36, 103], "767": 103, "77": 103, "78": [103, 115], "79": [103, 112, 113], "7b": [103, 105, 107, 109, 112, 113, 115], "7oemwynu": 113, "8": [4, 57, 103, 112, 115], "80": [94, 113], "800": 112, "81": [103, 113], "8186": 45, "82": 103, "82147": 112, "83": 103, "84": 113, "85": [103, 115], "86": 103, "87": 115, "88": [94, 103], "888888888": 57, "89": 103, "8b": 109, "8fc1rcf8": 113, "9": [4, 8, 25, 26, 29, 30, 31, 32, 34, 36, 38, 39, 41, 42, 45, 102, 103, 106, 115], "90": 115, "900mb": 103, "92": 33, "95": [4, 27, 103], "96": [94, 103], "965": 44, "97": 103, "98": 33, "99": [33, 44], "999": [4, 25, 26, 29, 30, 31, 32, 34, 36, 38, 39, 41, 45], "9b": 103, "A": [1, 5, 6, 11, 12, 13, 14, 16, 21, 22, 25, 26, 31, 32, 34, 36, 37, 41, 42, 43, 44, 45, 47, 49, 52, 57, 61, 66, 73, 88, 96, 103, 105, 112, 114], "And": 7, "As": [32, 42, 103, 105, 112, 113, 114], "At": 60, "But": 112, "By": [4, 66, 107, 112, 115], "For": [4, 66, 71, 75, 94, 103, 105, 108, 109, 110, 112, 113, 114, 115], "If": [4, 61, 66, 88, 94, 103, 105, 106, 111, 112, 113, 115], "In": [66, 103, 105, 106, 107, 112, 113], "It": [4, 13, 14, 26, 31, 36, 41, 43, 45, 52, 66, 103, 105, 108, 112, 115], "Its": [103, 105, 115], "NOT": 55, "No": 103, "ONE": 108, "Of": [13, 16], "On": [41, 103], "One": [66, 103], "Or": [112, 113], "That": 112, "The": [1, 4, 5, 6, 7, 11, 12, 13, 14, 16, 22, 32, 34, 37, 42, 46, 50, 52, 53, 55, 57, 61, 66, 73, 75, 88, 94, 103, 105, 112, 113, 114, 115], "Then": [52, 107, 112], "There": [103, 112, 113], "These": [103, 108], "To": [32, 42, 66, 105, 108, 112, 113, 115], "Will": [66, 69], "With": [107, 114], "_": 65, "__call__": [7, 60, 67], "__distributed_infer": 58, "__filter_arg": 56, "__getitem__": 7, "__infer": [13, 16, 58], "__init__": [13, 14, 108], "__len__": [5, 6, 7, 66], "__model_module_inject": 15, "__post_init__": [4, 75, 81], "__post_process_model_output": 58, "__prepare_dtyp": 15, "__prepare_inputs_for_infer": 13, "__prepare_inputs_for_vllm_infer": 13, "__prepare_model_config": 15, "__prepare_model_for_infer": 15, "__prepare_model_for_train": 15, "__prepare_model_for_vllm_infer": 15, "__prepare_model_post_process": 15, "__prepare_peft_config": 15, "__prepare_quant_config": 15, "__prepare_token": 15, "__prepare_training_arg": 51, "__repr__": 75, "__setstate__": [25, 26, 30, 33, 37, 38, 39, 41, 44], "__str__": 75, "__version__": [8, 102], "__vllm_infer": [13, 16, 58], "_activ": 15, "_add_sm_patterns_to_gitignor": 66, "_align_single_iter": 56, "_attn": 91, "_bwd_kernel": 94, "_bwd_kernel_one_col_block": 94, "_bwd_preprocess_do_o_dot": 94, "_bwd_store_dk_dv": 94, "_calc_response_length": 51, "_calc_reward_with_length_penalti": 51, "_channel_view": [31, 43], "_check_data_format": [5, 6], "_check_if_align": 47, "_check_if_tun": 49, "_clean_text": [57, 112], "_cosine_similar": [31, 43], "_discard_sampl": [57, 112], "_distributed_infer": 69, "_do_reward_model_infer": 56, "_do_single_dpo_align": 56, "_do_target_model_infer": 56, "_encod": [75, 81, 83, 87], "_encode_templ": [75, 81], "_ensure_id_list": [75, 81], "_evaluate_acc_with_acceler": 52, "_evaluate_acc_with_deepspe": 52, "_evaluate_nl": 52, "_evaluate_ppl": 52, "_flash_attn_backward": 94, "_flash_attn_forward": 94, "_foreach_mul_": [32, 42], "_fwd_kernel": 94, "_gather_and_numpifi": 66, "_get_batch_dataset_loc": 57, "_get_batch_dataset_top": 57, "_get_collator_with_removed_column": 66, "_get_eval_sampl": 66, "_get_output_dir": 66, "_get_train_sampl": 66, "_hp_search_setup": 66, "_infer": [58, 69], "_initialize_train": [50, 57], "_inner_training_loop": 66, "_internal_cal": 66, "_is_native_cpu_amp_avail": 66, "_is_package_avail": 101, "_is_packages_avail": 101, "_issue_warnings_after_load": 66, "_layer_view": [31, 43], "_load_best_model": 66, "_load_dataset": [50, 57], "_load_from_checkpoint": 66, "_load_input_dataset": 57, "_load_optimizer_and_schedul": 66, "_load_rng_stat": 66, "_loggers_initi": 66, "_match": 52, "_maybe_log_save_evalu": 66, "_memory_track": 66, "_move_model_to_devic": 66, "_multi_tensor_adan": 33, "_nested_gath": 66, "_one_train": 66, "_pad_across_process": 66, "_parse_dpo_aligner_arg": 56, "_parse_reward_model_inference_arg": 56, "_parse_target_model_inference_arg": 56, "_prepare_attn_mask": 89, "_prepare_decoder_attention_mask": [90, 93], "_prepare_input": 66, "_project": [31, 43], "_provided_": 61, "_push_from_checkpoint": 66, "_remove_unused_column": 66, "_report_to_hp_search": 66, "_rotate_checkpoint": 66, "_sampling_paired_idx_from_reward": 51, "_sampling_paired_idx_from_rewards_fast": 51, "_save": [65, 66], "_save_checkpoint": [65, 66], "_save_tpu": 66, "_set_signature_columns_if_need": 66, "_signature_column": 66, "_single_tensor_adan": 33, "_sorted_checkpoint": 66, "_train_batch_s": 66, "_tune_save_checkpoint": 66, "_wrap_model": 66, "a1": 103, "a100": 94, "a2": 103, "a3": 103, "ab": [26, 31, 33, 36, 41, 43, 55, 112, 113], "abc": [10, 11, 12, 15, 19, 20, 22, 48, 69, 75], "abil": [103, 115], "abl": [22, 66, 103, 112], "about": [4, 66, 103, 112, 113, 115], "abov": [103, 105, 108], "abspath": 111, "abstract": [13, 14, 16, 47, 49, 55, 58, 69, 75, 108], "accelerate_config_fil": 4, "accept": [14, 15, 21, 52, 66, 105, 112], "access": [4, 66, 103, 105, 107, 115], "accid": 112, "accomplish": 112, "accord": [37, 66, 103, 112], "account": 115, "accuraci": [4, 52, 103, 112, 113, 115], "achiev": [103, 112, 115], "acquir": [103, 115], "across": [75, 94], "activ": [106, 112, 115], "activate_model_for_infer": 15, "actual": [75, 103, 112], "ad": [109, 112, 113], "adabelief": [3, 4, 35], "adabound": [3, 4, 35], "adadelta": [3, 4, 35], "adagrad": [3, 4, 35], "adam": [3, 4, 25, 35, 36, 103], "adamax": [3, 4, 35], "adamp": [3, 4, 35, 43], "adamw": [32, 66, 110], "adamw_schedule_fre": [3, 4, 35], "adamwschedulefre": 32, "adan": [3, 4, 35], "adapt": [4, 13, 14, 25, 26, 33, 41, 45, 65, 66, 110, 112, 115], "adapt_llava_model_to_lmflow_typ": 98, "add": [7, 32, 42, 66, 73, 105, 106, 108, 112, 114], "add_callback": 66, "add_dataclass_attr_prefix": 73, "add_generation_prompt": 114, "add_special_start": [75, 81], "add_special_stopp": [75, 81], "add_special_token": [13, 16, 70, 71], "addit": [4, 7, 66], "addition": [103, 112, 113], "additional_stop_token_id": 4, "adjust": [55, 112, 113], "administ": 103, "administr": 112, "adobada": 103, "adopt": 112, "advanc": 112, "advantag": 103, "advers": 103, "advic": 115, "affect": 113, "afflict": 103, "afford": [103, 112], "after": [4, 7, 13, 16, 55, 69, 75, 103, 106, 108, 112, 114], "ag": [105, 108, 114], "again": 66, "ago": 113, "ai": [103, 105, 112, 113, 115], "aim": 115, "al": 103, "algorithm": [25, 26, 31, 33, 36, 41, 43, 45, 103, 109, 110], "alibi": [89, 94], "align": [4, 37, 47, 50, 51, 56, 57, 105, 110], "aligner_arg": [50, 51, 56, 57], "aligner_file_path": 51, "all": [15, 40, 61, 66, 94, 96, 103, 105, 107, 108, 109, 112, 113, 115], "allevi": 112, "allow": [13, 14, 66, 103, 109, 115], "almost": 108, "along": 66, "alpaca": [103, 105, 107, 109], "alpha": 57, "alreadi": [4, 66, 75, 103, 105, 112, 113], "alright": 113, "also": [4, 11, 12, 32, 42, 52, 60, 66, 103, 106, 108, 112, 113, 114, 115], "altern": [112, 114], "although": [103, 112, 113], "alwai": [66, 103, 112, 114], "am": [103, 105, 108, 112, 114], "america": [112, 113], "american": 103, "among": 115, "amount": [112, 113], "amsbound": 26, "amsgrad": [25, 39], "an": [4, 10, 11, 12, 15, 19, 20, 22, 34, 48, 66, 69, 75, 94, 104, 105, 108, 109, 112, 113, 115], "analog": 37, "anatomi": 115, "ani": [7, 13, 16, 60, 66, 67, 103, 105, 112, 113, 114, 115], "anim": 113, "announc": 115, "anoth": [66, 103, 112], "another_data": 105, "answer": [13, 14, 50, 88, 103, 105, 106, 112, 113, 115], "answer_extract": 88, "answer_neg": 113, "answer_posit": 113, "answer_typ": [4, 52, 88, 106, 107], "anthropologi": 112, "anyon": 115, "anyth": 112, "api": [1, 103, 115], "api_doc": 66, "app": 66, "appear": 113, "append": 75, "append_messag": 96, "appl": 103, "appli": [4, 69, 75, 103, 105, 112, 115], "applic": [37, 66, 103, 115], "apply_chat_templ": [4, 13, 69], "appreci": 112, "approach": 115, "appropri": [66, 103, 112, 113], "approxim": 55, "ar": [13, 14, 16, 50, 60, 66, 73, 75, 94, 103, 105, 106, 107, 108, 112, 113, 114, 115], "arbitrari": 94, "arc_": 103, "arc_c": 103, "arc_easi": 103, "arch_typ": 4, "architectur": [4, 66], "area": [103, 113, 115], "aren": 112, "arena": 103, "arg": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 21, 22, 23, 46, 47, 49, 51, 53, 55, 56, 57, 58, 59, 61, 63, 65, 66, 69, 70, 71, 79, 88, 96, 97, 111], "argmax": 55, "argument": [4, 5, 6, 13, 14, 15, 16, 21, 25, 26, 31, 32, 34, 36, 37, 41, 42, 43, 45, 52, 53, 55, 57, 58, 59, 66, 73, 75, 88, 105, 111], "argv": 111, "around": [13, 14, 103], "arr": 103, "arrai": [66, 103], "arriv": 103, "articl": 103, "arxiv": [26, 31, 33, 36, 41, 43, 55, 112, 113], "asada": 103, "ask": [108, 112], "aspect": 103, "assign": [4, 61, 112], "assist": [75, 80, 81, 103, 105, 106, 108, 112, 113, 114], "assistant_formatt": [75, 81, 108], "assistant_reply_0": 114, "assistant_reply_1": 114, "assistant_response_1": 105, "assistant_response_1_bad": 105, "assistant_response_1_good": 105, "assistant_response_2": 105, "assistant_response_2_bad": 105, "assistant_response_2_good": 105, "associ": 115, "assum": [113, 115], "at_init": 66, "atmospher": 112, "atomic_add": 94, "attack": 112, "attain": 115, "attempt": 103, "attend": 103, "attent": [13, 14, 22, 94], "attention_mask": [13, 22, 23, 89, 90, 91, 93, 113], "attn": 71, "auk": 113, "authent": 103, "author": [103, 115], "auto": [3, 4, 15], "auto_model": [3, 17], "auto_pipelin": [3, 54, 111], "autoapi": 3, "autoargu": [4, 111], "autocast": 66, "autocast_smart_context_manag": 66, "autograd": 94, "automat": [4, 9, 37, 46, 66, 104, 112], "automodel": 9, "automodelforsequenceclassif": 15, "autopipelin": [46, 111], "autoregressive_sampl": 55, "autotoken": 67, "avail": [66, 103, 105, 106, 115], "averag": [103, 115], "avoid": [22, 103, 112], "awar": [103, 115], "b": [44, 88, 106], "back": [4, 108, 112], "backbon": 115, "backend": [5, 6, 13, 14, 15, 16, 66, 94], "backend_dataset": [5, 6], "backward": [66, 94], "bad": 103, "bai": 103, "bake": [103, 112], "bar": [11, 12], "barbecu": 103, "barrel": 103, "base": [3, 4, 7, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 59, 61, 65, 66, 68, 69, 79, 80, 81, 83, 87, 88, 94, 96, 100, 103, 108, 109, 112, 113, 115], "base_align": [3, 50, 51, 54, 57], "base_lr": 26, "base_model": [3, 11, 12, 15, 17, 20, 22], "base_pipelin": [3, 47, 49, 52, 54, 55, 58, 69], "base_trainer_class": 53, "base_tun": [3, 53, 54], "basealign": [47, 50, 51, 57], "basemodel": [10, 11, 12, 15, 20, 22, 57], "basepipelin": [47, 48, 49, 52, 55, 58, 69], "basetun": [47, 49, 53], "basic": [66, 113], "batch": [13, 22, 36, 37, 52, 60, 61, 66, 88, 94, 112, 113], "batch_input": 57, "batch_siz": [22, 58, 61, 66, 69, 88, 94, 112], "batchliz": [55, 88], "battl": 103, "bbq": 103, "beam": 4, "bean": 103, "beauti": 103, "becaus": [66, 103, 112], "been": [26, 31, 36, 41, 43, 45, 66, 94, 103, 112], "befor": [32, 42, 66, 105, 108, 112, 114, 115], "begin": [13, 16, 32, 37, 42, 105, 108, 112, 114], "begin_of_text": [105, 108, 114], "beginn": [108, 115], "behavior": 66, "behind": 103, "being": [66, 75, 80, 81, 103, 112, 113], "belief": [25, 112], "believ": 115, "below": [15, 105, 106, 108, 115], "ben": 103, "benchamrk": 106, "benchmark": [104, 110], "benchmarkingargu": 4, "benefit": 115, "bert": 36, "besid": 103, "best": [51, 65, 66, 103, 112, 113], "bestrun": 66, "beta": [4, 25, 26, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 44, 45, 61], "beta1": 33, "beta2": 33, "beta3": 33, "better": [103, 109, 112, 115], "between": [75, 94, 103, 108, 109], "beyond": 41, "bf16": 4, "bg677mxa": 113, "bia": [4, 94], "bias": 52, "bias_correction1": 33, "bias_correction2": 33, "bias_correction3_sqrt": 33, "bias_typ": 94, "bigger": 112, "bin": 66, "biologi": [103, 115], "bit": [4, 94, 112, 113], "blank": [11, 12], "blend": 103, "bleu": 66, "blip2config": 22, "blip2forconditionalgener": 22, "block": [4, 53, 66, 70, 71], "block_headdim": 94, "block_m": 94, "block_n": 94, "block_siz": [4, 52, 70, 71], "blocking_pair": 71, "blocking_text_to_textlist": 71, "blog": 115, "bloom": [103, 115], "bloom_flash_attent": [3, 92], "bo": [75, 105, 108, 114], "bold": 103, "bolt": 37, "book": 112, "bool": [4, 5, 6, 7, 13, 15, 16, 22, 26, 31, 33, 36, 37, 43, 44, 50, 51, 55, 58, 60, 61, 66, 67, 69, 73, 75, 81, 88, 89, 90, 93, 96, 97, 101], "boolean": 4, "boolq": 103, "booltensor": 89, "bos_token": [75, 108, 114], "both": [66, 94, 103, 112, 115], "bound": 26, "bowl": 103, "branch": [4, 106], "brand": 112, "break": [103, 113], "breakthrough": 103, "brief": [11, 12], "bring": [103, 112], "brisket": 103, "broadcast": 94, "brought": 103, "brown": 112, "buffer": 4, "bug": 112, "bui": 112, "build": [103, 112, 113, 115], "build_dataset": 113, "build_vision_tow": [23, 24], "built": 112, "burden": 112, "burrito": 103, "butter": 112, "byol": 37, "c": [88, 103], "cach": [4, 5, 6, 66], "cache_dir": [4, 50], "cache_en": 66, "cache_key_seqlen_k": 94, "cache_key_seqlen_q": 94, "cake": 103, "calam": 103, "call": [13, 14, 32, 42, 66, 103, 108, 112], "call_model_init": 66, "callabl": [25, 32, 34, 42, 61, 66], "callback": [61, 66], "callback_handl": 66, "calm": 103, "can": [4, 13, 14, 32, 42, 66, 73, 75, 103, 105, 106, 107, 108, 112, 113, 115], "can_return_loss": 66, "cannot": [15, 103], "cant": [112, 113], "capabl": 112, "capac": 115, "capit": 103, "capitol": 103, "caption": 22, "captur": 44, "card": 66, "care": 112, "carefulli": [103, 112], "caribbean": 112, "carn": 103, "carnita": 103, "carri": [103, 112], "carrier": 103, "casa": 103, "case": [60, 65, 66, 94, 103, 107, 112], "casual": 103, "cat": 112, "categori": 112, "cater": 115, "caus": [103, 112], "causal": 94, "causallmoutputwithpast": 22, "caution": 94, "cc": 45, "cd": [105, 106, 107, 109, 112], "cell": 112, "centuri": 112, "certain": [103, 112, 113], "cevich": 103, "chain": 103, "challeng": [103, 112, 113], "chang": [94, 106, 112], "changelog": [2, 115], "charact": 112, "chat": [4, 69, 105], "chatbot": [103, 105, 108, 114], "chatbot_typ": 55, "chatglm": [3, 81], "chatglm3": 105, "chatglm3_templ": [76, 81], "chatgpt": [103, 108, 115], "chatml": [3, 81, 105], "chatml_templ": [77, 81], "cheap": 103, "check": [5, 6, 66, 103, 105], "check_homogen": 97, "checkout": [106, 112], "checkpoint": [4, 32, 42, 65, 66, 103, 110, 112], "checkpoint_fold": 66, "checkpoint_path": 98, "checkpoint_prefix": 66, "chees": 103, "chemistri": 103, "chesapeak": 103, "chess": 103, "chessboard": 103, "chicken": 103, "child": 112, "chile": 103, "chili": 103, "chines": 103, "chip": 112, "chocol": [103, 112], "choic": [4, 88, 103, 112, 113], "choos": [4, 66, 103, 112], "chop": 112, "chosen": [50, 60, 61, 103, 105, 106, 112, 113], "chosen_attention_mask": 113, "chosen_input_id": 113, "chosen_reward": [61, 113], "circumst": [103, 112], "citi": 103, "civil": 112, "clamp_valu": 36, "class": [73, 108], "class_prefix": 73, "classfoo": [11, 12], "classic": 103, "classif": [13, 14, 66], "classmethod": [5, 6, 9, 46], "clean_text": 112, "clear": 112, "clearer": 113, "clearli": 112, "clinic": 115, "clip_encod": [3, 24], "clip_global_grad_norm": 33, "clipvisiontow": 23, "clone": [106, 115], "closur": [25, 26, 27, 28, 29, 30, 31, 32, 34, 36, 37, 38, 39, 41, 42, 43, 44, 45], "clovaai": [31, 43], "co": [4, 112], "coal": 103, "coast": [103, 112], "cob": 103, "code": [5, 6, 7, 23, 26, 31, 36, 37, 41, 43, 44, 45, 55, 66, 103, 105, 114, 115], "code_exec": 55, "coleslaw": 103, "collard": 103, "collat": [7, 60, 66], "collect": [103, 112, 115], "collection_strategi": [4, 112], "colleg": 115, "coloni": 112, "columbia": 103, "column": 66, "column_nam": [70, 71], "com": [66, 103, 106, 112, 115], "comal": 103, "combin": 106, "come": [66, 103], "command": [106, 109, 112, 115], "comment": 108, "commerci": [112, 115], "commit": [4, 66], "commit_messag": 66, "common": [3, 95, 103, 105, 115], "commonli": [15, 74, 103, 105, 115], "commun": [103, 112, 115], "compani": 103, "compar": [103, 112, 113, 115], "comparison": [103, 112], "compet": [103, 115], "competit": 103, "compil": 94, "complet": [66, 112, 114, 115], "complex": [103, 113], "complic": 113, "compliment": 112, "compon": [75, 81, 108, 115], "comprehens": 103, "compress_list": 58, "comput": [61, 66], "compute_loss": [66, 68], "compute_loss_context_manag": 66, "compute_metr": [61, 66, 68], "compute_object": 66, "concaten": [66, 103, 105], "concept": [105, 108, 114], "concis": 113, "conda": [106, 115], "condens": 15, "condenserotaryembed": 100, "condit": [22, 94, 103, 105, 112], "confer": 103, "confid": 94, "config": [4, 15, 22, 23, 52, 55, 98, 111, 113], "config_nam": 4, "config_overrid": 4, "configu": [13, 14, 16], "configur": [4, 15, 112], "conflict": 103, "confus": 105, "conjectur": 103, "connot": 103, "consequ": 103, "consequenti": 115, "consist": [37, 112, 113], "consol": 52, "constant": [3, 95], "constexpr": 94, "constraint": 115, "constructor": 52, "contain": [3, 4, 5, 6, 11, 12, 13, 22, 52, 53, 55, 57, 58, 59, 61, 66, 69, 75, 103, 105, 112], "content": [105, 108, 113, 114], "context": [55, 66, 103, 112, 114], "context_window": 52, "contribut": 112, "contributor": [2, 115], "control": [4, 5, 6, 55, 65, 66], "controller_heart_beat_expir": 74, "conv_llama_2": 96, "conv_llava_llama_2": 96, "conv_llava_plain": 96, "conv_llava_v0": 96, "conv_llava_v0_mmtag": 96, "conv_llava_v1": 96, "conv_llava_v1_mmtag": 96, "conv_mpt": 96, "conv_templ": 96, "conv_vicuna_v0": 96, "conv_vicuna_v1": 96, "conveni": [13, 14, 75, 103, 112, 115], "convent": 115, "convers": [4, 5, 70, 71, 96, 103, 110, 112, 113, 115], "conversation_dataset_descript": 74, "conversation_id": [75, 80, 81, 105], "conversation_role_nam": 74, "conversation_templ": [3, 4, 70, 71, 95, 105, 108, 109], "conversation_tokenize_funct": [70, 71], "conversationtempl": [70, 71, 75, 79, 81, 83, 87, 108, 114], "conversationtemplatefortool": [75, 80, 81], "convert": [50, 51, 55, 60, 66, 75, 81, 88, 107], "convert_llama_weights_to_hf": 107, "convert_to_paired_dataset": 51, "convert_tokens_to_id": 75, "convienc": 105, "convolut": 37, "cook": [103, 112], "cooki": 112, "copi": [23, 73, 96, 112], "copyright": 107, "core": 66, "corn": 103, "corp": 112, "corpora": 103, "corpu": 103, "correct": [9, 105, 112, 113], "correctli": [65, 103, 112], "correl": 103, "correspond": [13, 69, 103, 105], "cosin": 4, "could": [103, 112], "count": [66, 103], "countri": 103, "court": 103, "cozi": 103, "crab": 103, "creat": [3, 5, 6, 10, 11, 12, 15, 19, 20, 22, 48, 52, 60, 65, 66, 69, 73, 75, 108, 110, 112, 113, 115], "create_copied_dataclass": 73, "create_customized_optim": 53, "create_dataload": [52, 55], "create_from_dict": [5, 6], "create_model_card": 66, "create_optim": 66, "create_optimizer_and_schedul": 66, "create_schedul": 66, "create_studi": 66, "creation": 112, "creator": 112, "crispi": 103, "criteria": 112, "critic": 103, "cross": 94, "cross_entropi": 61, "crowd": 103, "crucial": [113, 115], "ctx": 94, "cuda": [88, 94], "cuda_visible_devic": 107, "cue": 115, "cuisin": 103, "culinari": 103, "cultur": [103, 112], "cumul": 55, "cup": 112, "current": [4, 15, 66, 103, 105, 106, 109, 114], "current_flo": 66, "curv": 112, "custom": [4, 15, 66, 112, 113], "custom_model": [4, 14], "custom_vision_model": [4, 22], "customautovision2seqmodel": 22, "customized_cache_dir": 4, "customized_optim": 4, "customized_optim_arg": 4, "custommultimodaldataset": 7, "cybertronai": 36, "d": [88, 94, 103, 112, 113], "dahoa": [112, 113], "dai": 112, "damag": [103, 112, 115], "dampen": [37, 43], "danger": 103, "dark": 103, "data": [4, 5, 6, 7, 13, 16, 21, 52, 53, 57, 58, 66, 69, 75, 80, 81, 88, 103, 106, 107, 109, 112, 113, 115], "data_1": 105, "data_2": 105, "data_arg": [5, 6, 7, 46, 50, 51, 52, 53, 55, 56, 57, 58, 59, 69, 70, 71, 111], "data_col": [53, 59, 61, 66], "data_collect": 112, "data_dict": 7, "data_dir": 50, "data_fil": 113, "data_inst": 73, "data_root": 50, "data_util": [3, 13, 16, 58, 69, 95], "dataclass": [4, 73], "dataclass_object": 73, "datacol": [61, 66], "datacollatorforsuperviseddataset": 7, "datacollatorwithpad": 66, "dataload": [55, 57, 66, 88], "dataset": [1, 3, 4, 8, 13, 14, 16, 21, 47, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 66, 69, 70, 71, 75, 88, 103, 108, 109, 110, 111, 113, 115], "dataset_arg": 66, "dataset_config_nam": 4, "dataset_description_map": 74, "dataset_list": 56, "dataset_nam": [4, 106], "dataset_path": [4, 5, 6, 7, 105, 107, 108, 109, 112, 113], "dataset_path_list": 4, "dataset_s": 55, "dataset_tag": 66, "dataset_typ": [5, 51], "datasetargu": [4, 5, 6, 7, 51, 52, 53, 55, 56, 57, 58, 59, 69, 70, 71, 111], "date": 112, "ddp": 4, "de": 103, "deactiv": 15, "deactivate_model_for_infer": 15, "deadli": 103, "deal": 94, "death": 112, "debia": 36, "debug": 4, "decai": 37, "decid": [103, 106], "declin": 112, "decod": [13, 14, 52, 69, 88, 105], "decoder_model": [3, 13, 17], "decoder_onli": 4, "decodermodel": [11, 13], "decor": 4, "decreas": 113, "dedic": 112, "deep": [33, 36, 112], "deepseek": [3, 81, 105], "deepseek_templ": [78, 81], "deepspe": [4, 13, 14, 16, 66, 105, 106, 107, 111], "deepspeed_arg": 105, "def": [103, 111, 112, 113], "default": [4, 5, 6, 13, 14, 16, 34, 55, 66, 69, 73, 88, 112], "default_callback": 66, "default_compute_object": 66, "default_convers": 96, "default_data_col": 66, "default_hp_space_optuna": 66, "default_hp_space_rai": 66, "default_hp_space_sigopt": 66, "default_im_end_token": 74, "default_im_start_token": 74, "default_image_patch_token": 74, "default_image_token": 74, "default_progress_callback": 66, "defin": [1, 4, 5, 6, 7, 34, 37, 66, 105, 108, 114], "definit": 112, "degenerated_to_sgd": 25, "degrad": 103, "delay_load": 23, "delici": 103, "delta": [31, 43, 94], "demo": 103, "demo_example_in_prompt": 4, "democrat": 115, "demonstr": [103, 112, 115], "denot": 37, "depart": [103, 112], "depend": [4, 66, 103, 112], "deprec": [41, 66], "deriv": 4, "desc": 111, "describ": 103, "descript": [11, 12, 66, 105, 110, 114], "design": [46, 115], "desir": [66, 112, 113], "despit": 115, "detail": [66, 103, 106, 110, 112, 113, 114], "detect": 112, "determin": [66, 103], "detoken": [4, 13], "dev20221202": 94, "develop": [1, 103, 105, 108, 112, 114], "devic": [4, 13, 14, 15, 16, 23, 66, 100, 112], "diao": [0, 115], "dict": [4, 5, 6, 13, 15, 51, 55, 60, 61, 66, 67, 70, 71, 73, 75, 80, 81, 83, 87, 88, 96, 105, 108], "dict_obj": [5, 6], "dictionari": [5, 6, 34, 50, 52, 53, 66], "did": [112, 113], "didn": [112, 113], "diff": 107, "differ": [4, 5, 6, 13, 14, 51, 66, 75, 94, 96, 103, 107, 108, 112, 113, 114], "difficult": 103, "difficulti": 103, "dim": 100, "dimens": 94, "dinosaur": [112, 113], "diplomaci": 103, "diplomat": 112, "dir": [13, 14, 16, 106], "direct": [66, 105, 115], "directli": [75, 103, 106, 107, 115], "director": 112, "directori": [4, 13, 14, 16, 52, 66, 105, 112], "disabl": 112, "disable_dropout": 61, "disable_group_text": 4, "disast": [103, 112], "discard": 112, "discard_sampl": 112, "diseas": 103, "dish": [103, 112], "disk": 4, "distinct": 112, "distress": 103, "distribut": [4, 55, 66], "distributed_inference_num_inst": 4, "distributeddataparallel": 66, "district": 103, "divers": [4, 103, 112], "divis": 112, "dk": 94, "dk_ptr": 94, "do": [15, 66, 75, 94, 103, 105, 108, 112, 113, 114, 115], "do_dpo_align": 4, "do_grad_sc": 66, "do_response_gener": 4, "do_rope_sc": [4, 15], "do_sampl": 4, "do_scor": 4, "do_train": 15, "doc": 66, "docstr": [11, 12, 108], "document": [3, 66, 103], "doe": [34, 66, 103, 112, 113, 114, 115], "doesn": [15, 94, 103, 112], "dog": 103, "domain": [103, 115], "don": [7, 60, 65, 71, 105, 108, 112, 113, 114], "done": [94, 111], "dong": [0, 115], "donut": 103, "door": 103, "double_qu": 4, "down": [31, 43, 103], "download": [4, 103, 105, 106, 107, 109, 112], "dpo": [4, 51, 61, 105], "dpo_align": [3, 54], "dpo_loss": 61, "dpoalign": 50, "dpoalignerargu": 4, "dpotrain": 61, "dpov2": 4, "dpov2_align": [3, 54], "dpov2_dataprocessor": [3, 62], "dpov2_train": [3, 62], "dpov2align": 51, "dpov2alignerargu": [4, 51, 56], "dpov2train": 61, "dq": 94, "draft": [55, 66], "draft_config": 55, "draft_model": 55, "draft_model_arg": 55, "drink": 112, "drl": 112, "drop": [5, 6, 112], "drop_inst": [5, 6], "drop_invalid": [5, 6], "dropout": [66, 94], "ds_config": [4, 13, 14, 15, 16, 106, 107], "dtype": [4, 15, 23, 66], "due": [94, 103, 107], "dummi": [3, 4, 35], "dummy_featur": 23, "dure": [4, 66, 103, 113, 114], "dv": 94, "dv_ptr": 94, "dynam": [26, 66], "e": [4, 55, 57, 66, 88, 94, 105, 106, 112, 115], "each": [4, 13, 55, 61, 66, 69, 105, 108, 112, 113], "earth": 113, "easi": [103, 108, 112, 113], "easier": 66, "easili": [106, 113, 115], "east": 103, "econom": 103, "edit": [112, 113], "educ": 112, "effect": [103, 112, 113, 115], "effici": [1, 103, 109, 112, 115], "effortlessli": 103, "eg": 108, "egg": 112, "either": [66, 105, 112], "el": 103, "elabor": [112, 113], "element": [13, 60, 66, 69, 103, 115], "eleuth": [103, 106], "eleutherai": [103, 106, 112], "elif": 114, "elimin": 113, "ellipsi": 90, "els": [66, 111, 112, 113, 114], "embed": [15, 22], "emerg": 103, "emphas": 115, "employe": 112, "empti": [75, 105], "empty_no_special_token": 105, "empty_no_special_tokens_templ": [75, 81], "empty_templ": [75, 81], "emptyformatt": 75, "en": [66, 103], "en_multi_round_chat": 103, "en_singe_round_chat": 103, "enabl": [4, 115], "enable_decode_inference_result": [4, 69], "enable_distributed_infer": [4, 13, 16, 58, 69], "enchilada": 103, "encod": [13, 14, 52, 75, 81, 105, 114], "encode_convers": [75, 79, 80, 81], "encode_imag": 23, "encoded_pair": [75, 81], "encoder_attention_mask": 90, "encoder_decoder_model": [3, 14, 17], "encoder_hidden_st": 90, "encoderdecodermodel": [12, 14], "encourag": [105, 112], "end": [4, 13, 16, 37, 66, 105, 108, 114], "end_header_id": [105, 114], "end_of_turn": [105, 114], "end_str": 55, "endfor": 114, "endgam": 103, "endif": 114, "endoftext": [105, 114], "endpoint": 66, "endswith": 111, "enemi": 103, "engin": [103, 105], "england": 112, "english": 103, "enhanc": 115, "enjoi": [107, 112], "enough": [4, 113], "ensur": 37, "entail": 103, "enter": 103, "entir": [113, 115], "entri": 66, "enum": 96, "environ": 112, "eo": [4, 75, 105, 108], "eos_pad": 4, "eos_token": [75, 108, 114], "eos_token_id": 69, "eot_id": [105, 114], "ep": [25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 41, 43, 45], "epoch": [66, 103, 112, 113], "eq": 37, "equal": [60, 61, 66, 103], "equat": 37, "err": 106, "error": [66, 113], "escap": 103, "especi": 103, "essai": 103, "essenti": 103, "estim": [66, 113], "etc": [13, 14, 16, 21, 65, 66, 103, 105, 112, 115], "ethic": 103, "ethiopian": 103, "ethnic": 103, "evacu": 103, "eval": [32, 42, 61, 66, 112, 113], "eval_bleu": 66, "eval_dataset": [50, 51, 61, 66, 113], "eval_dataset_path": 4, "eval_pr": 68, "eval_step": [4, 112], "evalloopoutput": [61, 66], "evalpredict": 66, "evalu": [3, 4, 32, 42, 54, 66, 104, 105, 107, 112, 113, 115], "evaluate_block_s": 4, "evaluation_loop": 66, "evaluator_arg": 52, "evaluatorargu": [4, 52], "even": [103, 105, 113, 114], "even_headdim": 94, "even_m": 94, "even_n": 94, "event": 103, "eventu": 112, "ever": 112, "everett": 112, "everi": [57, 66, 105, 108], "everyon": 103, "exact": [106, 112], "exactli": [112, 113], "examin": 112, "exampl": [4, 7, 11, 12, 61, 66, 70, 71, 75, 80, 81, 88, 94, 103, 105, 106, 107, 108, 109, 114, 115], "example_dataset": 105, "excel": 112, "except": 115, "exchang": 112, "excit": 115, "exclud": 37, "execut": [66, 106], "exist": [66, 105, 108, 114], "exp_avg": 33, "exp_avg_diff": 33, "exp_avg_sq": 33, "expans": 115, "expect": [66, 103], "expens": 103, "experi": [66, 103, 112, 115], "experiment": [94, 103], "expert": 115, "explain": 112, "explan": 103, "explanation_in_prompt": 4, "exploit": 112, "explor": [112, 113], "explos": 103, "export": [11, 12], "extend": 37, "extens": [1, 112, 115], "extern": [66, 103], "extinct": 113, "extra": 112, "extra_id_0": [105, 114], "extra_id_1": [105, 114], "extract": [4, 88, 112], "extrem": 115, "face": [5, 6], "facebook": 109, "facebookresearch": 107, "facilit": 112, "factor": [103, 112], "factual": 103, "fail": 103, "falafel": 103, "fals": [4, 7, 13, 14, 15, 16, 22, 23, 25, 26, 31, 33, 36, 37, 39, 43, 44, 50, 51, 55, 58, 60, 61, 66, 68, 69, 75, 81, 89, 90, 91, 93, 94, 96, 101, 106, 112, 113, 114], "famou": 103, "far": 112, "fashion": [37, 66], "fast": 4, "faster": [33, 94, 103], "fate": 103, "featur": [60, 66, 67, 103], "feature_select": 23, "fed": [13, 14, 66], "feder": 103, "feed": [57, 66, 105], "feedback": [112, 113], "feel": [108, 112], "ferret": 103, "few": [103, 112, 115], "field": [4, 73, 105, 112, 113, 115], "field_prefix": 73, "fifth": 103, "fight": 112, "figur": [103, 112], "file": [4, 5, 6, 52, 66, 88, 105, 108, 110, 111, 112, 115], "file_nam": 88, "file_path": [5, 6], "fill": [103, 105, 114], "filter": [103, 113], "final": [65, 103], "final_lr": 26, "financi": 103, "find": [103, 112, 113], "fine": [7, 13, 14, 66, 112, 113, 115], "finetun": [1, 3, 54, 59, 103, 105, 107, 108, 115], "finetune_part": 4, "finetuned_from": 66, "finetuned_galactica_lora": 109, "finetuned_gpt2": 109, "finetuned_llama2_7b": 109, "finetuned_llama2_7b_lisa": 109, "finetuned_llama2_7b_lora": 109, "finetuned_llama3_8b": 109, "finetuner_arg": [53, 59], "finetunerargu": [4, 53], "fingerprint": [5, 6], "finish": [66, 106, 113], "fire": [103, 112], "firefight": 112, "fireplac": 112, "first": [1, 60, 66, 75, 80, 81, 103, 106, 107, 112, 113, 114], "fish": 103, "fit": [37, 103], "fix": [4, 94], "fixed_decai": 25, "flag": 22, "flame": 103, "flammabl": 103, "flash_attent": [3, 95], "flash_attn_func": 94, "flash_attn_kvpacked_func": 94, "flash_attn_qkvpacked_func": 94, "flashattent": 94, "flashattnfunc": 94, "flashattnkvpackedfunc": 94, "flashattnqkvpackedfunc": 94, "flatbread": 103, "flatten_list": 58, "flavor": 103, "flexibl": 108, "float": [4, 5, 6, 15, 16, 21, 26, 31, 33, 34, 36, 37, 41, 43, 45, 51, 52, 55, 58, 61, 66, 88, 112], "float32": 66, "float_onli": 5, "float_only_dataset_descript": 74, "floating_point_op": 66, "floattensor": [22, 61, 90], "florida": 112, "flour": 112, "folder": 65, "follow": [37, 50, 66, 105, 106, 108, 112, 113, 115], "foo": [11, 12], "food": [103, 112], "force_system": [75, 81], "foreach": [32, 33, 42], "foreign": 112, "forget": 103, "fork": 106, "form": [53, 66, 112], "format": [5, 6, 50, 55, 73, 75, 81, 108, 110, 114], "formatt": [75, 81], "former": [112, 113], "fort": [112, 113], "fortun": [112, 113], "forward": [22, 23, 66, 89, 90, 91, 93, 94, 100], "found": [66, 103, 112, 113, 115], "foundat": [103, 112, 115], "four": [105, 113], "fp16": 4, "framework": [1, 104, 112, 113], "free": [32, 42, 108], "frequent": 75, "fresh": 103, "fri": [103, 112], "friend": 103, "friendli": 115, "from": [4, 5, 6, 13, 14, 23, 25, 37, 44, 51, 52, 55, 66, 73, 88, 94, 103, 107, 108, 111, 112, 113, 114, 115], "from_dict": [5, 6], "from_pretrain": 66, "front": 7, "frustrat": 112, "fsdp": 66, "ft": 4, "fuel": 112, "full": [13, 14, 16, 65, 103, 110, 112, 113, 115], "fun": [112, 113], "function": [11, 12, 21, 22, 57, 66, 112, 113, 115], "function_formatt": [75, 81], "functionbar": [11, 12], "funtion": 88, "furnitur": [112, 113], "further": [4, 103, 112, 115], "futur": [15, 22, 112], "g": [4, 37, 66, 105, 112], "g_": 37, "ga": 103, "gain": [103, 112, 115], "galactica": [109, 115], "game": 112, "gamma": [26, 55], "gap": 103, "gather": [66, 112], "gear": 112, "gemma": [3, 81, 105], "gemma_templ": [79, 81], "gemmaconversationtempl": 79, "gener": [3, 4, 7, 13, 14, 16, 20, 22, 52, 55, 57, 66, 69, 88, 94, 103, 107, 110, 112, 113, 114, 115], "generate_during_ev": 61, "generate_kwarg": 22, "generate_qrcod": [105, 114], "generation_kwarg": 57, "genet": 115, "georg": 103, "get": [9, 21, 57, 66, 103, 106, 107, 110, 111], "get_backend": [5, 6], "get_backend_dataset": [5, 6], "get_backend_model": [14, 15, 22], "get_batch_loss_metr": 61, "get_batch_metr": 61, "get_data_arg": [5, 6], "get_eval_dataload": 66, "get_fingerprint": [5, 6], "get_imag": 96, "get_linear_schedule_with_warmup": 66, "get_max_length": [14, 15, 111], "get_model": 9, "get_optimizer_cls_and_kwarg": 66, "get_paired_dataset": 50, "get_peft_without_qlora": 13, "get_pipelin": [46, 111], "get_pipeline_args_class": [4, 111], "get_prompt": 96, "get_python_vers": 101, "get_reward_funct": 112, "get_test_dataload": 66, "get_token": [14, 15, 22], "get_train_dataload": 66, "get_typ": [5, 6], "giant": 113, "girl": 112, "girlfriend": 112, "git": [66, 106, 115], "github": [15, 103, 106, 112, 115], "gitignor": 66, "give": [103, 112, 113], "given": [4, 5, 6, 21, 52, 53, 55, 57, 58, 61, 66, 103, 105, 106, 112, 113, 114], "glad": [105, 112], "global": [66, 112], "gmask": [105, 114], "go": [66, 103, 107, 112], "goal": [112, 115], "golden": 112, "good": [103, 105, 107, 108, 112, 113], "goodi": 112, "gopher": 115, "govern": 103, "gpt": [103, 109, 112, 113, 115], "gpt2": [109, 112], "gpt2_flash_attent": [3, 92], "gpt3": 115, "gpt4_en_instruct": 103, "gpt_neo_flash_attent": [3, 92], "gpu": [4, 13, 14, 15, 16, 66, 69, 109, 112], "grad": [31, 33, 43], "grad_averag": 39, "grade": 112, "gradient": [25, 26, 37], "gradient_accumulation_step": 4, "gradient_checkpoint": 4, "gradient_checkpointing_use_reentr": 4, "grammar": 113, "great": [112, 113], "greater": [66, 103], "greatest": 112, "green": 103, "grill": 103, "groundtruth": 52, "group": [34, 53, 66, 111], "group_rank": 74, "group_text": [53, 111], "group_texts_batch_s": 4, "grow": 115, "guarante": [75, 80, 81, 115], "guess": [112, 113], "guest": 112, "guid": [110, 112, 113], "ha": [7, 13, 14, 26, 31, 36, 41, 43, 45, 52, 66, 75, 94, 103, 105, 108], "had": [108, 112, 113], "half": 112, "hallucin": 103, "hamburg": 103, "hand": [103, 112, 115], "handel": [70, 71], "handl": [60, 66, 75, 81, 112], "hanz": [0, 115], "happi": [103, 112], "har": [103, 106], "hard": [103, 112, 113], "hardship": 103, "hardwar": 112, "harm": 112, "has_imag": 7, "has_placehold": 75, "hasattr": [32, 42], "hasn": 66, "hate": 112, "have": [4, 15, 66, 94, 103, 105, 106, 107, 108, 112, 113, 114, 115], "hawaii": 103, "hazard": 112, "he": 112, "head": [94, 112], "head_mask": [89, 90, 91], "headdim": 94, "health": 103, "hear": 105, "heard": 112, "hearti": 103, "heat": [103, 112], "heater": 112, "heavi": 112, "heavili": 112, "height": [22, 103], "held": [103, 115], "hellaswag": 103, "hello": [13, 75, 80, 81, 115], "help": [4, 103, 105, 112, 114, 115], "helper": [10, 11, 12, 15, 19, 20, 22, 48, 66, 69, 75], "her": 112, "here": [52, 66, 71, 75, 80, 81, 103, 109, 112, 113], "hero": 112, "hf": [15, 105, 107, 109], "hf_auto_model": 15, "hf_auto_model_additional_arg": 15, "hf_automodel_map": 15, "hf_automodel_typ": 15, "hf_dataset_sanity_check": [5, 6], "hf_decoder_model": [3, 17, 51, 55, 56, 69, 72], "hf_encoder_decoder_model": [3, 17], "hf_model_config": 15, "hf_model_mixin": [3, 13, 16, 17], "hf_text_regression_model": [3, 17, 56, 58, 59, 72], "hfargumentpars": 111, "hfdecodermodel": [13, 14, 51, 52, 55, 56, 69], "hfencoderdecodermodel": 14, "hfmodelmixin": [13, 15, 16], "hftextregressionmodel": [16, 56, 58, 59], "hh": [112, 113], "hh_rlhf": [112, 113], "hh_rlhf_llama": 112, "hh_rlhf_raft_align": 112, "hh_rlhf_rm": 112, "hh_rlhf_rm_sft_gptneo_2_7b": 112, "hh_rlhf_rm_train": 112, "hh_rlhf_sft": 112, "hi": [75, 80, 81, 105, 112], "hidden": 108, "hidden_s": [22, 23], "hidden_st": [89, 90, 91, 93], "hide": [66, 112, 113], "hideo": 112, "high": 112, "higher": [55, 103, 112], "highlight": 115, "him": 112, "hing": 61, "hint": [4, 5, 6], "histor": 112, "histori": [96, 103, 112], "hit": 112, "hm": 112, "home": [103, 112, 113], "homeown": 103, "homework": 112, "homogen": 4, "honei": 103, "host": 112, "hostil": 103, "hot": [103, 112], "hous": [103, 112, 113], "how": [66, 103, 105, 108, 110, 112, 113, 114], "howev": [13, 14, 103, 107, 112, 115], "howpublish": 115, "hp": 66, "hp_name": 66, "hp_search_backend": 66, "hp_space": 66, "hpsearchbackend": 66, "html": [66, 103, 112], "http": [26, 31, 33, 36, 41, 43, 45, 55, 66, 103, 106, 112, 113, 115], "hub": [66, 103], "hub_model_id": 66, "hug": [5, 6, 105], "huge": [103, 113], "huggingfac": [4, 5, 6, 13, 14, 16, 107, 112, 113], "human": [103, 105, 106, 108, 112, 113, 114, 115], "hundr": 113, "hurrican": 112, "hymba": [3, 81, 105], "hymba_templ": [80, 81], "hymbaconversationtempl": 80, "hyper": [66, 110], "hyperparamet": 66, "hyperparameter_search": 66, "i": [4, 7, 13, 14, 15, 22, 32, 37, 42, 47, 49, 50, 52, 55, 57, 60, 66, 69, 75, 81, 94, 103, 105, 107, 108, 109, 112, 113, 114, 115], "ianz2020": 113, "icml": 103, "id": [4, 13, 14, 22, 69, 75, 81], "idea": [103, 112, 113], "ident": 66, "identifi": [66, 105, 113], "idx_gap": 113, "ignor": [61, 66], "ignore_bias_buff": 4, "ignore_index": 74, "ignore_kei": 66, "ignore_keys_for_ev": 66, "ignored_args_list": 73, "ill": 103, "illeg": 103, "illustr": [108, 113], "im_end": [74, 105, 114], "im_patch": 74, "im_start": [74, 105, 114], "imag": [7, 22, 23, 74], "image_aspect_ratio": 4, "image_encoder_name_or_path": [4, 22], "image_flag": 88, "image_fold": [4, 7], "image_forward_out": [22, 23], "image_processor": 7, "image_text": [5, 55], "image_token_index": [7, 22, 74], "imageher": 88, "imagin": [112, 113], "immedi": 103, "impact": [112, 113], "imperfect": 112, "implement": [13, 14, 15, 25, 26, 31, 33, 36, 41, 43, 45, 51, 66, 94, 103, 106, 112], "impli": 103, "implicitli": 61, "import": [4, 52, 66, 103, 108, 110, 111, 112, 115], "improp": 115, "improv": [103, 112, 113, 115], "incent": 112, "incentiv": 112, "incident": 115, "includ": [4, 5, 6, 51, 66, 88, 103, 112, 113, 115], "incompat": 66, "incomplet": 103, "inconveni": 103, "incorpor": 115, "incorrect": 103, "incorrectli": 112, "increas": [31, 43, 112, 113], "inde": 103, "index": [22, 66, 115], "index0": 114, "indian": 103, "indic": [4, 5, 6, 22, 103, 105], "indirect": 115, "induc": 103, "inf": 57, "infer": [1, 4, 13, 14, 16, 21, 22, 52, 55, 58, 69, 71, 105, 112, 115], "infer_batch_s": 57, "inferenc": [3, 4, 54, 58, 105], "inference_arg": 69, "inference_batch_s": 4, "inference_batch_size_per_devic": [4, 112], "inference_func": 21, "inference_result": 16, "inferencer_arg": [55, 58, 69], "inferencer_file_path": 69, "inferencerargu": [4, 55, 56, 58, 69], "inferencerwithoffload": 69, "influenc": 112, "info": 106, "inform": [4, 5, 6, 52, 66, 112, 115], "inher": 103, "inherit": [10, 11, 12, 15, 19, 20, 22, 48, 66, 69, 75, 108], "init": 66, "init_git_repo": 66, "init_to_zero": 94, "initi": [4, 5, 6, 13, 14, 16, 21, 52, 53, 55, 57, 58, 59, 66, 111, 112, 113], "initial_accumul": 45, "initial_iter_idx": 4, "inject": 66, "injera": 103, "injur": [103, 112], "injuri": 103, "injustic": 103, "inner": 66, "innov": 115, "inplac": 4, "input": [4, 7, 13, 14, 15, 16, 21, 22, 52, 55, 57, 61, 66, 68, 69, 71, 88, 103, 105, 106, 107, 108, 113], "input_dataset": 55, "input_dir": 107, "input_id": [7, 13, 22, 23, 55, 71, 113], "input_shap": [89, 90, 93], "inputs_emb": [22, 90, 93], "insert": 22, "inspir": 112, "inst": [105, 114], "instal": [66, 106], "instanc": [5, 6, 7, 13, 14, 16, 21, 51, 52, 53, 66, 73, 103, 105, 112, 113, 115], "instance_fields_map": 74, "instanti": 66, "instead": [4, 75, 94, 103], "institut": 103, "instruct": [1, 113], "instructgpt": [112, 113, 115], "int": [4, 5, 6, 13, 14, 15, 16, 51, 55, 58, 60, 61, 66, 67, 69, 70, 71, 75, 80, 81, 83, 87, 88, 89, 96, 112, 113], "int8": 4, "integ": [4, 75, 81], "integr": 106, "intellig": 115, "intend": 115, "intens": [103, 112], "interact": [108, 112], "interest": [112, 115], "interfac": [3, 13, 14, 16, 17], "intermedi": 65, "intern": [66, 103], "internal_vers": 8, "internlm": [3, 81], "internlm2": 105, "internlm2_templ": [81, 82], "interpol": 15, "interpret": 105, "interrupt": [65, 66], "intrins": 103, "introduc": [103, 112, 115], "introduct": 110, "invalid": 4, "invis": 108, "invok": 103, "involv": [103, 112, 113], "io": [66, 103, 112, 115], "ipex_optimize_model": 66, "irrelev": 103, "is_caus": 94, "is_custom_dataset": 4, "is_encoder_decod": [60, 61], "is_first_tim": 66, "is_flash_attn_avail": 101, "is_flask_avail": 101, "is_gradio_avail": 101, "is_in_train": 66, "is_load": 23, "is_local_process_zero": 66, "is_model_parallel": 66, "is_multimod": 4, "is_multimodal_avail": [6, 101], "is_package_version_at_least": 101, "is_ray_avail": 101, "is_sagemaker_mp_post_1_10": 66, "is_torch_greater_or_equal_than_1_10": 66, "is_torch_less_than_1_11": 66, "is_trl_avail": 101, "is_vllm_avail": 101, "is_world_process_zero": 66, "island": 103, "isn": 112, "issu": [4, 15, 103, 107, 112, 115], "item": [103, 106], "iter": [4, 34, 52, 55, 57, 66, 112], "iter_id": 57, "iterabledataset": 66, "iteration_nam": 56, "iterative_dpo_align": [3, 54], "iterativealignerargu": 4, "iterativedpoalign": 56, "iterativedpoalignerargu": [4, 56], "its": [46, 66, 103, 112, 115], "itself": 103, "j": [52, 112], "jack": 112, "japanes": 103, "jfk": 112, "jinja": 114, "jipeng": [0, 115], "job": 108, "join": 115, "joint": 103, "journal": 115, "journei": 112, "json": [4, 5, 6, 66, 75, 80, 81, 88, 105, 106, 107, 111, 112, 113], "json_fil": 111, "jsonl": 115, "judg": 112, "juic": 103, "just": [7, 15, 32, 42, 60, 94, 103, 105, 108, 112, 113, 115], "k": [57, 94, 103, 112], "ka": 0, "ka9v1ywd": 113, "kashun": 115, "katrina": 112, "kebab": 103, "keep": [96, 112, 113], "keep_end": [60, 61], "keep_linebreak": 4, "kei": [66, 91, 103, 105, 106, 112, 113], "keith": 112, "kennedi": 112, "key_1": [5, 6, 105], "key_2": [5, 6, 105], "key_3": 105, "key_4": 105, "key_inst": 5, "key_scor": 5, "key_typ": 5, "keyword": [5, 6, 13, 14, 16, 21, 53, 57, 59, 66, 75], "kid": [112, 113], "kind": [112, 113], "king": 103, "kitchen": 112, "kitfo": 103, "kl": 61, "knive": 112, "know": [112, 113], "knowledg": [103, 115], "known": 103, "kojima": 112, "konami": 112, "korean": 103, "kv": 94, "kwarg": [5, 6, 9, 10, 11, 12, 13, 14, 15, 16, 20, 21, 23, 24, 46, 47, 49, 53, 56, 57, 58, 59, 65, 66, 69, 75, 79, 80, 81, 83, 87], "kwd": 96, "l": 94, "label": [7, 22, 23, 60, 66, 71, 103, 112, 113], "label_column": [70, 71], "label_id": 66, "label_nam": 66, "label_pad_token_id": [60, 61], "lamb": [3, 4, 35], "lambda": 113, "lambdalr": [61, 66], "land": 113, "landmark": 103, "languag": [4, 13, 14, 44, 52, 53, 66, 94, 103, 109, 115], "language_model": [22, 23], "language_model_from_pretrain": 22, "language_model_input": 22, "language_model_name_or_path": 22, "language_project": [4, 23], "lar": [3, 4, 35], "larg": [36, 37, 103, 112, 115], "lars_lr": 37, "last": [66, 105, 112, 113, 114], "last_checkpoint": 53, "latest": [66, 109], "laugh": 113, "launch": 66, "layer": [4, 37, 66, 109], "layer_past": [89, 90, 91], "layerwis": 110, "lead": [13, 16, 103, 112], "leader": 112, "leadership": 112, "leak": 103, "learn": [26, 32, 34, 36, 41, 42, 66, 112, 113, 115], "learning_r": [4, 112], "leav": [11, 12, 103, 112], "led": 112, "left": [94, 103], "legal": [103, 115], "len": [88, 103, 111, 113], "len_penalti": 61, "length": [4, 14, 15, 22, 51, 52, 53, 55, 60, 66, 88, 94, 103, 105], "length_penalti": [4, 51], "less": 103, "let": [111, 112, 113, 115], "level": [103, 115], "li": 115, "liabil": 115, "librari": [4, 66], "licens": [66, 103, 112], "light": 115, "lighter": 103, "lightn": 37, "lightweight": 115, "like": [37, 66, 94, 103, 105, 106, 108, 112, 114, 115], "likelihood": [52, 103, 106], "lime": 103, "limit": 103, "line": [11, 12, 103], "link": 105, "lisa": [110, 113], "lisa_activated_lay": [4, 109], "lisa_interval_step": [4, 109], "lisa_layers_attribut": 4, "list": [4, 5, 6, 13, 14, 16, 22, 33, 50, 51, 56, 58, 60, 61, 66, 67, 69, 71, 73, 75, 80, 81, 83, 87, 88, 96, 97, 101, 105, 108, 112, 115], "list_of_list": 58, "list_to_compress": 58, "listformatt": 75, "liter": [61, 75], "littl": 103, "liuhong99": 44, "live": [112, 113], "liyuanlucasliu": 41, "ll": [94, 112, 113], "llama": [3, 15, 81, 103, 105, 108, 109, 110, 112, 113, 115], "llama2": [105, 109], "llama2_templ": [81, 83], "llama2_template_for_tool": 83, "llama2conversationtempl": 83, "llama2conversationtemplatefortool": 83, "llama3": [105, 109], "llama3_templ": [81, 83], "llama3_template_for_tool": [81, 83], "llama_2": 96, "llama_flash_attent": [3, 92], "llama_rope_scaled_monkey_patch": [3, 99], "llava": 23, "llava_conversation_lib": [3, 95], "llava_load": 4, "llava_pretrain_model_path": 4, "llm": [4, 104, 108, 112, 115], "llm_model_name_or_path": 4, "lm": [4, 103, 110], "lm_dataset": 111, "lm_eval_dataset_map": 106, "lm_evaluation_metr": 4, "lmflow": [3, 104, 105, 108, 110, 111, 112, 113, 114], "lmflow_lora_target_modules_map": 74, "lmsy": 103, "ln": 52, "lntwmcyd": 113, "lo": 103, "load": [4, 5, 6, 13, 14, 22, 50, 52, 53, 55, 57, 58, 59, 66, 88, 107], "load_data": 88, "load_dataset": [112, 113], "load_in_4bit": 4, "load_inference_result": 69, "load_llava_pretrain_model": 98, "load_model": 23, "load_prompt_cach": 22, "load_result": 66, "loader": 52, "local": [66, 103, 112], "local_datset_answertype_map": 106, "local_datset_group_map": 106, "local_datset_map": 106, "local_rank": [4, 52, 55, 57, 58, 74], "locat": [103, 108], "lock": 103, "locksmith": 103, "log": [52, 61, 66, 103, 106], "log_dir": 106, "log_freq": 4, "logdir": 74, "logger": [4, 5, 13, 14, 15, 16, 51, 53, 55, 56, 57, 58, 59, 60, 61, 63, 64, 66, 67, 69, 70, 71, 73, 75, 79, 83, 87, 97, 101], "logging_step": 4, "logit": 66, "logsigmoid": 113, "long": [60, 66, 103, 105, 112], "longer": [51, 103], "longtensor": [22, 61, 93], "look": [108, 112], "loop": [66, 114], "loop_messag": 114, "lora": [1, 13, 14, 110, 113, 115], "lora_alpha": 4, "lora_dropout": 4, "lora_merg": 109, "lora_model_path": [4, 107, 109], "lora_r": 4, "lora_target_modul": 4, "lora_target_modules_map": 15, "loss": [25, 26, 31, 32, 34, 36, 37, 41, 42, 43, 45, 61, 66, 113], "loss_typ": [4, 61], "lot": [112, 113], "low": [110, 113], "low_resourc": [4, 22], "lower": [55, 66, 103], "loyal": 103, "lr": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44, 45], "lr_schedul": [61, 66], "lr_scheduler_typ": 4, "lse": 94, "lst": 66, "luck": 103, "luolc": 26, "m": [94, 103, 105, 112, 113], "macaroni": 103, "machin": [66, 115], "made": [66, 103, 112, 113], "magic": 112, "magnitud": 103, "mai": [11, 12, 66, 103, 105, 106, 112, 113], "main": [4, 63, 64, 66, 106, 111, 112, 115], "main_process_first": 111, "mainstream": 112, "maintain": 115, "major": 103, "make": [55, 66, 75, 81, 94, 103, 105, 106, 108, 112, 113, 115], "make_shell_args_from_dataclass": 73, "malfunct": 112, "manag": 66, "mani": [94, 103, 112, 113], "manipul": [5, 6], "manual": [66, 103], "map": [4, 5, 6, 21, 111, 113], "mar": 2, "marathon": 113, "margarita": 103, "margin": 61, "margin_scal": [4, 51], "marin": 103, "maryland": 103, "mask": [4, 13, 14, 22, 71, 75, 94], "mask_prompt": [4, 60, 61], "master": 103, "match": [5, 6, 103], "materi": 112, "math": [37, 103], "mathemat": 115, "matter": 115, "max": [14, 15, 52], "max_eval_sampl": 4, "max_grad_norm": 33, "max_length": [4, 60, 61, 67], "max_max": 51, "max_min": 51, "max_new_token": [4, 55], "max_position_embed": 100, "max_prompt_length": [4, 60, 61], "max_random": [4, 51], "max_seq_len_cach": 100, "max_step": 4, "max_target_length": [60, 61], "max_train_sampl": 4, "maxim": [44, 66, 115], "maximum": [4, 52, 53, 55, 66], "mayb": [112, 113], "me": [112, 113], "mean": [66, 103, 112, 113], "meaning": 112, "meantim": 103, "measur": 113, "meat": [103, 112], "medic": 115, "medicin": 115, "medmcqa": 115, "medqa": 115, "melt": 112, "member": [66, 112], "memor": 103, "memori": [4, 109, 112], "memory_safe_dpov2_align": [3, 62], "memory_safe_dpov2_align_env_var_to_remov": 74, "memory_safe_vllm_infer": [3, 62], "memory_safe_vllm_inference_don": 74, "memory_safe_vllm_inference_env_var_to_remov": 74, "memory_safe_vllm_inference_finish_flag": 74, "memorysafedpov2align": 51, "memorysafevllminferenc": 69, "mention": 103, "menu": [103, 112], "merg": 110, "merge_lora": 112, "merge_lora_weight": [13, 14], "messag": [4, 5, 6, 66, 73, 75, 80, 81, 83, 87, 96, 105, 108, 113, 114], "meta": [105, 109], "metadata": [4, 66, 112], "metal": 112, "method": [5, 6, 13, 14, 15, 26, 45, 52, 66, 75, 103, 112, 115], "metric": [4, 52, 61, 65, 66, 106, 112], "metric_key_prefix": 66, "mexican": 103, "middl": 103, "might": [66, 112, 113], "mild": 103, "milk": 112, "million": 113, "min_vers": 101, "mini": 52, "mini_gpt": 55, "miniatur": 112, "minim": [66, 75], "minut": 36, "misc": 115, "misfortun": 103, "mistak": [103, 112], "mix": [4, 112], "mixed_arg": 56, "mixed_precis": 4, "mizuzu": 112, "mkdir": 106, "mlir": 94, "mmlu": 115, "modal": 7, "mode": [4, 32, 42, 66, 112], "model": [1, 3, 4, 7, 8, 25, 26, 31, 32, 33, 34, 36, 37, 41, 42, 43, 44, 45, 47, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 65, 66, 68, 69, 95, 98, 103, 105, 107, 108, 109, 110, 111, 114, 115], "model_arg": [9, 13, 14, 15, 16, 21, 46, 50, 51, 52, 53, 55, 56, 57, 58, 59, 69, 98, 111], "model_args_list": 97, "model_config_class": 4, "model_for_causal_lm_map": 4, "model_init": [61, 66], "model_input": [58, 69], "model_max_length": [4, 53, 70, 71, 111], "model_nam": [66, 106], "model_name_or_path": [4, 105, 106, 107, 108, 109, 112], "model_output": 58, "model_revis": 4, "model_s": 107, "model_typ": 4, "model_wrap": 66, "modelargu": [4, 15, 16, 51, 52, 53, 55, 56, 57, 58, 59, 63, 69, 97, 111], "modelconfig": 15, "modeling_output": [16, 22, 58], "modeling_util": 66, "modern": 103, "modif": 66, "modifi": [25, 37, 112, 113], "mole": 103, "momentum": [31, 33, 37, 42, 43], "momentum_decai": 38, "monei": 103, "monitor": 103, "monument": 103, "more": [55, 66, 103, 105, 109, 112, 113, 114, 115], "moreov": [113, 115], "morgan": 103, "most": [66, 103, 105, 112, 113], "mostli": [75, 105], "motiv": 112, "mpi4pi": [106, 115], "mpt": 96, "mu": 37, "much": 94, "multi": [7, 103], "multi_modal_dataset": [3, 6], "multimod": [3, 95], "multimodaldatasetargu": 4, "multipl": [22, 51, 94, 103, 112, 113, 114, 115], "museum": 103, "must": [66, 111, 114, 115], "mutipl": 88, "mv": 106, "my": [103, 112, 113], "n": [5, 6, 13, 52, 69, 103, 105, 106, 108, 113, 114, 115], "n_trial": 66, "nadam": [3, 4, 35], "name": [4, 13, 14, 16, 21, 32, 42, 46, 66, 73, 88, 94, 103, 105, 106, 108, 112, 114], "namedtupl": 66, "nassist": 114, "nation": [103, 112], "natur": [103, 115], "ndarrai": 66, "necessari": [4, 50, 66, 103, 108, 113], "need": [7, 32, 42, 65, 66, 71, 75, 103, 106, 107, 108, 112, 115], "neg": [52, 103, 106, 112, 113, 115], "negro": 103, "neighborhood": 103, "neither": 103, "neo": [112, 113], "nest": 66, "nestedtensor": 94, "nesterov": [31, 33, 37, 43], "network": [37, 112], "neurip": 25, "nevertheless": 103, "new": [5, 6, 66, 73, 94, 103, 106, 112, 113, 115], "new_default": 73, "next": [55, 108, 112], "nf4": 4, "nhead": 94, "nhello": 105, "nhow": 114, "ni": 114, "nice": 112, "nif": 113, "nip": 45, "nll": [52, 103, 110], "nlp": [13, 14, 103], "nn": [23, 34, 61, 66, 100, 113], "no_prox": 33, "nogada": 103, "nois": [112, 113], "noisi": 112, "non": [94, 112], "nonconvex": 45, "none": [4, 5, 6, 7, 13, 14, 15, 16, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 34, 36, 37, 38, 39, 41, 42, 43, 44, 45, 50, 52, 53, 57, 59, 60, 61, 65, 66, 67, 69, 73, 75, 80, 81, 83, 87, 88, 89, 90, 91, 93, 94, 96, 100, 113], "nonsens": 103, "noqa": 45, "nor": 103, "norm": [31, 43], "normal": [13, 14, 16, 52, 103], "north": 113, "northern": 103, "notat": 112, "note": [4, 15, 26, 31, 36, 37, 41, 43, 45, 66, 71, 103, 106, 115], "noth": 34, "notic": 106, "novograd": [3, 4, 35], "now": [103, 105, 107, 112, 113, 114], "np": 66, "ntk_ratio": 100, "num_capt": 22, "num_channel": 22, "num_exampl": 66, "num_inst": [58, 69], "num_label": 15, "num_new_token": 55, "num_output_sequ": 4, "num_patch": 23, "num_proc": 50, "num_raft_iter": [4, 112], "num_sampl": 55, "num_train_epoch": 112, "num_training_step": 66, "number": [4, 5, 6, 52, 55, 66, 109, 112, 113], "numpi": [66, 88], "nuser": 114, "nwhat": 105, "nwho": 114, "nyou": [105, 114], "o": [94, 103, 111], "oaxaca": 103, "obei": 103, "obj": [75, 81], "object": [5, 6, 7, 13, 16, 21, 52, 53, 55, 57, 58, 59, 66, 69, 73, 75, 81, 105, 114], "obqa": 103, "observ": [15, 25, 103, 112, 113, 115], "observation_formatt": [75, 81], "obstacl": 103, "obtain": [103, 107, 112, 113, 115], "occasion": 112, "occup": 112, "occupi": 113, "ocean": 112, "off": 112, "offer": [103, 112], "offici": [15, 107, 114], "offs_d": 94, "offs_n": 94, "offset": 96, "often": [103, 112], "oil": 112, "okai": 112, "old": [105, 108, 114], "omit": 103, "omp_num_thread": 74, "on_epoch_end": 65, "on_sav": 65, "on_train_end": 65, "onc": [66, 94], "one": [11, 12, 51, 66, 103, 105, 106, 109, 111, 112, 113], "one_sample_multiple_imag": 22, "ones": 113, "onli": [4, 21, 66, 94, 103, 105, 106, 108, 109, 111, 112, 113, 114, 115], "onlin": 103, "open": [104, 106, 115], "openai": 94, "oper": [4, 66], "opportun": 112, "oppress": 103, "opt": [103, 115], "optim": [3, 8, 61, 65, 66, 105, 112, 115], "optim_adam_beta1": 4, "optim_adam_beta2": 4, "optim_beta1": 4, "optim_beta2": 4, "optim_beta3": 4, "optim_dummy_beta1": 4, "optim_dummy_beta2": 4, "optim_momentum": 4, "optim_weight_decai": 4, "optimalscal": [103, 112, 115], "optimizer_kera": 45, "optimizer_nam": 66, "optimizer_typ": 4, "optimizernam": 4, "option": [4, 5, 6, 11, 12, 13, 14, 15, 16, 21, 22, 25, 32, 34, 42, 53, 55, 57, 59, 66, 69, 73, 94, 103, 105, 107, 108, 112], "optuna": 66, "order": [44, 103, 105], "org": [26, 31, 33, 36, 41, 43, 55, 103, 112, 113], "organ": [103, 112, 113], "orient": 115, "origin": [66, 73, 75, 103, 107, 112, 113], "original_dataclass": 73, "other": [52, 61, 66, 94, 103, 112, 113, 115], "otherwis": 66, "otherworld": 112, "ouptut": 103, "our": [15, 103, 105, 106, 107, 108, 109, 110, 111, 112, 115], "out": [66, 94, 103, 108, 112, 113, 115], "outag": 112, "outcom": 115, "output": [4, 13, 14, 16, 51, 52, 55, 57, 66, 69, 71, 88, 103, 105], "output_attent": [22, 89, 90, 91, 93], "output_dataset": 55, "output_dir": [4, 56, 66, 107, 112], "output_hidden_st": 22, "output_lora_path": 109, "output_max_length": [4, 57], "output_min_length": [4, 57], "output_model": [107, 108, 109, 112], "output_model_path": [108, 109], "output_reward_path": [4, 57], "over": [52, 103, 105, 112, 113], "overal": [11, 12, 13, 14, 94, 115], "overfit": 113, "overrid": [4, 15, 22, 66], "overridden": 66, "overse": 112, "overview": [110, 113], "overwrite_cach": 4, "overwrite_output_dir": 66, "overwritten": 112, "own": [66, 103, 105, 106, 108, 112, 113, 115], "oyster": 103, "p": [31, 37, 43, 52, 55], "p2ju3r1a": 113, "p_": [37, 52], "pacif": 103, "packag": [52, 101, 110, 115], "package_nam": 101, "pad": [4, 22, 60, 66, 67], "pad_index": 66, "pad_to_multiple_of": 67, "pad_token_id": [70, 71], "padding_sid": [4, 70, 71], "padding_valu": [60, 61], "paddingstrategi": 67, "page": [3, 103, 115], "paged_adamw_32bit": 4, "pain": 112, "pair": [51, 75, 80, 81, 103, 106, 108, 110], "paired_convers": [5, 105], "paired_conversation_dataset_descript": 74, "paired_conversation_tokenize_funct": 71, "paired_text_to_text_dataset_descript": 74, "pan": [0, 115], "panda": 113, "paper": [37, 45, 112, 113], "par": 103, "parallel": [4, 66, 94], "param": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44, 45], "paramet": [4, 5, 6, 13, 14, 15, 16, 21, 32, 34, 37, 42, 52, 53, 55, 57, 58, 59, 61, 66, 69, 73, 75, 81, 88, 105, 110, 113, 114, 115], "parent": 112, "pars": 111, "parse_args_into_dataclass": 111, "parse_json_fil": 111, "parse_to_sampling_param": 69, "parser": 111, "part": [37, 103], "partial": 103, "particip": 115, "particular": [112, 113, 115], "partit": 103, "pass": [4, 15, 66, 94, 103, 105, 111, 115], "past_key_valu": [22, 23, 93], "past_key_values_length": [89, 90, 93], "pasta": 103, "pastor": 103, "path": [4, 5, 6, 13, 14, 16, 21, 22, 66, 106, 107, 111, 112], "path_to_dataset": 105, "path_to_your_model": 108, "patient": 112, "pattern": 66, "peac": 112, "peakier": 55, "peanut": 112, "pecan": 112, "peft": 65, "peft_config": [15, 61], "peft_train": [3, 62, 68], "peftrewardtrain": 68, "peftsavingcallback": 65, "pefttrain": [65, 68], "penal": [4, 51], "peopl": [103, 112, 115], "pepper": 103, "per": [4, 112], "per_device_eval_batch_s": 4, "per_device_train_batch_s": [4, 112], "percentag": 113, "perfect": 112, "perform": [5, 6, 13, 14, 16, 22, 25, 26, 31, 32, 33, 34, 36, 37, 41, 42, 43, 45, 52, 53, 55, 57, 58, 59, 66, 69, 109, 112, 115], "period": [11, 12, 103], "permiss": 103, "permit": 103, "perplex": [4, 103], "persecut": [103, 112], "person": 112, "perturb": [31, 43], "pet": 103, "pete": 103, "phantom": 112, "phenomenon": [103, 112], "phi": [3, 81], "phi3": 105, "phi3_templ": [81, 84], "phil": 94, "phone": 112, "pi_ratio": 100, "pick": 66, "pie": 103, "piec": [105, 108, 114], "pile": [112, 113], "pioneer": 103, "pip": [106, 115], "pipelin": [3, 4, 8, 105, 111, 112, 115], "pipeline_arg": [14, 46, 111], "pipeline_argument_map": 4, "pipeline_map": 46, "pipeline_nam": [46, 111], "pipeline_needs_extra": 46, "pipelineargu": 111, "piqa": 103, "pit": 103, "pivot": 103, "pixel_valu": 22, "place": [32, 42, 66, 112, 113], "place_model_on_devic": 66, "placehold": 15, "plai": 103, "plain": [4, 88, 96], "plan": [94, 112], "plantain": 112, "platform": 115, "plausibl": 103, "pleas": [41, 75, 105, 106, 108, 109, 112, 113, 114, 115], "plot": 112, "poblano": 103, "pocket": 112, "point": [66, 94, 112], "polic": 103, "polici": [4, 61, 103, 112], "policy_chosen_logp": 61, "policy_rejected_logp": 61, "polish": 23, "poor": 112, "pop": 66, "pop_callback": 66, "popish": 112, "popul": [103, 113], "popular": [103, 112], "pork": 103, "portion": 103, "posit": [5, 6, 13, 14, 15, 16, 21, 53, 57, 59, 103, 112, 113, 115], "position_id": 93, "position_interpol": [3, 95], "possess": 103, "possibl": [103, 113], "post": [112, 113], "post_process_pair": [75, 81], "postprocess_distributed_inference_output": 16, "postprocess_inference_output": 16, "potenti": [66, 103], "powder": 112, "power": [112, 115], "ppl": 103, "ppo": 112, "practic": 103, "pre": 44, "pre_grad": 33, "precis": 4, "predict": [55, 66, 103, 108], "predict_next_token": 55, "predicted_answ": 52, "prediction_loop": 66, "prediction_loss_onli": 66, "prediction_step": 66, "predictionoutput": 66, "prefer": [105, 112, 113], "preferencedatacollatorwithpad": 60, "prefix": [66, 73, 113], "prefix_checkpoint_dir": 66, "prelat": 112, "prepar": [13, 15, 51, 57, 66, 106, 112, 113, 115], "prepare_inputs_for_infer": [13, 16], "prepare_inputs_labels_for_multimod": 23, "prepend": 66, "preprocess": [66, 113], "preprocess_llama_from_llava_plain": 7, "preprocess_llama_from_llava_v1": 7, "preprocess_logits_for_metr": [61, 66], "preprocess_multimodal_llava": 7, "preprocessing_num_work": [4, 61], "present": [66, 112], "preset": [15, 105, 108, 114], "preset_templ": [81, 108], "presid": 103, "pretrain": [4, 13, 14, 66, 103, 107, 115], "pretrained_language_projection_path": 4, "pretrained_path": 22, "pretrainedmodel": [60, 61, 66], "pretrainedtoken": [7, 15, 70, 71, 75, 80, 81, 83, 87], "pretrainedtokenizerbas": [60, 61, 66], "pretrainedtokenizerfast": [15, 70, 71], "pretti": 113, "previou": [66, 112, 113], "price": 103, "print_bann": 73, "print_change_log": 25, "priorit": 103, "privat": 4, "privileg": 112, "prob": 55, "probabilist": 115, "probabl": [55, 61, 66, 103, 112, 113], "problem": [103, 110, 112], "procedur": [103, 112, 113], "proceed": 103, "process": [7, 13, 14, 16, 22, 52, 53, 55, 57, 66, 103, 105, 110, 111, 112, 113, 115], "process_image_flag": 88, "processor_image_token_in_minigpt4": 22, "produc": 103, "product": [112, 115], "profession": 115, "profici": 115, "program": [11, 12, 88, 112], "progress": 66, "prohibit": 103, "project": [15, 103, 112, 113], "project_dir": 112, "prompt": [4, 7, 13, 14, 16, 22, 50, 55, 57, 60, 69, 75, 105, 112, 113, 115], "prompt_cache_path": 4, "prompt_id": 22, "prompt_keys_valu": 22, "prompt_structur": [4, 55, 106, 107], "proper": 103, "properli": [103, 112], "properti": [23, 103, 105, 114], "propon": 112, "proport": [4, 5, 6], "propos": [26, 31, 33, 36, 41, 43, 45], "protect": 112, "provid": [4, 10, 11, 12, 13, 14, 15, 19, 20, 22, 41, 48, 52, 55, 66, 69, 75, 103, 105, 106, 108, 110, 112, 114, 115], "pt": [66, 67], "public": [1, 112], "publicli": 115, "publish": 115, "pubmedqa": 115, "pull": 103, "punctuat": 113, "purpos": 108, "purs": 112, "push": 66, "push_to_hub": 66, "put": [7, 106], "py": [94, 105, 106, 107, 108, 112, 113], "python": [5, 6, 7, 75, 103, 106, 107, 115], "pytorch": [25, 33, 36, 37, 60, 66], "pytorch_": 41, "pytorchlightn": 37, "q": [94, 103], "q1": 103, "q2": 103, "q3": 103, "qa": [88, 103], "qformer_from_pretrain": 22, "qformer_name_or_path": [4, 22], "qkv": 94, "qr": [105, 114], "qualit": 103, "qualiti": [103, 112], "quant_config": 15, "quant_typ": 4, "quantit": 103, "quantiti": 66, "quantiz": 4, "queri": 91, "quesadilla": 103, "queso": 103, "question": [13, 14, 50, 57, 103, 105, 113, 115], "quick": 112, "quicker": 4, "quickli": [103, 115], "quicksort": 103, "quit": 94, "qwen": [3, 81, 109], "qwen1": 109, "qwen2": 105, "qwen2_templ": [81, 85], "qwen2_template_for_tool": [81, 85], "r": [32, 42], "r1": 103, "r2": 103, "r3": 103, "rabi": 103, "race": 94, "radam": [3, 4, 35], "raft": [4, 61, 110], "raft_align": [3, 4, 54, 112], "raft_aligner_arg": 57, "raft_batch_s": [4, 112], "raft_train": [3, 62], "raftalign": 57, "raftalignerargu": [4, 57], "rafttrain": 66, "raggedtensor": 94, "rai": [13, 16, 58, 66, 69], "rais": [5, 6, 66], "raise_except": 114, "random": [51, 55, 66, 88, 112], "random_se": 4, "random_shuffl": [4, 88], "randomli": [51, 109, 112], "rang": [61, 103, 113, 115], "rank": [74, 110, 112, 113], "rare": 113, "rarest": 113, "rate": [26, 32, 34, 41, 42, 66, 112, 113], "rather": [32, 42], "raw": [103, 105], "re": [60, 66, 112, 113], "read": [112, 113], "reader": 112, "readi": 112, "readm": 115, "readthedoc": 66, "real": [103, 105], "realli": [112, 113], "reason": [66, 112], "recal": 108, "receiv": 66, "recent": 103, "recip": 112, "recommend": [103, 112], "record": [112, 113], "rectifi": 25, "recurs": [66, 103], "reduc": [94, 112], "redund": 112, "reevalu": [25, 26, 31, 32, 34, 36, 37, 41, 42, 43, 45], "ref": 55, "ref_model": [51, 61], "ref_model_arg": [51, 56], "refer": [25, 26, 31, 36, 37, 41, 43, 45, 61, 66, 71, 105, 106, 108, 110, 112, 114, 115], "reference_chosen_logp": 61, "reference_fre": 61, "reference_rejected_logp": 61, "referencemodelargu": [51, 63], "reflect": [66, 103], "reform": 112, "reformul": 112, "regard": 103, "regist": [15, 21, 94], "register_inference_funct": 21, "register_prompt_cach": 22, "register_token": 7, "registr": 110, "regress": [20, 21], "regression_model": [3, 17, 21], "regressionmodel": [20, 21, 57], "reinforc": [112, 113], "reiniti": 66, "reject": [50, 51, 60, 61, 105, 112, 113], "rejected_attention_mask": 113, "rejected_input_id": 113, "rejected_reward": [61, 113], "rel": 113, "relat": [52, 112, 115], "releas": [13, 15, 16, 69, 112, 115], "release_gpu": [13, 16, 69], "relev": 115, "reli": 115, "reliabl": [103, 112, 115], "relianc": 115, "religion": 112, "relleno": 103, "reload": 66, "remain": [51, 103], "remark": [112, 113, 115], "rememb": [75, 106, 112], "remind": 112, "remov": [66, 73, 112], "remove_callback": 66, "remove_dataclass_attr_prefix": 73, "remove_image_flag": 55, "remove_last_sep": [75, 81], "remove_last_separ": [75, 81], "remove_unused_column": 4, "repetit": 4, "repetition_penalti": 4, "replac": [15, 75, 105, 112], "replace_bloom_attn_with_flash_attn": 89, "replace_gpt2_attn_with_flash_attn": 90, "replace_gpt_neo_attn_with_flash_attn": 91, "replace_llama_attn_with_flash_attn": 93, "replace_llama_with_condens": 100, "repli": 112, "repo": [66, 106, 112], "report_to": 4, "repositori": [66, 103, 115], "repres": [4, 5, 6, 13, 14, 16, 52, 75], "requir": [5, 6, 32, 42, 52, 53, 55, 57, 58, 59, 103, 105, 108, 112, 113, 114, 115], "require_vers": 4, "rerun": 66, "rescu": 112, "research": [103, 112], "reset": 25, "residu": 89, "resolv": 112, "resourc": [13, 15, 16, 69, 112], "respect": [32, 37, 42, 61, 112], "respond": 108, "respons": [60, 61, 66, 88, 103, 112, 113, 115], "rest": [11, 12], "restart": 112, "restart_opt": 33, "restaur": 103, "restor": 112, "result": [4, 21, 69, 103, 112, 113, 115], "result_cache_path": 56, "results_path": [4, 69], "resum": 66, "resume_from_checkpoint": 66, "retrain": 112, "retriev": [5, 6], "return": [4, 5, 6, 7, 13, 14, 16, 22, 25, 26, 31, 32, 34, 36, 37, 41, 42, 43, 45, 46, 52, 53, 55, 57, 61, 66, 69, 73, 75, 81, 88, 103, 112, 113], "return_code_error_buff": 74, "return_dict": 22, "return_output": [66, 68], "return_pil": 96, "return_tensor": [7, 67], "reus": [22, 66], "rev_kl": 61, "review": 112, "revis": [13, 14, 16, 21], "reward": [4, 15, 51, 57, 61, 105, 110], "reward_model": [47, 50, 57], "reward_model_arg": 56, "reward_model_inference_batch_s": 4, "reward_model_inference_block_s": 4, "reward_model_or_path": 112, "rewarddatacollatorwithpad": 67, "rewardmodelinferenc": 58, "rewardmodelinferenceresultwithinput": [16, 58, 88], "rewardmodeltun": 59, "rewardmodeltunerargu": [4, 59], "rewardtrain": 68, "rewrit": 113, "rho": [27, 44], "rib": 103, "rich": 103, "right": [4, 66, 70, 71, 103, 112, 114], "risk": 115, "rl": 112, "rlhf": [112, 113], "rlhf_prompt": 112, "rm": [71, 112, 113], "rm_dataprocessor": [3, 62], "rm_inferenc": [3, 54], "rm_loss": 68, "rm_trainer": [3, 62], "rm_tuner": [3, 54], "rng": 66, "robin": 103, "robust": [94, 115], "role": [75, 80, 81, 96, 103, 105, 108, 112, 113, 114], "role_nam": 74, "role_rank": 74, "room": [112, 113], "root": 112, "rope_ntk_ratio": 4, "rope_pi_ratio": 4, "roughli": 103, "round": [103, 105, 112, 114], "rstrip_partial_utf8": 55, "rui": [0, 115], "run": [4, 52, 53, 57, 66, 103, 105, 106, 107, 112, 113], "run_evaluation_with_lora": 107, "run_finetun": [105, 108, 109, 112], "run_finetune_with_lisa": 109, "run_finetune_with_lora": [109, 112], "run_merge_lora": 109, "run_nam": 4, "run_raft_align": 112, "run_reward_model": [112, 113], "run_summari": 66, "rwandan": 112, "safe": [66, 103, 112], "safeti": [103, 112], "sagemak": 66, "sai": [108, 112, 113], "said": [108, 112], "salam": 112, "salem": 112, "salmonellosi": 103, "salt": [103, 112], "same": [4, 66, 105, 112, 113], "samoa": 112, "sampl": [4, 5, 6, 13, 51, 52, 55, 66, 69, 103, 105, 110, 112, 113], "sample_dataset": [5, 6], "sample_input_1": 105, "sample_input_2": 105, "sample_input_3": 105, "sample_output_1": 105, "sample_output_2": 105, "sample_output_3": 105, "sample_text_1": 105, "sample_text_2": 105, "sample_text_3": 105, "sampler": 66, "sampling_paired_idx_from_reward": 51, "sampling_paired_method": [4, 51], "sampling_param": [13, 16, 69], "samplingparam": [13, 16, 69], "saniti": [5, 6], "sanity_check": [4, 5, 6, 50], "sauc": [103, 112], "save": [4, 5, 6, 13, 14, 16, 22, 32, 42, 65, 66, 69, 107, 112, 115], "save_aggregated_lora": 4, "save_count": 66, "save_file_path": 69, "save_full_model": [13, 14], "save_inference_result": 69, "save_language_project": 4, "save_model": 66, "save_pretrain_model_path": 4, "save_prompt_cach": 22, "save_result": [4, 69], "save_step": 4, "scalabl": [44, 103, 115], "scalar": 4, "scale": 37, "scaler": 66, "scaler_nam": 66, "scenario": 103, "scene": 103, "schedul": [32, 42, 66], "scheduler_nam": 66, "scienc": 112, "scope": 113, "score": [5, 16, 51, 55], "score_to_prob": 55, "scout": 112, "scratch": 4, "screen": 112, "script": [4, 66, 105, 107, 108, 109, 111, 112, 113], "seafood": 103, "search": [4, 66, 112, 115], "second": [44, 51, 66, 75, 80, 81, 107, 113], "section": [55, 103, 112], "see": [15, 66, 103, 108, 112, 113], "seed": [4, 5, 6, 66, 88], "seek": 115, "seem": [94, 112], "select": [51, 113], "select_featur": 23, "select_lay": 23, "selected_dataset": 57, "self": [5, 6, 66, 89, 90, 91, 93, 94, 112], "sens": [103, 105, 108, 114], "sentenc": [4, 13, 16, 103, 105, 113, 114], "sep": 96, "sep2": 96, "sep_styl": [4, 96], "separ": [75, 81, 96, 106], "separatorstyl": 96, "seq_len": 100, "seqlen": 94, "seqlen_k": 94, "seqlen_q": 94, "seqlen_q_round": 94, "sequenc": [4, 13, 14, 16, 22, 51, 66, 75, 80, 81, 83, 87, 94, 103], "sequence_length": 22, "sequence_parallel": 94, "sequenceclassifieroutputwithpast": [16, 58], "seri": 112, "serv": [66, 103, 112, 115], "servic": [103, 108], "session": [66, 108], "set": [4, 5, 6, 13, 14, 32, 37, 42, 66, 69, 75, 88, 103, 105, 107, 108, 110, 112, 113, 114], "set_epoch": 66, "set_random_se": 88, "setback": 103, "setup": [66, 110, 112], "seventeenth": 112, "sever": [4, 13, 14, 66, 88, 103, 105, 106, 110], "sft": [105, 110], "sgd": [37, 42], "sgd_schedule_fre": [3, 4, 35], "sgdp": [3, 4, 35], "sgdschedulefre": 42, "sh": [105, 106, 107, 108, 109, 112, 113], "shall": [105, 115], "shape": [22, 61, 94], "sharded_ddp": 66, "share": [66, 112, 115], "sharegpt": [4, 103, 105], "shaw": 103, "she": 112, "sheet": 103, "shell": [73, 105], "shizh": [0, 115], "shop": 103, "should": [4, 11, 12, 13, 15, 16, 23, 32, 42, 66, 75, 80, 81, 94, 103, 105, 112], "show": [103, 110, 112, 113], "shrimp": 103, "shuffl": [5, 6, 88], "shum": [0, 115], "shun": 0, "sick": 112, "side": [4, 103, 112], "sigmoid": [4, 61], "sign_sgd": 4, "signific": [112, 113, 115], "sigopt": 66, "simclr": 37, "similar": [103, 107, 108, 112], "similarli": 106, "simpl": [1, 66, 103, 108, 112, 113, 115], "simplest": [112, 113], "simpli": [106, 112], "simplifi": [1, 52, 53, 55, 57, 113, 115], "sinc": [75, 103, 105, 108, 112], "singl": [13, 25, 26, 31, 32, 33, 34, 36, 37, 41, 42, 43, 45, 60, 66, 96, 103, 105, 109, 112, 113], "situat": [66, 103, 112], "sixteenth": 112, "size": [4, 22, 52, 66, 94, 103, 112, 113], "skill": 115, "skillet": 112, "skip": [73, 112], "skip_default": 73, "skip_first_batch": 66, "skip_next": 96, "skippabl": 101, "slight": [103, 113], "slightli": [94, 107, 114], "slow": [31, 43, 103], "slower": 94, "small": [94, 103, 113], "smaller": [103, 112], "smell": 103, "smoke": 103, "smokehous": 103, "smoother": 108, "smoothli": 112, "so": [7, 15, 66, 103, 105, 108, 112, 113, 114, 115], "social": 103, "societi": 112, "soda": 112, "softmax": 55, "softmax_scal": 94, "softwar": [105, 108, 112, 114], "sole": 115, "solid": 112, "solv": 103, "some": [4, 15, 52, 66, 103, 106, 112, 113, 115], "someon": 112, "someth": [61, 66, 103, 112, 113], "sometim": [103, 112], "soon": [105, 114], "sop": [105, 114], "sophia": [3, 4, 35], "sophiag": 44, "sorri": [103, 105], "sort": [103, 112], "soul": 103, "sourc": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 93, 94, 96, 97, 98, 100, 101, 102, 104, 105, 112, 115], "source_dataset": 51, "sourdough": 103, "southern": 103, "sovereign": 103, "space": [66, 105, 112], "special": [13, 15, 16, 75, 105, 108, 112, 114, 115], "special_start": [75, 81, 108], "special_stopp": [75, 81, 108], "specif": [4, 103, 105, 112, 115], "specifi": [105, 106, 108, 109, 112], "speculativeinferenc": 55, "speed": 94, "speedi": 115, "spell": 113, "spend": 112, "sphinx": 3, "spice": 103, "spici": [103, 112], "spill": 94, "split": [5, 6, 66, 112, 113], "split_arg": 4, "spot": 103, "src": [108, 112], "stabl": 66, "stage": [60, 103], "stai": [103, 105, 109, 112], "stand": 103, "standard": [10, 11, 12, 15, 19, 20, 22, 37, 48, 69, 75], "start": [52, 66, 94, 105, 112, 113], "start_header_id": [105, 114], "start_n": 94, "start_of_turn": [105, 114], "starter": 108, "state": [25, 26, 30, 33, 37, 38, 39, 41, 44, 65, 66, 103, 112], "state_dict": [66, 98], "static": [16, 31, 43, 55, 66, 94], "step": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44, 45, 66, 106, 108, 110, 112], "stepsiz": 25, "stew": 103, "stext": 112, "still": [60, 66, 94, 103, 112, 113, 115], "stochast": 44, "storag": 115, "store": [4, 94, 112], "store_flo": 66, "storm": 112, "str": [4, 5, 6, 7, 13, 14, 15, 16, 50, 51, 55, 56, 58, 60, 61, 66, 67, 69, 70, 71, 73, 75, 80, 81, 83, 87, 88, 96, 101, 112], "strand": 112, "strategi": [13, 14, 51, 112], "stream": 4, "stream_infer": 55, "streamlin": 115, "street": 103, "strictli": 103, "stride_bb": 94, "stride_bh": 94, "stride_bm": 94, "stride_dkb": 94, "stride_dkh": 94, "stride_dkn": 94, "stride_dob": 94, "stride_doh": 94, "stride_dom": 94, "stride_dqb": 94, "stride_dqh": 94, "stride_dqm": 94, "stride_dvb": 94, "stride_dvh": 94, "stride_dvn": 94, "stride_kb": 94, "stride_kh": 94, "stride_kn": 94, "stride_ob": 94, "stride_oh": 94, "stride_om": 94, "stride_qb": 94, "stride_qh": 94, "stride_qm": 94, "stride_vb": 94, "stride_vh": 94, "stride_vn": 94, "string": [4, 5, 6, 13, 14, 16, 22, 55, 66, 69, 73, 75, 88, 105, 108, 114], "stringformatt": [75, 108], "strip": [112, 114], "strong": 112, "stronger": 112, "strongest": 112, "strongli": 105, "structur": [5, 6, 50, 112, 113], "struggl": 103, "studi": [66, 112], "studio": 112, "stuf": 103, "stuff": [112, 113], "sturdier": [112, 113], "style": [96, 103], "sub": 103, "subarrai": 103, "subclass": [47, 49, 66], "subject": 115, "sublist_length": 58, "submit": 115, "subprocess": 73, "subsect": 112, "subtract": 51, "succe": 112, "success": 113, "suffer": 103, "sugar": 112, "suggest": [32, 42, 103, 112], "sum": [60, 66], "sum_": 52, "summar": 103, "summari": [11, 12, 66], "superior": 112, "superstit": 112, "supervis": [7, 110], "supervisor": 112, "support": [13, 14, 55, 75, 94, 106, 107, 110, 113], "supported_dataset_typ": 55, "suprem": 103, "sure": [75, 81, 94, 103, 105, 112, 113], "surfac": 113, "surpass": [103, 115], "surpris": 103, "surprisingli": 113, "surround": 112, "suspect": 112, "switch": [66, 112], "sy": [105, 111, 114], "synonym": 103, "sysinfo1": [75, 80, 81], "system": [75, 80, 81, 83, 87, 96, 105, 108, 114], "system_formatt": [75, 81, 108], "system_messag": 114, "system_propmt": 105, "t": [7, 15, 37, 60, 65, 66, 71, 94, 103, 105, 108, 112, 113, 114], "t3uwm8yp": 113, "tabl": [103, 106, 112], "taco": 103, "tag": [4, 66], "take": [13, 14, 52, 57, 66, 112], "talk": 112, "taller": [112, 113], "target": [7, 55, 66, 115], "target_cl": 56, "target_model_arg": [55, 56], "task": [1, 13, 14, 66, 103, 110, 112], "task_1": 106, "task_2": 106, "task_combin": 106, "task_guid": 103, "tast": 112, "teach": [112, 113, 115], "team": [105, 108, 114], "teaspoon": 112, "technic": 115, "techniqu": [105, 115], "technologi": 112, "tee": 106, "tell": [108, 112, 113], "temperatur": [4, 55, 61, 112], "templat": [4, 69, 75, 81], "template_nam": [75, 81, 108], "templatecompon": [75, 81, 108], "tend": [103, 112], "tensor": [4, 13, 16, 22, 33, 55, 60, 61, 66, 89, 90, 93], "tensor_parallel_s": 4, "term": [14, 15, 103, 112], "termin": [11, 12], "test": [5, 6, 52, 61, 66, 94, 103, 105, 107, 109, 112, 113, 115], "test_13": 105, "test_bleu": 66, "test_dataset": [5, 6, 66], "test_fil": 4, "test_flash_attn": 94, "test_flash_attn_triton_race_condit": 94, "test_siz": [5, 6], "text": [4, 7, 13, 14, 37, 52, 53, 55, 57, 88, 103, 105, 107, 108, 111, 112, 113, 114, 115], "text2text": [5, 70, 71, 106, 110], "text2text_dataset_descript": 74, "text2text_dataset_detail": 74, "text2text_dataset_long_descrit": 74, "text_onli": [5, 21, 55, 70, 71, 105, 106, 112], "text_only_dataset_descript": 74, "text_only_dataset_detail": 74, "text_only_dataset_long_descrit": 74, "text_regression_model": [3, 16, 17], "text_to_scored_textlist": 51, "text_to_scored_textlist_dataset_descript": 74, "text_to_textlist_dataset_descript": 74, "text_to_textlist_tokenize_funct": 71, "textonli": 110, "textregressionmodel": [16, 21], "th": 52, "than": [32, 42, 94, 103, 109, 112], "thank": 112, "thankfulli": 112, "thei": [4, 13, 16, 66, 103, 105, 108, 112, 113], "them": [66, 103, 105, 106, 107, 108, 112, 113, 115], "therefor": [112, 115], "theses": 112, "thi": [3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 32, 37, 42, 57, 60, 66, 75, 88, 94, 103, 105, 106, 108, 109, 112, 113, 114, 115], "thing": 112, "think": [112, 113], "thoma": 112, "thoroughli": 115, "those": [66, 103, 112], "thoughtfulli": 115, "three": [52, 61, 103, 105, 112], "threshold": 55, "thrive": 103, "through": [66, 103], "thu": [15, 103, 108], "tillet": 94, "time": [66, 103, 105, 112, 113], "tip": [66, 105], "titl": 115, "tmp": [4, 94], "tmp_trainer": 66, "to_dict": [5, 6], "to_gradio_chatbot": 96, "to_list": [5, 6], "todai": [108, 113], "todo": 111, "togeth": [53, 66, 112, 115], "tojson": 114, "tok_logg": [70, 71], "token": [3, 4, 7, 8, 13, 14, 15, 16, 22, 50, 52, 55, 57, 60, 61, 66, 67, 69, 75, 80, 81, 83, 87, 103, 105, 108, 111, 112, 113, 114], "token_dict": [70, 71], "token_id": 75, "token_per_step": 55, "token_type_id": 13, "tokenization_utils_bas": 66, "tokenize_batch_el": 60, "tokenize_funct": [70, 71], "tokenized_column_ord": [70, 71], "tokenized_dataset": [13, 14, 16, 53, 111], "tokenized_neg": 113, "tokenized_po": 113, "tokenizer_image_token": 7, "tokenizer_nam": 4, "told": 113, "tong": [0, 115], "too": [60, 103, 113], "tool": [75, 80, 81, 83, 87, 105, 108, 114, 115], "tool_1_desc": [75, 80, 81], "tool_description_1": 105, "tool_description_2": 105, "tool_description_3": 105, "tool_description_x": 105, "tool_info": 114, "toolbox": 115, "toolinferenc": 55, "toolkit": [103, 112, 115], "tools_formatt": [75, 81], "top": [4, 55, 103, 112, 113], "top_k": 4, "top_p": [4, 55], "top_reward_percentag": [4, 112], "torch": [7, 13, 15, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44, 45, 55, 57, 61, 66, 88, 89, 90, 93, 94, 100], "torch_dtyp": [4, 15], "torch_jit_model_ev": 66, "tortilla": 103, "total": [103, 113], "touch": 112, "toxoplasmosi": 103, "tr_loss": 66, "track": [66, 105, 112], "tradeoff": 109, "tradit": [103, 105, 108, 112, 114], "trail": [13, 16], "train": [4, 5, 6, 13, 14, 32, 36, 37, 42, 44, 51, 53, 57, 59, 61, 65, 66, 88, 103, 105, 106, 109, 112, 113, 114, 115], "train_50": 105, "train_convers": 109, "train_dataset": [5, 6, 50, 51, 61, 66, 113], "train_ev": 61, "train_fil": 4, "train_on_prompt": 4, "train_test_split": [5, 6], "trainer": [57, 65, 66, 68], "trainer_callback": [61, 65, 66], "trainer_st": 66, "trainer_state_nam": 66, "trainer_util": [61, 66], "trainercallback": [61, 65, 66], "trainercontrol": 65, "trainerst": 65, "training_arg": [57, 65, 66], "training_args_nam": 66, "training_step": 66, "training_util": 66, "trainingargu": [4, 51, 61, 65, 66], "transform": [4, 7, 13, 14, 15, 16, 22, 51, 58, 60, 61, 65, 66, 67, 68, 70, 71, 75, 80, 81, 83, 87, 111], "transform_dataset_in_plac": [51, 53, 58, 59], "tri": 112, "trial": [65, 66, 103, 112], "tribul": 103, "trick": 108, "trim": [105, 114], "triton": 94, "triton_flash_attent": [3, 92], "trl": 61, "troubl": [103, 112], "truck": 103, "true": [4, 5, 6, 13, 14, 16, 25, 33, 51, 52, 53, 58, 59, 60, 61, 66, 67, 69, 73, 75, 88, 112, 113], "truncat": [4, 60, 113], "truncate_to_model_max_length": 4, "truncation_mod": [60, 61], "truncation_sid": [4, 70, 71], "trust_coeffici": 37, "trust_remote_cod": 4, "try": [75, 103, 112, 113], "tunabl": [3, 13, 14, 16, 18, 49], "tunable_model": 111, "tunablemodel": [52, 53, 55, 59, 111], "tune": [1, 7, 13, 14, 49, 53, 59, 66, 103, 105, 109, 111, 112, 113], "tune_strategi": [13, 14, 16], "tuned_model": 111, "tupl": [4, 22, 34, 51, 58, 61, 66, 75, 80, 81, 83, 87, 89, 90, 93, 101], "turn": [103, 112], "tweak": 66, "two": [51, 52, 66, 75, 96, 103, 106, 112, 113], "type": [4, 5, 6, 9, 21, 66, 75, 103, 105, 106, 108, 112, 113, 114, 115], "typeddict": 88, "typic": [11, 12, 61, 103, 112, 113], "u": [112, 115], "udpat": 22, "unabl": 103, "unclear": 113, "under": [4, 66, 103, 105, 106, 115], "understand": [103, 112, 115], "underw": 113, "unfair": 103, "unfinish": 112, "unfreez": 109, "uniform": 55, "union": [13, 16, 66, 73, 75], "unit": [75, 103, 112], "univers": 112, "unknown": 96, "unlock": 115, "unnecessari": 113, "unpack": 66, "unpleas": 103, "unseen": 115, "unsort": 103, "until": 112, "unus": 66, "unusu": 112, "up": [66, 94, 103, 112, 113], "upcom": 115, "updat": [66, 94, 105, 109, 112, 113, 114], "update_custom_config": 98, "update_hessian": 44, "upload": 66, "upscal": 103, "url": [66, 115], "us": [4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 19, 20, 22, 32, 34, 41, 42, 48, 52, 55, 61, 66, 69, 73, 74, 75, 81, 88, 94, 103, 105, 106, 107, 109, 110, 112, 113, 114, 115], "usa": 103, "usag": [11, 12, 103], "use_acceler": [4, 13, 14, 15, 16], "use_accelerator_for_evalu": 4, "use_apex": 66, "use_beam_search": 4, "use_cach": [22, 89, 90, 91, 93], "use_cpu_amp": 66, "use_cuda_amp": 66, "use_customized_optim": 4, "use_dora": 4, "use_dpo_data_col": 61, "use_fast": 51, "use_fast_token": 4, "use_flash_attent": 4, "use_image_start_end": 4, "use_int8": 4, "use_lisa": 4, "use_lora": 4, "use_mtim": 66, "use_prompt_cach": [4, 22], "use_qlora": 4, "use_ram_optimized_load": [4, 106], "use_trunc": [70, 71], "use_tune_checkpoint": 66, "use_vllm": [4, 13, 15, 16, 58], "use_wandb": [4, 52], "user": [1, 75, 80, 81, 103, 105, 106, 108, 112, 113, 114, 115], "user_formatt": [75, 81, 108], "user_input_1": 105, "user_input_2": 105, "user_message_0": 114, "user_message_1": 114, "usernam": 106, "usml": 115, "usr_nam": 112, "usual": 103, "util": [3, 4, 7, 8, 13, 16, 54, 57, 58, 69, 70, 71, 103, 108, 113, 115], "v": [37, 51, 94, 108], "v_": 37, "valid": 66, "validation_fil": 4, "validation_split_percentag": [4, 112, 113], "valu": [4, 55, 66, 73, 75, 91, 106, 112], "value_1": [5, 6, 105], "value_2": [5, 6, 105], "value_3": 105, "varianc": 41, "variant": 33, "varieti": 103, "variou": [13, 14, 66, 105, 115], "ve": [94, 105, 112], "veget": [103, 112], "vegetarian": 103, "veloc": 37, "ventil": 103, "verbos": 52, "veri": [108, 112, 113], "verifi": [55, 115], "versa": 51, "version": [2, 3, 4, 8, 37, 41, 94, 95, 96, 103], "via": [4, 103, 112], "vibrant": 115, "vice": 51, "victorinox": 112, "vicuna": 103, "video": 112, "videogam": 112, "view_func": [31, 43], "vigil": 112, "virginia": 103, "viru": 103, "vision": 112, "vision2seq_model": [3, 17], "vision_encod": [3, 17], "vision_feature_select": 22, "vision_model_from_pretrain": 22, "vision_select_lay": 4, "vision_tow": 23, "vision_tower_cfg": [23, 24], "vision_tower_nam": 23, "visit": 103, "vismodelargu": 4, "visual": 112, "vllm": [4, 13, 15, 16, 69], "vllm_gpu_memory_util": [4, 15], "vllm_inferenc": [3, 54], "vllm_inference_batch_s": 4, "vllm_tensor_parallel_s": [4, 15], "vllminferenc": 69, "vllminferenceresultwithinput": [13, 69, 88], "vocabulari": 103, "w_": 52, "w_i": 52, "wa": [33, 103, 112, 113], "wai": [10, 11, 12, 15, 19, 20, 22, 48, 66, 69, 75, 103, 105, 106, 107, 112, 113], "wait": 103, "walnut": 103, "wandb": [4, 113], "want": [66, 106, 108, 112, 113], "warmup": [32, 42], "warmup_step": [4, 32, 42], "warn": 66, "washington": 103, "wat": 103, "watch": 66, "wd_ratio": [31, 43], "we": [51, 60, 61, 66, 75, 94, 103, 105, 106, 108, 110, 111, 112, 113, 114, 115], "weather": [105, 112], "wei": [0, 115], "weight": [4, 31, 37, 43, 52, 115], "weight_decai": [4, 25, 26, 28, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44, 45], "weight_decoupl": 25, "weight_lr_pow": [32, 42], "weixiong5237": 113, "welcom": [112, 115], "well": [66, 103, 105, 112, 115], "weqweasda": 112, "were": [112, 113], "what": [108, 112, 113], "when": [4, 13, 16, 32, 42, 51, 55, 66, 69, 73, 75, 103, 108, 112, 113], "whenev": 113, "where": [4, 5, 6, 13, 37, 52, 69, 103, 105, 112, 113, 115], "whether": [4, 7, 13, 14, 16, 66, 69, 73, 112, 115], "which": [4, 5, 6, 13, 14, 47, 49, 52, 60, 66, 75, 103, 105, 112, 113, 115], "while": [66, 75, 94, 103, 115], "white": 103, "who": [105, 108, 112, 114, 115], "whole": 115, "whose": 112, "why": [108, 112], "wide": [103, 115], "width": 22, "wild": 113, "willing": 112, "window": [103, 112], "window_length": 52, "winogrand": 103, "wipe": 66, "wise": 37, "wish": 66, "witch": 112, "witchcraft": 112, "with_deepspe": 14, "with_qform": [4, 22], "within": [55, 108], "without": [13, 16, 66, 103, 112, 113, 114], "won": 112, "word": [103, 108, 112, 113], "wordi": 113, "work": [66, 94, 103, 112, 113, 115], "worker_heart_beat_interv": 74, "workflow": 115, "workspace_path": 56, "world": [13, 103, 112, 113], "world_siz": [52, 55, 58], "wors": 112, "worst": 51, "would": [13, 69, 94, 103, 108, 112, 113], "wrap": 66, "wrapper": [13, 14, 66], "write": [52, 103, 113], "w\u00fcsthof": 112, "x": [31, 43, 100, 103, 112, 113], "xiong": [0, 115], "xiongwei": 112, "y": [31, 43, 106, 115], "ye": [103, 112, 113], "year": [103, 112, 113, 115], "yet": [13, 14, 60, 75, 94], "yi": [3, 81, 105], "yi1_5": 105, "yi1_5_templ": [81, 86], "yogi": [3, 4, 35], "you": [32, 42, 66, 75, 94, 103, 105, 106, 107, 108, 112, 113, 114, 115], "your": [66, 110, 112, 113, 114], "your_conversation_dataset": 108, "your_model": 108, "your_templ": 108, "your_template_fil": 108, "your_template_nam": 108, "yourself": 103, "zephyr": [3, 81, 105], "zephyr_templ": [81, 87], "zephyrconversationtempl": 87, "zero": 66, "zhang": [0, 115]}, "titles": ["Contributors", "Changelog", "About", "API Reference", "lmflow.args", "lmflow.datasets.dataset", "lmflow.datasets", "lmflow.datasets.multi_modal_dataset", "lmflow", "lmflow.models.auto_model", "lmflow.models.base_model", "lmflow.models.decoder_model", "lmflow.models.encoder_decoder_model", "lmflow.models.hf_decoder_model", "lmflow.models.hf_encoder_decoder_model", "lmflow.models.hf_model_mixin", "lmflow.models.hf_text_regression_model", "lmflow.models", "lmflow.models.interfaces", "lmflow.models.interfaces.tunable", "lmflow.models.regression_model", "lmflow.models.text_regression_model", "lmflow.models.vision2seq_model", "lmflow.models.vision_encoder.clip_encoder", "lmflow.models.vision_encoder", "lmflow.optim.adabelief", "lmflow.optim.adabound", "lmflow.optim.adadelta", "lmflow.optim.adagrad", "lmflow.optim.adam", "lmflow.optim.adamax", "lmflow.optim.adamp", "lmflow.optim.adamw_schedule_free", "lmflow.optim.adan", "lmflow.optim.dummy", "lmflow.optim", "lmflow.optim.lamb", "lmflow.optim.lars", "lmflow.optim.nadam", "lmflow.optim.novograd", "lmflow.optim.optimizers", "lmflow.optim.radam", "lmflow.optim.sgd_schedule_free", "lmflow.optim.sgdp", "lmflow.optim.sophia", "lmflow.optim.yogi", "lmflow.pipeline.auto_pipeline", "lmflow.pipeline.base_aligner", "lmflow.pipeline.base_pipeline", "lmflow.pipeline.base_tuner", "lmflow.pipeline.dpo_aligner", "lmflow.pipeline.dpov2_aligner", "lmflow.pipeline.evaluator", "lmflow.pipeline.finetuner", "lmflow.pipeline", "lmflow.pipeline.inferencer", "lmflow.pipeline.iterative_dpo_aligner", "lmflow.pipeline.raft_aligner", "lmflow.pipeline.rm_inferencer", "lmflow.pipeline.rm_tuner", "lmflow.pipeline.utils.dpov2_dataprocessor", "lmflow.pipeline.utils.dpov2_trainer", "lmflow.pipeline.utils", "lmflow.pipeline.utils.memory_safe_dpov2_align", "lmflow.pipeline.utils.memory_safe_vllm_inference", "lmflow.pipeline.utils.peft_trainer", "lmflow.pipeline.utils.raft_trainer", "lmflow.pipeline.utils.rm_dataprocessor", "lmflow.pipeline.utils.rm_trainer", "lmflow.pipeline.vllm_inferencer", "lmflow.tokenization.hf_decoder_model", "lmflow.tokenization.hf_text_regression_model", "lmflow.tokenization", "lmflow.utils.common", "lmflow.utils.constants", "lmflow.utils.conversation_template.base", "lmflow.utils.conversation_template.chatglm", "lmflow.utils.conversation_template.chatml", "lmflow.utils.conversation_template.deepseek", "lmflow.utils.conversation_template.gemma", "lmflow.utils.conversation_template.hymba", "lmflow.utils.conversation_template", "lmflow.utils.conversation_template.internlm", "lmflow.utils.conversation_template.llama", "lmflow.utils.conversation_template.phi", "lmflow.utils.conversation_template.qwen", "lmflow.utils.conversation_template.yi", "lmflow.utils.conversation_template.zephyr", "lmflow.utils.data_utils", "lmflow.utils.flash_attention.bloom_flash_attention", "lmflow.utils.flash_attention.gpt2_flash_attention", "lmflow.utils.flash_attention.gpt_neo_flash_attention", "lmflow.utils.flash_attention", "lmflow.utils.flash_attention.llama_flash_attention", "lmflow.utils.flash_attention.triton_flash_attention", "lmflow.utils", "lmflow.utils.llava_conversation_lib", "lmflow.utils.model", "lmflow.utils.multimodal", "lmflow.utils.position_interpolation", "lmflow.utils.position_interpolation.llama_rope_scaled_monkey_patch", "lmflow.utils.versioning", "lmflow.version", "LMFlow Benchmark: An Automatic Evaluation Framework for Open-Source LLMs", "Blogs", "Dataset", "LMFlow Benchmark Guide", "Checkpoints", "Customize Conversation Template", "Finetuning", "Examples", "Finetune", "RAFT", "Reward Modeling", "Supported Conversation Template", "LMFlow"], "titleterms": {"0": 1, "1": [1, 106, 108, 112, 113, 114], "2": [106, 108, 112, 113, 114], "2023": [1, 104], "28": 1, "3": [108, 112, 114], "4": 108, "5": [108, 114], "8x22b": 114, "8x7b": 114, "about": 2, "adabelief": 25, "adabound": 26, "adadelta": 27, "adagrad": 28, "adam": 29, "adamax": 30, "adamp": 31, "adamw": 109, "adamw_schedule_fre": 32, "adan": 33, "adapt": 109, "algorithm": 112, "align": 112, "an": 103, "api": 3, "arg": 4, "attribut": [4, 5, 8, 13, 14, 15, 16, 46, 51, 53, 55, 56, 57, 58, 59, 60, 61, 63, 64, 66, 67, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 94, 96, 97, 101, 102], "auto_model": 9, "auto_pipelin": 46, "automat": 103, "base": 75, "base_align": 47, "base_model": 10, "base_pipelin": 48, "base_tun": 49, "benchmark": [103, 106], "blog": 104, "bloom_flash_attent": 89, "build": 108, "changelog": 1, "chat": 103, "chatglm": [76, 114], "chatml": [77, 114], "checkpoint": [107, 115], "choos": 108, "citat": 115, "class": [4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 65, 66, 67, 68, 69, 75, 79, 80, 81, 83, 87, 88, 94, 96, 100], "clip_encod": 23, "common": 73, "commonsens": 103, "conclus": 103, "constant": 74, "content": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 93, 94, 96, 97, 98, 100, 101, 102, 115], "contributor": 0, "convers": [105, 108, 109, 114], "conversation_templ": [75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87], "creat": 106, "custom": [105, 108], "data": [105, 110], "data_util": 88, "dataset": [5, 6, 7, 105, 106, 112], "decoder_model": 11, "decompos": 108, "deepseek": [78, 114], "descript": 112, "detail": 105, "disclaim": 115, "dpo_align": 50, "dpov2_align": 51, "dpov2_dataprocessor": 60, "dpov2_train": 61, "dummi": 34, "encoder_decoder_model": 12, "end": 112, "evalu": [52, 103, 106, 110], "exampl": [110, 112, 113], "featur": 115, "file": 106, "finetun": [53, 109, 110, 111, 112, 113], "flash_attent": [89, 90, 91, 92, 93, 94], "follow": 103, "format": 105, "formatt": 108, "framework": 103, "full": 109, "function": [4, 6, 7, 23, 24, 33, 50, 55, 63, 64, 68, 70, 71, 73, 88, 89, 90, 91, 93, 94, 97, 98, 100, 101], "gemma": [79, 114], "gener": 105, "get": 112, "gpt2_flash_attent": 90, "gpt_neo_flash_attent": 91, "guid": 106, "hf_decoder_model": [13, 70], "hf_encoder_decoder_model": 14, "hf_model_mixin": 15, "hf_text_regression_model": [16, 71], "hymba": [80, 114], "hyper": 112, "import": 109, "indic": 115, "infer": 110, "inferenc": 55, "instal": 115, "instruct": [103, 115], "interfac": [18, 19], "internlm": 82, "internlm2": 114, "introduct": [103, 112, 113, 115], "iterative_dpo_align": 56, "lamb": 36, "lar": 37, "layerwis": 109, "lisa": 109, "llama": [83, 107, 114], "llama_flash_attent": 93, "llama_rope_scaled_monkey_patch": 100, "llava_conversation_lib": 96, "llm": 103, "lm": 106, "lmflow": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 106, 115], "lora": [109, 112], "low": 109, "mar": 1, "memory_safe_dpov2_align": 63, "memory_safe_vllm_infer": 64, "merg": [109, 112], "metric": 103, "mixtral": 114, "model": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 97, 112, 113], "modul": [4, 5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 93, 94, 96, 97, 98, 100, 101, 102], "multi_modal_dataset": 7, "multimod": 98, "nadam": 38, "nll": 106, "note": 112, "notic": 114, "novograd": 39, "open": 103, "optim": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], "overview": 112, "packag": [6, 8, 24, 81], "pair": 105, "paramet": [109, 112], "peft_train": 65, "perform": 103, "phi": [84, 114], "pipelin": [46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69], "position_interpol": [99, 100], "prepar": 110, "progress": [105, 114], "proper": 108, "qwen": [85, 114], "radam": 41, "raft": 112, "raft_align": 57, "raft_train": 66, "rank": 109, "refer": [3, 103], "regist": 108, "registr": 106, "regression_model": 20, "return": 15, "reward": [112, 113], "rm_dataprocessor": 67, "rm_inferenc": 58, "rm_trainer": 68, "rm_tuner": 59, "sampl": 109, "set": 106, "setup": 106, "sft": [112, 113], "sgd_schedule_fre": 42, "sgdp": 43, "sophia": 44, "sourc": 103, "step": 113, "submodul": [6, 8, 17, 18, 24, 35, 54, 62, 72, 81, 92, 95, 99], "supervis": [112, 113], "support": [105, 114, 115], "tabl": 115, "task": [106, 115], "templat": [105, 108, 109, 114], "text2text": 105, "text_regression_model": 21, "textonli": 105, "token": [70, 71, 72], "triton_flash_attent": 94, "tunabl": 19, "tune": 115, "us": 108, "util": [60, 61, 62, 63, 64, 65, 66, 67, 68, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "version": [1, 101, 102], "vision": 115, "vision2seq_model": 22, "vision_encod": [23, 24], "vllm_inferenc": 69, "weight": 109, "work": [105, 114], "yi": [86, 114], "yogi": 45, "your": [106, 108], "zephyr": [87, 114]}}) \ No newline at end of file

Z_?Ys~B@X1;t7mucS+yj3GGN3JzvBx;Q zay4ZYJB63WDt3^2aRb@R2sC&Rk0K7Y?cZ4pmQo=y=bV-SQ)z#v+d8Lbq}srJDbzqF z1S7KyLry1)?{=HHioqC4c>u zakg`Rz|FU!1WZj(30-K6Nbf-OOTwqnGHyUub&efm*&>NM*^9;`IfRo}U3FN+)Y4*@ zhNZ2-RL~-b1i46=S-uBo7#EZVU%5>B%;zIH#NfIfm~_3;ok@S8HF2$)bYe@6(Fh$W&eLXoJF7-A6h zP6hiDIcSNq^vM%<*@Mf;`dO9|U|3akg)YB|PIvxx-wh$U@N|T{RS2)Qm)>>H%CjJ3 zcowUoi@VA&+tgjHKsEG(Brf}a0|VjQwS)DmHV z7%>kj7=$6#sVc;II>t!-#Y|xniX>4PX6`my)rxTHcwS|q=~|p8Y4V; z+^dsMFb877n!_=v1NV4OKbO7XZ=S|+xpxOHPS-FH_Ov_CNm%G6eb~=WF!r4}Srx|k z0)=r8Y#Q7K#}H{oH)nFn;Pic4>NuvD1DL=Bwd{k7^b@2?vaXBloiQuMmSZ#__}`Rx z?hvrNm_tWg&ZKW6PiurgNg^R#$F@4SfBNa{*G$p2BP$(h*$f?p_FTJiHr8mbt*2>! zi_89Y-&7DsM4WiOk{hOEVf@CtJmm+DowE6xxEVv%;Fma=*Uozb5jsat))dWx>Zr37 zbTpdFqi>#;qwJQY6q2LtlcV%#)vNR1yKK=+EJ;a)Yjtq>aK6Xzh*BUqWmmJ(sUFl%9!`g zZ}MALtvZ9_)Ys{4E%hT~;k-8vYSWJ8J4Tq5nD^2Z*+hKFnbBUq3j+NLlm_yYY4VgC z@hw@G7xs+}b$@zr2N+`SqA%|U1>WJr%e#^_+DM|+(3oFnU9uy){tg47l&shYL9)_x zJ-vSBY(A!0<24p#3xrXB>X@wAFfje;krM@(ovQ;&n-{Q}evROneDMt4aeEW6;Grd1 zb&fmSQW9bTJRvCZ32;>TENs4&m$c$J9`MwzntVCI$mE zhvlO5s%f11R>Wo$G3p~8A7V;@`Z@zS-Wt9EmDfzwN-fei8+YUxB3Ww2Am%oC+a*zu=$Dd@(;W-!=OE)2hUrKtvYcqo!DCJ zAltwN;s;$E7*bqeuJc&^D_1l|1QNOZl;771{AZZIvkeFnmncQ3NZ&)CD-~`OwRUg~ ztHfS*ey+$n1<^P|rz4U$V7IJKMDiw4-;G!ix(IaJKC$l{%uZ`1 z0fuA*^&jF90$zl)?STiDHF^Dz0dKPruZ@eor*!gfq++wB<>aNh$v!8Ty@*>a85YIF zJ~(fafY`-{hvp;4g1*w*6b>x$4j4mnc8IQLWYofDp&gg5hj@S3LTkpQ{pQ)5l-A0h zug|}1qKVg#K~Zi;Ua7)ru@TvSyg_)4%vx!O>p)xAl$NxjfJXfu!wASzqk1}L=>|fG z^Q?S&d{=IqR_kCmX+W9a;$&4mO~IB^pk@kN1FOn*-2Uo^hHGRhhydb4NSJeHsAB|- zY|ny!PGMiGUcEbCTyhuFy8A_#wBfgZ+Ype+M`kYZ?Aj;0>ODV_`>`id1%y)ic8J?0 z;^_Ur1Rcdyc#9Uctga%$;6~`J%$iA;B@NWLWK|&9k;#QrK7eOGNyE5tu{>cZq@!Yp zDl7rts|WO?P?38?vd?pUoW03$bFP}qFOg0>*4=^vMan4Az3^Gz(jgG_#0647&)W`B z1~SL9o8{^ElBje~7nu@yf&QAZCPYuV=Dr+rmp#|7MSx!CW^@o(4rj=k--AYOZf;{C zUp~iNgh?+YCe%9fZ97y{nY+@MljXj46|r-cLeC&y{j_ z`|iMs9JSVQ2&`YubY|@sxH?i>wk=i@xMh)Xs8jK2Xn%Y@;myR&>_b#`pE<$r9g7?# z#V0Pl_&2_?S28UgIfs!mk1#W1BPwaFL!UDcVcu>Tl!U&Ba)3%O zO`Wdqx3ng^Y5F#CGGw9e9$#JKla5OTfNfFOE0G&1&1iSQoH8PmNl>K|4UcZbe0E(! z_}D^T3!&Ha^T#5euI%xeK3Y)=zYzUNB!G7gj8oM--<&V98MQk&;VXh+lJY_k5E7xu z&2viMb=$NTp~?SvYu5{JD#~`CW+q1pn2}C=hs!M41yb>Mh3+3da6P%Pm-QXhG3*xDsow49;XmK8);llMj9*ss>ockNz=^nEx^#EhM>v`LtHzr|NQWc)3ZFmok7eR^TjpxZ7 zp_3!rUam_u110?X^Cq<34TrQ4%%Rs+T6-hFr_-o>D~(U9qnj1T-3#sdVO-& zp%gipGrc5XGoU-ns~@_@zbKe&Sf*RR=DzMsY|e1%eApN69X%+q4eRIKGO4Q@Exi?* z!+U#8Z>S$?XSzYhM6+wV424M#t-8R;5aL`L%D;cAZK4iT1+!m7<)CgaExine*j!(o zw3hUpjs2}^w=;cQ54Dqz5?M=h<3}BWnQ^A1fy=J%S6TKuC4&RzyUVea0W{$yf(S`I z7QfH#Wpoo?#KySH?-Ro$^|FWXZ4ZsTI5JJU=H$o3!Oyn{Wr$H8ushUyZ)W+oZEIsQ z*e<=$98NXZnEaqhP>R-1g?N0+cV`=rG>FOvPuW`yg7T5`smdr`Y5!{p%5Pb^!%tN# z<=bN^?S|8DL3)(53>gV$`P2Irr|3~rc!pG1P?=Vw+QSom>O(P5D0B%;mdie>ou;jc ztAHy=2k{o*-Z(=l--o8GI@+eA>k5X-t@A$GdBz4=VA`dQD0%YJ*L{-j zR@QLZob0mem9i1xMzsg8nJ?4cLZwHWnCpi(m;^L!?L`gQX!SnN-)z_bNQQQFrybYz zmK16(%`4DMHxsY!TstaGv*i1q1q>ro%6T|_uWf-6XFkL4L-WTN{{Dh?pLd)U!HeVu zL`PdpC00Uwm|VRRsIjVPRc!+A+9`yuD=H;MJ80L2R;w<)&w+)*K0M(z4zy_Hxoyy( zxOlF<&9V-syY=2`2tgIR(aqo`WB|tJJaWxH#54TyQj3DIeNj=l?o-qVa*}QJJah6 zg2C03@N8jsTT2h?ECtqQ;gn9>NV;yGrzn>Rmk}ai zmnauN9e*@%(mA_*`|J#+tG^2O34)~Co!}I*QC|(}n$Hnf6R78ihORZn)#}?Zbj?&b zw1A$IgUe8maP4}4wb$!Pjc-u=(gAiufGVkRnB|$6_hw9MDk%jKEA2uexC>VMkK!_@ zY`1sJD#xJ*rkv+unh&?8>!k+f^hKDGkd4uaFo+-YIW2b}3{z%R2%Z|Jv3X^a^2ntC zH2klnjkTM(R|-{TEJx`K2~$)fLV)u+#IYBiu`NxAeCZ72`=t4*QegOs#d|aVp{*Xt zVx7n}zlGO=IK9F?fIikzH)T*ySf8yXw`9An$2H0SaHZC*y6@@w3&D|7xbvjRVchv9 z8}lv!=Om$2S+{BuR2??NH)Ec0`)*dv2OcC8ofkeiQc$dCE6O!FG#B&d;(K?P9HkrD zIV1PiMfdxj)wp8FK~Rcds;~_#t26{D=$CR%Y~^MckyPaf&%HK^yZ*tLq&$dSTfW9C)vY;4^=CpiA;eY>Tk)z0uBmaT{9T5y z?2ZVu4la)Iq-EWx`E3zuSz(?~!&b6El zb0&TWhNvHj4na(@!Jn;}gOp~873CuYlPpQwCvX z!FZO%BTe>D1zwtINyoRsj^|)cBsUQ z<8B8EOM7MTu%6w7b2=VfAU}%-kt-hNwyHg;Q+8+4hC=^bnG@u&GLKEnT=C3?z zg6fAMdIq=V2a1G%i>^o)h`2${{M5GG(ucxf>$eV$->xdeV_4-E=~S>AEV7z5n8HT~ zESg!k>_9g>v{b$5vYL)1(dw%vD9}Vh@h;==&?A36%(}nSCAIJXuS?kFSFdyzgB*bL zvwYy5-qYlPBG}MNI+<<;j5>A?U@_tcUa8VfS(i(Nb}5;g7qb{`iSOJ zZgg$_CK$hz9CWMPQYo}B->Y#3@@3w-`t~#q_r2zsQf@lKhm@7aqk&g$n)I}mSb8uv z9S+5qM1RvE8fE#CTS!eMbQ<_t5JRgG z*>V>I)Pe&S=+x!tt69fr z+*#FVOYrhkWl0i8ChtNiQ4xU-tf^Fvj%4#UHM?=g68{k{V^lnGSJnTTiT$3s*`T?+a9kV zlQ}x0ShP^8IX%pyj{-Rdcp*cxcaNUSkbm*!>+FJau&-4ywt@m zPH_8}U#&^&eLnhnTd!V8%}lq@=}u%9TCI}qQJ&v~cf%x8`OS_-xldWA9x-oj28CKUDvl3(smD-rRZA-pil8+`5l?>@@1^td@I8&`S*~nND<& z+`Yo2FEr}gXLbjL>G?$P;o*fF6uUn2k7&r789i0JF*DvIxii(_E0CQME$+HZp7teL z4`?cz07v}_wx@cW{ts@b9gmW5cd47!E4bEqjq-ngTInwwCpNu>A0F5YWwzg4!ctx` zcU#n^T!pSpi_cyXRVzzTOI(U7_Z_%E;;Y*;Oj`J=k3Ius+n~-Pb)NJ(p%T!76(=Y? z%Ub>bLQ}2n8kaxT^N$zaMik_zqimYtC;k}Jzr4_REJcJ$REY{J1_OvptBwz6j6eCE zx%>Syf5hBSbz+{~XaZC|ESC;8>ixM_kk6K)hso*k8(008{o+;XDbo+#;R^xO+!F#3 z&94;_Yo4*MoSXUMu>H@AF zr9d9ntRZ6eH~7ng{I7|7ISJpbz=Ig|zux<=|C;wDh-juhX$joiy~zIkn~b@@*G@Aa zME(77|M{Jll<-WVcW{A`|Nh*&pD|w_zV>7|3iZp+^#90I(Be@2n`;X#&{J)G#8aib zdszN?cz^tkhNj`Sq^sl5dejQQSJ;vw|>NZqP2)!yq+<7kj>~H_)@pk0A(I_6he0$A@LMa5LM+9!ZLGA%f#?s1P zUB<8lRSY4uv}k;Bu0kXQo&!m3EIK}zR;;6b{Yi+nEeRpJP#&rZqQ@B>vP9WxD$ET2 z+qVDP>Ud8lEB57w-V{puJ0l1E7B6)oy0|I1UZ$HjzduY87Y{?!S7X@{H% zjx&KT{>$L(`cb|noCyK!eXoCcXh#pg(9U!pIro!E`{UxV&w$yZxm>L9%R}2p1w-4N zCvf+dXU`aBk0-|M@h=Z;^eGtHJUg@RzdU=DFnfApYYfr5#_xZ2=RbUm$aNT6yV1ta izdU>YcWw;t9fFEM+1aFzHqj{f?}FSV*)(ZGpZ^10FIEWv literal 0 HcmV?d00001 diff --git a/_images/IT_sample6.png b/_images/IT_sample6.png new file mode 100644 index 0000000000000000000000000000000000000000..bdb5354639b0a6292417d2ecec9c7cba4ecc5c4e GIT binary patch literal 365253 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

=id}=A~BeS`t$o!yqUg%y> zRJ+cd1RztL6W#Sw(BcHw;$dH14J_4F>W-y&ZLPiog^uw4?C_Q6Uwr7si>GhIe?ww- zDP_lkz3`0Xht4dYCAac|R!eoa&cRinW;PoI11zz{%;}IF$$V3whWrvfIE8JSui4!h1qM>`L2v~o&^Od9}S1nyXqF;`%Q|i*8H^6s8OA*Saq_ z1QjkM+uz;_*;spP0V)W!Yz!hx{0dC@6@=rii$VSBDXD6TpWU3-oO%@)yGnEzmYY!*41QW*VpwE`nM2QiO!d4n9RmB;EU+^ z1u*$!=U6GMo{B20{YA;HkMJI%z?v&UF#kvp>jR_j)-7J!1cV)uv zoaNYSBBrXvb<)7-YsJyoPHb|sWi5Mcl`^=AwySxXdtKw6^l6NZvF-|ofmGyN8l=Wq zLZLOv8E6($pcSP!32sWDd;CI_Ohq9i`JOnHd30#szN}w$4+X>@xNXiPBe)2M;WbYd zyrx^)qraeECNjX|44FMzXQxk>L9(vIva|aLWk0DQ05u*(W_-c1EY)}1=L}ze64^Tf ze+<4_JSIXuGylET7c|D$YCZ%74+yU@jaTx5>7UPkuXSJV%t@UU= zGJ9_Y5D@&UF?;hla&x*Qnq?=XvZsJ-ekxfSWl3;N|E=C|Y(C4a-+dV-h^&7t3$A7z zn?|yye%8x(%>71+xVi4<^bR{ z1F|B=PIHA0tHGyvQ7|76LCse;RYdwxkG$^(yYZVOJ2NjYi0|lL14lF7wd- zf{KM|(x7I(gIV&JfgMLEC}dNlCR~eROErIa%*LY2PyH=6DlRJZF*eZ*EQ_mB@SjqA zr>Kgi8r7eS}GB8lvSV#+Z&{X}uf zgmN{JcZ|@6Z*i8<#ku(r5Mtxd1iwBvAEvL|akAfSXF=?AZnJUQi4Uja<^{1gv&{}h zC*$u&&?B0jmvox3owzOTN0f-4r};i&TewYA{F_Ksap;Vu*k8~z{|eODC22M@SL61c zLo}@xZV*OyCykOvSMzTndmbrj=09fIdS$9{c%9+?rrNgStA#rW?DXZc_xaeLT%Mcf zT9`j~YVIuWkClR5SzO^R&m~>v=Fgo&j?BaMY`jj=AoXeT&I~waQ9#hjcsm=Ki^DdK zQX+bRNIo}WLmOc+=`fo#VrUl9(UBp*e?-{Cq!%7GT2t^k>X`fI1N;b6&L5@vEVE zGHx$`#BuoVv(%GcewZJ^VO}e>K?2|lzO$~`#!qSPT&-G+Ta<^);(6RZdL}kg6l3?XJCj)44(z%gbOi9B@;iMflwdx|e1&je7o;1#-spUIbtDSl!qliItgVq{U5$Qb;QCn>~+`Y+f1w zGRw6*l%{j&2&G@=Zb5l!g-|MDD37MchLdR8EAwHQrTw`m=+f{)(7hWL`n|}L;PRb8 zw<{D8p(q!R3B&;^Z|o=+pG*Q~J|Q~K#ZAp1_g9mdzhNYY8 zo$w&o^aTVvP|(jxg_ojg#3gU+my!hGrHqQcBImM8#{Nw?m%fZW4A;+0*h%hZ1<=dw$t{;r%$U#7mdcYw=y!hc95=-U&j2r+=8gGFOV2{ z#travB!{soIs6?XGW?Rd;0%T$=;x!&BT2M*Bx9O;BAHD7Y3MZC7wMVFCn;B)$J5|K z9)BV`6zwbOgCNMxAZ_>PY9=}dUJdfu`w>yu&+)_6cOTz1)ND{?Mg1ZONjifrj6fvdH3Lb}Of6uFkpi1DB@Bj342h^Mdn9>3ngI%zo8S^fIPUl_C5)#$&;`QWR>S( zsn2!fVJ~7?^^=FKK&@5tuq;x>sThqfq+&IsVmG2y-ghb%6Br;B(`afu6>HKFPsRAr z?M}t&$hPskh|&ry-)LK!;xunTO7`5Yq-33<4xE}DEu-0)qTPVeq7U$1VygDbaxSvCE4cJd)!vk{s0iPk+p7JiYCBNRO{wfs zh>f^ZN!9*H&P4{XJDAHmaxQ(Dx(K=NN_kYZ_5T41a(7q<$kc>_b_o5w7WGauwTUrV zypg)m2!>Y7)Mn*eWNs93sgkLEP|ii>MuJO8rbZ{S@py1^?R}>9VR@!jf?(wtTk3lq z8QXQNu6{DM$DrP-8Cw}}#+e(@DP(So$lNxgMc;Sk784jCb5m%FJafB7M?7=mN4Gn3 zQ(O%XvfBz?6+i(6?-pcjPwz_BmKSs2jBUC|uQOZQfT5ynt=K!w)V8S8?qq5~LW*Z< zXNs8`zjr6DzVo16{;bsJ6LLGw&tApQiuu{k%ely+t>99YpXG0b{)UuARm`R*7;~82 z|E*9V_zp3kmvu+x+y49x?r^;=)ru6dZwm9~ov8c{*PqC_$RIo7QU$WVBj+M>BEf|q zo9i!Km~j=4%fxV8ACPEC_wcYK(!lL zt#7D~2@C+$$7p&Ss*lqVhiZOwyP^7dMX9Tnr6{$Ny9CoM&DWgS1>x3Z(wv@ zjw#ie8h_8uTb_H|@che<8g>6Ne@N`Sy><2K$+?AdbNRL?gl3+?Brah8M#kZ6|t48d5zyl}xTIuV6!V=QG%sXb9f+#UCu}JnobyFW00@qz~;y zT&m!XE$1S`oruemppZO(cxRc53V$rgaz?0k<}T99QepZ|a|D~dZX&$|i8}0cIrfdA z%NgNAsqj*J2`*&{qJ^E|@#|6^{VRyGxz!5#9jWmBDTrsV>B4+l%A#-m^q(h}`p>Dv ze@H-n&SiE`F8NH}yaJ7PJiwhpocw^S4f4+-{utQ~&s^b;tV~imi2VS+-=$DRNP2%- zAUnPyu=AG}E(nUH`G9y|TIBFv7RRT{5}FF}@e!$Fv(w(uBPS#M$H#{uQAGfGN-Dh6 z_XL*`1r_3>B4yFHe)^A(rRphm%UQ=*EDy&HSrD| z@vRAdv>RI!-My1k5xo}}zs)V3K~!oa|0X$qC-8g81l~<1z>oT!0Ix&TQ7?qeh`J|9 zy$)QHM%9bsQ*&|I4xF0DdPhNHOtYgnAqpF%da3DWKRkb{pfL6t$~cPZ)T2HsWmw_GeQYZ3 zqc!j~pm`6m>3ZN&?Q12ebbT;x5f!i5L{!lP<-d<4^}L%dulUkHf!3c;tpL@a;|&Ei z<^+B_@WT~-2Bl2bG*q#sT7*>B6uQzpUv0JV<$&urK14-DoXwC8Eg{bpB2Zqnjt*1N z*TA*#?GP2Kq3YRm76og*$c{Ea0A)b5O!I5(5LFnrgO;*M@1mnH>ooR_j5g{rx2SHp z2U5pGi)LxOMcF`=M1>a&!8E`r8W7c=Tww=Yt?jrzo;km+L6Q5}l&)II*HLyv+ccm* z)FTPJxYH;bZD^~(8t6?^Sy(E)3%Z)xLdzr!QP*fPB%fhJTZ(3*HWAg0VUvO1T=>WW zFY$9ce^Sw0*KrkHwHua(vfE=MY8_Q#XN1l(R7N?Kkew);DUdMdCvk&hTF^~ph({mK zpC}AwhiMKT6s1E&7B3)r$WraKKwZfJ#NvRN7QYo7jF7O~M9N&}u7*GeWVv0S{nnE}l6jf-}4&dCw|sYI|DH za1<0eMX$ps+v|9mk{!vtr0y%%4bKqHI-@iUkE&T?B9WBi@gl*3JBZ16DD)$07{F_y zZc5XzFgesopQR%(K{-{vDp7R{)EY4P0hG*#sl?ZdL+l8@k`S*n!24T={>ch%Yp_kZ{d^f~P|>jm=El9GQQCQl)bTy|Y^7Y)sCavlf;OS<2(z-$twXR(TS zne7R70zTPNlEs-!AS#-(%?^88wvTr>bYo4o@E`s=LIrF?cF;q`abNk#0IS-AqVC|| z#aG30unjI$d!nx6va1fmi}eOAa}{FrI*NyH^B*4Iza|icfo*t?Q#b4;d?1PoM=4Nv z!D^wK(IVfq991kvD*L}4!ev^kS_3P13liuW3NvrByXxq*u4pI_Z7F!QoFXol`bhL6 z2k=#^DWcgn8`kXW^z#91LPQfRUw9(QP#IVoKI*1Zxo7S-M<5hD%Ll?BmN)3f0&axt zXs(sEaCtMRHIpw?@S1*$0Nux_Q5@II_Xu?Vn?4Rw^_@xj_&R-jjXwUJPW&4_0yasb zco8f5VFNyHn~&M%{kM5vT;kqCXNe#x`kqC_^RcKTT8sgmHJ8sONF2j1et5tGT!*hw zn$bcOiYkna#C3v^Zjq$=IUy$1?&V_g%6+^V8ZSu4tJ#=T?Z%{H4CYPxpqIH!dfCgQ z$B9jP+}NbYR7`q|#iTo6Cfy-3DI4Vpcfby1J(lb65Gs2MK!sjK3k9aQpD}W@>f-+c)O0od literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/pipeline/utils/rm_trainer/index.doctree b/.doctrees/autoapi/lmflow/pipeline/utils/rm_trainer/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c43206867cb54d6b3fb8629142416d5bbd086414 GIT binary patch literal 20525 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 Zc3L$ru9Hw~kY1aulQNfjPpmX9{Xg`{G7JC! literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/pipeline/vllm_inferencer/index.doctree b/.doctrees/autoapi/lmflow/pipeline/vllm_inferencer/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5b6a14ef087bd840ea8a2ae1fcb964a4e2c39e73 GIT binary patch literal 92863 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/tokenization/hf_decoder_model/index.doctree b/.doctrees/autoapi/lmflow/tokenization/hf_decoder_model/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6d2291ef36e02a4f788fe1a72d4c312802fcbf58 GIT binary patch literal 30901 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/tokenization/hf_text_regression_model/index.doctree b/.doctrees/autoapi/lmflow/tokenization/hf_text_regression_model/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a616af053ff3aeddfa51d1d55ab1f0cf5454416d GIT binary patch literal 60876 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 auQ3~yTDyuvW)9IiT18VYtRi0|P5vKaWZqu@ literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/tokenization/index.doctree b/.doctrees/autoapi/lmflow/tokenization/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e2aab628542c6d378c03a602a12fe142a4ce8d0b GIT binary patch literal 3441 zcmai1TZ8_b7wz{jWOLjI8 z&_E;$^_KFF`0IT1tFG>zi_rvzbe}$T>Ri6_owL7n{+#TrRsY+_qMriRO+Jy0yiq?K(&q|8gb-w52`Cp(T- zwXf=WV@Xt35f;CRDU24$e?}D?2pNA6)!AprPY*8iflHZ}(iYjjQ?!P1$?bv{0ZtR%dZ`kByvEMvx4Zo3*NYhl!4eJZ=Lwhbqyck|f zL+ms6j!~r0q9VDZRI(~(MME7U4G}TbwN90J8}7T}c2lbY$t5kNZ8wrgZLX)OF}#?9 z!4FzWo+w!uiiU9AUx=_kM$744X-#R3AF;iW>rW}@iWsQ?#ePOWj)vqVUbd8!2Cf2F zGw-epz1xZ|B)Ins3WNI9DuK5hR5}SX8NR}mPJqdUcZU<0DWstbA78nhFe(7EWHym1 z_pjWp249s4`Zx?A4TCqMgbG?ol5=iY(oi+-s}I!NJ#yQMmQtBS(5DpXyy^ywi1xMP z4(N;{i-s7h8>NoxWOQt&xNi5Hr~+AphN2{gq>qxNG=voV;{|e-&;m^iE${l)OisQ! z(HzgWmOmy`DX9`hicA3VfB|Aljdy!7^9xowl@;%fR=%v5V1K#YXmsvCbM)5ohn16V zKLh~aX@>j=1mxY0AjQ;@DMh+7yk7+kxN8dhq%zP{3E1G8Fg-@Do62H>7?BR1HE3X6 zw;Nb1nTy<24y^5DHZPMFkH~5z;DDkkhzJJvDoNE1q4aZ6sj1CmGRp&+_UWvYnkI`U zD~O~fdCE19c->1fuE|)0Kx!{Hn?6C$Z6g?s&WM`@AXBR)4OO}u;R%;$sscTtFu_`e zdT)W~+E*~>L1;F>rkDbSg6G`$NBbYU-IA6d=Ly)dNUMZx2g#Vg_s|#aU1m(F?+u3# z>(lbWFj<^RHAOpJ51N$&&`b=?Q67VG^dLXE`}vp1=dPNhE9Qe_ZvLajJUW*Iyq-~Y z%Bh)DcYqCs%;W->^$i)Lg|aXYdhQ5-%#*e=+W-<>283L?eSJ|FGD{erGJzk!yCG!2 z{kF~ty6jhrmexqrwdy^-CPJnpP9b-cG6H{4_}Fa7a+N}yKC>mR2dR|+NE2k#nZ4Vx?ZFb^e&Ky)r+GyOk#+dQcx4ts{=R%WErf#Kn-SZ*eKoM zk~A)l5X0J}edz{1#oh_|W)Q~bWA>80V9(hz>-s@zE=sr=mb;gi?D?f-cf#`v47dB( zcDm7%meHHttDT$demg9i;e{1aWApH@!c_UYp4l7Cyu=dqj6JY!XAu&WlRGH~utJn@ zJW4|6H+nG}i;}2^905Z4Sc(>9mFhby!dAP#WU=4eS{*uEvJVDVCM-4AS8df_u(N=d zQmlgjAEs6+g+Tof1IE(kx3&B=()-f?h#tcq5$IN|{Ti@}7q;}YB;IPp6*9K!y$ML1 V22c#bhKEs#i!fX9M}Zxm{sT-YO~e2I literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/utils/common/index.doctree b/.doctrees/autoapi/lmflow/utils/common/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..cccd2d6fa60dd5daf63a4b00d6be1aafa9331833 GIT binary patch literal 47565 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/utils/conversation_template/base/index.doctree b/.doctrees/autoapi/lmflow/utils/conversation_template/base/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b7af236dff7314315bd284ac6d062e7307155f9c GIT binary patch literal 199913 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∈dyS|C`aY34k-K(q(7o-%ota%K!iX literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/utils/conversation_template/chatml/index.doctree b/.doctrees/autoapi/lmflow/utils/conversation_template/chatml/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..34f63ce2ad2df25f35a24163701786f0fb5a57a6 GIT binary patch literal 6664 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/utils/conversation_template/index.doctree b/.doctrees/autoapi/lmflow/utils/conversation_template/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0536936b2ca5200876f49888c134d6a8f5cb2e30 GIT binary patch literal 171730 zcmeHw3!EHPnQsP?NiyU`0wEFzo$$yc6xxfccrJh>Fyy3 z5RHm1*{!PxEwWxj@PP=fitDnXh%URbK3FbSQC8*pU{Mi8QCIJ->+1c!^Qbzf>h#yA zsyZ|I?cV%;>8Y-+bH495YRY1`EYfzUGvh+ne4re7sRC)t8C#6YI`k zqgW~X#S0S(-GzzUo4tj}-h@W6QF4@@yalD3HM-PIg$+GrMz^d@KhrWFqNxBK=VmOF>VCZ%f?~5SZ+AAvL>=PY?n$o zjqNjHG#Rj4X>c41xqi1(R*Ie;gXmtBW*pFq}ERE!yoy8Kzox(sN zU)WhF6x>3oP%cypwL+tCLt&5OO&ZSa$vf3Xp?P^1pmDCsLJVN{P^mJ|Jm7T~iupW5 zqyyemQK^4pQh8)}z^OU;=H=tO9u|P=m2zn>Jlg|-Er30QgRO<*84UCQEL;f@LBkGj zy72s^yKA{>)u}aeDuiPBD|9#kKy&;myquy@H@1~Xe z&RN)|Tl-*6esalYTGcm{Y1wIbSRfW%oedtJ2%hNqSP*6H7%1 zw7HT(sPG#BbklSun*rGU-_~FUX)a^jJFL35>2+84E(H-aoiL>T7Igiqa41k8^17k< zkhwPtS?DU^<#4W8Zn}p7B6t(wMq_UkdQOL9?cNda-Puzu6$gur=B@1K-MJbDuF0Sy zp55B@aJ)%Sfb~lt#Y4J{Ty4l{G`$tEmCC^Pm(W2O6VSc93nctA@TS>??m%%rQxz8k zQ5iO6zXhG?r-kF)IUsCE-?6G6V@XP3Sms4|@P|P2MIrP0%AmeoBy1hWxk`~>F z?*l{614BR18R%`zp?7`A&02?;7>?e$lEC#}l{|XY(Pn|8!S5sk?grF5jt|WCG8_b2 zHz0rocOw>KopMtrvDfW_-`nGYds!Rpw}OV(VfEI~;Ld`_-J|g1X!zLZ&c@>FtlgZD z2%7PjI=*`mv?b*G?4GI}+H=tTU8se-zq<}E?GV5{pA%0D0yna1^v;4BAq3zEa&&7F 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 z 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 LORRHbVA=lz2lc$@ literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/utils/conversation_template/internlm/index.doctree b/.doctrees/autoapi/lmflow/utils/conversation_template/internlm/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6c0ccdcaf966f74ca415db078790902299f69334 GIT binary patch literal 6735 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/utils/conversation_template/llama/index.doctree b/.doctrees/autoapi/lmflow/utils/conversation_template/llama/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d012c252d328aa0ea3d325990fbc46232c44c788 GIT binary patch literal 42119 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/utils/conversation_template/phi/index.doctree b/.doctrees/autoapi/lmflow/utils/conversation_template/phi/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..88c5ec96e55ba924b6b7e53de8f8c2a380681bc5 GIT binary patch literal 6585 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 U$)r2ML2-&&Nl@7Q4<5Og(f|Me literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/utils/conversation_template/yi/index.doctree b/.doctrees/autoapi/lmflow/utils/conversation_template/yi/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b933c11943268038ff94d1fe5ef135407dd2d792 GIT binary patch literal 6577 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 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.doctree b/.doctrees/autoapi/lmflow/utils/flash_attention/bloom_flash_attention/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..60435a31b3ae9222089504e1d16dd855bc66ff55 GIT binary patch literal 25636 zcmeHQeT*bWb>F?)@4MT(J)bu=>pO-J+jC?;f)gRKK0AB_$I;n~L>#bkcNzE2^lW!u zPxrV#e7j(yK(KY|RKVbN1Vo5HB!Y;EkU&vF5)6S5q9jrjIY1zwgh^-OO~&)lAUf8?Z_nXay?_v+QJURAw%_4d~$pSrO%#{aRSVb`*~?Ny`I^8A(= zCTynVH{*`!Mah%N>31cMBy~0$7?(mn4w`1d#*m|F*={Q^z2ri|<|%t*yWy%VKOLIQ z$o9RgxHV}_S<@Gix;4utBRg_U-(KXPijK7 zp|Xkl%x&Uwq&gl=MBApi23is&)&iStWKFjYvMJf(4L0H0o|$aKn+BT$Yk|EPN01ar z=AhjQNea_VFdiZizb8GTBYw@a;%@%1X*4eeW}EWFY&tTw=v87JwU(^I)=kzy>m=*0 zS$@Y{3u4bRgSAV3aB=OPd+&mH(l0O=t_jB0j5zX*uDvD%xW)yz)+4I5QUR{nUd!BG z4MH^g)Y${^rZvVUd79EQqSLIGqnXw#An#Y=|IPS+EB>FRCPQk0%^O;06J5g&61Lv) zTd`~2UK^oP+0Tl?DSf|iu)*%7n9EHcy1U7qD>~XAy0#b`= ziUbJid%fr#QJ=A=M2I|f=A9zDwG7$LaM>P)axE}JyA>Pma?Nn;f`7a()kAa)Vi`>-rW{A!THoM|QNk5r}NOpK3>Ro5%l7p!NjFK$?0Vs9Ej50o^Y zKz?nhgdcE~uvosDQM&5~YIo_!4Tin52sz7<|NW{X|G6t4`OdANtHVXAWk5^ch!F<= zKNit{EeSoGhIsUU9JN zm2Gg%^}Q{zxioqiZ=v)9y`|MmY<9cju7_RhV_}rT<~KBhhfKbt{Z*7r?GWerwmfH< z&9*bMhmo3fiiy(3Lv5HtP0~D-Su`{zm817^3sCKizDG8^%&^jzp6!2}KbE+$PL?SO zwZX&>EG*6+W+gaF$1x|ZW-A+RYut17Su|Tsh1eFt48iVB4G*Vlb=#{6OVkKftkYMv z8!6balx9j()))v#} z&F)J~O|{(K()-pmcFdsBHNt4U_U0~GbPf01eR0<{&k3tcN>hEhaG`cbZNv9W?D|ck zB`eN~7qVtKW8=?w7j=FJ_o0P+12E|Ii1xR*qGRvm6Z)=kM z^azuJm_-*yE1M6Ef6ahiHZ%mmKUsLJ^?J}`)!f1!Gp zobP1S^KoGpntf*%@M1a5_UY1~K^`8YYi(CdmfXF=1n8l}+-1|{2~ER$pQx&y^EL~(Xz z<6hD`(>V)NWXU;#FWr1s#PA_eXqp#t4&y7G0@zZ)a9mVMLJZDvHUE)9{&ej2q~>7ANZBiKBJ}0#=HH}U8f>TPDVPL zDR2})ONV^iu<=?(w5AZfcL32#{Y1~IM2pfstZHyUFEfTn^Y$VuX3E?DfR+_?v7nk1 zgry=kRZa>sV!?`7q{!`7nlXhMjzE~gyaBp&sJ|Ovabz44gH(q;~Z^q?LyA0@a zd3`C!)ubHY4{JL@+xTrRtx5oYTu(&@a7m>Kz(1&`q64_3QUG|pYCnh$u=)>z}m^s30t-3f!O9Q_;bF=q`CdOY55I5}b>Pv$63DN|zj)&@G+zt4mJlsSNIt z9&P$?)|Q8rwk+$Z3?7S>;I*!&GPo@zBYuKx$VyA@*3zg5E9vE=ZomYc5r=qjI=tnu8d%^PoElskOwvE`08V?z6Y!(~It_$OC*AJpb2shd2!PqD7 z@m;dRKcTk02n7|7l}$l6D+ea3m2L1EZZ<2K_N$VT&z4VX#h``nCs8!s?9n;pM$XUc zspxc$q*7&&d`(Y9H%KIv!V2!X5`lAB)=P9#ae0u-_gh+?R7|Mm&8uxA`nu@4Dnfl; z+W_s@lvIkw!}3Y#1w9oVK!#|`+@y9I*8xOODe3rLy>f$=M%4~~8{|6VU7QRNjdy`pn951{y+jZ0M=zkRhqOUu}za<~gsY z^^x8d4W4cU3&mbmkyd%S`LR7t-G$mKT5)Hyyx9bkr{oGS*0)x7w)P;3R-9mdT~9@) zKO~hZh=0GHiVh``N@0STAjbwFy#C$4c$v%bceS+D-X3Zq5oCs5>wc7X%@DS(A*B3g z+LmhdilkCSul%*1icYT#(UyPIQ>lQMf?k>AJ}~KclTSHD{#{RP1kECvx(}M=28Kc_?z(^{3M;&mU+@)876Ml(>2(KZ1YkR*Xt8@H2v8yyrxyKsSLW> zsoI=wZwMFFaD?06xSHG;ja*s##+4EP#jr(0T?fL1?`80V&+`Qdohvm!k zc>y_O6T>XiQO{4)(tK1C(F@Hef|IjA>(`~YAUWc2r%zj7z) zeY(n}_osHgfd-@-N&%9(^G`||d$go+!mqS=wqNwTTCUk1`5cFq(S<*`lu}3`Q5;-uf>ou*B=YJv0-nEpvo-4H%{D>DS`sH4I7n+xi z-pWN3t+<%4>#67#^O8!H#r$jZRCG%-Nu{uuFPfZ(^j*AL%Zmzzq09+Io`yCn{5__Cgg z4#Sd40mDao=29W)5;J?BGt7szjHnnG3c#Z}!~9lRN0mFn{DGEptuuk3QX-y%SZXMz zwtuQ6F|u$tm7xc9sc6bwU;a+ZcLmW@@=f@zo{A2`RXgB0Es1NP1Iis;#%8pO3Y`)W zqA9B43c9UWK$T2o-Myq)f0wE5#q#{A7T@c2uFy~ErKGbkz6?bxE=rd5RCIkIsZ>$u z>v}4>!62y=6gpQCd#puzl+-<1$|@3u(%_>hsk?c<46*VMjUNfURSG%3iRHFxkm}#H zWCoJJ#06n5R175SnDAZ5W26ai_a8I$XUt)~eRVphpXAU}N>tKYDqxDLBcOIHIsFoJ zo`8_kecu41631YAMQ4Akb>b^`-3BpX1lA^JV_|75@1b{PU~)^Dp`5*XWbjxe5le=HP%K`(Qx3N|8*i)S&hg zRT?iR;cLa-^|z!C_Q&4!S6Nlu-gQH-y{k%u9cllnk~P=O-_8hMu|2G$4F!7`MU>$@ z?iD$?>bK#=C*YExamWU;EPWp*M8 z3@>zfJONDC{uZu$i&)i@ksl!_>De(hm*z2Bc#HudYn;tD*4&L84=sx58yTH0LU|qv zd_SUQe$cQCujQHuygfy%;{25zl}<2uEt9;K zgq`ep(^G}>77SE2FY4_teN*v8Phob9+5psrmYm=dcEmNjt=QN?TpoV%eE{*|*>!>0 z^n+HTWl~IDkf8wL8*B=Lw2iZ5NW^ZXP{48VJcY_?F! z3=m+5Dm=-FZM=jg}o!v}!a& zaygw25)8P*XiSJBRuRDisFB$kZQDiT5Gj3;et`(Wb5WF!2Ez5Awidel5CZFGk7vi( z0{1fz=Yc?f2O)ItJ$5Ub@0#5P#nr|5Y;u7iq;VH$2k$f}*bP<`b;I?wH6(|t-JQrn z?0i4i!dSYVa&iWcvk{pc#J!GqyfCx7a`R994CFZr>^Q#gKc~{~xoGJ3F6AjmI8d9_;n--ihn&@~j-XLWzLgc=PsNB2!&lB*!IUv=* zF3{sQZLbXsNWE~J6h#3nO?399Sm85AU+;o5*#s zVIm~5+du#*(zxiQ%WOgZDFk5EZ3}I-%MO~}L-fZ47-DabHo@=(65#+~V{Al-i%vm} zIc^rf6p$5R3Ib|y!-VuWJ6=d7CkdX6+S=Izg?pyIOn~gulqi1Jom*%!ekFZ;mJVq@ zLm#K;aS0zWo29(mX@LH?0nfe5bMEq7*b%*g(y0Q(ggb*U;8Svon_r{p-4~z9X5@7G z#h)4oF>NQ8Y3cGos!RBDOr(+Kuqr0btUEbd+*5&jo$z>74((|9=G>vxmP4ztm>p43 z#@l@a@u$Tk2w8{}QYL9WAz(FyMgUI*Dm$A9)L+PYq9-xS4gVA|`S7x{DOLV-yih;p zg&;~W%CGOOOTNLx3{}_kV^U<81rbTm1tieWvRc!!g2Ng03vRlmL4@7>$IJ^NP1=d;J0V$Z>TU@JJu`fQ6BJ6M-HD~Z7-zN6hc)3e>Z zJ>5fp+}$R&ln}?cg;IiX8xbHF5aJJPlSnonwiO&cL@Xc>j2#jnLUDp36oiRM2p>Y> zy{hW&>Y1K5-LvbDKRD@Tr>m>#_ui{l?^V6&e)WN|hd&qX;s4lt&@nCd{EFUex?a-= zVm8_I8d2MD!}y{2*azeL;yRo1^>cw2`3)mxd!Ra)K4vej+d$ zq2;-0b92lbHz&@-b#sc1g;wYo$}M({({4H5xfRhz%h3Z<)58$(p^ue~PI#@>RTyJu z(AVf4#(5-im@YmX3(m$nI`9$3<^r42QpU}FY+Uktij6v!Ys9Cbb)8KEVZOBw06;H(FRHViTdhfwy9F-aKs1nwOdT%p=TO zHNCd6>PN0?_^anUe{=PnCvOGeB!7UwU{w&dsz;%xcdS(*zEv*1)hMA=(K+vVy_&GA!VtVibeo6DIfPnnm)fSEHwe=`Lx=-9_97ffzx-r z|C;;Wf9-wA-x%R;&*0bxUSq{syXLyJzvT_V-YaQRf zsjD@O2AC~BGZ|W24>s$8;k1@&sU6{kS!-zP=nX^T(*r8G+BqvUGdttf0VFXqW8L)1 zxiQ7Y!wuhyIz1zbhHe7JyW((9LX&e=Gc@B9(>TH|jPNEXk(Vg#ph>B8@Lsh8G`s6w zbE}ZheZF_D@WvQU@!mGT+Z0G%-|+R0sWfEg);e2j-nzYZj~vR{@yfG#MK-{**nEslz*V@_0r$TTNnKP83;Z@rUN_zb-Pl?awtOhR%qF2d z_oneFPD7~s8%7AuWoTXE*7D=vUf&2-^27)X;=?eh7unHFzx$dxMSmVv^~dO|1E?qu znMce&1`mW-Ka0&MrNIUtg^E7|M18Ew(#Z8+;y(v~9yVVn2}F~>4b(gU)ckawntFfo z*dyr-AK(~s4@Rjnyo7au&Suz zf2-=4H%WE#(Gr&IKPX*EEt&cIswJ{VNA~O~Z;Z@8FrPI)bISZf_O9yIV~{9t-n^l# z$}8Ne943}N%J99S4j(-o!J62MAa`j{UM_1;{$=L|#l9MFDLqMy7hus$3}I6~l1|Zq z%f(@=%D_&AT}jtBneF)C>rPmg{jg729r7VpHea&RWoctu6%ZV8shkpXvCc%o+eDj`>%%)mt zY(!5YKlwr#20|XDp(h!@O2ZyR+-3eG4-(aG_FRndrO}t3@^t59KPC0XJW^yORECir z2*cRFo3`L29RyFbk}h_5EVA!XHXqp<4`4qD!3y?{Bs_7fR=3=m*x^(UbRFB#MkW{P zQkay{u03oN0=T^aCfpm(;Tv<4X!kq}4m{zlCxLOeE5a?X1-QK}a ztnS<`!ZIQt17S%$6j7NoXO?P?z6C*;jvj=4>L*oeH`GpfuA!`y`9fJ~)!TpC#x(S1 zh3bYYVnhA-QA0~-Qjnxox|FYg7zKvb&>NE1(Psm87lWq%KS7sj zZY5YKyW>HeW8g|2%@y42N|8mSQh zpe$@WCStm|kgkN{!DRfY#A;cMd<5BiR*eVa>h9wpWze%Iq1-E+!N2+|G3f!Bjz`Y7DPtquZRiG3ve?+4U=A}T< zMscC6aPoN)qoi)hA8=IV5;#NZQ?_lyoni^QoNu5~UD_KhtGf-=(8+bM^g?n)&$XhS zH;>a<4~f#KMVTx3HYszG-ETtE9y3+!aQ5vZogJm45~a+1TcA-W9hE3Khkj{)$qSJe zsC18aIZD!`YKQ7w2HMMEUCR|fPS2PXyOy_*l#@16pcIH_R^5>*GyfJ6YiKFu;VK(| zLSYpxXER!MqfxSGPlXki;mfR{scg zF1J`2(w_+72SpAG4v2mSBn5N$@2ag;E@e@@l%EZ;;ffD)O4Ups$OOEF5D)q;ew8l7-dI&w_K1QJ8zsw7gS;P-Ar;yYKBB9XG}aIG)f6x%DbfNXsjVzl3+AH%BrT7c1dqZoJl^`miQ#)5tG4= zX|cGk#547~ote(tX*p4@=>#+_>6*^aD3s-qC}phZCXGVrmqf|Ard^KT-A7WVYEmU9 zwHxufEisa1Wc(n>1?j0IN*Pb}2#rGNO9fsYr%@<<5hx`*)iWeU*-_suPbJ9C+c45o zRhWG*lAMy7AyLYBs;|;0l&7k|%QtBhN;4!%c~A9S8fyqoB}mARvZ`sNJ=NvPBi{J9 zcIJ=x^W9>do`2Y6Ds7VZAf+U8JC{t5%Nok zc4ibw_uUDNVkPCL*IP*%)WNUhTm($zozL6F5S0<$dr87ct07U!_!E;xp%kG4FK1~K zN)ZG~34d}wiBWc-cgvp$vh$XP^d}Xj)vu78lA0k=%J`GVXcWqyRN&=l8impfiIVdt zW10Ddr&;AyW?Y}6(T4CSf{6S$tGZU&qg+++Mv!9fk~fEnJj+5))5OCR+{uLT6p2%m1ZOC^eEOJNGp6la%LHmEyJVG&4XA3{e^39VH1T?TJJw z<7uv;Q7A>Iz{^cE3Z)1FrG%$BNn(^8=-u)(g6zBnB0WuoX|+LeN@|8gDdTA(8in#S z6?pj&jY4ULM5*Fw9;DHR@HB#m{5Y$+MtGVsjoA0J;Xyr1!^i*N4PN>3AzZ@Shy02hDKJ*~pJp;||00Psw3PC2mG?tZSY^D_Ka&iQwy1DOil2}B z4vj*2sS3P|O;JmQ61)@)e9uc27m*-CkN9gaFRmsj-`#ofgCy3_Qrew)kzZF8zf^G> z$v_EVb-hBllx!YGmXt8cojXP;Gsg`Yh4RsT4dP_tQWS0i5@+Z^&!C1igk=W&BP8)9 z2E5F203XAD9BpBd$Ai>` z6LGR}ncdQSmcOQJj2or+@r}*8cvBmA5b2P+ zxs^FU?axAIYyu?0(}3E~;U!Oapav0Omv3*$Zn0ljAYKLoo5M9^1q#B zgq76S zup_<(wV#HsCFQ5AI+G5DS#{cf0g(1@f$G?w!*7q`x4%rk{S|!Mwm;85|C)b3&p-c$ zf4;y!U&K!&=T%r8!m$$rkB``CmdIBn%j`~9h(}8>E}i=uV{P{*q~WTxw);%l6<^z3 z(!I7Tk@r}x?n>0mOz-n4?2gxW1svqocbMsyli2UjpUmvy#FD=X6!iMK8r&B^V8sSE zqqN81J_C&^8(c(63@(083~s4ef)Z4={g;5r{WSEkBa@qSFuci~nMq9UEPmrAmw($0 zlbiW-HZNi*>7F0*L&yWBl3TT8>kqexWW$izH|w@;9#4(}Tjs}ME%W2BmeU>UGM@L- zT?he>1bc|1$a<*TC-#!uNWj@z`CN_aA|^dy%v@p@hraFx4$n^r?%LacRL$aqv9Zt# z;fR?Nd)RbR$7sT31PWx1u(?L$&6~!eKK% zhWRK_G3g0Pe8-F5Ec68;XSMM}x&XR5EJ_T=;3eYZrsVuJK#~pQfo!MPEI2L9HR2d&4G`pBHf`#VmqcEU zu?6G21@ePj#}Ni7c%?Bm)-=|m4S<`&b8YZYA?Vl8+fXtE1JN*$8Kh6_llUtK7?EOA zQP^63>oN}_UY5V98NToNnyI@@$AI(F#*tKrFS2?07*E#A81E%!N4oBGbz$EI)0EAL zetTPAmcP-}m>obKKHE5LKcfDuXML^4TW!p#CR z0fZ1mMo`ciSxswM4loA?+%4ia0D+Y0m^D;`Y{bx86NY>S4ns^YPmHhy{=>NlZGrZ; z;Y6g92d-vw9iyY+F-b5#8(d&;K2-;_9caf%!7eewuoJAUu0nCJ(%A}4IPcK&H()Lu z!kU}_sHufU8`hg4&*5%#mf!RPZw7hJ`K?A*_gIp3e^t^wOj{jQcGK`zEF)}j3@`<& zX4rNBYzorL!z|+Gj!m*7pp$Jaot!BHGLPvtI}mKSp?+R7tqs$G|DeC4n4~^tvpk)T zCiD4RfZqzT^gf#7HFPQ3BMlRtGHAfSi}?mp<|2gJn{b-iHa}95pA#v~z&2=)*Rb3c z=zz2f2hmUj(Rx=ktBtzrcsiZ~hJ>Lp0+qpdB+TF~pujZXIH_%Rr~$P$AyTPZjt1GW z(c;1=U0@6H_)5@KrzNb}Hrr>oXYmL~HYuzLOkdDM2yk04H$phk4iBl~db0pTfo6r^ zfIw>?3liFKb}(0pKLYS#=&hAr;Ne|(o+MPCz(Vo8ZXZEcd?|iBfuYDx;m0AoJP02V zo5H$0D2_)`^4iwsE<`%~CyeZ;Owo{y1^Ia6)7NPCLGU z3zv^!U*h+Q(IopntcQ^@^F~ecw4!X>IuZMK~Ycb}B*TR|j+bgJ1B&7-spQ z?!M$5aLi!p8eW8k47?zm?%;q*z~F<&ow!++KLlg*;rQJ!ZQ*AjFaR+A0cffKOf6on icqT38$_CN3h7&bWxi`>0P2<6b;F24%6}H!&@v&=ry~&y+n@t?9%ql(z3J9D{AO}lei9rZK0EbR{rpDdvp6;fP zU7I8lkb`w7C6UtkK~O~C7ZMM0n9kOc-fB5+iv=+sZ@JB=!<;aFDn9jz z_`$frCw%>U;6{Fv#e4`onuck&eCEXW#(bK(ho&7Ysqte0Ylf!lq{EGxQ8&i!jT^=U zuZ3o4v)m_slig|C?)fD-N88o|L({_$@G-~Ih8JoMbG5GanC8QDqwix|glENB9*HG= zbx#L1VQkFu2`wex7~yqA^(r5=O^3y+(Ynqjfu3)!Mw0t3XKm^e@v%_fpii+eW1KLK7*`u3#!2ok8*Ya!`;p@?fBC%YZ!W*< z?lV}T&6hTiMAYn zBVyQ<(e|~iBp8Icn@c!37nEZ_i+`BVy{GtE7 z1g+fo#+B0~j6u}t=>GPt5GgD(-0Ecc{4OJ9pp3sAW=cJZsgUDnc($s!*?TZ7l%m?j)DId$^LN+ zId8T?BR)Gx9CyI+O$e2n2=QK9H8;VB@)M9&UUysDJrN!8-Sa&^)M(@H9s}AYpiT7+ zU-yjMK>oyvx4q)7TPybozRsVnvb~qY*jw*gn_m-rT~m^QzYq=l3fWluFrHHBSQ9dV z7LpJ3a_`zH!M_Gn-Vu*EEz{Z1wxF2v7{BWvF;2u~%r-;j>vj&1@vJz_=6Fp|7ia3` z^ZnHgl&!#*AM&av9>YG>t^Ed=O84X#i7+#Rq;Bg#)%U1+xLH##IO`-wvKK( zvGHX-hPQCrgViuX*zv=7XIq|aHq9`;AUEyGF(+J4=Y@;)6%dl5r;L-vcX5Uh_$O&t znMBcm$I|1tN*RqQ)N>N^ue`(*RZ7G7(g2$1 z?`7;vHIebnyc)4ahlhp+*CfWbj2De>uNvRs)ee}1YLenhZRfuvcK*V}STs5Ay_Dx( z`G&!Mx8|_yYRmt5&@KPR{cm~edcZ9clSI7$Ryh$BcKws-<{HEbtf&$OnOf?L)JVy; z|6`X9hFyxoI!gjWZuuO4^&m86qG{btLxuO-%d;9tw^;AkLvH%1mk(fE74`DLN@m4C z3v&tT9_wvldBNL5jZ-1G2zVf{7IvdjE)VmRHVf207 zqw}5k#8$^%2|W0>h~jxZ3z&b72`l#_7@LGE)`ah#q0A@RX>>$SB0$AP6%HaACNYzW zWu<|SlE}-<-6B{te~0T(&@YX@>}pTlBI|i2H^#|c>LO1t;e$Yo^^J6dK2#xUU0OnFJmg}EBJxDS-+-vPguW9rxzl3 zIYe%VPl&bXUI^v)_lW{ne@kcTjp#TbDzO}=`S(KbFC_>b69`fOr^67ZuuTMqb1XZ( zACVB8%Oo!ak_RwK03?fto&*bOUBsC4i(R&qPFM5PTZ|Ityvm!!kWUL zGW}U(^kF$@OboJ);7_7bcumAB1s&G0J|A$Fs%{zT3p8b4L&&-YpZnq7z_$azeFTxT z9+;=iz*{_LSl?M4>$e^h)-@6N>w$Of1Fg91mf^lu9rt?<3ir#>SY@V91tpE5@Jtu` zi7ue2yE!8+tWKOKh=ac{7E%dA4a}V z4&@1aE-WRjnc}2^66c|ma`5}*u%7FNwKv-&3YFM4$RK`Y2NGp!B&S+>oZ%IRrjVW* zQPj&60O~UBPI<9&COh9m?mgx+$)lz_O{1{W_Db$h;5~_W-=ax_G^msoM)DeSnXTCR z2MmRr+f2OueK$qYB*|9G`Y{FxCjp6ZXpNXpl6ivgKW+sS^Ao(TBL2pUye1>}MxBqh zBik0|y@Wrhg>I8pmt2DvMcbpuGl*7c^o%J}octK;=VaWRlqMIJ{%7Vg=yeQLeJN$_Hn7q%ThaxdZJIy$5(w6k2nFwCM!Vo@<6xg4r<-*Dd zmq|HT)tn{kN0^PjQ$#Li4$igudpVJ1Y

NwvCRKot{=1+Z2?+*>H*&E-(a_@IgIkXC#lSmu@=U&mrRPDvV z*xLH>5+=edANzafms1(>Kxp5r?qG@R)cKdn{Eh@{mkWCGuch36Rz| zA$QhQ^z=MEok*Xq#?y{p1h#$}$8i8fM zvYMj1qQb~MX8nJw-QQr%daK52_s0iFDPOtUYY zoJ>$%Ctq1hbn;d7By_TPItZPdo$Y)^M%vTBFw$?TkSqB#pTvjpspK*bZq8)WHjL9r z;oYLBJX;i%XNzg02%AWQmcp&Oz`Bx#Xlf_z+s z)lpA5n-)m6eUW--pQfrYLnnC5QAC>66F#u{I`fkl)NTU*JH00L#i&3DV5rJ+ zmDjOR+sLb7Ma)(r3doyH(sF936CEi<5EJ`kd?97{F{Hrx>q6Cm3p zb{x7-scu@^v_TxoN$2PZKyWcp>`L6e!fY+D{4i>e!EpI{c9_qKtgFp%8`6OEcTiDu z_tES5w8uP+%8al-n_|IG-{nEtfjeyqeuWW+Ua+#fjOJj;+YSws8N2=l_R?|cDG)$U zEo2>30*2zIB=Z(u^SYa`p3{E2*)=`2WYfPknI79#Cz0J`{*uYUwtxXuuxx}K8^9)T zi4(g>)bow=laR@dmTu0J0Mv-mWz8LaG}v}ReM>XU4a3HN$nPj!1&#R;acMzQw-zoS zwVYjI&}_GC(^f*6O zXr*kiXvS>q^o8o*sDK;Y$EZ<0H>?}zKyJ{_*C~zlHTroKz0Tt&;uF+Y_SVo_jfuym6IbF_1FQ9?)UTtfP{-(Dm}J#;`d_P;{E^>0Qet3QYFAt;}x0@r_Dmx4x3KXj#?z#8>F8m OTcnhg{*uPy(tiOzayYU8 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/utils/flash_attention/index.doctree b/.doctrees/autoapi/lmflow/utils/flash_attention/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0f63383119e57db22f7498ff5f9ce7d9efdb1a72 GIT binary patch literal 3751 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 HM{xOn)A|*x literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/utils/multimodal/index.doctree b/.doctrees/autoapi/lmflow/utils/multimodal/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a70cf445e19964c4eb3fd55f466fa9157ce0c005 GIT binary patch literal 12325 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 A`2YX_ literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/lmflow/utils/position_interpolation/index.doctree b/.doctrees/autoapi/lmflow/utils/position_interpolation/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7f407ebe4486cff187637fdb0bee1a793d0a63bd GIT binary patch literal 3531 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 N2!|Qvd2sp3{{e5lCV&6{ literal 0 HcmV?d00001 diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..b7481d5a0aa5d906479769814461575c6f30cf00 GIT binary patch literal 4282851 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

O_} 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

p7Rm?nL#cg;@1#=Z!)b69S~wrEaBl4a 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

jC51h!kLfJ)np~CZpRd8n27oeSvUC2*EMI=3&F+ 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%0A=*u_9~## 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�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�<<1PG9&gRM6Lxp}x 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

dq3qu1T)%_ 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 z%0D92Wdc?tCPf^SFHoYpKMBa~>+t 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

xN-XjniMj|_17U(! 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%0AVnJbO*<$yXVW}tKbPGBK+j+;haguWL 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ϔ>}LYJ&590E7uS3h#e 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 literal 0 HcmV?d00001 diff --git a/.doctrees/examples/DATASETS.doctree b/.doctrees/examples/DATASETS.doctree new file mode 100644 index 0000000000000000000000000000000000000000..13e999781b1e9c6366d500af256da24520a45b9e GIT binary patch literal 99117 zcmeHw4U`;Lb*5y^zy2jl2FsGmV{DJ`Opi6PFbE-ANV2U+nh}~YmLpHPYr1Qus@2`q z?yA;kY-#yVEGQsAlMo;=KM8@81PBR`kYuw-NV2;*$=U3(fdmKy=Z7RqHk|B9NOrTk z_r7|6Rb5s6s;7pr$@sviyI#Hb?)&b2_uYHneXn2J`|b_v*000=ysb{%v}#v!dZ|>i zONP_(21<6ZSv6{I>s_t=uWMavjd+6%ebKR-jiS-=*1;P^)2fsjMy)m5^0wgXu2pez zw0^&16kW@%@#x+cMP|MufQ8UGsYF{S`@sgHN)FQ7U##ek0}tVI zZ%wcIp9V_Jy7)4u7cVu8d3>ko^}G547PZW+=DySG&Ar|OuTxUmaFZl@X_aR>AZK@l!l2u#C zUx7hNmHalL$3Ck@fMf!|iP_!86&T409ErJi(%gr@o3{em=54^s+kxd?59!0}sV>3b z4D$|nei!_IKOk$~ZN3t!-yg0dzvT4+i2!HI+ujCb3*-_DtGZQdO?v(C#a*fcpQcEG zt2Y)vth|0Y{Fb*7-Y~AzD^}5RTTf&EuYmqv7EiuR3BG?s zF%JeGm@j4Dz55tXvlTe<&WdcwRq~DX;HT10jy_?~5Nnn2$I)dnx1JL;2Wga>|U|d-1qkyKFQZ z9ak@4Us3w1%%n|nBN8kAAbue6toXf5S+PkTP#oaD8&78x;C&SE&np5hO{6_U8`9}Q z^&g!R%4l!I8AzLu!2Xx`LBxaoPnm+f5vM#IP8`<%5Km?l*8LRgzxT23tkqbBZ&Bui zw3@_=@qp}WGX|I}x@&|c!5Ekzc0ajU(h<7If8ZQy=%vvG_ z*l^-l|F%R*Wv(#KV2HB*Eh$(}>zJK+aTDRi1Y$~=F@Zx+=Efk_B-JH$d_HlI@$C4G ztl2S$V<7{IEiZb`#X z7zC6KlL*s@x!W5}(}g7BFS#LT4?-}izXG8zAW;fbc|Ay!AI{oMzwii0`GHUyiH36d zD89Y#^cE^~i~xwt?e^|c9k%G4)o1arWEP{(N_&<9f}81x^K%uucu5}j9mNvik9Oys zT5g=NBIlTd5%3Vo$A%a%if{YGn|sRN4^TLv2%bDay@85eTWIPF5C*=%F(LkTrCK@c z)OCyt57ZlmV>B)sXqc2QAgUNB+jn{^1fAMt&_;PG>NTxlfJ;#{v;v4yL0hz37>nlA zjiNPg6`3$<7=YDWTSEgx7C{K2QF+xyjNC#_D}-SI>h!|?9GA>(;f^KgtAr${d_O#3 zVK#3AP{^Pqp9R<5P(>w?+d)N+^-4tUmCJ`fc|bQtVZ}xmT_}e9gP9Ha2H=ipm!Y9P zfhdmcLUv&Q)I9fA{Fwtg4UPu;2%6(I?AiiIlTjZ5X;gEp8i=B6T8_2|x~>TV z?GP!|>-Eag5U4z>p@9NK^;xaEPU-j@Qvymw|wym^{JxJPAAUk$y+YaU54T(ph zh9o;}H&gZad0G>gButn$&e(L3SR#|i7k!v2S`~INE809rzT2!BqtYB^CXcS+h8oV3 zLayxCwZhOm1n!x=!xtZELYBbLFS>SPDTlE}jqXH^@-^jTCe%nW^WQ^g1s9@TLN-&> z^qUZeuZAioLe1=-TPWJBXEG%MlZKTr#SByCzHWgN#D-h#EW3{?zJ|JL&{WAG193Fth5 zSyeHFB{h-0AxXpsHv}#HR3g4TR9Q*H@1i2kdL|;?M+YS&k`*&K?<|q5;Yhe2KdBc@ z4fPD^Npno}nN0mM+8MaIv$Yk;LfgER_g!|!&6c7NL<5SZ*2Ft+m)%;sU-`5!*44bMDw?&R<& zKH&($)9^+Azv0s-AIl%W_g{VN%p)g3D;yw|q|ynwbRt}OP%b?fF1=SSy_c3= zL#mR9m`EgIB9}zOL@tSliJUSK2NQ`nm`KFIL?R9biI^R_#+2$B7pWLNPr1k!ulqq) zs4iYTs1jST%NL~BL@!^zvIr}*uR9Ak*$bd5OI8tfD}8s0IZ>z(G)&AW8E6dph2Z_6 z-A5E@;VF%1fl>0$#Ha?#ymqZX>iCXH(S~KwsoNx33c7(X6a+b3k{|{KL3l*tdEAODlLc)Qsv6}B@5zx zUE-NAj_{Jf`eQ3>aGbj$`N9SsQ!0?CW`@L}u0)|L93(eXB+Mj>k{EFq&d#eUW4tg} zL>(_7J4?r$K8y(RmsoTHGTCUhT1%G`{DvR^NF6y9XHzxBiF%%@uM4c+lSVp-8~S~8 zl0eEV$y9(zlHe@|(|;(L!H0sFkEJH&3?=3xO2h=RV<;_wXM&W^r6y&PlJZ$Wig3>x z@}?Nwl2AvIKr{e;djIrnyWXv56B*^kMnsyj4Pj`uNo3 zt52SvJ~ne|YBGQ71UI^e9mp*`f9f1*2kid#hhS;9KfEwJ>s#>PTR_&h0}*4=CU+`?dx3WTaKo+;j|79roD?j9 zGGs3}+(_~x(3PwvSCupPHUIHaU|& ze{%ZV)Z{dHI%)b)Cw(GKvt5!d_d$W0CI5yztM8)he6LAF5LWmmdueMEdTl~e0imjf zskpTX{ajV?(G%KV^%xP$OeKs6XGD@xMUJp6aQ{K=6XVnHx-O2k0$e#9kELcSG*iX?k zF2hzXeB6%9DzTdK(jl*Yr!-cb8#~z2z0IVuT)1h@E-gt9Fo^y~!l*e9gNih8eKVT) z`rPsiJQIf1HXuDd#aYg;z@#5E318Q45_USsAjS7TRS4Nmg~M85s*Z;m^vcC!wWV3e z<~df=Ap580LXrh+Rb#vsgVA!uoYvNk2HWDqc*pngT?=;*FreZ#;KUr;u$EgPF7%=W z5pUR9fjw;8jw5zIcE`4;XtxSR-HyqX^ zKb{pu$164muw`V1o(dulXGY|mYHU;0w1U^#my_diwh1?XFOk|#FelbfpaZNln2z%8yjUXQiJb;GV zK6i-}jsz!EpWhM_Q1(@z^F%kyd;^_6RWaDzUU2%bqUh@7sLpJ3v;7nB`vGr zNJZUCDl@LpZvvZ-cEhSSQmOh$4i7|jf>OnbqNQp#m#V;^8I^Ixg6z*_M)tiZVX1)@ zl!OP`S-2Q_ALQtD7A{sNUby75lGOr>fS`a8h)-BWHz-u>6%6yWTNh-*n!bX@1R8Gs zCXKWuZW)ylOI-_UvjNsRW2tx`p!-@kOneiSy)Se0+GLLvMa$lhz=IJdKN949J2Ubg zk!6e_vwYkIso@cK7D5K&mjsL{jM(!9^es`ie0>EbD{i;pLt<~jXFANBcFJW5kp`qn zV9GkitqK|#sRizt79w?54>rh{6y1V$@lMvpR#kPJ-Qe4|;bPgKnE+^m%xi5!^y1Wj}qFVamS?L~Gq3`a^UQmBmQH z%RejXauU5ZGqU#jlPC@~fkc?%&O*RoSl}>p76MjB2tj;5?PrFV2nnSfUmIN{Jf+MO zy|5hO>$LaCoFysBf;Zye!I%6KP1}|43ZfUEh;7D4VZ#vZRlI@+qYsc{M|TbJ8$a_~ zVrvCS{2(C-vXGDqe{$NniUAi8p(_Qs#E>&w@|Ox&^;fKYAr+raBZwqAbe&F)PpL^o z`IGqGzSFFl1hfFMcgCtyI}3(QzX>A$Q)(jLLWz`m3$6ZP-6Wfr!;~de{Sxq{2^>cI zk=r%EavpS3c~uPLtEmU#(SiI4M;nf$Z8d6eLskQFj!MzDHYMExv}c<5?EXoo8v0t0 zwC?XGa=}Y{M-1m5QV-{?bU1&{htpZ5usYx3b;7)pqK{`zF=HQcr;3nm)qq2UzKUew zKFDaL@jwXO7B3OrlGj2@4$YSWfy}m1f!|PH3JZ@+zPC~Q`e{v-YaCb|CH#IG@Wa!! z5NVzFWdn2Axb>oqSUDp{jsa;EIDG`E!5Ds(XNP0j%}NPlt#Gunwjbi~`0X}u zaH&Kyi?J@spxu;xA-kQ7C+5AO8SAcr5%XJV|-a;XmlGipn)L&=VQX$YO5+s!RJ z8XM-{1-uW08c0+y%x(H%iZJV)xJ@sJ8-AALp3jWj@wChkn6Y6qYc}43Vu5J}*r606 z$?6D^jPJ)Az%`C+zIlCc!QdRE8+m<@{yJ}6X_OYX|`5~ z;ugEgn)ROFCt~jFeBc@bv z{+(&Wk0d0%lTMYlbIwc4@6*R6Ee~f;`C0&5c5u1`^O5Ha_zVY6392C{(Q z!8wQ{k(H;0XH6H4yWo@xIoI93#{lPD{mY=p?xBd;k@I)LmV9%z1bySRKh`}-0`(81 zLLK*HTkWXhZKil*f|Q0wJru~$a~B$Rv))#Occ6mKtl$Cnw!-*(e+Hn+qE&Lu*6G`D zw*3;)zo-0ZJ`9pTd>&HpeiIPF8FkkoXDgQaI!C;S9Sjeq! z;QM>ZUu&yYeij~uxFwvjEf0d73={UGe}gOwvVZbe z1w~{eS!{+1McBt%s8kOY2+BbN4(@LD3mFH*0|ERA4x@q~F%#}RR6{;MD|d2@?gIp0 z!8=ODufuKC5+S+pFq{%BTwFMNZ2I)9W7m&d^|!*W9xWW1YaA_*yKOLzq-%)I9GKfB z@SQ4;l*L0(VE@-v6vrl6W*DwGBW%xqT8l&w_cxbJhi+Y)2&uQXVx5S$4`NO4@k5iC^+x# z?MBEL?cG%tV||nISW&yt8qWq}-#TE%0No4oQ>*uGBo#l?b!x-(_uqZcBNr(mKqvg)}C0bU&orV+QDM zlcf$P7z3`oKw$Fo$`odW$*(K-m;olcqjelZCazfE^9Rb*W`)mJlzYqopIx%daP`XI zi76H6{H-#rS)udK$~|U)&P4j9jzQN=Re|fkV3N5T+N59+oMmaM-O4>?fNQ%#q846z zfxzSrWeT&BwS&q%W`N1f@rDqSsiao~POns^IxC#cDfgHGPBA)(ZNNwCGl5QCnbxe( zsVeuF0XnZ`asKaau!W#bY+@#>t51mF`Bh~OWX1D0EBDwH&l8<<5(%pFWpX9`RqtTh zNKm!1yg1M&5`m461N|(o*BK8v4pg21AOpWI+I1L+MK96?f!Lz{Q91yXAka^x7%WOW z4Fa_XD-z`_%OKEDp=20!$1pBMg@FcGAyY2mftcif#Rr|jb$%}m1wESr-LLbGI*XEo z?pNEYC5M8ZB%z@H`D^c=GvG%DzVRckv*+Ot?8?F^o}vNIkEU>@N#KSAksblR@Ni%Q zO_UvDcT63In7!i85fB1;KZ-oRr?6EM)7z>9a^h)^-1dI>NJiXXVw_!rVj2t#b>TU% zY0yI}Lt>eFjAOTQkBV#Edm)0<6(x79FeQOl){gd>#P}LjBsg@hGL@1wvMdh0Qn|;K z=FqEFn34d8O5Y8A#(4hS=}bsbK^e)cq^PFc<4Q}>wH2l$AVu#FNYQg_onq4W+$K^; zt*6YnM5#@*ONsxpo_Dm8Mq0X^aAw6W&jb1-A6b;08}9-A9Iw|IkrncQgxQ|X2V#rg z$LJ7Le4vk{7;d7Ko+xWs`au1K1*2Nkqa2`KQo<%X{U&DBH~CnjL?R|y{66aX{CNsc z|BQFkS%xG~|Fo@Ivg`AH;`+?lP8t{I2-z{u+w*z1*{B`G{V#vJIQJ9MOD-2g$Wvi!7>NCYvo<$e6f^7+LCJd?J>^cdXOg-gVyM=!0M z$|br3!f5Nt6T(lo!SdIKwmH4S~{~$}~$$^RiI7SGmUwP`WW{o-=@=3k5dE zl_|{%n^!6Km;pA2y3%wEye?}CbPLL3%?jO`a*r9HyE7ztxEL_(BFh9a*OckZ3YoVk z_m}}PdlOefhEa#N1X}M^raddPKC0Yf253bqDZ1|&T_~{mtTLrpVe{L{J!XK-8&+xC zQ#Os5ygnyr5uE>mG9R+y{5O<)?27Y=4jFO&Z{P&1q?_VRq}lu=9^CRg|Nc!$c5J-o z-^1&5hGT_1f9kTPbNiWbxsKAW;`aY*R;*8yvTWUcbE!HP?e>!rrdN9XZ(?TO&-t3d z?SDUY`(K^{)R*#(Itvgg5xSpzsI6ME+y5H)RolW5;|iQYg$v;G_Z*!jKlI}}<7qcL z3rFyt;-lJA!+7l*{_+m{;r09zjUwEAF+8db!;caa8y2}MAK!QgeuMyT`GP~VuR0G$ zWJ~1N*x}oP1y?JpR+T9qvb|8u06Y_P56mw{FS7Oe(ST>u4zZc z$%qMDWUE&|dEh8+R{226-lG3Revb#c{UTMzpuHi{Vc5uPf48mERS9#9J4Yk8eRl|a zm`JiI8C4|aXMxLq7xVLRK0i}z#nzO2R9t!A4{-;Hl0e+y?i5p!0hX$cK=PXMxFj2f zX*!91^-b-!DEF8FlHd8as;ih-{M!XU$oPAeB`zx&|EO}0-O0H6Z2RmAQxecy+k`&% z*F`3U?FE86zoSfHR^0i5a*y3{CxFQ&*(zXo1Rn}4o>itSD=faP++zk$N*EXATZpkJff^5>~7^AGr+K2(eUFh-20)b zNnmnVnZm3vd04r}EHDYX2~2*rwG{|V9#y6=D@+XK9y7osM%VD8E|RbaJtfd_m1)fi zo!2Y(m;pLZu2Rew{6r?3t4V_3^E;GLPvmoA#EZmLALGmLO2&cG#Z^gAYG5_hrgGW`J({F@5g9NOu>JL>Ga{!^#w9 zg~_Xxd&~fnxT{1cGI7NMA48eitnhJ^d&~fzWuDuAy)vy?q4UGaJ!XJTH`j$w$?B%6 zkh*7-N0}9_Kd0Pd2Do;mseV5PgoN|wf>+nxNbgL^$eszT@3B=iEQzQW@@u{*_yL znP{wJ7eZogS4J%>i8-L$<4S9d2UeJpfW$nMks-yzBeV8|EKDimk(DgWD)+e3vQSxJ zN&>R5YGEH{12Z97eL{rvJ*CWnMCnWP!%5WVJ$#W|N!Qf7H%-)s`0Zl{mlyMSCK18- zn9uupz0QEFP|T;F0sueU4L@6izh9*EGegXLeGeUhO2p^gDMpKuMk7A$k%>e}TY-pA zWG;{&;+bF*ntc`1>Wh51Dcs3tXvF8grNH&S@Qyl5k%a5-w^d7y_#CELKo?Iq4;p7ZQ`v75im75+*t@ZH$W6U(!kU!RCzyxsg7UavDCD{D7Tq_msa z;_(z6fr{OHCBuITC&CbW}Y|iXUnr6)=Xh7lRZdQ@5oi$@L=EMzxTm!rU#h}4Dh;Wv|fc*Y$jm!YRZK)=idpbG*0A{WpUmiJ#P z_o!$qeE=+PiIRYYGLc>|8D!m56}Wy!d6d#h$|k-v8g~sQ0_4UWHukUD(P#6N$9CSV@jE}tk9TM z?lA*2##1g;46oGn1fmt?@nwbRlgd42fT&P5G*}`Y2n?<(Qqdxn1z0Po~P}HZF3_oSehdC-YQ~Fh6J~yQpD@qyND{YTZBuZJ9F`xdz6N^SI za;vnLl(2b4zlr(u7$0j2ulj>D?DI$pP|x#@It!2l>Qq~`Tqev->e7xH|W%X5k-(bLL3Dz26vgeZ|jNgztpgK zV+Qyv^UU$zDbt!2I{!zx#|+Tv=BfiKS>03>Qn&HOBs(|eQqN^+suwEvm;tU`X{r%r z3bT^6mnip`0VYXTAW)e~dPT_2NoA_D!f9H$#|&^c>dHN4fX=EVhqL>` zn4P=&goqjO8f6Y-#q+l+_t+KB6FqYh|8e*-xsv{>cQ8%9Ji78@%S`+ER3fnP0iaLt zdY$oDp#V^yKmL>vAhxLg3>|<<1n8qF28$9;BS7uJibOffG6K|7ShAvS&AegBVhRO6 ziYfg!e26I=$+dXTg!M{CZop#K4cYZ5n>!N7EgxP&9S7TA?W?=5B9* zl}MxS-xV|u%KW$v}7$W1My%Yit(!G9$v4r zM6Hl2!nu_0&<^ANC?&oF0}1!{rxQ(p^G*n}AwyTwl%SHu$;jE<1Eoo=YK3K6A;aAJ_YK}A!$U2N7qJ96K*{bwBkrZxk zBV=_F5d#DgnF}Q!zI++1VKTg|HiYDRT(Y{5{HM9(rwCcUSGh+;5l)7GObym^9AJ|GeD=CC}1W5#AlU9nH8?z zR_-waT)PS&uG<~7nw8AnWzEDb$~|U)Nm6t$RRD3XGSykh&fUsAW`NT&HP&HeTC+mu zVdWk(Kxg&ic2rhZpAcc=JgUrrtaxrH_t+KB6Fn;8yuFF5^Of{7(j|~BSz`wdEzfCx zb0V(sPWun>dY$1|A*UUDP8fblznv{#Z=m$6`0cMvF;a7Ib`f)n(ySM z@fY#V3I7MZ;|~o=?{J@)9sW~3h9NZ~pH6IZ*roR(I$ISNosksfoDabbv*efLuks&m zlOGAmdzN#y3(5N$m%J3N^S70IR9sem5?p7Al7QJ)86ir=EAiD0RE=+tjm!)y2 zJKI~7d&~e)ar}lFN#cRPV6QSolCiQZ4DMF$F#`;?1x^FPJY-_iULY_ztW056m^`f9 zV+NRn&e~An2t5^OJgQ7vR%jT?J!XK$Xqp9xNl&^;0!vqUWLaVPdgUH7z)~of1da0! zWs0)G;2Gr}Gr-`+D1(H_O?07f6*wL|^D!ae0r_c2Z~ zj>K27=;PNGG}km>o4;DG=&qsFFg?n($-~0fSkbOsHX4rZT6QhZ zUMgsMW1(3!YA(L1*Xxxf@_x~7Gz_P1*Gkx|T$Q(fm@MZbkZyHb$L^&(tXa->-+>S2 zVcir%Co>&l%Y_~_LLCGF55s#Depm?h5;&=%H!2!J} zs1eLAKL&Jiet-RT%_%mly6cQLnzj7ARWsaX&B!_C(Cu0-mm4Y>M%}3!kpA(ar}*bQ zu-dt%JwBvq#uXie#Bj!W)%p@C(6q6!s$DWFd6b^K-N@H<*VL+ptB;YZi^tF4k1~x- zjNLakhRG&l<~*-h(p}v#T)zr*EPeI6#nxq6;$odKt-=DH1!3e<=xOaH&VwWuExnR=?Mp_@DX8nT9Bl-uFr~O?L5F&&1i4akwgXK;ldM7V>smEbc=o&o z2~>?GtzkD|(C}3jTg*9KM8e@;T{FVXKz3D!1{hsYgChjiAccz%SzFTR=zUU=Vyd8p zHXqf>O~*wNi=g*w@PBv>ctCJRrtt_cOk~Fa5pr_cPyzmXs?@OSC3~@UO*^K|+l{L3 zy1+&%68K8lv1>z5fyx+mm+HpwVQpAOVt5owtQuso)ry7##TVg$reOvAZ*8qkzCTC|D2RTXD}ic`wd=%{di48Niz#>Na8If(Dkr2s+o{phx1{{Zr-1!eYGJ!WZR|ON|FCiMTc2! zYw%-n4Uih$%}E2G_{@@jDO?Py=LT;d1&Z(T#eLC$r3y3+(LptP@&1*9?9^RV%>e^x z38xHb#U-42^Gyd7?5H-^gsBU9p{5->HL9_TZA|?#Xv-qZ5i)~8YgWcw3+ywTYMRq5 znpmmW1gi^7F*XutwnX%{6VDW2&Fs)MoT_9-Q=@DfQ}f<-(D8IypYRuCwzx)=2&3g) zX{;!7D_wg&g=-Jgl&#YX{{ow9YYWZ4)rE!%8ypj)w#69Sh^b)It%^Uhn z%$1LYD#sgfXsS_<(St^hGD$ZPlG+UjMr3TcAp2J`A$x#XBN7RqubSmA zZV+z1*@yAzk@8ohXWq^TJDp9O$TBf$HoXvhL~@`^C3WJ<&?~IwgILLTEI~~L!Vnie z46mRyxaJx#Hv;}e|A@IPYpwxv2oWIWIQU?#yxX_t8u+dORS#>^mBa?tJb51YU=wo9 zlYcIG^30-W|Ugjy&en)(x-!_?&Mv|tr$?X$ASg0HR<&iP2+NdeB6#pq7IuB zjeM~JAvMEk&9=%Lp+Vi-OzKI`y-jm=X-Rs3KGPqeG2&YxpWz{fpm7Bq*XASk&)$m0 zq+gXpC;0xEsP63o0{Pz97>gCdUK~BzAAEt^=J0|z^KTBp#?3paQ}+?17fda1>^8DU z3^nIW5t_O6ID~EOs`aFy9hV5uW@xaQ*>xS?6E@yd8XFJ7Hv3Nh8727)ttp3Yyz04% z0b4p6{8l9d)@bPYVh6HkM{?suHZl+)0WII}$yH1HN${*{L)5ecyGvHZ$&vBmhT@G; z-AZQmY-p6`(ICj?arWKoh#k!V>G+<&*bMa^bob+T_YGc;?9+TEX_H)acfSM9EpH>R z&V`LX!?j8mGL3+x+4O;Pb`aIZ$1 z&7sN4BwtKcspn0y+)A1t{5;g=84B6El@!3h4E$EkRIReaX1aJFApHOr8wIzGOzFR* zMEp3dDNpGOJ0Kc6V_J>||HDn9s!g_zs<1`K_I)(e?W5YFX+c=p2J#S5RN#)*(D5FD zD=t*8X@*`jha9q#oYP2~SP}QW*q$P8`puDzDBOf1{kaWj2=~}vr^ zv=P^A7}z4+t0H~VeenIGT=ksJ5F1HjeLTcOP;%>slFQF#ifnRUF|;r}1=LPv%bDep zvtOOFVkU)|Af`K8=;ies6EVKoHj_F>Xm%VUGla|=IuF?Njw%x5eK8~>!F45^xI*JI zU%*Py@fq(&0>K%aXL+P5cGDIkIq(v0woV^Ad+yB1{LIMA!jpr(PK1aaJ{0qP~Bm4XBpgCmK^WXmd7K|inVeuw$e}^j6QLTWYKTf~q={y)G z%HRK+KXgwHeU^d--UCtg`kZ|kk`H|CEsVjteQWHVbMxMwq>N&pi_^$KFj zZVQo+JZ0(5&%aQm!ssVv)lG3Qh|bviY`mS-7wbvzOVsfOaIT|1kgOZ|S;(?sMunPX zGdKf{Pv9R0uk=I=>0lcCh;8$)6uf(A&46ulcgVJ(Vn^&5V(5S=11T3o#=sH)p9ahb zutk`y!_6EW5|XS27#>3i5;u0Vb%XTfqY_rlN%)evV5{lB)k*V!6^Jt+imf}lu6i>ZXjGC^QDBsqV8^WKm= z+k-=iTE@LI0gErjl7w|~91>mK{DFhZv?Jda(lbFj^3G^GGTc4WX{xUaHTU6A_sMF` zw;|8oyq@Y}M!c#K$=+8sB1Kn%S7NE~2Dx^Z%*epQkR8bkI5j(R=Q*&$z+gKrMUffQ zk!1qc-${cj+LmYcGEjeuR)vIzx54%S4<mWoBdxHFW+pgs_jSOK#+6uVw#V>vo8pWvExrV&}XK$PrznH$Y+w2pg`ci0A zkl)|uxUkQ%Am#RZ+ro`8%-Rb?(|;CfI$03EhHvjXt1--wFcd;YEKF{E5?EmN$*x@55zgYV5#fGt{H%h*P0rEXNV!CeKIXphDH?CNhb9Q54 zT%U8sCnoMWn7e1_XN2QlW~xvAkW9GA!M0Awmlb;byKMA_}NG{b(#&ho?7d~FLF8g zE^K+<**lmZvQdyFWc_H;_(D-@R+B9z<=xOU*Oo6*5e$Ze+RFl-abO+B=(wX8e}s_d&hHZA@vu z5obopuEOpQW(VN5BxVqpQ)J5cTa+y?xV=VpFO4hpidD4S*3)=A@)fX5gvAbn3OQ*s z;qsu44F%GPQs#3(DAvxd?cQTat3MO$4sQvGb`p6IqPk4o-8xo^ad&Uo=)1cZvu?HDy^Dfk>q1Lwl>RtdX1J~jF3ljo<8&77K= z%%3_Td7yrKP|H7XNc`%@re{u`&7V6zb?)p;)T?+FksL7_o|&3DlRt5C`uO=%=SbV& zhPOWi54ru}!Qolqv2!XSkEyXz{I`9)tTZW)k-dZe%6XxWOrJcTX8{BrVvygaUcLMX zKP!+CcVta&N~Y!5^z^CenPZbP`ST~I&rMBEpUfY~KQuLULL38=t9DOV#924FVVNcg zpNXu=$N-;-Bz)S~=^vhBLk;0K+%U>uJQ+A$+L^mHr`nH%G9dBa7@0Zn9F&;@`BxrW zn^OKs-UyX5kpNGp8O6(`xfPsC&*61zc5OA1XK{pRB(6rB_e?E3f3@wJBn0$%q$I@a z&`yHD%de47^4`XpoxElzGxZVtcR8A=U9V%?!F5UQZJB<=nw`w=wp#N&Wx2x7vK&jk z)ta5`0~G_$b8|{%u>=a;6x2s+cJlLj<|IUIxcS2dxMn9)B$m1EKHqd`CqdxllAY|w zs3GwFI*2xBl*sa8-0#Kc_47ZGWj_u@Y#fN)25+YyZx5VZlF}q-abRl`ih~IgA}c{; zOh{ea=``zgy8#izF`8WmsiW|j9I1nckUI)zVH~MfQ6rG3z-rL^Ypf9@?L_bUH6DKC6N1ToRM?6dfP+YwSL?LA z?IpX|bnz(SJY-bBEe<94>7Z9b;w_w5Wj80n8Ca6$*P1l9PI`k2a2~dyyLJOw8pJFQ zI9^n(!+lH$!VV}#o((=}i!%;k+ggo?n30@eYUz?2zeB12W#r&LJyo9Ari`;hW z?U;u);4VNzDtX%5>_Ei0)~x2QAami!?G{J?vFdnOm+Y8BYkT}BM#bMl&o5f8$&b`R zXS4!6j0>1F3>2b#1%EcSb@~Qx$kZ$RYp=K6xMI2ZTeWV}VK4Q1y(MF=xd7d5fwTcU z(*S*mUm0AFmE&(aOK# z06&sibX(q5A9ksgUeZd-+Z!qgHBtTx&@$c@zg17SBx`H}%Aq)V7q4l)DhEn(Mn9)<~sSS2P6W}mkOFZ+dE zGWN*30gh*Sn@i1VJaDZlUo|qfrHtEPv#)CBaidKdjZR6fX7a*zT}#aKZSWHEpHdTNeF;9`N`szHvrGa?zrb( zz;jDuz8GpApNQt~WX+=jLy^5?G;)^V&XYbs8;qOq!}8GCpsUZpEP{KQTc-!Sy&#j- zJfEC=0B}<&O2~C@o3jK5Ca>g8Yr%vx8x!QWr-C_J-X^E2!$fPiM&;yM3=Nq6*AcWeNnsw-63sC2uo%hwib&wt#4l~Sy3{btW0~LkSoD02X zRpACu=u5}DoslrqM<6oQIoKL@+$EsEGz=H|*j0qLF69l_w6EmhK2l6eBUEq4mQfWu zMrGbtXxF_BM(r|i@C8-)AtwP25mo>4*{8i7!7{i+5x4c{ya8YTz=Q|cwcyf2%qYtH zNdZLCw!<($7G2QJ&}+$f59jf8-2xHkUXsTMZCbGHwA}Hp0G3yVquHh5!_)uKO z5$(lv-Sl<@#*SAw$KX^RhVCLsy%!3a$dGwfo#Yo;0PeMx*N+eV&m-ku2E|(b4E}j1 z9Ct3i9sm41e*HN9c`qDyEB`3|@!-yd@^$=k3co&xf8L3I-j099Acd~{V*K+T@XxQ| zpO0Y!AAvtjZxDOL`~@-+(&u&3-*wX0b<)pu(#LhuK9oYU*GaqANt@S6d)J%hZD24E zg3V1nwV%g3lnJ$HT=~@Ead4m7&*CRSE#9Z>Q;WyceQNPgl}{}u#u93Y71;DP%bJ0} zwi)tQeA@+Z^`GDZz~1vkTz-ODi#!EQQk}Cad_IwfH-;Yaw+90)4zgZJr5%CxVJ(Nb z2by_TxGh=&_7p5nWNzU)yb$}y|hqH-j~wuEq(wj9TaA`_u)*-=SRhAzIqO=f3z4|j%~ z%XTij)KQzD2w(vNq=mO=^ID|nL(s<}KwpZsZ*|j$B5j^pAZ;20eP|yF6b1Uy@7(5` znY~h^3$&;K(L3k*pZ|RS<^1RJ?aANyvpa|Qf7$7{X)TG_)5K1&1*K0*I=zas4Gpu~#dT~uQa4e?H#0`VIzBB1e zImb}ena(B?H}R;EmCdc*e!~m5$*VMII=&rkk~dSgMZ2s9DjdB}cNi%H%YC;ih@9%! zASvlOv)QzjkHMM9rX=ZW*-_68Xm>4b*jdF+lE`hO35LvuIN`Qp3@1C*^z1lBB7RQ> zwl97iZ>1gm(XgAF5nX3x((G7bw^>%#Iqh6nIqb}5uP!>FPZy&!2xzpp9Y&jrVumjzV{9# zaoXvGQ9_dKkZjw#F-by#nIv?}_EMWo0*PsoxIsH6Za^@FB%+;gfz;PlSIK=l-X!-# zex2Asi_}+dS8wXNg#tCq5Su4(nIsM+Et=SvbrP<#Pyaffuq)17c4I$;b>(z|0gH?Q z&itBl0W$_R9P`|SMz&`%;Y@iP0ycA5Z-#F8D`vyC^Eu4Fa}i*>jDOGI-*fnP6?5x+ z!Fd^T3L2aRMGq*M%O*Lq29o+^AvVrr_S9g0Dnf@9(Il_zmt-<>`gCUn#?ztvsT%x| zfYlYUInQ4QWU37%+SN7}ZCkNgl^}TuqDmN(P!WQ~Ct*TL#RB z`sV482jjDuN&BQk#-=2ymeY_vh-nm)rX3J!$F8?anh~`VN&>n~63AW5AtdFL3zQp? zmW?c$K&ApxVKUZf4{vu{k#S9X~NVel1|+#pVDAd^k{dgwvaVQI7>c;jHY zHDL6|CP&IxEN4D59<`d^g$71X^obI`r?XSiLRk$jY;Kx%>TfQS<#kvuuqoOElWMhE zrR^p}OoEdno%s6VB2t{RQEP_&;*Iz2Jh)qZaPQ{bwdLD4m!#`ZLy1bWMT9>gT5xD{ zGfWdwZIBzxiKy}lm1Y>UY^8Oo0THU0baoRb3|@J$_7zgym4$4$Yge9X~uVPyubN(t2v%O;`rp$W8M%o9p>Pzm`M+GYMVVRGJMLd#vb z*M)r{Z@6&5xqm&EjVPt1<6lhK8_X2uH8E{;PD;loJ=*AN@DG(?i|H0~>4?1rU(#-P za4VG!OoJBWrOv+LoO0n|E;WRQlg>QNg}t<7sFD9PhvH~!bd+_b7$ZLN@oyYDeCUu_ zZ#WB>(00^S`rFEgcq1i|@x=N}jn6zZP>>J_cpOZpL@$$ccOrZCr7yu?^J zkv4oB_)U5pA~8YMfm`7?NprD!GP ztk(-G7laJvOygpBxHg0tqlHhl*$2@7d@F!6`$FkLa09W(+UG`w+`PwOxz}0C)il+!`*785sP;4l|h}j zEQY{hHe$`s>ZsTNVge4#5Y`ij5g2{OS8D|7Q;-+J`14ksFox(E#fTk~`io7$q|E)><@L)*1JO)UI(OO)18k3W& zsJZO=<70eS*V;iiRgeV5uu`gK-R~a^>k8_sjLOmKN+P|Fy0XNY1b!+ajBu=kVuC#- zb*a|t+~x{R#)26gEHtoeDfnhBH>$AUp>IQp*`&@EA$5XOttdV_up@)-e^TO>p#^fQ zBAwR!Tl4zQOSMO9fM=x!Q2lZZaDLc;$0K&A7x|NeA@eBX?=W&o;-bcA=&}>WoDFM9 zqyH$ISp|CWq51!>2Q#oq0UX_Knex$im-CwA-SCb5O|VTYlb0&~7P%o|zNFIB=q`>f zDM)ml-k3TvzHcm+iDmEjs`ifc@UnT~oqBxdO zu(XC$OS3W7kh6TM zY=oo`iQ*oVWCwOL*snz%{a9Me=hSdiJ~yHP1OJO9(hV*2WZ!NSLk8q(ro3Egd9;Rl zUNS||)a$&e93|HpK7&?{s?ENP{;fM5xPLsH2Z)h+z5vSO^DK7N*{vh~hixW43k-12 zvF)Yx5P#t0R_d#FURz$ZAX`{#S#RFG^WZJ(_VQb(RLtp@COl2%X!0tYxooLFQ>4t8 zusbET8WVPI5dCV-1{cuN_D-q&(bINKPMe~PPuqNnW&il??;A`THlC6ySFNfkH^w{H zpYdw6gR=El{ev0nkpQw8BDFU|6ZspTE|IxEsSV%L1u}~eRTK{`qly3R z10a61kShfC74j9V+WHA1q**QpkS)vA} z^uTCTD3%zg(7w^_0>&YVFURu)b6eO((tuchI5P~pe?ZDg3rEMNe-LJGQ50bXcTil&TfF40h z$HwsnwlB>@NQWJmv$;ukt87aEn@2VlaUx`TDc42vN4?^ft($g0wE%u~ADtS=sFu)X z2<~hTY06XRlcVwbQmMt!Li%+nq>2`?NH7DLD#wt%32lLrkP zk;I`vu`SD_FcxCSw$;|%C{BoSm~4WR0<65)bl`_X>Rb%1*Y4bY_14<*{abg|mc+@z z0TNuP3o$9wfM+3^d0}Zm{J6HX04JnAM6`9R@s)jz$qXSd)!;oR^X(M;G zmu*U0^vlx1^_wLcN2`mwQe7zOxw<&d&j1aWqhUiRtxZ*q#ADsUKDQoF?$?_!J5Z^(^$wq?N1 z3^4^r8oQ*vP}k;lerQnxP=8SxwqZaIFDMY;m!8^>OEpF#{%whP)t4}kra4hL%0P~0 zlxovply>mG`B>&;EEQ<_d!KeUxe59wuzbJn-#dd$&@Fi`&JElcHxb&T>EKWm`yuwN zapv2XCWvi7;Ruk3NAO)Lt~Oy|m@}x+_tkwgX&~+2OGq=YIVCz)09BtFrTz-{OaA++U+Diyb{8Z{U0ll|_8qG4U+sDp+A;@o4_%KhTK}Wic7q=LPv@Mo(~G zP}GO?R&3$uF3(Qu6r^ys&LyBkAEH_C(yEhEJY-ZK*epMiEibkpJiQ z{|vWt#r4F|@fBD9ow<5JZE3rZ%`(@x8krko`tT;t#33|e*Q{p~PHuQPaud#I`V3$y z_WN)sl-=Diw))up1%_hQySm!byTPaKC5&-dV*XkUr-=t$`cVpQL@BMFz66f%ZR5|E zdhbP96M8RqIo`bl^@Kx8*jA#r{{(O2{hJ<5VHl$2TZ^7w)n^2&jvWOwj`h(#<1qE8 zN>|m!72oEv{b-ZzaWSt3QjW`P2u#o&%5J#{v!u=@;uu!wLua(&8WA@xD$GVf--QIq zkXbN9Dm0O-#h9Jd!gY|`%HdcRw{f5W0mIeX*3GxY<{3Mw$Tq=X->~C3crQ*beNGj4 zWtg(pOVhIP3K*Lo86~6mqhK()phm)Ksms9@aAOt3WG|`{e|wlW^PpcSaioUI?dK$) z*ddH4ujy26WnK-Nf6@ep;z%)3kG?tf=+$|&zVyHN7#Mu4(dL_8bJ;8Vg7E%&*9)pA z`$~dh`+!`{|L+_O|Bo`s8#W|O@Zhavxdt3uK$HE^!H`{81(qSLEzO`K0t$-#RC4xv zZ+W=UMq%CL5o@J9a0a0AKDUYqJIMc7ig*zhXBvyXjpMTs&aUH{ENjr>4dPnt)e2%% zZJIDgwTZK@%Kc~lq}GDx2T@qsl=xwZ*=1c&&Mzv>iXN&$rJ1DX^hc#`Mk&I(kD&-h z@XgediPV#7bYeAZhKp4WFL;5U{+`QD6*zB*gf86^6j93}DFEtIv*xeIW{uL4eW{-! z0sy+sJ?e!&$Gf~U?9+ZKCUzBFDEK7azhsH{K z%44i-d(wjC)eiW)8}j%i=ElwzfNbUkX}i9SBAQlWkGG_4m7hSq|8EK@pKSE%v#)fLZ)t2oiv zu~K<=XJ`dO(!Nw;f%Z^0e$0YS$MARokYb`?*lOeP_2g?CpDWffJ1w(yxU zwR$+4kyn?j{8^ThDn&fck{y>r!ecbE`QtL{QHUr&(CTJWZ?jVXaelozo5J;HMC`h2 z&gr#mx=r!yik*Z}7as^DQbh3l4n9sqVVHnay6*0Dv%`zs?1Uh}Lcg0RP?4W$?CM{k1Ew{~#D+wXpu%^>Rr`D~qf|LN z!^QyY#SU2H@yphy)KzS79FGTONANmP_5^}AVbro(6vvud=*9(X*0L!PAZ8qKTM7`) zR5oL$NoeV$?1&4vooc0i$I2lI#_|LflZpa_deF>ip2ES-W?v_DVw$!>3zx!C>I~iK z;Ch{9*5oK@Cf1f4y8^PO5m}De0!oIlQSq1(6^PwQ3?@b#N}R<9YGg5s-;HIj7R|9= z=mb~K*#khB8`fG2Q+@)^IOU%!hqGBGZ$M7a1`s{CxJmc+ndh>Z4((X^WluJklPm=n z+^NMxBRi*7C`gVGDPu1R)WWC@iF%TiP*Pr~oQ(@yo7=f4Pk&P40YQu8cD zH~*|^p6voK$Zpc8=F()H_W^~l$Zp}HvuUggAw{jk>8>2l=7CAy%7rr@fF-WuKg!O; zySN~^V>xcy@$e7$J&HFl0QZwI-knOUUriy^F&Om({}!Lv!(f+#`GZjNh}wZ3OuUdc zaGA4^y;_Ca`;YirSp0!2sRkYaJz6V_vS)giQ#~u+-2zsolIcYBj?&NUH2t%wF;OrE*bh_wnx48)JAZY2w<;FDXBe|ITgdPY2l4-mc6r`^Mig zzXxwOVJx$nCf^PCt6v*`hwMBCdiVv^HGbtCe=?}!KJ5+YI?c`&#?F?i1NgM@6Li;? z)L$SYWfQWls`IPT?9H-=c(aTpir-fp$Dtd~W2LiEWy_tPJ3rfa8s|PY&appNSo$;U z&juRYX!BO5S#7qb$Ek9hN4)wY=jV@j%}2b}BVOZC>Re=xWl`s(XnxcAnezkQw)2T- znC&w1hPeZiW~WSn0MP$Aj?b<<)GOhz?p*RIx>bCy-Otj1p2W}L%g G1^*2U-8j1d literal 0 HcmV?d00001 diff --git a/.doctrees/examples/checkpoints.doctree b/.doctrees/examples/checkpoints.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5b81eeb958e07c417adf20aef273d52bb8250ec1 GIT binary patch literal 8439 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 literal 0 HcmV?d00001 diff --git a/.doctrees/examples/customize_conversation_template.doctree b/.doctrees/examples/customize_conversation_template.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2b1627083a2de3bc810fdae15bf1314126f70e60 GIT binary patch literal 18349 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 literal 0 HcmV?d00001 diff --git a/.doctrees/examples/finetuning.doctree b/.doctrees/examples/finetuning.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e2319fb2e1e890b49fe09d521cf32bf1062c8263 GIT binary patch literal 12319 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 F{sY2Ma;X3S literal 0 HcmV?d00001 diff --git a/.doctrees/examples/index.doctree b/.doctrees/examples/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1988374f51db852c052f0a17a4d1d0b5032fbbcd GIT binary patch literal 6059 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 literal 0 HcmV?d00001 diff --git a/.doctrees/examples/raft.doctree b/.doctrees/examples/raft.doctree new file mode 100644 index 0000000000000000000000000000000000000000..66395c72715b8d98af92b56cdf7d6710017f4486 GIT binary patch literal 101107 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 L<;JM(xv~ErhfJ&I literal 0 HcmV?d00001 diff --git a/.doctrees/examples/reward_modeling.doctree b/.doctrees/examples/reward_modeling.doctree new file mode 100644 index 0000000000000000000000000000000000000000..38c064cf51884cd78575531e9030e0c740295836 GIT binary patch literal 33651 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 Il3L||0VmimP5=M^ literal 0 HcmV?d00001 diff --git a/.doctrees/examples/supported_conversation_template.doctree b/.doctrees/examples/supported_conversation_template.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2bced7c3610922d7b364c46b67fe08787336f750 GIT binary patch literal 100788 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 literal 0 HcmV?d00001 diff --git a/.doctrees/index.doctree b/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1a526e3dfaad7fa34a411045dccb4ba88534508c GIT binary patch literal 58437 zcmeHw3y>Vgc^)2zd*Ka|5Gjh*kQI`L)9oH`hXX(`lm&tW0Uizj35Wngp;ogyb33y) zJF}d}JxEiQY{??xQAA0r*paQo4_T&Vr&MB0n<|wPDV7yUmTf7LT+}1wM0RYaY*&=X zj$W~o@9&=Op547$%;F9sC;_XuxbB(1`~Uv_`|rR1?w)@0ruQEHvvushcze*WYLcgM+@V~)3QhZclO zj(Oi53$_tjhqZls_uhH0R=3?kk}(6`G`h$f;Y*=QR9#2*h-96bn-iN80wdY%6@XhaQ_Ad&dyEPJPa*7NIn z*o^zEuL&|wEg~Z%d4B?e&o8QKfd7k zbK|_}#6M7lV4S}_Zo7uLSgaeU%CTLuIlbQ6ZEcK)N>ab9jZqm5F%X!Q(DvMv&RG4_ zNF#W-DYQe!Og)PGd6m2wcgiG}+6d~Hv|eLvv_?)@qo<;>ZoLBHvTi|>--`cl!~d_w z|F>UkM%LZdK5KLuuUdORRwOdU&=4fASAD%!X~Cm7Sv`RuA| z8X(uorWT)WCx6o8YfrN5$b% zQHbh?7=dctquE>c2wHbjXX~QjLLE)ur&^aQob@O-c-AJNfNdG=FSMse+B4!CxqU71 z)-47W>=3%d?lb7Mp#?itwa5-V=$I`g7iM$#L8)w_0n=GZB35>Z%ra?=P7g!h%k75dNbP|@+{nRA7S zG0hAs#XUkKS6+Y;;9FJ}V7x_&ghmTJjhzr3Nd&ruBQsm9jUq04#!@SBcfk!Y!7(Z> zH!@MY+1}9EYy%08&3G67;tE&r=1t$X4KnMCT2-laTTU`{KF_pT zXi{sY(vE+-vUap&bvSO2{*DovTtD@Ve&iaSWX1z9a zyYF-ZQ_@7Gc|tYiW8Ir_1x?-!@t$2)yjQ5nXINn=O@81UJoW|4gCaNV20VLA4Mq$- zgu5dq27LN3rrGYSiAik5+@sln<^gPhPqn0yuT5b}Xij&bt*rkyLv9@ERn~uMpqXVG z=&I;HRrm0+)m?cPXqC_iX4?kyn3x9z*NNPzps=qQ@8A!3da*Mrs23*M-l`jg$+j$~ zTG-!>M3gWMnt!PyQ&!2C}+y@K->*_i7r>y(nuS}*s;$~MM|EWd*xF@rA% zM^DV+CPYTO<%Apho)PhYLt-mhGnM-PW_R^(vl$dixQ)*?YadA{)1KRf%7%68sJFv= z)BQO%c2O+AoM%%%^yt|nL@-OyE5yk#mr{x(zQG37)8gSN=nh<(hpkRjxOV|#o8l#7SU=x0*?Klv_ zlM%%!C_++5LL^|R0=9kP4H1uujgX2K!exPXi!?#Kz6LpIaZm@uJZtJ!unIrN<5i~@jP>C1}uB%(pE3T_s(z&jZx+#14 z?|ZVB6rFo@7ke51B>FHjXy}J5P==0y@He+=Nl!z!WiipVzFybKl;M%=N3f_cD^EOR zhgMX+IAVoiBRD)hUS;VbEXVk17|6QroJF5DlX&(X-kCon; zCRGm(0tTWK7c|$vkYl=*PA-Ao=5*X0(CEfjJ}OHX&hQ3i<_OqESnt4aXF3K}FB12q zZW>r4!4wB8BUpv9;0fVP44wC5fc0ol4?N~9aN7+pg82vm9@5B<*kpEJD&xPqGVI@Y^S}6^Mz3_~ zM|#pF>a1hkbm?c0p?z)mprkUGxXwZ;SkpthXl@&zDWFzZ;xgDG8F_e`nC4P*wK}%& z30kSK@D;!5V4B(_zU2?E_BQ2!lr<#NM6I+N8&J^Y(XQJ|qX*_a-4ZQek<|zJ7 znl<1{q4T;ErKTSZ(`Vfk+Q2+>ugsR2jT8$|h&l|3msB=t9D%`^= z@}jWd&C0hJTZPx3ojLj79>J09OCp|9<&9cvg!2F7&5K5Z| zn9V7hDDbr8DM%le3}%J&JCY(#NCU|bAmGTfg7UItEGv{RONv~f9HHn{6}zlxPuk9S zK%^CvZ%W3pLirm>v9?guY)s6)Qd_BNKTWmnu04C1%G2hZ`shz_vQCT6EDzfO(P3d~ zF^F1?{YdvNz2!JXIJFT9WXk35)=VYwS8eQNVntp17D=%hiSOktS<0%?4@im}1swNHr9rTS0#TAIWd-pDNs%Lnj9L<2CEhaG zj2k*C@4bg_OM1Auh{;AM`*?e{YQOi$O0%}#bCO~;?e~t3Qo8o?xbNVhR8L|F1>)Cb zVOc>uFDY^bap+(Q1WPCozbjeF3gY9EB3BUiq|E_KC=g$hEM*1pvZTlr#G$ElOHe|A z_?BcTD~NAOinRrim)*!{9(VQ$mtZw8w{?`#wd-f(?H_fNdL;w=)#2^nHO$+?*D!Av zuM%&0b*p&C3EF{xZ5FgCZ{NYG`-Lyq`9PVUACsuFnx7>}v6_B4-%(1}eu*J@vN$0C z@q_}=l!avl@h(Y`D~SCEQUd`?C=kCPS;`9H*Ca*0Aoiz0P(p$Dq+}^8h)+n0TtQ6j zFYcG>#1aa`*Ck6?L3~A0tSyM#Y{x*dnOBHJrj=CwUSiBDmG4Q4)kx*r9i?2xQXH5p z-Xn1Iv4jF~(Fc zI_>|ngeu}dTM@19OMAd*KfOIVeNVD3A?l|M2+Q*&MAcP)S-5#rG9qYNS;-b|?pa6n z?=K#dI>Hi4Hs>WvS#{)`q{tP-)KqFnWC;brlPqNg;YfN_~ai8pDETKSr zT(XoE#P3Lod_n9lPAU+TP#|8GEM*1pWl51Mh<%4rLn2Ek5Z{z6Wd-p!l45N^#jm98&U6F` zdq;)eu8kbSu^+jP*zFZ%lD;P;k<}!9TT-mXB>iniDP8+&j2ZpGsp7unXY{)UT0M>0 z6kIH^+XAsq5Q+hwClvl$+DKdb_6jrk`;wWwsJDG4FY?)Iqtn>z*HtmtOn$p$Bu}yS zVe&pDWy2CmHisokS#{%}q{tV9)NmAqqf?~&eixbO_G+&e~aS&}I4G~If z$`T6ySKCN4jWn-KMjBCX`$!}5dl_jyFB!>OtcQwI%Zv5*M2fGNs%i!1`5Zi@o^xNj_pfu9S;<^n}&MuC|T@g zm!!xO+)eZq1Nx9M`$kfG^R4hy!7NCov$o-=q*z;+EBl<}SR|*knwL?a_E24NN^2Q^ zWEXs25gg=e03%m07-d@nJugL;RmkTg#cG87NJlB%2cy2pdr~u3mQb4F$-=UNa3n>p zAoiyh5LrTjc)MgND~PvBihMz&w^kw|n+^p1E6Gw;5I-*|as@Ftk&4K&gldW3mMmoj z@tcw&PY@d>4~XG{{!{?|NV1a^z~>}Io&ac9fI8905(>m$NS3mK_%lhdwjeT@|5F{6 z_inSd$`7+^lY8afm9|_Zp~2x^{eVr9Vl@)l&{4|eZ1+SeJciDe4v%TFu&m8|o21AS z#D)pg+3=@og+r2^tN^AYMVOch<&LU`UE8ui1$gBvV!;-Ns%iExY??kv4jHg zf@CQxh!0DOJVC54h$sX8QtW?LGLx14{~#&yWWR4R{dEqOP$0e`S;`9HPb5XIAaJ}& zP8#UoRk}BPPqLI1#J45I+JeZl(TYL2Yc1Vg` zLE!VA>J$)5C=joaEM;wp5lN9RhKpd4UWd-p%Ns%vz^cRp0w0;5U3CU7c z5EmrH+JeZ@cAq&nS)6M5=GbO@giPkCCjK#rHLG-%B*ki^Gv86lDr|RC7M2ynyCg-f zAke?$hXMLnLbb$iNS3mK_%%t9D~N*=shBWJC=j2NEM*1p2}zMFhy&?!MJ%B}d|k4X z6~tF0MV=rw9F$>g`cnb;TggsV0RKZ$F2Wsc&mhoO^z zRo8cvG5?s9Mb;7NB}uUwWBy`CDP64`zR{TabQ4b~5MPvqWd-qhNs%jv1L-dYv4jHg zSCXZyApTNP%Gwe)ONv}UK!enp zC`%|1lai&ZAofa%d_kl?hH-!r3dFQzDJzKMl45N^T%m36PL>?a?mW1%GMPAy{iQh2eJiek!oBi5JGl}Q*=@Jlii=#c z-6^|Ee2bkflt0&Uwd`__ly1CLwsaQVpc`gipFn*}LWxfS$a~c;d;mvP~+*TX9k-1Ll_ zpbVT<=QotnH|il5aeKS%R-6b|y=x6Gu<1&5de1ehxTY3=n~OT`bvJ`Cy7RW)2=PY+ zw5)PU&<)%C=26oz>$sJU?vU4U4K;3}r;0rnS6H(f-RYuSi`_{jz!WtN7s&G)?&Uqa zbcbrfA$^~U-EqsV<4sGa?ir?odwBJ-?bsn?;fXW+IN|T$K409M8abg2&T$WJFvsuc z#9MTZ55l4QKy8&WAMTb(dZ4OH~jE4PwQO z#0JEc(y5e?a1F7yfO|(HC#77hHNZXYlr#a7T|kSL=+F{0Z-ov6y45k<6-?l8C#|Xb z)B?Pj!4tdS6iuu1`-^##2r-DpSVmntWixvjWu+^TN#+gk1#Z}VxR&WOxR@QUGRGPV zQZgO(6^3+&A+dtaAVr@i{a|-AlLRzhcX13CEV7$(D^POk3CRwc3m?4RU$0(&Wp_sl zC4ojHEq1-fUhlEY5cbw%)tLS6p2lqY!pZqAV|M)Fc^Ez$pN9#&x*Gp**)|5(qDG%c z6oVpv4OS}9X;{!(#mEcv#^S+Yi%Os&$@kE2cFx*5)p&VM_!KPhS(lSxza-Lzl|Mn+RgLvYjYG;|V zb#X+r{fTp>fMx9~Hr#6R-8x)03>Cr+s_K@|_?8t54uF<&&{CuOfz0T+N}LYehgH<9eGyM?@Y%r>-SXer*Ef97$$7dC}d9Vs%kV`&AV@-&RcndiNx`SCe zCb_~(Yt2-CTA0Yo8p#^@swa|uQc7AyzTy+-X!_pJD|7Hv*zCQGuV0y%i8GeqF3%#K z1RtAxU5ZYG7K^3uxB!I|lCafb!T1`Ms8IhzPpHYOYjmO>ink&PMRBDPT=~je+A(_{ ze1EOtc!;KCb8L$s7#>DY$k4S4A}xp=6J58;11~r1hLFBiFty^a5bU+gB5x^tY4qJ_sGy5G84rr6Vl(b5>w(p@?zHYA z-}E_Z;t>|O_fe42)>I$dk_e0U6x9#g^V|Aj(gU*e#mz@)8rSe_L`a3;Tk@1n{_CD} zl48(5p6KL<63TQ8IzEO8p@j)5B4TC(u{(pz6n^;!sCevhq>LDD5@bZ|jHHpoU=y2` zOfWGiTC3s|-jDT!m-^say5T+bs5y(B>=WJIz5u<_XD=W=* zMVU$m6-~UE1u+usSKX^EyRCO6TAihL4IK5{5Q`5&(lV_?{dbu~O*2#KRc}wE^gk0y zNNFe@#IV%x5a>@C`DC}$x_BV;Dxq(tXXcmLNoDQEWZpH*#b!JJ{(T#6z{TdNcryl) zYB0_p{ZvzrVTsr>4F#6ymD=u|SbmEK>-wT$HbSd8y*?hO=!h<1s6Q3=RS{EaUW)rI z+b~QQe{D?)kQsw+R4<#b2hC|r?n667!L(X~cZYp_L2*MybP%;Mag0u1f)U+>WcxHW z-kzW@Ecghnn?C#*tm~zsBDIZF%I=yFs3Zghe@@k2h2KlH+t}}qu-{kXcY0k-V~N}Gdy(~? zln~yDDo634T?nllnDv#% z8({>0F)@M*31y3G@$zvjw&G*zI5}qCuEEcsRbO+l0%sUrhKH!W3sYIa@+FoqqXtYT zIrg-+sRwKk4&Fcfd|H+>+3K_BV`-I^kL98?oM0GS$Ao)(^5l$K^iGy5$28N`%lLY5 zl~y)=wov?JWLM^})LD*f2W(iT?Q7lwd}u8FMKl{>J`Z1fW$W1VPCdO8%%kaWcK+W5 zsC44lo^*oTuV3n-6BjfD)K4$dte6eDUZ~aZ;e0HU1Xw!8+B|ECdo@gvWP_8c$R?M2 z92Pu(j%Gkuo2I3I&7)-$`zhwH^VMnkqCZ=S_HfHUQG48r*sK#;LB&HExjKk-_;9I# zX=mqB^;p6QpMko#0w7?OBuX=;;oJVG$a4$28(^`W-sAct*jNmcT?X`)dWM}4RlZX~ zEjM46RR&opP5tLRYw8EOY3g0j)Yh9JY_^XknRV+fv<$mIXfuIf*1Zb$ao81Rg#rt^ zInbO9gjTRDSJxKE0%AeiBc;YViAHZQvj^Lg@_kuh<|3RU+k{Rs-3Q-x zgCYckrRL!ocB0^ybqNBJ#yU&98Q=vK@EUJV29yieC6-xYN^3vRv(|pFi`K@!c-}Ih z55Bep3r9+(Bdk`nUF>V3txIT0re7hu>jaC|v}K8psYF1!S;iiyS=dAtfMdICgdP{Q zlV*r*Rb*{pGON5IX*+do-Y#PU4GcI761X11PP9pkG_6Bh;$ObnoU#oitK?O+(+fSf z)AL>0>B9SAU7oo8i3jUt-Jeq-2)kY_2G~dD7(vnY#>=`QW1CHa&*cm0;#a=6O{Hd_8Z=n|5 zg9{y&3Jcza@~QCbo2F*;`QvAgg!as0een^-=6Uldd3ss+5^&K!B<+?f-_S|eFZA88BN@aAInu4M(e z_9@a1`fA5Yb5Ooid`tvrmX&wrc1{*MsM2J)Fkb(o&Ds}`POmI~C{e&qCaT*$8%@u@ zc>w7)!QZm#la3LIvOg}%rX3N(so0lzA|?~9qTHNP!)4_8U#Qs2%kzlfcUgI6(ceUr zRG(OR{UZJS*Z5gZmVZKwU1pV@%kmMy+nV)@E0sSBZexns+5%hBJ#3jK_&y=Md=oq% zU@qGP8M|iE3RGoFEA;PLz7@WkxfMnQdzbI>-NmcIl`DlfMVC->VMP=7&-1yrn$oMB zwi$ggr_M5?A3SQ)E-*ExR~c&L(jdg%X7wLV499H=B~<5Kh;oVu+=VAGc)hNUQR!)J z;>U(H4Y4H)4#s`j(`POFDa_IyuyvZ^8``6ht(}2mL4P0DUF@xXfF?VXoYv1;k*ndS z&e9LtaH*@>Kfyj`{=#|F)-C`aPo1Mb*u!V2N*0u)8u`F@SUcis4=y6m8`xzy+UGFU zntg_DsG;mZGW`FN8150 z{3ja#pFsi7i1oPZ!vBE?pLZvO`if+dGOjfCm+f+h;QcadjUPc#s(Ymj#UR3Cyh|%n zk_IegNty5?YTQu|qk|2s;!VH3l;tbgJ z?AziXjbrm#36~xOUd2Xm!BE&zg$q^^QBaX2DIP5I${}_=bG8{eXfDcfL@138NWo%i zx-oCVl=D5%S`^~Y&r=k(;FDLr$Ar%5pkah2VNL>;Nti%{gCmA&N{k%TjtHG-hV7db zOqH?Dmi!eoOwIuUl2Bb2`)8PF>6DI%*qHYOiwbq@AN%%^;l^Xlb_cZp=a>pmSjeQ<2COyGM5q7U| z1>0uGKpnH)lOJtZKN~)MixWJEp(pZHBV~ma_ zR*Lu#yzICE`C-x!Vu3M_A%nFMo3bp=av~8qMm%|4^=Qn$u6poLR^zQO!$Kcq!9AF;1mb#m zI`4N^wrWyw+qey9Yt*ox^CRRWl1fa?Hu9DCknk|+T_Oh39auUz_t`|Qf>X9XaX=tf ztcd3#0W{Ozkso#2Cu9 zCBBiX$hvq7LV5;<+R`GPrwWL-A4bOEc7ma}-*#!XpL(_SGV#kliasbRNU7}Cy9#0? z?qgNQ8-vimMoRn^h!r!v{z1DKze>gIuKh9o>9$l7_k$Woahq&cVLZfAbUwFP`wNi9 z1IVELBRC#O)x?|ei$zyV#_bThC+RV!&~EctMjBE)BW%VB7qRjsVukNYr~PH0r{rZ; z9jJ}TAN|9mjsGAUP3`yTJw^6uNmlzD{uD9aWTUG5c1gUIH+O&lX~p7=UHfv1Al}NG zx8;SerCz9QzX28VM(yWsrJ8gnJzQ}s+DPrsQBu|h-HNiVut9GHY4!%KeTTRbV3uje zp#)VoZbUo&QPPh6*=R&N3NqD>%7nF>y||xu{U*D0fcX6s0Hl;b*$Gt$op@sQ3R|3v z0`q>;XOqNJ79NsM+pJ?^hlF)Z72eNR6jFzsR8CtV*rte;t=-tJ$a;nvljPblF^95<|%96sdy-vdw4!J zC=Ve7gnc?#UPofH?|C6u#ik5w17AN5gTh&W!FK2H!f=wrf&x-ovCXE$vYG&%mv+>pd(JgHAE-hkqR);;>hB&O-)p(va!94Z7h{(e>K!;d2 zrmx#eaL&nb0g!~t0nty;=e7V0?Y`v88qk{LwURik5bvhHPzeIftYflWyXbw-Li_av zG!+$&lL+hMoz&T&Ic^n-=wOp)*qqsMcf74(HcB+kvN%71f!oo5wu5)-7xB%)%|v!k z;H z)O|}($IiXdlM#A#072cr(maVTfY3@J9R!JQ!}b^O!@dhbof1-JA_VnZ)Ib&6z#Usj zP0Rq!f*{9sXQ2a$UD!p20#lN<*Vtz!P?yd-V;{3eP#K&XG0=mTz=37Lx49JGgd>jn zT*-u&^A$Gd*^W3J_=*8+&W?0QC0e5cD3K8(H`R(u<6^@>ZH|84MBj>dnto;}S)rd_rJoPb&wr<% zzows%c8@$sKd*!rQ+oyd9HpPv(a$3NMD+6l{d|~y9;7PoXM7G3KWx`G;ba_LV%%I} zoLpjDTw)wtVzpmlHD6-2USc&~VzpgjHCXIl7M!M23zIeRFhM zF;a7MbkLlmqvNO?9UYwG=;(YDM@KtNI67KN=ID+|bTo-&=xXG~Me$bImCz=v5w?o8 zX0mNOhlUgJ9`7*e9R41x3hYw7>^ZV`vR7|x%am^qwUjs{YGp*bTFQrKfSwFHe^Yx| z$rGGK!(hjHDvj!!#r9~dzd@;vQal#3161x^Hq@0lhxZ2Vuq-qa@m literal 0 HcmV?d00001 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/_images/IT_sample1.png b/_images/IT_sample1.png new file mode 100644 index 0000000000000000000000000000000000000000..705705509999310e1323b0cb6742ff04c01effdc GIT binary patch literal 523440 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�(7Nt*m~$gObkD~~cs>4j13s)a(v8VC4jbtb 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